Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 2247 → Rev 2248

/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/Flight-Ctrl_MEGA644_V0_76g_SVN.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.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/Flight-Ctrl_MEGA644_V0_76g_SVN.hex
0,0 → 1,3013
:100000000C94A6040C94C3040C94C3040C94C30471
:100010000C94C3040C94C3040C94C3040C94C30444
:100020000C94C3040C9467500C94C3040C94C30444
:100030000C94CA4C0C94C3040C94C3040C94C304D5
:100040000C94C3040C94C3040C94684F0C94C30424
:100050000C946B520C94C3040C9432520C94C30451
:100060000C94F70B0C94C3040C94784B0C94C304BD
:10007000950C8A0C800C6A0C500C300C420C5C0FF6
:100080009E0E9B0E300C920E840E680E480EFB0DD9
:10009000B20D9C0C3143D943954352450F458144E1
:1000A00019440643D3478847E14688461247FC4532
:1000B0009345E94BDC4B2B4C114C054C9A4BAB4B0D
:1000C000AB4BB24BCE4BC94BAE4BB64BB24BC54B09
:1000D000D24BAE4BB64BB24BC14BD74BAE4B3D4C5C
:1000E0000756F454F454F454F454F454F454F454BB
:1000F000F454F454F454F454F454F454F454F454C0
:10010000F454F454F454F454F454F454FB55E855B2
:10011000CF55BB55F454F454B755E054F454F4544B
:10012000F454A955F454F454F454F454F454F454D9
:10013000F4542456F454A5550A0D426174743A00DF
:1001400020332043656C6C732020002034204365ED
:100150006C6C73202000204C6F77207761726E6981
:100160006E67206C6576656C3A2025642E256400E8
:100170000A0D3D3D3D3D3D3D3D3D3D3D3D3D3D3D12
:100180003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D9F
:100190003D3D3D3D3D000A0D466C69676874436F07
:1001A0006E74726F6C0A0D48617264776172653AA1
:1001B00025642E25640A0D536F6674776172653A63
:1001C0005625642E2564256320000A0D6578706528
:1001D00072696D656E74616C2076657273696F6E9D
:1001E000000A0D3D3D3D3D3D3D3D3D3D3D3D3D3DDF
:1001F0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D2F
:100200003D3D3D3D3D3D000A0D65727A6575677463
:100210002064656661756C74204D69786572205440
:1002200061626C65000A0D4D697865722D436F6ED1
:100230006669673A202725732720282575204D6F8A
:10024000746F727329000A0D2E2E2E424C2D4374AA
:10025000726C2E2E2E2E00256420000A0D0A0D2110
:1002600021206D697373696E6720424C2D4354528F
:100270004C3A202564202121000A0D3D3D3D3D3DA5
:100280003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D9E
:100290003D3D3D3D3D3D3D3D3D3D3D3D3D3D000AFE
:1002A0000D496E69742E20454550524F4D003A203D
:1002B00047656E65726174696E6720446566617535
:1002C0006C742D506172616D65746572207573690F
:1002D0006E67206F6C6420537469636B2053657480
:1002E00074696E6773000A0D466C696768742D74D3
:1002F000696D65202575206D696E2020546F7461CD
:100300006C3A2575206D696E000A0D414343206EDD
:100310006F6368206E696368742063616C696272E0
:10032000696572742021000A0D5573696E6720702B
:100330006172616D65746572736574202564000A6D
:100340000D4B616C696272696572656E20646573DC
:1003500020447275636B73656E736F72732E004FFA
:100360004B0A0D000A0D436F6E74726F6C3A2000D9
:1003700048656164696E67486F6C64006E6F726D8A
:10038000616C657220284143432D4D6F64652900DF
:100390000A0D3D3D3D3D3D3D3D3D3D3D3D3D3D3DF0
:1003A0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D7D
:1003B0003D3D3D3D3D0A0D002E000A0D20444143C8
:1003C000206F7220493243204552524F5221204320
:1003D0006865636B204932432C2033567265662C66
:1003E0002044414320616E6420424C2D4374726C62
:1003F000005B25695D005B25695D002B204D696B05
:10040000726F4B6F70746572202B0048573A5625F7
:10041000642E25642053573A25642E2564256300F5
:1004200053657474696E673A2564202573004932F8
:1004300043204552524F52212121004D6973736967
:100440006E6720424C2D4374726C3A256421210062
:100450002D2D2D2D424C2D4374726C206F6B2D2D44
:100460002D00444143204F6666736574002535694D
:10047000002535690025356900476C6F62616C4362
:100480006F6E6669670025356900454550524F4DCE
:1004900033313000253569004B313A25346920204D
:1004A0004B323A25346920004B333A2534692020F9
:1004B0004B343A25346920004B353A2534692020E5
:1004C000202020202020200041644E657574726138
:1004D0006C2E2E2E004E69636B3A202020202020A7
:1004E00025356900526F6C6C3A2020202020202591
:1004F000356900476965723A202020202020253583
:1005000069004779726F202D2053656E736F7200FA
:100510004E69636B202534692028253369290052F0
:100520006F6C6C20253469202825336929004769C0
:100530006572202534692028253369290041434309
:10054000202D2053656E736F72004E69636B2025FA
:10055000346920282533692900526F6C6C202534BA
:100560006920282533692900476965722025346987
:10057000202825336929005370616E6E756E673AC5
:10058000202025356900456D70662E506567656CC5
:100590003A253569004B6F6D706173732E2E2E00F6
:1005A0005269636874756E673A2025346900566134
:1005B0006C75653A202534690053746172747765EF
:1005C00072743A2025346900506F7469313A2020E2
:1005D00025336900506F7469323A20202533690051
:1005E000506F7469333A202025336900506F746965
:1005F000343A202025336900536572766F2020003D
:10060000536574706F696E742020253369005261E0
:100610006E67653A2533692D25336900486F656833
:10062000653A202020202025356900536F6C6C48E6
:100630006F6568653A20253569004C75667464728B
:1006400075636B3A20253569004F666620202020AF
:1006500020203A20253569004B65696E65200048E9
:10066000F668656E726567656C756E6700424C2D45
:100670004374726C204572726F72732000202533B0
:100680006420202533642020253364202025336412
:100690002000202533642020253364202025336466
:1006A0002020253364200020253364202025336456
:1006B000202025336420202533642000424C2D4324
:1006C00074726C20666F756E642000202563202094
:1006D0002025632020202563202020256320002062
:1006E000256320202025632020202563202020252D
:1006F0006320002025632020202D2020202D202075
:10070000202D00313000313100313200466C6967F4
:1007100068742D54696D6520200020202020202041
:100720002535756D696E00546F74616C3A253575A9
:100730006D696E00287265736574290000010203FB
:10074000040405060708090A0B0B0C0D0E0F101107
:1007500011121314151516171818191A1B1B1C1D26
:100760001D1E1F1F20212122232324242525262767
:1007700027282829292A2A2B2B2C2C2D2D2D2E2ECB
:100780002F2F30303031313232323333333434344E
:1007900035353536363637373737383838393939E9
:1007A000393A3A3A3A3B3B3B3B3C3C3C3C3C3D3D96
:1007B0003D3D3E3E3E3E3E3F3F3F3F3F3F4040404F
:1007C0004040404141414141414242424242424215
:1007D00043434343434343444444444444444445DF
:1007E00045454545454545454646464646464646B1
:1007F0004647474747474747474747474848484886
:10080000484848484848484949494949494949495F
:1008100049494949494A4A4A4A4A4A4A4A4A4A4A3D
:100820004A4A4A4B4B4B4B4B4B4B4B4B4B4B4B4B1B
:100830004B4B4B4B4C4C4C4C4C4C4C4C4C4C4C4CFC
:100840004C4C4C4C4C4C4C4D4D4D4D4D4D4D4D4DDF
:100850004D4D4D4D4D4D4D4D4D4D4D4D4D4E4E4EC5
:100860004E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4EA8
:100870004E4E4E4E4E4E4E4F4F4F4F4F4F4F4F4F8F
:100880004F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F78
:100890004F4F4F4F4F4F00008F001E01AD013B02E5
:1008A000CA025803E603740402058F051B06A70657
:1008B0003307BE074808D2085B09E3096B0AF20A4E
:1008C000780BFD0B810C040D860D070E870E060FAD
:1008D000840F00107B10F5106E11E5115B12CF1222
:1008E0004213B31323149214FE146A15D3153B1646
:1008F000A11605176717C81727188318DE183719A8
:100900008E19E319361A871AD61A231B6E1BB61BCB
:10091000FD1B411C831CC31C001D3C1D751DAB1D14
:10092000E01D121E421E6F1E9A1EC31EE91E0D1FE1
:100930002E1F4D1F691F841F9B1FB01FC31FD31F76
:10094000E11FEC1FF51FFB1FFF1F002011241FBE1E
:10095000CFEFD0E1DEBFCDBF13E0A0E0B1E0E2E633
:10096000F9EB02C005900D92A03DB107D9F719E04F
:10097000A0EDB3E001C01D92AF32B107E1F70E94D4
:1009800099050C94B05C0C940000F999FECF92BDCF
:1009900081BDF89A80B599270895F999FECF1FBABD
:1009A00092BD81BD60BD0FB6F894FA9AF99A0FBE58
:1009B00008958091D905E82FFF27EE0FFF1FE3541C
:1009C000F94F808191818D5E9F4F14F01092030149
:1009D000808191818A5B9F4F24F480910301882359
:1009E00019F02091470817C081E0809303012091FE
:1009F0004708280F20934708253038F088EE93E009
:100A000090934C0580934B0506C066E970E0822FF9
:100A10000E944613E6CF822F992790931509809361
:100A2000140908951F93CF93DF93182F882351F44F
:100A30008091F7058233A0F080930001112309F41F
:100A400074C037C088E391E09F938F931F920E94F8
:100A5000CB480F900F900F908091F705823360F78D
:100A600084EF91E00E94154FEC011123F1F5809184
:100A70001A0190911B01823891050CF042C08091BF
:100A8000F70523E0829FC001112480930001112308
:100A9000A9F268EC70E0822F0E94461380E491E096
:100AA0009F938F931F920E94CB480F900F900F90AF
:100AB000C5CF809100016AE00E94035C892F9927CD
:100AC0009F938F93809100010E94035C99279F93CD
:100AD0008F9386E591E09F938F931F920E94CB485E
:100AE0008DB79EB707968DBF20C0CE010E94354FAF
:100AF000882309F0BCCFCE010E94354F8823A9F38B
:100B0000B6CF8091F7059927880F991F880F991FF5
:100B100080930001112309F491CF68EC70E084E028
:100B20000E9446138BE491E0BBCFDF91CF911F91E0
:100B30000895CFEFD0E1DEBFCDBFEE24FF2414B87F
:100B400015B8C7EED3E0E297D7FFFDCF2DE0209395
:100B5000020181E887B98FEF88B98BE184B981E020
:100B600085B98EE38AB987E48BB9469884B7877FC5
:100B700084BF809160008861809360001092600063
:100B800080ED97E090934C0580934B0510925904AB
:100B9000109258041092C2061092C10610925B0483
:100BA00010925A0410925D0410925C048BE095E060
:100BB000A0E0B0E08093200190932101A093220156
:100BC000B0932301289A0E941E4F0E9438500E9421
:100BD000F6510E94B54C0E94BD0A0E94374B789492
:100BE00080E791E09F938F931F920E94CB480F90D4
:100BF0000F900F9087E690E09F938F938CE490E0A6
:100C00009F938F931F921F92809102016AE00E942E
:100C1000035C892F99279F938F93809102010E94F3
:100C2000035C99279F938F9386E991E09F938F931D
:100C30001F920E94CB488DB79EB70D968DBF8AEC50
:100C400091E09F938F931F920E94CB480F900F903B
:100C50000F9081EE91E09F938F931F920E94CB485B
:100C6000809102010F900F900F908C3008F039C0E6
:100C7000299A49E069ED75E083E00E94A612F9998E
:100C8000FECF88EE93E092BD81BDF89A80B58130A9
:100C900051F5F999FECF81E090E092BD81BDF89ABF
:100CA00080B58F3F01F110921F0125EC34E04DE437
:100CB00050E068EE73E085E795E00E944D5A909110
:100CC0001F01E2E8F5E02FE08081349618160CF45D
:100CD0009F5F215027FFF8CF90931F01C6E7D5E013
:100CE00051C02998C6CF87E092E09F938F931F92BF
:100CF0000E94CB480F900F900F90E5E7F5E08FE052
:100D0000158616861786108A8150349687FFF8CF8D
:100D100080E48093820580938305109284058093FC
:100D200085058093860590EC909387051092880541
:100D30008093890580938A0510928B0590938C058A
:100D400090938D0580938E0510928F05809390056A
:100D50009093910581E080937505C6E7D5E08BE01F
:100D6000E4E0F1E0DE0101900D928A95E1F72DECCF
:100D700034E04DE450E0BE016150704088EE93E0F5
:100D80000E94725A80911F0199279F938F93DF933E
:100D9000CF9385E292E09F938F931F920E94CB485E
:100DA000EDB7FEB73796EDBF86E492E09F938F9341
:100DB0001F920E94CB4810923C0510924F050E9452
:100DC000FA200F900F900F9080914F058823E1F348
:100DD00010923C0580ED97E00E94154FEC01CC2469
:100DE000DD24B7E5AB2EB2E0BB2E10924F050E947A
:100DF000FA2080914F058823E1F3F601EE0FFF1FE3
:100E0000EE0FFF1FEB58FA4F858518160CF06BC0DC
:100E100086010654194FCE010E94354F882389F46C
:100E2000D8018C91882369F480934F050E94FA20A1
:100E300080914F058823E1F3CE010E94354F88232E
:100E400079F3F80180818823F1F586010F5F1F4F48
:100E500068010230110548F2CC24DD24EBE5AE2E0A
:100E6000E2E0BE2EC1E025C0F601EE0FFF1FEE0F3F
:100E7000FF1FEB58FA4F858518160CF586010F5F9A
:100E80001F4F1F930F93BF92AF929F930E94CB4827
:100E9000C09349050F900F900F900F900F9088EA24
:100EA00096E0C80ED91ED6011C92680102301105C9
:100EB000F0F4F601E654F94F90819923A9F28601E6
:100EC0000F5F1F4FECCF86010F5F1F4F1F930F93D4
:100ED000BF92AF921F920E94CB480F900F900F903D
:100EE0000F900F90B5CF86010654194FAACF89E70E
:100EF00092E09F938F931F920E94CB480E94FA200A
:100F00000F900F900F90F999FECF81E090E092BD85
:100F100081BDF89A80B5803509F031C2F999FECFCC
:100F20008EE090E092BD81BDF89A80B59927382F68
:100F30002227F999FECF8FE090E092BD81BDF89A0B
:100F400080B5B901680F711DF999FECF8AE090E074
:100F500092BD81BDF89A80B59927382F22278FB38B
:100F60009927AC014270507081FDF9CF8BE090E081
:100F700092BD81BDF89A80B5280F311DC9012F5F40
:100F80003F4F09F4BFC27093D3036093D2039B0118
:100F90006F5F7F4F09F4B6C29093D1038093D00363
:100FA0008091D0039091D1039F938F933F932F9380
:100FB00086EE92E09F938F931F920E94CB488DB74D
:100FC0009EB707968DBFF999FECF84E090E092BD61
:100FD00081BDF89A80B5853008F0C2C20E941B130B
:100FE00045E669ED75E00E94A6120E941B13992741
:100FF0009F938F9387E293E09F938F931F920E941A
:10100000CB488091E1050F900F900F900F900F90BB
:1010100080FD85C20E94641E809102018A3009F41D
:10102000AAC2843109F4A7C2289A80ED97E0909370
:101030004C0580934B0585E58093490884E693E051
:101040009F938F931F920E94CB488091E1050F9050
:101050000F900F9082FF60C280E793E09F938F9381
:101060001F920E94CB480F900F900F900E949842C1
:1010700088E893E1909347018093460181E0809353
:1010800048080E94120580E993E09F938F931F9276
:101090000E94CB4880ED97E00E94154FEC010F9025
:1010A0000F900F9080914F058823E1F380910C0100
:1010B0008823C1F310924F0580914708882309F4D3
:1010C000E5C00E94D9040E94FA20209102012A3032
:1010D00009F4E5C0243109F4E2C0289A80915F0444
:1010E000882309F4CDC080915F04815080935F0410
:1010F0008091460190914701019790934701809319
:1011000046018091460190914701892B29F08091F9
:101110003B05882309F4F3C0809146019091470173
:10112000892B09F4F2C08091C4019091C5018F5FB1
:101130009F4F09F403C180914F05882321F08091CE
:101140006C04882311F40E9462570E94C054CE019F
:101150000E94354F8823A9F164968091CC0388239F
:1011600009F4A5C081508093CC0380910001282F01
:10117000332780911A0190911B01821793070CF07D
:1011800090C080912F04806280932F048091C401CD
:101190009091C5018F5F9F4F09F4E4C084E0809374
:1011A0004A0580916C04882321F44AEAE42E45E044
:1011B000F42E0894E11CF11CF2E7EF16FBE0FF06A9
:1011C00019F00E94F8416ECFEE24FF248091D203E3
:1011D0009091D30301969093D3038093D2032091EF
:1011E000D0033091D1032F5F3F4F3093D103209331
:1011F000D003892F9927282FF999FECF1FBA8EE0A7
:1012000090E092BD81BD20BD0FB6F894FA9AF99A8C
:101210000FBE2091D203F999FECF1FBA8FE090E064
:1012200092BD81BD20BD0FB6F894FA9AF99A0FBE0F
:101230002091D0033091D1034091D103F999FECF91
:101240001FBA8AE090E092BD81BD40BD0FB6F89410
:10125000FA9AF99A0FBEF999FECF1FBA8BE090E087
:1012600092BD81BD20BD0FB6F894FA9AF99A0FBECF
:1012700084E190E00E94154FEC010E94F84112CFEA
:1012800080916F00806280936F0032CF0E94FC24B7
:101290000E94FA20209102012A3009F01BCF2898E1
:1012A0001DCF80912F048F7D80932F0477CF809363
:1012B000530810923B0410923A0410923904109291
:1012C000380410923704109236048091C401909132
:1012D000C5018F5F9F4F09F048CF80915F0488233D
:1012E00009F043CF88E99AE390934C0580934B052E
:1012F00080E09CE09093C5018093C40136CF2A30F2
:1013000079F1243169F1289A16CF0E944D4B85E07E
:1013100090E0909347018093460180912609909137
:101320002709019690932709809326098091C4018B
:101330009091C5018F5F9F4F09F0FDCE80916C04A5
:10134000882309F4F8CE80E197E290934C058093CE
:101350004B0580E890E09093C5018093C401EBCEEB
:101360002898E9CE80E797E190934C0580934B0550
:1013700080E093E09093C5018093C4010FCF0E9459
:10138000D9118FE992E09F938F931F920E94CB48CF
:10139000C1E00F900F900F900EEA12E0C23009F4F6
:1013A000ABC0C33009F4ABC0C43008F0A5C0F99994
:1013B000FECF80E590E092BD81BDF89A80B58C307B
:1013C00008F07CC0F999FECF81E590E092BD81BD27
:1013D000F89A80B58C3008F071C0F999FECF82E59B
:1013E00090E092BD81BDF89A80B58C3008F066C05F
:1013F000F999FECF83E590E092BD81BDF89A80B562
:101400008C3008F05BC0F999FECF80E590E092BD8A
:1014100081BDF89A80B58093D905F999FECF81E511
:1014200090E092BD81BDF89A80B58093DA05F99974
:10143000FECF82E590E092BD81BDF89A80B58093A1
:10144000DB05F999FECF83E590E092BD81BDF89A66
:1014500080B58093DC05F999FECF84E590E092BDDC
:1014600081BDF89A80B58093DD05F999FECF85E5B9
:1014700090E092BD81BDF89A80B58093DE05F99920
:10148000FECF86E590E092BD81BDF89A80B580934D
:10149000DF05F999FECF87E590E092BD81BDF89A0E
:1014A00080B58093E005C13059F41F930F931F92CC
:1014B0000E94CB480F900F900F9002C00E942B10FB
:1014C00045E669ED75E08C2F0E94D812CF5FC630DB
:1014D00008F464CF83E00E94C312F999FECF1FBACB
:1014E00081E090E092BD81BD80E580BD0FB6F894AB
:1014F000FA9AF99A0FBE12CD0E940E1158CF0E948F
:10150000441055CF5093D3034093D2035093D1034B
:101510004093D0039A0144CD8CE793E09FCD8FE3B5
:1015200093E09F938F931F920E94CB4888EE93E0A5
:101530000E94154FEC010E94C30A0F900F900F906C
:10154000CE010E94354F8823D9F38FE593E09F9316
:101550008F931F920E94CB480F900F900F905ACDFF
:1015600089E093E09F938F931F920E94CB480F9046
:101570000F900F9033CD289858CD10927C008FECAF
:1015800080937A0008950F931F93CF93DF938FB3C7
:1015900099278C010270107081FDF9CF83E090E0F3
:1015A00092BD81BDF89A80B5C82FDD27C531D10520
:1015B00008F02A97C7BD1092DB0384E690E00E94F2
:1015C0004E4F80911001909111018052934008F488
:1015D000E801CA3FD105D0F408EB13E0C7BD82E3B0
:1015E00090E00E944E4F1F930F931F920E94CB4892
:1015F00080911001909111010F900F900F908052E7
:10160000934020F02196CA3FD10540F32C2FF99941
:10161000FECF1FBA83E090E092BD81BD20BD0FB622
:10162000F894FA9AF99A0FBEC093CE058CE291E035
:101630000E944E4FDF91CF911F910F910895EF922D
:10164000FF920F931F93CF93DF9300E00093D60395
:101650000093D5030093D40380ED97E00E94154FCB
:10166000EC011CE891E0F92E85EFE82E033009F437
:10167000ABC000E08091EB039091EC038C5F934052
:101680000CF091C080910F01815080930F018091E7
:10169000E9039091EA038C5F93400CF079C080914C
:1016A0000E01815080930E018091E7039091E80331
:1016B0008C5F93400CF04AC080910D018150809363
:1016C0000D0188E080933E050E943D4B80910F0103
:1016D0008A3008F055C0F092D6038AE080930F015B
:1016E00080910E018A3008F043C0F092D5038AE061
:1016F00080930E0180910D018A3098F5F092D40309
:101700008AE080930D0180913E05882379F0CE0117
:101710000E94354F8823B9F38AEB93E09F938F9310
:101720001F920E94CB480F900F900F9010920C01C7
:101730008FEC80937A0080910C018823E1F31A30BA
:1017400008F447C0115009F091CF48C08091E703D9
:101750009091E803875094408CF180910D018F5F48
:10176000AECF863F80F2F092D403E0920D01CBCF52
:10177000863F08F4BFCFF092D503E0920E01BACFB6
:10178000863F08F4ADCFF092D603E0920F01A8CFC8
:101790008091E9039091EA03875094408CF0809106
:1017A0000E018F5F7FCF8091EB039091EC03875008
:1017B000944044F080910F018F5F67CF0F5F81CF1E
:1017C0000F5F72CF01E063CF1B3008F452CF19E0F6
:1017D00050CF8AE090E00E944E4FB4CF86E490E074
:1017E0000E944E4FE6E0CDB7DEB70C949B5C1F9293
:1017F0000F920FB60F921124AF92BF92CF92DF9249
:10180000EF92FF920F931F932F933F934F935F930A
:101810006F937F938F939F93AF93BF93EF93FF93B8
:101820002091F403822F9927AA27BB272F5FFC0161
:10183000429720F4E85CFF4F0C94AA5C1092F403EA
:1018400082E08093F3038091F30380937C00809186
:10185000F403882309F4D2C38FEC80937A00CEC3BB
:101860002093F40380917800909179002091F903FE
:101870003091FA03820F931F9093FA038093F90338
:1018800081E0DFCF2093F4038091F7039091F80378
:1018900080509E4F9093F8038093F70384E0D1CF5C
:1018A0002093F40380917800909179002091B904FD
:1018B0003091BA04821B930B9093CD058093CC0595
:1018C0008091CC059091CD05909302048093010402
:1018D00082E0B7CF2093F4038091B7049091B804CD
:1018E000805092409093C3058093C2058091C205B9
:1018F0009091C305909300048093FF0387E0A1CFEC
:101900002093F40380E092E09093F6038093F50334
:1019100086E097CF2093F40380E092E09093F80361
:101920008093F7031092F3038ECF2093F4038091FA
:10193000780090917900A0CF1092F40381E0809319
:101940000C018091D7039091D80301969093D8030E
:101950008093D70380E092E090931101809310016F
:1019600080911001909111015C01CC24DD248091C3
:10197000030490910404A0910504B0910604A80EFC
:10198000B91ECA1EDB1E809107048F5F823108F4E6
:10199000B2C28091120190911301A0911401B091F3
:1019A00015017C018D0123E0EE0CFF1C001F111FAF
:1019B0002A95D1F7E81AF90A0A0B1B0BEA0CFB1C53
:1019C0000C1D1D1D8091DB03992787FD9095A92F84
:1019D000B92FBC01CD0126EC34E240E050E00E947A
:1019E000E45BDC01CB01E81AF90A0A0B1B0BD801F6
:1019F000C7010496A11DB11DB7FDE1C213E0B59565
:101A0000A795979587951A95D1F780931201909392
:101A10001301A0931401B09315018091C605909114
:101A2000C7057C010027F7FC0095102F809112015B
:101A300090911301A0911401B0911501E81AF90ACF
:101A40000A0B1B0BE0925204F092530400935404CF
:101A5000109355042091DC033091DD034091DE03A7
:101A60005091DF0357FDBBC2A4E0559547953795CC
:101A70002795AA95D1F78091DC039091DD03A09181
:101A8000DE03B091DF03821B930BA40BB50B809395
:101A9000DC039093DD03A093DE03B093DF0380911A
:101AA000DC039091DD03A091DE03B091DF038E0D86
:101AB0009F1DA01FB11F8093DC039093DD03A093B3
:101AC000DE03B093DF038091D9039091DA03BC0168
:101AD00062957295707F7627607F7627681B790BF9
:101AE0002091DC033091DD034091DE035091DF0350
:101AF00057FD70C2E4E05595479537952795EA95CF
:101B0000D1F78091520490915304821B930B880F5C
:101B1000991F880F991F880F991F860F971F97FD90
:101B20006BC295958795959587959595879595958C
:101B300087959093DA038093D903D601C501D7FC2A
:101B400057C2B595A7959795879580930304909371
:101B50000404A0930504B093060489E0809307046D
:101B600082E06FCE2093F4032091F7033091F803C5
:101B700020503E4F220F331F220F331F3093F803A4
:101B80002093F703C90137FD31C295958795959547
:101B90008795959587959093EA038093E9038091C3
:101BA000FD039091FE03820F931F97FD1DC2959533
:101BB00087959093FE038093FD032091C10430919B
:101BC000C204821B930B90931701809316012091FE
:101BD000EF033091F0038091160190911701280FC7
:101BE000391F37FDE2C1359527953093F0032093D7
:101BF000EF0383E026CE2093F40320917800309108
:101C000079008091F9039091FA03280F391F220F70
:101C1000331F220F331F3093FA032093F903C901B6
:101C200037FDCBC195958795959587959595879522
:101C30009093EC038093EB038091FB039091FC0362
:101C4000820F931F97FDB7C1959587959093FC03DD
:101C50008093FB032091C3043091C404821B930B37
:101C600090931901809318012091F1033091F203B0
:101C70008091180190911901280F391F37FD98C1E3
:101C8000359527953093F2032093F10381E0D9CD68
:101C90002093F40380917800909179002091B90409
:101CA0003091BA04821B930B9093CD058093CC05A1
:101CB0008091CC059091CD052091010430910204D2
:101CC000820F931F9093E4038093E30382E0B9CDE6
:101CD0002093F4038091B7049091B804805092400F
:101CE0009093C3058093C2058091C2059091C3056E
:101CF0002091FF0330910004820F931F9093E6031D
:101D00008093E50387E09DCD2093F4038091F50354
:101D10009091F60380509E4F9093E8038093E703E1
:101D200086E08FCD2093F4038091F7039091F80320
:101D300080509E4FF3CD2093F4030CCE2093F403F8
:101D40008091B1049091B204A091B304B091B40415
:101D50009C01AD0160E070E080E094E40E94945A40
:101D6000DC01CB01BC01CD010E94FD5ADC01CB019D
:101D70009093E2038093E1038091E1039091E20369
:101D800002970CF4C4C08091B1049091B204A09168
:101D9000B304B091B40420E030E84BE354E4BC0158
:101DA000CD010E94F95A8823DCF58091B10490910D
:101DB000B204A091B304B091B4042AE037ED43EA31
:101DC0005CE3BC01CD010E94955ADC01CB018093FC
:101DD000B1049093B204A093B304B093B40480917F
:101DE000300490913104845F9140D0F48091B1042B
:101DF0009091B204A091B304B091B4042DEC3CECEA
:101E00004CEC5DE3BC01CD010E94955ADC01CB0195
:101E10008093B1049093B204A093B304B093B4043C
:101E200081E08093E00380E092E09093C505809389
:101E3000C4058091E1039091E203AA2797FDA09544
:101E4000BA2F20917304309174044091750450911D
:101E50007604820F931FA41FB51F80937304909381
:101E60007404A0937504B0937604209173043091A8
:101E70007404409175045091760457FDA6C01AE091
:101E800055954795379527951A95D1F78091730405
:101E900090917404A0917504B0917604821B930B09
:101EA000A40BB50B8093730490937404A0937504F2
:101EB000B093760483E0C5CC2093F40380911A019B
:101EC00090911B019C01220F331F280F391F809115
:101ED00078009091790063E070E00E940F5C260F1B
:101EE000371F369527953695279530931B012093FC
:101EF0001A0185E0A6CC80930704A0920304B09257
:101F00000404C0920504D092060482E09ACC809129
:101F1000E1039091E2038F5F9F4F0CF081CF80919E
:101F2000B1049091B204A091B304B091B40420E044
:101F300030E849E054E4BC01CD010E94E05B181692
:101F40000CF06ECF8091B1049091B204A091B304D3
:101F5000B091B4042AE037ED43EA5CE3BC01CD0163
:101F60000E94945ADC01CB018093B1049093B20497
:101F7000A093B304B093B4048091300490913104E1
:101F8000845F914008F04CCF8091B1049091B204ED
:101F9000A091B304B091B4042DEC3CEC4CEC5DE3A7
:101FA000BC01CD010E94945A31CF2F5F3F4F1BCE11
:101FB0002F5F3F4F65CE019647CE079633CED801AF
:101FC000C7010B96A11DB11D19CD21503C4F4F4F9C
:101FD0005F4F55CF215F3F4F4F4F5F4F8BCD215FFD
:101FE0003F4F4F4F5F4F40CD0196E1CD0796CDCD8E
:101FF0000196A11DB11DA5CD0F9693CDFF91EF9137
:10200000BF91AF919F918F917F916F915F914F9110
:102010003F912F911F910F91FF90EF90DF90CF9004
:10202000BF90AF900F900FBE0F901F901895F99929
:10203000FECF92BD81BDF89A80B599270895F99990
:10204000FECF1FBA92BD81BD60BD0FB6F894FA9A5B
:10205000F99A0FBE089583E08093D90582E08093BA
:10206000DA0581E08093DB0584E08093DC0585E080
:102070008093DD0586E08093DE0587E08093DF05B1
:1020800088E08093E005089568E06093E10571E0E1
:10209000709331064EE14093E2058BEF8093E405A7
:1020A0008AE08093E5054093E3054093E70585E0EA
:1020B0008093E80580E48093E9051092EA058FE0BB
:1020C0008093E6056093EB0520E12093EC0556E054
:1020D0005093ED056093EE0586EE8093EF054093F7
:1020E000F00580E88093F10534E63093F20598E737
:1020F0009093F30583E08093F4053093F505909376
:10210000F60581E28093F70583E28093F80584E188
:102110008093F9051092FA052093FB051092FC05B7
:102120001092FD051092FE051092FF051092140604
:10213000109215061092160610921706309300069C
:1021400098E29093010670933006109202068AEF8F
:102150008093030650930806309304069093050677
:10216000109206068093070692E3909309062AE5EB
:1021700020930A0690930B0610922F0620930C06CC
:1021800080E580930D0686E480930E0685E58093B6
:102190000F068093100680E280931106809312064A
:1021A000909313068FE58093180683EF80931A06A9
:1021B0008AEA80931C0680931D064093190640937B
:1021C0001B068CEF80931E0630931F06209320067B
:1021D00020932106209322068BE48093230680938C
:1021E00024068093250610922606509327066093B6
:1021F00028062093290640932A0630932B06309315
:102200002C0684E080932D068CE0A8E4B1E0E2E3A4
:10221000F6E00D9001928A95E1F708958AE68093A1
:10222000E10571E0709331065EE15093E2058BEFBA
:102230008093E4059AE09093E5055093E30550936D
:10224000E70585E08093E80580E48093E905109236
:10225000EA058FE08093E6059093EB0580E180939B
:10226000EC0566E06093ED05E8E0E093EE0586EEB0
:102270008093EF055093F00580E88093F1052AE5FF
:102280002093F20598E79093F30583E08093F4059B
:102290002093F5059093F60581E28093F70583E29C
:1022A0008093F8055093F9051092FA0540E24093A7
:1022B000FB051092FC051092FD051092FE05109290
:1022C000FF05109214061092150610921606109231
:1022D000170634E63093000698E290930106709357
:1022E0003006109202068AEF809303066093080678
:1022F0003093040690930506109206068093070615
:1023000082E38093090620930A0680930B061092BD
:102310002F0620930C0680E580930D068CE38093B6
:102320000E0685E580930F068093100640931106F4
:10233000409312069BE4909313068FE58093180652
:1023400083EF80931A068AEA80931C0680931D0609
:1023500084E18093190680931B068CEF80931E0600
:1023600030931F06209320062093210620932206F7
:1023700090932306909324069093250610922606A8
:1023800060932706E09328062093290650932A0697
:1023900030932B0630932C0684E080932D068CE03E
:1023A000A2E5B1E0E2E3F6E00D9001928A95E1F753
:1023B00008951F938AE68093E10551E0509331061A
:1023C0004EE14093E2058BEF8093E4058AE0809331
:1023D000E5054093E3054093E70585E08093E80534
:1023E00080E48093E9051092EA0584E18093E60594
:1023F0008EE08093EB05E0E1E093EC051CE01093A8
:10240000ED05F8E0F093EE0586EE8093EF0540933E
:10241000F00580E88093F10530E53093F20596E908
:102420009093F30583E08093F4053093F505909342
:10243000F60581E28093F70583E28093F8054093E7
:10244000F9051092FA0560E26093FB051092FC0515
:102450001092FD051092FE051092FF0510921406D1
:1024600010921506109216061092170624E6209375
:10247000000698E2909301065093300610920206EF
:102480008AEF8093030676E0709308062093040693
:1024900090930506109206068093070682E38093C8
:1024A00009069AE590930A0680930B0610922F0670
:1024B00090930C0630930D0650930E0685E580939D
:1024C0000F0680931006E093110660931206209386
:1024D00013068FE58093180683EF80931A068AEA25
:1024E00080931C0680931D068FE0809319068093CD
:1024F0001B068CEF80931E0620931F0690932006E8
:1025000090932106909322068BE480932306809378
:102510002406809325061092260670932706F093D2
:1025200028069093290640932A0620932B06209391
:102530002C0684E080932D06AAE5B1E0E2E3F6E004
:102540000D9001921A95E1F71F910895282FFB0134
:102550008150853008F023E0842F992733272150BC
:102560003040829FB001839F700D929F700D1124A7
:102570006C597F4F27E130E1AC01CF010E944D5AE9
:102580000E94E9410895282F863078F025E0F999D6
:10259000FECF1FBA82E090E092BD81BD20BD0FB694
:1025A000F894FA9AF99A0FBE0895882381F708954E
:1025B000FF920F931F93CF93C82F8B01F42E863079
:1025C00098F1C5E08F2D99272C2F332721503040CB
:1025D000829FF001839FF00D929FF00D11242FE157
:1025E00030E1AC01B801CF018C599F4F0E94725A63
:1025F000F999FECF1FBA82E690E092BD81BDF0BC92
:102600000FB6F894FA9AF99A0FBE2FE130E148E03C
:1026100050E0B80180E590E00E94725A8C2F0E9431
:10262000C3120E94E94102C0882361F6CF911F9135
:102630000F91FF900895CF93F999FECF82E090E03B
:1026400092BD81BDF89A80B5C82F8150853020F0A9
:10265000C3E08C2F0E94C3128C2F9927CF9108952D
:102660006817790744F4680F791F77FD09C0CB011B
:10267000959587950895681B790B861B970B089590
:102680006F5F7F4FCB01959587950895EF92FF92ED
:102690000F931F93CF93C82F8B0180916C048823D5
:1026A000A9F4C150CF3F91F07B01E60EF71E1093C5
:1026B0004C0500934B0580914B0590914C05892B5F
:1026C000D1F7C7010E94414FC15088F7CF911F91A8
:1026D0000F91FF90EF900895ADE3B0E0E2E7F3E1F2
:1026E0000C94735C2091E7033091E8038091BF0460
:1026F0009091C004281B390B3A87298730938706AD
:10270000209386062091F1033091F20337FDD4C760
:102710003595279535952795359527953AA729A776
:102720003C872B8779012091EF033091F00337FD2F
:10273000C0C73595279535952795359527953CA79D
:102740002BA73E872D87F0925F06E0925E063093BE
:1027500055062093540680917F0690918006AA2703
:1027600097FDA095BA2F7C018D01EE0CFF1C001F78
:10277000111FE80EF91E0A1F1B1F8091E3039091A1
:10278000E4039C01442737FD4095542FDA01C90129
:10279000880F991FAA1FBB1F880F991FAA1FBB1F55
:1027A000820F931FA41FB51F820F931FA41FB51F75
:1027B000E80EF91E0A1F1B1F17FD9CC715950795EC
:1027C000F794E79415950795F794E794F0928006AF
:1027D000E0927F068091910690919206AA2797FD3C
:1027E000A095BA2F7C018D01EE0CFF1C001F111F5C
:1027F000E80EF91E0A1F1B1F8091E5039091E60366
:102800009C01442737FD4095542FDA01C901880FF8
:10281000991FAA1FBB1F880F991FAA1FBB1F820FDA
:10282000931FA41FB51F820F931FA41FB51FE80E8F
:10283000F91E0A1F1B1F17FD54C715950795F7941E
:10284000E79415950795F794E794F0929206E09235
:10285000910680915C0690915D06AA2797FDA09550
:10286000BA2F9C01AD01220F331F441F551F280FA3
:10287000391F4A1F5B1F8091E1039091E203AA2751
:1028800097FDA095BA2F280F391F4A1F5B1F57FDD0
:1028900016C755954795379527955595479537957B
:1028A000279530935D0620935C062091E3033091D9
:1028B000E403C901880F991F880F991F820F931F86
:1028C000820F931FAA2797FDA095BA2F20919B04F2
:1028D00030919C0440919D0450919E04820F931F5F
:1028E000A41FB51F80939B0490939C04A0939D0408
:1028F000B0939E042091E5033091E603C901880F4F
:10290000991F880F991F820F931F820F931FAA2769
:1029100097FDA095BA2F209197043091980440918B
:10292000990450919A04820F931FA41FB51F80939E
:10293000970490939804A0939904B0939A0480917B
:10294000690690916A062091E3033091E403820FB7
:10295000931F90936A0680936906809189069091EF
:102960008A062091E5033091E603820F931F90932E
:102970008A06809389068091B5049091B6040196E9
:102980009093B6048093B50480919304909194043D
:10299000A0919504B0919604BC01CD010E94305BDA
:1029A0005B016C018091C4059091C505AA2797FD34
:1029B000A095BA2FBC01CD010E94305B7B018C0138
:1029C0008091B1049091B204A091B304B091B40489
:1029D0009C01AD01C801B7010E94945ADC01CB01F2
:1029E0009C01AD01C601B5010E94955ADC01CB01E5
:1029F000BC01CD010E94FD5ADC01CB018093930400
:102A000090939404A0939504B09396048FEC8093D4
:102A10007A0010920C01209083043090840440903E
:102A200085045090860439E423163BE6330631E0F2
:102A3000430630E053060CF414C188E49BE6A1E0A1
:102A4000B0E08D839E83AF83B88760908B047090D5
:102A50008C0480908D0490908E0439E463163BE6DC
:102A6000730631E0830630E093060CF4DCC488E49E
:102A70009BE6A1E0B0E089839A83AB83BC83498560
:102A80005A85CA01AA2797FDA095BA2F20917B04E9
:102A900030917C0440917D0450917E04280F391FB1
:102AA0004A1F5B1F2DA33EA34FA358A7A0908D06DE
:102AB000B0908E06C0908F06D0909006A80EB91EDA
:102AC000CA1EDB1E86017501309149043BA33323E6
:102AD00009F0DAC080914804882309F0C2C440910B
:102AE000E1054CA346FF13C6EBA5FCA5CF01AA2721
:102AF00097FDA095BA2FBC01CD0129813A814B8168
:102B00005C810E94E45B9B01AC0197FD2CC7BBE09C
:102B10005595479537952795BA95D1F78091280116
:102B2000E82EFF2400271127C801B7010E94E45BAB
:102B300097FD14C7ACE09595879577956795AA950D
:102B4000D1F76F87788B898B9A8B6093CF047093C2
:102B5000D0048093D1049093D20429A53AA5C90149
:102B6000AA2797FDA095BA2FBC01CD012D813E81EA
:102B70004F8158850E94E45B9B01AC0197FD01C722
:102B8000FBE05595479537952795FA95D1F7C801FC
:102B9000B7010E94E45B97FDEFC6DC01CB01ECE0DE
:102BA000B595A79597958795EA95D1F78093D30426
:102BB0009093D404A093D504B093D6042091CF046D
:102BC0003091D0043093D2052093D1052091D304C5
:102BD0003091D4043093D8052093D7052F853889B8
:102BE00049895A89821B930BA40BB50B8AAF9BAF03
:102BF000ACAFBDAF8093D3049093D404A093D5041D
:102C0000B093D604A80EB91ECA1EDB1E860175013C
:102C1000309127013DA7332309F0A3C58EA79FA7B5
:102C2000A8ABB9ABB7FD61C62EA53FA548A959A968
:102C300055954795379527958DA19EA1AFA1B8A52C
:102C4000821B930BA40BB50B8DA39EA3AFA3B8A7B8
:102C500080937B0490937C04A0937D04B0937E04C6
:102C60008CC598EB291694E939069EEF49069FEF2B
:102C700059060CF0F1C328EB34E94EEF5FEF2D83DA
:102C80003E834F835887E1CE2DA13EA14FA158A589
:102C900020937B0430937C0440937D0450937E0406
:102CA0003091E1053CA31092D8051092D7051092FF
:102CB000D2051092D1051092CB041092CC04109240
:102CC000CD041092CE041092C7041092C804109242
:102CD000C9041092CA04309127013DA78091CB040A
:102CE0009091CC04A091CD04B091CE04BC01CD0153
:102CF00024E630E040E050E00E94585CDA01C9016F
:102D00004091C7045091C804481B590B58A34F8FDA
:102D10008091C7049091C804A091C904B091CA04DD
:102D2000BC01CD0124E630E040E050E00E94585C58
:102D3000DA01C9012091CB043091CC04821B930BA2
:102D40009AA389A38091200190912101A091220151
:102D5000B0912301BC01CD0128E631E040E050E014
:102D60000E94E45BE616F7060807190744F05701CE
:102D70006801A61AB70AC80AD90A8601750117FDA3
:102D8000A3C4A0928D06B0928E06C0928F06D092F8
:102D900090062BA53CA58F8D98A1280F391F79018E
:102DA0000027F7FC0095102F80917F0490918004FC
:102DB000A0918104B0918204E80EF91E0A1F1B1F26
:102DC0005701680180914C0490914D04281B390BE8
:102DD000C901AA2797FDA095BA2F280E391E4A1EB1
:102DE0005B1E20913C0130913D0140913E0150918C
:102DF0003F01221533054405550574F4A8EAEA2E6F
:102E0000A1E6FA2E012D112DE21AF30A040B150B7F
:102E1000170128015701680188279927DC01821BC7
:102E2000930BA40BB50B281639064A065B060CF06B
:102E3000E9C2F8E52F2EFEE93F2EFFEF4F2EFFEF00
:102E40005F2E220E331E441E551E209283043092A4
:102E5000840440928504509286048201710120927C
:102E60007F0430928004409281045092820429A50C
:102E70003AA5A9A1BAA12A0F3B1FA901662757FDB0
:102E80006095762F8091870490918804A0918904A1
:102E9000B0918A04480F591F6A1F7B1F5A016B01AA
:102EA00080914A0490914B04281B390BC901AA2731
:102EB00097FDA095BA2F680E791E8A1E9B1E8091E1
:102EC000400190914101A0914201B09143018EAB2C
:102ED0009FABA8AFB9AF86159705A805B90564F4EF
:102EE00048EA51E660E070E0481B590B6A0B7B0B27
:102EF0003A014B015A016B018EA99FA9A8ADB9AD4A
:102F0000B095A095909581959F4FAF4FBF4F681694
:102F100079068A069B060CF064C2E8E56E2EEEE99F
:102F20007E2EEFEF8E2EEFEF9E2E2EA93FA948ADFD
:102F300059AD620E731E841E951E60928B047092B2
:102F40008C0480928D0490928E04B401A30160924F
:102F50008704709288048092890490928A048DA1DB
:102F60009EA1AFA1B8A580938F0490939004A093E5
:102F70009104B09392046092AB047092AC0480927E
:102F8000AD049092AE042092A3043092A404409227
:102F9000A5045092A6044093A7045093A8046093FC
:102FA000A9047093AA04E0929F04F092A0040093F5
:102FB000A1041093A204809118019091190197FD2A
:102FC000A4C37C01F594E794F594E794F594E79411
:102FD000FAA6E9A6809116019091170197FD93C377
:102FE0008C011595079515950795159507951CA7BF
:102FF0000BA78091EB039091EC030F9734F458E109
:10300000E52E5CEFF52EFAA6E9A68091EB039091F0
:10301000EC03079734F440E3E42E48EFF42EFAA6CD
:10302000E9A6209102012A3009F46BC28091EB03DA
:103030009091EC03815D97400CF007C28091EB0307
:103040009091EC03805E974034F080EDE82E87E0AD
:10305000F82EFAA6E9A68091E9039091EA030F976A
:1030600024F408E11CEF1CA70BA78091E9039091C1
:10307000EA03079724F400E318EF1CA70BA72A30F4
:1030800009F455C28091E9039091EA03815D97406C
:1030900024F008EE13E01CA70BA78091E9039091A0
:1030A000EA03805E974024F000ED17E01CA70BA711
:1030B000A0913301AA2309F497C06091180170917F
:1030C00019018091D7049091D804681B790B209145
:1030D000180130911901280F391F37FD3FC335956D
:1030E00027953093D8042093D704613871050CF4E8
:1030F0003AC260E870E07093DE046093DD048A2FCA
:103100009927869FF001879FF00D969FF00D11245F
:10311000CF01F7FD21C37C01F594E794F594E79482
:10312000F594E794F594E79429A53AA5E20EF31EE9
:10313000FAA6E9A640911601509117018091D90491
:103140009091DA04481B590B209116013091170118
:10315000280F391F37FDFDC2359527953093DA04C6
:103160002093D904413851050CF4F5C140E850E0F2
:103170005093DC044093DB048A2F9927849FD0016D
:10318000859FB00D949FB00D1124AD019D01B7FD39
:10319000DDC2890115950795159507951595079534
:1031A00015950795EBA5FCA50E0F1F1F1CA70BA7D8
:1031B000869F9001879F300D969F300D1124C90185
:1031C0002091180130911901820F931F90931901DA
:1031D000809318018091160190911701480F591F93
:1031E00050931701409316014D855E851416150600
:1031F0000CF0C1C18091D1059091D20597FDA2C27A
:10320000AA2797FDA095BA2F6DA5262F332744270F
:103210005527BC01CD010E94E45B97FD8EC2E6E01C
:103220009595879577956795EA95D1F7AF8DB8A174
:10323000A60FB71FB0934E06A0934D064B855C8535
:10324000141615060CF0C1C18091D7059091D805D0
:1032500097FD6FC2AA2797FDA095BA2F6DA5262FBF
:10326000332744275527BC01CD010E94E45B97FD1D
:103270005BC246E095958795779567954A95D1F716
:10328000A9A1BAA1A60FB71FB0934306A093420607
:103290003CA137FDC1C11093410600934006F09256
:1032A0005006E0924F068091DD05E82FFF27EE0FD4
:1032B000FF1FE354F94F8081918182599F4FA09164
:1032C0006604B0916704A817B9070CF0EEC0CD01F1
:1032D00001969093670480936604DC018091DE057B
:1032E000E82FFF27EE0FFF1FE354F94F80819181F4
:1032F00082599F4F60916404709165046817790743
:103300000CF0C4C0CB0101969093650480936404D3
:10331000BC018091DF05E82FFF27EE0FFF1FE3546C
:10332000F94F8081918182599F4F40916204509161
:103330006304481759070CF0D5C0CA010196909351
:10334000630480936204AC018091E005E82FFF27BD
:10335000EE0FFF1FE354F94F8081918182599F4FF7
:103360002091600430916104281739070CF0ABC03C
:10337000C901019690936104809360049C01B7FD9C
:1033800093C1AF3FB10539F034F08FEF90E09093E7
:1033900067048093660477FD76C16F3F710539F04D
:1033A00034F08FEF90E0909365048093640457FDB0
:1033B00070C14F3F510539F034F08FEF90E090939A
:1033C00063048093620437FD6AC12F3F310509F021
:1033D0000CF4EEC28FEF90E0909361048093600450
:1033E000E7C260928B0470928C0480928D0490925C
:1033F0008E04A0928704B0928804C0928904D0926F
:103400008A04ADCD209283043092840440928504D6
:1034100050928604A0927F04B0928004C0928104EE
:10342000D092820424CD98EB691694E979069EEF38
:1034300089069FEF99062CF528EB34E94EEF5FEFF4
:1034400029833A834B835C831ACB98EEE92E93E071
:10345000F92EFAA6E9A6F2CD2D823E824F82588639
:10346000F4CA8DA19EA1AFA1B8A580937B049093CF
:103470007C04A0937D04B0937E049091E1059CA30D
:1034800012CC69827A828B829C82F9CA8081918176
:1034900082599F4F861797070CF03BCF6115710536
:1034A00009F437CFCB0101972FCF808191818259C9
:1034B0009F4F8A179B070CF011CF109709F40ECF7E
:1034C000CD01019706CF8081918182599F4F82174C
:1034D00093070CF054CF2115310509F450CFC901E1
:1034E000019748CF8081918182599F4F841795071A
:1034F0000CF02ACF4115510509F426CFCA010197D6
:103500001ECF8091EB039091EC03835F934034F0E6
:1035100038EEE32E33E0F32EFAA6E9A68091EB0312
:103520009091EC038A5F93400CF495CD8ECD809101
:10353000E9039091EA03835F934024F008EE13E0DF
:103540001CA70BA78091E9039091EA038A5F93403F
:103550000CF4AECDA9CD3FEF403853070CF008CEA8
:1035600040E85FEF05CE8FEF603878070CF0C3CDF1
:1035700060E87FEFC0CD8091D1059091D20597FD95
:103580009BC1AA2797FDA095BA2FEDA52E2F332713
:1035900044275527BC01CD010E94E45B97FDADC1D6
:1035A00056E095958795779567955A95D1F72F8D24
:1035B00038A1261B370B30934E0620934D064B85C2
:1035C0005C85141615060CF43FCE8091D7059091BA
:1035D000D80597FD6DC1AA2797FDA095BA2FEDA537
:1035E0002E2F332744275527BC01CD010E94E45BD1
:1035F00097FD88C136E095958795779567953A95BB
:10360000D1F729A13AA1261B370B3093430620930B
:1036100042063CA137FF3FCE4BA1442309F03BCEED
:1036200080914804882309F036CE8B859C85A1E0E3
:1036300081309A070CF044C12B853C854FEF203038
:1036400034070CF0A3C189A59AA5280F391F3C8720
:103650002B8720503F4F3093500620934F06AD8567
:10366000BE85E1E0A130BE070CF465C12BA53CA5E9
:10367000A20FB31FBE87AD87A050B140B0934106E3
:10368000A093400610CE109265041092640457FF78
:1036900090CE109263041092620437FF96CE10927F
:1036A00061041092600484C1109267041092660451
:1036B00072CE295F3F4F3DC8295F3F4F29C82D5F1C
:1036C0003F4F4F4F5F4FE5C8E60EF71E081F191F0B
:1036D000E0928D06F0928E0600938F06109390066E
:1036E00058CB23E030E040E050E0E20EF31E041F30
:1036F000151FA3C883E090E0A0E0B0E0E80EF91E3B
:103700000A1F1B1F5BC807966BCC07965ACC2DA1CE
:103710003EA14FA158A520937B0430937C04409395
:103720007D0450937E04BFCA615C7F4F8F4F9F4FD3
:10373000A0CD909581959F4F8DCD615C7F4F8F4F30
:103740009F4F6DCD909581959F4F5ACD215F3F4FF3
:1037500020CD2F5F3F4F00CD0F96DDCC2F5F3F4F29
:10376000BECC2DA13EA14FA158A520937B04309340
:103770007C0440937D0450937E0489859A85AA2712
:1037800097FDA095BA2F2AAD3BAD4CAD5DAD820F34
:10379000931FA41FB51F8B8B9C8BAD8BBE8BBC0165
:1037A000CD0129813A814B815C810E94E45B9B01C0
:1037B000AC0197FDBBC06BE05595479537952795B4
:1037C0006A95D1F760912901862F9927AA27BB27EF
:1037D0008F8B988FA98FBA8FBC01CD010E94E45BBB
:1037E00097FD9FC02CE095958795779567952A95CD
:1037F000D1F76B8F7C8F8D8F9E8F6093C7047093F2
:10380000C8048093C9049093CA046B897C898D890C
:103810009E892D813E814F8158850E94E45B9B01EA
:10382000AC0197FD79C08BE0559547953795279565
:103830008A95D1F76F89788D898D9A8D0E94E45B86
:1038400097FD65C0BCE09595879577956795BA9586
:10385000D1F76AAB7BAB8CAB9DAB6093CB04709321
:10386000CC048093CD049093CE0429853A8537FD0E
:103870007FC0213431050CF431CA6B8D7C8D8D8D68
:103880009E8D97FD2AC0613871058105910564F40C
:103890006AA97BA98CA99DA997FD82C06138710591
:1038A000810591050CF41ACA81E080936A0416CA56
:1038B000909581959F4F8FCE909581959F4F61CE2A
:1038C000E9A5FAA58E0F9F1F9C878B87805091409A
:1038D0009093500680934F06C2CE90958095709538
:1038E00061957F4F8F4F9F4FCECF0196A11DB11D88
:1038F0008EA79FA7A8ABB9AB97C9615C7F4F8F4FCD
:103900009F4F4ECE615C7F4F8F4F9F4F73CE615064
:10391000704F8F4F9F4F96CF2150384F4F4F5F4F73
:1039200082CF6150704F8F4F9F4F5CCF2150384FE7
:103930004F4F5F4F40CF4D855E856FEF403056074C
:1039400054F58BA59CA5480F591F5E874D874050A5
:103950005F4F5093410640934006A5CC6150704F95
:103960008F4F9F4FE7C82150384F4F4F5F4FCFC801
:10397000309521953F4F7DCF6150704F8F4F9F4FB6
:103980000CC92150384F4F4F5F4FFAC8F092500684
:10399000E0924F0664CE109341060093400683CC1C
:1039A00090958095709561957F4F8F4F9F4F76CF03
:1039B000E2E1C35C0C948F5C809102018D3009F4CC
:1039C00055C110927A008091EB039091EC03909393
:1039D000500680934F068091E9039091EA039093FB
:1039E0004106809340068091E7039091E80390930D
:1039F0008706809386068091E3039091E4039C01FF
:103A0000442737FD4095542FDA01C901880F991FCB
:103A1000AA1FBB1F880F991FAA1FBB1F820F931FCE
:103A2000A41FB51F820F931FA41FB51F909380067C
:103A300080937F068091E5039091E6039C014427E3
:103A400037FD4095542FDA01C901880F991FAA1F2D
:103A5000BB1F880F991FAA1FBB1F820F931FA41F94
:103A6000B51F820F931FA41FB51F909392068093DA
:103A700091068091E1039091E20390935D0680931B
:103A80005C068FEC80937A008091DD05E82FFF279C
:103A9000EE0FFF1FE354F94F8081918182599F4FB0
:103AA000A0916604B0916704A817B9070CF085C00F
:103AB000CD0101969093670480936604DC018091A8
:103AC000DE05E82FFF27EE0FFF1FE354F94F80813B
:103AD000918182599F4F60916404709165046817C9
:103AE00079070CF096C0CB01019690936504809302
:103AF0006404BC018091DF05E82FFF27EE0FFF1F54
:103B0000E354F94F8081918182599F4F4091620423
:103B100050916304481759070CF06CC0CA01019614
:103B20009093630480936204AC018091E005E82FD8
:103B3000FF27EE0FFF1FE354F94F808191818259D7
:103B40009F4F2091600430916104281739070CF0D1
:103B500042C0C901019690936104809360049C0166
:103B6000B7FD7FC0AF3FB10511F00CF061C077FD2C
:103B700067C06F3F710539F034F08FEF90E090939C
:103B800065048093640457FD61C04F3F510539F0CF
:103B900034F08FEF90E0909363048093620437FDDC
:103BA0005BC02F3F310509F00CF463C08FEF90E04C
:103BB00090936104809360045CC0808191818259FC
:103BC0009F4F8A179B070CF07ACF109709F477CF95
:103BD000CD0101976FCF8081918182599F4F8217CC
:103BE00093070CF0BDCF2115310509F4B9CFC901F8
:103BF0000197B1CF8081918182599F4F841795079A
:103C00000CF093CF4115510509F48FCFCA010197EC
:103C100087CF8081918182599F4F861797070CF03B
:103C200069CF6115710509F465CFCB0101975DCFAF
:103C30008FEF90E0909367048093660477FF99CFAD
:103C4000109265041092640457FF9FCF1092630492
:103C50001092620437FFA5CF1092610410926004A5
:103C600008C0109267041092660481CF0E941F0B57
:103C7000A8CE80910F069927AA27BB27BC01CD01AA
:103C800024EC39E040E050E00E94E45BDC01CB0131
:103C90008093400190934101A0934201B09343016E
:103CA000809110069927AA27BB27BC01CD010E944D
:103CB000E45BDC01CB0180933C0190933D01A09338
:103CC0003E01B0933F010895A0E0B0E0EAE6FEE1D6
:103CD0000C94775CC0E0D0E07E016E01469AD093F0
:103CE000BA04C093B904D093B804C093B70480E079
:103CF00090E0A0E0B0E08093B1049093B204A09370
:103D0000B304B093B404D093C404C093C304D09359
:103D1000C204C093C104D093C004C093BF04D09325
:103D20007106C0937006109229011092280110921A
:103D3000DB030E94DC1C84E690E00E944E4F0E9450
:103D4000DC1C8091E10580FF10C0809110019091F2
:103D50001101875B934008F0F0C1809110019091B0
:103D600011018E5E924008F4E8C10FE18AE090E014
:103D70000E944E4F8091E7039091E803C80FD91F2E
:103D80008091EB039091EC03E80EF91E8091E9031A
:103D90009091EA03C80ED91E015007FFE7CFA70193
:103DA000405F5F4F56954795569547955093C4048D
:103DB0004093C3049601205F3F4F36952795369573
:103DC00027953093C2042093C104CE014096969566
:103DD0008795929582958F7089279F7089279093F8
:103DE000C0048093BF049093710680937006309353
:103DF000BE042093BD045093BC044093BB04F999C6
:103E0000FECF84E090E092BD81BDF89A80B5853008
:103E100008F496C1809191069091920697FDE1C1B8
:103E20006CE070E00E94235C7093B8046093B70468
:103E300080917F069091800697FDCFC16CE070E085
:103E40000E94235C7093BA046093B9048091C40506
:103E50009091C505AA2797FDA095BA2FBC01CD0169
:103E60000E94305BDC01CB018093B1049093B204DB
:103E7000A093B304B093B4041092500610924F066E
:103E80001092410610924006109287061092860604
:103E900084E690E00E944E4F8091E3039091E4030A
:103EA000AA2797FDA095BA2F9C01AD01220F331FC1
:103EB000441F551F220F331F441F551F280F391F42
:103EC0004A1F5B1F280F391F4A1F5B1F3093800654
:103ED00020937F068091E5039091E603AA2797FD42
:103EE000A095BA2F7C018D01EE0CFF1C001F111F45
:103EF000EE0CFF1C001F111FE80EF91E0A1F1B1FEE
:103F0000E80EF91E0A1F1B1FF0929206E09291061E
:103F10008091F005682E772488249924C9019C019A
:103F2000442737FD4095542FC401B3010E94E45B40
:103F30005B016C016093AB047093AC048093AD049F
:103F40009093AE049701442737FD4095542FC40148
:103F5000B3010E94E45BDC01CB018093A304909346
:103F6000A404A093A504B093A604A0928704B092E1
:103F70008804C0928904D0928A0480937F0490932D
:103F80008004A0938104B093820410927B04109269
:103F90007C0410927D0410927E0480911201909115
:103FA0001301A0911401B09115019093C70580935E
:103FB000C6051092DA031092D9031092730410927E
:103FC000740410927504109276040091710410919B
:103FD00072041093700400936F0482E390E0909356
:103FE0004C0580934B0580910F069927AA27BB2784
:103FF000BC01CD0124EC39E040E050E00E94E45BDC
:10400000DC01CB018856954CAF4FBF4F80934001E8
:1040100090934101A0934201B09343018091100617
:104020009927AA27BB27BC01CD010E94E45BDC01D4
:10403000CB018856954CAF4FBF4F80933C01909376
:104040003D01A0933E01B0933F01109225011092D3
:104050002401C801AA2797FDA095BA2F209120011D
:10406000309121014091220150912301BC01CD01E9
:104070000E94E45BDC01CB0180938D0690938E0659
:10408000A0938F06B0939006109269041092680472
:1040900081E0809301010E94E94180912F048460B6
:1040A00080932F048091DD05E82FFF27EE0FFF1F7F
:1040B000E354F94F8081918182599F4F9093670417
:1040C000809366048091DE05E82FFF27EE0FFF1F27
:1040D000E354F94F8081918182599F4F90936504F9
:1040E000809364048091DF05E82FFF27EE0FFF1F08
:1040F000E354F94F8081918182599F4F90936304DB
:10410000809362048091E005E82FFF27EE0FFF1FE8
:10411000E354F94F8081918182599F4F90936104BC
:104120008093600484E680935F048091490588232E
:1041300009F45BC0469A579A58C00E94C30A15CE2C
:10414000F999FECF84E090E092BD81BDF89A80B5E8
:104150009927382F2227F999FECF85E090E092BD6C
:1041600081BDF89A80B5280F311D3093BA04209391
:10417000B904F999FECF86E090E092BD81BDF89A2E
:1041800080B59927382F2227F999FECF87E090E054
:1041900092BD81BDF89A80B5280F311D3093B804C7
:1041A0002093B704F999FECF88E090E092BD81BDDD
:1041B000F89A80B59927382F2227F999FECF89E000
:1041C00090E092BD81BDF89A80B5280F311DC901DC
:1041D000AA2797FDA095BA2F41CE909581959F4F24
:1041E0002DCE909581959F4F1BCEEEE0CDB7DEB7DB
:1041F0000C94935C90916C04992319F580912F0491
:104200008C7F80932F0480915C05882301F5A92F72
:10421000BB27FD01EF5CF74F8083FD01EF5CF74F9B
:104220008081AE57B94F8C939F5F923060F380913D
:104230005C05882379F080915C05815080935C0552
:1042400009C080912F04816080932F0403C0A92F9F
:10425000BB27E3CF8091820699279093070980932B
:10426000060980918306992790930909809308098C
:1042700010923E0510923D050E943D4B089580919D
:10428000E4058B3F68F08B3F09F4D5C28C3F09F4FD
:1042900074C38D3F09F4F6C28E3F21F4809160040F
:1042A000809338018091E3058B3F08F439C28B3F3E
:1042B00009F434C28C3F09F448C38D3F09F4D9C2D4
:1042C0008E3F09F478C380913901882309F02DC20B
:1042D000809339018091E5058B3F08F42DC28B3F17
:1042E00009F428C28C3F09F442C38D3F09F4C4C2CB
:1042F0008E3F09F45AC380913701882309F021C207
:10430000809337018091E7058B3F68F08B3F09F47C
:1043100095C28C3F09F42EC38D3F09F4B0C28E3F85
:1043200021F480916004809336018091E9058B3FF0
:1043300068F08B3F09F479C28C3F09F4E2C28D3FEB
:1043400009F4BEC28E3F21F4809160048093340151
:104350008091F1058B3F68F08B3F09F469C28C3F77
:1043600009F4FCC28D3F09F490C28E3F21F4809184
:104370006004809335018091F2058B3F08F4E8C119
:104380008B3F09F4E3C18C3F09F4EEC28D3F09F481
:1043900094C28E3F09F412C3809132018B3008F42D
:1043A000DCC18F3F11F4809332018091F3058B3F84
:1043B00068F08B3F09F427C28C3F09F4D2C28D3FCD
:1043C00009F466C28E3F21F480916004809331012C
:1043D0008091F4058B3F68F08B3F09F417C28C3F46
:1043E00009F489C28D3F09F46EC28E3F21F4809199
:1043F0006004809333018091F5058B3F68F08B3F1B
:1044000009F407C28C3F09F479C28D3F09F452C206
:104410008E3F21F480916004809330018091F605F5
:104420008B3F68F08B3F09F4F7C18C3F09F4ABC2B6
:104430008D3F09F43CC28E3F21F48091600480934B
:104440002F012091FB052B3F08F48BC12B3F09F472
:1044500086C12C3F09F47CC22D3F09F404C22E3FD3
:1044600009F4A6C220912D018091FC058B3F08F034
:104470007FC1809343048091FD058B3F68F08B3FA3
:1044800009F4D0C18C3F09F466C28D3F09F4EEC136
:104490008E3F21F480916004809342048091FE0558
:1044A0008B3F68F08B3F09F484C18C3F09F471C2E3
:1044B0008D3F09F4D2C18E3F21F480916004809336
:1044C00041048091FF058B3F68F08B3F09F474C174
:1044D0008C3F09F461C28D3F09F4C2C18E3F21F4C3
:1044E0008091600480934004809114068B3F68F0B3
:1044F0008B3F09F464C18C3F09F454C28D3F09F429
:10450000A3C18E3F21F48091600480933F04809189
:1045100015068B3F68F08B3F09F454C18C3F09F4BA
:104520002FC28D3F09F493C18E3F21F48091600426
:1045300080933E04809116068B3F68F08B3F09F410
:1045400044C18C3F09F4ECC18D3F09F4C5C18E3FD5
:1045500021F48091600480933D04809117068B3F85
:1045600068F08B3F09F434C18C3F09F4DCC18D3F06
:1045700009F4B5C18E3F21F48091600480933C041E
:10458000809100068B3F68F08B3F09F424C18C3F7B
:1045900009F4CFC18D3F09F484C18E3F21F480918D
:1045A000600480932C01809104068B3F68F08B3F60
:1045B00009F414C18C3F09F4BFC18D3F09F474C1E3
:1045C0008E3F21F48091600480932B018091090635
:1045D0008B3F68F08B3F09F404C18C3F09F4AFC1F5
:1045E0008D3F09F458C18E3F21F48091600480937F
:1045F0002A0180910C068B3F68F08B3F09F4F4C0D0
:104600008C3F09F49FC18D3F09F448C18E3F21F4CE
:10461000809160048093290180910D068B3F68F0A2
:104620008B3F09F4E4C08C3F09F46EC18D3F09F45F
:104630004DC18E3F21F480916004809328018091C8
:104640000E068B3F68F08B3F09F4D4C08C3F09F411
:1046500064C18D3F09F43DC18E3F21F48091600417
:1046600080932701809113068B3F68F08B3F09F4FC
:10467000C4C08C3F09F45AC18D3F09F433C18E3F49
:1046800021F48091600480932601809119068B3F6C
:1046900008F47FC08B3F09F47AC08C3F09F437C11E
:1046A0008D3F09F422C18E3F09F48BC180916B06C6
:1046B000823008F473C08F3F11F480936B068091B1
:1046C0001B068B3F08F46EC08B3F09F469C08C3F1A
:1046D00009F420C18D3F09F40BC18E3F09F474C168
:1046E00080918406823008F462C08F3F11F4809379
:1046F000840680912E068B3F70F08B3F09F480C0BA
:104700008C3F09F44CC18D3F09F49BC08E3F09F0EA
:104710005EC1809160048093940659C180916604C3
:1047200080933901882309F4D3CD843608F4D2CD9F
:1047300084E6CECD8091660480933701882309F406
:10474000DFCD843608F4DECD84E6DACD80916604D0
:10475000809332018B3008F024CE8AE024CE209161
:10476000660420932D018091FC058B3F08F481CED7
:104770008B3F09F454C08C3F09F408C18D3F09F404
:1047800069C08E3F09F077CE8091600472CE80912F
:10479000660480936B06823008F08DCF81E08DCF68
:1047A0008091660480938406823008F09ECF81E079
:1047B0009ECF8091660483CE8091660493CE8091D3
:1047C0006604A3CE80916604B3CE80916604C3CE06
:1047D00080916604D3CE80916604E3CE8091660416
:1047E000F3CE8091660403CF8091660413CF80914D
:1047F000660423CF8091660433CF8091660443CF53
:104800008091660488CF80916604E0CD8091660433
:10481000F0CD8091660400CE8091660410CE809128
:10482000660427CE8091660437CE809166048ECDD3
:10483000809166049ECD8091660432CD809166049D
:1048400072CD8091620467CF809162045ECE8091C8
:1048500062046ECE809162040CCE809162042FCEF1
:10486000809162043FCE209162047BCF80916204EC
:1048700013CE8091620454CF809162045DCF809109
:10488000620451CD809162040BCD8091620471CDA0
:10489000809162049BCD80916204A9CE80916204D4
:1048A000B9CE809162047DCE809162048DCE8091DC
:1048B0006204C5CD80916204AFCD8091620448CF7F
:1048C0008091620443CD8091620493CD8091620413
:1048D000B4CE80916204C4CE809162043CCE8091BB
:1048E00062044CCE80916204CECE8091620451CF9E
:1048F0008091620457CF809164047BCD80916404E1
:104900008BCD8091640422CD8091640496CE8091F9
:1049100064043FCF8091640445CF80916404A0CEAD
:104920008091640418CE8091640428CE8091640440
:10493000AACE8091640435CE8091640445CE8091E6
:10494000640455CE8091640465CE80916404E8CE01
:104950002091640406CF809164049ECD809164040C
:1049600008CD8091640432CD80916404F1CE8091B1
:104970006404E2CE80916404D6CC8091640490CC2F
:1049800080916404D5CD8091640459CD80916404F4
:1049900070CD8091640493CD80916404A3CD809107
:1049A0006404B9CE80916404B0CD80916004C4CE1B
:1049B00020916004D6CE80916004B2CE80916004D4
:1049C000C7CE80916004E5CE80916004EBCE3327A2
:1049D0002F5F3F4F8CE398E2B9010E94235C7093F4
:1049E0003B0160933A018091EF05809385068091A9
:1049F000EE05809356060895A8E2B0E0E2E0F5E205
:104A00000C94735C80912E04815009F485E08093AE
:104A10002E040E946C13209102012C3008F0A4C2D5
:104A2000299AE0905604F0905704FA82E982809126
:104A3000560699270A96E816F90614F49A8389838C
:104A400080915F04843608F091C28091FB049091BC
:104A5000FC04009709F06BC410926C0480912F0441
:104A60008F7E80932F042A3009F469C4243109F41D
:104A700066C428988091300490913104895E9340F7
:104A800008F466C48091F805282F33273A832983D8
:104A900080912F04806180932F048091D905A82FE5
:104AA000BB27AA0FBB1FFD01ED52F94F11821082E7
:104AB0008091DA05282F3327220F331FC9018D5229
:104AC000994FFC0111821082A354B94F11961C9288
:104AD0001E922354394FD90111961C921E92809137
:104AE000DC05E82FFF27EE0FFF1FE354F94F11827B
:104AF00010828091C30181508093C3018091C301D2
:104B00008F3F21F080912F0484FF25C40E943F2114
:104B100080910A0590910B059C01220F331F280FED
:104B2000391F0091D905A02FBB27AA0FBB1FFD017C
:104B3000E354F94FE090EB056E2D7727808191814A
:104B4000869FA001879F500D969F500D1124240F22
:104B5000351F37FF02C00C94793935952795359567
:104B60002795AD52B94F8091EC05482F55278D916F
:104B70009C91849FD001859FB00D949FB00D11240E
:104B8000CD01820F931F90930B0580930A0590939C
:104B90005D0480935C0480910C0590910D059C014F
:104BA000220F331F280F391F1091DA05A12FBB27C1
:104BB000AA0FBB1FFD01E354F94F80819181869FAD
:104BC000F001879FF00D969FF00D11242E0F3F1FCF
:104BD00037FF02C00C947D3935952795359527957B
:104BE000AD52B94F8D919C91849FB001859F700DFE
:104BF000949F700D1124CB01820F931F90930D058C
:104C000080930C0590935B0480935A048091DC059B
:104C1000E82FFF27EE0FFF1FE354F94F80819181AA
:104C2000909581959F4F8330910514F40C9430300A
:104C3000029790935904809358048091DB05E82FE4
:104C4000FF27EE0FFF1FE354F94FC080D18088E7A4
:104C500090E0C80ED91E809132019927AA2797FDAE
:104C6000A095BA2FBC01CD010E94305BDC01CB01C5
:104C700020E030E040E251E4BC01CD010E94955AB1
:104C8000DC01CB01BC01CD010E94025BDC01CB0148
:104C900080938B06F0903101809130019927AA27EB
:104CA00097FDA095BA2FBC01CD010E94305BDC01BD
:104CB000CB0120E030E040E251E4BC01CD010E9494
:104CC000955ADC01CB01BC01CD010E94025BDC01E5
:104CD000CB018093470690912F01909360068091BD
:104CE000530880FF06C080919406813810F00C9420
:104CF000BF30D0925704C0925604809156049091D0
:104D0000570497FF02C00C9473395091E105588BFA
:104D100052FD02C00C947A301092720640915C04ED
:104D200050915D04CA0157FF02C00C9485309595DF
:104D300087959595879597FF02C00C948E302091AA
:104D40003404309135042817390714F00C943830A6
:104D5000CA0157FF02C00C946F3C97FF02C00C942D
:104D60006C3CBC01759567957595679565367105C1
:104D700014F40C943B3064E670E040915A04509176
:104D80005B04CA0157FD02C00C944430039695950C
:104D900087959595879597FD02C00C944C3090951A
:104DA00081959F4F209132043091330428173907A1
:104DB00014F40C9455302150304080912F0484FD20
:104DC00002C00C947030109235041092340410928A
:104DD000330410923204E12FFF27EE0FFF1FE3543C
:104DE000F94F40910A06242F33278081918128179B
:104DF000390734F480912F0682FF02C00C94BA3038
:104E0000E12FFF27EE0FFF1FE354F94F842F99275F
:104E100020910B06821B91092081318128173907C7
:104E200014F410924704E12FFF27EE0FFF1FE35405
:104E3000F94F842F992722273327281B390B80818C
:104E400091818217930734F480912F0683FF02C06B
:104E50000C94B53080914604882391F0E12FFF2710
:104E6000EE0FFF1FE354F94F80910B069927841B27
:104E70009109208131818217930714F40C94373102
:104E8000E02FFF27EE0FFF1FE354F94F242F3327A6
:104E9000808191812817390734F480912F0680FF93
:104EA00002C00C94AF3050914404552399F0E02F88
:104EB000FF27EE0FFF1FE354F94F842F992720910E
:104EC0000B06821B9109208131812817390714F4C0
:104ED0000C943F31E02FFF27EE0FFF1FE354F94FF3
:104EE000842F992722273327281B390B8081918112
:104EF0008217930734F480912F0681FF02C00C942F
:104F0000AA3080914504882391F0E02FFF27EE0F0F
:104F1000FF1FE354F94F80910B069927841B9109D9
:104F2000208131818217930714F40C943B318091D6
:104F30004704882331F480914604882311F40C94AB
:104F4000A73091E0552331F480914504882311F472
:104F50000C949C3081E08093490410924804109294
:104F6000470410924604FAC129985BCD80915F04F2
:104F70008D3808F4BECD80912F048F7E80932F044E
:104F80009091F90582E3989FC00111249093FC044D
:104F90008093FB04E981FA81B99714F00C942031D5
:104FA00080913004909131048F3F910519F010F0F9
:104FB0000C946C391092DF041092E0041092E1041A
:104FC0001092E2041092E3041092E4041092E504BB
:104FD0001092E6048A3F910511F40C94E53D30915E
:104FE000DB05E32FFF27EE0FFF1FE354F94F80810E
:104FF0009181813591050CF4E9C040916C04442302
:1050000009F0E4C08091DC05E82FFF27EE0FFF1FB9
:10501000E354F94F808191818C34910514F40C9400
:10502000F43C8091FD048F5F893C10F40C941C3E8D
:105030002C3010F00C94B23F299810926C0410920E
:10504000FD0410923104109230040091D905E02F34
:10505000FF27EE0FFF1FE354F94F808191818734C2
:10506000910514F00C94AE3F1091DA05E12FFF2763
:10507000EE0FFF1FE354F94F808191810190F08181
:10508000E02DF7FF02C00C942C41E734F1050CF43D
:1050900070C021E0A12FBB27AA0FBB1FA354B94F9B
:1050A0008D919C9111978734910544F0E02FFF2753
:1050B000EE0FFF1FE354F94F808191818D919C91F8
:1050C0008734910564F0E02FFF27EE0FFF1FE354B4
:1050D000F94F80819181873491050CF022E0E12F16
:1050E000FF27EE0FFF1FE354F94F80819181863433
:1050F000910564F4E02FFF27EE0FFF1FE354F94FF3
:1051000080819181873491050CF023E0E12FFF2706
:10511000EE0FFF1FE354F94F808191818A5B9F4F0F
:1051200064F4E02FFF27EE0FFF1FE354F94F808157
:105130009181873491050CF024E0E12FFF27EE0FD9
:10514000FF1FE354F94F808191818A5B9F4F64F484
:10515000E02FFF27EE0FFF1FE354F94F808191816D
:10516000863491050CF425E0822F0E94C312109121
:10517000DA05E12FFF27EE0FFF1FE354F94F80817F
:1051800091810190F081E02DF7FF02C00C949740CF
:105190007E9714F00C94A53E8091D905E82FFF2747
:1051A000EE0FFF1FE354F94F808191818A5B9F4F7F
:1051B00014F00C94A53E81E08093470888EE93E0BC
:1051C00090934C0580934B053091DB05E32FFF272F
:1051D000EE0FFF1FE354F94F808191818B5A9F4F4F
:1051E0000CF087CCD090DC05ED2DFF27EE0FFF1FD4
:1051F000E354F94F80819181855B9F4F14F00C94AB
:1052000090398091FE048F5F893C10F40C94CE3C61
:1052100088EC8093FE0481E090E0909331048093C9
:10522000300481E080936C041092E7041092E8044B
:105230001092E9041092EA0410927B0410927C040C
:1052400010927D0410927E041092770410927804DC
:105250001092790410927A048091F005E82EFF24D0
:105260000027112780917F06909180069C0144279A
:1052700037FD4095542FC801B7010E94E45BDC0163
:10528000CB0180938B0490938C04A0938D04B093F6
:105290008E0480919106909192069C01442737FDDF
:1052A0004095542FC801B7010E94E45BDC01CB019B
:1052B0008093830490938404A0938504B093860420
:1052C0008091AB049091AC04A091AD04B091AE0478
:1052D0008093870490938804A0938904B0938A04F0
:1052E0008091A3049091A404A091A504B091A60478
:1052F00080937F0490938004A0938104B0938204F0
:105300001092DF041092E0041092E1041092E20483
:105310001092E3041092E4041092E5041092E60463
:1053200080912F04886080932F040C949239019708
:105330009093FC048093FB042A3009F097CB289AC1
:105340008091300490913104895E934008F09ACBAB
:1053500010926C04CECB6091E105688B709148048B
:105360007B8F772321F480914904882369F0809111
:1053700009069927A981BA818A179B0714F49A8391
:10538000898381E080936A0480912F0484FF64C63E
:10539000109259041092580410925D0410925C040B
:1053A00010925B0410925A049AE590938B0688E75A
:1053B00080937206909347068A8F809360061092BE
:1053C0004804109249041B8E2091630630916406B4
:1053D0004091650650916606E090AB04F090AC04F5
:1053E0000091AD041091AE04ED8EFE8E0F8F18A3C8
:1053F0002E0D3F1D401F511F80916C0690916D0630
:10540000A0916E06B0916F06E090A304F090A40402
:105410000091A5041091A604EC86FD860E871F87D7
:105420008E0D9F1DA01FB11F209058063090590669
:1054300040905A0650905B06E090A704F090A804B4
:105440000091A9041091AA04EE8AFF8A088F198F8F
:105450002E0C3F1C401E511E60904806709049065D
:1054600080904A0690904B06E0909F04F090A00434
:105470000091A1041091A204E9A2FAA20BA31CA31B
:105480006E0C7F1C801E911EF0904904FB86FF204D
:1054900009F088C50B8D002309F084C580936C0644
:1054A00090936D06A0936E06B0936F0620936306EB
:1054B0003093640640936506509366068091C40558
:1054C0009091C505815092400CF051C480916C04BC
:1054D000882309F04CC48091D7039091D8038F3F63
:1054E000910509F008F43FC58B85882309F0CCC6E7
:1054F0009B8D992309F0C8C6A0916A04AC8FAA239A
:1055000009F0C2C6B0911206B98BBB2309F4BCC620
:10551000209258063092590640925A0650925B06E5
:10552000609248067092490680924A0690924B0615
:105530008091630690916406A0916506B09166061D
:10554000B7FF02C00C940540292E3A2E4B2E55244D
:1055500047FC5A9420926306309264064092650696
:105560005092660680916C0690916D06A0916E0631
:10557000B0916F06B7FF02C00C94F03F892F9A2FAD
:10558000AB2FBB27A7FDBA958B839C83AD83BE83CE
:1055900080936C0690936D06A0936E06B0936F0691
:1055A0008091F005E82EFF240027112720919B040D
:1055B00030919C0440919D0450919E04C801B70114
:1055C0000E94E45B97FF02C00C94EA3F672E782E9E
:1055D000892E992487FC9A942091970430919804FD
:1055E0004091990450919A04C801B7010E94E45B6C
:1055F00097FF02C00C94E43FA72EB82EC92EDD24DD
:10560000C7FCDA94D201C10186199709A809B90922
:1056100020911106E22EFF2400271127BC01CD01A5
:10562000A80197010E94585C39014A0119012A0119
:105630008B819C81AD81BE818A199B09AC09BD0912
:10564000BC01CD01A80197010E94585CD401C3019F
:1056500097FE02C00C94DE3F892F9A2FAB2FBB27F9
:10566000A7FDBA95BC01DA01C90157FF02C00C942D
:10567000FF3F892F9A2FAB2FBB27A7FDBA956C014F
:10568000809134049091350481349105D4F4809153
:10569000320490913304813491059CF48091DC05AF
:1056A000E82FFF27EE0FFF1FE354F94F8081918110
:1056B0000190F081E02DF7FF02C00C9431417A9700
:1056C000C4F070934B0460934A04D0924D04C0928E
:1056D0004C04CB0177FF02C00C940E40BC017595C1
:1056E0006795C601D7FE02C00C940B406C01D5949F
:1056F000C794EE88FF88088D198D2D8D3E8D4F8DB6
:1057000058A1E21AF30A040B150BEDA2FEA20FA397
:1057100018A7E092EB04F092EC040093ED041093D0
:10572000EE0489A19AA1ABA1BCA1EC84FD840E85F5
:105730001F858E199F09A00BB10B8F839887A987AE
:10574000BA878093EF049093F004A093F104B09390
:10575000F2040DA11EA12FA138A50093F30410930C
:10576000F4042093F5043093F6048093F7049093A7
:10577000F804A093F904B093FA04809187049091FF
:105780008804A0918904B0918A04801B910BA20B1C
:10579000B30B8093870490938804A0938904B093FB
:1057A0008A0480917F0490918004A0918104B0913B
:1057B00082042F81388549855A85821B930BA40B5F
:1057C000B50B80937F0490938004A0938104B093E1
:1057D00082043989332371F120916804309169047E
:1057E0002138310594F08091BF049091C004019656
:1057F0009093C0048093BF048091700690917106CD
:105800000196909371068093700620583F4F94F450
:105810008091BF049091C00401979093C00480933D
:10582000BF04809170069091710601979093710664
:1058300080937006109269041092680441E0A42ECF
:10584000B12C8DA19EA1AFA1B8A5B7FF02C00C9449
:10585000F63F81509240A040B0401CF034E0A32EAF
:10586000B12C8091140590911505A0911605B09169
:105870001705E0906306F0906406009165061091AC
:1058800066068E199F09A00BB10B815E914BAF4F3D
:10589000BF4F8F539C49A040B04010F00C943C3E49
:1058A000B0920F05A0920E052DA13EA14FA158A5C3
:1058B000213080E1380780E0480780E0580714F481
:1058C0000C94CD3F80911005882311F40C948D40E9
:1058D00070934B0460934A04DA01C90157FF02C078
:1058E0000C945741B7FF02C00C94514129E0B59583
:1058F000A795979587952A95D1F7A80EB91EB092CE
:105900000F05A0920E052DA13EA14FA158A557FF4E
:1059100002C00C948D4139014A01A3E0959487940B
:1059200077946794AA95D1F71301240199E8691631
:1059300093E1790690E0890690E0990644F0F8E852
:105940006F2EF3E17F2E812C912C13012401D401C1
:10595000C30197FE02C00C948741892F9A2FAB2F69
:10596000BB27A7FDBA95680F791F2DA13EA14FA1B6
:1059700058A5203080EF38078FEF48078FEF580782
:1059800014F00C94C13F80911105882311F40C94FC
:10599000804070934B0460934A04DA01C90157FFB9
:1059A00002C00C94AA419C01AD01B7FF02C00C9447
:1059B000A44169E055954795379527956A95D1F7A4
:1059C00080910E0590910F05820F931F90930F0504
:1059D00080930E052DA13EA14FA158A557FF02C0EF
:1059E0000C949E4139014A0143E095948794779441
:1059F00067944A95D1F798E769169CEE79069FEF70
:105A000089069FEF990644F438E7632E3CEE732E27
:105A10003FEF832E3FEF932E6092020570920305B5
:105A20008092040590920505D401C30197FE02C03F
:105A30000C949841892F9A2FAB2FBB27A7FDBA95BD
:105A400060914A0470914B04680F791FA9892A2F2D
:105A5000332780910E0590910F052817390724F4FC
:105A600030930F0520930E052DA13EA14FA158A5FF
:105A7000213831054105510574F08091C30490919E
:105A8000C40420910E0530910F05820F931F90934F
:105A9000C4048093C3048DA19EA1AFA1B8A5805872
:105AA0009F4FAF4FBF4F74F48091C3049091C404D3
:105AB00020910E0530910F05821B930B9093C40427
:105AC0008093C304B1E0AB2EB12C8F819885A9855A
:105AD000BA85B7FF02C00C94D13F81509240A040DC
:105AE000B0401CF0A4E0AA2EB12C20E030E040E051
:105AF00050E08091180590911905A0911A05B09178
:105B00001B0560906C0670906D0680906E069090FC
:105B10006F0686199709A809B909815E914BAF4FA5
:105B2000BF4F8F539C49A040B04010F00C94523EA0
:105B3000B0920F05A0920E058F819885A985BA8530
:105B400081509041A040B04014F40C94B53F809136
:105B50001205882311F40C945B40D0924D04C0923E
:105B60004C048F819885A985BA85B7FF02C00C9433
:105B70004841B7FF02C00C944241F9E0B595A795A2
:105B800097958795FA95D1F7A80EB91EB0920F0593
:105B9000A0920E052F81388549855A8557FF02C08E
:105BA0000C947B41E3E05595479537952795EA9509
:105BB000D1F72938F3E13F07F0E04F07F0E05F0746
:105BC00014F40C940A4188E893E1A0E0B0E08093DB
:105BD000060590930705A0930805B09309058091E9
:105BE000060590910705A0910805B0910905B7FF3A
:105BF00002C00C948141892F9A2FAB2FBB27A7FDA0
:105C0000BA95C0904C04D0904D04C80ED91E2F8177
:105C1000388549855A85203080EF38078FEF48074F
:105C20008FEF580714F00C94893F80911305882357
:105C300011F40C945640D0924D04C0924C04DA01F9
:105C4000C90157FF02C00C9460419C01AD01B7FF30
:105C500002C00C947541B9E0559547953795279545
:105C6000BA95D1F780910E0590910F05820F931F81
:105C700090930F0580930E052F81388549855A85AD
:105C800057FF02C00C946F41A3E055954795379597
:105C90002795AA95D1F728379CEE39079FEF49073A
:105CA0009FEF590714F00C94004188E79CEEAFEF8A
:105CB000BFEF8093060590930705A0930805B09366
:105CC00009058091060590910705A0910805B091FE
:105CD0000905B7FF02C00C946941892F9A2FAB2F99
:105CE000BB27A7FDBA95C0904C04D0904D04C80EB8
:105CF000D91EA9892A2F332780910E0590910F056F
:105D00002817390724F430930F0520930E052F81AF
:105D1000388549855A85213831054105510574F08A
:105D20008091C1049091C20420910E0530910F051D
:105D3000820F931F9093C2048093C1048F81988532
:105D4000A985BA8580589F4FAF4FBF4F0CF0B2C2A4
:105D50008091C1049091C20420910E0530910F05ED
:105D6000821B930B9093C2048093C104A3C28091C1
:105D7000F005E82EFF24002711276D8D7E8D8F8D75
:105D800098A1A80197010E94585C59016A0180916D
:105D90007F0690918006AA2797FDA095BA2FA81A92
:105DA000B90ACA0ADB0A6C857D858E859F85A801A4
:105DB00097010E94585C79018A0180919106909127
:105DC0009206AA2797FDA095BA2FE81AF90A0A0B9E
:105DD0001B0BD601C501D7FE02C00C9481395C01B2
:105DE0006D01A4E0D594C794B794A794AA95D1F770
:105DF000D801C70117FF02C00C9486397C018D01C0
:105E0000F4E015950795F794E794FA95D1F780910A
:105E1000340490913504813491050CF484C1C60199
:105E2000B50123E030E040E050E00E94585C5901A9
:105E30006A01C801B70123E030E040E050E00E9471
:105E4000585C79018A018091DC05E82FFF27EE0F6D
:105E5000FF1FE354F94F808191810190F081E02D83
:105E6000F7FF02C00C948B397A97A4F0C601B501F4
:105E700023E030E040E050E00E94585C59016A01A4
:105E8000C801B70123E030E040E050E00E94585CD8
:105E900079018A0141E2A416B104C104D1042CF0B5
:105EA000E0E2AE2EB12CC12CD12C50EEA5165FEF46
:105EB000B5065FEFC5065FEFD50644F470EEA72E7A
:105EC0007FEFB72E7FEFC72E7FEFD72E61E2E6166A
:105ED000F104010511052CF060E2E62EF12C012DF4
:105EE000112D70EEE7167FEFF7067FEF07077FEFC4
:105EF000170744F450EEE52E5FEFF52E5FEF052F08
:105F00005FEF152F80918B0490918C04A0918D04EC
:105F1000B0918E048A199B09AC09BD0980938B044A
:105F200090938C04A0938D04B0938E04809183048D
:105F300090918404A0918504B09186048E199F09E4
:105F4000A00BB10B8093830490938404A0938504E9
:105F5000B09386048091D7039091D8038F3F910529
:105F600011F008F0C1CA20925806309259064092AA
:105F70005A0650925B0660924806709249068092DB
:105F80004A0690924B06F0916A04FC8F00915804E7
:105F900010915904C80117FFEDC188279927801B6C
:105FA000910BE8C110929B0410929C0410929D04E6
:105FB00010929E04109297041092980410929904E3
:105FC00010929A041092630610926406109265066D
:105FD0001092660610926C0610926D0610926E0674
:105FE00010926F06662477244301130124018091E7
:105FF0008B0490918C04A0918D04B0918E048093B9
:10600000870490938804A0938904B0938A048091B4
:10601000830490918404A0918504B09186048093B8
:106020007F0490938004A0938104B0938204109223
:10603000D8031092D70310924B0410924A04109286
:106040004D0410924C041B85112309F044CA2B8D7A
:10605000222309F040CA32CAB0916006BA8FB4C98F
:106060007FEF8E3F97070CF06CC002960C941926B8
:10607000B9016150704040915A0450915B04CA01CB
:1060800057FF02C00C94C6269595879595958795E0
:1060900097FF02C00C94CF26209132043091330434
:1060A0002817390714F00C94DB26CA0157FF02C0E9
:1060B0000C94673C97FF02C00C94743C9C0135958E
:1060C0002795359527952536310514F40C94DD2652
:1060D00024E630E080912F0484FF02C00C94E32674
:1060E0003093330420933204709335046093340466
:1060F0000C94EB26F092720640915C0450915D0482
:10610000CA0157FD02C00C94972603969595879572
:106110009595879597FD02C00C949F269095819543
:106120009F4F0C949F2680913204909133048134C8
:1061300091050CF488CE73CE909348048093490463
:106140000DC910925904109258040C941D26982FD2
:106150000C94A22781E0809345040C94972781E05A
:1061600080934404582F0C946A2781E0809346045E
:106170000C94402781E0809347040C94132780916E
:106180004C08992787FD90954E2D5527849FD00167
:10619000859FB00D949FB00D1124CD0120915C041A
:1061A00030915D04820F931F90935D0480935C0493
:1061B00080914D08992787FD9095849FF001859FD8
:1061C000F00D949FF00D1124CF0120915A043091CD
:1061D0005B04820F931F90935B0480935A04809119
:1061E0004E08992787FD90952091580430915904C5
:1061F000820F931F90935904809358048091500804
:10620000282F332727FD30958091E6059927289F71
:10621000A001299F500D389F500D11245093250146
:106220004093240180914F0899278C159D0514F007
:106230000C94792690935704809356040C947D26F1
:1062400080916C04882311F40C94D0278091300441
:1062500090913104FFEF8F3F9F0711F40C94D427E6
:10626000019690933104809330040C94D4271092BB
:1062700046040C944027109245040C9497271092E2
:10628000440450E00C946A2760E070E06B011092C7
:106290006A041C8EE0906306F09064060091650627
:1062A0001091660660906C0670906D0680906E0688
:1062B00090906F0680917206882309F0B1C7109202
:1062C0004D0410924C0410924B0410924A04E09238
:1062D0001405F092150500931605109317056092AA
:1062E00018057092190580921A0590921B0510925C
:1062F0009B0410929C0410929D0410929E04109294
:106300009704109298041092990410929A04109293
:106310009304109294041092950410929604109293
:10632000630610926406109265061092660610923B
:106330006C0610926D0610926E0610926F06109207
:1063400058061092590610925A0610925B06109247
:1063500048061092490610924A0610924B06109277
:10636000D8031092D7030091580410915904C80122
:1063700017FD13CE409774F068EE262E63E0362E9C
:106380003092450120924401E888E4FC03C081E09A
:1063900080930105B090ED05CB2CDD24EE24FF2485
:1063A000B801882777FD8095982F980117FD6DC754
:1063B000442737FD4095542F0E94E45B9B01AC01BC
:1063C000C701B6010E94E45B97FD5AC759E0959555
:1063D0008795779567955A95D1F79B018B2D9927CE
:1063E000809FA001819F500D909F500D1124CA01E4
:1063F00057FD44C79595879595958795280F391F23
:10640000C901AA2797FDA095BA2F8093E70490931E
:10641000E804A093E904B093EA0420917B0430914E
:106420007C0440917D0450917E04281B390B4A0B5B
:106430005B0B213563EC360760E0460760E05607EA
:106440000CF4EFC580E593ECA0E0B0E080937B0412
:1064500090937C04A0937D04B0937E0480917B0490
:1064600090917C04A0917D04B0917E04805B9C435C
:10647000AF4FBF4F64F480EB9CE3AFEFBFEF80936F
:106480007B0490937C04A0937D04B0937E04809160
:106490007104909172049EA38DA3892B09F452C1BB
:1064A000988993FF4FC18D8D9E8DAF8DB8A1B7FF99
:1064B00002C00C94923C29E0B595A79597958795D5
:1064C0002A95D1F76C0197FF02C00C948C3C8C8507
:1064D0009D85AE85BF85B7FF02C00C94863C09E060
:1064E000B595A795979587950A95D1F7BC0197FF24
:1064F00002C00C94813CC616D7060CF46B01B601A1
:10650000D7FE02C00C947D3C5B01B594A794B59472
:10651000A794B594A7940894A11CB11CADA1BEA1E9
:10652000A45EBD4F7D010027F7FC0095102FAC51F4
:10653000B240BEA3ADA340908D0650908E066090F1
:106540008F0670909006209120013091210140919A
:106550002201509123012A8B3B8B4C8B5D8BC30115
:10656000B2010E94585CE21AF30A040B150BC80131
:10657000B70128E631E040E050E00E94585CDC01C1
:10658000CB018C01045B10408090860690908706BA
:10659000C40197FE02C00C94773C8138910514F039
:1065A00000E010E0209044013090450121143104B6
:1065B000A1F439E1C316D10484F480916804909168
:1065C0006904800F911F90936904809368048091FF
:1065D0000105882311F00C94D93CC801880F991F3C
:1065E000880F991F880F991FB5010E94235C9B019A
:1065F000442737FD4095542F240D351D461D571D4A
:1066000020938D0630938E0640938F06509390060C
:1066100010913501612F77276C9DC0016D9D900D04
:106620007C9D900D112497FF02C00C94A03C6C013E
:10663000D594C794D594C794D594C794D594C7944A
:10664000D594C7946C197D096B0177FF02C00C9437
:10665000983C2114310411F00C94CE3DE0903404A8
:10666000F09035048091320490913304E80EF91EC5
:10667000F7FE02C00C94253EF594E794F594E79458
:10668000F594E79480E490E0E80EF91ECA01B901A0
:106690002A893B894C895D890E94585CDA01C901CD
:1066A00020916F0430917004442737FD4095542F9A
:1066B000821B930BA40BB50B845E9D4FAF4FBF4F56
:1066C000BC01CD0128E631E040E050E00E94585C7A
:1066D000DC01CB01845B90408C9DD0018D9DB00D81
:1066E0009C9DB00D1124CD01B7010E94235C83E075
:1066F000189F60011124C616D70614F40C94A33C0D
:10670000882799278C199D09681779070CF4BC0113
:10671000CB01AA2797FDA095BA2F20917B04309139
:106720007C0440917D0450917E04820F931FA41F2E
:10673000B51F80937B0490937C04A0937D04B09359
:106740007E0404C0809086069090870680910005A4
:1067500081508F3F09F46EC480930005A0904F06CE
:10676000B0905006BC8DBB2381F01092E3041092D0
:10677000E4041092E5041092E6041092DF041092F3
:10678000E0041092E1041092E204EB85EE2309F09C
:106790002AC4809172069927AA27BB27BC01CD0184
:1067A0002D8D3E8D4F8D58A10E94E45BDC01CB0105
:1067B000BC01CD0128EF3AE240E050E00E94585C75
:1067C0002901FB8DFF2309F00BC4809172069927E4
:1067D000AA27BB27BC01CD012C853D854E855F8551
:1067E0000E94E45BDC01CB01BC01CD0128EF3AE261
:1067F00040E050E00E94585C19010091420610915F
:106800004306093C11050CF4E3C308EC10E01093B7
:1068100043060093420640914D0650914E065EA3FA
:106820004DA3493C51050CF4C4C368EC70E07EA351
:106830006DA370934E0660934D06C501AA2797FD80
:10684000A095BA2F20918B06C22EDD24EE24FF24C2
:10685000BC01CD01A70196010E94E45B9B01AC0144
:10686000C801AA2797FDA095BA2F67E0880F991F46
:10687000AA1FBB1F6A95D1F7280F391F4A1F5B1F3C
:1068800057FDEEC486E055954795379527958A952F
:10689000D1F75201A20EB31E3501809140069091AE
:1068A0004106AA2797FDA095BA2FBC01CD01A701EB
:1068B00096010E94E45B9B01AC01EDA0FEA0C70124
:1068C000AA2797FDA095BA2F07E0880F991FAA1F46
:1068D000BB1F0A95D1F7280F391F4A1F5B1F57FDB1
:1068E000BAC416E055954795379527951A95D1F76F
:1068F0008101020F131F1EA30DA36801880C991CB0
:10690000C401AA2797FDA095BA2F209147063327E7
:1069100044275527BC01CD010E94E45B7B018C011B
:1069200097FDA3C4B6E015950795F794E794BA953B
:10693000D1F73A8D832F9927AA27BB2720918F045F
:10694000309190044091910450919204BC01CD018A
:106950000E94E45BDC01CB01BC01CD0120EF35E5F9
:1069600040E050E00E94585C4701820E931EC40133
:1069700041E0A41640E4B40624F0A12CA0E4BA2E11
:10698000350150E0A51650ECB5060CF039C3A12C2A
:10699000F0ECBF2EB0925006A0924F066DA17EA1E2
:1069A000615070442CF0E0E0F0E4FEA3EDA36F0131
:1069B0000DA11EA10050104C0CF01DC340E050EC86
:1069C0005EA34DA3509341064093400651E08516C7
:1069D00050E4950624F0812CE0E49E2EC40160E092
:1069E000861660EC96060CF001C3812C70EC972E95
:1069F000909287068092860680910001482F552745
:106A000080911A0190911B014817590794F4209125
:106A10001A0130911B01A981BA814A9FC0014B9F85
:106A2000900D5A9F900D1124B9010E940F5C7A833A
:106A30006983E981FA81EE0FFF1FEE0FFF1FFA83D2
:106A4000E983F889F0FF3EC00B8D0023D9F51B8543
:106A50001123C1F52091C5043091C60421153105DB
:106A600009F07DC4809110019091110189599340E2
:106A700008F097C78091100190911101843691051B
:106A800010F00C94363E87B58B3010F40C948D3F8B
:106A90008091DB038F5F8093DB039AE08902900192
:106AA00011248091CE05821B87BD8CE291E09093EA
:106AB0004C0580934B058EE591E09093C60480933E
:106AC000C5046EC4D0908506809156069927880F1C
:106AD000991F880F991F889669817A8168177907AD
:106AE00014F49A8389838D2D9927880F991F880F15
:106AF000991F80559040A981BA818A179B0714F489
:106B00009A83898380913B05882391F0809130049A
:106B1000909131040297C09758F4E981FA811E16CA
:106B20001F0634F481E090E09093310480933004A8
:106B300080915C0490915D04B501681B790B7093A2
:106B4000620660936106E0917206EE2309F45DC26D
:106B5000481A590AC201AA2797FDA095BA2F209179
:106B6000DF043091E0044091E1045091E204820F8F
:106B7000931FA41FB51F8093DF049093E004A0939C
:106B8000E104B093E2048091DF049091E004A091CD
:106B9000E104B091E2048130FAEF9F07F0E0AF0723
:106BA000F0E0BF0764F080E09AEFA0E0B0E08093EF
:106BB000DF049093E004A093E104B093E2048050DA
:106BC0009640AF4FBF4F64F480E096E0AFEFBFEF69
:106BD0008093DF049093E004A093E104B093E20477
:106BE00080915A0490915B046DA17EA1681B790B82
:106BF00070933F0660933E06EE2309F40CC2281AF8
:106C0000390AC101AA2797FDA095BA2F2091E30464
:106C10003091E4044091E5045091E604820F931F03
:106C2000A41FB51F8093E3049093E404A093E504AC
:106C3000B093E6048091E3049091E404A091E5040C
:106C4000B091E60481301AEF910710E0A10710E03F
:106C5000B10764F080E09AEFA0E0B0E08093E30435
:106C60009093E404A093E504B093E604805096402A
:106C7000AF4FBF4F64F480E096E0AFEFBFEF80937B
:106C8000E3049093E404A093E504B093E6048091B8
:106C9000C1069091C206845C9F4F2CF480911D0127
:106CA000813009F4F7C28091C1069091C2068D5ED1
:106CB0009F4F4CF08091C1069091C20644971CF4FE
:106CC00081E080931D018091C7069091C806805B8A
:106CD0009F4F2CF480911C01813009F4E6C2809111
:106CE000C7069091C806813591051CF081E080931C
:106CF0001C0100912804109129041093270400938B
:106D00002604E0902A04F0902B04F0922504E092EF
:106D10002404C0902C04D0902D04D0922304C0925F
:106D20002204A090BF06B090C0066FE770E0A60EE8
:106D3000B71EC5017AE0A716B10424F4EAE0AE2E2E
:106D4000B12CC501A3E3AA16B1040CF41AC172E375
:106D5000A72EB12CB0927B06A0927A06B092FD08C5
:106D6000A092FC0810926806109267068091F005C8
:106D70009927880F991F880F991F9C01442737FD79
:106D80004095542F6D8D7E8D8F8D98A10E94585CFB
:106D90003093780620937706A0911801B0911901DD
:106DA000B0930D04A0930C046091C1067091C206CB
:106DB00077FD4EC27595679575956795C901222730
:106DC0003327281B390B37FD40C23595279535955C
:106DD00027953595279535952795209FF001219F7B
:106DE000F00D309FF00D1124E60FF71FF0932104F2
:106DF000E093200480911E0490911F048E179F073A
:106E000024F4F0931F04E0931E0480911C049091DD
:106E10001D04E817F90724F4F0931D04E0931C0403
:106E2000882799278A1B9B0B8E9D80018F9D100DB3
:106E30009E9D100D1124C80117FD04C2BC01672FCF
:106E4000770F770B659570931B0460931A048091FC
:106E50001804909119048617970724F47093190465
:106E600060931804809116049091170468177907AD
:106E700024F4709317046093160480910E0490918B
:106E80000F048A1B9B0B8C9DA0018D9D500D9C9D1A
:106E9000500D112480910A0490910B042091080454
:106EA00030910904821B930B840F951F90930B0460
:106EB00080930A0497FDC4C195958795959587950C
:106EC00095958795909309048093080497FDB1C127
:106ED0009C01022E232F000C221F330B000C221FBB
:106EE000331F3093150420931404B0930F04A09320
:106EF0000E0480911204909113048217930724F4D6
:106F00003093130420931204809110049091110483
:106F10002817390724F43093110420931004A50195
:106F2000460F571F420F531F4E0F5F1FC501861B91
:106F3000970B821B930B8E1B9F0B8333910514F0D1
:106F400082E390E09093D6058093D5058091D50596
:106F50009091D605181619060CF06DC143335105F2
:106F6000ACF082E390E090935206809351068091BA
:106F70005106909152061816190614F40C94DD412E
:106F800012C090937B0680937A06E8CE5093520607
:106F90004093510680915106909152061816190699
:106FA00014F40C94DD4110925206109251060C9488
:106FB000DD418DA19EA188539F4F0CF03ECCE8E3AC
:106FC000FFEFFEA3EDA3F0934E06E0934D0635CC04
:106FD0002FEF083312070CF01ECC08E31FEF17CC7D
:106FE000222433240ACC44245524EBCB90938706E7
:106FF0008093860601CDD0924106C0924006E6CC31
:107000007092500660924F06C9CCCB01AA2797FD1B
:10701000A095BA2FA4CDCB01AA2797FDA095BA2F92
:10702000F5CD20937B0430937C0440937D045093F2
:107030007E0414CA88E1809300058091F0059927A9
:10704000880F991F880F991F9C01442737FD409591
:10705000542F6D8D7E8D8F8D98A10E94585C30933A
:10706000EF082093EE0880917F069091800697FDAF
:107070002CC495958795959587959093F108809365
:10708000F00880911204909113049093F308809378
:10709000F20880911004909111049093F508809368
:1070A000F408A0904F06B0905006B092F708A09256
:1070B000F60880911801909119019093F908809336
:1070C000F8088091E3039091E4039093FB08809388
:1070D000FA081092FF081092FE0880911A01909110
:1070E0001B01909301098093000980915F04992707
:1070F00090930309809302098091200490912104C8
:10710000909305098093040980911A0490911B04BF
:1071100090930B0980930A098091140490911504AF
:1071200090930D0980930C098091C3069091C40639
:1071300090930F0980930E0980912804909129045F
:10714000909311098093100980912A0490912B0447
:10715000909313098093120980912C0490912D042F
:10716000909315098093140980911E01992790939B
:107170001709809316098091C7069091C8069093CD
:10718000190980931809B0921B09A0921A098091DD
:1071900018049091190490931D0980931C09809103
:1071A00016049091170490931F0980931E098091F3
:1071B000EB039091EC039093210980932009809137
:1071C0001E0490911F0490932309809322098091BB
:1071D0001C0490911D0490932509809324098091AB
:1071E000C5069091C6069093270980932609809141
:1071F000C3069091C4069093290980932809809131
:10720000C1069091C20690932B0980932A09809120
:10721000BF069091C00690932D0980932C09A2CAB5
:10722000D0924D04C0924C0470934B0460934A0476
:107230004EC8CF964DCE1092D6051092D5058ECE63
:1072400007963ACE81509E4FF9CD215F3F4FBDCD7D
:107250006D5F7F4FAFCD215C3F4F4F4F5F4F41CBB5
:10726000215C3F4F4F4F5F4F0DCB2FE330E040E0AD
:1072700050E0E20EF31E041F151F54CB0396BAC84C
:1072800061507E4F8F4F9F4FA1C822273327201B6D
:10729000310B8EC810921D0180911E01823009F4BD
:1072A00091C48F5F80931E01FECC10921C01E0916F
:1072B0001E01E33008F013CDFF27EE0FFF1FE85D3E
:1072C000FB4F808191812091C3063091C406820FCB
:1072D000931F9183808303CD80912F0482608093DC
:1072E0002F040C94EF2710925704109256040C941C
:1072F00085262D5F3F4F0C94AD252D5F3F4F0C949D
:10730000EC250F96A11DB11D0C94EF2E0F96A11D1B
:10731000B11D0C94FE2EF095E195FF4F0C94342F87
:107320001092FE04ED2DFF27EE0FFF1FE354F94FDF
:10733000808191818C3491050CF454C08091FF04BC
:107340008F5F893C08F426C310926C0488EC80930C
:10735000FF0410923104109230040C94792580912E
:10736000520490915304A0915404B091550454E0F8
:10737000880F991FAA1FBB1F5A95D1F78093DC0372
:107380009093DD03A093DE03B093DF031092DA0342
:107390001092D903215030403093C6042093C50485
:1073A000488941FF23C080913801823308F0EBC245
:1073B00080916501815098F410926B048091520481
:1073C00090915304A0915404B091550480934E04BD
:1073D00090934F04A0935004B093510481E08093A4
:1073E000650126C01092FF040C9479252091380184
:1073F0008091240190912501820F911D2091E60535
:107400003327829FB001839F700D929F700D1124CE
:10741000CB01AA2797FDA095BA2F80934E04909395
:107420004F04A0935004B093510481E080936B0407
:10743000E0902001F09021010091220110912301A0
:107440006D8D7E8D8F8D98A1A80197010E94585C4B
:1074500059016A016C857D858E859F85A8019701FC
:107460000E94585CB901C5010E94165A5C01CD9773
:107470001CF04CE3A42EB12CC5010E94134E5C01FC
:1074800080916B04882309F446C180912F049927C9
:107490009C012071307084FD3EC1C0903106C0FC5B
:1074A00004C08091E10581FD77C409811A81309380
:1074B0001D0520931C056090520470905304809029
:1074C00054049090550480914E0490914F04A091E3
:1074D0005004B091510486159705A805B90514F01C
:1074E000C0FC2FC1E0905204F090530480914E04F0
:1074F00090914F04E81AF90A8091370199278E9DDF
:1075000090018F9D300D9E9D300D1124C90137FDD6
:10751000A1C5959587959595879595958795959509
:107520008795081B190B2091D9033091DA0337FD99
:107530008EC535952795359527953595279529300D
:1075400031050CF4EAC328E030E0229FA001239F1C
:10755000500D329F500D11249A0157FD7DC5359570
:107560002795359527958091D9039091DA03280FB7
:10757000391F809139019927AA27BB27442737FD56
:107580004095542FBC01CD010E94E45B97FD5AC584
:10759000A7E09595879577956795AA95D1F79B0173
:1075A0005FEF613875070CF0B0C321E83FEF021BB5
:1075B000130B609073047090740480907504909025
:1075C000760497FC36C5F7E0959487947794679492
:1075D000FA95D1F780913601282F33274427552774
:1075E000C401B3010E94E45B97FD1EC5E5E09595DB
:1075F000879577956795EA95D1F79B017FEF2138BD
:1076000037070CF069C321E83FEF021B130B85E934
:1076100090E0E80EF91E9BE2E91691E0F906E8F425
:1076200080911C0590911D05892BB9F4809120054E
:10763000909121051816190684F4809122059091E5
:107640002305081719070CF48FC2809163019091EC
:107650006401801791070CF487C28091C504909152
:10766000C604892B21F00091200510912105C80145
:10767000AA2797FDA095BA2F5DE0880F991FAA1F32
:10768000BB1F5A95D1F79501442737FD4095542FDC
:10769000BC01CD010E94585C2093EF043093F004AC
:1076A0004093F1045093F2040091EF041091F00420
:1076B00080911E0590911F059C01220F331F280FFA
:1076C000391F200F311F37FDACC4A90155954795CF
:1076D00055954795BA018091E205282F3327220F4F
:1076E000331F220F331F421753070CF0FDC2A901AD
:1076F000B901D0908506C0FEAEC2A981BA81A41797
:10770000B5070CF0A8C2AD01B0931F05A0931E05EC
:107710005A83498318C06091EA05662309F416C1AB
:107720007727663471050CF042C226E430E03093CE
:10773000620120936101E980FA80F0921F05E092D6
:107740001E05D090850680912F0481FF0FC2809185
:107750002F0484FDA3C0E0902405F090250500913E
:10776000260510912705E114F10401051105B1F476
:1077700029813A8179010027F7FC0095102FECE070
:10778000EE0CFF1C001F111FEA95D1F7E0922405B3
:10779000F092250500932605109327058091D903C3
:1077A0009091DA038091D9039091DA0397FD02C496
:1077B000843691050CF028C269817A819B014427A7
:1077C00037FD4095542FC501AA2797FDA095BA2FE4
:1077D000BC01CD010E94E45B97FDA4C49B01AC01F8
:1077E0007DE055954795379527957A95D1F7209364
:1077F000EF043093F0044093F1045093F20480912D
:1078000030049091310477E0803D970708F089C3F8
:10781000D801C70169E0B695A795979587956A95B0
:10782000D1F7E81AF90A0A0B1B0BDA01C90123E0A8
:10783000880F991FAA1FBB1F2A95D1F7E80EF91EC2
:107840000A1F1B1FE0922405F092250500932605D0
:1078500010932705D801C7011CE0B695A795979509
:1078600087951A95D1F79093210580932005409133
:10787000E805442309F4BEC155279C01BA010E94C2
:10788000235CC901861B970B9093230580932205E7
:10789000260F371F3093640120936301E090AB04FF
:1078A000F090AC040091AD041091AE04ED8EFE8E0C
:1078B0000F8F18A3A0904F06B0905006009140067D
:1078C000109141061EA30DA3FFC80396D2CB90953D
:1078D00081959F4F0C945A3003960C94B126909545
:1078E00081959F4F0C94AD2603960C945E308827AB
:1078F0009927881999090C94CD32695F7F4F0C94B0
:107900008432709561957F4F0C947B3281509E4FED
:10791000AF4FBF4F0C946F32D094C194D108D39421
:107920000C94673281509E4FAF4FBF4F0C945B3227
:1079300084EF91E090934501809344010C94A63329
:107940004F960C941733B6010C9488334091200560
:107950005091210557FD1DC2559547955595479561
:1079600080911A0190911B01209100013327489FBB
:10797000F001499FF00D589FF00D1124CF01B9017E
:107980000E94235CCECE81E080936B0488EC8093D0
:1079900065014ECD8093FF040C9479258093FE04FD
:1079A000C1CC87B5853F08F05DC18091DB03815074
:1079B00072C84DA15EA1CA01AA2797FDA095BA2F52
:1079C000BC01CD012A893B894C895D890E94E45B19
:1079D0002B013C010E94585C3093700420936F048B
:1079E000109201050C94ED3280819181855B9F4F4F
:1079F0000CF06EC18091FD048F5F893C08F41CC1BE
:107A00002C3008F051C329988FB399279C0122701C
:107A1000307081FDF9CF1FBA84E090E092BD81BD46
:107A20008FEF80BD0FB6F894FA9AF99A0FBE1092B4
:107A30006C041092FD0430933104209330040E94B2
:107A4000641E2091B9043091BA04C90137FD0EC4F7
:107A5000892F990F990B482FF999FECF1FBA84E00F
:107A600090E092BD81BD40BD0FB6F894FA9AF99AA4
:107A70000FBEF999FECF1FBA85E090E092BD81BD9F
:107A800020BD0FB6F894FA9AF99A0FBE2091B70468
:107A90003091B804C90137FDDCC3892F990F990BC8
:107AA000482FF999FECF1FBA86E090E092BD81BDC4
:107AB00040BD0FB6F894FA9AF99A0FBEF999FECF25
:107AC0001FBA87E090E092BD81BD20BD0FB6F8944B
:107AD000FA9AF99A0FBE8091B1049091B204A091E4
:107AE000B304B091B404BC01CD010E94FD5ADC0185
:107AF000CB019C0197FDAAC3832F992787FD9A95F7
:107B0000282FF999FECF1FBA88E090E092BD81BD81
:107B100020BD0FB6F894FA9AF99A0FBE8091B1047D
:107B20009091B204A091B304B091B404BC01CD0112
:107B30000E94FD5ADC01CB01282FF999FECF1FBA14
:107B400089E090E092BD81BD20BD0FB6F894FA9A0D
:107B5000F99A0FBE0E941B1368E770E00E9446135B
:107B60003091DB050C94E6288C0177CD6091AB0455
:107B70007091AC048091AD049091AE046D8F7E8FB6
:107B80008F8F98A3A0904F06B0905006809140062A
:107B9000909141069EA38DA30C946435089421080E
:107BA000310830924501209244010C94A633673984
:107BB00071050CF445C086E990E0909362018093D2
:107BC0006101B9CD10921E016EC881E0809301055C
:107BD0001092E7041092E8041092E9041092EA046B
:107BE00010927B0410927C0410927D0410927E040B
:107BF0000C94EF2710922305109222058FEF93E04B
:107C000090936401809363012091AB043091AC04A4
:107C10004091AD045091AE042D8F3E8F4F8F58A3ED
:107C2000A0904F06B09050064091400650914106FA
:107C30005EA34DA30C9464358093FD040C94E62858
:107C4000709362016093610176CD67E070E0E60EAB
:107C5000F71E0C943C3370931F0560931E055A83E6
:107C6000498371CD81E0809329059ACB3B85309380
:107C700028053093290594CB609202057092030584
:107C8000809204059092050510920F0510920E0542
:107C900088EE282E83E0382E309245012092440150
:107CA0000C94262D20930605309307054093080574
:107CB0005093090510920F0510920E05E8EE2E2E36
:107CC000E3E03E2E30924501209244010C94792E3F
:107CD0004093FD040C94E6282F3F310509F00CF485
:107CE00094CC2FEF30E091CCD09085062D2D33270A
:107CF000220F331F220F331F205530402417350722
:107D00000CF0F9CCA901B901F6CC6F3F710509F06F
:107D10000CF44DCC2FEF30E04ACC121613060CF4C5
:107D200014CC229FC001239F900D329F900D1124EF
:107D300097FD19C395958795959587952091D903BA
:107D40003091DA03281B390B14CC0E941B1345E633
:107D500069ED75E00E94A6128091E10580FF10C0D8
:107D60008091100190911101875B934038F48091CC
:107D70001001909111018E5E924010F40E94C30A8E
:107D8000109249050E94641E81E080934905579A2C
:107D9000E1CE4D5F5F4FE0CD80912F0481FF5FC149
:107DA0002091610130916201C9010F964091560402
:107DB00050915704841795070CF0C3C18091280592
:107DC000882309F0BEC180912A0581FFCEC28D7F34
:107DD0006090520470905304809054049090550425
:107DE00060924E0470924F0480925004909251041D
:107DF000816080932A05421B530B9A012F5030401B
:107E000037FDCBC280911C0590911D05280F391FAD
:107E100030931D0520931C0520911C0530911D05F4
:107E2000C90137FD80C2815092400CF485C1809118
:107E3000E6059927829FF001839FF00D929FF00D38
:107E40001124CF0160E075E00E94235CCB01AA27DA
:107E500097FDA095BA2F20914E0430914F04409188
:107E6000500450915104820F931FA41FB51F80939B
:107E70004E0490934F04A0935004B0935104109279
:107E80001D0510921C05C1FE06C08BE490E0909386
:107E90004C0580934B058091EA05882309F04CC17D
:107EA0000091200510912105A80117FD7AC2559572
:107EB00047955595479580911A0190911B01209106
:107EC00000013327489F7001499FF00C589FF00C28
:107ED0001124C701B9010E94235C663471050CF0BE
:107EE0004DC226E430E0309362012093610180911D
:107EF000C5049091C604892B09F4E5CAD401C301D5
:107F000060924E0470924F048092500490925104FB
:107F1000E2CA109213050C94792E81E08093280513
:107F20003FCAAFE0803A9A0708F0D2C0D801C70133
:107F3000FAE0B695A79597958795FA95D1F7E81A3F
:107F4000F90A0A0B1B0BDA01C901880F991FAA1F36
:107F5000BB1F880F991FAA1FBB1F70CC1091DA0599
:107F60000C944928299A0C941D28209306053093D7
:107F700007054093080550930905109212050C94CB
:107F8000072E20920205309203054092040550927C
:107F90000505109211050C94262D109210050C94D5
:107FA000B52CB095A095909581959F4FAF4FBF4F41
:107FB0000C946D2D909581959F4FFACB81509F4FDA
:107FC000AF4FBF4F0C942C2B61507F4F8F4F9F4F63
:107FD0000C94FC2A61507F4F8F4F9F4F0C94E62AE0
:107FE00081509F4FAF4FBF4F0C94BE2AB095A095C4
:107FF000909581959F4FAF4FBF4F0C94292C815086
:108000009F4FAF4FBF4F0C94392B81509F4FAF4FB5
:10801000BF4F0C94A42A01960C94762B01960C94D5
:108020006E2B2D5F3F4F51CB615E7F4F8F4F9F4F28
:10803000DDCA6FE770E080E090E0660E771E881E74
:10804000991EC1CA61587F4F8F4F9F4FA1CA295FA8
:108050003F4F6FCA0F965DCA2D5F3F4F80CA609039
:108060005204709053048090540490905504D401AD
:10807000C30180599140A040B04080934E0490933A
:108080004F04A0935004B09351042091EA05222399
:1080900009F4B3C03327309362012093610100914A
:1080A00020051091210517CA299AAECC81E0809352
:1080B00013050C94792E2093060530930705409301
:1080C00008055093090581E0809312050C94072E52
:1080D00080549F4108F0A8C0D801C7017BE0B69545
:1080E000A795979587957A95D1F7E81AF90A0A0B1B
:1080F0001B0BDA01C901820F931FA41FB51F9ECB72
:108100002092020530920305409204055092050525
:1081100081E0809311050C94262D81E08093100559
:108120000C94B52C6150704E8F4F9F4F57CBF095EC
:10813000E195FF4F0C94C82800912005109121056E
:10814000D6CEC9010F974817590774F580912905B4
:10815000882351F580912A0580FF16C18E7F60909B
:10816000520470905304809054049090550460928F
:108170004E0470924F048092500490925104826099
:1081800080932A05421B530B9A01215F3F4F37FD15
:108190000BC180911C0590911D05821B930B909340
:1081A0001D0580931C0538CE20912A05822F992722
:1081B00083709070892B09F45CC02C7F20932A0572
:1081C00010921D0510921C0560905204709053048B
:1081D000809054049090550460924E0470924F0425
:1081E0008092500490925104C1FE16CE84EF91E02B
:1081F00090934C0580934B050FCE28E730E04BCF92
:108200002093060530930705409308055093090510
:108210000C94612E209306053093070540930805C2
:10822000509309050C94EF2DD801C7016CE0B69569
:10823000A795979587956A95D1F7E81AF90A0A0BD9
:108240001B0BE20EF31E041F151FFCCA21503F4FEB
:1082500053CC81509F4F21CCF095E195FF4F0C946A
:108260004528F095E195FF4F0C945F2B81509F4F6F
:10827000EFCB60905204709053048090540490901F
:108280005504CACD81509E4FAF4FBF4F0C94BD2DAA
:10829000B095A095909581959F4FAF4FBF4F0C948F
:1082A000B92D81509E4FAF4FBF4F0C94762CB09597
:1082B000A095909581959F4FAF4FBF4F0C94722C16
:1082C000B095A095909581959F4FAF4FBF4F0C945F
:1082D000252E81509F4FAF4FBF4F0C946D2E295FBD
:1082E0003F4F4F4F5F4F0C94442E21503E4F4F4F06
:1082F0005F4F0C942B2E295F3F4F4F4F5F4F0C94D5
:10830000D22D81509F4FAF4FBF4F0C94FB2D81500A
:108310009F4FAF4FBF4F0C94AD2C295F3F4F4F4F36
:108320005F4F0C948B2C88279927821B930B7BCD56
:1083300081509F4FAF4FBF4F0C941A2D295F3F4F75
:108340004F4F5F4F0C94F22C21503E4F4F4F5F4FD9
:108350000C94D92CB095A095909581959F4FAF4FD7
:10836000BF4F0C94D32C0396E5CC609052047090D0
:10837000530480905404909055043ACD67397105A8
:10838000BCF026E930E0AFCD609052047090530409
:108390008090540490905504F2CE309521953F4F33
:1083A00031CD4D5F5F4F83CD309521953F4FF1CE5D
:1083B00070936201609361019ACD80915106809320
:1083C00083068091D50580938206E2E1C85D0C9416
:1083D0008F5C87B18C6087B94298439810922C05C6
:1083E00080E88093670110922B05809366010895C1
:1083F0008091310581508F3F19F0809331050895A8
:1084000084E08093310580912F0485FF16C0409150
:108410001C064093320560911D0660933305509110
:108420002F06252F332724FF13C080916C04882347
:1084300079F425FF17C0429A33C080915F048823E6
:1084400034F7409118064093320560911A06E5CF43
:10845000909119069B3FB8F080916B068D3D98F086
:1084600047FDE9CF4298252F332724FD1DC0909169
:108470001B069B3F08F180918406873EE8F067FD6C
:1084800019C0439808959B3F20F080916B068A3075
:1084900008F180912C0581508F3F21F180932C05AC
:1084A000252F332724FFE3CF80916C048823F9F62E
:1084B00026FFE7CF439A08959B3F20F080918406E2
:1084C0008A3060F080912B0581508F3FE1F08093DE
:1084D0002B05089547FDC6CF429AE2CF67FDD1CF65
:1084E000439A089580916B06815080932C0580916A
:1084F00067018130C9F0869580936701842309F470
:10850000B1CF429ACDCF80918406815080932B05C4
:1085100080916601813051F08695809366018623B3
:1085200009F4AFCF439A089580E8E6CF80E8F5CF0D
:1085300090E2E9E6F1E08FE49193815087FFFCCF70
:1085400008951F938091350520916801281710F434
:10855000209335059091340590FF08C08091350532
:10856000882309F44AC081508093350591FF08C0E3
:1085700080913505821709F446C08F5F80933505D9
:10858000892F992780FF02C081FD3AC00E9498423E
:10859000909135059A3008F581E180933605892F51
:1085A00099279F938F9381EF93E09F938F9381E01F
:1085B0008F930E94CB480F900F900F900F900F90C9
:1085C00020913505822F9927AA27BB27FC010F97F9
:1085D00070F4E65BFF4F0C94AA5C80E18093360553
:1085E000892F99279F938F9386EF93E0DECF2150B9
:1085F000209368011092350561C520933505B6CFEB
:1086000010923505C3CF10923505BACF84E180931F
:10861000360580911A0190911B019F938F9387E7F4
:1086200095E09F938F9311E01F930E94CB4888E2BF
:10863000809336050F900F900F900F900F908091C0
:108640005F0499279F938F9386E895E09F938F937C
:108650001F930E94CB480F900F900F900F900F9098
:108660002DC5109236058BEF93E09F938F9311E009
:108670001F930E94CB4884E1809336050F900F90A2
:108680000F9087E690E09F938F938CE490E09F9308
:108690008F931F921F92809102016AE00E94035CF7
:1086A000892F99279F938F93809102010E94035CE9
:1086B00099279F938F938BE094E09F938F931F93C1
:1086C0000E94CB4888E2809336052DB73EB7235FE2
:1086D0003F4F2DBF86E795E09F938F930E941B131A
:1086E00099279F938F9380E294E09F938F931F939A
:1086F0000E94CB4880914601909147012DB73EB72B
:10870000295F3F4F2DBF069708F4AAC490913B05FF
:10871000992309F49FC48CE380933605892F992708
:108720009F938F938BE394E091CF1092360589E766
:1087300094E09F938F9311E01F930E94CB4884E1B4
:10874000809336050F900F900F908091E105992747
:108750009F938F9386E894E09F938F931F930E943B
:10876000CB4888E2809336050F900F900F900F90C2
:108770000F908AE894E09F938F931F930E94CB48B9
:108780000F900F900F90F999FECF86E391E092BD84
:1087900081BDF89A90B58CE380933605892F99278F
:1087A0009F938F9384E994E09F938F9381E08F93BD
:1087B00050CF1092360582E694E09F938F9311E09C
:1087C0001F930E94CB4884E1809336050F900F9051
:1087D0000F9080910F0199279F938F938DE694E0DE
:1087E0009F938F931F930E94CB4888E28093360516
:1087F0000F900F900F900F900F9080910E0199277E
:108800009F938F9381E794E09F938F931F930E9490
:10881000CB488CE3809336050F900F900F900F900C
:108820000F9080910D0199279F938F9385E794E096
:108830000DCF109236058DE395E09F938F9311E055
:108840001F930E94CB4884E1809336050F900F90D0
:108850000F908091B9049091BA049F938F93809167
:10886000E3039091E4039F938F938AE495E09F93B1
:108870008F931F930E94CB4888E2809336052DB7D3
:108880003EB7295F3F4F2DBF8091B7049091B80448
:108890009F938F938091E5039091E6039F938F932D
:1088A00089E595E09F938F931F930E94CB488CE3BB
:1088B000809336058DB79EB707968DBF8091B10422
:1088C0009091B204A091B304B091B404BC01CD0165
:1088D0000E94FD5ADC01CB019F938F9380915C062F
:1088E00090915D069F938F9388E695E09F938F9379
:1088F0001F930E94CB482DB73EB7295F3F4F2DBF36
:10890000DDC31092360582E095E09F938F9311E0CE
:108910001F930E94CB4884E1809336050F900F90FF
:108920000F902091C3043091C404C90137FDBFC327
:10893000959587959595879595958795959587951F
:108940009F938F9337FDB0C3359527953595279520
:10895000359527958091EB039091EC03821B930B47
:108960009F938F9380E195E09F938F931F930E9435
:10897000CB4888E2809336058DB79EB707968DBFAA
:108980002091C1043091C204C90137FD95C395956A
:1089900087959595879595958795959587959F93B7
:1089A0008F9337FD86C33595279535952795359552
:1089B00027958091E9039091EA03821B930B9F9383
:1089C0008F938FE195E09F938F931F930E94CB48E5
:1089D0008CE3809336052DB73EB7295F3F4F2DBFFF
:1089E0002091BF043091C004C90137FD5BC3959548
:1089F00087959F938F938091E7039091E803281BBD
:108A0000390B3F932F938EE295E09F938F931F93A3
:108A10000E94CB488DB79EB707968DBF4FC310926B
:108A2000360588EC94E09F938F9311E01F930E948A
:108A3000CB4884E1809336050F900F900F90809182
:108A4000C3049091C4049F938F9385ED94E09F930A
:108A50008F931F930E94CB4888E2809336050F9036
:108A60000F900F900F900F908091C1049091C204CD
:108A70009F938F9384EE94E09F938F931F930E9414
:108A8000CB488CE3809336050F900F900F900F909A
:108A90000F908091BF049091C0049F938F9383EFB8
:108AA00094E0D4CD109236058091C1069091C20613
:108AB0009F938F938091BF069091C0069F938F9351
:108AC00088E994E09F938F9311E01F930E94CB4815
:108AD00084E1809336058DB79EB707968DBF809150
:108AE000C5069091C6069F938F938091C30690917F
:108AF000C4069F938F9388EA94E09F938F931F936C
:108B00000E94CB4888E2809336052DB73EB7295F97
:108B10003F4F2DBF8091C7069091C8069F938F93BA
:108B200088EB94E093CD109236058CE097E09F930C
:108B30008F9311E01F930E94CB4884E18093360508
:108B40000F900F900F908091D2039091D3039F9339
:108B50008F938AE197E09F938F931F930E94CB4856
:108B600088E2809336050F900F900F900F900F9032
:108B70008091D0039091D1039F938F9387E297E0E8
:108B80009F938F931F930E94CB4889E4809336056F
:108B90000F900F900F900F900F9084E397E09F93AA
:108BA0008F931F930E94CB48809134050F900F90B4
:108BB0000F9083FF83C21092D3031092D203F999CE
:108BC000FECF1FBA8EE090E092BD81BD10BC0FB603
:108BD000F894FA9AF99A0FBE2091D203F999FECF30
:108BE0001FBA8FE090E092BD81BD20BD0FB6F89412
:108BF000FA9AF99A0FBE62C2109236058CEB96E093
:108C00009F938F9311E01F930E94CB4884E1809340
:108C100036050F900F900F908091BD0699278D9685
:108C20009F938F938091BC0699278D969F938F93E6
:108C30008091BB0699278D969F938F938091BA065A
:108C400099278D969F938F938BEC96E09F938F93AC
:108C50001F930E94CB4888E2809336058DB79EB75C
:108C60000B968DBF8091C10699278D969F938F9308
:108C70008091C00699278D969F938F938091BF0610
:108C800099278D969F938F938091BE0699278D96F5
:108C90009F938F938FED96E09F938F931F930E94E6
:108CA000CB488CE3809336052DB73EB7255F3F4F09
:108CB0002DBF8091C20699278D969F938F9383EF46
:108CC00096E09F938F931F930E94CB480F900F9035
:108CD0000F900F900F908091C306882309F0D4C1A4
:108CE0008091C406882309F0C1C18091C5068823FC
:108CF00009F4E4C188E48093360589E097E09F9306
:108D00008F931F930E94CB480F900F900F90D6C166
:108D10008091E10580FF8AC110923605809152044E
:108D200090915304A0915404B0915504BF93AF9314
:108D30009F938F938CE196E09F938F9311E01F9305
:108D40000E94CB4884E1809336052DB73EB7295F5A
:108D50003F4F2DBF80914E0490914F04A09150043D
:108D6000B0915104BF93AF939F938F938BE296E0A2
:108D70009F938F931F930E94CB4888E28093360580
:108D80008DB79EB707968DBF80911001909111010C
:108D90009F938F938AE396E09F938F931F930E94F4
:108DA000CB488CE3809336050F900F900F900F9077
:108DB0000F908091CE0599279F938F9389E496E039
:108DC00045CC1092360588EF95E09F938F9311E084
:108DD0001F930E94CB4884E1809336050F900F903B
:108DE0000F9080912C0199279F938F9380E096E0BC
:108DF0009F938F931F930E94CB488CE380933605FB
:108E00000F900F900F900F900F908091030699276D
:108E10009F938F938091020699279F938F938EE063
:108E200096E0F3CD109236058DE696E09F938F93F2
:108E300011E01F930E94CB4884E1809336050F9088
:108E40000F900F908091AB0699279F938F938091FD
:108E5000AA0699279F938F938091A90699279F939C
:108E60008F938091A80699279F938F938DE796E023
:108E70009F938F931F930E94CB4888E2809336057F
:108E80002DB73EB7255F3F4F2DBF8091AF06992785
:108E90009F938F938091AE0699279F938F93809194
:108EA000AD0699279F938F938091AC0699279F9346
:108EB0008F9382E996E09F938F931F930E94CB48F4
:108EC0008CE3809336058DB79EB70B968DBF80914E
:108ED000B30699279F938F938091B20699279F930A
:108EE0008F938091B10699279F938F938091B006BD
:108EF00099279F938F9387EA96E09F938F931F9371
:108F00000E94CB482DB73EB7255F3F4F2DBFD6C03F
:108F10001092360580916604909167049F938F9319
:108F200088EC95E09F938F9311E01F930E94CB48AC
:108F300084E1809336050F900F900F900F900F9063
:108F400080916404909165049F938F9384ED95E0E4
:108F50009F938F931F930E94CB4888E2809336059E
:108F60000F900F900F900F900F908091620490914E
:108F700063049F938F9380EE95E09F938F931F934D
:108F80000E94CB488CE3809336050F900F900F9092
:108F90000F900F9080916004909161049F938F9344
:108FA0008CEE95E053CB1092360585E995E09F93C2
:108FB0008F9311E01F930E94CB4884E18093360584
:108FC0000F900F900F9080916D0490916E049F937D
:108FD0008F9380EA95E09F938F931F930E94CB48D5
:108FE00088E2809336050F900F900F900F900F90AE
:108FF00080917104909172049F938F938EEA95E013
:109000009F938F931F930E94CB488CE380933605E8
:109010000F900F900F900F900F9080916F04909190
:1090200070049F938F9389EB95E010CB84E180933C
:10903000360588E596E09F938F9311E01F930E9479
:10904000CB4888E2809336050F900F900F908FE504
:1090500096E055CE8CE38093360580E594E04FCEC4
:109060008CE3809336058EE294E049CE84E48093CD
:10907000360586E097E09F938F931F930E94CB481D
:109080000F900F900F9031CE80E48093360583E0EF
:1090900097E09F938F931F930E94CB480F900F9060
:1090A0000F901ECE0196A3CC295F3F4F4DCC0F965B
:1090B0003FCC295F3F4F77CC0F9669CC1092340597
:1090C0001F910895982F80919706813031F0892F54
:1090D0000E944F57282F33270CC080913605E82F68
:1090E000FF27E759FE4F90838F5F8093360521E07D
:1090F00030E0C90108950F931F93CF93DF938C0144
:10910000EB01672B71F0F80181918F010E94624899
:10911000219739F0F80181918F010E9462482197CF
:1091200091F7DF91CF911F910F9108950F931F93A6
:10913000CF93DF938C01EB01672B81F0F8010F5F78
:109140001F4F84910E946248219741F0F8010F5F00
:109150001F4F84910E946248219781F7DF91CF9140
:109160001F910F910895CF93C82F181634F480E201
:109170000E946248C1501C16D4F3CF910895CF933A
:10918000C82F181634F480E30E946248C1501C16A0
:10919000D4F3CF910895A0E3B0E0E1EDF8E40C94AE
:1091A000735C26968FAD26972896EEADFFAD289777
:1091B0008824992454018093970648E4C42ED12C26
:1091C000CC0EDD1E7F01C701F7011491112331F090
:1091D000153221F00894E11CF11CF6CFB701681B91
:1091E000790B09F095C0112309F43DC20894E11CE4
:1091F000F11C1FA63FA4232C0FEF39A6F7010894FA
:10920000E11CF11C14911537C9F1812F8062883758
:10921000A9F1103209F440C0133209F48DC01A329A
:1092200009F479C01D3209F476C01B32C9F11E322F
:10923000C9F1103309F48AC0812F8153893008F0B5
:109240007EC060E070E0CB01880F991F880F991FE6
:10925000880F991F860F971F680F791F610F711D67
:1092600060537040F7010894E11CF11C1491812FA8
:1092700080538A3040F3262E153739F630FE3DC034
:10928000F60184E090E0C80ED91E80809180A28013
:10929000B380103209F0C0CF89A5882309F0AECF82
:1092A00019A7ACCFF7010894E11CF11C14911A32F4
:1092B00009F451C060E070E014C0CB01880F991F21
:1092C000880F991F880F991F860F971F680F791FA6
:1092D000610F711D60537040F7010894E11CF11C8F
:1092E0001491812F80538A3040F3EFEF6F3F7E0758
:1092F00014F46FEF7FEF062F86CFF60182E090E047
:10930000C80ED91E808191814C01AA24BB2481CF33
:109310000E94964868CF1A3251F4F60182E090E03C
:10932000C80ED91E208022200CF068CF219490E135
:10933000392AEFED3E2262CF98E0392A5FCF183606
:10934000C9F01C36D1F481E0382A58CF34FC56CF0E
:10935000F0E23F2A53CFF60182E090E0C80ED91E1A
:10936000608171819FEF6F3F790714F46FEF7FEF9A
:10937000062F44CF24E0322A41CF133609F44DC1E1
:10938000143409F41FC1143609F41CC1193609F448
:1093900019C11F3409F40FC11F3609F40CC110376D
:1093A00009F4F9C0133709F4B2C0153509F4ECC05B
:1093B000153709F4E9C0183509F444C0183709F421
:1093C00041C0112309F44FC1CE0101969DA78CA77E
:1093D000198381E0482E19A6632C7724042D5FA4FD
:1093E000541857FC2DC029A5222331F10F5F050D1C
:1093F000C30180739070892B09F42FC1222309F0D7
:1094000027C166FC1BC1C30180739070809709F46B
:1094100010C1852D0E94BF48842D992787FD909506
:10942000BC018CA59DA50E947B4864FECCCE822DFC
:10943000801B0E94B348C7CE66FED9CF0E5FD7CF40
:109440005524D1CFE0E1EEA733FE07C0811491048B
:10945000A104B10411F0F0E43F2A19A60FA707FDFB
:1094600002C02FED3222CE0189969DA78CA78114D0
:109470009104A104B10419F49FA5992361F1EEA50B
:109480004E2E55246624772418AA84149504A60425
:10949000B70410F0F1E0F8ABC501B401A3019201EB
:1094A0000E94365CDC01CB01082F8A30F0F4005DAD
:1094B000ECA5FDA50293FDA7ECA7C501B401A3018E
:1094C00092010E94365C49015A01F8A9FF23E1F696
:1094D0002EA5283079F0632C7724CE010196482EF2
:1094E000FCA54F1A28E2420E79CF095A183501F728
:1094F0000F7DDECF632C772463FEEFCF003369F35B
:1095000080E3ECA5FDA58293FDA7ECA7E6CFF601CD
:1095100082E090E0C80ED91E0190F081E02DFDA7F9
:10952000ECA7EF2B81F4FE013196FDA7ECA788E2B2
:1095300089838EE6818385E78B838CE68C838D839C
:1095400089E28E831F8207FD15C0802F992787FD32
:109550009095AC0160E070E08CA59DA50E94405AFA
:10956000009731F0482EFCA54F1A04150CF033CFAC
:10957000402E31CFECA5FDA501900020E9F73197F1
:109580004E2E2CA5421A27CF153511F481E0382A2A
:109590009AE09EA762CFF60182E090E0C80ED91E45
:1095A000808191814C01AA24BB2490E19EA7E0E434
:1095B0003E2A18E752CF1F3411F4E1E03E2AF8E0CA
:1095C000FEA74BCF143411F491E0392A30FE18C0B5
:1095D000F60184E090E0C80ED91E80809180A280C0
:1095E000B380B7FE0AC0B094A09490948094811C7C
:1095F000911CA11CB11C8DE289A79AE09EA72ECFD9
:10960000F60182E090E0C80ED91E808191814C0164
:10961000AA2497FCA094BA2CE4CFFE013196FDA7B2
:10962000ECA7F60182E090E0C80ED91E8081898304
:10963000D0CE822D801B0E94BF48EBCE80E38AA74C
:109640001BA762E070E0CE018A960E947B48DBCEC9
:1096500061E070E0CE018996F8CF822D801B0E94D8
:10966000B34829A5CBCEE2E1C05D0C948F5C10928B
:10967000B9008AE28093B800089585EA8093BC001F
:10968000089584E98093BC0008951092B9008093F6
:10969000BB0085E88093BC0008950E94414B109266
:1096A0003E058091BB0010923D0580E88093BC0090
:1096B0001092BD001092BA001092BB001092B90037
:1096C0001092B8000E94374B0E943D4B80E00E94F0
:1096D000454B08958093BB0085E88093BC000895B6
:1096E00085EC8093BC00089585E88093BC000895C4
:1096F0001F920F920FB60F9211242F933F934F9307
:109700005F936F937F938F939F93AF93BF93EF93E9
:10971000FF9380913E05282F3327442755278F5FDD
:1097200080933E05F90127313105A8F4E75AFF4F30
:109730000C94AA5C80913C05E82FFF27E856F94F6E
:109740009091BB0090838F5F823008F49FC010928D
:109750003C050E94414B10923E05F1C080E80E94FA
:10976000454BEDC088E90E94454BE9C00E94414B42
:109770008AE090E090934701809346010E943D4B20
:10978000DEC084E10E94454BDAC082E10E94454B75
:10979000D6C080910F010E94454BD1C080E10E944C
:1097A000454BCDC080910E010E94454BC8C08091B1
:1097B0000D010E94454BC3C080913D05E82FFF2756
:1097C000EE57F94F8F5F80933D0580810E94454B96
:1097D000B6C090913D05292FE92FFF27EE0FFF1FFF
:1097E000EE0FFF1FEB58FA4F858518160CF056C088
:1097F000923009F469C0992309F487C0913009F0C7
:109800009EC086E50E94454B9AC080913C05E82F9A
:10981000FF27E655F94F8091BB0080830E94744B6F
:109820008EC08091B900803409F475C080913C05E8
:10983000E82FFF27E654F94F10828F5F823058F1EE
:1098400010923C050E94414B10923E0510923B0540
:1098500010923F0574C08091B900803309F443C071
:109860000E94414B8AE090E090934701809346012B
:1098700010923E050E943D4B62C00E94414B8AE01F
:1098800090E0909347018093460165CF80933C051B
:109890000E94414B60CF80933C05D4CF923008F0BA
:1098A000A7CF922F9F5FE92FFF27EE0FFF1FEE0F2D
:1098B000FF1FEB58FA4F858518161CF0292F9230A0
:1098C00080F390933D0594CF10923D0583E0809303
:1098D0003E0580913C05882361F1813081F587E563
:1098E0000E94454B2CC080913F058823F9F490914C
:1098F0003D0590933F05E92FFF27E955F94F8081FA
:109900008F5F09F48FEF8083ABCF82E50E94454BD8
:1099100090913D0573CF80913C05E82FFF27E654D9
:10992000F94F8C5F80830E94704B90CF90913D05E2
:10993000E2CF83E50E94454B80913C05CECF8091DC
:10994000BC0080688093BC00FF91EF91BF91AF9104
:109950009F918F917F916F915F914F913F912F9147
:109960000F900FBE0F901F90189583EC809381008D
:1099700080916F00806280936F001092C0041092FB
:10998000BF041092C2041092C1041092C404109239
:10999000C30408951F920F920FB60F921124EF92F5
:1099A000FF920F931F932F933F934F935F936F9368
:1099B0007F938F939F93AF93BF93CF93DF93EF9357
:1099C000FF9320918600309187008091410590910E
:1099D0004205281B390B8091860090918700909357
:1099E000420580934105C9018D549440835F9A419B
:1099F00098F4809143058093BC0680914305909133
:109A00004405049714F01092C301C1E0D0E0D09354
:109A10004405C0934305A3C0C0914305D0914405BC
:109A2000CA30D1050CF09BC0C9018B5F9040845BAC
:109A30009140A8F0FE013196F0934405E093430570
:109A4000E530F10509F46DC05D98E630F10509F4E3
:109A500066C05C98379709F460C05B9880C0225D4F
:109A60003140FE01EC0FFD1FE354F94F80819181DD
:109A7000F901E81BF90BCF01F7FD6DC0069754F40F
:109A800080915F04883C08F05FC080915F04865F2E
:109A900080935F04FE01EC0FFD1FE354F94F8081BA
:109AA0009181AC01440F551F480F591F420F531F9E
:109AB00057FD4EC07A01F594E794F594E794C901F7
:109AC00001968E159F05BCF50894E108F108809178
:109AD0005F04833C40F18E010C0F1D1FF801E3541D
:109AE000F94F808191819701281B390BC90163E0EF
:109AF00070E00E94235CCB01880F991F860F971F8F
:109B00000D52194FF80191838083FE01EC0FFD1F68
:109B1000E354F94FF182E0828DCF5B9A20C05C9ACA
:109B200099CF5D9A92CFFE01EC0FFD1FED52F94FD8
:109B300011821082EACF21503040E216F3063CF643
:109B40000894E11CF11CC3CF88EC80935F04A2CF82
:109B50004D5F5F4FAFCF909581959F4F8FCFFF9116
:109B6000EF91DF91CF91BF91AF919F918F917F91B5
:109B70006F915F914F913F912F911F910F91FF90A6
:109B8000EF900F900FBE0F901F901895CF93FC0190
:109B900097FD21C0C1E028E631E0CF01B9010E9464
:109BA000235CFC018B35910554F08B5590408A3530
:109BB000910538F484EB90E08E1B9F0BFC0141E093
:109BC00013C0CF01855B90408A35910548F4E45B72
:109BD000F0404FEF09C0CFEFF095E195FF4FDBCF9D
:109BE0002E1B3F0BF9014FEFEE0FFF1FEA56F74F09
:109BF000259134918C2F992787FD9095829FB001F4
:109C0000839F700D929F700D1124842F992787FDDB
:109C10009095689FA001699F500D789F500D112469
:109C2000CA01CF9108952AE530E0281B390BC901FC
:109C30000E94C64D08951F93CF93DF93EB016115EA
:109C4000710519F4009709F494C097FD3EC011E026
:109C5000209729F48AE51802B00111248AC0AA27A6
:109C600097FDA095BA2F26E0880F991FAA1FBB1F4A
:109C70002A95D1F79E01442737FD4095542FBC010A
:109C8000CD010E94585CF90137FD2CC081E0EA3516
:109C9000F807ACF08CE1E73AF807CCF02AE530E0C1
:109CA0001C161D061CF5812F992787FD9095829F14
:109CB000B001839F700D929F700D11245AC0E45C17
:109CC000F84F8491282F3327EBCF1FEFC1CF89E0C6
:109CD000ED38F8078CF485E0EA3BF80784F028E5D6
:109CE00030E0DECFF095E195FF4FD0CFD7FD0EC02D
:109CF000B901645B70403DC029E530E0D1CF84E01C
:109D0000E731F80754F027E530E0CACF111684F7A1
:109D100064EB70E0621B730B2CC083E0EE32F8073B
:109D20001CF026E530E0BCCF82E0E939F8071CF0F2
:109D300025E530E0B5CF82E0E233F8071CF024E5FA
:109D400030E0AECF81E0E73EF8071CF023E530E0DD
:109D5000A7CF81E0ED3AF8071CF022E530E0A0CF74
:109D6000EF57F1401CF021E530E09ACF20E530E0DC
:109D700097CFCB01DF91CF911F910895EF92FF9282
:109D80000F931F93CF93DF937B018C0120E030E092
:109D900040E050E0FA01E9016FE00BC0C21BD30BB9
:109DA000E40BF50B2F5F3F4F4F4F5F4F615067FD47
:109DB00031C0220F331F441F551FCC0FDD1FEE1F74
:109DC000FF1FCC0FDD1FEE1FFF1FD801C7017EE173
:109DD000B695A795979587957A95D1F7C80FD91F0E
:109DE000EA1FFB1FEE0CFF1C001F111FEE0CFF1CD7
:109DF000001F111F2F5F3F4F4F4F5F4FC217D307F9
:109E0000E407F50758F6215030404040504061507B
:109E100067FFCFCF5695479537952795CA01B9016A
:109E2000E6E0CDB7DEB70C949B5C209150053091F5
:109E30005105280F391FC901019608958AE090E065
:109E40000E94154F909359058093580582E085BD77
:109E500083EA84BD17BC88E788BD86E086BD809113
:109E60006E00816080936E000895209150053091BE
:109E70005105821B930B892F9927869580749070CA
:109E80000895CF93DF930E94154FEC01CE010E94FD
:109E9000354F8823D9F3DF91CF9108951F93CF9346
:109EA000DF930E94154FEC011FEC08C080910C015C
:109EB000882321F090930C0110937A00CE010E9428
:109EC000354F982F882391F3DF91CF911F910895FB
:109ED0001F920F920FB60F9211242F933F935F930F
:109EE0006F937F938F939F93AF93BF93EF93FF9362
:109EF00080914A05882329F080914A0581508093FA
:109F00004A058091520581508F3FE1F180935205BF
:109F100080914B0590914C05892B59F180914B050F
:109F200090914C05019790934C0580934B0580913F
:109F30004B0590914C052091C4013091C5018223BD
:109F40009323892BE9F447988091E10583FF80C032
:109F500086B19927FC01E071F07084FF2BC08091DD
:109F60004D0590914E05019690934E0580934D05B9
:109F70006FC08FEF9FEF9093C5018093C401E3CF33
:109F8000479AE2CF89E0809352058091C6018F5FA6
:109F900081708093C601882319F481E080934F0576
:109FA00080915005909151050196909351058093B1
:109FB0005005AECF80914D0590914E05892B41F112
:109FC00080914D0590914E058A56914008F58091FB
:109FD0004D0590914E0569E270E00E940F5C809102
:109FE0004D0590914E05860F971F90934E058093D7
:109FF0004D0580914D0590914E050B9720F1809174
:10A000004D0590914E050A979093720480937104C8
:10A01000809171049091720420916F0430917004CA
:10A02000821B930B845E9D4F68E671E00E94235C67
:10A03000845B904090936E0480936D0410924E0563
:10A0400010924D0505C0F0937204E0937104E0CFC7
:10A05000FF91EF91BF91AF919F918F917F916F9100
:10A060005F913F912F910F900FBE0F901F90189509
:10A070009FB7F8945F983E9A469A8091B0008F708F
:10A080008093B0008091B00083608093B000809195
:10A09000B1008B738093B1008091B1008B6080938D
:10A0A000B1001092B2008FEF8093B3008091B000A6
:10A0B00080688093B000809170008A7F80937000E8
:10A0C000809170008260809370009FBF08951F92FE
:10A0D0000F920FB60F9211242F933F934F935F93DC
:10A0E0006F937F938F939F93AF93BF93EF93FF9360
:10A0F000809153058823D1F58091B00086FD53C02F
:10A100008091B00080648093B00080910806282F71
:10A1100033278DED96E0289FA001299F500D389F91
:10A12000500D1124CA012091560530915705821B0C
:10A13000930B90935505809354059C0181E0809387
:10A14000530551E02F373507C8F42F3F310501F192
:10A15000F8F0A9014F5F50404F37510508F0D1C0CA
:10A1600080E88093B300205830400DC02091540502
:10A170003091550551E02F37350738F38FEF809335
:10A18000B3002F5F3040309355052093540511C123
:10A19000809154058093B300109255051092540598
:10A1A0001092530506C18091B0008F7B8093B00060
:10A1B00089EA93E090935505809354058091C701F7
:10A1C0009091C8019C01220F331F280F391F8091E5
:10A1D0002C019927880F991F880F991F280F391F65
:10A1E00037FD97C0C901959587959595879590936B
:10A1F000C8018093C70190934805809347058091DB
:10A20000300680FF89C080910106682F7727882754
:10A2100099272091AB043091AC044091AD0450914A
:10A22000AE0457FDB2C0A7E05595479537952795E1
:10A23000AA95D1F70E94E45B9B01AC0197FDB4C0E5
:10A24000F6E05595479537952795FA95D1F7809182
:10A25000470590914805820F931F9093480580937E
:10A26000470580910206282F3327220F331F220F24
:10A27000331F8091470590914805821793077CF022
:10A2800080910306282F3327220F331F220F331FFD
:10A2900080914705909148052817390724F4309399
:10A2A0004805209347052091470530914805809146
:10A2B000540590915505280F391F20503240809148
:10A2C00047059091480597FD5EC0959587959595B2
:10A2D0008795909348058093470545E02D3D3407C9
:10A2E00008F445C08CED95E0909355058093540596
:10A2F000209154053091550530935705209356050C
:10A300001DCF8FEF8093B3005093550540935405B4
:10A3100050C02D5F3F4F66CF80910106682F772791
:10A32000882799272091AB043091AC044091AD046B
:10A330005091AE0457FD33C0E7E0559547953795EA
:10A340002795EA95D1F70E94E45B9B01AC0197FD4C
:10A3500021C076E055954795379527957A95D1F7A1
:10A360008091470590914805821B930B76CF51E071
:10A370002737350718F487E791E0B6CF30935505B6
:10A3800020935405B5CF0396A0CF21583F4F4F4F90
:10A390005F4F49CF215C3F4F4F4F5F4FDACF21587E
:10A3A0003F4F4F4F5F4FC8CF215C3F4F4F4F5F4FE5
:10A3B00047CFFF91EF91BF91AF919F918F917F9187
:10A3C0006F915F914F913F912F910F900FBE0F9022
:10A3D0001F901895F999FECF1FBA92BD81BD60BD3F
:10A3E0000FB6F894FA9AF99A0FBE089588E180930F
:10A3F000C1008091C00082608093C0008091C10044
:10A4000080688093C1008091C10080648093C10006
:10A410008AE28093C4008091C9039091CA030E948C
:10A42000154F90932608809325088CED90E00E94AC
:10A43000154F9093550880935408109227088CE488
:10A440008093280886E080932B088AE0809329086F
:10A4500081E080932A081092600510925F051092A7
:10A460005E0508951F920F920FB60F9211248F93DD
:10A470009F93EF93FF938091CE038823A9F480915B
:10A480006D0590916E050196FC01E750F94FE08152
:10A49000ED3079F08639910561F090936E058093E7
:10A4A0006D05E093C6000EC010926E0510926D050A
:10A4B00009C010926E0510926D0581E08093CE0365
:10A4C000E093C600FF91EF919F918F910F900FBE87
:10A4D0000F901F9018951F920F920FB60F92112494
:10A4E0002F933F934F935F938F939F93AF93BF931C
:10A4F000EF93FF9390E08091C600809365055091A3
:10A500007305563910F090937405809165058D3070
:10A5100091F020917405822F99278130910509F4DB
:10A520006CC0823091050CF48EC0029709F47FC094
:10A5300010927405A8C020917405223061F79093A1
:10A540007405852F99278A5A974FFC0132974081CD
:10A5500020916F0530917005241B3109DC011197A2
:10A560008C91281B3109C9019F70909370058093CD
:10A570006F050024880F991F001C880F991F001C6D
:10A58000892F902D982F935C909371052F733070C5
:10A59000235C209372058081891709F46EC090E0D6
:10A5A000809162058F5F809362053091640533234B
:10A5B00009F069C0992309F466C081E080936405BD
:10A5C000580F509361055150E52FFF27EA5AF74F76
:10A5D0008DE0808380915808823509F054C088E16D
:10A5E00090E02CE00FB6F894A895809360000FBE21
:10A5F000209360003093490546C02F5F2093740577
:10A60000E52FFF27EA5AF74F8091650580835F5F4A
:10A61000509373052091650580916F0590917005A9
:10A62000820F911D9093700580936F052CC0E52FCC
:10A63000FF27EA5AF74F809165058083563938F332
:10A6400010927405E7CF892B09F072CF80916505D0
:10A65000833259F0809165058093560881E080939C
:10A660007305809165059927DDCF80916405882366
:10A6700089F781E080937405EDCF8C91821709F002
:10A680008ECF91E092CFFF91EF91BF91AF919F91CB
:10A690008F915F914F913F912F910F900FBE0F902F
:10A6A0001F901895AC01A0E0B0E09D01A817B90774
:10A6B00048F4E9EFF6E08191280F311D1196A417B7
:10A6C000B507C8F33F70FD01E750F94FC9010024F9
:10A6D000880F991F001C880F991F001C892F902D2F
:10A6E000835C80831196FD01E750F94F2F73307022
:10A6F000822F835C8083A650B94F8DE08C9310929B
:10A70000CE038091F9068093C6000895A0E0B0E0E2
:10A71000ECE8F3E50C947C5C2C859D857E85BB2460
:10A7200083E28093F9069F599093FA062093FB06E3
:10A7300003E010E0772309F4ADC0CF84D88843E16B
:10A74000E42EF12CEC0EFD1EA989BA8971501097E8
:10A7500009F4A0C0109709F43CC0F601EB0DF11DFF
:10A76000B3949081119789F47723A1F1F70122E046
:10A7700030E0E20EF31ED701C080D180E20EF31E5E
:10A780000D90BC91A02DBB247150109719F1F601CA
:10A79000EB0DF11DB3944081119709F466C0109739
:10A7A000D1F0F601EB0DF11DB39460811197A1F486
:10A7B000772391F0F7013296D701CD90DC9032E00B
:10A7C000E32EF12CEE0EFF1EA081B181BB2471504F
:10A7D00003C090E040E060E0F801E750F94F892FB6
:10A7E00086958695835C80830F5F1F4FF801E75045
:10A7F000F94F892F99278370907082959295907F59
:10A800009827807F982755279A01329522952F7097
:10A8100023273F702327822B835C80830F5F1F4F8A
:10A82000F801E750F94F4F705070440F551F440F17
:10A83000551F862F99270024880F991F001C880F09
:10A84000991F001C892F902D842B835C80830F5FC0
:10A850001F4FF801E750F94F6F73635C60830F5F20
:10A860001F4F109709F076CF15C0772309F4B3CFA7
:10A87000F701A2E0B0E0EA0EFB1ED701C080D18054
:10A8800022E030E0E20EF31E0D90BC91A02DBB241F
:10A89000715085CFC8010E945253E9E00C94985C36
:10A8A000A3E07A2F40916105465009F45FC0E72F7D
:10A8B000FF27EA5AF74F80818D537F5FE72FFF27ED
:10A8C000EA5AF74F20812D537F5FE72FFF27EA5A7F
:10A8D000F74F30813D537F5FE72FFF27EA5AF74F4D
:10A8E00060816D537F5F9927880F991F880F991F8B
:10A8F000522F52955F70582B822F99278F7090702E
:10A9000082959295907F9827807F9827232F269570
:10A910002695282B832F9927837090700024969575
:10A9200087950794969587950794982F802D682B87
:10A9300041504F3FD9F0EA2FFF27EA5AF74F508393
:10A94000AF5F41504F3F91F0EA2FFF27EA5AF74F90
:10A950002083AF5F41504F3F49F0EA2FFF27EA5A6B
:10A96000F74F6083AF5F442309F0A1CF89E598E0FA
:10A970009093600580935F05A350A0935E050895B2
:10A98000A2E0B0E0E6ECF4E50C94825C8091640512
:10A99000882309F480C20E9450548091570882365F
:10A9A00061F1809158089927AA27BB27FC01EB5435
:10A9B000F040EC32F105C0F4E059FF4F0C94AA5C72
:10A9C0008FEF8093CC03E0915F05F091600580816B
:10A9D00090913405892B80933405882311F01092CF
:10A9E000660581E080936A05109264051092600507
:10A9F00010925F0510925E054EC28091580899270B
:10AA00008037910509F446C1813791050CF454C093
:10AA10008337910509F472C1843791050CF053C155
:10AA20008137910509F0BDCFA0915F05B091600518
:10AA30008C918F3F09F423C28C91882309F008C2BE
:10AA400081E08C93A0915F05B091600545E669EDCA
:10AA500075E08C910E94A6128091CE038823E1F3C9
:10AA6000E0915F05F09160058081898380E58A83AC
:10AA700085E690E09F938F9389ED95E09F938F9368
:10AA800021E030E03F932F93CE0102969F938F9366
:10AA90003F932F93CE01820F931F9F938F9383E059
:10AAA0008F9381E08F9381E58F930E948653ADB79A
:10AAB000BEB71F96ADBF75CF8D36910529F18E3685
:10AAC00091050CF0EBC08B34910509F06ACFA09191
:10AAD0005F05B09160058D919C9190937204809375
:10AAE000710420916F0430917004821B930B845E7B
:10AAF0009D4F68E671E00E94235C845B90409093D8
:10AB00006E0480936D044DCF8091CE038823E1F3D2
:10AB1000A0915F05B09160051C91113009F49DC1B1
:10AB2000198281E090E09F938F93CE0101969F93CD
:10AB30008F9381E08F938F938DE48F930E94865340
:10AB40008DB79EB707968DBF2CCF81E080936805A7
:10AB50004BCF8FEF8093CC03E0915F05F0916005C0
:10AB600080818093350581E080936B053DCF81E046
:10AB700080936C0539CFE0915F05F091600590817D
:10AB80008AE0989FC00111249093CA038093C9035F
:10AB9000892B09F429CF81E08093690525CF809125
:10ABA0005A0590915B05892B09F027C1A0915F059B
:10ABB000B09160059C91992309F015C19C918AE0A0
:10ABC000989FC001112490935B0580935A050CCF88
:10ABD000A0915F05B09160058BE0E9E4F8E00D908D
:10ABE00001928A95E1F78091520880932E098FEFA8
:10ABF0008093CC03F9CEE0915F05F0916005E08190
:10AC0000E03208F410C18FE18093CD03F0CFE091E2
:10AC10005F05F0916005808191819093720480932B
:10AC2000710420916F0430917004821B930B845E39
:10AC30009D4F68E671E00E94235C845B9040909396
:10AC40006E0480936D04D0CE80916105853108F447
:10AC5000D9C0E0915F05F091600580E1A1E3B8E023
:10AC600001900D928A95E1F78091CE038823E1F35C
:10AC70001F928091CB038F9384E58F930E9486531C
:10AC80008AEF80935C058FEF8093CC030F900F9039
:10AC90000F90AACE81E08093670583CE8E36910512
:10ACA00009F07FCE8091CE038823E1F38DE490E01C
:10ACB0009F938F9385E795E09F938F9381E08F9388
:10ACC0008F938EE43ACF8437910509F06ACE809154
:10ACD0006105853108F4AAC0A0915F05B0916005B7
:10ACE00080E1E1E3F8E00D9001928A95E1F780EFD1
:10ACF00080935C058FEF8093CC0353CE20915F054A
:10AD000030916005F90180818150853018F481818E
:10AD10008035C9F019828091CE038823E1F381E068
:10AD200090E09F938F93CE0101969F938F9381E044
:10AD30008F938F9383E58F930E948653EDB7FEB771
:10AD40003796EDBF2ECE69ED75E085E62E5F3F4F5D
:10AD5000DB01F901982F01900D929A95E1F72250AD
:10AD60003040482FD9018C910E94D81280910F0653
:10AD70009927AA27BB27BC01CD0124EC39E040E08C
:10AD800050E00E94E45BDC01CB0180934001909392
:10AD90004101A0934201B09343018091100699278D
:10ADA000AA27BB27BC01CD010E94E45BDC01CB01DB
:10ADB00080933C0190933D01A0933E01B0933F01ED
:10ADC000E0915F05F091600580810E94C3120E94AE
:10ADD0001B13898380E00E9412056EE670E0898172
:10ADE0000E94461398CF8AE0989FC00111240E94C8
:10ADF000154F9093F8068093F706A0915F05B091E8
:10AE00006005DCCEE0915F05F09160058081918165
:10AE1000A281B3818093310890933208A0933308C4
:10AE2000B093340821CFE093CD03E1CEA0915F052C
:10AE3000B09160058D919D910D90BC91A02D809356
:10AE4000310890933208A0933308B09334084FCF61
:10AE5000863008F4FBCD85E0F4CD65E775E08DE440
:10AE6000FB010D9001928A95E1F72AEE31E54DE460
:10AE700050E088EE93E00E94725A198352CE0E94ED
:10AE80001B13E0915F05F09160058083A0915F0541
:10AE9000B0916005D1CDE3E0CE5F0C949E5CCF9382
:10AEA000C82F8A3029F08091C00085FFFCCF04C0F4
:10AEB0008DE00E944F57F7CFC093C60080E090E02E
:10AEC000CF910895EF92FF920F931F938091CE033D
:10AED000882309F450C280916A05882309F07EC056
:10AEE00080916B05882329F08091CE03882309F097
:10AEF00063C180916805882329F08091CE0388235F
:10AF000009F043C180916C05882329F08091CE031C
:10AF1000882309F022C180915408909155080E941D
:10AF2000354F882329F08091CE03882309F0B8C0DB
:10AF30008091C9039091CA03892B09F064C1809163
:10AF40006905882329F08091CE03882309F0EBC19D
:10AF500080915A0590915B05892B09F05EC1209183
:10AF6000CD032F3F39F180E190E09F938F93822FA3
:10AF7000992782959295907F9827807F982787536D
:10AF80009E4F9F938F9381E090E09F938F938DECE2
:10AF900093E09F938F9382E08F9381E08F9381E47E
:10AFA0008F930E9486538FEF8093CD038DB79EB70A
:10AFB0000B968DBF80912E09882329F08091CE03B6
:10AFC000882309F056C080916705882309F4D3C10E
:10AFD0008091CE03882309F4CEC135C08091CE0381
:10AFE000882309F47DCF0E94A14284E190E09F93E1
:10AFF0008F939091660584E1989FC0011124875931
:10B000009E4F9F938F9381E090E09F938F9386E66E
:10B0100095E09F938F9382E08F9381E08F9388E4F4
:10B020008F930E948653809166058F5F2DB73EB740
:10B03000255F3F4F2DBF843008F498C110926605FC
:10B0400010926A054DCF86E190E09F938F938DEB30
:10B0500096E09F938F9381E08F938F9380E58F93FA
:10B060000E948653109267058DB79EB707968DBFD5
:10B0700082C181E090E09F938F938EE299E09F934D
:10B080008F9381E08F938F9382E48F930E948653F6
:10B0900010922E092DB73EB7295F3F4F2DBF93CF9A
:10B0A0008091F0059927880F991F880F991F7C01BF
:10B0B0000027F7FC0095102F8091AB049091AC0411
:10B0C000A091AD04B091AE04BC01CD01A8019701DF
:10B0D0000E94585C30934208209341088091A30459
:10B0E0009091A404A091A504B091A604BC01CD0147
:10B0F000A80197010E94585C3093440820934308AC
:10B1000080914304809345088091420480934608CF
:10B1100088E090E09F938F9381E498E09F938F93D2
:10B1200081E08F9383E08F9387E78F930E9486530C
:10B13000809147082DB73EB7295F3F4F2DBF85301F
:10B1400018F086E08093470883E690E00E94154F50
:10B150009093550880935408EBCE8BE090E09F933A
:10B160008F9389E498E09F938F9381E08F938091F0
:10B17000CB038F9387E48F930E94865310926C05C4
:10B180008DB79EB707968DBFC6CE8AE090E09F939D
:10B190008F9387E298E09F938F9381E08F938F93B3
:10B1A00086E58F930E948653109268052DB73EB7AF
:10B1B000295F3F4F2DBFA6CE0E94A14280E590E0BF
:10B1C0009F938F9389E691E09F938F9321E030E0E6
:10B1D0003F932F9388E691E09F938F933F932F9314
:10B1E00085E395E09F938F9383E08F9381E08F9326
:10B1F0008CE48F930E94865310926B058DB79EB797
:10B200000F968DBF76CE80912508909126080E94DA
:10B21000354F882309F097CE92CE8091F706909112
:10B22000F8060E94354F882309F499CE8091CE0309
:10B23000882309F494CE8091F0059927880F991FEF
:10B24000880F991F7C010027F7FC0095102F809133
:10B25000AB049091AC04A091AD04B091AE04BC01DC
:10B26000CD01A80197010E94585C3093EA06209313
:10B27000E9068091A3049091A404A091A504B09143
:10B28000A604BC01CD01A80197010E94585C30932F
:10B29000EC062093EB0620918D0630918E064091AE
:10B2A0008F0650919006DA01C90103E0880F991FBB
:10B2B000AA1FBB1F0A95D1F7820F931FA41FB51FAA
:10B2C000820F931FA41FB51F2091200130912101EF
:10B2D0004091220150912301BC01CD010E94585C94
:10B2E0003093EE062093ED068EE090E09F938F93CF
:10B2F00089EE96E09F938F9381E08F938F9383E401
:10B300008F930E94865380915A0590915B050E940D
:10B31000154F9093F8068093F7062DB73EB7295F37
:10B320003F4F2DBF1CCE82E490E09F938F938CEE15
:10B3300098E09F938F9381E08F938F9384E48F9312
:10B340000E948653109269058DB79EB707968DBFF0
:10B350008091C9039091CA03009709F4F9CD0E9426
:10B36000154F9093260880932508F2CD80936605AB
:10B3700010926A05B5CD1F910F91FF90EF9008953F
:10B38000002422273327442751E0BB27EE27FF273D
:10B39000A0E1660F771F881F991F001C221F331F13
:10B3A000441F660F771F881F991F001C221F331F21
:10B3B000441F2AF4050E2B1F3E1F4F1F04C0051A01
:10B3C0002B0B3E0B4F0B550FBB1FEE1F587F5560CD
:10B3D00047FD5250AA95E9F6E695B7955795E6953B
:10B3E000B7955795852F9B2F08952227332741E046
:10B3F000552768E0880F991F221F331F880F991F58
:10B40000221F331F1AF4240F351F02C0241B350BD3
:10B41000440F551F487F456037FD42506A9551F7EC
:10B420005695479556954795842F0895AA2797FFD7
:10B4300004C0809590958A1F9A1F77FF04C060957D
:10B4400070956A1F7A1F669F9001779FA001679F82
:10B45000300D411D5A1F300D411D5A1F889FF001AC
:10B46000999F2E0F3F1F401D511D899F300D411D7B
:10B470005A1F300D411D5A1FCA01B901112480CF36
:10B48000FC014150504030F001900616D1F7319741
:10B49000CF010895882799270895A0E0B0E0E3E55B
:10B4A000FAE50C947B5C6C017B01EA015901219760
:10B4B0008FEFCF3FD80789F086010894C11CD11CBB
:10B4C000C7010894E11CF11CF5010995F80180837E
:10B4D0002197FFEFCF3FDF0779F7EAE0CDB7DEB77F
:10B4E0000C94975CA0E0B0E0E8E7FAE50C947D5C92
:10B4F0008C017B01EA01690121978FEFCF3FD807CB
:10B5000071F0F70121917F01C8010F5F1F4F622F7A
:10B51000F60109952197FFEFCF3FDF0791F7E8E0AC
:10B52000CDB7DEB70C94995C5058BB27AA270ED034
:10B530000DC1FED030F003D120F031F49F3F11F463
:10B540001EF4F3C00EF4E095E7FBE9C0E92F0FD13C
:10B5500080F3BA17620773078407950718F071F430
:10B560009EF527C10EF4E0950B2EBA2FA02D0B01EE
:10B57000B90190010C01CA01A0011124FF27591B38
:10B5800099F0593F50F4503E68F11A16F040A22F3E
:10B59000232F342F4427585FF3CF469537952795AF
:10B5A000A795F0405395C9F77EF41F16BA0B620BAE
:10B5B000730B840BBAF09150A1F0FF0FBB1F661FF5
:10B5C000771F881FC2F70EC0BA0F621F731F841F38
:10B5D00048F4879577956795B795F7959E3F08F05E
:10B5E000B3CF9395880F08F09927EE0F979587951D
:10B5F000089571D008F481E0089504D06894B111E1
:10B60000D9C00895BCD088F09F5790F0B92F9927E2
:10B61000B751A0F0D1F0660F771F881F991F1AF05D
:10B62000BA95C9F712C0B13081F0C3D0B1E0089526
:10B63000C0C0672F782F8827B85F39F0B93FCCF3A7
:10B64000869577956795B395D9F73EF49095809553
:10B65000709561957F4F8F4F9F4F0895E89409C073
:10B6600097FB3EF490958095709561957F4F8F4F35
:10B670009F4F9923A9F0F92F96E9BB279395F6954B
:10B68000879577956795B795F111F8CFFAF4BB0FC9
:10B6900011F460FF1BC06F5F7F4F8F4F9F4F16C02D
:10B6A000882311F096E911C0772321F09EE8872FB7
:10B6B000762F05C0662371F096E8862F70E060E073
:10B6C0002AF09A95660F771F881FDAF7880F9695EC
:10B6D000879597F90895990F0008550FAA0BE0E890
:10B6E000FEEF16161706E807F907C0F01216130644
:10B6F000E407F50798F0621B730B840B950B39F484
:10B700000A2661F0232B242B252B21F408950A26E9
:10B7100009F4A140A6958FEF811D811D089597F929
:10B720009F6780E870E060E008959FEF80EC0895E7
:10B7300000240A9416161706180609060895002410
:10B740000A9412161306140605060895092E03948A
:10B75000000C11F4882352F0BB0F40F4BF2B11F4FE
:10B7600060FF04C06F5F7F4F8F4F9F4F089557FD5D
:10B770009058440F551F59F05F3F71F04795880F5F
:10B7800097FB991F61F09F3F79F0879508951216F6
:10B7900013061406551FF2CF4695F1DF08C01616A2
:10B7A00017061806991FF1CF869571056105089453
:10B7B0000895E894BB2766277727CB0197F908956A
:10B7C0008ADF08F48FEF0895629FD001739FF00124
:10B7D000829FE00DF11D649FE00DF11D929FF00D21
:10B7E000839FF00D749FF00D659FF00D9927729F58
:10B7F000B00DE11DF91F639FB00DE11DF91FBD01E3
:10B80000CF0111240895991B79E004C0991F961760
:10B8100008F0961B881F7A95C9F780950895AA1B92
:10B82000BB1B51E107C0AA1FBB1FA617B70710F02B
:10B83000A61BB70B881F991F5A95A9F7809590955D
:10B84000BC01CD01089597FB092E07260AD077FD8C
:10B8500004D0E5DF06D000201AF4709561957F4F83
:10B860000895F6F7909581959F4F0895A1E21A2EBD
:10B87000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1F94
:10B88000A217B307E407F50720F0A21BB30BE40BE4
:10B89000F50B661F771F881F991F1A9469F760952B
:10B8A0007095809590959B01AC01BD01CF010895E5
:10B8B00097FB092E05260ED057FD04D0D7DF0AD0FE
:10B8C000001C38F450954095309521953F4F4F4FCF
:10B8D0005F4F0895F6F790958095709561957F4F2D
:10B8E0008F4F9F4F08952F923F924F925F926F928A
:10B8F0007F928F929F92AF92BF92CF92DF92EF9200
:10B90000FF920F931F93CF93DF93CDB7DEB7CA1B80
:10B91000DB0B0FB6F894DEBF0FBECDBF09942A88AB
:10B92000398848885F846E847D848C849B84AA8453
:10B93000B984C884DF80EE80FD800C811B81AA81E0
:10B94000B981CE0FD11D0FB6F894DEBF0FBECDBFAB
:10B95000ED010895EE0FFF1F0590F491E02D09947D
:02B96000FFCF17
:10B962005E010D0151756164726F000001737373A2
:10B97200FF03007D0000C409C40964000101010441
:10B982000B050000ECFF6440415A4664640A0296CB
:10B992009696960840403A10FB30380190D003004A
:10B9A20090D00300F4016400426567696E6E6572AF
:10B9B20000004E6F726D616C000053706F72740004
:10B9C200007800FF036401010E6371206465206446
:10B9D2006B396E77000000000000000000000000DC
:10B9E2000000000000000000000000000000000055
:10B9F2000000000000000000000000000000000045
:10BA02000000000000000000000000000000000034
:10BA12000000000000000000000102030405060708
:10BA220008090A01FFFF01FC013344204E69636BE0
:10BA32002D57696E6B656C20204163634E69636BA1
:10BA42002020202020202020206D6178636F6E74DA
:10BA5200726F6C6C65724444206D696E636F6E74B4
:10BA6200726F6C6C65724444204D657373776572B6
:10BA7200744E69636B2020202048695265734E69B9
:10BA8200636B20202020202020416457657274417E
:10BA920063634E69636B202020476173203D2074ED
:10BAA20068727573742020202020202020202020FE
:10BAB2002020202020202020205370616E6E756E81
:10BAC200672056202020202020456D7066616E6719
:10BAD200202020202020202020636F6E74726F6C43
:10BAE2006C65725020202020204D6F746F7220767A
:10BAF2006F726E6520202020204D6F746F72206857
:10BB0200696E74656E20202020636F6E74726F6C94
:10BB12006C6572442020202020636F6E74726F6CFB
:10BB22006C657244442020202050504D5F696E5B4A
:10BB3200335D204E69636B202069706B5B305D2042
:10BB420020202020202020202069706B5B315D2086
:10BB520020202020202020202069706B5B325D2075
:10BB62002020202020202020207563666C67312051
:10BB7200202020202020202020537469636B204B3A
:10BB8200616E616C20352020204D6573737765727C
:10BB9200744E69636B202020206D6178636F6E7430
:10BBA200726F6C6C65724420206D696E636F6E7487
:10BBB200726F6C6C65724420204164576572744EDA
:10BBC20069636B2020202020206D6178636F6E7482
:10BBD200726F6C6C65725020206D696E636F6E744B
:10BBE200726F6C6C657250202050504D5F696E5BB5
:10BBF200345D2047696572202050504D5F696E5B4D
:10BC0200335D204E69636B202050504D5F696E5B3F
:10BC1200325D20526F6C6C202050504D5F696E5B1C
:10BC2200315D20476173202020C8000164FF0100BC
:00000001FF
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/Flight-Ctrl_MEGA644_V0_76g_SVN.map
0,0 → 1,1884
Archive member included because of file (symbol)
 
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3.o)
analog.o (__subsf3)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3x.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3.o) (__addsf3x)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(cmpsf2.o)
analog.o (__ltsf2)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fixsfsi.o)
analog.o (__fixsfsi)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fixunssfsi.o)
fc.o (__fixunssfsi)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(floatsisf.o)
fc.o (__floatsisf)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_cmp.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(cmpsf2.o) (__fp_cmp)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_inf.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3x.o) (__fp_inf)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_nan.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3x.o) (__fp_nan)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_pscA.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3x.o) (__fp_pscA)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_pscB.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3x.o) (__fp_pscB)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_round.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3.o) (__fp_round)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_split3.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3x.o) (__fp_split3)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_zero.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3x.o) (__fp_zero)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(gesf2.o)
analog.o (__gtsf2)
C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_mulsi3.o)
analog.o (__mulsi3)
C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_udivmodqi4.o)
main.o (__udivmodqi4)
C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_udivmodhi4.o)
analog.o (__udivmodhi4)
C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_divmodhi4.o)
fc.o (__divmodhi4)
C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_udivmodsi4.o)
printf_P.o (__udivmodsi4)
C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_divmodsi4.o)
fc.o (__divmodsi4)
C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_prologue.o)
fc.o (__prologue_saves__)
C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_epilogue.o)
analog.o (__epilogue_restores__)
C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_exit.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o (exit)
C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_tablejump.o)
analog.o (__tablejump2__)
C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_copy_data.o)
main.o (__do_copy_data)
C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_clear_bss.o)
main.o (__do_clear_bss)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(memchr.o)
printf_P.o (memchr)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eerd_block.o)
main.o (__eerd_block)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eewr_block.o)
main.o (__eewr_block)
 
Allocating common symbols
Common symbol size file
 
KopplungsteilNickRoll
0x2 fc.o
MesswertGierBias 0x2 fc.o
motorOutFront 0x2 fc.o
KopplungsteilRollNick
0x2 fc.o
EE_Parameter 0x65 fc.o
DiffRoll 0x2 fc.o
MesswertRoll 0x2 fc.o
TrimNick 0x2 fc.o
Parameter_NaviGpsP 0x1 fc.o
ErsatzKompassInGrad
0x2 fc.o
motor_rx2 0x10 twimaster.o
GyroFaktorGier 0x1 fc.o
MittelIntegralRoll2
0x4 fc.o
Parameter_NaviGpsModeControl
0x1 fc.o
TrimRoll 0x2 fc.o
MesswertNick 0x2 fc.o
Aktuell_ay 0x2 analog.o
motorOutRear 0x2 fc.o
Data3D 0xe uart.o
Parameter_NaviGpsI 0x1 fc.o
Timer3D 0x2 uart.o
RohMesswertRoll 0x2 fc.o
MIN_GAS 0x1 fc.o
SendeBuffer 0x96 uart.o
NMEABuffer 0x96 uart.o
Parameter_NaviGpsACC
0x1 fc.o
MittelIntegralNick2
0x4 fc.o
Channels 0x1 rc.o
Debug_Timer 0x2 uart.o
Mittelwert_AccHoch 0x2 fc.o
RohMesswertNick 0x2 fc.o
IntegralFaktorGier 0x1 fc.o
DiffNick 0x2 fc.o
MittelIntegralNick 0x4 fc.o
MotorError 0x2 twimaster.o
desiredAngle 0x2 fc.o
VersionInfo 0xa uart.o
MotorTest 0x10 uart.o
NaviAccNick 0x2 fc.o
Parameter_J16Timing
0x1 fc.o
MittelIntegralRoll 0x4 fc.o
motor_rx 0x10 twimaster.o
AdNeutralGierBias 0x2 fc.o
PPM_in 0x16 rc.o
WinkelOut 0x8 uart.o
ExternControl 0xb uart.o
IntegralFaktor 0x1 fc.o
Aktuell_az 0x2 analog.o
StartLuftdruck 0x2 analog.o
tmp_motorwert 0x4 fc.o
Kompass_Timer 0x2 uart.o
RxdBuffer 0x96 uart.o
Mixer 0x4d main.o
angle 0x2 fc.o
Parameter_NaviOperatingRadius
0x1 fc.o
PrintZiel 0x1 printf_P.o
Aktuell_Nick 0x2 analog.o
Aktuell_Roll 0x2 analog.o
thrust 0x2 fc.o
Aktuell_ax 0x2 analog.o
Parameter_NaviWindCorrection
0x1 fc.o
MotorPresent 0x2 twimaster.o
s 0x1 fc.o
h 0x1 fc.o
Mittelwert_AccNick 0x2 fc.o
Parameter_NaviSpeedCompensation
0x1 fc.o
DebugOut 0x42 uart.o
DruckOffsetSetting 0x1 analog.o
Motor 0x2 fc.o
Aktuell_Gier 0x2 analog.o
Parameter_J17Timing
0x1 fc.o
MAX_GAS 0x1 fc.o
MesswertGier 0x2 fc.o
Parameter_J16Bitmask
0x1 fc.o
ConfirmFrame 0x1 uart.o
NaviAccRoll 0x2 fc.o
GyroFaktor 0x1 fc.o
m 0x1 fc.o
ErsatzKompass 0x4 fc.o
Mittelwert_AccRoll 0x2 fc.o
Parameter_NaviGpsGain
0x1 fc.o
PPM_diff 0x16 rc.o
Parameter_ExternalControl
0x1 fc.o
Parameter_J17Bitmask
0x1 fc.o
Parameter_NaviGpsD 0x1 fc.o
 
Memory Configuration
 
Name Origin Length Attributes
text 0x00000000 0x00020000 xr
data 0x00800060 0x0000ffa0 rw !x
eeprom 0x00810000 0x00010000 rw !x
fuse 0x00820000 0x00000400 rw !x
lock 0x00830000 0x00000400 rw !x
signature 0x00840000 0x00000400 rw !x
*default* 0x00000000 0xffffffff
 
Linker script and memory map
 
Address of section .data set to 0x800100
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
LOAD main.o
LOAD analog.o
LOAD fc.o
LOAD led.o
LOAD menu.o
LOAD printf_P.o
LOAD twimaster.o
LOAD rc.o
LOAD mymath.o
LOAD timer0.o
LOAD uart.o
LOAD isqrt.o
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a
LOAD C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a
LOAD C:/WinAVR/lib/gcc/avr/3.4.6/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 0xb962
*(.vectors)
.vectors 0x00000000 0x70 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
0x00000000 __vectors
0x00000000 __vector_default
*(.vectors)
*(.progmem.gcc*)
.progmem.gcc_sw_table
0x00000070 0x24 analog.o
.progmem.gcc_sw_table
0x00000094 0x1e menu.o
.progmem.gcc_sw_table
0x000000b2 0x2e twimaster.o
.progmem.gcc_sw_table
0x000000e0 0x58 uart.o
*(.progmem*)
.progmem.data 0x00000138 0x280 main.o
.progmem.data 0x000003b8 0x39 analog.o
.progmem.data 0x000003f1 0x34b menu.o
.progmem.data 0x0000073c 0x210 mymath.o
0x0000073c pgm_atanlookup
0x00000896 pgm_sinlookup
0x0000094c . = ALIGN (0x2)
0x0000094c __trampolines_start = .
*(.trampolines)
.trampolines 0x0000094c 0x0 linker stubs
*(.trampolines*)
0x0000094c __trampolines_end = .
*(.jumptables)
*(.jumptables*)
*(.lowtext)
*(.lowtext*)
0x0000094c __ctors_start = .
*(.ctors)
0x0000094c __ctors_end = .
0x0000094c __dtors_start = .
*(.dtors)
0x0000094c __dtors_end = .
SORT(*)(.ctors)
SORT(*)(.dtors)
*(.init0)
.init0 0x0000094c 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
0x0000094c __init
*(.init0)
*(.init1)
*(.init1)
*(.init2)
.init2 0x0000094c 0xc C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
*(.init2)
*(.init3)
*(.init3)
*(.init4)
.init4 0x00000958 0x16 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_copy_data.o)
0x00000958 __do_copy_data
.init4 0x0000096e 0x10 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_clear_bss.o)
0x0000096e __do_clear_bss
*(.init4)
*(.init5)
*(.init5)
*(.init6)
*(.init6)
*(.init7)
*(.init7)
*(.init8)
*(.init8)
*(.init9)
.init9 0x0000097e 0x8 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
*(.init9)
*(.text)
.text 0x00000986 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
0x00000986 __vector_1
0x00000986 __bad_interrupt
0x00000986 __vector_6
0x00000986 __vector_3
0x00000986 __vector_23
0x00000986 __vector_25
0x00000986 __vector_11
0x00000986 __vector_13
0x00000986 __vector_17
0x00000986 __vector_19
0x00000986 __vector_7
0x00000986 __vector_27
0x00000986 __vector_5
0x00000986 __vector_4
0x00000986 __vector_2
0x00000986 __vector_21
0x00000986 __vector_15
0x00000986 __vector_8
0x00000986 __vector_14
0x00000986 __vector_10
0x00000986 __vector_16
.text 0x0000098a 0xbf0 main.o
0x00000a24 LipoDetection
0x000009b2 CalMk3Mag
0x00000b32 main
.text 0x0000157a 0xab4 analog.o
0x000017ee __vector_24
0x0000163e SucheGyroOffset
0x0000157a ADC_Init
0x00001586 SucheLuftruckOffset
.text 0x0000202e 0x63a4 fc.o
0x000025b0 WriteParameterSet
0x00002056 DefaultStickMapping
0x00002660 MotorSmoothing
0x00002088 DefaultKonstanten3
0x000023b2 DefaultKonstanten1
0x000041f4 SendMotorData
0x00002586 SetActiveParamSetNumber
0x0000254c ReadParameterSet
0x000026d8 Mittelwert
0x00002636 GetActiveParamSetNumber
0x0000268c Piep
0x000039b8 CalibrierMittelwert
0x00003cc8 SetNeutral
0x0000221c DefaultKonstanten2
0x0000427e ParameterZuordnung
0x000049f8 MotorRegler
.text 0x000083d2 0x15e led.o
0x000083d2 LED_Init
0x000083f0 LED_Update
.text 0x00008530 0xb94 menu.o
0x00008530 LcdClear
0x00008542 Menu
.text 0x000090c4 0x5aa printf_P.o
0x000090c4 Putchar
0x00009196 _printf_P
0x0000917e PAD_0
0x0000912c PRINTP
0x000090f6 PRINT
0x00009166 PAD_SP
.text 0x0000966e 0x2fc twimaster.o
0x0000967a i2c_start
0x0000969a i2c_reset
0x000096e8 I2C_ReceiveLastByte
0x00009682 i2c_stop
0x000096e0 I2C_ReceiveByte
0x000096d4 I2C_WriteByte
0x0000966e i2c_init
0x000096f0 __vector_26
0x0000968a i2c_write_byte
.text 0x0000996a 0x222 rc.o
0x00009994 __vector_12
0x0000996a rc_sum_init
.text 0x00009b8c 0x29e mymath.o
0x00009d7c c_sqrt
0x00009c26 c_cos_8192
0x00009b8c c_sin_8192
0x00009c36 c_atan2
.text 0x00009e2a 0x5aa timer0.o
0x00009e2a SetDelay
0x0000a070 TIMER2_Init
0x00009e3c Timer_Init
0x00009e6a CheckDelay
0x00009e82 Delay_ms
0x00009e9c Delay_ms_Mess
0x0000a0ce __vector_9
0x00009ed0 __vector_18
.text 0x0000a3d4 0xfac uart.o
0x0000a464 __vector_22
0x0000a3ec UART_Init
0x0000a980 BearbeiteRxDaten
0x0000a6a4 AddCRC
0x0000aec4 DatenUebertragung
0x0000a8a0 Decode64
0x0000a70c SendOutData
0x0000a4d6 __vector_20
0x0000ae9e uart_putchar
.text 0x0000b380 0x100 isqrt.o
0x0000b380 isqrt32
0x0000b42c ihypot
0x0000b3ea isqrt16
.text 0x0000b480 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3.o)
.text 0x0000b480 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3x.o)
.text 0x0000b480 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(cmpsf2.o)
.text 0x0000b480 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fixsfsi.o)
.text 0x0000b480 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fixunssfsi.o)
.text 0x0000b480 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(floatsisf.o)
.text 0x0000b480 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_cmp.o)
.text 0x0000b480 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_inf.o)
.text 0x0000b480 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_nan.o)
.text 0x0000b480 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_pscA.o)
.text 0x0000b480 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_pscB.o)
.text 0x0000b480 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_round.o)
.text 0x0000b480 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_split3.o)
.text 0x0000b480 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_zero.o)
.text 0x0000b480 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(gesf2.o)
.text 0x0000b480 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_mulsi3.o)
.text 0x0000b480 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_udivmodqi4.o)
.text 0x0000b480 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_udivmodhi4.o)
.text 0x0000b480 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_divmodhi4.o)
.text 0x0000b480 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_udivmodsi4.o)
.text 0x0000b480 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_divmodsi4.o)
.text 0x0000b480 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_prologue.o)
.text 0x0000b480 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_epilogue.o)
.text 0x0000b480 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_exit.o)
.text 0x0000b480 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_tablejump.o)
.text 0x0000b480 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_copy_data.o)
.text 0x0000b480 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_clear_bss.o)
.text 0x0000b480 0x1a C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(memchr.o)
0x0000b480 memchr
.text 0x0000b49a 0x4a C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eerd_block.o)
0x0000b49a __eerd_block
.text 0x0000b4e4 0x44 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eewr_block.o)
0x0000b4e4 __eewr_block
0x0000b528 . = ALIGN (0x2)
*(.text.*)
.text.fplib 0x0000b528 0xa C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3.o)
0x0000b528 __subsf3
0x0000b52a __addsf3
.text.fplib 0x0000b532 0xc0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3x.o)
0x0000b54c __addsf3x
.text.fplib 0x0000b5f2 0x8 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(cmpsf2.o)
0x0000b5f2 __lesf2
0x0000b5f2 __nesf2
0x0000b5f2 __eqsf2
0x0000b5f2 __cmpsf2
0x0000b5f2 __ltsf2
.text.fplib 0x0000b5fa 0xa C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fixsfsi.o)
0x0000b5fa __fixsfsi
.text.fplib 0x0000b604 0x58 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fixunssfsi.o)
0x0000b604 __fixunssfsi
.text.fplib 0x0000b65c 0x7a C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(floatsisf.o)
0x0000b660 __floatsisf
0x0000b65c __floatunsisf
.text.fplib 0x0000b6d6 0x48 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_cmp.o)
0x0000b6d6 __fp_cmp
.text.fplib 0x0000b71e 0xc C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_inf.o)
0x0000b71e __fp_inf
.text.fplib 0x0000b72a 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_nan.o)
0x0000b72a __fp_nan
.text.fplib 0x0000b730 0xe C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_pscA.o)
0x0000b730 __fp_pscA
.text.fplib 0x0000b73e 0xe C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_pscB.o)
0x0000b73e __fp_pscB
.text.fplib 0x0000b74c 0x22 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_round.o)
0x0000b74c __fp_round
.text.fplib 0x0000b76e 0x44 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_split3.o)
0x0000b76e __fp_split3
0x0000b77e __fp_splitA
.text.fplib 0x0000b7b2 0xe C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_zero.o)
0x0000b7b2 __fp_zero
0x0000b7b4 __fp_szero
.text.fplib 0x0000b7c0 0x8 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(gesf2.o)
0x0000b7c0 __gtsf2
0x0000b7c0 __gesf2
.text.libgcc 0x0000b7c8 0x3e C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_mulsi3.o)
0x0000b7c8 __mulsi3
.text.libgcc 0x0000b806 0x18 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_udivmodqi4.o)
0x0000b806 __udivmodqi4
.text.libgcc 0x0000b81e 0x28 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_udivmodhi4.o)
0x0000b81e __udivmodhi4
.text.libgcc 0x0000b846 0x26 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_divmodhi4.o)
0x0000b846 __divmodhi4
0x0000b846 _div
.text.libgcc 0x0000b86c 0x44 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_udivmodsi4.o)
0x0000b86c __udivmodsi4
.text.libgcc 0x0000b8b0 0x36 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_divmodsi4.o)
0x0000b8b0 __divmodsi4
.text.libgcc 0x0000b8e6 0x38 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_prologue.o)
0x0000b8e6 __prologue_saves__
.text.libgcc 0x0000b91e 0x36 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_epilogue.o)
0x0000b91e __epilogue_restores__
.text.libgcc 0x0000b954 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_exit.o)
.text.libgcc 0x0000b954 0xc C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_tablejump.o)
0x0000b958 __tablejump__
0x0000b954 __tablejump2__
.text.libgcc 0x0000b960 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_copy_data.o)
.text.libgcc 0x0000b960 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_clear_bss.o)
0x0000b960 . = ALIGN (0x2)
*(.fini9)
.fini9 0x0000b960 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_exit.o)
0x0000b960 exit
0x0000b960 _exit
*(.fini9)
*(.fini8)
*(.fini8)
*(.fini7)
*(.fini7)
*(.fini6)
*(.fini6)
*(.fini5)
*(.fini5)
*(.fini4)
*(.fini4)
*(.fini3)
*(.fini3)
*(.fini2)
*(.fini2)
*(.fini1)
*(.fini1)
*(.fini0)
.fini0 0x0000b960 0x2 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_exit.o)
*(.fini0)
0x0000b962 _etext = .
 
.data 0x00800100 0x2d0 load address 0x0000b962
0x00800100 PROVIDE (__data_start, .)
*(.data)
.data 0x00800100 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
.data 0x00800100 0xc main.o
0x00800102 PlatinenVersion
0x00800100 BattLowVoltageWarning
0x00800101 SendVersionToNavi
.data 0x0080010c 0x10 analog.o
0x0080011a UBat
0x0080010f AnalogOffsetNick
0x0080010d AnalogOffsetGier
0x00800116 HiResRoll
0x0080010c AdReady
0x0080010e AnalogOffsetRoll
0x00800110 MessLuftdruck
0x00800112 Luftdruck
0x00800118 HiResNick
.data 0x0080011c 0x4a fc.o
0x0080011f RequiredMotors
0x00800127 Parameter_CouplingYawCorrection
0x00800140 Umschlag180Nick
0x0080013a Ki
0x00800139 Parameter_Luftdruck_D
0x00800126 Parameter_DynamicStability
0x00800130 Parameter_Gyro_Gier_P
0x00800135 Parameter_KompassWirkung
0x0080012c Parameter_ServoNickControl
0x0080011d ucflg2
0x00800132 Parameter_Gyro_P
0x00800133 Parameter_Gyro_D
0x00800137 Parameter_Hoehe_P
0x00800128 Parameter_AchsKopplung2
0x00800124 ExternHoehenValue
0x0080011e ucflg1
0x00800136 Parameter_Hoehe_ACC_Wirkung
0x00800120 GIER_GRAD_FAKTOR
0x0080012a Parameter_LoopGasLimit
0x00800129 Parameter_AchsKopplung1
0x0080011c ucflg3
0x00800146 I2CTimeout
0x00800131 Parameter_Gyro_I
0x0080012f Parameter_Gyro_Gier_I
0x0080013c Umschlag180Roll
0x00800138 Parameter_MaxHoehe
0x0080012d Parameter_I_Faktor
0x00800134 Parameter_Hoehe_GPS_Z
0x0080012b Parameter_ServoRollControl
0x00800144 KompassSignalSchlecht
0x0080012e Parameter_Gier_P
.data 0x00800166 0x2 led.o
0x00800167 J16Mask
0x00800166 J17Mask
.data 0x00800168 0x5b menu.o
0x008001b9 Array
0x00800168 MaxMenue
0x00800169 DisplayBuff
.data 0x008001c3 0x0 printf_P.o
.data 0x008001c3 0x0 twimaster.o
.data 0x008001c3 0x1 rc.o
0x008001c3 NewPpmData
.data 0x008001c4 0x0 mymath.o
.data 0x008001c4 0x5 timer0.o
0x008001c4 BeepMuster
.data 0x008001c9 0x206 uart.o
0x008003cb MeineSlaveAdresse
0x008001c9 ANALOG_TEXT
0x008003cc PcZugriff
0x008003ce UebertragungAbgeschlossen
0x008003cd DebugTextAnforderung
0x008003c9 DebugDataIntervall
.data 0x008003cf 0x0 isqrt.o
.data 0x008003cf 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3.o)
.data 0x008003cf 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3x.o)
.data 0x008003cf 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(cmpsf2.o)
.data 0x008003cf 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fixsfsi.o)
.data 0x008003cf 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fixunssfsi.o)
.data 0x008003cf 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(floatsisf.o)
.data 0x008003cf 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_cmp.o)
.data 0x008003cf 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_inf.o)
.data 0x008003cf 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_nan.o)
.data 0x008003cf 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_pscA.o)
.data 0x008003cf 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_pscB.o)
.data 0x008003cf 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_round.o)
.data 0x008003cf 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_split3.o)
.data 0x008003cf 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_zero.o)
.data 0x008003cf 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(gesf2.o)
.data 0x008003cf 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_mulsi3.o)
.data 0x008003cf 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_udivmodqi4.o)
.data 0x008003cf 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_udivmodhi4.o)
.data 0x008003cf 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_divmodhi4.o)
.data 0x008003cf 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_udivmodsi4.o)
.data 0x008003cf 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_divmodsi4.o)
.data 0x008003cf 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_prologue.o)
.data 0x008003cf 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_epilogue.o)
.data 0x008003cf 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_exit.o)
.data 0x008003cf 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_tablejump.o)
.data 0x008003cf 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_copy_data.o)
.data 0x008003cf 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_clear_bss.o)
.data 0x008003cf 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(memchr.o)
.data 0x008003cf 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eerd_block.o)
.data 0x008003cf 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eewr_block.o)
*(.data*)
*(.rodata)
*(.rodata*)
*(.gnu.linkonce.d*)
0x008003d0 . = ALIGN (0x2)
*fill* 0x008003cf 0x1 00
0x008003d0 _edata = .
0x008003d0 PROVIDE (__data_end, .)
 
.bss 0x008003d0 0x55f
0x008003d0 PROVIDE (__bss_start, .)
*(.bss)
.bss 0x008003d0 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
.bss 0x008003d0 0x4 main.o
0x008003d2 FlugMinuten
0x008003d0 FlugMinutenGesamt
.bss 0x008003d4 0x34 analog.o
0x008003e0 messanzahl_AccHoch
0x008003d7 ZaehlMessungen
0x008003d9 VarioMeter
0x008003db ExpandBaro
0x008003d5 GyroDefektR
0x008003e9 AdWertRoll
0x008003e3 AdWertAccNick
0x008003d4 GyroDefektG
0x008003eb AdWertNick
0x008003ed AdWertGierFilter
0x008003e7 AdWertGier
0x008003d6 GyroDefektN
0x008003f1 AdWertNickFilter
0x008003e5 AdWertAccRoll
0x008003dc SummenHoehe
0x008003ef AdWertRollFilter
0x008003e1 AdWertAccHoch
.bss 0x00800408 0x123 fc.o
0x00800477 Mess_Integral_Gier2
0x0080044c LageKorrekturRoll
0x00800408 filterDD
0x00800420 controllerP
0x00800458 StickGier
0x00800444 Looping_Oben
0x00800424 kd
0x00800487 Mess_IntegralNick2
0x008004a7 IntegralNick2
0x00800422 kdd
0x0080045f SenderOkay
0x0080043f Parameter_UserParam5
0x00800493 IntegralAccZ
0x00800428 ipk
0x0080048f Integral_Gier
0x0080045c StickNick
0x00800464 Poti2
0x0080041c mincontrollerP
0x0080046c MotorenEin
0x00800449 Looping_Nick
0x0080049b IntegralAccNick
0x008004b0 CosinusNickWinkel
0x00800452 HoehenWert
0x0080047f Mess_IntegralRoll2
0x00800436 ExternStickGier
0x00800462 Poti3
0x00800445 Looping_Unten
0x0080041a controllerD
0x00800432 MaxStickRoll
0x00800430 modell_fliegt
0x00800443 Parameter_UserParam1
0x008004c1 AdNeutralRoll
0x00800447 Looping_Links
0x00800416 mincontrollerD
0x008004ab IntegralNick
0x00800473 Mess_Integral_Hoch
0x0080043d Parameter_UserParam7
0x0080040e gyroScaledOld
0x008004c5 BaroExpandActive
0x008004b5 NaviCntAcc
0x0080046a TrichterFlug
0x008004b9 NeutralAccX
0x00800412 maxcontrollerDD
0x0080047b Mess_Integral_Gier
0x0080042e LoadHandler
0x0080044a LageKorrekturNick
0x00800440 Parameter_UserParam4
0x0080046f KompassStartwert
0x00800456 StickGas
0x00800418 maxcontrollerD
0x00800448 Looping_Roll
0x0080040c gyroScaled
0x0080040a filtersum
0x0080043a ExternStickNick
0x00800442 Parameter_UserParam2
0x008004bb StartNeutralNick
0x00800471 KompassValue
0x00800497 IntegralAccRoll
0x0080046d KompassRichtung
0x00800483 Mess_IntegralRoll
0x00800410 mincontrollerDD
0x0080045a StickRoll
0x008004c3 AdNeutralNick
0x008004b7 NeutralAccY
0x0080042f MikroKopterFlags
0x0080041e maxcontrollerP
0x008004b1 NeutralAccZ
0x0080043e Parameter_UserParam6
0x0080045e SenderRSSI
0x0080049f IntegralRoll2
0x00800434 MaxStickNick
0x00800466 Poti1
0x00800441 Parameter_UserParam3
0x008004bf AdNeutralGier
0x008004bd StartNeutralRoll
0x00800446 Looping_Rechts
0x00800414 controllerDD
0x00800438 ExternStickRoll
0x008004af CosinusRollWinkel
0x0080046b HoehenReglerAktiv
0x0080044e SollHoehe
0x0080043c Parameter_UserParam8
0x00800426 kp
0x00800468 GierGyroFehler
0x0080048b Mess_IntegralNick
0x00800460 Poti4
0x008004a3 IntegralRoll
.bss 0x0080052b 0x9 led.o
0x0080052d LED2_Timing
0x0080052f LED1_Timing
0x0080052b J17Blinkcount
0x0080052c J16Blinkcount
.bss 0x00800534 0x5 menu.o
0x00800536 DispPtr
0x00800535 MenuePunkt
0x00800534 RemoteKeys
0x00800537 TestInt
.bss 0x00800539 0x0 printf_P.o
.bss 0x00800539 0x7 twimaster.o
0x0080053e twi_state
0x00800539 I2CError
0x0080053b MissingMotor
0x0080053c motorread
0x0080053d motor
.bss 0x00800540 0x5 rc.o
0x00800540 tmpChannels
.bss 0x00800545 0x0 mymath.o
.bss 0x00800545 0x15 timer0.o
0x0080054a SendSPI
0x0080054b beeptime
0x00800547 ServoNickValue
0x00800550 CountMilliseconds
0x00800549 ServoActive
0x0080054d cntKompass
0x0080054f UpdateMotor
0x00800545 ServoRollValue
.bss 0x0080055a 0x1b uart.o
0x00800565 SioTmp
0x0080055d PC_DebugTimeout
0x00800568 GetVersionAnforderung
0x00800563 NeueKoordinateEmpfangen
0x0080055a Intervall3D
0x00800569 DebugDataAnforderung
0x0080055c PC_MotortestActive
0x00800564 NeuerDatensatzEmpfangen
0x0080056a DebugDisplayAnforderung
0x00800562 CntCrcError
0x00800567 GetPPMChannelAnforderung
0x0080056b DebugDisplayAnforderung1
0x00800566 DisplayLine
0x0080056c GetExternalControl
0x0080055f pRxData
0x0080055e RxDataLen
0x00800561 AnzahlEmpfangsBytes
.bss 0x00800575 0x0 isqrt.o
.bss 0x00800575 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3.o)
.bss 0x00800575 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3x.o)
.bss 0x00800575 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(cmpsf2.o)
.bss 0x00800575 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fixsfsi.o)
.bss 0x00800575 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fixunssfsi.o)
.bss 0x00800575 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(floatsisf.o)
.bss 0x00800575 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_cmp.o)
.bss 0x00800575 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_inf.o)
.bss 0x00800575 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_nan.o)
.bss 0x00800575 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_pscA.o)
.bss 0x00800575 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_pscB.o)
.bss 0x00800575 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_round.o)
.bss 0x00800575 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_split3.o)
.bss 0x00800575 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_zero.o)
.bss 0x00800575 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(gesf2.o)
.bss 0x00800575 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_mulsi3.o)
.bss 0x00800575 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_udivmodqi4.o)
.bss 0x00800575 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_udivmodhi4.o)
.bss 0x00800575 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_divmodhi4.o)
.bss 0x00800575 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_udivmodsi4.o)
.bss 0x00800575 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_divmodsi4.o)
.bss 0x00800575 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_prologue.o)
.bss 0x00800575 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_epilogue.o)
.bss 0x00800575 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_exit.o)
.bss 0x00800575 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_tablejump.o)
.bss 0x00800575 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_copy_data.o)
.bss 0x00800575 0x0 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_clear_bss.o)
.bss 0x00800575 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(memchr.o)
.bss 0x00800575 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eerd_block.o)
.bss 0x00800575 0x0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eewr_block.o)
*(.bss*)
*(COMMON)
COMMON 0x00800575 0x4d main.o
0x00800575 Mixer
COMMON 0x008005c2 0xf analog.o
0x008005c2 Aktuell_ay
0x008005c4 Aktuell_az
0x008005c6 StartLuftdruck
0x008005c8 Aktuell_Nick
0x008005ca Aktuell_Roll
0x008005cc Aktuell_ax
0x008005ce DruckOffsetSetting
0x008005cf Aktuell_Gier
COMMON 0x008005d1 0xc6 fc.o
0x008005d1 KopplungsteilNickRoll
0x008005d3 MesswertGierBias
0x008005d5 motorOutFront
0x008005d7 KopplungsteilRollNick
0x008005d9 EE_Parameter
0x0080063e DiffRoll
0x00800640 MesswertRoll
0x00800642 TrimNick
0x00800644 Parameter_NaviGpsP
0x00800645 ErsatzKompassInGrad
0x00800647 GyroFaktorGier
0x00800648 MittelIntegralRoll2
0x0080064c Parameter_NaviGpsModeControl
0x0080064d TrimRoll
0x0080064f MesswertNick
0x00800651 motorOutRear
0x00800653 Parameter_NaviGpsI
0x00800654 RohMesswertRoll
0x00800656 MIN_GAS
0x00800657 Parameter_NaviGpsACC
0x00800658 MittelIntegralNick2
0x0080065c Mittelwert_AccHoch
0x0080065e RohMesswertNick
0x00800660 IntegralFaktorGier
0x00800661 DiffNick
0x00800663 MittelIntegralNick
0x00800667 desiredAngle
0x00800669 NaviAccNick
0x0080066b Parameter_J16Timing
0x0080066c MittelIntegralRoll
0x00800670 AdNeutralGierBias
0x00800672 IntegralFaktor
0x00800673 tmp_motorwert
0x00800677 angle
0x00800679 Parameter_NaviOperatingRadius
0x0080067a thrust
0x0080067c Parameter_NaviWindCorrection
0x0080067d s
0x0080067e h
0x0080067f Mittelwert_AccNick
0x00800681 Parameter_NaviSpeedCompensation
0x00800682 Motor
0x00800684 Parameter_J17Timing
0x00800685 MAX_GAS
0x00800686 MesswertGier
0x00800688 Parameter_J16Bitmask
0x00800689 NaviAccRoll
0x0080068b GyroFaktor
0x0080068c m
0x0080068d ErsatzKompass
0x00800691 Mittelwert_AccRoll
0x00800693 Parameter_NaviGpsGain
0x00800694 Parameter_ExternalControl
0x00800695 Parameter_J17Bitmask
0x00800696 Parameter_NaviGpsD
COMMON 0x00800697 0x1 printf_P.o
0x00800697 PrintZiel
COMMON 0x00800698 0x24 twimaster.o
0x00800698 motor_rx2
0x008006a8 MotorError
0x008006aa motor_rx
0x008006ba MotorPresent
COMMON 0x008006bc 0x2d rc.o
0x008006bc Channels
0x008006bd PPM_in
0x008006d3 PPM_diff
COMMON 0x008006e9 0x246 uart.o
0x008006e9 Data3D
0x008006f7 Timer3D
0x008006f9 SendeBuffer
0x0080078f NMEABuffer
0x00800825 Debug_Timer
0x00800827 VersionInfo
0x00800831 MotorTest
0x00800841 WinkelOut
0x00800849 ExternControl
0x00800854 Kompass_Timer
0x00800856 RxdBuffer
0x008008ec DebugOut
0x0080092e ConfirmFrame
0x0080092f PROVIDE (__bss_end, .)
0x0000b962 __data_load_start = LOADADDR (.data)
0x0000bc32 __data_load_end = (__data_load_start + SIZEOF (.data))
 
.noinit 0x0080092f 0x0
0x0080092f PROVIDE (__noinit_start, .)
*(.noinit*)
0x0080092f PROVIDE (__noinit_end, .)
0x0080092f _end = .
0x0080092f PROVIDE (__heap_start, .)
 
.eeprom 0x00810000 0x800
*(.eeprom*)
.eeprom 0x00810000 0x800 fc.o
0x00810000 EEPromArray
0x00810800 __eeprom_end = .
 
.fuse
*(.fuse)
*(.lfuse)
*(.hfuse)
*(.efuse)
 
.lock
*(.lock*)
 
.signature
*(.signature*)
 
.stab 0x00000000 0x20dc
*(.stab)
.stab 0x00000000 0x6b4 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
.stab 0x000006b4 0x66c isqrt.o
0x678 (size before relaxing)
.stab 0x00000d20 0x78 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3.o)
0x84 (size before relaxing)
.stab 0x00000d98 0x4bc C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3x.o)
0x4c8 (size before relaxing)
.stab 0x00001254 0x90 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(cmpsf2.o)
0x9c (size before relaxing)
.stab 0x000012e4 0x6c C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fixsfsi.o)
0x78 (size before relaxing)
.stab 0x00001350 0x240 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fixunssfsi.o)
0x24c (size before relaxing)
.stab 0x00001590 0x318 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(floatsisf.o)
0x324 (size before relaxing)
.stab 0x000018a8 0x1e0 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_cmp.o)
0x1ec (size before relaxing)
.stab 0x00001a88 0x78 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_inf.o)
0x84 (size before relaxing)
.stab 0x00001b00 0x54 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_nan.o)
0x60 (size before relaxing)
.stab 0x00001b54 0x84 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_pscA.o)
0x90 (size before relaxing)
.stab 0x00001bd8 0x84 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_pscB.o)
0x90 (size before relaxing)
.stab 0x00001c5c 0xfc C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_round.o)
0x108 (size before relaxing)
.stab 0x00001d58 0x1d4 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_split3.o)
0x1e0 (size before relaxing)
.stab 0x00001f2c 0x90 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_zero.o)
0x9c (size before relaxing)
.stab 0x00001fbc 0x6c C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(gesf2.o)
0x78 (size before relaxing)
.stab 0x00002028 0xb4 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(memchr.o)
0xc0 (size before relaxing)
 
.stabstr 0x00000000 0x566
*(.stabstr)
.stabstr 0x00000000 0x566 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.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 0x28
*(.debug_aranges)
.debug_aranges
0x00000000 0x14 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eerd_block.o)
.debug_aranges
0x00000014 0x14 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eewr_block.o)
 
.debug_pubnames
0x00000000 0x46
*(.debug_pubnames)
.debug_pubnames
0x00000000 0x23 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eerd_block.o)
.debug_pubnames
0x00000023 0x23 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eewr_block.o)
 
.debug_info 0x00000000 0x1f6
*(.debug_info)
.debug_info 0x00000000 0xfd C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eerd_block.o)
.debug_info 0x000000fd 0xf9 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eewr_block.o)
*(.gnu.linkonce.wi.*)
 
.debug_abbrev 0x00000000 0x12b
*(.debug_abbrev)
.debug_abbrev 0x00000000 0x9a C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eerd_block.o)
.debug_abbrev 0x0000009a 0x91 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eewr_block.o)
 
.debug_line 0x00000000 0x1aa
*(.debug_line)
.debug_line 0x00000000 0xd5 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eerd_block.o)
.debug_line 0x000000d5 0xd5 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eewr_block.o)
 
.debug_frame
*(.debug_frame)
 
.debug_str 0x00000000 0xe7
*(.debug_str)
.debug_str 0x00000000 0xb5 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eerd_block.o)
0xe9 (size before relaxing)
.debug_str 0x000000b5 0x32 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eewr_block.o)
0xe9 (size before relaxing)
 
.debug_loc
*(.debug_loc)
 
.debug_macinfo
*(.debug_macinfo)
OUTPUT(Flight-Ctrl_MEGA644_V0_76g_SVN.elf elf32-avr)
LOAD linker stubs
 
Cross Reference Table
 
Symbol File
ADC_Init analog.o
main.o
ANALOG_TEXT uart.o
AdNeutralGier fc.o
rc.o
menu.o
AdNeutralGierBias fc.o
AdNeutralNick fc.o
rc.o
menu.o
analog.o
AdNeutralRoll fc.o
rc.o
menu.o
analog.o
AdReady analog.o
timer0.o
fc.o
main.o
AdWertAccHoch analog.o
fc.o
AdWertAccNick analog.o
menu.o
fc.o
AdWertAccRoll analog.o
menu.o
fc.o
AdWertGier analog.o
menu.o
fc.o
AdWertGierFilter analog.o
AdWertNick analog.o
menu.o
fc.o
AdWertNickFilter analog.o
fc.o
AdWertRoll analog.o
menu.o
fc.o
AdWertRollFilter analog.o
fc.o
AddCRC uart.o
Aktuell_Gier analog.o
Aktuell_Nick analog.o
Aktuell_Roll analog.o
Aktuell_ax analog.o
Aktuell_ay analog.o
Aktuell_az fc.o
analog.o
AnalogOffsetGier analog.o
twimaster.o
menu.o
AnalogOffsetNick analog.o
twimaster.o
menu.o
AnalogOffsetRoll analog.o
twimaster.o
menu.o
AnzahlEmpfangsBytes uart.o
Array menu.o
BaroExpandActive fc.o
BattLowVoltageWarning main.o
fc.o
BearbeiteRxDaten uart.o
main.o
BeepMuster timer0.o
main.o
CalMk3Mag main.o
CalibrierMittelwert fc.o
Channels rc.o
CheckDelay timer0.o
uart.o
analog.o
main.o
CntCrcError uart.o
ConfirmFrame uart.o
CosinusNickWinkel fc.o
CosinusRollWinkel fc.o
CountMilliseconds timer0.o
Data3D uart.o
DatenUebertragung uart.o
main.o
DebugDataAnforderung uart.o
DebugDataIntervall uart.o
DebugDisplayAnforderung uart.o
DebugDisplayAnforderung1 uart.o
DebugOut uart.o
fc.o
main.o
DebugTextAnforderung uart.o
Debug_Timer uart.o
Decode64 uart.o
DefaultKonstanten1 fc.o
main.o
DefaultKonstanten2 fc.o
main.o
DefaultKonstanten3 fc.o
main.o
DefaultStickMapping fc.o
main.o
Delay_ms timer0.o
fc.o
Delay_ms_Mess timer0.o
fc.o
analog.o
DiffNick fc.o
DiffRoll fc.o
DispPtr menu.o
printf_P.o
DisplayBuff menu.o
uart.o
printf_P.o
DisplayLine uart.o
DruckOffsetSetting menu.o
fc.o
analog.o
EEPromArray fc.o
uart.o
menu.o
analog.o
main.o
EE_Parameter uart.o
timer0.o
menu.o
led.o
fc.o
main.o
ErsatzKompass uart.o
fc.o
ErsatzKompassInGrad fc.o
ExpandBaro analog.o
fc.o
ExternControl uart.o
fc.o
main.o
ExternHoehenValue fc.o
ExternStickGier fc.o
main.o
ExternStickNick fc.o
main.o
ExternStickRoll fc.o
main.o
FlugMinuten main.o
menu.o
FlugMinutenGesamt main.o
menu.o
GIER_GRAD_FAKTOR fc.o
uart.o
main.o
GetActiveParamSetNumber fc.o
uart.o
menu.o
main.o
GetExternalControl uart.o
GetPPMChannelAnforderung uart.o
GetVersionAnforderung uart.o
GierGyroFehler fc.o
GyroDefektG analog.o
GyroDefektN analog.o
GyroDefektR analog.o
GyroFaktor fc.o
GyroFaktorGier fc.o
HiResNick analog.o
fc.o
HiResRoll analog.o
fc.o
HoehenReglerAktiv fc.o
HoehenWert fc.o
menu.o
analog.o
I2CError twimaster.o
I2CTimeout fc.o
twimaster.o
menu.o
main.o
I2C_ReceiveByte twimaster.o
I2C_ReceiveLastByte twimaster.o
I2C_WriteByte twimaster.o
IntegralAccNick fc.o
IntegralAccRoll fc.o
IntegralAccZ fc.o
IntegralFaktor fc.o
IntegralFaktorGier fc.o
IntegralNick fc.o
uart.o
timer0.o
IntegralNick2 fc.o
IntegralRoll fc.o
uart.o
IntegralRoll2 fc.o
Integral_Gier fc.o
Intervall3D uart.o
J16Blinkcount led.o
J16Mask led.o
J17Blinkcount led.o
J17Mask led.o
Ki fc.o
KompassRichtung fc.o
uart.o
timer0.o
menu.o
KompassSignalSchlecht fc.o
KompassStartwert fc.o
uart.o
timer0.o
menu.o
KompassValue fc.o
uart.o
timer0.o
menu.o
Kompass_Timer uart.o
KopplungsteilNickRoll fc.o
KopplungsteilRollNick fc.o
LED1_Timing led.o
LED2_Timing led.o
LED_Init led.o
fc.o
LED_Update led.o
main.o
LageKorrekturNick fc.o
LageKorrekturRoll fc.o
LcdClear menu.o
main.o
LipoDetection main.o
uart.o
LoadHandler fc.o
Looping_Links fc.o
Looping_Nick fc.o
Looping_Oben fc.o
Looping_Rechts fc.o
Looping_Roll fc.o
Looping_Unten fc.o
Luftdruck analog.o
fc.o
MAX_GAS fc.o
MIN_GAS fc.o
MaxMenue menu.o
uart.o
MaxStickNick fc.o
MaxStickRoll fc.o
MeineSlaveAdresse uart.o
Menu menu.o
uart.o
MenuePunkt menu.o
uart.o
MessLuftdruck analog.o
menu.o
fc.o
Mess_IntegralNick fc.o
Mess_IntegralNick2 fc.o
Mess_IntegralRoll fc.o
Mess_IntegralRoll2 fc.o
Mess_Integral_Gier fc.o
Mess_Integral_Gier2 fc.o
Mess_Integral_Hoch fc.o
analog.o
MesswertGier fc.o
MesswertGierBias fc.o
MesswertNick fc.o
MesswertRoll fc.o
MikroKopterFlags fc.o
led.o
main.o
MissingMotor twimaster.o
menu.o
fc.o
main.o
MittelIntegralNick fc.o
MittelIntegralNick2 fc.o
MittelIntegralRoll fc.o
MittelIntegralRoll2 fc.o
Mittelwert fc.o
Mittelwert_AccHoch menu.o
fc.o
Mittelwert_AccNick fc.o
Mittelwert_AccRoll fc.o
Mixer uart.o
timer0.o
rc.o
twimaster.o
printf_P.o
menu.o
led.o
fc.o
analog.o
main.o
Motor twimaster.o
fc.o
MotorError twimaster.o
menu.o
main.o
MotorPresent twimaster.o
menu.o
main.o
MotorRegler fc.o
main.o
MotorSmoothing fc.o
MotorTest uart.o
fc.o
MotorenEin fc.o
led.o
main.o
NMEABuffer uart.o
NaviAccNick fc.o
NaviAccRoll fc.o
NaviCntAcc fc.o
NeueKoordinateEmpfangen uart.o
NeuerDatensatzEmpfangen uart.o
NeutralAccX fc.o
menu.o
analog.o
NeutralAccY fc.o
menu.o
analog.o
NeutralAccZ fc.o
menu.o
analog.o
NewPpmData rc.o
fc.o
PAD_0 printf_P.o
PAD_SP printf_P.o
PC_DebugTimeout uart.o
PC_MotortestActive uart.o
fc.o
PPM_diff rc.o
fc.o
PPM_in uart.o
rc.o
menu.o
fc.o
main.o
PRINT printf_P.o
PRINTP printf_P.o
ParameterZuordnung fc.o
Parameter_AchsKopplung1 fc.o
Parameter_AchsKopplung2 fc.o
Parameter_CouplingYawCorrection fc.o
Parameter_DynamicStability fc.o
Parameter_ExternalControl fc.o
Parameter_Gier_P fc.o
Parameter_Gyro_D fc.o
Parameter_Gyro_Gier_I fc.o
Parameter_Gyro_Gier_P fc.o
Parameter_Gyro_I fc.o
Parameter_Gyro_P fc.o
Parameter_Hoehe_ACC_Wirkung fc.o
Parameter_Hoehe_GPS_Z fc.o
Parameter_Hoehe_P fc.o
Parameter_I_Faktor fc.o
Parameter_J16Bitmask fc.o
Parameter_J16Timing led.o
fc.o
Parameter_J17Bitmask fc.o
Parameter_J17Timing led.o
fc.o
Parameter_KompassWirkung fc.o
Parameter_LoopGasLimit fc.o
Parameter_Luftdruck_D fc.o
Parameter_MaxHoehe fc.o
Parameter_NaviGpsACC fc.o
Parameter_NaviGpsD fc.o
Parameter_NaviGpsGain fc.o
Parameter_NaviGpsI fc.o
Parameter_NaviGpsModeControl fc.o
Parameter_NaviGpsP fc.o
Parameter_NaviOperatingRadius fc.o
Parameter_NaviSpeedCompensation fc.o
Parameter_NaviWindCorrection fc.o
Parameter_ServoNickControl fc.o
timer0.o
menu.o
Parameter_ServoRollControl fc.o
Parameter_UserParam1 fc.o
uart.o
Parameter_UserParam2 fc.o
uart.o
Parameter_UserParam3 fc.o
Parameter_UserParam4 fc.o
Parameter_UserParam5 fc.o
Parameter_UserParam6 fc.o
Parameter_UserParam7 fc.o
Parameter_UserParam8 fc.o
PcZugriff uart.o
main.o
Piep fc.o
uart.o
main.o
PlatinenVersion main.o
menu.o
fc.o
Poti1 fc.o
menu.o
Poti2 fc.o
menu.o
Poti3 fc.o
menu.o
Poti4 fc.o
menu.o
PrintZiel printf_P.o
Putchar printf_P.o
ReadParameterSet fc.o
uart.o
main.o
RemoteKeys menu.o
uart.o
RequiredMotors fc.o
main.o
RohMesswertNick fc.o
RohMesswertRoll fc.o
RxDataLen uart.o
RxdBuffer uart.o
SendMotorData fc.o
main.o
SendOutData uart.o
SendSPI timer0.o
main.o
SendVersionToNavi main.o
fc.o
SendeBuffer uart.o
SenderOkay fc.o
rc.o
menu.o
led.o
main.o
SenderRSSI fc.o
ServoActive timer0.o
uart.o
fc.o
main.o
ServoNickValue timer0.o
ServoRollValue timer0.o
SetActiveParamSetNumber fc.o
uart.o
main.o
SetDelay timer0.o
uart.o
analog.o
main.o
SetNeutral fc.o
main.o
SioTmp uart.o
SollHoehe fc.o
menu.o
StartLuftdruck fc.o
analog.o
StartNeutralNick fc.o
StartNeutralRoll fc.o
StickGas fc.o
StickGier fc.o
main.o
StickNick fc.o
main.o
StickRoll fc.o
main.o
SucheGyroOffset analog.o
fc.o
SucheLuftruckOffset analog.o
fc.o
main.o
SummenHoehe analog.o
fc.o
TIMER2_Init timer0.o
main.o
TestInt menu.o
Timer3D uart.o
Timer_Init timer0.o
main.o
TrichterFlug fc.o
TrimNick fc.o
TrimRoll fc.o
UART_Init uart.o
main.o
UBat analog.o
menu.o
fc.o
main.o
UebertragungAbgeschlossen uart.o
Umschlag180Nick fc.o
uart.o
Umschlag180Roll fc.o
uart.o
UpdateMotor timer0.o
main.o
VarioMeter analog.o
fc.o
VersionInfo uart.o
WinkelOut uart.o
fc.o
main.o
WriteParameterSet fc.o
uart.o
main.o
ZaehlMessungen analog.o
fc.o
__addsf3 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3.o)
fc.o
analog.o
__addsf3x C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3x.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3.o)
__bad_interrupt C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__bss_end C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_clear_bss.o)
__bss_start C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_clear_bss.o)
__cmpsf2 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(cmpsf2.o)
__data_end C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_copy_data.o)
__data_load_start C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_copy_data.o)
__data_start C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_copy_data.o)
__divmodhi4 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_divmodhi4.o)
uart.o
timer0.o
mymath.o
rc.o
fc.o
__divmodsi4 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_divmodsi4.o)
uart.o
mymath.o
fc.o
__do_clear_bss C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_clear_bss.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eewr_block.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eerd_block.o)
uart.o
timer0.o
mymath.o
rc.o
twimaster.o
printf_P.o
menu.o
led.o
fc.o
analog.o
main.o
__do_copy_data C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_copy_data.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eewr_block.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eerd_block.o)
uart.o
timer0.o
mymath.o
rc.o
twimaster.o
printf_P.o
menu.o
led.o
fc.o
analog.o
main.o
__eerd_block C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eerd_block.o)
fc.o
main.o
__eewr_block C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eewr_block.o)
uart.o
fc.o
main.o
__epilogue_restores__ C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_epilogue.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eewr_block.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eerd_block.o)
uart.o
mymath.o
printf_P.o
fc.o
analog.o
__eqsf2 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(cmpsf2.o)
__fixsfsi C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fixsfsi.o)
menu.o
fc.o
analog.o
__fixunssfsi C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fixunssfsi.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fixsfsi.o)
fc.o
__floatsisf C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(floatsisf.o)
fc.o
__floatunsisf C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(floatsisf.o)
__fp_cmp C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_cmp.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(gesf2.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(cmpsf2.o)
__fp_inf C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_inf.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3x.o)
__fp_nan C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_nan.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3x.o)
__fp_pscA C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_pscA.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3x.o)
__fp_pscB C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_pscB.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3x.o)
__fp_round C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_round.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3.o)
__fp_split3 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_split3.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3x.o)
__fp_splitA C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_split3.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fixunssfsi.o)
__fp_szero C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_zero.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fixsfsi.o)
__fp_zero C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_zero.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fixunssfsi.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3x.o)
__gesf2 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(gesf2.o)
__gtsf2 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(gesf2.o)
analog.o
__heap_end C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__init C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__lesf2 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(cmpsf2.o)
__ltsf2 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(cmpsf2.o)
analog.o
__mulsi3 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_mulsi3.o)
uart.o
timer0.o
fc.o
analog.o
__nesf2 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(cmpsf2.o)
__prologue_saves__ C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_prologue.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eewr_block.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(eerd_block.o)
uart.o
printf_P.o
fc.o
__stack C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
main.o
__subsf3 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3.o)
fc.o
analog.o
__tablejump2__ C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_tablejump.o)
uart.o
twimaster.o
menu.o
analog.o
__tablejump__ C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_tablejump.o)
__udivmodhi4 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_udivmodhi4.o)
C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_divmodhi4.o)
timer0.o
fc.o
analog.o
__udivmodqi4 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_udivmodqi4.o)
menu.o
main.o
__udivmodsi4 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_udivmodsi4.o)
C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_divmodsi4.o)
printf_P.o
__vector_1 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__vector_10 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__vector_11 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__vector_12 rc.o
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__vector_13 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__vector_14 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__vector_15 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__vector_16 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__vector_17 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__vector_18 timer0.o
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__vector_19 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__vector_2 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__vector_20 uart.o
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__vector_21 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__vector_22 uart.o
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__vector_23 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__vector_24 analog.o
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__vector_25 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__vector_26 twimaster.o
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__vector_27 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__vector_3 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__vector_4 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__vector_5 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__vector_6 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__vector_7 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__vector_8 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__vector_9 timer0.o
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__vector_default C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
__vectors C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
_div C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_divmodhi4.o)
_exit C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_exit.o)
_printf_P printf_P.o
menu.o
analog.o
main.o
angle fc.o
beeptime timer0.o
fc.o
main.o
c_atan2 mymath.o
c_cos_8192 mymath.o
fc.o
c_sin_8192 mymath.o
c_sqrt mymath.o
cntKompass timer0.o
controllerD fc.o
controllerDD fc.o
controllerP fc.o
desiredAngle fc.o
exit C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_exit.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
filterDD fc.o
filtersum fc.o
gyroScaled fc.o
gyroScaledOld fc.o
h fc.o
i2c_init twimaster.o
main.o
i2c_reset twimaster.o
main.o
i2c_start twimaster.o
fc.o
analog.o
i2c_stop twimaster.o
i2c_write_byte twimaster.o
ihypot isqrt.o
fc.o
ipk fc.o
isqrt16 isqrt.o
isqrt32 isqrt.o
kd fc.o
kdd fc.o
kp fc.o
m fc.o
main main.o
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644.o
maxcontrollerD fc.o
maxcontrollerDD fc.o
maxcontrollerP fc.o
memchr C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(memchr.o)
printf_P.o
messanzahl_AccHoch analog.o
mincontrollerD fc.o
mincontrollerDD fc.o
mincontrollerP fc.o
modell_fliegt fc.o
analog.o
motor twimaster.o
fc.o
motorOutFront fc.o
motorOutRear fc.o
motor_rx twimaster.o
motor_rx2 twimaster.o
motorread twimaster.o
main.o
pRxData uart.o
pgm_atanlookup mymath.o
pgm_sinlookup mymath.o
rc_sum_init rc.o
main.o
s fc.o
thrust fc.o
tmpChannels rc.o
tmp_motorwert fc.o
twi_state twimaster.o
fc.o
analog.o
uart_putchar uart.o
printf_P.o
ucflg1 fc.o
ucflg2 fc.o
ucflg3 fc.o
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/Settings.h
--- V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/_Settings.h (nonexistent)
+++ V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/_Settings.h (revision 2248)
@@ -0,0 +1,18 @@
+// --------------------------------------
+// for fine tuning of amplfier
+// --------------------------------------
+#define ACC_AMPLIFY 6
+
+// --------------------------------------
+// Radio Control Setup
+// --------------------------------------
+ #define K_NICK 0
+ #define K_ROLL 1
+ #define K_GAS 2
+ #define K_GIER 3
+ #define K_POTI1 4
+ #define K_POTI2 5
+ #define K_POTI3 6
+ #define K_POTI4 7
+
+// *** EOF ******************************
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/analog.c
0,0 → 1,316
/*****************************************************************************************************************************
* File: analog.c
*
* Purpose: collecting ADC analog inputs from PORTA
*
* Functions: void ADC_Init(void)
* void SucheLuftruckOffset(void)
* void SucheGyroOffset(void)
* ISR(ADC_vect)
*
*****************************************************************************************************************************/
#include "analog.h"
#include "main.h"
 
volatile int Aktuell_Nick, Aktuell_Roll, Aktuell_Gier, Aktuell_ax, Aktuell_ay, Aktuell_az, UBat = 100;
volatile int AdWertNickFilter = 0, AdWertRollFilter = 0, AdWertGierFilter = 0;
volatile int HiResNick = 2500, HiResRoll = 2500;
volatile int AdWertNick = 0, AdWertRoll = 0, AdWertGier = 0;
volatile int AdWertAccRoll = 0, AdWertAccNick = 0, AdWertAccHoch = 0;
volatile char messanzahl_AccHoch = 0;
volatile long Luftdruck = 32000;
volatile long SummenHoehe = 0;
volatile int StartLuftdruck;
volatile unsigned int MessLuftdruck = 1023;
unsigned char DruckOffsetSetting;
signed char ExpandBaro = 0;
volatile int VarioMeter = 0;
volatile unsigned int ZaehlMessungen = 0;
unsigned char AnalogOffsetNick = 115, AnalogOffsetRoll = 115, AnalogOffsetGier = 115;
unsigned char GyroDefektN = 0, GyroDefektR = 0, GyroDefektG = 0;
volatile unsigned char AdReady = 1;
 
 
// *************************************************************************************************************************************
// initialize the analog digital converter ADC
// -------------------------------------------------------------------------------------------------------------------------------------
void ADC_Init(void)
{
// ADMUX = ADC Multiplexer Selection Register –> REFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0
// -----------------------------------------------------------------------------------------
// REFS1:0 = Reference Selection Bits
// ADLAR = ADC Left Adjust Result
// MUX4:0 = Analog Channel and Gain Selection Bits
//
ADMUX = 0; // AREF, Internal Vref is turned off
// // the result is right adjusted
// // MUX = 00000 = ADC0
// ADCSRA = Analog Digital Conversion Status Register A -> ADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0
// ---------------------------------------------------------------------------------------------------
// ADEN = Writing this bit to one enables the ADC
// ADSC = start conversion
// ADATE = When this bit is written to one, Auto Triggering of the ADC is enabled
// ADIE = ADC Interrupt Enable. When this bit is written to one and the I-bit in SREG is set, the ADC Conversion Complete Interrupt is activated.
// ADPS = These bits determine the division factor between the XTAL frequency and the input clock to the ADC.
// Prescaler with ADPS2 ADPS1 ADPS0 = 111 = Division Factor 128 = 156.25 kHz
//
ANALOG_ON; // #define ANALOG_ON ADCSRA=(1<<ADEN)|(1<<ADSC)|(0<<ADATE)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)
}
// *** EOF: void ADC_Init(void) ************************************************************************************
 
 
#define DESIRED_H_ADC 800
 
 
 
// *********************************************************************************************************************************
// initialize the air pressure offset
// ------------------------------------
void SucheLuftruckOffset(void)
{
unsigned int off;
off = eeprom_read_byte(&EEPromArray[EEPROM_ADR_LAST_OFFSET]);
if(off > 20) off -= 10;
OCR0A = off; // Timer/Counter0 Output Compare Register A
ExpandBaro = 0;
Delay_ms_Mess(100); // -> timer0.c
if(MessLuftdruck < DESIRED_H_ADC) off = 0; // #define DESIRED_H_ADC 800
for(; off < 250;off++)
{
OCR0A = off;
Delay_ms_Mess(50);
printf(".");
if(MessLuftdruck < DESIRED_H_ADC) break;
}
eeprom_write_byte(&EEPromArray[EEPROM_ADR_LAST_OFFSET], off);
DruckOffsetSetting = off;
Delay_ms_Mess(300);
}
// *** EOF: SucheLuftruckOffset(void) **********************************************************************************************
 
 
 
// *********************************************************************************************************************************
// initialize the Gyro-Offset
// ---------------------------
void SucheGyroOffset(void)
{
unsigned char i, ready = 0;
int timeout;
GyroDefektN = 0; GyroDefektR = 0; GyroDefektG = 0;
timeout = SetDelay(2000);
for(i=140; i != 0; i--)
{
if(ready==3 && i>10) i = 9;
ready = 0;
if(AdWertNick < 1020) AnalogOffsetNick--; else if(AdWertNick > 1030) AnalogOffsetNick++; else ready++;
if(AdWertRoll < 1020) AnalogOffsetRoll--; else if(AdWertRoll > 1030) AnalogOffsetRoll++; else ready++;
if(AdWertGier < 1020) AnalogOffsetGier--; else if(AdWertGier > 1030) AnalogOffsetGier++; else ready++;
twi_state = 8;
i2c_start();
if(AnalogOffsetNick < 10) { GyroDefektN = 1; AnalogOffsetNick = 10;}; if(AnalogOffsetNick > 245) { GyroDefektN = 1; AnalogOffsetNick = 245;};
if(AnalogOffsetRoll < 10) { GyroDefektR = 1; AnalogOffsetRoll = 10;}; if(AnalogOffsetRoll > 245) { GyroDefektR = 1; AnalogOffsetRoll = 245;};
if(AnalogOffsetGier < 10) { GyroDefektG = 1; AnalogOffsetGier = 10;}; if(AnalogOffsetGier > 245) { GyroDefektG = 1; AnalogOffsetGier = 245;};
while(twi_state) if(CheckDelay(timeout)) {printf("\n\r DAC or I2C ERROR! Check I2C, 3Vref, DAC and BL-Ctrl"); break;}
AdReady = 0;
ANALOG_ON; // #define ANALOG_ON ADCSRA=(1<<ADEN)|(1<<ADSC)|(0<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE)
while(!AdReady);
if(i<10) Delay_ms_Mess(10);
}
Delay_ms_Mess(70);
}
// *** EOF: SucheGyroOffset(void) **************************************************************************************************
 
 
 
// *********************************************************************************************************************************
// read analog input with the following sequence:
// ---------------------------------------------------------------------------------------------------
// case:
// 0 nick-gyro
// 1 roll-gyro
// 2 gier-gyro
// 3 y acc roll
// 4 x acc nick
// 5 nick-gyro
// 6 roll-gyro
// 7 voltage V
// 8 z acc
// 9 air pressure
// 10 nick-gyro
// 11 roll-gyro
// 12 gier-gyro
// 13 y acc roll
// 14 x acc nick
// 15 nick-gyro
// 16 roll-gyro
// 17 air pressure
// ---------------------------------------------------------------------------------------------------
ISR(ADC_vect)
{
static unsigned char kanal=0,state = 0;
static signed int gier1, roll1, nick1, nick_filter, roll_filter;
static signed int accy, accx;
static long tmpLuftdruck = 0;
static char messanzahl_Druck = 0;
 
switch(state++)
{
case 0: // nick gyro
nick1 = ADC; // Messwert Nick aus dem Gyroskop (kippen nach vorne-hinten)
kanal = AD_ROLL; // #define AD_ROLL 1
break;
case 1: // roll gyro
roll1 = 512; // Messwert Roll aus dem Gyroskop (kippen nach rechts-links)
kanal = AD_GIER; // #define AD_GIER 0
break;
case 2: // gier gyro
gier1 = 512; // Messwert Gier aus dem Gyroskop (drehen um Hochachse)
kanal = AD_ACC_Y; // #define AD_ACC_Y 6 // Rollen
break;
case 3: // y acc roll
Aktuell_ay = NeutralAccY - 512;
accy = Aktuell_ay; // Messwert Y=Roll des ACC Sensors
kanal = AD_ACC_X; // #define AD_ACC_X 7 // Nicken
break;
case 4:
Aktuell_ax = ADC - NeutralAccX; // Messwert X=Nick des ACC Sensors
accx = Aktuell_ax;
kanal = AD_NICK; // #define AD_NICK 2
break;
case 5:
nick1 += ADC; // Messwert Nick aus dem Gyroskop (kippen nach vorne-hinten)
kanal = AD_ROLL; // #define AD_ROLL 1
break;
case 6:
roll1 += 512; // Messwert Roll aus dem Gyroskop (kippen nach rechts-links)
kanal = AD_UBAT; // #define AD_UBAT 4
break;
case 7:
UBat = (3 * UBat + ADC / 3) / 4; // Voltage
kanal = AD_ACC_Z; // #define AD_ACC_Z 5
break;
case 8: // Z acc Sensor
AdWertAccHoch = 512 - NeutralAccZ;
if(AdWertAccHoch > 1)
{
if(NeutralAccZ < 750)
{
NeutralAccZ += 0.02;
if(modell_fliegt < 500) NeutralAccZ += 0.1;
}
}
else if(AdWertAccHoch < -1)
{
if(NeutralAccZ > 550)
{
NeutralAccZ-= 0.02;
if(modell_fliegt < 500) NeutralAccZ -= 0.1;
}
}
messanzahl_AccHoch = 1; // Messwert Z des ACC Sensors
Aktuell_az = 512;
Mess_Integral_Hoch += AdWertAccHoch; // Integrieren
Mess_Integral_Hoch -= Mess_Integral_Hoch / 1024; // dämfen
kanal = AD_DRUCK;
break;
// "case 9:" fehlt hier absichtlich
case 10:
nick1 += ADC;
kanal = AD_ROLL; // #define AD_ROLL 1
break;
case 11:
roll1 += 512;
kanal = AD_GIER; // #define AD_GIER 0
break;
case 12:
AdWertGier = (512 + gier1); // AdWertGier müsste so um die 1020 liegen
kanal = AD_ACC_Y; // #define AD_ACC_Y 6
break;
case 13:
Aktuell_ay = NeutralAccY - 512;
AdWertAccRoll = (Aktuell_ay + accy); // Messwert Roll des ACC Sensors
kanal = AD_ACC_X; // #define AD_ACC_X 7
break;
case 14:
Aktuell_ax = ADC - NeutralAccX;
AdWertAccNick = (Aktuell_ax + accx); // 2nd measure of ACC Nick Sensor 0...512
kanal = AD_NICK; // #define AD_NICK 2
break;
case 15:
nick1 += ADC;
nick1 *= 4;
AdWertNick = nick1 / 8; // dieser Wert ist doppelt so hoch wie ADC
nick_filter = (nick_filter + nick1) / 2; // nick_filter müsste mit ca 500 passen
HiResNick = nick_filter - AdNeutralNick; // der Wert wird hier auf den Nullpunkt normiert
AdWertNickFilter = (AdWertNickFilter + HiResNick) / 2; // und gefiltert
kanal = AD_ROLL; // #define AD_ROLL 1
break;
case 16:
roll1 += 512;
roll1 *= 4;
AdWertRoll = roll1 / 8; // dieser Wert ist doppelt so hoch wie ADC
roll_filter = (roll_filter + roll1) / 2; // ähnlich wie bei Nick in case 15
HiResRoll = roll_filter - AdNeutralRoll; // der Wert wird hier auf den Nullpunkt normiert
AdWertRollFilter = (AdWertRollFilter + HiResRoll) / 2; // und gefiltert
kanal = AD_DRUCK; // #define AD_DRUCK 3
break;
case 17:
state = 0;
AdReady = 1; // alle Analogeingänge sind nun bedient worden
ZaehlMessungen++; // counts one up as all cases have been passed through
// "break" fehlt hier absichtlich
case 9:
MessLuftdruck = 512;
tmpLuftdruck += MessLuftdruck;
if(++messanzahl_Druck >= 18)
{
Luftdruck = (7 * Luftdruck + tmpLuftdruck - (18 * 523) * (long)ExpandBaro + 4) / 8; // -523.19 counts per 10 counts offset step
HoehenWert = StartLuftdruck - Luftdruck;
SummenHoehe -= SummenHoehe / SM_FILTER; // #define SM_FILTER 16
SummenHoehe += HoehenWert;
VarioMeter = (15 * VarioMeter + 8 * (int)(HoehenWert - SummenHoehe/SM_FILTER))/16;
tmpLuftdruck /= 2;
messanzahl_Druck = 18/2;
}
kanal = AD_NICK; // #define AD_NICK 2
break;
default:
kanal = 0; state = 0; kanal = AD_NICK; // #define AD_NICK 2
break;
}
ADMUX = kanal;
if(state != 0) ANALOG_ON; // #define ANALOG_ON ADCSRA=(1<<ADEN)|(1<<ADSC)|(0<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE)
}
// EOF : ISR(ADC_vect) ****************************************************************************************************************
 
 
 
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/analog.d
0,0 → 1,2
analog.o analog.d : analog.c analog.h main.h old_macros.h _Settings.h printf_P.h \
timer0.h uart.h eeprom.h twimaster.h menu.h rc.h fc.h led.h
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/analog.h
0,0 → 1,54
/*****************************************************************************************************************************
* File: analog.h
* Purpose: header of analog.c
*****************************************************************************************************************************/
#ifndef _ANALOG_H
#define _ANALOG_H
 
#define SM_FILTER 16
 
extern volatile int UBat; // Voltage
extern volatile int AdWertNick, AdWertRoll, AdWertGier;
extern volatile int AdWertAccRoll,AdWertAccNick,AdWertAccHoch;
extern volatile int HiResNick, HiResRoll;
extern volatile int AdWertNickFilter, AdWertRollFilter, AdWertGierFilter;
extern volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az;
 
extern volatile char MessanzahlNick;
extern unsigned char AnalogOffsetNick, AnalogOffsetRoll, AnalogOffsetGier; // to be passed to DAC
extern volatile unsigned char AdReady; // ready with ADC in analog.c
 
extern volatile int StartLuftdruck;
extern volatile long Luftdruck;
extern volatile long SummenHoehe;
extern volatile char messanzahl_Druck;
extern volatile unsigned int ZaehlMessungen;
extern unsigned char DruckOffsetSetting;
extern signed char ExpandBaro;
extern volatile int VarioMeter;
extern volatile unsigned int MessLuftdruck;
 
// ----------------------------------------------- functions ------------------------------------
unsigned int ReadADC(unsigned char adc_input);
void ADC_Init(void);
 
void SucheLuftruckOffset(void);
void SucheGyroOffset(void);
 
//------------------------------------ definitions ----------------------------------------------
#define AD_GIER 0
#define AD_ROLL 1
#define AD_NICK 2
#define AD_DRUCK 3
#define AD_UBAT 4
#define AD_ACC_Z 5
#define AD_ACC_Y 6
#define AD_ACC_X 7
 
#define ANALOG_OFF ADCSRA=0
 
// switch on ADCs at Single trigger Mode, Interrupt on
#define ANALOG_ON ADCSRA=(1<<ADEN)|(1<<ADSC)|(0<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE)
#endif
// *** EOF: _ANALOG_H ******************************************************************************************************
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/analog.lst
0,0 → 1,1393
1 .file "analog.c"
2 .arch atmega644
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 .global AdReady
11 .data
14 AdReady:
15 0000 01 .byte 1
16 .global GyroDefektG
17 .global GyroDefektG
18 .section .bss
21 GyroDefektG:
22 0000 00 .skip 1,0
23 .global GyroDefektR
24 .global GyroDefektR
27 GyroDefektR:
28 0001 00 .skip 1,0
29 .global GyroDefektN
30 .global GyroDefektN
33 GyroDefektN:
34 0002 00 .skip 1,0
35 .global AnalogOffsetGier
36 .data
39 AnalogOffsetGier:
40 0001 73 .byte 115
41 .global AnalogOffsetRoll
44 AnalogOffsetRoll:
45 0002 73 .byte 115
46 .global AnalogOffsetNick
49 AnalogOffsetNick:
50 0003 73 .byte 115
51 .global ZaehlMessungen
52 .global ZaehlMessungen
53 .section .bss
56 ZaehlMessungen:
57 0003 0000 .skip 2,0
58 .global VarioMeter
59 .global VarioMeter
62 VarioMeter:
63 0005 0000 .skip 2,0
64 .global ExpandBaro
65 .global ExpandBaro
68 ExpandBaro:
69 0007 00 .skip 1,0
70 .global MessLuftdruck
71 .data
74 MessLuftdruck:
75 0004 FF03 .word 1023
76 .global SummenHoehe
77 .global SummenHoehe
78 .section .bss
81 SummenHoehe:
82 0008 0000 0000 .skip 4,0
83 .global Luftdruck
84 .data
87 Luftdruck:
88 0006 007D 0000 .long 32000
89 .global messanzahl_AccHoch
90 .global messanzahl_AccHoch
91 .section .bss
94 messanzahl_AccHoch:
95 000c 00 .skip 1,0
96 .global AdWertAccHoch
97 .global AdWertAccHoch
100 AdWertAccHoch:
101 000d 0000 .skip 2,0
102 .global AdWertAccNick
103 .global AdWertAccNick
106 AdWertAccNick:
107 000f 0000 .skip 2,0
108 .global AdWertAccRoll
109 .global AdWertAccRoll
112 AdWertAccRoll:
113 0011 0000 .skip 2,0
114 .global AdWertGier
115 .global AdWertGier
118 AdWertGier:
119 0013 0000 .skip 2,0
120 .global AdWertRoll
121 .global AdWertRoll
124 AdWertRoll:
125 0015 0000 .skip 2,0
126 .global AdWertNick
127 .global AdWertNick
130 AdWertNick:
131 0017 0000 .skip 2,0
132 .global HiResRoll
133 .data
136 HiResRoll:
137 000a C409 .word 2500
138 .global HiResNick
141 HiResNick:
142 000c C409 .word 2500
143 .global AdWertGierFilter
144 .global AdWertGierFilter
145 .section .bss
148 AdWertGierFilter:
149 0019 0000 .skip 2,0
150 .global AdWertRollFilter
151 .global AdWertRollFilter
154 AdWertRollFilter:
155 001b 0000 .skip 2,0
156 .global AdWertNickFilter
157 .global AdWertNickFilter
160 AdWertNickFilter:
161 001d 0000 .skip 2,0
162 .global UBat
163 .data
166 UBat:
167 000e 6400 .word 100
168 .text
169 .global ADC_Init
171 ADC_Init:
172 /* prologue: frame size=0 */
173 /* prologue end (size=0) */
174 0000 1092 7C00 sts 124,__zero_reg__
175 0004 8FEC ldi r24,lo8(-49)
176 0006 8093 7A00 sts 122,r24
177 /* epilogue: frame size=0 */
178 000a 0895 ret
179 /* epilogue end (size=1) */
180 /* function ADC_Init size 6 (5) */
182 .section .progmem.data,"a",@progbits
185 __c.12:
186 0000 2E00 .string "."
187 .text
188 .global SucheLuftruckOffset
190 SucheLuftruckOffset:
191 /* prologue: frame size=0 */
192 000c 0F93 push r16
193 000e 1F93 push r17
194 0010 CF93 push r28
195 0012 DF93 push r29
196 /* prologue end (size=4) */
197 .L3:
198 0014 8FB3 in r24,63-0x20
199 0016 9927 clr r25
200 0018 8C01 movw r16,r24
201 001a 0270 andi r16,lo8(2)
202 001c 1070 andi r17,hi8(2)
203 001e 81FD sbrc r24,1
204 0020 00C0 rjmp .L3
205 0022 80E0 ldi r24,lo8(EEPromArray+3)
206 0024 90E0 ldi r25,hi8(EEPromArray+3)
207 0026 92BD out (65)+1-0x20,r25
208 0028 81BD out 65-0x20,r24
209 /* #APP */
210 /* START EEPROM READ CRITICAL SECTION */
211 002a F89A sbi 31, 0
212 002c 80B5 in r24, 32
213 /* END EEPROM READ CRITICAL SECTION */
214
215 /* #NOAPP */
216 002e C82F mov r28,r24
217 0030 DD27 clr r29
218 0032 C531 cpi r28,21
219 0034 D105 cpc r29,__zero_reg__
220 0036 00F0 brlo .L7
221 0038 2A97 sbiw r28,10
222 .L7:
223 003a C7BD out 71-0x20,r28
224 003c 1092 0000 sts ExpandBaro,__zero_reg__
225 0040 84E6 ldi r24,lo8(100)
226 0042 90E0 ldi r25,hi8(100)
227 0044 0E94 0000 call Delay_ms_Mess
228 0048 8091 0000 lds r24,MessLuftdruck
229 004c 9091 0000 lds r25,(MessLuftdruck)+1
230 0050 8052 subi r24,lo8(800)
231 0052 9340 sbci r25,hi8(800)
232 0054 00F4 brsh .L8
233 0056 E801 movw r28,r16
234 .L8:
235 0058 CA3F cpi r28,250
236 005a D105 cpc r29,__zero_reg__
237 005c 00F4 brsh .L10
238 005e 00E0 ldi r16,lo8(__c.12)
239 0060 10E0 ldi r17,hi8(__c.12)
240 .L13:
241 0062 C7BD out 71-0x20,r28
242 0064 82E3 ldi r24,lo8(50)
243 0066 90E0 ldi r25,hi8(50)
244 0068 0E94 0000 call Delay_ms_Mess
245 006c 1F93 push r17
246 006e 0F93 push r16
247 0070 1F92 push __zero_reg__
248 0072 0E94 0000 call _printf_P
249 0076 8091 0000 lds r24,MessLuftdruck
250 007a 9091 0000 lds r25,(MessLuftdruck)+1
251 007e 0F90 pop __tmp_reg__
252 0080 0F90 pop __tmp_reg__
253 0082 0F90 pop __tmp_reg__
254 0084 8052 subi r24,lo8(800)
255 0086 9340 sbci r25,hi8(800)
256 0088 00F0 brlo .L10
257 008a 2196 adiw r28,1
258 008c CA3F cpi r28,250
259 008e D105 cpc r29,__zero_reg__
260 0090 00F0 brlo .L13
261 .L10:
262 0092 2C2F mov r18,r28
263 .L14:
264 0094 F999 sbic 63-0x20,1
265 0096 00C0 rjmp .L14
266 0098 1FBA out 63-0x20,__zero_reg__
267 009a 80E0 ldi r24,lo8(EEPromArray+3)
268 009c 90E0 ldi r25,hi8(EEPromArray+3)
269 009e 92BD out (65)+1-0x20,r25
270 00a0 81BD out 65-0x20,r24
271 00a2 20BD out 64-0x20,r18
272 /* #APP */
273 /* START EEPROM WRITE CRITICAL SECTION */
274 00a4 0FB6 in r0, 63
275 00a6 F894 cli
276 00a8 FA9A sbi 31, 2
277 00aa F99A sbi 31, 1
278 00ac 0FBE out 63, r0
279 /* END EEPROM WRITE CRITICAL SECTION */
280 /* #NOAPP */
281 00ae C093 0000 sts DruckOffsetSetting,r28
282 00b2 8CE2 ldi r24,lo8(300)
283 00b4 91E0 ldi r25,hi8(300)
284 00b6 0E94 0000 call Delay_ms_Mess
285 /* epilogue: frame size=0 */
286 00ba DF91 pop r29
287 00bc CF91 pop r28
288 00be 1F91 pop r17
289 00c0 0F91 pop r16
290 00c2 0895 ret
291 /* epilogue end (size=5) */
292 /* function SucheLuftruckOffset size 111 (102) */
294 .section .progmem.data
297 __c.11:
298 0002 0A0D 2044 .string "\n\r DAC or I2C ERROR! Check I2C, 3Vref, DAC and BL-Ctrl"
298 4143 206F
298 7220 4932
298 4320 4552
298 524F 5221
299 .text
300 .global SucheGyroOffset
302 SucheGyroOffset:
303 /* prologue: frame size=0 */
304 00c4 EF92 push r14
305 00c6 FF92 push r15
306 00c8 0F93 push r16
307 00ca 1F93 push r17
308 00cc CF93 push r28
309 00ce DF93 push r29
310 /* prologue end (size=6) */
311 00d0 00E0 ldi r16,lo8(0)
312 00d2 0093 0000 sts GyroDefektN,r16
313 00d6 0093 0000 sts GyroDefektR,r16
314 00da 0093 0000 sts GyroDefektG,r16
315 00de 80ED ldi r24,lo8(2000)
316 00e0 97E0 ldi r25,hi8(2000)
317 00e2 0E94 0000 call SetDelay
318 00e6 EC01 movw r28,r24
319 00e8 1CE8 ldi r17,lo8(-116)
320 00ea 91E0 ldi r25,lo8(1)
321 00ec F92E mov r15,r25
322 00ee 85EF ldi r24,lo8(-11)
323 00f0 E82E mov r14,r24
324 .L51:
325 00f2 0330 cpi r16,lo8(3)
326 00f4 01F4 brne .+2
327 00f6 00C0 rjmp .L59
328 .L24:
329 00f8 00E0 ldi r16,lo8(0)
330 00fa 8091 0000 lds r24,AdWertNick
331 00fe 9091 0000 lds r25,(AdWertNick)+1
332 0102 8C5F subi r24,lo8(1020)
333 0104 9340 sbci r25,hi8(1020)
334 0106 04F0 brlt .+2
335 0108 00C0 rjmp .L25
336 010a 8091 0000 lds r24,AnalogOffsetNick
337 010e 8150 subi r24,lo8(-(-1))
338 .L56:
339 0110 8093 0000 sts AnalogOffsetNick,r24
340 .L26:
341 0114 8091 0000 lds r24,AdWertRoll
342 0118 9091 0000 lds r25,(AdWertRoll)+1
343 011c 8C5F subi r24,lo8(1020)
344 011e 9340 sbci r25,hi8(1020)
345 0120 04F0 brlt .+2
346 0122 00C0 rjmp .L29
347 0124 8091 0000 lds r24,AnalogOffsetRoll
348 0128 8150 subi r24,lo8(-(-1))
349 .L57:
350 012a 8093 0000 sts AnalogOffsetRoll,r24
351 .L30:
352 012e 8091 0000 lds r24,AdWertGier
353 0132 9091 0000 lds r25,(AdWertGier)+1
354 0136 8C5F subi r24,lo8(1020)
355 0138 9340 sbci r25,hi8(1020)
356 013a 04F0 brlt .+2
357 013c 00C0 rjmp .L33
358 013e 8091 0000 lds r24,AnalogOffsetGier
359 0142 8150 subi r24,lo8(-(-1))
360 .L58:
361 0144 8093 0000 sts AnalogOffsetGier,r24
362 .L34:
363 0148 88E0 ldi r24,lo8(8)
364 014a 8093 0000 sts twi_state,r24
365 014e 0E94 0000 call i2c_start
366 0152 8091 0000 lds r24,AnalogOffsetNick
367 0156 8A30 cpi r24,lo8(10)
368 0158 00F0 brlo .+2
369 015a 00C0 rjmp .L37
370 015c F092 0000 sts GyroDefektN,r15
371 0160 8AE0 ldi r24,lo8(10)
372 0162 8093 0000 sts AnalogOffsetNick,r24
373 .L38:
374 0166 8091 0000 lds r24,AnalogOffsetRoll
375 016a 8A30 cpi r24,lo8(10)
376 016c 00F0 brlo .+2
377 016e 00C0 rjmp .L39
378 0170 F092 0000 sts GyroDefektR,r15
379 0174 8AE0 ldi r24,lo8(10)
380 0176 8093 0000 sts AnalogOffsetRoll,r24
381 .L40:
382 017a 8091 0000 lds r24,AnalogOffsetGier
383 017e 8A30 cpi r24,lo8(10)
384 0180 00F4 brsh .L41
385 0182 F092 0000 sts GyroDefektG,r15
386 0186 8AE0 ldi r24,lo8(10)
387 0188 8093 0000 sts AnalogOffsetGier,r24
388 .L42:
389 018c 8091 0000 lds r24,twi_state
390 0190 8823 tst r24
391 0192 01F0 breq .L44
392 0194 CE01 movw r24,r28
393 0196 0E94 0000 call CheckDelay
394 019a 8823 tst r24
395 019c 01F0 breq .L42
396 019e 80E0 ldi r24,lo8(__c.11)
397 01a0 90E0 ldi r25,hi8(__c.11)
398 01a2 9F93 push r25
399 01a4 8F93 push r24
400 01a6 1F92 push __zero_reg__
401 01a8 0E94 0000 call _printf_P
402 01ac 0F90 pop __tmp_reg__
403 01ae 0F90 pop __tmp_reg__
404 01b0 0F90 pop __tmp_reg__
405 .L44:
406 01b2 1092 0000 sts AdReady,__zero_reg__
407 01b6 8FEC ldi r24,lo8(-49)
408 01b8 8093 7A00 sts 122,r24
409 .L47:
410 01bc 8091 0000 lds r24,AdReady
411 01c0 8823 tst r24
412 01c2 01F0 breq .L47
413 01c4 1A30 cpi r17,lo8(10)
414 01c6 00F4 brsh .+2
415 01c8 00C0 rjmp .L60
416 .L23:
417 01ca 1150 subi r17,lo8(-(-1))
418 01cc 01F0 breq .+2
419 01ce 00C0 rjmp .L51
420 01d0 00C0 rjmp .L61
421 .L33:
422 01d2 8091 0000 lds r24,AdWertGier
423 01d6 9091 0000 lds r25,(AdWertGier)+1
424 01da 8750 subi r24,lo8(1031)
425 01dc 9440 sbci r25,hi8(1031)
426 01de 04F0 brlt .L35
427 01e0 8091 0000 lds r24,AnalogOffsetGier
428 01e4 8F5F subi r24,lo8(-(1))
429 01e6 00C0 rjmp .L58
430 .L41:
431 01e8 863F cpi r24,lo8(-10)
432 01ea 00F0 brlo .L42
433 01ec F092 0000 sts GyroDefektG,r15
434 01f0 E092 0000 sts AnalogOffsetGier,r14
435 01f4 00C0 rjmp .L42
436 .L39:
437 01f6 863F cpi r24,lo8(-10)
438 01f8 00F4 brsh .+2
439 01fa 00C0 rjmp .L40
440 01fc F092 0000 sts GyroDefektR,r15
441 0200 E092 0000 sts AnalogOffsetRoll,r14
442 0204 00C0 rjmp .L40
443 .L37:
444 0206 863F cpi r24,lo8(-10)
445 0208 00F4 brsh .+2
446 020a 00C0 rjmp .L38
447 020c F092 0000 sts GyroDefektN,r15
448 0210 E092 0000 sts AnalogOffsetNick,r14
449 0214 00C0 rjmp .L38
450 .L29:
451 0216 8091 0000 lds r24,AdWertRoll
452 021a 9091 0000 lds r25,(AdWertRoll)+1
453 021e 8750 subi r24,lo8(1031)
454 0220 9440 sbci r25,hi8(1031)
455 0222 04F0 brlt .L31
456 0224 8091 0000 lds r24,AnalogOffsetRoll
457 0228 8F5F subi r24,lo8(-(1))
458 022a 00C0 rjmp .L57
459 .L25:
460 022c 8091 0000 lds r24,AdWertNick
461 0230 9091 0000 lds r25,(AdWertNick)+1
462 0234 8750 subi r24,lo8(1031)
463 0236 9440 sbci r25,hi8(1031)
464 0238 04F0 brlt .L27
465 023a 8091 0000 lds r24,AnalogOffsetNick
466 023e 8F5F subi r24,lo8(-(1))
467 0240 00C0 rjmp .L56
468 .L35:
469 0242 0F5F subi r16,lo8(-(1))
470 0244 00C0 rjmp .L34
471 .L31:
472 0246 0F5F subi r16,lo8(-(1))
473 0248 00C0 rjmp .L30
474 .L27:
475 024a 01E0 ldi r16,lo8(1)
476 024c 00C0 rjmp .L26
477 .L59:
478 024e 1B30 cpi r17,lo8(11)
479 0250 00F4 brsh .+2
480 0252 00C0 rjmp .L24
481 0254 19E0 ldi r17,lo8(9)
482 0256 00C0 rjmp .L24
483 .L60:
484 0258 8AE0 ldi r24,lo8(10)
485 025a 90E0 ldi r25,hi8(10)
486 025c 0E94 0000 call Delay_ms_Mess
487 0260 00C0 rjmp .L23
488 .L61:
489 0262 86E4 ldi r24,lo8(70)
490 0264 90E0 ldi r25,hi8(70)
491 0266 0E94 0000 call Delay_ms_Mess
492 /* epilogue: frame size=0 */
493 026a E6E0 ldi r30,6
494 026c CDB7 in r28,__SP_L__
495 026e DEB7 in r29,__SP_H__
496 0270 0C94 0000 jmp __epilogue_restores__+24
497 /* epilogue end (size=5) */
498 /* function SucheGyroOffset size 223 (212) */
500 .lcomm kanal.0,1
501 .lcomm state.1,1
502 .lcomm gier1.2,2
503 .lcomm roll1.3,2
504 .lcomm nick1.4,2
505 .lcomm nick_filter.5,2
506 .lcomm roll_filter.6,2
507 .lcomm accy.7,2
508 .lcomm accx.8,2
509 .lcomm tmpLuftdruck.9,4
510 .lcomm messanzahl_Druck.10,1
511 .global __vector_24
513 __vector_24:
514 /* prologue: frame size=0 */
515 0274 1F92 push __zero_reg__
516 0276 0F92 push __tmp_reg__
517 0278 0FB6 in __tmp_reg__,__SREG__
518 027a 0F92 push __tmp_reg__
519 027c 1124 clr __zero_reg__
520 027e AF92 push r10
521 0280 BF92 push r11
522 0282 CF92 push r12
523 0284 DF92 push r13
524 0286 EF92 push r14
525 0288 FF92 push r15
526 028a 0F93 push r16
527 028c 1F93 push r17
528 028e 2F93 push r18
529 0290 3F93 push r19
530 0292 4F93 push r20
531 0294 5F93 push r21
532 0296 6F93 push r22
533 0298 7F93 push r23
534 029a 8F93 push r24
535 029c 9F93 push r25
536 029e AF93 push r26
537 02a0 BF93 push r27
538 02a2 EF93 push r30
539 02a4 FF93 push r31
540 /* prologue end (size=25) */
541 02a6 2091 0000 lds r18,state.1
542 02aa 822F mov r24,r18
543 02ac 9927 clr r25
544 02ae AA27 clr r26
545 02b0 BB27 clr r27
546 02b2 2F5F subi r18,lo8(-(1))
547 02b4 FC01 movw r30,r24
548 02b6 4297 sbiw r24,18
549 02b8 00F4 brsh .L104
550 02ba E050 subi r30,lo8(-(pm(.L105)))
551 02bc F040 sbci r31,hi8(-(pm(.L105)))
552 02be 0C94 0000 jmp __tablejump2__
553 .data
554 .section .progmem.gcc_sw_table, "a", @progbits
555 .p2align 1
556 .L105:
557 0000 0000 .word pm(.L64)
558 0002 0000 .word pm(.L65)
559 0004 0000 .word pm(.L66)
560 0006 0000 .word pm(.L67)
561 0008 0000 .word pm(.L68)
562 000a 0000 .word pm(.L69)
563 000c 0000 .word pm(.L70)
564 000e 0000 .word pm(.L71)
565 0010 0000 .word pm(.L72)
566 0012 0000 .word pm(.L107)
567 0014 0000 .word pm(.L69)
568 0016 0000 .word pm(.L84)
569 0018 0000 .word pm(.L85)
570 001a 0000 .word pm(.L86)
571 001c 0000 .word pm(.L87)
572 001e 0000 .word pm(.L88)
573 0020 0000 .word pm(.L92)
574 0022 0000 .word pm(.L96)
575 .text
576 .L104:
577 02c2 1092 0000 sts state.1,__zero_reg__
578 02c6 82E0 ldi r24,lo8(2)
579 .L111:
580 02c8 8093 0000 sts kanal.0,r24
581 .L63:
582 02cc 8091 0000 lds r24,kanal.0
583 02d0 8093 7C00 sts 124,r24
584 02d4 8091 0000 lds r24,state.1
585 02d8 8823 tst r24
586 02da 01F4 brne .+2
587 02dc 00C0 rjmp .L62
588 02de 8FEC ldi r24,lo8(-49)
589 02e0 8093 7A00 sts 122,r24
590 02e4 00C0 rjmp .L62
591 .L69:
592 02e6 2093 0000 sts state.1,r18
593 02ea 8091 7800 lds r24,120
594 02ee 9091 7900 lds r25,(120)+1
595 02f2 2091 0000 lds r18,nick1.4
596 02f6 3091 0000 lds r19,(nick1.4)+1
597 02fa 820F add r24,r18
598 02fc 931F adc r25,r19
599 .L113:
600 02fe 9093 0000 sts (nick1.4)+1,r25
601 0302 8093 0000 sts nick1.4,r24
602 0306 81E0 ldi r24,lo8(1)
603 0308 00C0 rjmp .L111
604 .L70:
605 030a 2093 0000 sts state.1,r18
606 030e 8091 0000 lds r24,roll1.3
607 0312 9091 0000 lds r25,(roll1.3)+1
608 0316 8050 subi r24,lo8(-(512))
609 0318 9E4F sbci r25,hi8(-(512))
610 031a 9093 0000 sts (roll1.3)+1,r25
611 031e 8093 0000 sts roll1.3,r24
612 0322 84E0 ldi r24,lo8(4)
613 0324 00C0 rjmp .L111
614 .L68:
615 0326 2093 0000 sts state.1,r18
616 032a 8091 7800 lds r24,120
617 032e 9091 7900 lds r25,(120)+1
618 0332 2091 0000 lds r18,NeutralAccX
619 0336 3091 0000 lds r19,(NeutralAccX)+1
620 033a 821B sub r24,r18
621 033c 930B sbc r25,r19
622 033e 9093 0000 sts (Aktuell_ax)+1,r25
623 0342 8093 0000 sts Aktuell_ax,r24
624 0346 8091 0000 lds r24,Aktuell_ax
625 034a 9091 0000 lds r25,(Aktuell_ax)+1
626 034e 9093 0000 sts (accx.8)+1,r25
627 0352 8093 0000 sts accx.8,r24
628 0356 82E0 ldi r24,lo8(2)
629 0358 00C0 rjmp .L111
630 .L67:
631 035a 2093 0000 sts state.1,r18
632 035e 8091 0000 lds r24,NeutralAccY
633 0362 9091 0000 lds r25,(NeutralAccY)+1
634 0366 8050 subi r24,lo8(-(-512))
635 0368 9240 sbci r25,hi8(-(-512))
636 036a 9093 0000 sts (Aktuell_ay)+1,r25
637 036e 8093 0000 sts Aktuell_ay,r24
638 0372 8091 0000 lds r24,Aktuell_ay
639 0376 9091 0000 lds r25,(Aktuell_ay)+1
640 037a 9093 0000 sts (accy.7)+1,r25
641 037e 8093 0000 sts accy.7,r24
642 0382 87E0 ldi r24,lo8(7)
643 0384 00C0 rjmp .L111
644 .L66:
645 0386 2093 0000 sts state.1,r18
646 038a 80E0 ldi r24,lo8(512)
647 038c 92E0 ldi r25,hi8(512)
648 038e 9093 0000 sts (gier1.2)+1,r25
649 0392 8093 0000 sts gier1.2,r24
650 0396 86E0 ldi r24,lo8(6)
651 0398 00C0 rjmp .L111
652 .L65:
653 039a 2093 0000 sts state.1,r18
654 039e 80E0 ldi r24,lo8(512)
655 03a0 92E0 ldi r25,hi8(512)
656 .L112:
657 03a2 9093 0000 sts (roll1.3)+1,r25
658 03a6 8093 0000 sts roll1.3,r24
659 03aa 1092 0000 sts kanal.0,__zero_reg__
660 03ae 00C0 rjmp .L63
661 .L64:
662 03b0 2093 0000 sts state.1,r18
663 03b4 8091 7800 lds r24,120
664 03b8 9091 7900 lds r25,(120)+1
665 03bc 00C0 rjmp .L113
666 .L96:
667 03be 1092 0000 sts state.1,__zero_reg__
668 03c2 81E0 ldi r24,lo8(1)
669 03c4 8093 0000 sts AdReady,r24
670 03c8 8091 0000 lds r24,ZaehlMessungen
671 03cc 9091 0000 lds r25,(ZaehlMessungen)+1
672 03d0 0196 adiw r24,1
673 03d2 9093 0000 sts (ZaehlMessungen)+1,r25
674 03d6 8093 0000 sts ZaehlMessungen,r24
675 .L97:
676 03da 80E0 ldi r24,lo8(512)
677 03dc 92E0 ldi r25,hi8(512)
678 03de 9093 0000 sts (MessLuftdruck)+1,r25
679 03e2 8093 0000 sts MessLuftdruck,r24
680 03e6 8091 0000 lds r24,MessLuftdruck
681 03ea 9091 0000 lds r25,(MessLuftdruck)+1
682 03ee 5C01 movw r10,r24
683 03f0 CC24 clr r12
684 03f2 DD24 clr r13
685 03f4 8091 0000 lds r24,tmpLuftdruck.9
686 03f8 9091 0000 lds r25,(tmpLuftdruck.9)+1
687 03fc A091 0000 lds r26,(tmpLuftdruck.9)+2
688 0400 B091 0000 lds r27,(tmpLuftdruck.9)+3
689 0404 A80E add r10,r24
690 0406 B91E adc r11,r25
691 0408 CA1E adc r12,r26
692 040a DB1E adc r13,r27
693 040c 8091 0000 lds r24,messanzahl_Druck.10
694 0410 8F5F subi r24,lo8(-(1))
695 0412 8231 cpi r24,lo8(18)
696 0414 00F4 brsh .+2
697 0416 00C0 rjmp .L108
698 0418 8091 0000 lds r24,Luftdruck
699 041c 9091 0000 lds r25,(Luftdruck)+1
700 0420 A091 0000 lds r26,(Luftdruck)+2
701 0424 B091 0000 lds r27,(Luftdruck)+3
702 0428 7C01 movw r14,r24
703 042a 8D01 movw r16,r26
704 042c 23E0 ldi r18,3
705 042e EE0C 1: lsl r14
706 0430 FF1C rol r15
707 0432 001F rol r16
708 0434 111F rol r17
709 0436 2A95 dec r18
710 0438 01F4 brne 1b
711 043a E81A sub r14,r24
712 043c F90A sbc r15,r25
713 043e 0A0B sbc r16,r26
714 0440 1B0B sbc r17,r27
715 0442 EA0C add r14,r10
716 0444 FB1C adc r15,r11
717 0446 0C1D adc r16,r12
718 0448 1D1D adc r17,r13
719 044a 8091 0000 lds r24,ExpandBaro
720 044e 9927 clr r25
721 0450 87FD sbrc r24,7
722 0452 9095 com r25
723 0454 A92F mov r26,r25
724 0456 B92F mov r27,r25
725 0458 BC01 movw r22,r24
726 045a CD01 movw r24,r26
727 045c 26EC ldi r18,lo8(9414)
728 045e 34E2 ldi r19,hi8(9414)
729 0460 40E0 ldi r20,hlo8(9414)
730 0462 50E0 ldi r21,hhi8(9414)
731 0464 0E94 0000 call __mulsi3
732 0468 DC01 movw r26,r24
733 046a CB01 movw r24,r22
734 046c E81A sub r14,r24
735 046e F90A sbc r15,r25
736 0470 0A0B sbc r16,r26
737 0472 1B0B sbc r17,r27
738 0474 D801 movw r26,r16
739 0476 C701 movw r24,r14
740 0478 0496 adiw r24,4
741 047a A11D adc r26,__zero_reg__
742 047c B11D adc r27,__zero_reg__
743 047e B7FD sbrc r27,7
744 0480 00C0 rjmp .L118
745 .L99:
746 0482 13E0 ldi r17,3
747 0484 B595 1: asr r27
748 0486 A795 ror r26
749 0488 9795 ror r25
750 048a 8795 ror r24
751 048c 1A95 dec r17
752 048e 01F4 brne 1b
753 0490 8093 0000 sts Luftdruck,r24
754 0494 9093 0000 sts (Luftdruck)+1,r25
755 0498 A093 0000 sts (Luftdruck)+2,r26
756 049c B093 0000 sts (Luftdruck)+3,r27
757 04a0 8091 0000 lds r24,StartLuftdruck
758 04a4 9091 0000 lds r25,(StartLuftdruck)+1
759 04a8 7C01 movw r14,r24
760 04aa 0027 clr r16
761 04ac F7FC sbrc r15,7
762 04ae 0095 com r16
763 04b0 102F mov r17,r16
764 04b2 8091 0000 lds r24,Luftdruck
765 04b6 9091 0000 lds r25,(Luftdruck)+1
766 04ba A091 0000 lds r26,(Luftdruck)+2
767 04be B091 0000 lds r27,(Luftdruck)+3
768 04c2 E81A sub r14,r24
769 04c4 F90A sbc r15,r25
770 04c6 0A0B sbc r16,r26
771 04c8 1B0B sbc r17,r27
772 04ca E092 0000 sts HoehenWert,r14
773 04ce F092 0000 sts (HoehenWert)+1,r15
774 04d2 0093 0000 sts (HoehenWert)+2,r16
775 04d6 1093 0000 sts (HoehenWert)+3,r17
776 04da 2091 0000 lds r18,SummenHoehe
777 04de 3091 0000 lds r19,(SummenHoehe)+1
778 04e2 4091 0000 lds r20,(SummenHoehe)+2
779 04e6 5091 0000 lds r21,(SummenHoehe)+3
780 04ea 57FD sbrc r21,7
781 04ec 00C0 rjmp .L119
782 .L100:
783 04ee A4E0 ldi r26,4
784 04f0 5595 1: asr r21
785 04f2 4795 ror r20
786 04f4 3795 ror r19
787 04f6 2795 ror r18
788 04f8 AA95 dec r26
789 04fa 01F4 brne 1b
790 04fc 8091 0000 lds r24,SummenHoehe
791 0500 9091 0000 lds r25,(SummenHoehe)+1
792 0504 A091 0000 lds r26,(SummenHoehe)+2
793 0508 B091 0000 lds r27,(SummenHoehe)+3
794 050c 821B sub r24,r18
795 050e 930B sbc r25,r19
796 0510 A40B sbc r26,r20
797 0512 B50B sbc r27,r21
798 0514 8093 0000 sts SummenHoehe,r24
799 0518 9093 0000 sts (SummenHoehe)+1,r25
800 051c A093 0000 sts (SummenHoehe)+2,r26
801 0520 B093 0000 sts (SummenHoehe)+3,r27
802 0524 8091 0000 lds r24,SummenHoehe
803 0528 9091 0000 lds r25,(SummenHoehe)+1
804 052c A091 0000 lds r26,(SummenHoehe)+2
805 0530 B091 0000 lds r27,(SummenHoehe)+3
806 0534 8E0D add r24,r14
807 0536 9F1D adc r25,r15
808 0538 A01F adc r26,r16
809 053a B11F adc r27,r17
810 053c 8093 0000 sts SummenHoehe,r24
811 0540 9093 0000 sts (SummenHoehe)+1,r25
812 0544 A093 0000 sts (SummenHoehe)+2,r26
813 0548 B093 0000 sts (SummenHoehe)+3,r27
814 054c 8091 0000 lds r24,VarioMeter
815 0550 9091 0000 lds r25,(VarioMeter)+1
816 0554 BC01 movw r22,r24
817 0556 6295 swap r22
818 0558 7295 swap r23
819 055a 707F andi r23,0xf0
820 055c 7627 eor r23,r22
821 055e 607F andi r22,0xf0
822 0560 7627 eor r23,r22
823 0562 681B sub r22,r24
824 0564 790B sbc r23,r25
825 0566 2091 0000 lds r18,SummenHoehe
826 056a 3091 0000 lds r19,(SummenHoehe)+1
827 056e 4091 0000 lds r20,(SummenHoehe)+2
828 0572 5091 0000 lds r21,(SummenHoehe)+3
829 0576 57FD sbrc r21,7
830 0578 00C0 rjmp .L120
831 .L101:
832 057a E4E0 ldi r30,4
833 057c 5595 1: asr r21
834 057e 4795 ror r20
835 0580 3795 ror r19
836 0582 2795 ror r18
837 0584 EA95 dec r30
838 0586 01F4 brne 1b
839 0588 8091 0000 lds r24,HoehenWert
840 058c 9091 0000 lds r25,(HoehenWert)+1
841 0590 821B sub r24,r18
842 0592 930B sbc r25,r19
843 0594 880F lsl r24
844 0596 991F rol r25
845 0598 880F lsl r24
846 059a 991F rol r25
847 059c 880F lsl r24
848 059e 991F rol r25
849 05a0 860F add r24,r22
850 05a2 971F adc r25,r23
851 05a4 97FD sbrc r25,7
852 05a6 00C0 rjmp .L121
853 .L102:
854 05a8 9595 asr r25
855 05aa 8795 ror r24
856 05ac 9595 asr r25
857 05ae 8795 ror r24
858 05b0 9595 asr r25
859 05b2 8795 ror r24
860 05b4 9595 asr r25
861 05b6 8795 ror r24
862 05b8 9093 0000 sts (VarioMeter)+1,r25
863 05bc 8093 0000 sts VarioMeter,r24
864 05c0 D601 movw r26,r12
865 05c2 C501 movw r24,r10
866 05c4 D7FC sbrc r13,7
867 05c6 00C0 rjmp .L122
868 .L103:
869 05c8 B595 asr r27
870 05ca A795 ror r26
871 05cc 9795 ror r25
872 05ce 8795 ror r24
873 05d0 8093 0000 sts tmpLuftdruck.9,r24
874 05d4 9093 0000 sts (tmpLuftdruck.9)+1,r25
875 05d8 A093 0000 sts (tmpLuftdruck.9)+2,r26
876 05dc B093 0000 sts (tmpLuftdruck.9)+3,r27
877 05e0 89E0 ldi r24,lo8(9)
878 05e2 8093 0000 sts messanzahl_Druck.10,r24
879 05e6 82E0 ldi r24,lo8(2)
880 05e8 00C0 rjmp .L111
881 .L92:
882 05ea 2093 0000 sts state.1,r18
883 05ee 2091 0000 lds r18,roll1.3
884 05f2 3091 0000 lds r19,(roll1.3)+1
885 05f6 2050 subi r18,lo8(-(512))
886 05f8 3E4F sbci r19,hi8(-(512))
887 05fa 220F lsl r18
888 05fc 331F rol r19
889 05fe 220F lsl r18
890 0600 331F rol r19
891 0602 3093 0000 sts (roll1.3)+1,r19
892 0606 2093 0000 sts roll1.3,r18
893 060a C901 movw r24,r18
894 060c 37FD sbrc r19,7
895 060e 00C0 rjmp .L123
896 .L93:
897 0610 9595 asr r25
898 0612 8795 ror r24
899 0614 9595 asr r25
900 0616 8795 ror r24
901 0618 9595 asr r25
902 061a 8795 ror r24
903 061c 9093 0000 sts (AdWertRoll)+1,r25
904 0620 8093 0000 sts AdWertRoll,r24
905 0624 8091 0000 lds r24,roll_filter.6
906 0628 9091 0000 lds r25,(roll_filter.6)+1
907 062c 820F add r24,r18
908 062e 931F adc r25,r19
909 0630 97FD sbrc r25,7
910 0632 00C0 rjmp .L124
911 .L94:
912 0634 9595 asr r25
913 0636 8795 ror r24
914 0638 9093 0000 sts (roll_filter.6)+1,r25
915 063c 8093 0000 sts roll_filter.6,r24
916 0640 2091 0000 lds r18,AdNeutralRoll
917 0644 3091 0000 lds r19,(AdNeutralRoll)+1
918 0648 821B sub r24,r18
919 064a 930B sbc r25,r19
920 064c 9093 0000 sts (HiResRoll)+1,r25
921 0650 8093 0000 sts HiResRoll,r24
922 0654 2091 0000 lds r18,AdWertRollFilter
923 0658 3091 0000 lds r19,(AdWertRollFilter)+1
924 065c 8091 0000 lds r24,HiResRoll
925 0660 9091 0000 lds r25,(HiResRoll)+1
926 0664 280F add r18,r24
927 0666 391F adc r19,r25
928 0668 37FD sbrc r19,7
929 066a 00C0 rjmp .L125
930 .L95:
931 066c 3595 asr r19
932 066e 2795 ror r18
933 0670 3093 0000 sts (AdWertRollFilter)+1,r19
934 0674 2093 0000 sts AdWertRollFilter,r18
935 0678 83E0 ldi r24,lo8(3)
936 067a 00C0 rjmp .L111
937 .L88:
938 067c 2093 0000 sts state.1,r18
939 0680 2091 7800 lds r18,120
940 0684 3091 7900 lds r19,(120)+1
941 0688 8091 0000 lds r24,nick1.4
942 068c 9091 0000 lds r25,(nick1.4)+1
943 0690 280F add r18,r24
944 0692 391F adc r19,r25
945 0694 220F lsl r18
946 0696 331F rol r19
947 0698 220F lsl r18
948 069a 331F rol r19
949 069c 3093 0000 sts (nick1.4)+1,r19
950 06a0 2093 0000 sts nick1.4,r18
951 06a4 C901 movw r24,r18
952 06a6 37FD sbrc r19,7
953 06a8 00C0 rjmp .L126
954 .L89:
955 06aa 9595 asr r25
956 06ac 8795 ror r24
957 06ae 9595 asr r25
958 06b0 8795 ror r24
959 06b2 9595 asr r25
960 06b4 8795 ror r24
961 06b6 9093 0000 sts (AdWertNick)+1,r25
962 06ba 8093 0000 sts AdWertNick,r24
963 06be 8091 0000 lds r24,nick_filter.5
964 06c2 9091 0000 lds r25,(nick_filter.5)+1
965 06c6 820F add r24,r18
966 06c8 931F adc r25,r19
967 06ca 97FD sbrc r25,7
968 06cc 00C0 rjmp .L127
969 .L90:
970 06ce 9595 asr r25
971 06d0 8795 ror r24
972 06d2 9093 0000 sts (nick_filter.5)+1,r25
973 06d6 8093 0000 sts nick_filter.5,r24
974 06da 2091 0000 lds r18,AdNeutralNick
975 06de 3091 0000 lds r19,(AdNeutralNick)+1
976 06e2 821B sub r24,r18
977 06e4 930B sbc r25,r19
978 06e6 9093 0000 sts (HiResNick)+1,r25
979 06ea 8093 0000 sts HiResNick,r24
980 06ee 2091 0000 lds r18,AdWertNickFilter
981 06f2 3091 0000 lds r19,(AdWertNickFilter)+1
982 06f6 8091 0000 lds r24,HiResNick
983 06fa 9091 0000 lds r25,(HiResNick)+1
984 06fe 280F add r18,r24
985 0700 391F adc r19,r25
986 0702 37FD sbrc r19,7
987 0704 00C0 rjmp .L128
988 .L91:
989 0706 3595 asr r19
990 0708 2795 ror r18
991 070a 3093 0000 sts (AdWertNickFilter)+1,r19
992 070e 2093 0000 sts AdWertNickFilter,r18
993 0712 81E0 ldi r24,lo8(1)
994 0714 00C0 rjmp .L111
995 .L87:
996 0716 2093 0000 sts state.1,r18
997 071a 8091 7800 lds r24,120
998 071e 9091 7900 lds r25,(120)+1
999 0722 2091 0000 lds r18,NeutralAccX
1000 0726 3091 0000 lds r19,(NeutralAccX)+1
1001 072a 821B sub r24,r18
1002 072c 930B sbc r25,r19
1003 072e 9093 0000 sts (Aktuell_ax)+1,r25
1004 0732 8093 0000 sts Aktuell_ax,r24
1005 0736 8091 0000 lds r24,Aktuell_ax
1006 073a 9091 0000 lds r25,(Aktuell_ax)+1
1007 073e 2091 0000 lds r18,accx.8
1008 0742 3091 0000 lds r19,(accx.8)+1
1009 0746 820F add r24,r18
1010 0748 931F adc r25,r19
1011 074a 9093 0000 sts (AdWertAccNick)+1,r25
1012 074e 8093 0000 sts AdWertAccNick,r24
1013 0752 82E0 ldi r24,lo8(2)
1014 0754 00C0 rjmp .L111
1015 .L86:
1016 0756 2093 0000 sts state.1,r18
1017 075a 8091 0000 lds r24,NeutralAccY
1018 075e 9091 0000 lds r25,(NeutralAccY)+1
1019 0762 8050 subi r24,lo8(-(-512))
1020 0764 9240 sbci r25,hi8(-(-512))
1021 0766 9093 0000 sts (Aktuell_ay)+1,r25
1022 076a 8093 0000 sts Aktuell_ay,r24
1023 076e 8091 0000 lds r24,Aktuell_ay
1024 0772 9091 0000 lds r25,(Aktuell_ay)+1
1025 0776 2091 0000 lds r18,accy.7
1026 077a 3091 0000 lds r19,(accy.7)+1
1027 077e 820F add r24,r18
1028 0780 931F adc r25,r19
1029 0782 9093 0000 sts (AdWertAccRoll)+1,r25
1030 0786 8093 0000 sts AdWertAccRoll,r24
1031 078a 87E0 ldi r24,lo8(7)
1032 078c 00C0 rjmp .L111
1033 .L85:
1034 078e 2093 0000 sts state.1,r18
1035 0792 8091 0000 lds r24,gier1.2
1036 0796 9091 0000 lds r25,(gier1.2)+1
1037 079a 8050 subi r24,lo8(-(512))
1038 079c 9E4F sbci r25,hi8(-(512))
1039 079e 9093 0000 sts (AdWertGier)+1,r25
1040 07a2 8093 0000 sts AdWertGier,r24
1041 07a6 86E0 ldi r24,lo8(6)
1042 07a8 00C0 rjmp .L111
1043 .L84:
1044 07aa 2093 0000 sts state.1,r18
1045 07ae 8091 0000 lds r24,roll1.3
1046 07b2 9091 0000 lds r25,(roll1.3)+1
1047 07b6 8050 subi r24,lo8(-(512))
1048 07b8 9E4F sbci r25,hi8(-(512))
1049 07ba 00C0 rjmp .L112
1050 .L107:
1051 07bc 2093 0000 sts state.1,r18
1052 07c0 00C0 rjmp .L97
1053 .L72:
1054 07c2 2093 0000 sts state.1,r18
1055 07c6 8091 0000 lds r24,NeutralAccZ
1056 07ca 9091 0000 lds r25,(NeutralAccZ)+1
1057 07ce A091 0000 lds r26,(NeutralAccZ)+2
1058 07d2 B091 0000 lds r27,(NeutralAccZ)+3
1059 07d6 9C01 movw r18,r24
1060 07d8 AD01 movw r20,r26
1061 07da 60E0 ldi r22,lo8(0x44000000)
1062 07dc 70E0 ldi r23,hi8(0x44000000)
1063 07de 80E0 ldi r24,hlo8(0x44000000)
1064 07e0 94E4 ldi r25,hhi8(0x44000000)
1065 07e2 0E94 0000 call __subsf3
1066 07e6 DC01 movw r26,r24
1067 07e8 CB01 movw r24,r22
1068 07ea BC01 movw r22,r24
1069 07ec CD01 movw r24,r26
1070 07ee 0E94 0000 call __fixsfsi
1071 07f2 DC01 movw r26,r24
1072 07f4 CB01 movw r24,r22
1073 07f6 9093 0000 sts (AdWertAccHoch)+1,r25
1074 07fa 8093 0000 sts AdWertAccHoch,r24
1075 07fe 8091 0000 lds r24,AdWertAccHoch
1076 0802 9091 0000 lds r25,(AdWertAccHoch)+1
1077 0806 0297 sbiw r24,2
1078 0808 04F4 brge .+2
1079 080a 00C0 rjmp .L73
1080 080c 8091 0000 lds r24,NeutralAccZ
1081 0810 9091 0000 lds r25,(NeutralAccZ)+1
1082 0814 A091 0000 lds r26,(NeutralAccZ)+2
1083 0818 B091 0000 lds r27,(NeutralAccZ)+3
1084 081c 20E0 ldi r18,lo8(0x443b8000)
1085 081e 30E8 ldi r19,hi8(0x443b8000)
1086 0820 4BE3 ldi r20,hlo8(0x443b8000)
1087 0822 54E4 ldi r21,hhi8(0x443b8000)
1088 0824 BC01 movw r22,r24
1089 0826 CD01 movw r24,r26
1090 0828 0E94 0000 call __ltsf2
1091 082c 8823 tst r24
1092 082e 04F4 brge .L77
1093 0830 8091 0000 lds r24,NeutralAccZ
1094 0834 9091 0000 lds r25,(NeutralAccZ)+1
1095 0838 A091 0000 lds r26,(NeutralAccZ)+2
1096 083c B091 0000 lds r27,(NeutralAccZ)+3
1097 0840 2AE0 ldi r18,lo8(0x3ca3d70a)
1098 0842 37ED ldi r19,hi8(0x3ca3d70a)
1099 0844 43EA ldi r20,hlo8(0x3ca3d70a)
1100 0846 5CE3 ldi r21,hhi8(0x3ca3d70a)
1101 0848 BC01 movw r22,r24
1102 084a CD01 movw r24,r26
1103 084c 0E94 0000 call __addsf3
1104 0850 DC01 movw r26,r24
1105 0852 CB01 movw r24,r22
1106 0854 8093 0000 sts NeutralAccZ,r24
1107 0858 9093 0000 sts (NeutralAccZ)+1,r25
1108 085c A093 0000 sts (NeutralAccZ)+2,r26
1109 0860 B093 0000 sts (NeutralAccZ)+3,r27
1110 0864 8091 0000 lds r24,modell_fliegt
1111 0868 9091 0000 lds r25,(modell_fliegt)+1
1112 086c 845F subi r24,lo8(500)
1113 086e 9140 sbci r25,hi8(500)
1114 0870 00F4 brsh .L77
1115 0872 8091 0000 lds r24,NeutralAccZ
1116 0876 9091 0000 lds r25,(NeutralAccZ)+1
1117 087a A091 0000 lds r26,(NeutralAccZ)+2
1118 087e B091 0000 lds r27,(NeutralAccZ)+3
1119 0882 2DEC ldi r18,lo8(0x3dcccccd)
1120 0884 3CEC ldi r19,hi8(0x3dcccccd)
1121 0886 4CEC ldi r20,hlo8(0x3dcccccd)
1122 0888 5DE3 ldi r21,hhi8(0x3dcccccd)
1123 088a BC01 movw r22,r24
1124 088c CD01 movw r24,r26
1125 088e 0E94 0000 call __addsf3
1126 .L109:
1127 0892 DC01 movw r26,r24
1128 0894 CB01 movw r24,r22
1129 0896 8093 0000 sts NeutralAccZ,r24
1130 089a 9093 0000 sts (NeutralAccZ)+1,r25
1131 089e A093 0000 sts (NeutralAccZ)+2,r26
1132 08a2 B093 0000 sts (NeutralAccZ)+3,r27
1133 .L77:
1134 08a6 81E0 ldi r24,lo8(1)
1135 08a8 8093 0000 sts messanzahl_AccHoch,r24
1136 08ac 80E0 ldi r24,lo8(512)
1137 08ae 92E0 ldi r25,hi8(512)
1138 08b0 9093 0000 sts (Aktuell_az)+1,r25
1139 08b4 8093 0000 sts Aktuell_az,r24
1140 08b8 8091 0000 lds r24,AdWertAccHoch
1141 08bc 9091 0000 lds r25,(AdWertAccHoch)+1
1142 08c0 AA27 clr r26
1143 08c2 97FD sbrc r25,7
1144 08c4 A095 com r26
1145 08c6 BA2F mov r27,r26
1146 08c8 2091 0000 lds r18,Mess_Integral_Hoch
1147 08cc 3091 0000 lds r19,(Mess_Integral_Hoch)+1
1148 08d0 4091 0000 lds r20,(Mess_Integral_Hoch)+2
1149 08d4 5091 0000 lds r21,(Mess_Integral_Hoch)+3
1150 08d8 820F add r24,r18
1151 08da 931F adc r25,r19
1152 08dc A41F adc r26,r20
1153 08de B51F adc r27,r21
1154 08e0 8093 0000 sts Mess_Integral_Hoch,r24
1155 08e4 9093 0000 sts (Mess_Integral_Hoch)+1,r25
1156 08e8 A093 0000 sts (Mess_Integral_Hoch)+2,r26
1157 08ec B093 0000 sts (Mess_Integral_Hoch)+3,r27
1158 08f0 2091 0000 lds r18,Mess_Integral_Hoch
1159 08f4 3091 0000 lds r19,(Mess_Integral_Hoch)+1
1160 08f8 4091 0000 lds r20,(Mess_Integral_Hoch)+2
1161 08fc 5091 0000 lds r21,(Mess_Integral_Hoch)+3
1162 0900 57FD sbrc r21,7
1163 0902 00C0 rjmp .L129
1164 .L82:
1165 0904 1AE0 ldi r17,10
1166 0906 5595 1: asr r21
1167 0908 4795 ror r20
1168 090a 3795 ror r19
1169 090c 2795 ror r18
1170 090e 1A95 dec r17
1171 0910 01F4 brne 1b
1172 0912 8091 0000 lds r24,Mess_Integral_Hoch
1173 0916 9091 0000 lds r25,(Mess_Integral_Hoch)+1
1174 091a A091 0000 lds r26,(Mess_Integral_Hoch)+2
1175 091e B091 0000 lds r27,(Mess_Integral_Hoch)+3
1176 0922 821B sub r24,r18
1177 0924 930B sbc r25,r19
1178 0926 A40B sbc r26,r20
1179 0928 B50B sbc r27,r21
1180 092a 8093 0000 sts Mess_Integral_Hoch,r24
1181 092e 9093 0000 sts (Mess_Integral_Hoch)+1,r25
1182 0932 A093 0000 sts (Mess_Integral_Hoch)+2,r26
1183 0936 B093 0000 sts (Mess_Integral_Hoch)+3,r27
1184 093a 83E0 ldi r24,lo8(3)
1185 093c 00C0 rjmp .L111
1186 .L71:
1187 093e 2093 0000 sts state.1,r18
1188 0942 8091 0000 lds r24,UBat
1189 0946 9091 0000 lds r25,(UBat)+1
1190 094a 9C01 movw r18,r24
1191 094c 220F lsl r18
1192 094e 331F rol r19
1193 0950 280F add r18,r24
1194 0952 391F adc r19,r25
1195 0954 8091 7800 lds r24,120
1196 0958 9091 7900 lds r25,(120)+1
1197 095c 63E0 ldi r22,lo8(3)
1198 095e 70E0 ldi r23,hi8(3)
1199 0960 0E94 0000 call __udivmodhi4
1200 0964 260F add r18,r22
1201 0966 371F adc r19,r23
1202 0968 3695 lsr r19
1203 096a 2795 ror r18
1204 096c 3695 lsr r19
1205 096e 2795 ror r18
1206 0970 3093 0000 sts (UBat)+1,r19
1207 0974 2093 0000 sts UBat,r18
1208 0978 85E0 ldi r24,lo8(5)
1209 097a 00C0 rjmp .L111
1210 .L108:
1211 097c 8093 0000 sts messanzahl_Druck.10,r24
1212 0980 A092 0000 sts tmpLuftdruck.9,r10
1213 0984 B092 0000 sts (tmpLuftdruck.9)+1,r11
1214 0988 C092 0000 sts (tmpLuftdruck.9)+2,r12
1215 098c D092 0000 sts (tmpLuftdruck.9)+3,r13
1216 0990 82E0 ldi r24,lo8(2)
1217 0992 00C0 rjmp .L111
1218 .L73:
1219 0994 8091 0000 lds r24,AdWertAccHoch
1220 0998 9091 0000 lds r25,(AdWertAccHoch)+1
1221 099c 8F5F subi r24,lo8(-1)
1222 099e 9F4F sbci r25,hi8(-1)
1223 09a0 04F0 brlt .+2
1224 09a2 00C0 rjmp .L77
1225 09a4 8091 0000 lds r24,NeutralAccZ
1226 09a8 9091 0000 lds r25,(NeutralAccZ)+1
1227 09ac A091 0000 lds r26,(NeutralAccZ)+2
1228 09b0 B091 0000 lds r27,(NeutralAccZ)+3
1229 09b4 20E0 ldi r18,lo8(0x44098000)
1230 09b6 30E8 ldi r19,hi8(0x44098000)
1231 09b8 49E0 ldi r20,hlo8(0x44098000)
1232 09ba 54E4 ldi r21,hhi8(0x44098000)
1233 09bc BC01 movw r22,r24
1234 09be CD01 movw r24,r26
1235 09c0 0E94 0000 call __gtsf2
1236 09c4 1816 cp __zero_reg__,r24
1237 09c6 04F0 brlt .+2
1238 09c8 00C0 rjmp .L77
1239 09ca 8091 0000 lds r24,NeutralAccZ
1240 09ce 9091 0000 lds r25,(NeutralAccZ)+1
1241 09d2 A091 0000 lds r26,(NeutralAccZ)+2
1242 09d6 B091 0000 lds r27,(NeutralAccZ)+3
1243 09da 2AE0 ldi r18,lo8(0x3ca3d70a)
1244 09dc 37ED ldi r19,hi8(0x3ca3d70a)
1245 09de 43EA ldi r20,hlo8(0x3ca3d70a)
1246 09e0 5CE3 ldi r21,hhi8(0x3ca3d70a)
1247 09e2 BC01 movw r22,r24
1248 09e4 CD01 movw r24,r26
1249 09e6 0E94 0000 call __subsf3
1250 09ea DC01 movw r26,r24
1251 09ec CB01 movw r24,r22
1252 09ee 8093 0000 sts NeutralAccZ,r24
1253 09f2 9093 0000 sts (NeutralAccZ)+1,r25
1254 09f6 A093 0000 sts (NeutralAccZ)+2,r26
1255 09fa B093 0000 sts (NeutralAccZ)+3,r27
1256 09fe 8091 0000 lds r24,modell_fliegt
1257 0a02 9091 0000 lds r25,(modell_fliegt)+1
1258 0a06 845F subi r24,lo8(500)
1259 0a08 9140 sbci r25,hi8(500)
1260 0a0a 00F0 brlo .+2
1261 0a0c 00C0 rjmp .L77
1262 0a0e 8091 0000 lds r24,NeutralAccZ
1263 0a12 9091 0000 lds r25,(NeutralAccZ)+1
1264 0a16 A091 0000 lds r26,(NeutralAccZ)+2
1265 0a1a B091 0000 lds r27,(NeutralAccZ)+3
1266 0a1e 2DEC ldi r18,lo8(0x3dcccccd)
1267 0a20 3CEC ldi r19,hi8(0x3dcccccd)
1268 0a22 4CEC ldi r20,hlo8(0x3dcccccd)
1269 0a24 5DE3 ldi r21,hhi8(0x3dcccccd)
1270 0a26 BC01 movw r22,r24
1271 0a28 CD01 movw r24,r26
1272 0a2a 0E94 0000 call __subsf3
1273 0a2e 00C0 rjmp .L109
1274 .L125:
1275 0a30 2F5F subi r18,lo8(-(1))
1276 0a32 3F4F sbci r19,hi8(-(1))
1277 0a34 00C0 rjmp .L95
1278 .L128:
1279 0a36 2F5F subi r18,lo8(-(1))
1280 0a38 3F4F sbci r19,hi8(-(1))
1281 0a3a 00C0 rjmp .L91
1282 .L127:
1283 0a3c 0196 adiw r24,1
1284 0a3e 00C0 rjmp .L90
1285 .L126:
1286 0a40 0796 adiw r24,7
1287 0a42 00C0 rjmp .L89
1288 .L118:
1289 0a44 D801 movw r26,r16
1290 0a46 C701 movw r24,r14
1291 0a48 0B96 adiw r24,11
1292 0a4a A11D adc r26,__zero_reg__
1293 0a4c B11D adc r27,__zero_reg__
1294 0a4e 00C0 rjmp .L99
1295 .L129:
1296 0a50 2150 subi r18,lo8(-(1023))
1297 0a52 3C4F sbci r19,hi8(-(1023))
1298 0a54 4F4F sbci r20,hlo8(-(1023))
1299 0a56 5F4F sbci r21,hhi8(-(1023))
1300 0a58 00C0 rjmp .L82
1301 .L120:
1302 0a5a 215F subi r18,lo8(-(15))
1303 0a5c 3F4F sbci r19,hi8(-(15))
1304 0a5e 4F4F sbci r20,hlo8(-(15))
1305 0a60 5F4F sbci r21,hhi8(-(15))
1306 0a62 00C0 rjmp .L101
1307 .L119:
1308 0a64 215F subi r18,lo8(-(15))
1309 0a66 3F4F sbci r19,hi8(-(15))
1310 0a68 4F4F sbci r20,hlo8(-(15))
1311 0a6a 5F4F sbci r21,hhi8(-(15))
1312 0a6c 00C0 rjmp .L100
1313 .L124:
1314 0a6e 0196 adiw r24,1
1315 0a70 00C0 rjmp .L94
1316 .L123:
1317 0a72 0796 adiw r24,7
1318 0a74 00C0 rjmp .L93
1319 .L122:
1320 0a76 0196 adiw r24,1
1321 0a78 A11D adc r26,__zero_reg__
1322 0a7a B11D adc r27,__zero_reg__
1323 0a7c 00C0 rjmp .L103
1324 .L121:
1325 0a7e 0F96 adiw r24,15
1326 0a80 00C0 rjmp .L102
1327 .L62:
1328 /* epilogue: frame size=0 */
1329 0a82 FF91 pop r31
1330 0a84 EF91 pop r30
1331 0a86 BF91 pop r27
1332 0a88 AF91 pop r26
1333 0a8a 9F91 pop r25
1334 0a8c 8F91 pop r24
1335 0a8e 7F91 pop r23
1336 0a90 6F91 pop r22
1337 0a92 5F91 pop r21
1338 0a94 4F91 pop r20
1339 0a96 3F91 pop r19
1340 0a98 2F91 pop r18
1341 0a9a 1F91 pop r17
1342 0a9c 0F91 pop r16
1343 0a9e FF90 pop r15
1344 0aa0 EF90 pop r14
1345 0aa2 DF90 pop r13
1346 0aa4 CF90 pop r12
1347 0aa6 BF90 pop r11
1348 0aa8 AF90 pop r10
1349 0aaa 0F90 pop __tmp_reg__
1350 0aac 0FBE out __SREG__,__tmp_reg__
1351 0aae 0F90 pop __tmp_reg__
1352 0ab0 1F90 pop __zero_reg__
1353 0ab2 1895 reti
1354 /* epilogue end (size=25) */
1355 /* function __vector_24 size 1081 (1031) */
1357 .comm Aktuell_Nick,2,1
1358 .comm Aktuell_Roll,2,1
1359 .comm Aktuell_Gier,2,1
1360 .comm Aktuell_ax,2,1
1361 .comm Aktuell_ay,2,1
1362 .comm Aktuell_az,2,1
1363 .comm StartLuftdruck,2,1
1364 .comm DruckOffsetSetting,1,1
1365 .comm Mixer,77,1
1366 /* File "analog.c": code 1421 = 0x058d (1350), prologues 35, epilogues 36 */
DEFINED SYMBOLS
*ABS*:00000000 analog.c
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:3 *ABS*:0000003f __SREG__
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:4 *ABS*:0000003e __SP_H__
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:5 *ABS*:0000003d __SP_L__
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:14 .data:00000000 AdReady
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:21 .bss:00000000 GyroDefektG
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:27 .bss:00000001 GyroDefektR
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:33 .bss:00000002 GyroDefektN
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:39 .data:00000001 AnalogOffsetGier
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:44 .data:00000002 AnalogOffsetRoll
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:49 .data:00000003 AnalogOffsetNick
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:56 .bss:00000003 ZaehlMessungen
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:62 .bss:00000005 VarioMeter
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:68 .bss:00000007 ExpandBaro
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:74 .data:00000004 MessLuftdruck
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:81 .bss:00000008 SummenHoehe
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:87 .data:00000006 Luftdruck
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:94 .bss:0000000c messanzahl_AccHoch
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:100 .bss:0000000d AdWertAccHoch
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:106 .bss:0000000f AdWertAccNick
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:112 .bss:00000011 AdWertAccRoll
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:118 .bss:00000013 AdWertGier
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:124 .bss:00000015 AdWertRoll
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:130 .bss:00000017 AdWertNick
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:136 .data:0000000a HiResRoll
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:141 .data:0000000c HiResNick
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:148 .bss:00000019 AdWertGierFilter
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:154 .bss:0000001b AdWertRollFilter
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:160 .bss:0000001d AdWertNickFilter
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:166 .data:0000000e UBat
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:171 .text:00000000 ADC_Init
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:185 .progmem.data:00000000 __c.12
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:190 .text:0000000c SucheLuftruckOffset
*COM*:00000001 DruckOffsetSetting
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:297 .progmem.data:00000002 __c.11
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:302 .text:000000c4 SucheGyroOffset
.bss:0000001f kanal.0
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:500 .bss:00000020 state.1
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:501 .bss:00000021 gier1.2
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:502 .bss:00000023 roll1.3
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:503 .bss:00000025 nick1.4
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:504 .bss:00000027 nick_filter.5
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:505 .bss:00000029 roll_filter.6
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:506 .bss:0000002b accy.7
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:507 .bss:0000002d accx.8
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:508 .bss:0000002f tmpLuftdruck.9
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:509 .bss:00000033 messanzahl_Druck.10
C:\Users\Bernd\AppData\Local\Temp/ccuiIOA0.s:513 .text:00000274 __vector_24
*COM*:00000002 Aktuell_ax
*COM*:00000002 Aktuell_ay
*COM*:00000002 StartLuftdruck
*COM*:00000002 Aktuell_az
*COM*:00000002 Aktuell_Nick
*COM*:00000002 Aktuell_Roll
*COM*:00000002 Aktuell_Gier
*COM*:0000004d Mixer
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
EEPromArray
Delay_ms_Mess
_printf_P
SetDelay
twi_state
i2c_start
CheckDelay
__epilogue_restores__
__tablejump2__
NeutralAccX
NeutralAccY
__mulsi3
HoehenWert
AdNeutralRoll
AdNeutralNick
NeutralAccZ
__subsf3
__fixsfsi
__ltsf2
__addsf3
modell_fliegt
Mess_Integral_Hoch
__udivmodhi4
__gtsf2
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/eeprom.c
0,0 → 1,412
/*****************************************************************************************************************************
* File: eeprom.c
*
* Purpose: storing or loading the EEPROM values to RAM or writing them to EE_Parameter
*
* Functions: void DefaultStickMapping(void) // stick setting at RC control for incoming sum signal chain
* void DefaultKonstanten3(void) //
* void DefaultKonstanten2(void) //
* void DefaultKonstanten1(void) //
* void ReadParameterSet(unsigned char number, unsigned char *buffer, unsigned char length)
* void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length)
* unsigned char GetActiveParamSetNumber(void)
* void SetActiveParamSetNumber(unsigned char number)
*
*****************************************************************************************************************************/
#include "eeprom.h"
 
 
unsigned char EEPromArray[E2END+1] EEMEM; // E2END = 2047
// wird im EEPROM deklariert
// in den I/O-Headern wird die letzte EEPROM-Adresse als E2END definiert
// #define EEMEM __attribute__ ((section (".eeprom")))
// EEPROM Size = 2 Kbytes // Page Size = 8 bytes // No. of Pages = 256 // siehe Atmega644 manual S287
 
 
// ---------------------------------------------------------------------------------------------------------------------------
// + Konstanten
// + 0-250 -> normale Werte
// + 251 -> Poti1
// + 252 -> Poti2
// + 253 -> Poti3
// ---------------------------------------------------------------------------------------------------------------------------
 
 
//-----------------------------------------------------------------------------------------------------------------------------
// stick setting at RC control for incoming sum signal chain
//-----------------------------------------------------------------------------------------------------------------------------
void DefaultStickMapping(void) // remote control is set to mode 2
{
EE_Parameter.Kanalbelegung[K_NICK] = 3; // #define K_NICK 0 // Koptertool -> Einstellungen -> Kanäle -> "NICK"
EE_Parameter.Kanalbelegung[K_ROLL] = 2; // #define K_ROLL 1 // Koptertool -> Einstellungen -> Kanäle -> "ROLL"
EE_Parameter.Kanalbelegung[K_GAS] = 1; // #define K_GAS 2 // Koptertool -> Einstellungen -> Kanäle -> "GAS"
EE_Parameter.Kanalbelegung[K_GIER] = 4; // #define K_GIER 3 // Koptertool -> Einstellungen -> Kanäle -> "Gier"
EE_Parameter.Kanalbelegung[K_POTI1] = 5; // #define K_POTI1 4 // Koptertool -> Einstellungen -> Kanäle -> "POTI1"
EE_Parameter.Kanalbelegung[K_POTI2] = 6; // #define K_POTI2 5 // Koptertool -> Einstellungen -> Kanäle -> "POTI2"
EE_Parameter.Kanalbelegung[K_POTI3] = 7; // #define K_POTI3 6 // Koptertool -> Einstellungen -> Kanäle -> "POTI3"
EE_Parameter.Kanalbelegung[K_POTI4] = 8; // #define K_POTI4 7 // Koptertool -> Einstellungen -> Kanäle -> "POTI4"
}
//-----------------------------------------------------------------------------------------------------------------------------
 
 
 
//-----------------------------------------------------------------------------------------------------------------------------
void DefaultKonstanten3(void)
{
EE_Parameter.GlobalConfig = CFG_KOMPASS_AKTIV;
//
// #define CFG_HOEHENREGELUNG 0x01
// #define CFG_HOEHEN_SCHALTER 0x02
// #define CFG_HEADING_HOLD 0x04
// #define CFG_KOMPASS_AKTIV 0x08
// #define CFG_KOMPASS_FIX 0x10
// #define CFG_GPS_AKTIV 0x20
// #define CFG_ACHSENKOPPLUNG_AKTIV 0x40
// #define CFG_DREHRATEN_BEGRENZER 0x80
EE_Parameter.ExtraConfig = CFG2_HEIGHT_LIMIT;
//
// #define CFG2_HEIGHT_LIMIT 0x01 // Koptertool -> Einstellungen -> Höhe -> Höhenregelung aktiv -> "Höhenbegrenzung"
// #define CFG2_VARIO_BEEP 0x02 // Koptertool -> Einstellungen -> Höhe -> Höhenregelung aktiv -> "akustisches Variometer"
// #define CFG_SENSITIVE_RC 0x04 // Koptertool -> Einstellungen -> Konfiguration -> "Erweiterte Empfangssignalprüfung"
// #define CFG_3_3V_REFERENCE 0x08 // Koptertool -> Einstellungen -> Verschiedenes -> "Voltage Reference" 3.0V
// #define CFG_NO_RCOFF_BEEPING 0x10 // Koptertool -> Einstellungen -> Verschiedenes -> "kein Signalton ohne aktiven Empfänger"
// #define CFG_GPS_AID 0x20 // Koptertool -> ???
// #define CFG_LEARNABLE_CAREFREE 0x40 // Koptertool -> Einstellungen -> Easy Setup -> "Teachable Carefree"
// #define CFG_IGNORE_MAG_ERR_AT_STARTUP 0x80
EE_Parameter.Hoehe_MinGas = 30;
EE_Parameter.MaxHoehe = 251; // Wert : 0-250 251 -> Poti1
EE_Parameter.Hoehe_P = 10; // Wert : 0-32
EE_Parameter.Luftdruck_D = 30; // Wert : 0-250
EE_Parameter.Hoehe_ACC_Wirkung = 30; // Wert : 0-250
EE_Parameter.Hoehe_HoverBand = 5; // Wert : 0-250
EE_Parameter.Hoehe_GPS_Z = 64; // Wert : 0-250
EE_Parameter.Hoehe_StickNeutralPoint = 0; // Wert : 0-250 (0 = Hoover-Estimation)
EE_Parameter.Hoehe_Verstaerkung = 15; // Wert : 0-50
EE_Parameter.Stick_P = 8; // Wert : 1-6
EE_Parameter.Stick_D = 16; // Wert : 0-64
EE_Parameter.Gier_P = 6; // Wert : 1-20
EE_Parameter.Gas_Min = 8; // Wert : 0-32
EE_Parameter.Gas_Max = 230; // Wert : 33-250
EE_Parameter.GyroAccFaktor = 30; // Wert : 1-64
EE_Parameter.KompassWirkung = 128; // Wert : 0-250
EE_Parameter.Gyro_P = 100; // Wert : 0-250
EE_Parameter.Gyro_I = 120; // Wert : 0-250
EE_Parameter.Gyro_D = 3; // Wert : 0-250
EE_Parameter.Gyro_Gier_P = 100; // Wert : 0-250
EE_Parameter.Gyro_Gier_I = 120; // Wert : 0-250
EE_Parameter.UnterspannungsWarnung = 33; // Wert : 0-250 // Automatische Zellenerkennung bei < 50
EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust
EE_Parameter.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation
EE_Parameter.I_Faktor = 16;
EE_Parameter.UserParam1 = 0; // zur freien Verwendung
EE_Parameter.UserParam2 = 0; // zur freien Verwendung
EE_Parameter.UserParam3 = 0; // zur freien Verwendung
EE_Parameter.UserParam4 = 0; // zur freien Verwendung
EE_Parameter.UserParam5 = 0; // zur freien Verwendung
EE_Parameter.UserParam6 = 0; // zur freien Verwendung
EE_Parameter.UserParam7 = 0; // zur freien Verwendung
EE_Parameter.UserParam8 = 0; // zur freien Verwendung
EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos
EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo
EE_Parameter.ServoCompInvert = 1; // Wert : 0-250 // Richtung Einfluss Gyro/Servo
EE_Parameter.ServoNickMin = 0; // Wert : 0-250 // Anschlag
EE_Parameter.ServoNickMax = 250; // Wert : 0-250 // Anschlag
EE_Parameter.ServoNickRefresh = 6;
EE_Parameter.ServoRollControl = 100; // Wert : 0-250 // Stellung des Servos
EE_Parameter.ServoRollComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo
EE_Parameter.ServoRollMin = 0; // Wert : 0-250 // Anschlag
EE_Parameter.ServoRollMax = 250; // Wert : 0-250 // Anschlag
EE_Parameter.LoopGasLimit = 50;
EE_Parameter.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag
EE_Parameter.LoopHysterese = 50;
EE_Parameter.BitConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts
EE_Parameter.AchsKopplung1 = 90;
EE_Parameter.AchsKopplung2 = 80;
EE_Parameter.CouplingYawCorrection = 70;
EE_Parameter.WinkelUmschlagNick = 85;
EE_Parameter.WinkelUmschlagRoll = 85;
EE_Parameter.GyroAccAbgleich = 32; // 1/k
EE_Parameter.Driftkomp = 32;
EE_Parameter.DynamicStability = 50;
EE_Parameter.J16Bitmask = 95;
EE_Parameter.J17Bitmask = 243;
EE_Parameter.WARN_J16_Bitmask = 0xAA;
EE_Parameter.WARN_J17_Bitmask = 0xAA;
EE_Parameter.J16Timing = 30;
EE_Parameter.J17Timing = 30;
EE_Parameter.NaviGpsModeControl = 252;
EE_Parameter.NaviGpsGain = 100;
EE_Parameter.NaviGpsP = 90;
EE_Parameter.NaviGpsI = 90;
EE_Parameter.NaviGpsD = 90;
EE_Parameter.NaviGpsPLimit = 75;
EE_Parameter.NaviGpsILimit = 75;
EE_Parameter.NaviGpsDLimit = 75;
EE_Parameter.NaviGpsACC = 0;
EE_Parameter.NaviGpsMinSat = 6;
EE_Parameter.NaviStickThreshold = 8;
EE_Parameter.NaviWindCorrection = 90;
EE_Parameter.NaviSpeedCompensation = 30;
EE_Parameter.NaviOperatingRadius = 100;
EE_Parameter.NaviAngleLimitation = 100;
EE_Parameter.NaviPH_LoginTime = 4;
memcpy(EE_Parameter.Name, "Beginner\0", 12);
}
//-----------------------------------------------------------------------------------------------------------------------------
 
 
 
 
//-----------------------------------------------------------------------------------------------------------------------------
void DefaultKonstanten2(void)
{
EE_Parameter.GlobalConfig = CFG_ACHSENKOPPLUNG_AKTIV | CFG_KOMPASS_AKTIV | CFG_GPS_AKTIV | CFG_HOEHEN_SCHALTER;
EE_Parameter.ExtraConfig = CFG2_HEIGHT_LIMIT;// | CFG2_VARIO_BEEP | CFG_SENSITIVE_RC
EE_Parameter.Hoehe_MinGas = 30;
EE_Parameter.MaxHoehe = 251; // Wert : 0-250 251 -> Poti1
EE_Parameter.Hoehe_P = 10; // Wert : 0-32
EE_Parameter.Luftdruck_D = 30; // Wert : 0-250
EE_Parameter.Hoehe_ACC_Wirkung = 30; // Wert : 0-250
EE_Parameter.Hoehe_HoverBand = 5; // Wert : 0-250
EE_Parameter.Hoehe_GPS_Z = 64; // Wert : 0-250
EE_Parameter.Hoehe_StickNeutralPoint = 0; // Wert : 0-250 (0 = Hoover-Estimation)
EE_Parameter.Hoehe_Verstaerkung = 15; // Wert : 0-50
EE_Parameter.Stick_P = 10; // Wert : 1-6
EE_Parameter.Stick_D = 16; // Wert : 0-64
EE_Parameter.Gier_P = 6; // Wert : 1-20
EE_Parameter.Gas_Min = 8; // Wert : 0-32
EE_Parameter.Gas_Max = 230; // Wert : 33-250
EE_Parameter.GyroAccFaktor = 30; // Wert : 1-64
EE_Parameter.KompassWirkung = 128; // Wert : 0-250
EE_Parameter.Gyro_P = 90; // Wert : 0-250
EE_Parameter.Gyro_I = 120; // Wert : 0-250
EE_Parameter.Gyro_D = 3; // Wert : 0-250
EE_Parameter.Gyro_Gier_P = 90; // Wert : 0-250
EE_Parameter.Gyro_Gier_I = 120; // Wert : 0-250
EE_Parameter.UnterspannungsWarnung = 33; // Wert : 0-250 ( Automatische Zellenerkennung bei < 50)
EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust
EE_Parameter.NotGasZeit = 30; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation
EE_Parameter.I_Faktor = 32;
EE_Parameter.UserParam1 = 0; // zur freien Verwendung
EE_Parameter.UserParam2 = 0; // zur freien Verwendung
EE_Parameter.UserParam3 = 0; // zur freien Verwendung
EE_Parameter.UserParam4 = 0; // zur freien Verwendung
EE_Parameter.UserParam5 = 0; // zur freien Verwendung
EE_Parameter.UserParam6 = 0; // zur freien Verwendung
EE_Parameter.UserParam7 = 0; // zur freien Verwendung
EE_Parameter.UserParam8 = 0; // zur freien Verwendung
EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos
EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo
EE_Parameter.ServoCompInvert = 1; // Wert : 0-250 // Richtung Einfluss Gyro/Servo
EE_Parameter.ServoNickMin = 0; // Wert : 0-250 // Anschlag
EE_Parameter.ServoNickMax = 250; // Wert : 0-250 // Anschlag
EE_Parameter.ServoNickRefresh = 6;
EE_Parameter.ServoRollControl = 100; // Wert : 0-250 // Stellung des Servos
EE_Parameter.ServoRollComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo
EE_Parameter.ServoRollMin = 0; // Wert : 0-250 // Anschlag
EE_Parameter.ServoRollMax = 250; // Wert : 0-250 // Anschlag
EE_Parameter.LoopGasLimit = 50;
EE_Parameter.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag
EE_Parameter.LoopHysterese = 50;
EE_Parameter.BitConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts
EE_Parameter.AchsKopplung1 = 90;
EE_Parameter.AchsKopplung2 = 80;
EE_Parameter.CouplingYawCorrection = 60;
EE_Parameter.WinkelUmschlagNick = 85;
EE_Parameter.WinkelUmschlagRoll = 85;
EE_Parameter.GyroAccAbgleich = 32; // 1/k
EE_Parameter.Driftkomp = 32;
EE_Parameter.DynamicStability = 75;
EE_Parameter.J16Bitmask = 95;
EE_Parameter.J17Bitmask = 243;
EE_Parameter.WARN_J16_Bitmask = 0xAA;
EE_Parameter.WARN_J17_Bitmask = 0xAA;
EE_Parameter.J16Timing = 20;
EE_Parameter.J17Timing = 20;
EE_Parameter.NaviGpsModeControl = 252;
EE_Parameter.NaviGpsGain = 100;
EE_Parameter.NaviGpsP = 90;
EE_Parameter.NaviGpsI = 90;
EE_Parameter.NaviGpsD = 90;
EE_Parameter.NaviGpsPLimit = 75;
EE_Parameter.NaviGpsILimit = 75;
EE_Parameter.NaviGpsDLimit = 75;
EE_Parameter.NaviGpsACC = 0;
EE_Parameter.NaviGpsMinSat = 6;
EE_Parameter.NaviStickThreshold = 8;
EE_Parameter.NaviWindCorrection = 90;
EE_Parameter.NaviSpeedCompensation = 30;
EE_Parameter.NaviOperatingRadius = 100;
EE_Parameter.NaviAngleLimitation = 100;
EE_Parameter.NaviPH_LoginTime = 4;
memcpy(EE_Parameter.Name, "Normal\0", 12);
}
//-----------------------------------------------------------------------------------------------------------------------------
 
 
 
//-----------------------------------------------------------------------------------------------------------------------------
void DefaultKonstanten1(void)
{
EE_Parameter.GlobalConfig = CFG_ACHSENKOPPLUNG_AKTIV | CFG_KOMPASS_AKTIV | CFG_GPS_AKTIV | CFG_HOEHEN_SCHALTER;
EE_Parameter.ExtraConfig = CFG2_HEIGHT_LIMIT;// | CFG2_VARIO_BEEP | CFG_SENSITIVE_RC
EE_Parameter.Hoehe_MinGas = 30;
EE_Parameter.MaxHoehe = 251; // Wert : 0-250 251 -> Poti1
EE_Parameter.Hoehe_P = 10; // Wert : 0-32
EE_Parameter.Luftdruck_D = 30; // Wert : 0-250
EE_Parameter.Hoehe_ACC_Wirkung = 30; // Wert : 0-250
EE_Parameter.Hoehe_HoverBand = 5; // Wert : 0-250
EE_Parameter.Hoehe_GPS_Z = 64; // Wert : 0-250
EE_Parameter.Hoehe_StickNeutralPoint = 0; // Wert : 0-250 (0 = Hoover-Estimation)
EE_Parameter.Hoehe_Verstaerkung = 20; // Wert : 0-50
EE_Parameter.Stick_P = 14; // Wert : 1-6
EE_Parameter.Stick_D = 16; // Wert : 0-64
EE_Parameter.Gier_P = 12; // Wert : 1-20
EE_Parameter.Gas_Min = 8; // Wert : 0-32
EE_Parameter.Gas_Max = 230; // Wert : 33-250
EE_Parameter.GyroAccFaktor = 30; // Wert : 1-64
EE_Parameter.KompassWirkung = 128; // Wert : 0-250
EE_Parameter.Gyro_P = 80; // Wert : 0-250
EE_Parameter.Gyro_I = 150; // Wert : 0-250
EE_Parameter.Gyro_D = 3; // Wert : 0-250
EE_Parameter.Gyro_Gier_P = 80; // Wert : 0-250
EE_Parameter.Gyro_Gier_I = 150; // Wert : 0-250
EE_Parameter.UnterspannungsWarnung = 33; // Wert : 0-250 ( Automatische Zellenerkennung bei < 50)
EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust
EE_Parameter.NotGasZeit = 30; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation
EE_Parameter.I_Faktor = 32;
EE_Parameter.UserParam1 = 0; // zur freien Verwendung
EE_Parameter.UserParam2 = 0; // zur freien Verwendung
EE_Parameter.UserParam3 = 0; // zur freien Verwendung
EE_Parameter.UserParam4 = 0; // zur freien Verwendung
EE_Parameter.UserParam5 = 0; // zur freien Verwendung
EE_Parameter.UserParam6 = 0; // zur freien Verwendung
EE_Parameter.UserParam7 = 0; // zur freien Verwendung
EE_Parameter.UserParam8 = 0; // zur freien Verwendung
EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos
EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo
EE_Parameter.ServoCompInvert = 1; // Wert : 0-250 // Richtung Einfluss Gyro/Servo
EE_Parameter.ServoNickMin = 0; // Wert : 0-250 // Anschlag
EE_Parameter.ServoNickMax = 250; // Wert : 0-250 // Anschlag
EE_Parameter.ServoNickRefresh = 6;
EE_Parameter.ServoRollControl = 100; // Wert : 0-250 // Stellung des Servos
EE_Parameter.ServoRollComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo
EE_Parameter.ServoRollMin = 0; // Wert : 0-250 // Anschlag
EE_Parameter.ServoRollMax = 250; // Wert : 0-250 // Anschlag
EE_Parameter.LoopGasLimit = 50;
EE_Parameter.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag
EE_Parameter.LoopHysterese = 50;
EE_Parameter.BitConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt
EE_Parameter.AchsKopplung1 = 90;
EE_Parameter.AchsKopplung2 = 80;
EE_Parameter.CouplingYawCorrection = 1;
EE_Parameter.WinkelUmschlagNick = 85;
EE_Parameter.WinkelUmschlagRoll = 85;
EE_Parameter.GyroAccAbgleich = 16; // 1/k
EE_Parameter.Driftkomp = 32;
EE_Parameter.DynamicStability = 100;
EE_Parameter.J16Bitmask = 95;
EE_Parameter.J17Bitmask = 243;
EE_Parameter.WARN_J16_Bitmask = 0xAA;
EE_Parameter.WARN_J17_Bitmask = 0xAA;
EE_Parameter.J16Timing = 15;
EE_Parameter.J17Timing = 15;
EE_Parameter.NaviGpsModeControl = 252;
EE_Parameter.NaviGpsGain = 100;
EE_Parameter.NaviGpsP = 90;
EE_Parameter.NaviGpsI = 90;
EE_Parameter.NaviGpsD = 90;
EE_Parameter.NaviGpsPLimit = 75;
EE_Parameter.NaviGpsILimit = 75;
EE_Parameter.NaviGpsDLimit = 75;
EE_Parameter.NaviGpsACC = 0;
EE_Parameter.NaviGpsMinSat = 6;
EE_Parameter.NaviStickThreshold = 8;
EE_Parameter.NaviWindCorrection = 90;
EE_Parameter.NaviSpeedCompensation = 30;
EE_Parameter.NaviOperatingRadius = 100;
EE_Parameter.NaviAngleLimitation = 100;
EE_Parameter.NaviPH_LoginTime = 4;
memcpy(EE_Parameter.Name, "Sport\0", 12);
}
//-----------------------------------------------------------------------------------------------------------------------------
 
 
 
//-----------------------------------------------------------------------------------------------------
// Parametersatz aus dem EEPROM lesen
// Nummer [1..5] möglich
//-----------------------------------------------------------------------------------------------------
void ReadParameterSet(unsigned char number, unsigned char *buffer, unsigned char length)
{
if((number > 5)||(number < 1)) number = 3;
eeprom_read_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * (number - 1)], length); // #define EEPROM_ADR_PARAM_BEGIN 100
LED_Init (); // initialisiert die Schalt-Ausgänge PORTC2 und PORTC3 an SV2 (control of J16 & J17)
}
//-----------------------------------------------------------------------------------------------------
 
 
 
//-----------------------------------------------------------------------------------------------------
// Parametersatz vom ROM ins EEPROM schreiben
// Nummer [1..5] ist die mögliche Nummer des Paramtersatzes
// *buffer ist die Adresse, woher die Bytes kommen, die kopiert werden sollen
// length ist die Anzahl der zu kopierenden Bytes
//------------------------------------------------------------------------------------------------------------------------------------
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length)
{
if(number > 5) number = 5;
if(number < 1) return;
eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * (number - 1)], length); // #define EEPROM_ADR_PARAM_BEGIN 100
// eeprom_write_block(buffer, &EEPromArray[100 + length * (number - 1)], length); // aufgelöst
eeprom_write_byte(&EEPromArray[EEPROM_ADR_PARAM_LENGTH], length); // Länge der Datensätze merken // #define EEPROM_ADR_PARAM_LENGTH 98
// eeprom_write_byte(&EEPromArray[98], length); // aufgelöst // lenght = 101
eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_CHANNELS], 8); // 8 Kanäle merken // #define EEPROM_ADR_CHANNELS 80
// eeprom_write_block(buffer, &EEPromArray[80], 8); // aufgelöst
SetActiveParamSetNumber(number);
LED_Init(); // initialisiert die Schalt-Ausgänge PORTC2 und PORTC3 an SV2 (control of J16 & J17)
}
//------------------------------------------------------------------------------------------------------------------------------------
 
 
 
//-------------------------------------------------------------------------------------------------------------------------------------
unsigned char GetActiveParamSetNumber(void) // hier wird herausgelesen, mit welchem Parametersatz gefolgen werden soll
{ // Beginner=3,Normal=2,Sport=1
unsigned char set;
set = eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET]); // #define EEPROM_ADR_ACTIVE_SET 2
if((set > 5) || (set < 1))
{
set = 3; // default = Beginner
SetActiveParamSetNumber(set); // diesen Parametersatz als aktuell merken
}
return(set);
}
//-------------------------------------------------------------------------------------------------------------------------------------
 
 
 
//-------------------------------------------------------------------------------------------------------------------------------------
void SetActiveParamSetNumber(unsigned char number)
{
if(number > 5) number = 5;
if(number < 1) return; // #define EEPROM_ADR_ACTIVE_SET 2
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], number); // diesen Parametersatz im EEPROM als aktuell merken
}
//-------------------------------------------------------------------------------------------------------------------------------------
 
 
 
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/eeprom.h
0,0 → 1,39
/*****************************************************************************************************************************
* File: eeprom.h
* Purpose: header of eeprom.c
*****************************************************************************************************************************/
#ifndef _EEPROM_H
#define _EEPROM_H
 
#define EE_DATENREVISION 80 // Parameter fürs Koptertool; entspricht den EEPROM-Daten von FlightCtrl Version V0.76g
#define MIXER_REVISION 1 // wird angepasst, wenn sich die Mixer-Daten geändert haben
 
#define EEPROM_ADR_VALID 1 // für EEPROM Datenrevision = 80 bei V0.76g
#define EEPROM_ADR_ACTIVE_SET 2 // für den aktiven Parametersatz 3=Beginner 2=Normal 1=Sport
#define EEPROM_ADR_LAST_OFFSET 3 // Luftdruck Offset siehe analog.c Zeile 44
#define EEPROM_ADR_ACC_NICK 4
#define EEPROM_ADR_ACC_ROLL 6
#define EEPROM_ADR_ACC_Z 8
#define EEPROM_ADR_MINUTES 10 // FlugMinuten Gesamt über alle Flüge
#define EEPROM_ADR_MINUTES2 14 // FlugMinuten Einzelflug
#define EEPROM_ADR_CHANNELS 80 // Ablageadresse der Kanäle
#define EEPROM_ADR_PARAM_LENGTH 98 // Länge des structs mk_param_struct verwendet für EE_Parameter = 101
#define EEPROM_ADR_PARAM_BEGIN 100 // Startadresse der Abbilder vom struct mk_param_struct also EE_Parameter
#define EEPROM_ADR_MIXER_TABLE 1000 // 1001 - 1100
 
#ifndef EEMEM
#define EEMEM __attribute__ ((section (".eeprom")))
#endif
 
//-----------------------------------------------------------------------------------------------------------------------------------
extern unsigned char EEPromArray[];
 
 
//----------------------------------------- declaration of functions --------------------------
void ReadParameterSet (unsigned char number, unsigned char *buffer, unsigned char length);
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length);
extern unsigned char GetActiveParamSetNumber(void);
void SetActiveParamSetNumber(unsigned char number);
 
#endif
//*** EOF: __EEPROM_H ***********************************************************************************************************
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/fc.c
0,0 → 1,1817
/*****************************************************************************************************************************
* File: fc.c
*
* Purpose: Flight Control
*
* Functions: int MotorSmoothing(int neu, int alt)
* void Piep(unsigned char Anzahl, unsigned int dauer)
* void SetNeutral(void)
* void Mittelwert(void)
* void CalibrierMittelwert(void)
* void SendMotorData(void)
* void ParameterZuordnung(void)
* void MotorRegler(void)
*
*****************************************************************************************************************************/
#include "fc.h"
 
#include "main.h"
#include "eeprom.c"
#include "mymath.h"
#include "isqrt.h" // wird nur gebraucht wegen Zeile 1265 // CosAttitude = (int16_t)ihypot(tmp_int, tmp_int2);
 
unsigned char h,m,s;
unsigned int BaroExpandActive = 0;
volatile unsigned int I2CTimeout = 100;
 
int MesswertNick,MesswertRoll,MesswertGier,MesswertGierBias, RohMesswertNick,RohMesswertRoll;
 
int TrimNick, TrimRoll;
int AdNeutralGierBias;
int AdNeutralNick = 0,AdNeutralRoll = 0,AdNeutralGier = 0,StartNeutralRoll = 0,StartNeutralNick = 0;
int Mittelwert_AccNick, Mittelwert_AccRoll,Mittelwert_AccHoch, NeutralAccX=0, NeutralAccY=0;
int NaviAccNick, NaviAccRoll,NaviCntAcc = 0;
 
volatile float NeutralAccZ = 0;
 
unsigned char CosinusNickWinkel = 0, CosinusRollWinkel = 0;
 
long IntegralNick = 0; // dieser Wert wird im 3D Koptertool angezeigt
long IntegralNick2 = 0;
long IntegralRoll = 0;
long IntegralRoll2 = 0;
long IntegralAccNick = 0,IntegralAccRoll = 0,IntegralAccZ = 0;
long Integral_Gier = 0;
long Mess_IntegralNick = 0,Mess_IntegralNick2 = 0;
long Mess_IntegralRoll = 0,Mess_IntegralRoll2 = 0;
long Mess_Integral_Gier = 0,Mess_Integral_Gier2 = 0;
long MittelIntegralNick, MittelIntegralRoll, MittelIntegralNick2, MittelIntegralRoll2;
volatile long Mess_Integral_Hoch = 0;
 
int KompassValue = 0;
int KompassStartwert = 0;
int KompassRichtung = 0;
unsigned int KompassSignalSchlecht = 500;
long ErsatzKompass;
int ErsatzKompassInGrad; // Kompasswert in Grad
 
char MotorenEin = 0;
unsigned char MAX_GAS,MIN_GAS;
 
unsigned char HoehenReglerAktiv = 0;
unsigned char TrichterFlug = 0;
long Umschlag180Nick = 250000L, Umschlag180Roll = 250000L;
int GierGyroFehler = 0;
char GyroFaktor,GyroFaktorGier;
char IntegralFaktor,IntegralFaktorGier;
int DiffNick,DiffRoll;
int Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0;
 
volatile unsigned char SenderOkay = 0;
volatile unsigned char SenderRSSI = 0;
 
int StickNick = 0,StickRoll = 0,StickGier = 0,StickGas = 0; // Stick aus der Fernsteuerung
 
long HoehenWert = 0;
long SollHoehe = 0;
int LageKorrekturRoll = 0,LageKorrekturNick = 0;
 
int Ki = 10300 / 33;
 
unsigned char Looping_Nick = 0,Looping_Roll = 0;
unsigned char Looping_Links = 0, Looping_Rechts = 0, Looping_Unten = 0, Looping_Oben = 0;
 
unsigned char Parameter_Luftdruck_D = 48; // Wert : 0-250
unsigned char Parameter_MaxHoehe = 251; // Wert : 0-250
unsigned char Parameter_Hoehe_P = 16; // Wert : 0-32
unsigned char Parameter_Hoehe_ACC_Wirkung = 58; // Wert : 0-250
unsigned char Parameter_KompassWirkung = 64; // Wert : 0-250
unsigned char Parameter_Hoehe_GPS_Z = 64; // Wert : 0-250
 
unsigned char Parameter_Gyro_D = 8; // Wert : 0-250
unsigned char Parameter_Gyro_P = 150; // Wert : 10-250
unsigned char Parameter_Gyro_I = 150; // Wert : 0-250
unsigned char Parameter_Gyro_Gier_P = 150; // Wert : 10-250
unsigned char Parameter_Gyro_Gier_I = 150; // Wert : 10-250
unsigned char Parameter_Gier_P = 2; // Wert : 1-20
unsigned char Parameter_I_Faktor = 10; // Wert : 1-20
 
unsigned char Parameter_UserParam1 = 0;
unsigned char Parameter_UserParam2 = 0;
unsigned char Parameter_UserParam3 = 0;
unsigned char Parameter_UserParam4 = 0;
unsigned char Parameter_UserParam5 = 0;
unsigned char Parameter_UserParam6 = 0;
unsigned char Parameter_UserParam7 = 0;
unsigned char Parameter_UserParam8 = 0;
unsigned char Parameter_ServoNickControl = 100;
unsigned char Parameter_ServoRollControl = 100;
unsigned char Parameter_LoopGasLimit = 70;
unsigned char Parameter_AchsKopplung1 = 90;
unsigned char Parameter_AchsKopplung2 = 65;
unsigned char Parameter_CouplingYawCorrection = 64;
unsigned char Parameter_DynamicStability = 100;
unsigned char Parameter_J16Bitmask; // for the J16 Output
unsigned char Parameter_J16Timing; // for the J16 Output
unsigned char Parameter_J17Bitmask; // for the J17 Output
unsigned char Parameter_J17Timing; // for the J17 Output
unsigned char Parameter_NaviGpsModeControl; // Parameters for the Naviboard
unsigned char Parameter_NaviGpsGain;
unsigned char Parameter_NaviGpsP;
unsigned char Parameter_NaviGpsI;
unsigned char Parameter_NaviGpsD;
unsigned char Parameter_NaviGpsACC;
unsigned char Parameter_NaviOperatingRadius;
unsigned char Parameter_NaviWindCorrection;
unsigned char Parameter_NaviSpeedCompensation;
unsigned char Parameter_ExternalControl;
 
struct mk_param_struct EE_Parameter; // definiert in fc.h Zeile 80
 
signed int ExternStickNick = 0,ExternStickRoll = 0,ExternStickGier = 0, ExternHoehenValue = -20;
 
int MaxStickNick = 0,MaxStickRoll = 0;
unsigned int modell_fliegt = 0;
volatile unsigned char MikroKopterFlags = 0;
long GIER_GRAD_FAKTOR = 1291;
signed int KopplungsteilNickRoll,KopplungsteilRollNick;
unsigned char RequiredMotors = 4;
unsigned char Motor[MAX_MOTORS];
signed int tmp_motorwert[MAX_MOTORS];
unsigned char LoadHandler = 0;
 
//------------------------------------------------------------ Definitionen --------------------------------------
#define LIMIT_MIN(value, min) {if(value < min) value = min;}
#define LIMIT_MAX(value, max) {if(value > max) value = max;}
#define LIMIT_MIN_MAX(value, min, max) {if(value < min) value = min; else if(value > max) value = max;}
 
 
// *****************************************************************************************************************
int MotorSmoothing(int neu, int alt)
{
int motor;
if(neu > alt) motor = (1*(int)alt + neu) / 2;
else motor = neu - (alt - neu)*1;
return(motor);
}
//------------------------------------------------------
 
 
// ***********************************************************
// erzeugt einen Piepton
//------------------------------------------------------
void Piep(unsigned char Anzahl, unsigned int dauer)
{
if(MotorenEin) return; //auf keinen Fall im Flug!
while(Anzahl--)
{
beeptime = dauer;
while(beeptime);
Delay_ms(dauer * 2);
}
}
//------------------------------------------------------
 
 
 
// *******************************************************************************************************************
// Nullwerte ermitteln und Startwerte festlegen
// -----------------------------------------------
void SetNeutral(void)
{
unsigned char i;
unsigned int gier_neutral=0, nick_neutral=0, roll_neutral=0;
HEF4017R_ON;
NeutralAccX = 0;
NeutralAccY = 0;
NeutralAccZ = 0;
AdNeutralNick = 0;
AdNeutralRoll = 0;
AdNeutralGier = 0;
AdNeutralGierBias = 0;
Parameter_AchsKopplung1 = 0;
Parameter_AchsKopplung2 = 0;
ExpandBaro = 0;
CalibrierMittelwert();
Delay_ms_Mess(100);
CalibrierMittelwert();
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert?
{
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset();
}
#define NEUTRAL_FILTER 32
for(i=0; i<NEUTRAL_FILTER; i++)
{
Delay_ms_Mess(10);
gier_neutral += AdWertGier;
nick_neutral += AdWertNick;
roll_neutral += AdWertRoll;
}
AdNeutralNick= (nick_neutral+NEUTRAL_FILTER/2) / (NEUTRAL_FILTER / 8);
AdNeutralRoll= (roll_neutral+NEUTRAL_FILTER/2) / (NEUTRAL_FILTER / 8);
AdNeutralGier= (gier_neutral+NEUTRAL_FILTER/2) / (NEUTRAL_FILTER);
AdNeutralGierBias = AdNeutralGier;
StartNeutralRoll = AdNeutralRoll;
StartNeutralNick = AdNeutralNick;
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK]) > 4)
{
NeutralAccY = abs(Mittelwert_AccRoll) / (2*ACC_AMPLIFY); // #define ACC_AMPLIFY 6
NeutralAccX = abs(Mittelwert_AccNick) / (2*ACC_AMPLIFY);
NeutralAccZ = Aktuell_az;
}
else
{
NeutralAccX = (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK]) * 256 + (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK+1]);
NeutralAccY = (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_ROLL]) * 256 + (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_ROLL+1]);
NeutralAccZ = (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_Z]) * 256 + (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_Z+1]);
}
MesswertNick = 0;
MesswertRoll = 0;
MesswertGier = 0;
Delay_ms_Mess(100);
Mittelwert_AccNick = ACC_AMPLIFY * (long)AdWertAccNick; // #define ACC_AMPLIFY 6
Mittelwert_AccRoll = ACC_AMPLIFY * (long)AdWertAccRoll;
IntegralNick = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccNick;
IntegralRoll = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccRoll;
Mess_IntegralNick2 = IntegralNick;
Mess_IntegralRoll2 = IntegralRoll;
Mess_Integral_Gier = 0;
StartLuftdruck = Luftdruck;
VarioMeter = 0;
Mess_Integral_Hoch = 0;
KompassStartwert = KompassValue;
//GPS_Neutral(); // no GPS available
beeptime = 50;
Umschlag180Nick = ((long) EE_Parameter.WinkelUmschlagNick * 2500L) + 15000L;
Umschlag180Roll = ((long) EE_Parameter.WinkelUmschlagRoll * 2500L) + 15000L;
ExternHoehenValue = 0;
ErsatzKompass = KompassValue * GIER_GRAD_FAKTOR; // long GIER_GRAD_FAKTOR = 1291;
GierGyroFehler = 0;
SendVersionToNavi = 1;
LED_Init();
MikroKopterFlags |= FLAG_CALIBRATE;
 
Poti1 = PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110;
Poti2 = PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110;
Poti3 = PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110;
Poti4 = PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110;
SenderOkay = 100;
//----------------------------------------------
if(ServoActive)
{
HEF4017R_ON;
DDRD |=0x80; // enable J7 -> Servo signal
}
//----------------------------------------------
}
//*** EOF: SetNeutral(void) *******************************************************************************************************
 
 
 
// ********************************************************************************************************************************
// Bearbeitet die Messwerte und legt die Mittelwerte fest
// ----------------------------------------------------------
void Mittelwert(void)
{
static signed long tmpl,tmpl2,tmpl3,tmpl4;
static signed int oldNick, oldRoll, d2Roll, d2Nick;
signed long winkel_nick, winkel_roll;
 
// MesswertGier = (signed int) AdNeutralGier - AdWertGier; // Orginalcode vorher
MesswertGier = AdWertGier - (signed int) AdNeutralGier; // Gyro ist um 180 Grad gedreht eingebaut
 
// MesswertGierBias = (signed int) AdNeutralGierBias - AdWertGier;
MesswertNick = (signed int) AdWertNickFilter / 8;
MesswertRoll = (signed int) AdWertRollFilter / 8;
RohMesswertNick = MesswertNick;
RohMesswertRoll = MesswertRoll;
 
// Beschleunigungssensor --------------------------------------------------------------------------
Mittelwert_AccNick = ((long)Mittelwert_AccNick * 3 + ((ACC_AMPLIFY * (long)AdWertAccNick))) / 4L; // #define ACC_AMPLIFY 6
Mittelwert_AccRoll = ((long)Mittelwert_AccRoll * 3 + ((ACC_AMPLIFY * (long)AdWertAccRoll))) / 4L;
Mittelwert_AccHoch = ((long)Mittelwert_AccHoch * 3 + ((long)AdWertAccHoch)) / 4L;
IntegralAccNick += ACC_AMPLIFY * AdWertAccNick; // #define ACC_AMPLIFY 6
IntegralAccRoll += ACC_AMPLIFY * AdWertAccRoll; // #define ACC_AMPLIFY 6
NaviAccNick += AdWertAccNick;
NaviAccRoll += AdWertAccRoll;
NaviCntAcc++;
IntegralAccZ += Aktuell_az - NeutralAccZ;
 
//------------------------------------------------------------
// Single Conversion at ADC
//
// ADCSRA = Analog Digital Conversion Status Register A -> ADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0
// ---------------------------------------------------------------------------------------------------
// ADEN = Writing this bit to one enables the ADC
// ADSC = start conversion
// ADATE = When this bit is written to one, Auto Triggering of the ADC is enabled
// ADIE = ADC Interrupt Enable. When this bit is written to one and the I-bit in SREG is set, the ADC Conversion Complete Interrupt is activated.
// ADPS = These bits determine the division factor between the XTAL frequency and the input clock to the ADC.
//
ANALOG_ON; // #define ANALOG_ON ADCSRA=(1<<ADEN)|(1<<ADSC)|(0<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE)
AdReady = 0;
//------------------------------------------------------------
 
if(Mess_IntegralRoll > 93000L) winkel_roll = 93000L;
else if(Mess_IntegralRoll <-93000L) winkel_roll = -93000L;
else winkel_roll = Mess_IntegralRoll;
 
if(Mess_IntegralNick > 93000L) winkel_nick = 93000L;
else if(Mess_IntegralNick <-93000L) winkel_nick = -93000L;
else winkel_nick = Mess_IntegralNick;
 
// Gier -----------------------------------------------------------------------------------------
Mess_Integral_Gier += MesswertGier;
ErsatzKompass += MesswertGier;
// Kopplungsanteil -----------------------------------------------------------------------------
if(!Looping_Nick && !Looping_Roll && (EE_Parameter.GlobalConfig & CFG_ACHSENKOPPLUNG_AKTIV))
{
tmpl3 = (MesswertRoll * winkel_nick) / 2048L;
tmpl3 *= Parameter_AchsKopplung2; //65
tmpl3 /= 4096L;
tmpl4 = (MesswertNick * winkel_roll) / 2048L;
tmpl4 *= Parameter_AchsKopplung2; //65
tmpl4 /= 4096L;
KopplungsteilNickRoll = tmpl3;
KopplungsteilRollNick = tmpl4;
tmpl4 -= tmpl3;
ErsatzKompass += tmpl4;
if(!Parameter_CouplingYawCorrection) Mess_Integral_Gier -= tmpl4/2; // Gier nachhelfen
tmpl = ((MesswertGier + tmpl4) * winkel_nick) / 2048L;
tmpl *= Parameter_AchsKopplung1; // 90
tmpl /= 4096L;
tmpl2 = ((MesswertGier + tmpl4) * winkel_roll) / 2048L;
tmpl2 *= Parameter_AchsKopplung1;
tmpl2 /= 4096L;
if(abs(MesswertGier) > 64) if(labs(tmpl) > 128 || labs(tmpl2) > 128) TrichterFlug = 1;
// MesswertGier += (Parameter_CouplingYawCorrection * tmpl4) / 256;
}
else tmpl = tmpl2 = KopplungsteilNickRoll = KopplungsteilRollNick = 0;
 
TrimRoll = tmpl - tmpl2 / 100L;
TrimNick = -tmpl2 + tmpl / 100L;
 
// Kompasswert begrenzen -----------------------------------------------------------------------------------------------
if(ErsatzKompass >= (360L * GIER_GRAD_FAKTOR)) ErsatzKompass -= 360L * GIER_GRAD_FAKTOR; // 360° Umschlag
if(ErsatzKompass < 0) ErsatzKompass += 360L * GIER_GRAD_FAKTOR;
// Roll ------------------------------------------------------------
Mess_IntegralRoll2 += MesswertRoll + TrimRoll;
Mess_IntegralRoll += MesswertRoll + TrimRoll - LageKorrekturRoll;
if(Mess_IntegralRoll > Umschlag180Roll)
{
Mess_IntegralRoll = -(Umschlag180Roll - 25000L);
Mess_IntegralRoll2 = Mess_IntegralRoll;
}
if(Mess_IntegralRoll <-Umschlag180Roll)
{
Mess_IntegralRoll = (Umschlag180Roll - 25000L);
Mess_IntegralRoll2 = Mess_IntegralRoll;
}
// Nick -------------------------------------------------------------------
Mess_IntegralNick2 += MesswertNick + TrimNick;
Mess_IntegralNick += MesswertNick + TrimNick - LageKorrekturNick;
if(Mess_IntegralNick > Umschlag180Nick)
{
Mess_IntegralNick = -(Umschlag180Nick - 25000L);
Mess_IntegralNick2 = Mess_IntegralNick;
}
if(Mess_IntegralNick <-Umschlag180Nick)
{
Mess_IntegralNick = (Umschlag180Nick - 25000L);
Mess_IntegralNick2 = Mess_IntegralNick;
}
 
Integral_Gier = Mess_Integral_Gier;
IntegralNick = Mess_IntegralNick;
IntegralRoll = Mess_IntegralRoll;
IntegralNick2 = Mess_IntegralNick2;
IntegralRoll2 = Mess_IntegralRoll2;
 
#define D_LIMIT 128
 
MesswertNick = HiResNick / 8;
MesswertRoll = HiResRoll / 8;
 
if(AdWertNick < 15) MesswertNick = -1000; if(AdWertNick < 7) MesswertNick = -2000;
if(PlatinenVersion == 10) { if(AdWertNick > 1010) MesswertNick = +1000; if(AdWertNick > 1017) MesswertNick = +2000; }
else { if(AdWertNick > 2000) MesswertNick = +1000; if(AdWertNick > 2015) MesswertNick = +2000; }
if(AdWertRoll < 15) MesswertRoll = -1000; if(AdWertRoll < 7) MesswertRoll = -2000;
if(PlatinenVersion == 10) { if(AdWertRoll > 1010) MesswertRoll = +1000; if(AdWertRoll > 1017) MesswertRoll = +2000; }
else { if(AdWertRoll > 2000) MesswertRoll = +1000; if(AdWertRoll > 2015) MesswertRoll = +2000; }
 
if(Parameter_Gyro_D)
{
d2Nick = HiResNick - oldNick;
oldNick = (oldNick + HiResNick)/2;
if(d2Nick > D_LIMIT) d2Nick = D_LIMIT;
else if(d2Nick < -D_LIMIT) d2Nick = -D_LIMIT;
MesswertNick += (d2Nick * (signed int) Parameter_Gyro_D) / 16;
d2Roll = HiResRoll - oldRoll;
oldRoll = (oldRoll + HiResRoll)/2;
if(d2Roll > D_LIMIT) d2Roll = D_LIMIT;
else if(d2Roll < -D_LIMIT) d2Roll = -D_LIMIT;
MesswertRoll += (d2Roll * (signed int) Parameter_Gyro_D) / 16;
HiResNick += (d2Nick * (signed int) Parameter_Gyro_D);
HiResRoll += (d2Roll * (signed int) Parameter_Gyro_D);
}
 
if(RohMesswertRoll > 0) TrimRoll += ((long) abs(KopplungsteilNickRoll) * Parameter_CouplingYawCorrection) / 64L;
else TrimRoll -= ((long) abs(KopplungsteilNickRoll) * Parameter_CouplingYawCorrection) / 64L;
if(RohMesswertNick > 0) TrimNick += ((long) abs(KopplungsteilRollNick) * Parameter_CouplingYawCorrection) / 64L;
else TrimNick -= ((long) abs(KopplungsteilRollNick) * Parameter_CouplingYawCorrection) / 64L;
 
if(EE_Parameter.GlobalConfig & CFG_DREHRATEN_BEGRENZER && !Looping_Nick && !Looping_Roll)
{
if(RohMesswertNick > 256) MesswertNick += 1 * (RohMesswertNick - 256);
else if(RohMesswertNick < -256) MesswertNick += 1 * (RohMesswertNick + 256);
if(RohMesswertRoll > 256) MesswertRoll += 1 * (RohMesswertRoll - 256);
else if(RohMesswertRoll < -256) MesswertRoll += 1 * (RohMesswertRoll + 256);
}
 
if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--;
if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--;
if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--;
if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--;
if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255;
if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255;
if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255;
if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255;
}
// *** EOF: Mittelwert(void) ********************************************************************************************************
 
 
 
// **********************************************************************************************************************************
// Messwerte beim Ermitteln der Nullage
// ----------------------------------------
void CalibrierMittelwert(void)
{
if(PlatinenVersion == 13) SucheGyroOffset();
ANALOG_OFF; // ADC auschalten, damit die Werte sich nicht während der Berechnung ändern
MesswertNick = AdWertNick;
MesswertRoll = AdWertRoll;
MesswertGier = AdWertGier;
Mittelwert_AccNick = ACC_AMPLIFY * (long)AdWertAccNick; // #define ACC_AMPLIFY 6
Mittelwert_AccRoll = ACC_AMPLIFY * (long)AdWertAccRoll;
Mittelwert_AccHoch = (long)AdWertAccHoch;
// ADCSRA = Analog Digital Conversion Status Register A -> ADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0
// ---------------------------------------------------------------------------------------------------
// ADEN = Writing this bit to one enables the ADC
// ADSC = start conversion
// ADATE = When this bit is written to one, Auto Triggering of the ADC is enabled
// ADIE = ADC Interrupt Enable. When this bit is written to one and the I-bit in SREG is set, the ADC Conversion Complete Interrupt is activated.
// ADPS = These bits determine the division factor between the XTAL frequency and the input clock to the ADC.
//
ANALOG_ON; // swich on ADC // #define ANALOG_ON ADCSRA=(1<<ADEN)|(1<<ADSC)|(0<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE)
if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--;
if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--;
if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--;
if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--;
if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255;
if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255;
if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255;
if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255;
 
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L;
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L;
}
// *** EOF: CalibrierMittelwert() ***************************************************************************************************
 
 
 
// ***************************************************************************************************************************
// take over the motor values from Motor[] and start I2C-Bus
// ----------------------------------------------------------
void SendMotorData(void)
{
unsigned char i;
if(!MotorenEin)
{
MikroKopterFlags &= ~(FLAG_MOTOR_RUN | FLAG_FLY);
for(i=0; i < MAX_MOTORS; i++) // #define MAX_MOTORS 4
{
if(!PC_MotortestActive) MotorTest[i] = 0;
Motor[i] = MotorTest[i];
}
if(PC_MotortestActive) PC_MotortestActive--;
}
else MikroKopterFlags |= FLAG_MOTOR_RUN; // #define FLAG_MOTOR_RUN 1
DebugOut.Analog[12] = Motor[0]; // see also fc.c line 1270
DebugOut.Analog[13] = Motor[1];
twi_state = 0; // it is assumed that all Motor[] have ther new value now -> see line 1645
motor = 0;
i2c_start(); // start I2C Interrupt Mode
}
// ***************************************************************************************************************************
 
 
 
// ********************************************************************************************************************************
// Trägt gegebenfalls das Poti als Parameter ein
//----------------------------------------------
void ParameterZuordnung(void)
{
#define CHK_POTI_MM(b,a,min,max) { if(a > 250) { if(a == 251) b = Poti1; else if(a == 252) b = Poti2; else if(a == 253) b = Poti3; else if(a == 254) b = Poti4;} else b = a; if(b <= min) b = min; else if(b >= max) b = max;}
#define CHK_POTI(b,a,min,max) { if(a > 250) { if(a == 251) b = Poti1; else if(a == 252) b = Poti2; else if(a == 253) b = Poti3; else if(a == 254) b = Poti4;} else b = a; }
CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe,0,255);
CHK_POTI_MM(Parameter_Luftdruck_D,EE_Parameter.Luftdruck_D,0,100);
CHK_POTI_MM(Parameter_Hoehe_P,EE_Parameter.Hoehe_P,0,100);
CHK_POTI(Parameter_Hoehe_ACC_Wirkung,EE_Parameter.Hoehe_ACC_Wirkung,0,255);
CHK_POTI(Parameter_Hoehe_GPS_Z,EE_Parameter.Hoehe_GPS_Z,0,255);
CHK_POTI(Parameter_KompassWirkung,EE_Parameter.KompassWirkung,0,255);
CHK_POTI_MM(Parameter_Gyro_P,EE_Parameter.Gyro_P,10,255);
CHK_POTI(Parameter_Gyro_I,EE_Parameter.Gyro_I,0,255);
CHK_POTI(Parameter_Gyro_D,EE_Parameter.Gyro_D,0,255);
CHK_POTI(Parameter_Gyro_Gier_P,EE_Parameter.Gyro_Gier_P,10,255);
CHK_POTI(Parameter_Gyro_Gier_I,EE_Parameter.Gyro_Gier_I,0,255);
CHK_POTI(Parameter_I_Faktor,EE_Parameter.I_Faktor,0,255);
CHK_POTI(Parameter_UserParam1,EE_Parameter.UserParam1,0,255);
CHK_POTI(Parameter_UserParam2,EE_Parameter.UserParam2,0,255);
CHK_POTI(Parameter_UserParam3,EE_Parameter.UserParam3,0,255);
CHK_POTI(Parameter_UserParam4,EE_Parameter.UserParam4,0,255);
CHK_POTI(Parameter_UserParam5,EE_Parameter.UserParam5,0,255);
CHK_POTI(Parameter_UserParam6,EE_Parameter.UserParam6,0,255);
CHK_POTI(Parameter_UserParam7,EE_Parameter.UserParam7,0,255);
CHK_POTI(Parameter_UserParam8,EE_Parameter.UserParam8,0,255);
CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255);
CHK_POTI(Parameter_ServoRollControl,EE_Parameter.ServoRollControl,0,255);
CHK_POTI(Parameter_LoopGasLimit,EE_Parameter.LoopGasLimit,0,255);
CHK_POTI(Parameter_AchsKopplung1, EE_Parameter.AchsKopplung1,0,255);
CHK_POTI(Parameter_AchsKopplung2, EE_Parameter.AchsKopplung2,0,255);
CHK_POTI(Parameter_CouplingYawCorrection,EE_Parameter.CouplingYawCorrection,0,255);
CHK_POTI(Parameter_DynamicStability,EE_Parameter.DynamicStability,0,255);
CHK_POTI_MM(Parameter_J16Timing,EE_Parameter.J16Timing,1,255);
CHK_POTI_MM(Parameter_J17Timing,EE_Parameter.J17Timing,1,255);
CHK_POTI(Parameter_ExternalControl,EE_Parameter.ExternalControl,0,255);
Ki = 10300 / (Parameter_I_Faktor + 1);
MAX_GAS = EE_Parameter.Gas_Max; // bei Beginner3 = 230
MIN_GAS = EE_Parameter.Gas_Min; // bei Beginner3 = 8
}
//-----------------------------------------------------------------------------------------------------------
 
// ------------------------------------------only for balance ------------------------------------
 
unsigned char ucflg1=0x01, ucflg2=0x01, ucflg3=0x01;
int ipk[3] = {0,0,0};
 
int angle, desiredAngle, motorOutFront, motorOutRear;
int thrust;
int kp=0, kd=0, kdd=0;
 
int controllerP = 0, maxcontrollerP = 0, mincontrollerP = 0;
int controllerD = 0, maxcontrollerD = 0 , mincontrollerD = 0;
int controllerDD = 0, maxcontrollerDD = 0, mincontrollerDD = 0;
 
int gyroScaledOld = 0;
int gyroScaled = 0;
 
int filtersum = 0;
int filterDD = 0;
 
// EOF: for balance ----------------------------------------------------------------------------
 
 
// **********************************************************************************************************************
// automatic control function - called from main.c
// ------------------------------------------------
void MotorRegler(void)
{
int pd_ergebnis_nick,pd_ergebnis_roll,tmp_int, tmp_int2;
int GierMischanteil,GasMischanteil;
static long SummeNick=0,SummeRoll=0;
static long sollGier = 0,tmp_long,tmp_long2;
static long IntegralFehlerNick = 0;
static long IntegralFehlerRoll = 0;
static unsigned int RcLostTimer;
static unsigned char delay_neutral = 0; //
static unsigned char delay_einschalten = 0,delay_ausschalten = 0;
static char TimerWerteausgabe = 0;
static char NeueKompassRichtungMerken = 0;
static long ausgleichNick, ausgleichRoll;
int IntegralNickMalFaktor,IntegralRollMalFaktor;
// unsigned char i;
if(--LoadHandler == 0) LoadHandler = 5; // verteilt die Prozessorlast
Mittelwert(); // see fc.c line 273
GRN_ON; // switch on green LED
// -------------------------------------------------------------------
// find out gas value
// -------------------------------------------------------------------
GasMischanteil = StickGas;
if(GasMischanteil < MIN_GAS + 10) GasMischanteil = MIN_GAS + 10;
// ----------------------------------------------------------------------------------
// radio control receiving is bad
// ----------------------------------------------------------------------------------
if(SenderOkay < 100)
{
if(RcLostTimer) RcLostTimer--;
else
{
MotorenEin = 0;
MikroKopterFlags &= ~FLAG_NOTLANDUNG;
}
ROT_ON;
if(modell_fliegt > 1000) // wahrscheinlich in der Luft --> langsam absenken
{
GasMischanteil = EE_Parameter.NotGas;
MikroKopterFlags |= FLAG_NOTLANDUNG;
PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] = 0; // #define K_NICK 0
PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] = 0; // #define K_ROLL 1
PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] = 0; // #define K_GAS 2
PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] = 0;
PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] = 0; // #define K_GIER 3
}
else MotorenEin = 0;
} // EOF : receiving radio control is bad
else
// -----------------------------------------------------------------------------------
// radio control receiving is fine
// -----------------------------------------------------------------------------------
if(SenderOkay > 140)
{
MikroKopterFlags &= ~FLAG_NOTLANDUNG;
RcLostTimer = EE_Parameter.NotGasZeit * 50;
if(GasMischanteil > 40 && MotorenEin)
{
if(modell_fliegt < 0xffff) modell_fliegt++;
}
if((modell_fliegt < 256))
{
SummeNick = 0;
SummeRoll = 0;
if(modell_fliegt == 250)
{
NeueKompassRichtungMerken = 1;
sollGier = 0;
Mess_Integral_Gier = 0;
}
}
else MikroKopterFlags |= FLAG_FLY;
if((PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] > 80) && MotorenEin == 0)
{
//----------------------------------------------------------------------------
// calibrate to zero
//----------------------------------------------------------------------------
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) // neutral values
{
if(++delay_neutral > 200) // during the first 200 ms
{
GRN_OFF;
MotorenEin = 0; // switch or keep motor in status "off"
delay_neutral = 0;
modell_fliegt = 0;
//----------------------------------------------------------------------------------------------------------------
// Bei ausgeschalteten Motoren Settings per Sender einstellen:
//
// Gas/Gier-Knüppel oben-links und gleichzeitig...
//
// Nick/Roll-Knüppel -> Links Mitte = Setting 1; Sport, sehr agil
// Nick/Roll-Knüppel -> Links Oben = Setting 2; Normal
// Nick/Roll-Knüppel -> Mitte Oben = Setting 3; Beginner, empfohlen für erste Versuche
// Nick/Roll-Knüppel -> Rechts Oben = Setting 4
// Nick/Roll-Knüppel -> Rechts Mitte = Setting 5
//
// Setting 1 = Gas rauf und Gier links dann Roll links und Nick mitte
// Setting 2 = Gas rauf und Gier links dann Roll links und Nick rauf
// Setting 3 = Gas rauf und Gier links dann Roll mitte und Nick rauf
// Setting 4 = Gas rauf und Gier links dann Roll rechts und Nick rauf
// Setting 5 = Gas rauf und Gier links dann Roll rechts und Nick mitte
//----------------------------------------------------------------------------------------------------------------
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70 || abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) > 70)
{
unsigned char setting=1;
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 1;
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 2;
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3;
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4;
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5;
SetActiveParamSetNumber(setting); // aktiven Datensatz merken
}
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) < 30 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -70)
{
WinkelOut.CalcState = 1; // Kompass wird kalibriert
beeptime = 1000;
}
else
{
//-------------------------------------------------------------------------------------------------------------------
// Hier werden die Werte aus dem EEPROM entsprechend Setting eingelesen
//-------------------------------------------------------------------------------------------------------------------
ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); // #define STRUCT_PARAM_LAENGE sizeof(EE_Parameter)
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert?
{
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset();
}
// Vor jedem Starten des MK sollten die Gyros neu kalibriert werden.
// Dazu wird der Gas/Gier-Knüppel einige Zeit in die obere linke Ecke gedrückt
ServoActive = 0;
SetNeutral();
ServoActive = 1;
DDRD |=0x80; // enable J7 -> Servo signal
Piep(GetActiveParamSetNumber(),120);
}
} // Ende von "nicht sofort, sondern erst nach 200 ms"
}
else
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75) // ACC Neutralwerte speichern
{
if(++delay_neutral > 200) // nicht sofort
{
GRN_OFF;
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_NICK],0xff); // Werte löschen
MotorenEin = 0;
delay_neutral = 0;
modell_fliegt = 0;
SetNeutral();
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_NICK],NeutralAccX / 256); // ACC-NeutralWerte speichern
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_NICK+1],NeutralAccX % 256); // ACC-NeutralWerte speichern
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_ROLL],NeutralAccY / 256);
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_ROLL+1],NeutralAccY % 256);
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_Z],(int)NeutralAccZ / 256);
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_Z+1],(int)NeutralAccZ % 256);
Piep(GetActiveParamSetNumber(),120);
}
}
else delay_neutral = 0;
} //Ende Gas ist oben und Motoren aus
//---------------------------------------------------------------------------------------------------------------------
// gas is at bottom for switing on or off
//---------------------------------------------------------------------------------------------------------------------
if(PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] < -85) // Gas unten
{
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75) // Starten - Gierknüppel unten ganz rechts
{
// -------------------------------------------------------------------------------------
// switch on motor
// -------------------------------------------------------------------------------------
if(++delay_einschalten > 200)
{
delay_einschalten = 200;
modell_fliegt = 1;
MotorenEin = 1;
sollGier = 0;
Mess_Integral_Gier = 0;
Mess_Integral_Gier2 = 0;
Mess_IntegralNick = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccNick;
Mess_IntegralRoll = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccRoll;
Mess_IntegralNick2 = IntegralNick;
Mess_IntegralRoll2 = IntegralRoll;
SummeNick = 0;
SummeRoll = 0;
MikroKopterFlags |= FLAG_START;
}
}
else delay_einschalten = 0; // reset delay
//----------------------------------------------------------------------------------------------
// switch off
//----------------------------------------------------------------------------------------------
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75)
{
if(++delay_ausschalten > 200) // nicht sofort
{
MotorenEin = 0;
delay_ausschalten = 200;
modell_fliegt = 0;
}
}
else delay_ausschalten = 0;
} // EOF : gas is at bottom
} // EOF : receiving radio control is good
 
//-------------------------------------------------------------------------------------------------------------------
// neue Werte von der Funke
//-------------------------------------------------------------------------------------------------------------------
if(!NewPpmData-- || (MikroKopterFlags & FLAG_NOTLANDUNG))
{
static int stick_nick,stick_roll;
ParameterZuordnung();
stick_nick = (stick_nick * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P) / 4;
stick_nick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D;
StickNick = stick_nick;
stick_roll = (stick_roll * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P) / 4;
stick_roll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D;
StickRoll = stick_roll;
StickGier = -PPM_in[EE_Parameter.Kanalbelegung[K_GIER]];
if(StickGier > 2) StickGier -= 2; else
if(StickGier < -2) StickGier += 2; else StickGier = 0;
StickGas = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 120;
GyroFaktor = (Parameter_Gyro_P + 10.0);
IntegralFaktor = Parameter_Gyro_I;
GyroFaktorGier = (Parameter_Gyro_Gier_P + 10.0);
IntegralFaktorGier = Parameter_Gyro_Gier_I;
//------------------------------------------------------------------------------------------
// Analoge Steuerung nicht per Fersteuerung, sondern per serieller Schnittstelle
//------------------------------------------------------------------------------------------
if(ExternControl.Config & 0x01 && Parameter_ExternalControl > 128)
{
StickNick += (int) ExternControl.Nick * (int) EE_Parameter.Stick_P;
StickRoll += (int) ExternControl.Roll * (int) EE_Parameter.Stick_P;
StickGier += ExternControl.Gier;
ExternHoehenValue = (int) ExternControl.Hight * (int)EE_Parameter.Hoehe_Verstaerkung;
if(ExternControl.Gas < StickGas) StickGas = ExternControl.Gas;
}
if(StickGas < 0) StickGas = 0;
if(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor = 0;
//if(GyroFaktor < 0) GyroFaktor = 0;
//if(IntegralFaktor < 0) IntegralFaktor = 0;
if(abs(StickNick/STICK_GAIN) > MaxStickNick)
{
MaxStickNick = abs(StickNick)/STICK_GAIN;
if(MaxStickNick > 100) MaxStickNick = 100;
}
else MaxStickNick--;
if(abs(StickRoll/STICK_GAIN) > MaxStickRoll)
{
MaxStickRoll = abs(StickRoll)/STICK_GAIN;
if(MaxStickRoll > 100) MaxStickRoll = 100;
}
else MaxStickRoll--;
if(MikroKopterFlags & FLAG_NOTLANDUNG) {MaxStickNick = 0; MaxStickRoll = 0;}
// -----------------------------------------------------------------------------------------------------------------------------------
// Looping?
// -----------------------------------------------------------------------------------------------------------------------------------
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > EE_Parameter.LoopThreshold) && EE_Parameter.BitConfig & CFG_LOOP_LINKS) Looping_Links = 1;
else
{
{
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < (EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese))) Looping_Links = 0;
}
}
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < -EE_Parameter.LoopThreshold) && EE_Parameter.BitConfig & CFG_LOOP_RECHTS) Looping_Rechts = 1;
else
{
if(Looping_Rechts) // Hysterese
{
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > -(EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese)) Looping_Rechts = 0;
}
}
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > EE_Parameter.LoopThreshold) && EE_Parameter.BitConfig & CFG_LOOP_OBEN) Looping_Oben = 1;
else
{
if(Looping_Oben) // Hysterese
{
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < (EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese))) Looping_Oben = 0;
}
}
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -EE_Parameter.LoopThreshold) && EE_Parameter.BitConfig & CFG_LOOP_UNTEN) Looping_Unten = 1;
else
{
if(Looping_Unten) // Hysterese
{
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > -(EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese)) Looping_Unten = 0;
}
}
if(Looping_Links || Looping_Rechts) Looping_Roll = 1; else Looping_Roll = 0;
if(Looping_Oben || Looping_Unten) { Looping_Nick = 1; Looping_Roll = 0; Looping_Links = 0; Looping_Rechts = 0;} else Looping_Nick = 0;
} // EOF : "neue Funksteuerungswerte"
 
if(Looping_Roll || Looping_Nick)
{
if(GasMischanteil > EE_Parameter.LoopGasLimit) GasMischanteil = EE_Parameter.LoopGasLimit;
TrichterFlug = 1;
}
 
// ---------------------------------------------------------------------------------------------
// Bei Empfangsausfall im Flug Notlandung einleiten
// ---------------------------------------------------------------------------------------------
if(MikroKopterFlags & FLAG_NOTLANDUNG)
{
StickGier = 0;
StickNick = 0;
StickRoll = 0;
GyroFaktor = 90;
IntegralFaktor = 120;
GyroFaktorGier = 90;
IntegralFaktorGier = 120;
Looping_Roll = 0;
Looping_Nick = 0;
} // ------------------- Ende : Notlandung -----------------------------------------------------
 
 
//---------------------------------------------------------------------------------------------
// Integrale auf ACC-Signal abgleichen
//---------------------------------------------------------------------------------------------
#define ABGLEICH_ANZAHL 256L
 
MittelIntegralNick += IntegralNick; // Für die Mittelwertbildung aufsummieren
MittelIntegralRoll += IntegralRoll;
MittelIntegralNick2 += IntegralNick2;
MittelIntegralRoll2 += IntegralRoll2;
 
if(Looping_Nick || Looping_Roll)
{
IntegralAccNick = 0;
IntegralAccRoll = 0;
MittelIntegralNick = 0;
MittelIntegralRoll = 0;
MittelIntegralNick2 = 0;
MittelIntegralRoll2 = 0;
Mess_IntegralNick2 = Mess_IntegralNick;
Mess_IntegralRoll2 = Mess_IntegralRoll;
ZaehlMessungen = 0; // counts one up as all ADC cases have been passed through -> see analog.c line 288
LageKorrekturNick = 0;
LageKorrekturRoll = 0;
}
 
//------------------------------------------------------------------------------------------------
if(!Looping_Nick && !Looping_Roll && (Aktuell_az > 512 || MotorenEin))
{
long tmp_long, tmp_long2;
tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick);
tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll);
tmp_long /= 16;
tmp_long2 /= 16;
if((MaxStickNick > 64) || (MaxStickRoll > 64))
{
tmp_long /= 3;
tmp_long2 /= 3;
}
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]) > 25)
{
tmp_long /= 3;
tmp_long2 /= 3;
}
#define AUSGLEICH 32
if(tmp_long > AUSGLEICH) tmp_long = AUSGLEICH;
if(tmp_long < -AUSGLEICH) tmp_long =-AUSGLEICH;
if(tmp_long2 > AUSGLEICH) tmp_long2 = AUSGLEICH;
if(tmp_long2 <-AUSGLEICH) tmp_long2 =-AUSGLEICH;
//if(Poti2 > 20) { tmp_long = 0; tmp_long2 = 0;}
Mess_IntegralNick -= tmp_long;
Mess_IntegralRoll -= tmp_long2;
} // --------------------------------- EOF: Looping -----------------------------------
 
 
// -------------------------------------------------------------------------------------------------
// nach 256 ADC Durchläufen wird abgeglichen
// -------------------------------------------------------------------------------------------------
if(ZaehlMessungen >= ABGLEICH_ANZAHL) // #define ABGLEICH_ANZAHL 256L
{ // counts one up as all ADC cases have been passed through -> see analog.c line 288
static int cnt = 0;
static char last_n_p,last_n_n,last_r_p,last_r_n;
static long MittelIntegralNick_Alt,MittelIntegralRoll_Alt;
if(!Looping_Nick && !Looping_Roll && !TrichterFlug && EE_Parameter.Driftkomp)
{
MittelIntegralNick /= ABGLEICH_ANZAHL; // #define ABGLEICH_ANZAHL 256L
MittelIntegralRoll /= ABGLEICH_ANZAHL;
IntegralAccNick = (EE_Parameter.GyroAccFaktor * IntegralAccNick) / ABGLEICH_ANZAHL;
IntegralAccRoll = (EE_Parameter.GyroAccFaktor * IntegralAccRoll) / ABGLEICH_ANZAHL;
IntegralAccZ = IntegralAccZ / ABGLEICH_ANZAHL;
#define MAX_I 0//(Poti2/10)
// ---- Nick -------------------------------------------------------------
IntegralFehlerNick = (long)(MittelIntegralNick - (long)IntegralAccNick);
ausgleichNick = IntegralFehlerNick / EE_Parameter.GyroAccAbgleich;
// --- Roll --------------------------------------------------------------
IntegralFehlerRoll = (long)(MittelIntegralRoll - (long)IntegralAccRoll);
ausgleichRoll = IntegralFehlerRoll / EE_Parameter.GyroAccAbgleich;
LageKorrekturNick = ausgleichNick / ABGLEICH_ANZAHL; // #define ABGLEICH_ANZAHL 256L
LageKorrekturRoll = ausgleichRoll / ABGLEICH_ANZAHL;
if( (MaxStickNick > 64) || (MaxStickRoll > 64) || (abs(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]) > 25) )
{
LageKorrekturNick /= 2;
LageKorrekturRoll /= 2;
}
//----------------------------------------------------
// Gyro-Drift ermitteln
//----------------------------------------------------
MittelIntegralNick2 /= ABGLEICH_ANZAHL; // #define ABGLEICH_ANZAHL 256L
MittelIntegralRoll2 /= ABGLEICH_ANZAHL;
tmp_long = IntegralNick2 - IntegralNick;
tmp_long2 = IntegralRoll2 - IntegralRoll;
//DebugOut.Analog[25] = MittelIntegralRoll2 / 26;
IntegralFehlerNick = tmp_long;
IntegralFehlerRoll = tmp_long2;
Mess_IntegralNick2 -= IntegralFehlerNick;
Mess_IntegralRoll2 -= IntegralFehlerRoll;
if(EE_Parameter.Driftkomp)
{
if(GierGyroFehler > ABGLEICH_ANZAHL/2) { AdNeutralGier++; AdNeutralGierBias++; } // #define ABGLEICH_ANZAHL 256L
if(GierGyroFehler <-ABGLEICH_ANZAHL/2) { AdNeutralGier--; AdNeutralGierBias--; }
}
GierGyroFehler = 0;
#define FEHLER_LIMIT (ABGLEICH_ANZAHL / 2) // #define ABGLEICH_ANZAHL 256L
#define FEHLER_LIMIT1 (ABGLEICH_ANZAHL * 2) //4
#define FEHLER_LIMIT2 (ABGLEICH_ANZAHL * 16) //16
#define BEWEGUNGS_LIMIT 20000
// --------------- Nick ------------------------------------------------------------------
cnt = 1; // + labs(IntegralFehlerNick) / 4096;
if(labs(IntegralFehlerNick) > FEHLER_LIMIT1) cnt = 4;
if( labs(MittelIntegralNick_Alt - MittelIntegralNick) < BEWEGUNGS_LIMIT )
{
if(IntegralFehlerNick > FEHLER_LIMIT2)
{
if(last_n_p)
{
cnt += labs(IntegralFehlerNick) / (FEHLER_LIMIT2 / 8);
ausgleichNick = IntegralFehlerNick / 8;
if(ausgleichNick > 5000) ausgleichNick = 5000;
LageKorrekturNick += ausgleichNick / ABGLEICH_ANZAHL; // #define ABGLEICH_ANZAHL 256L
}
else last_n_p = 1;
}
else last_n_p = 0;
if(IntegralFehlerNick < -FEHLER_LIMIT2)
{
if(last_n_n)
{
cnt += labs(IntegralFehlerNick) / (FEHLER_LIMIT2 / 8);
ausgleichNick = IntegralFehlerNick / 8;
if(ausgleichNick < -5000) ausgleichNick = -5000;
LageKorrekturNick += ausgleichNick / ABGLEICH_ANZAHL; // #define ABGLEICH_ANZAHL 256L
}
else last_n_n = 1;
}
else last_n_n = 0;
}
else
{
cnt = 0;
KompassSignalSchlecht = 1000;
}
if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp;
if(IntegralFehlerNick > FEHLER_LIMIT) AdNeutralNick += cnt;
if(IntegralFehlerNick < -FEHLER_LIMIT) AdNeutralNick -= cnt;
// ------------------ Roll --------------------------------------------------------------------
cnt = 1;// + labs(IntegralFehlerNick) / 4096;
if(labs(IntegralFehlerRoll) > FEHLER_LIMIT1) cnt = 4;
ausgleichRoll = 0;
if(labs(MittelIntegralRoll_Alt - MittelIntegralRoll) < BEWEGUNGS_LIMIT )
{
if(IntegralFehlerRoll > FEHLER_LIMIT2)
{
if(last_r_p)
{
cnt += labs(IntegralFehlerRoll) / (FEHLER_LIMIT2 / 8);
ausgleichRoll = IntegralFehlerRoll / 8;
if(ausgleichRoll > 5000) ausgleichRoll = 5000;
LageKorrekturRoll += ausgleichRoll / ABGLEICH_ANZAHL; // #define ABGLEICH_ANZAHL 256L
}
else last_r_p = 1;
} else last_r_p = 0;
if(IntegralFehlerRoll < -FEHLER_LIMIT2)
{
if(last_r_n)
{
cnt += labs(IntegralFehlerRoll) / (FEHLER_LIMIT2 / 8);
ausgleichRoll = IntegralFehlerRoll / 8;
if(ausgleichRoll < -5000) ausgleichRoll = -5000;
LageKorrekturRoll += ausgleichRoll / ABGLEICH_ANZAHL; // #define ABGLEICH_ANZAHL 256L
}
else last_r_n = 1;
} else last_r_n = 0;
}
else
{
cnt = 0;
KompassSignalSchlecht = 1000;
}
if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp;
if(IntegralFehlerRoll > FEHLER_LIMIT) AdNeutralRoll += cnt;
if(IntegralFehlerRoll < -FEHLER_LIMIT) AdNeutralRoll -= cnt;
}
else
{
LageKorrekturRoll = 0;
LageKorrekturNick = 0;
TrichterFlug = 0;
}
if(!IntegralFaktor) // z.B. bei Heading Hold wird nicht ausgeglichen
{
LageKorrekturRoll = 0;
LageKorrekturNick = 0;
}
// ----------------------------------------------------------------------------------
MittelIntegralNick_Alt = MittelIntegralNick;
MittelIntegralRoll_Alt = MittelIntegralRoll;
// ----------------------------------------------------------------------------------
IntegralAccNick = 0;
IntegralAccRoll = 0;
IntegralAccZ = 0;
MittelIntegralNick = 0;
MittelIntegralRoll = 0;
MittelIntegralNick2 = 0;
MittelIntegralRoll2 = 0;
ZaehlMessungen = 0; // counts one up as all ADC cases have been passed through -> see analog.c line 288
}
// EOF: if(ZaehlMessungen >= ABGLEICH_ANZAHL)
 
 
// -------------------------------------------------------------------------------------------------------------
// -------- Gieren -----------
//
// Für eine Drehung im Uhrzeigersinn wird die Drehzahl des linken und des rechten Propellers erhöht,
// während die des vorderen und hinteren gesenkt wird
// -------------------------------------------------------------------------------------------------------------
if(abs(StickGier) > 15) // war 35
{
KompassSignalSchlecht = 1000;
if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX)) // Orientation fix
{
NeueKompassRichtungMerken = 1;
}
}
tmp_int = (long) EE_Parameter.Gier_P * ((long)StickGier * abs(StickGier)) / 512L; // expo y = ax + bx²
tmp_int += (EE_Parameter.Gier_P * StickGier) / 4;
sollGier = tmp_int;
Mess_Integral_Gier -= tmp_int;
if(Mess_Integral_Gier > 50000) Mess_Integral_Gier = 50000; // begrenzen
if(Mess_Integral_Gier <-50000) Mess_Integral_Gier =-50000;
 
// -----------------------------------------------------------------------------------------------------
// Kompass
// ------------------------------------------------------------------------------------------------------------------
if(KompassValue && (EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV)) // CFG_KOMPASS_AKTIV = 0x08
{
int w,v,r,fehler,korrektur;
w = abs(IntegralNick /512); // mit zunehmender Neigung den Einfluss drosseln
v = abs(IntegralRoll /512);
if(v > w) w = v; // grösste Neigung ermitteln
korrektur = w / 8 + 1;
fehler = ((540 + KompassValue - (ErsatzKompass/GIER_GRAD_FAKTOR)) % 360) - 180; // long GIER_GRAD_FAKTOR = 1291;
if(abs(MesswertGier) > 128)
{
fehler = 0;
}
if(!KompassSignalSchlecht && w < 25)
{
GierGyroFehler += fehler;
if(NeueKompassRichtungMerken)
{
ErsatzKompass = KompassValue * GIER_GRAD_FAKTOR; // long GIER_GRAD_FAKTOR = 1291;
KompassStartwert = (ErsatzKompass/GIER_GRAD_FAKTOR);
NeueKompassRichtungMerken = 0;
}
}
ErsatzKompass += (fehler * 8) / korrektur;
w = (w * Parameter_KompassWirkung) / 32; // auf die Wirkung normieren
w = Parameter_KompassWirkung - w; // Wirkung ggf drosseln
if(w >= 0)
{
if(!KompassSignalSchlecht)
{
v = 64 + ((MaxStickNick + MaxStickRoll)) / 8;
r = ((540 + (ErsatzKompass/GIER_GRAD_FAKTOR) - KompassStartwert) % 360) - 180; // long GIER_GRAD_FAKTOR = 1291;
// // r = KompassRichtung;
v = (r * w) / v; // nach Kompass ausrichten
w = 3 * Parameter_KompassWirkung;
if(v > w) v = w; // Begrenzen
else
if(v < -w) v = -w;
Mess_Integral_Gier += v;
}
if(KompassSignalSchlecht) KompassSignalSchlecht--;
}
else KompassSignalSchlecht = 500; // so lange das Signal taub stellen --> ca. 1 sek
} // EOF: Kompass
//---------------------------------------------------------------------------------------------------------------------------------
 
 
 
//----------------------------------------------------------------------------------------------------------------------------------
// Debugwerte zuordnen / die zugehörige Texte stehen unter -> uart.c Zeile 46
//----------------------------------------------------------------------------------------------------------------------------------
if(!TimerWerteausgabe--)
{
TimerWerteausgabe = 24;
DebugOut.Analog[0] = (int) (IntegralNick / (EE_Parameter.GyroAccFaktor * 4));
DebugOut.Analog[1] = Mittelwert_AccNick / 4;
DebugOut.Analog[2] = maxcontrollerDD;
DebugOut.Analog[3] = mincontrollerDD;
DebugOut.Analog[4] = MesswertNick;
DebugOut.Analog[5] = HiResNick;
DebugOut.Analog[6] = AdWertAccNick;
// siehe Zeile fc.c Zeile 1660
DebugOut.Analog[8] = 0;
DebugOut.Analog[9] = UBat;
DebugOut.Analog[10] = SenderOkay;
DebugOut.Analog[11] = controllerP;
// siehe fc.c Zeile 476
DebugOut.Analog[14] = controllerD;
DebugOut.Analog[15] = controllerDD;
DebugOut.Analog[16] = PPM_in[3];
DebugOut.Analog[17] = ipk[0];
DebugOut.Analog[18] = ipk[1];
DebugOut.Analog[19] = ipk[2];
DebugOut.Analog[20] = ucflg1; // 0,1,2
DebugOut.Analog[21] = PPM_in[5]; // switch chanel 5
DebugOut.Analog[22] = MesswertNick;
DebugOut.Analog[23] = maxcontrollerD;
DebugOut.Analog[24] = mincontrollerD;
DebugOut.Analog[25] = AdWertNick;
DebugOut.Analog[26] = maxcontrollerP; // = 727
DebugOut.Analog[27] = mincontrollerP; // = 730
DebugOut.Analog[28] = PPM_in[4]; // Gier
DebugOut.Analog[29] = PPM_in[3]; // Nick
DebugOut.Analog[30] = PPM_in[2]; // Roll
DebugOut.Analog[31] = PPM_in[1]; // Gas
}
// -----------------------------------------------------------------------
// Drehgeschwindigkeit und Drehwinkel zu einem Istwert zusammenfassen
// -----------------------------------------------------------------------
if(TrichterFlug) {SummeRoll = 0; SummeNick = 0;};
if(!Looping_Nick) IntegralNickMalFaktor = (IntegralNick * IntegralFaktor) / (44000 / STICK_GAIN); else IntegralNickMalFaktor = 0;
if(!Looping_Roll) IntegralRollMalFaktor = (IntegralRoll * IntegralFaktor) / (44000 / STICK_GAIN); else IntegralRollMalFaktor = 0;
#define TRIM_MAX 200
if(TrimNick > TRIM_MAX) TrimNick = TRIM_MAX; else if(TrimNick <-TRIM_MAX) TrimNick =-TRIM_MAX;
if(TrimRoll > TRIM_MAX) TrimRoll = TRIM_MAX; else if(TrimRoll <-TRIM_MAX) TrimRoll =-TRIM_MAX;
MesswertNick = IntegralNickMalFaktor + (long)((long)MesswertNick * GyroFaktor + (long)TrimNick * 128L) / (256L / STICK_GAIN);
MesswertRoll = IntegralRollMalFaktor + (long)((long)MesswertRoll * GyroFaktor + (long)TrimRoll * 128L) / (256L / STICK_GAIN);
MesswertGier = (long)(MesswertGier * 2 * (long)GyroFaktorGier) / (256L / STICK_GAIN) + (long)(Integral_Gier * IntegralFaktorGier) / (2 * (44000 / STICK_GAIN));
// Maximalwerte abfangen
// #define MAX_SENSOR (4096*STICK_GAIN)
#define MAX_SENSOR (4096*4)
if(MesswertNick > MAX_SENSOR) MesswertNick = MAX_SENSOR;
if(MesswertNick < -MAX_SENSOR) MesswertNick = -MAX_SENSOR;
if(MesswertRoll > MAX_SENSOR) MesswertRoll = MAX_SENSOR;
if(MesswertRoll < -MAX_SENSOR) MesswertRoll = -MAX_SENSOR;
if(MesswertGier > MAX_SENSOR) MesswertGier = MAX_SENSOR;
if(MesswertGier < -MAX_SENSOR) MesswertGier = -MAX_SENSOR;
// ------------------------------------------------------------------------------------------------------------------------
// Höhenregelung
// Die Höhenregelung schwächt lediglich das Gas ab, erhöht es allerdings nicht
// ------------------------------------------------------------------------------------------------------------------------
if(UBat > BattLowVoltageWarning) GasMischanteil = ((unsigned int)GasMischanteil * BattLowVoltageWarning) / UBat; // Gas auf das aktuelle Spannungvieveau beziehen
GasMischanteil *= STICK_GAIN;
// if height control is activated
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) && !(Looping_Roll || Looping_Nick)) // Höhenregelung
{
//--------------------------------- definitions-------------------------------------------
#define HOOVER_GAS_AVERAGE 4096L // 4096 * 2ms = 8.2s averaging
#define HC_GAS_AVERAGE 4 // 4 * 2ms= 8ms averaging
#define OPA_OFFSET_STEP 10
//------------------------------- variables ----------------------------------------------
int HCGas, HeightDeviation;
static int HeightTrimming = 0; // rate for change of height setpoint
static int FilterHCGas = 0;
static int StickGasHoover = 120, HooverGas = 0, HooverGasMin = 0, HooverGasMax = 1023;
static unsigned long HooverGasFilter = 0;
static unsigned char delay = 100, BaroAtUpperLimit = 0, BaroAtLowerLimit = 0;
int CosAttitude; // for projection of hoover gas
// ------------------------------- get the current hooverpoint ----------------------------------------------------------
// if(LoadHandler == 1)
{
// DebugOut.Analog[21] = HooverGas;
// DebugOut.Analog[18] = VarioMeter;
// Expand the measurement
// measurement of air pressure close to upper limit and no overflow in correction of the new OCR0A value occurs
if(!BaroExpandActive)
{
if(MessLuftdruck > 920)
{ // increase offset
if(OCR0A < (255 - OPA_OFFSET_STEP))
{
ExpandBaro -= 1;
OCR0A = DruckOffsetSetting - OPA_OFFSET_STEP * ExpandBaro; // increase offset to shift ADC down
beeptime = 300;
BaroExpandActive = 350;
}
else
{
BaroAtLowerLimit = 1;
}
}
// measurement of air pressure close to lower limit and
else
if(MessLuftdruck < 100)
{ // decrease offset
if(OCR0A > OPA_OFFSET_STEP)
{
ExpandBaro += 1;
OCR0A = DruckOffsetSetting - OPA_OFFSET_STEP * ExpandBaro; // decrease offset to shift ADC up
beeptime = 300;
BaroExpandActive = 350;
}
else
{
BaroAtUpperLimit = 1;
}
}
else
{
BaroAtUpperLimit = 0;
BaroAtLowerLimit = 0;
}
}
else // delay, because of expanding the Baro-Range
{
// now clear the D-values
SummenHoehe = HoehenWert * SM_FILTER; // #define SM_FILTER 16
VarioMeter = 0;
BaroExpandActive--;
}
// if height control is activated by an rc channel
if(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER) // Regler wird über Schalter gesteuert
{ // check if parameter is less than activation threshold
if(Parameter_MaxHoehe < 50) // for 3 or 2-state switch height control is disabled in lowest position
{ //height control not active
if(!delay--)
{
HoehenReglerAktiv = 0; // disable height control
SollHoehe = HoehenWert; // update SetPoint with current reading
delay = 1;
}
}
else
{ //height control is activated
HoehenReglerAktiv = 1; // enable height control
delay = 200;
}
}
else // no switchable height control
{
SollHoehe = ((int16_t) ExternHoehenValue + (int16_t) Parameter_MaxHoehe) * (int)EE_Parameter.Hoehe_Verstaerkung;
HoehenReglerAktiv = 1;
}
// calculate cos of nick and roll angle used for projection of the vertical hoover gas
tmp_int = (int)(IntegralNick/GIER_GRAD_FAKTOR); // nick angle in deg
tmp_int2 = (int)(IntegralRoll/GIER_GRAD_FAKTOR); // roll angle in deg
CosAttitude = (int16_t)ihypot(tmp_int, tmp_int2); // phytagoras gives effective attitude angle in deg // xxx
LIMIT_MAX(CosAttitude, 60); // limit effective attitude angle
CosAttitude = c_cos_8192(CosAttitude); // cos of actual attitude
if(HoehenReglerAktiv && !(MikroKopterFlags & FLAG_NOTLANDUNG))
{
#define HEIGHT_TRIM_UP 0x01
#define HEIGHT_TRIM_DOWN 0x02
static unsigned char HeightTrimmingFlag = 0x00;
#define HEIGHT_CONTROL_STICKTHRESHOLD 15
// Holger original version
// start of height control algorithm
// the height control is only an attenuation of the actual gas stick.
// I.e. it will work only if the gas stick is higher than the hover gas
// and the hover height will be allways larger than height setpoint.
if((EE_Parameter.ExtraConfig & CFG2_HEIGHT_LIMIT) || !(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER)) // Regler wird über Schalter gesteuert)
{ // old version
HCGas = GasMischanteil; // take current stick gas as neutral point for the height control
HeightTrimming = 0;
}
else
{
// alternative height control
// PD-Control with respect to hoover point
// the thrust loss out of horizontal attitude is compensated
// the setpoint will be fine adjusted with the gas stick position
if(MikroKopterFlags & FLAG_FLY) // trim setpoint only when flying
{ // gas stick is above hoover point
if(StickGas > (StickGasHoover + HEIGHT_CONTROL_STICKTHRESHOLD) && !BaroAtUpperLimit)
{
if(HeightTrimmingFlag & HEIGHT_TRIM_DOWN)
{
HeightTrimmingFlag &= ~HEIGHT_TRIM_DOWN;
SollHoehe = HoehenWert; // update setpoint to current heigth
}
HeightTrimmingFlag |= HEIGHT_TRIM_UP;
HeightTrimming += abs(StickGas - (StickGasHoover + HEIGHT_CONTROL_STICKTHRESHOLD));
} // gas stick is below hoover point
else if(StickGas < (StickGasHoover - HEIGHT_CONTROL_STICKTHRESHOLD) && !BaroAtLowerLimit )
{
if(HeightTrimmingFlag & HEIGHT_TRIM_UP)
{
HeightTrimmingFlag &= ~HEIGHT_TRIM_UP;
SollHoehe = HoehenWert; // update setpoint to current heigth
}
HeightTrimmingFlag |= HEIGHT_TRIM_DOWN;
HeightTrimming -= abs(StickGas - (StickGasHoover - HEIGHT_CONTROL_STICKTHRESHOLD));
}
else // Gas Stick in Hoover Range
{
if(HeightTrimmingFlag & (HEIGHT_TRIM_UP | HEIGHT_TRIM_DOWN))
{
HeightTrimmingFlag &= ~(HEIGHT_TRIM_UP | HEIGHT_TRIM_DOWN);
HeightTrimming = 0;
SollHoehe = HoehenWert; // update setpoint to current height
if(EE_Parameter.ExtraConfig & CFG2_VARIO_BEEP) beeptime = 500;
}
}
// Trim height set point
if(abs(HeightTrimming) > 512)
{
SollHoehe += (HeightTrimming * EE_Parameter.Hoehe_Verstaerkung)/(5 * 512 / 2); // move setpoint
HeightTrimming = 0;
if(EE_Parameter.ExtraConfig & CFG2_VARIO_BEEP) beeptime = 75;
//update hoover gas stick value when setpoint is shifted
if(!EE_Parameter.Hoehe_StickNeutralPoint)
{
StickGasHoover = HooverGas/STICK_GAIN; //rescale back to stick value
StickGasHoover = (StickGasHoover * UBat) / BattLowVoltageWarning;
if(StickGasHoover < 70) StickGasHoover = 70;
else if(StickGasHoover > 150) StickGasHoover = 150;
}
}
if(BaroExpandActive) SollHoehe = HoehenWert; // update setpoint to current altitude if Expanding is active
} //if MikroKopterFlags & MKFLAG_FLY
else
{
SollHoehe = HoehenWert - 400;
if(EE_Parameter.Hoehe_StickNeutralPoint) StickGasHoover = EE_Parameter.Hoehe_StickNeutralPoint;
else StickGasHoover = 120;
}
HCGas = HooverGas; // take hoover gas (neutral point)
}
if(HoehenWert > SollHoehe || !(EE_Parameter.ExtraConfig & CFG2_HEIGHT_LIMIT))
{
// ------------------------- P-Part ----------------------------
HeightDeviation = (int)(HoehenWert - SollHoehe); // positive when too high
tmp_int = (HeightDeviation * (int)Parameter_Hoehe_P) / 16; // p-part
HCGas -= tmp_int;
// ------------------------- D-Part 1: Vario Meter ----------------------------
tmp_int = VarioMeter / 8;
if(tmp_int > 8) tmp_int = 8; // limit quadratic part on upward movement to avoid to much gas reduction
if(tmp_int > 0) tmp_int = VarioMeter + (tmp_int * tmp_int) / 4;
else tmp_int = VarioMeter - (tmp_int * tmp_int) / 4;
tmp_int = (Parameter_Luftdruck_D * (long)(tmp_int)) / 128L; // scale to d-gain parameter
LIMIT_MIN_MAX(tmp_int, -127, 255);
HCGas -= tmp_int;
// ------------------------ D-Part 2: ACC-Z Integral ------------------------
tmp_int = ((Mess_Integral_Hoch / 128) * (long) Parameter_Hoehe_ACC_Wirkung) / (128 / STICK_GAIN);
LIMIT_MIN_MAX(tmp_int, -127, 255);
HCGas -= tmp_int;
// --------- limit deviation from hoover point within the target region ---------------------------------
if( (abs(HeightDeviation) < 150) && (!HeightTrimming) && (HooverGas > 0)) // height setpoint is not changed and hoover gas not zero
{
LIMIT_MIN_MAX(HCGas, HooverGasMin, HooverGasMax); // limit gas around the hoover point
}
if(BaroExpandActive) HCGas = HooverGas;
// strech control output by inverse attitude projection 1/cos
// + 1/cos(angle) ++++++++++++++++++++++++++
tmp_long2 = (int32_t)HCGas;
tmp_long2 *= 8192L;
tmp_long2 /= CosAttitude;
HCGas = (int16_t)tmp_long2;
// update height control gas averaging
FilterHCGas = (FilterHCGas * (HC_GAS_AVERAGE - 1) + HCGas) / HC_GAS_AVERAGE; // #define HC_GAS_AVERAGE 4
// limit height control gas pd-control output
LIMIT_MIN_MAX(FilterHCGas, EE_Parameter.Hoehe_MinGas * STICK_GAIN, (MAX_GAS - 20) * STICK_GAIN);
// set GasMischanteil to HeightControlGasFilter
if(EE_Parameter.ExtraConfig & CFG2_HEIGHT_LIMIT) // old version
{
if(FilterHCGas > GasMischanteil) FilterHCGas = GasMischanteil; // nicht mehr als Gas
}
GasMischanteil = FilterHCGas;
}
}// EOF height control active
else // HC not active
{
//update hoover gas stick value when HC is not active
if(!EE_Parameter.Hoehe_StickNeutralPoint)
{
StickGasHoover = HooverGas/STICK_GAIN; // rescale back to stick value
StickGasHoover = (StickGasHoover * UBat) / BattLowVoltageWarning;
}
else StickGasHoover = EE_Parameter.Hoehe_StickNeutralPoint;
if(StickGasHoover < 70) StickGasHoover = 70;
else if(StickGasHoover > 150) StickGasHoover = 150;
FilterHCGas = GasMischanteil;
}
// Hoover gas estimation by averaging gas control output on small z-velocities
// this is done only if height contol option is selected in global config and aircraft is flying
if((MikroKopterFlags & FLAG_FLY) && !(MikroKopterFlags & FLAG_NOTLANDUNG))
{
if(HooverGasFilter == 0) HooverGasFilter = HOOVER_GAS_AVERAGE * (unsigned long)(GasMischanteil); // init estimation
if(abs(VarioMeter) < 100) // only on small vertical speed
{
tmp_long2 = (int32_t)GasMischanteil; // take current thrust
tmp_long2 *= CosAttitude; // apply attitude projection
tmp_long2 /= 8192;
// average vertical projected thrust
if(modell_fliegt < 2000) // the first 4 seconds
{ // reduce the time constant of averaging by factor of 8 to get much faster a stable value
HooverGasFilter -= HooverGasFilter/(HOOVER_GAS_AVERAGE/8L);
HooverGasFilter += 8L * tmp_long2;
}
else if(modell_fliegt < 4000) // the first 8 seconds
{ // reduce the time constant of averaging by factor of 4 to get much faster a stable value
HooverGasFilter -= HooverGasFilter/(HOOVER_GAS_AVERAGE/4L);
HooverGasFilter += 4L * tmp_long2;
}
else if(modell_fliegt < 8000) // the first 16 seconds
{ // reduce the time constant of averaging by factor of 2 to get much faster a stable value
HooverGasFilter -= HooverGasFilter/(HOOVER_GAS_AVERAGE/2L);
HooverGasFilter += 2L * tmp_long2;
}
else //later
{
HooverGasFilter -= HooverGasFilter/HOOVER_GAS_AVERAGE;
HooverGasFilter += tmp_long2;
}
HooverGas = (int16_t)(HooverGasFilter/HOOVER_GAS_AVERAGE);
if(EE_Parameter.Hoehe_HoverBand)
{
int16_t band;
band = HooverGas / EE_Parameter.Hoehe_HoverBand; // the higher the parameter the smaller the range
HooverGasMin = HooverGas - band;
HooverGasMax = HooverGas + band;
}
else
{ // no limit
HooverGasMin = 0;
HooverGasMax = 1023;
}
}
}
}
// EOF:
} // EOF: ParamSet.GlobalConfig & CFG_HEIGHT_CONTROL
 
// limit gas to parameter setting
LIMIT_MIN(GasMischanteil, (MIN_GAS + 10) * STICK_GAIN);
if(GasMischanteil > (MAX_GAS - 20) * STICK_GAIN) GasMischanteil = (MAX_GAS - 20) * STICK_GAIN;
// -----------------------------------------------------------------------------------------------
// sind alle BL-Ctrl angeschlossen ? ist eventuell ein Motor defekt ?
// -----------------------------------------------------------------------------------------------
if(MissingMotor) // see twimaster.c line 184
if(modell_fliegt > 1 && modell_fliegt < 50 && GasMischanteil > 0)
{
modell_fliegt = 1;
GasMischanteil = MIN_GAS;
}
//-----------------------------------------------------------------------------------------------
// Mischer und PI-Regler
//-----------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------
// Gier-Anteil (yaw)
//-----------------------------------------------------------------------------------------------
GierMischanteil = MesswertGier - sollGier * STICK_GAIN; // Regler für Gier
#define MIN_GIERGAS (40*STICK_GAIN) // unter diesem Gaswert trotzdem Gieren
if(GasMischanteil > MIN_GIERGAS)
{
if(GierMischanteil > (GasMischanteil / 2)) GierMischanteil = GasMischanteil / 2;
if(GierMischanteil < -(GasMischanteil / 2)) GierMischanteil = -(GasMischanteil / 2);
}
else
{
if(GierMischanteil > (MIN_GIERGAS / 2)) GierMischanteil = MIN_GIERGAS / 2;
if(GierMischanteil < -(MIN_GIERGAS / 2)) GierMischanteil = -(MIN_GIERGAS / 2);
}
tmp_int = MAX_GAS*STICK_GAIN;
if(GierMischanteil > ((tmp_int - GasMischanteil))) GierMischanteil = ((tmp_int - GasMischanteil));
if(GierMischanteil < -((tmp_int - GasMischanteil))) GierMischanteil = -((tmp_int - GasMischanteil));
// ------------------------------------------------------------------------------------------------------
// Nick-Achse (pitch axis)
// ------------------------------------------------------------------------------------------------------
DiffNick = MesswertNick - StickNick; // Differenz bestimmen
if(IntegralFaktor) SummeNick += IntegralNickMalFaktor - StickNick; // I-Anteil bei Winkelregelung
else SummeNick += DiffNick; // I-Anteil bei Heading Hold
if(SummeNick > (STICK_GAIN * 16000L)) SummeNick = (STICK_GAIN * 16000L);
if(SummeNick < -(16000L * STICK_GAIN)) SummeNick = -(16000L * STICK_GAIN);
pd_ergebnis_nick = DiffNick + SummeNick / Ki; // PI-Regler für Nick
// Motor Vorn
tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64;
if(pd_ergebnis_nick > tmp_int) pd_ergebnis_nick = tmp_int;
if(pd_ergebnis_nick < -tmp_int) pd_ergebnis_nick = -tmp_int;
// ------------------------------------------------------------------------------------------------------
// Roll-Achse (roll axis)
// ------------------------------------------------------------------------------------------------------
DiffRoll = MesswertRoll - StickRoll; // Differenz bestimmen
if(IntegralFaktor) SummeRoll += IntegralRollMalFaktor - StickRoll; // I-Anteil bei Winkelregelung
else SummeRoll += DiffRoll; // I-Anteil bei Heading Hold
if(SummeRoll > (STICK_GAIN * 16000L)) SummeRoll = (STICK_GAIN * 16000L);
if(SummeRoll < -(16000L * STICK_GAIN)) SummeRoll = -(16000L * STICK_GAIN);
pd_ergebnis_roll = DiffRoll + SummeRoll / Ki; // PI-Regler für Roll
tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64;
if(pd_ergebnis_roll > tmp_int) pd_ergebnis_roll = tmp_int;
if(pd_ergebnis_roll < -tmp_int) pd_ergebnis_roll = -tmp_int;
// -----------------------------------------------------------------------------------
// kopterbalance
// -----------------------------------------------------------------------------------
//------------------------------------------------------------------------------------
// set the parameters with radio control
//------------------------------------------------------------------------------------
if((PPM_in[2] < -60) && (ucflg2==0x01))
{
ucflg2=0x00;
if(ucflg1 == 0x02)
{
ucflg1=0x00;
}
else ucflg1++;
}
 
if((PPM_in[2] > -20) && (PPM_in[2] < 20))
{
ucflg2=0x01;
}
// -----------------------------------------------------------------------------------
// set analog value at according parameter
// -----------------------------------------------------------------------------------
 
if((PPM_in[5] < -80L) && (ucflg3==0x01))
{
ucflg3=0x00;
if((ucflg1==0x00) || (ucflg1==0x01) || (ucflg1==0x02)) ipk[ucflg1] += PPM_in[3];
}
if(PPM_in[5] > 80L)
{
ucflg3=0x01;
}
kp = ipk[0];
kd = ipk[1];
kdd = ipk[2];
 
// -------------------------------------------------------------------------------------
// set trust with radio control
// -----------------------------------------------------------------------------------
thrust = PPM_in[1] + 127; // set turnrate speed
if(thrust<10) // limit min thrust
{
thrust = 10;
}
 
if(thrust>50) // limit max thrust
{
thrust = 50;
}
DebugOut.Analog[7] = thrust;
 
// --------------------------------------------------------------------------------------
desiredAngle = 0;
angle = (int) (IntegralNick / (EE_Parameter.GyroAccFaktor * 4));
gyroScaled = HiResNick; // Gyro
 
// --------------------------------------------------------------------------------------
controllerP = (PPM_in[2]/4) + (kp * ((desiredAngle - angle)/16)); // proportional & manual control
if(controllerP > maxcontrollerP) maxcontrollerP = controllerP;
if(controllerP < mincontrollerP) mincontrollerP = controllerP;
 
// --------------------------------------------------------------------------------------
controllerD = (-gyroScaled * kd)/512;
 
if(controllerD > maxcontrollerD) maxcontrollerD = controllerD;
if(controllerD < mincontrollerD) mincontrollerD = controllerD;
 
// --------------------------------------------------------------------------------------
controllerDD = (gyroScaledOld - gyroScaled) * kdd;
filtersum = filtersum - filterDD + controllerDD;
filterDD = filtersum/8;
controllerDD = filterDD / 64;
gyroScaledOld = gyroScaled;
 
if(controllerDD > maxcontrollerDD) maxcontrollerDD = controllerDD;
if(controllerDD < mincontrollerDD) mincontrollerDD = controllerDD;
// --------------------------------------------------------------------------------------
motorOutRear = thrust + controllerD + controllerDD + controllerP;
motorOutFront = thrust - controllerD - controllerDD - controllerP;
 
if(motorOutFront>50) motorOutFront = 50;
if(motorOutFront<1) motorOutFront = 0;
 
if(motorOutRear>50) motorOutRear = 50;
if(motorOutRear<1) motorOutRear = 0;
Motor[1] = motorOutRear;
Motor[0] = motorOutFront;
 
}
// *** EOF: MotorRegler() ********************************************************************************************************
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/fc.d
0,0 → 1,3
fc.o fc.d : fc.c fc.h main.h old_macros.h _Settings.h printf_P.h timer0.h \
uart.h analog.h eeprom.h twimaster.h menu.h rc.h led.h eeprom.c \
mymath.h isqrt.h
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/fc.h
0,0 → 1,212
/*****************************************************************************************************************************
* File: fc.h
* Purpose: header of fc.c
*****************************************************************************************************************************/
#ifndef _FC_H
#define _FC_H
 
// ---------------------- definitions ----------------------
#define STICK_GAIN 4
 
#define FLAG_MOTOR_RUN 1 // diese Flags werden
#define FLAG_FLY 2 // bei Bedarf
#define FLAG_CALIBRATE 4 // auf die
#define FLAG_START 8 // Variable
#define FLAG_NOTLANDUNG 16 // "MikroKopterFlags"
#define FLAG_LOWBAT 32 // abgebildet
 
#define MAX_MOTORS 2 // gesetzt für Waage (max 12 möglich)
#define CHECK_MIN_MAX(wert,min,max) {if(wert < min) wert = min; else if(wert > max) wert = max;}
 
extern long GIER_GRAD_FAKTOR; // Abhängigkeit zwischen GyroIntegral und Winkel
extern volatile unsigned char MikroKopterFlags;
extern volatile unsigned int I2CTimeout;
extern unsigned char Sekunde,Minute;
extern unsigned int BaroExpandActive;
extern long IntegralNick,IntegralNick2;
extern long IntegralRoll,IntegralRoll2;
 
extern long Mess_IntegralNick,Mess_IntegralNick2;
extern long Mess_IntegralRoll,Mess_IntegralRoll2;
extern long IntegralAccNick,IntegralAccRoll;
extern volatile long Mess_Integral_Hoch;
extern long Integral_Gier,Mess_Integral_Gier,Mess_Integral_Gier2;
extern int KompassValue;
extern int KompassStartwert;
extern int KompassRichtung;
 
extern int TrimNick, TrimRoll;
extern long ErsatzKompass;
extern int ErsatzKompassInGrad; // Kompasswert in Grad
extern long HoehenWert;
extern long SollHoehe;
extern int MesswertNick,MesswertRoll,MesswertGier;
extern int AdNeutralNick,AdNeutralRoll,AdNeutralGier, Mittelwert_AccNick, Mittelwert_AccRoll;
extern int NeutralAccX, NeutralAccY,Mittelwert_AccHoch;
extern unsigned char HoehenReglerAktiv;
extern volatile float NeutralAccZ;
extern long Umschlag180Nick, Umschlag180Roll;
extern signed int ExternStickNick,ExternStickRoll,ExternStickGier;
 
extern unsigned char Parameter_UserParam1,Parameter_UserParam2,Parameter_UserParam3,Parameter_UserParam4,Parameter_UserParam5,Parameter_UserParam6,Parameter_UserParam7,Parameter_UserParam8;
extern int NaviAccNick,NaviAccRoll,NaviCntAcc;
extern unsigned int modell_fliegt;
 
//------------------------- functions ---------------
void MotorRegler(void);
void SendMotorData(void);
void CalibrierMittelwert(void);
void Mittelwert(void);
void SetNeutral(void);
void Piep(unsigned char Anzahl, unsigned int dauer);
 
extern unsigned char h,m,s;
extern volatile unsigned char Timeout ;
extern unsigned char CosinusNickWinkel, CosinusRollWinkel;
extern int DiffNick,DiffRoll;
extern int Poti1, Poti2, Poti3, Poti4;
extern volatile unsigned char SenderOkay;
extern volatile unsigned char SenderRSSI;
extern unsigned char RequiredMotors;
extern int StickNick,StickRoll,StickGier;
extern char MotorenEin;
 
extern void DefaultKonstanten1(void);
extern void DefaultKonstanten2(void);
extern void DefaultKonstanten3(void);
extern void DefaultStickMapping(void);
 
 
#define STRUCT_PARAM_LAENGE sizeof(EE_Parameter)
 
struct mk_param_struct
{
unsigned char Kanalbelegung[8]; // 01-08 Nick[0]=3, Roll[1]=2,Gas[2]=1, Gier[3]=4, K_POTI1[4], K_POTI2[5], K_POTI3[6], K_POTI4[7] steht auf EEPROM auf Adresse 80-87
unsigned char GlobalConfig; // 09 0x80=Rotationrate Limiter, 0x40=ACHSENKOPPLUNG_AKTIV, 0x20=GPS aktiv, 0x10=Orientation fix, 0x08=Kompass_aktiv, 0x04=Heading Hold aktiv, 0x02=?, 0x01=Höhenregler aktiv
unsigned char Hoehe_MinGas; // 10 Wert : 0-100
unsigned char Luftdruck_D; // 11 Wert : 0-250
unsigned char MaxHoehe; // 12 Wert : 0-32
unsigned char Hoehe_P; // 13 Wert : 0-32
unsigned char Hoehe_Verstaerkung; // 14 Wert : 0-50
unsigned char Hoehe_ACC_Wirkung; // 15 Wert : 0-250
unsigned char Hoehe_HoverBand; // 16 Wert : 0-250
unsigned char Hoehe_GPS_Z; // 17 Wert : 0-250
unsigned char Hoehe_StickNeutralPoint; // 18 Wert : 0-250
unsigned char Stick_P; // 19 Wert : 1-6
unsigned char Stick_D; // 20 Wert : 0-64
unsigned char Gier_P; // 21 Wert : 1-20
unsigned char Gas_Min; // 22 Wert : 0-32
unsigned char Gas_Max; // 23 Wert : 33-250
unsigned char GyroAccFaktor; // 24 Wert : 1-64
unsigned char KompassWirkung; // 25 Wert : 0-32
unsigned char Gyro_P; // 26 Wert : 10-250
unsigned char Gyro_I; // 27 Wert : 0-250
unsigned char Gyro_D; // 28 Wert : 0-250
unsigned char Gyro_Gier_P; // 29 Wert : 10-250
unsigned char Gyro_Gier_I; // 30 Wert : 0-250
unsigned char UnterspannungsWarnung; // 31 Wert : 0-250
unsigned char NotGas; // 32 Wert : 0-250 // Gaswert bei Empangsverlust
unsigned char NotGasZeit; // 33 Wert : 0-250 // Zeit, bis auf NotGas geschaltet wird, wegen Empfänger-Problemen
unsigned char UfoAusrichtung; // 34 X oder + Formation
unsigned char I_Faktor; // 35 Wert : 0-250
unsigned char UserParam1; // 36 Wert : 0-250
unsigned char UserParam2; // 37 Wert : 0-250
unsigned char UserParam3; // 38 Wert : 0-250
unsigned char UserParam4; // 39 Wert : 0-250
unsigned char ServoNickControl; // 40 Wert : 0-250 // Stellung des Servos
unsigned char ServoNickComp; // 41 Wert : 0-250 // Einfluss Gyro/Servo
unsigned char ServoNickMin; // 42 Wert : 0-250 // Anschlag
unsigned char ServoNickMax; // 43 Wert : 0-250 // Anschlag
//---------------------------------- // --------------------- Seit V0.75 -------------------------------------
unsigned char ServoRollControl; // 44 Wert : 0-250 // Stellung des Servos
unsigned char ServoRollComp; // 45 Wert : 0-250
unsigned char ServoRollMin; // 46 Wert : 0-250
unsigned char ServoRollMax; // 47 Wert : 0-250
unsigned char ServoNickRefresh; // 48
unsigned char LoopGasLimit; // 49 Wert: 0-250 max. Gas während Looping
unsigned char LoopThreshold; // 50 Wert: 0-250 Schwelle für Stickausschlag
unsigned char LoopHysterese; // 51 Wert: 0-250 Hysterese für Stickausschlag
unsigned char AchsKopplung1; // 52 Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick koppelt (NickRollMitkopplung)
unsigned char AchsKopplung2; // 53 Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden
unsigned char CouplingYawCorrection; // 54 Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden
unsigned char WinkelUmschlagNick; // 55 Wert: 0-250 180°-Punkt // EE_Parameter.WinkelUmschlagNick = 85; // TurnOverNick
unsigned char WinkelUmschlagRoll; // 56 Wert: 0-250 180°-Punkt // EE_Parameter.WinkelUmschlagRoll = 85; // TurnOverRoll
unsigned char GyroAccAbgleich; // 57 1/k (Koppel_ACC_Wirkung)
unsigned char Driftkomp; // 58
unsigned char DynamicStability; // 59
unsigned char UserParam5; // 60 Wert : 0-250
unsigned char UserParam6; // 61 Wert : 0-250
unsigned char UserParam7; // 62 Wert : 0-250
unsigned char UserParam8; // 63 Wert : 0-250
//----------------------------------- // ---------------------- Output -----------------------------------------
unsigned char J16Bitmask; // 64 for the J16 Output
unsigned char J16Timing; // 65 for the J16 Output
unsigned char J17Bitmask; // 66 for the J17 Output
unsigned char J17Timing; // 67 for the J17 Output
// ---------------------------------- // ---------------------- seit version V0.75c ----------------------------
unsigned char WARN_J16_Bitmask; // 68 for the J16 Output
unsigned char WARN_J17_Bitmask; // 69 for the J17 Output
//----------------------------------- // ------------NaviCtrl----------------------------------------------------
unsigned char NaviGpsModeControl; // 70 Parameter für das Naviboard
unsigned char NaviGpsGain; // 71
unsigned char NaviGpsP; // 72
unsigned char NaviGpsI; // 73
unsigned char NaviGpsD; // 74
unsigned char NaviGpsPLimit; // 75
unsigned char NaviGpsILimit; // 76
unsigned char NaviGpsDLimit; // 77
unsigned char NaviGpsACC; // 78
unsigned char NaviGpsMinSat; // 79
unsigned char NaviStickThreshold; // 80
unsigned char NaviWindCorrection; // 81
unsigned char NaviSpeedCompensation; // 82
unsigned char NaviOperatingRadius; // 83
unsigned char NaviAngleLimitation; // 84
unsigned char NaviPH_LoginTime; // 85
//---------------------------------- // ---Ext.Ctrl-------------
unsigned char ExternalControl; // 86 for serial Control
unsigned char BitConfig; // 87 (war Loop-Cfg) Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt
unsigned char ServoCompInvert; // 88 0x01 = Nick, 0x02 = Roll 0 oder 1 // WICHTIG!!! am Ende lassen
unsigned char ExtraConfig; // 89 bitcodiert
char Name[12]; // 90-101
};
//--------------------------------------------------------------------------------------------------------------------------------------------------
extern struct mk_param_struct EE_Parameter; // ist in fc.c Zeile 112 deklariert worden
//--------------------------------------------------------------------------------------------------------------------------------------------------
 
 
 
//----------------------------------------------------------------------------------------------------------------------
struct
{
char Revision; // 1
char Name[12]; // 2-13 siehe main.c Zeile 229 memcpy(Mixer.Name, "Quadro\0", 11);
signed char Motor[16][4]; // 14-77 für jeden Motor gibt es einen 4er Datensatz
} Mixer;
//----------------------------------------------------------------------------------------------------------------------
 
 
 
 
extern unsigned char Parameter_Luftdruck_D;
extern unsigned char Parameter_MaxHoehe;
extern unsigned char Parameter_Hoehe_P;
extern unsigned char Parameter_Hoehe_ACC_Wirkung;
extern unsigned char Parameter_KompassWirkung;
extern unsigned char Parameter_Gyro_P;
extern unsigned char Parameter_Gyro_I;
extern unsigned char Parameter_Gier_P;
extern unsigned char Parameter_ServoNickControl;
extern unsigned char Parameter_ServoRollControl;
extern unsigned char Parameter_AchsKopplung1;
extern unsigned char Parameter_AchsKopplung2;
 
extern unsigned char Parameter_J16Bitmask; // for the J16 Output
extern unsigned char Parameter_J16Timing; // for the J16 Output
extern unsigned char Parameter_J17Bitmask; // for the J17 Output
extern unsigned char Parameter_J17Timing; // for the J17 Output
extern signed char MixerTable[MAX_MOTORS][4];
extern unsigned char Motor[MAX_MOTORS];
 
#endif
// *** EOF: _FC_H ********************************************************************************************************************
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/fc.lst
0,0 → 1,11850
1 .file "fc.c"
2 .arch atmega644
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 .global filterDD
11 .global filterDD
12 .section .bss
15 filterDD:
16 0000 0000 .skip 2,0
17 .global filtersum
18 .global filtersum
21 filtersum:
22 0002 0000 .skip 2,0
23 .global gyroScaled
24 .global gyroScaled
27 gyroScaled:
28 0004 0000 .skip 2,0
29 .global gyroScaledOld
30 .global gyroScaledOld
33 gyroScaledOld:
34 0006 0000 .skip 2,0
35 .global mincontrollerDD
36 .global mincontrollerDD
39 mincontrollerDD:
40 0008 0000 .skip 2,0
41 .global maxcontrollerDD
42 .global maxcontrollerDD
45 maxcontrollerDD:
46 000a 0000 .skip 2,0
47 .global controllerDD
48 .global controllerDD
51 controllerDD:
52 000c 0000 .skip 2,0
53 .global mincontrollerD
54 .global mincontrollerD
57 mincontrollerD:
58 000e 0000 .skip 2,0
59 .global maxcontrollerD
60 .global maxcontrollerD
63 maxcontrollerD:
64 0010 0000 .skip 2,0
65 .global controllerD
66 .global controllerD
69 controllerD:
70 0012 0000 .skip 2,0
71 .global mincontrollerP
72 .global mincontrollerP
75 mincontrollerP:
76 0014 0000 .skip 2,0
77 .global maxcontrollerP
78 .global maxcontrollerP
81 maxcontrollerP:
82 0016 0000 .skip 2,0
83 .global controllerP
84 .global controllerP
87 controllerP:
88 0018 0000 .skip 2,0
89 .global kdd
90 .global kdd
93 kdd:
94 001a 0000 .skip 2,0
95 .global kd
96 .global kd
99 kd:
100 001c 0000 .skip 2,0
101 .global kp
102 .global kp
105 kp:
106 001e 0000 .skip 2,0
107 .global ipk
108 .global ipk
111 ipk:
112 0020 0000 0000 .skip 6,0
112 0000
113 .global ucflg3
114 .data
117 ucflg3:
118 0000 01 .byte 1
119 .global ucflg2
122 ucflg2:
123 0001 01 .byte 1
124 .global ucflg1
127 ucflg1:
128 0002 01 .byte 1
129 .global LoadHandler
130 .global LoadHandler
131 .section .bss
134 LoadHandler:
135 0026 00 .skip 1,0
136 .global RequiredMotors
137 .data
140 RequiredMotors:
141 0003 04 .byte 4
142 .global GIER_GRAD_FAKTOR
145 GIER_GRAD_FAKTOR:
146 0004 0B05 0000 .long 1291
147 .global MikroKopterFlags
148 .global MikroKopterFlags
149 .section .bss
152 MikroKopterFlags:
153 0027 00 .skip 1,0
154 .global modell_fliegt
155 .global modell_fliegt
158 modell_fliegt:
159 0028 0000 .skip 2,0
160 .global MaxStickRoll
161 .global MaxStickRoll
164 MaxStickRoll:
165 002a 0000 .skip 2,0
166 .global MaxStickNick
167 .global MaxStickNick
170 MaxStickNick:
171 002c 0000 .skip 2,0
172 .global ExternHoehenValue
173 .data
176 ExternHoehenValue:
177 0008 ECFF .word -20
178 .global ExternStickGier
179 .global ExternStickGier
180 .section .bss
183 ExternStickGier:
184 002e 0000 .skip 2,0
185 .global ExternStickRoll
186 .global ExternStickRoll
189 ExternStickRoll:
190 0030 0000 .skip 2,0
191 .global ExternStickNick
192 .global ExternStickNick
195 ExternStickNick:
196 0032 0000 .skip 2,0
197 .global Parameter_DynamicStability
198 .data
201 Parameter_DynamicStability:
202 000a 64 .byte 100
203 .global Parameter_CouplingYawCorrection
206 Parameter_CouplingYawCorrection:
207 000b 40 .byte 64
208 .global Parameter_AchsKopplung2
211 Parameter_AchsKopplung2:
212 000c 41 .byte 65
213 .global Parameter_AchsKopplung1
216 Parameter_AchsKopplung1:
217 000d 5A .byte 90
218 .global Parameter_LoopGasLimit
221 Parameter_LoopGasLimit:
222 000e 46 .byte 70
223 .global Parameter_ServoRollControl
226 Parameter_ServoRollControl:
227 000f 64 .byte 100
228 .global Parameter_ServoNickControl
231 Parameter_ServoNickControl:
232 0010 64 .byte 100
233 .global Parameter_UserParam8
234 .global Parameter_UserParam8
235 .section .bss
238 Parameter_UserParam8:
239 0034 00 .skip 1,0
240 .global Parameter_UserParam7
241 .global Parameter_UserParam7
244 Parameter_UserParam7:
245 0035 00 .skip 1,0
246 .global Parameter_UserParam6
247 .global Parameter_UserParam6
250 Parameter_UserParam6:
251 0036 00 .skip 1,0
252 .global Parameter_UserParam5
253 .global Parameter_UserParam5
256 Parameter_UserParam5:
257 0037 00 .skip 1,0
258 .global Parameter_UserParam4
259 .global Parameter_UserParam4
262 Parameter_UserParam4:
263 0038 00 .skip 1,0
264 .global Parameter_UserParam3
265 .global Parameter_UserParam3
268 Parameter_UserParam3:
269 0039 00 .skip 1,0
270 .global Parameter_UserParam2
271 .global Parameter_UserParam2
274 Parameter_UserParam2:
275 003a 00 .skip 1,0
276 .global Parameter_UserParam1
277 .global Parameter_UserParam1
280 Parameter_UserParam1:
281 003b 00 .skip 1,0
282 .global Parameter_I_Faktor
283 .data
286 Parameter_I_Faktor:
287 0011 0A .byte 10
288 .global Parameter_Gier_P
291 Parameter_Gier_P:
292 0012 02 .byte 2
293 .global Parameter_Gyro_Gier_I
296 Parameter_Gyro_Gier_I:
297 0013 96 .byte -106
298 .global Parameter_Gyro_Gier_P
301 Parameter_Gyro_Gier_P:
302 0014 96 .byte -106
303 .global Parameter_Gyro_I
306 Parameter_Gyro_I:
307 0015 96 .byte -106
308 .global Parameter_Gyro_P
311 Parameter_Gyro_P:
312 0016 96 .byte -106
313 .global Parameter_Gyro_D
316 Parameter_Gyro_D:
317 0017 08 .byte 8
318 .global Parameter_Hoehe_GPS_Z
321 Parameter_Hoehe_GPS_Z:
322 0018 40 .byte 64
323 .global Parameter_KompassWirkung
326 Parameter_KompassWirkung:
327 0019 40 .byte 64
328 .global Parameter_Hoehe_ACC_Wirkung
331 Parameter_Hoehe_ACC_Wirkung:
332 001a 3A .byte 58
333 .global Parameter_Hoehe_P
336 Parameter_Hoehe_P:
337 001b 10 .byte 16
338 .global Parameter_MaxHoehe
341 Parameter_MaxHoehe:
342 001c FB .byte -5
343 .global Parameter_Luftdruck_D
346 Parameter_Luftdruck_D:
347 001d 30 .byte 48
348 .global Looping_Oben
349 .global Looping_Oben
350 .section .bss
353 Looping_Oben:
354 003c 00 .skip 1,0
355 .global Looping_Unten
356 .global Looping_Unten
359 Looping_Unten:
360 003d 00 .skip 1,0
361 .global Looping_Rechts
362 .global Looping_Rechts
365 Looping_Rechts:
366 003e 00 .skip 1,0
367 .global Looping_Links
368 .global Looping_Links
371 Looping_Links:
372 003f 00 .skip 1,0
373 .global Looping_Roll
374 .global Looping_Roll
377 Looping_Roll:
378 0040 00 .skip 1,0
379 .global Looping_Nick
380 .global Looping_Nick
383 Looping_Nick:
384 0041 00 .skip 1,0
385 .global Ki
386 .data
389 Ki:
390 001e 3801 .word 312
391 .global LageKorrekturNick
392 .global LageKorrekturNick
393 .section .bss
396 LageKorrekturNick:
397 0042 0000 .skip 2,0
398 .global LageKorrekturRoll
399 .global LageKorrekturRoll
402 LageKorrekturRoll:
403 0044 0000 .skip 2,0
404 .global SollHoehe
405 .global SollHoehe
408 SollHoehe:
409 0046 0000 0000 .skip 4,0
410 .global HoehenWert
411 .global HoehenWert
414 HoehenWert:
415 004a 0000 0000 .skip 4,0
416 .global StickGas
417 .global StickGas
420 StickGas:
421 004e 0000 .skip 2,0
422 .global StickGier
423 .global StickGier
426 StickGier:
427 0050 0000 .skip 2,0
428 .global StickRoll
429 .global StickRoll
432 StickRoll:
433 0052 0000 .skip 2,0
434 .global StickNick
435 .global StickNick
438 StickNick:
439 0054 0000 .skip 2,0
440 .global SenderRSSI
441 .global SenderRSSI
444 SenderRSSI:
445 0056 00 .skip 1,0
446 .global SenderOkay
447 .global SenderOkay
450 SenderOkay:
451 0057 00 .skip 1,0
452 .global Poti4
453 .global Poti4
456 Poti4:
457 0058 0000 .skip 2,0
458 .global Poti3
459 .global Poti3
462 Poti3:
463 005a 0000 .skip 2,0
464 .global Poti2
465 .global Poti2
468 Poti2:
469 005c 0000 .skip 2,0
470 .global Poti1
471 .global Poti1
474 Poti1:
475 005e 0000 .skip 2,0
476 .global GierGyroFehler
477 .global GierGyroFehler
480 GierGyroFehler:
481 0060 0000 .skip 2,0
482 .global Umschlag180Roll
483 .data
486 Umschlag180Roll:
487 0020 90D0 0300 .long 250000
488 .global Umschlag180Nick
491 Umschlag180Nick:
492 0024 90D0 0300 .long 250000
493 .global TrichterFlug
494 .global TrichterFlug
495 .section .bss
498 TrichterFlug:
499 0062 00 .skip 1,0
500 .global HoehenReglerAktiv
501 .global HoehenReglerAktiv
504 HoehenReglerAktiv:
505 0063 00 .skip 1,0
506 .global MotorenEin
507 .global MotorenEin
510 MotorenEin:
511 0064 00 .skip 1,0
512 .global KompassSignalSchlecht
513 .data
516 KompassSignalSchlecht:
517 0028 F401 .word 500
518 .global KompassRichtung
519 .global KompassRichtung
520 .section .bss
523 KompassRichtung:
524 0065 0000 .skip 2,0
525 .global KompassStartwert
526 .global KompassStartwert
529 KompassStartwert:
530 0067 0000 .skip 2,0
531 .global KompassValue
532 .global KompassValue
535 KompassValue:
536 0069 0000 .skip 2,0
537 .global Mess_Integral_Hoch
538 .global Mess_Integral_Hoch
541 Mess_Integral_Hoch:
542 006b 0000 0000 .skip 4,0
543 .global Mess_Integral_Gier2
544 .global Mess_Integral_Gier2
547 Mess_Integral_Gier2:
548 006f 0000 0000 .skip 4,0
549 .global Mess_Integral_Gier
550 .global Mess_Integral_Gier
553 Mess_Integral_Gier:
554 0073 0000 0000 .skip 4,0
555 .global Mess_IntegralRoll2
556 .global Mess_IntegralRoll2
559 Mess_IntegralRoll2:
560 0077 0000 0000 .skip 4,0
561 .global Mess_IntegralRoll
562 .global Mess_IntegralRoll
565 Mess_IntegralRoll:
566 007b 0000 0000 .skip 4,0
567 .global Mess_IntegralNick2
568 .global Mess_IntegralNick2
571 Mess_IntegralNick2:
572 007f 0000 0000 .skip 4,0
573 .global Mess_IntegralNick
574 .global Mess_IntegralNick
577 Mess_IntegralNick:
578 0083 0000 0000 .skip 4,0
579 .global Integral_Gier
580 .global Integral_Gier
583 Integral_Gier:
584 0087 0000 0000 .skip 4,0
585 .global IntegralAccZ
586 .global IntegralAccZ
589 IntegralAccZ:
590 008b 0000 0000 .skip 4,0
591 .global IntegralAccRoll
592 .global IntegralAccRoll
595 IntegralAccRoll:
596 008f 0000 0000 .skip 4,0
597 .global IntegralAccNick
598 .global IntegralAccNick
601 IntegralAccNick:
602 0093 0000 0000 .skip 4,0
603 .global IntegralRoll2
604 .global IntegralRoll2
607 IntegralRoll2:
608 0097 0000 0000 .skip 4,0
609 .global IntegralRoll
610 .global IntegralRoll
613 IntegralRoll:
614 009b 0000 0000 .skip 4,0
615 .global IntegralNick2
616 .global IntegralNick2
619 IntegralNick2:
620 009f 0000 0000 .skip 4,0
621 .global IntegralNick
622 .global IntegralNick
625 IntegralNick:
626 00a3 0000 0000 .skip 4,0
627 .global CosinusRollWinkel
628 .global CosinusRollWinkel
631 CosinusRollWinkel:
632 00a7 00 .skip 1,0
633 .global CosinusNickWinkel
634 .global CosinusNickWinkel
637 CosinusNickWinkel:
638 00a8 00 .skip 1,0
639 .global NeutralAccZ
640 .global NeutralAccZ
643 NeutralAccZ:
644 00a9 0000 0000 .skip 4,0
645 .global NaviCntAcc
646 .global NaviCntAcc
649 NaviCntAcc:
650 00ad 0000 .skip 2,0
651 .global NeutralAccY
652 .global NeutralAccY
655 NeutralAccY:
656 00af 0000 .skip 2,0
657 .global NeutralAccX
658 .global NeutralAccX
661 NeutralAccX:
662 00b1 0000 .skip 2,0
663 .global StartNeutralNick
664 .global StartNeutralNick
667 StartNeutralNick:
668 00b3 0000 .skip 2,0
669 .global StartNeutralRoll
670 .global StartNeutralRoll
673 StartNeutralRoll:
674 00b5 0000 .skip 2,0
675 .global AdNeutralGier
676 .global AdNeutralGier
679 AdNeutralGier:
680 00b7 0000 .skip 2,0
681 .global AdNeutralRoll
682 .global AdNeutralRoll
685 AdNeutralRoll:
686 00b9 0000 .skip 2,0
687 .global AdNeutralNick
688 .global AdNeutralNick
691 AdNeutralNick:
692 00bb 0000 .skip 2,0
693 .global I2CTimeout
694 .data
697 I2CTimeout:
698 002a 6400 .word 100
699 .global BaroExpandActive
700 .global BaroExpandActive
701 .section .bss
704 BaroExpandActive:
705 00bd 0000 .skip 2,0
706 .text
708 eeprom_read_byte:
709 /* prologue: frame size=0 */
710 /* prologue end (size=0) */
711 .L2:
712 0000 F999 sbic 63-0x20,1
713 0002 00C0 rjmp .L2
714 0004 92BD out (65)+1-0x20,r25
715 0006 81BD out 65-0x20,r24
716 /* #APP */
717 /* START EEPROM READ CRITICAL SECTION */
718 0008 F89A sbi 31, 0
719 000a 80B5 in r24, 32
720 /* END EEPROM READ CRITICAL SECTION */
721
722 /* #NOAPP */
723 000c 9927 clr r25
724 /* epilogue: frame size=0 */
725 000e 0895 ret
726 /* epilogue end (size=1) */
727 /* function eeprom_read_byte size 16 (15) */
730 eeprom_write_byte:
731 /* prologue: frame size=0 */
732 /* prologue end (size=0) */
733 .L7:
734 0010 F999 sbic 63-0x20,1
735 0012 00C0 rjmp .L7
736 0014 1FBA out 63-0x20,__zero_reg__
737 0016 92BD out (65)+1-0x20,r25
738 0018 81BD out 65-0x20,r24
739 001a 60BD out 64-0x20,r22
740 /* #APP */
741 /* START EEPROM WRITE CRITICAL SECTION */
742 001c 0FB6 in r0, 63
743 001e F894 cli
744 0020 FA9A sbi 31, 2
745 0022 F99A sbi 31, 1
746 0024 0FBE out 63, r0
747 /* END EEPROM WRITE CRITICAL SECTION */
748 /* #NOAPP */
749 /* epilogue: frame size=0 */
750 0026 0895 ret
751 /* epilogue end (size=1) */
752 /* function eeprom_write_byte size 21 (20) */
754 .global DefaultStickMapping
756 DefaultStickMapping:
757 /* prologue: frame size=0 */
758 /* prologue end (size=0) */
759 0028 83E0 ldi r24,lo8(3)
760 002a 8093 0000 sts EE_Parameter,r24
761 002e 82E0 ldi r24,lo8(2)
762 0030 8093 0000 sts EE_Parameter+1,r24
763 0034 81E0 ldi r24,lo8(1)
764 0036 8093 0000 sts EE_Parameter+2,r24
765 003a 84E0 ldi r24,lo8(4)
766 003c 8093 0000 sts EE_Parameter+3,r24
767 0040 85E0 ldi r24,lo8(5)
768 0042 8093 0000 sts EE_Parameter+4,r24
769 0046 86E0 ldi r24,lo8(6)
770 0048 8093 0000 sts EE_Parameter+5,r24
771 004c 87E0 ldi r24,lo8(7)
772 004e 8093 0000 sts EE_Parameter+6,r24
773 0052 88E0 ldi r24,lo8(8)
774 0054 8093 0000 sts EE_Parameter+7,r24
775 /* epilogue: frame size=0 */
776 0058 0895 ret
777 /* epilogue end (size=1) */
778 /* function DefaultStickMapping size 25 (24) */
780 .data
781 .LC0:
782 002c 4265 6769 .string "Beginner"
782 6E6E 6572
782 00
783 0035 00 .string ""
784 .text
785 .global DefaultKonstanten3
787 DefaultKonstanten3:
788 /* prologue: frame size=0 */
789 /* prologue end (size=0) */
790 005a 68E0 ldi r22,lo8(8)
791 005c 6093 0000 sts EE_Parameter+8,r22
792 0060 71E0 ldi r23,lo8(1)
793 0062 7093 0000 sts EE_Parameter+88,r23
794 0066 4EE1 ldi r20,lo8(30)
795 0068 4093 0000 sts EE_Parameter+9,r20
796 006c 8BEF ldi r24,lo8(-5)
797 006e 8093 0000 sts EE_Parameter+11,r24
798 0072 8AE0 ldi r24,lo8(10)
799 0074 8093 0000 sts EE_Parameter+12,r24
800 0078 4093 0000 sts EE_Parameter+10,r20
801 007c 4093 0000 sts EE_Parameter+14,r20
802 0080 85E0 ldi r24,lo8(5)
803 0082 8093 0000 sts EE_Parameter+15,r24
804 0086 80E4 ldi r24,lo8(64)
805 0088 8093 0000 sts EE_Parameter+16,r24
806 008c 1092 0000 sts EE_Parameter+17,__zero_reg__
807 0090 8FE0 ldi r24,lo8(15)
808 0092 8093 0000 sts EE_Parameter+13,r24
809 0096 6093 0000 sts EE_Parameter+18,r22
810 009a 20E1 ldi r18,lo8(16)
811 009c 2093 0000 sts EE_Parameter+19,r18
812 00a0 56E0 ldi r21,lo8(6)
813 00a2 5093 0000 sts EE_Parameter+20,r21
814 00a6 6093 0000 sts EE_Parameter+21,r22
815 00aa 86EE ldi r24,lo8(-26)
816 00ac 8093 0000 sts EE_Parameter+22,r24
817 00b0 4093 0000 sts EE_Parameter+23,r20
818 00b4 80E8 ldi r24,lo8(-128)
819 00b6 8093 0000 sts EE_Parameter+24,r24
820 00ba 34E6 ldi r19,lo8(100)
821 00bc 3093 0000 sts EE_Parameter+25,r19
822 00c0 98E7 ldi r25,lo8(120)
823 00c2 9093 0000 sts EE_Parameter+26,r25
824 00c6 83E0 ldi r24,lo8(3)
825 00c8 8093 0000 sts EE_Parameter+27,r24
826 00cc 3093 0000 sts EE_Parameter+28,r19
827 00d0 9093 0000 sts EE_Parameter+29,r25
828 00d4 81E2 ldi r24,lo8(33)
829 00d6 8093 0000 sts EE_Parameter+30,r24
830 00da 83E2 ldi r24,lo8(35)
831 00dc 8093 0000 sts EE_Parameter+31,r24
832 00e0 84E1 ldi r24,lo8(20)
833 00e2 8093 0000 sts EE_Parameter+32,r24
834 00e6 1092 0000 sts EE_Parameter+33,__zero_reg__
835 00ea 2093 0000 sts EE_Parameter+34,r18
836 00ee 1092 0000 sts EE_Parameter+35,__zero_reg__
837 00f2 1092 0000 sts EE_Parameter+36,__zero_reg__
838 00f6 1092 0000 sts EE_Parameter+37,__zero_reg__
839 00fa 1092 0000 sts EE_Parameter+38,__zero_reg__
840 00fe 1092 0000 sts EE_Parameter+59,__zero_reg__
841 0102 1092 0000 sts EE_Parameter+60,__zero_reg__
842 0106 1092 0000 sts EE_Parameter+61,__zero_reg__
843 010a 1092 0000 sts EE_Parameter+62,__zero_reg__
844 010e 3093 0000 sts EE_Parameter+39,r19
845 0112 98E2 ldi r25,lo8(40)
846 0114 9093 0000 sts EE_Parameter+40,r25
847 0118 7093 0000 sts EE_Parameter+87,r23
848 011c 1092 0000 sts EE_Parameter+41,__zero_reg__
849 0120 8AEF ldi r24,lo8(-6)
850 0122 8093 0000 sts EE_Parameter+42,r24
851 0126 5093 0000 sts EE_Parameter+47,r21
852 012a 3093 0000 sts EE_Parameter+43,r19
853 012e 9093 0000 sts EE_Parameter+44,r25
854 0132 1092 0000 sts EE_Parameter+45,__zero_reg__
855 0136 8093 0000 sts EE_Parameter+46,r24
856 013a 92E3 ldi r25,lo8(50)
857 013c 9093 0000 sts EE_Parameter+48,r25
858 0140 2AE5 ldi r18,lo8(90)
859 0142 2093 0000 sts EE_Parameter+49,r18
860 0146 9093 0000 sts EE_Parameter+50,r25
861 014a 1092 0000 sts EE_Parameter+86,__zero_reg__
862 014e 2093 0000 sts EE_Parameter+51,r18
863 0152 80E5 ldi r24,lo8(80)
864 0154 8093 0000 sts EE_Parameter+52,r24
865 0158 86E4 ldi r24,lo8(70)
866 015a 8093 0000 sts EE_Parameter+53,r24
867 015e 85E5 ldi r24,lo8(85)
868 0160 8093 0000 sts EE_Parameter+54,r24
869 0164 8093 0000 sts EE_Parameter+55,r24
870 0168 80E2 ldi r24,lo8(32)
871 016a 8093 0000 sts EE_Parameter+56,r24
872 016e 8093 0000 sts EE_Parameter+57,r24
873 0172 9093 0000 sts EE_Parameter+58,r25
874 0176 8FE5 ldi r24,lo8(95)
875 0178 8093 0000 sts EE_Parameter+63,r24
876 017c 83EF ldi r24,lo8(-13)
877 017e 8093 0000 sts EE_Parameter+65,r24
878 0182 8AEA ldi r24,lo8(-86)
879 0184 8093 0000 sts EE_Parameter+67,r24
880 0188 8093 0000 sts EE_Parameter+68,r24
881 018c 4093 0000 sts EE_Parameter+64,r20
882 0190 4093 0000 sts EE_Parameter+66,r20
883 0194 8CEF ldi r24,lo8(-4)
884 0196 8093 0000 sts EE_Parameter+69,r24
885 019a 3093 0000 sts EE_Parameter+70,r19
886 019e 2093 0000 sts EE_Parameter+71,r18
887 01a2 2093 0000 sts EE_Parameter+72,r18
888 01a6 2093 0000 sts EE_Parameter+73,r18
889 01aa 8BE4 ldi r24,lo8(75)
890 01ac 8093 0000 sts EE_Parameter+74,r24
891 01b0 8093 0000 sts EE_Parameter+75,r24
892 01b4 8093 0000 sts EE_Parameter+76,r24
893 01b8 1092 0000 sts EE_Parameter+77,__zero_reg__
894 01bc 5093 0000 sts EE_Parameter+78,r21
895 01c0 6093 0000 sts EE_Parameter+79,r22
896 01c4 2093 0000 sts EE_Parameter+80,r18
897 01c8 4093 0000 sts EE_Parameter+81,r20
898 01cc 3093 0000 sts EE_Parameter+82,r19
899 01d0 3093 0000 sts EE_Parameter+83,r19
900 01d4 84E0 ldi r24,lo8(4)
901 01d6 8093 0000 sts EE_Parameter+84,r24
902 01da 8CE0 ldi r24,lo8(12)
903 01dc A0E0 ldi r26,lo8(.LC0)
904 01de B0E0 ldi r27,hi8(.LC0)
905 01e0 E0E0 ldi r30,lo8(EE_Parameter+89)
906 01e2 F0E0 ldi r31,hi8(EE_Parameter+89)
907 01e4 0D90 ld __tmp_reg__,X+
908 01e6 0192 st Z+,__tmp_reg__
909 01e8 8A95 dec r24
910 01ea 01F4 brne .-8
911 /* epilogue: frame size=0 */
912 01ec 0895 ret
913 /* epilogue end (size=1) */
914 /* function DefaultKonstanten3 size 202 (201) */
916 .data
917 .LC1:
918 0036 4E6F 726D .string "Normal"
918 616C 00
919 003d 00 .string ""
920 .text
921 .global DefaultKonstanten2
923 DefaultKonstanten2:
924 /* prologue: frame size=0 */
925 /* prologue end (size=0) */
926 01ee 8AE6 ldi r24,lo8(106)
927 01f0 8093 0000 sts EE_Parameter+8,r24
928 01f4 71E0 ldi r23,lo8(1)
929 01f6 7093 0000 sts EE_Parameter+88,r23
930 01fa 5EE1 ldi r21,lo8(30)
931 01fc 5093 0000 sts EE_Parameter+9,r21
932 0200 8BEF ldi r24,lo8(-5)
933 0202 8093 0000 sts EE_Parameter+11,r24
934 0206 9AE0 ldi r25,lo8(10)
935 0208 9093 0000 sts EE_Parameter+12,r25
936 020c 5093 0000 sts EE_Parameter+10,r21
937 0210 5093 0000 sts EE_Parameter+14,r21
938 0214 85E0 ldi r24,lo8(5)
939 0216 8093 0000 sts EE_Parameter+15,r24
940 021a 80E4 ldi r24,lo8(64)
941 021c 8093 0000 sts EE_Parameter+16,r24
942 0220 1092 0000 sts EE_Parameter+17,__zero_reg__
943 0224 8FE0 ldi r24,lo8(15)
944 0226 8093 0000 sts EE_Parameter+13,r24
945 022a 9093 0000 sts EE_Parameter+18,r25
946 022e 80E1 ldi r24,lo8(16)
947 0230 8093 0000 sts EE_Parameter+19,r24
948 0234 66E0 ldi r22,lo8(6)
949 0236 6093 0000 sts EE_Parameter+20,r22
950 023a E8E0 ldi r30,lo8(8)
951 023c E093 0000 sts EE_Parameter+21,r30
952 0240 86EE ldi r24,lo8(-26)
953 0242 8093 0000 sts EE_Parameter+22,r24
954 0246 5093 0000 sts EE_Parameter+23,r21
955 024a 80E8 ldi r24,lo8(-128)
956 024c 8093 0000 sts EE_Parameter+24,r24
957 0250 2AE5 ldi r18,lo8(90)
958 0252 2093 0000 sts EE_Parameter+25,r18
959 0256 98E7 ldi r25,lo8(120)
960 0258 9093 0000 sts EE_Parameter+26,r25
961 025c 83E0 ldi r24,lo8(3)
962 025e 8093 0000 sts EE_Parameter+27,r24
963 0262 2093 0000 sts EE_Parameter+28,r18
964 0266 9093 0000 sts EE_Parameter+29,r25
965 026a 81E2 ldi r24,lo8(33)
966 026c 8093 0000 sts EE_Parameter+30,r24
967 0270 83E2 ldi r24,lo8(35)
968 0272 8093 0000 sts EE_Parameter+31,r24
969 0276 5093 0000 sts EE_Parameter+32,r21
970 027a 1092 0000 sts EE_Parameter+33,__zero_reg__
971 027e 40E2 ldi r20,lo8(32)
972 0280 4093 0000 sts EE_Parameter+34,r20
973 0284 1092 0000 sts EE_Parameter+35,__zero_reg__
974 0288 1092 0000 sts EE_Parameter+36,__zero_reg__
975 028c 1092 0000 sts EE_Parameter+37,__zero_reg__
976 0290 1092 0000 sts EE_Parameter+38,__zero_reg__
977 0294 1092 0000 sts EE_Parameter+59,__zero_reg__
978 0298 1092 0000 sts EE_Parameter+60,__zero_reg__
979 029c 1092 0000 sts EE_Parameter+61,__zero_reg__
980 02a0 1092 0000 sts EE_Parameter+62,__zero_reg__
981 02a4 34E6 ldi r19,lo8(100)
982 02a6 3093 0000 sts EE_Parameter+39,r19
983 02aa 98E2 ldi r25,lo8(40)
984 02ac 9093 0000 sts EE_Parameter+40,r25
985 02b0 7093 0000 sts EE_Parameter+87,r23
986 02b4 1092 0000 sts EE_Parameter+41,__zero_reg__
987 02b8 8AEF ldi r24,lo8(-6)
988 02ba 8093 0000 sts EE_Parameter+42,r24
989 02be 6093 0000 sts EE_Parameter+47,r22
990 02c2 3093 0000 sts EE_Parameter+43,r19
991 02c6 9093 0000 sts EE_Parameter+44,r25
992 02ca 1092 0000 sts EE_Parameter+45,__zero_reg__
993 02ce 8093 0000 sts EE_Parameter+46,r24
994 02d2 82E3 ldi r24,lo8(50)
995 02d4 8093 0000 sts EE_Parameter+48,r24
996 02d8 2093 0000 sts EE_Parameter+49,r18
997 02dc 8093 0000 sts EE_Parameter+50,r24
998 02e0 1092 0000 sts EE_Parameter+86,__zero_reg__
999 02e4 2093 0000 sts EE_Parameter+51,r18
1000 02e8 80E5 ldi r24,lo8(80)
1001 02ea 8093 0000 sts EE_Parameter+52,r24
1002 02ee 8CE3 ldi r24,lo8(60)
1003 02f0 8093 0000 sts EE_Parameter+53,r24
1004 02f4 85E5 ldi r24,lo8(85)
1005 02f6 8093 0000 sts EE_Parameter+54,r24
1006 02fa 8093 0000 sts EE_Parameter+55,r24
1007 02fe 4093 0000 sts EE_Parameter+56,r20
1008 0302 4093 0000 sts EE_Parameter+57,r20
1009 0306 9BE4 ldi r25,lo8(75)
1010 0308 9093 0000 sts EE_Parameter+58,r25
1011 030c 8FE5 ldi r24,lo8(95)
1012 030e 8093 0000 sts EE_Parameter+63,r24
1013 0312 83EF ldi r24,lo8(-13)
1014 0314 8093 0000 sts EE_Parameter+65,r24
1015 0318 8AEA ldi r24,lo8(-86)
1016 031a 8093 0000 sts EE_Parameter+67,r24
1017 031e 8093 0000 sts EE_Parameter+68,r24
1018 0322 84E1 ldi r24,lo8(20)
1019 0324 8093 0000 sts EE_Parameter+64,r24
1020 0328 8093 0000 sts EE_Parameter+66,r24
1021 032c 8CEF ldi r24,lo8(-4)
1022 032e 8093 0000 sts EE_Parameter+69,r24
1023 0332 3093 0000 sts EE_Parameter+70,r19
1024 0336 2093 0000 sts EE_Parameter+71,r18
1025 033a 2093 0000 sts EE_Parameter+72,r18
1026 033e 2093 0000 sts EE_Parameter+73,r18
1027 0342 9093 0000 sts EE_Parameter+74,r25
1028 0346 9093 0000 sts EE_Parameter+75,r25
1029 034a 9093 0000 sts EE_Parameter+76,r25
1030 034e 1092 0000 sts EE_Parameter+77,__zero_reg__
1031 0352 6093 0000 sts EE_Parameter+78,r22
1032 0356 E093 0000 sts EE_Parameter+79,r30
1033 035a 2093 0000 sts EE_Parameter+80,r18
1034 035e 5093 0000 sts EE_Parameter+81,r21
1035 0362 3093 0000 sts EE_Parameter+82,r19
1036 0366 3093 0000 sts EE_Parameter+83,r19
1037 036a 84E0 ldi r24,lo8(4)
1038 036c 8093 0000 sts EE_Parameter+84,r24
1039 0370 8CE0 ldi r24,lo8(12)
1040 0372 A0E0 ldi r26,lo8(.LC1)
1041 0374 B0E0 ldi r27,hi8(.LC1)
1042 0376 E0E0 ldi r30,lo8(EE_Parameter+89)
1043 0378 F0E0 ldi r31,hi8(EE_Parameter+89)
1044 037a 0D90 ld __tmp_reg__,X+
1045 037c 0192 st Z+,__tmp_reg__
1046 037e 8A95 dec r24
1047 0380 01F4 brne .-8
1048 /* epilogue: frame size=0 */
1049 0382 0895 ret
1050 /* epilogue end (size=1) */
1051 /* function DefaultKonstanten2 size 203 (202) */
1053 .data
1054 .LC2:
1055 003e 5370 6F72 .string "Sport"
1055 7400
1056 0044 00 .string ""
1057 .text
1058 .global DefaultKonstanten1
1060 DefaultKonstanten1:
1061 /* prologue: frame size=0 */
1062 0384 1F93 push r17
1063 /* prologue end (size=1) */
1064 0386 8AE6 ldi r24,lo8(106)
1065 0388 8093 0000 sts EE_Parameter+8,r24
1066 038c 51E0 ldi r21,lo8(1)
1067 038e 5093 0000 sts EE_Parameter+88,r21
1068 0392 4EE1 ldi r20,lo8(30)
1069 0394 4093 0000 sts EE_Parameter+9,r20
1070 0398 8BEF ldi r24,lo8(-5)
1071 039a 8093 0000 sts EE_Parameter+11,r24
1072 039e 8AE0 ldi r24,lo8(10)
1073 03a0 8093 0000 sts EE_Parameter+12,r24
1074 03a4 4093 0000 sts EE_Parameter+10,r20
1075 03a8 4093 0000 sts EE_Parameter+14,r20
1076 03ac 85E0 ldi r24,lo8(5)
1077 03ae 8093 0000 sts EE_Parameter+15,r24
1078 03b2 80E4 ldi r24,lo8(64)
1079 03b4 8093 0000 sts EE_Parameter+16,r24
1080 03b8 1092 0000 sts EE_Parameter+17,__zero_reg__
1081 03bc 84E1 ldi r24,lo8(20)
1082 03be 8093 0000 sts EE_Parameter+13,r24
1083 03c2 8EE0 ldi r24,lo8(14)
1084 03c4 8093 0000 sts EE_Parameter+18,r24
1085 03c8 E0E1 ldi r30,lo8(16)
1086 03ca E093 0000 sts EE_Parameter+19,r30
1087 03ce 1CE0 ldi r17,lo8(12)
1088 03d0 1093 0000 sts EE_Parameter+20,r17
1089 03d4 F8E0 ldi r31,lo8(8)
1090 03d6 F093 0000 sts EE_Parameter+21,r31
1091 03da 86EE ldi r24,lo8(-26)
1092 03dc 8093 0000 sts EE_Parameter+22,r24
1093 03e0 4093 0000 sts EE_Parameter+23,r20
1094 03e4 80E8 ldi r24,lo8(-128)
1095 03e6 8093 0000 sts EE_Parameter+24,r24
1096 03ea 30E5 ldi r19,lo8(80)
1097 03ec 3093 0000 sts EE_Parameter+25,r19
1098 03f0 96E9 ldi r25,lo8(-106)
1099 03f2 9093 0000 sts EE_Parameter+26,r25
1100 03f6 83E0 ldi r24,lo8(3)
1101 03f8 8093 0000 sts EE_Parameter+27,r24
1102 03fc 3093 0000 sts EE_Parameter+28,r19
1103 0400 9093 0000 sts EE_Parameter+29,r25
1104 0404 81E2 ldi r24,lo8(33)
1105 0406 8093 0000 sts EE_Parameter+30,r24
1106 040a 83E2 ldi r24,lo8(35)
1107 040c 8093 0000 sts EE_Parameter+31,r24
1108 0410 4093 0000 sts EE_Parameter+32,r20
1109 0414 1092 0000 sts EE_Parameter+33,__zero_reg__
1110 0418 60E2 ldi r22,lo8(32)
1111 041a 6093 0000 sts EE_Parameter+34,r22
1112 041e 1092 0000 sts EE_Parameter+35,__zero_reg__
1113 0422 1092 0000 sts EE_Parameter+36,__zero_reg__
1114 0426 1092 0000 sts EE_Parameter+37,__zero_reg__
1115 042a 1092 0000 sts EE_Parameter+38,__zero_reg__
1116 042e 1092 0000 sts EE_Parameter+59,__zero_reg__
1117 0432 1092 0000 sts EE_Parameter+60,__zero_reg__
1118 0436 1092 0000 sts EE_Parameter+61,__zero_reg__
1119 043a 1092 0000 sts EE_Parameter+62,__zero_reg__
1120 043e 24E6 ldi r18,lo8(100)
1121 0440 2093 0000 sts EE_Parameter+39,r18
1122 0444 98E2 ldi r25,lo8(40)
1123 0446 9093 0000 sts EE_Parameter+40,r25
1124 044a 5093 0000 sts EE_Parameter+87,r21
1125 044e 1092 0000 sts EE_Parameter+41,__zero_reg__
1126 0452 8AEF ldi r24,lo8(-6)
1127 0454 8093 0000 sts EE_Parameter+42,r24
1128 0458 76E0 ldi r23,lo8(6)
1129 045a 7093 0000 sts EE_Parameter+47,r23
1130 045e 2093 0000 sts EE_Parameter+43,r18
1131 0462 9093 0000 sts EE_Parameter+44,r25
1132 0466 1092 0000 sts EE_Parameter+45,__zero_reg__
1133 046a 8093 0000 sts EE_Parameter+46,r24
1134 046e 82E3 ldi r24,lo8(50)
1135 0470 8093 0000 sts EE_Parameter+48,r24
1136 0474 9AE5 ldi r25,lo8(90)
1137 0476 9093 0000 sts EE_Parameter+49,r25
1138 047a 8093 0000 sts EE_Parameter+50,r24
1139 047e 1092 0000 sts EE_Parameter+86,__zero_reg__
1140 0482 9093 0000 sts EE_Parameter+51,r25
1141 0486 3093 0000 sts EE_Parameter+52,r19
1142 048a 5093 0000 sts EE_Parameter+53,r21
1143 048e 85E5 ldi r24,lo8(85)
1144 0490 8093 0000 sts EE_Parameter+54,r24
1145 0494 8093 0000 sts EE_Parameter+55,r24
1146 0498 E093 0000 sts EE_Parameter+56,r30
1147 049c 6093 0000 sts EE_Parameter+57,r22
1148 04a0 2093 0000 sts EE_Parameter+58,r18
1149 04a4 8FE5 ldi r24,lo8(95)
1150 04a6 8093 0000 sts EE_Parameter+63,r24
1151 04aa 83EF ldi r24,lo8(-13)
1152 04ac 8093 0000 sts EE_Parameter+65,r24
1153 04b0 8AEA ldi r24,lo8(-86)
1154 04b2 8093 0000 sts EE_Parameter+67,r24
1155 04b6 8093 0000 sts EE_Parameter+68,r24
1156 04ba 8FE0 ldi r24,lo8(15)
1157 04bc 8093 0000 sts EE_Parameter+64,r24
1158 04c0 8093 0000 sts EE_Parameter+66,r24
1159 04c4 8CEF ldi r24,lo8(-4)
1160 04c6 8093 0000 sts EE_Parameter+69,r24
1161 04ca 2093 0000 sts EE_Parameter+70,r18
1162 04ce 9093 0000 sts EE_Parameter+71,r25
1163 04d2 9093 0000 sts EE_Parameter+72,r25
1164 04d6 9093 0000 sts EE_Parameter+73,r25
1165 04da 8BE4 ldi r24,lo8(75)
1166 04dc 8093 0000 sts EE_Parameter+74,r24
1167 04e0 8093 0000 sts EE_Parameter+75,r24
1168 04e4 8093 0000 sts EE_Parameter+76,r24
1169 04e8 1092 0000 sts EE_Parameter+77,__zero_reg__
1170 04ec 7093 0000 sts EE_Parameter+78,r23
1171 04f0 F093 0000 sts EE_Parameter+79,r31
1172 04f4 9093 0000 sts EE_Parameter+80,r25
1173 04f8 4093 0000 sts EE_Parameter+81,r20
1174 04fc 2093 0000 sts EE_Parameter+82,r18
1175 0500 2093 0000 sts EE_Parameter+83,r18
1176 0504 84E0 ldi r24,lo8(4)
1177 0506 8093 0000 sts EE_Parameter+84,r24
1178 050a A0E0 ldi r26,lo8(.LC2)
1179 050c B0E0 ldi r27,hi8(.LC2)
1180 050e E0E0 ldi r30,lo8(EE_Parameter+89)
1181 0510 F0E0 ldi r31,hi8(EE_Parameter+89)
1182 0512 0D90 ld __tmp_reg__,X+
1183 0514 0192 st Z+,__tmp_reg__
1184 0516 1A95 dec r17
1185 0518 01F4 brne .-8
1186 /* epilogue: frame size=0 */
1187 051a 1F91 pop r17
1188 051c 0895 ret
1189 /* epilogue end (size=2) */
1190 /* function DefaultKonstanten1 size 205 (202) */
1192 .global ReadParameterSet
1194 ReadParameterSet:
1195 /* prologue: frame size=0 */
1196 /* prologue end (size=0) */
1197 051e 282F mov r18,r24
1198 0520 FB01 movw r30,r22
1199 0522 8150 subi r24,lo8(-(-1))
1200 0524 8530 cpi r24,lo8(5)
1201 0526 00F0 brlo .L15
1202 0528 23E0 ldi r18,lo8(3)
1203 .L15:
1204 052a 842F mov r24,r20
1205 052c 9927 clr r25
1206 052e 3327 clr r19
1207 0530 2150 subi r18,lo8(-(-1))
1208 0532 3040 sbci r19,hi8(-(-1))
1209 0534 829F mul r24,r18
1210 0536 B001 movw r22,r0
1211 0538 839F mul r24,r19
1212 053a 700D add r23,r0
1213 053c 929F mul r25,r18
1214 053e 700D add r23,r0
1215 0540 1124 clr r1
1216 0542 6050 subi r22,lo8(-(EEPromArray+100))
1217 0544 7040 sbci r23,hi8(-(EEPromArray+100))
1218 0546 20E0 ldi r18,lo8(pm(eeprom_read_byte))
1219 0548 30E0 ldi r19,hi8(pm(eeprom_read_byte))
1220 054a AC01 movw r20,r24
1221 054c CF01 movw r24,r30
1222 054e 0E94 0000 call __eerd_block
1223 0552 0E94 0000 call LED_Init
1224 /* epilogue: frame size=0 */
1225 0556 0895 ret
1226 /* epilogue end (size=1) */
1227 /* function ReadParameterSet size 29 (28) */
1229 .global SetActiveParamSetNumber
1231 SetActiveParamSetNumber:
1232 /* prologue: frame size=0 */
1233 /* prologue end (size=0) */
1234 0558 282F mov r18,r24
1235 055a 8630 cpi r24,lo8(6)
1236 055c 00F0 brlo .L18
1237 055e 25E0 ldi r18,lo8(5)
1238 .L20:
1239 0560 F999 sbic 63-0x20,1
1240 0562 00C0 rjmp .L20
1241 0564 1FBA out 63-0x20,__zero_reg__
1242 0566 80E0 ldi r24,lo8(EEPromArray+2)
1243 0568 90E0 ldi r25,hi8(EEPromArray+2)
1244 056a 92BD out (65)+1-0x20,r25
1245 056c 81BD out 65-0x20,r24
1246 056e 20BD out 64-0x20,r18
1247 /* #APP */
1248 /* START EEPROM WRITE CRITICAL SECTION */
1249 0570 0FB6 in r0, 63
1250 0572 F894 cli
1251 0574 FA9A sbi 31, 2
1252 0576 F99A sbi 31, 1
1253 0578 0FBE out 63, r0
1254 /* END EEPROM WRITE CRITICAL SECTION */
1255 /* #NOAPP */
1256 057a 0895 ret
1257 .L18:
1258 057c 8823 tst r24
1259 057e 01F4 brne .L20
1260 0580 0895 ret
1261 /* epilogue: frame size=0 */
1262 /* epilogue: noreturn */
1263 /* epilogue end (size=0) */
1264 /* function SetActiveParamSetNumber size 30 (30) */
1266 .global WriteParameterSet
1268 WriteParameterSet:
1269 /* prologue: frame size=0 */
1270 0582 FF92 push r15
1271 0584 0F93 push r16
1272 0586 1F93 push r17
1273 0588 CF93 push r28
1274 /* prologue end (size=4) */
1275 058a C82F mov r28,r24
1276 058c 8B01 movw r16,r22
1277 058e F42E mov r15,r20
1278 0590 8630 cpi r24,lo8(6)
1279 0592 00F0 brlo .L27
1280 0594 C5E0 ldi r28,lo8(5)
1281 .L35:
1282 0596 8F2D mov r24,r15
1283 0598 9927 clr r25
1284 059a 2C2F mov r18,r28
1285 059c 3327 clr r19
1286 059e 2150 subi r18,lo8(-(-1))
1287 05a0 3040 sbci r19,hi8(-(-1))
1288 05a2 829F mul r24,r18
1289 05a4 F001 movw r30,r0
1290 05a6 839F mul r24,r19
1291 05a8 F00D add r31,r0
1292 05aa 929F mul r25,r18
1293 05ac F00D add r31,r0
1294 05ae 1124 clr r1
1295 05b0 20E0 ldi r18,lo8(pm(eeprom_write_byte))
1296 05b2 30E0 ldi r19,hi8(pm(eeprom_write_byte))
1297 05b4 AC01 movw r20,r24
1298 05b6 B801 movw r22,r16
1299 05b8 CF01 movw r24,r30
1300 05ba 8050 subi r24,lo8(-(EEPromArray+100))
1301 05bc 9040 sbci r25,hi8(-(EEPromArray+100))
1302 05be 0E94 0000 call __eewr_block
1303 .L30:
1304 05c2 F999 sbic 63-0x20,1
1305 05c4 00C0 rjmp .L30
1306 05c6 1FBA out 63-0x20,__zero_reg__
1307 05c8 80E0 ldi r24,lo8(EEPromArray+98)
1308 05ca 90E0 ldi r25,hi8(EEPromArray+98)
1309 05cc 92BD out (65)+1-0x20,r25
1310 05ce 81BD out 65-0x20,r24
1311 05d0 F0BC out 64-0x20,r15
1312 /* #APP */
1313 /* START EEPROM WRITE CRITICAL SECTION */
1314 05d2 0FB6 in r0, 63
1315 05d4 F894 cli
1316 05d6 FA9A sbi 31, 2
1317 05d8 F99A sbi 31, 1
1318 05da 0FBE out 63, r0
1319 /* END EEPROM WRITE CRITICAL SECTION */
1320 /* #NOAPP */
1321 05dc 20E0 ldi r18,lo8(pm(eeprom_write_byte))
1322 05de 30E0 ldi r19,hi8(pm(eeprom_write_byte))
1323 05e0 48E0 ldi r20,lo8(8)
1324 05e2 50E0 ldi r21,hi8(8)
1325 05e4 B801 movw r22,r16
1326 05e6 80E0 ldi r24,lo8(EEPromArray+80)
1327 05e8 90E0 ldi r25,hi8(EEPromArray+80)
1328 05ea 0E94 0000 call __eewr_block
1329 05ee 8C2F mov r24,r28
1330 05f0 0E94 0000 call SetActiveParamSetNumber
1331 05f4 0E94 0000 call LED_Init
1332 05f8 00C0 rjmp .L26
1333 .L27:
1334 05fa 8823 tst r24
1335 05fc 01F4 brne .L35
1336 .L26:
1337 /* epilogue: frame size=0 */
1338 05fe CF91 pop r28
1339 0600 1F91 pop r17
1340 0602 0F91 pop r16
1341 0604 FF90 pop r15
1342 0606 0895 ret
1343 /* epilogue end (size=5) */
1344 /* function WriteParameterSet size 76 (67) */
1346 .global GetActiveParamSetNumber
1348 GetActiveParamSetNumber:
1349 /* prologue: frame size=0 */
1350 0608 CF93 push r28
1351 /* prologue end (size=1) */
1352 .L37:
1353 060a F999 sbic 63-0x20,1
1354 060c 00C0 rjmp .L37
1355 060e 80E0 ldi r24,lo8(EEPromArray+2)
1356 0610 90E0 ldi r25,hi8(EEPromArray+2)
1357 0612 92BD out (65)+1-0x20,r25
1358 0614 81BD out 65-0x20,r24
1359 /* #APP */
1360 /* START EEPROM READ CRITICAL SECTION */
1361 0616 F89A sbi 31, 0
1362 0618 80B5 in r24, 32
1363 /* END EEPROM READ CRITICAL SECTION */
1364
1365 /* #NOAPP */
1366 061a C82F mov r28,r24
1367 061c 8150 subi r24,lo8(-(-1))
1368 061e 8530 cpi r24,lo8(5)
1369 0620 00F0 brlo .L41
1370 0622 C3E0 ldi r28,lo8(3)
1371 0624 8C2F mov r24,r28
1372 0626 0E94 0000 call SetActiveParamSetNumber
1373 .L41:
1374 062a 8C2F mov r24,r28
1375 062c 9927 clr r25
1376 /* epilogue: frame size=0 */
1377 062e CF91 pop r28
1378 0630 0895 ret
1379 /* epilogue end (size=2) */
1380 /* function GetActiveParamSetNumber size 29 (26) */
1382 .global MotorSmoothing
1384 MotorSmoothing:
1385 /* prologue: frame size=0 */
1386 /* prologue end (size=0) */
1387 0632 6817 cp r22,r24
1388 0634 7907 cpc r23,r25
1389 0636 04F4 brge .L43
1390 0638 680F add r22,r24
1391 063a 791F adc r23,r25
1392 063c 77FD sbrc r23,7
1393 063e 00C0 rjmp .L46
1394 0640 CB01 movw r24,r22
1395 0642 9595 asr r25
1396 0644 8795 ror r24
1397 0646 0895 ret
1398 .L43:
1399 0648 681B sub r22,r24
1400 064a 790B sbc r23,r25
1401 064c 861B sub r24,r22
1402 064e 970B sbc r25,r23
1403 0650 0895 ret
1404 .L46:
1405 0652 6F5F subi r22,lo8(-(1))
1406 0654 7F4F sbci r23,hi8(-(1))
1407 0656 CB01 movw r24,r22
1408 0658 9595 asr r25
1409 065a 8795 ror r24
1410 065c 0895 ret
1411 /* epilogue: frame size=0 */
1412 /* epilogue: noreturn */
1413 /* epilogue end (size=0) */
1414 /* function MotorSmoothing size 22 (22) */
1416 .global Piep
1418 Piep:
1419 /* prologue: frame size=0 */
1420 065e EF92 push r14
1421 0660 FF92 push r15
1422 0662 0F93 push r16
1423 0664 1F93 push r17
1424 0666 CF93 push r28
1425 /* prologue end (size=5) */
1426 0668 C82F mov r28,r24
1427 066a 8B01 movw r16,r22
1428 066c 8091 0000 lds r24,MotorenEin
1429 0670 8823 tst r24
1430 0672 01F4 brne .L47
1431 0674 C150 subi r28,lo8(-(-1))
1432 0676 CF3F cpi r28,lo8(-1)
1433 0678 01F0 breq .L47
1434 067a 7B01 movw r14,r22
1435 067c E60E add r14,r22
1436 067e F71E adc r15,r23
1437 .L54:
1438 0680 1093 0000 sts (beeptime)+1,r17
1439 0684 0093 0000 sts beeptime,r16
1440 .L51:
1441 0688 8091 0000 lds r24,beeptime
1442 068c 9091 0000 lds r25,(beeptime)+1
1443 0690 892B or r24,r25
1444 0692 01F4 brne .L51
1445 0694 C701 movw r24,r14
1446 0696 0E94 0000 call Delay_ms
1447 069a C150 subi r28,1
1448 069c 00F4 brcc .L54
1449 .L47:
1450 /* epilogue: frame size=0 */
1451 069e CF91 pop r28
1452 06a0 1F91 pop r17
1453 06a2 0F91 pop r16
1454 06a4 FF90 pop r15
1455 06a6 EF90 pop r14
1456 06a8 0895 ret
1457 /* epilogue end (size=6) */
1458 /* function Piep size 39 (28) */
1460 .lcomm tmpl.35,4
1461 .lcomm tmpl2.36,4
1462 .lcomm tmpl3.37,4
1463 .lcomm tmpl4.38,4
1464 .lcomm oldNick.39,2
1465 .lcomm oldRoll.40,2
1466 .lcomm d2Roll.41,2
1467 .lcomm d2Nick.42,2
1468 .global Mittelwert
1470 Mittelwert:
1471 /* prologue: frame size=61 */
1472 06aa ADE3 ldi r26,lo8(61)
1473 06ac B0E0 ldi r27,hi8(61)
1474 06ae E0E0 ldi r30,pm_lo8(1f)
1475 06b0 F0E0 ldi r31,pm_hi8(1f)
1476 06b2 0C94 0000 jmp __prologue_saves__+0
1477 1:
1478 /* prologue end (size=6) */
1479 06b6 2091 0000 lds r18,AdWertGier
1480 06ba 3091 0000 lds r19,(AdWertGier)+1
1481 06be 8091 0000 lds r24,AdNeutralGier
1482 06c2 9091 0000 lds r25,(AdNeutralGier)+1
1483 06c6 281B sub r18,r24
1484 06c8 390B sbc r19,r25
1485 06ca 3A87 std Y+10,r19
1486 06cc 2987 std Y+9,r18
1487 06ce 3093 0000 sts (MesswertGier)+1,r19
1488 06d2 2093 0000 sts MesswertGier,r18
1489 06d6 2091 0000 lds r18,AdWertNickFilter
1490 06da 3091 0000 lds r19,(AdWertNickFilter)+1
1491 06de 37FD sbrc r19,7
1492 06e0 00C0 rjmp .L186
1493 .L57:
1494 06e2 3595 asr r19
1495 06e4 2795 ror r18
1496 06e6 3595 asr r19
1497 06e8 2795 ror r18
1498 06ea 3595 asr r19
1499 06ec 2795 ror r18
1500 06ee 3AA7 std Y+42,r19
1501 06f0 29A7 std Y+41,r18
1502 06f2 3C87 std Y+12,r19
1503 06f4 2B87 std Y+11,r18
1504 06f6 7901 movw r14,r18
1505 06f8 2091 0000 lds r18,AdWertRollFilter
1506 06fc 3091 0000 lds r19,(AdWertRollFilter)+1
1507 0700 37FD sbrc r19,7
1508 0702 00C0 rjmp .L187
1509 .L58:
1510 0704 3595 asr r19
1511 0706 2795 ror r18
1512 0708 3595 asr r19
1513 070a 2795 ror r18
1514 070c 3595 asr r19
1515 070e 2795 ror r18
1516 0710 3CA7 std Y+44,r19
1517 0712 2BA7 std Y+43,r18
1518 0714 3E87 std Y+14,r19
1519 0716 2D87 std Y+13,r18
1520 0718 F092 0000 sts (RohMesswertNick)+1,r15
1521 071c E092 0000 sts RohMesswertNick,r14
1522 0720 3093 0000 sts (RohMesswertRoll)+1,r19
1523 0724 2093 0000 sts RohMesswertRoll,r18
1524 0728 8091 0000 lds r24,Mittelwert_AccNick
1525 072c 9091 0000 lds r25,(Mittelwert_AccNick)+1
1526 0730 AA27 clr r26
1527 0732 97FD sbrc r25,7
1528 0734 A095 com r26
1529 0736 BA2F mov r27,r26
1530 0738 7C01 movw r14,r24
1531 073a 8D01 movw r16,r26
1532 073c EE0C lsl r14
1533 073e FF1C rol r15
1534 0740 001F rol r16
1535 0742 111F rol r17
1536 0744 E80E add r14,r24
1537 0746 F91E adc r15,r25
1538 0748 0A1F adc r16,r26
1539 074a 1B1F adc r17,r27
1540 074c 8091 0000 lds r24,AdWertAccNick
1541 0750 9091 0000 lds r25,(AdWertAccNick)+1
1542 0754 9C01 movw r18,r24
1543 0756 4427 clr r20
1544 0758 37FD sbrc r19,7
1545 075a 4095 com r20
1546 075c 542F mov r21,r20
1547 075e DA01 movw r26,r20
1548 0760 C901 movw r24,r18
1549 0762 880F lsl r24
1550 0764 991F rol r25
1551 0766 AA1F rol r26
1552 0768 BB1F rol r27
1553 076a 880F lsl r24
1554 076c 991F rol r25
1555 076e AA1F rol r26
1556 0770 BB1F rol r27
1557 0772 820F add r24,r18
1558 0774 931F adc r25,r19
1559 0776 A41F adc r26,r20
1560 0778 B51F adc r27,r21
1561 077a 820F add r24,r18
1562 077c 931F adc r25,r19
1563 077e A41F adc r26,r20
1564 0780 B51F adc r27,r21
1565 0782 E80E add r14,r24
1566 0784 F91E adc r15,r25
1567 0786 0A1F adc r16,r26
1568 0788 1B1F adc r17,r27
1569 078a 17FD sbrc r17,7
1570 078c 00C0 rjmp .L188
1571 .L59:
1572 078e 1595 asr r17
1573 0790 0795 ror r16
1574 0792 F794 ror r15
1575 0794 E794 ror r14
1576 0796 1595 asr r17
1577 0798 0795 ror r16
1578 079a F794 ror r15
1579 079c E794 ror r14
1580 079e F092 0000 sts (Mittelwert_AccNick)+1,r15
1581 07a2 E092 0000 sts Mittelwert_AccNick,r14
1582 07a6 8091 0000 lds r24,Mittelwert_AccRoll
1583 07aa 9091 0000 lds r25,(Mittelwert_AccRoll)+1
1584 07ae AA27 clr r26
1585 07b0 97FD sbrc r25,7
1586 07b2 A095 com r26
1587 07b4 BA2F mov r27,r26
1588 07b6 7C01 movw r14,r24
1589 07b8 8D01 movw r16,r26
1590 07ba EE0C lsl r14
1591 07bc FF1C rol r15
1592 07be 001F rol r16
1593 07c0 111F rol r17
1594 07c2 E80E add r14,r24
1595 07c4 F91E adc r15,r25
1596 07c6 0A1F adc r16,r26
1597 07c8 1B1F adc r17,r27
1598 07ca 8091 0000 lds r24,AdWertAccRoll
1599 07ce 9091 0000 lds r25,(AdWertAccRoll)+1
1600 07d2 9C01 movw r18,r24
1601 07d4 4427 clr r20
1602 07d6 37FD sbrc r19,7
1603 07d8 4095 com r20
1604 07da 542F mov r21,r20
1605 07dc DA01 movw r26,r20
1606 07de C901 movw r24,r18
1607 07e0 880F lsl r24
1608 07e2 991F rol r25
1609 07e4 AA1F rol r26
1610 07e6 BB1F rol r27
1611 07e8 880F lsl r24
1612 07ea 991F rol r25
1613 07ec AA1F rol r26
1614 07ee BB1F rol r27
1615 07f0 820F add r24,r18
1616 07f2 931F adc r25,r19
1617 07f4 A41F adc r26,r20
1618 07f6 B51F adc r27,r21
1619 07f8 820F add r24,r18
1620 07fa 931F adc r25,r19
1621 07fc A41F adc r26,r20
1622 07fe B51F adc r27,r21
1623 0800 E80E add r14,r24
1624 0802 F91E adc r15,r25
1625 0804 0A1F adc r16,r26
1626 0806 1B1F adc r17,r27
1627 0808 17FD sbrc r17,7
1628 080a 00C0 rjmp .L189
1629 .L60:
1630 080c 1595 asr r17
1631 080e 0795 ror r16
1632 0810 F794 ror r15
1633 0812 E794 ror r14
1634 0814 1595 asr r17
1635 0816 0795 ror r16
1636 0818 F794 ror r15
1637 081a E794 ror r14
1638 081c F092 0000 sts (Mittelwert_AccRoll)+1,r15
1639 0820 E092 0000 sts Mittelwert_AccRoll,r14
1640 0824 8091 0000 lds r24,Mittelwert_AccHoch
1641 0828 9091 0000 lds r25,(Mittelwert_AccHoch)+1
1642 082c AA27 clr r26
1643 082e 97FD sbrc r25,7
1644 0830 A095 com r26
1645 0832 BA2F mov r27,r26
1646 0834 9C01 movw r18,r24
1647 0836 AD01 movw r20,r26
1648 0838 220F lsl r18
1649 083a 331F rol r19
1650 083c 441F rol r20
1651 083e 551F rol r21
1652 0840 280F add r18,r24
1653 0842 391F adc r19,r25
1654 0844 4A1F adc r20,r26
1655 0846 5B1F adc r21,r27
1656 0848 8091 0000 lds r24,AdWertAccHoch
1657 084c 9091 0000 lds r25,(AdWertAccHoch)+1
1658 0850 AA27 clr r26
1659 0852 97FD sbrc r25,7
1660 0854 A095 com r26
1661 0856 BA2F mov r27,r26
1662 0858 280F add r18,r24
1663 085a 391F adc r19,r25
1664 085c 4A1F adc r20,r26
1665 085e 5B1F adc r21,r27
1666 0860 57FD sbrc r21,7
1667 0862 00C0 rjmp .L190
1668 .L61:
1669 0864 5595 asr r21
1670 0866 4795 ror r20
1671 0868 3795 ror r19
1672 086a 2795 ror r18
1673 086c 5595 asr r21
1674 086e 4795 ror r20
1675 0870 3795 ror r19
1676 0872 2795 ror r18
1677 0874 3093 0000 sts (Mittelwert_AccHoch)+1,r19
1678 0878 2093 0000 sts Mittelwert_AccHoch,r18
1679 087c 2091 0000 lds r18,AdWertAccNick
1680 0880 3091 0000 lds r19,(AdWertAccNick)+1
1681 0884 C901 movw r24,r18
1682 0886 880F lsl r24
1683 0888 991F rol r25
1684 088a 880F lsl r24
1685 088c 991F rol r25
1686 088e 820F add r24,r18
1687 0890 931F adc r25,r19
1688 0892 820F add r24,r18
1689 0894 931F adc r25,r19
1690 0896 AA27 clr r26
1691 0898 97FD sbrc r25,7
1692 089a A095 com r26
1693 089c BA2F mov r27,r26
1694 089e 2091 0000 lds r18,IntegralAccNick
1695 08a2 3091 0000 lds r19,(IntegralAccNick)+1
1696 08a6 4091 0000 lds r20,(IntegralAccNick)+2
1697 08aa 5091 0000 lds r21,(IntegralAccNick)+3
1698 08ae 820F add r24,r18
1699 08b0 931F adc r25,r19
1700 08b2 A41F adc r26,r20
1701 08b4 B51F adc r27,r21
1702 08b6 8093 0000 sts IntegralAccNick,r24
1703 08ba 9093 0000 sts (IntegralAccNick)+1,r25
1704 08be A093 0000 sts (IntegralAccNick)+2,r26
1705 08c2 B093 0000 sts (IntegralAccNick)+3,r27
1706 08c6 2091 0000 lds r18,AdWertAccRoll
1707 08ca 3091 0000 lds r19,(AdWertAccRoll)+1
1708 08ce C901 movw r24,r18
1709 08d0 880F lsl r24
1710 08d2 991F rol r25
1711 08d4 880F lsl r24
1712 08d6 991F rol r25
1713 08d8 820F add r24,r18
1714 08da 931F adc r25,r19
1715 08dc 820F add r24,r18
1716 08de 931F adc r25,r19
1717 08e0 AA27 clr r26
1718 08e2 97FD sbrc r25,7
1719 08e4 A095 com r26
1720 08e6 BA2F mov r27,r26
1721 08e8 2091 0000 lds r18,IntegralAccRoll
1722 08ec 3091 0000 lds r19,(IntegralAccRoll)+1
1723 08f0 4091 0000 lds r20,(IntegralAccRoll)+2
1724 08f4 5091 0000 lds r21,(IntegralAccRoll)+3
1725 08f8 820F add r24,r18
1726 08fa 931F adc r25,r19
1727 08fc A41F adc r26,r20
1728 08fe B51F adc r27,r21
1729 0900 8093 0000 sts IntegralAccRoll,r24
1730 0904 9093 0000 sts (IntegralAccRoll)+1,r25
1731 0908 A093 0000 sts (IntegralAccRoll)+2,r26
1732 090c B093 0000 sts (IntegralAccRoll)+3,r27
1733 0910 8091 0000 lds r24,NaviAccNick
1734 0914 9091 0000 lds r25,(NaviAccNick)+1
1735 0918 2091 0000 lds r18,AdWertAccNick
1736 091c 3091 0000 lds r19,(AdWertAccNick)+1
1737 0920 820F add r24,r18
1738 0922 931F adc r25,r19
1739 0924 9093 0000 sts (NaviAccNick)+1,r25
1740 0928 8093 0000 sts NaviAccNick,r24
1741 092c 8091 0000 lds r24,NaviAccRoll
1742 0930 9091 0000 lds r25,(NaviAccRoll)+1
1743 0934 2091 0000 lds r18,AdWertAccRoll
1744 0938 3091 0000 lds r19,(AdWertAccRoll)+1
1745 093c 820F add r24,r18
1746 093e 931F adc r25,r19
1747 0940 9093 0000 sts (NaviAccRoll)+1,r25
1748 0944 8093 0000 sts NaviAccRoll,r24
1749 0948 8091 0000 lds r24,NaviCntAcc
1750 094c 9091 0000 lds r25,(NaviCntAcc)+1
1751 0950 0196 adiw r24,1
1752 0952 9093 0000 sts (NaviCntAcc)+1,r25
1753 0956 8093 0000 sts NaviCntAcc,r24
1754 095a 8091 0000 lds r24,IntegralAccZ
1755 095e 9091 0000 lds r25,(IntegralAccZ)+1
1756 0962 A091 0000 lds r26,(IntegralAccZ)+2
1757 0966 B091 0000 lds r27,(IntegralAccZ)+3
1758 096a BC01 movw r22,r24
1759 096c CD01 movw r24,r26
1760 096e 0E94 0000 call __floatsisf
1761 0972 5B01 movw r10,r22
1762 0974 6C01 movw r12,r24
1763 0976 8091 0000 lds r24,Aktuell_az
1764 097a 9091 0000 lds r25,(Aktuell_az)+1
1765 097e AA27 clr r26
1766 0980 97FD sbrc r25,7
1767 0982 A095 com r26
1768 0984 BA2F mov r27,r26
1769 0986 BC01 movw r22,r24
1770 0988 CD01 movw r24,r26
1771 098a 0E94 0000 call __floatsisf
1772 098e 7B01 movw r14,r22
1773 0990 8C01 movw r16,r24
1774 0992 8091 0000 lds r24,NeutralAccZ
1775 0996 9091 0000 lds r25,(NeutralAccZ)+1
1776 099a A091 0000 lds r26,(NeutralAccZ)+2
1777 099e B091 0000 lds r27,(NeutralAccZ)+3
1778 09a2 9C01 movw r18,r24
1779 09a4 AD01 movw r20,r26
1780 09a6 C801 movw r24,r16
1781 09a8 B701 movw r22,r14
1782 09aa 0E94 0000 call __subsf3
1783 09ae DC01 movw r26,r24
1784 09b0 CB01 movw r24,r22
1785 09b2 9C01 movw r18,r24
1786 09b4 AD01 movw r20,r26
1787 09b6 C601 movw r24,r12
1788 09b8 B501 movw r22,r10
1789 09ba 0E94 0000 call __addsf3
1790 09be DC01 movw r26,r24
1791 09c0 CB01 movw r24,r22
1792 09c2 BC01 movw r22,r24
1793 09c4 CD01 movw r24,r26
1794 09c6 0E94 0000 call __fixsfsi
1795 09ca DC01 movw r26,r24
1796 09cc CB01 movw r24,r22
1797 09ce 8093 0000 sts IntegralAccZ,r24
1798 09d2 9093 0000 sts (IntegralAccZ)+1,r25
1799 09d6 A093 0000 sts (IntegralAccZ)+2,r26
1800 09da B093 0000 sts (IntegralAccZ)+3,r27
1801 09de 8FEC ldi r24,lo8(-49)
1802 09e0 8093 7A00 sts 122,r24
1803 09e4 1092 0000 sts AdReady,__zero_reg__
1804 09e8 2090 0000 lds r2,Mess_IntegralRoll
1805 09ec 3090 0000 lds r3,(Mess_IntegralRoll)+1
1806 09f0 4090 0000 lds r4,(Mess_IntegralRoll)+2
1807 09f4 5090 0000 lds r5,(Mess_IntegralRoll)+3
1808 09f8 39E4 ldi r19,lo8(93001)
1809 09fa 2316 cp r2,r19
1810 09fc 3BE6 ldi r19,hi8(93001)
1811 09fe 3306 cpc r3,r19
1812 0a00 31E0 ldi r19,hlo8(93001)
1813 0a02 4306 cpc r4,r19
1814 0a04 30E0 ldi r19,hhi8(93001)
1815 0a06 5306 cpc r5,r19
1816 0a08 04F4 brge .+2
1817 0a0a 00C0 rjmp .L62
1818 0a0c 88E4 ldi r24,lo8(93000)
1819 0a0e 9BE6 ldi r25,hi8(93000)
1820 0a10 A1E0 ldi r26,hlo8(93000)
1821 0a12 B0E0 ldi r27,hhi8(93000)
1822 0a14 8D83 std Y+5,r24
1823 0a16 9E83 std Y+6,r25
1824 0a18 AF83 std Y+7,r26
1825 0a1a B887 std Y+8,r27
1826 .L63:
1827 0a1c 6090 0000 lds r6,Mess_IntegralNick
1828 0a20 7090 0000 lds r7,(Mess_IntegralNick)+1
1829 0a24 8090 0000 lds r8,(Mess_IntegralNick)+2
1830 0a28 9090 0000 lds r9,(Mess_IntegralNick)+3
1831 0a2c 39E4 ldi r19,lo8(93001)
1832 0a2e 6316 cp r6,r19
1833 0a30 3BE6 ldi r19,hi8(93001)
1834 0a32 7306 cpc r7,r19
1835 0a34 31E0 ldi r19,hlo8(93001)
1836 0a36 8306 cpc r8,r19
1837 0a38 30E0 ldi r19,hhi8(93001)
1838 0a3a 9306 cpc r9,r19
1839 0a3c 04F4 brge .+2
1840 0a3e 00C0 rjmp .L66
1841 0a40 88E4 ldi r24,lo8(93000)
1842 0a42 9BE6 ldi r25,hi8(93000)
1843 0a44 A1E0 ldi r26,hlo8(93000)
1844 0a46 B0E0 ldi r27,hhi8(93000)
1845 0a48 8983 std Y+1,r24
1846 0a4a 9A83 std Y+2,r25
1847 0a4c AB83 std Y+3,r26
1848 0a4e BC83 std Y+4,r27
1849 .L67:
1850 0a50 4985 ldd r20,Y+9
1851 0a52 5A85 ldd r21,Y+10
1852 0a54 CA01 movw r24,r20
1853 0a56 AA27 clr r26
1854 0a58 97FD sbrc r25,7
1855 0a5a A095 com r26
1856 0a5c BA2F mov r27,r26
1857 0a5e 2091 0000 lds r18,Mess_Integral_Gier
1858 0a62 3091 0000 lds r19,(Mess_Integral_Gier)+1
1859 0a66 4091 0000 lds r20,(Mess_Integral_Gier)+2
1860 0a6a 5091 0000 lds r21,(Mess_Integral_Gier)+3
1861 0a6e 280F add r18,r24
1862 0a70 391F adc r19,r25
1863 0a72 4A1F adc r20,r26
1864 0a74 5B1F adc r21,r27
1865 0a76 2DA3 std Y+37,r18
1866 0a78 3EA3 std Y+38,r19
1867 0a7a 4FA3 std Y+39,r20
1868 0a7c 58A7 std Y+40,r21
1869 0a7e A090 0000 lds r10,ErsatzKompass
1870 0a82 B090 0000 lds r11,(ErsatzKompass)+1
1871 0a86 C090 0000 lds r12,(ErsatzKompass)+2
1872 0a8a D090 0000 lds r13,(ErsatzKompass)+3
1873 0a8e A80E add r10,r24
1874 0a90 B91E adc r11,r25
1875 0a92 CA1E adc r12,r26
1876 0a94 DB1E adc r13,r27
1877 0a96 8601 movw r16,r12
1878 0a98 7501 movw r14,r10
1879 0a9a 3091 0000 lds r19,Looping_Nick
1880 0a9e 3BA3 std Y+35,r19
1881 0aa0 3323 tst r19
1882 0aa2 01F0 breq .+2
1883 0aa4 00C0 rjmp .L166
1884 0aa6 8091 0000 lds r24,Looping_Roll
1885 0aaa 8823 tst r24
1886 0aac 01F0 breq .+2
1887 0aae 00C0 rjmp .L167
1888 0ab0 4091 0000 lds r20,EE_Parameter+8
1889 0ab4 4CA3 std Y+36,r20
1890 0ab6 46FF sbrs r20,6
1891 0ab8 00C0 rjmp .L168
1892 0aba EBA5 ldd r30,Y+43
1893 0abc FCA5 ldd r31,Y+44
1894 0abe CF01 movw r24,r30
1895 0ac0 AA27 clr r26
1896 0ac2 97FD sbrc r25,7
1897 0ac4 A095 com r26
1898 0ac6 BA2F mov r27,r26
1899 0ac8 BC01 movw r22,r24
1900 0aca CD01 movw r24,r26
1901 0acc 2981 ldd r18,Y+1
1902 0ace 3A81 ldd r19,Y+2
1903 0ad0 4B81 ldd r20,Y+3
1904 0ad2 5C81 ldd r21,Y+4
1905 0ad4 0E94 0000 call __mulsi3
1906 0ad8 9B01 movw r18,r22
1907 0ada AC01 movw r20,r24
1908 0adc 97FD sbrc r25,7
1909 0ade 00C0 rjmp .L191
1910 .L71:
1911 0ae0 BBE0 ldi r27,11
1912 0ae2 5595 1: asr r21
1913 0ae4 4795 ror r20
1914 0ae6 3795 ror r19
1915 0ae8 2795 ror r18
1916 0aea BA95 dec r27
1917 0aec 01F4 brne 1b
1918 0aee 8091 0000 lds r24,Parameter_AchsKopplung2
1919 0af2 E82E mov r14,r24
1920 0af4 FF24 clr r15
1921 0af6 0027 clr r16
1922 0af8 1127 clr r17
1923 0afa C801 movw r24,r16
1924 0afc B701 movw r22,r14
1925 0afe 0E94 0000 call __mulsi3
1926 0b02 97FD sbrc r25,7
1927 0b04 00C0 rjmp .L192
1928 .L72:
1929 0b06 ACE0 ldi r26,12
1930 0b08 9595 1: asr r25
1931 0b0a 8795 ror r24
1932 0b0c 7795 ror r23
1933 0b0e 6795 ror r22
1934 0b10 AA95 dec r26
1935 0b12 01F4 brne 1b
1936 0b14 6F87 std Y+15,r22
1937 0b16 788B std Y+16,r23
1938 0b18 898B std Y+17,r24
1939 0b1a 9A8B std Y+18,r25
1940 0b1c 6093 0000 sts tmpl3.37,r22
1941 0b20 7093 0000 sts (tmpl3.37)+1,r23
1942 0b24 8093 0000 sts (tmpl3.37)+2,r24
1943 0b28 9093 0000 sts (tmpl3.37)+3,r25
1944 0b2c 29A5 ldd r18,Y+41
1945 0b2e 3AA5 ldd r19,Y+42
1946 0b30 C901 movw r24,r18
1947 0b32 AA27 clr r26
1948 0b34 97FD sbrc r25,7
1949 0b36 A095 com r26
1950 0b38 BA2F mov r27,r26
1951 0b3a BC01 movw r22,r24
1952 0b3c CD01 movw r24,r26
1953 0b3e 2D81 ldd r18,Y+5
1954 0b40 3E81 ldd r19,Y+6
1955 0b42 4F81 ldd r20,Y+7
1956 0b44 5885 ldd r21,Y+8
1957 0b46 0E94 0000 call __mulsi3
1958 0b4a 9B01 movw r18,r22
1959 0b4c AC01 movw r20,r24
1960 0b4e 97FD sbrc r25,7
1961 0b50 00C0 rjmp .L193
1962 .L73:
1963 0b52 FBE0 ldi r31,11
1964 0b54 5595 1: asr r21
1965 0b56 4795 ror r20
1966 0b58 3795 ror r19
1967 0b5a 2795 ror r18
1968 0b5c FA95 dec r31
1969 0b5e 01F4 brne 1b
1970 0b60 C801 movw r24,r16
1971 0b62 B701 movw r22,r14
1972 0b64 0E94 0000 call __mulsi3
1973 0b68 97FD sbrc r25,7
1974 0b6a 00C0 rjmp .L194
1975 .L74:
1976 0b6c DC01 movw r26,r24
1977 0b6e CB01 movw r24,r22
1978 0b70 ECE0 ldi r30,12
1979 0b72 B595 1: asr r27
1980 0b74 A795 ror r26
1981 0b76 9795 ror r25
1982 0b78 8795 ror r24
1983 0b7a EA95 dec r30
1984 0b7c 01F4 brne 1b
1985 0b7e 8093 0000 sts tmpl4.38,r24
1986 0b82 9093 0000 sts (tmpl4.38)+1,r25
1987 0b86 A093 0000 sts (tmpl4.38)+2,r26
1988 0b8a B093 0000 sts (tmpl4.38)+3,r27
1989 0b8e 2091 0000 lds r18,tmpl3.37
1990 0b92 3091 0000 lds r19,(tmpl3.37)+1
1991 0b96 3093 0000 sts (KopplungsteilNickRoll)+1,r19
1992 0b9a 2093 0000 sts KopplungsteilNickRoll,r18
1993 0b9e 2091 0000 lds r18,tmpl4.38
1994 0ba2 3091 0000 lds r19,(tmpl4.38)+1
1995 0ba6 3093 0000 sts (KopplungsteilRollNick)+1,r19
1996 0baa 2093 0000 sts KopplungsteilRollNick,r18
1997 0bae 2F85 ldd r18,Y+15
1998 0bb0 3889 ldd r19,Y+16
1999 0bb2 4989 ldd r20,Y+17
2000 0bb4 5A89 ldd r21,Y+18
2001 0bb6 821B sub r24,r18
2002 0bb8 930B sbc r25,r19
2003 0bba A40B sbc r26,r20
2004 0bbc B50B sbc r27,r21
2005 0bbe 8AAF std Y+58,r24
2006 0bc0 9BAF std Y+59,r25
2007 0bc2 ACAF std Y+60,r26
2008 0bc4 BDAF std Y+61,r27
2009 0bc6 8093 0000 sts tmpl4.38,r24
2010 0bca 9093 0000 sts (tmpl4.38)+1,r25
2011 0bce A093 0000 sts (tmpl4.38)+2,r26
2012 0bd2 B093 0000 sts (tmpl4.38)+3,r27
2013 0bd6 A80E add r10,r24
2014 0bd8 B91E adc r11,r25
2015 0bda CA1E adc r12,r26
2016 0bdc DB1E adc r13,r27
2017 0bde 8601 movw r16,r12
2018 0be0 7501 movw r14,r10
2019 0be2 3091 0000 lds r19,Parameter_CouplingYawCorrection
2020 0be6 3DA7 std Y+45,r19
2021 0be8 3323 tst r19
2022 0bea 01F0 breq .+2
2023 0bec 00C0 rjmp .L169
2024 0bee 8EA7 std Y+46,r24
2025 0bf0 9FA7 std Y+47,r25
2026 0bf2 A8AB std Y+48,r26
2027 0bf4 B9AB std Y+49,r27
2028 0bf6 B7FD sbrc r27,7
2029 0bf8 00C0 rjmp .L195
2030 .L76:
2031 0bfa 2EA5 ldd r18,Y+46
2032 0bfc 3FA5 ldd r19,Y+47
2033 0bfe 48A9 ldd r20,Y+48
2034 0c00 59A9 ldd r21,Y+49
2035 0c02 5595 asr r21
2036 0c04 4795 ror r20
2037 0c06 3795 ror r19
2038 0c08 2795 ror r18
2039 0c0a 8DA1 ldd r24,Y+37
2040 0c0c 9EA1 ldd r25,Y+38
2041 0c0e AFA1 ldd r26,Y+39
2042 0c10 B8A5 ldd r27,Y+40
2043 0c12 821B sub r24,r18
2044 0c14 930B sbc r25,r19
2045 0c16 A40B sbc r26,r20
2046 0c18 B50B sbc r27,r21
2047 0c1a 8DA3 std Y+37,r24
2048 0c1c 9EA3 std Y+38,r25
2049 0c1e AFA3 std Y+39,r26
2050 0c20 B8A7 std Y+40,r27
2051 0c22 8093 0000 sts Mess_Integral_Gier,r24
2052 0c26 9093 0000 sts (Mess_Integral_Gier)+1,r25
2053 0c2a A093 0000 sts (Mess_Integral_Gier)+2,r26
2054 0c2e B093 0000 sts (Mess_Integral_Gier)+3,r27
2055 0c32 00C0 rjmp .L75
2056 .L62:
2057 0c34 98EB ldi r25,lo8(-93000)
2058 0c36 2916 cp r2,r25
2059 0c38 94E9 ldi r25,hi8(-93000)
2060 0c3a 3906 cpc r3,r25
2061 0c3c 9EEF ldi r25,hlo8(-93000)
2062 0c3e 4906 cpc r4,r25
2063 0c40 9FEF ldi r25,hhi8(-93000)
2064 0c42 5906 cpc r5,r25
2065 0c44 04F0 brlt .+2
2066 0c46 00C0 rjmp .L64
2067 0c48 28EB ldi r18,lo8(-93000)
2068 0c4a 34E9 ldi r19,hi8(-93000)
2069 0c4c 4EEF ldi r20,hlo8(-93000)
2070 0c4e 5FEF ldi r21,hhi8(-93000)
2071 0c50 2D83 std Y+5,r18
2072 0c52 3E83 std Y+6,r19
2073 0c54 4F83 std Y+7,r20
2074 0c56 5887 std Y+8,r21
2075 0c58 00C0 rjmp .L63
2076 .L166:
2077 0c5a 2DA1 ldd r18,Y+37
2078 0c5c 3EA1 ldd r19,Y+38
2079 0c5e 4FA1 ldd r20,Y+39
2080 0c60 58A5 ldd r21,Y+40
2081 0c62 2093 0000 sts Mess_Integral_Gier,r18
2082 0c66 3093 0000 sts (Mess_Integral_Gier)+1,r19
2083 0c6a 4093 0000 sts (Mess_Integral_Gier)+2,r20
2084 0c6e 5093 0000 sts (Mess_Integral_Gier)+3,r21
2085 0c72 3091 0000 lds r19,EE_Parameter+8
2086 0c76 3CA3 std Y+36,r19
2087 .L70:
2088 0c78 1092 0000 sts (KopplungsteilRollNick)+1,__zero_reg__
2089 0c7c 1092 0000 sts KopplungsteilRollNick,__zero_reg__
2090 0c80 1092 0000 sts (KopplungsteilNickRoll)+1,__zero_reg__
2091 0c84 1092 0000 sts KopplungsteilNickRoll,__zero_reg__
2092 0c88 1092 0000 sts tmpl2.36,__zero_reg__
2093 0c8c 1092 0000 sts (tmpl2.36)+1,__zero_reg__
2094 0c90 1092 0000 sts (tmpl2.36)+2,__zero_reg__
2095 0c94 1092 0000 sts (tmpl2.36)+3,__zero_reg__
2096 0c98 1092 0000 sts tmpl.35,__zero_reg__
2097 0c9c 1092 0000 sts (tmpl.35)+1,__zero_reg__
2098 0ca0 1092 0000 sts (tmpl.35)+2,__zero_reg__
2099 0ca4 1092 0000 sts (tmpl.35)+3,__zero_reg__
2100 0ca8 3091 0000 lds r19,Parameter_CouplingYawCorrection
2101 0cac 3DA7 std Y+45,r19
2102 .L87:
2103 0cae 8091 0000 lds r24,tmpl2.36
2104 0cb2 9091 0000 lds r25,(tmpl2.36)+1
2105 0cb6 A091 0000 lds r26,(tmpl2.36)+2
2106 0cba B091 0000 lds r27,(tmpl2.36)+3
2107 0cbe BC01 movw r22,r24
2108 0cc0 CD01 movw r24,r26
2109 0cc2 24E6 ldi r18,lo8(100)
2110 0cc4 30E0 ldi r19,hi8(100)
2111 0cc6 40E0 ldi r20,hlo8(100)
2112 0cc8 50E0 ldi r21,hhi8(100)
2113 0cca 0E94 0000 call __divmodsi4
2114 0cce DA01 movw r26,r20
2115 0cd0 C901 movw r24,r18
2116 0cd2 4091 0000 lds r20,tmpl.35
2117 0cd6 5091 0000 lds r21,(tmpl.35)+1
2118 0cda 481B sub r20,r24
2119 0cdc 590B sbc r21,r25
2120 0cde 58A3 std Y+32,r21
2121 0ce0 4F8F std Y+31,r20
2122 0ce2 8091 0000 lds r24,tmpl.35
2123 0ce6 9091 0000 lds r25,(tmpl.35)+1
2124 0cea A091 0000 lds r26,(tmpl.35)+2
2125 0cee B091 0000 lds r27,(tmpl.35)+3
2126 0cf2 BC01 movw r22,r24
2127 0cf4 CD01 movw r24,r26
2128 0cf6 24E6 ldi r18,lo8(100)
2129 0cf8 30E0 ldi r19,hi8(100)
2130 0cfa 40E0 ldi r20,hlo8(100)
2131 0cfc 50E0 ldi r21,hhi8(100)
2132 0cfe 0E94 0000 call __divmodsi4
2133 0d02 DA01 movw r26,r20
2134 0d04 C901 movw r24,r18
2135 0d06 2091 0000 lds r18,tmpl2.36
2136 0d0a 3091 0000 lds r19,(tmpl2.36)+1
2137 0d0e 821B sub r24,r18
2138 0d10 930B sbc r25,r19
2139 0d12 9AA3 std Y+34,r25
2140 0d14 89A3 std Y+33,r24
2141 0d16 8091 0000 lds r24,GIER_GRAD_FAKTOR
2142 0d1a 9091 0000 lds r25,(GIER_GRAD_FAKTOR)+1
2143 0d1e A091 0000 lds r26,(GIER_GRAD_FAKTOR)+2
2144 0d22 B091 0000 lds r27,(GIER_GRAD_FAKTOR)+3
2145 0d26 BC01 movw r22,r24
2146 0d28 CD01 movw r24,r26
2147 0d2a 28E6 ldi r18,lo8(360)
2148 0d2c 31E0 ldi r19,hi8(360)
2149 0d2e 40E0 ldi r20,hlo8(360)
2150 0d30 50E0 ldi r21,hhi8(360)
2151 0d32 0E94 0000 call __mulsi3
2152 0d36 E616 cp r14,r22
2153 0d38 F706 cpc r15,r23
2154 0d3a 0807 cpc r16,r24
2155 0d3c 1907 cpc r17,r25
2156 0d3e 04F0 brlt .L88
2157 0d40 5701 movw r10,r14
2158 0d42 6801 movw r12,r16
2159 0d44 A61A sub r10,r22
2160 0d46 B70A sbc r11,r23
2161 0d48 C80A sbc r12,r24
2162 0d4a D90A sbc r13,r25
2163 0d4c 8601 movw r16,r12
2164 0d4e 7501 movw r14,r10
2165 .L88:
2166 0d50 17FD sbrc r17,7
2167 0d52 00C0 rjmp .L196
2168 0d54 A092 0000 sts ErsatzKompass,r10
2169 0d58 B092 0000 sts (ErsatzKompass)+1,r11
2170 0d5c C092 0000 sts (ErsatzKompass)+2,r12
2171 0d60 D092 0000 sts (ErsatzKompass)+3,r13
2172 .L89:
2173 0d64 2BA5 ldd r18,Y+43
2174 0d66 3CA5 ldd r19,Y+44
2175 0d68 8F8D ldd r24,Y+31
2176 0d6a 98A1 ldd r25,Y+32
2177 0d6c 280F add r18,r24
2178 0d6e 391F adc r19,r25
2179 0d70 7901 movw r14,r18
2180 0d72 0027 clr r16
2181 0d74 F7FC sbrc r15,7
2182 0d76 0095 com r16
2183 0d78 102F mov r17,r16
2184 0d7a 8091 0000 lds r24,Mess_IntegralRoll2
2185 0d7e 9091 0000 lds r25,(Mess_IntegralRoll2)+1
2186 0d82 A091 0000 lds r26,(Mess_IntegralRoll2)+2
2187 0d86 B091 0000 lds r27,(Mess_IntegralRoll2)+3
2188 0d8a E80E add r14,r24
2189 0d8c F91E adc r15,r25
2190 0d8e 0A1F adc r16,r26
2191 0d90 1B1F adc r17,r27
2192 0d92 5701 movw r10,r14
2193 0d94 6801 movw r12,r16
2194 0d96 8091 0000 lds r24,LageKorrekturRoll
2195 0d9a 9091 0000 lds r25,(LageKorrekturRoll)+1
2196 0d9e 281B sub r18,r24
2197 0da0 390B sbc r19,r25
2198 0da2 C901 movw r24,r18
2199 0da4 AA27 clr r26
2200 0da6 97FD sbrc r25,7
2201 0da8 A095 com r26
2202 0daa BA2F mov r27,r26
2203 0dac 280E add r2,r24
2204 0dae 391E adc r3,r25
2205 0db0 4A1E adc r4,r26
2206 0db2 5B1E adc r5,r27
2207 0db4 2091 0000 lds r18,Umschlag180Roll
2208 0db8 3091 0000 lds r19,(Umschlag180Roll)+1
2209 0dbc 4091 0000 lds r20,(Umschlag180Roll)+2
2210 0dc0 5091 0000 lds r21,(Umschlag180Roll)+3
2211 0dc4 2215 cp r18,r2
2212 0dc6 3305 cpc r19,r3
2213 0dc8 4405 cpc r20,r4
2214 0dca 5505 cpc r21,r5
2215 0dcc 04F4 brge .L90
2216 0dce A8EA ldi r26,lo8(25000)
2217 0dd0 EA2E mov r14,r26
2218 0dd2 A1E6 ldi r26,hi8(25000)
2219 0dd4 FA2E mov r15,r26
2220 0dd6 012D mov r16,__zero_reg__
2221 0dd8 112D mov r17,__zero_reg__
2222 0dda E21A sub r14,r18
2223 0ddc F30A sbc r15,r19
2224 0dde 040B sbc r16,r20
2225 0de0 150B sbc r17,r21
2226 0de2 1701 movw r2,r14
2227 0de4 2801 movw r4,r16
2228 0de6 5701 movw r10,r14
2229 0de8 6801 movw r12,r16
2230 .L90:
2231 0dea 8827 clr r24
2232 0dec 9927 clr r25
2233 0dee DC01 movw r26,r24
2234 0df0 821B sub r24,r18
2235 0df2 930B sbc r25,r19
2236 0df4 A40B sbc r26,r20
2237 0df6 B50B sbc r27,r21
2238 0df8 2816 cp r2,r24
2239 0dfa 3906 cpc r3,r25
2240 0dfc 4A06 cpc r4,r26
2241 0dfe 5B06 cpc r5,r27
2242 0e00 04F0 brlt .+2
2243 0e02 00C0 rjmp .L171
2244 0e04 F8E5 ldi r31,lo8(-25000)
2245 0e06 2F2E mov r2,r31
2246 0e08 FEE9 ldi r31,hi8(-25000)
2247 0e0a 3F2E mov r3,r31
2248 0e0c FFEF ldi r31,hlo8(-25000)
2249 0e0e 4F2E mov r4,r31
2250 0e10 FFEF ldi r31,hhi8(-25000)
2251 0e12 5F2E mov r5,r31
2252 0e14 220E add r2,r18
2253 0e16 331E adc r3,r19
2254 0e18 441E adc r4,r20
2255 0e1a 551E adc r5,r21
2256 0e1c 2092 0000 sts Mess_IntegralRoll,r2
2257 0e20 3092 0000 sts (Mess_IntegralRoll)+1,r3
2258 0e24 4092 0000 sts (Mess_IntegralRoll)+2,r4
2259 0e28 5092 0000 sts (Mess_IntegralRoll)+3,r5
2260 0e2c 8201 movw r16,r4
2261 0e2e 7101 movw r14,r2
2262 0e30 2092 0000 sts Mess_IntegralRoll2,r2
2263 0e34 3092 0000 sts (Mess_IntegralRoll2)+1,r3
2264 0e38 4092 0000 sts (Mess_IntegralRoll2)+2,r4
2265 0e3c 5092 0000 sts (Mess_IntegralRoll2)+3,r5
2266 .L91:
2267 0e40 29A5 ldd r18,Y+41
2268 0e42 3AA5 ldd r19,Y+42
2269 0e44 A9A1 ldd r26,Y+33
2270 0e46 BAA1 ldd r27,Y+34
2271 0e48 2A0F add r18,r26
2272 0e4a 3B1F adc r19,r27
2273 0e4c A901 movw r20,r18
2274 0e4e 6627 clr r22
2275 0e50 57FD sbrc r21,7
2276 0e52 6095 com r22
2277 0e54 762F mov r23,r22
2278 0e56 8091 0000 lds r24,Mess_IntegralNick2
2279 0e5a 9091 0000 lds r25,(Mess_IntegralNick2)+1
2280 0e5e A091 0000 lds r26,(Mess_IntegralNick2)+2
2281 0e62 B091 0000 lds r27,(Mess_IntegralNick2)+3
2282 0e66 480F add r20,r24
2283 0e68 591F adc r21,r25
2284 0e6a 6A1F adc r22,r26
2285 0e6c 7B1F adc r23,r27
2286 0e6e 5A01 movw r10,r20
2287 0e70 6B01 movw r12,r22
2288 0e72 8091 0000 lds r24,LageKorrekturNick
2289 0e76 9091 0000 lds r25,(LageKorrekturNick)+1
2290 0e7a 281B sub r18,r24
2291 0e7c 390B sbc r19,r25
2292 0e7e C901 movw r24,r18
2293 0e80 AA27 clr r26
2294 0e82 97FD sbrc r25,7
2295 0e84 A095 com r26
2296 0e86 BA2F mov r27,r26
2297 0e88 680E add r6,r24
2298 0e8a 791E adc r7,r25
2299 0e8c 8A1E adc r8,r26
2300 0e8e 9B1E adc r9,r27
2301 0e90 8091 0000 lds r24,Umschlag180Nick
2302 0e94 9091 0000 lds r25,(Umschlag180Nick)+1
2303 0e98 A091 0000 lds r26,(Umschlag180Nick)+2
2304 0e9c B091 0000 lds r27,(Umschlag180Nick)+3
2305 0ea0 8EAB std Y+54,r24
2306 0ea2 9FAB std Y+55,r25
2307 0ea4 A8AF std Y+56,r26
2308 0ea6 B9AF std Y+57,r27
2309 0ea8 8615 cp r24,r6
2310 0eaa 9705 cpc r25,r7
2311 0eac A805 cpc r26,r8
2312 0eae B905 cpc r27,r9
2313 0eb0 04F4 brge .L92
2314 0eb2 48EA ldi r20,lo8(25000)
2315 0eb4 51E6 ldi r21,hi8(25000)
2316 0eb6 60E0 ldi r22,hlo8(25000)
2317 0eb8 70E0 ldi r23,hhi8(25000)
2318 0eba 481B sub r20,r24
2319 0ebc 590B sbc r21,r25
2320 0ebe 6A0B sbc r22,r26
2321 0ec0 7B0B sbc r23,r27
2322 0ec2 3A01 movw r6,r20
2323 0ec4 4B01 movw r8,r22
2324 0ec6 5A01 movw r10,r20
2325 0ec8 6B01 movw r12,r22
2326 .L92:
2327 0eca 8EA9 ldd r24,Y+54
2328 0ecc 9FA9 ldd r25,Y+55
2329 0ece A8AD ldd r26,Y+56
2330 0ed0 B9AD ldd r27,Y+57
2331 0ed2 B095 com r27
2332 0ed4 A095 com r26
2333 0ed6 9095 com r25
2334 0ed8 8195 neg r24
2335 0eda 9F4F sbci r25,lo8(-1)
2336 0edc AF4F sbci r26,lo8(-1)
2337 0ede BF4F sbci r27,lo8(-1)
2338 0ee0 6816 cp r6,r24
2339 0ee2 7906 cpc r7,r25
2340 0ee4 8A06 cpc r8,r26
2341 0ee6 9B06 cpc r9,r27
2342 0ee8 04F0 brlt .+2
2343 0eea 00C0 rjmp .L172
2344 0eec E8E5 ldi r30,lo8(-25000)
2345 0eee 6E2E mov r6,r30
2346 0ef0 EEE9 ldi r30,hi8(-25000)
2347 0ef2 7E2E mov r7,r30
2348 0ef4 EFEF ldi r30,hlo8(-25000)
2349 0ef6 8E2E mov r8,r30
2350 0ef8 EFEF ldi r30,hhi8(-25000)
2351 0efa 9E2E mov r9,r30
2352 0efc 2EA9 ldd r18,Y+54
2353 0efe 3FA9 ldd r19,Y+55
2354 0f00 48AD ldd r20,Y+56
2355 0f02 59AD ldd r21,Y+57
2356 0f04 620E add r6,r18
2357 0f06 731E adc r7,r19
2358 0f08 841E adc r8,r20
2359 0f0a 951E adc r9,r21
2360 0f0c 6092 0000 sts Mess_IntegralNick,r6
2361 0f10 7092 0000 sts (Mess_IntegralNick)+1,r7
2362 0f14 8092 0000 sts (Mess_IntegralNick)+2,r8
2363 0f18 9092 0000 sts (Mess_IntegralNick)+3,r9
2364 0f1c B401 movw r22,r8
2365 0f1e A301 movw r20,r6
2366 0f20 6092 0000 sts Mess_IntegralNick2,r6
2367 0f24 7092 0000 sts (Mess_IntegralNick2)+1,r7
2368 0f28 8092 0000 sts (Mess_IntegralNick2)+2,r8
2369 0f2c 9092 0000 sts (Mess_IntegralNick2)+3,r9
2370 .L93:
2371 0f30 8DA1 ldd r24,Y+37
2372 0f32 9EA1 ldd r25,Y+38
2373 0f34 AFA1 ldd r26,Y+39
2374 0f36 B8A5 ldd r27,Y+40
2375 0f38 8093 0000 sts Integral_Gier,r24
2376 0f3c 9093 0000 sts (Integral_Gier)+1,r25
2377 0f40 A093 0000 sts (Integral_Gier)+2,r26
2378 0f44 B093 0000 sts (Integral_Gier)+3,r27
2379 0f48 6092 0000 sts IntegralNick,r6
2380 0f4c 7092 0000 sts (IntegralNick)+1,r7
2381 0f50 8092 0000 sts (IntegralNick)+2,r8
2382 0f54 9092 0000 sts (IntegralNick)+3,r9
2383 0f58 2092 0000 sts IntegralRoll,r2
2384 0f5c 3092 0000 sts (IntegralRoll)+1,r3
2385 0f60 4092 0000 sts (IntegralRoll)+2,r4
2386 0f64 5092 0000 sts (IntegralRoll)+3,r5
2387 0f68 4093 0000 sts IntegralNick2,r20
2388 0f6c 5093 0000 sts (IntegralNick2)+1,r21
2389 0f70 6093 0000 sts (IntegralNick2)+2,r22
2390 0f74 7093 0000 sts (IntegralNick2)+3,r23
2391 0f78 E092 0000 sts IntegralRoll2,r14
2392 0f7c F092 0000 sts (IntegralRoll2)+1,r15
2393 0f80 0093 0000 sts (IntegralRoll2)+2,r16
2394 0f84 1093 0000 sts (IntegralRoll2)+3,r17
2395 0f88 8091 0000 lds r24,HiResNick
2396 0f8c 9091 0000 lds r25,(HiResNick)+1
2397 0f90 97FD sbrc r25,7
2398 0f92 00C0 rjmp .L197
2399 .L94:
2400 0f94 7C01 movw r14,r24
2401 0f96 F594 asr r15
2402 0f98 E794 ror r14
2403 0f9a F594 asr r15
2404 0f9c E794 ror r14
2405 0f9e F594 asr r15
2406 0fa0 E794 ror r14
2407 0fa2 FAA6 std Y+42,r15
2408 0fa4 E9A6 std Y+41,r14
2409 0fa6 8091 0000 lds r24,HiResRoll
2410 0faa 9091 0000 lds r25,(HiResRoll)+1
2411 0fae 97FD sbrc r25,7
2412 0fb0 00C0 rjmp .L198
2413 .L95:
2414 0fb2 8C01 movw r16,r24
2415 0fb4 1595 asr r17
2416 0fb6 0795 ror r16
2417 0fb8 1595 asr r17
2418 0fba 0795 ror r16
2419 0fbc 1595 asr r17
2420 0fbe 0795 ror r16
2421 0fc0 1CA7 std Y+44,r17
2422 0fc2 0BA7 std Y+43,r16
2423 0fc4 8091 0000 lds r24,AdWertNick
2424 0fc8 9091 0000 lds r25,(AdWertNick)+1
2425 0fcc 0F97 sbiw r24,15
2426 0fce 04F4 brge .L96
2427 0fd0 58E1 ldi r21,lo8(-1000)
2428 0fd2 E52E mov r14,r21
2429 0fd4 5CEF ldi r21,hi8(-1000)
2430 0fd6 F52E mov r15,r21
2431 0fd8 FAA6 std Y+42,r15
2432 0fda E9A6 std Y+41,r14
2433 .L96:
2434 0fdc 8091 0000 lds r24,AdWertNick
2435 0fe0 9091 0000 lds r25,(AdWertNick)+1
2436 0fe4 0797 sbiw r24,7
2437 0fe6 04F4 brge .L97
2438 0fe8 40E3 ldi r20,lo8(-2000)
2439 0fea E42E mov r14,r20
2440 0fec 48EF ldi r20,hi8(-2000)
2441 0fee F42E mov r15,r20
2442 0ff0 FAA6 std Y+42,r15
2443 0ff2 E9A6 std Y+41,r14
2444 .L97:
2445 0ff4 2091 0000 lds r18,PlatinenVersion
2446 0ff8 2A30 cpi r18,lo8(10)
2447 0ffa 01F4 brne .+2
2448 0ffc 00C0 rjmp .L199
2449 0ffe 8091 0000 lds r24,AdWertNick
2450 1002 9091 0000 lds r25,(AdWertNick)+1
2451 1006 815D subi r24,lo8(2001)
2452 1008 9740 sbci r25,hi8(2001)
2453 100a 04F0 brlt .+2
2454 100c 00C0 rjmp .L200
2455 .L102:
2456 100e 8091 0000 lds r24,AdWertNick
2457 1012 9091 0000 lds r25,(AdWertNick)+1
2458 1016 805E subi r24,lo8(2016)
2459 1018 9740 sbci r25,hi8(2016)
2460 101a 04F0 brlt .L101
2461 .L180:
2462 101c 80ED ldi r24,lo8(2000)
2463 101e E82E mov r14,r24
2464 1020 87E0 ldi r24,hi8(2000)
2465 1022 F82E mov r15,r24
2466 1024 FAA6 std Y+42,r15
2467 1026 E9A6 std Y+41,r14
2468 .L101:
2469 1028 8091 0000 lds r24,AdWertRoll
2470 102c 9091 0000 lds r25,(AdWertRoll)+1
2471 1030 0F97 sbiw r24,15
2472 1032 04F4 brge .L104
2473 1034 08E1 ldi r16,lo8(-1000)
2474 1036 1CEF ldi r17,hi8(-1000)
2475 1038 1CA7 std Y+44,r17
2476 103a 0BA7 std Y+43,r16
2477 .L104:
2478 103c 8091 0000 lds r24,AdWertRoll
2479 1040 9091 0000 lds r25,(AdWertRoll)+1
2480 1044 0797 sbiw r24,7
2481 1046 04F4 brge .L105
2482 1048 00E3 ldi r16,lo8(-2000)
2483 104a 18EF ldi r17,hi8(-2000)
2484 104c 1CA7 std Y+44,r17
2485 104e 0BA7 std Y+43,r16
2486 .L105:
2487 1050 2A30 cpi r18,lo8(10)
2488 1052 01F4 brne .+2
2489 1054 00C0 rjmp .L201
2490 1056 8091 0000 lds r24,AdWertRoll
2491 105a 9091 0000 lds r25,(AdWertRoll)+1
2492 105e 815D subi r24,lo8(2001)
2493 1060 9740 sbci r25,hi8(2001)
2494 1062 04F0 brlt .L110
2495 1064 08EE ldi r16,lo8(1000)
2496 1066 13E0 ldi r17,hi8(1000)
2497 1068 1CA7 std Y+44,r17
2498 106a 0BA7 std Y+43,r16
2499 .L110:
2500 106c 8091 0000 lds r24,AdWertRoll
2501 1070 9091 0000 lds r25,(AdWertRoll)+1
2502 1074 805E subi r24,lo8(2016)
2503 1076 9740 sbci r25,hi8(2016)
2504 1078 04F0 brlt .L109
2505 .L181:
2506 107a 00ED ldi r16,lo8(2000)
2507 107c 17E0 ldi r17,hi8(2000)
2508 107e 1CA7 std Y+44,r17
2509 1080 0BA7 std Y+43,r16
2510 .L109:
2511 1082 A091 0000 lds r26,Parameter_Gyro_D
2512 1086 AA23 tst r26
2513 1088 01F4 brne .+2
2514 108a 00C0 rjmp .L112
2515 108c 6091 0000 lds r22,HiResNick
2516 1090 7091 0000 lds r23,(HiResNick)+1
2517 1094 8091 0000 lds r24,oldNick.39
2518 1098 9091 0000 lds r25,(oldNick.39)+1
2519 109c 681B sub r22,r24
2520 109e 790B sbc r23,r25
2521 10a0 2091 0000 lds r18,HiResNick
2522 10a4 3091 0000 lds r19,(HiResNick)+1
2523 10a8 280F add r18,r24
2524 10aa 391F adc r19,r25
2525 10ac 37FD sbrc r19,7
2526 10ae 00C0 rjmp .L202
2527 .L113:
2528 10b0 3595 asr r19
2529 10b2 2795 ror r18
2530 10b4 3093 0000 sts (oldNick.39)+1,r19
2531 10b8 2093 0000 sts oldNick.39,r18
2532 10bc 6138 cpi r22,129
2533 10be 7105 cpc r23,__zero_reg__
2534 10c0 04F4 brge .+2
2535 10c2 00C0 rjmp .L114
2536 10c4 60E8 ldi r22,lo8(128)
2537 10c6 70E0 ldi r23,hi8(128)
2538 .L173:
2539 10c8 7093 0000 sts (d2Nick.42)+1,r23
2540 10cc 6093 0000 sts d2Nick.42,r22
2541 10d0 8A2F mov r24,r26
2542 10d2 9927 clr r25
2543 10d4 869F mul r24,r22
2544 10d6 F001 movw r30,r0
2545 10d8 879F mul r24,r23
2546 10da F00D add r31,r0
2547 10dc 969F mul r25,r22
2548 10de F00D add r31,r0
2549 10e0 1124 clr r1
2550 10e2 CF01 movw r24,r30
2551 10e4 F7FD sbrc r31,7
2552 10e6 00C0 rjmp .L203
2553 .L117:
2554 10e8 7C01 movw r14,r24
2555 10ea F594 asr r15
2556 10ec E794 ror r14
2557 10ee F594 asr r15
2558 10f0 E794 ror r14
2559 10f2 F594 asr r15
2560 10f4 E794 ror r14
2561 10f6 F594 asr r15
2562 10f8 E794 ror r14
2563 10fa 29A5 ldd r18,Y+41
2564 10fc 3AA5 ldd r19,Y+42
2565 10fe E20E add r14,r18
2566 1100 F31E adc r15,r19
2567 1102 FAA6 std Y+42,r15
2568 1104 E9A6 std Y+41,r14
2569 1106 4091 0000 lds r20,HiResRoll
2570 110a 5091 0000 lds r21,(HiResRoll)+1
2571 110e 8091 0000 lds r24,oldRoll.40
2572 1112 9091 0000 lds r25,(oldRoll.40)+1
2573 1116 481B sub r20,r24
2574 1118 590B sbc r21,r25
2575 111a 2091 0000 lds r18,HiResRoll
2576 111e 3091 0000 lds r19,(HiResRoll)+1
2577 1122 280F add r18,r24
2578 1124 391F adc r19,r25
2579 1126 37FD sbrc r19,7
2580 1128 00C0 rjmp .L204
2581 .L118:
2582 112a 3595 asr r19
2583 112c 2795 ror r18
2584 112e 3093 0000 sts (oldRoll.40)+1,r19
2585 1132 2093 0000 sts oldRoll.40,r18
2586 1136 4138 cpi r20,129
2587 1138 5105 cpc r21,__zero_reg__
2588 113a 04F4 brge .+2
2589 113c 00C0 rjmp .L119
2590 113e 40E8 ldi r20,lo8(128)
2591 1140 50E0 ldi r21,hi8(128)
2592 .L174:
2593 1142 5093 0000 sts (d2Roll.41)+1,r21
2594 1146 4093 0000 sts d2Roll.41,r20
2595 114a 8A2F mov r24,r26
2596 114c 9927 clr r25
2597 114e 849F mul r24,r20
2598 1150 D001 movw r26,r0
2599 1152 859F mul r24,r21
2600 1154 B00D add r27,r0
2601 1156 949F mul r25,r20
2602 1158 B00D add r27,r0
2603 115a 1124 clr r1
2604 115c AD01 movw r20,r26
2605 115e 9D01 movw r18,r26
2606 1160 B7FD sbrc r27,7
2607 1162 00C0 rjmp .L205
2608 .L122:
2609 1164 8901 movw r16,r18
2610 1166 1595 asr r17
2611 1168 0795 ror r16
2612 116a 1595 asr r17
2613 116c 0795 ror r16
2614 116e 1595 asr r17
2615 1170 0795 ror r16
2616 1172 1595 asr r17
2617 1174 0795 ror r16
2618 1176 EBA5 ldd r30,Y+43
2619 1178 FCA5 ldd r31,Y+44
2620 117a 0E0F add r16,r30
2621 117c 1F1F adc r17,r31
2622 117e 1CA7 std Y+44,r17
2623 1180 0BA7 std Y+43,r16
2624 1182 869F mul r24,r22
2625 1184 9001 movw r18,r0
2626 1186 879F mul r24,r23
2627 1188 300D add r19,r0
2628 118a 969F mul r25,r22
2629 118c 300D add r19,r0
2630 118e 1124 clr r1
2631 1190 C901 movw r24,r18
2632 1192 2091 0000 lds r18,HiResNick
2633 1196 3091 0000 lds r19,(HiResNick)+1
2634 119a 820F add r24,r18
2635 119c 931F adc r25,r19
2636 119e 9093 0000 sts (HiResNick)+1,r25
2637 11a2 8093 0000 sts HiResNick,r24
2638 11a6 8091 0000 lds r24,HiResRoll
2639 11aa 9091 0000 lds r25,(HiResRoll)+1
2640 11ae 480F add r20,r24
2641 11b0 591F adc r21,r25
2642 11b2 5093 0000 sts (HiResRoll)+1,r21
2643 11b6 4093 0000 sts HiResRoll,r20
2644 .L112:
2645 11ba 4D85 ldd r20,Y+13
2646 11bc 5E85 ldd r21,Y+14
2647 11be 1416 cp __zero_reg__,r20
2648 11c0 1506 cpc __zero_reg__,r21
2649 11c2 04F0 brlt .+2
2650 11c4 00C0 rjmp .L123
2651 11c6 8091 0000 lds r24,KopplungsteilNickRoll
2652 11ca 9091 0000 lds r25,(KopplungsteilNickRoll)+1
2653 11ce 97FD sbrc r25,7
2654 11d0 00C0 rjmp .L206
2655 .L124:
2656 11d2 AA27 clr r26
2657 11d4 97FD sbrc r25,7
2658 11d6 A095 com r26
2659 11d8 BA2F mov r27,r26
2660 11da 6DA5 ldd r22,Y+45
2661 11dc 262F mov r18,r22
2662 11de 3327 clr r19
2663 11e0 4427 clr r20
2664 11e2 5527 clr r21
2665 11e4 BC01 movw r22,r24
2666 11e6 CD01 movw r24,r26
2667 11e8 0E94 0000 call __mulsi3
2668 11ec 97FD sbrc r25,7
2669 11ee 00C0 rjmp .L207
2670 .L125:
2671 11f0 E6E0 ldi r30,6
2672 11f2 9595 1: asr r25
2673 11f4 8795 ror r24
2674 11f6 7795 ror r23
2675 11f8 6795 ror r22
2676 11fa EA95 dec r30
2677 11fc 01F4 brne 1b
2678 11fe AF8D ldd r26,Y+31
2679 1200 B8A1 ldd r27,Y+32
2680 1202 A60F add r26,r22
2681 1204 B71F adc r27,r23
2682 1206 B093 0000 sts (TrimRoll)+1,r27
2683 120a A093 0000 sts TrimRoll,r26
2684 120e 4B85 ldd r20,Y+11
2685 1210 5C85 ldd r21,Y+12
2686 1212 1416 cp __zero_reg__,r20
2687 1214 1506 cpc __zero_reg__,r21
2688 1216 04F0 brlt .+2
2689 1218 00C0 rjmp .L129
2690 .L217:
2691 121a 8091 0000 lds r24,KopplungsteilRollNick
2692 121e 9091 0000 lds r25,(KopplungsteilRollNick)+1
2693 1222 97FD sbrc r25,7
2694 1224 00C0 rjmp .L208
2695 .L130:
2696 1226 AA27 clr r26
2697 1228 97FD sbrc r25,7
2698 122a A095 com r26
2699 122c BA2F mov r27,r26
2700 122e 6DA5 ldd r22,Y+45
2701 1230 262F mov r18,r22
2702 1232 3327 clr r19
2703 1234 4427 clr r20
2704 1236 5527 clr r21
2705 1238 BC01 movw r22,r24
2706 123a CD01 movw r24,r26
2707 123c 0E94 0000 call __mulsi3
2708 1240 97FD sbrc r25,7
2709 1242 00C0 rjmp .L209
2710 .L131:
2711 1244 46E0 ldi r20,6
2712 1246 9595 1: asr r25
2713 1248 8795 ror r24
2714 124a 7795 ror r23
2715 124c 6795 ror r22
2716 124e 4A95 dec r20
2717 1250 01F4 brne 1b
2718 1252 A9A1 ldd r26,Y+33
2719 1254 BAA1 ldd r27,Y+34
2720 1256 A60F add r26,r22
2721 1258 B71F adc r27,r23
2722 125a B093 0000 sts (TrimNick)+1,r27
2723 125e A093 0000 sts TrimNick,r26
2724 1262 3CA1 ldd r19,Y+36
2725 1264 37FD sbrc r19,7
2726 1266 00C0 rjmp .L210
2727 .L177:
2728 1268 1093 0000 sts (MesswertRoll)+1,r17
2729 126c 0093 0000 sts MesswertRoll,r16
2730 1270 F092 0000 sts (MesswertNick)+1,r15
2731 1274 E092 0000 sts MesswertNick,r14
2732 .L135:
2733 1278 8091 0000 lds r24,EE_Parameter+4
2734 127c E82F mov r30,r24
2735 127e FF27 clr r31
2736 1280 EE0F add r30,r30
2737 1282 FF1F adc r31,r31
2738 1284 E050 subi r30,lo8(-(PPM_in))
2739 1286 F040 sbci r31,hi8(-(PPM_in))
2740 1288 8081 ld r24,Z
2741 128a 9181 ldd r25,Z+1
2742 128c 8259 subi r24,lo8(-(110))
2743 128e 9F4F sbci r25,hi8(-(110))
2744 1290 A091 0000 lds r26,Poti1
2745 1294 B091 0000 lds r27,(Poti1)+1
2746 1298 A817 cp r26,r24
2747 129a B907 cpc r27,r25
2748 129c 04F0 brlt .+2
2749 129e 00C0 rjmp .L142
2750 12a0 CD01 movw r24,r26
2751 12a2 0196 adiw r24,1
2752 .L182:
2753 12a4 9093 0000 sts (Poti1)+1,r25
2754 12a8 8093 0000 sts Poti1,r24
2755 12ac DC01 movw r26,r24
2756 .L143:
2757 12ae 8091 0000 lds r24,EE_Parameter+5
2758 12b2 E82F mov r30,r24
2759 12b4 FF27 clr r31
2760 12b6 EE0F add r30,r30
2761 12b8 FF1F adc r31,r31
2762 12ba E050 subi r30,lo8(-(PPM_in))
2763 12bc F040 sbci r31,hi8(-(PPM_in))
2764 12be 8081 ld r24,Z
2765 12c0 9181 ldd r25,Z+1
2766 12c2 8259 subi r24,lo8(-(110))
2767 12c4 9F4F sbci r25,hi8(-(110))
2768 12c6 6091 0000 lds r22,Poti2
2769 12ca 7091 0000 lds r23,(Poti2)+1
2770 12ce 6817 cp r22,r24
2771 12d0 7907 cpc r23,r25
2772 12d2 04F0 brlt .+2
2773 12d4 00C0 rjmp .L145
2774 12d6 CB01 movw r24,r22
2775 12d8 0196 adiw r24,1
2776 .L183:
2777 12da 9093 0000 sts (Poti2)+1,r25
2778 12de 8093 0000 sts Poti2,r24
2779 12e2 BC01 movw r22,r24
2780 .L146:
2781 12e4 8091 0000 lds r24,EE_Parameter+6
2782 12e8 E82F mov r30,r24
2783 12ea FF27 clr r31
2784 12ec EE0F add r30,r30
2785 12ee FF1F adc r31,r31
2786 12f0 E050 subi r30,lo8(-(PPM_in))
2787 12f2 F040 sbci r31,hi8(-(PPM_in))
2788 12f4 8081 ld r24,Z
2789 12f6 9181 ldd r25,Z+1
2790 12f8 8259 subi r24,lo8(-(110))
2791 12fa 9F4F sbci r25,hi8(-(110))
2792 12fc 4091 0000 lds r20,Poti3
2793 1300 5091 0000 lds r21,(Poti3)+1
2794 1304 4817 cp r20,r24
2795 1306 5907 cpc r21,r25
2796 1308 04F0 brlt .+2
2797 130a 00C0 rjmp .L148
2798 130c CA01 movw r24,r20
2799 130e 0196 adiw r24,1
2800 .L184:
2801 1310 9093 0000 sts (Poti3)+1,r25
2802 1314 8093 0000 sts Poti3,r24
2803 1318 AC01 movw r20,r24
2804 .L149:
2805 131a 8091 0000 lds r24,EE_Parameter+7
2806 131e E82F mov r30,r24
2807 1320 FF27 clr r31
2808 1322 EE0F add r30,r30
2809 1324 FF1F adc r31,r31
2810 1326 E050 subi r30,lo8(-(PPM_in))
2811 1328 F040 sbci r31,hi8(-(PPM_in))
2812 132a 8081 ld r24,Z
2813 132c 9181 ldd r25,Z+1
2814 132e 8259 subi r24,lo8(-(110))
2815 1330 9F4F sbci r25,hi8(-(110))
2816 1332 2091 0000 lds r18,Poti4
2817 1336 3091 0000 lds r19,(Poti4)+1
2818 133a 2817 cp r18,r24
2819 133c 3907 cpc r19,r25
2820 133e 04F0 brlt .+2
2821 1340 00C0 rjmp .L151
2822 1342 C901 movw r24,r18
2823 1344 0196 adiw r24,1
2824 .L185:
2825 1346 9093 0000 sts (Poti4)+1,r25
2826 134a 8093 0000 sts Poti4,r24
2827 134e 9C01 movw r18,r24
2828 .L152:
2829 1350 B7FD sbrc r27,7
2830 1352 00C0 rjmp .L211
2831 1354 AF3F cpi r26,255
2832 1356 B105 cpc r27,__zero_reg__
2833 1358 01F0 breq .L155
2834 135a 04F0 brlt .L155
2835 135c 8FEF ldi r24,lo8(255)
2836 135e 90E0 ldi r25,hi8(255)
2837 1360 9093 0000 sts (Poti1)+1,r25
2838 1364 8093 0000 sts Poti1,r24
2839 .L155:
2840 1368 77FD sbrc r23,7
2841 136a 00C0 rjmp .L212
2842 136c 6F3F cpi r22,255
2843 136e 7105 cpc r23,__zero_reg__
2844 1370 01F0 breq .L158
2845 1372 04F0 brlt .L158
2846 1374 8FEF ldi r24,lo8(255)
2847 1376 90E0 ldi r25,hi8(255)
2848 1378 9093 0000 sts (Poti2)+1,r25
2849 137c 8093 0000 sts Poti2,r24
2850 .L158:
2851 1380 57FD sbrc r21,7
2852 1382 00C0 rjmp .L213
2853 .L160:
2854 1384 4F3F cpi r20,255
2855 1386 5105 cpc r21,__zero_reg__
2856 1388 01F0 breq .L161
2857 138a 04F0 brlt .L161
2858 138c 8FEF ldi r24,lo8(255)
2859 138e 90E0 ldi r25,hi8(255)
2860 1390 9093 0000 sts (Poti3)+1,r25
2861 1394 8093 0000 sts Poti3,r24
2862 .L161:
2863 1398 37FD sbrc r19,7
2864 139a 00C0 rjmp .L214
2865 .L163:
2866 139c 2F3F cpi r18,255
2867 139e 3105 cpc r19,__zero_reg__
2868 13a0 01F0 breq .+2
2869 13a2 04F4 brge .+2
2870 13a4 00C0 rjmp .L56
2871 13a6 8FEF ldi r24,lo8(255)
2872 13a8 90E0 ldi r25,hi8(255)
2873 13aa 9093 0000 sts (Poti4)+1,r25
2874 13ae 8093 0000 sts Poti4,r24
2875 13b2 00C0 rjmp .L56
2876 .L172:
2877 13b4 6092 0000 sts Mess_IntegralNick,r6
2878 13b8 7092 0000 sts (Mess_IntegralNick)+1,r7
2879 13bc 8092 0000 sts (Mess_IntegralNick)+2,r8
2880 13c0 9092 0000 sts (Mess_IntegralNick)+3,r9
2881 13c4 A092 0000 sts Mess_IntegralNick2,r10
2882 13c8 B092 0000 sts (Mess_IntegralNick2)+1,r11
2883 13cc C092 0000 sts (Mess_IntegralNick2)+2,r12
2884 13d0 D092 0000 sts (Mess_IntegralNick2)+3,r13
2885 13d4 00C0 rjmp .L93
2886 .L171:
2887 13d6 2092 0000 sts Mess_IntegralRoll,r2
2888 13da 3092 0000 sts (Mess_IntegralRoll)+1,r3
2889 13de 4092 0000 sts (Mess_IntegralRoll)+2,r4
2890 13e2 5092 0000 sts (Mess_IntegralRoll)+3,r5
2891 13e6 A092 0000 sts Mess_IntegralRoll2,r10
2892 13ea B092 0000 sts (Mess_IntegralRoll2)+1,r11
2893 13ee C092 0000 sts (Mess_IntegralRoll2)+2,r12
2894 13f2 D092 0000 sts (Mess_IntegralRoll2)+3,r13
2895 13f6 00C0 rjmp .L91
2896 .L66:
2897 13f8 98EB ldi r25,lo8(-93000)
2898 13fa 6916 cp r6,r25
2899 13fc 94E9 ldi r25,hi8(-93000)
2900 13fe 7906 cpc r7,r25
2901 1400 9EEF ldi r25,hlo8(-93000)
2902 1402 8906 cpc r8,r25
2903 1404 9FEF ldi r25,hhi8(-93000)
2904 1406 9906 cpc r9,r25
2905 1408 04F4 brge .L68
2906 140a 28EB ldi r18,lo8(-93000)
2907 140c 34E9 ldi r19,hi8(-93000)
2908 140e 4EEF ldi r20,hlo8(-93000)
2909 1410 5FEF ldi r21,hhi8(-93000)
2910 1412 2983 std Y+1,r18
2911 1414 3A83 std Y+2,r19
2912 1416 4B83 std Y+3,r20
2913 1418 5C83 std Y+4,r21
2914 141a 00C0 rjmp .L67
2915 .L200:
2916 141c 98EE ldi r25,lo8(1000)
2917 141e E92E mov r14,r25
2918 1420 93E0 ldi r25,hi8(1000)
2919 1422 F92E mov r15,r25
2920 1424 FAA6 std Y+42,r15
2921 1426 E9A6 std Y+41,r14
2922 1428 00C0 rjmp .L102
2923 .L64:
2924 142a 2D82 std Y+5,r2
2925 142c 3E82 std Y+6,r3
2926 142e 4F82 std Y+7,r4
2927 1430 5886 std Y+8,r5
2928 1432 00C0 rjmp .L63
2929 .L167:
2930 1434 8DA1 ldd r24,Y+37
2931 1436 9EA1 ldd r25,Y+38
2932 1438 AFA1 ldd r26,Y+39
2933 143a B8A5 ldd r27,Y+40
2934 143c 8093 0000 sts Mess_Integral_Gier,r24
2935 1440 9093 0000 sts (Mess_Integral_Gier)+1,r25
2936 1444 A093 0000 sts (Mess_Integral_Gier)+2,r26
2937 1448 B093 0000 sts (Mess_Integral_Gier)+3,r27
2938 144c 9091 0000 lds r25,EE_Parameter+8
2939 1450 9CA3 std Y+36,r25
2940 1452 00C0 rjmp .L70
2941 .L68:
2942 1454 6982 std Y+1,r6
2943 1456 7A82 std Y+2,r7
2944 1458 8B82 std Y+3,r8
2945 145a 9C82 std Y+4,r9
2946 145c 00C0 rjmp .L67
2947 .L145:
2948 145e 8081 ld r24,Z
2949 1460 9181 ldd r25,Z+1
2950 1462 8259 subi r24,lo8(-(110))
2951 1464 9F4F sbci r25,hi8(-(110))
2952 1466 8617 cp r24,r22
2953 1468 9707 cpc r25,r23
2954 146a 04F0 brlt .+2
2955 146c 00C0 rjmp .L146
2956 146e 6115 cp r22,__zero_reg__
2957 1470 7105 cpc r23,__zero_reg__
2958 1472 01F4 brne .+2
2959 1474 00C0 rjmp .L146
2960 1476 CB01 movw r24,r22
2961 1478 0197 sbiw r24,1
2962 147a 00C0 rjmp .L183
2963 .L142:
2964 147c 8081 ld r24,Z
2965 147e 9181 ldd r25,Z+1
2966 1480 8259 subi r24,lo8(-(110))
2967 1482 9F4F sbci r25,hi8(-(110))
2968 1484 8A17 cp r24,r26
2969 1486 9B07 cpc r25,r27
2970 1488 04F0 brlt .+2
2971 148a 00C0 rjmp .L143
2972 148c 1097 sbiw r26,0
2973 148e 01F4 brne .+2
2974 1490 00C0 rjmp .L143
2975 1492 CD01 movw r24,r26
2976 1494 0197 sbiw r24,1
2977 1496 00C0 rjmp .L182
2978 .L151:
2979 1498 8081 ld r24,Z
2980 149a 9181 ldd r25,Z+1
2981 149c 8259 subi r24,lo8(-(110))
2982 149e 9F4F sbci r25,hi8(-(110))
2983 14a0 8217 cp r24,r18
2984 14a2 9307 cpc r25,r19
2985 14a4 04F0 brlt .+2
2986 14a6 00C0 rjmp .L152
2987 14a8 2115 cp r18,__zero_reg__
2988 14aa 3105 cpc r19,__zero_reg__
2989 14ac 01F4 brne .+2
2990 14ae 00C0 rjmp .L152
2991 14b0 C901 movw r24,r18
2992 14b2 0197 sbiw r24,1
2993 14b4 00C0 rjmp .L185
2994 .L148:
2995 14b6 8081 ld r24,Z
2996 14b8 9181 ldd r25,Z+1
2997 14ba 8259 subi r24,lo8(-(110))
2998 14bc 9F4F sbci r25,hi8(-(110))
2999 14be 8417 cp r24,r20
3000 14c0 9507 cpc r25,r21
3001 14c2 04F0 brlt .+2
3002 14c4 00C0 rjmp .L149
3003 14c6 4115 cp r20,__zero_reg__
3004 14c8 5105 cpc r21,__zero_reg__
3005 14ca 01F4 brne .+2
3006 14cc 00C0 rjmp .L149
3007 14ce CA01 movw r24,r20
3008 14d0 0197 sbiw r24,1
3009 14d2 00C0 rjmp .L184
3010 .L199:
3011 14d4 8091 0000 lds r24,AdWertNick
3012 14d8 9091 0000 lds r25,(AdWertNick)+1
3013 14dc 835F subi r24,lo8(1011)
3014 14de 9340 sbci r25,hi8(1011)
3015 14e0 04F0 brlt .L99
3016 14e2 38EE ldi r19,lo8(1000)
3017 14e4 E32E mov r14,r19
3018 14e6 33E0 ldi r19,hi8(1000)
3019 14e8 F32E mov r15,r19
3020 14ea FAA6 std Y+42,r15
3021 14ec E9A6 std Y+41,r14
3022 .L99:
3023 14ee 8091 0000 lds r24,AdWertNick
3024 14f2 9091 0000 lds r25,(AdWertNick)+1
3025 14f6 8A5F subi r24,lo8(1018)
3026 14f8 9340 sbci r25,hi8(1018)
3027 14fa 04F4 brge .+2
3028 14fc 00C0 rjmp .L101
3029 14fe 00C0 rjmp .L180
3030 .L201:
3031 1500 8091 0000 lds r24,AdWertRoll
3032 1504 9091 0000 lds r25,(AdWertRoll)+1
3033 1508 835F subi r24,lo8(1011)
3034 150a 9340 sbci r25,hi8(1011)
3035 150c 04F0 brlt .L107
3036 150e 08EE ldi r16,lo8(1000)
3037 1510 13E0 ldi r17,hi8(1000)
3038 1512 1CA7 std Y+44,r17
3039 1514 0BA7 std Y+43,r16
3040 .L107:
3041 1516 8091 0000 lds r24,AdWertRoll
3042 151a 9091 0000 lds r25,(AdWertRoll)+1
3043 151e 8A5F subi r24,lo8(1018)
3044 1520 9340 sbci r25,hi8(1018)
3045 1522 04F4 brge .+2
3046 1524 00C0 rjmp .L109
3047 1526 00C0 rjmp .L181
3048 .L119:
3049 1528 3FEF ldi r19,hi8(-128)
3050 152a 4038 cpi r20,lo8(-128)
3051 152c 5307 cpc r21,r19
3052 152e 04F0 brlt .+2
3053 1530 00C0 rjmp .L174
3054 1532 40E8 ldi r20,lo8(-128)
3055 1534 5FEF ldi r21,hi8(-128)
3056 1536 00C0 rjmp .L174
3057 .L114:
3058 1538 8FEF ldi r24,hi8(-128)
3059 153a 6038 cpi r22,lo8(-128)
3060 153c 7807 cpc r23,r24
3061 153e 04F0 brlt .+2
3062 1540 00C0 rjmp .L173
3063 1542 60E8 ldi r22,lo8(-128)
3064 1544 7FEF ldi r23,hi8(-128)
3065 1546 00C0 rjmp .L173
3066 .L123:
3067 1548 8091 0000 lds r24,KopplungsteilNickRoll
3068 154c 9091 0000 lds r25,(KopplungsteilNickRoll)+1
3069 1550 97FD sbrc r25,7
3070 1552 00C0 rjmp .L215
3071 .L127:
3072 1554 AA27 clr r26
3073 1556 97FD sbrc r25,7
3074 1558 A095 com r26
3075 155a BA2F mov r27,r26
3076 155c EDA5 ldd r30,Y+45
3077 155e 2E2F mov r18,r30
3078 1560 3327 clr r19
3079 1562 4427 clr r20
3080 1564 5527 clr r21
3081 1566 BC01 movw r22,r24
3082 1568 CD01 movw r24,r26
3083 156a 0E94 0000 call __mulsi3
3084 156e 97FD sbrc r25,7
3085 1570 00C0 rjmp .L216
3086 .L128:
3087 1572 56E0 ldi r21,6
3088 1574 9595 1: asr r25
3089 1576 8795 ror r24
3090 1578 7795 ror r23
3091 157a 6795 ror r22
3092 157c 5A95 dec r21
3093 157e 01F4 brne 1b
3094 1580 2F8D ldd r18,Y+31
3095 1582 38A1 ldd r19,Y+32
3096 1584 261B sub r18,r22
3097 1586 370B sbc r19,r23
3098 1588 3093 0000 sts (TrimRoll)+1,r19
3099 158c 2093 0000 sts TrimRoll,r18
3100 1590 4B85 ldd r20,Y+11
3101 1592 5C85 ldd r21,Y+12
3102 1594 1416 cp __zero_reg__,r20
3103 1596 1506 cpc __zero_reg__,r21
3104 1598 04F4 brge .+2
3105 159a 00C0 rjmp .L217
3106 .L129:
3107 159c 8091 0000 lds r24,KopplungsteilRollNick
3108 15a0 9091 0000 lds r25,(KopplungsteilRollNick)+1
3109 15a4 97FD sbrc r25,7
3110 15a6 00C0 rjmp .L218
3111 .L133:
3112 15a8 AA27 clr r26
3113 15aa 97FD sbrc r25,7
3114 15ac A095 com r26
3115 15ae BA2F mov r27,r26
3116 15b0 EDA5 ldd r30,Y+45
3117 15b2 2E2F mov r18,r30
3118 15b4 3327 clr r19
3119 15b6 4427 clr r20
3120 15b8 5527 clr r21
3121 15ba BC01 movw r22,r24
3122 15bc CD01 movw r24,r26
3123 15be 0E94 0000 call __mulsi3
3124 15c2 97FD sbrc r25,7
3125 15c4 00C0 rjmp .L219
3126 .L134:
3127 15c6 36E0 ldi r19,6
3128 15c8 9595 1: asr r25
3129 15ca 8795 ror r24
3130 15cc 7795 ror r23
3131 15ce 6795 ror r22
3132 15d0 3A95 dec r19
3133 15d2 01F4 brne 1b
3134 15d4 29A1 ldd r18,Y+33
3135 15d6 3AA1 ldd r19,Y+34
3136 15d8 261B sub r18,r22
3137 15da 370B sbc r19,r23
3138 15dc 3093 0000 sts (TrimNick)+1,r19
3139 15e0 2093 0000 sts TrimNick,r18
3140 15e4 3CA1 ldd r19,Y+36
3141 15e6 37FF sbrs r19,7
3142 15e8 00C0 rjmp .L177
3143 .L210:
3144 15ea 4BA1 ldd r20,Y+35
3145 15ec 4423 tst r20
3146 15ee 01F0 breq .+2
3147 15f0 00C0 rjmp .L177
3148 15f2 8091 0000 lds r24,Looping_Roll
3149 15f6 8823 tst r24
3150 15f8 01F0 breq .+2
3151 15fa 00C0 rjmp .L177
3152 15fc 8B85 ldd r24,Y+11
3153 15fe 9C85 ldd r25,Y+12
3154 1600 A1E0 ldi r26,hi8(257)
3155 1602 8130 cpi r24,lo8(257)
3156 1604 9A07 cpc r25,r26
3157 1606 04F0 brlt .+2
3158 1608 00C0 rjmp .L220
3159 160a 2B85 ldd r18,Y+11
3160 160c 3C85 ldd r19,Y+12
3161 160e 4FEF ldi r20,hi8(-256)
3162 1610 2030 cpi r18,lo8(-256)
3163 1612 3407 cpc r19,r20
3164 1614 04F0 brlt .+2
3165 1616 00C0 rjmp .L178
3166 1618 89A5 ldd r24,Y+41
3167 161a 9AA5 ldd r25,Y+42
3168 161c 280F add r18,r24
3169 161e 391F adc r19,r25
3170 1620 3C87 std Y+12,r19
3171 1622 2B87 std Y+11,r18
3172 1624 2050 subi r18,lo8(-(256))
3173 1626 3F4F sbci r19,hi8(-(256))
3174 1628 3093 0000 sts (MesswertNick)+1,r19
3175 162c 2093 0000 sts MesswertNick,r18
3176 .L137:
3177 1630 AD85 ldd r26,Y+13
3178 1632 BE85 ldd r27,Y+14
3179 1634 E1E0 ldi r30,hi8(257)
3180 1636 A130 cpi r26,lo8(257)
3181 1638 BE07 cpc r27,r30
3182 163a 04F4 brge .+2
3183 163c 00C0 rjmp .L139
3184 163e 2BA5 ldd r18,Y+43
3185 1640 3CA5 ldd r19,Y+44
3186 1642 A20F add r26,r18
3187 1644 B31F adc r27,r19
3188 1646 BE87 std Y+14,r27
3189 1648 AD87 std Y+13,r26
3190 164a A050 subi r26,lo8(-(-256))
3191 164c B140 sbci r27,hi8(-(-256))
3192 164e B093 0000 sts (MesswertRoll)+1,r27
3193 1652 A093 0000 sts MesswertRoll,r26
3194 1656 00C0 rjmp .L135
3195 .L212:
3196 1658 1092 0000 sts (Poti2)+1,__zero_reg__
3197 165c 1092 0000 sts Poti2,__zero_reg__
3198 1660 57FF sbrs r21,7
3199 1662 00C0 rjmp .L160
3200 .L213:
3201 1664 1092 0000 sts (Poti3)+1,__zero_reg__
3202 1668 1092 0000 sts Poti3,__zero_reg__
3203 166c 37FF sbrs r19,7
3204 166e 00C0 rjmp .L163
3205 .L214:
3206 1670 1092 0000 sts (Poti4)+1,__zero_reg__
3207 1674 1092 0000 sts Poti4,__zero_reg__
3208 1678 00C0 rjmp .L56
3209 .L211:
3210 167a 1092 0000 sts (Poti1)+1,__zero_reg__
3211 167e 1092 0000 sts Poti1,__zero_reg__
3212 1682 00C0 rjmp .L155
3213 .L187:
3214 1684 295F subi r18,lo8(-(7))
3215 1686 3F4F sbci r19,hi8(-(7))
3216 1688 00C0 rjmp .L58
3217 .L186:
3218 168a 295F subi r18,lo8(-(7))
3219 168c 3F4F sbci r19,hi8(-(7))
3220 168e 00C0 rjmp .L57
3221 .L190:
3222 1690 2D5F subi r18,lo8(-(3))
3223 1692 3F4F sbci r19,hi8(-(3))
3224 1694 4F4F sbci r20,hlo8(-(3))
3225 1696 5F4F sbci r21,hhi8(-(3))
3226 1698 00C0 rjmp .L61
3227 .L196:
3228 169a E60E add r14,r22
3229 169c F71E adc r15,r23
3230 169e 081F adc r16,r24
3231 16a0 191F adc r17,r25
3232 16a2 E092 0000 sts ErsatzKompass,r14
3233 16a6 F092 0000 sts (ErsatzKompass)+1,r15
3234 16aa 0093 0000 sts (ErsatzKompass)+2,r16
3235 16ae 1093 0000 sts (ErsatzKompass)+3,r17
3236 16b2 00C0 rjmp .L89
3237 .L189:
3238 16b4 23E0 ldi r18,lo8(3)
3239 16b6 30E0 ldi r19,hi8(3)
3240 16b8 40E0 ldi r20,hlo8(3)
3241 16ba 50E0 ldi r21,hhi8(3)
3242 16bc E20E add r14,r18
3243 16be F31E adc r15,r19
3244 16c0 041F adc r16,r20
3245 16c2 151F adc r17,r21
3246 16c4 00C0 rjmp .L60
3247 .L188:
3248 16c6 83E0 ldi r24,lo8(3)
3249 16c8 90E0 ldi r25,hi8(3)
3250 16ca A0E0 ldi r26,hlo8(3)
3251 16cc B0E0 ldi r27,hhi8(3)
3252 16ce E80E add r14,r24
3253 16d0 F91E adc r15,r25
3254 16d2 0A1F adc r16,r26
3255 16d4 1B1F adc r17,r27
3256 16d6 00C0 rjmp .L59
3257 .L198:
3258 16d8 0796 adiw r24,7
3259 16da 00C0 rjmp .L95
3260 .L197:
3261 16dc 0796 adiw r24,7
3262 16de 00C0 rjmp .L94
3263 .L168:
3264 16e0 2DA1 ldd r18,Y+37
3265 16e2 3EA1 ldd r19,Y+38
3266 16e4 4FA1 ldd r20,Y+39
3267 16e6 58A5 ldd r21,Y+40
3268 16e8 2093 0000 sts Mess_Integral_Gier,r18
3269 16ec 3093 0000 sts (Mess_Integral_Gier)+1,r19
3270 16f0 4093 0000 sts (Mess_Integral_Gier)+2,r20
3271 16f4 5093 0000 sts (Mess_Integral_Gier)+3,r21
3272 16f8 00C0 rjmp .L70
3273 .L209:
3274 16fa 615C subi r22,lo8(-(63))
3275 16fc 7F4F sbci r23,hi8(-(63))
3276 16fe 8F4F sbci r24,hlo8(-(63))
3277 1700 9F4F sbci r25,hhi8(-(63))
3278 1702 00C0 rjmp .L131
3279 .L208:
3280 1704 9095 com r25
3281 1706 8195 neg r24
3282 1708 9F4F sbci r25,lo8(-1)
3283 170a 00C0 rjmp .L130
3284 .L207:
3285 170c 615C subi r22,lo8(-(63))
3286 170e 7F4F sbci r23,hi8(-(63))
3287 1710 8F4F sbci r24,hlo8(-(63))
3288 1712 9F4F sbci r25,hhi8(-(63))
3289 1714 00C0 rjmp .L125
3290 .L206:
3291 1716 9095 com r25
3292 1718 8195 neg r24
3293 171a 9F4F sbci r25,lo8(-1)
3294 171c 00C0 rjmp .L124
3295 .L205:
3296 171e 215F subi r18,lo8(-(15))
3297 1720 3F4F sbci r19,hi8(-(15))
3298 1722 00C0 rjmp .L122
3299 .L204:
3300 1724 2F5F subi r18,lo8(-(1))
3301 1726 3F4F sbci r19,hi8(-(1))
3302 1728 00C0 rjmp .L118
3303 .L203:
3304 172a 0F96 adiw r24,15
3305 172c 00C0 rjmp .L117
3306 .L202:
3307 172e 2F5F subi r18,lo8(-(1))
3308 1730 3F4F sbci r19,hi8(-(1))
3309 1732 00C0 rjmp .L113
3310 .L169:
3311 1734 2DA1 ldd r18,Y+37
3312 1736 3EA1 ldd r19,Y+38
3313 1738 4FA1 ldd r20,Y+39
3314 173a 58A5 ldd r21,Y+40
3315 173c 2093 0000 sts Mess_Integral_Gier,r18
3316 1740 3093 0000 sts (Mess_Integral_Gier)+1,r19
3317 1744 4093 0000 sts (Mess_Integral_Gier)+2,r20
3318 1748 5093 0000 sts (Mess_Integral_Gier)+3,r21
3319 .L75:
3320 174c 8985 ldd r24,Y+9
3321 174e 9A85 ldd r25,Y+10
3322 1750 AA27 clr r26
3323 1752 97FD sbrc r25,7
3324 1754 A095 com r26
3325 1756 BA2F mov r27,r26
3326 1758 2AAD ldd r18,Y+58
3327 175a 3BAD ldd r19,Y+59
3328 175c 4CAD ldd r20,Y+60
3329 175e 5DAD ldd r21,Y+61
3330 1760 820F add r24,r18
3331 1762 931F adc r25,r19
3332 1764 A41F adc r26,r20
3333 1766 B51F adc r27,r21
3334 1768 8B8B std Y+19,r24
3335 176a 9C8B std Y+20,r25
3336 176c AD8B std Y+21,r26
3337 176e BE8B std Y+22,r27
3338 1770 BC01 movw r22,r24
3339 1772 CD01 movw r24,r26
3340 1774 2981 ldd r18,Y+1
3341 1776 3A81 ldd r19,Y+2
3342 1778 4B81 ldd r20,Y+3
3343 177a 5C81 ldd r21,Y+4
3344 177c 0E94 0000 call __mulsi3
3345 1780 9B01 movw r18,r22
3346 1782 AC01 movw r20,r24
3347 1784 97FD sbrc r25,7
3348 1786 00C0 rjmp .L221
3349 .L77:
3350 1788 6BE0 ldi r22,11
3351 178a 5595 1: asr r21
3352 178c 4795 ror r20
3353 178e 3795 ror r19
3354 1790 2795 ror r18
3355 1792 6A95 dec r22
3356 1794 01F4 brne 1b
3357 1796 6091 0000 lds r22,Parameter_AchsKopplung1
3358 179a 862F mov r24,r22
3359 179c 9927 clr r25
3360 179e AA27 clr r26
3361 17a0 BB27 clr r27
3362 17a2 8F8B std Y+23,r24
3363 17a4 988F std Y+24,r25
3364 17a6 A98F std Y+25,r26
3365 17a8 BA8F std Y+26,r27
3366 17aa BC01 movw r22,r24
3367 17ac CD01 movw r24,r26
3368 17ae 0E94 0000 call __mulsi3
3369 17b2 97FD sbrc r25,7
3370 17b4 00C0 rjmp .L222
3371 .L78:
3372 17b6 2CE0 ldi r18,12
3373 17b8 9595 1: asr r25
3374 17ba 8795 ror r24
3375 17bc 7795 ror r23
3376 17be 6795 ror r22
3377 17c0 2A95 dec r18
3378 17c2 01F4 brne 1b
3379 17c4 6B8F std Y+27,r22
3380 17c6 7C8F std Y+28,r23
3381 17c8 8D8F std Y+29,r24
3382 17ca 9E8F std Y+30,r25
3383 17cc 6093 0000 sts tmpl.35,r22
3384 17d0 7093 0000 sts (tmpl.35)+1,r23
3385 17d4 8093 0000 sts (tmpl.35)+2,r24
3386 17d8 9093 0000 sts (tmpl.35)+3,r25
3387 17dc 6B89 ldd r22,Y+19
3388 17de 7C89 ldd r23,Y+20
3389 17e0 8D89 ldd r24,Y+21
3390 17e2 9E89 ldd r25,Y+22
3391 17e4 2D81 ldd r18,Y+5
3392 17e6 3E81 ldd r19,Y+6
3393 17e8 4F81 ldd r20,Y+7
3394 17ea 5885 ldd r21,Y+8
3395 17ec 0E94 0000 call __mulsi3
3396 17f0 9B01 movw r18,r22
3397 17f2 AC01 movw r20,r24
3398 17f4 97FD sbrc r25,7
3399 17f6 00C0 rjmp .L223
3400 .L79:
3401 17f8 8BE0 ldi r24,11
3402 17fa 5595 1: asr r21
3403 17fc 4795 ror r20
3404 17fe 3795 ror r19
3405 1800 2795 ror r18
3406 1802 8A95 dec r24
3407 1804 01F4 brne 1b
3408 1806 6F89 ldd r22,Y+23
3409 1808 788D ldd r23,Y+24
3410 180a 898D ldd r24,Y+25
3411 180c 9A8D ldd r25,Y+26
3412 180e 0E94 0000 call __mulsi3
3413 1812 97FD sbrc r25,7
3414 1814 00C0 rjmp .L224
3415 .L80:
3416 1816 BCE0 ldi r27,12
3417 1818 9595 1: asr r25
3418 181a 8795 ror r24
3419 181c 7795 ror r23
3420 181e 6795 ror r22
3421 1820 BA95 dec r27
3422 1822 01F4 brne 1b
3423 1824 6AAB std Y+50,r22
3424 1826 7BAB std Y+51,r23
3425 1828 8CAB std Y+52,r24
3426 182a 9DAB std Y+53,r25
3427 182c 6093 0000 sts tmpl2.36,r22
3428 1830 7093 0000 sts (tmpl2.36)+1,r23
3429 1834 8093 0000 sts (tmpl2.36)+2,r24
3430 1838 9093 0000 sts (tmpl2.36)+3,r25
3431 183c 2985 ldd r18,Y+9
3432 183e 3A85 ldd r19,Y+10
3433 1840 37FD sbrc r19,7
3434 1842 00C0 rjmp .L225
3435 .L82:
3436 1844 2134 cpi r18,65
3437 1846 3105 cpc r19,__zero_reg__
3438 1848 04F4 brge .+2
3439 184a 00C0 rjmp .L87
3440 184c 6B8D ldd r22,Y+27
3441 184e 7C8D ldd r23,Y+28
3442 1850 8D8D ldd r24,Y+29
3443 1852 9E8D ldd r25,Y+30
3444 1854 97FD sbrc r25,7
3445 1856 00C0 rjmp .L226
3446 .L85:
3447 1858 6138 cpi r22,lo8(129)
3448 185a 7105 cpc r23,__zero_reg__
3449 185c 8105 cpc r24,__zero_reg__
3450 185e 9105 cpc r25,__zero_reg__
3451 1860 04F4 brge .L84
3452 1862 6AA9 ldd r22,Y+50
3453 1864 7BA9 ldd r23,Y+51
3454 1866 8CA9 ldd r24,Y+52
3455 1868 9DA9 ldd r25,Y+53
3456 186a 97FD sbrc r25,7
3457 186c 00C0 rjmp .L227
3458 .L86:
3459 186e 6138 cpi r22,lo8(129)
3460 1870 7105 cpc r23,__zero_reg__
3461 1872 8105 cpc r24,__zero_reg__
3462 1874 9105 cpc r25,__zero_reg__
3463 1876 04F4 brge .+2
3464 1878 00C0 rjmp .L87
3465 .L84:
3466 187a 81E0 ldi r24,lo8(1)
3467 187c 8093 0000 sts TrichterFlug,r24
3468 1880 00C0 rjmp .L87
3469 .L218:
3470 1882 9095 com r25
3471 1884 8195 neg r24
3472 1886 9F4F sbci r25,lo8(-1)
3473 1888 00C0 rjmp .L133
3474 .L215:
3475 188a 9095 com r25
3476 188c 8195 neg r24
3477 188e 9F4F sbci r25,lo8(-1)
3478 1890 00C0 rjmp .L127
3479 .L220:
3480 1892 E9A5 ldd r30,Y+41
3481 1894 FAA5 ldd r31,Y+42
3482 1896 8E0F add r24,r30
3483 1898 9F1F adc r25,r31
3484 189a 9C87 std Y+12,r25
3485 189c 8B87 std Y+11,r24
3486 189e 8050 subi r24,lo8(-(-256))
3487 18a0 9140 sbci r25,hi8(-(-256))
3488 18a2 9093 0000 sts (MesswertNick)+1,r25
3489 18a6 8093 0000 sts MesswertNick,r24
3490 18aa 00C0 rjmp .L137
3491 .L226:
3492 18ac 9095 com r25
3493 18ae 8095 com r24
3494 18b0 7095 com r23
3495 18b2 6195 neg r22
3496 18b4 7F4F sbci r23,lo8(-1)
3497 18b6 8F4F sbci r24,lo8(-1)
3498 18b8 9F4F sbci r25,lo8(-1)
3499 18ba 00C0 rjmp .L85
3500 .L195:
3501 18bc 0196 adiw r24,1
3502 18be A11D adc r26,__zero_reg__
3503 18c0 B11D adc r27,__zero_reg__
3504 18c2 8EA7 std Y+46,r24
3505 18c4 9FA7 std Y+47,r25
3506 18c6 A8AB std Y+48,r26
3507 18c8 B9AB std Y+49,r27
3508 18ca 00C0 rjmp .L76
3509 .L216:
3510 18cc 615C subi r22,lo8(-(63))
3511 18ce 7F4F sbci r23,hi8(-(63))
3512 18d0 8F4F sbci r24,hlo8(-(63))
3513 18d2 9F4F sbci r25,hhi8(-(63))
3514 18d4 00C0 rjmp .L128
3515 .L219:
3516 18d6 615C subi r22,lo8(-(63))
3517 18d8 7F4F sbci r23,hi8(-(63))
3518 18da 8F4F sbci r24,hlo8(-(63))
3519 18dc 9F4F sbci r25,hhi8(-(63))
3520 18de 00C0 rjmp .L134
3521 .L224:
3522 18e0 6150 subi r22,lo8(-(4095))
3523 18e2 704F sbci r23,hi8(-(4095))
3524 18e4 8F4F sbci r24,hlo8(-(4095))
3525 18e6 9F4F sbci r25,hhi8(-(4095))
3526 18e8 00C0 rjmp .L80
3527 .L223:
3528 18ea 2150 subi r18,lo8(-(2047))
3529 18ec 384F sbci r19,hi8(-(2047))
3530 18ee 4F4F sbci r20,hlo8(-(2047))
3531 18f0 5F4F sbci r21,hhi8(-(2047))
3532 18f2 00C0 rjmp .L79
3533 .L222:
3534 18f4 6150 subi r22,lo8(-(4095))
3535 18f6 704F sbci r23,hi8(-(4095))
3536 18f8 8F4F sbci r24,hlo8(-(4095))
3537 18fa 9F4F sbci r25,hhi8(-(4095))
3538 18fc 00C0 rjmp .L78
3539 .L221:
3540 18fe 2150 subi r18,lo8(-(2047))
3541 1900 384F sbci r19,hi8(-(2047))
3542 1902 4F4F sbci r20,hlo8(-(2047))
3543 1904 5F4F sbci r21,hhi8(-(2047))
3544 1906 00C0 rjmp .L77
3545 .L139:
3546 1908 4D85 ldd r20,Y+13
3547 190a 5E85 ldd r21,Y+14
3548 190c 6FEF ldi r22,hi8(-256)
3549 190e 4030 cpi r20,lo8(-256)
3550 1910 5607 cpc r21,r22
3551 1912 04F4 brge .L179
3552 1914 8BA5 ldd r24,Y+43
3553 1916 9CA5 ldd r25,Y+44
3554 1918 480F add r20,r24
3555 191a 591F adc r21,r25
3556 191c 5E87 std Y+14,r21
3557 191e 4D87 std Y+13,r20
3558 1920 4050 subi r20,lo8(-(256))
3559 1922 5F4F sbci r21,hi8(-(256))
3560 1924 5093 0000 sts (MesswertRoll)+1,r21
3561 1928 4093 0000 sts MesswertRoll,r20
3562 192c 00C0 rjmp .L135
3563 .L192:
3564 192e 6150 subi r22,lo8(-(4095))
3565 1930 704F sbci r23,hi8(-(4095))
3566 1932 8F4F sbci r24,hlo8(-(4095))
3567 1934 9F4F sbci r25,hhi8(-(4095))
3568 1936 00C0 rjmp .L72
3569 .L191:
3570 1938 2150 subi r18,lo8(-(2047))
3571 193a 384F sbci r19,hi8(-(2047))
3572 193c 4F4F sbci r20,hlo8(-(2047))
3573 193e 5F4F sbci r21,hhi8(-(2047))
3574 1940 00C0 rjmp .L71
3575 .L225:
3576 1942 3095 com r19
3577 1944 2195 neg r18
3578 1946 3F4F sbci r19,lo8(-1)
3579 1948 00C0 rjmp .L82
3580 .L194:
3581 194a 6150 subi r22,lo8(-(4095))
3582 194c 704F sbci r23,hi8(-(4095))
3583 194e 8F4F sbci r24,hlo8(-(4095))
3584 1950 9F4F sbci r25,hhi8(-(4095))
3585 1952 00C0 rjmp .L74
3586 .L193:
3587 1954 2150 subi r18,lo8(-(2047))
3588 1956 384F sbci r19,hi8(-(2047))
3589 1958 4F4F sbci r20,hlo8(-(2047))
3590 195a 5F4F sbci r21,hhi8(-(2047))
3591 195c 00C0 rjmp .L73
3592 .L178:
3593 195e F092 0000 sts (MesswertNick)+1,r15
3594 1962 E092 0000 sts MesswertNick,r14
3595 1966 00C0 rjmp .L137
3596 .L179:
3597 1968 1093 0000 sts (MesswertRoll)+1,r17
3598 196c 0093 0000 sts MesswertRoll,r16
3599 1970 00C0 rjmp .L135
3600 .L227:
3601 1972 9095 com r25
3602 1974 8095 com r24
3603 1976 7095 com r23
3604 1978 6195 neg r22
3605 197a 7F4F sbci r23,lo8(-1)
3606 197c 8F4F sbci r24,lo8(-1)
3607 197e 9F4F sbci r25,lo8(-1)
3608 1980 00C0 rjmp .L86
3609 .L56:
3610 /* epilogue: frame size=61 */
3611 1982 E2E1 ldi r30,18
3612 1984 C35C subi r28,-61
3613 1986 0C94 0000 jmp __epilogue_restores__+0
3614 /* epilogue end (size=4) */
3615 /* function Mittelwert size 2429 (2419) */
3617 .global CalibrierMittelwert
3619 CalibrierMittelwert:
3620 /* prologue: frame size=0 */
3621 /* prologue end (size=0) */
3622 198a 8091 0000 lds r24,PlatinenVersion
3623 198e 8D30 cpi r24,lo8(13)
3624 1990 01F4 brne .+2
3625 1992 00C0 rjmp .L258
3626 .L229:
3627 1994 1092 7A00 sts 122,__zero_reg__
3628 1998 8091 0000 lds r24,AdWertNick
3629 199c 9091 0000 lds r25,(AdWertNick)+1
3630 19a0 9093 0000 sts (MesswertNick)+1,r25
3631 19a4 8093 0000 sts MesswertNick,r24
3632 19a8 8091 0000 lds r24,AdWertRoll
3633 19ac 9091 0000 lds r25,(AdWertRoll)+1
3634 19b0 9093 0000 sts (MesswertRoll)+1,r25
3635 19b4 8093 0000 sts MesswertRoll,r24
3636 19b8 8091 0000 lds r24,AdWertGier
3637 19bc 9091 0000 lds r25,(AdWertGier)+1
3638 19c0 9093 0000 sts (MesswertGier)+1,r25
3639 19c4 8093 0000 sts MesswertGier,r24
3640 19c8 8091 0000 lds r24,AdWertAccNick
3641 19cc 9091 0000 lds r25,(AdWertAccNick)+1
3642 19d0 9C01 movw r18,r24
3643 19d2 4427 clr r20
3644 19d4 37FD sbrc r19,7
3645 19d6 4095 com r20
3646 19d8 542F mov r21,r20
3647 19da DA01 movw r26,r20
3648 19dc C901 movw r24,r18
3649 19de 880F lsl r24
3650 19e0 991F rol r25
3651 19e2 AA1F rol r26
3652 19e4 BB1F rol r27
3653 19e6 880F lsl r24
3654 19e8 991F rol r25
3655 19ea AA1F rol r26
3656 19ec BB1F rol r27
3657 19ee 820F add r24,r18
3658 19f0 931F adc r25,r19
3659 19f2 A41F adc r26,r20
3660 19f4 B51F adc r27,r21
3661 19f6 820F add r24,r18
3662 19f8 931F adc r25,r19
3663 19fa A41F adc r26,r20
3664 19fc B51F adc r27,r21
3665 19fe 9093 0000 sts (Mittelwert_AccNick)+1,r25
3666 1a02 8093 0000 sts Mittelwert_AccNick,r24
3667 1a06 8091 0000 lds r24,AdWertAccRoll
3668 1a0a 9091 0000 lds r25,(AdWertAccRoll)+1
3669 1a0e 9C01 movw r18,r24
3670 1a10 4427 clr r20
3671 1a12 37FD sbrc r19,7
3672 1a14 4095 com r20
3673 1a16 542F mov r21,r20
3674 1a18 DA01 movw r26,r20
3675 1a1a C901 movw r24,r18
3676 1a1c 880F lsl r24
3677 1a1e 991F rol r25
3678 1a20 AA1F rol r26
3679 1a22 BB1F rol r27
3680 1a24 880F lsl r24
3681 1a26 991F rol r25
3682 1a28 AA1F rol r26
3683 1a2a BB1F rol r27
3684 1a2c 820F add r24,r18
3685 1a2e 931F adc r25,r19
3686 1a30 A41F adc r26,r20
3687 1a32 B51F adc r27,r21
3688 1a34 820F add r24,r18
3689 1a36 931F adc r25,r19
3690 1a38 A41F adc r26,r20
3691 1a3a B51F adc r27,r21
3692 1a3c 9093 0000 sts (Mittelwert_AccRoll)+1,r25
3693 1a40 8093 0000 sts Mittelwert_AccRoll,r24
3694 1a44 8091 0000 lds r24,AdWertAccHoch
3695 1a48 9091 0000 lds r25,(AdWertAccHoch)+1
3696 1a4c 9093 0000 sts (Mittelwert_AccHoch)+1,r25
3697 1a50 8093 0000 sts Mittelwert_AccHoch,r24
3698 1a54 8FEC ldi r24,lo8(-49)
3699 1a56 8093 7A00 sts 122,r24
3700 1a5a 8091 0000 lds r24,EE_Parameter+4
3701 1a5e E82F mov r30,r24
3702 1a60 FF27 clr r31
3703 1a62 EE0F add r30,r30
3704 1a64 FF1F adc r31,r31
3705 1a66 E050 subi r30,lo8(-(PPM_in))
3706 1a68 F040 sbci r31,hi8(-(PPM_in))
3707 1a6a 8081 ld r24,Z
3708 1a6c 9181 ldd r25,Z+1
3709 1a6e 8259 subi r24,lo8(-(110))
3710 1a70 9F4F sbci r25,hi8(-(110))
3711 1a72 A091 0000 lds r26,Poti1
3712 1a76 B091 0000 lds r27,(Poti1)+1
3713 1a7a A817 cp r26,r24
3714 1a7c B907 cpc r27,r25
3715 1a7e 04F0 brlt .+2
3716 1a80 00C0 rjmp .L230
3717 1a82 CD01 movw r24,r26
3718 1a84 0196 adiw r24,1
3719 .L254:
3720 1a86 9093 0000 sts (Poti1)+1,r25
3721 1a8a 8093 0000 sts Poti1,r24
3722 1a8e DC01 movw r26,r24
3723 .L231:
3724 1a90 8091 0000 lds r24,EE_Parameter+5
3725 1a94 E82F mov r30,r24
3726 1a96 FF27 clr r31
3727 1a98 EE0F add r30,r30
3728 1a9a FF1F adc r31,r31
3729 1a9c E050 subi r30,lo8(-(PPM_in))
3730 1a9e F040 sbci r31,hi8(-(PPM_in))
3731 1aa0 8081 ld r24,Z
3732 1aa2 9181 ldd r25,Z+1
3733 1aa4 8259 subi r24,lo8(-(110))
3734 1aa6 9F4F sbci r25,hi8(-(110))
3735 1aa8 6091 0000 lds r22,Poti2
3736 1aac 7091 0000 lds r23,(Poti2)+1
3737 1ab0 6817 cp r22,r24
3738 1ab2 7907 cpc r23,r25
3739 1ab4 04F0 brlt .+2
3740 1ab6 00C0 rjmp .L233
3741 1ab8 CB01 movw r24,r22
3742 1aba 0196 adiw r24,1
3743 .L255:
3744 1abc 9093 0000 sts (Poti2)+1,r25
3745 1ac0 8093 0000 sts Poti2,r24
3746 1ac4 BC01 movw r22,r24
3747 .L234:
3748 1ac6 8091 0000 lds r24,EE_Parameter+6
3749 1aca E82F mov r30,r24
3750 1acc FF27 clr r31
3751 1ace EE0F add r30,r30
3752 1ad0 FF1F adc r31,r31
3753 1ad2 E050 subi r30,lo8(-(PPM_in))
3754 1ad4 F040 sbci r31,hi8(-(PPM_in))
3755 1ad6 8081 ld r24,Z
3756 1ad8 9181 ldd r25,Z+1
3757 1ada 8259 subi r24,lo8(-(110))
3758 1adc 9F4F sbci r25,hi8(-(110))
3759 1ade 4091 0000 lds r20,Poti3
3760 1ae2 5091 0000 lds r21,(Poti3)+1
3761 1ae6 4817 cp r20,r24
3762 1ae8 5907 cpc r21,r25
3763 1aea 04F0 brlt .+2
3764 1aec 00C0 rjmp .L236
3765 1aee CA01 movw r24,r20
3766 1af0 0196 adiw r24,1
3767 .L256:
3768 1af2 9093 0000 sts (Poti3)+1,r25
3769 1af6 8093 0000 sts Poti3,r24
3770 1afa AC01 movw r20,r24
3771 .L237:
3772 1afc 8091 0000 lds r24,EE_Parameter+7
3773 1b00 E82F mov r30,r24
3774 1b02 FF27 clr r31
3775 1b04 EE0F add r30,r30
3776 1b06 FF1F adc r31,r31
3777 1b08 E050 subi r30,lo8(-(PPM_in))
3778 1b0a F040 sbci r31,hi8(-(PPM_in))
3779 1b0c 8081 ld r24,Z
3780 1b0e 9181 ldd r25,Z+1
3781 1b10 8259 subi r24,lo8(-(110))
3782 1b12 9F4F sbci r25,hi8(-(110))
3783 1b14 2091 0000 lds r18,Poti4
3784 1b18 3091 0000 lds r19,(Poti4)+1
3785 1b1c 2817 cp r18,r24
3786 1b1e 3907 cpc r19,r25
3787 1b20 04F0 brlt .+2
3788 1b22 00C0 rjmp .L239
3789 1b24 C901 movw r24,r18
3790 1b26 0196 adiw r24,1
3791 .L257:
3792 1b28 9093 0000 sts (Poti4)+1,r25
3793 1b2c 8093 0000 sts Poti4,r24
3794 1b30 9C01 movw r18,r24
3795 .L240:
3796 1b32 B7FD sbrc r27,7
3797 1b34 00C0 rjmp .L259
3798 1b36 AF3F cpi r26,255
3799 1b38 B105 cpc r27,__zero_reg__
3800 1b3a 01F0 breq .+4
3801 1b3c 04F0 brlt .+2
3802 1b3e 00C0 rjmp .L260
3803 .L243:
3804 1b40 77FD sbrc r23,7
3805 1b42 00C0 rjmp .L261
3806 .L245:
3807 1b44 6F3F cpi r22,255
3808 1b46 7105 cpc r23,__zero_reg__
3809 1b48 01F0 breq .L246
3810 1b4a 04F0 brlt .L246
3811 1b4c 8FEF ldi r24,lo8(255)
3812 1b4e 90E0 ldi r25,hi8(255)
3813 1b50 9093 0000 sts (Poti2)+1,r25
3814 1b54 8093 0000 sts Poti2,r24
3815 .L246:
3816 1b58 57FD sbrc r21,7
3817 1b5a 00C0 rjmp .L262
3818 .L248:
3819 1b5c 4F3F cpi r20,255
3820 1b5e 5105 cpc r21,__zero_reg__
3821 1b60 01F0 breq .L249
3822 1b62 04F0 brlt .L249
3823 1b64 8FEF ldi r24,lo8(255)
3824 1b66 90E0 ldi r25,hi8(255)
3825 1b68 9093 0000 sts (Poti3)+1,r25
3826 1b6c 8093 0000 sts Poti3,r24
3827 .L249:
3828 1b70 37FD sbrc r19,7
3829 1b72 00C0 rjmp .L263
3830 .L251:
3831 1b74 2F3F cpi r18,255
3832 1b76 3105 cpc r19,__zero_reg__
3833 1b78 01F0 breq .+2
3834 1b7a 04F4 brge .+2
3835 1b7c 00C0 rjmp .L252
3836 1b7e 8FEF ldi r24,lo8(255)
3837 1b80 90E0 ldi r25,hi8(255)
3838 1b82 9093 0000 sts (Poti4)+1,r25
3839 1b86 8093 0000 sts Poti4,r24
3840 1b8a 00C0 rjmp .L252
3841 .L230:
3842 1b8c 8081 ld r24,Z
3843 1b8e 9181 ldd r25,Z+1
3844 1b90 8259 subi r24,lo8(-(110))
3845 1b92 9F4F sbci r25,hi8(-(110))
3846 1b94 8A17 cp r24,r26
3847 1b96 9B07 cpc r25,r27
3848 1b98 04F0 brlt .+2
3849 1b9a 00C0 rjmp .L231
3850 1b9c 1097 sbiw r26,0
3851 1b9e 01F4 brne .+2
3852 1ba0 00C0 rjmp .L231
3853 1ba2 CD01 movw r24,r26
3854 1ba4 0197 sbiw r24,1
3855 1ba6 00C0 rjmp .L254
3856 .L239:
3857 1ba8 8081 ld r24,Z
3858 1baa 9181 ldd r25,Z+1
3859 1bac 8259 subi r24,lo8(-(110))
3860 1bae 9F4F sbci r25,hi8(-(110))
3861 1bb0 8217 cp r24,r18
3862 1bb2 9307 cpc r25,r19
3863 1bb4 04F0 brlt .+2
3864 1bb6 00C0 rjmp .L240
3865 1bb8 2115 cp r18,__zero_reg__
3866 1bba 3105 cpc r19,__zero_reg__
3867 1bbc 01F4 brne .+2
3868 1bbe 00C0 rjmp .L240
3869 1bc0 C901 movw r24,r18
3870 1bc2 0197 sbiw r24,1
3871 1bc4 00C0 rjmp .L257
3872 .L236:
3873 1bc6 8081 ld r24,Z
3874 1bc8 9181 ldd r25,Z+1
3875 1bca 8259 subi r24,lo8(-(110))
3876 1bcc 9F4F sbci r25,hi8(-(110))
3877 1bce 8417 cp r24,r20
3878 1bd0 9507 cpc r25,r21
3879 1bd2 04F0 brlt .+2
3880 1bd4 00C0 rjmp .L237
3881 1bd6 4115 cp r20,__zero_reg__
3882 1bd8 5105 cpc r21,__zero_reg__
3883 1bda 01F4 brne .+2
3884 1bdc 00C0 rjmp .L237
3885 1bde CA01 movw r24,r20
3886 1be0 0197 sbiw r24,1
3887 1be2 00C0 rjmp .L256
3888 .L233:
3889 1be4 8081 ld r24,Z
3890 1be6 9181 ldd r25,Z+1
3891 1be8 8259 subi r24,lo8(-(110))
3892 1bea 9F4F sbci r25,hi8(-(110))
3893 1bec 8617 cp r24,r22
3894 1bee 9707 cpc r25,r23
3895 1bf0 04F0 brlt .+2
3896 1bf2 00C0 rjmp .L234
3897 1bf4 6115 cp r22,__zero_reg__
3898 1bf6 7105 cpc r23,__zero_reg__
3899 1bf8 01F4 brne .+2
3900 1bfa 00C0 rjmp .L234
3901 1bfc CB01 movw r24,r22
3902 1bfe 0197 sbiw r24,1
3903 1c00 00C0 rjmp .L255
3904 .L260:
3905 1c02 8FEF ldi r24,lo8(255)
3906 1c04 90E0 ldi r25,hi8(255)
3907 1c06 9093 0000 sts (Poti1)+1,r25
3908 1c0a 8093 0000 sts Poti1,r24
3909 1c0e 77FF sbrs r23,7
3910 1c10 00C0 rjmp .L245
3911 .L261:
3912 1c12 1092 0000 sts (Poti2)+1,__zero_reg__
3913 1c16 1092 0000 sts Poti2,__zero_reg__
3914 1c1a 57FF sbrs r21,7
3915 1c1c 00C0 rjmp .L248
3916 .L262:
3917 1c1e 1092 0000 sts (Poti3)+1,__zero_reg__
3918 1c22 1092 0000 sts Poti3,__zero_reg__
3919 1c26 37FF sbrs r19,7
3920 1c28 00C0 rjmp .L251
3921 .L263:
3922 1c2a 1092 0000 sts (Poti4)+1,__zero_reg__
3923 1c2e 1092 0000 sts Poti4,__zero_reg__
3924 1c32 00C0 rjmp .L252
3925 .L259:
3926 1c34 1092 0000 sts (Poti1)+1,__zero_reg__
3927 1c38 1092 0000 sts Poti1,__zero_reg__
3928 1c3c 00C0 rjmp .L243
3929 .L258:
3930 1c3e 0E94 0000 call SucheGyroOffset
3931 1c42 00C0 rjmp .L229
3932 .L252:
3933 1c44 8091 0000 lds r24,EE_Parameter+54
3934 1c48 9927 clr r25
3935 1c4a AA27 clr r26
3936 1c4c BB27 clr r27
3937 1c4e BC01 movw r22,r24
3938 1c50 CD01 movw r24,r26
3939 1c52 24EC ldi r18,lo8(2500)
3940 1c54 39E0 ldi r19,hi8(2500)
3941 1c56 40E0 ldi r20,hlo8(2500)
3942 1c58 50E0 ldi r21,hhi8(2500)
3943 1c5a 0E94 0000 call __mulsi3
3944 1c5e DC01 movw r26,r24
3945 1c60 CB01 movw r24,r22
3946 1c62 8093 0000 sts Umschlag180Nick,r24
3947 1c66 9093 0000 sts (Umschlag180Nick)+1,r25
3948 1c6a A093 0000 sts (Umschlag180Nick)+2,r26
3949 1c6e B093 0000 sts (Umschlag180Nick)+3,r27
3950 1c72 8091 0000 lds r24,EE_Parameter+55
3951 1c76 9927 clr r25
3952 1c78 AA27 clr r26
3953 1c7a BB27 clr r27
3954 1c7c BC01 movw r22,r24
3955 1c7e CD01 movw r24,r26
3956 1c80 0E94 0000 call __mulsi3
3957 1c84 DC01 movw r26,r24
3958 1c86 CB01 movw r24,r22
3959 1c88 8093 0000 sts Umschlag180Roll,r24
3960 1c8c 9093 0000 sts (Umschlag180Roll)+1,r25
3961 1c90 A093 0000 sts (Umschlag180Roll)+2,r26
3962 1c94 B093 0000 sts (Umschlag180Roll)+3,r27
3963 /* epilogue: frame size=0 */
3964 1c98 0895 ret
3965 /* epilogue end (size=1) */
3966 /* function CalibrierMittelwert size 392 (391) */
3968 .global SetNeutral
3970 SetNeutral:
3971 /* prologue: frame size=0 */
3972 1c9a A0E0 ldi r26,lo8(0)
3973 1c9c B0E0 ldi r27,hi8(0)
3974 1c9e E0E0 ldi r30,pm_lo8(1f)
3975 1ca0 F0E0 ldi r31,pm_hi8(1f)
3976 1ca2 0C94 0000 jmp __prologue_saves__+8
3977 1:
3978 /* prologue end (size=6) */
3979 1ca6 C0E0 ldi r28,lo8(0)
3980 1ca8 D0E0 ldi r29,hi8(0)
3981 1caa 7E01 movw r14,r28
3982 1cac 6E01 movw r12,r28
3983 1cae 469A sbi 40-0x20,6
3984 1cb0 D093 0000 sts (NeutralAccX)+1,r29
3985 1cb4 C093 0000 sts NeutralAccX,r28
3986 1cb8 D093 0000 sts (NeutralAccY)+1,r29
3987 1cbc C093 0000 sts NeutralAccY,r28
3988 1cc0 80E0 ldi r24,lo8(0x0)
3989 1cc2 90E0 ldi r25,hi8(0x0)
3990 1cc4 A0E0 ldi r26,hlo8(0x0)
3991 1cc6 B0E0 ldi r27,hhi8(0x0)
3992 1cc8 8093 0000 sts NeutralAccZ,r24
3993 1ccc 9093 0000 sts (NeutralAccZ)+1,r25
3994 1cd0 A093 0000 sts (NeutralAccZ)+2,r26
3995 1cd4 B093 0000 sts (NeutralAccZ)+3,r27
3996 1cd8 D093 0000 sts (AdNeutralNick)+1,r29
3997 1cdc C093 0000 sts AdNeutralNick,r28
3998 1ce0 D093 0000 sts (AdNeutralRoll)+1,r29
3999 1ce4 C093 0000 sts AdNeutralRoll,r28
4000 1ce8 D093 0000 sts (AdNeutralGier)+1,r29
4001 1cec C093 0000 sts AdNeutralGier,r28
4002 1cf0 D093 0000 sts (AdNeutralGierBias)+1,r29
4003 1cf4 C093 0000 sts AdNeutralGierBias,r28
4004 1cf8 1092 0000 sts Parameter_AchsKopplung1,__zero_reg__
4005 1cfc 1092 0000 sts Parameter_AchsKopplung2,__zero_reg__
4006 1d00 1092 0000 sts ExpandBaro,__zero_reg__
4007 1d04 0E94 0000 call CalibrierMittelwert
4008 1d08 84E6 ldi r24,lo8(100)
4009 1d0a 90E0 ldi r25,hi8(100)
4010 1d0c 0E94 0000 call Delay_ms_Mess
4011 1d10 0E94 0000 call CalibrierMittelwert
4012 1d14 8091 0000 lds r24,EE_Parameter+8
4013 1d18 80FF sbrs r24,0
4014 1d1a 00C0 rjmp .L265
4015 1d1c 8091 0000 lds r24,MessLuftdruck
4016 1d20 9091 0000 lds r25,(MessLuftdruck)+1
4017 1d24 875B subi r24,lo8(951)
4018 1d26 9340 sbci r25,hi8(951)
4019 1d28 00F0 brlo .+2
4020 1d2a 00C0 rjmp .L267
4021 1d2c 8091 0000 lds r24,MessLuftdruck
4022 1d30 9091 0000 lds r25,(MessLuftdruck)+1
4023 1d34 8E5E subi r24,lo8(750)
4024 1d36 9240 sbci r25,hi8(750)
4025 1d38 00F4 brsh .+2
4026 1d3a 00C0 rjmp .L267
4027 .L265:
4028 1d3c 0FE1 ldi r16,lo8(31)
4029 .L271:
4030 1d3e 8AE0 ldi r24,lo8(10)
4031 1d40 90E0 ldi r25,hi8(10)
4032 1d42 0E94 0000 call Delay_ms_Mess
4033 1d46 8091 0000 lds r24,AdWertGier
4034 1d4a 9091 0000 lds r25,(AdWertGier)+1
4035 1d4e C80F add r28,r24
4036 1d50 D91F adc r29,r25
4037 1d52 8091 0000 lds r24,AdWertNick
4038 1d56 9091 0000 lds r25,(AdWertNick)+1
4039 1d5a E80E add r14,r24
4040 1d5c F91E adc r15,r25
4041 1d5e 8091 0000 lds r24,AdWertRoll
4042 1d62 9091 0000 lds r25,(AdWertRoll)+1
4043 1d66 C80E add r12,r24
4044 1d68 D91E adc r13,r25
4045 1d6a 0150 subi r16,lo8(-(-1))
4046 1d6c 07FF sbrs r16,7
4047 1d6e 00C0 rjmp .L271
4048 1d70 A701 movw r20,r14
4049 1d72 405F subi r20,lo8(-(16))
4050 1d74 5F4F sbci r21,hi8(-(16))
4051 1d76 5695 lsr r21
4052 1d78 4795 ror r20
4053 1d7a 5695 lsr r21
4054 1d7c 4795 ror r20
4055 1d7e 5093 0000 sts (AdNeutralNick)+1,r21
4056 1d82 4093 0000 sts AdNeutralNick,r20
4057 1d86 9601 movw r18,r12
4058 1d88 205F subi r18,lo8(-(16))
4059 1d8a 3F4F sbci r19,hi8(-(16))
4060 1d8c 3695 lsr r19
4061 1d8e 2795 ror r18
4062 1d90 3695 lsr r19
4063 1d92 2795 ror r18
4064 1d94 3093 0000 sts (AdNeutralRoll)+1,r19
4065 1d98 2093 0000 sts AdNeutralRoll,r18
4066 1d9c CE01 movw r24,r28
4067 1d9e 4096 adiw r24,16
4068 1da0 9695 lsr r25
4069 1da2 8795 ror r24
4070 1da4 9295 swap r25
4071 1da6 8295 swap r24
4072 1da8 8F70 andi r24,0x0f
4073 1daa 8927 eor r24,r25
4074 1dac 9F70 andi r25,0x0f
4075 1dae 8927 eor r24,r25
4076 1db0 9093 0000 sts (AdNeutralGier)+1,r25
4077 1db4 8093 0000 sts AdNeutralGier,r24
4078 1db8 9093 0000 sts (AdNeutralGierBias)+1,r25
4079 1dbc 8093 0000 sts AdNeutralGierBias,r24
4080 1dc0 3093 0000 sts (StartNeutralRoll)+1,r19
4081 1dc4 2093 0000 sts StartNeutralRoll,r18
4082 1dc8 5093 0000 sts (StartNeutralNick)+1,r21
4083 1dcc 4093 0000 sts StartNeutralNick,r20
4084 .L273:
4085 1dd0 F999 sbic 63-0x20,1
4086 1dd2 00C0 rjmp .L273
4087 1dd4 80E0 ldi r24,lo8(EEPromArray+4)
4088 1dd6 90E0 ldi r25,hi8(EEPromArray+4)
4089 1dd8 92BD out (65)+1-0x20,r25
4090 1dda 81BD out 65-0x20,r24
4091 /* #APP */
4092 /* START EEPROM READ CRITICAL SECTION */
4093 1ddc F89A sbi 31, 0
4094 1dde 80B5 in r24, 32
4095 /* END EEPROM READ CRITICAL SECTION */
4096
4097 /* #NOAPP */
4098 1de0 8530 cpi r24,lo8(5)
4099 1de2 00F4 brsh .+2
4100 1de4 00C0 rjmp .L280
4101 1de6 8091 0000 lds r24,Mittelwert_AccRoll
4102 1dea 9091 0000 lds r25,(Mittelwert_AccRoll)+1
4103 1dee 97FD sbrc r25,7
4104 1df0 00C0 rjmp .L308
4105 .L277:
4106 1df2 6CE0 ldi r22,lo8(12)
4107 1df4 70E0 ldi r23,hi8(12)
4108 1df6 0E94 0000 call __divmodhi4
4109 1dfa 7093 0000 sts (NeutralAccY)+1,r23
4110 1dfe 6093 0000 sts NeutralAccY,r22
4111 1e02 8091 0000 lds r24,Mittelwert_AccNick
4112 1e06 9091 0000 lds r25,(Mittelwert_AccNick)+1
4113 1e0a 97FD sbrc r25,7
4114 1e0c 00C0 rjmp .L309
4115 .L278:
4116 1e0e 6CE0 ldi r22,lo8(12)
4117 1e10 70E0 ldi r23,hi8(12)
4118 1e12 0E94 0000 call __divmodhi4
4119 1e16 7093 0000 sts (NeutralAccX)+1,r23
4120 1e1a 6093 0000 sts NeutralAccX,r22
4121 1e1e 8091 0000 lds r24,Aktuell_az
4122 1e22 9091 0000 lds r25,(Aktuell_az)+1
4123 1e26 AA27 clr r26
4124 1e28 97FD sbrc r25,7
4125 1e2a A095 com r26
4126 1e2c BA2F mov r27,r26
4127 .L307:
4128 1e2e BC01 movw r22,r24
4129 1e30 CD01 movw r24,r26
4130 1e32 0E94 0000 call __floatsisf
4131 1e36 DC01 movw r26,r24
4132 1e38 CB01 movw r24,r22
4133 1e3a 8093 0000 sts NeutralAccZ,r24
4134 1e3e 9093 0000 sts (NeutralAccZ)+1,r25
4135 1e42 A093 0000 sts (NeutralAccZ)+2,r26
4136 1e46 B093 0000 sts (NeutralAccZ)+3,r27
4137 1e4a 1092 0000 sts (MesswertNick)+1,__zero_reg__
4138 1e4e 1092 0000 sts MesswertNick,__zero_reg__
4139 1e52 1092 0000 sts (MesswertRoll)+1,__zero_reg__
4140 1e56 1092 0000 sts MesswertRoll,__zero_reg__
4141 1e5a 1092 0000 sts (MesswertGier)+1,__zero_reg__
4142 1e5e 1092 0000 sts MesswertGier,__zero_reg__
4143 1e62 84E6 ldi r24,lo8(100)
4144 1e64 90E0 ldi r25,hi8(100)
4145 1e66 0E94 0000 call Delay_ms_Mess
4146 1e6a 8091 0000 lds r24,AdWertAccNick
4147 1e6e 9091 0000 lds r25,(AdWertAccNick)+1
4148 1e72 AA27 clr r26
4149 1e74 97FD sbrc r25,7
4150 1e76 A095 com r26
4151 1e78 BA2F mov r27,r26
4152 1e7a 9C01 movw r18,r24
4153 1e7c AD01 movw r20,r26
4154 1e7e 220F lsl r18
4155 1e80 331F rol r19
4156 1e82 441F rol r20
4157 1e84 551F rol r21
4158 1e86 220F lsl r18
4159 1e88 331F rol r19
4160 1e8a 441F rol r20
4161 1e8c 551F rol r21
4162 1e8e 280F add r18,r24
4163 1e90 391F adc r19,r25
4164 1e92 4A1F adc r20,r26
4165 1e94 5B1F adc r21,r27
4166 1e96 280F add r18,r24
4167 1e98 391F adc r19,r25
4168 1e9a 4A1F adc r20,r26
4169 1e9c 5B1F adc r21,r27
4170 1e9e 3093 0000 sts (Mittelwert_AccNick)+1,r19
4171 1ea2 2093 0000 sts Mittelwert_AccNick,r18
4172 1ea6 8091 0000 lds r24,AdWertAccRoll
4173 1eaa 9091 0000 lds r25,(AdWertAccRoll)+1
4174 1eae AA27 clr r26
4175 1eb0 97FD sbrc r25,7
4176 1eb2 A095 com r26
4177 1eb4 BA2F mov r27,r26
4178 1eb6 7C01 movw r14,r24
4179 1eb8 8D01 movw r16,r26
4180 1eba EE0C lsl r14
4181 1ebc FF1C rol r15
4182 1ebe 001F rol r16
4183 1ec0 111F rol r17
4184 1ec2 EE0C lsl r14
4185 1ec4 FF1C rol r15
4186 1ec6 001F rol r16
4187 1ec8 111F rol r17
4188 1eca E80E add r14,r24
4189 1ecc F91E adc r15,r25
4190 1ece 0A1F adc r16,r26
4191 1ed0 1B1F adc r17,r27
4192 1ed2 E80E add r14,r24
4193 1ed4 F91E adc r15,r25
4194 1ed6 0A1F adc r16,r26
4195 1ed8 1B1F adc r17,r27
4196 1eda F092 0000 sts (Mittelwert_AccRoll)+1,r15
4197 1ede E092 0000 sts Mittelwert_AccRoll,r14
4198 1ee2 8091 0000 lds r24,EE_Parameter+23
4199 1ee6 682E mov r6,r24
4200 1ee8 7724 clr r7
4201 1eea 8824 clr r8
4202 1eec 9924 clr r9
4203 1eee C901 movw r24,r18
4204 1ef0 9C01 movw r18,r24
4205 1ef2 4427 clr r20
4206 1ef4 37FD sbrc r19,7
4207 1ef6 4095 com r20
4208 1ef8 542F mov r21,r20
4209 1efa C401 movw r24,r8
4210 1efc B301 movw r22,r6
4211 1efe 0E94 0000 call __mulsi3
4212 1f02 5B01 movw r10,r22
4213 1f04 6C01 movw r12,r24
4214 1f06 6093 0000 sts IntegralNick,r22
4215 1f0a 7093 0000 sts (IntegralNick)+1,r23
4216 1f0e 8093 0000 sts (IntegralNick)+2,r24
4217 1f12 9093 0000 sts (IntegralNick)+3,r25
4218 1f16 9701 movw r18,r14
4219 1f18 4427 clr r20
4220 1f1a 37FD sbrc r19,7
4221 1f1c 4095 com r20
4222 1f1e 542F mov r21,r20
4223 1f20 C401 movw r24,r8
4224 1f22 B301 movw r22,r6
4225 1f24 0E94 0000 call __mulsi3
4226 1f28 DC01 movw r26,r24
4227 1f2a CB01 movw r24,r22
4228 1f2c 8093 0000 sts IntegralRoll,r24
4229 1f30 9093 0000 sts (IntegralRoll)+1,r25
4230 1f34 A093 0000 sts (IntegralRoll)+2,r26
4231 1f38 B093 0000 sts (IntegralRoll)+3,r27
4232 1f3c A092 0000 sts Mess_IntegralNick2,r10
4233 1f40 B092 0000 sts (Mess_IntegralNick2)+1,r11
4234 1f44 C092 0000 sts (Mess_IntegralNick2)+2,r12
4235 1f48 D092 0000 sts (Mess_IntegralNick2)+3,r13
4236 1f4c 8093 0000 sts Mess_IntegralRoll2,r24
4237 1f50 9093 0000 sts (Mess_IntegralRoll2)+1,r25
4238 1f54 A093 0000 sts (Mess_IntegralRoll2)+2,r26
4239 1f58 B093 0000 sts (Mess_IntegralRoll2)+3,r27
4240 1f5c 1092 0000 sts Mess_Integral_Gier,__zero_reg__
4241 1f60 1092 0000 sts (Mess_Integral_Gier)+1,__zero_reg__
4242 1f64 1092 0000 sts (Mess_Integral_Gier)+2,__zero_reg__
4243 1f68 1092 0000 sts (Mess_Integral_Gier)+3,__zero_reg__
4244 1f6c 8091 0000 lds r24,Luftdruck
4245 1f70 9091 0000 lds r25,(Luftdruck)+1
4246 1f74 A091 0000 lds r26,(Luftdruck)+2
4247 1f78 B091 0000 lds r27,(Luftdruck)+3
4248 1f7c 9093 0000 sts (StartLuftdruck)+1,r25
4249 1f80 8093 0000 sts StartLuftdruck,r24
4250 1f84 1092 0000 sts (VarioMeter)+1,__zero_reg__
4251 1f88 1092 0000 sts VarioMeter,__zero_reg__
4252 1f8c 1092 0000 sts Mess_Integral_Hoch,__zero_reg__
4253 1f90 1092 0000 sts (Mess_Integral_Hoch)+1,__zero_reg__
4254 1f94 1092 0000 sts (Mess_Integral_Hoch)+2,__zero_reg__
4255 1f98 1092 0000 sts (Mess_Integral_Hoch)+3,__zero_reg__
4256 1f9c 0091 0000 lds r16,KompassValue
4257 1fa0 1091 0000 lds r17,(KompassValue)+1
4258 1fa4 1093 0000 sts (KompassStartwert)+1,r17
4259 1fa8 0093 0000 sts KompassStartwert,r16
4260 1fac 82E3 ldi r24,lo8(50)
4261 1fae 90E0 ldi r25,hi8(50)
4262 1fb0 9093 0000 sts (beeptime)+1,r25
4263 1fb4 8093 0000 sts beeptime,r24
4264 1fb8 8091 0000 lds r24,EE_Parameter+54
4265 1fbc 9927 clr r25
4266 1fbe AA27 clr r26
4267 1fc0 BB27 clr r27
4268 1fc2 BC01 movw r22,r24
4269 1fc4 CD01 movw r24,r26
4270 1fc6 24EC ldi r18,lo8(2500)
4271 1fc8 39E0 ldi r19,hi8(2500)
4272 1fca 40E0 ldi r20,hlo8(2500)
4273 1fcc 50E0 ldi r21,hhi8(2500)
4274 1fce 0E94 0000 call __mulsi3
4275 1fd2 DC01 movw r26,r24
4276 1fd4 CB01 movw r24,r22
4277 1fd6 8856 subi r24,lo8(-(15000))
4278 1fd8 954C sbci r25,hi8(-(15000))
4279 1fda AF4F sbci r26,hlo8(-(15000))
4280 1fdc BF4F sbci r27,hhi8(-(15000))
4281 1fde 8093 0000 sts Umschlag180Nick,r24
4282 1fe2 9093 0000 sts (Umschlag180Nick)+1,r25
4283 1fe6 A093 0000 sts (Umschlag180Nick)+2,r26
4284 1fea B093 0000 sts (Umschlag180Nick)+3,r27
4285 1fee 8091 0000 lds r24,EE_Parameter+55
4286 1ff2 9927 clr r25
4287 1ff4 AA27 clr r26
4288 1ff6 BB27 clr r27
4289 1ff8 BC01 movw r22,r24
4290 1ffa CD01 movw r24,r26
4291 1ffc 0E94 0000 call __mulsi3
4292 2000 DC01 movw r26,r24
4293 2002 CB01 movw r24,r22
4294 2004 8856 subi r24,lo8(-(15000))
4295 2006 954C sbci r25,hi8(-(15000))
4296 2008 AF4F sbci r26,hlo8(-(15000))
4297 200a BF4F sbci r27,hhi8(-(15000))
4298 200c 8093 0000 sts Umschlag180Roll,r24
4299 2010 9093 0000 sts (Umschlag180Roll)+1,r25
4300 2014 A093 0000 sts (Umschlag180Roll)+2,r26
4301 2018 B093 0000 sts (Umschlag180Roll)+3,r27
4302 201c 1092 0000 sts (ExternHoehenValue)+1,__zero_reg__
4303 2020 1092 0000 sts ExternHoehenValue,__zero_reg__
4304 2024 C801 movw r24,r16
4305 2026 AA27 clr r26
4306 2028 97FD sbrc r25,7
4307 202a A095 com r26
4308 202c BA2F mov r27,r26
4309 202e 2091 0000 lds r18,GIER_GRAD_FAKTOR
4310 2032 3091 0000 lds r19,(GIER_GRAD_FAKTOR)+1
4311 2036 4091 0000 lds r20,(GIER_GRAD_FAKTOR)+2
4312 203a 5091 0000 lds r21,(GIER_GRAD_FAKTOR)+3
4313 203e BC01 movw r22,r24
4314 2040 CD01 movw r24,r26
4315 2042 0E94 0000 call __mulsi3
4316 2046 DC01 movw r26,r24
4317 2048 CB01 movw r24,r22
4318 204a 8093 0000 sts ErsatzKompass,r24
4319 204e 9093 0000 sts (ErsatzKompass)+1,r25
4320 2052 A093 0000 sts (ErsatzKompass)+2,r26
4321 2056 B093 0000 sts (ErsatzKompass)+3,r27
4322 205a 1092 0000 sts (GierGyroFehler)+1,__zero_reg__
4323 205e 1092 0000 sts GierGyroFehler,__zero_reg__
4324 2062 81E0 ldi r24,lo8(1)
4325 2064 8093 0000 sts SendVersionToNavi,r24
4326 2068 0E94 0000 call LED_Init
4327 206c 8091 0000 lds r24,MikroKopterFlags
4328 2070 8460 ori r24,lo8(4)
4329 2072 8093 0000 sts MikroKopterFlags,r24
4330 2076 8091 0000 lds r24,EE_Parameter+4
4331 207a E82F mov r30,r24
4332 207c FF27 clr r31
4333 207e EE0F add r30,r30
4334 2080 FF1F adc r31,r31
4335 2082 E050 subi r30,lo8(-(PPM_in))
4336 2084 F040 sbci r31,hi8(-(PPM_in))
4337 2086 8081 ld r24,Z
4338 2088 9181 ldd r25,Z+1
4339 208a 8259 subi r24,lo8(-(110))
4340 208c 9F4F sbci r25,hi8(-(110))
4341 208e 9093 0000 sts (Poti1)+1,r25
4342 2092 8093 0000 sts Poti1,r24
4343 2096 8091 0000 lds r24,EE_Parameter+5
4344 209a E82F mov r30,r24
4345 209c FF27 clr r31
4346 209e EE0F add r30,r30
4347 20a0 FF1F adc r31,r31
4348 20a2 E050 subi r30,lo8(-(PPM_in))
4349 20a4 F040 sbci r31,hi8(-(PPM_in))
4350 20a6 8081 ld r24,Z
4351 20a8 9181 ldd r25,Z+1
4352 20aa 8259 subi r24,lo8(-(110))
4353 20ac 9F4F sbci r25,hi8(-(110))
4354 20ae 9093 0000 sts (Poti2)+1,r25
4355 20b2 8093 0000 sts Poti2,r24
4356 20b6 8091 0000 lds r24,EE_Parameter+6
4357 20ba E82F mov r30,r24
4358 20bc FF27 clr r31
4359 20be EE0F add r30,r30
4360 20c0 FF1F adc r31,r31
4361 20c2 E050 subi r30,lo8(-(PPM_in))
4362 20c4 F040 sbci r31,hi8(-(PPM_in))
4363 20c6 8081 ld r24,Z
4364 20c8 9181 ldd r25,Z+1
4365 20ca 8259 subi r24,lo8(-(110))
4366 20cc 9F4F sbci r25,hi8(-(110))
4367 20ce 9093 0000 sts (Poti3)+1,r25
4368 20d2 8093 0000 sts Poti3,r24
4369 20d6 8091 0000 lds r24,EE_Parameter+7
4370 20da E82F mov r30,r24
4371 20dc FF27 clr r31
4372 20de EE0F add r30,r30
4373 20e0 FF1F adc r31,r31
4374 20e2 E050 subi r30,lo8(-(PPM_in))
4375 20e4 F040 sbci r31,hi8(-(PPM_in))
4376 20e6 8081 ld r24,Z
4377 20e8 9181 ldd r25,Z+1
4378 20ea 8259 subi r24,lo8(-(110))
4379 20ec 9F4F sbci r25,hi8(-(110))
4380 20ee 9093 0000 sts (Poti4)+1,r25
4381 20f2 8093 0000 sts Poti4,r24
4382 20f6 84E6 ldi r24,lo8(100)
4383 20f8 8093 0000 sts SenderOkay,r24
4384 20fc 8091 0000 lds r24,ServoActive
4385 2100 8823 tst r24
4386 2102 01F4 brne .+2
4387 2104 00C0 rjmp .L264
4388 2106 469A sbi 40-0x20,6
4389 2108 579A sbi 42-0x20,7
4390 210a 00C0 rjmp .L264
4391 .L267:
4392 210c 0E94 0000 call SucheLuftruckOffset
4393 2110 00C0 rjmp .L265
4394 .L280:
4395 2112 F999 sbic 63-0x20,1
4396 2114 00C0 rjmp .L280
4397 2116 80E0 ldi r24,lo8(EEPromArray+4)
4398 2118 90E0 ldi r25,hi8(EEPromArray+4)
4399 211a 92BD out (65)+1-0x20,r25
4400 211c 81BD out 65-0x20,r24
4401 /* #APP */
4402 /* START EEPROM READ CRITICAL SECTION */
4403 211e F89A sbi 31, 0
4404 2120 80B5 in r24, 32
4405 /* END EEPROM READ CRITICAL SECTION */
4406
4407 /* #NOAPP */
4408 2122 9927 clr r25
4409 2124 382F mov r19,r24
4410 2126 2227 clr r18
4411 .L284:
4412 2128 F999 sbic 63-0x20,1
4413 212a 00C0 rjmp .L284
4414 212c 80E0 ldi r24,lo8(EEPromArray+5)
4415 212e 90E0 ldi r25,hi8(EEPromArray+5)
4416 2130 92BD out (65)+1-0x20,r25
4417 2132 81BD out 65-0x20,r24
4418 /* #APP */
4419 /* START EEPROM READ CRITICAL SECTION */
4420 2134 F89A sbi 31, 0
4421 2136 80B5 in r24, 32
4422 /* END EEPROM READ CRITICAL SECTION */
4423
4424 /* #NOAPP */
4425 2138 280F add r18,r24
4426 213a 311D adc r19,__zero_reg__
4427 213c 3093 0000 sts (NeutralAccX)+1,r19
4428 2140 2093 0000 sts NeutralAccX,r18
4429 .L288:
4430 2144 F999 sbic 63-0x20,1
4431 2146 00C0 rjmp .L288
4432 2148 80E0 ldi r24,lo8(EEPromArray+6)
4433 214a 90E0 ldi r25,hi8(EEPromArray+6)
4434 214c 92BD out (65)+1-0x20,r25
4435 214e 81BD out 65-0x20,r24
4436 /* #APP */
4437 /* START EEPROM READ CRITICAL SECTION */
4438 2150 F89A sbi 31, 0
4439 2152 80B5 in r24, 32
4440 /* END EEPROM READ CRITICAL SECTION */
4441
4442 /* #NOAPP */
4443 2154 9927 clr r25
4444 2156 382F mov r19,r24
4445 2158 2227 clr r18
4446 .L292:
4447 215a F999 sbic 63-0x20,1
4448 215c 00C0 rjmp .L292
4449 215e 80E0 ldi r24,lo8(EEPromArray+7)
4450 2160 90E0 ldi r25,hi8(EEPromArray+7)
4451 2162 92BD out (65)+1-0x20,r25
4452 2164 81BD out 65-0x20,r24
4453 /* #APP */
4454 /* START EEPROM READ CRITICAL SECTION */
4455 2166 F89A sbi 31, 0
4456 2168 80B5 in r24, 32
4457 /* END EEPROM READ CRITICAL SECTION */
4458
4459 /* #NOAPP */
4460 216a 280F add r18,r24
4461 216c 311D adc r19,__zero_reg__
4462 216e 3093 0000 sts (NeutralAccY)+1,r19
4463 2172 2093 0000 sts NeutralAccY,r18
4464 .L296:
4465 2176 F999 sbic 63-0x20,1
4466 2178 00C0 rjmp .L296
4467 217a 80E0 ldi r24,lo8(EEPromArray+8)
4468 217c 90E0 ldi r25,hi8(EEPromArray+8)
4469 217e 92BD out (65)+1-0x20,r25
4470 2180 81BD out 65-0x20,r24
4471 /* #APP */
4472 /* START EEPROM READ CRITICAL SECTION */
4473 2182 F89A sbi 31, 0
4474 2184 80B5 in r24, 32
4475 /* END EEPROM READ CRITICAL SECTION */
4476
4477 /* #NOAPP */
4478 2186 9927 clr r25
4479 2188 382F mov r19,r24
4480 218a 2227 clr r18
4481 .L300:
4482 218c F999 sbic 63-0x20,1
4483 218e 00C0 rjmp .L300
4484 2190 80E0 ldi r24,lo8(EEPromArray+9)
4485 2192 90E0 ldi r25,hi8(EEPromArray+9)
4486 2194 92BD out (65)+1-0x20,r25
4487 2196 81BD out 65-0x20,r24
4488 /* #APP */
4489 /* START EEPROM READ CRITICAL SECTION */
4490 2198 F89A sbi 31, 0
4491 219a 80B5 in r24, 32
4492 /* END EEPROM READ CRITICAL SECTION */
4493
4494 /* #NOAPP */
4495 219c 280F add r18,r24
4496 219e 311D adc r19,__zero_reg__
4497 21a0 C901 movw r24,r18
4498 21a2 AA27 clr r26
4499 21a4 97FD sbrc r25,7
4500 21a6 A095 com r26
4501 21a8 BA2F mov r27,r26
4502 21aa 00C0 rjmp .L307
4503 .L309:
4504 21ac 9095 com r25
4505 21ae 8195 neg r24
4506 21b0 9F4F sbci r25,lo8(-1)
4507 21b2 00C0 rjmp .L278
4508 .L308:
4509 21b4 9095 com r25
4510 21b6 8195 neg r24
4511 21b8 9F4F sbci r25,lo8(-1)
4512 21ba 00C0 rjmp .L277
4513 .L264:
4514 /* epilogue: frame size=0 */
4515 21bc EEE0 ldi r30,14
4516 21be CDB7 in r28,__SP_L__
4517 21c0 DEB7 in r29,__SP_H__
4518 21c2 0C94 0000 jmp __epilogue_restores__+8
4519 /* epilogue end (size=5) */
4520 /* function SetNeutral size 720 (709) */
4522 .global SendMotorData
4524 SendMotorData:
4525 /* prologue: frame size=0 */
4526 /* prologue end (size=0) */
4527 21c6 9091 0000 lds r25,MotorenEin
4528 21ca 9923 tst r25
4529 21cc 01F4 brne .L311
4530 21ce 8091 0000 lds r24,MikroKopterFlags
4531 21d2 8C7F andi r24,lo8(-4)
4532 21d4 8093 0000 sts MikroKopterFlags,r24
4533 .L316:
4534 21d8 8091 0000 lds r24,PC_MotortestActive
4535 21dc 8823 tst r24
4536 21de 01F4 brne .L321
4537 21e0 A92F mov r26,r25
4538 21e2 BB27 clr r27
4539 21e4 FD01 movw r30,r26
4540 21e6 E050 subi r30,lo8(-(MotorTest))
4541 21e8 F040 sbci r31,hi8(-(MotorTest))
4542 21ea 8083 st Z,r24
4543 .L315:
4544 21ec FD01 movw r30,r26
4545 21ee E050 subi r30,lo8(-(MotorTest))
4546 21f0 F040 sbci r31,hi8(-(MotorTest))
4547 21f2 8081 ld r24,Z
4548 21f4 A050 subi r26,lo8(-(Motor))
4549 21f6 B040 sbci r27,hi8(-(Motor))
4550 21f8 8C93 st X,r24
4551 21fa 9F5F subi r25,lo8(-(1))
4552 21fc 9230 cpi r25,lo8(2)
4553 21fe 00F0 brlo .L316
4554 2200 8091 0000 lds r24,PC_MotortestActive
4555 2204 8823 tst r24
4556 2206 01F0 breq .L318
4557 2208 8091 0000 lds r24,PC_MotortestActive
4558 220c 8150 subi r24,lo8(-(-1))
4559 220e 8093 0000 sts PC_MotortestActive,r24
4560 2212 00C0 rjmp .L318
4561 .L311:
4562 2214 8091 0000 lds r24,MikroKopterFlags
4563 2218 8160 ori r24,lo8(1)
4564 221a 8093 0000 sts MikroKopterFlags,r24
4565 221e 00C0 rjmp .L318
4566 .L321:
4567 2220 A92F mov r26,r25
4568 2222 BB27 clr r27
4569 2224 00C0 rjmp .L315
4570 .L318:
4571 2226 8091 0000 lds r24,Motor
4572 222a 9927 clr r25
4573 222c 9093 0000 sts (DebugOut+26)+1,r25
4574 2230 8093 0000 sts DebugOut+26,r24
4575 2234 8091 0000 lds r24,Motor+1
4576 2238 9927 clr r25
4577 223a 9093 0000 sts (DebugOut+28)+1,r25
4578 223e 8093 0000 sts DebugOut+28,r24
4579 2242 1092 0000 sts twi_state,__zero_reg__
4580 2246 1092 0000 sts motor,__zero_reg__
4581 224a 0E94 0000 call i2c_start
4582 /* epilogue: frame size=0 */
4583 224e 0895 ret
4584 /* epilogue end (size=1) */
4585 /* function SendMotorData size 69 (68) */
4587 .global ParameterZuordnung
4589 ParameterZuordnung:
4590 /* prologue: frame size=0 */
4591 /* prologue end (size=0) */
4592 2250 8091 0000 lds r24,EE_Parameter+11
4593 2254 8B3F cpi r24,lo8(-5)
4594 2256 00F0 brlo .L323
4595 2258 8B3F cpi r24,lo8(-5)
4596 225a 01F4 brne .+2
4597 225c 00C0 rjmp .L619
4598 225e 8C3F cpi r24,lo8(-4)
4599 2260 01F4 brne .+2
4600 2262 00C0 rjmp .L620
4601 2264 8D3F cpi r24,lo8(-3)
4602 2266 01F4 brne .+2
4603 2268 00C0 rjmp .L621
4604 226a 8E3F cpi r24,lo8(-2)
4605 226c 01F4 brne .L331
4606 226e 8091 0000 lds r24,Poti4
4607 .L323:
4608 2272 8093 0000 sts Parameter_MaxHoehe,r24
4609 .L331:
4610 2276 8091 0000 lds r24,EE_Parameter+10
4611 227a 8B3F cpi r24,lo8(-5)
4612 227c 00F4 brsh .+2
4613 227e 00C0 rjmp .L332
4614 2280 8B3F cpi r24,lo8(-5)
4615 2282 01F4 brne .+2
4616 2284 00C0 rjmp .L622
4617 2286 8C3F cpi r24,lo8(-4)
4618 2288 01F4 brne .+2
4619 228a 00C0 rjmp .L623
4620 228c 8D3F cpi r24,lo8(-3)
4621 228e 01F4 brne .+2
4622 2290 00C0 rjmp .L624
4623 2292 8E3F cpi r24,lo8(-2)
4624 2294 01F4 brne .+2
4625 2296 00C0 rjmp .L625
4626 2298 8091 0000 lds r24,Parameter_Luftdruck_D
4627 229c 8823 tst r24
4628 229e 01F0 breq .+2
4629 22a0 00C0 rjmp .L626
4630 .L614:
4631 22a2 8093 0000 sts Parameter_Luftdruck_D,r24
4632 .L342:
4633 22a6 8091 0000 lds r24,EE_Parameter+12
4634 22aa 8B3F cpi r24,lo8(-5)
4635 22ac 00F4 brsh .+2
4636 22ae 00C0 rjmp .L344
4637 22b0 8B3F cpi r24,lo8(-5)
4638 22b2 01F4 brne .+2
4639 22b4 00C0 rjmp .L627
4640 22b6 8C3F cpi r24,lo8(-4)
4641 22b8 01F4 brne .+2
4642 22ba 00C0 rjmp .L628
4643 22bc 8D3F cpi r24,lo8(-3)
4644 22be 01F4 brne .+2
4645 22c0 00C0 rjmp .L629
4646 22c2 8E3F cpi r24,lo8(-2)
4647 22c4 01F4 brne .+2
4648 22c6 00C0 rjmp .L630
4649 22c8 8091 0000 lds r24,Parameter_Hoehe_P
4650 22cc 8823 tst r24
4651 22ce 01F0 breq .+2
4652 22d0 00C0 rjmp .L631
4653 .L615:
4654 22d2 8093 0000 sts Parameter_Hoehe_P,r24
4655 .L354:
4656 22d6 8091 0000 lds r24,EE_Parameter+14
4657 22da 8B3F cpi r24,lo8(-5)
4658 22dc 00F0 brlo .L356
4659 22de 8B3F cpi r24,lo8(-5)
4660 22e0 01F4 brne .+2
4661 22e2 00C0 rjmp .L632
4662 22e4 8C3F cpi r24,lo8(-4)
4663 22e6 01F4 brne .+2
4664 22e8 00C0 rjmp .L633
4665 22ea 8D3F cpi r24,lo8(-3)
4666 22ec 01F4 brne .+2
4667 22ee 00C0 rjmp .L634
4668 22f0 8E3F cpi r24,lo8(-2)
4669 22f2 01F4 brne .L364
4670 22f4 8091 0000 lds r24,Poti4
4671 .L356:
4672 22f8 8093 0000 sts Parameter_Hoehe_ACC_Wirkung,r24
4673 .L364:
4674 22fc 8091 0000 lds r24,EE_Parameter+16
4675 2300 8B3F cpi r24,lo8(-5)
4676 2302 00F0 brlo .L365
4677 2304 8B3F cpi r24,lo8(-5)
4678 2306 01F4 brne .+2
4679 2308 00C0 rjmp .L635
4680 230a 8C3F cpi r24,lo8(-4)
4681 230c 01F4 brne .+2
4682 230e 00C0 rjmp .L636
4683 2310 8D3F cpi r24,lo8(-3)
4684 2312 01F4 brne .+2
4685 2314 00C0 rjmp .L637
4686 2316 8E3F cpi r24,lo8(-2)
4687 2318 01F4 brne .L373
4688 231a 8091 0000 lds r24,Poti4
4689 .L365:
4690 231e 8093 0000 sts Parameter_Hoehe_GPS_Z,r24
4691 .L373:
4692 2322 8091 0000 lds r24,EE_Parameter+24
4693 2326 8B3F cpi r24,lo8(-5)
4694 2328 00F0 brlo .L374
4695 232a 8B3F cpi r24,lo8(-5)
4696 232c 01F4 brne .+2
4697 232e 00C0 rjmp .L638
4698 2330 8C3F cpi r24,lo8(-4)
4699 2332 01F4 brne .+2
4700 2334 00C0 rjmp .L639
4701 2336 8D3F cpi r24,lo8(-3)
4702 2338 01F4 brne .+2
4703 233a 00C0 rjmp .L640
4704 233c 8E3F cpi r24,lo8(-2)
4705 233e 01F4 brne .L382
4706 2340 8091 0000 lds r24,Poti4
4707 .L374:
4708 2344 8093 0000 sts Parameter_KompassWirkung,r24
4709 .L382:
4710 2348 8091 0000 lds r24,EE_Parameter+25
4711 234c 8B3F cpi r24,lo8(-5)
4712 234e 00F4 brsh .+2
4713 2350 00C0 rjmp .L383
4714 2352 8B3F cpi r24,lo8(-5)
4715 2354 01F4 brne .+2
4716 2356 00C0 rjmp .L641
4717 2358 8C3F cpi r24,lo8(-4)
4718 235a 01F4 brne .+2
4719 235c 00C0 rjmp .L642
4720 235e 8D3F cpi r24,lo8(-3)
4721 2360 01F4 brne .+2
4722 2362 00C0 rjmp .L643
4723 2364 8E3F cpi r24,lo8(-2)
4724 2366 01F4 brne .+2
4725 2368 00C0 rjmp .L644
4726 236a 8091 0000 lds r24,Parameter_Gyro_P
4727 236e 8B30 cpi r24,lo8(11)
4728 2370 00F4 brsh .+2
4729 2372 00C0 rjmp .L645
4730 .L392:
4731 2374 8F3F cpi r24,lo8(-1)
4732 2376 01F4 brne .L393
4733 .L616:
4734 2378 8093 0000 sts Parameter_Gyro_P,r24
4735 .L393:
4736 237c 8091 0000 lds r24,EE_Parameter+26
4737 2380 8B3F cpi r24,lo8(-5)
4738 2382 00F0 brlo .L395
4739 2384 8B3F cpi r24,lo8(-5)
4740 2386 01F4 brne .+2
4741 2388 00C0 rjmp .L646
4742 238a 8C3F cpi r24,lo8(-4)
4743 238c 01F4 brne .+2
4744 238e 00C0 rjmp .L647
4745 2390 8D3F cpi r24,lo8(-3)
4746 2392 01F4 brne .+2
4747 2394 00C0 rjmp .L648
4748 2396 8E3F cpi r24,lo8(-2)
4749 2398 01F4 brne .L403
4750 239a 8091 0000 lds r24,Poti4
4751 .L395:
4752 239e 8093 0000 sts Parameter_Gyro_I,r24
4753 .L403:
4754 23a2 8091 0000 lds r24,EE_Parameter+27
4755 23a6 8B3F cpi r24,lo8(-5)
4756 23a8 00F0 brlo .L404
4757 23aa 8B3F cpi r24,lo8(-5)
4758 23ac 01F4 brne .+2
4759 23ae 00C0 rjmp .L649
4760 23b0 8C3F cpi r24,lo8(-4)
4761 23b2 01F4 brne .+2
4762 23b4 00C0 rjmp .L650
4763 23b6 8D3F cpi r24,lo8(-3)
4764 23b8 01F4 brne .+2
4765 23ba 00C0 rjmp .L651
4766 23bc 8E3F cpi r24,lo8(-2)
4767 23be 01F4 brne .L412
4768 23c0 8091 0000 lds r24,Poti4
4769 .L404:
4770 23c4 8093 0000 sts Parameter_Gyro_D,r24
4771 .L412:
4772 23c8 8091 0000 lds r24,EE_Parameter+28
4773 23cc 8B3F cpi r24,lo8(-5)
4774 23ce 00F0 brlo .L413
4775 23d0 8B3F cpi r24,lo8(-5)
4776 23d2 01F4 brne .+2
4777 23d4 00C0 rjmp .L652
4778 23d6 8C3F cpi r24,lo8(-4)
4779 23d8 01F4 brne .+2
4780 23da 00C0 rjmp .L653
4781 23dc 8D3F cpi r24,lo8(-3)
4782 23de 01F4 brne .+2
4783 23e0 00C0 rjmp .L654
4784 23e2 8E3F cpi r24,lo8(-2)
4785 23e4 01F4 brne .L421
4786 23e6 8091 0000 lds r24,Poti4
4787 .L413:
4788 23ea 8093 0000 sts Parameter_Gyro_Gier_P,r24
4789 .L421:
4790 23ee 8091 0000 lds r24,EE_Parameter+29
4791 23f2 8B3F cpi r24,lo8(-5)
4792 23f4 00F0 brlo .L422
4793 23f6 8B3F cpi r24,lo8(-5)
4794 23f8 01F4 brne .+2
4795 23fa 00C0 rjmp .L655
4796 23fc 8C3F cpi r24,lo8(-4)
4797 23fe 01F4 brne .+2
4798 2400 00C0 rjmp .L656
4799 2402 8D3F cpi r24,lo8(-3)
4800 2404 01F4 brne .+2
4801 2406 00C0 rjmp .L657
4802 2408 8E3F cpi r24,lo8(-2)
4803 240a 01F4 brne .L430
4804 240c 8091 0000 lds r24,Poti4
4805 .L422:
4806 2410 8093 0000 sts Parameter_Gyro_Gier_I,r24
4807 .L430:
4808 2414 2091 0000 lds r18,EE_Parameter+34
4809 2418 2B3F cpi r18,lo8(-5)
4810 241a 00F4 brsh .+2
4811 241c 00C0 rjmp .L431
4812 241e 2B3F cpi r18,lo8(-5)
4813 2420 01F4 brne .+2
4814 2422 00C0 rjmp .L658
4815 2424 2C3F cpi r18,lo8(-4)
4816 2426 01F4 brne .+2
4817 2428 00C0 rjmp .L659
4818 242a 2D3F cpi r18,lo8(-3)
4819 242c 01F4 brne .+2
4820 242e 00C0 rjmp .L660
4821 2430 2E3F cpi r18,lo8(-2)
4822 2432 01F4 brne .+2
4823 2434 00C0 rjmp .L661
4824 2436 2091 0000 lds r18,Parameter_I_Faktor
4825 243a 8091 0000 lds r24,EE_Parameter+35
4826 243e 8B3F cpi r24,lo8(-5)
4827 2440 00F0 brlo .+2
4828 2442 00C0 rjmp .L662
4829 .L440:
4830 2444 8093 0000 sts Parameter_UserParam1,r24
4831 .L448:
4832 2448 8091 0000 lds r24,EE_Parameter+36
4833 244c 8B3F cpi r24,lo8(-5)
4834 244e 00F0 brlo .L449
4835 2450 8B3F cpi r24,lo8(-5)
4836 2452 01F4 brne .+2
4837 2454 00C0 rjmp .L663
4838 2456 8C3F cpi r24,lo8(-4)
4839 2458 01F4 brne .+2
4840 245a 00C0 rjmp .L664
4841 245c 8D3F cpi r24,lo8(-3)
4842 245e 01F4 brne .+2
4843 2460 00C0 rjmp .L665
4844 2462 8E3F cpi r24,lo8(-2)
4845 2464 01F4 brne .L457
4846 2466 8091 0000 lds r24,Poti4
4847 .L449:
4848 246a 8093 0000 sts Parameter_UserParam2,r24
4849 .L457:
4850 246e 8091 0000 lds r24,EE_Parameter+37
4851 2472 8B3F cpi r24,lo8(-5)
4852 2474 00F0 brlo .L458
4853 2476 8B3F cpi r24,lo8(-5)
4854 2478 01F4 brne .+2
4855 247a 00C0 rjmp .L666
4856 247c 8C3F cpi r24,lo8(-4)
4857 247e 01F4 brne .+2
4858 2480 00C0 rjmp .L667
4859 2482 8D3F cpi r24,lo8(-3)
4860 2484 01F4 brne .+2
4861 2486 00C0 rjmp .L668
4862 2488 8E3F cpi r24,lo8(-2)
4863 248a 01F4 brne .L466
4864 248c 8091 0000 lds r24,Poti4
4865 .L458:
4866 2490 8093 0000 sts Parameter_UserParam3,r24
4867 .L466:
4868 2494 8091 0000 lds r24,EE_Parameter+38
4869 2498 8B3F cpi r24,lo8(-5)
4870 249a 00F0 brlo .L467
4871 249c 8B3F cpi r24,lo8(-5)
4872 249e 01F4 brne .+2
4873 24a0 00C0 rjmp .L669
4874 24a2 8C3F cpi r24,lo8(-4)
4875 24a4 01F4 brne .+2
4876 24a6 00C0 rjmp .L670
4877 24a8 8D3F cpi r24,lo8(-3)
4878 24aa 01F4 brne .+2
4879 24ac 00C0 rjmp .L671
4880 24ae 8E3F cpi r24,lo8(-2)
4881 24b0 01F4 brne .L475
4882 24b2 8091 0000 lds r24,Poti4
4883 .L467:
4884 24b6 8093 0000 sts Parameter_UserParam4,r24
4885 .L475:
4886 24ba 8091 0000 lds r24,EE_Parameter+59
4887 24be 8B3F cpi r24,lo8(-5)
4888 24c0 00F0 brlo .L476
4889 24c2 8B3F cpi r24,lo8(-5)
4890 24c4 01F4 brne .+2
4891 24c6 00C0 rjmp .L672
4892 24c8 8C3F cpi r24,lo8(-4)
4893 24ca 01F4 brne .+2
4894 24cc 00C0 rjmp .L673
4895 24ce 8D3F cpi r24,lo8(-3)
4896 24d0 01F4 brne .+2
4897 24d2 00C0 rjmp .L674
4898 24d4 8E3F cpi r24,lo8(-2)
4899 24d6 01F4 brne .L484
4900 24d8 8091 0000 lds r24,Poti4
4901 .L476:
4902 24dc 8093 0000 sts Parameter_UserParam5,r24
4903 .L484:
4904 24e0 8091 0000 lds r24,EE_Parameter+60
4905 24e4 8B3F cpi r24,lo8(-5)
4906 24e6 00F0 brlo .L485
4907 24e8 8B3F cpi r24,lo8(-5)
4908 24ea 01F4 brne .+2
4909 24ec 00C0 rjmp .L675
4910 24ee 8C3F cpi r24,lo8(-4)
4911 24f0 01F4 brne .+2
4912 24f2 00C0 rjmp .L676
4913 24f4 8D3F cpi r24,lo8(-3)
4914 24f6 01F4 brne .+2
4915 24f8 00C0 rjmp .L677
4916 24fa 8E3F cpi r24,lo8(-2)
4917 24fc 01F4 brne .L493
4918 24fe 8091 0000 lds r24,Poti4
4919 .L485:
4920 2502 8093 0000 sts Parameter_UserParam6,r24
4921 .L493:
4922 2506 8091 0000 lds r24,EE_Parameter+61
4923 250a 8B3F cpi r24,lo8(-5)
4924 250c 00F0 brlo .L494
4925 250e 8B3F cpi r24,lo8(-5)
4926 2510 01F4 brne .+2
4927 2512 00C0 rjmp .L678
4928 2514 8C3F cpi r24,lo8(-4)
4929 2516 01F4 brne .+2
4930 2518 00C0 rjmp .L679
4931 251a 8D3F cpi r24,lo8(-3)
4932 251c 01F4 brne .+2
4933 251e 00C0 rjmp .L680
4934 2520 8E3F cpi r24,lo8(-2)
4935 2522 01F4 brne .L502
4936 2524 8091 0000 lds r24,Poti4
4937 .L494:
4938 2528 8093 0000 sts Parameter_UserParam7,r24
4939 .L502:
4940 252c 8091 0000 lds r24,EE_Parameter+62
4941 2530 8B3F cpi r24,lo8(-5)
4942 2532 00F0 brlo .L503
4943 2534 8B3F cpi r24,lo8(-5)
4944 2536 01F4 brne .+2
4945 2538 00C0 rjmp .L681
4946 253a 8C3F cpi r24,lo8(-4)
4947 253c 01F4 brne .+2
4948 253e 00C0 rjmp .L682
4949 2540 8D3F cpi r24,lo8(-3)
4950 2542 01F4 brne .+2
4951 2544 00C0 rjmp .L683
4952 2546 8E3F cpi r24,lo8(-2)
4953 2548 01F4 brne .L511
4954 254a 8091 0000 lds r24,Poti4
4955 .L503:
4956 254e 8093 0000 sts Parameter_UserParam8,r24
4957 .L511:
4958 2552 8091 0000 lds r24,EE_Parameter+39
4959 2556 8B3F cpi r24,lo8(-5)
4960 2558 00F0 brlo .L512
4961 255a 8B3F cpi r24,lo8(-5)
4962 255c 01F4 brne .+2
4963 255e 00C0 rjmp .L684
4964 2560 8C3F cpi r24,lo8(-4)
4965 2562 01F4 brne .+2
4966 2564 00C0 rjmp .L685
4967 2566 8D3F cpi r24,lo8(-3)
4968 2568 01F4 brne .+2
4969 256a 00C0 rjmp .L686
4970 256c 8E3F cpi r24,lo8(-2)
4971 256e 01F4 brne .L520
4972 2570 8091 0000 lds r24,Poti4
4973 .L512:
4974 2574 8093 0000 sts Parameter_ServoNickControl,r24
4975 .L520:
4976 2578 8091 0000 lds r24,EE_Parameter+43
4977 257c 8B3F cpi r24,lo8(-5)
4978 257e 00F0 brlo .L521
4979 2580 8B3F cpi r24,lo8(-5)
4980 2582 01F4 brne .+2
4981 2584 00C0 rjmp .L687
4982 2586 8C3F cpi r24,lo8(-4)
4983 2588 01F4 brne .+2
4984 258a 00C0 rjmp .L688
4985 258c 8D3F cpi r24,lo8(-3)
4986 258e 01F4 brne .+2
4987 2590 00C0 rjmp .L689
4988 2592 8E3F cpi r24,lo8(-2)
4989 2594 01F4 brne .L529
4990 2596 8091 0000 lds r24,Poti4
4991 .L521:
4992 259a 8093 0000 sts Parameter_ServoRollControl,r24
4993 .L529:
4994 259e 8091 0000 lds r24,EE_Parameter+48
4995 25a2 8B3F cpi r24,lo8(-5)
4996 25a4 00F0 brlo .L530
4997 25a6 8B3F cpi r24,lo8(-5)
4998 25a8 01F4 brne .+2
4999 25aa 00C0 rjmp .L690
5000 25ac 8C3F cpi r24,lo8(-4)
5001 25ae 01F4 brne .+2
5002 25b0 00C0 rjmp .L691
5003 25b2 8D3F cpi r24,lo8(-3)
5004 25b4 01F4 brne .+2
5005 25b6 00C0 rjmp .L692
5006 25b8 8E3F cpi r24,lo8(-2)
5007 25ba 01F4 brne .L538
5008 25bc 8091 0000 lds r24,Poti4
5009 .L530:
5010 25c0 8093 0000 sts Parameter_LoopGasLimit,r24
5011 .L538:
5012 25c4 8091 0000 lds r24,EE_Parameter+51
5013 25c8 8B3F cpi r24,lo8(-5)
5014 25ca 00F0 brlo .L539
5015 25cc 8B3F cpi r24,lo8(-5)
5016 25ce 01F4 brne .+2
5017 25d0 00C0 rjmp .L693
5018 25d2 8C3F cpi r24,lo8(-4)
5019 25d4 01F4 brne .+2
5020 25d6 00C0 rjmp .L694
5021 25d8 8D3F cpi r24,lo8(-3)
5022 25da 01F4 brne .+2
5023 25dc 00C0 rjmp .L695
5024 25de 8E3F cpi r24,lo8(-2)
5025 25e0 01F4 brne .L547
5026 25e2 8091 0000 lds r24,Poti4
5027 .L539:
5028 25e6 8093 0000 sts Parameter_AchsKopplung1,r24
5029 .L547:
5030 25ea 8091 0000 lds r24,EE_Parameter+52
5031 25ee 8B3F cpi r24,lo8(-5)
5032 25f0 00F0 brlo .L548
5033 25f2 8B3F cpi r24,lo8(-5)
5034 25f4 01F4 brne .+2
5035 25f6 00C0 rjmp .L696
5036 25f8 8C3F cpi r24,lo8(-4)
5037 25fa 01F4 brne .+2
5038 25fc 00C0 rjmp .L697
5039 25fe 8D3F cpi r24,lo8(-3)
5040 2600 01F4 brne .+2
5041 2602 00C0 rjmp .L698
5042 2604 8E3F cpi r24,lo8(-2)
5043 2606 01F4 brne .L556
5044 2608 8091 0000 lds r24,Poti4
5045 .L548:
5046 260c 8093 0000 sts Parameter_AchsKopplung2,r24
5047 .L556:
5048 2610 8091 0000 lds r24,EE_Parameter+53
5049 2614 8B3F cpi r24,lo8(-5)
5050 2616 00F0 brlo .L557
5051 2618 8B3F cpi r24,lo8(-5)
5052 261a 01F4 brne .+2
5053 261c 00C0 rjmp .L699
5054 261e 8C3F cpi r24,lo8(-4)
5055 2620 01F4 brne .+2
5056 2622 00C0 rjmp .L700
5057 2624 8D3F cpi r24,lo8(-3)
5058 2626 01F4 brne .+2
5059 2628 00C0 rjmp .L701
5060 262a 8E3F cpi r24,lo8(-2)
5061 262c 01F4 brne .L565
5062 262e 8091 0000 lds r24,Poti4
5063 .L557:
5064 2632 8093 0000 sts Parameter_CouplingYawCorrection,r24
5065 .L565:
5066 2636 8091 0000 lds r24,EE_Parameter+58
5067 263a 8B3F cpi r24,lo8(-5)
5068 263c 00F0 brlo .L566
5069 263e 8B3F cpi r24,lo8(-5)
5070 2640 01F4 brne .+2
5071 2642 00C0 rjmp .L702
5072 2644 8C3F cpi r24,lo8(-4)
5073 2646 01F4 brne .+2
5074 2648 00C0 rjmp .L703
5075 264a 8D3F cpi r24,lo8(-3)
5076 264c 01F4 brne .+2
5077 264e 00C0 rjmp .L704
5078 2650 8E3F cpi r24,lo8(-2)
5079 2652 01F4 brne .L574
5080 2654 8091 0000 lds r24,Poti4
5081 .L566:
5082 2658 8093 0000 sts Parameter_DynamicStability,r24
5083 .L574:
5084 265c 8091 0000 lds r24,EE_Parameter+64
5085 2660 8B3F cpi r24,lo8(-5)
5086 2662 00F4 brsh .+2
5087 2664 00C0 rjmp .L575
5088 2666 8B3F cpi r24,lo8(-5)
5089 2668 01F4 brne .+2
5090 266a 00C0 rjmp .L705
5091 266c 8C3F cpi r24,lo8(-4)
5092 266e 01F4 brne .+2
5093 2670 00C0 rjmp .L706
5094 2672 8D3F cpi r24,lo8(-3)
5095 2674 01F4 brne .+2
5096 2676 00C0 rjmp .L707
5097 2678 8E3F cpi r24,lo8(-2)
5098 267a 01F4 brne .+2
5099 267c 00C0 rjmp .L708
5100 267e 8091 0000 lds r24,Parameter_J16Timing
5101 2682 8230 cpi r24,lo8(2)
5102 2684 00F4 brsh .+2
5103 2686 00C0 rjmp .L709
5104 .L584:
5105 2688 8F3F cpi r24,lo8(-1)
5106 268a 01F4 brne .L585
5107 .L617:
5108 268c 8093 0000 sts Parameter_J16Timing,r24
5109 .L585:
5110 2690 8091 0000 lds r24,EE_Parameter+66
5111 2694 8B3F cpi r24,lo8(-5)
5112 2696 00F4 brsh .+2
5113 2698 00C0 rjmp .L587
5114 269a 8B3F cpi r24,lo8(-5)
5115 269c 01F4 brne .+2
5116 269e 00C0 rjmp .L710
5117 26a0 8C3F cpi r24,lo8(-4)
5118 26a2 01F4 brne .+2
5119 26a4 00C0 rjmp .L711
5120 26a6 8D3F cpi r24,lo8(-3)
5121 26a8 01F4 brne .+2
5122 26aa 00C0 rjmp .L712
5123 26ac 8E3F cpi r24,lo8(-2)
5124 26ae 01F4 brne .+2
5125 26b0 00C0 rjmp .L713
5126 26b2 8091 0000 lds r24,Parameter_J17Timing
5127 26b6 8230 cpi r24,lo8(2)
5128 26b8 00F4 brsh .+2
5129 26ba 00C0 rjmp .L714
5130 .L596:
5131 26bc 8F3F cpi r24,lo8(-1)
5132 26be 01F4 brne .L597
5133 .L618:
5134 26c0 8093 0000 sts Parameter_J17Timing,r24
5135 .L597:
5136 26c4 8091 0000 lds r24,EE_Parameter+85
5137 26c8 8B3F cpi r24,lo8(-5)
5138 26ca 00F0 brlo .L599
5139 26cc 8B3F cpi r24,lo8(-5)
5140 26ce 01F4 brne .+2
5141 26d0 00C0 rjmp .L715
5142 26d2 8C3F cpi r24,lo8(-4)
5143 26d4 01F4 brne .+2
5144 26d6 00C0 rjmp .L716
5145 26d8 8D3F cpi r24,lo8(-3)
5146 26da 01F4 brne .+2
5147 26dc 00C0 rjmp .L717
5148 26de 8E3F cpi r24,lo8(-2)
5149 26e0 01F0 breq .+2
5150 26e2 00C0 rjmp .L607
5151 26e4 8091 0000 lds r24,Poti4
5152 .L599:
5153 26e8 8093 0000 sts Parameter_ExternalControl,r24
5154 26ec 00C0 rjmp .L607
5155 .L622:
5156 26ee 8091 0000 lds r24,Poti1
5157 .L332:
5158 26f2 8093 0000 sts Parameter_Luftdruck_D,r24
5159 26f6 8823 tst r24
5160 26f8 01F4 brne .+2
5161 26fa 00C0 rjmp .L614
5162 .L626:
5163 26fc 8436 cpi r24,lo8(100)
5164 26fe 00F4 brsh .+2
5165 2700 00C0 rjmp .L342
5166 2702 84E6 ldi r24,lo8(100)
5167 2704 00C0 rjmp .L614
5168 .L627:
5169 2706 8091 0000 lds r24,Poti1
5170 .L344:
5171 270a 8093 0000 sts Parameter_Hoehe_P,r24
5172 270e 8823 tst r24
5173 2710 01F4 brne .+2
5174 2712 00C0 rjmp .L615
5175 .L631:
5176 2714 8436 cpi r24,lo8(100)
5177 2716 00F4 brsh .+2
5178 2718 00C0 rjmp .L354
5179 271a 84E6 ldi r24,lo8(100)
5180 271c 00C0 rjmp .L615
5181 .L641:
5182 271e 8091 0000 lds r24,Poti1
5183 .L383:
5184 2722 8093 0000 sts Parameter_Gyro_P,r24
5185 2726 8B30 cpi r24,lo8(11)
5186 2728 00F0 brlo .+2
5187 272a 00C0 rjmp .L392
5188 .L645:
5189 272c 8AE0 ldi r24,lo8(10)
5190 272e 00C0 rjmp .L616
5191 .L658:
5192 2730 2091 0000 lds r18,Poti1
5193 .L431:
5194 2734 2093 0000 sts Parameter_I_Faktor,r18
5195 2738 8091 0000 lds r24,EE_Parameter+35
5196 273c 8B3F cpi r24,lo8(-5)
5197 273e 00F4 brsh .+2
5198 2740 00C0 rjmp .L440
5199 .L662:
5200 2742 8B3F cpi r24,lo8(-5)
5201 2744 01F4 brne .+2
5202 2746 00C0 rjmp .L718
5203 2748 8C3F cpi r24,lo8(-4)
5204 274a 01F4 brne .+2
5205 274c 00C0 rjmp .L719
5206 274e 8D3F cpi r24,lo8(-3)
5207 2750 01F4 brne .+2
5208 2752 00C0 rjmp .L720
5209 2754 8E3F cpi r24,lo8(-2)
5210 2756 01F0 breq .+2
5211 2758 00C0 rjmp .L448
5212 275a 8091 0000 lds r24,Poti4
5213 275e 00C0 rjmp .L440
5214 .L705:
5215 2760 8091 0000 lds r24,Poti1
5216 .L575:
5217 2764 8093 0000 sts Parameter_J16Timing,r24
5218 2768 8230 cpi r24,lo8(2)
5219 276a 00F0 brlo .+2
5220 276c 00C0 rjmp .L584
5221 .L709:
5222 276e 81E0 ldi r24,lo8(1)
5223 2770 00C0 rjmp .L617
5224 .L710:
5225 2772 8091 0000 lds r24,Poti1
5226 .L587:
5227 2776 8093 0000 sts Parameter_J17Timing,r24
5228 277a 8230 cpi r24,lo8(2)
5229 277c 00F0 brlo .+2
5230 277e 00C0 rjmp .L596
5231 .L714:
5232 2780 81E0 ldi r24,lo8(1)
5233 2782 00C0 rjmp .L618
5234 .L666:
5235 2784 8091 0000 lds r24,Poti1
5236 2788 00C0 rjmp .L458
5237 .L669:
5238 278a 8091 0000 lds r24,Poti1
5239 278e 00C0 rjmp .L467
5240 .L672:
5241 2790 8091 0000 lds r24,Poti1
5242 2794 00C0 rjmp .L476
5243 .L675:
5244 2796 8091 0000 lds r24,Poti1
5245 279a 00C0 rjmp .L485
5246 .L678:
5247 279c 8091 0000 lds r24,Poti1
5248 27a0 00C0 rjmp .L494
5249 .L681:
5250 27a2 8091 0000 lds r24,Poti1
5251 27a6 00C0 rjmp .L503
5252 .L684:
5253 27a8 8091 0000 lds r24,Poti1
5254 27ac 00C0 rjmp .L512
5255 .L687:
5256 27ae 8091 0000 lds r24,Poti1
5257 27b2 00C0 rjmp .L521
5258 .L690:
5259 27b4 8091 0000 lds r24,Poti1
5260 27b8 00C0 rjmp .L530
5261 .L693:
5262 27ba 8091 0000 lds r24,Poti1
5263 27be 00C0 rjmp .L539
5264 .L696:
5265 27c0 8091 0000 lds r24,Poti1
5266 27c4 00C0 rjmp .L548
5267 .L699:
5268 27c6 8091 0000 lds r24,Poti1
5269 27ca 00C0 rjmp .L557
5270 .L702:
5271 27cc 8091 0000 lds r24,Poti1
5272 27d0 00C0 rjmp .L566
5273 .L715:
5274 27d2 8091 0000 lds r24,Poti1
5275 27d6 00C0 rjmp .L599
5276 .L646:
5277 27d8 8091 0000 lds r24,Poti1
5278 27dc 00C0 rjmp .L395
5279 .L649:
5280 27de 8091 0000 lds r24,Poti1
5281 27e2 00C0 rjmp .L404
5282 .L652:
5283 27e4 8091 0000 lds r24,Poti1
5284 27e8 00C0 rjmp .L413
5285 .L655:
5286 27ea 8091 0000 lds r24,Poti1
5287 27ee 00C0 rjmp .L422
5288 .L718:
5289 27f0 8091 0000 lds r24,Poti1
5290 27f4 00C0 rjmp .L440
5291 .L663:
5292 27f6 8091 0000 lds r24,Poti1
5293 27fa 00C0 rjmp .L449
5294 .L635:
5295 27fc 8091 0000 lds r24,Poti1
5296 2800 00C0 rjmp .L365
5297 .L638:
5298 2802 8091 0000 lds r24,Poti1
5299 2806 00C0 rjmp .L374
5300 .L619:
5301 2808 8091 0000 lds r24,Poti1
5302 280c 00C0 rjmp .L323
5303 .L632:
5304 280e 8091 0000 lds r24,Poti1
5305 2812 00C0 rjmp .L356
5306 .L717:
5307 2814 8091 0000 lds r24,Poti3
5308 2818 00C0 rjmp .L599
5309 .L674:
5310 281a 8091 0000 lds r24,Poti3
5311 281e 00C0 rjmp .L476
5312 .L677:
5313 2820 8091 0000 lds r24,Poti3
5314 2824 00C0 rjmp .L485
5315 .L720:
5316 2826 8091 0000 lds r24,Poti3
5317 282a 00C0 rjmp .L440
5318 .L668:
5319 282c 8091 0000 lds r24,Poti3
5320 2830 00C0 rjmp .L458
5321 .L671:
5322 2832 8091 0000 lds r24,Poti3
5323 2836 00C0 rjmp .L467
5324 .L660:
5325 2838 2091 0000 lds r18,Poti3
5326 283c 00C0 rjmp .L431
5327 .L665:
5328 283e 8091 0000 lds r24,Poti3
5329 2842 00C0 rjmp .L449
5330 .L624:
5331 2844 8091 0000 lds r24,Poti3
5332 2848 00C0 rjmp .L332
5333 .L629:
5334 284a 8091 0000 lds r24,Poti3
5335 284e 00C0 rjmp .L344
5336 .L634:
5337 2850 8091 0000 lds r24,Poti3
5338 2854 00C0 rjmp .L356
5339 .L621:
5340 2856 8091 0000 lds r24,Poti3
5341 285a 00C0 rjmp .L323
5342 .L640:
5343 285c 8091 0000 lds r24,Poti3
5344 2860 00C0 rjmp .L374
5345 .L648:
5346 2862 8091 0000 lds r24,Poti3
5347 2866 00C0 rjmp .L395
5348 .L692:
5349 2868 8091 0000 lds r24,Poti3
5350 286c 00C0 rjmp .L530
5351 .L695:
5352 286e 8091 0000 lds r24,Poti3
5353 2872 00C0 rjmp .L539
5354 .L686:
5355 2874 8091 0000 lds r24,Poti3
5356 2878 00C0 rjmp .L512
5357 .L689:
5358 287a 8091 0000 lds r24,Poti3
5359 287e 00C0 rjmp .L521
5360 .L657:
5361 2880 8091 0000 lds r24,Poti3
5362 2884 00C0 rjmp .L422
5363 .L654:
5364 2886 8091 0000 lds r24,Poti3
5365 288a 00C0 rjmp .L413
5366 .L643:
5367 288c 8091 0000 lds r24,Poti3
5368 2890 00C0 rjmp .L383
5369 .L637:
5370 2892 8091 0000 lds r24,Poti3
5371 2896 00C0 rjmp .L365
5372 .L651:
5373 2898 8091 0000 lds r24,Poti3
5374 289c 00C0 rjmp .L404
5375 .L698:
5376 289e 8091 0000 lds r24,Poti3
5377 28a2 00C0 rjmp .L548
5378 .L701:
5379 28a4 8091 0000 lds r24,Poti3
5380 28a8 00C0 rjmp .L557
5381 .L680:
5382 28aa 8091 0000 lds r24,Poti3
5383 28ae 00C0 rjmp .L494
5384 .L683:
5385 28b0 8091 0000 lds r24,Poti3
5386 28b4 00C0 rjmp .L503
5387 .L704:
5388 28b6 8091 0000 lds r24,Poti3
5389 28ba 00C0 rjmp .L566
5390 .L707:
5391 28bc 8091 0000 lds r24,Poti3
5392 28c0 00C0 rjmp .L575
5393 .L712:
5394 28c2 8091 0000 lds r24,Poti3
5395 28c6 00C0 rjmp .L587
5396 .L650:
5397 28c8 8091 0000 lds r24,Poti2
5398 28cc 00C0 rjmp .L404
5399 .L653:
5400 28ce 8091 0000 lds r24,Poti2
5401 28d2 00C0 rjmp .L413
5402 .L636:
5403 28d4 8091 0000 lds r24,Poti2
5404 28d8 00C0 rjmp .L365
5405 .L697:
5406 28da 8091 0000 lds r24,Poti2
5407 28de 00C0 rjmp .L548
5408 .L706:
5409 28e0 8091 0000 lds r24,Poti2
5410 28e4 00C0 rjmp .L575
5411 .L711:
5412 28e6 8091 0000 lds r24,Poti2
5413 28ea 00C0 rjmp .L587
5414 .L700:
5415 28ec 8091 0000 lds r24,Poti2
5416 28f0 00C0 rjmp .L557
5417 .L679:
5418 28f2 8091 0000 lds r24,Poti2
5419 28f6 00C0 rjmp .L494
5420 .L682:
5421 28f8 8091 0000 lds r24,Poti2
5422 28fc 00C0 rjmp .L503
5423 .L703:
5424 28fe 8091 0000 lds r24,Poti2
5425 2902 00C0 rjmp .L566
5426 .L685:
5427 2904 8091 0000 lds r24,Poti2
5428 2908 00C0 rjmp .L512
5429 .L688:
5430 290a 8091 0000 lds r24,Poti2
5431 290e 00C0 rjmp .L521
5432 .L691:
5433 2910 8091 0000 lds r24,Poti2
5434 2914 00C0 rjmp .L530
5435 .L694:
5436 2916 8091 0000 lds r24,Poti2
5437 291a 00C0 rjmp .L539
5438 .L623:
5439 291c 8091 0000 lds r24,Poti2
5440 2920 00C0 rjmp .L332
5441 .L659:
5442 2922 2091 0000 lds r18,Poti2
5443 2926 00C0 rjmp .L431
5444 .L664:
5445 2928 8091 0000 lds r24,Poti2
5446 292c 00C0 rjmp .L449
5447 .L639:
5448 292e 8091 0000 lds r24,Poti2
5449 2932 00C0 rjmp .L374
5450 .L647:
5451 2934 8091 0000 lds r24,Poti2
5452 2938 00C0 rjmp .L395
5453 .L642:
5454 293a 8091 0000 lds r24,Poti2
5455 293e 00C0 rjmp .L383
5456 .L628:
5457 2940 8091 0000 lds r24,Poti2
5458 2944 00C0 rjmp .L344
5459 .L633:
5460 2946 8091 0000 lds r24,Poti2
5461 294a 00C0 rjmp .L356
5462 .L620:
5463 294c 8091 0000 lds r24,Poti2
5464 2950 00C0 rjmp .L323
5465 .L676:
5466 2952 8091 0000 lds r24,Poti2
5467 2956 00C0 rjmp .L485
5468 .L656:
5469 2958 8091 0000 lds r24,Poti2
5470 295c 00C0 rjmp .L422
5471 .L719:
5472 295e 8091 0000 lds r24,Poti2
5473 2962 00C0 rjmp .L440
5474 .L667:
5475 2964 8091 0000 lds r24,Poti2
5476 2968 00C0 rjmp .L458
5477 .L670:
5478 296a 8091 0000 lds r24,Poti2
5479 296e 00C0 rjmp .L467
5480 .L716:
5481 2970 8091 0000 lds r24,Poti2
5482 2974 00C0 rjmp .L599
5483 .L673:
5484 2976 8091 0000 lds r24,Poti2
5485 297a 00C0 rjmp .L476
5486 .L630:
5487 297c 8091 0000 lds r24,Poti4
5488 2980 00C0 rjmp .L344
5489 .L661:
5490 2982 2091 0000 lds r18,Poti4
5491 2986 00C0 rjmp .L431
5492 .L625:
5493 2988 8091 0000 lds r24,Poti4
5494 298c 00C0 rjmp .L332
5495 .L644:
5496 298e 8091 0000 lds r24,Poti4
5497 2992 00C0 rjmp .L383
5498 .L708:
5499 2994 8091 0000 lds r24,Poti4
5500 2998 00C0 rjmp .L575
5501 .L713:
5502 299a 8091 0000 lds r24,Poti4
5503 299e 00C0 rjmp .L587
5504 .L607:
5505 29a0 3327 clr r19
5506 29a2 2F5F subi r18,lo8(-(1))
5507 29a4 3F4F sbci r19,hi8(-(1))
5508 29a6 8CE3 ldi r24,lo8(10300)
5509 29a8 98E2 ldi r25,hi8(10300)
5510 29aa B901 movw r22,r18
5511 29ac 0E94 0000 call __divmodhi4
5512 29b0 7093 0000 sts (Ki)+1,r23
5513 29b4 6093 0000 sts Ki,r22
5514 29b8 8091 0000 lds r24,EE_Parameter+22
5515 29bc 8093 0000 sts MAX_GAS,r24
5516 29c0 8091 0000 lds r24,EE_Parameter+21
5517 29c4 8093 0000 sts MIN_GAS,r24
5518 /* epilogue: frame size=0 */
5519 29c8 0895 ret
5520 /* epilogue end (size=1) */
5521 /* function ParameterZuordnung size 957 (956) */
5523 .lcomm SummeNick.0,4
5524 .lcomm SummeRoll.1,4
5525 .lcomm sollGier.2,4
5526 .lcomm tmp_long.3,4
5527 .lcomm tmp_long2.4,4
5528 .lcomm IntegralFehlerNick.5,4
5529 .lcomm IntegralFehlerRoll.6,4
5530 .lcomm RcLostTimer.7,2
5531 .lcomm delay_neutral.8,1
5532 .lcomm delay_einschalten.9,1
5533 .lcomm delay_ausschalten.10,1
5534 .lcomm TimerWerteausgabe.11,1
5535 .lcomm NeueKompassRichtungMerken.12,1
5536 .lcomm ausgleichNick.13,4
5537 .lcomm ausgleichRoll.14,4
5538 .lcomm stick_nick.15,2
5539 .lcomm stick_roll.16,2
5540 .lcomm cnt.17,2
5541 .lcomm last_n_p.18,1
5542 .lcomm last_n_n.19,1
5543 .lcomm last_r_p.20,1
5544 .lcomm last_r_n.21,1
5545 .lcomm MittelIntegralNick_Alt.22,4
5546 .lcomm MittelIntegralRoll_Alt.23,4
5547 .lcomm HeightTrimming.24,2
5548 .lcomm FilterHCGas.25,2
5549 .data
5552 StickGasHoover.26:
5553 0045 7800 .word 120
5554 .lcomm HooverGas.27,2
5555 .lcomm HooverGasMin.28,2
5558 HooverGasMax.29:
5559 0047 FF03 .word 1023
5560 .lcomm HooverGasFilter.30,4
5563 delay.31:
5564 0049 64 .byte 100
5565 .lcomm BaroAtUpperLimit.32,1
5566 .lcomm BaroAtLowerLimit.33,1
5567 .lcomm HeightTrimmingFlag.34,1
5568 .text
5569 .global MotorRegler
5571 MotorRegler:
5572 /* prologue: frame size=40 */
5573 29ca A8E2 ldi r26,lo8(40)
5574 29cc B0E0 ldi r27,hi8(40)
5575 29ce E0E0 ldi r30,pm_lo8(1f)
5576 29d0 F0E0 ldi r31,pm_hi8(1f)
5577 29d2 0C94 0000 jmp __prologue_saves__+0
5578 1:
5579 /* prologue end (size=6) */
5580 29d6 8091 0000 lds r24,LoadHandler
5581 29da 8150 subi r24,lo8(-(-1))
5582 29dc 01F4 brne .L1168
5583 29de 85E0 ldi r24,lo8(5)
5584 .L1168:
5585 29e0 8093 0000 sts LoadHandler,r24
5586 29e4 0E94 0000 call Mittelwert
5587 29e8 2091 0000 lds r18,PlatinenVersion
5588 29ec 2C30 cpi r18,lo8(12)
5589 29ee 00F0 brlo .+2
5590 29f0 00C0 rjmp .L723
5591 29f2 299A sbi 37-0x20,1
5592 .L724:
5593 29f4 E090 0000 lds r14,StickGas
5594 29f8 F090 0000 lds r15,(StickGas)+1
5595 29fc FA82 std Y+2,r15
5596 29fe E982 std Y+1,r14
5597 2a00 8091 0000 lds r24,MIN_GAS
5598 2a04 9927 clr r25
5599 2a06 0A96 adiw r24,10
5600 2a08 E816 cp r14,r24
5601 2a0a F906 cpc r15,r25
5602 2a0c 04F4 brge .L725
5603 2a0e 9A83 std Y+2,r25
5604 2a10 8983 std Y+1,r24
5605 .L725:
5606 2a12 8091 0000 lds r24,SenderOkay
5607 2a16 8436 cpi r24,lo8(100)
5608 2a18 00F0 brlo .+2
5609 2a1a 00C0 rjmp .L726
5610 2a1c 8091 0000 lds r24,RcLostTimer.7
5611 2a20 9091 0000 lds r25,(RcLostTimer.7)+1
5612 2a24 0097 sbiw r24,0
5613 2a26 01F0 breq .+2
5614 2a28 00C0 rjmp .L1211
5615 2a2a 1092 0000 sts MotorenEin,__zero_reg__
5616 2a2e 8091 0000 lds r24,MikroKopterFlags
5617 2a32 8F7E andi r24,lo8(-17)
5618 2a34 8093 0000 sts MikroKopterFlags,r24
5619 2a38 2A30 cpi r18,lo8(10)
5620 2a3a 01F4 brne .+2
5621 2a3c 00C0 rjmp .L730
5622 .L1232:
5623 2a3e 2431 cpi r18,lo8(20)
5624 2a40 01F4 brne .+2
5625 2a42 00C0 rjmp .L730
5626 2a44 2898 cbi 37-0x20,0
5627 2a46 8091 0000 lds r24,modell_fliegt
5628 2a4a 9091 0000 lds r25,(modell_fliegt)+1
5629 2a4e 895E subi r24,lo8(1001)
5630 2a50 9340 sbci r25,hi8(1001)
5631 2a52 00F4 brsh .+2
5632 2a54 00C0 rjmp .L732
5633 .L1233:
5634 2a56 8091 0000 lds r24,EE_Parameter+31
5635 2a5a 282F mov r18,r24
5636 2a5c 3327 clr r19
5637 2a5e 3A83 std Y+2,r19
5638 2a60 2983 std Y+1,r18
5639 2a62 8091 0000 lds r24,MikroKopterFlags
5640 2a66 8061 ori r24,lo8(16)
5641 2a68 8093 0000 sts MikroKopterFlags,r24
5642 2a6c 8091 0000 lds r24,EE_Parameter
5643 2a70 A82F mov r26,r24
5644 2a72 BB27 clr r27
5645 2a74 AA0F add r26,r26
5646 2a76 BB1F adc r27,r27
5647 2a78 FD01 movw r30,r26
5648 2a7a E050 subi r30,lo8(-(PPM_diff))
5649 2a7c F040 sbci r31,hi8(-(PPM_diff))
5650 2a7e 1182 std Z+1,__zero_reg__
5651 2a80 1082 st Z,__zero_reg__
5652 2a82 8091 0000 lds r24,EE_Parameter+1
5653 2a86 282F mov r18,r24
5654 2a88 3327 clr r19
5655 2a8a 220F add r18,r18
5656 2a8c 331F adc r19,r19
5657 2a8e C901 movw r24,r18
5658 2a90 8050 subi r24,lo8(-(PPM_diff))
5659 2a92 9040 sbci r25,hi8(-(PPM_diff))
5660 2a94 FC01 movw r30,r24
5661 2a96 1182 std Z+1,__zero_reg__
5662 2a98 1082 st Z,__zero_reg__
5663 2a9a A050 subi r26,lo8(-(PPM_in))
5664 2a9c B040 sbci r27,hi8(-(PPM_in))
5665 2a9e 1196 adiw r26,1
5666 2aa0 1C92 st X,__zero_reg__
5667 2aa2 1E92 st -X,__zero_reg__
5668 2aa4 2050 subi r18,lo8(-(PPM_in))
5669 2aa6 3040 sbci r19,hi8(-(PPM_in))
5670 2aa8 D901 movw r26,r18
5671 2aaa 1196 adiw r26,1
5672 2aac 1C92 st X,__zero_reg__
5673 2aae 1E92 st -X,__zero_reg__
5674 2ab0 8091 0000 lds r24,EE_Parameter+3
5675 2ab4 E82F mov r30,r24
5676 2ab6 FF27 clr r31
5677 2ab8 EE0F add r30,r30
5678 2aba FF1F adc r31,r31
5679 2abc E050 subi r30,lo8(-(PPM_in))
5680 2abe F040 sbci r31,hi8(-(PPM_in))
5681 2ac0 1182 std Z+1,__zero_reg__
5682 2ac2 1082 st Z,__zero_reg__
5683 .L734:
5684 2ac4 8091 0000 lds r24,NewPpmData
5685 2ac8 8150 subi r24,lo8(-(-1))
5686 2aca 8093 0000 sts NewPpmData,r24
5687 2ace 8091 0000 lds r24,NewPpmData
5688 2ad2 8F3F cpi r24,lo8(-1)
5689 2ad4 01F0 breq .L808
5690 2ad6 8091 0000 lds r24,MikroKopterFlags
5691 2ada 84FF sbrs r24,4
5692 2adc 00C0 rjmp .L1149
5693 .L808:
5694 2ade 0E94 0000 call ParameterZuordnung
5695 2ae2 8091 0000 lds r24,stick_nick.15
5696 2ae6 9091 0000 lds r25,(stick_nick.15)+1
5697 2aea 9C01 movw r18,r24
5698 2aec 220F lsl r18
5699 2aee 331F rol r19
5700 2af0 280F add r18,r24
5701 2af2 391F adc r19,r25
5702 2af4 0091 0000 lds r16,EE_Parameter
5703 2af8 A02F mov r26,r16
5704 2afa BB27 clr r27
5705 2afc AA0F add r26,r26
5706 2afe BB1F adc r27,r27
5707 2b00 FD01 movw r30,r26
5708 2b02 E050 subi r30,lo8(-(PPM_in))
5709 2b04 F040 sbci r31,hi8(-(PPM_in))
5710 2b06 E090 0000 lds r14,EE_Parameter+18
5711 2b0a 6E2D mov r22,r14
5712 2b0c 7727 clr r23
5713 2b0e 8081 ld r24,Z
5714 2b10 9181 ldd r25,Z+1
5715 2b12 869F mul r24,r22
5716 2b14 A001 movw r20,r0
5717 2b16 879F mul r24,r23
5718 2b18 500D add r21,r0
5719 2b1a 969F mul r25,r22
5720 2b1c 500D add r21,r0
5721 2b1e 1124 clr r1
5722 2b20 240F add r18,r20
5723 2b22 351F adc r19,r21
5724 2b24 37FF sbrs r19,7
5725 2b26 00C0 rjmp .+4
5726 2b28 0C94 0000 jmp .L1212
5727 .L809:
5728 2b2c 3595 asr r19
5729 2b2e 2795 ror r18
5730 2b30 3595 asr r19
5731 2b32 2795 ror r18
5732 2b34 A050 subi r26,lo8(-(PPM_diff))
5733 2b36 B040 sbci r27,hi8(-(PPM_diff))
5734 2b38 8091 0000 lds r24,EE_Parameter+19
5735 2b3c 482F mov r20,r24
5736 2b3e 5527 clr r21
5737 2b40 8D91 ld r24,X+
5738 2b42 9C91 ld r25,X
5739 2b44 849F mul r24,r20
5740 2b46 D001 movw r26,r0
5741 2b48 859F mul r24,r21
5742 2b4a B00D add r27,r0
5743 2b4c 949F mul r25,r20
5744 2b4e B00D add r27,r0
5745 2b50 1124 clr r1
5746 2b52 CD01 movw r24,r26
5747 2b54 820F add r24,r18
5748 2b56 931F adc r25,r19
5749 2b58 9093 0000 sts (stick_nick.15)+1,r25
5750 2b5c 8093 0000 sts stick_nick.15,r24
5751 2b60 9093 0000 sts (StickNick)+1,r25
5752 2b64 8093 0000 sts StickNick,r24
5753 2b68 8091 0000 lds r24,stick_roll.16
5754 2b6c 9091 0000 lds r25,(stick_roll.16)+1
5755 2b70 9C01 movw r18,r24
5756 2b72 220F lsl r18
5757 2b74 331F rol r19
5758 2b76 280F add r18,r24
5759 2b78 391F adc r19,r25
5760 2b7a 1091 0000 lds r17,EE_Parameter+1
5761 2b7e A12F mov r26,r17
5762 2b80 BB27 clr r27
5763 2b82 AA0F add r26,r26
5764 2b84 BB1F adc r27,r27
5765 2b86 FD01 movw r30,r26
5766 2b88 E050 subi r30,lo8(-(PPM_in))
5767 2b8a F040 sbci r31,hi8(-(PPM_in))
5768 2b8c 8081 ld r24,Z
5769 2b8e 9181 ldd r25,Z+1
5770 2b90 869F mul r24,r22
5771 2b92 F001 movw r30,r0
5772 2b94 879F mul r24,r23
5773 2b96 F00D add r31,r0
5774 2b98 969F mul r25,r22
5775 2b9a F00D add r31,r0
5776 2b9c 1124 clr r1
5777 2b9e 2E0F add r18,r30
5778 2ba0 3F1F adc r19,r31
5779 2ba2 37FF sbrs r19,7
5780 2ba4 00C0 rjmp .+4
5781 2ba6 0C94 0000 jmp .L1213
5782 .L810:
5783 2baa 3595 asr r19
5784 2bac 2795 ror r18
5785 2bae 3595 asr r19
5786 2bb0 2795 ror r18
5787 2bb2 A050 subi r26,lo8(-(PPM_diff))
5788 2bb4 B040 sbci r27,hi8(-(PPM_diff))
5789 2bb6 8D91 ld r24,X+
5790 2bb8 9C91 ld r25,X
5791 2bba 849F mul r24,r20
5792 2bbc B001 movw r22,r0
5793 2bbe 859F mul r24,r21
5794 2bc0 700D add r23,r0
5795 2bc2 949F mul r25,r20
5796 2bc4 700D add r23,r0
5797 2bc6 1124 clr r1
5798 2bc8 CB01 movw r24,r22
5799 2bca 820F add r24,r18
5800 2bcc 931F adc r25,r19
5801 2bce 9093 0000 sts (stick_roll.16)+1,r25
5802 2bd2 8093 0000 sts stick_roll.16,r24
5803 2bd6 9093 0000 sts (StickRoll)+1,r25
5804 2bda 8093 0000 sts StickRoll,r24
5805 2bde 8091 0000 lds r24,EE_Parameter+3
5806 2be2 E82F mov r30,r24
5807 2be4 FF27 clr r31
5808 2be6 EE0F add r30,r30
5809 2be8 FF1F adc r31,r31
5810 2bea E050 subi r30,lo8(-(PPM_in))
5811 2bec F040 sbci r31,hi8(-(PPM_in))
5812 2bee 8081 ld r24,Z
5813 2bf0 9181 ldd r25,Z+1
5814 2bf2 9095 com r25
5815 2bf4 8195 neg r24
5816 2bf6 9F4F sbci r25,lo8(-1)
5817 2bf8 8330 cpi r24,3
5818 2bfa 9105 cpc r25,__zero_reg__
5819 2bfc 04F4 brge .+4
5820 2bfe 0C94 0000 jmp .L811
5821 2c02 0297 sbiw r24,2
5822 .L1201:
5823 2c04 9093 0000 sts (StickGier)+1,r25
5824 2c08 8093 0000 sts StickGier,r24
5825 .L812:
5826 2c0c 8091 0000 lds r24,EE_Parameter+2
5827 2c10 E82F mov r30,r24
5828 2c12 FF27 clr r31
5829 2c14 EE0F add r30,r30
5830 2c16 FF1F adc r31,r31
5831 2c18 E050 subi r30,lo8(-(PPM_in))
5832 2c1a F040 sbci r31,hi8(-(PPM_in))
5833 2c1c C080 ld r12,Z
5834 2c1e D180 ldd r13,Z+1
5835 2c20 88E7 ldi r24,lo8(120)
5836 2c22 90E0 ldi r25,hi8(120)
5837 2c24 C80E add r12,r24
5838 2c26 D91E adc r13,r25
5839 2c28 8091 0000 lds r24,Parameter_Gyro_P
5840 2c2c 9927 clr r25
5841 2c2e AA27 clr r26
5842 2c30 97FD sbrc r25,7
5843 2c32 A095 com r26
5844 2c34 BA2F mov r27,r26
5845 2c36 BC01 movw r22,r24
5846 2c38 CD01 movw r24,r26
5847 2c3a 0E94 0000 call __floatsisf
5848 2c3e DC01 movw r26,r24
5849 2c40 CB01 movw r24,r22
5850 2c42 20E0 ldi r18,lo8(0x41200000)
5851 2c44 30E0 ldi r19,hi8(0x41200000)
5852 2c46 40E2 ldi r20,hlo8(0x41200000)
5853 2c48 51E4 ldi r21,hhi8(0x41200000)
5854 2c4a BC01 movw r22,r24
5855 2c4c CD01 movw r24,r26
5856 2c4e 0E94 0000 call __addsf3
5857 2c52 DC01 movw r26,r24
5858 2c54 CB01 movw r24,r22
5859 2c56 BC01 movw r22,r24
5860 2c58 CD01 movw r24,r26
5861 2c5a 0E94 0000 call __fixunssfsi
5862 2c5e DC01 movw r26,r24
5863 2c60 CB01 movw r24,r22
5864 2c62 8093 0000 sts GyroFaktor,r24
5865 2c66 F090 0000 lds r15,Parameter_Gyro_I
5866 2c6a 8091 0000 lds r24,Parameter_Gyro_Gier_P
5867 2c6e 9927 clr r25
5868 2c70 AA27 clr r26
5869 2c72 97FD sbrc r25,7
5870 2c74 A095 com r26
5871 2c76 BA2F mov r27,r26
5872 2c78 BC01 movw r22,r24
5873 2c7a CD01 movw r24,r26
5874 2c7c 0E94 0000 call __floatsisf
5875 2c80 DC01 movw r26,r24
5876 2c82 CB01 movw r24,r22
5877 2c84 20E0 ldi r18,lo8(0x41200000)
5878 2c86 30E0 ldi r19,hi8(0x41200000)
5879 2c88 40E2 ldi r20,hlo8(0x41200000)
5880 2c8a 51E4 ldi r21,hhi8(0x41200000)
5881 2c8c BC01 movw r22,r24
5882 2c8e CD01 movw r24,r26
5883 2c90 0E94 0000 call __addsf3
5884 2c94 DC01 movw r26,r24
5885 2c96 CB01 movw r24,r22
5886 2c98 BC01 movw r22,r24
5887 2c9a CD01 movw r24,r26
5888 2c9c 0E94 0000 call __fixunssfsi
5889 2ca0 DC01 movw r26,r24
5890 2ca2 CB01 movw r24,r22
5891 2ca4 8093 0000 sts GyroFaktorGier,r24
5892 2ca8 9091 0000 lds r25,Parameter_Gyro_Gier_I
5893 2cac 9093 0000 sts IntegralFaktorGier,r25
5894 2cb0 8091 0000 lds r24,ExternControl+10
5895 2cb4 80FF sbrs r24,0
5896 2cb6 00C0 rjmp .L1175
5897 2cb8 8091 0000 lds r24,Parameter_ExternalControl
5898 2cbc 8138 cpi r24,lo8(-127)
5899 2cbe 00F0 brlo .+4
5900 2cc0 0C94 0000 jmp .L1214
5901 .L1175:
5902 2cc4 D092 0000 sts (StickGas)+1,r13
5903 2cc8 C092 0000 sts StickGas,r12
5904 .L815:
5905 2ccc 8091 0000 lds r24,StickGas
5906 2cd0 9091 0000 lds r25,(StickGas)+1
5907 2cd4 97FF sbrs r25,7
5908 2cd6 00C0 rjmp .+4
5909 2cd8 0C94 0000 jmp .L1215
5910 .L817:
5911 2cdc 5091 0000 lds r21,EE_Parameter+8
5912 2ce0 588B std Y+16,r21
5913 2ce2 52FD sbrc r21,2
5914 2ce4 00C0 rjmp .+4
5915 2ce6 0C94 0000 jmp .L1176
5916 2cea 1092 0000 sts IntegralFaktor,__zero_reg__
5917 2cee 4091 0000 lds r20,StickNick
5918 2cf2 5091 0000 lds r21,(StickNick)+1
5919 2cf6 CA01 movw r24,r20
5920 2cf8 57FF sbrs r21,7
5921 2cfa 00C0 rjmp .+4
5922 2cfc 0C94 0000 jmp .L1216
5923 .L820:
5924 2d00 9595 asr r25
5925 2d02 8795 ror r24
5926 2d04 9595 asr r25
5927 2d06 8795 ror r24
5928 2d08 97FF sbrs r25,7
5929 2d0a 00C0 rjmp .+4
5930 2d0c 0C94 0000 jmp .L1217
5931 .L821:
5932 2d10 2091 0000 lds r18,MaxStickNick
5933 2d14 3091 0000 lds r19,(MaxStickNick)+1
5934 2d18 2817 cp r18,r24
5935 2d1a 3907 cpc r19,r25
5936 2d1c 04F0 brlt .+4
5937 2d1e 0C94 0000 jmp .L819
5938 2d22 CA01 movw r24,r20
5939 2d24 57FF sbrs r21,7
5940 2d26 00C0 rjmp .+4
5941 2d28 0C94 0000 jmp .L1218
5942 .L822:
5943 2d2c 97FF sbrs r25,7
5944 2d2e 00C0 rjmp .+4
5945 2d30 0C94 0000 jmp .L1219
5946 .L823:
5947 2d34 BC01 movw r22,r24
5948 2d36 7595 asr r23
5949 2d38 6795 ror r22
5950 2d3a 7595 asr r23
5951 2d3c 6795 ror r22
5952 2d3e 6536 cpi r22,101
5953 2d40 7105 cpc r23,__zero_reg__
5954 2d42 04F4 brge .+4
5955 2d44 0C94 0000 jmp .L825
5956 2d48 64E6 ldi r22,lo8(100)
5957 2d4a 70E0 ldi r23,hi8(100)
5958 2d4c 4091 0000 lds r20,StickRoll
5959 2d50 5091 0000 lds r21,(StickRoll)+1
5960 2d54 CA01 movw r24,r20
5961 2d56 57FD sbrc r21,7
5962 2d58 00C0 rjmp .+4
5963 2d5a 0C94 0000 jmp .L827
5964 .L1266:
5965 2d5e 0396 adiw r24,3
5966 2d60 9595 asr r25
5967 2d62 8795 ror r24
5968 2d64 9595 asr r25
5969 2d66 8795 ror r24
5970 2d68 97FD sbrc r25,7
5971 2d6a 00C0 rjmp .+4
5972 2d6c 0C94 0000 jmp .L828
5973 .L1267:
5974 2d70 9095 com r25
5975 2d72 8195 neg r24
5976 2d74 9F4F sbci r25,lo8(-1)
5977 2d76 2091 0000 lds r18,MaxStickRoll
5978 2d7a 3091 0000 lds r19,(MaxStickRoll)+1
5979 2d7e 2817 cp r18,r24
5980 2d80 3907 cpc r19,r25
5981 2d82 04F4 brge .+4
5982 2d84 0C94 0000 jmp .L1220
5983 .L826:
5984 2d88 2150 subi r18,lo8(-(-1))
5985 2d8a 3040 sbci r19,hi8(-(-1))
5986 .L832:
5987 2d8c 8091 0000 lds r24,MikroKopterFlags
5988 2d90 84FD sbrc r24,4
5989 2d92 00C0 rjmp .+4
5990 2d94 0C94 0000 jmp .L1177
5991 .L1270:
5992 2d98 1092 0000 sts (MaxStickNick)+1,__zero_reg__
5993 2d9c 1092 0000 sts MaxStickNick,__zero_reg__
5994 2da0 1092 0000 sts (MaxStickRoll)+1,__zero_reg__
5995 2da4 1092 0000 sts MaxStickRoll,__zero_reg__
5996 .L833:
5997 2da8 E12F mov r30,r17
5998 2daa FF27 clr r31
5999 2dac EE0F add r30,r30
6000 2dae FF1F adc r31,r31
6001 2db0 E050 subi r30,lo8(-(PPM_in))
6002 2db2 F040 sbci r31,hi8(-(PPM_in))
6003 2db4 4091 0000 lds r20,EE_Parameter+49
6004 2db8 242F mov r18,r20
6005 2dba 3327 clr r19
6006 2dbc 8081 ld r24,Z
6007 2dbe 9181 ldd r25,Z+1
6008 2dc0 2817 cp r18,r24
6009 2dc2 3907 cpc r19,r25
6010 2dc4 04F4 brge .L834
6011 2dc6 8091 0000 lds r24,EE_Parameter+86
6012 2dca 82FF sbrs r24,2
6013 2dcc 00C0 rjmp .+4
6014 2dce 0C94 0000 jmp .L1221
6015 .L834:
6016 2dd2 E12F mov r30,r17
6017 2dd4 FF27 clr r31
6018 2dd6 EE0F add r30,r30
6019 2dd8 FF1F adc r31,r31
6020 2dda E050 subi r30,lo8(-(PPM_in))
6021 2ddc F040 sbci r31,hi8(-(PPM_in))
6022 2dde 842F mov r24,r20
6023 2de0 9927 clr r25
6024 2de2 2091 0000 lds r18,EE_Parameter+50
6025 2de6 821B sub r24,r18
6026 2de8 9109 sbc r25,__zero_reg__
6027 2dea 2081 ld r18,Z
6028 2dec 3181 ldd r19,Z+1
6029 2dee 2817 cp r18,r24
6030 2df0 3907 cpc r19,r25
6031 2df2 04F4 brge .L835
6032 2df4 1092 0000 sts Looping_Links,__zero_reg__
6033 .L835:
6034 2df8 E12F mov r30,r17
6035 2dfa FF27 clr r31
6036 2dfc EE0F add r30,r30
6037 2dfe FF1F adc r31,r31
6038 2e00 E050 subi r30,lo8(-(PPM_in))
6039 2e02 F040 sbci r31,hi8(-(PPM_in))
6040 2e04 842F mov r24,r20
6041 2e06 9927 clr r25
6042 2e08 2227 clr r18
6043 2e0a 3327 clr r19
6044 2e0c 281B sub r18,r24
6045 2e0e 390B sbc r19,r25
6046 2e10 8081 ld r24,Z
6047 2e12 9181 ldd r25,Z+1
6048 2e14 8217 cp r24,r18
6049 2e16 9307 cpc r25,r19
6050 2e18 04F4 brge .L837
6051 2e1a 8091 0000 lds r24,EE_Parameter+86
6052 2e1e 83FF sbrs r24,3
6053 2e20 00C0 rjmp .+4
6054 2e22 0C94 0000 jmp .L1222
6055 .L837:
6056 2e26 8091 0000 lds r24,Looping_Rechts
6057 2e2a 8823 tst r24
6058 2e2c 01F0 breq .L838
6059 2e2e E12F mov r30,r17
6060 2e30 FF27 clr r31
6061 2e32 EE0F add r30,r30
6062 2e34 FF1F adc r31,r31
6063 2e36 E050 subi r30,lo8(-(PPM_in))
6064 2e38 F040 sbci r31,hi8(-(PPM_in))
6065 2e3a 8091 0000 lds r24,EE_Parameter+50
6066 2e3e 9927 clr r25
6067 2e40 841B sub r24,r20
6068 2e42 9109 sbc r25,__zero_reg__
6069 2e44 2081 ld r18,Z
6070 2e46 3181 ldd r19,Z+1
6071 2e48 8217 cp r24,r18
6072 2e4a 9307 cpc r25,r19
6073 2e4c 04F4 brge .+4
6074 2e4e 0C94 0000 jmp .L1223
6075 .L838:
6076 2e52 E02F mov r30,r16
6077 2e54 FF27 clr r31
6078 2e56 EE0F add r30,r30
6079 2e58 FF1F adc r31,r31
6080 2e5a E050 subi r30,lo8(-(PPM_in))
6081 2e5c F040 sbci r31,hi8(-(PPM_in))
6082 2e5e 242F mov r18,r20
6083 2e60 3327 clr r19
6084 2e62 8081 ld r24,Z
6085 2e64 9181 ldd r25,Z+1
6086 2e66 2817 cp r18,r24
6087 2e68 3907 cpc r19,r25
6088 2e6a 04F4 brge .L841
6089 2e6c 8091 0000 lds r24,EE_Parameter+86
6090 2e70 80FF sbrs r24,0
6091 2e72 00C0 rjmp .+4
6092 2e74 0C94 0000 jmp .L1224
6093 .L841:
6094 2e78 5091 0000 lds r21,Looping_Oben
6095 2e7c 5523 tst r21
6096 2e7e 01F0 breq .L842
6097 2e80 E02F mov r30,r16
6098 2e82 FF27 clr r31
6099 2e84 EE0F add r30,r30
6100 2e86 FF1F adc r31,r31
6101 2e88 E050 subi r30,lo8(-(PPM_in))
6102 2e8a F040 sbci r31,hi8(-(PPM_in))
6103 2e8c 842F mov r24,r20
6104 2e8e 9927 clr r25
6105 2e90 2091 0000 lds r18,EE_Parameter+50
6106 2e94 821B sub r24,r18
6107 2e96 9109 sbc r25,__zero_reg__
6108 2e98 2081 ld r18,Z
6109 2e9a 3181 ldd r19,Z+1
6110 2e9c 2817 cp r18,r24
6111 2e9e 3907 cpc r19,r25
6112 2ea0 04F4 brge .+4
6113 2ea2 0C94 0000 jmp .L1225
6114 .L842:
6115 2ea6 E02F mov r30,r16
6116 2ea8 FF27 clr r31
6117 2eaa EE0F add r30,r30
6118 2eac FF1F adc r31,r31
6119 2eae E050 subi r30,lo8(-(PPM_in))
6120 2eb0 F040 sbci r31,hi8(-(PPM_in))
6121 2eb2 842F mov r24,r20
6122 2eb4 9927 clr r25
6123 2eb6 2227 clr r18
6124 2eb8 3327 clr r19
6125 2eba 281B sub r18,r24
6126 2ebc 390B sbc r19,r25
6127 2ebe 8081 ld r24,Z
6128 2ec0 9181 ldd r25,Z+1
6129 2ec2 8217 cp r24,r18
6130 2ec4 9307 cpc r25,r19
6131 2ec6 04F4 brge .L845
6132 2ec8 8091 0000 lds r24,EE_Parameter+86
6133 2ecc 81FF sbrs r24,1
6134 2ece 00C0 rjmp .+4
6135 2ed0 0C94 0000 jmp .L1226
6136 .L845:
6137 2ed4 8091 0000 lds r24,Looping_Unten
6138 2ed8 8823 tst r24
6139 2eda 01F0 breq .L846
6140 2edc E02F mov r30,r16
6141 2ede FF27 clr r31
6142 2ee0 EE0F add r30,r30
6143 2ee2 FF1F adc r31,r31
6144 2ee4 E050 subi r30,lo8(-(PPM_in))
6145 2ee6 F040 sbci r31,hi8(-(PPM_in))
6146 2ee8 8091 0000 lds r24,EE_Parameter+50
6147 2eec 9927 clr r25
6148 2eee 841B sub r24,r20
6149 2ef0 9109 sbc r25,__zero_reg__
6150 2ef2 2081 ld r18,Z
6151 2ef4 3181 ldd r19,Z+1
6152 2ef6 8217 cp r24,r18
6153 2ef8 9307 cpc r25,r19
6154 2efa 04F4 brge .+4
6155 2efc 0C94 0000 jmp .L1227
6156 .L846:
6157 2f00 8091 0000 lds r24,Looping_Links
6158 2f04 8823 tst r24
6159 2f06 01F4 brne .L850
6160 2f08 8091 0000 lds r24,Looping_Rechts
6161 2f0c 8823 tst r24
6162 2f0e 01F4 brne .+4
6163 2f10 0C94 0000 jmp .L849
6164 .L850:
6165 2f14 91E0 ldi r25,lo8(1)
6166 .L851:
6167 2f16 5523 tst r21
6168 2f18 01F4 brne .L853
6169 2f1a 8091 0000 lds r24,Looping_Unten
6170 2f1e 8823 tst r24
6171 2f20 01F4 brne .+4
6172 2f22 0C94 0000 jmp .L852
6173 .L853:
6174 2f26 81E0 ldi r24,lo8(1)
6175 2f28 8093 0000 sts Looping_Nick,r24
6176 2f2c 1092 0000 sts Looping_Roll,__zero_reg__
6177 2f30 1092 0000 sts Looping_Links,__zero_reg__
6178 2f34 1092 0000 sts Looping_Rechts,__zero_reg__
6179 2f38 00C0 rjmp .L807
6180 .L723:
6181 2f3a 2998 cbi 37-0x20,1
6182 2f3c 00C0 rjmp .L724
6183 .L726:
6184 2f3e 8091 0000 lds r24,SenderOkay
6185 2f42 8D38 cpi r24,lo8(-115)
6186 2f44 00F4 brsh .+2
6187 2f46 00C0 rjmp .L734
6188 2f48 8091 0000 lds r24,MikroKopterFlags
6189 2f4c 8F7E andi r24,lo8(-17)
6190 2f4e 8093 0000 sts MikroKopterFlags,r24
6191 2f52 9091 0000 lds r25,EE_Parameter+32
6192 2f56 82E3 ldi r24,lo8(50)
6193 2f58 989F mul r25,r24
6194 2f5a C001 movw r24,r0
6195 2f5c 1124 clr r1
6196 2f5e 9093 0000 sts (RcLostTimer.7)+1,r25
6197 2f62 8093 0000 sts RcLostTimer.7,r24
6198 2f66 E981 ldd r30,Y+1
6199 2f68 FA81 ldd r31,Y+2
6200 2f6a B997 sbiw r30,41
6201 2f6c 04F0 brlt .+4
6202 2f6e 0C94 0000 jmp .L1228
6203 .L1147:
6204 2f72 8091 0000 lds r24,modell_fliegt
6205 2f76 9091 0000 lds r25,(modell_fliegt)+1
6206 .L736:
6207 2f7a 8F3F cpi r24,255
6208 2f7c 9105 cpc r25,__zero_reg__
6209 2f7e 01F0 breq .+6
6210 2f80 00F0 brlo .+4
6211 2f82 0C94 0000 jmp .L738
6212 2f86 1092 0000 sts SummeNick.0,__zero_reg__
6213 2f8a 1092 0000 sts (SummeNick.0)+1,__zero_reg__
6214 2f8e 1092 0000 sts (SummeNick.0)+2,__zero_reg__
6215 2f92 1092 0000 sts (SummeNick.0)+3,__zero_reg__
6216 2f96 1092 0000 sts SummeRoll.1,__zero_reg__
6217 2f9a 1092 0000 sts (SummeRoll.1)+1,__zero_reg__
6218 2f9e 1092 0000 sts (SummeRoll.1)+2,__zero_reg__
6219 2fa2 1092 0000 sts (SummeRoll.1)+3,__zero_reg__
6220 2fa6 8A3F cpi r24,250
6221 2fa8 9105 cpc r25,__zero_reg__
6222 2faa 01F4 brne .+4
6223 2fac 0C94 0000 jmp .L1229
6224 .L740:
6225 2fb0 3091 0000 lds r19,EE_Parameter+2
6226 2fb4 E32F mov r30,r19
6227 2fb6 FF27 clr r31
6228 2fb8 EE0F add r30,r30
6229 2fba FF1F adc r31,r31
6230 2fbc E050 subi r30,lo8(-(PPM_in))
6231 2fbe F040 sbci r31,hi8(-(PPM_in))
6232 2fc0 8081 ld r24,Z
6233 2fc2 9181 ldd r25,Z+1
6234 2fc4 8135 cpi r24,81
6235 2fc6 9105 cpc r25,__zero_reg__
6236 2fc8 04F4 brge .+2
6237 2fca 00C0 rjmp .L741
6238 2fcc 4091 0000 lds r20,MotorenEin
6239 2fd0 4423 tst r20
6240 2fd2 01F0 breq .+2
6241 2fd4 00C0 rjmp .L741
6242 2fd6 8091 0000 lds r24,EE_Parameter+3
6243 2fda E82F mov r30,r24
6244 2fdc FF27 clr r31
6245 2fde EE0F add r30,r30
6246 2fe0 FF1F adc r31,r31
6247 2fe2 E050 subi r30,lo8(-(PPM_in))
6248 2fe4 F040 sbci r31,hi8(-(PPM_in))
6249 2fe6 8081 ld r24,Z
6250 2fe8 9181 ldd r25,Z+1
6251 2fea 8C34 cpi r24,76
6252 2fec 9105 cpc r25,__zero_reg__
6253 2fee 04F4 brge .+4
6254 2ff0 0C94 0000 jmp .L742
6255 2ff4 8091 0000 lds r24,delay_neutral.8
6256 2ff8 8F5F subi r24,lo8(-(1))
6257 2ffa 893C cpi r24,lo8(-55)
6258 2ffc 00F4 brsh .+4
6259 2ffe 0C94 0000 jmp .L1170
6260 3002 2C30 cpi r18,lo8(12)
6261 3004 00F0 brlo .+4
6262 3006 0C94 0000 jmp .L744
6263 300a 2998 cbi 37-0x20,1
6264 .L745:
6265 300c 1092 0000 sts MotorenEin,__zero_reg__
6266 3010 1092 0000 sts delay_neutral.8,__zero_reg__
6267 3014 1092 0000 sts (modell_fliegt)+1,__zero_reg__
6268 3018 1092 0000 sts modell_fliegt,__zero_reg__
6269 301c 0091 0000 lds r16,EE_Parameter
6270 3020 E02F mov r30,r16
6271 3022 FF27 clr r31
6272 3024 EE0F add r30,r30
6273 3026 FF1F adc r31,r31
6274 3028 E050 subi r30,lo8(-(PPM_in))
6275 302a F040 sbci r31,hi8(-(PPM_in))
6276 302c 8081 ld r24,Z
6277 302e 9181 ldd r25,Z+1
6278 3030 8734 cpi r24,71
6279 3032 9105 cpc r25,__zero_reg__
6280 3034 04F0 brlt .+4
6281 3036 0C94 0000 jmp .L1148
6282 303a 1091 0000 lds r17,EE_Parameter+1
6283 303e E12F mov r30,r17
6284 3040 FF27 clr r31
6285 3042 EE0F add r30,r30
6286 3044 FF1F adc r31,r31
6287 3046 E050 subi r30,lo8(-(PPM_in))
6288 3048 F040 sbci r31,hi8(-(PPM_in))
6289 304a 8081 ld r24,Z
6290 304c 9181 ldd r25,Z+1
6291 304e 0190 ld __tmp_reg__,Z+
6292 3050 F081 ld r31,Z
6293 3052 E02D mov r30,__tmp_reg__
6294 3054 F7FF sbrs r31,7
6295 3056 00C0 rjmp .+4
6296 3058 0C94 0000 jmp .L1230
6297 .L748:
6298 305c E734 cpi r30,71
6299 305e F105 cpc r31,__zero_reg__
6300 3060 04F4 brge .+2
6301 3062 00C0 rjmp .L746
6302 .L747:
6303 3064 21E0 ldi r18,lo8(1)
6304 3066 A12F mov r26,r17
6305 3068 BB27 clr r27
6306 306a AA0F add r26,r26
6307 306c BB1F adc r27,r27
6308 306e A050 subi r26,lo8(-(PPM_in))
6309 3070 B040 sbci r27,hi8(-(PPM_in))
6310 3072 8D91 ld r24,X+
6311 3074 9C91 ld r25,X
6312 3076 1197 sbiw r26,1
6313 3078 8734 cpi r24,71
6314 307a 9105 cpc r25,__zero_reg__
6315 307c 04F0 brlt .L749
6316 307e E02F mov r30,r16
6317 3080 FF27 clr r31
6318 3082 EE0F add r30,r30
6319 3084 FF1F adc r31,r31
6320 3086 E050 subi r30,lo8(-(PPM_in))
6321 3088 F040 sbci r31,hi8(-(PPM_in))
6322 308a 8081 ld r24,Z
6323 308c 9181 ldd r25,Z+1
6324 .L749:
6325 308e 8D91 ld r24,X+
6326 3090 9C91 ld r25,X
6327 3092 8734 cpi r24,71
6328 3094 9105 cpc r25,__zero_reg__
6329 3096 04F0 brlt .L750
6330 3098 E02F mov r30,r16
6331 309a FF27 clr r31
6332 309c EE0F add r30,r30
6333 309e FF1F adc r31,r31
6334 30a0 E050 subi r30,lo8(-(PPM_in))
6335 30a2 F040 sbci r31,hi8(-(PPM_in))
6336 30a4 8081 ld r24,Z
6337 30a6 9181 ldd r25,Z+1
6338 30a8 8734 cpi r24,71
6339 30aa 9105 cpc r25,__zero_reg__
6340 30ac 04F0 brlt .L750
6341 30ae 22E0 ldi r18,lo8(2)
6342 .L750:
6343 30b0 E12F mov r30,r17
6344 30b2 FF27 clr r31
6345 30b4 EE0F add r30,r30
6346 30b6 FF1F adc r31,r31
6347 30b8 E050 subi r30,lo8(-(PPM_in))
6348 30ba F040 sbci r31,hi8(-(PPM_in))
6349 30bc 8081 ld r24,Z
6350 30be 9181 ldd r25,Z+1
6351 30c0 8634 cpi r24,70
6352 30c2 9105 cpc r25,__zero_reg__
6353 30c4 04F4 brge .L751
6354 30c6 E02F mov r30,r16
6355 30c8 FF27 clr r31
6356 30ca EE0F add r30,r30
6357 30cc FF1F adc r31,r31
6358 30ce E050 subi r30,lo8(-(PPM_in))
6359 30d0 F040 sbci r31,hi8(-(PPM_in))
6360 30d2 8081 ld r24,Z
6361 30d4 9181 ldd r25,Z+1
6362 30d6 8734 cpi r24,71
6363 30d8 9105 cpc r25,__zero_reg__
6364 30da 04F0 brlt .L751
6365 30dc 23E0 ldi r18,lo8(3)
6366 .L751:
6367 30de E12F mov r30,r17
6368 30e0 FF27 clr r31
6369 30e2 EE0F add r30,r30
6370 30e4 FF1F adc r31,r31
6371 30e6 E050 subi r30,lo8(-(PPM_in))
6372 30e8 F040 sbci r31,hi8(-(PPM_in))
6373 30ea 8081 ld r24,Z
6374 30ec 9181 ldd r25,Z+1
6375 30ee 8A5B subi r24,lo8(-70)
6376 30f0 9F4F sbci r25,hi8(-70)
6377 30f2 04F4 brge .L752
6378 30f4 E02F mov r30,r16
6379 30f6 FF27 clr r31
6380 30f8 EE0F add r30,r30
6381 30fa FF1F adc r31,r31
6382 30fc E050 subi r30,lo8(-(PPM_in))
6383 30fe F040 sbci r31,hi8(-(PPM_in))
6384 3100 8081 ld r24,Z
6385 3102 9181 ldd r25,Z+1
6386 3104 8734 cpi r24,71
6387 3106 9105 cpc r25,__zero_reg__
6388 3108 04F0 brlt .L752
6389 310a 24E0 ldi r18,lo8(4)
6390 .L752:
6391 310c E12F mov r30,r17
6392 310e FF27 clr r31
6393 3110 EE0F add r30,r30
6394 3112 FF1F adc r31,r31
6395 3114 E050 subi r30,lo8(-(PPM_in))
6396 3116 F040 sbci r31,hi8(-(PPM_in))
6397 3118 8081 ld r24,Z
6398 311a 9181 ldd r25,Z+1
6399 311c 8A5B subi r24,lo8(-70)
6400 311e 9F4F sbci r25,hi8(-70)
6401 3120 04F4 brge .L753
6402 3122 E02F mov r30,r16
6403 3124 FF27 clr r31
6404 3126 EE0F add r30,r30
6405 3128 FF1F adc r31,r31
6406 312a E050 subi r30,lo8(-(PPM_in))
6407 312c F040 sbci r31,hi8(-(PPM_in))
6408 312e 8081 ld r24,Z
6409 3130 9181 ldd r25,Z+1
6410 3132 8634 cpi r24,70
6411 3134 9105 cpc r25,__zero_reg__
6412 3136 04F4 brge .L753
6413 3138 25E0 ldi r18,lo8(5)
6414 .L753:
6415 313a 822F mov r24,r18
6416 313c 0E94 0000 call SetActiveParamSetNumber
6417 3140 1091 0000 lds r17,EE_Parameter+1
6418 .L746:
6419 3144 E12F mov r30,r17
6420 3146 FF27 clr r31
6421 3148 EE0F add r30,r30
6422 314a FF1F adc r31,r31
6423 314c E050 subi r30,lo8(-(PPM_in))
6424 314e F040 sbci r31,hi8(-(PPM_in))
6425 3150 8081 ld r24,Z
6426 3152 9181 ldd r25,Z+1
6427 3154 0190 ld __tmp_reg__,Z+
6428 3156 F081 ld r31,Z
6429 3158 E02D mov r30,__tmp_reg__
6430 315a F7FF sbrs r31,7
6431 315c 00C0 rjmp .+4
6432 315e 0C94 0000 jmp .L1231
6433 .L755:
6434 3162 7E97 sbiw r30,30
6435 3164 04F0 brlt .+4
6436 3166 0C94 0000 jmp .L754
6437 316a 8091 0000 lds r24,EE_Parameter
6438 316e E82F mov r30,r24
6439 3170 FF27 clr r31
6440 3172 EE0F add r30,r30
6441 3174 FF1F adc r31,r31
6442 3176 E050 subi r30,lo8(-(PPM_in))
6443 3178 F040 sbci r31,hi8(-(PPM_in))
6444 317a 8081 ld r24,Z
6445 317c 9181 ldd r25,Z+1
6446 317e 8A5B subi r24,lo8(-70)
6447 3180 9F4F sbci r25,hi8(-70)
6448 3182 04F0 brlt .+4
6449 3184 0C94 0000 jmp .L754
6450 3188 81E0 ldi r24,lo8(1)
6451 318a 8093 0000 sts WinkelOut+6,r24
6452 318e 88EE ldi r24,lo8(1000)
6453 3190 93E0 ldi r25,hi8(1000)
6454 3192 9093 0000 sts (beeptime)+1,r25
6455 3196 8093 0000 sts beeptime,r24
6456 319a 3091 0000 lds r19,EE_Parameter+2
6457 .L741:
6458 319e E32F mov r30,r19
6459 31a0 FF27 clr r31
6460 31a2 EE0F add r30,r30
6461 31a4 FF1F adc r31,r31
6462 31a6 E050 subi r30,lo8(-(PPM_in))
6463 31a8 F040 sbci r31,hi8(-(PPM_in))
6464 31aa 8081 ld r24,Z
6465 31ac 9181 ldd r25,Z+1
6466 31ae 8B5A subi r24,lo8(-85)
6467 31b0 9F4F sbci r25,hi8(-85)
6468 31b2 04F0 brlt .+2
6469 31b4 00C0 rjmp .L734
6470 31b6 D090 0000 lds r13,EE_Parameter+3
6471 31ba ED2D mov r30,r13
6472 31bc FF27 clr r31
6473 31be EE0F add r30,r30
6474 31c0 FF1F adc r31,r31
6475 31c2 E050 subi r30,lo8(-(PPM_in))
6476 31c4 F040 sbci r31,hi8(-(PPM_in))
6477 31c6 8081 ld r24,Z
6478 31c8 9181 ldd r25,Z+1
6479 31ca 855B subi r24,lo8(-75)
6480 31cc 9F4F sbci r25,hi8(-75)
6481 31ce 04F0 brlt .+4
6482 31d0 0C94 0000 jmp .L801
6483 31d4 8091 0000 lds r24,delay_einschalten.9
6484 31d8 8F5F subi r24,lo8(-(1))
6485 31da 893C cpi r24,lo8(-55)
6486 31dc 00F4 brsh .+4
6487 31de 0C94 0000 jmp .L1171
6488 31e2 88EC ldi r24,lo8(-56)
6489 31e4 8093 0000 sts delay_einschalten.9,r24
6490 31e8 81E0 ldi r24,lo8(1)
6491 31ea 90E0 ldi r25,hi8(1)
6492 31ec 9093 0000 sts (modell_fliegt)+1,r25
6493 31f0 8093 0000 sts modell_fliegt,r24
6494 31f4 81E0 ldi r24,lo8(1)
6495 31f6 8093 0000 sts MotorenEin,r24
6496 31fa 1092 0000 sts sollGier.2,__zero_reg__
6497 31fe 1092 0000 sts (sollGier.2)+1,__zero_reg__
6498 3202 1092 0000 sts (sollGier.2)+2,__zero_reg__
6499 3206 1092 0000 sts (sollGier.2)+3,__zero_reg__
6500 320a 1092 0000 sts Mess_Integral_Gier,__zero_reg__
6501 320e 1092 0000 sts (Mess_Integral_Gier)+1,__zero_reg__
6502 3212 1092 0000 sts (Mess_Integral_Gier)+2,__zero_reg__
6503 3216 1092 0000 sts (Mess_Integral_Gier)+3,__zero_reg__
6504 321a 1092 0000 sts Mess_Integral_Gier2,__zero_reg__
6505 321e 1092 0000 sts (Mess_Integral_Gier2)+1,__zero_reg__
6506 3222 1092 0000 sts (Mess_Integral_Gier2)+2,__zero_reg__
6507 3226 1092 0000 sts (Mess_Integral_Gier2)+3,__zero_reg__
6508 322a 8091 0000 lds r24,EE_Parameter+23
6509 322e E82E mov r14,r24
6510 3230 FF24 clr r15
6511 3232 0027 clr r16
6512 3234 1127 clr r17
6513 3236 8091 0000 lds r24,Mittelwert_AccNick
6514 323a 9091 0000 lds r25,(Mittelwert_AccNick)+1
6515 323e 9C01 movw r18,r24
6516 3240 4427 clr r20
6517 3242 37FD sbrc r19,7
6518 3244 4095 com r20
6519 3246 542F mov r21,r20
6520 3248 C801 movw r24,r16
6521 324a B701 movw r22,r14
6522 324c 0E94 0000 call __mulsi3
6523 3250 DC01 movw r26,r24
6524 3252 CB01 movw r24,r22
6525 3254 8093 0000 sts Mess_IntegralNick,r24
6526 3258 9093 0000 sts (Mess_IntegralNick)+1,r25
6527 325c A093 0000 sts (Mess_IntegralNick)+2,r26
6528 3260 B093 0000 sts (Mess_IntegralNick)+3,r27
6529 3264 8091 0000 lds r24,Mittelwert_AccRoll
6530 3268 9091 0000 lds r25,(Mittelwert_AccRoll)+1
6531 326c 9C01 movw r18,r24
6532 326e 4427 clr r20
6533 3270 37FD sbrc r19,7
6534 3272 4095 com r20
6535 3274 542F mov r21,r20
6536 3276 C801 movw r24,r16
6537 3278 B701 movw r22,r14
6538 327a 0E94 0000 call __mulsi3
6539 327e DC01 movw r26,r24
6540 3280 CB01 movw r24,r22
6541 3282 8093 0000 sts Mess_IntegralRoll,r24
6542 3286 9093 0000 sts (Mess_IntegralRoll)+1,r25
6543 328a A093 0000 sts (Mess_IntegralRoll)+2,r26
6544 328e B093 0000 sts (Mess_IntegralRoll)+3,r27
6545 3292 8091 0000 lds r24,IntegralNick
6546 3296 9091 0000 lds r25,(IntegralNick)+1
6547 329a A091 0000 lds r26,(IntegralNick)+2
6548 329e B091 0000 lds r27,(IntegralNick)+3
6549 32a2 8093 0000 sts Mess_IntegralNick2,r24
6550 32a6 9093 0000 sts (Mess_IntegralNick2)+1,r25
6551 32aa A093 0000 sts (Mess_IntegralNick2)+2,r26
6552 32ae B093 0000 sts (Mess_IntegralNick2)+3,r27
6553 32b2 8091 0000 lds r24,IntegralRoll
6554 32b6 9091 0000 lds r25,(IntegralRoll)+1
6555 32ba A091 0000 lds r26,(IntegralRoll)+2
6556 32be B091 0000 lds r27,(IntegralRoll)+3
6557 32c2 8093 0000 sts Mess_IntegralRoll2,r24
6558 32c6 9093 0000 sts (Mess_IntegralRoll2)+1,r25
6559 32ca A093 0000 sts (Mess_IntegralRoll2)+2,r26
6560 32ce B093 0000 sts (Mess_IntegralRoll2)+3,r27
6561 32d2 1092 0000 sts SummeNick.0,__zero_reg__
6562 32d6 1092 0000 sts (SummeNick.0)+1,__zero_reg__
6563 32da 1092 0000 sts (SummeNick.0)+2,__zero_reg__
6564 32de 1092 0000 sts (SummeNick.0)+3,__zero_reg__
6565 32e2 1092 0000 sts SummeRoll.1,__zero_reg__
6566 32e6 1092 0000 sts (SummeRoll.1)+1,__zero_reg__
6567 32ea 1092 0000 sts (SummeRoll.1)+2,__zero_reg__
6568 32ee 1092 0000 sts (SummeRoll.1)+3,__zero_reg__
6569 32f2 8091 0000 lds r24,MikroKopterFlags
6570 32f6 8860 ori r24,lo8(8)
6571 32f8 8093 0000 sts MikroKopterFlags,r24
6572 32fc 0C94 0000 jmp .L803
6573 .L1211:
6574 3300 0197 sbiw r24,1
6575 3302 9093 0000 sts (RcLostTimer.7)+1,r25
6576 3306 8093 0000 sts RcLostTimer.7,r24
6577 330a 2A30 cpi r18,lo8(10)
6578 330c 01F0 breq .+2
6579 330e 00C0 rjmp .L1232
6580 .L730:
6581 3310 289A sbi 37-0x20,0
6582 3312 8091 0000 lds r24,modell_fliegt
6583 3316 9091 0000 lds r25,(modell_fliegt)+1
6584 331a 895E subi r24,lo8(1001)
6585 331c 9340 sbci r25,hi8(1001)
6586 331e 00F0 brlo .+2
6587 3320 00C0 rjmp .L1233
6588 .L732:
6589 3322 1092 0000 sts MotorenEin,__zero_reg__
6590 3326 00C0 rjmp .L734
6591 .L1149:
6592 3328 6091 0000 lds r22,EE_Parameter+8
6593 332c 688B std Y+16,r22
6594 .L807:
6595 332e 7091 0000 lds r23,Looping_Roll
6596 3332 7B8F std Y+27,r23
6597 3334 7723 tst r23
6598 3336 01F4 brne .L856
6599 3338 8091 0000 lds r24,Looping_Nick
6600 333c 8823 tst r24
6601 333e 01F0 breq .L855
6602 .L856:
6603 3340 8091 0000 lds r24,EE_Parameter+48
6604 3344 9927 clr r25
6605 3346 A981 ldd r26,Y+1
6606 3348 BA81 ldd r27,Y+2
6607 334a 8A17 cp r24,r26
6608 334c 9B07 cpc r25,r27
6609 334e 04F4 brge .L857
6610 3350 9A83 std Y+2,r25
6611 3352 8983 std Y+1,r24
6612 .L857:
6613 3354 81E0 ldi r24,lo8(1)
6614 3356 8093 0000 sts TrichterFlug,r24
6615 .L855:
6616 335a 8091 0000 lds r24,MikroKopterFlags
6617 335e 84FF sbrs r24,4
6618 3360 00C0 rjmp .L1150
6619 3362 1092 0000 sts (StickGier)+1,__zero_reg__
6620 3366 1092 0000 sts StickGier,__zero_reg__
6621 336a 1092 0000 sts (StickNick)+1,__zero_reg__
6622 336e 1092 0000 sts StickNick,__zero_reg__
6623 3372 1092 0000 sts (StickRoll)+1,__zero_reg__
6624 3376 1092 0000 sts StickRoll,__zero_reg__
6625 337a 9AE5 ldi r25,lo8(90)
6626 337c 9093 0000 sts GyroFaktor,r25
6627 3380 88E7 ldi r24,lo8(120)
6628 3382 8093 0000 sts IntegralFaktor,r24
6629 3386 9093 0000 sts GyroFaktorGier,r25
6630 338a 8A8F std Y+26,r24
6631 338c 8093 0000 sts IntegralFaktorGier,r24
6632 3390 1092 0000 sts Looping_Roll,__zero_reg__
6633 3394 1092 0000 sts Looping_Nick,__zero_reg__
6634 3398 1B8E std Y+27,__zero_reg__
6635 .L858:
6636 339a 2091 0000 lds r18,MittelIntegralNick
6637 339e 3091 0000 lds r19,(MittelIntegralNick)+1
6638 33a2 4091 0000 lds r20,(MittelIntegralNick)+2
6639 33a6 5091 0000 lds r21,(MittelIntegralNick)+3
6640 33aa E090 0000 lds r14,IntegralNick
6641 33ae F090 0000 lds r15,(IntegralNick)+1
6642 33b2 0091 0000 lds r16,(IntegralNick)+2
6643 33b6 1091 0000 lds r17,(IntegralNick)+3
6644 33ba ED8E std Y+29,r14
6645 33bc FE8E std Y+30,r15
6646 33be 0F8F std Y+31,r16
6647 33c0 18A3 std Y+32,r17
6648 33c2 2E0D add r18,r14
6649 33c4 3F1D adc r19,r15
6650 33c6 401F adc r20,r16
6651 33c8 511F adc r21,r17
6652 33ca 8091 0000 lds r24,MittelIntegralRoll
6653 33ce 9091 0000 lds r25,(MittelIntegralRoll)+1
6654 33d2 A091 0000 lds r26,(MittelIntegralRoll)+2
6655 33d6 B091 0000 lds r27,(MittelIntegralRoll)+3
6656 33da E090 0000 lds r14,IntegralRoll
6657 33de F090 0000 lds r15,(IntegralRoll)+1
6658 33e2 0091 0000 lds r16,(IntegralRoll)+2
6659 33e6 1091 0000 lds r17,(IntegralRoll)+3
6660 33ea EC86 std Y+12,r14
6661 33ec FD86 std Y+13,r15
6662 33ee 0E87 std Y+14,r16
6663 33f0 1F87 std Y+15,r17
6664 33f2 8E0D add r24,r14
6665 33f4 9F1D adc r25,r15
6666 33f6 A01F adc r26,r16
6667 33f8 B11F adc r27,r17
6668 33fa 2090 0000 lds r2,MittelIntegralNick2
6669 33fe 3090 0000 lds r3,(MittelIntegralNick2)+1
6670 3402 4090 0000 lds r4,(MittelIntegralNick2)+2
6671 3406 5090 0000 lds r5,(MittelIntegralNick2)+3
6672 340a E090 0000 lds r14,IntegralNick2
6673 340e F090 0000 lds r15,(IntegralNick2)+1
6674 3412 0091 0000 lds r16,(IntegralNick2)+2
6675 3416 1091 0000 lds r17,(IntegralNick2)+3
6676 341a EE8A std Y+22,r14
6677 341c FF8A std Y+23,r15
6678 341e 088F std Y+24,r16
6679 3420 198F std Y+25,r17
6680 3422 2E0C add r2,r14
6681 3424 3F1C adc r3,r15
6682 3426 401E adc r4,r16
6683 3428 511E adc r5,r17
6684 342a 6090 0000 lds r6,MittelIntegralRoll2
6685 342e 7090 0000 lds r7,(MittelIntegralRoll2)+1
6686 3432 8090 0000 lds r8,(MittelIntegralRoll2)+2
6687 3436 9090 0000 lds r9,(MittelIntegralRoll2)+3
6688 343a E090 0000 lds r14,IntegralRoll2
6689 343e F090 0000 lds r15,(IntegralRoll2)+1
6690 3442 0091 0000 lds r16,(IntegralRoll2)+2
6691 3446 1091 0000 lds r17,(IntegralRoll2)+3
6692 344a E9A2 std Y+33,r14
6693 344c FAA2 std Y+34,r15
6694 344e 0BA3 std Y+35,r16
6695 3450 1CA3 std Y+36,r17
6696 3452 6E0C add r6,r14
6697 3454 7F1C adc r7,r15
6698 3456 801E adc r8,r16
6699 3458 911E adc r9,r17
6700 345a F090 0000 lds r15,Looping_Nick
6701 345e FB86 std Y+11,r15
6702 3460 FF20 tst r15
6703 3462 01F0 breq .+2
6704 3464 00C0 rjmp .L860
6705 3466 0B8D ldd r16,Y+27
6706 3468 0023 tst r16
6707 346a 01F0 breq .+2
6708 346c 00C0 rjmp .L860
6709 346e 8093 0000 sts MittelIntegralRoll,r24
6710 3472 9093 0000 sts (MittelIntegralRoll)+1,r25
6711 3476 A093 0000 sts (MittelIntegralRoll)+2,r26
6712 347a B093 0000 sts (MittelIntegralRoll)+3,r27
6713 347e 2093 0000 sts MittelIntegralNick,r18
6714 3482 3093 0000 sts (MittelIntegralNick)+1,r19
6715 3486 4093 0000 sts (MittelIntegralNick)+2,r20
6716 348a 5093 0000 sts (MittelIntegralNick)+3,r21
6717 .L1196:
6718 348e 8091 0000 lds r24,Aktuell_az
6719 3492 9091 0000 lds r25,(Aktuell_az)+1
6720 3496 8150 subi r24,lo8(513)
6721 3498 9240 sbci r25,hi8(513)
6722 349a 04F0 brlt .+2
6723 349c 00C0 rjmp .L862
6724 349e 8091 0000 lds r24,MotorenEin
6725 34a2 8823 tst r24
6726 34a4 01F0 breq .+2
6727 34a6 00C0 rjmp .L862
6728 .L861:
6729 34a8 8091 0000 lds r24,ZaehlMessungen
6730 34ac 9091 0000 lds r25,(ZaehlMessungen)+1
6731 34b0 8F3F cpi r24,255
6732 34b2 9105 cpc r25,__zero_reg__
6733 34b4 01F0 breq .+2
6734 34b6 00F4 brsh .+2
6735 34b8 00C0 rjmp .L1151
6736 .L1265:
6737 34ba 8B85 ldd r24,Y+11
6738 34bc 8823 tst r24
6739 34be 01F0 breq .+2
6740 34c0 00C0 rjmp .L874
6741 34c2 9B8D ldd r25,Y+27
6742 34c4 9923 tst r25
6743 34c6 01F0 breq .+2
6744 34c8 00C0 rjmp .L874
6745 34ca A091 0000 lds r26,TrichterFlug
6746 34ce AC8F std Y+28,r26
6747 34d0 AA23 tst r26
6748 34d2 01F0 breq .+2
6749 34d4 00C0 rjmp .L874
6750 34d6 B091 0000 lds r27,EE_Parameter+57
6751 34da B98B std Y+17,r27
6752 34dc BB23 tst r27
6753 34de 01F4 brne .+2
6754 34e0 00C0 rjmp .L874
6755 34e2 2092 0000 sts MittelIntegralNick2,r2
6756 34e6 3092 0000 sts (MittelIntegralNick2)+1,r3
6757 34ea 4092 0000 sts (MittelIntegralNick2)+2,r4
6758 34ee 5092 0000 sts (MittelIntegralNick2)+3,r5
6759 34f2 6092 0000 sts MittelIntegralRoll2,r6
6760 34f6 7092 0000 sts (MittelIntegralRoll2)+1,r7
6761 34fa 8092 0000 sts (MittelIntegralRoll2)+2,r8
6762 34fe 9092 0000 sts (MittelIntegralRoll2)+3,r9
6763 3502 8091 0000 lds r24,MittelIntegralNick
6764 3506 9091 0000 lds r25,(MittelIntegralNick)+1
6765 350a A091 0000 lds r26,(MittelIntegralNick)+2
6766 350e B091 0000 lds r27,(MittelIntegralNick)+3
6767 3512 B7FF sbrs r27,7
6768 3514 00C0 rjmp .+4
6769 3516 0C94 0000 jmp .L1234
6770 .L875:
6771 351a 292E mov r2,r25
6772 351c 3A2E mov r3,r26
6773 351e 4B2E mov r4,r27
6774 3520 5524 clr r5
6775 3522 47FC sbrc r4,7
6776 3524 5A94 dec r5
6777 3526 2092 0000 sts MittelIntegralNick,r2
6778 352a 3092 0000 sts (MittelIntegralNick)+1,r3
6779 352e 4092 0000 sts (MittelIntegralNick)+2,r4
6780 3532 5092 0000 sts (MittelIntegralNick)+3,r5
6781 3536 8091 0000 lds r24,MittelIntegralRoll
6782 353a 9091 0000 lds r25,(MittelIntegralRoll)+1
6783 353e A091 0000 lds r26,(MittelIntegralRoll)+2
6784 3542 B091 0000 lds r27,(MittelIntegralRoll)+3
6785 3546 B7FF sbrs r27,7
6786 3548 00C0 rjmp .+4
6787 354a 0C94 0000 jmp .L1235
6788 .L876:
6789 354e 892F mov r24,r25
6790 3550 9A2F mov r25,r26
6791 3552 AB2F mov r26,r27
6792 3554 BB27 clr r27
6793 3556 A7FD sbrc r26,7
6794 3558 BA95 dec r27
6795 355a 8B83 std Y+3,r24
6796 355c 9C83 std Y+4,r25
6797 355e AD83 std Y+5,r26
6798 3560 BE83 std Y+6,r27
6799 3562 8093 0000 sts MittelIntegralRoll,r24
6800 3566 9093 0000 sts (MittelIntegralRoll)+1,r25
6801 356a A093 0000 sts (MittelIntegralRoll)+2,r26
6802 356e B093 0000 sts (MittelIntegralRoll)+3,r27
6803 3572 8091 0000 lds r24,EE_Parameter+23
6804 3576 E82E mov r14,r24
6805 3578 FF24 clr r15
6806 357a 0027 clr r16
6807 357c 1127 clr r17
6808 357e 2091 0000 lds r18,IntegralAccNick
6809 3582 3091 0000 lds r19,(IntegralAccNick)+1
6810 3586 4091 0000 lds r20,(IntegralAccNick)+2
6811 358a 5091 0000 lds r21,(IntegralAccNick)+3
6812 358e C801 movw r24,r16
6813 3590 B701 movw r22,r14
6814 3592 0E94 0000 call __mulsi3
6815 3596 97FF sbrs r25,7
6816 3598 00C0 rjmp .+4
6817 359a 0C94 0000 jmp .L1236
6818 .L877:
6819 359e 672E mov r6,r23
6820 35a0 782E mov r7,r24
6821 35a2 892E mov r8,r25
6822 35a4 9924 clr r9
6823 35a6 87FC sbrc r8,7
6824 35a8 9A94 dec r9
6825 35aa 2091 0000 lds r18,IntegralAccRoll
6826 35ae 3091 0000 lds r19,(IntegralAccRoll)+1
6827 35b2 4091 0000 lds r20,(IntegralAccRoll)+2
6828 35b6 5091 0000 lds r21,(IntegralAccRoll)+3
6829 35ba C801 movw r24,r16
6830 35bc B701 movw r22,r14
6831 35be 0E94 0000 call __mulsi3
6832 35c2 97FF sbrs r25,7
6833 35c4 00C0 rjmp .+4
6834 35c6 0C94 0000 jmp .L1237
6835 .L878:
6836 35ca A72E mov r10,r23
6837 35cc B82E mov r11,r24
6838 35ce C92E mov r12,r25
6839 35d0 DD24 clr r13
6840 35d2 C7FC sbrc r12,7
6841 35d4 DA94 dec r13
6842 35d6 D201 movw r26,r4
6843 35d8 C101 movw r24,r2
6844 35da 8619 sub r24,r6
6845 35dc 9709 sbc r25,r7
6846 35de A809 sbc r26,r8
6847 35e0 B909 sbc r27,r9
6848 35e2 2091 0000 lds r18,EE_Parameter+56
6849 35e6 E22E mov r14,r18
6850 35e8 FF24 clr r15
6851 35ea 0027 clr r16
6852 35ec 1127 clr r17
6853 35ee BC01 movw r22,r24
6854 35f0 CD01 movw r24,r26
6855 35f2 A801 movw r20,r16
6856 35f4 9701 movw r18,r14
6857 35f6 0E94 0000 call __divmodsi4
6858 35fa 3901 movw r6,r18
6859 35fc 4A01 movw r8,r20
6860 35fe 1901 movw r2,r18
6861 3600 2A01 movw r4,r20
6862 3602 8B81 ldd r24,Y+3
6863 3604 9C81 ldd r25,Y+4
6864 3606 AD81 ldd r26,Y+5
6865 3608 BE81 ldd r27,Y+6
6866 360a 8A19 sub r24,r10
6867 360c 9B09 sbc r25,r11
6868 360e AC09 sbc r26,r12
6869 3610 BD09 sbc r27,r13
6870 3612 BC01 movw r22,r24
6871 3614 CD01 movw r24,r26
6872 3616 A801 movw r20,r16
6873 3618 9701 movw r18,r14
6874 361a 0E94 0000 call __divmodsi4
6875 361e D401 movw r26,r8
6876 3620 C301 movw r24,r6
6877 3622 97FE sbrs r9,7
6878 3624 00C0 rjmp .+4
6879 3626 0C94 0000 jmp .L1238
6880 .L880:
6881 362a 892F mov r24,r25
6882 362c 9A2F mov r25,r26
6883 362e AB2F mov r26,r27
6884 3630 BB27 clr r27
6885 3632 A7FD sbrc r26,7
6886 3634 BA95 dec r27
6887 3636 BC01 movw r22,r24
6888 3638 DA01 movw r26,r20
6889 363a C901 movw r24,r18
6890 363c 57FF sbrs r21,7
6891 363e 00C0 rjmp .+4
6892 3640 0C94 0000 jmp .L1239
6893 .L881:
6894 3644 892F mov r24,r25
6895 3646 9A2F mov r25,r26
6896 3648 AB2F mov r26,r27
6897 364a BB27 clr r27
6898 364c A7FD sbrc r26,7
6899 364e BA95 dec r27
6900 3650 6C01 movw r12,r24
6901 3652 8091 0000 lds r24,MaxStickNick
6902 3656 9091 0000 lds r25,(MaxStickNick)+1
6903 365a 8134 cpi r24,65
6904 365c 9105 cpc r25,__zero_reg__
6905 365e 04F4 brge .L883
6906 3660 8091 0000 lds r24,MaxStickRoll
6907 3664 9091 0000 lds r25,(MaxStickRoll)+1
6908 3668 8134 cpi r24,65
6909 366a 9105 cpc r25,__zero_reg__
6910 366c 04F4 brge .L883
6911 366e 8091 0000 lds r24,EE_Parameter+3
6912 3672 E82F mov r30,r24
6913 3674 FF27 clr r31
6914 3676 EE0F add r30,r30
6915 3678 FF1F adc r31,r31
6916 367a E050 subi r30,lo8(-(PPM_in))
6917 367c F040 sbci r31,hi8(-(PPM_in))
6918 367e 8081 ld r24,Z
6919 3680 9181 ldd r25,Z+1
6920 3682 0190 ld __tmp_reg__,Z+
6921 3684 F081 ld r31,Z
6922 3686 E02D mov r30,__tmp_reg__
6923 3688 F7FF sbrs r31,7
6924 368a 00C0 rjmp .+4
6925 368c 0C94 0000 jmp .L1240
6926 .L884:
6927 3690 7A97 sbiw r30,26
6928 3692 04F0 brlt .L882
6929 .L883:
6930 3694 7093 0000 sts (LageKorrekturNick)+1,r23
6931 3698 6093 0000 sts LageKorrekturNick,r22
6932 369c D092 0000 sts (LageKorrekturRoll)+1,r13
6933 36a0 C092 0000 sts LageKorrekturRoll,r12
6934 36a4 CB01 movw r24,r22
6935 36a6 77FF sbrs r23,7
6936 36a8 00C0 rjmp .+4
6937 36aa 0C94 0000 jmp .L1241
6938 .L885:
6939 36ae BC01 movw r22,r24
6940 36b0 7595 asr r23
6941 36b2 6795 ror r22
6942 36b4 C601 movw r24,r12
6943 36b6 D7FE sbrs r13,7
6944 36b8 00C0 rjmp .+4
6945 36ba 0C94 0000 jmp .L1242
6946 .L886:
6947 36be 6C01 movw r12,r24
6948 36c0 D594 asr r13
6949 36c2 C794 ror r12
6950 .L882:
6951 36c4 EE88 ldd r14,Y+22
6952 36c6 FF88 ldd r15,Y+23
6953 36c8 088D ldd r16,Y+24
6954 36ca 198D ldd r17,Y+25
6955 36cc 2D8D ldd r18,Y+29
6956 36ce 3E8D ldd r19,Y+30
6957 36d0 4F8D ldd r20,Y+31
6958 36d2 58A1 ldd r21,Y+32
6959 36d4 E21A sub r14,r18
6960 36d6 F30A sbc r15,r19
6961 36d8 040B sbc r16,r20
6962 36da 150B sbc r17,r21
6963 36dc EDA2 std Y+37,r14
6964 36de FEA2 std Y+38,r15
6965 36e0 0FA3 std Y+39,r16
6966 36e2 18A7 std Y+40,r17
6967 36e4 E092 0000 sts tmp_long.3,r14
6968 36e8 F092 0000 sts (tmp_long.3)+1,r15
6969 36ec 0093 0000 sts (tmp_long.3)+2,r16
6970 36f0 1093 0000 sts (tmp_long.3)+3,r17
6971 36f4 89A1 ldd r24,Y+33
6972 36f6 9AA1 ldd r25,Y+34
6973 36f8 ABA1 ldd r26,Y+35
6974 36fa BCA1 ldd r27,Y+36
6975 36fc EC84 ldd r14,Y+12
6976 36fe FD84 ldd r15,Y+13
6977 3700 0E85 ldd r16,Y+14
6978 3702 1F85 ldd r17,Y+15
6979 3704 8E19 sub r24,r14
6980 3706 9F09 sbc r25,r15
6981 3708 A00B sbc r26,r16
6982 370a B10B sbc r27,r17
6983 370c 8F83 std Y+7,r24
6984 370e 9887 std Y+8,r25
6985 3710 A987 std Y+9,r26
6986 3712 BA87 std Y+10,r27
6987 3714 8093 0000 sts tmp_long2.4,r24
6988 3718 9093 0000 sts (tmp_long2.4)+1,r25
6989 371c A093 0000 sts (tmp_long2.4)+2,r26
6990 3720 B093 0000 sts (tmp_long2.4)+3,r27
6991 3724 0DA1 ldd r16,Y+37
6992 3726 1EA1 ldd r17,Y+38
6993 3728 2FA1 ldd r18,Y+39
6994 372a 38A5 ldd r19,Y+40
6995 372c 0093 0000 sts IntegralFehlerNick.5,r16
6996 3730 1093 0000 sts (IntegralFehlerNick.5)+1,r17
6997 3734 2093 0000 sts (IntegralFehlerNick.5)+2,r18
6998 3738 3093 0000 sts (IntegralFehlerNick.5)+3,r19
6999 373c 8093 0000 sts IntegralFehlerRoll.6,r24
7000 3740 9093 0000 sts (IntegralFehlerRoll.6)+1,r25
7001 3744 A093 0000 sts (IntegralFehlerRoll.6)+2,r26
7002 3748 B093 0000 sts (IntegralFehlerRoll.6)+3,r27
7003 374c 8091 0000 lds r24,Mess_IntegralNick2
7004 3750 9091 0000 lds r25,(Mess_IntegralNick2)+1
7005 3754 A091 0000 lds r26,(Mess_IntegralNick2)+2
7006 3758 B091 0000 lds r27,(Mess_IntegralNick2)+3
7007 375c 801B sub r24,r16
7008 375e 910B sbc r25,r17
7009 3760 A20B sbc r26,r18
7010 3762 B30B sbc r27,r19
7011 3764 8093 0000 sts Mess_IntegralNick2,r24
7012 3768 9093 0000 sts (Mess_IntegralNick2)+1,r25
7013 376c A093 0000 sts (Mess_IntegralNick2)+2,r26
7014 3770 B093 0000 sts (Mess_IntegralNick2)+3,r27
7015 3774 8091 0000 lds r24,Mess_IntegralRoll2
7016 3778 9091 0000 lds r25,(Mess_IntegralRoll2)+1
7017 377c A091 0000 lds r26,(Mess_IntegralRoll2)+2
7018 3780 B091 0000 lds r27,(Mess_IntegralRoll2)+3
7019 3784 2F81 ldd r18,Y+7
7020 3786 3885 ldd r19,Y+8
7021 3788 4985 ldd r20,Y+9
7022 378a 5A85 ldd r21,Y+10
7023 378c 821B sub r24,r18
7024 378e 930B sbc r25,r19
7025 3790 A40B sbc r26,r20
7026 3792 B50B sbc r27,r21
7027 3794 8093 0000 sts Mess_IntegralRoll2,r24
7028 3798 9093 0000 sts (Mess_IntegralRoll2)+1,r25
7029 379c A093 0000 sts (Mess_IntegralRoll2)+2,r26
7030 37a0 B093 0000 sts (Mess_IntegralRoll2)+3,r27
7031 37a4 3989 ldd r19,Y+17
7032 37a6 3323 tst r19
7033 37a8 01F0 breq .L889
7034 37aa 2091 0000 lds r18,GierGyroFehler
7035 37ae 3091 0000 lds r19,(GierGyroFehler)+1
7036 37b2 2138 cpi r18,129
7037 37b4 3105 cpc r19,__zero_reg__
7038 37b6 04F0 brlt .L890
7039 37b8 8091 0000 lds r24,AdNeutralGier
7040 37bc 9091 0000 lds r25,(AdNeutralGier)+1
7041 37c0 0196 adiw r24,1
7042 37c2 9093 0000 sts (AdNeutralGier)+1,r25
7043 37c6 8093 0000 sts AdNeutralGier,r24
7044 37ca 8091 0000 lds r24,AdNeutralGierBias
7045 37ce 9091 0000 lds r25,(AdNeutralGierBias)+1
7046 37d2 0196 adiw r24,1
7047 37d4 9093 0000 sts (AdNeutralGierBias)+1,r25
7048 37d8 8093 0000 sts AdNeutralGierBias,r24
7049 .L890:
7050 37dc 2058 subi r18,lo8(-128)
7051 37de 3F4F sbci r19,hi8(-128)
7052 37e0 04F4 brge .L889
7053 37e2 8091 0000 lds r24,AdNeutralGier
7054 37e6 9091 0000 lds r25,(AdNeutralGier)+1
7055 37ea 0197 sbiw r24,1
7056 37ec 9093 0000 sts (AdNeutralGier)+1,r25
7057 37f0 8093 0000 sts AdNeutralGier,r24
7058 37f4 8091 0000 lds r24,AdNeutralGierBias
7059 37f8 9091 0000 lds r25,(AdNeutralGierBias)+1
7060 37fc 0197 sbiw r24,1
7061 37fe 9093 0000 sts (AdNeutralGierBias)+1,r25
7062 3802 8093 0000 sts AdNeutralGierBias,r24
7063 .L889:
7064 3806 1092 0000 sts (GierGyroFehler)+1,__zero_reg__
7065 380a 1092 0000 sts GierGyroFehler,__zero_reg__
7066 380e 41E0 ldi r20,lo8(1)
7067 3810 A42E mov r10,r20
7068 3812 B12C mov r11,__zero_reg__
7069 3814 8DA1 ldd r24,Y+37
7070 3816 9EA1 ldd r25,Y+38
7071 3818 AFA1 ldd r26,Y+39
7072 381a B8A5 ldd r27,Y+40
7073 381c B7FF sbrs r27,7
7074 381e 00C0 rjmp .+4
7075 3820 0C94 0000 jmp .L1243
7076 .L893:
7077 3824 8150 subi r24,lo8(513)
7078 3826 9240 sbci r25,hi8(513)
7079 3828 A040 sbci r26,hlo8(513)
7080 382a B040 sbci r27,hhi8(513)
7081 382c 04F0 brlt .L892
7082 382e 34E0 ldi r19,lo8(4)
7083 3830 A32E mov r10,r19
7084 3832 B12C mov r11,__zero_reg__
7085 .L892:
7086 3834 8091 0000 lds r24,MittelIntegralNick_Alt.22
7087 3838 9091 0000 lds r25,(MittelIntegralNick_Alt.22)+1
7088 383c A091 0000 lds r26,(MittelIntegralNick_Alt.22)+2
7089 3840 B091 0000 lds r27,(MittelIntegralNick_Alt.22)+3
7090 3844 E090 0000 lds r14,MittelIntegralNick
7091 3848 F090 0000 lds r15,(MittelIntegralNick)+1
7092 384c 0091 0000 lds r16,(MittelIntegralNick)+2
7093 3850 1091 0000 lds r17,(MittelIntegralNick)+3
7094 3854 8E19 sub r24,r14
7095 3856 9F09 sbc r25,r15
7096 3858 A00B sbc r26,r16
7097 385a B10B sbc r27,r17
7098 385c 815E subi r24,lo8(-(19999))
7099 385e 914B sbci r25,hi8(-(19999))
7100 3860 AF4F sbci r26,hlo8(-(19999))
7101 3862 BF4F sbci r27,hhi8(-(19999))
7102 3864 8F53 subi r24,lo8(39999)
7103 3866 9C49 sbci r25,hi8(39999)
7104 3868 A040 sbci r26,hlo8(39999)
7105 386a B040 sbci r27,hhi8(39999)
7106 386c 00F0 brlo .+4
7107 386e 0C94 0000 jmp .L894
7108 3872 B092 0000 sts (cnt.17)+1,r11
7109 3876 A092 0000 sts cnt.17,r10
7110 387a 2DA1 ldd r18,Y+37
7111 387c 3EA1 ldd r19,Y+38
7112 387e 4FA1 ldd r20,Y+39
7113 3880 58A5 ldd r21,Y+40
7114 3882 2130 cpi r18,lo8(4097)
7115 3884 80E1 ldi r24,hi8(4097)
7116 3886 3807 cpc r19,r24
7117 3888 80E0 ldi r24,hlo8(4097)
7118 388a 4807 cpc r20,r24
7119 388c 80E0 ldi r24,hhi8(4097)
7120 388e 5807 cpc r21,r24
7121 3890 04F4 brge .+4
7122 3892 0C94 0000 jmp .L895
7123 3896 8091 0000 lds r24,last_n_p.18
7124 389a 8823 tst r24
7125 389c 01F4 brne .+4
7126 389e 0C94 0000 jmp .L896
7127 38a2 7093 0000 sts (LageKorrekturNick)+1,r23
7128 38a6 6093 0000 sts LageKorrekturNick,r22
7129 38aa DA01 movw r26,r20
7130 38ac C901 movw r24,r18
7131 38ae 57FF sbrs r21,7
7132 38b0 00C0 rjmp .+4
7133 38b2 0C94 0000 jmp .L1244
7134 .L897:
7135 38b6 B7FF sbrs r27,7
7136 38b8 00C0 rjmp .+4
7137 38ba 0C94 0000 jmp .L1245
7138 .L898:
7139 38be 29E0 ldi r18,9
7140 38c0 B595 1: asr r27
7141 38c2 A795 ror r26
7142 38c4 9795 ror r25
7143 38c6 8795 ror r24
7144 38c8 2A95 dec r18
7145 38ca 01F4 brne 1b
7146 38cc A80E add r10,r24
7147 38ce B91E adc r11,r25
7148 38d0 B092 0000 sts (cnt.17)+1,r11
7149 38d4 A092 0000 sts cnt.17,r10
7150 38d8 2DA1 ldd r18,Y+37
7151 38da 3EA1 ldd r19,Y+38
7152 38dc 4FA1 ldd r20,Y+39
7153 38de 58A5 ldd r21,Y+40
7154 38e0 57FF sbrs r21,7
7155 38e2 00C0 rjmp .+4
7156 38e4 0C94 0000 jmp .L1246
7157 .L899:
7158 38e8 3901 movw r6,r18
7159 38ea 4A01 movw r8,r20
7160 38ec A3E0 ldi r26,3
7161 38ee 9594 1: asr r9
7162 38f0 8794 ror r8
7163 38f2 7794 ror r7
7164 38f4 6794 ror r6
7165 38f6 AA95 dec r26
7166 38f8 01F4 brne 1b
7167 38fa 1301 movw r2,r6
7168 38fc 2401 movw r4,r8
7169 38fe 99E8 ldi r25,lo8(5001)
7170 3900 6916 cp r6,r25
7171 3902 93E1 ldi r25,hi8(5001)
7172 3904 7906 cpc r7,r25
7173 3906 90E0 ldi r25,hlo8(5001)
7174 3908 8906 cpc r8,r25
7175 390a 90E0 ldi r25,hhi8(5001)
7176 390c 9906 cpc r9,r25
7177 390e 04F0 brlt .L900
7178 3910 F8E8 ldi r31,lo8(5000)
7179 3912 6F2E mov r6,r31
7180 3914 F3E1 ldi r31,hi8(5000)
7181 3916 7F2E mov r7,r31
7182 3918 812C mov r8,__zero_reg__
7183 391a 912C mov r9,__zero_reg__
7184 391c 1301 movw r2,r6
7185 391e 2401 movw r4,r8
7186 .L900:
7187 3920 D401 movw r26,r8
7188 3922 C301 movw r24,r6
7189 3924 97FE sbrs r9,7
7190 3926 00C0 rjmp .+4
7191 3928 0C94 0000 jmp .L1247
7192 .L901:
7193 392c 892F mov r24,r25
7194 392e 9A2F mov r25,r26
7195 3930 AB2F mov r26,r27
7196 3932 BB27 clr r27
7197 3934 A7FD sbrc r26,7
7198 3936 BA95 dec r27
7199 3938 680F add r22,r24
7200 393a 791F adc r23,r25
7201 .L903:
7202 393c 2DA1 ldd r18,Y+37
7203 393e 3EA1 ldd r19,Y+38
7204 3940 4FA1 ldd r20,Y+39
7205 3942 58A5 ldd r21,Y+40
7206 3944 2030 cpi r18,lo8(-4096)
7207 3946 80EF ldi r24,hi8(-4096)
7208 3948 3807 cpc r19,r24
7209 394a 8FEF ldi r24,hlo8(-4096)
7210 394c 4807 cpc r20,r24
7211 394e 8FEF ldi r24,hhi8(-4096)
7212 3950 5807 cpc r21,r24
7213 3952 04F0 brlt .+4
7214 3954 0C94 0000 jmp .L904
7215 3958 8091 0000 lds r24,last_n_n.19
7216 395c 8823 tst r24
7217 395e 01F4 brne .+4
7218 3960 0C94 0000 jmp .L905
7219 3964 7093 0000 sts (LageKorrekturNick)+1,r23
7220 3968 6093 0000 sts LageKorrekturNick,r22
7221 396c DA01 movw r26,r20
7222 396e C901 movw r24,r18
7223 3970 57FF sbrs r21,7
7224 3972 00C0 rjmp .+4
7225 3974 0C94 0000 jmp .L1248
7226 .L906:
7227 3978 9C01 movw r18,r24
7228 397a AD01 movw r20,r26
7229 397c B7FF sbrs r27,7
7230 397e 00C0 rjmp .+4
7231 3980 0C94 0000 jmp .L1249
7232 .L907:
7233 3984 69E0 ldi r22,9
7234 3986 5595 1: asr r21
7235 3988 4795 ror r20
7236 398a 3795 ror r19
7237 398c 2795 ror r18
7238 398e 6A95 dec r22
7239 3990 01F4 brne 1b
7240 3992 8091 0000 lds r24,cnt.17
7241 3996 9091 0000 lds r25,(cnt.17)+1
7242 399a 820F add r24,r18
7243 399c 931F adc r25,r19
7244 399e 9093 0000 sts (cnt.17)+1,r25
7245 39a2 8093 0000 sts cnt.17,r24
7246 39a6 2DA1 ldd r18,Y+37
7247 39a8 3EA1 ldd r19,Y+38
7248 39aa 4FA1 ldd r20,Y+39
7249 39ac 58A5 ldd r21,Y+40
7250 39ae 57FF sbrs r21,7
7251 39b0 00C0 rjmp .+4
7252 39b2 0C94 0000 jmp .L1250
7253 .L908:
7254 39b6 3901 movw r6,r18
7255 39b8 4A01 movw r8,r20
7256 39ba 43E0 ldi r20,3
7257 39bc 9594 1: asr r9
7258 39be 8794 ror r8
7259 39c0 7794 ror r7
7260 39c2 6794 ror r6
7261 39c4 4A95 dec r20
7262 39c6 01F4 brne 1b
7263 39c8 98E7 ldi r25,lo8(-5000)
7264 39ca 6916 cp r6,r25
7265 39cc 9CEE ldi r25,hi8(-5000)
7266 39ce 7906 cpc r7,r25
7267 39d0 9FEF ldi r25,hlo8(-5000)
7268 39d2 8906 cpc r8,r25
7269 39d4 9FEF ldi r25,hhi8(-5000)
7270 39d6 9906 cpc r9,r25
7271 39d8 04F4 brge .L1179
7272 39da 38E7 ldi r19,lo8(-5000)
7273 39dc 632E mov r6,r19
7274 39de 3CEE ldi r19,hi8(-5000)
7275 39e0 732E mov r7,r19
7276 39e2 3FEF ldi r19,hlo8(-5000)
7277 39e4 832E mov r8,r19
7278 39e6 3FEF ldi r19,hhi8(-5000)
7279 39e8 932E mov r9,r19
7280 .L1179:
7281 39ea 6092 0000 sts ausgleichNick.13,r6
7282 39ee 7092 0000 sts (ausgleichNick.13)+1,r7
7283 39f2 8092 0000 sts (ausgleichNick.13)+2,r8
7284 39f6 9092 0000 sts (ausgleichNick.13)+3,r9
7285 39fa D401 movw r26,r8
7286 39fc C301 movw r24,r6
7287 39fe 97FE sbrs r9,7
7288 3a00 00C0 rjmp .+4
7289 3a02 0C94 0000 jmp .L1251
7290 .L910:
7291 3a06 892F mov r24,r25
7292 3a08 9A2F mov r25,r26
7293 3a0a AB2F mov r26,r27
7294 3a0c BB27 clr r27
7295 3a0e A7FD sbrc r26,7
7296 3a10 BA95 dec r27
7297 3a12 6091 0000 lds r22,LageKorrekturNick
7298 3a16 7091 0000 lds r23,(LageKorrekturNick)+1
7299 3a1a 680F add r22,r24
7300 3a1c 791F adc r23,r25
7301 .L913:
7302 3a1e A989 ldd r26,Y+17
7303 3a20 2A2F mov r18,r26
7304 3a22 3327 clr r19
7305 3a24 8091 0000 lds r24,cnt.17
7306 3a28 9091 0000 lds r25,(cnt.17)+1
7307 3a2c 2817 cp r18,r24
7308 3a2e 3907 cpc r19,r25
7309 3a30 04F4 brge .L914
7310 3a32 3093 0000 sts (cnt.17)+1,r19
7311 3a36 2093 0000 sts cnt.17,r18
7312 .L914:
7313 3a3a 2DA1 ldd r18,Y+37
7314 3a3c 3EA1 ldd r19,Y+38
7315 3a3e 4FA1 ldd r20,Y+39
7316 3a40 58A5 ldd r21,Y+40
7317 3a42 2138 cpi r18,lo8(129)
7318 3a44 3105 cpc r19,__zero_reg__
7319 3a46 4105 cpc r20,__zero_reg__
7320 3a48 5105 cpc r21,__zero_reg__
7321 3a4a 04F0 brlt .L915
7322 3a4c 8091 0000 lds r24,AdNeutralNick
7323 3a50 9091 0000 lds r25,(AdNeutralNick)+1
7324 3a54 2091 0000 lds r18,cnt.17
7325 3a58 3091 0000 lds r19,(cnt.17)+1
7326 3a5c 820F add r24,r18
7327 3a5e 931F adc r25,r19
7328 3a60 9093 0000 sts (AdNeutralNick)+1,r25
7329 3a64 8093 0000 sts AdNeutralNick,r24
7330 .L915:
7331 3a68 8DA1 ldd r24,Y+37
7332 3a6a 9EA1 ldd r25,Y+38
7333 3a6c AFA1 ldd r26,Y+39
7334 3a6e B8A5 ldd r27,Y+40
7335 3a70 8058 subi r24,lo8(-128)
7336 3a72 9F4F sbci r25,hi8(-128)
7337 3a74 AF4F sbci r26,hlo8(-128)
7338 3a76 BF4F sbci r27,hhi8(-128)
7339 3a78 04F4 brge .L916
7340 3a7a 8091 0000 lds r24,AdNeutralNick
7341 3a7e 9091 0000 lds r25,(AdNeutralNick)+1
7342 3a82 2091 0000 lds r18,cnt.17
7343 3a86 3091 0000 lds r19,(cnt.17)+1
7344 3a8a 821B sub r24,r18
7345 3a8c 930B sbc r25,r19
7346 3a8e 9093 0000 sts (AdNeutralNick)+1,r25
7347 3a92 8093 0000 sts AdNeutralNick,r24
7348 .L916:
7349 3a96 B1E0 ldi r27,lo8(1)
7350 3a98 AB2E mov r10,r27
7351 3a9a B12C mov r11,__zero_reg__
7352 3a9c 8F81 ldd r24,Y+7
7353 3a9e 9885 ldd r25,Y+8
7354 3aa0 A985 ldd r26,Y+9
7355 3aa2 BA85 ldd r27,Y+10
7356 3aa4 B7FF sbrs r27,7
7357 3aa6 00C0 rjmp .+4
7358 3aa8 0C94 0000 jmp .L1252
7359 .L918:
7360 3aac 8150 subi r24,lo8(513)
7361 3aae 9240 sbci r25,hi8(513)
7362 3ab0 A040 sbci r26,hlo8(513)
7363 3ab2 B040 sbci r27,hhi8(513)
7364 3ab4 04F0 brlt .L917
7365 3ab6 A4E0 ldi r26,lo8(4)
7366 3ab8 AA2E mov r10,r26
7367 3aba B12C mov r11,__zero_reg__
7368 .L917:
7369 3abc 20E0 ldi r18,lo8(0)
7370 3abe 30E0 ldi r19,hi8(0)
7371 3ac0 40E0 ldi r20,hlo8(0)
7372 3ac2 50E0 ldi r21,hhi8(0)
7373 3ac4 8091 0000 lds r24,MittelIntegralRoll_Alt.23
7374 3ac8 9091 0000 lds r25,(MittelIntegralRoll_Alt.23)+1
7375 3acc A091 0000 lds r26,(MittelIntegralRoll_Alt.23)+2
7376 3ad0 B091 0000 lds r27,(MittelIntegralRoll_Alt.23)+3
7377 3ad4 6090 0000 lds r6,MittelIntegralRoll
7378 3ad8 7090 0000 lds r7,(MittelIntegralRoll)+1
7379 3adc 8090 0000 lds r8,(MittelIntegralRoll)+2
7380 3ae0 9090 0000 lds r9,(MittelIntegralRoll)+3
7381 3ae4 8619 sub r24,r6
7382 3ae6 9709 sbc r25,r7
7383 3ae8 A809 sbc r26,r8
7384 3aea B909 sbc r27,r9
7385 3aec 815E subi r24,lo8(-(19999))
7386 3aee 914B sbci r25,hi8(-(19999))
7387 3af0 AF4F sbci r26,hlo8(-(19999))
7388 3af2 BF4F sbci r27,hhi8(-(19999))
7389 3af4 8F53 subi r24,lo8(39999)
7390 3af6 9C49 sbci r25,hi8(39999)
7391 3af8 A040 sbci r26,hlo8(39999)
7392 3afa B040 sbci r27,hhi8(39999)
7393 3afc 00F0 brlo .+4
7394 3afe 0C94 0000 jmp .L919
7395 3b02 B092 0000 sts (cnt.17)+1,r11
7396 3b06 A092 0000 sts cnt.17,r10
7397 3b0a 8F81 ldd r24,Y+7
7398 3b0c 9885 ldd r25,Y+8
7399 3b0e A985 ldd r26,Y+9
7400 3b10 BA85 ldd r27,Y+10
7401 3b12 8150 subi r24,lo8(4097)
7402 3b14 9041 sbci r25,hi8(4097)
7403 3b16 A040 sbci r26,hlo8(4097)
7404 3b18 B040 sbci r27,hhi8(4097)
7405 3b1a 04F4 brge .+4
7406 3b1c 0C94 0000 jmp .L920
7407 3b20 8091 0000 lds r24,last_r_p.20
7408 3b24 8823 tst r24
7409 3b26 01F4 brne .+4
7410 3b28 0C94 0000 jmp .L921
7411 3b2c D092 0000 sts (LageKorrekturRoll)+1,r13
7412 3b30 C092 0000 sts LageKorrekturRoll,r12
7413 3b34 8F81 ldd r24,Y+7
7414 3b36 9885 ldd r25,Y+8
7415 3b38 A985 ldd r26,Y+9
7416 3b3a BA85 ldd r27,Y+10
7417 3b3c B7FF sbrs r27,7
7418 3b3e 00C0 rjmp .+4
7419 3b40 0C94 0000 jmp .L1253
7420 .L922:
7421 3b44 B7FF sbrs r27,7
7422 3b46 00C0 rjmp .+4
7423 3b48 0C94 0000 jmp .L1254
7424 .L923:
7425 3b4c F9E0 ldi r31,9
7426 3b4e B595 1: asr r27
7427 3b50 A795 ror r26
7428 3b52 9795 ror r25
7429 3b54 8795 ror r24
7430 3b56 FA95 dec r31
7431 3b58 01F4 brne 1b
7432 3b5a A80E add r10,r24
7433 3b5c B91E adc r11,r25
7434 3b5e B092 0000 sts (cnt.17)+1,r11
7435 3b62 A092 0000 sts cnt.17,r10
7436 3b66 2F81 ldd r18,Y+7
7437 3b68 3885 ldd r19,Y+8
7438 3b6a 4985 ldd r20,Y+9
7439 3b6c 5A85 ldd r21,Y+10
7440 3b6e 57FF sbrs r21,7
7441 3b70 00C0 rjmp .+4
7442 3b72 0C94 0000 jmp .L1255
7443 .L924:
7444 3b76 E3E0 ldi r30,3
7445 3b78 5595 1: asr r21
7446 3b7a 4795 ror r20
7447 3b7c 3795 ror r19
7448 3b7e 2795 ror r18
7449 3b80 EA95 dec r30
7450 3b82 01F4 brne 1b
7451 3b84 2938 cpi r18,lo8(5001)
7452 3b86 F3E1 ldi r31,hi8(5001)
7453 3b88 3F07 cpc r19,r31
7454 3b8a F0E0 ldi r31,hlo8(5001)
7455 3b8c 4F07 cpc r20,r31
7456 3b8e F0E0 ldi r31,hhi8(5001)
7457 3b90 5F07 cpc r21,r31
7458 3b92 04F4 brge .+4
7459 3b94 0C94 0000 jmp .L1180
7460 3b98 88E8 ldi r24,lo8(5000)
7461 3b9a 93E1 ldi r25,hi8(5000)
7462 3b9c A0E0 ldi r26,hlo8(5000)
7463 3b9e B0E0 ldi r27,hhi8(5000)
7464 3ba0 8093 0000 sts ausgleichRoll.14,r24
7465 3ba4 9093 0000 sts (ausgleichRoll.14)+1,r25
7466 3ba8 A093 0000 sts (ausgleichRoll.14)+2,r26
7467 3bac B093 0000 sts (ausgleichRoll.14)+3,r27
7468 .L925:
7469 3bb0 8091 0000 lds r24,ausgleichRoll.14
7470 3bb4 9091 0000 lds r25,(ausgleichRoll.14)+1
7471 3bb8 A091 0000 lds r26,(ausgleichRoll.14)+2
7472 3bbc B091 0000 lds r27,(ausgleichRoll.14)+3
7473 3bc0 B7FF sbrs r27,7
7474 3bc2 00C0 rjmp .+4
7475 3bc4 0C94 0000 jmp .L1256
7476 .L926:
7477 3bc8 892F mov r24,r25
7478 3bca 9A2F mov r25,r26
7479 3bcc AB2F mov r26,r27
7480 3bce BB27 clr r27
7481 3bd0 A7FD sbrc r26,7
7482 3bd2 BA95 dec r27
7483 3bd4 C090 0000 lds r12,LageKorrekturRoll
7484 3bd8 D090 0000 lds r13,(LageKorrekturRoll)+1
7485 3bdc C80E add r12,r24
7486 3bde D91E adc r13,r25
7487 .L928:
7488 3be0 2F81 ldd r18,Y+7
7489 3be2 3885 ldd r19,Y+8
7490 3be4 4985 ldd r20,Y+9
7491 3be6 5A85 ldd r21,Y+10
7492 3be8 2030 cpi r18,lo8(-4096)
7493 3bea 80EF ldi r24,hi8(-4096)
7494 3bec 3807 cpc r19,r24
7495 3bee 8FEF ldi r24,hlo8(-4096)
7496 3bf0 4807 cpc r20,r24
7497 3bf2 8FEF ldi r24,hhi8(-4096)
7498 3bf4 5807 cpc r21,r24
7499 3bf6 04F0 brlt .+4
7500 3bf8 0C94 0000 jmp .L929
7501 3bfc 8091 0000 lds r24,last_r_n.21
7502 3c00 8823 tst r24
7503 3c02 01F4 brne .+4
7504 3c04 0C94 0000 jmp .L930
7505 3c08 D092 0000 sts (LageKorrekturRoll)+1,r13
7506 3c0c C092 0000 sts LageKorrekturRoll,r12
7507 3c10 DA01 movw r26,r20
7508 3c12 C901 movw r24,r18
7509 3c14 57FF sbrs r21,7
7510 3c16 00C0 rjmp .+4
7511 3c18 0C94 0000 jmp .L1257
7512 .L931:
7513 3c1c 9C01 movw r18,r24
7514 3c1e AD01 movw r20,r26
7515 3c20 B7FF sbrs r27,7
7516 3c22 00C0 rjmp .+4
7517 3c24 0C94 0000 jmp .L1258
7518 .L932:
7519 3c28 B9E0 ldi r27,9
7520 3c2a 5595 1: asr r21
7521 3c2c 4795 ror r20
7522 3c2e 3795 ror r19
7523 3c30 2795 ror r18
7524 3c32 BA95 dec r27
7525 3c34 01F4 brne 1b
7526 3c36 8091 0000 lds r24,cnt.17
7527 3c3a 9091 0000 lds r25,(cnt.17)+1
7528 3c3e 820F add r24,r18
7529 3c40 931F adc r25,r19
7530 3c42 9093 0000 sts (cnt.17)+1,r25
7531 3c46 8093 0000 sts cnt.17,r24
7532 3c4a 2F81 ldd r18,Y+7
7533 3c4c 3885 ldd r19,Y+8
7534 3c4e 4985 ldd r20,Y+9
7535 3c50 5A85 ldd r21,Y+10
7536 3c52 57FF sbrs r21,7
7537 3c54 00C0 rjmp .+4
7538 3c56 0C94 0000 jmp .L1259
7539 .L933:
7540 3c5a A3E0 ldi r26,3
7541 3c5c 5595 1: asr r21
7542 3c5e 4795 ror r20
7543 3c60 3795 ror r19
7544 3c62 2795 ror r18
7545 3c64 AA95 dec r26
7546 3c66 01F4 brne 1b
7547 3c68 2837 cpi r18,lo8(-5000)
7548 3c6a 9CEE ldi r25,hi8(-5000)
7549 3c6c 3907 cpc r19,r25
7550 3c6e 9FEF ldi r25,hlo8(-5000)
7551 3c70 4907 cpc r20,r25
7552 3c72 9FEF ldi r25,hhi8(-5000)
7553 3c74 5907 cpc r21,r25
7554 3c76 04F0 brlt .+4
7555 3c78 0C94 0000 jmp .L1181
7556 3c7c 88E7 ldi r24,lo8(-5000)
7557 3c7e 9CEE ldi r25,hi8(-5000)
7558 3c80 AFEF ldi r26,hlo8(-5000)
7559 3c82 BFEF ldi r27,hhi8(-5000)
7560 3c84 8093 0000 sts ausgleichRoll.14,r24
7561 3c88 9093 0000 sts (ausgleichRoll.14)+1,r25
7562 3c8c A093 0000 sts (ausgleichRoll.14)+2,r26
7563 3c90 B093 0000 sts (ausgleichRoll.14)+3,r27
7564 .L934:
7565 3c94 8091 0000 lds r24,ausgleichRoll.14
7566 3c98 9091 0000 lds r25,(ausgleichRoll.14)+1
7567 3c9c A091 0000 lds r26,(ausgleichRoll.14)+2
7568 3ca0 B091 0000 lds r27,(ausgleichRoll.14)+3
7569 3ca4 B7FF sbrs r27,7
7570 3ca6 00C0 rjmp .+4
7571 3ca8 0C94 0000 jmp .L1260
7572 .L935:
7573 3cac 892F mov r24,r25
7574 3cae 9A2F mov r25,r26
7575 3cb0 AB2F mov r26,r27
7576 3cb2 BB27 clr r27
7577 3cb4 A7FD sbrc r26,7
7578 3cb6 BA95 dec r27
7579 3cb8 C090 0000 lds r12,LageKorrekturRoll
7580 3cbc D090 0000 lds r13,(LageKorrekturRoll)+1
7581 3cc0 C80E add r12,r24
7582 3cc2 D91E adc r13,r25
7583 .L938:
7584 3cc4 A989 ldd r26,Y+17
7585 3cc6 2A2F mov r18,r26
7586 3cc8 3327 clr r19
7587 3cca 8091 0000 lds r24,cnt.17
7588 3cce 9091 0000 lds r25,(cnt.17)+1
7589 3cd2 2817 cp r18,r24
7590 3cd4 3907 cpc r19,r25
7591 3cd6 04F4 brge .L939
7592 3cd8 3093 0000 sts (cnt.17)+1,r19
7593 3cdc 2093 0000 sts cnt.17,r18
7594 .L939:
7595 3ce0 2F81 ldd r18,Y+7
7596 3ce2 3885 ldd r19,Y+8
7597 3ce4 4985 ldd r20,Y+9
7598 3ce6 5A85 ldd r21,Y+10
7599 3ce8 2138 cpi r18,lo8(129)
7600 3cea 3105 cpc r19,__zero_reg__
7601 3cec 4105 cpc r20,__zero_reg__
7602 3cee 5105 cpc r21,__zero_reg__
7603 3cf0 04F0 brlt .L940
7604 3cf2 8091 0000 lds r24,AdNeutralRoll
7605 3cf6 9091 0000 lds r25,(AdNeutralRoll)+1
7606 3cfa 2091 0000 lds r18,cnt.17
7607 3cfe 3091 0000 lds r19,(cnt.17)+1
7608 3d02 820F add r24,r18
7609 3d04 931F adc r25,r19
7610 3d06 9093 0000 sts (AdNeutralRoll)+1,r25
7611 3d0a 8093 0000 sts AdNeutralRoll,r24
7612 .L940:
7613 3d0e 8F81 ldd r24,Y+7
7614 3d10 9885 ldd r25,Y+8
7615 3d12 A985 ldd r26,Y+9
7616 3d14 BA85 ldd r27,Y+10
7617 3d16 8058 subi r24,lo8(-128)
7618 3d18 9F4F sbci r25,hi8(-128)
7619 3d1a AF4F sbci r26,hlo8(-128)
7620 3d1c BF4F sbci r27,hhi8(-128)
7621 3d1e 04F0 brlt .+2
7622 3d20 00C0 rjmp .L942
7623 3d22 8091 0000 lds r24,AdNeutralRoll
7624 3d26 9091 0000 lds r25,(AdNeutralRoll)+1
7625 3d2a 2091 0000 lds r18,cnt.17
7626 3d2e 3091 0000 lds r19,(cnt.17)+1
7627 3d32 821B sub r24,r18
7628 3d34 930B sbc r25,r19
7629 3d36 9093 0000 sts (AdNeutralRoll)+1,r25
7630 3d3a 8093 0000 sts AdNeutralRoll,r24
7631 3d3e 00C0 rjmp .L942
7632 .L862:
7633 3d40 8091 0000 lds r24,EE_Parameter+23
7634 3d44 E82E mov r14,r24
7635 3d46 FF24 clr r15
7636 3d48 0027 clr r16
7637 3d4a 1127 clr r17
7638 3d4c 6D8D ldd r22,Y+29
7639 3d4e 7E8D ldd r23,Y+30
7640 3d50 8F8D ldd r24,Y+31
7641 3d52 98A1 ldd r25,Y+32
7642 3d54 A801 movw r20,r16
7643 3d56 9701 movw r18,r14
7644 3d58 0E94 0000 call __divmodsi4
7645 3d5c 5901 movw r10,r18
7646 3d5e 6A01 movw r12,r20
7647 3d60 8091 0000 lds r24,Mittelwert_AccNick
7648 3d64 9091 0000 lds r25,(Mittelwert_AccNick)+1
7649 3d68 AA27 clr r26
7650 3d6a 97FD sbrc r25,7
7651 3d6c A095 com r26
7652 3d6e BA2F mov r27,r26
7653 3d70 A81A sub r10,r24
7654 3d72 B90A sbc r11,r25
7655 3d74 CA0A sbc r12,r26
7656 3d76 DB0A sbc r13,r27
7657 3d78 6C85 ldd r22,Y+12
7658 3d7a 7D85 ldd r23,Y+13
7659 3d7c 8E85 ldd r24,Y+14
7660 3d7e 9F85 ldd r25,Y+15
7661 3d80 A801 movw r20,r16
7662 3d82 9701 movw r18,r14
7663 3d84 0E94 0000 call __divmodsi4
7664 3d88 7901 movw r14,r18
7665 3d8a 8A01 movw r16,r20
7666 3d8c 8091 0000 lds r24,Mittelwert_AccRoll
7667 3d90 9091 0000 lds r25,(Mittelwert_AccRoll)+1
7668 3d94 AA27 clr r26
7669 3d96 97FD sbrc r25,7
7670 3d98 A095 com r26
7671 3d9a BA2F mov r27,r26
7672 3d9c E81A sub r14,r24
7673 3d9e F90A sbc r15,r25
7674 3da0 0A0B sbc r16,r26
7675 3da2 1B0B sbc r17,r27
7676 3da4 D601 movw r26,r12
7677 3da6 C501 movw r24,r10
7678 3da8 D7FE sbrs r13,7
7679 3daa 00C0 rjmp .+4
7680 3dac 0C94 0000 jmp .L1261
7681 .L863:
7682 3db0 5C01 movw r10,r24
7683 3db2 6D01 movw r12,r26
7684 3db4 A4E0 ldi r26,4
7685 3db6 D594 1: asr r13
7686 3db8 C794 ror r12
7687 3dba B794 ror r11
7688 3dbc A794 ror r10
7689 3dbe AA95 dec r26
7690 3dc0 01F4 brne 1b
7691 3dc2 D801 movw r26,r16
7692 3dc4 C701 movw r24,r14
7693 3dc6 17FF sbrs r17,7
7694 3dc8 00C0 rjmp .+4
7695 3dca 0C94 0000 jmp .L1262
7696 .L864:
7697 3dce 7C01 movw r14,r24
7698 3dd0 8D01 movw r16,r26
7699 3dd2 F4E0 ldi r31,4
7700 3dd4 1595 1: asr r17
7701 3dd6 0795 ror r16
7702 3dd8 F794 ror r15
7703 3dda E794 ror r14
7704 3ddc FA95 dec r31
7705 3dde 01F4 brne 1b
7706 3de0 8091 0000 lds r24,MaxStickNick
7707 3de4 9091 0000 lds r25,(MaxStickNick)+1
7708 3de8 8134 cpi r24,65
7709 3dea 9105 cpc r25,__zero_reg__
7710 3dec 04F4 brge .+2
7711 3dee 00C0 rjmp .L1263
7712 .L866:
7713 3df0 C601 movw r24,r12
7714 3df2 B501 movw r22,r10
7715 3df4 23E0 ldi r18,lo8(3)
7716 3df6 30E0 ldi r19,hi8(3)
7717 3df8 40E0 ldi r20,hlo8(3)
7718 3dfa 50E0 ldi r21,hhi8(3)
7719 3dfc 0E94 0000 call __divmodsi4
7720 3e00 5901 movw r10,r18
7721 3e02 6A01 movw r12,r20
7722 3e04 C801 movw r24,r16
7723 3e06 B701 movw r22,r14
7724 3e08 23E0 ldi r18,lo8(3)
7725 3e0a 30E0 ldi r19,hi8(3)
7726 3e0c 40E0 ldi r20,hlo8(3)
7727 3e0e 50E0 ldi r21,hhi8(3)
7728 3e10 0E94 0000 call __divmodsi4
7729 3e14 7901 movw r14,r18
7730 3e16 8A01 movw r16,r20
7731 .L865:
7732 3e18 8091 0000 lds r24,EE_Parameter+3
7733 3e1c E82F mov r30,r24
7734 3e1e FF27 clr r31
7735 3e20 EE0F add r30,r30
7736 3e22 FF1F adc r31,r31
7737 3e24 E050 subi r30,lo8(-(PPM_in))
7738 3e26 F040 sbci r31,hi8(-(PPM_in))
7739 3e28 8081 ld r24,Z
7740 3e2a 9181 ldd r25,Z+1
7741 3e2c 0190 ld __tmp_reg__,Z+
7742 3e2e F081 ld r31,Z
7743 3e30 E02D mov r30,__tmp_reg__
7744 3e32 F7FF sbrs r31,7
7745 3e34 00C0 rjmp .+4
7746 3e36 0C94 0000 jmp .L1264
7747 .L868:
7748 3e3a 7A97 sbiw r30,26
7749 3e3c 04F0 brlt .L867
7750 3e3e C601 movw r24,r12
7751 3e40 B501 movw r22,r10
7752 3e42 23E0 ldi r18,lo8(3)
7753 3e44 30E0 ldi r19,hi8(3)
7754 3e46 40E0 ldi r20,hlo8(3)
7755 3e48 50E0 ldi r21,hhi8(3)
7756 3e4a 0E94 0000 call __divmodsi4
7757 3e4e 5901 movw r10,r18
7758 3e50 6A01 movw r12,r20
7759 3e52 C801 movw r24,r16
7760 3e54 B701 movw r22,r14
7761 3e56 23E0 ldi r18,lo8(3)
7762 3e58 30E0 ldi r19,hi8(3)
7763 3e5a 40E0 ldi r20,hlo8(3)
7764 3e5c 50E0 ldi r21,hhi8(3)
7765 3e5e 0E94 0000 call __divmodsi4
7766 3e62 7901 movw r14,r18
7767 3e64 8A01 movw r16,r20
7768 .L867:
7769 3e66 41E2 ldi r20,lo8(33)
7770 3e68 A416 cp r10,r20
7771 3e6a B104 cpc r11,__zero_reg__
7772 3e6c C104 cpc r12,__zero_reg__
7773 3e6e D104 cpc r13,__zero_reg__
7774 3e70 04F0 brlt .L869
7775 3e72 E0E2 ldi r30,lo8(32)
7776 3e74 AE2E mov r10,r30
7777 3e76 B12C mov r11,__zero_reg__
7778 3e78 C12C mov r12,__zero_reg__
7779 3e7a D12C mov r13,__zero_reg__
7780 .L869:
7781 3e7c 50EE ldi r21,lo8(-32)
7782 3e7e A516 cp r10,r21
7783 3e80 5FEF ldi r21,hi8(-32)
7784 3e82 B506 cpc r11,r21
7785 3e84 5FEF ldi r21,hlo8(-32)
7786 3e86 C506 cpc r12,r21
7787 3e88 5FEF ldi r21,hhi8(-32)
7788 3e8a D506 cpc r13,r21
7789 3e8c 04F4 brge .L870
7790 3e8e 70EE ldi r23,lo8(-32)
7791 3e90 A72E mov r10,r23
7792 3e92 7FEF ldi r23,hi8(-32)
7793 3e94 B72E mov r11,r23
7794 3e96 7FEF ldi r23,hlo8(-32)
7795 3e98 C72E mov r12,r23
7796 3e9a 7FEF ldi r23,hhi8(-32)
7797 3e9c D72E mov r13,r23
7798 .L870:
7799 3e9e 61E2 ldi r22,lo8(33)
7800 3ea0 E616 cp r14,r22
7801 3ea2 F104 cpc r15,__zero_reg__
7802 3ea4 0105 cpc r16,__zero_reg__
7803 3ea6 1105 cpc r17,__zero_reg__
7804 3ea8 04F0 brlt .L871
7805 3eaa 60E2 ldi r22,lo8(32)
7806 3eac E62E mov r14,r22
7807 3eae F12C mov r15,__zero_reg__
7808 3eb0 012D mov r16,__zero_reg__
7809 3eb2 112D mov r17,__zero_reg__
7810 .L871:
7811 3eb4 70EE ldi r23,lo8(-32)
7812 3eb6 E716 cp r14,r23
7813 3eb8 7FEF ldi r23,hi8(-32)
7814 3eba F706 cpc r15,r23
7815 3ebc 7FEF ldi r23,hlo8(-32)
7816 3ebe 0707 cpc r16,r23
7817 3ec0 7FEF ldi r23,hhi8(-32)
7818 3ec2 1707 cpc r17,r23
7819 3ec4 04F4 brge .L872
7820 3ec6 50EE ldi r21,lo8(-32)
7821 3ec8 E52E mov r14,r21
7822 3eca 5FEF ldi r21,hi8(-32)
7823 3ecc F52E mov r15,r21
7824 3ece 5FEF ldi r21,hlo8(-32)
7825 3ed0 052F mov r16,r21
7826 3ed2 5FEF ldi r21,hhi8(-32)
7827 3ed4 152F mov r17,r21
7828 .L872:
7829 3ed6 8091 0000 lds r24,Mess_IntegralNick
7830 3eda 9091 0000 lds r25,(Mess_IntegralNick)+1
7831 3ede A091 0000 lds r26,(Mess_IntegralNick)+2
7832 3ee2 B091 0000 lds r27,(Mess_IntegralNick)+3
7833 3ee6 8A19 sub r24,r10
7834 3ee8 9B09 sbc r25,r11
7835 3eea AC09 sbc r26,r12
7836 3eec BD09 sbc r27,r13
7837 3eee 8093 0000 sts Mess_IntegralNick,r24
7838 3ef2 9093 0000 sts (Mess_IntegralNick)+1,r25
7839 3ef6 A093 0000 sts (Mess_IntegralNick)+2,r26
7840 3efa B093 0000 sts (Mess_IntegralNick)+3,r27
7841 3efe 8091 0000 lds r24,Mess_IntegralRoll
7842 3f02 9091 0000 lds r25,(Mess_IntegralRoll)+1
7843 3f06 A091 0000 lds r26,(Mess_IntegralRoll)+2
7844 3f0a B091 0000 lds r27,(Mess_IntegralRoll)+3
7845 3f0e 8E19 sub r24,r14
7846 3f10 9F09 sbc r25,r15
7847 3f12 A00B sbc r26,r16
7848 3f14 B10B sbc r27,r17
7849 3f16 8093 0000 sts Mess_IntegralRoll,r24
7850 3f1a 9093 0000 sts (Mess_IntegralRoll)+1,r25
7851 3f1e A093 0000 sts (Mess_IntegralRoll)+2,r26
7852 3f22 B093 0000 sts (Mess_IntegralRoll)+3,r27
7853 3f26 8091 0000 lds r24,ZaehlMessungen
7854 3f2a 9091 0000 lds r25,(ZaehlMessungen)+1
7855 3f2e 8F3F cpi r24,255
7856 3f30 9105 cpc r25,__zero_reg__
7857 3f32 01F0 breq .+4
7858 3f34 00F0 brlo .+2
7859 3f36 00C0 rjmp .L1265
7860 .L1151:
7861 3f38 2092 0000 sts MittelIntegralNick2,r2
7862 3f3c 3092 0000 sts (MittelIntegralNick2)+1,r3
7863 3f40 4092 0000 sts (MittelIntegralNick2)+2,r4
7864 3f44 5092 0000 sts (MittelIntegralNick2)+3,r5
7865 3f48 6092 0000 sts MittelIntegralRoll2,r6
7866 3f4c 7092 0000 sts (MittelIntegralRoll2)+1,r7
7867 3f50 8092 0000 sts (MittelIntegralRoll2)+2,r8
7868 3f54 9092 0000 sts (MittelIntegralRoll2)+3,r9
7869 3f58 F091 0000 lds r31,TrichterFlug
7870 3f5c FC8F std Y+28,r31
7871 3f5e 0091 0000 lds r16,StickGier
7872 3f62 1091 0000 lds r17,(StickGier)+1
7873 3f66 C801 movw r24,r16
7874 3f68 17FF sbrs r17,7
7875 3f6a 00C0 rjmp .L945
7876 .L1271:
7877 3f6c 8827 clr r24
7878 3f6e 9927 clr r25
7879 3f70 801B sub r24,r16
7880 3f72 910B sbc r25,r17
7881 3f74 00C0 rjmp .L945
7882 .L860:
7883 3f76 1092 0000 sts IntegralAccNick,__zero_reg__
7884 3f7a 1092 0000 sts (IntegralAccNick)+1,__zero_reg__
7885 3f7e 1092 0000 sts (IntegralAccNick)+2,__zero_reg__
7886 3f82 1092 0000 sts (IntegralAccNick)+3,__zero_reg__
7887 3f86 1092 0000 sts IntegralAccRoll,__zero_reg__
7888 3f8a 1092 0000 sts (IntegralAccRoll)+1,__zero_reg__
7889 3f8e 1092 0000 sts (IntegralAccRoll)+2,__zero_reg__
7890 3f92 1092 0000 sts (IntegralAccRoll)+3,__zero_reg__
7891 3f96 1092 0000 sts MittelIntegralNick,__zero_reg__
7892 3f9a 1092 0000 sts (MittelIntegralNick)+1,__zero_reg__
7893 3f9e 1092 0000 sts (MittelIntegralNick)+2,__zero_reg__
7894 3fa2 1092 0000 sts (MittelIntegralNick)+3,__zero_reg__
7895 3fa6 1092 0000 sts MittelIntegralRoll,__zero_reg__
7896 3faa 1092 0000 sts (MittelIntegralRoll)+1,__zero_reg__
7897 3fae 1092 0000 sts (MittelIntegralRoll)+2,__zero_reg__
7898 3fb2 1092 0000 sts (MittelIntegralRoll)+3,__zero_reg__
7899 3fb6 6624 clr r6
7900 3fb8 7724 clr r7
7901 3fba 4301 movw r8,r6
7902 3fbc 1301 movw r2,r6
7903 3fbe 2401 movw r4,r8
7904 3fc0 8091 0000 lds r24,Mess_IntegralNick
7905 3fc4 9091 0000 lds r25,(Mess_IntegralNick)+1
7906 3fc8 A091 0000 lds r26,(Mess_IntegralNick)+2
7907 3fcc B091 0000 lds r27,(Mess_IntegralNick)+3
7908 3fd0 8093 0000 sts Mess_IntegralNick2,r24
7909 3fd4 9093 0000 sts (Mess_IntegralNick2)+1,r25
7910 3fd8 A093 0000 sts (Mess_IntegralNick2)+2,r26
7911 3fdc B093 0000 sts (Mess_IntegralNick2)+3,r27
7912 3fe0 8091 0000 lds r24,Mess_IntegralRoll
7913 3fe4 9091 0000 lds r25,(Mess_IntegralRoll)+1
7914 3fe8 A091 0000 lds r26,(Mess_IntegralRoll)+2
7915 3fec B091 0000 lds r27,(Mess_IntegralRoll)+3
7916 3ff0 8093 0000 sts Mess_IntegralRoll2,r24
7917 3ff4 9093 0000 sts (Mess_IntegralRoll2)+1,r25
7918 3ff8 A093 0000 sts (Mess_IntegralRoll2)+2,r26
7919 3ffc B093 0000 sts (Mess_IntegralRoll2)+3,r27
7920 4000 1092 0000 sts (ZaehlMessungen)+1,__zero_reg__
7921 4004 1092 0000 sts ZaehlMessungen,__zero_reg__
7922 4008 1092 0000 sts (LageKorrekturNick)+1,__zero_reg__
7923 400c 1092 0000 sts LageKorrekturNick,__zero_reg__
7924 4010 1092 0000 sts (LageKorrekturRoll)+1,__zero_reg__
7925 4014 1092 0000 sts LageKorrekturRoll,__zero_reg__
7926 4018 1B85 ldd r17,Y+11
7927 401a 1123 tst r17
7928 401c 01F0 breq .+2
7929 401e 00C0 rjmp .L861
7930 4020 2B8D ldd r18,Y+27
7931 4022 2223 tst r18
7932 4024 01F0 breq .+2
7933 4026 00C0 rjmp .L861
7934 4028 00C0 rjmp .L1196
7935 .L1150:
7936 402a B091 0000 lds r27,IntegralFaktorGier
7937 402e BA8F std Y+26,r27
7938 4030 00C0 rjmp .L858
7939 .L811:
7940 4032 7FEF ldi r23,hi8(-2)
7941 4034 8E3F cpi r24,lo8(-2)
7942 4036 9707 cpc r25,r23
7943 4038 04F0 brlt .+2
7944 403a 00C0 rjmp .L813
7945 403c 0296 adiw r24,2
7946 403e 0C94 0000 jmp .L1201
7947 .L819:
7948 4042 B901 movw r22,r18
7949 4044 6150 subi r22,lo8(-(-1))
7950 4046 7040 sbci r23,hi8(-(-1))
7951 .L825:
7952 4048 4091 0000 lds r20,StickRoll
7953 404c 5091 0000 lds r21,(StickRoll)+1
7954 4050 CA01 movw r24,r20
7955 4052 57FF sbrs r21,7
7956 4054 00C0 rjmp .+4
7957 4056 0C94 0000 jmp .L1266
7958 .L827:
7959 405a 9595 asr r25
7960 405c 8795 ror r24
7961 405e 9595 asr r25
7962 4060 8795 ror r24
7963 4062 97FF sbrs r25,7
7964 4064 00C0 rjmp .+4
7965 4066 0C94 0000 jmp .L1267
7966 .L828:
7967 406a 2091 0000 lds r18,MaxStickRoll
7968 406e 3091 0000 lds r19,(MaxStickRoll)+1
7969 4072 2817 cp r18,r24
7970 4074 3907 cpc r19,r25
7971 4076 04F0 brlt .+4
7972 4078 0C94 0000 jmp .L826
7973 .L1220:
7974 407c CA01 movw r24,r20
7975 407e 57FF sbrs r21,7
7976 4080 00C0 rjmp .+4
7977 4082 0C94 0000 jmp .L1268
7978 .L829:
7979 4086 97FF sbrs r25,7
7980 4088 00C0 rjmp .+4
7981 408a 0C94 0000 jmp .L1269
7982 .L830:
7983 408e 9C01 movw r18,r24
7984 4090 3595 asr r19
7985 4092 2795 ror r18
7986 4094 3595 asr r19
7987 4096 2795 ror r18
7988 4098 2536 cpi r18,101
7989 409a 3105 cpc r19,__zero_reg__
7990 409c 04F4 brge .+4
7991 409e 0C94 0000 jmp .L832
7992 40a2 24E6 ldi r18,lo8(100)
7993 40a4 30E0 ldi r19,hi8(100)
7994 40a6 8091 0000 lds r24,MikroKopterFlags
7995 40aa 84FF sbrs r24,4
7996 40ac 00C0 rjmp .+4
7997 40ae 0C94 0000 jmp .L1270
7998 .L1177:
7999 40b2 3093 0000 sts (MaxStickRoll)+1,r19
8000 40b6 2093 0000 sts MaxStickRoll,r18
8001 40ba 7093 0000 sts (MaxStickNick)+1,r23
8002 40be 6093 0000 sts MaxStickNick,r22
8003 40c2 0C94 0000 jmp .L833
8004 .L1176:
8005 40c6 F092 0000 sts IntegralFaktor,r15
8006 40ca 4091 0000 lds r20,StickNick
8007 40ce 5091 0000 lds r21,(StickNick)+1
8008 40d2 CA01 movw r24,r20
8009 40d4 57FD sbrc r21,7
8010 40d6 00C0 rjmp .+4
8011 40d8 0C94 0000 jmp .L820
8012 .L1216:
8013 40dc 0396 adiw r24,3
8014 40de 9595 asr r25
8015 40e0 8795 ror r24
8016 40e2 9595 asr r25
8017 40e4 8795 ror r24
8018 40e6 97FD sbrc r25,7
8019 40e8 00C0 rjmp .+4
8020 40ea 0C94 0000 jmp .L821
8021 .L1217:
8022 40ee 9095 com r25
8023 40f0 8195 neg r24
8024 40f2 9F4F sbci r25,lo8(-1)
8025 40f4 0C94 0000 jmp .L821
8026 .L1263:
8027 40f8 8091 0000 lds r24,MaxStickRoll
8028 40fc 9091 0000 lds r25,(MaxStickRoll)+1
8029 4100 8134 cpi r24,65
8030 4102 9105 cpc r25,__zero_reg__
8031 4104 04F4 brge .+2
8032 4106 00C0 rjmp .L865
8033 4108 00C0 rjmp .L866
8034 .L852:
8035 410a 9093 0000 sts Looping_Roll,r25
8036 410e 8093 0000 sts Looping_Nick,r24
8037 4112 00C0 rjmp .L807
8038 .L813:
8039 4114 1092 0000 sts (StickGier)+1,__zero_reg__
8040 4118 1092 0000 sts StickGier,__zero_reg__
8041 411c 0C94 0000 jmp .L812
8042 .L849:
8043 4120 982F mov r25,r24
8044 4122 0C94 0000 jmp .L851
8045 .L1226:
8046 4126 81E0 ldi r24,lo8(1)
8047 4128 8093 0000 sts Looping_Unten,r24
8048 412c 0C94 0000 jmp .L846
8049 .L1224:
8050 4130 81E0 ldi r24,lo8(1)
8051 4132 8093 0000 sts Looping_Oben,r24
8052 4136 582F mov r21,r24
8053 4138 0C94 0000 jmp .L842
8054 .L1222:
8055 413c 81E0 ldi r24,lo8(1)
8056 413e 8093 0000 sts Looping_Rechts,r24
8057 4142 0C94 0000 jmp .L838
8058 .L1221:
8059 4146 81E0 ldi r24,lo8(1)
8060 4148 8093 0000 sts Looping_Links,r24
8061 414c 0C94 0000 jmp .L835
8062 .L1214:
8063 4150 8091 0000 lds r24,ExternControl+3
8064 4154 9927 clr r25
8065 4156 87FD sbrc r24,7
8066 4158 9095 com r25
8067 415a 4E2D mov r20,r14
8068 415c 5527 clr r21
8069 415e 849F mul r24,r20
8070 4160 D001 movw r26,r0
8071 4162 859F mul r24,r21
8072 4164 B00D add r27,r0
8073 4166 949F mul r25,r20
8074 4168 B00D add r27,r0
8075 416a 1124 clr r1
8076 416c CD01 movw r24,r26
8077 416e 2091 0000 lds r18,StickNick
8078 4172 3091 0000 lds r19,(StickNick)+1
8079 4176 820F add r24,r18
8080 4178 931F adc r25,r19
8081 417a 9093 0000 sts (StickNick)+1,r25
8082 417e 8093 0000 sts StickNick,r24
8083 4182 8091 0000 lds r24,ExternControl+4
8084 4186 9927 clr r25
8085 4188 87FD sbrc r24,7
8086 418a 9095 com r25
8087 418c 849F mul r24,r20
8088 418e F001 movw r30,r0
8089 4190 859F mul r24,r21
8090 4192 F00D add r31,r0
8091 4194 949F mul r25,r20
8092 4196 F00D add r31,r0
8093 4198 1124 clr r1
8094 419a CF01 movw r24,r30
8095 419c 2091 0000 lds r18,StickRoll
8096 41a0 3091 0000 lds r19,(StickRoll)+1
8097 41a4 820F add r24,r18
8098 41a6 931F adc r25,r19
8099 41a8 9093 0000 sts (StickRoll)+1,r25
8100 41ac 8093 0000 sts StickRoll,r24
8101 41b0 8091 0000 lds r24,ExternControl+5
8102 41b4 9927 clr r25
8103 41b6 87FD sbrc r24,7
8104 41b8 9095 com r25
8105 41ba 2091 0000 lds r18,StickGier
8106 41be 3091 0000 lds r19,(StickGier)+1
8107 41c2 820F add r24,r18
8108 41c4 931F adc r25,r19
8109 41c6 9093 0000 sts (StickGier)+1,r25
8110 41ca 8093 0000 sts StickGier,r24
8111 41ce 8091 0000 lds r24,ExternControl+7
8112 41d2 282F mov r18,r24
8113 41d4 3327 clr r19
8114 41d6 27FD sbrc r18,7
8115 41d8 3095 com r19
8116 41da 8091 0000 lds r24,EE_Parameter+13
8117 41de 9927 clr r25
8118 41e0 289F mul r18,r24
8119 41e2 A001 movw r20,r0
8120 41e4 299F mul r18,r25
8121 41e6 500D add r21,r0
8122 41e8 389F mul r19,r24
8123 41ea 500D add r21,r0
8124 41ec 1124 clr r1
8125 41ee 5093 0000 sts (ExternHoehenValue)+1,r21
8126 41f2 4093 0000 sts ExternHoehenValue,r20
8127 41f6 8091 0000 lds r24,ExternControl+6
8128 41fa 9927 clr r25
8129 41fc 8C15 cp r24,r12
8130 41fe 9D05 cpc r25,r13
8131 4200 04F0 brlt .+4
8132 4202 0C94 0000 jmp .L1175
8133 4206 9093 0000 sts (StickGas)+1,r25
8134 420a 8093 0000 sts StickGas,r24
8135 420e 0C94 0000 jmp .L815
8136 .L1228:
8137 4212 8091 0000 lds r24,MotorenEin
8138 4216 8823 tst r24
8139 4218 01F4 brne .+4
8140 421a 0C94 0000 jmp .L1147
8141 421e 8091 0000 lds r24,modell_fliegt
8142 4222 9091 0000 lds r25,(modell_fliegt)+1
8143 4226 FFEF ldi r31,hi8(-1)
8144 4228 8F3F cpi r24,lo8(-1)
8145 422a 9F07 cpc r25,r31
8146 422c 01F4 brne .+4
8147 422e 0C94 0000 jmp .L736
8148 4232 0196 adiw r24,1
8149 4234 9093 0000 sts (modell_fliegt)+1,r25
8150 4238 8093 0000 sts modell_fliegt,r24
8151 423c 0C94 0000 jmp .L736
8152 .L1223:
8153 4240 1092 0000 sts Looping_Rechts,__zero_reg__
8154 4244 0C94 0000 jmp .L838
8155 .L1227:
8156 4248 1092 0000 sts Looping_Unten,__zero_reg__
8157 424c 0C94 0000 jmp .L846
8158 .L1225:
8159 4250 1092 0000 sts Looping_Oben,__zero_reg__
8160 4254 50E0 ldi r21,lo8(0)
8161 4256 0C94 0000 jmp .L842
8162 .L874:
8163 425a 60E0 ldi r22,lo8(0)
8164 425c 70E0 ldi r23,hi8(0)
8165 425e 6B01 movw r12,r22
8166 4260 1092 0000 sts TrichterFlug,__zero_reg__
8167 4264 1C8E std Y+28,__zero_reg__
8168 4266 E090 0000 lds r14,MittelIntegralNick
8169 426a F090 0000 lds r15,(MittelIntegralNick)+1
8170 426e 0091 0000 lds r16,(MittelIntegralNick)+2
8171 4272 1091 0000 lds r17,(MittelIntegralNick)+3
8172 4276 6090 0000 lds r6,MittelIntegralRoll
8173 427a 7090 0000 lds r7,(MittelIntegralRoll)+1
8174 427e 8090 0000 lds r8,(MittelIntegralRoll)+2
8175 4282 9090 0000 lds r9,(MittelIntegralRoll)+3
8176 .L942:
8177 4286 8091 0000 lds r24,IntegralFaktor
8178 428a 8823 tst r24
8179 428c 01F0 breq .+2
8180 428e 00C0 rjmp .L1182
8181 4290 1092 0000 sts (LageKorrekturRoll)+1,__zero_reg__
8182 4294 1092 0000 sts LageKorrekturRoll,__zero_reg__
8183 4298 1092 0000 sts (LageKorrekturNick)+1,__zero_reg__
8184 429c 1092 0000 sts LageKorrekturNick,__zero_reg__
8185 .L943:
8186 42a0 E092 0000 sts MittelIntegralNick_Alt.22,r14
8187 42a4 F092 0000 sts (MittelIntegralNick_Alt.22)+1,r15
8188 42a8 0093 0000 sts (MittelIntegralNick_Alt.22)+2,r16
8189 42ac 1093 0000 sts (MittelIntegralNick_Alt.22)+3,r17
8190 42b0 6092 0000 sts MittelIntegralRoll_Alt.23,r6
8191 42b4 7092 0000 sts (MittelIntegralRoll_Alt.23)+1,r7
8192 42b8 8092 0000 sts (MittelIntegralRoll_Alt.23)+2,r8
8193 42bc 9092 0000 sts (MittelIntegralRoll_Alt.23)+3,r9
8194 42c0 1092 0000 sts IntegralAccNick,__zero_reg__
8195 42c4 1092 0000 sts (IntegralAccNick)+1,__zero_reg__
8196 42c8 1092 0000 sts (IntegralAccNick)+2,__zero_reg__
8197 42cc 1092 0000 sts (IntegralAccNick)+3,__zero_reg__
8198 42d0 1092 0000 sts IntegralAccRoll,__zero_reg__
8199 42d4 1092 0000 sts (IntegralAccRoll)+1,__zero_reg__
8200 42d8 1092 0000 sts (IntegralAccRoll)+2,__zero_reg__
8201 42dc 1092 0000 sts (IntegralAccRoll)+3,__zero_reg__
8202 42e0 1092 0000 sts IntegralAccZ,__zero_reg__
8203 42e4 1092 0000 sts (IntegralAccZ)+1,__zero_reg__
8204 42e8 1092 0000 sts (IntegralAccZ)+2,__zero_reg__
8205 42ec 1092 0000 sts (IntegralAccZ)+3,__zero_reg__
8206 42f0 1092 0000 sts MittelIntegralNick,__zero_reg__
8207 42f4 1092 0000 sts (MittelIntegralNick)+1,__zero_reg__
8208 42f8 1092 0000 sts (MittelIntegralNick)+2,__zero_reg__
8209 42fc 1092 0000 sts (MittelIntegralNick)+3,__zero_reg__
8210 4300 1092 0000 sts MittelIntegralRoll,__zero_reg__
8211 4304 1092 0000 sts (MittelIntegralRoll)+1,__zero_reg__
8212 4308 1092 0000 sts (MittelIntegralRoll)+2,__zero_reg__
8213 430c 1092 0000 sts (MittelIntegralRoll)+3,__zero_reg__
8214 4310 1092 0000 sts MittelIntegralNick2,__zero_reg__
8215 4314 1092 0000 sts (MittelIntegralNick2)+1,__zero_reg__
8216 4318 1092 0000 sts (MittelIntegralNick2)+2,__zero_reg__
8217 431c 1092 0000 sts (MittelIntegralNick2)+3,__zero_reg__
8218 4320 1092 0000 sts MittelIntegralRoll2,__zero_reg__
8219 4324 1092 0000 sts (MittelIntegralRoll2)+1,__zero_reg__
8220 4328 1092 0000 sts (MittelIntegralRoll2)+2,__zero_reg__
8221 432c 1092 0000 sts (MittelIntegralRoll2)+3,__zero_reg__
8222 4330 1092 0000 sts (ZaehlMessungen)+1,__zero_reg__
8223 4334 1092 0000 sts ZaehlMessungen,__zero_reg__
8224 4338 0091 0000 lds r16,StickGier
8225 433c 1091 0000 lds r17,(StickGier)+1
8226 4340 C801 movw r24,r16
8227 4342 17FD sbrc r17,7
8228 4344 00C0 rjmp .L1271
8229 .L945:
8230 4346 4097 sbiw r24,16
8231 4348 04F0 brlt .L944
8232 434a 68EE ldi r22,lo8(1000)
8233 434c 262E mov r2,r22
8234 434e 63E0 ldi r22,hi8(1000)
8235 4350 362E mov r3,r22
8236 4352 3092 0000 sts (KompassSignalSchlecht)+1,r3
8237 4356 2092 0000 sts KompassSignalSchlecht,r2
8238 435a E888 ldd r14,Y+16
8239 435c E4FC sbrc r14,4
8240 435e 00C0 rjmp .L944
8241 4360 81E0 ldi r24,lo8(1)
8242 4362 8093 0000 sts NeueKompassRichtungMerken.12,r24
8243 .L944:
8244 4366 B090 0000 lds r11,EE_Parameter+20
8245 436a CB2C mov r12,r11
8246 436c DD24 clr r13
8247 436e EE24 clr r14
8248 4370 FF24 clr r15
8249 4372 B801 movw r22,r16
8250 4374 8827 clr r24
8251 4376 77FD sbrc r23,7
8252 4378 8095 com r24
8253 437a 982F mov r25,r24
8254 437c 9801 movw r18,r16
8255 437e 17FD sbrc r17,7
8256 4380 00C0 rjmp .L1272
8257 .L947:
8258 4382 4427 clr r20
8259 4384 37FD sbrc r19,7
8260 4386 4095 com r20
8261 4388 542F mov r21,r20
8262 438a 0E94 0000 call __mulsi3
8263 438e 9B01 movw r18,r22
8264 4390 AC01 movw r20,r24
8265 4392 C701 movw r24,r14
8266 4394 B601 movw r22,r12
8267 4396 0E94 0000 call __mulsi3
8268 439a 97FD sbrc r25,7
8269 439c 00C0 rjmp .L1273
8270 .L948:
8271 439e 59E0 ldi r21,9
8272 43a0 9595 1: asr r25
8273 43a2 8795 ror r24
8274 43a4 7795 ror r23
8275 43a6 6795 ror r22
8276 43a8 5A95 dec r21
8277 43aa 01F4 brne 1b
8278 43ac 9B01 movw r18,r22
8279 43ae 8B2D mov r24,r11
8280 43b0 9927 clr r25
8281 43b2 809F mul r24,r16
8282 43b4 A001 movw r20,r0
8283 43b6 819F mul r24,r17
8284 43b8 500D add r21,r0
8285 43ba 909F mul r25,r16
8286 43bc 500D add r21,r0
8287 43be 1124 clr r1
8288 43c0 CA01 movw r24,r20
8289 43c2 57FD sbrc r21,7
8290 43c4 00C0 rjmp .L1274
8291 .L949:
8292 43c6 9595 asr r25
8293 43c8 8795 ror r24
8294 43ca 9595 asr r25
8295 43cc 8795 ror r24
8296 43ce 280F add r18,r24
8297 43d0 391F adc r19,r25
8298 43d2 C901 movw r24,r18
8299 43d4 AA27 clr r26
8300 43d6 97FD sbrc r25,7
8301 43d8 A095 com r26
8302 43da BA2F mov r27,r26
8303 43dc 8093 0000 sts sollGier.2,r24
8304 43e0 9093 0000 sts (sollGier.2)+1,r25
8305 43e4 A093 0000 sts (sollGier.2)+2,r26
8306 43e8 B093 0000 sts (sollGier.2)+3,r27
8307 43ec 2091 0000 lds r18,Mess_Integral_Gier
8308 43f0 3091 0000 lds r19,(Mess_Integral_Gier)+1
8309 43f4 4091 0000 lds r20,(Mess_Integral_Gier)+2
8310 43f8 5091 0000 lds r21,(Mess_Integral_Gier)+3
8311 43fc 281B sub r18,r24
8312 43fe 390B sbc r19,r25
8313 4400 4A0B sbc r20,r26
8314 4402 5B0B sbc r21,r27
8315 4404 2135 cpi r18,lo8(50001)
8316 4406 63EC ldi r22,hi8(50001)
8317 4408 3607 cpc r19,r22
8318 440a 60E0 ldi r22,hlo8(50001)
8319 440c 4607 cpc r20,r22
8320 440e 60E0 ldi r22,hhi8(50001)
8321 4410 5607 cpc r21,r22
8322 4412 04F4 brge .+2
8323 4414 00C0 rjmp .L1183
8324 4416 80E5 ldi r24,lo8(50000)
8325 4418 93EC ldi r25,hi8(50000)
8326 441a A0E0 ldi r26,hlo8(50000)
8327 441c B0E0 ldi r27,hhi8(50000)
8328 441e 8093 0000 sts Mess_Integral_Gier,r24
8329 4422 9093 0000 sts (Mess_Integral_Gier)+1,r25
8330 4426 A093 0000 sts (Mess_Integral_Gier)+2,r26
8331 442a B093 0000 sts (Mess_Integral_Gier)+3,r27
8332 .L950:
8333 442e 8091 0000 lds r24,Mess_Integral_Gier
8334 4432 9091 0000 lds r25,(Mess_Integral_Gier)+1
8335 4436 A091 0000 lds r26,(Mess_Integral_Gier)+2
8336 443a B091 0000 lds r27,(Mess_Integral_Gier)+3
8337 443e 805B subi r24,lo8(-50000)
8338 4440 9C43 sbci r25,hi8(-50000)
8339 4442 AF4F sbci r26,hlo8(-50000)
8340 4444 BF4F sbci r27,hhi8(-50000)
8341 4446 04F4 brge .L951
8342 4448 80EB ldi r24,lo8(-50000)
8343 444a 9CE3 ldi r25,hi8(-50000)
8344 444c AFEF ldi r26,hlo8(-50000)
8345 444e BFEF ldi r27,hhi8(-50000)
8346 4450 8093 0000 sts Mess_Integral_Gier,r24
8347 4454 9093 0000 sts (Mess_Integral_Gier)+1,r25
8348 4458 A093 0000 sts (Mess_Integral_Gier)+2,r26
8349 445c B093 0000 sts (Mess_Integral_Gier)+3,r27
8350 .L951:
8351 4460 8091 0000 lds r24,KompassValue
8352 4464 9091 0000 lds r25,(KompassValue)+1
8353 4468 9EA3 std Y+38,r25
8354 446a 8DA3 std Y+37,r24
8355 446c 892B or r24,r25
8356 446e 01F4 brne .+2
8357 4470 00C0 rjmp .L1153
8358 4472 9889 ldd r25,Y+16
8359 4474 93FF sbrs r25,3
8360 4476 00C0 rjmp .L1153
8361 4478 8D8D ldd r24,Y+29
8362 447a 9E8D ldd r25,Y+30
8363 447c AF8D ldd r26,Y+31
8364 447e B8A1 ldd r27,Y+32
8365 4480 B7FF sbrs r27,7
8366 4482 00C0 rjmp .+4
8367 4484 0C94 0000 jmp .L1275
8368 .L953:
8369 4488 29E0 ldi r18,9
8370 448a B595 1: asr r27
8371 448c A795 ror r26
8372 448e 9795 ror r25
8373 4490 8795 ror r24
8374 4492 2A95 dec r18
8375 4494 01F4 brne 1b
8376 4496 6C01 movw r12,r24
8377 4498 97FF sbrs r25,7
8378 449a 00C0 rjmp .+4
8379 449c 0C94 0000 jmp .L1276
8380 .L954:
8381 44a0 8C85 ldd r24,Y+12
8382 44a2 9D85 ldd r25,Y+13
8383 44a4 AE85 ldd r26,Y+14
8384 44a6 BF85 ldd r27,Y+15
8385 44a8 B7FF sbrs r27,7
8386 44aa 00C0 rjmp .+4
8387 44ac 0C94 0000 jmp .L1277
8388 .L955:
8389 44b0 09E0 ldi r16,9
8390 44b2 B595 1: asr r27
8391 44b4 A795 ror r26
8392 44b6 9795 ror r25
8393 44b8 8795 ror r24
8394 44ba 0A95 dec r16
8395 44bc 01F4 brne 1b
8396 44be BC01 movw r22,r24
8397 44c0 97FF sbrs r25,7
8398 44c2 00C0 rjmp .+4
8399 44c4 0C94 0000 jmp .L1278
8400 .L956:
8401 44c8 C616 cp r12,r22
8402 44ca D706 cpc r13,r23
8403 44cc 04F4 brge .L957
8404 44ce 6B01 movw r12,r22
8405 .L957:
8406 44d0 B601 movw r22,r12
8407 44d2 D7FE sbrs r13,7
8408 44d4 00C0 rjmp .+4
8409 44d6 0C94 0000 jmp .L1279
8410 .L958:
8411 44da 5B01 movw r10,r22
8412 44dc B594 asr r11
8413 44de A794 ror r10
8414 44e0 B594 asr r11
8415 44e2 A794 ror r10
8416 44e4 B594 asr r11
8417 44e6 A794 ror r10
8418 44e8 0894 sec
8419 44ea A11C adc r10,__zero_reg__
8420 44ec B11C adc r11,__zero_reg__
8421 44ee ADA1 ldd r26,Y+37
8422 44f0 BEA1 ldd r27,Y+38
8423 44f2 A45E subi r26,lo8(-(540))
8424 44f4 BD4F sbci r27,hi8(-(540))
8425 44f6 7D01 movw r14,r26
8426 44f8 0027 clr r16
8427 44fa F7FC sbrc r15,7
8428 44fc 0095 com r16
8429 44fe 102F mov r17,r16
8430 4500 AC51 subi r26,lo8(-(-540))
8431 4502 B240 sbci r27,hi8(-(-540))
8432 4504 BEA3 std Y+38,r27
8433 4506 ADA3 std Y+37,r26
8434 4508 4090 0000 lds r4,ErsatzKompass
8435 450c 5090 0000 lds r5,(ErsatzKompass)+1
8436 4510 6090 0000 lds r6,(ErsatzKompass)+2
8437 4514 7090 0000 lds r7,(ErsatzKompass)+3
8438 4518 2091 0000 lds r18,GIER_GRAD_FAKTOR
8439 451c 3091 0000 lds r19,(GIER_GRAD_FAKTOR)+1
8440 4520 4091 0000 lds r20,(GIER_GRAD_FAKTOR)+2
8441 4524 5091 0000 lds r21,(GIER_GRAD_FAKTOR)+3
8442 4528 2A8B std Y+18,r18
8443 452a 3B8B std Y+19,r19
8444 452c 4C8B std Y+20,r20
8445 452e 5D8B std Y+21,r21
8446 4530 C301 movw r24,r6
8447 4532 B201 movw r22,r4
8448 4534 0E94 0000 call __divmodsi4
8449 4538 E21A sub r14,r18
8450 453a F30A sbc r15,r19
8451 453c 040B sbc r16,r20
8452 453e 150B sbc r17,r21
8453 4540 C801 movw r24,r16
8454 4542 B701 movw r22,r14
8455 4544 28E6 ldi r18,lo8(360)
8456 4546 31E0 ldi r19,hi8(360)
8457 4548 40E0 ldi r20,hlo8(360)
8458 454a 50E0 ldi r21,hhi8(360)
8459 454c 0E94 0000 call __divmodsi4
8460 4550 DC01 movw r26,r24
8461 4552 CB01 movw r24,r22
8462 4554 8C01 movw r16,r24
8463 4556 045B subi r16,lo8(-(-180))
8464 4558 1040 sbci r17,hi8(-(-180))
8465 455a 8090 0000 lds r8,MesswertGier
8466 455e 9090 0000 lds r9,(MesswertGier)+1
8467 4562 C401 movw r24,r8
8468 4564 97FE sbrs r9,7
8469 4566 00C0 rjmp .+4
8470 4568 0C94 0000 jmp .L1280
8471 .L960:
8472 456c 8138 cpi r24,129
8473 456e 9105 cpc r25,__zero_reg__
8474 4570 04F0 brlt .L959
8475 4572 00E0 ldi r16,lo8(0)
8476 4574 10E0 ldi r17,hi8(0)
8477 .L959:
8478 4576 2090 0000 lds r2,KompassSignalSchlecht
8479 457a 3090 0000 lds r3,(KompassSignalSchlecht)+1
8480 457e 2114 cp r2,__zero_reg__
8481 4580 3104 cpc r3,__zero_reg__
8482 4582 01F4 brne .L961
8483 4584 39E1 ldi r19,lo8(25)
8484 4586 C316 cp r12,r19
8485 4588 D104 cpc r13,__zero_reg__
8486 458a 04F4 brge .L961
8487 458c 8091 0000 lds r24,GierGyroFehler
8488 4590 9091 0000 lds r25,(GierGyroFehler)+1
8489 4594 800F add r24,r16
8490 4596 911F adc r25,r17
8491 4598 9093 0000 sts (GierGyroFehler)+1,r25
8492 459c 8093 0000 sts GierGyroFehler,r24
8493 45a0 8091 0000 lds r24,NeueKompassRichtungMerken.12
8494 45a4 8823 tst r24
8495 45a6 01F0 breq .+4
8496 45a8 0C94 0000 jmp .L1281
8497 .L961:
8498 45ac C801 movw r24,r16
8499 45ae 880F lsl r24
8500 45b0 991F rol r25
8501 45b2 880F lsl r24
8502 45b4 991F rol r25
8503 45b6 880F lsl r24
8504 45b8 991F rol r25
8505 45ba B501 movw r22,r10
8506 45bc 0E94 0000 call __divmodhi4
8507 45c0 9B01 movw r18,r22
8508 45c2 4427 clr r20
8509 45c4 37FD sbrc r19,7
8510 45c6 4095 com r20
8511 45c8 542F mov r21,r20
8512 45ca 240D add r18,r4
8513 45cc 351D adc r19,r5
8514 45ce 461D adc r20,r6
8515 45d0 571D adc r21,r7
8516 45d2 2093 0000 sts ErsatzKompass,r18
8517 45d6 3093 0000 sts (ErsatzKompass)+1,r19
8518 45da 4093 0000 sts (ErsatzKompass)+2,r20
8519 45de 5093 0000 sts (ErsatzKompass)+3,r21
8520 45e2 1091 0000 lds r17,Parameter_KompassWirkung
8521 45e6 612F mov r22,r17
8522 45e8 7727 clr r23
8523 45ea 6C9D mul r22,r12
8524 45ec C001 movw r24,r0
8525 45ee 6D9D mul r22,r13
8526 45f0 900D add r25,r0
8527 45f2 7C9D mul r23,r12
8528 45f4 900D add r25,r0
8529 45f6 1124 clr r1
8530 45f8 97FF sbrs r25,7
8531 45fa 00C0 rjmp .+4
8532 45fc 0C94 0000 jmp .L1282
8533 .L963:
8534 4600 6C01 movw r12,r24
8535 4602 D594 asr r13
8536 4604 C794 ror r12
8537 4606 D594 asr r13
8538 4608 C794 ror r12
8539 460a D594 asr r13
8540 460c C794 ror r12
8541 460e D594 asr r13
8542 4610 C794 ror r12
8543 4612 D594 asr r13
8544 4614 C794 ror r12
8545 4616 6C19 sub r22,r12
8546 4618 7D09 sbc r23,r13
8547 461a 6B01 movw r12,r22
8548 461c 77FF sbrs r23,7
8549 461e 00C0 rjmp .+4
8550 4620 0C94 0000 jmp .L964
8551 4624 2114 cp r2,__zero_reg__
8552 4626 3104 cpc r3,__zero_reg__
8553 4628 01F0 breq .+4
8554 462a 0C94 0000 jmp .L1198
8555 462e E090 0000 lds r14,MaxStickNick
8556 4632 F090 0000 lds r15,(MaxStickNick)+1
8557 4636 8091 0000 lds r24,MaxStickRoll
8558 463a 9091 0000 lds r25,(MaxStickRoll)+1
8559 463e E80E add r14,r24
8560 4640 F91E adc r15,r25
8561 4642 F7FE sbrs r15,7
8562 4644 00C0 rjmp .+4
8563 4646 0C94 0000 jmp .L1283
8564 .L966:
8565 464a F594 asr r15
8566 464c E794 ror r14
8567 464e F594 asr r15
8568 4650 E794 ror r14
8569 4652 F594 asr r15
8570 4654 E794 ror r14
8571 4656 80E4 ldi r24,lo8(64)
8572 4658 90E0 ldi r25,hi8(64)
8573 465a E80E add r14,r24
8574 465c F91E adc r15,r25
8575 465e CA01 movw r24,r20
8576 4660 B901 movw r22,r18
8577 4662 2A89 ldd r18,Y+18
8578 4664 3B89 ldd r19,Y+19
8579 4666 4C89 ldd r20,Y+20
8580 4668 5D89 ldd r21,Y+21
8581 466a 0E94 0000 call __divmodsi4
8582 466e DA01 movw r26,r20
8583 4670 C901 movw r24,r18
8584 4672 2091 0000 lds r18,KompassStartwert
8585 4676 3091 0000 lds r19,(KompassStartwert)+1
8586 467a 4427 clr r20
8587 467c 37FD sbrc r19,7
8588 467e 4095 com r20
8589 4680 542F mov r21,r20
8590 4682 821B sub r24,r18
8591 4684 930B sbc r25,r19
8592 4686 A40B sbc r26,r20
8593 4688 B50B sbc r27,r21
8594 468a 845E subi r24,lo8(-(540))
8595 468c 9D4F sbci r25,hi8(-(540))
8596 468e AF4F sbci r26,hlo8(-(540))
8597 4690 BF4F sbci r27,hhi8(-(540))
8598 4692 BC01 movw r22,r24
8599 4694 CD01 movw r24,r26
8600 4696 28E6 ldi r18,lo8(360)
8601 4698 31E0 ldi r19,hi8(360)
8602 469a 40E0 ldi r20,hlo8(360)
8603 469c 50E0 ldi r21,hhi8(360)
8604 469e 0E94 0000 call __divmodsi4
8605 46a2 DC01 movw r26,r24
8606 46a4 CB01 movw r24,r22
8607 46a6 845B subi r24,lo8(-(-180))
8608 46a8 9040 sbci r25,hi8(-(-180))
8609 46aa 8C9D mul r24,r12
8610 46ac D001 movw r26,r0
8611 46ae 8D9D mul r24,r13
8612 46b0 B00D add r27,r0
8613 46b2 9C9D mul r25,r12
8614 46b4 B00D add r27,r0
8615 46b6 1124 clr r1
8616 46b8 CD01 movw r24,r26
8617 46ba B701 movw r22,r14
8618 46bc 0E94 0000 call __divmodhi4
8619 46c0 83E0 ldi r24,lo8(3)
8620 46c2 189F mul r17,r24
8621 46c4 6001 movw r12,r0
8622 46c6 1124 clr r1
8623 46c8 C616 cp r12,r22
8624 46ca D706 cpc r13,r23
8625 46cc 04F4 brge .+4
8626 46ce 0C94 0000 jmp .L1284
8627 46d2 8827 clr r24
8628 46d4 9927 clr r25
8629 46d6 8C19 sub r24,r12
8630 46d8 9D09 sbc r25,r13
8631 46da 6817 cp r22,r24
8632 46dc 7907 cpc r23,r25
8633 46de 04F4 brge .L968
8634 46e0 BC01 movw r22,r24
8635 .L968:
8636 46e2 CB01 movw r24,r22
8637 46e4 AA27 clr r26
8638 46e6 97FD sbrc r25,7
8639 46e8 A095 com r26
8640 46ea BA2F mov r27,r26
8641 46ec 2091 0000 lds r18,Mess_Integral_Gier
8642 46f0 3091 0000 lds r19,(Mess_Integral_Gier)+1
8643 46f4 4091 0000 lds r20,(Mess_Integral_Gier)+2
8644 46f8 5091 0000 lds r21,(Mess_Integral_Gier)+3
8645 46fc 820F add r24,r18
8646 46fe 931F adc r25,r19
8647 4700 A41F adc r26,r20
8648 4702 B51F adc r27,r21
8649 4704 8093 0000 sts Mess_Integral_Gier,r24
8650 4708 9093 0000 sts (Mess_Integral_Gier)+1,r25
8651 470c A093 0000 sts (Mess_Integral_Gier)+2,r26
8652 4710 B093 0000 sts (Mess_Integral_Gier)+3,r27
8653 4714 00C0 rjmp .L952
8654 .L1153:
8655 4716 8090 0000 lds r8,MesswertGier
8656 471a 9090 0000 lds r9,(MesswertGier)+1
8657 .L952:
8658 471e 8091 0000 lds r24,TimerWerteausgabe.11
8659 4722 8150 subi r24,lo8(-(-1))
8660 4724 8F3F cpi r24,lo8(-1)
8661 4726 01F4 brne .+2
8662 4728 00C0 rjmp .L1285
8663 472a 8093 0000 sts TimerWerteausgabe.11,r24
8664 472e A090 0000 lds r10,MesswertNick
8665 4732 B090 0000 lds r11,(MesswertNick)+1
8666 .L972:
8667 4736 BC8D ldd r27,Y+28
8668 4738 BB23 tst r27
8669 473a 01F0 breq .L974
8670 473c 1092 0000 sts SummeRoll.1,__zero_reg__
8671 4740 1092 0000 sts (SummeRoll.1)+1,__zero_reg__
8672 4744 1092 0000 sts (SummeRoll.1)+2,__zero_reg__
8673 4748 1092 0000 sts (SummeRoll.1)+3,__zero_reg__
8674 474c 1092 0000 sts SummeNick.0,__zero_reg__
8675 4750 1092 0000 sts (SummeNick.0)+1,__zero_reg__
8676 4754 1092 0000 sts (SummeNick.0)+2,__zero_reg__
8677 4758 1092 0000 sts (SummeNick.0)+3,__zero_reg__
8678 .L974:
8679 475c EB85 ldd r30,Y+11
8680 475e EE23 tst r30
8681 4760 01F0 breq .+2
8682 4762 00C0 rjmp .L975
8683 4764 8091 0000 lds r24,IntegralFaktor
8684 4768 9927 clr r25
8685 476a AA27 clr r26
8686 476c BB27 clr r27
8687 476e BC01 movw r22,r24
8688 4770 CD01 movw r24,r26
8689 4772 2D8D ldd r18,Y+29
8690 4774 3E8D ldd r19,Y+30
8691 4776 4F8D ldd r20,Y+31
8692 4778 58A1 ldd r21,Y+32
8693 477a 0E94 0000 call __mulsi3
8694 477e DC01 movw r26,r24
8695 4780 CB01 movw r24,r22
8696 4782 BC01 movw r22,r24
8697 4784 CD01 movw r24,r26
8698 4786 28EF ldi r18,lo8(11000)
8699 4788 3AE2 ldi r19,hi8(11000)
8700 478a 40E0 ldi r20,hlo8(11000)
8701 478c 50E0 ldi r21,hhi8(11000)
8702 478e 0E94 0000 call __divmodsi4
8703 4792 2901 movw r4,r18
8704 .L976:
8705 4794 FB8D ldd r31,Y+27
8706 4796 FF23 tst r31
8707 4798 01F0 breq .+2
8708 479a 00C0 rjmp .L977
8709 479c 8091 0000 lds r24,IntegralFaktor
8710 47a0 9927 clr r25
8711 47a2 AA27 clr r26
8712 47a4 BB27 clr r27
8713 47a6 BC01 movw r22,r24
8714 47a8 CD01 movw r24,r26
8715 47aa 2C85 ldd r18,Y+12
8716 47ac 3D85 ldd r19,Y+13
8717 47ae 4E85 ldd r20,Y+14
8718 47b0 5F85 ldd r21,Y+15
8719 47b2 0E94 0000 call __mulsi3
8720 47b6 DC01 movw r26,r24
8721 47b8 CB01 movw r24,r22
8722 47ba BC01 movw r22,r24
8723 47bc CD01 movw r24,r26
8724 47be 28EF ldi r18,lo8(11000)
8725 47c0 3AE2 ldi r19,hi8(11000)
8726 47c2 40E0 ldi r20,hlo8(11000)
8727 47c4 50E0 ldi r21,hhi8(11000)
8728 47c6 0E94 0000 call __divmodsi4
8729 47ca 1901 movw r2,r18
8730 .L978:
8731 47cc 0091 0000 lds r16,TrimNick
8732 47d0 1091 0000 lds r17,(TrimNick)+1
8733 47d4 093C cpi r16,201
8734 47d6 1105 cpc r17,__zero_reg__
8735 47d8 04F4 brge .+2
8736 47da 00C0 rjmp .L979
8737 47dc 08EC ldi r16,lo8(200)
8738 47de 10E0 ldi r17,hi8(200)
8739 .L1202:
8740 47e0 1093 0000 sts (TrimNick)+1,r17
8741 47e4 0093 0000 sts TrimNick,r16
8742 .L980:
8743 47e8 4091 0000 lds r20,TrimRoll
8744 47ec 5091 0000 lds r21,(TrimRoll)+1
8745 47f0 5EA3 std Y+38,r21
8746 47f2 4DA3 std Y+37,r20
8747 47f4 493C cpi r20,201
8748 47f6 5105 cpc r21,__zero_reg__
8749 47f8 04F4 brge .+2
8750 47fa 00C0 rjmp .L982
8751 47fc 68EC ldi r22,lo8(200)
8752 47fe 70E0 ldi r23,hi8(200)
8753 4800 7EA3 std Y+38,r23
8754 4802 6DA3 std Y+37,r22
8755 4804 7093 0000 sts (TrimRoll)+1,r23
8756 4808 6093 0000 sts TrimRoll,r22
8757 .L983:
8758 480c C501 movw r24,r10
8759 480e AA27 clr r26
8760 4810 97FD sbrc r25,7
8761 4812 A095 com r26
8762 4814 BA2F mov r27,r26
8763 4816 2091 0000 lds r18,GyroFaktor
8764 481a C22E mov r12,r18
8765 481c DD24 clr r13
8766 481e EE24 clr r14
8767 4820 FF24 clr r15
8768 4822 BC01 movw r22,r24
8769 4824 CD01 movw r24,r26
8770 4826 A701 movw r20,r14
8771 4828 9601 movw r18,r12
8772 482a 0E94 0000 call __mulsi3
8773 482e 9B01 movw r18,r22
8774 4830 AC01 movw r20,r24
8775 4832 C801 movw r24,r16
8776 4834 AA27 clr r26
8777 4836 97FD sbrc r25,7
8778 4838 A095 com r26
8779 483a BA2F mov r27,r26
8780 483c 67E0 ldi r22,7
8781 483e 880F 1: lsl r24
8782 4840 991F rol r25
8783 4842 AA1F rol r26
8784 4844 BB1F rol r27
8785 4846 6A95 dec r22
8786 4848 01F4 brne 1b
8787 484a 280F add r18,r24
8788 484c 391F adc r19,r25
8789 484e 4A1F adc r20,r26
8790 4850 5B1F adc r21,r27
8791 4852 57FD sbrc r21,7
8792 4854 00C0 rjmp .L1286
8793 .L985:
8794 4856 86E0 ldi r24,6
8795 4858 5595 1: asr r21
8796 485a 4795 ror r20
8797 485c 3795 ror r19
8798 485e 2795 ror r18
8799 4860 8A95 dec r24
8800 4862 01F4 brne 1b
8801 4864 5201 movw r10,r4
8802 4866 A20E add r10,r18
8803 4868 B31E adc r11,r19
8804 486a 3501 movw r6,r10
8805 486c 8091 0000 lds r24,MesswertRoll
8806 4870 9091 0000 lds r25,(MesswertRoll)+1
8807 4874 AA27 clr r26
8808 4876 97FD sbrc r25,7
8809 4878 A095 com r26
8810 487a BA2F mov r27,r26
8811 487c BC01 movw r22,r24
8812 487e CD01 movw r24,r26
8813 4880 A701 movw r20,r14
8814 4882 9601 movw r18,r12
8815 4884 0E94 0000 call __mulsi3
8816 4888 9B01 movw r18,r22
8817 488a AC01 movw r20,r24
8818 488c EDA0 ldd r14,Y+37
8819 488e FEA0 ldd r15,Y+38
8820 4890 C701 movw r24,r14
8821 4892 AA27 clr r26
8822 4894 97FD sbrc r25,7
8823 4896 A095 com r26
8824 4898 BA2F mov r27,r26
8825 489a 07E0 ldi r16,7
8826 489c 880F 1: lsl r24
8827 489e 991F rol r25
8828 48a0 AA1F rol r26
8829 48a2 BB1F rol r27
8830 48a4 0A95 dec r16
8831 48a6 01F4 brne 1b
8832 48a8 280F add r18,r24
8833 48aa 391F adc r19,r25
8834 48ac 4A1F adc r20,r26
8835 48ae 5B1F adc r21,r27
8836 48b0 57FD sbrc r21,7
8837 48b2 00C0 rjmp .L1287
8838 .L986:
8839 48b4 16E0 ldi r17,6
8840 48b6 5595 1: asr r21
8841 48b8 4795 ror r20
8842 48ba 3795 ror r19
8843 48bc 2795 ror r18
8844 48be 1A95 dec r17
8845 48c0 01F4 brne 1b
8846 48c2 8101 movw r16,r2
8847 48c4 020F add r16,r18
8848 48c6 131F adc r17,r19
8849 48c8 1EA3 std Y+38,r17
8850 48ca 0DA3 std Y+37,r16
8851 48cc 6801 movw r12,r16
8852 48ce 880C add r8,r8
8853 48d0 991C adc r9,r9
8854 48d2 C401 movw r24,r8
8855 48d4 AA27 clr r26
8856 48d6 97FD sbrc r25,7
8857 48d8 A095 com r26
8858 48da BA2F mov r27,r26
8859 48dc 2091 0000 lds r18,GyroFaktorGier
8860 48e0 3327 clr r19
8861 48e2 4427 clr r20
8862 48e4 5527 clr r21
8863 48e6 BC01 movw r22,r24
8864 48e8 CD01 movw r24,r26
8865 48ea 0E94 0000 call __mulsi3
8866 48ee 7B01 movw r14,r22
8867 48f0 8C01 movw r16,r24
8868 48f2 97FD sbrc r25,7
8869 48f4 00C0 rjmp .L1288
8870 .L987:
8871 48f6 B6E0 ldi r27,6
8872 48f8 1595 1: asr r17
8873 48fa 0795 ror r16
8874 48fc F794 ror r15
8875 48fe E794 ror r14
8876 4900 BA95 dec r27
8877 4902 01F4 brne 1b
8878 4904 3A8D ldd r19,Y+26
8879 4906 832F mov r24,r19
8880 4908 9927 clr r25
8881 490a AA27 clr r26
8882 490c BB27 clr r27
8883 490e 2091 0000 lds r18,Integral_Gier
8884 4912 3091 0000 lds r19,(Integral_Gier)+1
8885 4916 4091 0000 lds r20,(Integral_Gier)+2
8886 491a 5091 0000 lds r21,(Integral_Gier)+3
8887 491e BC01 movw r22,r24
8888 4920 CD01 movw r24,r26
8889 4922 0E94 0000 call __mulsi3
8890 4926 DC01 movw r26,r24
8891 4928 CB01 movw r24,r22
8892 492a BC01 movw r22,r24
8893 492c CD01 movw r24,r26
8894 492e 20EF ldi r18,lo8(22000)
8895 4930 35E5 ldi r19,hi8(22000)
8896 4932 40E0 ldi r20,hlo8(22000)
8897 4934 50E0 ldi r21,hhi8(22000)
8898 4936 0E94 0000 call __divmodsi4
8899 493a 4701 movw r8,r14
8900 493c 820E add r8,r18
8901 493e 931E adc r9,r19
8902 4940 C401 movw r24,r8
8903 4942 41E0 ldi r20,lo8(16385)
8904 4944 A416 cp r10,r20
8905 4946 40E4 ldi r20,hi8(16385)
8906 4948 B406 cpc r11,r20
8907 494a 04F0 brlt .L988
8908 494c A12C mov r10,__zero_reg__
8909 494e A0E4 ldi r26,hi8(16384)
8910 4950 BA2E mov r11,r26
8911 4952 3501 movw r6,r10
8912 .L988:
8913 4954 50E0 ldi r21,lo8(-16384)
8914 4956 A516 cp r10,r21
8915 4958 50EC ldi r21,hi8(-16384)
8916 495a B506 cpc r11,r21
8917 495c 04F0 brlt .+2
8918 495e 00C0 rjmp .L1184
8919 4960 A12C mov r10,__zero_reg__
8920 4962 F0EC ldi r31,hi8(-16384)
8921 4964 BF2E mov r11,r31
8922 4966 B092 0000 sts (MesswertNick)+1,r11
8923 496a A092 0000 sts MesswertNick,r10
8924 .L989:
8925 496e 6DA1 ldd r22,Y+37
8926 4970 7EA1 ldd r23,Y+38
8927 4972 6150 subi r22,lo8(16385)
8928 4974 7044 sbci r23,hi8(16385)
8929 4976 04F0 brlt .L990
8930 4978 E0E0 ldi r30,lo8(16384)
8931 497a F0E4 ldi r31,hi8(16384)
8932 497c FEA3 std Y+38,r31
8933 497e EDA3 std Y+37,r30
8934 4980 6F01 movw r12,r30
8935 .L990:
8936 4982 0DA1 ldd r16,Y+37
8937 4984 1EA1 ldd r17,Y+38
8938 4986 0050 subi r16,lo8(-16384)
8939 4988 104C sbci r17,hi8(-16384)
8940 498a 04F0 brlt .+2
8941 498c 00C0 rjmp .L1185
8942 498e 40E0 ldi r20,lo8(-16384)
8943 4990 50EC ldi r21,hi8(-16384)
8944 4992 5EA3 std Y+38,r21
8945 4994 4DA3 std Y+37,r20
8946 4996 5093 0000 sts (MesswertRoll)+1,r21
8947 499a 4093 0000 sts MesswertRoll,r20
8948 .L991:
8949 499e 51E0 ldi r21,lo8(16385)
8950 49a0 8516 cp r8,r21
8951 49a2 50E4 ldi r21,hi8(16385)
8952 49a4 9506 cpc r9,r21
8953 49a6 04F0 brlt .L992
8954 49a8 812C mov r8,__zero_reg__
8955 49aa E0E4 ldi r30,hi8(16384)
8956 49ac 9E2E mov r9,r30
8957 49ae C401 movw r24,r8
8958 .L992:
8959 49b0 60E0 ldi r22,lo8(-16384)
8960 49b2 8616 cp r8,r22
8961 49b4 60EC ldi r22,hi8(-16384)
8962 49b6 9606 cpc r9,r22
8963 49b8 04F0 brlt .+2
8964 49ba 00C0 rjmp .L1186
8965 49bc 812C mov r8,__zero_reg__
8966 49be 70EC ldi r23,hi8(-16384)
8967 49c0 972E mov r9,r23
8968 49c2 9092 0000 sts (MesswertGier)+1,r9
8969 49c6 8092 0000 sts MesswertGier,r8
8970 .L993:
8971 49ca 8091 0000 lds r24,BattLowVoltageWarning
8972 49ce 482F mov r20,r24
8973 49d0 5527 clr r21
8974 49d2 8091 0000 lds r24,UBat
8975 49d6 9091 0000 lds r25,(UBat)+1
8976 49da 4817 cp r20,r24
8977 49dc 5907 cpc r21,r25
8978 49de 04F4 brge .L994
8979 49e0 2091 0000 lds r18,UBat
8980 49e4 3091 0000 lds r19,(UBat)+1
8981 49e8 A981 ldd r26,Y+1
8982 49ea BA81 ldd r27,Y+2
8983 49ec 4A9F mul r20,r26
8984 49ee C001 movw r24,r0
8985 49f0 4B9F mul r20,r27
8986 49f2 900D add r25,r0
8987 49f4 5A9F mul r21,r26
8988 49f6 900D add r25,r0
8989 49f8 1124 clr r1
8990 49fa B901 movw r22,r18
8991 49fc 0E94 0000 call __udivmodhi4
8992 4a00 7A83 std Y+2,r23
8993 4a02 6983 std Y+1,r22
8994 .L994:
8995 4a04 E981 ldd r30,Y+1
8996 4a06 FA81 ldd r31,Y+2
8997 4a08 EE0F lsl r30
8998 4a0a FF1F rol r31
8999 4a0c EE0F lsl r30
9000 4a0e FF1F rol r31
9001 4a10 FA83 std Y+2,r31
9002 4a12 E983 std Y+1,r30
9003 4a14 F889 ldd r31,Y+16
9004 4a16 F0FF sbrs r31,0
9005 4a18 00C0 rjmp .L1157
9006 4a1a 0B8D ldd r16,Y+27
9007 4a1c 0023 tst r16
9008 4a1e 01F4 brne .L1157
9009 4a20 1B85 ldd r17,Y+11
9010 4a22 1123 tst r17
9011 4a24 01F4 brne .L1157
9012 4a26 2091 0000 lds r18,BaroExpandActive
9013 4a2a 3091 0000 lds r19,(BaroExpandActive)+1
9014 4a2e 2115 cp r18,__zero_reg__
9015 4a30 3105 cpc r19,__zero_reg__
9016 4a32 01F0 breq .+2
9017 4a34 00C0 rjmp .L996
9018 4a36 8091 0000 lds r24,MessLuftdruck
9019 4a3a 9091 0000 lds r25,(MessLuftdruck)+1
9020 4a3e 8959 subi r24,lo8(921)
9021 4a40 9340 sbci r25,hi8(921)
9022 4a42 00F0 brlo .+2
9023 4a44 00C0 rjmp .L1289
9024 4a46 8091 0000 lds r24,MessLuftdruck
9025 4a4a 9091 0000 lds r25,(MessLuftdruck)+1
9026 4a4e 8436 cpi r24,100
9027 4a50 9105 cpc r25,__zero_reg__
9028 4a52 00F0 brlo .+4
9029 4a54 0C94 0000 jmp .L1001
9030 4a58 87B5 in r24,71-0x20
9031 4a5a 8B30 cpi r24,lo8(11)
9032 4a5c 00F4 brsh .+4
9033 4a5e 0C94 0000 jmp .L1002
9034 4a62 8091 0000 lds r24,ExpandBaro
9035 4a66 8F5F subi r24,lo8(-(1))
9036 .L1203:
9037 4a68 8093 0000 sts ExpandBaro,r24
9038 4a6c 9AE0 ldi r25,lo8(10)
9039 4a6e 8902 muls r24,r25
9040 4a70 9001 movw r18,r0
9041 4a72 1124 clr r1
9042 4a74 8091 0000 lds r24,DruckOffsetSetting
9043 4a78 821B sub r24,r18
9044 4a7a 87BD out 71-0x20,r24
9045 4a7c 8CE2 ldi r24,lo8(300)
9046 4a7e 91E0 ldi r25,hi8(300)
9047 4a80 9093 0000 sts (beeptime)+1,r25
9048 4a84 8093 0000 sts beeptime,r24
9049 4a88 8EE5 ldi r24,lo8(350)
9050 4a8a 91E0 ldi r25,hi8(350)
9051 4a8c 9093 0000 sts (BaroExpandActive)+1,r25
9052 4a90 8093 0000 sts BaroExpandActive,r24
9053 4a94 00C0 rjmp .L1005
9054 .L1157:
9055 4a96 D090 0000 lds r13,MAX_GAS
9056 .L995:
9057 4a9a 8091 0000 lds r24,MIN_GAS
9058 4a9e 9927 clr r25
9059 4aa0 880F lsl r24
9060 4aa2 991F rol r25
9061 4aa4 880F lsl r24
9062 4aa6 991F rol r25
9063 4aa8 8896 adiw r24,40
9064 4aaa 6981 ldd r22,Y+1
9065 4aac 7A81 ldd r23,Y+2
9066 4aae 6817 cp r22,r24
9067 4ab0 7907 cpc r23,r25
9068 4ab2 04F4 brge .L1088
9069 4ab4 9A83 std Y+2,r25
9070 4ab6 8983 std Y+1,r24
9071 .L1088:
9072 4ab8 8D2D mov r24,r13
9073 4aba 9927 clr r25
9074 4abc 880F lsl r24
9075 4abe 991F rol r25
9076 4ac0 880F lsl r24
9077 4ac2 991F rol r25
9078 4ac4 8055 subi r24,lo8(-(-80))
9079 4ac6 9040 sbci r25,hi8(-(-80))
9080 4ac8 A981 ldd r26,Y+1
9081 4aca BA81 ldd r27,Y+2
9082 4acc 8A17 cp r24,r26
9083 4ace 9B07 cpc r25,r27
9084 4ad0 04F4 brge .L1089
9085 4ad2 9A83 std Y+2,r25
9086 4ad4 8983 std Y+1,r24
9087 .L1089:
9088 4ad6 8091 0000 lds r24,MissingMotor
9089 4ada 8823 tst r24
9090 4adc 01F0 breq .L1090
9091 4ade 8091 0000 lds r24,modell_fliegt
9092 4ae2 9091 0000 lds r25,(modell_fliegt)+1
9093 4ae6 0297 sbiw r24,2
9094 4ae8 C097 sbiw r24,48
9095 4aea 00F4 brsh .L1090
9096 4aec E981 ldd r30,Y+1
9097 4aee FA81 ldd r31,Y+2
9098 4af0 1E16 cp __zero_reg__,r30
9099 4af2 1F06 cpc __zero_reg__,r31
9100 4af4 04F4 brge .L1090
9101 4af6 81E0 ldi r24,lo8(1)
9102 4af8 90E0 ldi r25,hi8(1)
9103 4afa 9093 0000 sts (modell_fliegt)+1,r25
9104 4afe 8093 0000 sts modell_fliegt,r24
9105 .L1090:
9106 4b02 8091 0000 lds r24,StickNick
9107 4b06 9091 0000 lds r25,(StickNick)+1
9108 4b0a B501 movw r22,r10
9109 4b0c 681B sub r22,r24
9110 4b0e 790B sbc r23,r25
9111 4b10 7093 0000 sts (DiffNick)+1,r23
9112 4b14 6093 0000 sts DiffNick,r22
9113 4b18 E091 0000 lds r30,IntegralFaktor
9114 4b1c EE23 tst r30
9115 4b1e 01F4 brne .+2
9116 4b20 00C0 rjmp .L1104
9117 4b22 481A sub r4,r24
9118 4b24 590A sbc r5,r25
9119 4b26 C201 movw r24,r4
9120 4b28 AA27 clr r26
9121 4b2a 97FD sbrc r25,7
9122 4b2c A095 com r26
9123 4b2e BA2F mov r27,r26
9124 .L1208:
9125 4b30 2091 0000 lds r18,SummeNick.0
9126 4b34 3091 0000 lds r19,(SummeNick.0)+1
9127 4b38 4091 0000 lds r20,(SummeNick.0)+2
9128 4b3c 5091 0000 lds r21,(SummeNick.0)+3
9129 4b40 820F add r24,r18
9130 4b42 931F adc r25,r19
9131 4b44 A41F adc r26,r20
9132 4b46 B51F adc r27,r21
9133 4b48 8093 0000 sts SummeNick.0,r24
9134 4b4c 9093 0000 sts (SummeNick.0)+1,r25
9135 4b50 A093 0000 sts (SummeNick.0)+2,r26
9136 4b54 B093 0000 sts (SummeNick.0)+3,r27
9137 4b58 8091 0000 lds r24,SummeNick.0
9138 4b5c 9091 0000 lds r25,(SummeNick.0)+1
9139 4b60 A091 0000 lds r26,(SummeNick.0)+2
9140 4b64 B091 0000 lds r27,(SummeNick.0)+3
9141 4b68 8130 cpi r24,lo8(64001)
9142 4b6a FAEF ldi r31,hi8(64001)
9143 4b6c 9F07 cpc r25,r31
9144 4b6e F0E0 ldi r31,hlo8(64001)
9145 4b70 AF07 cpc r26,r31
9146 4b72 F0E0 ldi r31,hhi8(64001)
9147 4b74 BF07 cpc r27,r31
9148 4b76 04F0 brlt .L1106
9149 4b78 80E0 ldi r24,lo8(64000)
9150 4b7a 9AEF ldi r25,hi8(64000)
9151 4b7c A0E0 ldi r26,hlo8(64000)
9152 4b7e B0E0 ldi r27,hhi8(64000)
9153 4b80 8093 0000 sts SummeNick.0,r24
9154 4b84 9093 0000 sts (SummeNick.0)+1,r25
9155 4b88 A093 0000 sts (SummeNick.0)+2,r26
9156 4b8c B093 0000 sts (SummeNick.0)+3,r27
9157 .L1106:
9158 4b90 8050 subi r24,lo8(-64000)
9159 4b92 9640 sbci r25,hi8(-64000)
9160 4b94 AF4F sbci r26,hlo8(-64000)
9161 4b96 BF4F sbci r27,hhi8(-64000)
9162 4b98 04F4 brge .L1107
9163 4b9a 80E0 ldi r24,lo8(-64000)
9164 4b9c 96E0 ldi r25,hi8(-64000)
9165 4b9e AFEF ldi r26,hlo8(-64000)
9166 4ba0 BFEF ldi r27,hhi8(-64000)
9167 4ba2 8093 0000 sts SummeNick.0,r24
9168 4ba6 9093 0000 sts (SummeNick.0)+1,r25
9169 4baa A093 0000 sts (SummeNick.0)+2,r26
9170 4bae B093 0000 sts (SummeNick.0)+3,r27
9171 .L1107:
9172 4bb2 8091 0000 lds r24,StickRoll
9173 4bb6 9091 0000 lds r25,(StickRoll)+1
9174 4bba 6DA1 ldd r22,Y+37
9175 4bbc 7EA1 ldd r23,Y+38
9176 4bbe 681B sub r22,r24
9177 4bc0 790B sbc r23,r25
9178 4bc2 7093 0000 sts (DiffRoll)+1,r23
9179 4bc6 6093 0000 sts DiffRoll,r22
9180 4bca EE23 tst r30
9181 4bcc 01F4 brne .+2
9182 4bce 00C0 rjmp .L1113
9183 4bd0 281A sub r2,r24
9184 4bd2 390A sbc r3,r25
9185 4bd4 C101 movw r24,r2
9186 4bd6 AA27 clr r26
9187 4bd8 97FD sbrc r25,7
9188 4bda A095 com r26
9189 4bdc BA2F mov r27,r26
9190 .L1209:
9191 4bde 2091 0000 lds r18,SummeRoll.1
9192 4be2 3091 0000 lds r19,(SummeRoll.1)+1
9193 4be6 4091 0000 lds r20,(SummeRoll.1)+2
9194 4bea 5091 0000 lds r21,(SummeRoll.1)+3
9195 4bee 820F add r24,r18
9196 4bf0 931F adc r25,r19
9197 4bf2 A41F adc r26,r20
9198 4bf4 B51F adc r27,r21
9199 4bf6 8093 0000 sts SummeRoll.1,r24
9200 4bfa 9093 0000 sts (SummeRoll.1)+1,r25
9201 4bfe A093 0000 sts (SummeRoll.1)+2,r26
9202 4c02 B093 0000 sts (SummeRoll.1)+3,r27
9203 4c06 8091 0000 lds r24,SummeRoll.1
9204 4c0a 9091 0000 lds r25,(SummeRoll.1)+1
9205 4c0e A091 0000 lds r26,(SummeRoll.1)+2
9206 4c12 B091 0000 lds r27,(SummeRoll.1)+3
9207 4c16 8130 cpi r24,lo8(64001)
9208 4c18 1AEF ldi r17,hi8(64001)
9209 4c1a 9107 cpc r25,r17
9210 4c1c 10E0 ldi r17,hlo8(64001)
9211 4c1e A107 cpc r26,r17
9212 4c20 10E0 ldi r17,hhi8(64001)
9213 4c22 B107 cpc r27,r17
9214 4c24 04F0 brlt .L1115
9215 4c26 80E0 ldi r24,lo8(64000)
9216 4c28 9AEF ldi r25,hi8(64000)
9217 4c2a A0E0 ldi r26,hlo8(64000)
9218 4c2c B0E0 ldi r27,hhi8(64000)
9219 4c2e 8093 0000 sts SummeRoll.1,r24
9220 4c32 9093 0000 sts (SummeRoll.1)+1,r25
9221 4c36 A093 0000 sts (SummeRoll.1)+2,r26
9222 4c3a B093 0000 sts (SummeRoll.1)+3,r27
9223 .L1115:
9224 4c3e 8050 subi r24,lo8(-64000)
9225 4c40 9640 sbci r25,hi8(-64000)
9226 4c42 AF4F sbci r26,hlo8(-64000)
9227 4c44 BF4F sbci r27,hhi8(-64000)
9228 4c46 04F4 brge .L1116
9229 4c48 80E0 ldi r24,lo8(-64000)
9230 4c4a 96E0 ldi r25,hi8(-64000)
9231 4c4c AFEF ldi r26,hlo8(-64000)
9232 4c4e BFEF ldi r27,hhi8(-64000)
9233 4c50 8093 0000 sts SummeRoll.1,r24
9234 4c54 9093 0000 sts (SummeRoll.1)+1,r25
9235 4c58 A093 0000 sts (SummeRoll.1)+2,r26
9236 4c5c B093 0000 sts (SummeRoll.1)+3,r27
9237 .L1116:
9238 4c60 8091 0000 lds r24,PPM_in+4
9239 4c64 9091 0000 lds r25,(PPM_in+4)+1
9240 4c68 845C subi r24,lo8(-60)
9241 4c6a 9F4F sbci r25,hi8(-60)
9242 4c6c 04F4 brge .L1122
9243 4c6e 8091 0000 lds r24,ucflg2
9244 4c72 8130 cpi r24,lo8(1)
9245 4c74 01F4 brne .+2
9246 4c76 00C0 rjmp .L1290
9247 .L1122:
9248 4c78 8091 0000 lds r24,PPM_in+4
9249 4c7c 9091 0000 lds r25,(PPM_in+4)+1
9250 4c80 8D5E subi r24,lo8(-19)
9251 4c82 9F4F sbci r25,hi8(-19)
9252 4c84 04F0 brlt .L1125
9253 4c86 8091 0000 lds r24,PPM_in+4
9254 4c8a 9091 0000 lds r25,(PPM_in+4)+1
9255 4c8e 4497 sbiw r24,20
9256 4c90 04F4 brge .L1125
9257 4c92 81E0 ldi r24,lo8(1)
9258 4c94 8093 0000 sts ucflg2,r24
9259 .L1125:
9260 4c98 8091 0000 lds r24,PPM_in+10
9261 4c9c 9091 0000 lds r25,(PPM_in+10)+1
9262 4ca0 805B subi r24,lo8(-80)
9263 4ca2 9F4F sbci r25,hi8(-80)
9264 4ca4 04F4 brge .L1126
9265 4ca6 8091 0000 lds r24,ucflg3
9266 4caa 8130 cpi r24,lo8(1)
9267 4cac 01F4 brne .+2
9268 4cae 00C0 rjmp .L1291
9269 .L1126:
9270 4cb0 8091 0000 lds r24,PPM_in+10
9271 4cb4 9091 0000 lds r25,(PPM_in+10)+1
9272 4cb8 8135 cpi r24,81
9273 4cba 9105 cpc r25,__zero_reg__
9274 4cbc 04F0 brlt .L1128
9275 4cbe 81E0 ldi r24,lo8(1)
9276 4cc0 8093 0000 sts ucflg3,r24
9277 .L1128:
9278 4cc4 0091 0000 lds r16,ipk
9279 4cc8 1091 0000 lds r17,(ipk)+1
9280 4ccc 1093 0000 sts (kp)+1,r17
9281 4cd0 0093 0000 sts kp,r16
9282 4cd4 E090 0000 lds r14,ipk+2
9283 4cd8 F090 0000 lds r15,(ipk+2)+1
9284 4cdc F092 0000 sts (kd)+1,r15
9285 4ce0 E092 0000 sts kd,r14
9286 4ce4 C090 0000 lds r12,ipk+4
9287 4ce8 D090 0000 lds r13,(ipk+4)+1
9288 4cec D092 0000 sts (kdd)+1,r13
9289 4cf0 C092 0000 sts kdd,r12
9290 4cf4 A090 0000 lds r10,PPM_in+2
9291 4cf8 B090 0000 lds r11,(PPM_in+2)+1
9292 4cfc 6FE7 ldi r22,lo8(127)
9293 4cfe 70E0 ldi r23,hi8(127)
9294 4d00 A60E add r10,r22
9295 4d02 B71E adc r11,r23
9296 4d04 C501 movw r24,r10
9297 4d06 7AE0 ldi r23,lo8(10)
9298 4d08 A716 cp r10,r23
9299 4d0a B104 cpc r11,__zero_reg__
9300 4d0c 04F4 brge .L1129
9301 4d0e EAE0 ldi r30,lo8(10)
9302 4d10 AE2E mov r10,r30
9303 4d12 B12C mov r11,__zero_reg__
9304 4d14 C501 movw r24,r10
9305 .L1129:
9306 4d16 A3E3 ldi r26,lo8(51)
9307 4d18 AA16 cp r10,r26
9308 4d1a B104 cpc r11,__zero_reg__
9309 4d1c 04F4 brge .+2
9310 4d1e 00C0 rjmp .L1192
9311 4d20 72E3 ldi r23,lo8(50)
9312 4d22 A72E mov r10,r23
9313 4d24 B12C mov r11,__zero_reg__
9314 4d26 B092 0000 sts (thrust)+1,r11
9315 4d2a A092 0000 sts thrust,r10
9316 .L1130:
9317 4d2e B092 0000 sts (DebugOut+16)+1,r11
9318 4d32 A092 0000 sts DebugOut+16,r10
9319 4d36 1092 0000 sts (desiredAngle)+1,__zero_reg__
9320 4d3a 1092 0000 sts desiredAngle,__zero_reg__
9321 4d3e 8091 0000 lds r24,EE_Parameter+23
9322 4d42 9927 clr r25
9323 4d44 880F lsl r24
9324 4d46 991F rol r25
9325 4d48 880F lsl r24
9326 4d4a 991F rol r25
9327 4d4c 9C01 movw r18,r24
9328 4d4e 4427 clr r20
9329 4d50 37FD sbrc r19,7
9330 4d52 4095 com r20
9331 4d54 542F mov r21,r20
9332 4d56 6D8D ldd r22,Y+29
9333 4d58 7E8D ldd r23,Y+30
9334 4d5a 8F8D ldd r24,Y+31
9335 4d5c 98A1 ldd r25,Y+32
9336 4d5e 0E94 0000 call __divmodsi4
9337 4d62 3093 0000 sts (angle)+1,r19
9338 4d66 2093 0000 sts angle,r18
9339 4d6a A091 0000 lds r26,HiResNick
9340 4d6e B091 0000 lds r27,(HiResNick)+1
9341 4d72 B093 0000 sts (gyroScaled)+1,r27
9342 4d76 A093 0000 sts gyroScaled,r26
9343 4d7a 6091 0000 lds r22,PPM_in+4
9344 4d7e 7091 0000 lds r23,(PPM_in+4)+1
9345 4d82 77FD sbrc r23,7
9346 4d84 00C0 rjmp .L1292
9347 .L1131:
9348 4d86 7595 asr r23
9349 4d88 6795 ror r22
9350 4d8a 7595 asr r23
9351 4d8c 6795 ror r22
9352 4d8e C901 movw r24,r18
9353 4d90 2227 clr r18
9354 4d92 3327 clr r19
9355 4d94 281B sub r18,r24
9356 4d96 390B sbc r19,r25
9357 4d98 37FD sbrc r19,7
9358 4d9a 00C0 rjmp .L1293
9359 .L1132:
9360 4d9c 3595 asr r19
9361 4d9e 2795 ror r18
9362 4da0 3595 asr r19
9363 4da2 2795 ror r18
9364 4da4 3595 asr r19
9365 4da6 2795 ror r18
9366 4da8 3595 asr r19
9367 4daa 2795 ror r18
9368 4dac 209F mul r18,r16
9369 4dae F001 movw r30,r0
9370 4db0 219F mul r18,r17
9371 4db2 F00D add r31,r0
9372 4db4 309F mul r19,r16
9373 4db6 F00D add r31,r0
9374 4db8 1124 clr r1
9375 4dba E60F add r30,r22
9376 4dbc F71F adc r31,r23
9377 4dbe F093 0000 sts (controllerP)+1,r31
9378 4dc2 E093 0000 sts controllerP,r30
9379 4dc6 8091 0000 lds r24,maxcontrollerP
9380 4dca 9091 0000 lds r25,(maxcontrollerP)+1
9381 4dce 8E17 cp r24,r30
9382 4dd0 9F07 cpc r25,r31
9383 4dd2 04F4 brge .L1133
9384 4dd4 F093 0000 sts (maxcontrollerP)+1,r31
9385 4dd8 E093 0000 sts maxcontrollerP,r30
9386 .L1133:
9387 4ddc 8091 0000 lds r24,mincontrollerP
9388 4de0 9091 0000 lds r25,(mincontrollerP)+1
9389 4de4 E817 cp r30,r24
9390 4de6 F907 cpc r31,r25
9391 4de8 04F4 brge .L1134
9392 4dea F093 0000 sts (mincontrollerP)+1,r31
9393 4dee E093 0000 sts mincontrollerP,r30
9394 .L1134:
9395 4df2 8827 clr r24
9396 4df4 9927 clr r25
9397 4df6 8A1B sub r24,r26
9398 4df8 9B0B sbc r25,r27
9399 4dfa 8E9D mul r24,r14
9400 4dfc 8001 movw r16,r0
9401 4dfe 8F9D mul r24,r15
9402 4e00 100D add r17,r0
9403 4e02 9E9D mul r25,r14
9404 4e04 100D add r17,r0
9405 4e06 1124 clr r1
9406 4e08 C801 movw r24,r16
9407 4e0a 17FD sbrc r17,7
9408 4e0c 00C0 rjmp .L1294
9409 .L1135:
9410 4e0e BC01 movw r22,r24
9411 4e10 672F mov r22,r23
9412 4e12 770F lsl r23
9413 4e14 770B sbc r23,r23
9414 4e16 6595 asr r22
9415 4e18 7093 0000 sts (controllerD)+1,r23
9416 4e1c 6093 0000 sts controllerD,r22
9417 4e20 8091 0000 lds r24,maxcontrollerD
9418 4e24 9091 0000 lds r25,(maxcontrollerD)+1
9419 4e28 8617 cp r24,r22
9420 4e2a 9707 cpc r25,r23
9421 4e2c 04F4 brge .L1136
9422 4e2e 7093 0000 sts (maxcontrollerD)+1,r23
9423 4e32 6093 0000 sts maxcontrollerD,r22
9424 .L1136:
9425 4e36 8091 0000 lds r24,mincontrollerD
9426 4e3a 9091 0000 lds r25,(mincontrollerD)+1
9427 4e3e 6817 cp r22,r24
9428 4e40 7907 cpc r23,r25
9429 4e42 04F4 brge .L1137
9430 4e44 7093 0000 sts (mincontrollerD)+1,r23
9431 4e48 6093 0000 sts mincontrollerD,r22
9432 .L1137:
9433 4e4c 8091 0000 lds r24,gyroScaledOld
9434 4e50 9091 0000 lds r25,(gyroScaledOld)+1
9435 4e54 8A1B sub r24,r26
9436 4e56 9B0B sbc r25,r27
9437 4e58 8C9D mul r24,r12
9438 4e5a A001 movw r20,r0
9439 4e5c 8D9D mul r24,r13
9440 4e5e 500D add r21,r0
9441 4e60 9C9D mul r25,r12
9442 4e62 500D add r21,r0
9443 4e64 1124 clr r1
9444 4e66 8091 0000 lds r24,filtersum
9445 4e6a 9091 0000 lds r25,(filtersum)+1
9446 4e6e 2091 0000 lds r18,filterDD
9447 4e72 3091 0000 lds r19,(filterDD)+1
9448 4e76 821B sub r24,r18
9449 4e78 930B sbc r25,r19
9450 4e7a 840F add r24,r20
9451 4e7c 951F adc r25,r21
9452 4e7e 9093 0000 sts (filtersum)+1,r25
9453 4e82 8093 0000 sts filtersum,r24
9454 4e86 97FD sbrc r25,7
9455 4e88 00C0 rjmp .L1295
9456 .L1138:
9457 4e8a 9595 asr r25
9458 4e8c 8795 ror r24
9459 4e8e 9595 asr r25
9460 4e90 8795 ror r24
9461 4e92 9595 asr r25
9462 4e94 8795 ror r24
9463 4e96 9093 0000 sts (filterDD)+1,r25
9464 4e9a 8093 0000 sts filterDD,r24
9465 4e9e 97FD sbrc r25,7
9466 4ea0 00C0 rjmp .L1296
9467 .L1139:
9468 4ea2 9C01 movw r18,r24
9469 4ea4 022E mov __tmp_reg__,r18
9470 4ea6 232F mov r18,r19
9471 4ea8 000C lsl __tmp_reg__
9472 4eaa 221F rol r18
9473 4eac 330B sbc r19,r19
9474 4eae 000C lsl __tmp_reg__
9475 4eb0 221F rol r18
9476 4eb2 331F rol r19
9477 4eb4 3093 0000 sts (controllerDD)+1,r19
9478 4eb8 2093 0000 sts controllerDD,r18
9479 4ebc B093 0000 sts (gyroScaledOld)+1,r27
9480 4ec0 A093 0000 sts gyroScaledOld,r26
9481 4ec4 8091 0000 lds r24,maxcontrollerDD
9482 4ec8 9091 0000 lds r25,(maxcontrollerDD)+1
9483 4ecc 8217 cp r24,r18
9484 4ece 9307 cpc r25,r19
9485 4ed0 04F4 brge .L1140
9486 4ed2 3093 0000 sts (maxcontrollerDD)+1,r19
9487 4ed6 2093 0000 sts maxcontrollerDD,r18
9488 .L1140:
9489 4eda 8091 0000 lds r24,mincontrollerDD
9490 4ede 9091 0000 lds r25,(mincontrollerDD)+1
9491 4ee2 2817 cp r18,r24
9492 4ee4 3907 cpc r19,r25
9493 4ee6 04F4 brge .L1141
9494 4ee8 3093 0000 sts (mincontrollerDD)+1,r19
9495 4eec 2093 0000 sts mincontrollerDD,r18
9496 .L1141:
9497 4ef0 A501 movw r20,r10
9498 4ef2 460F add r20,r22
9499 4ef4 571F adc r21,r23
9500 4ef6 420F add r20,r18
9501 4ef8 531F adc r21,r19
9502 4efa 4E0F add r20,r30
9503 4efc 5F1F adc r21,r31
9504 4efe C501 movw r24,r10
9505 4f00 861B sub r24,r22
9506 4f02 970B sbc r25,r23
9507 4f04 821B sub r24,r18
9508 4f06 930B sbc r25,r19
9509 4f08 8E1B sub r24,r30
9510 4f0a 9F0B sbc r25,r31
9511 4f0c 8333 cpi r24,51
9512 4f0e 9105 cpc r25,__zero_reg__
9513 4f10 04F0 brlt .L1193
9514 4f12 82E3 ldi r24,lo8(50)
9515 4f14 90E0 ldi r25,hi8(50)
9516 .L1193:
9517 4f16 9093 0000 sts (motorOutFront)+1,r25
9518 4f1a 8093 0000 sts motorOutFront,r24
9519 4f1e 8091 0000 lds r24,motorOutFront
9520 4f22 9091 0000 lds r25,(motorOutFront)+1
9521 4f26 1816 cp __zero_reg__,r24
9522 4f28 1906 cpc __zero_reg__,r25
9523 4f2a 04F0 brlt .+2
9524 4f2c 00C0 rjmp .L1297
9525 .L1143:
9526 4f2e 4333 cpi r20,51
9527 4f30 5105 cpc r21,__zero_reg__
9528 4f32 04F0 brlt .L1194
9529 4f34 82E3 ldi r24,lo8(50)
9530 4f36 90E0 ldi r25,hi8(50)
9531 4f38 9093 0000 sts (motorOutRear)+1,r25
9532 4f3c 8093 0000 sts motorOutRear,r24
9533 4f40 8091 0000 lds r24,motorOutRear
9534 4f44 9091 0000 lds r25,(motorOutRear)+1
9535 4f48 1816 cp __zero_reg__,r24
9536 4f4a 1906 cpc __zero_reg__,r25
9537 4f4c 04F4 brge .+4
9538 4f4e 0C94 0000 jmp .L1145
9539 4f52 00C0 rjmp .L1298
9540 .L1192:
9541 4f54 9093 0000 sts (thrust)+1,r25
9542 4f58 8093 0000 sts thrust,r24
9543 4f5c 00C0 rjmp .L1130
9544 .L1194:
9545 4f5e 5093 0000 sts (motorOutRear)+1,r21
9546 4f62 4093 0000 sts motorOutRear,r20
9547 4f66 8091 0000 lds r24,motorOutRear
9548 4f6a 9091 0000 lds r25,(motorOutRear)+1
9549 4f6e 1816 cp __zero_reg__,r24
9550 4f70 1906 cpc __zero_reg__,r25
9551 4f72 04F4 brge .+4
9552 4f74 0C94 0000 jmp .L1145
9553 .L1298:
9554 4f78 1092 0000 sts (motorOutRear)+1,__zero_reg__
9555 4f7c 1092 0000 sts motorOutRear,__zero_reg__
9556 4f80 0C94 0000 jmp .L1145
9557 .L982:
9558 4f84 8DA1 ldd r24,Y+37
9559 4f86 9EA1 ldd r25,Y+38
9560 4f88 8853 subi r24,lo8(-200)
9561 4f8a 9F4F sbci r25,hi8(-200)
9562 4f8c 04F0 brlt .+2
9563 4f8e 00C0 rjmp .L983
9564 4f90 E8E3 ldi r30,lo8(-200)
9565 4f92 FFEF ldi r31,hi8(-200)
9566 4f94 FEA3 std Y+38,r31
9567 4f96 EDA3 std Y+37,r30
9568 4f98 F093 0000 sts (TrimRoll)+1,r31
9569 4f9c E093 0000 sts TrimRoll,r30
9570 4fa0 00C0 rjmp .L983
9571 .L979:
9572 4fa2 2FEF ldi r18,hi8(-200)
9573 4fa4 0833 cpi r16,lo8(-200)
9574 4fa6 1207 cpc r17,r18
9575 4fa8 04F0 brlt .+2
9576 4faa 00C0 rjmp .L980
9577 4fac 08E3 ldi r16,lo8(-200)
9578 4fae 1FEF ldi r17,hi8(-200)
9579 4fb0 00C0 rjmp .L1202
9580 .L977:
9581 4fb2 2224 clr r2
9582 4fb4 3324 clr r3
9583 4fb6 00C0 rjmp .L978
9584 .L975:
9585 4fb8 4424 clr r4
9586 4fba 5524 clr r5
9587 4fbc 00C0 rjmp .L976
9588 .L1186:
9589 4fbe 9093 0000 sts (MesswertGier)+1,r25
9590 4fc2 8093 0000 sts MesswertGier,r24
9591 4fc6 00C0 rjmp .L993
9592 .L1185:
9593 4fc8 D092 0000 sts (MesswertRoll)+1,r13
9594 4fcc C092 0000 sts MesswertRoll,r12
9595 4fd0 00C0 rjmp .L991
9596 .L1184:
9597 4fd2 7092 0000 sts (MesswertNick)+1,r7
9598 4fd6 6092 0000 sts MesswertNick,r6
9599 4fda 00C0 rjmp .L989
9600 .L1104:
9601 4fdc CB01 movw r24,r22
9602 4fde AA27 clr r26
9603 4fe0 97FD sbrc r25,7
9604 4fe2 A095 com r26
9605 4fe4 BA2F mov r27,r26
9606 4fe6 00C0 rjmp .L1208
9607 .L1113:
9608 4fe8 CB01 movw r24,r22
9609 4fea AA27 clr r26
9610 4fec 97FD sbrc r25,7
9611 4fee A095 com r26
9612 4ff0 BA2F mov r27,r26
9613 4ff2 00C0 rjmp .L1209
9614 .L1183:
9615 4ff4 2093 0000 sts Mess_Integral_Gier,r18
9616 4ff8 3093 0000 sts (Mess_Integral_Gier)+1,r19
9617 4ffc 4093 0000 sts (Mess_Integral_Gier)+2,r20
9618 5000 5093 0000 sts (Mess_Integral_Gier)+3,r21
9619 5004 00C0 rjmp .L950
9620 .L1285:
9621 5006 88E1 ldi r24,lo8(24)
9622 5008 8093 0000 sts TimerWerteausgabe.11,r24
9623 500c 8091 0000 lds r24,EE_Parameter+23
9624 5010 9927 clr r25
9625 5012 880F lsl r24
9626 5014 991F rol r25
9627 5016 880F lsl r24
9628 5018 991F rol r25
9629 501a 9C01 movw r18,r24
9630 501c 4427 clr r20
9631 501e 37FD sbrc r19,7
9632 5020 4095 com r20
9633 5022 542F mov r21,r20
9634 5024 6D8D ldd r22,Y+29
9635 5026 7E8D ldd r23,Y+30
9636 5028 8F8D ldd r24,Y+31
9637 502a 98A1 ldd r25,Y+32
9638 502c 0E94 0000 call __divmodsi4
9639 5030 3093 0000 sts (DebugOut+2)+1,r19
9640 5034 2093 0000 sts DebugOut+2,r18
9641 5038 8091 0000 lds r24,Mittelwert_AccNick
9642 503c 9091 0000 lds r25,(Mittelwert_AccNick)+1
9643 5040 97FD sbrc r25,7
9644 5042 00C0 rjmp .L1299
9645 .L973:
9646 5044 9595 asr r25
9647 5046 8795 ror r24
9648 5048 9595 asr r25
9649 504a 8795 ror r24
9650 504c 9093 0000 sts (DebugOut+4)+1,r25
9651 5050 8093 0000 sts DebugOut+4,r24
9652 5054 8091 0000 lds r24,maxcontrollerDD
9653 5058 9091 0000 lds r25,(maxcontrollerDD)+1
9654 505c 9093 0000 sts (DebugOut+6)+1,r25
9655 5060 8093 0000 sts DebugOut+6,r24
9656 5064 8091 0000 lds r24,mincontrollerDD
9657 5068 9091 0000 lds r25,(mincontrollerDD)+1
9658 506c 9093 0000 sts (DebugOut+8)+1,r25
9659 5070 8093 0000 sts DebugOut+8,r24
9660 5074 A090 0000 lds r10,MesswertNick
9661 5078 B090 0000 lds r11,(MesswertNick)+1
9662 507c B092 0000 sts (DebugOut+10)+1,r11
9663 5080 A092 0000 sts DebugOut+10,r10
9664 5084 8091 0000 lds r24,HiResNick
9665 5088 9091 0000 lds r25,(HiResNick)+1
9666 508c 9093 0000 sts (DebugOut+12)+1,r25
9667 5090 8093 0000 sts DebugOut+12,r24
9668 5094 8091 0000 lds r24,AdWertAccNick
9669 5098 9091 0000 lds r25,(AdWertAccNick)+1
9670 509c 9093 0000 sts (DebugOut+14)+1,r25
9671 50a0 8093 0000 sts DebugOut+14,r24
9672 50a4 1092 0000 sts (DebugOut+18)+1,__zero_reg__
9673 50a8 1092 0000 sts DebugOut+18,__zero_reg__
9674 50ac 8091 0000 lds r24,UBat
9675 50b0 9091 0000 lds r25,(UBat)+1
9676 50b4 9093 0000 sts (DebugOut+20)+1,r25
9677 50b8 8093 0000 sts DebugOut+20,r24
9678 50bc 8091 0000 lds r24,SenderOkay
9679 50c0 9927 clr r25
9680 50c2 9093 0000 sts (DebugOut+22)+1,r25
9681 50c6 8093 0000 sts DebugOut+22,r24
9682 50ca 8091 0000 lds r24,controllerP
9683 50ce 9091 0000 lds r25,(controllerP)+1
9684 50d2 9093 0000 sts (DebugOut+24)+1,r25
9685 50d6 8093 0000 sts DebugOut+24,r24
9686 50da 8091 0000 lds r24,controllerD
9687 50de 9091 0000 lds r25,(controllerD)+1
9688 50e2 9093 0000 sts (DebugOut+30)+1,r25
9689 50e6 8093 0000 sts DebugOut+30,r24
9690 50ea 8091 0000 lds r24,controllerDD
9691 50ee 9091 0000 lds r25,(controllerDD)+1
9692 50f2 9093 0000 sts (DebugOut+32)+1,r25
9693 50f6 8093 0000 sts DebugOut+32,r24
9694 50fa 8091 0000 lds r24,PPM_in+6
9695 50fe 9091 0000 lds r25,(PPM_in+6)+1
9696 5102 9093 0000 sts (DebugOut+34)+1,r25
9697 5106 8093 0000 sts DebugOut+34,r24
9698 510a 8091 0000 lds r24,ipk
9699 510e 9091 0000 lds r25,(ipk)+1
9700 5112 9093 0000 sts (DebugOut+36)+1,r25
9701 5116 8093 0000 sts DebugOut+36,r24
9702 511a 8091 0000 lds r24,ipk+2
9703 511e 9091 0000 lds r25,(ipk+2)+1
9704 5122 9093 0000 sts (DebugOut+38)+1,r25
9705 5126 8093 0000 sts DebugOut+38,r24
9706 512a 8091 0000 lds r24,ipk+4
9707 512e 9091 0000 lds r25,(ipk+4)+1
9708 5132 9093 0000 sts (DebugOut+40)+1,r25
9709 5136 8093 0000 sts DebugOut+40,r24
9710 513a 8091 0000 lds r24,ucflg1
9711 513e 9927 clr r25
9712 5140 9093 0000 sts (DebugOut+42)+1,r25
9713 5144 8093 0000 sts DebugOut+42,r24
9714 5148 8091 0000 lds r24,PPM_in+10
9715 514c 9091 0000 lds r25,(PPM_in+10)+1
9716 5150 9093 0000 sts (DebugOut+44)+1,r25
9717 5154 8093 0000 sts DebugOut+44,r24
9718 5158 B092 0000 sts (DebugOut+46)+1,r11
9719 515c A092 0000 sts DebugOut+46,r10
9720 5160 8091 0000 lds r24,maxcontrollerD
9721 5164 9091 0000 lds r25,(maxcontrollerD)+1
9722 5168 9093 0000 sts (DebugOut+48)+1,r25
9723 516c 8093 0000 sts DebugOut+48,r24
9724 5170 8091 0000 lds r24,mincontrollerD
9725 5174 9091 0000 lds r25,(mincontrollerD)+1
9726 5178 9093 0000 sts (DebugOut+50)+1,r25
9727 517c 8093 0000 sts DebugOut+50,r24
9728 5180 8091 0000 lds r24,AdWertNick
9729 5184 9091 0000 lds r25,(AdWertNick)+1
9730 5188 9093 0000 sts (DebugOut+52)+1,r25
9731 518c 8093 0000 sts DebugOut+52,r24
9732 5190 8091 0000 lds r24,maxcontrollerP
9733 5194 9091 0000 lds r25,(maxcontrollerP)+1
9734 5198 9093 0000 sts (DebugOut+54)+1,r25
9735 519c 8093 0000 sts DebugOut+54,r24
9736 51a0 8091 0000 lds r24,mincontrollerP
9737 51a4 9091 0000 lds r25,(mincontrollerP)+1
9738 51a8 9093 0000 sts (DebugOut+56)+1,r25
9739 51ac 8093 0000 sts DebugOut+56,r24
9740 51b0 8091 0000 lds r24,PPM_in+8
9741 51b4 9091 0000 lds r25,(PPM_in+8)+1
9742 51b8 9093 0000 sts (DebugOut+58)+1,r25
9743 51bc 8093 0000 sts DebugOut+58,r24
9744 51c0 8091 0000 lds r24,PPM_in+6
9745 51c4 9091 0000 lds r25,(PPM_in+6)+1
9746 51c8 9093 0000 sts (DebugOut+60)+1,r25
9747 51cc 8093 0000 sts DebugOut+60,r24
9748 51d0 8091 0000 lds r24,PPM_in+4
9749 51d4 9091 0000 lds r25,(PPM_in+4)+1
9750 51d8 9093 0000 sts (DebugOut+62)+1,r25
9751 51dc 8093 0000 sts DebugOut+62,r24
9752 51e0 8091 0000 lds r24,PPM_in+2
9753 51e4 9091 0000 lds r25,(PPM_in+2)+1
9754 51e8 9093 0000 sts (DebugOut+64)+1,r25
9755 51ec 8093 0000 sts DebugOut+64,r24
9756 51f0 00C0 rjmp .L972
9757 .L1182:
9758 51f2 D092 0000 sts (LageKorrekturRoll)+1,r13
9759 51f6 C092 0000 sts LageKorrekturRoll,r12
9760 51fa 7093 0000 sts (LageKorrekturNick)+1,r23
9761 51fe 6093 0000 sts LageKorrekturNick,r22
9762 5202 00C0 rjmp .L943
9763 .L1296:
9764 5204 CF96 adiw r24,63
9765 5206 00C0 rjmp .L1139
9766 .L1297:
9767 5208 1092 0000 sts (motorOutFront)+1,__zero_reg__
9768 520c 1092 0000 sts motorOutFront,__zero_reg__
9769 5210 00C0 rjmp .L1143
9770 .L1295:
9771 5212 0796 adiw r24,7
9772 5214 00C0 rjmp .L1138
9773 .L1294:
9774 5216 8150 subi r24,lo8(-(511))
9775 5218 9E4F sbci r25,hi8(-(511))
9776 521a 00C0 rjmp .L1135
9777 .L1293:
9778 521c 215F subi r18,lo8(-(15))
9779 521e 3F4F sbci r19,hi8(-(15))
9780 5220 00C0 rjmp .L1132
9781 .L1292:
9782 5222 6D5F subi r22,lo8(-(3))
9783 5224 7F4F sbci r23,hi8(-(3))
9784 5226 00C0 rjmp .L1131
9785 .L1287:
9786 5228 215C subi r18,lo8(-(63))
9787 522a 3F4F sbci r19,hi8(-(63))
9788 522c 4F4F sbci r20,hlo8(-(63))
9789 522e 5F4F sbci r21,hhi8(-(63))
9790 5230 00C0 rjmp .L986
9791 .L1286:
9792 5232 215C subi r18,lo8(-(63))
9793 5234 3F4F sbci r19,hi8(-(63))
9794 5236 4F4F sbci r20,hlo8(-(63))
9795 5238 5F4F sbci r21,hhi8(-(63))
9796 523a 00C0 rjmp .L985
9797 .L1288:
9798 523c 2FE3 ldi r18,lo8(63)
9799 523e 30E0 ldi r19,hi8(63)
9800 5240 40E0 ldi r20,hlo8(63)
9801 5242 50E0 ldi r21,hhi8(63)
9802 5244 E20E add r14,r18
9803 5246 F31E adc r15,r19
9804 5248 041F adc r16,r20
9805 524a 151F adc r17,r21
9806 524c 00C0 rjmp .L987
9807 .L1274:
9808 524e 0396 adiw r24,3
9809 5250 00C0 rjmp .L949
9810 .L1273:
9811 5252 6150 subi r22,lo8(-(511))
9812 5254 7E4F sbci r23,hi8(-(511))
9813 5256 8F4F sbci r24,hlo8(-(511))
9814 5258 9F4F sbci r25,hhi8(-(511))
9815 525a 00C0 rjmp .L948
9816 .L1272:
9817 525c 2227 clr r18
9818 525e 3327 clr r19
9819 5260 201B sub r18,r16
9820 5262 310B sbc r19,r17
9821 5264 00C0 rjmp .L947
9822 .L1290:
9823 5266 1092 0000 sts ucflg2,__zero_reg__
9824 526a 8091 0000 lds r24,ucflg1
9825 526e 8230 cpi r24,lo8(2)
9826 5270 01F4 brne .+2
9827 5272 00C0 rjmp .L1300
9828 5274 8F5F subi r24,lo8(-(1))
9829 5276 8093 0000 sts ucflg1,r24
9830 527a 00C0 rjmp .L1122
9831 .L1291:
9832 527c 1092 0000 sts ucflg3,__zero_reg__
9833 5280 E091 0000 lds r30,ucflg1
9834 5284 E330 cpi r30,lo8(3)
9835 5286 00F0 brlo .+2
9836 5288 00C0 rjmp .L1126
9837 528a FF27 clr r31
9838 528c EE0F add r30,r30
9839 528e FF1F adc r31,r31
9840 5290 E050 subi r30,lo8(-(ipk))
9841 5292 F040 sbci r31,hi8(-(ipk))
9842 5294 8081 ld r24,Z
9843 5296 9181 ldd r25,Z+1
9844 5298 2091 0000 lds r18,PPM_in+6
9845 529c 3091 0000 lds r19,(PPM_in+6)+1
9846 52a0 820F add r24,r18
9847 52a2 931F adc r25,r19
9848 52a4 9183 std Z+1,r25
9849 52a6 8083 st Z,r24
9850 52a8 00C0 rjmp .L1126
9851 .L738:
9852 52aa 8091 0000 lds r24,MikroKopterFlags
9853 52ae 8260 ori r24,lo8(2)
9854 52b0 8093 0000 sts MikroKopterFlags,r24
9855 52b4 0C94 0000 jmp .L740
9856 .L1215:
9857 52b8 1092 0000 sts (StickGas)+1,__zero_reg__
9858 52bc 1092 0000 sts StickGas,__zero_reg__
9859 52c0 0C94 0000 jmp .L817
9860 .L1212:
9861 52c4 2D5F subi r18,lo8(-(3))
9862 52c6 3F4F sbci r19,hi8(-(3))
9863 52c8 0C94 0000 jmp .L809
9864 .L1213:
9865 52cc 2D5F subi r18,lo8(-(3))
9866 52ce 3F4F sbci r19,hi8(-(3))
9867 52d0 0C94 0000 jmp .L810
9868 .L1261:
9869 52d4 0F96 adiw r24,15
9870 52d6 A11D adc r26,__zero_reg__
9871 52d8 B11D adc r27,__zero_reg__
9872 52da 0C94 0000 jmp .L863
9873 .L1262:
9874 52de 0F96 adiw r24,15
9875 52e0 A11D adc r26,__zero_reg__
9876 52e2 B11D adc r27,__zero_reg__
9877 52e4 0C94 0000 jmp .L864
9878 .L1264:
9879 52e8 F095 com r31
9880 52ea E195 neg r30
9881 52ec FF4F sbci r31,lo8(-1)
9882 52ee 0C94 0000 jmp .L868
9883 .L801:
9884 52f2 1092 0000 sts delay_einschalten.9,__zero_reg__
9885 .L803:
9886 52f6 ED2D mov r30,r13
9887 52f8 FF27 clr r31
9888 52fa EE0F add r30,r30
9889 52fc FF1F adc r31,r31
9890 52fe E050 subi r30,lo8(-(PPM_in))
9891 5300 F040 sbci r31,hi8(-(PPM_in))
9892 5302 8081 ld r24,Z
9893 5304 9181 ldd r25,Z+1
9894 5306 8C34 cpi r24,76
9895 5308 9105 cpc r25,__zero_reg__
9896 530a 04F4 brge .+2
9897 530c 00C0 rjmp .L804
9898 530e 8091 0000 lds r24,delay_ausschalten.10
9899 5312 8F5F subi r24,lo8(-(1))
9900 5314 893C cpi r24,lo8(-55)
9901 5316 00F4 brsh .+2
9902 5318 00C0 rjmp .L1172
9903 531a 1092 0000 sts MotorenEin,__zero_reg__
9904 531e 88EC ldi r24,lo8(-56)
9905 5320 8093 0000 sts delay_ausschalten.10,r24
9906 5324 1092 0000 sts (modell_fliegt)+1,__zero_reg__
9907 5328 1092 0000 sts modell_fliegt,__zero_reg__
9908 532c 0C94 0000 jmp .L734
9909 .L996:
9910 5330 8091 0000 lds r24,HoehenWert
9911 5334 9091 0000 lds r25,(HoehenWert)+1
9912 5338 A091 0000 lds r26,(HoehenWert)+2
9913 533c B091 0000 lds r27,(HoehenWert)+3
9914 5340 54E0 ldi r21,4
9915 5342 880F 1: lsl r24
9916 5344 991F rol r25
9917 5346 AA1F rol r26
9918 5348 BB1F rol r27
9919 534a 5A95 dec r21
9920 534c 01F4 brne 1b
9921 534e 8093 0000 sts SummenHoehe,r24
9922 5352 9093 0000 sts (SummenHoehe)+1,r25
9923 5356 A093 0000 sts (SummenHoehe)+2,r26
9924 535a B093 0000 sts (SummenHoehe)+3,r27
9925 535e 1092 0000 sts (VarioMeter)+1,__zero_reg__
9926 5362 1092 0000 sts VarioMeter,__zero_reg__
9927 5366 2150 subi r18,lo8(-(-1))
9928 5368 3040 sbci r19,hi8(-(-1))
9929 536a 3093 0000 sts (BaroExpandActive)+1,r19
9930 536e 2093 0000 sts BaroExpandActive,r18
9931 .L1005:
9932 5372 4889 ldd r20,Y+16
9933 5374 41FF sbrs r20,1
9934 5376 00C0 rjmp .L1006
9935 5378 8091 0000 lds r24,Parameter_MaxHoehe
9936 537c 8233 cpi r24,lo8(50)
9937 537e 00F0 brlo .+2
9938 5380 00C0 rjmp .L1007
9939 5382 8091 0000 lds r24,delay.31
9940 5386 8150 subi r24,1
9941 5388 00F4 brcc .L1187
9942 538a 1092 0000 sts HoehenReglerAktiv,__zero_reg__
9943 538e 8091 0000 lds r24,HoehenWert
9944 5392 9091 0000 lds r25,(HoehenWert)+1
9945 5396 A091 0000 lds r26,(HoehenWert)+2
9946 539a B091 0000 lds r27,(HoehenWert)+3
9947 539e 8093 0000 sts SollHoehe,r24
9948 53a2 9093 0000 sts (SollHoehe)+1,r25
9949 53a6 A093 0000 sts (SollHoehe)+2,r26
9950 53aa B093 0000 sts (SollHoehe)+3,r27
9951 53ae 81E0 ldi r24,lo8(1)
9952 .L1187:
9953 53b0 8093 0000 sts delay.31,r24
9954 53b4 00C0 rjmp .L1010
9955 .L804:
9956 53b6 1092 0000 sts delay_ausschalten.10,__zero_reg__
9957 53ba 0C94 0000 jmp .L734
9958 .L1006:
9959 53be 2091 0000 lds r18,Parameter_MaxHoehe
9960 53c2 8091 0000 lds r24,ExternHoehenValue
9961 53c6 9091 0000 lds r25,(ExternHoehenValue)+1
9962 53ca 820F add r24,r18
9963 53cc 911D adc r25,__zero_reg__
9964 53ce 2091 0000 lds r18,EE_Parameter+13
9965 53d2 3327 clr r19
9966 53d4 829F mul r24,r18
9967 53d6 B001 movw r22,r0
9968 53d8 839F mul r24,r19
9969 53da 700D add r23,r0
9970 53dc 929F mul r25,r18
9971 53de 700D add r23,r0
9972 53e0 1124 clr r1
9973 53e2 CB01 movw r24,r22
9974 53e4 AA27 clr r26
9975 53e6 97FD sbrc r25,7
9976 53e8 A095 com r26
9977 53ea BA2F mov r27,r26
9978 53ec 8093 0000 sts SollHoehe,r24
9979 53f0 9093 0000 sts (SollHoehe)+1,r25
9980 53f4 A093 0000 sts (SollHoehe)+2,r26
9981 53f8 B093 0000 sts (SollHoehe)+3,r27
9982 53fc 81E0 ldi r24,lo8(1)
9983 53fe 8093 0000 sts HoehenReglerAktiv,r24
9984 .L1010:
9985 5402 E090 0000 lds r14,GIER_GRAD_FAKTOR
9986 5406 F090 0000 lds r15,(GIER_GRAD_FAKTOR)+1
9987 540a 0091 0000 lds r16,(GIER_GRAD_FAKTOR)+2
9988 540e 1091 0000 lds r17,(GIER_GRAD_FAKTOR)+3
9989 5412 6D8D ldd r22,Y+29
9990 5414 7E8D ldd r23,Y+30
9991 5416 8F8D ldd r24,Y+31
9992 5418 98A1 ldd r25,Y+32
9993 541a A801 movw r20,r16
9994 541c 9701 movw r18,r14
9995 541e 0E94 0000 call __divmodsi4
9996 5422 5901 movw r10,r18
9997 5424 6A01 movw r12,r20
9998 5426 6C85 ldd r22,Y+12
9999 5428 7D85 ldd r23,Y+13
10000 542a 8E85 ldd r24,Y+14
10001 542c 9F85 ldd r25,Y+15
10002 542e A801 movw r20,r16
10003 5430 9701 movw r18,r14
10004 5432 0E94 0000 call __divmodsi4
10005 5436 B901 movw r22,r18
10006 5438 C501 movw r24,r10
10007 543a 0E94 0000 call ihypot
10008 543e 5C01 movw r10,r24
10009 5440 CD97 sbiw r24,61
10010 5442 04F0 brlt .L1011
10011 5444 4CE3 ldi r20,lo8(60)
10012 5446 A42E mov r10,r20
10013 5448 B12C mov r11,__zero_reg__
10014 .L1011:
10015 544a C501 movw r24,r10
10016 544c 0E94 0000 call c_cos_8192
10017 5450 5C01 movw r10,r24
10018 5452 8091 0000 lds r24,HoehenReglerAktiv
10019 5456 8823 tst r24
10020 5458 01F4 brne .+2
10021 545a 00C0 rjmp .L1012
10022 545c 8091 0000 lds r24,MikroKopterFlags
10023 5460 9927 clr r25
10024 5462 9C01 movw r18,r24
10025 5464 2071 andi r18,lo8(16)
10026 5466 3070 andi r19,hi8(16)
10027 5468 84FD sbrc r24,4
10028 546a 00C0 rjmp .L1012
10029 546c C090 0000 lds r12,EE_Parameter+88
10030 5470 C0FC sbrc r12,0
10031 5472 00C0 rjmp .L1014
10032 5474 8091 0000 lds r24,EE_Parameter+8
10033 5478 81FD sbrc r24,1
10034 547a 00C0 rjmp .L1013
10035 .L1014:
10036 547c 0981 ldd r16,Y+1
10037 547e 1A81 ldd r17,Y+2
10038 5480 3093 0000 sts (HeightTrimming.24)+1,r19
10039 5484 2093 0000 sts HeightTrimming.24,r18
10040 5488 6090 0000 lds r6,HoehenWert
10041 548c 7090 0000 lds r7,(HoehenWert)+1
10042 5490 8090 0000 lds r8,(HoehenWert)+2
10043 5494 9090 0000 lds r9,(HoehenWert)+3
10044 .L1163:
10045 5498 8091 0000 lds r24,SollHoehe
10046 549c 9091 0000 lds r25,(SollHoehe)+1
10047 54a0 A091 0000 lds r26,(SollHoehe)+2
10048 54a4 B091 0000 lds r27,(SollHoehe)+3
10049 .L1015:
10050 54a8 8615 cp r24,r6
10051 54aa 9705 cpc r25,r7
10052 54ac A805 cpc r26,r8
10053 54ae B905 cpc r27,r9
10054 54b0 04F0 brlt .L1040
10055 54b2 C0FC sbrc r12,0
10056 54b4 00C0 rjmp .L1164
10057 .L1040:
10058 54b6 E090 0000 lds r14,HoehenWert
10059 54ba F090 0000 lds r15,(HoehenWert)+1
10060 54be 8091 0000 lds r24,SollHoehe
10061 54c2 9091 0000 lds r25,(SollHoehe)+1
10062 54c6 E81A sub r14,r24
10063 54c8 F90A sbc r15,r25
10064 54ca 8091 0000 lds r24,Parameter_Hoehe_P
10065 54ce 9927 clr r25
10066 54d0 8E9D mul r24,r14
10067 54d2 9001 movw r18,r0
10068 54d4 8F9D mul r24,r15
10069 54d6 300D add r19,r0
10070 54d8 9E9D mul r25,r14
10071 54da 300D add r19,r0
10072 54dc 1124 clr r1
10073 54de C901 movw r24,r18
10074 54e0 37FD sbrc r19,7
10075 54e2 00C0 rjmp .L1301
10076 .L1041:
10077 54e4 9595 asr r25
10078 54e6 8795 ror r24
10079 54e8 9595 asr r25
10080 54ea 8795 ror r24
10081 54ec 9595 asr r25
10082 54ee 8795 ror r24
10083 54f0 9595 asr r25
10084 54f2 8795 ror r24
10085 54f4 081B sub r16,r24
10086 54f6 190B sbc r17,r25
10087 54f8 2091 0000 lds r18,VarioMeter
10088 54fc 3091 0000 lds r19,(VarioMeter)+1
10089 5500 37FD sbrc r19,7
10090 5502 00C0 rjmp .L1302
10091 .L1042:
10092 5504 3595 asr r19
10093 5506 2795 ror r18
10094 5508 3595 asr r19
10095 550a 2795 ror r18
10096 550c 3595 asr r19
10097 550e 2795 ror r18
10098 5510 2930 cpi r18,9
10099 5512 3105 cpc r19,__zero_reg__
10100 5514 04F4 brge .+2
10101 5516 00C0 rjmp .L1043
10102 5518 28E0 ldi r18,lo8(8)
10103 551a 30E0 ldi r19,hi8(8)
10104 .L1197:
10105 551c 229F mul r18,r18
10106 551e A001 movw r20,r0
10107 5520 239F mul r18,r19
10108 5522 500D add r21,r0
10109 5524 329F mul r19,r18
10110 5526 500D add r21,r0
10111 5528 1124 clr r1
10112 552a 9A01 movw r18,r20
10113 552c 57FD sbrc r21,7
10114 552e 00C0 rjmp .L1303
10115 .L1045:
10116 5530 3595 asr r19
10117 5532 2795 ror r18
10118 5534 3595 asr r19
10119 5536 2795 ror r18
10120 5538 8091 0000 lds r24,VarioMeter
10121 553c 9091 0000 lds r25,(VarioMeter)+1
10122 5540 280F add r18,r24
10123 5542 391F adc r19,r25
10124 .L1046:
10125 5544 8091 0000 lds r24,Parameter_Luftdruck_D
10126 5548 9927 clr r25
10127 554a AA27 clr r26
10128 554c BB27 clr r27
10129 554e 4427 clr r20
10130 5550 37FD sbrc r19,7
10131 5552 4095 com r20
10132 5554 542F mov r21,r20
10133 5556 BC01 movw r22,r24
10134 5558 CD01 movw r24,r26
10135 555a 0E94 0000 call __mulsi3
10136 555e 97FD sbrc r25,7
10137 5560 00C0 rjmp .L1304
10138 .L1048:
10139 5562 A7E0 ldi r26,7
10140 5564 9595 1: asr r25
10141 5566 8795 ror r24
10142 5568 7795 ror r23
10143 556a 6795 ror r22
10144 556c AA95 dec r26
10145 556e 01F4 brne 1b
10146 5570 9B01 movw r18,r22
10147 5572 5FEF ldi r21,hi8(-127)
10148 5574 6138 cpi r22,lo8(-127)
10149 5576 7507 cpc r23,r21
10150 5578 04F0 brlt .+2
10151 557a 00C0 rjmp .L1049
10152 557c 21E8 ldi r18,lo8(-127)
10153 557e 3FEF ldi r19,hi8(-127)
10154 .L1050:
10155 5580 021B sub r16,r18
10156 5582 130B sbc r17,r19
10157 5584 6090 0000 lds r6,Mess_Integral_Hoch
10158 5588 7090 0000 lds r7,(Mess_Integral_Hoch)+1
10159 558c 8090 0000 lds r8,(Mess_Integral_Hoch)+2
10160 5590 9090 0000 lds r9,(Mess_Integral_Hoch)+3
10161 5594 97FC sbrc r9,7
10162 5596 00C0 rjmp .L1305
10163 .L1052:
10164 5598 F7E0 ldi r31,7
10165 559a 9594 1: asr r9
10166 559c 8794 ror r8
10167 559e 7794 ror r7
10168 55a0 6794 ror r6
10169 55a2 FA95 dec r31
10170 55a4 01F4 brne 1b
10171 55a6 8091 0000 lds r24,Parameter_Hoehe_ACC_Wirkung
10172 55aa 282F mov r18,r24
10173 55ac 3327 clr r19
10174 55ae 4427 clr r20
10175 55b0 5527 clr r21
10176 55b2 C401 movw r24,r8
10177 55b4 B301 movw r22,r6
10178 55b6 0E94 0000 call __mulsi3
10179 55ba 97FD sbrc r25,7
10180 55bc 00C0 rjmp .L1306
10181 .L1053:
10182 55be E5E0 ldi r30,5
10183 55c0 9595 1: asr r25
10184 55c2 8795 ror r24
10185 55c4 7795 ror r23
10186 55c6 6795 ror r22
10187 55c8 EA95 dec r30
10188 55ca 01F4 brne 1b
10189 55cc 9B01 movw r18,r22
10190 55ce 7FEF ldi r23,hi8(-127)
10191 55d0 2138 cpi r18,lo8(-127)
10192 55d2 3707 cpc r19,r23
10193 55d4 04F0 brlt .+2
10194 55d6 00C0 rjmp .L1054
10195 55d8 21E8 ldi r18,lo8(-127)
10196 55da 3FEF ldi r19,hi8(-127)
10197 .L1055:
10198 55dc 021B sub r16,r18
10199 55de 130B sbc r17,r19
10200 55e0 85E9 ldi r24,lo8(149)
10201 55e2 90E0 ldi r25,hi8(149)
10202 55e4 E80E add r14,r24
10203 55e6 F91E adc r15,r25
10204 55e8 9BE2 ldi r25,lo8(299)
10205 55ea E916 cp r14,r25
10206 55ec 91E0 ldi r25,hi8(299)
10207 55ee F906 cpc r15,r25
10208 55f0 00F4 brsh .L1057
10209 55f2 8091 0000 lds r24,HeightTrimming.24
10210 55f6 9091 0000 lds r25,(HeightTrimming.24)+1
10211 55fa 892B or r24,r25
10212 55fc 01F4 brne .L1057
10213 55fe 8091 0000 lds r24,HooverGas.27
10214 5602 9091 0000 lds r25,(HooverGas.27)+1
10215 5606 1816 cp __zero_reg__,r24
10216 5608 1906 cpc __zero_reg__,r25
10217 560a 04F4 brge .L1057
10218 560c 8091 0000 lds r24,HooverGasMin.28
10219 5610 9091 0000 lds r25,(HooverGasMin.28)+1
10220 5614 0817 cp r16,r24
10221 5616 1907 cpc r17,r25
10222 5618 04F4 brge .+2
10223 561a 00C0 rjmp .L1206
10224 561c 8091 0000 lds r24,HooverGasMax.29
10225 5620 9091 0000 lds r25,(HooverGasMax.29)+1
10226 5624 8017 cp r24,r16
10227 5626 9107 cpc r25,r17
10228 5628 04F4 brge .+2
10229 562a 00C0 rjmp .L1206
10230 .L1057:
10231 562c 8091 0000 lds r24,BaroExpandActive
10232 5630 9091 0000 lds r25,(BaroExpandActive)+1
10233 5634 892B or r24,r25
10234 5636 01F0 breq .L1061
10235 5638 0091 0000 lds r16,HooverGas.27
10236 563c 1091 0000 lds r17,(HooverGas.27)+1
10237 .L1061:
10238 5640 C801 movw r24,r16
10239 5642 AA27 clr r26
10240 5644 97FD sbrc r25,7
10241 5646 A095 com r26
10242 5648 BA2F mov r27,r26
10243 564a 5DE0 ldi r21,13
10244 564c 880F 1: lsl r24
10245 564e 991F rol r25
10246 5650 AA1F rol r26
10247 5652 BB1F rol r27
10248 5654 5A95 dec r21
10249 5656 01F4 brne 1b
10250 5658 9501 movw r18,r10
10251 565a 4427 clr r20
10252 565c 37FD sbrc r19,7
10253 565e 4095 com r20
10254 5660 542F mov r21,r20
10255 5662 BC01 movw r22,r24
10256 5664 CD01 movw r24,r26
10257 5666 0E94 0000 call __divmodsi4
10258 566a 2093 0000 sts tmp_long2.4,r18
10259 566e 3093 0000 sts (tmp_long2.4)+1,r19
10260 5672 4093 0000 sts (tmp_long2.4)+2,r20
10261 5676 5093 0000 sts (tmp_long2.4)+3,r21
10262 567a 0091 0000 lds r16,tmp_long2.4
10263 567e 1091 0000 lds r17,(tmp_long2.4)+1
10264 5682 8091 0000 lds r24,FilterHCGas.25
10265 5686 9091 0000 lds r25,(FilterHCGas.25)+1
10266 568a 9C01 movw r18,r24
10267 568c 220F lsl r18
10268 568e 331F rol r19
10269 5690 280F add r18,r24
10270 5692 391F adc r19,r25
10271 5694 200F add r18,r16
10272 5696 311F adc r19,r17
10273 5698 37FD sbrc r19,7
10274 569a 00C0 rjmp .L1307
10275 .L1062:
10276 569c A901 movw r20,r18
10277 569e 5595 asr r21
10278 56a0 4795 ror r20
10279 56a2 5595 asr r21
10280 56a4 4795 ror r20
10281 56a6 BA01 movw r22,r20
10282 56a8 8091 0000 lds r24,EE_Parameter+9
10283 56ac 282F mov r18,r24
10284 56ae 3327 clr r19
10285 56b0 220F lsl r18
10286 56b2 331F rol r19
10287 56b4 220F lsl r18
10288 56b6 331F rol r19
10289 56b8 4217 cp r20,r18
10290 56ba 5307 cpc r21,r19
10291 56bc 04F0 brlt .+2
10292 56be 00C0 rjmp .L1063
10293 56c0 A901 movw r20,r18
10294 56c2 B901 movw r22,r18
10295 56c4 D090 0000 lds r13,MAX_GAS
10296 .L1064:
10297 56c8 C0FE sbrs r12,0
10298 56ca 00C0 rjmp .L1190
10299 56cc A981 ldd r26,Y+1
10300 56ce BA81 ldd r27,Y+2
10301 56d0 A417 cp r26,r20
10302 56d2 B507 cpc r27,r21
10303 56d4 04F0 brlt .+2
10304 56d6 00C0 rjmp .L1190
10305 56d8 AD01 movw r20,r26
10306 56da B093 0000 sts (FilterHCGas.25)+1,r27
10307 56de A093 0000 sts FilterHCGas.25,r26
10308 56e2 5A83 std Y+2,r21
10309 56e4 4983 std Y+1,r20
10310 56e6 00C0 rjmp .L1068
10311 .L1012:
10312 56e8 6091 0000 lds r22,EE_Parameter+17
10313 56ec 6623 tst r22
10314 56ee 01F4 brne .+2
10315 56f0 00C0 rjmp .L1308
10316 56f2 7727 clr r23
10317 .L1071:
10318 56f4 6634 cpi r22,70
10319 56f6 7105 cpc r23,__zero_reg__
10320 56f8 04F0 brlt .+2
10321 56fa 00C0 rjmp .L1072
10322 56fc 26E4 ldi r18,lo8(70)
10323 56fe 30E0 ldi r19,hi8(70)
10324 5700 3093 0000 sts (StickGasHoover.26)+1,r19
10325 5704 2093 0000 sts StickGasHoover.26,r18
10326 .L1073:
10327 5708 E980 ldd r14,Y+1
10328 570a FA80 ldd r15,Y+2
10329 570c F092 0000 sts (FilterHCGas.25)+1,r15
10330 5710 E092 0000 sts FilterHCGas.25,r14
10331 .L1164:
10332 5714 D090 0000 lds r13,MAX_GAS
10333 .L1068:
10334 5718 8091 0000 lds r24,MikroKopterFlags
10335 571c 81FF sbrs r24,1
10336 571e 00C0 rjmp .L1165
10337 5720 8091 0000 lds r24,MikroKopterFlags
10338 5724 84FD sbrc r24,4
10339 5726 00C0 rjmp .L1166
10340 5728 E090 0000 lds r14,HooverGasFilter.30
10341 572c F090 0000 lds r15,(HooverGasFilter.30)+1
10342 5730 0091 0000 lds r16,(HooverGasFilter.30)+2
10343 5734 1091 0000 lds r17,(HooverGasFilter.30)+3
10344 5738 E114 cp r14,__zero_reg__
10345 573a F104 cpc r15,__zero_reg__
10346 573c 0105 cpc r16,__zero_reg__
10347 573e 1105 cpc r17,__zero_reg__
10348 5740 01F4 brne .L1076
10349 5742 2981 ldd r18,Y+1
10350 5744 3A81 ldd r19,Y+2
10351 5746 7901 movw r14,r18
10352 5748 0027 clr r16
10353 574a F7FC sbrc r15,7
10354 574c 0095 com r16
10355 574e 102F mov r17,r16
10356 5750 ECE0 ldi r30,12
10357 5752 EE0C 1: lsl r14
10358 5754 FF1C rol r15
10359 5756 001F rol r16
10360 5758 111F rol r17
10361 575a EA95 dec r30
10362 575c 01F4 brne 1b
10363 575e E092 0000 sts HooverGasFilter.30,r14
10364 5762 F092 0000 sts (HooverGasFilter.30)+1,r15
10365 5766 0093 0000 sts (HooverGasFilter.30)+2,r16
10366 576a 1093 0000 sts (HooverGasFilter.30)+3,r17
10367 .L1076:
10368 576e 8091 0000 lds r24,VarioMeter
10369 5772 9091 0000 lds r25,(VarioMeter)+1
10370 5776 8091 0000 lds r24,VarioMeter
10371 577a 9091 0000 lds r25,(VarioMeter)+1
10372 577e 97FD sbrc r25,7
10373 5780 00C0 rjmp .L1309
10374 .L1078:
10375 5782 8436 cpi r24,100
10376 5784 9105 cpc r25,__zero_reg__
10377 5786 04F0 brlt .+2
10378 5788 00C0 rjmp .L1167
10379 578a 6981 ldd r22,Y+1
10380 578c 7A81 ldd r23,Y+2
10381 578e 9B01 movw r18,r22
10382 5790 4427 clr r20
10383 5792 37FD sbrc r19,7
10384 5794 4095 com r20
10385 5796 542F mov r21,r20
10386 5798 C501 movw r24,r10
10387 579a AA27 clr r26
10388 579c 97FD sbrc r25,7
10389 579e A095 com r26
10390 57a0 BA2F mov r27,r26
10391 57a2 BC01 movw r22,r24
10392 57a4 CD01 movw r24,r26
10393 57a6 0E94 0000 call __mulsi3
10394 57aa 97FD sbrc r25,7
10395 57ac 00C0 rjmp .L1310
10396 .L1079:
10397 57ae 9B01 movw r18,r22
10398 57b0 AC01 movw r20,r24
10399 57b2 7DE0 ldi r23,13
10400 57b4 5595 1: asr r21
10401 57b6 4795 ror r20
10402 57b8 3795 ror r19
10403 57ba 2795 ror r18
10404 57bc 7A95 dec r23
10405 57be 01F4 brne 1b
10406 57c0 2093 0000 sts tmp_long2.4,r18
10407 57c4 3093 0000 sts (tmp_long2.4)+1,r19
10408 57c8 4093 0000 sts (tmp_long2.4)+2,r20
10409 57cc 5093 0000 sts (tmp_long2.4)+3,r21
10410 57d0 8091 0000 lds r24,modell_fliegt
10411 57d4 9091 0000 lds r25,(modell_fliegt)+1
10412 57d8 77E0 ldi r23,hi8(2000)
10413 57da 803D cpi r24,lo8(2000)
10414 57dc 9707 cpc r25,r23
10415 57de 00F0 brlo .+2
10416 57e0 00C0 rjmp .L1080
10417 57e2 D801 movw r26,r16
10418 57e4 C701 movw r24,r14
10419 57e6 69E0 ldi r22,9
10420 57e8 B695 1: lsr r27
10421 57ea A795 ror r26
10422 57ec 9795 ror r25
10423 57ee 8795 ror r24
10424 57f0 6A95 dec r22
10425 57f2 01F4 brne 1b
10426 57f4 E81A sub r14,r24
10427 57f6 F90A sbc r15,r25
10428 57f8 0A0B sbc r16,r26
10429 57fa 1B0B sbc r17,r27
10430 57fc DA01 movw r26,r20
10431 57fe C901 movw r24,r18
10432 5800 23E0 ldi r18,3
10433 5802 880F 1: lsl r24
10434 5804 991F rol r25
10435 5806 AA1F rol r26
10436 5808 BB1F rol r27
10437 580a 2A95 dec r18
10438 580c 01F4 brne 1b
10439 .L1210:
10440 580e E80E add r14,r24
10441 5810 F91E adc r15,r25
10442 5812 0A1F adc r16,r26
10443 5814 1B1F adc r17,r27
10444 .L1207:
10445 5816 E092 0000 sts HooverGasFilter.30,r14
10446 581a F092 0000 sts (HooverGasFilter.30)+1,r15
10447 581e 0093 0000 sts (HooverGasFilter.30)+2,r16
10448 5822 1093 0000 sts (HooverGasFilter.30)+3,r17
10449 5826 D801 movw r26,r16
10450 5828 C701 movw r24,r14
10451 582a 1CE0 ldi r17,12
10452 582c B695 1: lsr r27
10453 582e A795 ror r26
10454 5830 9795 ror r25
10455 5832 8795 ror r24
10456 5834 1A95 dec r17
10457 5836 01F4 brne 1b
10458 5838 9093 0000 sts (HooverGas.27)+1,r25
10459 583c 8093 0000 sts HooverGas.27,r24
10460 5840 4091 0000 lds r20,EE_Parameter+15
10461 5844 4423 tst r20
10462 5846 01F4 brne .+2
10463 5848 00C0 rjmp .L1086
10464 584a 5527 clr r21
10465 584c 9C01 movw r18,r24
10466 584e BA01 movw r22,r20
10467 5850 0E94 0000 call __divmodhi4
10468 5854 C901 movw r24,r18
10469 5856 861B sub r24,r22
10470 5858 970B sbc r25,r23
10471 585a 9093 0000 sts (HooverGasMin.28)+1,r25
10472 585e 8093 0000 sts HooverGasMin.28,r24
10473 5862 260F add r18,r22
10474 5864 371F adc r19,r23
10475 5866 3093 0000 sts (HooverGasMax.29)+1,r19
10476 586a 2093 0000 sts HooverGasMax.29,r18
10477 .L1166:
10478 586e E090 0000 lds r14,IntegralNick
10479 5872 F090 0000 lds r15,(IntegralNick)+1
10480 5876 0091 0000 lds r16,(IntegralNick)+2
10481 587a 1091 0000 lds r17,(IntegralNick)+3
10482 587e ED8E std Y+29,r14
10483 5880 FE8E std Y+30,r15
10484 5882 0F8F std Y+31,r16
10485 5884 18A3 std Y+32,r17
10486 5886 A090 0000 lds r10,MesswertNick
10487 588a B090 0000 lds r11,(MesswertNick)+1
10488 588e 0091 0000 lds r16,MesswertRoll
10489 5892 1091 0000 lds r17,(MesswertRoll)+1
10490 5896 1EA3 std Y+38,r17
10491 5898 0DA3 std Y+37,r16
10492 589a 00C0 rjmp .L995
10493 .L1299:
10494 589c 0396 adiw r24,3
10495 589e 00C0 rjmp .L973
10496 .L1268:
10497 58a0 9095 com r25
10498 58a2 8195 neg r24
10499 58a4 9F4F sbci r25,lo8(-1)
10500 58a6 0C94 0000 jmp .L829
10501 .L1219:
10502 58aa 0396 adiw r24,3
10503 58ac 0C94 0000 jmp .L823
10504 .L1218:
10505 58b0 9095 com r25
10506 58b2 8195 neg r24
10507 58b4 9F4F sbci r25,lo8(-1)
10508 58b6 0C94 0000 jmp .L822
10509 .L1269:
10510 58ba 0396 adiw r24,3
10511 58bc 0C94 0000 jmp .L830
10512 .L1280:
10513 58c0 8827 clr r24
10514 58c2 9927 clr r25
10515 58c4 8819 sub r24,r8
10516 58c6 9909 sbc r25,r9
10517 58c8 0C94 0000 jmp .L960
10518 .L1279:
10519 58cc 695F subi r22,lo8(-(7))
10520 58ce 7F4F sbci r23,hi8(-(7))
10521 58d0 0C94 0000 jmp .L958
10522 .L1278:
10523 58d4 7095 com r23
10524 58d6 6195 neg r22
10525 58d8 7F4F sbci r23,lo8(-1)
10526 58da 0C94 0000 jmp .L956
10527 .L1277:
10528 58de 8150 subi r24,lo8(-(511))
10529 58e0 9E4F sbci r25,hi8(-(511))
10530 58e2 AF4F sbci r26,hlo8(-(511))
10531 58e4 BF4F sbci r27,hhi8(-(511))
10532 58e6 0C94 0000 jmp .L955
10533 .L1276:
10534 58ea D094 com r13
10535 58ec C194 neg r12
10536 58ee D108 sbc r13,__zero_reg__
10537 58f0 D394 inc r13
10538 58f2 0C94 0000 jmp .L954
10539 .L1275:
10540 58f6 8150 subi r24,lo8(-(511))
10541 58f8 9E4F sbci r25,hi8(-(511))
10542 58fa AF4F sbci r26,hlo8(-(511))
10543 58fc BF4F sbci r27,hhi8(-(511))
10544 58fe 0C94 0000 jmp .L953
10545 .L964:
10546 5902 84EF ldi r24,lo8(500)
10547 5904 91E0 ldi r25,hi8(500)
10548 5906 9093 0000 sts (KompassSignalSchlecht)+1,r25
10549 590a 8093 0000 sts KompassSignalSchlecht,r24
10550 590e 0C94 0000 jmp .L952
10551 .L1282:
10552 5912 4F96 adiw r24,31
10553 5914 0C94 0000 jmp .L963
10554 .L1284:
10555 5918 B601 movw r22,r12
10556 591a 0C94 0000 jmp .L968
10557 .L1308:
10558 591e 4091 0000 lds r20,HooverGas.27
10559 5922 5091 0000 lds r21,(HooverGas.27)+1
10560 5926 57FD sbrc r21,7
10561 5928 00C0 rjmp .L1311
10562 .L1070:
10563 592a 5595 asr r21
10564 592c 4795 ror r20
10565 592e 5595 asr r21
10566 5930 4795 ror r20
10567 5932 8091 0000 lds r24,UBat
10568 5936 9091 0000 lds r25,(UBat)+1
10569 593a 2091 0000 lds r18,BattLowVoltageWarning
10570 593e 3327 clr r19
10571 5940 489F mul r20,r24
10572 5942 F001 movw r30,r0
10573 5944 499F mul r20,r25
10574 5946 F00D add r31,r0
10575 5948 589F mul r21,r24
10576 594a F00D add r31,r0
10577 594c 1124 clr r1
10578 594e CF01 movw r24,r30
10579 5950 B901 movw r22,r18
10580 5952 0E94 0000 call __divmodhi4
10581 5956 00C0 rjmp .L1071
10582 .L1007:
10583 5958 81E0 ldi r24,lo8(1)
10584 595a 8093 0000 sts HoehenReglerAktiv,r24
10585 595e 88EC ldi r24,lo8(-56)
10586 5960 8093 0000 sts delay.31,r24
10587 5964 00C0 rjmp .L1010
10588 .L1172:
10589 5966 8093 0000 sts delay_ausschalten.10,r24
10590 596a 0C94 0000 jmp .L734
10591 .L1171:
10592 596e 8093 0000 sts delay_einschalten.9,r24
10593 5972 00C0 rjmp .L803
10594 .L1289:
10595 5974 87B5 in r24,71-0x20
10596 5976 853F cpi r24,lo8(-11)
10597 5978 00F0 brlo .+2
10598 597a 00C0 rjmp .L998
10599 597c 8091 0000 lds r24,ExpandBaro
10600 5980 8150 subi r24,lo8(-(-1))
10601 5982 00C0 rjmp .L1203
10602 .L1281:
10603 5984 4DA1 ldd r20,Y+37
10604 5986 5EA1 ldd r21,Y+38
10605 5988 CA01 movw r24,r20
10606 598a AA27 clr r26
10607 598c 97FD sbrc r25,7
10608 598e A095 com r26
10609 5990 BA2F mov r27,r26
10610 5992 BC01 movw r22,r24
10611 5994 CD01 movw r24,r26
10612 5996 2A89 ldd r18,Y+18
10613 5998 3B89 ldd r19,Y+19
10614 599a 4C89 ldd r20,Y+20
10615 599c 5D89 ldd r21,Y+21
10616 599e 0E94 0000 call __mulsi3
10617 59a2 2B01 movw r4,r22
10618 59a4 3C01 movw r6,r24
10619 59a6 0E94 0000 call __divmodsi4
10620 59aa 3093 0000 sts (KompassStartwert)+1,r19
10621 59ae 2093 0000 sts KompassStartwert,r18
10622 59b2 1092 0000 sts NeueKompassRichtungMerken.12,__zero_reg__
10623 59b6 0C94 0000 jmp .L961
10624 .L742:
10625 59ba 8081 ld r24,Z
10626 59bc 9181 ldd r25,Z+1
10627 59be 855B subi r24,lo8(-75)
10628 59c0 9F4F sbci r25,hi8(-75)
10629 59c2 04F0 brlt .+2
10630 59c4 00C0 rjmp .L761
10631 59c6 8091 0000 lds r24,delay_neutral.8
10632 59ca 8F5F subi r24,lo8(-(1))
10633 59cc 893C cpi r24,lo8(-55)
10634 59ce 00F4 brsh .+2
10635 59d0 00C0 rjmp .L1170
10636 59d2 2C30 cpi r18,lo8(12)
10637 59d4 00F0 brlo .+2
10638 59d6 00C0 rjmp .L763
10639 59d8 2998 cbi 37-0x20,1
10640 .L765:
10641 59da 8FB3 in r24,63-0x20
10642 59dc 9927 clr r25
10643 59de 9C01 movw r18,r24
10644 59e0 2270 andi r18,lo8(2)
10645 59e2 3070 andi r19,hi8(2)
10646 59e4 81FD sbrc r24,1
10647 59e6 00C0 rjmp .L765
10648 59e8 1FBA out 63-0x20,__zero_reg__
10649 59ea 80E0 ldi r24,lo8(EEPromArray+4)
10650 59ec 90E0 ldi r25,hi8(EEPromArray+4)
10651 59ee 92BD out (65)+1-0x20,r25
10652 59f0 81BD out 65-0x20,r24
10653 59f2 8FEF ldi r24,lo8(-1)
10654 59f4 80BD out 64-0x20,r24
10655 /* #APP */
10656 /* START EEPROM WRITE CRITICAL SECTION */
10657 59f6 0FB6 in r0, 63
10658 59f8 F894 cli
10659 59fa FA9A sbi 31, 2
10660 59fc F99A sbi 31, 1
10661 59fe 0FBE out 63, r0
10662 /* END EEPROM WRITE CRITICAL SECTION */
10663 /* #NOAPP */
10664 5a00 1092 0000 sts MotorenEin,__zero_reg__
10665 5a04 1092 0000 sts delay_neutral.8,__zero_reg__
10666 5a08 3093 0000 sts (modell_fliegt)+1,r19
10667 5a0c 2093 0000 sts modell_fliegt,r18
10668 5a10 0E94 0000 call SetNeutral
10669 5a14 2091 0000 lds r18,NeutralAccX
10670 5a18 3091 0000 lds r19,(NeutralAccX)+1
10671 5a1c C901 movw r24,r18
10672 5a1e 37FD sbrc r19,7
10673 5a20 00C0 rjmp .L1312
10674 .L769:
10675 5a22 892F mov r24,r25
10676 5a24 990F lsl r25
10677 5a26 990B sbc r25,r25
10678 5a28 482F mov r20,r24
10679 .L770:
10680 5a2a F999 sbic 63-0x20,1
10681 5a2c 00C0 rjmp .L770
10682 5a2e 1FBA out 63-0x20,__zero_reg__
10683 5a30 80E0 ldi r24,lo8(EEPromArray+4)
10684 5a32 90E0 ldi r25,hi8(EEPromArray+4)
10685 5a34 92BD out (65)+1-0x20,r25
10686 5a36 81BD out 65-0x20,r24
10687 5a38 40BD out 64-0x20,r20
10688 /* #APP */
10689 /* START EEPROM WRITE CRITICAL SECTION */
10690 5a3a 0FB6 in r0, 63
10691 5a3c F894 cli
10692 5a3e FA9A sbi 31, 2
10693 5a40 F99A sbi 31, 1
10694 5a42 0FBE out 63, r0
10695 /* END EEPROM WRITE CRITICAL SECTION */
10696 /* #NOAPP */
10697 .L775:
10698 5a44 F999 sbic 63-0x20,1
10699 5a46 00C0 rjmp .L775
10700 5a48 1FBA out 63-0x20,__zero_reg__
10701 5a4a 80E0 ldi r24,lo8(EEPromArray+5)
10702 5a4c 90E0 ldi r25,hi8(EEPromArray+5)
10703 5a4e 92BD out (65)+1-0x20,r25
10704 5a50 81BD out 65-0x20,r24
10705 5a52 20BD out 64-0x20,r18
10706 /* #APP */
10707 /* START EEPROM WRITE CRITICAL SECTION */
10708 5a54 0FB6 in r0, 63
10709 5a56 F894 cli
10710 5a58 FA9A sbi 31, 2
10711 5a5a F99A sbi 31, 1
10712 5a5c 0FBE out 63, r0
10713 /* END EEPROM WRITE CRITICAL SECTION */
10714 /* #NOAPP */
10715 5a5e 2091 0000 lds r18,NeutralAccY
10716 5a62 3091 0000 lds r19,(NeutralAccY)+1
10717 5a66 C901 movw r24,r18
10718 5a68 37FD sbrc r19,7
10719 5a6a 00C0 rjmp .L1313
10720 .L779:
10721 5a6c 892F mov r24,r25
10722 5a6e 990F lsl r25
10723 5a70 990B sbc r25,r25
10724 5a72 482F mov r20,r24
10725 .L780:
10726 5a74 F999 sbic 63-0x20,1
10727 5a76 00C0 rjmp .L780
10728 5a78 1FBA out 63-0x20,__zero_reg__
10729 5a7a 80E0 ldi r24,lo8(EEPromArray+6)
10730 5a7c 90E0 ldi r25,hi8(EEPromArray+6)
10731 5a7e 92BD out (65)+1-0x20,r25
10732 5a80 81BD out 65-0x20,r24
10733 5a82 40BD out 64-0x20,r20
10734 /* #APP */
10735 /* START EEPROM WRITE CRITICAL SECTION */
10736 5a84 0FB6 in r0, 63
10737 5a86 F894 cli
10738 5a88 FA9A sbi 31, 2
10739 5a8a F99A sbi 31, 1
10740 5a8c 0FBE out 63, r0
10741 /* END EEPROM WRITE CRITICAL SECTION */
10742 /* #NOAPP */
10743 .L785:
10744 5a8e F999 sbic 63-0x20,1
10745 5a90 00C0 rjmp .L785
10746 5a92 1FBA out 63-0x20,__zero_reg__
10747 5a94 80E0 ldi r24,lo8(EEPromArray+7)
10748 5a96 90E0 ldi r25,hi8(EEPromArray+7)
10749 5a98 92BD out (65)+1-0x20,r25
10750 5a9a 81BD out 65-0x20,r24
10751 5a9c 20BD out 64-0x20,r18
10752 /* #APP */
10753 /* START EEPROM WRITE CRITICAL SECTION */
10754 5a9e 0FB6 in r0, 63
10755 5aa0 F894 cli
10756 5aa2 FA9A sbi 31, 2
10757 5aa4 F99A sbi 31, 1
10758 5aa6 0FBE out 63, r0
10759 /* END EEPROM WRITE CRITICAL SECTION */
10760 /* #NOAPP */
10761 5aa8 8091 0000 lds r24,NeutralAccZ
10762 5aac 9091 0000 lds r25,(NeutralAccZ)+1
10763 5ab0 A091 0000 lds r26,(NeutralAccZ)+2
10764 5ab4 B091 0000 lds r27,(NeutralAccZ)+3
10765 5ab8 BC01 movw r22,r24
10766 5aba CD01 movw r24,r26
10767 5abc 0E94 0000 call __fixsfsi
10768 5ac0 DC01 movw r26,r24
10769 5ac2 CB01 movw r24,r22
10770 5ac4 9C01 movw r18,r24
10771 5ac6 97FD sbrc r25,7
10772 5ac8 00C0 rjmp .L1314
10773 .L789:
10774 5aca 832F mov r24,r19
10775 5acc 9927 clr r25
10776 5ace 87FD sbrc r24,7
10777 5ad0 9A95 dec r25
10778 5ad2 282F mov r18,r24
10779 .L790:
10780 5ad4 F999 sbic 63-0x20,1
10781 5ad6 00C0 rjmp .L790
10782 5ad8 1FBA out 63-0x20,__zero_reg__
10783 5ada 80E0 ldi r24,lo8(EEPromArray+8)
10784 5adc 90E0 ldi r25,hi8(EEPromArray+8)
10785 5ade 92BD out (65)+1-0x20,r25
10786 5ae0 81BD out 65-0x20,r24
10787 5ae2 20BD out 64-0x20,r18
10788 /* #APP */
10789 /* START EEPROM WRITE CRITICAL SECTION */
10790 5ae4 0FB6 in r0, 63
10791 5ae6 F894 cli
10792 5ae8 FA9A sbi 31, 2
10793 5aea F99A sbi 31, 1
10794 5aec 0FBE out 63, r0
10795 /* END EEPROM WRITE CRITICAL SECTION */
10796 /* #NOAPP */
10797 5aee 8091 0000 lds r24,NeutralAccZ
10798 5af2 9091 0000 lds r25,(NeutralAccZ)+1
10799 5af6 A091 0000 lds r26,(NeutralAccZ)+2
10800 5afa B091 0000 lds r27,(NeutralAccZ)+3
10801 5afe BC01 movw r22,r24
10802 5b00 CD01 movw r24,r26
10803 5b02 0E94 0000 call __fixsfsi
10804 5b06 DC01 movw r26,r24
10805 5b08 CB01 movw r24,r22
10806 5b0a 282F mov r18,r24
10807 .L795:
10808 5b0c F999 sbic 63-0x20,1
10809 5b0e 00C0 rjmp .L795
10810 5b10 1FBA out 63-0x20,__zero_reg__
10811 5b12 80E0 ldi r24,lo8(EEPromArray+9)
10812 5b14 90E0 ldi r25,hi8(EEPromArray+9)
10813 5b16 92BD out (65)+1-0x20,r25
10814 5b18 81BD out 65-0x20,r24
10815 5b1a 20BD out 64-0x20,r18
10816 /* #APP */
10817 /* START EEPROM WRITE CRITICAL SECTION */
10818 5b1c 0FB6 in r0, 63
10819 5b1e F894 cli
10820 5b20 FA9A sbi 31, 2
10821 5b22 F99A sbi 31, 1
10822 5b24 0FBE out 63, r0
10823 /* END EEPROM WRITE CRITICAL SECTION */
10824 /* #NOAPP */
10825 .L1199:
10826 5b26 0E94 0000 call GetActiveParamSetNumber
10827 5b2a 68E7 ldi r22,lo8(120)
10828 5b2c 70E0 ldi r23,hi8(120)
10829 5b2e 0E94 0000 call Piep
10830 5b32 3091 0000 lds r19,EE_Parameter+2
10831 5b36 0C94 0000 jmp .L741
10832 .L1206:
10833 5b3a 8C01 movw r16,r24
10834 5b3c 00C0 rjmp .L1057
10835 .L1165:
10836 5b3e 6091 0000 lds r22,IntegralNick
10837 5b42 7091 0000 lds r23,(IntegralNick)+1
10838 5b46 8091 0000 lds r24,(IntegralNick)+2
10839 5b4a 9091 0000 lds r25,(IntegralNick)+3
10840 5b4e 6D8F std Y+29,r22
10841 5b50 7E8F std Y+30,r23
10842 5b52 8F8F std Y+31,r24
10843 5b54 98A3 std Y+32,r25
10844 5b56 A090 0000 lds r10,MesswertNick
10845 5b5a B090 0000 lds r11,(MesswertNick)+1
10846 5b5e 8091 0000 lds r24,MesswertRoll
10847 5b62 9091 0000 lds r25,(MesswertRoll)+1
10848 5b66 9EA3 std Y+38,r25
10849 5b68 8DA3 std Y+37,r24
10850 5b6a 0C94 0000 jmp .L995
10851 .L1198:
10852 5b6e 0894 sec
10853 5b70 2108 sbc r2,__zero_reg__
10854 5b72 3108 sbc r3,__zero_reg__
10855 5b74 3092 0000 sts (KompassSignalSchlecht)+1,r3
10856 5b78 2092 0000 sts KompassSignalSchlecht,r2
10857 5b7c 0C94 0000 jmp .L952
10858 .L1072:
10859 5b80 6739 cpi r22,151
10860 5b82 7105 cpc r23,__zero_reg__
10861 5b84 04F4 brge .+2
10862 5b86 00C0 rjmp .L1191
10863 5b88 86E9 ldi r24,lo8(150)
10864 5b8a 90E0 ldi r25,hi8(150)
10865 5b8c 9093 0000 sts (StickGasHoover.26)+1,r25
10866 5b90 8093 0000 sts StickGasHoover.26,r24
10867 5b94 00C0 rjmp .L1073
10868 .L1300:
10869 5b96 1092 0000 sts ucflg1,__zero_reg__
10870 5b9a 00C0 rjmp .L1122
10871 .L1229:
10872 5b9c 81E0 ldi r24,lo8(1)
10873 5b9e 8093 0000 sts NeueKompassRichtungMerken.12,r24
10874 5ba2 1092 0000 sts sollGier.2,__zero_reg__
10875 5ba6 1092 0000 sts (sollGier.2)+1,__zero_reg__
10876 5baa 1092 0000 sts (sollGier.2)+2,__zero_reg__
10877 5bae 1092 0000 sts (sollGier.2)+3,__zero_reg__
10878 5bb2 1092 0000 sts Mess_Integral_Gier,__zero_reg__
10879 5bb6 1092 0000 sts (Mess_Integral_Gier)+1,__zero_reg__
10880 5bba 1092 0000 sts (Mess_Integral_Gier)+2,__zero_reg__
10881 5bbe 1092 0000 sts (Mess_Integral_Gier)+3,__zero_reg__
10882 5bc2 0C94 0000 jmp .L740
10883 .L1086:
10884 5bc6 1092 0000 sts (HooverGasMin.28)+1,__zero_reg__
10885 5bca 1092 0000 sts HooverGasMin.28,__zero_reg__
10886 5bce 8FEF ldi r24,lo8(1023)
10887 5bd0 93E0 ldi r25,hi8(1023)
10888 5bd2 9093 0000 sts (HooverGasMax.29)+1,r25
10889 5bd6 8093 0000 sts HooverGasMax.29,r24
10890 .L1167:
10891 5bda 2091 0000 lds r18,IntegralNick
10892 5bde 3091 0000 lds r19,(IntegralNick)+1
10893 5be2 4091 0000 lds r20,(IntegralNick)+2
10894 5be6 5091 0000 lds r21,(IntegralNick)+3
10895 5bea 2D8F std Y+29,r18
10896 5bec 3E8F std Y+30,r19
10897 5bee 4F8F std Y+31,r20
10898 5bf0 58A3 std Y+32,r21
10899 5bf2 A090 0000 lds r10,MesswertNick
10900 5bf6 B090 0000 lds r11,(MesswertNick)+1
10901 5bfa 4091 0000 lds r20,MesswertRoll
10902 5bfe 5091 0000 lds r21,(MesswertRoll)+1
10903 5c02 5EA3 std Y+38,r21
10904 5c04 4DA3 std Y+37,r20
10905 5c06 0C94 0000 jmp .L995
10906 .L1170:
10907 5c0a 8093 0000 sts delay_neutral.8,r24
10908 5c0e 0C94 0000 jmp .L741
10909 .L1191:
10910 5c12 7093 0000 sts (StickGasHoover.26)+1,r23
10911 5c16 6093 0000 sts StickGasHoover.26,r22
10912 5c1a 00C0 rjmp .L1073
10913 .L1283:
10914 5c1c 67E0 ldi r22,lo8(7)
10915 5c1e 70E0 ldi r23,hi8(7)
10916 5c20 E60E add r14,r22
10917 5c22 F71E adc r15,r23
10918 5c24 0C94 0000 jmp .L966
10919 .L1190:
10920 5c28 7093 0000 sts (FilterHCGas.25)+1,r23
10921 5c2c 6093 0000 sts FilterHCGas.25,r22
10922 5c30 5A83 std Y+2,r21
10923 5c32 4983 std Y+1,r20
10924 5c34 00C0 rjmp .L1068
10925 .L998:
10926 5c36 81E0 ldi r24,lo8(1)
10927 5c38 8093 0000 sts BaroAtLowerLimit.33,r24
10928 5c3c 00C0 rjmp .L1005
10929 .L1001:
10930 5c3e 3B85 ldd r19,Y+11
10931 5c40 3093 0000 sts BaroAtUpperLimit.32,r19
10932 5c44 3093 0000 sts BaroAtLowerLimit.33,r19
10933 5c48 00C0 rjmp .L1005
10934 .L894:
10935 5c4a 6092 0000 sts ausgleichNick.13,r6
10936 5c4e 7092 0000 sts (ausgleichNick.13)+1,r7
10937 5c52 8092 0000 sts (ausgleichNick.13)+2,r8
10938 5c56 9092 0000 sts (ausgleichNick.13)+3,r9
10939 5c5a 1092 0000 sts (cnt.17)+1,__zero_reg__
10940 5c5e 1092 0000 sts cnt.17,__zero_reg__
10941 5c62 88EE ldi r24,lo8(1000)
10942 5c64 282E mov r2,r24
10943 5c66 83E0 ldi r24,hi8(1000)
10944 5c68 382E mov r3,r24
10945 5c6a 3092 0000 sts (KompassSignalSchlecht)+1,r3
10946 5c6e 2092 0000 sts KompassSignalSchlecht,r2
10947 5c72 0C94 0000 jmp .L913
10948 .L919:
10949 5c76 2093 0000 sts ausgleichRoll.14,r18
10950 5c7a 3093 0000 sts (ausgleichRoll.14)+1,r19
10951 5c7e 4093 0000 sts (ausgleichRoll.14)+2,r20
10952 5c82 5093 0000 sts (ausgleichRoll.14)+3,r21
10953 5c86 1092 0000 sts (cnt.17)+1,__zero_reg__
10954 5c8a 1092 0000 sts cnt.17,__zero_reg__
10955 5c8e E8EE ldi r30,lo8(1000)
10956 5c90 2E2E mov r2,r30
10957 5c92 E3E0 ldi r30,hi8(1000)
10958 5c94 3E2E mov r3,r30
10959 5c96 3092 0000 sts (KompassSignalSchlecht)+1,r3
10960 5c9a 2092 0000 sts KompassSignalSchlecht,r2
10961 5c9e 0C94 0000 jmp .L938
10962 .L761:
10963 5ca2 4093 0000 sts delay_neutral.8,r20
10964 5ca6 0C94 0000 jmp .L741
10965 .L1054:
10966 5caa 2F3F cpi r18,255
10967 5cac 3105 cpc r19,__zero_reg__
10968 5cae 01F0 breq .+2
10969 5cb0 04F4 brge .+2
10970 5cb2 00C0 rjmp .L1055
10971 5cb4 2FEF ldi r18,lo8(255)
10972 5cb6 30E0 ldi r19,hi8(255)
10973 5cb8 00C0 rjmp .L1055
10974 .L1063:
10975 5cba D090 0000 lds r13,MAX_GAS
10976 5cbe 2D2D mov r18,r13
10977 5cc0 3327 clr r19
10978 5cc2 220F lsl r18
10979 5cc4 331F rol r19
10980 5cc6 220F lsl r18
10981 5cc8 331F rol r19
10982 5cca 2055 subi r18,lo8(-(-80))
10983 5ccc 3040 sbci r19,hi8(-(-80))
10984 5cce 2417 cp r18,r20
10985 5cd0 3507 cpc r19,r21
10986 5cd2 04F0 brlt .+2
10987 5cd4 00C0 rjmp .L1064
10988 5cd6 A901 movw r20,r18
10989 5cd8 B901 movw r22,r18
10990 5cda 00C0 rjmp .L1064
10991 .L1049:
10992 5cdc 6F3F cpi r22,255
10993 5cde 7105 cpc r23,__zero_reg__
10994 5ce0 01F0 breq .+2
10995 5ce2 04F4 brge .+2
10996 5ce4 00C0 rjmp .L1050
10997 5ce6 2FEF ldi r18,lo8(255)
10998 5ce8 30E0 ldi r19,hi8(255)
10999 5cea 00C0 rjmp .L1050
11000 .L1043:
11001 5cec 1216 cp __zero_reg__,r18
11002 5cee 1306 cpc __zero_reg__,r19
11003 5cf0 04F4 brge .+2
11004 5cf2 00C0 rjmp .L1197
11005 5cf4 229F mul r18,r18
11006 5cf6 C001 movw r24,r0
11007 5cf8 239F mul r18,r19
11008 5cfa 900D add r25,r0
11009 5cfc 329F mul r19,r18
11010 5cfe 900D add r25,r0
11011 5d00 1124 clr r1
11012 5d02 97FD sbrc r25,7
11013 5d04 00C0 rjmp .L1315
11014 .L1047:
11015 5d06 9595 asr r25
11016 5d08 8795 ror r24
11017 5d0a 9595 asr r25
11018 5d0c 8795 ror r24
11019 5d0e 2091 0000 lds r18,VarioMeter
11020 5d12 3091 0000 lds r19,(VarioMeter)+1
11021 5d16 281B sub r18,r24
11022 5d18 390B sbc r19,r25
11023 5d1a 00C0 rjmp .L1046
11024 .L754:
11025 5d1c 0E94 0000 call GetActiveParamSetNumber
11026 5d20 45E6 ldi r20,lo8(101)
11027 5d22 60E0 ldi r22,lo8(EE_Parameter)
11028 5d24 70E0 ldi r23,hi8(EE_Parameter)
11029 5d26 0E94 0000 call ReadParameterSet
11030 5d2a 8091 0000 lds r24,EE_Parameter+8
11031 5d2e 80FF sbrs r24,0
11032 5d30 00C0 rjmp .L757
11033 5d32 8091 0000 lds r24,MessLuftdruck
11034 5d36 9091 0000 lds r25,(MessLuftdruck)+1
11035 5d3a 875B subi r24,lo8(951)
11036 5d3c 9340 sbci r25,hi8(951)
11037 5d3e 00F4 brsh .L759
11038 5d40 8091 0000 lds r24,MessLuftdruck
11039 5d44 9091 0000 lds r25,(MessLuftdruck)+1
11040 5d48 8E5E subi r24,lo8(750)
11041 5d4a 9240 sbci r25,hi8(750)
11042 5d4c 00F4 brsh .L757
11043 .L759:
11044 5d4e 0E94 0000 call SucheLuftruckOffset
11045 .L757:
11046 5d52 1092 0000 sts ServoActive,__zero_reg__
11047 5d56 0E94 0000 call SetNeutral
11048 5d5a 81E0 ldi r24,lo8(1)
11049 5d5c 8093 0000 sts ServoActive,r24
11050 5d60 579A sbi 42-0x20,7
11051 5d62 00C0 rjmp .L1199
11052 .L1311:
11053 5d64 4D5F subi r20,lo8(-(3))
11054 5d66 5F4F sbci r21,hi8(-(3))
11055 5d68 00C0 rjmp .L1070
11056 .L1013:
11057 5d6a 8091 0000 lds r24,MikroKopterFlags
11058 5d6e 81FF sbrs r24,1
11059 5d70 00C0 rjmp .L1016
11060 5d72 2091 0000 lds r18,StickGasHoover.26
11061 5d76 3091 0000 lds r19,(StickGasHoover.26)+1
11062 5d7a C901 movw r24,r18
11063 5d7c 0F96 adiw r24,15
11064 5d7e 4091 0000 lds r20,StickGas
11065 5d82 5091 0000 lds r21,(StickGas)+1
11066 5d86 8417 cp r24,r20
11067 5d88 9507 cpc r25,r21
11068 5d8a 04F0 brlt .+2
11069 5d8c 00C0 rjmp .L1017
11070 5d8e 8091 0000 lds r24,BaroAtUpperLimit.32
11071 5d92 8823 tst r24
11072 5d94 01F0 breq .+2
11073 5d96 00C0 rjmp .L1017
11074 5d98 8091 0000 lds r24,HeightTrimmingFlag.34
11075 5d9c 81FF sbrs r24,1
11076 5d9e 00C0 rjmp .L1158
11077 5da0 8D7F andi r24,lo8(-3)
11078 5da2 6090 0000 lds r6,HoehenWert
11079 5da6 7090 0000 lds r7,(HoehenWert)+1
11080 5daa 8090 0000 lds r8,(HoehenWert)+2
11081 5dae 9090 0000 lds r9,(HoehenWert)+3
11082 5db2 6092 0000 sts SollHoehe,r6
11083 5db6 7092 0000 sts (SollHoehe)+1,r7
11084 5dba 8092 0000 sts (SollHoehe)+2,r8
11085 5dbe 9092 0000 sts (SollHoehe)+3,r9
11086 .L1018:
11087 5dc2 8160 ori r24,lo8(1)
11088 5dc4 8093 0000 sts HeightTrimmingFlag.34,r24
11089 5dc8 421B sub r20,r18
11090 5dca 530B sbc r21,r19
11091 5dcc 9A01 movw r18,r20
11092 5dce 2F50 subi r18,lo8(-(-15))
11093 5dd0 3040 sbci r19,hi8(-(-15))
11094 5dd2 37FD sbrc r19,7
11095 5dd4 00C0 rjmp .L1316
11096 .L1019:
11097 5dd6 8091 0000 lds r24,HeightTrimming.24
11098 5dda 9091 0000 lds r25,(HeightTrimming.24)+1
11099 5dde 280F add r18,r24
11100 5de0 391F adc r19,r25
11101 5de2 3093 0000 sts (HeightTrimming.24)+1,r19
11102 5de6 2093 0000 sts HeightTrimming.24,r18
11103 .L1020:
11104 5dea 2091 0000 lds r18,HeightTrimming.24
11105 5dee 3091 0000 lds r19,(HeightTrimming.24)+1
11106 5df2 C901 movw r24,r18
11107 5df4 37FD sbrc r19,7
11108 5df6 00C0 rjmp .L1317
11109 .L1028:
11110 5df8 8150 subi r24,lo8(513)
11111 5dfa 9240 sbci r25,hi8(513)
11112 5dfc 04F4 brge .+2
11113 5dfe 00C0 rjmp .L1162
11114 5e00 8091 0000 lds r24,EE_Parameter+13
11115 5e04 9927 clr r25
11116 5e06 829F mul r24,r18
11117 5e08 F001 movw r30,r0
11118 5e0a 839F mul r24,r19
11119 5e0c F00D add r31,r0
11120 5e0e 929F mul r25,r18
11121 5e10 F00D add r31,r0
11122 5e12 1124 clr r1
11123 5e14 CF01 movw r24,r30
11124 5e16 60E0 ldi r22,lo8(1280)
11125 5e18 75E0 ldi r23,hi8(1280)
11126 5e1a 0E94 0000 call __divmodhi4
11127 5e1e CB01 movw r24,r22
11128 5e20 AA27 clr r26
11129 5e22 97FD sbrc r25,7
11130 5e24 A095 com r26
11131 5e26 BA2F mov r27,r26
11132 5e28 2091 0000 lds r18,SollHoehe
11133 5e2c 3091 0000 lds r19,(SollHoehe)+1
11134 5e30 4091 0000 lds r20,(SollHoehe)+2
11135 5e34 5091 0000 lds r21,(SollHoehe)+3
11136 5e38 820F add r24,r18
11137 5e3a 931F adc r25,r19
11138 5e3c A41F adc r26,r20
11139 5e3e B51F adc r27,r21
11140 5e40 8093 0000 sts SollHoehe,r24
11141 5e44 9093 0000 sts (SollHoehe)+1,r25
11142 5e48 A093 0000 sts (SollHoehe)+2,r26
11143 5e4c B093 0000 sts (SollHoehe)+3,r27
11144 5e50 1092 0000 sts (HeightTrimming.24)+1,__zero_reg__
11145 5e54 1092 0000 sts HeightTrimming.24,__zero_reg__
11146 5e58 C1FE sbrs r12,1
11147 5e5a 00C0 rjmp .L1029
11148 5e5c 8BE4 ldi r24,lo8(75)
11149 5e5e 90E0 ldi r25,hi8(75)
11150 5e60 9093 0000 sts (beeptime)+1,r25
11151 5e64 8093 0000 sts beeptime,r24
11152 .L1029:
11153 5e68 8091 0000 lds r24,EE_Parameter+17
11154 5e6c 8823 tst r24
11155 5e6e 01F0 breq .+2
11156 5e70 00C0 rjmp .L1162
11157 5e72 0091 0000 lds r16,HooverGas.27
11158 5e76 1091 0000 lds r17,(HooverGas.27)+1
11159 5e7a A801 movw r20,r16
11160 5e7c 17FD sbrc r17,7
11161 5e7e 00C0 rjmp .L1318
11162 .L1031:
11163 5e80 5595 asr r21
11164 5e82 4795 ror r20
11165 5e84 5595 asr r21
11166 5e86 4795 ror r20
11167 5e88 8091 0000 lds r24,UBat
11168 5e8c 9091 0000 lds r25,(UBat)+1
11169 5e90 2091 0000 lds r18,BattLowVoltageWarning
11170 5e94 3327 clr r19
11171 5e96 489F mul r20,r24
11172 5e98 7001 movw r14,r0
11173 5e9a 499F mul r20,r25
11174 5e9c F00C add r15,r0
11175 5e9e 589F mul r21,r24
11176 5ea0 F00C add r15,r0
11177 5ea2 1124 clr r1
11178 5ea4 C701 movw r24,r14
11179 5ea6 B901 movw r22,r18
11180 5ea8 0E94 0000 call __divmodhi4
11181 5eac 6634 cpi r22,70
11182 5eae 7105 cpc r23,__zero_reg__
11183 5eb0 04F0 brlt .+2
11184 5eb2 00C0 rjmp .L1032
11185 5eb4 26E4 ldi r18,lo8(70)
11186 5eb6 30E0 ldi r19,hi8(70)
11187 .L1204:
11188 5eb8 3093 0000 sts (StickGasHoover.26)+1,r19
11189 5ebc 2093 0000 sts StickGasHoover.26,r18
11190 .L1027:
11191 5ec0 8091 0000 lds r24,BaroExpandActive
11192 5ec4 9091 0000 lds r25,(BaroExpandActive)+1
11193 5ec8 892B or r24,r25
11194 5eca 01F4 brne .+2
11195 5ecc 00C0 rjmp .L1163
11196 5ece D401 movw r26,r8
11197 5ed0 C301 movw r24,r6
11198 5ed2 6092 0000 sts SollHoehe,r6
11199 5ed6 7092 0000 sts (SollHoehe)+1,r7
11200 5eda 8092 0000 sts (SollHoehe)+2,r8
11201 5ede 9092 0000 sts (SollHoehe)+3,r9
11202 5ee2 00C0 rjmp .L1015
11203 .L929:
11204 5ee4 1092 0000 sts last_r_n.21,__zero_reg__
11205 5ee8 0C94 0000 jmp .L938
11206 .L1002:
11207 5eec 81E0 ldi r24,lo8(1)
11208 5eee 8093 0000 sts BaroAtUpperLimit.32,r24
11209 5ef2 00C0 rjmp .L1005
11210 .L1080:
11211 5ef4 AFE0 ldi r26,hi8(4000)
11212 5ef6 803A cpi r24,lo8(4000)
11213 5ef8 9A07 cpc r25,r26
11214 5efa 00F0 brlo .+2
11215 5efc 00C0 rjmp .L1082
11216 5efe D801 movw r26,r16
11217 5f00 C701 movw r24,r14
11218 5f02 FAE0 ldi r31,10
11219 5f04 B695 1: lsr r27
11220 5f06 A795 ror r26
11221 5f08 9795 ror r25
11222 5f0a 8795 ror r24
11223 5f0c FA95 dec r31
11224 5f0e 01F4 brne 1b
11225 5f10 E81A sub r14,r24
11226 5f12 F90A sbc r15,r25
11227 5f14 0A0B sbc r16,r26
11228 5f16 1B0B sbc r17,r27
11229 5f18 DA01 movw r26,r20
11230 5f1a C901 movw r24,r18
11231 5f1c 880F lsl r24
11232 5f1e 991F rol r25
11233 5f20 AA1F rol r26
11234 5f22 BB1F rol r27
11235 5f24 880F lsl r24
11236 5f26 991F rol r25
11237 5f28 AA1F rol r26
11238 5f2a BB1F rol r27
11239 5f2c 00C0 rjmp .L1210
11240 .L1148:
11241 5f2e 1091 0000 lds r17,EE_Parameter+1
11242 5f32 0C94 0000 jmp .L747
11243 .L744:
11244 5f36 299A sbi 37-0x20,1
11245 5f38 0C94 0000 jmp .L745
11246 .L920:
11247 5f3c 2093 0000 sts ausgleichRoll.14,r18
11248 5f40 3093 0000 sts (ausgleichRoll.14)+1,r19
11249 5f44 4093 0000 sts (ausgleichRoll.14)+2,r20
11250 5f48 5093 0000 sts (ausgleichRoll.14)+3,r21
11251 5f4c 1092 0000 sts last_r_p.20,__zero_reg__
11252 5f50 0C94 0000 jmp .L928
11253 .L904:
11254 5f54 2092 0000 sts ausgleichNick.13,r2
11255 5f58 3092 0000 sts (ausgleichNick.13)+1,r3
11256 5f5c 4092 0000 sts (ausgleichNick.13)+2,r4
11257 5f60 5092 0000 sts (ausgleichNick.13)+3,r5
11258 5f64 1092 0000 sts last_n_n.19,__zero_reg__
11259 5f68 0C94 0000 jmp .L913
11260 .L895:
11261 5f6c 1092 0000 sts last_n_p.18,__zero_reg__
11262 5f70 0C94 0000 jmp .L903
11263 .L1252:
11264 5f74 B095 com r27
11265 5f76 A095 com r26
11266 5f78 9095 com r25
11267 5f7a 8195 neg r24
11268 5f7c 9F4F sbci r25,lo8(-1)
11269 5f7e AF4F sbci r26,lo8(-1)
11270 5f80 BF4F sbci r27,lo8(-1)
11271 5f82 0C94 0000 jmp .L918
11272 .L1309:
11273 5f86 9095 com r25
11274 5f88 8195 neg r24
11275 5f8a 9F4F sbci r25,lo8(-1)
11276 5f8c 00C0 rjmp .L1078
11277 .L1238:
11278 5f8e 8150 subi r24,lo8(-(255))
11279 5f90 9F4F sbci r25,hi8(-(255))
11280 5f92 AF4F sbci r26,hlo8(-(255))
11281 5f94 BF4F sbci r27,hhi8(-(255))
11282 5f96 0C94 0000 jmp .L880
11283 .L1237:
11284 5f9a 6150 subi r22,lo8(-(255))
11285 5f9c 7F4F sbci r23,hi8(-(255))
11286 5f9e 8F4F sbci r24,hlo8(-(255))
11287 5fa0 9F4F sbci r25,hhi8(-(255))
11288 5fa2 0C94 0000 jmp .L878
11289 .L1236:
11290 5fa6 6150 subi r22,lo8(-(255))
11291 5fa8 7F4F sbci r23,hi8(-(255))
11292 5faa 8F4F sbci r24,hlo8(-(255))
11293 5fac 9F4F sbci r25,hhi8(-(255))
11294 5fae 0C94 0000 jmp .L877
11295 .L1235:
11296 5fb2 8150 subi r24,lo8(-(255))
11297 5fb4 9F4F sbci r25,hi8(-(255))
11298 5fb6 AF4F sbci r26,hlo8(-(255))
11299 5fb8 BF4F sbci r27,hhi8(-(255))
11300 5fba 0C94 0000 jmp .L876
11301 .L1243:
11302 5fbe B095 com r27
11303 5fc0 A095 com r26
11304 5fc2 9095 com r25
11305 5fc4 8195 neg r24
11306 5fc6 9F4F sbci r25,lo8(-1)
11307 5fc8 AF4F sbci r26,lo8(-1)
11308 5fca BF4F sbci r27,lo8(-1)
11309 5fcc 0C94 0000 jmp .L893
11310 .L1239:
11311 5fd0 8150 subi r24,lo8(-(255))
11312 5fd2 9F4F sbci r25,hi8(-(255))
11313 5fd4 AF4F sbci r26,hlo8(-(255))
11314 5fd6 BF4F sbci r27,hhi8(-(255))
11315 5fd8 0C94 0000 jmp .L881
11316 .L1234:
11317 5fdc 8150 subi r24,lo8(-(255))
11318 5fde 9F4F sbci r25,hi8(-(255))
11319 5fe0 AF4F sbci r26,hlo8(-(255))
11320 5fe2 BF4F sbci r27,hhi8(-(255))
11321 5fe4 0C94 0000 jmp .L875
11322 .L1242:
11323 5fe8 0196 adiw r24,1
11324 5fea 0C94 0000 jmp .L886
11325 .L1241:
11326 5fee 0196 adiw r24,1
11327 5ff0 0C94 0000 jmp .L885
11328 .L1307:
11329 5ff4 2D5F subi r18,lo8(-(3))
11330 5ff6 3F4F sbci r19,hi8(-(3))
11331 5ff8 00C0 rjmp .L1062
11332 .L1306:
11333 5ffa 615E subi r22,lo8(-(31))
11334 5ffc 7F4F sbci r23,hi8(-(31))
11335 5ffe 8F4F sbci r24,hlo8(-(31))
11336 6000 9F4F sbci r25,hhi8(-(31))
11337 6002 00C0 rjmp .L1053
11338 .L1305:
11339 6004 6FE7 ldi r22,lo8(127)
11340 6006 70E0 ldi r23,hi8(127)
11341 6008 80E0 ldi r24,hlo8(127)
11342 600a 90E0 ldi r25,hhi8(127)
11343 600c 660E add r6,r22
11344 600e 771E adc r7,r23
11345 6010 881E adc r8,r24
11346 6012 991E adc r9,r25
11347 6014 00C0 rjmp .L1052
11348 .L1304:
11349 6016 6158 subi r22,lo8(-(127))
11350 6018 7F4F sbci r23,hi8(-(127))
11351 601a 8F4F sbci r24,hlo8(-(127))
11352 601c 9F4F sbci r25,hhi8(-(127))
11353 601e 00C0 rjmp .L1048
11354 .L1302:
11355 6020 295F subi r18,lo8(-(7))
11356 6022 3F4F sbci r19,hi8(-(7))
11357 6024 00C0 rjmp .L1042
11358 .L1301:
11359 6026 0F96 adiw r24,15
11360 6028 00C0 rjmp .L1041
11361 .L1303:
11362 602a 2D5F subi r18,lo8(-(3))
11363 602c 3F4F sbci r19,hi8(-(3))
11364 602e 00C0 rjmp .L1045
11365 .L1016:
11366 6030 6090 0000 lds r6,HoehenWert
11367 6034 7090 0000 lds r7,(HoehenWert)+1
11368 6038 8090 0000 lds r8,(HoehenWert)+2
11369 603c 9090 0000 lds r9,(HoehenWert)+3
11370 6040 D401 movw r26,r8
11371 6042 C301 movw r24,r6
11372 6044 8059 subi r24,lo8(-(-400))
11373 6046 9140 sbci r25,hi8(-(-400))
11374 6048 A040 sbci r26,hlo8(-(-400))
11375 604a B040 sbci r27,hhi8(-(-400))
11376 604c 8093 0000 sts SollHoehe,r24
11377 6050 9093 0000 sts (SollHoehe)+1,r25
11378 6054 A093 0000 sts (SollHoehe)+2,r26
11379 6058 B093 0000 sts (SollHoehe)+3,r27
11380 605c 2091 0000 lds r18,EE_Parameter+17
11381 6060 2223 tst r18
11382 6062 01F4 brne .+2
11383 6064 00C0 rjmp .L1037
11384 6066 3327 clr r19
11385 .L1205:
11386 6068 3093 0000 sts (StickGasHoover.26)+1,r19
11387 606c 2093 0000 sts StickGasHoover.26,r18
11388 6070 0091 0000 lds r16,HooverGas.27
11389 6074 1091 0000 lds r17,(HooverGas.27)+1
11390 6078 00C0 rjmp .L1015
11391 .L763:
11392 607a 299A sbi 37-0x20,1
11393 607c 00C0 rjmp .L765
11394 .L930:
11395 607e 81E0 ldi r24,lo8(1)
11396 6080 8093 0000 sts last_r_n.21,r24
11397 6084 0C94 0000 jmp .L938
11398 .L921:
11399 6088 2093 0000 sts ausgleichRoll.14,r18
11400 608c 3093 0000 sts (ausgleichRoll.14)+1,r19
11401 6090 4093 0000 sts (ausgleichRoll.14)+2,r20
11402 6094 5093 0000 sts (ausgleichRoll.14)+3,r21
11403 6098 81E0 ldi r24,lo8(1)
11404 609a 8093 0000 sts last_r_p.20,r24
11405 609e 0C94 0000 jmp .L928
11406 .L1082:
11407 60a2 8054 subi r24,lo8(8000)
11408 60a4 9F41 sbci r25,hi8(8000)
11409 60a6 00F0 brlo .+2
11410 60a8 00C0 rjmp .L1084
11411 60aa D801 movw r26,r16
11412 60ac C701 movw r24,r14
11413 60ae 7BE0 ldi r23,11
11414 60b0 B695 1: lsr r27
11415 60b2 A795 ror r26
11416 60b4 9795 ror r25
11417 60b6 8795 ror r24
11418 60b8 7A95 dec r23
11419 60ba 01F4 brne 1b
11420 60bc E81A sub r14,r24
11421 60be F90A sbc r15,r25
11422 60c0 0A0B sbc r16,r26
11423 60c2 1B0B sbc r17,r27
11424 60c4 DA01 movw r26,r20
11425 60c6 C901 movw r24,r18
11426 60c8 820F add r24,r18
11427 60ca 931F adc r25,r19
11428 60cc A41F adc r26,r20
11429 60ce B51F adc r27,r21
11430 60d0 00C0 rjmp .L1210
11431 .L905:
11432 60d2 2092 0000 sts ausgleichNick.13,r2
11433 60d6 3092 0000 sts (ausgleichNick.13)+1,r3
11434 60da 4092 0000 sts (ausgleichNick.13)+2,r4
11435 60de 5092 0000 sts (ausgleichNick.13)+3,r5
11436 60e2 81E0 ldi r24,lo8(1)
11437 60e4 8093 0000 sts last_n_n.19,r24
11438 60e8 0C94 0000 jmp .L913
11439 .L896:
11440 60ec 81E0 ldi r24,lo8(1)
11441 60ee 8093 0000 sts last_n_p.18,r24
11442 60f2 0C94 0000 jmp .L903
11443 .L1310:
11444 60f6 6150 subi r22,lo8(-(8191))
11445 60f8 704E sbci r23,hi8(-(8191))
11446 60fa 8F4F sbci r24,hlo8(-(8191))
11447 60fc 9F4F sbci r25,hhi8(-(8191))
11448 60fe 00C0 rjmp .L1079
11449 .L1231:
11450 6100 F095 com r31
11451 6102 E195 neg r30
11452 6104 FF4F sbci r31,lo8(-1)
11453 6106 0C94 0000 jmp .L755
11454 .L1162:
11455 610a 0091 0000 lds r16,HooverGas.27
11456 610e 1091 0000 lds r17,(HooverGas.27)+1
11457 6112 00C0 rjmp .L1027
11458 .L1017:
11459 6114 C901 movw r24,r18
11460 6116 0F97 sbiw r24,15
11461 6118 4817 cp r20,r24
11462 611a 5907 cpc r21,r25
11463 611c 04F4 brge .L1021
11464 611e 8091 0000 lds r24,BaroAtLowerLimit.33
11465 6122 8823 tst r24
11466 6124 01F4 brne .L1021
11467 6126 8091 0000 lds r24,HeightTrimmingFlag.34
11468 612a 80FF sbrs r24,0
11469 612c 00C0 rjmp .L1159
11470 612e 8E7F andi r24,lo8(-2)
11471 6130 6090 0000 lds r6,HoehenWert
11472 6134 7090 0000 lds r7,(HoehenWert)+1
11473 6138 8090 0000 lds r8,(HoehenWert)+2
11474 613c 9090 0000 lds r9,(HoehenWert)+3
11475 6140 6092 0000 sts SollHoehe,r6
11476 6144 7092 0000 sts (SollHoehe)+1,r7
11477 6148 8092 0000 sts (SollHoehe)+2,r8
11478 614c 9092 0000 sts (SollHoehe)+3,r9
11479 .L1022:
11480 6150 8260 ori r24,lo8(2)
11481 6152 8093 0000 sts HeightTrimmingFlag.34,r24
11482 6156 421B sub r20,r18
11483 6158 530B sbc r21,r19
11484 615a 9A01 movw r18,r20
11485 615c 215F subi r18,lo8(-(15))
11486 615e 3F4F sbci r19,hi8(-(15))
11487 6160 37FD sbrc r19,7
11488 6162 00C0 rjmp .L1319
11489 .L1023:
11490 6164 8091 0000 lds r24,HeightTrimming.24
11491 6168 9091 0000 lds r25,(HeightTrimming.24)+1
11492 616c 821B sub r24,r18
11493 616e 930B sbc r25,r19
11494 6170 9093 0000 sts (HeightTrimming.24)+1,r25
11495 6174 8093 0000 sts HeightTrimming.24,r24
11496 6178 00C0 rjmp .L1020
11497 .L1021:
11498 617a 2091 0000 lds r18,HeightTrimmingFlag.34
11499 617e 822F mov r24,r18
11500 6180 9927 clr r25
11501 6182 8370 andi r24,lo8(3)
11502 6184 9070 andi r25,hi8(3)
11503 6186 892B or r24,r25
11504 6188 01F4 brne .+2
11505 618a 00C0 rjmp .L1160
11506 618c 2C7F andi r18,lo8(-4)
11507 618e 2093 0000 sts HeightTrimmingFlag.34,r18
11508 6192 1092 0000 sts (HeightTrimming.24)+1,__zero_reg__
11509 6196 1092 0000 sts HeightTrimming.24,__zero_reg__
11510 619a 6090 0000 lds r6,HoehenWert
11511 619e 7090 0000 lds r7,(HoehenWert)+1
11512 61a2 8090 0000 lds r8,(HoehenWert)+2
11513 61a6 9090 0000 lds r9,(HoehenWert)+3
11514 61aa 6092 0000 sts SollHoehe,r6
11515 61ae 7092 0000 sts (SollHoehe)+1,r7
11516 61b2 8092 0000 sts (SollHoehe)+2,r8
11517 61b6 9092 0000 sts (SollHoehe)+3,r9
11518 61ba C1FE sbrs r12,1
11519 61bc 00C0 rjmp .L1020
11520 61be 84EF ldi r24,lo8(500)
11521 61c0 91E0 ldi r25,hi8(500)
11522 61c2 9093 0000 sts (beeptime)+1,r25
11523 61c6 8093 0000 sts beeptime,r24
11524 61ca 00C0 rjmp .L1020
11525 .L1037:
11526 61cc 28E7 ldi r18,lo8(120)
11527 61ce 30E0 ldi r19,hi8(120)
11528 61d0 00C0 rjmp .L1205
11529 .L1181:
11530 61d2 2093 0000 sts ausgleichRoll.14,r18
11531 61d6 3093 0000 sts (ausgleichRoll.14)+1,r19
11532 61da 4093 0000 sts (ausgleichRoll.14)+2,r20
11533 61de 5093 0000 sts (ausgleichRoll.14)+3,r21
11534 61e2 0C94 0000 jmp .L934
11535 .L1180:
11536 61e6 2093 0000 sts ausgleichRoll.14,r18
11537 61ea 3093 0000 sts (ausgleichRoll.14)+1,r19
11538 61ee 4093 0000 sts (ausgleichRoll.14)+2,r20
11539 61f2 5093 0000 sts (ausgleichRoll.14)+3,r21
11540 61f6 0C94 0000 jmp .L925
11541 .L1084:
11542 61fa D801 movw r26,r16
11543 61fc C701 movw r24,r14
11544 61fe 6CE0 ldi r22,12
11545 6200 B695 1: lsr r27
11546 6202 A795 ror r26
11547 6204 9795 ror r25
11548 6206 8795 ror r24
11549 6208 6A95 dec r22
11550 620a 01F4 brne 1b
11551 620c E81A sub r14,r24
11552 620e F90A sbc r15,r25
11553 6210 0A0B sbc r16,r26
11554 6212 1B0B sbc r17,r27
11555 6214 E20E add r14,r18
11556 6216 F31E adc r15,r19
11557 6218 041F adc r16,r20
11558 621a 151F adc r17,r21
11559 621c 00C0 rjmp .L1207
11560 .L1314:
11561 621e 2150 subi r18,lo8(-(255))
11562 6220 3F4F sbci r19,hi8(-(255))
11563 6222 00C0 rjmp .L789
11564 .L1313:
11565 6224 8150 subi r24,lo8(-(255))
11566 6226 9F4F sbci r25,hi8(-(255))
11567 6228 00C0 rjmp .L779
11568 .L1230:
11569 622a F095 com r31
11570 622c E195 neg r30
11571 622e FF4F sbci r31,lo8(-1)
11572 6230 0C94 0000 jmp .L748
11573 .L1240:
11574 6234 F095 com r31
11575 6236 E195 neg r30
11576 6238 FF4F sbci r31,lo8(-1)
11577 623a 0C94 0000 jmp .L884
11578 .L1312:
11579 623e 8150 subi r24,lo8(-(255))
11580 6240 9F4F sbci r25,hi8(-(255))
11581 6242 00C0 rjmp .L769
11582 .L1160:
11583 6244 6090 0000 lds r6,HoehenWert
11584 6248 7090 0000 lds r7,(HoehenWert)+1
11585 624c 8090 0000 lds r8,(HoehenWert)+2
11586 6250 9090 0000 lds r9,(HoehenWert)+3
11587 6254 00C0 rjmp .L1020
11588 .L1254:
11589 6256 8150 subi r24,lo8(-(511))
11590 6258 9E4F sbci r25,hi8(-(511))
11591 625a AF4F sbci r26,hlo8(-(511))
11592 625c BF4F sbci r27,hhi8(-(511))
11593 625e 0C94 0000 jmp .L923
11594 .L1253:
11595 6262 B095 com r27
11596 6264 A095 com r26
11597 6266 9095 com r25
11598 6268 8195 neg r24
11599 626a 9F4F sbci r25,lo8(-1)
11600 626c AF4F sbci r26,lo8(-1)
11601 626e BF4F sbci r27,lo8(-1)
11602 6270 0C94 0000 jmp .L922
11603 .L1245:
11604 6274 8150 subi r24,lo8(-(511))
11605 6276 9E4F sbci r25,hi8(-(511))
11606 6278 AF4F sbci r26,hlo8(-(511))
11607 627a BF4F sbci r27,hhi8(-(511))
11608 627c 0C94 0000 jmp .L898
11609 .L1244:
11610 6280 B095 com r27
11611 6282 A095 com r26
11612 6284 9095 com r25
11613 6286 8195 neg r24
11614 6288 9F4F sbci r25,lo8(-1)
11615 628a AF4F sbci r26,lo8(-1)
11616 628c BF4F sbci r27,lo8(-1)
11617 628e 0C94 0000 jmp .L897
11618 .L1257:
11619 6292 B095 com r27
11620 6294 A095 com r26
11621 6296 9095 com r25
11622 6298 8195 neg r24
11623 629a 9F4F sbci r25,lo8(-1)
11624 629c AF4F sbci r26,lo8(-1)
11625 629e BF4F sbci r27,lo8(-1)
11626 62a0 0C94 0000 jmp .L931
11627 .L1260:
11628 62a4 8150 subi r24,lo8(-(255))
11629 62a6 9F4F sbci r25,hi8(-(255))
11630 62a8 AF4F sbci r26,hlo8(-(255))
11631 62aa BF4F sbci r27,hhi8(-(255))
11632 62ac 0C94 0000 jmp .L935
11633 .L1259:
11634 62b0 295F subi r18,lo8(-(7))
11635 62b2 3F4F sbci r19,hi8(-(7))
11636 62b4 4F4F sbci r20,hlo8(-(7))
11637 62b6 5F4F sbci r21,hhi8(-(7))
11638 62b8 0C94 0000 jmp .L933
11639 .L1258:
11640 62bc 2150 subi r18,lo8(-(511))
11641 62be 3E4F sbci r19,hi8(-(511))
11642 62c0 4F4F sbci r20,hlo8(-(511))
11643 62c2 5F4F sbci r21,hhi8(-(511))
11644 62c4 0C94 0000 jmp .L932
11645 .L1255:
11646 62c8 295F subi r18,lo8(-(7))
11647 62ca 3F4F sbci r19,hi8(-(7))
11648 62cc 4F4F sbci r20,hlo8(-(7))
11649 62ce 5F4F sbci r21,hhi8(-(7))
11650 62d0 0C94 0000 jmp .L924
11651 .L1256:
11652 62d4 8150 subi r24,lo8(-(255))
11653 62d6 9F4F sbci r25,hi8(-(255))
11654 62d8 AF4F sbci r26,hlo8(-(255))
11655 62da BF4F sbci r27,hhi8(-(255))
11656 62dc 0C94 0000 jmp .L926
11657 .L1247:
11658 62e0 8150 subi r24,lo8(-(255))
11659 62e2 9F4F sbci r25,hi8(-(255))
11660 62e4 AF4F sbci r26,hlo8(-(255))
11661 62e6 BF4F sbci r27,hhi8(-(255))
11662 62e8 0C94 0000 jmp .L901
11663 .L1246:
11664 62ec 295F subi r18,lo8(-(7))
11665 62ee 3F4F sbci r19,hi8(-(7))
11666 62f0 4F4F sbci r20,hlo8(-(7))
11667 62f2 5F4F sbci r21,hhi8(-(7))
11668 62f4 0C94 0000 jmp .L899
11669 .L1317:
11670 62f8 8827 clr r24
11671 62fa 9927 clr r25
11672 62fc 821B sub r24,r18
11673 62fe 930B sbc r25,r19
11674 6300 00C0 rjmp .L1028
11675 .L1251:
11676 6302 8150 subi r24,lo8(-(255))
11677 6304 9F4F sbci r25,hi8(-(255))
11678 6306 AF4F sbci r26,hlo8(-(255))
11679 6308 BF4F sbci r27,hhi8(-(255))
11680 630a 0C94 0000 jmp .L910
11681 .L1250:
11682 630e 295F subi r18,lo8(-(7))
11683 6310 3F4F sbci r19,hi8(-(7))
11684 6312 4F4F sbci r20,hlo8(-(7))
11685 6314 5F4F sbci r21,hhi8(-(7))
11686 6316 0C94 0000 jmp .L908
11687 .L1249:
11688 631a 2150 subi r18,lo8(-(511))
11689 631c 3E4F sbci r19,hi8(-(511))
11690 631e 4F4F sbci r20,hlo8(-(511))
11691 6320 5F4F sbci r21,hhi8(-(511))
11692 6322 0C94 0000 jmp .L907
11693 .L1248:
11694 6326 B095 com r27
11695 6328 A095 com r26
11696 632a 9095 com r25
11697 632c 8195 neg r24
11698 632e 9F4F sbci r25,lo8(-1)
11699 6330 AF4F sbci r26,lo8(-1)
11700 6332 BF4F sbci r27,lo8(-1)
11701 6334 0C94 0000 jmp .L906
11702 .L1315:
11703 6338 0396 adiw r24,3
11704 633a 00C0 rjmp .L1047
11705 .L1158:
11706 633c 6090 0000 lds r6,HoehenWert
11707 6340 7090 0000 lds r7,(HoehenWert)+1
11708 6344 8090 0000 lds r8,(HoehenWert)+2
11709 6348 9090 0000 lds r9,(HoehenWert)+3
11710 634c 00C0 rjmp .L1018
11711 .L1032:
11712 634e 6739 cpi r22,151
11713 6350 7105 cpc r23,__zero_reg__
11714 6352 04F0 brlt .L1188
11715 6354 26E9 ldi r18,lo8(150)
11716 6356 30E0 ldi r19,hi8(150)
11717 6358 00C0 rjmp .L1204
11718 .L1159:
11719 635a 6090 0000 lds r6,HoehenWert
11720 635e 7090 0000 lds r7,(HoehenWert)+1
11721 6362 8090 0000 lds r8,(HoehenWert)+2
11722 6366 9090 0000 lds r9,(HoehenWert)+3
11723 636a 00C0 rjmp .L1022
11724 .L1316:
11725 636c 3095 com r19
11726 636e 2195 neg r18
11727 6370 3F4F sbci r19,lo8(-1)
11728 6372 00C0 rjmp .L1019
11729 .L1318:
11730 6374 4D5F subi r20,lo8(-(3))
11731 6376 5F4F sbci r21,hi8(-(3))
11732 6378 00C0 rjmp .L1031
11733 .L1319:
11734 637a 3095 com r19
11735 637c 2195 neg r18
11736 637e 3F4F sbci r19,lo8(-1)
11737 6380 00C0 rjmp .L1023
11738 .L1188:
11739 6382 7093 0000 sts (StickGasHoover.26)+1,r23
11740 6386 6093 0000 sts StickGasHoover.26,r22
11741 638a 00C0 rjmp .L1027
11742 .L1145:
11743 638c 8091 0000 lds r24,motorOutRear
11744 6390 8093 0000 sts Motor+1,r24
11745 6394 8091 0000 lds r24,motorOutFront
11746 6398 8093 0000 sts Motor,r24
11747 /* epilogue: frame size=40 */
11748 639c E2E1 ldi r30,18
11749 639e C85D subi r28,-40
11750 63a0 0C94 0000 jmp __epilogue_restores__+0
11751 /* epilogue end (size=4) */
11752 /* function MotorRegler size 7530 (7520) */
11754 .comm TrimNick,2,1
11755 .comm TrimRoll,2,1
11756 .comm ErsatzKompass,4,1
11757 .comm ErsatzKompassInGrad,2,1
11758 .comm MesswertNick,2,1
11759 .comm MesswertRoll,2,1
11760 .comm MesswertGier,2,1
11761 .comm Mittelwert_AccNick,2,1
11762 .comm Mittelwert_AccRoll,2,1
11763 .comm Mittelwert_AccHoch,2,1
11764 .comm NaviAccNick,2,1
11765 .comm NaviAccRoll,2,1
11766 .comm h,1,1
11767 .comm m,1,1
11768 .comm s,1,1
11769 .comm DiffNick,2,1
11770 .comm DiffRoll,2,1
11771 .comm EE_Parameter,101,1
11772 .comm Mixer,77,1
11773 .comm Parameter_J16Bitmask,1,1
11774 .comm Parameter_J16Timing,1,1
11775 .comm Parameter_J17Bitmask,1,1
11776 .comm Parameter_J17Timing,1,1
11777 .comm Motor,2,1
11778 .global EEPromArray
11779 .section .eeprom,"aw",@progbits
11782 EEPromArray:
11783 0000 0000 0000 .skip 2048,0
11783 0000 0000
11783 0000 0000
11783 0000 0000
11783 0000 0000
11784 .comm MesswertGierBias,2,1
11785 .comm RohMesswertNick,2,1
11786 .comm RohMesswertRoll,2,1
11787 .comm AdNeutralGierBias,2,1
11788 .comm MittelIntegralNick,4,1
11789 .comm MittelIntegralRoll,4,1
11790 .comm MittelIntegralNick2,4,1
11791 .comm MittelIntegralRoll2,4,1
11792 .comm MAX_GAS,1,1
11793 .comm MIN_GAS,1,1
11794 .comm GyroFaktor,1,1
11795 .comm GyroFaktorGier,1,1
11796 .comm IntegralFaktor,1,1
11797 .comm IntegralFaktorGier,1,1
11798 .comm Parameter_NaviGpsModeControl,1,1
11799 .comm Parameter_NaviGpsGain,1,1
11800 .comm Parameter_NaviGpsP,1,1
11801 .comm Parameter_NaviGpsI,1,1
11802 .comm Parameter_NaviGpsD,1,1
11803 .comm Parameter_NaviGpsACC,1,1
11804 .comm Parameter_NaviOperatingRadius,1,1
11805 .comm Parameter_NaviWindCorrection,1,1
11806 .comm Parameter_NaviSpeedCompensation,1,1
11807 .comm Parameter_ExternalControl,1,1
11808 .comm KopplungsteilNickRoll,2,1
11809 .comm KopplungsteilRollNick,2,1
11810 .comm tmp_motorwert,4,1
11811 .comm angle,2,1
11812 .comm desiredAngle,2,1
11813 .comm motorOutFront,2,1
11814 .comm motorOutRear,2,1
11815 .comm thrust,2,1
11816 /* File "fc.c": code 12994 = 0x32c2 (12928), prologues 29, epilogues 37 */
DEFINED SYMBOLS
*ABS*:00000000 fc.c
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:3 *ABS*:0000003f __SREG__
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:4 *ABS*:0000003e __SP_H__
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5 *ABS*:0000003d __SP_L__
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:15 .bss:00000000 filterDD
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:21 .bss:00000002 filtersum
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:27 .bss:00000004 gyroScaled
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:33 .bss:00000006 gyroScaledOld
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:39 .bss:00000008 mincontrollerDD
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:45 .bss:0000000a maxcontrollerDD
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:51 .bss:0000000c controllerDD
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:57 .bss:0000000e mincontrollerD
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:63 .bss:00000010 maxcontrollerD
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:69 .bss:00000012 controllerD
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:75 .bss:00000014 mincontrollerP
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:81 .bss:00000016 maxcontrollerP
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:87 .bss:00000018 controllerP
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:93 .bss:0000001a kdd
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:99 .bss:0000001c kd
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:105 .bss:0000001e kp
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:111 .bss:00000020 ipk
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:117 .data:00000000 ucflg3
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:122 .data:00000001 ucflg2
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:127 .data:00000002 ucflg1
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:134 .bss:00000026 LoadHandler
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:140 .data:00000003 RequiredMotors
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:145 .data:00000004 GIER_GRAD_FAKTOR
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:152 .bss:00000027 MikroKopterFlags
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:158 .bss:00000028 modell_fliegt
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:164 .bss:0000002a MaxStickRoll
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:170 .bss:0000002c MaxStickNick
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:176 .data:00000008 ExternHoehenValue
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:183 .bss:0000002e ExternStickGier
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:189 .bss:00000030 ExternStickRoll
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:195 .bss:00000032 ExternStickNick
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:201 .data:0000000a Parameter_DynamicStability
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:206 .data:0000000b Parameter_CouplingYawCorrection
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:211 .data:0000000c Parameter_AchsKopplung2
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:216 .data:0000000d Parameter_AchsKopplung1
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:221 .data:0000000e Parameter_LoopGasLimit
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:226 .data:0000000f Parameter_ServoRollControl
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:231 .data:00000010 Parameter_ServoNickControl
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:238 .bss:00000034 Parameter_UserParam8
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:244 .bss:00000035 Parameter_UserParam7
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:250 .bss:00000036 Parameter_UserParam6
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:256 .bss:00000037 Parameter_UserParam5
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:262 .bss:00000038 Parameter_UserParam4
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:268 .bss:00000039 Parameter_UserParam3
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:274 .bss:0000003a Parameter_UserParam2
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:280 .bss:0000003b Parameter_UserParam1
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:286 .data:00000011 Parameter_I_Faktor
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:291 .data:00000012 Parameter_Gier_P
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:296 .data:00000013 Parameter_Gyro_Gier_I
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:301 .data:00000014 Parameter_Gyro_Gier_P
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:306 .data:00000015 Parameter_Gyro_I
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:311 .data:00000016 Parameter_Gyro_P
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:316 .data:00000017 Parameter_Gyro_D
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:321 .data:00000018 Parameter_Hoehe_GPS_Z
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:326 .data:00000019 Parameter_KompassWirkung
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:331 .data:0000001a Parameter_Hoehe_ACC_Wirkung
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:336 .data:0000001b Parameter_Hoehe_P
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:341 .data:0000001c Parameter_MaxHoehe
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:346 .data:0000001d Parameter_Luftdruck_D
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:353 .bss:0000003c Looping_Oben
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:359 .bss:0000003d Looping_Unten
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:365 .bss:0000003e Looping_Rechts
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:371 .bss:0000003f Looping_Links
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:377 .bss:00000040 Looping_Roll
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:383 .bss:00000041 Looping_Nick
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:389 .data:0000001e Ki
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:396 .bss:00000042 LageKorrekturNick
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:402 .bss:00000044 LageKorrekturRoll
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:408 .bss:00000046 SollHoehe
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:414 .bss:0000004a HoehenWert
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:420 .bss:0000004e StickGas
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:426 .bss:00000050 StickGier
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:432 .bss:00000052 StickRoll
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:438 .bss:00000054 StickNick
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:444 .bss:00000056 SenderRSSI
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:450 .bss:00000057 SenderOkay
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:456 .bss:00000058 Poti4
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:462 .bss:0000005a Poti3
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:468 .bss:0000005c Poti2
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:474 .bss:0000005e Poti1
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:480 .bss:00000060 GierGyroFehler
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:486 .data:00000020 Umschlag180Roll
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:491 .data:00000024 Umschlag180Nick
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:498 .bss:00000062 TrichterFlug
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:504 .bss:00000063 HoehenReglerAktiv
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:510 .bss:00000064 MotorenEin
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:516 .data:00000028 KompassSignalSchlecht
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:523 .bss:00000065 KompassRichtung
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:529 .bss:00000067 KompassStartwert
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:535 .bss:00000069 KompassValue
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:541 .bss:0000006b Mess_Integral_Hoch
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:547 .bss:0000006f Mess_Integral_Gier2
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:553 .bss:00000073 Mess_Integral_Gier
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:559 .bss:00000077 Mess_IntegralRoll2
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:565 .bss:0000007b Mess_IntegralRoll
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:571 .bss:0000007f Mess_IntegralNick2
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:577 .bss:00000083 Mess_IntegralNick
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:583 .bss:00000087 Integral_Gier
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:589 .bss:0000008b IntegralAccZ
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:595 .bss:0000008f IntegralAccRoll
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:601 .bss:00000093 IntegralAccNick
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:607 .bss:00000097 IntegralRoll2
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:613 .bss:0000009b IntegralRoll
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:619 .bss:0000009f IntegralNick2
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:625 .bss:000000a3 IntegralNick
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:631 .bss:000000a7 CosinusRollWinkel
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:637 .bss:000000a8 CosinusNickWinkel
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:643 .bss:000000a9 NeutralAccZ
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:649 .bss:000000ad NaviCntAcc
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:655 .bss:000000af NeutralAccY
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:661 .bss:000000b1 NeutralAccX
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:667 .bss:000000b3 StartNeutralNick
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:673 .bss:000000b5 StartNeutralRoll
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:679 .bss:000000b7 AdNeutralGier
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:685 .bss:000000b9 AdNeutralRoll
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:691 .bss:000000bb AdNeutralNick
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:697 .data:0000002a I2CTimeout
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:704 .bss:000000bd BaroExpandActive
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:708 .text:00000000 eeprom_read_byte
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:730 .text:00000010 eeprom_write_byte
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:756 .text:00000028 DefaultStickMapping
*COM*:00000065 EE_Parameter
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:787 .text:0000005a DefaultKonstanten3
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:923 .text:000001ee DefaultKonstanten2
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:1060 .text:00000384 DefaultKonstanten1
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:1194 .text:0000051e ReadParameterSet
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:11782 .eeprom:00000000 EEPromArray
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:1231 .text:00000558 SetActiveParamSetNumber
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:1268 .text:00000582 WriteParameterSet
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:1348 .text:00000608 GetActiveParamSetNumber
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:1384 .text:00000632 MotorSmoothing
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:1418 .text:0000065e Piep
.bss:000000bf tmpl.35
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:1460 .bss:000000c3 tmpl2.36
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:1461 .bss:000000c7 tmpl3.37
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:1462 .bss:000000cb tmpl4.38
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:1463 .bss:000000cf oldNick.39
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:1464 .bss:000000d1 oldRoll.40
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:1465 .bss:000000d3 d2Roll.41
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:1466 .bss:000000d5 d2Nick.42
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:1470 .text:000006aa Mittelwert
*COM*:00000002 MesswertGier
*COM*:00000002 RohMesswertNick
*COM*:00000002 RohMesswertRoll
*COM*:00000002 Mittelwert_AccNick
*COM*:00000002 Mittelwert_AccRoll
*COM*:00000002 Mittelwert_AccHoch
*COM*:00000002 NaviAccNick
*COM*:00000002 NaviAccRoll
*COM*:00000004 ErsatzKompass
*COM*:00000002 KopplungsteilNickRoll
*COM*:00000002 KopplungsteilRollNick
*COM*:00000002 TrimRoll
*COM*:00000002 TrimNick
*COM*:00000002 MesswertRoll
*COM*:00000002 MesswertNick
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:3619 .text:0000198a CalibrierMittelwert
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:3970 .text:00001c9a SetNeutral
*COM*:00000002 AdNeutralGierBias
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:4524 .text:000021c6 SendMotorData
*COM*:00000002 Motor
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:4589 .text:00002250 ParameterZuordnung
*COM*:00000001 Parameter_J16Timing
*COM*:00000001 Parameter_J17Timing
*COM*:00000001 Parameter_ExternalControl
*COM*:00000001 MAX_GAS
*COM*:00000001 MIN_GAS
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:1467 .bss:000000d7 SummeNick.0
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5523 .bss:000000db SummeRoll.1
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5524 .bss:000000df sollGier.2
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5525 .bss:000000e3 tmp_long.3
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5526 .bss:000000e7 tmp_long2.4
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5527 .bss:000000eb IntegralFehlerNick.5
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5528 .bss:000000ef IntegralFehlerRoll.6
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5529 .bss:000000f3 RcLostTimer.7
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5530 .bss:000000f5 delay_neutral.8
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5531 .bss:000000f6 delay_einschalten.9
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5532 .bss:000000f7 delay_ausschalten.10
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5533 .bss:000000f8 TimerWerteausgabe.11
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5534 .bss:000000f9 NeueKompassRichtungMerken.12
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5535 .bss:000000fa ausgleichNick.13
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5536 .bss:000000fe ausgleichRoll.14
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5537 .bss:00000102 stick_nick.15
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5538 .bss:00000104 stick_roll.16
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5539 .bss:00000106 cnt.17
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5540 .bss:00000108 last_n_p.18
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5541 .bss:00000109 last_n_n.19
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5542 .bss:0000010a last_r_p.20
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5543 .bss:0000010b last_r_n.21
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5544 .bss:0000010c MittelIntegralNick_Alt.22
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5545 .bss:00000110 MittelIntegralRoll_Alt.23
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5546 .bss:00000114 HeightTrimming.24
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5547 .bss:00000116 FilterHCGas.25
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5552 .data:00000045 StickGasHoover.26
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5548 .bss:00000118 HooverGas.27
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5554 .bss:0000011a HooverGasMin.28
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5558 .data:00000047 HooverGasMax.29
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5555 .bss:0000011c HooverGasFilter.30
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5563 .data:00000049 delay.31
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5560 .bss:00000120 BaroAtUpperLimit.32
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5565 .bss:00000121 BaroAtLowerLimit.33
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5566 .bss:00000122 HeightTrimmingFlag.34
C:\Users\Bernd\AppData\Local\Temp/ccllosgu.s:5571 .text:000029ca MotorRegler
*COM*:00000001 GyroFaktor
*COM*:00000001 GyroFaktorGier
*COM*:00000001 IntegralFaktorGier
*COM*:00000001 IntegralFaktor
*COM*:00000004 MittelIntegralNick
*COM*:00000004 MittelIntegralRoll
*COM*:00000004 MittelIntegralNick2
*COM*:00000004 MittelIntegralRoll2
*COM*:00000002 DiffNick
*COM*:00000002 DiffRoll
*COM*:00000002 thrust
*COM*:00000002 desiredAngle
*COM*:00000002 angle
*COM*:00000002 motorOutFront
*COM*:00000002 motorOutRear
*COM*:00000002 ErsatzKompassInGrad
*COM*:00000001 h
*COM*:00000001 m
*COM*:00000001 s
*COM*:0000004d Mixer
*COM*:00000001 Parameter_J16Bitmask
*COM*:00000001 Parameter_J17Bitmask
*COM*:00000002 MesswertGierBias
*COM*:00000001 Parameter_NaviGpsModeControl
*COM*:00000001 Parameter_NaviGpsGain
*COM*:00000001 Parameter_NaviGpsP
*COM*:00000001 Parameter_NaviGpsI
*COM*:00000001 Parameter_NaviGpsD
*COM*:00000001 Parameter_NaviGpsACC
*COM*:00000001 Parameter_NaviOperatingRadius
*COM*:00000001 Parameter_NaviWindCorrection
*COM*:00000001 Parameter_NaviSpeedCompensation
*COM*:00000004 tmp_motorwert
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__eerd_block
LED_Init
__eewr_block
beeptime
Delay_ms
__prologue_saves__
AdWertGier
AdWertNickFilter
AdWertRollFilter
AdWertAccNick
AdWertAccRoll
AdWertAccHoch
__floatsisf
Aktuell_az
__subsf3
__addsf3
__fixsfsi
AdReady
__mulsi3
__divmodsi4
HiResNick
HiResRoll
AdWertNick
PlatinenVersion
AdWertRoll
PPM_in
__epilogue_restores__
SucheGyroOffset
ExpandBaro
Delay_ms_Mess
MessLuftdruck
__divmodhi4
Luftdruck
StartLuftdruck
VarioMeter
SendVersionToNavi
ServoActive
SucheLuftruckOffset
PC_MotortestActive
MotorTest
DebugOut
twi_state
motor
i2c_start
PPM_diff
NewPpmData
__fixunssfsi
ExternControl
WinkelOut
ZaehlMessungen
BattLowVoltageWarning
UBat
__udivmodhi4
DruckOffsetSetting
MissingMotor
SummenHoehe
ihypot
c_cos_8192
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/flight.pnproj
0,0 → 1,0
<Project name="Flight-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="printf_P.h"></File><File path="printf_P.c"></File><File path="timer0.c"></File><File path="timer0.h"></File><File path="old_macros.h"></File><File path="twimaster.c"></File><File path="twimaster.h"></File><File path="rc.c"></File><File path="rc.h"></File><File path="fc.h"></File><File path="menu.h"></File><File path="menu.c"></File><File path="_Settings.h"></File><File path="analog.c"></File><File path="analog.h"></File><File path="eeprom.c"></File><File path="led.h"></File><File path="led.c"></File><File path="fc.c"></File><File path="mymath.c"></File><File path="mymath.h"></File><File path="isqrt.S"></File><File path="eeprom.h"></File></Project>
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/gps.h
0,0 → 1,12
//-----------------------------------------------------------------------------------------------------
// soll entfernt werden
// gps.h
//-----------------------------------------------------------------------------------------------------
 
//extern signed int GPS_Nick;
//extern signed int GPS_Roll;
//extern signed int GPS_Nick2;
//extern signed int GPS_Roll2;
 
//void GPS_Neutral(void);
//void GPS_BerechneZielrichtung(void);
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/isqrt.S
0,0 → 1,201
;-----------------------------------------------------------------------------;
; Fast integer squareroot routines for avr-gcc project (C)ChaN, 2008
; http://elm-chan.org/docs/avrlib/sqrt32.S
;-----------------------------------------------------------------------------;
; uint16_t isqrt32 (uint32_t n);
; uint8_t isqrt16 (uint16_t n);
; uint16_t ihypot (int16_t x, int16_t y);
 
;-----------------------------------------------------------------------------:
; 32bit integer squareroot
;-----------------------------------------------------------------------------;
; uint16_t isqrt32 (
; uint32_t n
; );
;
; Return Value:
; Squareroot of n.
;
; Size = 53 words
; Clock = 532..548 cycles
; Stack = 0 byte
 
.global isqrt32
.func isqrt32
 
isqrt32:
clr r0
clr r18
clr r19
clr r20
ldi r21, 1
clr r27
clr r30
clr r31
ldi r26, 16
1: lsl r22
rol r23
rol r24
rol r25
rol r0
rol r18
rol r19
rol r20
lsl r22
rol r23
rol r24
rol r25
rol r0
rol r18
rol r19
rol r20
brpl 2f
add r0, r21
adc r18, r27
adc r19, r30
adc r20, r31
rjmp 3f
2: sub r0, r21
sbc r18, r27
sbc r19, r30
sbc r20, r31
3: lsl r21
rol r27
rol r30
andi r21, 0b11111000
ori r21, 0b00000101
sbrc r20, 7
subi r21, 2
dec r26
brne 1b
lsr r30
ror r27
ror r21
lsr r30
ror r27
ror r21
mov r24, r21
mov r25, r27
ret
.endfunc
 
 
 
;-----------------------------------------------------------------------------:
; 16bit integer squareroot
;-----------------------------------------------------------------------------;
; uint8_t isqrt16 ( uint16_t n );
;
; Return Value:
; Squareroot of n.
;
; Size = 33 words
; Clock = 181..189 cycles
; Stack = 0 byte
 
.global isqrt16
.func isqrt16
 
isqrt16:
clr r18
clr r19
ldi r20, 1
clr r21
ldi r22, 8
1: lsl r24
rol r25
rol r18
rol r19
lsl r24
rol r25
rol r18
rol r19
brpl 2f
add r18, r20
adc r19, r21
rjmp 3f
2: sub r18, r20
sbc r19, r21
3: lsl r20
rol r21
andi r20, 0b11111000
ori r20, 0b00000101
sbrc r19, 7
subi r20, 2
dec r22
brne 1b
lsr r21
ror r20
lsr r21
ror r20
mov r24, r20
ret
.endfunc
 
 
 
;-----------------------------------------------------------------------------:
; 16bit integer hypot (megaAVR is required)
;-----------------------------------------------------------------------------;
; uint16_t ihypot (
; int16_t x,
; int16_t y
; );
;
; Return Value:
; Squareroot of (x*x + y*y)
;
; Size = 42 words
; Clock = 581..597 cycles
; Stack = 0 byte
 
.global ihypot
.func ihypot
 
ihypot:
clr r26
sbrs r25, 7
rjmp 1f
com r24
com r25
adc r24, r26
adc r25, r26
1: sbrs r23, 7
rjmp 2f
com r22
com r23
adc r22, r26
adc r23, r26
2: mul r22, r22
movw r18, r0
mul r23, r23
movw r20, r0
mul r22, r23
add r19, r0
adc r20, r1
adc r21, r26
add r19, r0
adc r20, r1
adc r21, r26
mul r24, r24
movw r30, r0
mul r25, r25
add r18, r30
adc r19, r31
adc r20, r0
adc r21, r1
mul r24, r25
add r19, r0
adc r20, r1
adc r21, r26
add r19, r0
adc r20, r1
adc r21, r26
movw r24, r20
movw r22, r18
clr r1
rjmp isqrt32
.endfunc
 
 
 
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/isqrt.h
0,0 → 1,11
#ifndef _ISQRT_H
#define _ISQRT_H
 
#include <inttypes.h>
 
// coded in assembler file
extern uint16_t isqrt32(uint32_t n);
extern uint8_t isqrt16(uint16_t n);
extern uint16_t ihypot(int16_t x, int16_t y);
 
#endif // _ISQRT_H
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/isqrt.lst
0,0 → 1,207
1 # 1 "isqrt.S"
1 ;-----------------------------------------------------------------------------;
0
0
2 ;-----------------------------------------------------------------------------;
3 ; Fast integer squareroot routines for avr-gcc project (C)ChaN, 2008
4 ; http://elm-chan.org/docs/avrlib/sqrt32.S
5 ;-----------------------------------------------------------------------------;
6 ; uint16_t isqrt32 (uint32_t n);
7 ; uint8_t isqrt16 (uint16_t n);
8 ; uint16_t ihypot (int16_t x, int16_t y);
9
10 ;-----------------------------------------------------------------------------:
11 ; 32bit integer squareroot
12 ;-----------------------------------------------------------------------------;
13 ; uint16_t isqrt32 (
14 ; uint32_t n
15 ; );
16 ;
17 ; Return Value:
18 ; Squareroot of n.
19 ;
20 ; Size = 53 words
21 ; Clock = 532..548 cycles
22 ; Stack = 0 byte
23
24 .global isqrt32
25 .func isqrt32
26
27:isqrt.S **** isqrt32:
28:isqrt.S **** clr r0
29:isqrt.S **** clr r18
30:isqrt.S **** clr r19
31:isqrt.S **** clr r20
32:isqrt.S **** ldi r21, 1
33:isqrt.S **** clr r27
34:isqrt.S **** clr r30
35:isqrt.S **** clr r31
36:isqrt.S **** ldi r26, 16
37:isqrt.S **** 1: lsl r22
38:isqrt.S **** rol r23
39:isqrt.S **** rol r24
40:isqrt.S **** rol r25
41:isqrt.S **** rol r0
42:isqrt.S **** rol r18
43:isqrt.S **** rol r19
44:isqrt.S **** rol r20
45:isqrt.S **** lsl r22
46:isqrt.S **** rol r23
47:isqrt.S **** rol r24
48:isqrt.S **** rol r25
49:isqrt.S **** rol r0
50:isqrt.S **** rol r18
51:isqrt.S **** rol r19
52:isqrt.S **** rol r20
53:isqrt.S **** brpl 2f
54:isqrt.S **** add r0, r21
55:isqrt.S **** adc r18, r27
56:isqrt.S **** adc r19, r30
57:isqrt.S **** adc r20, r31
58:isqrt.S **** rjmp 3f
59:isqrt.S **** 2: sub r0, r21
60:isqrt.S **** sbc r18, r27
61:isqrt.S **** sbc r19, r30
62:isqrt.S **** sbc r20, r31
63:isqrt.S **** 3: lsl r21
64:isqrt.S **** rol r27
65:isqrt.S **** rol r30
66:isqrt.S **** andi r21, 0b11111000
67:isqrt.S **** ori r21, 0b00000101
68:isqrt.S **** sbrc r20, 7
69:isqrt.S **** subi r21, 2
70:isqrt.S **** dec r26
71:isqrt.S **** brne 1b
72:isqrt.S **** lsr r30
73:isqrt.S **** ror r27
74:isqrt.S **** ror r21
75:isqrt.S **** lsr r30
76:isqrt.S **** ror r27
77:isqrt.S **** ror r21
78:isqrt.S **** mov r24, r21
79:isqrt.S **** mov r25, r27
80 ret
81 .endfunc
82
83
84
85 ;-----------------------------------------------------------------------------:
86 ; 16bit integer squareroot
87 ;-----------------------------------------------------------------------------;
88 ; uint8_t isqrt16 ( uint16_t n );
89 ;
90 ; Return Value:
91 ; Squareroot of n.
92 ;
93 ; Size = 33 words
94 ; Clock = 181..189 cycles
95 ; Stack = 0 byte
96
97 .global isqrt16
98 .func isqrt16
99
100:isqrt.S **** isqrt16:
101:isqrt.S **** clr r18
102:isqrt.S **** clr r19
103:isqrt.S **** ldi r20, 1
104:isqrt.S **** clr r21
105:isqrt.S **** ldi r22, 8
106:isqrt.S **** 1: lsl r24
107:isqrt.S **** rol r25
108:isqrt.S **** rol r18
109:isqrt.S **** rol r19
110:isqrt.S **** lsl r24
111:isqrt.S **** rol r25
112:isqrt.S **** rol r18
113:isqrt.S **** rol r19
114:isqrt.S **** brpl 2f
115:isqrt.S **** add r18, r20
116:isqrt.S **** adc r19, r21
117:isqrt.S **** rjmp 3f
118:isqrt.S **** 2: sub r18, r20
119:isqrt.S **** sbc r19, r21
120:isqrt.S **** 3: lsl r20
121:isqrt.S **** rol r21
122:isqrt.S **** andi r20, 0b11111000
123:isqrt.S **** ori r20, 0b00000101
124:isqrt.S **** sbrc r19, 7
125:isqrt.S **** subi r20, 2
126:isqrt.S **** dec r22
127:isqrt.S **** brne 1b
128:isqrt.S **** lsr r21
129:isqrt.S **** ror r20
130:isqrt.S **** lsr r21
131:isqrt.S **** ror r20
132:isqrt.S **** mov r24, r20
133 ret
134 .endfunc
135
136
137
138 ;-----------------------------------------------------------------------------:
139 ; 16bit integer hypot (megaAVR is required)
140 ;-----------------------------------------------------------------------------;
141 ; uint16_t ihypot (
142 ; int16_t x,
143 ; int16_t y
144 ; );
145 ;
146 ; Return Value:
147 ; Squareroot of (x*x + y*y)
148 ;
149 ; Size = 42 words
150 ; Clock = 581..597 cycles
151 ; Stack = 0 byte
152
153 .global ihypot
154 .func ihypot
155
156:isqrt.S **** ihypot:
157:isqrt.S **** clr r26
158:isqrt.S **** sbrs r25, 7
159:isqrt.S **** rjmp 1f
160:isqrt.S **** com r24
161:isqrt.S **** com r25
162:isqrt.S **** adc r24, r26
163:isqrt.S **** adc r25, r26
164:isqrt.S **** 1: sbrs r23, 7
165:isqrt.S **** rjmp 2f
166:isqrt.S **** com r22
167:isqrt.S **** com r23
168:isqrt.S **** adc r22, r26
169:isqrt.S **** adc r23, r26
170:isqrt.S **** 2: mul r22, r22
171:isqrt.S **** movw r18, r0
172:isqrt.S **** mul r23, r23
173:isqrt.S **** movw r20, r0
174:isqrt.S **** mul r22, r23
175:isqrt.S **** add r19, r0
176:isqrt.S **** adc r20, r1
177:isqrt.S **** adc r21, r26
178:isqrt.S **** add r19, r0
179:isqrt.S **** adc r20, r1
180:isqrt.S **** adc r21, r26
181:isqrt.S **** mul r24, r24
182:isqrt.S **** movw r30, r0
183:isqrt.S **** mul r25, r25
184:isqrt.S **** add r18, r30
185:isqrt.S **** adc r19, r31
186:isqrt.S **** adc r20, r0
187:isqrt.S **** adc r21, r1
188:isqrt.S **** mul r24, r25
189:isqrt.S **** add r19, r0
190:isqrt.S **** adc r20, r1
191:isqrt.S **** adc r21, r26
192:isqrt.S **** add r19, r0
193:isqrt.S **** adc r20, r1
194:isqrt.S **** adc r21, r26
195:isqrt.S **** movw r24, r20
196:isqrt.S **** movw r22, r18
197:isqrt.S **** clr r1
198 rjmp isqrt32
DEFINED SYMBOLS
isqrt.S:26 .text:00000000 isqrt32
isqrt.S:99 .text:0000006a isqrt16
isqrt.S:155 .text:000000ac ihypot
 
NO UNDEFINED SYMBOLS
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/led.c
0,0 → 1,89
/*****************************************************************************************************************************
* File: led.c
*
* Purpose: controlling LEDs
*
* Functions: void LED_Init(void)
* void LED_Update(void)
*
*****************************************************************************************************************************/
#include "led.h"
 
#include <inttypes.h>
#include "main.h"
 
uint16_t LED1_Timing = 0;
uint16_t LED2_Timing = 0;
unsigned char J16Blinkcount = 0, J16Mask = 1;
unsigned char J17Blinkcount = 0, J17Mask = 1;
 
//------------------------------------------------------------------------------------------------------
// initialisiert die Schalt-Ausgänge PORTC2 und PORTC3 an SV2 (control of J16 & J17)
//------------------------------------------------------------------------------------------------------
void LED_Init(void)
{
DDRC |= (1<<DDC2)|(1<<DDC3);
J16_OFF;
J17_OFF;
J16Blinkcount = 0; J16Mask = 128;
J17Blinkcount = 0; J17Mask = 128;
}
//------------------------------------------------------------------------------------------------------
 
 
//--------------------------------------------------------------------------------------------------------------------------------
// wird aus UpdateMotors() alle 2ms aufgerufen
// damit können am Mikrokopter aussen angebrachte LEDs gesteuert werden
// deren Ankoppelung geschieht über PORTC2 und PORTC3
//--------------------------------------------------------------------------------------------------------------------------------
void LED_Update(void)
{
static char delay = 0;
static unsigned char J16Bitmask = 0;
static unsigned char J17Bitmask = 0;
if(!delay--) // 10ms Intervall
{
delay = 4;
if(MikroKopterFlags & FLAG_LOWBAT || SenderOkay < 128)
{
J16Bitmask = EE_Parameter.WARN_J16_Bitmask;
J17Bitmask = EE_Parameter.WARN_J17_Bitmask;
}
else
{
J16Bitmask = EE_Parameter.J16Bitmask;
J17Bitmask = EE_Parameter.J17Bitmask;
}
if((EE_Parameter.BitConfig & CFG_MOTOR_BLINK) && !MotorenEin) {if(EE_Parameter.BitConfig & CFG_MOTOR_OFF_LED1) J16_ON; else J16_OFF;}
else
if((EE_Parameter.J16Timing > 250) && (Parameter_J16Timing > 220)) {if(J16Bitmask & 128) J16_ON; else J16_OFF;}
else
if((EE_Parameter.J16Timing > 250) && (Parameter_J16Timing < 10)) {if(J16Bitmask & 128) J16_OFF; else J16_ON;}
else
if(!J16Blinkcount--)
{
J16Blinkcount = Parameter_J16Timing-1;
if(J16Mask == 1) J16Mask = 128; else J16Mask /= 2;
if(J16Mask & J16Bitmask) J16_ON; else J16_OFF;
}
if((EE_Parameter.BitConfig & CFG_MOTOR_BLINK) && !MotorenEin) {if(EE_Parameter.BitConfig & CFG_MOTOR_OFF_LED2) J17_ON; else J17_OFF;}
else
if((EE_Parameter.J17Timing > 250) && (Parameter_J17Timing > 230)) {if(J17Bitmask & 128) J17_ON; else J17_OFF;}
else
if((EE_Parameter.J17Timing > 250) && (Parameter_J17Timing < 10)) {if(J17Bitmask & 128) J17_OFF; else J17_ON;}
else
if(!J17Blinkcount--)
{
J17Blinkcount = Parameter_J17Timing-1;
if(J17Mask == 1) J17Mask = 128; else J17Mask /= 2;
if(J17Mask & J17Bitmask) J17_ON; else J17_OFF;
}
} // Ende : 10ms Intervall
}
//--------------------------------------------------------------------------------------------------------------------------------
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/led.d
0,0 → 1,2
led.o led.d : led.c led.h main.h old_macros.h _Settings.h printf_P.h timer0.h \
uart.h analog.h eeprom.h twimaster.h menu.h rc.h fc.h
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/led.h
0,0 → 1,21
/*****************************************************************************************************************************
* File: led.h
* Purpose: header of fc.c
*****************************************************************************************************************************/
#ifndef _LED_H
#define _LED_H
 
#include <avr/io.h>
 
#define J16_ON PORTC |= (1<<PORTC2)
#define J16_OFF PORTC &= ~(1<<PORTC2)
#define J16_TOGGLE PORTC ^= (1<<PORTC2)
#define J17_ON PORTC |= (1<<PORTC3)
#define J17_OFF PORTC &= ~(1<<PORTC3)
#define J17_TOGGLE PORTC ^= (1<<PORTC3)
 
extern void LED_Init(void);
extern void LED_Update(void);
 
#endif
//-------------------------------------------------------------------------------------------------------------------------------------
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/led.lst
0,0 → 1,247
1 .file "led.c"
2 .arch atmega644
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 .global J17Mask
11 .data
14 J17Mask:
15 0000 01 .byte 1
16 .global J17Blinkcount
17 .global J17Blinkcount
18 .section .bss
21 J17Blinkcount:
22 0000 00 .skip 1,0
23 .global J16Mask
24 .data
27 J16Mask:
28 0001 01 .byte 1
29 .global J16Blinkcount
30 .global J16Blinkcount
31 .section .bss
34 J16Blinkcount:
35 0001 00 .skip 1,0
36 .global LED2_Timing
37 .global LED2_Timing
40 LED2_Timing:
41 0002 0000 .skip 2,0
42 .global LED1_Timing
43 .global LED1_Timing
46 LED1_Timing:
47 0004 0000 .skip 2,0
48 .text
49 .global LED_Init
51 LED_Init:
52 /* prologue: frame size=0 */
53 /* prologue end (size=0) */
54 0000 87B1 in r24,39-0x20
55 0002 8C60 ori r24,lo8(12)
56 0004 87B9 out 39-0x20,r24
57 0006 4298 cbi 40-0x20,2
58 0008 4398 cbi 40-0x20,3
59 000a 1092 0000 sts J16Blinkcount,__zero_reg__
60 000e 80E8 ldi r24,lo8(-128)
61 0010 8093 0000 sts J16Mask,r24
62 0014 1092 0000 sts J17Blinkcount,__zero_reg__
63 0018 8093 0000 sts J17Mask,r24
64 /* epilogue: frame size=0 */
65 001c 0895 ret
66 /* epilogue end (size=1) */
67 /* function LED_Init size 15 (14) */
69 .lcomm delay.0,1
70 .lcomm J16Bitmask.1,1
71 .lcomm J17Bitmask.2,1
72 .global LED_Update
74 LED_Update:
75 /* prologue: frame size=0 */
76 /* prologue end (size=0) */
77 001e 8091 0000 lds r24,delay.0
78 0022 8150 subi r24,lo8(-(-1))
79 0024 8F3F cpi r24,lo8(-1)
80 0026 01F0 breq .L52
81 0028 8093 0000 sts delay.0,r24
82 002c 0895 ret
83 .L52:
84 002e 84E0 ldi r24,lo8(4)
85 0030 8093 0000 sts delay.0,r24
86 0034 8091 0000 lds r24,MikroKopterFlags
87 0038 85FF sbrs r24,5
88 003a 00C0 rjmp .L53
89 .L5:
90 003c 4091 0000 lds r20,EE_Parameter+67
91 0040 4093 0000 sts J16Bitmask.1,r20
92 0044 6091 0000 lds r22,EE_Parameter+68
93 .L44:
94 0048 6093 0000 sts J17Bitmask.2,r22
95 004c 5091 0000 lds r21,EE_Parameter+86
96 0050 252F mov r18,r21
97 0052 3327 clr r19
98 0054 24FF sbrs r18,4
99 0056 00C0 rjmp .L7
100 0058 8091 0000 lds r24,MotorenEin
101 005c 8823 tst r24
102 005e 01F4 brne .L7
103 0060 25FF sbrs r18,5
104 0062 00C0 rjmp .L22
105 .L46:
106 0064 429A sbi 40-0x20,2
107 0066 00C0 rjmp .L10
108 .L53:
109 0068 8091 0000 lds r24,SenderOkay
110 006c 8823 tst r24
111 006e 04F4 brge .L5
112 0070 4091 0000 lds r20,EE_Parameter+63
113 0074 4093 0000 sts J16Bitmask.1,r20
114 0078 6091 0000 lds r22,EE_Parameter+65
115 007c 00C0 rjmp .L44
116 .L7:
117 007e 9091 0000 lds r25,EE_Parameter+64
118 0082 9B3F cpi r25,lo8(-5)
119 0084 00F0 brlo .L11
120 0086 8091 0000 lds r24,Parameter_J16Timing
121 008a 8D3D cpi r24,lo8(-35)
122 008c 00F0 brlo .L11
123 008e 47FD sbrc r20,7
124 0090 00C0 rjmp .L46
125 .L22:
126 0092 4298 cbi 40-0x20,2
127 0094 252F mov r18,r21
128 0096 3327 clr r19
129 0098 24FD sbrc r18,4
130 009a 00C0 rjmp .L54
131 .L24:
132 009c 9091 0000 lds r25,EE_Parameter+66
133 00a0 9B3F cpi r25,lo8(-5)
134 00a2 00F0 brlo .L28
135 00a4 8091 0000 lds r24,Parameter_J17Timing
136 00a8 873E cpi r24,lo8(-25)
137 00aa 00F0 brlo .L28
138 00ac 67FD sbrc r22,7
139 00ae 00C0 rjmp .L50
140 .L39:
141 00b0 4398 cbi 40-0x20,3
142 00b2 0895 ret
143 .L11:
144 00b4 9B3F cpi r25,lo8(-5)
145 00b6 00F0 brlo .L15
146 00b8 8091 0000 lds r24,Parameter_J16Timing
147 00bc 8A30 cpi r24,lo8(10)
148 00be 00F0 brlo .L55
149 .L15:
150 00c0 8091 0000 lds r24,J16Blinkcount
151 00c4 8150 subi r24,lo8(-(-1))
152 00c6 8F3F cpi r24,lo8(-1)
153 00c8 01F0 breq .L56
154 00ca 8093 0000 sts J16Blinkcount,r24
155 .L10:
156 00ce 252F mov r18,r21
157 00d0 3327 clr r19
158 00d2 24FF sbrs r18,4
159 00d4 00C0 rjmp .L24
160 .L54:
161 00d6 8091 0000 lds r24,MotorenEin
162 00da 8823 tst r24
163 00dc 01F4 brne .L24
164 00de 26FF sbrs r18,6
165 00e0 00C0 rjmp .L39
166 .L50:
167 00e2 439A sbi 40-0x20,3
168 00e4 0895 ret
169 .L28:
170 00e6 9B3F cpi r25,lo8(-5)
171 00e8 00F0 brlo .L32
172 00ea 8091 0000 lds r24,Parameter_J17Timing
173 00ee 8A30 cpi r24,lo8(10)
174 00f0 00F0 brlo .L57
175 .L32:
176 00f2 8091 0000 lds r24,J17Blinkcount
177 00f6 8150 subi r24,lo8(-(-1))
178 00f8 8F3F cpi r24,lo8(-1)
179 00fa 01F0 breq .L58
180 00fc 8093 0000 sts J17Blinkcount,r24
181 0100 0895 ret
182 .L55:
183 0102 47FD sbrc r20,7
184 0104 00C0 rjmp .L22
185 0106 429A sbi 40-0x20,2
186 0108 00C0 rjmp .L10
187 .L57:
188 010a 67FD sbrc r22,7
189 010c 00C0 rjmp .L39
190 010e 439A sbi 40-0x20,3
191 0110 0895 ret
192 .L56:
193 0112 8091 0000 lds r24,Parameter_J16Timing
194 0116 8150 subi r24,lo8(-(-1))
195 0118 8093 0000 sts J16Blinkcount,r24
196 011c 8091 0000 lds r24,J16Mask
197 0120 8130 cpi r24,lo8(1)
198 0122 01F0 breq .L59
199 0124 8695 lsr r24
200 .L45:
201 0126 8093 0000 sts J16Mask,r24
202 012a 8423 and r24,r20
203 012c 01F4 brne .+2
204 012e 00C0 rjmp .L22
205 0130 429A sbi 40-0x20,2
206 0132 00C0 rjmp .L10
207 .L58:
208 0134 8091 0000 lds r24,Parameter_J17Timing
209 0138 8150 subi r24,lo8(-(-1))
210 013a 8093 0000 sts J17Blinkcount,r24
211 013e 8091 0000 lds r24,J17Mask
212 0142 8130 cpi r24,lo8(1)
213 0144 01F0 breq .L60
214 0146 8695 lsr r24
215 .L47:
216 0148 8093 0000 sts J17Mask,r24
217 014c 8623 and r24,r22
218 014e 01F4 brne .+2
219 0150 00C0 rjmp .L39
220 0152 439A sbi 40-0x20,3
221 0154 0895 ret
222 .L59:
223 0156 80E8 ldi r24,lo8(-128)
224 0158 00C0 rjmp .L45
225 .L60:
226 015a 80E8 ldi r24,lo8(-128)
227 015c 00C0 rjmp .L47
228 /* epilogue: frame size=0 */
229 /* epilogue: noreturn */
230 /* epilogue end (size=0) */
231 /* function LED_Update size 162 (162) */
233 .comm Mixer,77,1
234 /* File "led.c": code 177 = 0x00b1 ( 176), prologues 0, epilogues 1 */
DEFINED SYMBOLS
*ABS*:00000000 led.c
C:\Users\Bernd\AppData\Local\Temp/ccVwhCXf.s:3 *ABS*:0000003f __SREG__
C:\Users\Bernd\AppData\Local\Temp/ccVwhCXf.s:4 *ABS*:0000003e __SP_H__
C:\Users\Bernd\AppData\Local\Temp/ccVwhCXf.s:5 *ABS*:0000003d __SP_L__
C:\Users\Bernd\AppData\Local\Temp/ccVwhCXf.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Bernd\AppData\Local\Temp/ccVwhCXf.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Bernd\AppData\Local\Temp/ccVwhCXf.s:14 .data:00000000 J17Mask
C:\Users\Bernd\AppData\Local\Temp/ccVwhCXf.s:21 .bss:00000000 J17Blinkcount
C:\Users\Bernd\AppData\Local\Temp/ccVwhCXf.s:27 .data:00000001 J16Mask
C:\Users\Bernd\AppData\Local\Temp/ccVwhCXf.s:34 .bss:00000001 J16Blinkcount
C:\Users\Bernd\AppData\Local\Temp/ccVwhCXf.s:40 .bss:00000002 LED2_Timing
C:\Users\Bernd\AppData\Local\Temp/ccVwhCXf.s:46 .bss:00000004 LED1_Timing
C:\Users\Bernd\AppData\Local\Temp/ccVwhCXf.s:51 .text:00000000 LED_Init
.bss:00000006 delay.0
C:\Users\Bernd\AppData\Local\Temp/ccVwhCXf.s:69 .bss:00000007 J16Bitmask.1
C:\Users\Bernd\AppData\Local\Temp/ccVwhCXf.s:70 .bss:00000008 J17Bitmask.2
C:\Users\Bernd\AppData\Local\Temp/ccVwhCXf.s:74 .text:0000001e LED_Update
*COM*:0000004d Mixer
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
MikroKopterFlags
EE_Parameter
MotorenEin
SenderOkay
Parameter_J16Timing
Parameter_J17Timing
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/main.c
0,0 → 1,491
/**************************************************************************************************************************************
* File: main.c
*
* Purpose: main function fot Flight Ctrl
*
* Functions: void CalMk3Mag(void)
* void LipoDetection(unsigned char print)
* int main(void)
*
* hardware: Flight Ctrl V1.3
*
* Created: Feb 2013
*
* Revisions: 1.00 experimental subversion for a balancekopter
* Achtung: nicht flugfähige Experimentalversion für eine Balenwaage mit Flight-CTRL
* siehe: http://forum.mikrokopter.de/topic-39231.html
*
* Copyright: (c)2013 www.mikrokopter.de
* All rights reserved. This software is available only for non-commercial or educational applications.
* Other uses are prohibited. This software may be modified only if
* the resulting code be made available publicly and the original author(s) given credit.
*
************************************************************************************************************************************/
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Copyright (c) Holger Buss, Ingo Busker
// + Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY
// + 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 und 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 Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de"
// + eindeutig als Ursprung verlinkt und genannt 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 char PlatinenVersion = 13;
unsigned char SendVersionToNavi = 1;
unsigned char BattLowVoltageWarning = 94;
unsigned int FlugMinuten = 0,FlugMinutenGesamt = 0;
 
 
 
//-----------------------------------------------------------------------------------------------------
// calibrate magnetic compass
//-----------------------------------------------------------------------------------------------------
void CalMk3Mag(void)
{
static unsigned char stick = 1;
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > -20) stick = 0;
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -70) && !stick)
{
stick = 1;
WinkelOut.CalcState++;
if(WinkelOut.CalcState > 4)
{
beeptime = 1000;
}
else Piep(WinkelOut.CalcState,150);
}
DebugOut.Analog[19] = WinkelOut.CalcState;
}
//-----------------------------------------------------------------------------------------------------
 
 
 
//-----------------------------------------------------------------------------------------------------
// recognize the LiPo accumulators
// char print can be 0 or 1
//-----------------------------------------------------------------------------------------------------
void LipoDetection(unsigned char print)
{
unsigned int timer;
if(print) printf("\n\rBatt:");
if(EE_Parameter.UnterspannungsWarnung < 50) // automatic recognition of lipo cells -> default = 33
{
timer = SetDelay(500); //
if(print) while (!CheckDelay(timer));
if(UBat < 130)
{
BattLowVoltageWarning = 3 * EE_Parameter.UnterspannungsWarnung;
if(print)
{
Piep(3,200);
printf(" 3 Cells ");
}
}
else
{
BattLowVoltageWarning = 4 * EE_Parameter.UnterspannungsWarnung;
if(print)
{
Piep(4,200);
printf(" 4 Cells ");
}
}
}
else BattLowVoltageWarning = EE_Parameter.UnterspannungsWarnung;
 
if(print) printf(" Low warning level: %d.%d",BattLowVoltageWarning/10,BattLowVoltageWarning%10);
}
//-----------------------------------------------------------------------------------------------------
 
 
 
// --------------------------------------------------------------------------------------------------------------------------
// main program starting here
//
// INPUT: None
// OUTPUT: None
// RETURN: 1
// --------------------------------------------------------------------------------------------------------------------------
int main(void)
{
unsigned int timer,i,timer2 = 0;
DDRB = 0x00;
PORTB = 0x00;
for(timer = 0; timer < 1000; timer++); // verzögern
PlatinenVersion = 13;
DDRC = 0x81; // SCL
PORTC = 0xFF; // Pullup SDA
DDRB = 0x1B; // LEDs und Druckoffset
PORTB = 0x01; // LED_Rot
DDRD = 0x3E; // Speaker & TXD & J3 J4 J5
PORTD = 0x47; // LED
HEF4017R_OFF; // #define HEF4017R_OFF PORTC &= ~(1<<PORTC6)
MCUSR &=~(1<<WDRF); // MCUSR – MCU Status Register provides information on which reset source caused an MCU reset
WDTCSR |= (1<<WDCE)|(1<<WDE); // WDTCSR – Watchdog Timer Control Register
WDTCSR = 0;
beeptime = 2000;
StickGier = 0; PPM_in[K_GAS] = 0; StickRoll = 0; StickNick = 0;
GIER_GRAD_FAKTOR = 1291;
ROT_OFF; // rote LED aus // PORTB |= 0x01;
Timer_Init(); // goto timer0.c Zeile 40
TIMER2_Init(); // goto timer0.c Zeile 170
UART_Init(); // goto uart.c Zeile 488
rc_sum_init(); // goto rc.c line 17
ADC_Init(); // goto analog.c Zeile 26
i2c_init(); // goto twimaster.c Zeile 16
//---------------------------------------------------------------------------------------------------------------------------------
// passes one time through the following code before arriving at the forever loop
//---------------------------------------------------------------------------------------------------------------------------------
sei();
printf("\n\r===================================");
printf("\n\rFlightControl\n\rHardware:%d.%d\n\rSoftware:V%d.%d%c ",PlatinenVersion/10,PlatinenVersion%10, VERSION_MAJOR, VERSION_MINOR,VERSION_PATCH + 'a');
printf("\n\rexperimental version");
printf("\n\r===================================");
 
GRN_ON; // switch green LED on // PORTB &=~0x02;
ReadParameterSet(3, (unsigned char *) &EE_Parameter.Kanalbelegung[0], 9); // read first 9 Bytes = chanal setup of radio control
 
// ---------------------------------------------------------------------------------------------------------------------------
// setup of mixer
// ---------------------------------------------------------------------------------------------------------------------------
 
// check MIXER-Revision at first EEPROM Byte = 1000 // #define EEPROM_ADR_MIXER_TABLE 1000
 
// if((eeprom_read_byte(&EEPromArray[EEPROM_ADR_MIXER_TABLE]) == MIXER_REVISION) && (eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != 0xff))
if((eeprom_read_byte(&EEPromArray[1000]) == 1) && (eeprom_read_byte(&EEPromArray[1]) != 0xFF)) // aufgelöst
{
unsigned char i; // Settings via Koptertool zurücksetzen
RequiredMotors = 0;
eeprom_read_block(&Mixer, &EEPromArray[EEPROM_ADR_MIXER_TABLE], sizeof(Mixer));
for(i=0; i<16;i++) { if(Mixer.Motor[i][0] > 0) RequiredMotors++;}
}
else // default
{
unsigned char i;
printf("\n\rerzeugt default Mixer Table");
for(i=0; i<16;i++) { Mixer.Motor[i][0] = 0;Mixer.Motor[i][1] = 0;Mixer.Motor[i][2] = 0;Mixer.Motor[i][3] = 0;};
// default = Quadro
// number 64 is equivalent to 100%
// GasMischanteil pd_ergebnis_nick pd_ergebnis_roll GierMischanteil
Mixer.Motor[0][0] = 64; Mixer.Motor[0][1] = +64; Mixer.Motor[0][2] = 0; Mixer.Motor[0][3] = +64; // vorne
Mixer.Motor[1][0] = 64; Mixer.Motor[1][1] = -64; Mixer.Motor[1][2] = 0; Mixer.Motor[1][3] = +64; // hinten
Mixer.Motor[2][0] = 64; Mixer.Motor[2][1] = 0; Mixer.Motor[2][2] = -64; Mixer.Motor[2][3] = -64; // rechts
Mixer.Motor[3][0] = 64; Mixer.Motor[3][1] = 0; Mixer.Motor[3][2] = +64; Mixer.Motor[3][3] = -64; // links
Mixer.Revision = MIXER_REVISION; // #define MIXER_REVISION 1
memcpy(Mixer.Name, "Quadro\0", 11);
eeprom_write_block(&Mixer, &EEPromArray[EEPROM_ADR_MIXER_TABLE], sizeof(Mixer)); // sizeof(Mixer) = 77
}
printf("\n\rMixer-Config: '%s' (%u Motors)",Mixer.Name,RequiredMotors);
// ---------------------------------------------------------------------------------------------------------------------------
// how many BL-Ctrls are connected ?
// ---------------------------------------------------------------------------------------------------------------------------
printf("\n\r...BL-Ctrl....");
motorread = 0;
UpdateMotor = 0;
SendMotorData();
while(!UpdateMotor);
motorread = 0; // read the first I2C-Datasets
timer = SetDelay(2000); // sets
for(i=0; i < MAX_MOTORS; i++) // #define MAX_MOTORS 4
{
UpdateMotor = 0;
SendMotorData(); // goto fc.c line 460
while(!UpdateMotor);
if(Mixer.Motor[i][0] > 0) // wait maximum 2 sec to wake up the BL-Ctrls
{
while(!CheckDelay(timer) && !MotorPresent[i])
{
UpdateMotor = 0;
SendMotorData();
while(!UpdateMotor);
}
}
if(MotorPresent[i]) printf("%d ",i+1);
}
for(i=0; i < MAX_MOTORS; i++)
{
if(!MotorPresent[i] && Mixer.Motor[i][0] > 0) // #define MAX_MOTORS 4
{
printf("\n\r\n\r!! missing BL-CTRL: %d !!",i+1);
ServoActive = 1; // just in case the FlightCtrl would be used as camera-stabilizer
}
MotorError[i] = 0;
}
printf("\n\r===================================");
SendMotorData();
 
// ---------------------------------------------------------------------------------------------------------------------------
// check, that the revision in EEPROM fits to actual software
// ---------------------------------------------------------------------------------------------------------------------------
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != EE_DATENREVISION) // #define EEPROM_ADR_VALID 1
{ // #define EE_DATENREVISION 80
DefaultKonstanten1(); // Funktion aus eeprom.c
printf("\n\rInit. EEPROM");
for (unsigned char i=1;i<6;i++) // es gibt 5 verschiedene Settings
{
if(i==2) DefaultKonstanten2(); // Kamera
if(i==3) DefaultKonstanten3(); // Anfänger
if(i>3) DefaultKonstanten2(); // Kamera
// ---------------------------------------------------------------------------------------------------------------------------
// valid Setting ?
// ---------------------------------------------------------------------------------------------------------------------------
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS]) < 12 && eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+1]) < 12 && eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+2]) < 12 && eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+3]) < 12)
{
EE_Parameter.Kanalbelegung[0] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+0]); // Nick // #define EEPROM_ADR_CHANNELS 80
EE_Parameter.Kanalbelegung[1] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+1]); // Roll
EE_Parameter.Kanalbelegung[2] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+2]); // Gas
EE_Parameter.Kanalbelegung[3] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+3]); // Gier
EE_Parameter.Kanalbelegung[4] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+4]); // Poti 1
EE_Parameter.Kanalbelegung[5] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+5]); // Poti 2
EE_Parameter.Kanalbelegung[6] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+6]); // Poti 3
EE_Parameter.Kanalbelegung[7] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+7]); // Poti 4
if(i==1) printf(": Generating Default-Parameter using old Stick Settings");
} else DefaultStickMapping();
WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); // #define STRUCT_PARAM_LAENGE sizeof(EE_Parameter)
// WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], 101));
}
SetActiveParamSetNumber(3); // default Setting ist Beginner
eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], EE_DATENREVISION); // #define EE_DATENREVISION 80
// eeprom_write_byte(&EEPromArray[1], 80); // aufgelöst
} // EOF : check existing revision at EEPROM
FlugMinuten = (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_MINUTES2]) * 256 + (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_MINUTES2+1]);
FlugMinutenGesamt = (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_MINUTES]) * 256 + (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_MINUTES+1]);
if(FlugMinutenGesamt == 0xFFFF || FlugMinuten == 0xFFFF) // Flugminuten sind am überlaufen - zurücksetzen
{
FlugMinuten = 0;
FlugMinutenGesamt = 0;
}
printf("\n\rFlight-time %u min Total:%u min" ,FlugMinuten,FlugMinutenGesamt);
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK]) > 4)
{
printf("\n\rACC noch nicht calibriert !");
}
ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); // #define STRUCT_PARAM_LAENGE sizeof(EE_Parameter)
printf("\n\rUsing parameterset %d", GetActiveParamSetNumber());
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)
{
printf("\n\rKalibrieren des Drucksensors.");
timer = SetDelay(1000); //
SucheLuftruckOffset();
while (!CheckDelay(timer)); // pause 1 sec
printf("OK\n\r");
}
SetNeutral(); // Nullwerte ermitteln und Startwerte festlegen - goto fc.c line 162
ROT_OFF; // redLED off // PORTB |= 0x01;
beeptime = 2000;
ExternControl.Digital[0] = 0x55; // externe Steuerung per serieller Schnittstelle - siehe uart.h
printf("\n\rControl: ");
if (EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) printf("HeadingHold");
else printf("normaler (ACC-Mode)");
LcdClear();
I2CTimeout = 5000; // watchdog set up to 10 sec
WinkelOut.Orientation = 1;
LipoDetection(1); // Lipos should be detected now
printf("\n\r===================================\n\r");
timer = SetDelay(2000);
// -------------------------------- end of main() prelude ---------------------------------------------------------------------
 
 
 
//----------------------------------------------------------------------------------------------------------------------
// forever loop of main program
//----------------------------------------------------------------------------------------------------------------------
while(1)
{
if(UpdateMotor && AdReady) // motor is updated every 2 ms and ADC is already passed
{
UpdateMotor=0; // reset and wait fpr the next 2ms timed trigger from timer0 IR
if(WinkelOut.CalcState) CalMk3Mag(); // In diesem Spezial-Fall soll der Kompass kalibriert werden
else MotorRegler(); // Im Normalfall Sollwerte für die Motoren berechnen = goto fc.c line 541
SendMotorData(); // Sollwerte an die Motorren senden -> fc.c Zeile 465
ROT_OFF; // switch red LED off // PORTB |= 0x01;
if(SenderOkay) SenderOkay--; // ICIE1: Timer/Counter1, Input Capture Interrupt Enable
else TIMSK1 |= _BV(ICIE1); // enable PPM-Input // TIMSK1 – Timer/Counter1 Interrupt Mask Register -> – – ICIE1 – – OCIE1B OCIE1A TOIE1
if(!--I2CTimeout || MissingMotor) // counting down I2CTimeout or motor is missing
{
if(!I2CTimeout)
{
i2c_reset();
I2CTimeout = 5;
DebugOut.Analog[28]++; // I2C-Error
}
if((BeepMuster == 0xffff) && MotorenEin)
{
beeptime = 10000;
BeepMuster = 0x0080;
}
}
else
{
ROT_OFF; // switch red LED off // PORTB |= 0x01;
}
if( 1 && (!UpdateMotor || !MotorenEin))
{
DatenUebertragung();
BearbeiteRxDaten();
}
else BearbeiteRxDaten();
// DatenUebertragung(); // where ist that contained?
// BearbeiteRxDaten(); // where ist that contained?
if(CheckDelay(timer)) // goto timer0.c line 65
{
timer += 20;
if(PcZugriff) PcZugriff--; // flight-CTRL controlled by external PC
else
{
ExternControl.Config = 0;
ExternStickNick = 0;
ExternStickRoll = 0;
ExternStickGier = 0;
if(BeepMuster == 0xffff && SenderOkay == 0)
{
beeptime = 15000;
BeepMuster = 0x0c00;
}
}
if(UBat < BattLowVoltageWarning) // low battery
{
MikroKopterFlags |= FLAG_LOWBAT;
if(BeepMuster == 0xffff)
{
beeptime = 6000;
BeepMuster = 0x0300;
}
}
else MikroKopterFlags &= ~FLAG_LOWBAT;
//SPI_StartTransmitPacket(); // where ist that contained?
SendSPI = 4;
if(!MotorenEin) timer2 = 1450; // round it up to 30 sec
if(++timer2 == 2930) // one minute
{
timer2 = 0;
FlugMinuten++;
FlugMinutenGesamt++;
eeprom_write_byte(&EEPromArray[EEPROM_ADR_MINUTES2],FlugMinuten / 256);
eeprom_write_byte(&EEPromArray[EEPROM_ADR_MINUTES2+1],FlugMinuten % 256);
eeprom_write_byte(&EEPromArray[EEPROM_ADR_MINUTES],FlugMinutenGesamt / 256);
eeprom_write_byte(&EEPromArray[EEPROM_ADR_MINUTES+1],FlugMinutenGesamt % 256);
timer = SetDelay(20); // delay 20 ms
}
}
LED_Update(); // junmps erery 2ms to led.c line 32
} // *** EOF : if(UpdateMotor && AdReady)
// *** EOF: if(!SendSPI) { SPI_TransmitByte(); }
} // End of endlessloop
return (1);
}
// *** EOF: main(void) ************************************************************************************************************
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/main.d
0,0 → 1,2
main.o main.d : main.c main.h old_macros.h _Settings.h printf_P.h timer0.h uart.h \
analog.h eeprom.h twimaster.h menu.h rc.h fc.h led.h
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/main.h
0,0 → 1,113
/*****************************************************************************************************************************
* File: main.h
* Purpose: header of main.c
*****************************************************************************************************************************/
#ifndef _MAIN_H
#define _MAIN_H
 
#define QUADRO
//---------------------------------------------------------------------------------
// Quadro:
// 1
// 4 3
// 2
//---------------------------------------------------------------------------------
 
 
// Hier wird die Quarz Frequenz angegeben = 20 MHz
#if defined (__AVR_ATmega644__)
#define SYSCLK 20000000L //Quarz Frequenz in Hz
#endif
 
#if defined (__AVR_ATmega644P__)
#define SYSCLK 20000000L //Quarz Frequenz in Hz
#endif
 
 
// Definitionen für Hardware und LEDs
#define ROT_OFF {if((PlatinenVersion == 10)||(PlatinenVersion == 20)) PORTB &=~0x01; else PORTB |= 0x01;} // rote LED aus // PORTB0 aus
#define ROT_ON {if((PlatinenVersion == 10)||(PlatinenVersion == 20)) PORTB |= 0x01; else PORTB &=~0x01;} // rote LED an // PORTB0 ein
#define ROT_FLASH PORTB ^= 0x01
 
#define GRN_OFF {if((PlatinenVersion < 12)) PORTB &=~0x02; else PORTB |= 0x02;} // grüne LED aus // PORTB1 aus
#define GRN_ON {if((PlatinenVersion < 12)) PORTB |= 0x02; else PORTB &=~0x02;} // grüne LED an // PORTB1 ein
#define GRN_FLASH PORTB ^= 0x02
 
#define CFG_HOEHENREGELUNG 0x01 // Höhenregler aktiv
#define CFG_HOEHEN_SCHALTER 0x02 // Höhenschalter - wo wird dieser Parameter geschaltet ?
#define CFG_HEADING_HOLD 0x04 // Heading Hold aktiv
#define CFG_KOMPASS_AKTIV 0x08 // Kompass aktiv
#define CFG_KOMPASS_FIX 0x10 // Orientation fix
#define CFG_GPS_AKTIV 0x20 // GPS aktiv
#define CFG_ACHSENKOPPLUNG_AKTIV 0x40 // Axis Decoupling
#define CFG_DREHRATEN_BEGRENZER 0x80 // Rotationraten Limiter
 
#define CFG_LOOP_OBEN 0x01
#define CFG_LOOP_UNTEN 0x02
#define CFG_LOOP_LINKS 0x04
#define CFG_LOOP_RECHTS 0x08
#define CFG_MOTOR_BLINK 0x10
#define CFG_MOTOR_OFF_LED1 0x20
#define CFG_MOTOR_OFF_LED2 0x40
#define CFG_RES4 0x80
 
#define CFG2_HEIGHT_LIMIT 0x01
#define CFG2_VARIO_BEEP 0x02
#define CFG_SENSITIVE_RC 0x04
 
#define J3High PORTD |= 0x20 // Servosausgang PORTPD5
#define J3Low PORTD &= ~0x20
#define J4High PORTD |= 0x10 // Servosausgang PORTPD4
#define J4Low PORTD &= ~0x10
#define J5High PORTD |= 0x08 // Servosausgang PORTPD3
#define J5Low PORTD &= ~0x08
 
 
//------------------------------------------ extern Variables --------------------------------
extern volatile unsigned char SenderOkay;
extern unsigned char BattLowVoltageWarning;
extern unsigned char CosinusNickWinkel, CosinusRollWinkel;
extern unsigned char PlatinenVersion;
extern unsigned char SendVersionToNavi;
extern unsigned int FlugMinuten,FlugMinutenGesamt;
 
//----------------------------------------- declaration of functions --------------------------
 
 
void LipoDetection(unsigned char print);
 
//----------------------------------------------------------------------------------------------
 
#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 "old_macros.h"
 
#include "_Settings.h"
#include "printf_P.h"
#include "timer0.h"
#include "uart.h"
#include "analog.h"
#include "eeprom.h"
#include "twimaster.h"
#include "menu.h"
#include "rc.h"
#include "fc.h"
#include "led.h"
 
 
// #define DEBUG_DISPLAY_INTERVALL 123 // in ms
 
#define DELAY_US(x) ((unsigned int)( (x) * 1e-6 * F_CPU ))
 
#endif
// *** EOF: main.h ***********************************************************************************************************
 
 
 
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/main.lst
0,0 → 1,1825
1 .file "main.c"
2 .arch atmega644
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 .global FlugMinutenGesamt
11 .global FlugMinutenGesamt
12 .section .bss
15 FlugMinutenGesamt:
16 0000 0000 .skip 2,0
17 .global FlugMinuten
18 .global FlugMinuten
21 FlugMinuten:
22 0002 0000 .skip 2,0
23 .global BattLowVoltageWarning
24 .data
27 BattLowVoltageWarning:
28 0000 5E .byte 94
29 .global SendVersionToNavi
32 SendVersionToNavi:
33 0001 01 .byte 1
34 .global PlatinenVersion
37 PlatinenVersion:
38 0002 0D .byte 13
39 .text
41 eeprom_read_byte:
42 /* prologue: frame size=0 */
43 /* prologue end (size=0) */
44 .L2:
45 0000 F999 sbic 63-0x20,1
46 0002 00C0 rjmp .L2
47 0004 92BD out (65)+1-0x20,r25
48 0006 81BD out 65-0x20,r24
49 /* #APP */
50 /* START EEPROM READ CRITICAL SECTION */
51 0008 F89A sbi 31, 0
52 000a 80B5 in r24, 32
53 /* END EEPROM READ CRITICAL SECTION */
54
55 /* #NOAPP */
56 000c 9927 clr r25
57 /* epilogue: frame size=0 */
58 000e 0895 ret
59 /* epilogue end (size=1) */
60 /* function eeprom_read_byte size 16 (15) */
63 eeprom_write_byte:
64 /* prologue: frame size=0 */
65 /* prologue end (size=0) */
66 .L7:
67 0010 F999 sbic 63-0x20,1
68 0012 00C0 rjmp .L7
69 0014 1FBA out 63-0x20,__zero_reg__
70 0016 92BD out (65)+1-0x20,r25
71 0018 81BD out 65-0x20,r24
72 001a 60BD out 64-0x20,r22
73 /* #APP */
74 /* START EEPROM WRITE CRITICAL SECTION */
75 001c 0FB6 in r0, 63
76 001e F894 cli
77 0020 FA9A sbi 31, 2
78 0022 F99A sbi 31, 1
79 0024 0FBE out 63, r0
80 /* END EEPROM WRITE CRITICAL SECTION */
81 /* #NOAPP */
82 /* epilogue: frame size=0 */
83 0026 0895 ret
84 /* epilogue end (size=1) */
85 /* function eeprom_write_byte size 21 (20) */
87 .data
90 stick.25:
91 0003 01 .byte 1
92 .text
93 .global CalMk3Mag
95 CalMk3Mag:
96 /* prologue: frame size=0 */
97 /* prologue end (size=0) */
98 0028 8091 0000 lds r24,EE_Parameter
99 002c E82F mov r30,r24
100 002e FF27 clr r31
101 0030 EE0F add r30,r30
102 0032 FF1F adc r31,r31
103 0034 E050 subi r30,lo8(-(PPM_in))
104 0036 F040 sbci r31,hi8(-(PPM_in))
105 0038 8081 ld r24,Z
106 003a 9181 ldd r25,Z+1
107 003c 8D5E subi r24,lo8(-19)
108 003e 9F4F sbci r25,hi8(-19)
109 0040 04F0 brlt .L11
110 0042 1092 0000 sts stick.25,__zero_reg__
111 .L11:
112 0046 8081 ld r24,Z
113 0048 9181 ldd r25,Z+1
114 004a 8A5B subi r24,lo8(-70)
115 004c 9F4F sbci r25,hi8(-70)
116 004e 04F4 brge .L16
117 0050 8091 0000 lds r24,stick.25
118 0054 8823 tst r24
119 0056 01F0 breq .L17
120 .L16:
121 0058 2091 0000 lds r18,WinkelOut+6
122 005c 00C0 rjmp .L12
123 .L17:
124 005e 81E0 ldi r24,lo8(1)
125 0060 8093 0000 sts stick.25,r24
126 0064 2091 0000 lds r18,WinkelOut+6
127 0068 280F add r18,r24
128 006a 2093 0000 sts WinkelOut+6,r18
129 006e 2530 cpi r18,lo8(5)
130 0070 00F0 brlo .L13
131 0072 88EE ldi r24,lo8(1000)
132 0074 93E0 ldi r25,hi8(1000)
133 0076 9093 0000 sts (beeptime)+1,r25
134 007a 8093 0000 sts beeptime,r24
135 007e 00C0 rjmp .L12
136 .L13:
137 0080 66E9 ldi r22,lo8(150)
138 0082 70E0 ldi r23,hi8(150)
139 0084 822F mov r24,r18
140 0086 0E94 0000 call Piep
141 008a 00C0 rjmp .L16
142 .L12:
143 008c 822F mov r24,r18
144 008e 9927 clr r25
145 0090 9093 0000 sts (DebugOut+40)+1,r25
146 0094 8093 0000 sts DebugOut+40,r24
147 /* epilogue: frame size=0 */
148 0098 0895 ret
149 /* epilogue end (size=1) */
150 /* function CalMk3Mag size 59 (58) */
152 .section .progmem.data,"a",@progbits
155 __c.21:
156 0000 0A0D 4261 .string "\n\rBatt:"
156 7474 3A00
159 __c.22:
160 0008 2033 2043 .string " 3 Cells "
160 656C 6C73
160 2020 00
163 __c.23:
164 0013 2034 2043 .string " 4 Cells "
164 656C 6C73
164 2020 00
167 __c.24:
168 001e 204C 6F77 .string " Low warning level: %d.%d"
168 2077 6172
168 6E69 6E67
168 206C 6576
168 656C 3A20
169 .text
170 .global LipoDetection
172 LipoDetection:
173 /* prologue: frame size=0 */
174 009a 1F93 push r17
175 009c CF93 push r28
176 009e DF93 push r29
177 /* prologue end (size=3) */
178 00a0 182F mov r17,r24
179 00a2 8823 tst r24
180 00a4 01F4 brne .L33
181 00a6 8091 0000 lds r24,EE_Parameter+30
182 00aa 8233 cpi r24,lo8(50)
183 00ac 00F0 brlo .L34
184 .L20:
185 00ae 8093 0000 sts BattLowVoltageWarning,r24
186 .L29:
187 00b2 1123 tst r17
188 00b4 01F4 brne .+2
189 00b6 00C0 rjmp .L18
190 00b8 00C0 rjmp .L35
191 .L33:
192 00ba 80E0 ldi r24,lo8(__c.21)
193 00bc 90E0 ldi r25,hi8(__c.21)
194 00be 9F93 push r25
195 00c0 8F93 push r24
196 00c2 1F92 push __zero_reg__
197 00c4 0E94 0000 call _printf_P
198 00c8 0F90 pop __tmp_reg__
199 00ca 0F90 pop __tmp_reg__
200 00cc 0F90 pop __tmp_reg__
201 00ce 8091 0000 lds r24,EE_Parameter+30
202 00d2 8233 cpi r24,lo8(50)
203 00d4 00F4 brsh .L20
204 .L34:
205 00d6 84EF ldi r24,lo8(500)
206 00d8 91E0 ldi r25,hi8(500)
207 00da 0E94 0000 call SetDelay
208 00de EC01 movw r28,r24
209 00e0 1123 tst r17
210 00e2 01F4 brne .L22
211 .L21:
212 00e4 8091 0000 lds r24,UBat
213 00e8 9091 0000 lds r25,(UBat)+1
214 00ec 8238 cpi r24,130
215 00ee 9105 cpc r25,__zero_reg__
216 00f0 04F0 brlt .+2
217 00f2 00C0 rjmp .L25
218 00f4 8091 0000 lds r24,EE_Parameter+30
219 00f8 23E0 ldi r18,lo8(3)
220 00fa 829F mul r24,r18
221 00fc C001 movw r24,r0
222 00fe 1124 clr r1
223 0100 8093 0000 sts BattLowVoltageWarning,r24
224 0104 1123 tst r17
225 0106 01F0 breq .L29
226 0108 68EC ldi r22,lo8(200)
227 010a 70E0 ldi r23,hi8(200)
228 010c 822F mov r24,r18
229 010e 0E94 0000 call Piep
230 0112 80E0 ldi r24,lo8(__c.22)
231 0114 90E0 ldi r25,hi8(__c.22)
232 .L31:
233 0116 9F93 push r25
234 0118 8F93 push r24
235 011a 1F92 push __zero_reg__
236 011c 0E94 0000 call _printf_P
237 0120 0F90 pop __tmp_reg__
238 0122 0F90 pop __tmp_reg__
239 0124 0F90 pop __tmp_reg__
240 0126 00C0 rjmp .L29
241 .L35:
242 0128 8091 0000 lds r24,BattLowVoltageWarning
243 012c 6AE0 ldi r22,lo8(10)
244 012e 0E94 0000 call __udivmodqi4
245 0132 892F mov r24,r25
246 0134 9927 clr r25
247 0136 9F93 push r25
248 0138 8F93 push r24
249 013a 8091 0000 lds r24,BattLowVoltageWarning
250 013e 0E94 0000 call __udivmodqi4
251 0142 9927 clr r25
252 0144 9F93 push r25
253 0146 8F93 push r24
254 0148 80E0 ldi r24,lo8(__c.24)
255 014a 90E0 ldi r25,hi8(__c.24)
256 014c 9F93 push r25
257 014e 8F93 push r24
258 0150 1F92 push __zero_reg__
259 0152 0E94 0000 call _printf_P
260 0156 8DB7 in r24,__SP_L__
261 0158 9EB7 in r25,__SP_H__
262 015a 0796 adiw r24,7
263 015c 8DBF out __SP_L__,r24
264 015e 00C0 rjmp .L18
265 .L22:
266 0160 CE01 movw r24,r28
267 0162 0E94 0000 call CheckDelay
268 0166 8823 tst r24
269 0168 01F0 breq .+2
270 016a 00C0 rjmp .L21
271 016c CE01 movw r24,r28
272 016e 0E94 0000 call CheckDelay
273 0172 8823 tst r24
274 0174 01F0 breq .L22
275 0176 00C0 rjmp .L21
276 .L25:
277 0178 8091 0000 lds r24,EE_Parameter+30
278 017c 9927 clr r25
279 017e 880F lsl r24
280 0180 991F rol r25
281 0182 880F lsl r24
282 0184 991F rol r25
283 0186 8093 0000 sts BattLowVoltageWarning,r24
284 018a 1123 tst r17
285 018c 01F4 brne .+2
286 018e 00C0 rjmp .L29
287 0190 68EC ldi r22,lo8(200)
288 0192 70E0 ldi r23,hi8(200)
289 0194 84E0 ldi r24,lo8(4)
290 0196 0E94 0000 call Piep
291 019a 80E0 ldi r24,lo8(__c.23)
292 019c 90E0 ldi r25,hi8(__c.23)
293 019e 00C0 rjmp .L31
294 .L18:
295 /* epilogue: frame size=0 */
296 01a0 DF91 pop r29
297 01a2 CF91 pop r28
298 01a4 1F91 pop r17
299 01a6 0895 ret
300 /* epilogue end (size=4) */
301 /* function LipoDetection size 135 (128) */
303 .section .progmem.data
306 __c.0:
307 0038 0A0D 3D3D .string "\n\r==================================="
307 3D3D 3D3D
307 3D3D 3D3D
307 3D3D 3D3D
307 3D3D 3D3D
310 __c.1:
311 005e 0A0D 466C .string "\n\rFlightControl\n\rHardware:%d.%d\n\rSoftware:V%d.%d%c "
311 6967 6874
311 436F 6E74
311 726F 6C0A
311 0D48 6172
314 __c.2:
315 0092 0A0D 6578 .string "\n\rexperimental version"
315 7065 7269
315 6D65 6E74
315 616C 2076
315 6572 7369
318 __c.3:
319 00a9 0A0D 3D3D .string "\n\r==================================="
319 3D3D 3D3D
319 3D3D 3D3D
319 3D3D 3D3D
319 3D3D 3D3D
322 __c.4:
323 00cf 0A0D 6572 .string "\n\rerzeugt default Mixer Table"
323 7A65 7567
323 7420 6465
323 6661 756C
323 7420 4D69
326 __c.5:
327 00ed 0A0D 4D69 .string "\n\rMixer-Config: '%s' (%u Motors)"
327 7865 722D
327 436F 6E66
327 6967 3A20
327 2725 7327
330 __c.6:
331 010e 0A0D 2E2E .string "\n\r...BL-Ctrl...."
331 2E42 4C2D
331 4374 726C
331 2E2E 2E2E
331 00
334 __c.7:
335 011f 2564 2000 .string "%d "
338 __c.8:
339 0123 0A0D 0A0D .string "\n\r\n\r!! missing BL-CTRL: %d !!"
339 2121 206D
339 6973 7369
339 6E67 2042
339 4C2D 4354
342 __c.9:
343 0141 0A0D 3D3D .string "\n\r==================================="
343 3D3D 3D3D
343 3D3D 3D3D
343 3D3D 3D3D
343 3D3D 3D3D
346 __c.10:
347 0167 0A0D 496E .string "\n\rInit. EEPROM"
347 6974 2E20
347 4545 5052
347 4F4D 00
350 __c.11:
351 0176 3A20 4765 .string ": Generating Default-Parameter using old Stick Settings"
351 6E65 7261
351 7469 6E67
351 2044 6566
351 6175 6C74
354 __c.12:
355 01ae 0A0D 466C .string "\n\rFlight-time %u min Total:%u min"
355 6967 6874
355 2D74 696D
355 6520 2575
355 206D 696E
358 __c.13:
359 01d1 0A0D 4143 .string "\n\rACC noch nicht calibriert !"
359 4320 6E6F
359 6368 206E
359 6963 6874
359 2063 616C
362 __c.14:
363 01ef 0A0D 5573 .string "\n\rUsing parameterset %d"
363 696E 6720
363 7061 7261
363 6D65 7465
363 7273 6574
366 __c.15:
367 0207 0A0D 4B61 .string "\n\rKalibrieren des Drucksensors."
367 6C69 6272
367 6965 7265
367 6E20 6465
367 7320 4472
370 __c.16:
371 0227 4F4B 0A0D .string "OK\n\r"
371 00
374 __c.17:
375 022c 0A0D 436F .string "\n\rControl: "
375 6E74 726F
375 6C3A 2000
378 __c.18:
379 0238 4865 6164 .string "HeadingHold"
379 696E 6748
379 6F6C 6400
382 __c.19:
383 0244 6E6F 726D .string "normaler (ACC-Mode)"
383 616C 6572
383 2028 4143
383 432D 4D6F
383 6465 2900
386 __c.20:
387 0258 0A0D 3D3D .string "\n\r===================================\n\r"
387 3D3D 3D3D
387 3D3D 3D3D
387 3D3D 3D3D
387 3D3D 3D3D
388 .data
389 .LC0:
390 0004 5175 6164 .string "Quadro"
390 726F 00
391 000b 00 .string ""
392 .text
393 .global main
395 main:
396 /* prologue: frame size=0 */
397 01a8 C0E0 ldi r28,lo8(__stack - 0)
398 01aa D0E0 ldi r29,hi8(__stack - 0)
399 01ac DEBF out __SP_H__,r29
400 01ae CDBF out __SP_L__,r28
401 /* prologue end (size=4) */
402 01b0 EE24 clr r14
403 01b2 FF24 clr r15
404 01b4 14B8 out 36-0x20,__zero_reg__
405 01b6 15B8 out 37-0x20,__zero_reg__
406 01b8 C7EE ldi r28,lo8(999)
407 01ba D3E0 ldi r29,hi8(999)
408 .L40:
409 01bc E297 sbiw r28,50
410 01be D7FF sbrs r29,7
411 01c0 00C0 rjmp .L40
412 01c2 2DE0 ldi r18,lo8(13)
413 01c4 2093 0000 sts PlatinenVersion,r18
414 01c8 81E8 ldi r24,lo8(-127)
415 01ca 87B9 out 39-0x20,r24
416 01cc 8FEF ldi r24,lo8(-1)
417 01ce 88B9 out 40-0x20,r24
418 01d0 8BE1 ldi r24,lo8(27)
419 01d2 84B9 out 36-0x20,r24
420 01d4 81E0 ldi r24,lo8(1)
421 01d6 85B9 out 37-0x20,r24
422 01d8 8EE3 ldi r24,lo8(62)
423 01da 8AB9 out 42-0x20,r24
424 01dc 87E4 ldi r24,lo8(71)
425 01de 8BB9 out 43-0x20,r24
426 01e0 4698 cbi 40-0x20,6
427 01e2 84B7 in r24,84-0x20
428 01e4 877F andi r24,lo8(-9)
429 01e6 84BF out 84-0x20,r24
430 01e8 8091 6000 lds r24,96
431 01ec 8861 ori r24,lo8(24)
432 01ee 8093 6000 sts 96,r24
433 01f2 1092 6000 sts 96,__zero_reg__
434 01f6 80ED ldi r24,lo8(2000)
435 01f8 97E0 ldi r25,hi8(2000)
436 01fa 9093 0000 sts (beeptime)+1,r25
437 01fe 8093 0000 sts beeptime,r24
438 0202 1092 0000 sts (StickGier)+1,__zero_reg__
439 0206 1092 0000 sts StickGier,__zero_reg__
440 020a 1092 0000 sts (PPM_in+4)+1,__zero_reg__
441 020e 1092 0000 sts PPM_in+4,__zero_reg__
442 0212 1092 0000 sts (StickRoll)+1,__zero_reg__
443 0216 1092 0000 sts StickRoll,__zero_reg__
444 021a 1092 0000 sts (StickNick)+1,__zero_reg__
445 021e 1092 0000 sts StickNick,__zero_reg__
446 0222 8BE0 ldi r24,lo8(1291)
447 0224 95E0 ldi r25,hi8(1291)
448 0226 A0E0 ldi r26,hlo8(1291)
449 0228 B0E0 ldi r27,hhi8(1291)
450 022a 8093 0000 sts GIER_GRAD_FAKTOR,r24
451 022e 9093 0000 sts (GIER_GRAD_FAKTOR)+1,r25
452 0232 A093 0000 sts (GIER_GRAD_FAKTOR)+2,r26
453 0236 B093 0000 sts (GIER_GRAD_FAKTOR)+3,r27
454 023a 289A sbi 37-0x20,0
455 023c 0E94 0000 call Timer_Init
456 0240 0E94 0000 call TIMER2_Init
457 0244 0E94 0000 call UART_Init
458 0248 0E94 0000 call rc_sum_init
459 024c 0E94 0000 call ADC_Init
460 0250 0E94 0000 call i2c_init
461 /* #APP */
462 0254 7894 sei
463 /* #NOAPP */
464 0256 80E0 ldi r24,lo8(__c.0)
465 0258 90E0 ldi r25,hi8(__c.0)
466 025a 9F93 push r25
467 025c 8F93 push r24
468 025e 1F92 push __zero_reg__
469 0260 0E94 0000 call _printf_P
470 0264 0F90 pop __tmp_reg__
471 0266 0F90 pop __tmp_reg__
472 0268 0F90 pop __tmp_reg__
473 026a 87E6 ldi r24,lo8(103)
474 026c 90E0 ldi r25,hi8(103)
475 026e 9F93 push r25
476 0270 8F93 push r24
477 0272 8CE4 ldi r24,lo8(76)
478 0274 90E0 ldi r25,hi8(76)
479 0276 9F93 push r25
480 0278 8F93 push r24
481 027a 1F92 push __zero_reg__
482 027c 1F92 push __zero_reg__
483 027e 8091 0000 lds r24,PlatinenVersion
484 0282 6AE0 ldi r22,lo8(10)
485 0284 0E94 0000 call __udivmodqi4
486 0288 892F mov r24,r25
487 028a 9927 clr r25
488 028c 9F93 push r25
489 028e 8F93 push r24
490 0290 8091 0000 lds r24,PlatinenVersion
491 0294 0E94 0000 call __udivmodqi4
492 0298 9927 clr r25
493 029a 9F93 push r25
494 029c 8F93 push r24
495 029e 80E0 ldi r24,lo8(__c.1)
496 02a0 90E0 ldi r25,hi8(__c.1)
497 02a2 9F93 push r25
498 02a4 8F93 push r24
499 02a6 1F92 push __zero_reg__
500 02a8 0E94 0000 call _printf_P
501 02ac 8DB7 in r24,__SP_L__
502 02ae 9EB7 in r25,__SP_H__
503 02b0 0D96 adiw r24,13
504 02b2 8DBF out __SP_L__,r24
505 02b4 80E0 ldi r24,lo8(__c.2)
506 02b6 90E0 ldi r25,hi8(__c.2)
507 02b8 9F93 push r25
508 02ba 8F93 push r24
509 02bc 1F92 push __zero_reg__
510 02be 0E94 0000 call _printf_P
511 02c2 0F90 pop __tmp_reg__
512 02c4 0F90 pop __tmp_reg__
513 02c6 0F90 pop __tmp_reg__
514 02c8 80E0 ldi r24,lo8(__c.3)
515 02ca 90E0 ldi r25,hi8(__c.3)
516 02cc 9F93 push r25
517 02ce 8F93 push r24
518 02d0 1F92 push __zero_reg__
519 02d2 0E94 0000 call _printf_P
520 02d6 8091 0000 lds r24,PlatinenVersion
521 02da 0F90 pop __tmp_reg__
522 02dc 0F90 pop __tmp_reg__
523 02de 0F90 pop __tmp_reg__
524 02e0 8C30 cpi r24,lo8(12)
525 02e2 00F0 brlo .+2
526 02e4 00C0 rjmp .L44
527 02e6 299A sbi 37-0x20,1
528 .L45:
529 02e8 49E0 ldi r20,lo8(9)
530 02ea 60E0 ldi r22,lo8(EE_Parameter)
531 02ec 70E0 ldi r23,hi8(EE_Parameter)
532 02ee 83E0 ldi r24,lo8(3)
533 02f0 0E94 0000 call ReadParameterSet
534 .L47:
535 02f4 F999 sbic 63-0x20,1
536 02f6 00C0 rjmp .L47
537 02f8 80E0 ldi r24,lo8(EEPromArray+1000)
538 02fa 90E0 ldi r25,hi8(EEPromArray+1000)
539 02fc 92BD out (65)+1-0x20,r25
540 02fe 81BD out 65-0x20,r24
541 /* #APP */
542 /* START EEPROM READ CRITICAL SECTION */
543 0300 F89A sbi 31, 0
544 0302 80B5 in r24, 32
545 /* END EEPROM READ CRITICAL SECTION */
546
547 /* #NOAPP */
548 0304 8130 cpi r24,lo8(1)
549 0306 01F4 brne .L46
550 .L51:
551 0308 F999 sbic 63-0x20,1
552 030a 00C0 rjmp .L51
553 030c 80E0 ldi r24,lo8(EEPromArray+1)
554 030e 90E0 ldi r25,hi8(EEPromArray+1)
555 0310 92BD out (65)+1-0x20,r25
556 0312 81BD out 65-0x20,r24
557 /* #APP */
558 /* START EEPROM READ CRITICAL SECTION */
559 0314 F89A sbi 31, 0
560 0316 80B5 in r24, 32
561 /* END EEPROM READ CRITICAL SECTION */
562
563 /* #NOAPP */
564 0318 8F3F cpi r24,lo8(-1)
565 031a 01F0 breq .L46
566 031c 1092 0000 sts RequiredMotors,__zero_reg__
567 0320 20E0 ldi r18,lo8(pm(eeprom_read_byte))
568 0322 30E0 ldi r19,hi8(pm(eeprom_read_byte))
569 0324 4DE4 ldi r20,lo8(77)
570 0326 50E0 ldi r21,hi8(77)
571 0328 60E0 ldi r22,lo8(EEPromArray+1000)
572 032a 70E0 ldi r23,hi8(EEPromArray+1000)
573 032c 80E0 ldi r24,lo8(Mixer)
574 032e 90E0 ldi r25,hi8(Mixer)
575 0330 0E94 0000 call __eerd_block
576 0334 9091 0000 lds r25,RequiredMotors
577 0338 E0E0 ldi r30,lo8(Mixer+13)
578 033a F0E0 ldi r31,hi8(Mixer+13)
579 033c 2FE0 ldi r18,lo8(15)
580 .L60:
581 033e 8081 ld r24,Z
582 0340 3496 adiw r30,4
583 0342 1816 cp __zero_reg__,r24
584 0344 04F4 brge .L58
585 0346 9F5F subi r25,lo8(-(1))
586 .L58:
587 0348 2150 subi r18,lo8(-(-1))
588 034a 27FF sbrs r18,7
589 034c 00C0 rjmp .L60
590 034e 9093 0000 sts RequiredMotors,r25
591 0352 C0E0 ldi r28,lo8(Mixer+1)
592 0354 D0E0 ldi r29,hi8(Mixer+1)
593 0356 00C0 rjmp .L61
594 .L44:
595 0358 2998 cbi 37-0x20,1
596 035a 00C0 rjmp .L45
597 .L46:
598 035c 80E0 ldi r24,lo8(__c.4)
599 035e 90E0 ldi r25,hi8(__c.4)
600 0360 9F93 push r25
601 0362 8F93 push r24
602 0364 1F92 push __zero_reg__
603 0366 0E94 0000 call _printf_P
604 036a 0F90 pop __tmp_reg__
605 036c 0F90 pop __tmp_reg__
606 036e 0F90 pop __tmp_reg__
607 0370 E0E0 ldi r30,lo8(Mixer)
608 0372 F0E0 ldi r31,hi8(Mixer)
609 0374 8FE0 ldi r24,lo8(15)
610 .L65:
611 0376 1586 std Z+13,__zero_reg__
612 0378 1686 std Z+14,__zero_reg__
613 037a 1786 std Z+15,__zero_reg__
614 037c 108A std Z+16,__zero_reg__
615 037e 8150 subi r24,lo8(-(-1))
616 0380 3496 adiw r30,4
617 0382 87FF sbrs r24,7
618 0384 00C0 rjmp .L65
619 0386 80E4 ldi r24,lo8(64)
620 0388 8093 0000 sts Mixer+13,r24
621 038c 8093 0000 sts Mixer+14,r24
622 0390 1092 0000 sts Mixer+15,__zero_reg__
623 0394 8093 0000 sts Mixer+16,r24
624 0398 8093 0000 sts Mixer+17,r24
625 039c 90EC ldi r25,lo8(-64)
626 039e 9093 0000 sts Mixer+18,r25
627 03a2 1092 0000 sts Mixer+19,__zero_reg__
628 03a6 8093 0000 sts Mixer+20,r24
629 03aa 8093 0000 sts Mixer+21,r24
630 03ae 1092 0000 sts Mixer+22,__zero_reg__
631 03b2 9093 0000 sts Mixer+23,r25
632 03b6 9093 0000 sts Mixer+24,r25
633 03ba 8093 0000 sts Mixer+25,r24
634 03be 1092 0000 sts Mixer+26,__zero_reg__
635 03c2 8093 0000 sts Mixer+27,r24
636 03c6 9093 0000 sts Mixer+28,r25
637 03ca 81E0 ldi r24,lo8(1)
638 03cc 8093 0000 sts Mixer,r24
639 03d0 C0E0 ldi r28,lo8(Mixer+1)
640 03d2 D0E0 ldi r29,hi8(Mixer+1)
641 03d4 8BE0 ldi r24,lo8(11)
642 03d6 E0E0 ldi r30,lo8(.LC0)
643 03d8 F0E0 ldi r31,hi8(.LC0)
644 03da DE01 movw r26,r28
645 03dc 0190 ld __tmp_reg__,Z+
646 03de 0D92 st X+,__tmp_reg__
647 03e0 8A95 dec r24
648 03e2 01F4 brne .-8
649 03e4 20E0 ldi r18,lo8(pm(eeprom_write_byte))
650 03e6 30E0 ldi r19,hi8(pm(eeprom_write_byte))
651 03e8 4DE4 ldi r20,lo8(77)
652 03ea 50E0 ldi r21,hi8(77)
653 03ec BE01 movw r22,r28
654 03ee 6150 subi r22,lo8(-(-1))
655 03f0 7040 sbci r23,hi8(-(-1))
656 03f2 80E0 ldi r24,lo8(EEPromArray+1000)
657 03f4 90E0 ldi r25,hi8(EEPromArray+1000)
658 03f6 0E94 0000 call __eewr_block
659 .L61:
660 03fa 8091 0000 lds r24,RequiredMotors
661 03fe 9927 clr r25
662 0400 9F93 push r25
663 0402 8F93 push r24
664 0404 DF93 push r29
665 0406 CF93 push r28
666 0408 80E0 ldi r24,lo8(__c.5)
667 040a 90E0 ldi r25,hi8(__c.5)
668 040c 9F93 push r25
669 040e 8F93 push r24
670 0410 1F92 push __zero_reg__
671 0412 0E94 0000 call _printf_P
672 0416 EDB7 in r30,__SP_L__
673 0418 FEB7 in r31,__SP_H__
674 041a 3796 adiw r30,7
675 041c EDBF out __SP_L__,r30
676 041e 80E0 ldi r24,lo8(__c.6)
677 0420 90E0 ldi r25,hi8(__c.6)
678 0422 9F93 push r25
679 0424 8F93 push r24
680 0426 1F92 push __zero_reg__
681 0428 0E94 0000 call _printf_P
682 042c 1092 0000 sts motorread,__zero_reg__
683 0430 1092 0000 sts UpdateMotor,__zero_reg__
684 0434 0E94 0000 call SendMotorData
685 0438 0F90 pop __tmp_reg__
686 043a 0F90 pop __tmp_reg__
687 043c 0F90 pop __tmp_reg__
688 .L67:
689 043e 8091 0000 lds r24,UpdateMotor
690 0442 8823 tst r24
691 0444 01F0 breq .L67
692 0446 1092 0000 sts motorread,__zero_reg__
693 044a 80ED ldi r24,lo8(2000)
694 044c 97E0 ldi r25,hi8(2000)
695 044e 0E94 0000 call SetDelay
696 0452 EC01 movw r28,r24
697 0454 CC24 clr r12
698 0456 DD24 clr r13
699 0458 B0E0 ldi r27,lo8(__c.7)
700 045a AB2E mov r10,r27
701 045c B0E0 ldi r27,hi8(__c.7)
702 045e BB2E mov r11,r27
703 .L84:
704 0460 1092 0000 sts UpdateMotor,__zero_reg__
705 0464 0E94 0000 call SendMotorData
706 .L73:
707 0468 8091 0000 lds r24,UpdateMotor
708 046c 8823 tst r24
709 046e 01F0 breq .L73
710 0470 F601 movw r30,r12
711 0472 EE0F lsl r30
712 0474 FF1F rol r31
713 0476 EE0F lsl r30
714 0478 FF1F rol r31
715 047a E050 subi r30,lo8(-(Mixer))
716 047c F040 sbci r31,hi8(-(Mixer))
717 047e 8585 ldd r24,Z+13
718 0480 1816 cp __zero_reg__,r24
719 0482 04F0 brlt .+2
720 0484 00C0 rjmp .L248
721 0486 8601 movw r16,r12
722 0488 0050 subi r16,lo8(-(MotorPresent))
723 048a 1040 sbci r17,hi8(-(MotorPresent))
724 048c CE01 movw r24,r28
725 048e 0E94 0000 call CheckDelay
726 0492 8823 tst r24
727 0494 01F4 brne .L76
728 .L361:
729 0496 D801 movw r26,r16
730 0498 8C91 ld r24,X
731 049a 8823 tst r24
732 049c 01F4 brne .L76
733 049e 8093 0000 sts UpdateMotor,r24
734 04a2 0E94 0000 call SendMotorData
735 .L79:
736 04a6 8091 0000 lds r24,UpdateMotor
737 04aa 8823 tst r24
738 04ac 01F0 breq .L79
739 04ae CE01 movw r24,r28
740 04b0 0E94 0000 call CheckDelay
741 04b4 8823 tst r24
742 04b6 01F0 breq .L361
743 .L76:
744 04b8 F801 movw r30,r16
745 04ba 8081 ld r24,Z
746 04bc 8823 tst r24
747 04be 01F4 brne .L362
748 04c0 8601 movw r16,r12
749 04c2 0F5F subi r16,lo8(-(1))
750 04c4 1F4F sbci r17,hi8(-(1))
751 .L72:
752 04c6 6801 movw r12,r16
753 04c8 0230 cpi r16,2
754 04ca 1105 cpc r17,__zero_reg__
755 04cc 00F0 brlo .L84
756 04ce CC24 clr r12
757 04d0 DD24 clr r13
758 04d2 E0E0 ldi r30,lo8(__c.8)
759 04d4 AE2E mov r10,r30
760 04d6 E0E0 ldi r30,hi8(__c.8)
761 04d8 BE2E mov r11,r30
762 04da C1E0 ldi r28,lo8(1)
763 04dc 00C0 rjmp .L89
764 .L364:
765 04de F601 movw r30,r12
766 04e0 EE0F lsl r30
767 04e2 FF1F rol r31
768 04e4 EE0F lsl r30
769 04e6 FF1F rol r31
770 04e8 E050 subi r30,lo8(-(Mixer))
771 04ea F040 sbci r31,hi8(-(Mixer))
772 04ec 8585 ldd r24,Z+13
773 04ee 1816 cp __zero_reg__,r24
774 04f0 04F4 brge .L251
775 04f2 8601 movw r16,r12
776 04f4 0F5F subi r16,lo8(-(1))
777 04f6 1F4F sbci r17,hi8(-(1))
778 04f8 1F93 push r17
779 04fa 0F93 push r16
780 04fc BF92 push r11
781 04fe AF92 push r10
782 0500 9F93 push r25
783 0502 0E94 0000 call _printf_P
784 0506 C093 0000 sts ServoActive,r28
785 050a 0F90 pop __tmp_reg__
786 050c 0F90 pop __tmp_reg__
787 050e 0F90 pop __tmp_reg__
788 0510 0F90 pop __tmp_reg__
789 0512 0F90 pop __tmp_reg__
790 .L88:
791 0514 80E0 ldi r24,lo8(MotorError)
792 0516 90E0 ldi r25,hi8(MotorError)
793 0518 C80E add r12,r24
794 051a D91E adc r13,r25
795 051c D601 movw r26,r12
796 051e 1C92 st X,__zero_reg__
797 0520 6801 movw r12,r16
798 0522 0230 cpi r16,2
799 0524 1105 cpc r17,__zero_reg__
800 0526 00F4 brsh .L363
801 .L89:
802 0528 F601 movw r30,r12
803 052a E050 subi r30,lo8(-(MotorPresent))
804 052c F040 sbci r31,hi8(-(MotorPresent))
805 052e 9081 ld r25,Z
806 0530 9923 tst r25
807 0532 01F0 breq .L364
808 .L251:
809 0534 8601 movw r16,r12
810 0536 0F5F subi r16,lo8(-(1))
811 0538 1F4F sbci r17,hi8(-(1))
812 053a 00C0 rjmp .L88
813 .L362:
814 053c 8601 movw r16,r12
815 053e 0F5F subi r16,lo8(-(1))
816 0540 1F4F sbci r17,hi8(-(1))
817 0542 1F93 push r17
818 0544 0F93 push r16
819 0546 BF92 push r11
820 0548 AF92 push r10
821 054a 1F92 push __zero_reg__
822 054c 0E94 0000 call _printf_P
823 0550 0F90 pop __tmp_reg__
824 0552 0F90 pop __tmp_reg__
825 0554 0F90 pop __tmp_reg__
826 0556 0F90 pop __tmp_reg__
827 0558 0F90 pop __tmp_reg__
828 055a 00C0 rjmp .L72
829 .L248:
830 055c 8601 movw r16,r12
831 055e 0050 subi r16,lo8(-(MotorPresent))
832 0560 1040 sbci r17,hi8(-(MotorPresent))
833 0562 00C0 rjmp .L76
834 .L363:
835 0564 80E0 ldi r24,lo8(__c.9)
836 0566 90E0 ldi r25,hi8(__c.9)
837 0568 9F93 push r25
838 056a 8F93 push r24
839 056c 1F92 push __zero_reg__
840 056e 0E94 0000 call _printf_P
841 0572 0E94 0000 call SendMotorData
842 0576 0F90 pop __tmp_reg__
843 0578 0F90 pop __tmp_reg__
844 057a 0F90 pop __tmp_reg__
845 .L91:
846 057c F999 sbic 63-0x20,1
847 057e 00C0 rjmp .L91
848 0580 80E0 ldi r24,lo8(EEPromArray+1)
849 0582 90E0 ldi r25,hi8(EEPromArray+1)
850 0584 92BD out (65)+1-0x20,r25
851 0586 81BD out 65-0x20,r24
852 /* #APP */
853 /* START EEPROM READ CRITICAL SECTION */
854 0588 F89A sbi 31, 0
855 058a 80B5 in r24, 32
856 /* END EEPROM READ CRITICAL SECTION */
857
858 /* #NOAPP */
859 058c 8035 cpi r24,lo8(80)
860 058e 01F0 breq .+2
861 0590 00C0 rjmp .L365
862 .L157:
863 0592 F999 sbic 63-0x20,1
864 0594 00C0 rjmp .L157
865 0596 80E0 ldi r24,lo8(EEPromArray+14)
866 0598 90E0 ldi r25,hi8(EEPromArray+14)
867 059a 92BD out (65)+1-0x20,r25
868 059c 81BD out 65-0x20,r24
869 /* #APP */
870 /* START EEPROM READ CRITICAL SECTION */
871 059e F89A sbi 31, 0
872 05a0 80B5 in r24, 32
873 /* END EEPROM READ CRITICAL SECTION */
874
875 /* #NOAPP */
876 05a2 9927 clr r25
877 05a4 382F mov r19,r24
878 05a6 2227 clr r18
879 .L161:
880 05a8 F999 sbic 63-0x20,1
881 05aa 00C0 rjmp .L161
882 05ac 80E0 ldi r24,lo8(EEPromArray+15)
883 05ae 90E0 ldi r25,hi8(EEPromArray+15)
884 05b0 92BD out (65)+1-0x20,r25
885 05b2 81BD out 65-0x20,r24
886 /* #APP */
887 /* START EEPROM READ CRITICAL SECTION */
888 05b4 F89A sbi 31, 0
889 05b6 80B5 in r24, 32
890 /* END EEPROM READ CRITICAL SECTION */
891
892 /* #NOAPP */
893 05b8 B901 movw r22,r18
894 05ba 680F add r22,r24
895 05bc 711D adc r23,__zero_reg__
896 .L165:
897 05be F999 sbic 63-0x20,1
898 05c0 00C0 rjmp .L165
899 05c2 80E0 ldi r24,lo8(EEPromArray+10)
900 05c4 90E0 ldi r25,hi8(EEPromArray+10)
901 05c6 92BD out (65)+1-0x20,r25
902 05c8 81BD out 65-0x20,r24
903 /* #APP */
904 /* START EEPROM READ CRITICAL SECTION */
905 05ca F89A sbi 31, 0
906 05cc 80B5 in r24, 32
907 /* END EEPROM READ CRITICAL SECTION */
908
909 /* #NOAPP */
910 05ce 9927 clr r25
911 05d0 382F mov r19,r24
912 05d2 2227 clr r18
913 .L169:
914 05d4 8FB3 in r24,63-0x20
915 05d6 9927 clr r25
916 05d8 AC01 movw r20,r24
917 05da 4270 andi r20,lo8(2)
918 05dc 5070 andi r21,hi8(2)
919 05de 81FD sbrc r24,1
920 05e0 00C0 rjmp .L169
921 05e2 80E0 ldi r24,lo8(EEPromArray+11)
922 05e4 90E0 ldi r25,hi8(EEPromArray+11)
923 05e6 92BD out (65)+1-0x20,r25
924 05e8 81BD out 65-0x20,r24
925 /* #APP */
926 /* START EEPROM READ CRITICAL SECTION */
927 05ea F89A sbi 31, 0
928 05ec 80B5 in r24, 32
929 /* END EEPROM READ CRITICAL SECTION */
930
931 /* #NOAPP */
932 05ee 280F add r18,r24
933 05f0 311D adc r19,__zero_reg__
934 05f2 C901 movw r24,r18
935 05f4 2F5F subi r18,lo8(-1)
936 05f6 3F4F sbci r19,hi8(-1)
937 05f8 01F4 brne .+2
938 05fa 00C0 rjmp .L174
939 05fc 7093 0000 sts (FlugMinuten)+1,r23
940 0600 6093 0000 sts FlugMinuten,r22
941 0604 9B01 movw r18,r22
942 0606 6F5F subi r22,lo8(-1)
943 0608 7F4F sbci r23,hi8(-1)
944 060a 01F4 brne .+2
945 060c 00C0 rjmp .L174
946 060e 9093 0000 sts (FlugMinutenGesamt)+1,r25
947 0612 8093 0000 sts FlugMinutenGesamt,r24
948 .L173:
949 0616 8091 0000 lds r24,FlugMinutenGesamt
950 061a 9091 0000 lds r25,(FlugMinutenGesamt)+1
951 061e 9F93 push r25
952 0620 8F93 push r24
953 0622 3F93 push r19
954 0624 2F93 push r18
955 0626 80E0 ldi r24,lo8(__c.12)
956 0628 90E0 ldi r25,hi8(__c.12)
957 062a 9F93 push r25
958 062c 8F93 push r24
959 062e 1F92 push __zero_reg__
960 0630 0E94 0000 call _printf_P
961 0634 8DB7 in r24,__SP_L__
962 0636 9EB7 in r25,__SP_H__
963 0638 0796 adiw r24,7
964 063a 8DBF out __SP_L__,r24
965 .L176:
966 063c F999 sbic 63-0x20,1
967 063e 00C0 rjmp .L176
968 0640 80E0 ldi r24,lo8(EEPromArray+4)
969 0642 90E0 ldi r25,hi8(EEPromArray+4)
970 0644 92BD out (65)+1-0x20,r25
971 0646 81BD out 65-0x20,r24
972 /* #APP */
973 /* START EEPROM READ CRITICAL SECTION */
974 0648 F89A sbi 31, 0
975 064a 80B5 in r24, 32
976 /* END EEPROM READ CRITICAL SECTION */
977
978 /* #NOAPP */
979 064c 8530 cpi r24,lo8(5)
980 064e 00F0 brlo .+2
981 0650 00C0 rjmp .L366
982 .L175:
983 0652 0E94 0000 call GetActiveParamSetNumber
984 0656 45E6 ldi r20,lo8(101)
985 0658 60E0 ldi r22,lo8(EE_Parameter)
986 065a 70E0 ldi r23,hi8(EE_Parameter)
987 065c 0E94 0000 call ReadParameterSet
988 0660 0E94 0000 call GetActiveParamSetNumber
989 0664 9927 clr r25
990 0666 9F93 push r25
991 0668 8F93 push r24
992 066a 80E0 ldi r24,lo8(__c.14)
993 066c 90E0 ldi r25,hi8(__c.14)
994 066e 9F93 push r25
995 0670 8F93 push r24
996 0672 1F92 push __zero_reg__
997 0674 0E94 0000 call _printf_P
998 0678 8091 0000 lds r24,EE_Parameter+8
999 067c 0F90 pop __tmp_reg__
1000 067e 0F90 pop __tmp_reg__
1001 0680 0F90 pop __tmp_reg__
1002 0682 0F90 pop __tmp_reg__
1003 0684 0F90 pop __tmp_reg__
1004 0686 80FD sbrc r24,0
1005 0688 00C0 rjmp .L367
1006 .L180:
1007 068a 0E94 0000 call SetNeutral
1008 068e 8091 0000 lds r24,PlatinenVersion
1009 0692 8A30 cpi r24,lo8(10)
1010 0694 01F4 brne .+2
1011 0696 00C0 rjmp .L185
1012 0698 8431 cpi r24,lo8(20)
1013 069a 01F4 brne .+2
1014 069c 00C0 rjmp .L185
1015 069e 289A sbi 37-0x20,0
1016 .L186:
1017 06a0 80ED ldi r24,lo8(2000)
1018 06a2 97E0 ldi r25,hi8(2000)
1019 06a4 9093 0000 sts (beeptime)+1,r25
1020 06a8 8093 0000 sts beeptime,r24
1021 06ac 85E5 ldi r24,lo8(85)
1022 06ae 8093 0000 sts ExternControl,r24
1023 06b2 80E0 ldi r24,lo8(__c.17)
1024 06b4 90E0 ldi r25,hi8(__c.17)
1025 06b6 9F93 push r25
1026 06b8 8F93 push r24
1027 06ba 1F92 push __zero_reg__
1028 06bc 0E94 0000 call _printf_P
1029 06c0 8091 0000 lds r24,EE_Parameter+8
1030 06c4 0F90 pop __tmp_reg__
1031 06c6 0F90 pop __tmp_reg__
1032 06c8 0F90 pop __tmp_reg__
1033 06ca 82FF sbrs r24,2
1034 06cc 00C0 rjmp .L187
1035 06ce 80E0 ldi r24,lo8(__c.18)
1036 06d0 90E0 ldi r25,hi8(__c.18)
1037 .L359:
1038 06d2 9F93 push r25
1039 06d4 8F93 push r24
1040 06d6 1F92 push __zero_reg__
1041 06d8 0E94 0000 call _printf_P
1042 06dc 0F90 pop __tmp_reg__
1043 06de 0F90 pop __tmp_reg__
1044 06e0 0F90 pop __tmp_reg__
1045 06e2 0E94 0000 call LcdClear
1046 06e6 88E8 ldi r24,lo8(5000)
1047 06e8 93E1 ldi r25,hi8(5000)
1048 06ea 9093 0000 sts (I2CTimeout)+1,r25
1049 06ee 8093 0000 sts I2CTimeout,r24
1050 06f2 81E0 ldi r24,lo8(1)
1051 06f4 8093 0000 sts WinkelOut+7,r24
1052 06f8 0E94 0000 call LipoDetection
1053 06fc 80E0 ldi r24,lo8(__c.20)
1054 06fe 90E0 ldi r25,hi8(__c.20)
1055 0700 9F93 push r25
1056 0702 8F93 push r24
1057 0704 1F92 push __zero_reg__
1058 0706 0E94 0000 call _printf_P
1059 070a 80ED ldi r24,lo8(2000)
1060 070c 97E0 ldi r25,hi8(2000)
1061 070e 0E94 0000 call SetDelay
1062 0712 EC01 movw r28,r24
1063 0714 0F90 pop __tmp_reg__
1064 0716 0F90 pop __tmp_reg__
1065 0718 0F90 pop __tmp_reg__
1066 .L360:
1067 071a 8091 0000 lds r24,UpdateMotor
1068 071e 8823 tst r24
1069 0720 01F0 breq .L360
1070 0722 8091 0000 lds r24,AdReady
1071 0726 8823 tst r24
1072 0728 01F0 breq .L360
1073 072a 1092 0000 sts UpdateMotor,__zero_reg__
1074 072e 8091 0000 lds r24,WinkelOut+6
1075 0732 8823 tst r24
1076 0734 01F4 brne .+2
1077 0736 00C0 rjmp .L192
1078 0738 0E94 0000 call CalMk3Mag
1079 073c 0E94 0000 call SendMotorData
1080 0740 2091 0000 lds r18,PlatinenVersion
1081 0744 2A30 cpi r18,lo8(10)
1082 0746 01F4 brne .+2
1083 0748 00C0 rjmp .L195
1084 .L372:
1085 074a 2431 cpi r18,lo8(20)
1086 074c 01F4 brne .+2
1087 074e 00C0 rjmp .L195
1088 0750 289A sbi 37-0x20,0
1089 .L196:
1090 0752 8091 0000 lds r24,SenderOkay
1091 0756 8823 tst r24
1092 0758 01F4 brne .+2
1093 075a 00C0 rjmp .L197
1094 075c 8091 0000 lds r24,SenderOkay
1095 0760 8150 subi r24,lo8(-(-1))
1096 0762 8093 0000 sts SenderOkay,r24
1097 .L198:
1098 0766 8091 0000 lds r24,I2CTimeout
1099 076a 9091 0000 lds r25,(I2CTimeout)+1
1100 076e 0197 sbiw r24,1
1101 0770 9093 0000 sts (I2CTimeout)+1,r25
1102 0774 8093 0000 sts I2CTimeout,r24
1103 0778 8091 0000 lds r24,I2CTimeout
1104 077c 9091 0000 lds r25,(I2CTimeout)+1
1105 0780 892B or r24,r25
1106 0782 01F0 breq .L200
1107 0784 8091 0000 lds r24,MissingMotor
1108 0788 8823 tst r24
1109 078a 01F4 brne .+2
1110 078c 00C0 rjmp .L199
1111 .L200:
1112 078e 8091 0000 lds r24,I2CTimeout
1113 0792 9091 0000 lds r25,(I2CTimeout)+1
1114 0796 892B or r24,r25
1115 0798 01F4 brne .+2
1116 079a 00C0 rjmp .L368
1117 079c 8091 0000 lds r24,BeepMuster
1118 07a0 9091 0000 lds r25,(BeepMuster)+1
1119 07a4 8F5F subi r24,lo8(-1)
1120 07a6 9F4F sbci r25,hi8(-1)
1121 07a8 01F4 brne .+2
1122 07aa 00C0 rjmp .L369
1123 .L203:
1124 07ac 8091 0000 lds r24,UpdateMotor
1125 07b0 8823 tst r24
1126 07b2 01F0 breq .L208
1127 07b4 8091 0000 lds r24,MotorenEin
1128 07b8 8823 tst r24
1129 07ba 01F4 brne .L207
1130 .L208:
1131 07bc 0E94 0000 call DatenUebertragung
1132 .L207:
1133 07c0 0E94 0000 call BearbeiteRxDaten
1134 07c4 CE01 movw r24,r28
1135 07c6 0E94 0000 call CheckDelay
1136 07ca 8823 tst r24
1137 07cc 01F0 breq .L210
1138 07ce 6496 adiw r28,20
1139 07d0 8091 0000 lds r24,PcZugriff
1140 07d4 8823 tst r24
1141 07d6 01F4 brne .+2
1142 07d8 00C0 rjmp .L211
1143 07da 8150 subi r24,lo8(-(-1))
1144 07dc 8093 0000 sts PcZugriff,r24
1145 .L212:
1146 07e0 8091 0000 lds r24,BattLowVoltageWarning
1147 07e4 282F mov r18,r24
1148 07e6 3327 clr r19
1149 07e8 8091 0000 lds r24,UBat
1150 07ec 9091 0000 lds r25,(UBat)+1
1151 07f0 8217 cp r24,r18
1152 07f2 9307 cpc r25,r19
1153 07f4 04F0 brlt .+2
1154 07f6 00C0 rjmp .L214
1155 07f8 8091 0000 lds r24,MikroKopterFlags
1156 07fc 8062 ori r24,lo8(32)
1157 07fe 8093 0000 sts MikroKopterFlags,r24
1158 0802 8091 0000 lds r24,BeepMuster
1159 0806 9091 0000 lds r25,(BeepMuster)+1
1160 080a 8F5F subi r24,lo8(-1)
1161 080c 9F4F sbci r25,hi8(-1)
1162 080e 01F4 brne .+2
1163 0810 00C0 rjmp .L370
1164 .L216:
1165 0812 84E0 ldi r24,lo8(4)
1166 0814 8093 0000 sts SendSPI,r24
1167 0818 8091 0000 lds r24,MotorenEin
1168 081c 8823 tst r24
1169 081e 01F4 brne .L217
1170 0820 4AEA ldi r20,lo8(1450)
1171 0822 E42E mov r14,r20
1172 0824 45E0 ldi r20,hi8(1450)
1173 0826 F42E mov r15,r20
1174 .L217:
1175 0828 0894 sec
1176 082a E11C adc r14,__zero_reg__
1177 082c F11C adc r15,__zero_reg__
1178 082e F2E7 ldi r31,lo8(2930)
1179 0830 EF16 cp r14,r31
1180 0832 FBE0 ldi r31,hi8(2930)
1181 0834 FF06 cpc r15,r31
1182 0836 01F0 breq .L371
1183 .L210:
1184 0838 0E94 0000 call LED_Update
1185 083c 00C0 rjmp .L360
1186 .L371:
1187 083e EE24 clr r14
1188 0840 FF24 clr r15
1189 0842 8091 0000 lds r24,FlugMinuten
1190 0846 9091 0000 lds r25,(FlugMinuten)+1
1191 084a 0196 adiw r24,1
1192 084c 9093 0000 sts (FlugMinuten)+1,r25
1193 0850 8093 0000 sts FlugMinuten,r24
1194 0854 2091 0000 lds r18,FlugMinutenGesamt
1195 0858 3091 0000 lds r19,(FlugMinutenGesamt)+1
1196 085c 2F5F subi r18,lo8(-(1))
1197 085e 3F4F sbci r19,hi8(-(1))
1198 0860 3093 0000 sts (FlugMinutenGesamt)+1,r19
1199 0864 2093 0000 sts FlugMinutenGesamt,r18
1200 0868 892F mov r24,r25
1201 086a 9927 clr r25
1202 086c 282F mov r18,r24
1203 .L219:
1204 086e F999 sbic 63-0x20,1
1205 0870 00C0 rjmp .L219
1206 0872 1FBA out 63-0x20,__zero_reg__
1207 0874 80E0 ldi r24,lo8(EEPromArray+14)
1208 0876 90E0 ldi r25,hi8(EEPromArray+14)
1209 0878 92BD out (65)+1-0x20,r25
1210 087a 81BD out 65-0x20,r24
1211 087c 20BD out 64-0x20,r18
1212 /* #APP */
1213 /* START EEPROM WRITE CRITICAL SECTION */
1214 087e 0FB6 in r0, 63
1215 0880 F894 cli
1216 0882 FA9A sbi 31, 2
1217 0884 F99A sbi 31, 1
1218 0886 0FBE out 63, r0
1219 /* END EEPROM WRITE CRITICAL SECTION */
1220 /* #NOAPP */
1221 0888 2091 0000 lds r18,FlugMinuten
1222 .L223:
1223 088c F999 sbic 63-0x20,1
1224 088e 00C0 rjmp .L223
1225 0890 1FBA out 63-0x20,__zero_reg__
1226 0892 80E0 ldi r24,lo8(EEPromArray+15)
1227 0894 90E0 ldi r25,hi8(EEPromArray+15)
1228 0896 92BD out (65)+1-0x20,r25
1229 0898 81BD out 65-0x20,r24
1230 089a 20BD out 64-0x20,r18
1231 /* #APP */
1232 /* START EEPROM WRITE CRITICAL SECTION */
1233 089c 0FB6 in r0, 63
1234 089e F894 cli
1235 08a0 FA9A sbi 31, 2
1236 08a2 F99A sbi 31, 1
1237 08a4 0FBE out 63, r0
1238 /* END EEPROM WRITE CRITICAL SECTION */
1239 /* #NOAPP */
1240 08a6 2091 0000 lds r18,FlugMinutenGesamt
1241 08aa 3091 0000 lds r19,(FlugMinutenGesamt)+1
1242 08ae 4091 0000 lds r20,FlugMinutenGesamt+1
1243 .L227:
1244 08b2 F999 sbic 63-0x20,1
1245 08b4 00C0 rjmp .L227
1246 08b6 1FBA out 63-0x20,__zero_reg__
1247 08b8 80E0 ldi r24,lo8(EEPromArray+10)
1248 08ba 90E0 ldi r25,hi8(EEPromArray+10)
1249 08bc 92BD out (65)+1-0x20,r25
1250 08be 81BD out 65-0x20,r24
1251 08c0 40BD out 64-0x20,r20
1252 /* #APP */
1253 /* START EEPROM WRITE CRITICAL SECTION */
1254 08c2 0FB6 in r0, 63
1255 08c4 F894 cli
1256 08c6 FA9A sbi 31, 2
1257 08c8 F99A sbi 31, 1
1258 08ca 0FBE out 63, r0
1259 /* END EEPROM WRITE CRITICAL SECTION */
1260 /* #NOAPP */
1261 .L231:
1262 08cc F999 sbic 63-0x20,1
1263 08ce 00C0 rjmp .L231
1264 08d0 1FBA out 63-0x20,__zero_reg__
1265 08d2 80E0 ldi r24,lo8(EEPromArray+11)
1266 08d4 90E0 ldi r25,hi8(EEPromArray+11)
1267 08d6 92BD out (65)+1-0x20,r25
1268 08d8 81BD out 65-0x20,r24
1269 08da 20BD out 64-0x20,r18
1270 /* #APP */
1271 /* START EEPROM WRITE CRITICAL SECTION */
1272 08dc 0FB6 in r0, 63
1273 08de F894 cli
1274 08e0 FA9A sbi 31, 2
1275 08e2 F99A sbi 31, 1
1276 08e4 0FBE out 63, r0
1277 /* END EEPROM WRITE CRITICAL SECTION */
1278 /* #NOAPP */
1279 08e6 84E1 ldi r24,lo8(20)
1280 08e8 90E0 ldi r25,hi8(20)
1281 08ea 0E94 0000 call SetDelay
1282 08ee EC01 movw r28,r24
1283 08f0 0E94 0000 call LED_Update
1284 08f4 00C0 rjmp .L360
1285 .L197:
1286 08f6 8091 6F00 lds r24,111
1287 08fa 8062 ori r24,lo8(32)
1288 08fc 8093 6F00 sts 111,r24
1289 0900 00C0 rjmp .L198
1290 .L192:
1291 0902 0E94 0000 call MotorRegler
1292 0906 0E94 0000 call SendMotorData
1293 090a 2091 0000 lds r18,PlatinenVersion
1294 090e 2A30 cpi r18,lo8(10)
1295 0910 01F0 breq .+2
1296 0912 00C0 rjmp .L372
1297 .L195:
1298 0914 2898 cbi 37-0x20,0
1299 0916 00C0 rjmp .L196
1300 .L214:
1301 0918 8091 0000 lds r24,MikroKopterFlags
1302 091c 8F7D andi r24,lo8(-33)
1303 091e 8093 0000 sts MikroKopterFlags,r24
1304 0922 00C0 rjmp .L216
1305 .L211:
1306 0924 8093 0000 sts ExternControl+10,r24
1307 0928 1092 0000 sts (ExternStickNick)+1,__zero_reg__
1308 092c 1092 0000 sts ExternStickNick,__zero_reg__
1309 0930 1092 0000 sts (ExternStickRoll)+1,__zero_reg__
1310 0934 1092 0000 sts ExternStickRoll,__zero_reg__
1311 0938 1092 0000 sts (ExternStickGier)+1,__zero_reg__
1312 093c 1092 0000 sts ExternStickGier,__zero_reg__
1313 0940 8091 0000 lds r24,BeepMuster
1314 0944 9091 0000 lds r25,(BeepMuster)+1
1315 0948 8F5F subi r24,lo8(-1)
1316 094a 9F4F sbci r25,hi8(-1)
1317 094c 01F0 breq .+2
1318 094e 00C0 rjmp .L212
1319 0950 8091 0000 lds r24,SenderOkay
1320 0954 8823 tst r24
1321 0956 01F0 breq .+2
1322 0958 00C0 rjmp .L212
1323 095a 88E9 ldi r24,lo8(15000)
1324 095c 9AE3 ldi r25,hi8(15000)
1325 095e 9093 0000 sts (beeptime)+1,r25
1326 0962 8093 0000 sts beeptime,r24
1327 0966 80E0 ldi r24,lo8(3072)
1328 0968 9CE0 ldi r25,hi8(3072)
1329 096a 9093 0000 sts (BeepMuster)+1,r25
1330 096e 8093 0000 sts BeepMuster,r24
1331 0972 00C0 rjmp .L212
1332 .L199:
1333 0974 2A30 cpi r18,lo8(10)
1334 0976 01F0 breq .L205
1335 0978 2431 cpi r18,lo8(20)
1336 097a 01F0 breq .L205
1337 097c 289A sbi 37-0x20,0
1338 097e 00C0 rjmp .L203
1339 .L368:
1340 0980 0E94 0000 call i2c_reset
1341 0984 85E0 ldi r24,lo8(5)
1342 0986 90E0 ldi r25,hi8(5)
1343 0988 9093 0000 sts (I2CTimeout)+1,r25
1344 098c 8093 0000 sts I2CTimeout,r24
1345 0990 8091 0000 lds r24,DebugOut+58
1346 0994 9091 0000 lds r25,(DebugOut+58)+1
1347 0998 0196 adiw r24,1
1348 099a 9093 0000 sts (DebugOut+58)+1,r25
1349 099e 8093 0000 sts DebugOut+58,r24
1350 09a2 8091 0000 lds r24,BeepMuster
1351 09a6 9091 0000 lds r25,(BeepMuster)+1
1352 09aa 8F5F subi r24,lo8(-1)
1353 09ac 9F4F sbci r25,hi8(-1)
1354 09ae 01F0 breq .+2
1355 09b0 00C0 rjmp .L203
1356 .L369:
1357 09b2 8091 0000 lds r24,MotorenEin
1358 09b6 8823 tst r24
1359 09b8 01F4 brne .+2
1360 09ba 00C0 rjmp .L203
1361 09bc 80E1 ldi r24,lo8(10000)
1362 09be 97E2 ldi r25,hi8(10000)
1363 09c0 9093 0000 sts (beeptime)+1,r25
1364 09c4 8093 0000 sts beeptime,r24
1365 09c8 80E8 ldi r24,lo8(128)
1366 09ca 90E0 ldi r25,hi8(128)
1367 09cc 9093 0000 sts (BeepMuster)+1,r25
1368 09d0 8093 0000 sts BeepMuster,r24
1369 09d4 00C0 rjmp .L203
1370 .L205:
1371 09d6 2898 cbi 37-0x20,0
1372 09d8 00C0 rjmp .L203
1373 .L370:
1374 09da 80E7 ldi r24,lo8(6000)
1375 09dc 97E1 ldi r25,hi8(6000)
1376 09de 9093 0000 sts (beeptime)+1,r25
1377 09e2 8093 0000 sts beeptime,r24
1378 09e6 80E0 ldi r24,lo8(768)
1379 09e8 93E0 ldi r25,hi8(768)
1380 09ea 9093 0000 sts (BeepMuster)+1,r25
1381 09ee 8093 0000 sts BeepMuster,r24
1382 09f2 00C0 rjmp .L216
1383 .L365:
1384 09f4 0E94 0000 call DefaultKonstanten1
1385 09f8 80E0 ldi r24,lo8(__c.10)
1386 09fa 90E0 ldi r25,hi8(__c.10)
1387 09fc 9F93 push r25
1388 09fe 8F93 push r24
1389 0a00 1F92 push __zero_reg__
1390 0a02 0E94 0000 call _printf_P
1391 0a06 C1E0 ldi r28,lo8(1)
1392 0a08 0F90 pop __tmp_reg__
1393 0a0a 0F90 pop __tmp_reg__
1394 0a0c 0F90 pop __tmp_reg__
1395 0a0e 00E0 ldi r16,lo8(__c.11)
1396 0a10 10E0 ldi r17,hi8(__c.11)
1397 .L152:
1398 0a12 C230 cpi r28,lo8(2)
1399 0a14 01F4 brne .+2
1400 0a16 00C0 rjmp .L358
1401 0a18 C330 cpi r28,lo8(3)
1402 0a1a 01F4 brne .+2
1403 0a1c 00C0 rjmp .L373
1404 0a1e C430 cpi r28,lo8(4)
1405 0a20 00F0 brlo .+2
1406 0a22 00C0 rjmp .L358
1407 .L102:
1408 0a24 F999 sbic 63-0x20,1
1409 0a26 00C0 rjmp .L102
1410 0a28 80E0 ldi r24,lo8(EEPromArray+80)
1411 0a2a 90E0 ldi r25,hi8(EEPromArray+80)
1412 0a2c 92BD out (65)+1-0x20,r25
1413 0a2e 81BD out 65-0x20,r24
1414 /* #APP */
1415 /* START EEPROM READ CRITICAL SECTION */
1416 0a30 F89A sbi 31, 0
1417 0a32 80B5 in r24, 32
1418 /* END EEPROM READ CRITICAL SECTION */
1419
1420 /* #NOAPP */
1421 0a34 8C30 cpi r24,lo8(12)
1422 0a36 00F0 brlo .+2
1423 0a38 00C0 rjmp .L101
1424 .L106:
1425 0a3a F999 sbic 63-0x20,1
1426 0a3c 00C0 rjmp .L106
1427 0a3e 80E0 ldi r24,lo8(EEPromArray+81)
1428 0a40 90E0 ldi r25,hi8(EEPromArray+81)
1429 0a42 92BD out (65)+1-0x20,r25
1430 0a44 81BD out 65-0x20,r24
1431 /* #APP */
1432 /* START EEPROM READ CRITICAL SECTION */
1433 0a46 F89A sbi 31, 0
1434 0a48 80B5 in r24, 32
1435 /* END EEPROM READ CRITICAL SECTION */
1436
1437 /* #NOAPP */
1438 0a4a 8C30 cpi r24,lo8(12)
1439 0a4c 00F0 brlo .+2
1440 0a4e 00C0 rjmp .L101
1441 .L110:
1442 0a50 F999 sbic 63-0x20,1
1443 0a52 00C0 rjmp .L110
1444 0a54 80E0 ldi r24,lo8(EEPromArray+82)
1445 0a56 90E0 ldi r25,hi8(EEPromArray+82)
1446 0a58 92BD out (65)+1-0x20,r25
1447 0a5a 81BD out 65-0x20,r24
1448 /* #APP */
1449 /* START EEPROM READ CRITICAL SECTION */
1450 0a5c F89A sbi 31, 0
1451 0a5e 80B5 in r24, 32
1452 /* END EEPROM READ CRITICAL SECTION */
1453
1454 /* #NOAPP */
1455 0a60 8C30 cpi r24,lo8(12)
1456 0a62 00F0 brlo .+2
1457 0a64 00C0 rjmp .L101
1458 .L114:
1459 0a66 F999 sbic 63-0x20,1
1460 0a68 00C0 rjmp .L114
1461 0a6a 80E0 ldi r24,lo8(EEPromArray+83)
1462 0a6c 90E0 ldi r25,hi8(EEPromArray+83)
1463 0a6e 92BD out (65)+1-0x20,r25
1464 0a70 81BD out 65-0x20,r24
1465 /* #APP */
1466 /* START EEPROM READ CRITICAL SECTION */
1467 0a72 F89A sbi 31, 0
1468 0a74 80B5 in r24, 32
1469 /* END EEPROM READ CRITICAL SECTION */
1470
1471 /* #NOAPP */
1472 0a76 8C30 cpi r24,lo8(12)
1473 0a78 00F0 brlo .+2
1474 0a7a 00C0 rjmp .L101
1475 .L118:
1476 0a7c F999 sbic 63-0x20,1
1477 0a7e 00C0 rjmp .L118
1478 0a80 80E0 ldi r24,lo8(EEPromArray+80)
1479 0a82 90E0 ldi r25,hi8(EEPromArray+80)
1480 0a84 92BD out (65)+1-0x20,r25
1481 0a86 81BD out 65-0x20,r24
1482 /* #APP */
1483 /* START EEPROM READ CRITICAL SECTION */
1484 0a88 F89A sbi 31, 0
1485 0a8a 80B5 in r24, 32
1486 /* END EEPROM READ CRITICAL SECTION */
1487
1488 /* #NOAPP */
1489 0a8c 8093 0000 sts EE_Parameter,r24
1490 .L122:
1491 0a90 F999 sbic 63-0x20,1
1492 0a92 00C0 rjmp .L122
1493 0a94 80E0 ldi r24,lo8(EEPromArray+81)
1494 0a96 90E0 ldi r25,hi8(EEPromArray+81)
1495 0a98 92BD out (65)+1-0x20,r25
1496 0a9a 81BD out 65-0x20,r24
1497 /* #APP */
1498 /* START EEPROM READ CRITICAL SECTION */
1499 0a9c F89A sbi 31, 0
1500 0a9e 80B5 in r24, 32
1501 /* END EEPROM READ CRITICAL SECTION */
1502
1503 /* #NOAPP */
1504 0aa0 8093 0000 sts EE_Parameter+1,r24
1505 .L126:
1506 0aa4 F999 sbic 63-0x20,1
1507 0aa6 00C0 rjmp .L126
1508 0aa8 80E0 ldi r24,lo8(EEPromArray+82)
1509 0aaa 90E0 ldi r25,hi8(EEPromArray+82)
1510 0aac 92BD out (65)+1-0x20,r25
1511 0aae 81BD out 65-0x20,r24
1512 /* #APP */
1513 /* START EEPROM READ CRITICAL SECTION */
1514 0ab0 F89A sbi 31, 0
1515 0ab2 80B5 in r24, 32
1516 /* END EEPROM READ CRITICAL SECTION */
1517
1518 /* #NOAPP */
1519 0ab4 8093 0000 sts EE_Parameter+2,r24
1520 .L130:
1521 0ab8 F999 sbic 63-0x20,1
1522 0aba 00C0 rjmp .L130
1523 0abc 80E0 ldi r24,lo8(EEPromArray+83)
1524 0abe 90E0 ldi r25,hi8(EEPromArray+83)
1525 0ac0 92BD out (65)+1-0x20,r25
1526 0ac2 81BD out 65-0x20,r24
1527 /* #APP */
1528 /* START EEPROM READ CRITICAL SECTION */
1529 0ac4 F89A sbi 31, 0
1530 0ac6 80B5 in r24, 32
1531 /* END EEPROM READ CRITICAL SECTION */
1532
1533 /* #NOAPP */
1534 0ac8 8093 0000 sts EE_Parameter+3,r24
1535 .L134:
1536 0acc F999 sbic 63-0x20,1
1537 0ace 00C0 rjmp .L134
1538 0ad0 80E0 ldi r24,lo8(EEPromArray+84)
1539 0ad2 90E0 ldi r25,hi8(EEPromArray+84)
1540 0ad4 92BD out (65)+1-0x20,r25
1541 0ad6 81BD out 65-0x20,r24
1542 /* #APP */
1543 /* START EEPROM READ CRITICAL SECTION */
1544 0ad8 F89A sbi 31, 0
1545 0ada 80B5 in r24, 32
1546 /* END EEPROM READ CRITICAL SECTION */
1547
1548 /* #NOAPP */
1549 0adc 8093 0000 sts EE_Parameter+4,r24
1550 .L138:
1551 0ae0 F999 sbic 63-0x20,1
1552 0ae2 00C0 rjmp .L138
1553 0ae4 80E0 ldi r24,lo8(EEPromArray+85)
1554 0ae6 90E0 ldi r25,hi8(EEPromArray+85)
1555 0ae8 92BD out (65)+1-0x20,r25
1556 0aea 81BD out 65-0x20,r24
1557 /* #APP */
1558 /* START EEPROM READ CRITICAL SECTION */
1559 0aec F89A sbi 31, 0
1560 0aee 80B5 in r24, 32
1561 /* END EEPROM READ CRITICAL SECTION */
1562
1563 /* #NOAPP */
1564 0af0 8093 0000 sts EE_Parameter+5,r24
1565 .L142:
1566 0af4 F999 sbic 63-0x20,1
1567 0af6 00C0 rjmp .L142
1568 0af8 80E0 ldi r24,lo8(EEPromArray+86)
1569 0afa 90E0 ldi r25,hi8(EEPromArray+86)
1570 0afc 92BD out (65)+1-0x20,r25
1571 0afe 81BD out 65-0x20,r24
1572 /* #APP */
1573 /* START EEPROM READ CRITICAL SECTION */
1574 0b00 F89A sbi 31, 0
1575 0b02 80B5 in r24, 32
1576 /* END EEPROM READ CRITICAL SECTION */
1577
1578 /* #NOAPP */
1579 0b04 8093 0000 sts EE_Parameter+6,r24
1580 .L146:
1581 0b08 F999 sbic 63-0x20,1
1582 0b0a 00C0 rjmp .L146
1583 0b0c 80E0 ldi r24,lo8(EEPromArray+87)
1584 0b0e 90E0 ldi r25,hi8(EEPromArray+87)
1585 0b10 92BD out (65)+1-0x20,r25
1586 0b12 81BD out 65-0x20,r24
1587 /* #APP */
1588 /* START EEPROM READ CRITICAL SECTION */
1589 0b14 F89A sbi 31, 0
1590 0b16 80B5 in r24, 32
1591 /* END EEPROM READ CRITICAL SECTION */
1592
1593 /* #NOAPP */
1594 0b18 8093 0000 sts EE_Parameter+7,r24
1595 0b1c C130 cpi r28,lo8(1)
1596 0b1e 01F4 brne .L151
1597 0b20 1F93 push r17
1598 0b22 0F93 push r16
1599 0b24 1F92 push __zero_reg__
1600 0b26 0E94 0000 call _printf_P
1601 0b2a 0F90 pop __tmp_reg__
1602 0b2c 0F90 pop __tmp_reg__
1603 0b2e 0F90 pop __tmp_reg__
1604 0b30 00C0 rjmp .L151
1605 .L101:
1606 0b32 0E94 0000 call DefaultStickMapping
1607 .L151:
1608 0b36 45E6 ldi r20,lo8(101)
1609 0b38 60E0 ldi r22,lo8(EE_Parameter)
1610 0b3a 70E0 ldi r23,hi8(EE_Parameter)
1611 0b3c 8C2F mov r24,r28
1612 0b3e 0E94 0000 call WriteParameterSet
1613 0b42 CF5F subi r28,lo8(-(1))
1614 0b44 C630 cpi r28,lo8(6)
1615 0b46 00F4 brsh .+2
1616 0b48 00C0 rjmp .L152
1617 0b4a 83E0 ldi r24,lo8(3)
1618 0b4c 0E94 0000 call SetActiveParamSetNumber
1619 .L153:
1620 0b50 F999 sbic 63-0x20,1
1621 0b52 00C0 rjmp .L153
1622 0b54 1FBA out 63-0x20,__zero_reg__
1623 0b56 80E0 ldi r24,lo8(EEPromArray+1)
1624 0b58 90E0 ldi r25,hi8(EEPromArray+1)
1625 0b5a 92BD out (65)+1-0x20,r25
1626 0b5c 81BD out 65-0x20,r24
1627 0b5e 80E5 ldi r24,lo8(80)
1628 0b60 80BD out 64-0x20,r24
1629 /* #APP */
1630 /* START EEPROM WRITE CRITICAL SECTION */
1631 0b62 0FB6 in r0, 63
1632 0b64 F894 cli
1633 0b66 FA9A sbi 31, 2
1634 0b68 F99A sbi 31, 1
1635 0b6a 0FBE out 63, r0
1636 /* END EEPROM WRITE CRITICAL SECTION */
1637 /* #NOAPP */
1638 0b6c 00C0 rjmp .L157
1639 .L358:
1640 0b6e 0E94 0000 call DefaultKonstanten2
1641 0b72 00C0 rjmp .L102
1642 .L373:
1643 0b74 0E94 0000 call DefaultKonstanten3
1644 0b78 00C0 rjmp .L102
1645 .L174:
1646 0b7a 5093 0000 sts (FlugMinuten)+1,r21
1647 0b7e 4093 0000 sts FlugMinuten,r20
1648 0b82 5093 0000 sts (FlugMinutenGesamt)+1,r21
1649 0b86 4093 0000 sts FlugMinutenGesamt,r20
1650 0b8a 9A01 movw r18,r20
1651 0b8c 00C0 rjmp .L173
1652 .L187:
1653 0b8e 80E0 ldi r24,lo8(__c.19)
1654 0b90 90E0 ldi r25,hi8(__c.19)
1655 0b92 00C0 rjmp .L359
1656 .L367:
1657 0b94 80E0 ldi r24,lo8(__c.15)
1658 0b96 90E0 ldi r25,hi8(__c.15)
1659 0b98 9F93 push r25
1660 0b9a 8F93 push r24
1661 0b9c 1F92 push __zero_reg__
1662 0b9e 0E94 0000 call _printf_P
1663 0ba2 88EE ldi r24,lo8(1000)
1664 0ba4 93E0 ldi r25,hi8(1000)
1665 0ba6 0E94 0000 call SetDelay
1666 0baa EC01 movw r28,r24
1667 0bac 0E94 0000 call SucheLuftruckOffset
1668 0bb0 0F90 pop __tmp_reg__
1669 0bb2 0F90 pop __tmp_reg__
1670 0bb4 0F90 pop __tmp_reg__
1671 .L181:
1672 0bb6 CE01 movw r24,r28
1673 0bb8 0E94 0000 call CheckDelay
1674 0bbc 8823 tst r24
1675 0bbe 01F0 breq .L181
1676 0bc0 80E0 ldi r24,lo8(__c.16)
1677 0bc2 90E0 ldi r25,hi8(__c.16)
1678 0bc4 9F93 push r25
1679 0bc6 8F93 push r24
1680 0bc8 1F92 push __zero_reg__
1681 0bca 0E94 0000 call _printf_P
1682 0bce 0F90 pop __tmp_reg__
1683 0bd0 0F90 pop __tmp_reg__
1684 0bd2 0F90 pop __tmp_reg__
1685 0bd4 00C0 rjmp .L180
1686 .L366:
1687 0bd6 80E0 ldi r24,lo8(__c.13)
1688 0bd8 90E0 ldi r25,hi8(__c.13)
1689 0bda 9F93 push r25
1690 0bdc 8F93 push r24
1691 0bde 1F92 push __zero_reg__
1692 0be0 0E94 0000 call _printf_P
1693 0be4 0F90 pop __tmp_reg__
1694 0be6 0F90 pop __tmp_reg__
1695 0be8 0F90 pop __tmp_reg__
1696 0bea 00C0 rjmp .L175
1697 .L185:
1698 0bec 2898 cbi 37-0x20,0
1699 0bee 00C0 rjmp .L186
1700 /* epilogue: frame size=0 */
1701 /* epilogue: noreturn */
1702 /* epilogue end (size=0) */
1703 /* function main size 1528 (1524) */
1705 .comm Mixer,77,1
1706 /* File "main.c": code 1759 = 0x06df (1745), prologues 7, epilogues 7 */
DEFINED SYMBOLS
*ABS*:00000000 main.c
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:3 *ABS*:0000003f __SREG__
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:4 *ABS*:0000003e __SP_H__
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:5 *ABS*:0000003d __SP_L__
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:15 .bss:00000000 FlugMinutenGesamt
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:21 .bss:00000002 FlugMinuten
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:27 .data:00000000 BattLowVoltageWarning
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:32 .data:00000001 SendVersionToNavi
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:37 .data:00000002 PlatinenVersion
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:41 .text:00000000 eeprom_read_byte
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:63 .text:00000010 eeprom_write_byte
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:90 .data:00000003 stick.25
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:95 .text:00000028 CalMk3Mag
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:155 .progmem.data:00000000 __c.21
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:159 .progmem.data:00000008 __c.22
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:163 .progmem.data:00000013 __c.23
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:167 .progmem.data:0000001e __c.24
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:172 .text:0000009a LipoDetection
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:306 .progmem.data:00000038 __c.0
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:310 .progmem.data:0000005e __c.1
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:314 .progmem.data:00000092 __c.2
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:318 .progmem.data:000000a9 __c.3
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:322 .progmem.data:000000cf __c.4
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:326 .progmem.data:000000ed __c.5
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:330 .progmem.data:0000010e __c.6
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:334 .progmem.data:0000011f __c.7
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:338 .progmem.data:00000123 __c.8
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:342 .progmem.data:00000141 __c.9
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:346 .progmem.data:00000167 __c.10
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:350 .progmem.data:00000176 __c.11
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:354 .progmem.data:000001ae __c.12
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:358 .progmem.data:000001d1 __c.13
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:362 .progmem.data:000001ef __c.14
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:366 .progmem.data:00000207 __c.15
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:370 .progmem.data:00000227 __c.16
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:374 .progmem.data:0000022c __c.17
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:378 .progmem.data:00000238 __c.18
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:382 .progmem.data:00000244 __c.19
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:386 .progmem.data:00000258 __c.20
C:\Users\Bernd\AppData\Local\Temp/ccjJE4Oj.s:395 .text:000001a8 main
*COM*:0000004d Mixer
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
EE_Parameter
PPM_in
WinkelOut
beeptime
Piep
DebugOut
_printf_P
SetDelay
UBat
__udivmodqi4
CheckDelay
__stack
StickGier
StickRoll
StickNick
GIER_GRAD_FAKTOR
Timer_Init
TIMER2_Init
UART_Init
rc_sum_init
ADC_Init
i2c_init
ReadParameterSet
EEPromArray
RequiredMotors
__eerd_block
__eewr_block
motorread
UpdateMotor
SendMotorData
MotorPresent
ServoActive
MotorError
GetActiveParamSetNumber
SetNeutral
ExternControl
LcdClear
I2CTimeout
AdReady
SenderOkay
MissingMotor
BeepMuster
MotorenEin
DatenUebertragung
BearbeiteRxDaten
PcZugriff
MikroKopterFlags
SendSPI
LED_Update
MotorRegler
ExternStickNick
ExternStickRoll
ExternStickGier
i2c_reset
DefaultKonstanten1
DefaultStickMapping
WriteParameterSet
SetActiveParamSetNumber
DefaultKonstanten2
DefaultKonstanten3
SucheLuftruckOffset
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/makefile
0,0 → 1,462
#--------------------------------------------------------------------
# MCU name
MCU = atmega644
F_CPU = 20000000
#-------------------------------------------------------------------
VERSION_MAJOR = 0
VERSION_MINOR = 76
VERSION_PATCH = 6
 
VERSION_SERIAL_MAJOR = 10 # Serial Protocol
VERSION_SERIAL_MINOR = 1 # Serial Protocol
NC_SPI_COMPATIBLE = 10 # Navi-Kompatibilität
#-------------------------------------------------------------------
 
# get SVN revision
# REV := $(shell sh -c "cat .svn/entries | sed -n '4p'")
 
ifeq ($(MCU), atmega644)
FUSE_SETTINGS = -u -U lfuse:w:0xff:m -U hfuse:w:0xdf:m
#FUSE_SETTINGS = -U lfuse:w:0xff:m -U hfuse:w:0xdf:m
# -u bei neuen Controllern wieder einspielen
HEX_NAME = MEGA644
endif
 
ifeq ($(MCU), atmega644p)
FUSE_SETTINGS = -u -U lfuse:w:0xff:m -U hfuse:w:0xdf:m
HEX_NAME = MEGA644
endif
 
ifeq ($(F_CPU), 20000000)
QUARZ = 20MHZ
endif
 
# Output format. (can be srec, ihex, binary)
FORMAT = ihex
 
# Target file name (without extension).
 
ifeq ($(VERSION_PATCH), 0)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)a_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 1)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)b_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 2)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)c_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 3)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)d_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 4)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)e_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 5)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)f_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 6)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)g_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 7)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)h_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 8)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)i_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 9)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)j_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 10)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)k_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 11)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)L_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 12)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)m_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 13)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)n_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 14)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)o_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 15)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)p_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 16)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)q_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 17)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)r_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 18)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)s_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 19)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)t_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 20)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)u_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 21)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)v_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 22)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)w_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 23)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)x_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 24)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)y_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 25)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)z_SVN$(REV)
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 = 2
 
##########################################################################################################
# List C source files here. (C dependencies are automatically generated.)
SRC = main.c analog.c fc.c led.c menu.c printf_P.c
SRC += twimaster.c rc.c mymath.c timer0.c uart.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 = isqrt.S
 
 
# 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 = -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
 
 
# shrink code size - das ist ist neu seit V0.78b
CFLAGS += -mtiny-stack
 
#CFLAGS += -fno-inline-functions
 
# das ist ist neu seit V0.86
CFLAGS += -mcall-prologues
 
# die Option -DF ist neu seit 0.78b
CFLAGS += -DF_CPU=$(F_CPU) -DVERSION_MAJOR=$(VERSION_MAJOR) -DVERSION_MINOR=$(VERSION_MINOR) -DVERSION_PATCH=$(VERSION_PATCH) -DVERSION_SERIAL_MAJOR=$(VERSION_SERIAL_MAJOR) -DVERSION_SERIAL_MINOR=$(VERSION_SERIAL_MINOR) -DNC_SPI_COMPATIBLE=$(NC_SPI_COMPATIBLE)
 
 
# 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
 
 
# LDFLAGS += -T./linkerfile/avr5.x
 
 
# 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_PROGRAMMER = ponyser
AVRDUDE_PROGRAMMER = avrispv2
 
 
#AVRDUDE_PORT = com1 # programmer connected to serial device
#AVRDUDE_PORT = lpt1 # programmer connected to parallel port
AVRDUDE_PORT = usb # programmer connected to USB
 
#AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex $(FUSE_SETTINGS)
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
 
#avrdude -c avrispv2 -P usb -p m32 -U flash:w:blink.hex
AVRDUDE_FLAGS = -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
 
# 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
LIMITS = $(SIZE) --mcu=$(MCU) -C $(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) -DF_CPU=$(F_CPU) -I. $(CFLAGS)
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 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 Size before:; $(ELFSIZE); $(HEXSIZE); echo; fi
sizeafter:
@if [ -f $(TARGET).elf ]; then echo Size after:; $(ELFSIZE); $(HEXSIZE); 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.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/menu.c
0,0 → 1,207
/*****************************************************************************************************************************
* File: menu.c
*
* Purpose: collecting ADC analog inputs from PORTA
*
* Functions: void ADC_Init(void)
* void SucheLuftruckOffset(void)
* void SucheGyroOffset(void)
* ISR(ADC_vect)
*
*****************************************************************************************************************************/
#include "main.h"
#include "menu.h"
 
unsigned int TestInt = 0;
#define ARRAYGROESSE 10
unsigned char Array[ARRAYGROESSE] = {1,2,3,4,5,6,7,8,9,10};
char DisplayBuff[80] = "cq de dk9nw";
unsigned char DispPtr = 0;
 
unsigned char MaxMenue = 14;
unsigned char MenuePunkt = 0;
unsigned char RemoteKeys = 0;
 
#define KEY1 0x01
#define KEY2 0x02
#define KEY3 0x04
#define KEY4 0x08
#define KEY5 0x10
 
 
// ----------------------------------------------------------------------------------------------------------------------------
// leert die LCD Anzeige
// ----------------------------------------------------------------------------------------------------------------------------
void LcdClear(void)
{
unsigned char i;
for(i=0;i<80;i++) DisplayBuff[i] = ' ';
}
// ----------------------------------------------------------------------------------------------------------------------------
 
 
 
// ---------------------------------------------------------------------------------------------------------------------------
// Anzeigen auf dem MK Toll auf dem dortigen LCD Display
// ---------------------------------------------------------------------------------------------------------------------------
void Menu(void)
{
if(MenuePunkt > MaxMenue) MenuePunkt = MaxMenue; // MaxMenue = 14;
 
if(RemoteKeys & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue;} // go down
if(RemoteKeys & KEY2) { if(MenuePunkt == MaxMenue) MenuePunkt = 0; else MenuePunkt++;} // go up
if((RemoteKeys & KEY1) && (RemoteKeys & KEY2)) MenuePunkt = 0; // both keys pressed
LcdClear();
if(MenuePunkt < 10)
{
LCD_printfxy(17,0,"[%i]",MenuePunkt);
}
else
{
LCD_printfxy(16,0,"[%i]",MenuePunkt);
}
 
switch(MenuePunkt)
{
case 0:
LCD_printfxy(0,0,"+ MikroKopter +");
LCD_printfxy(0,1,"HW:V%d.%d SW:%d.%d%c",PlatinenVersion/10,PlatinenVersion%10, VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH +'a');
LCD_printfxy(0,2,"Setting:%d %s",GetActiveParamSetNumber(),Mixer.Name);
if(I2CTimeout < 6) LCD_printfxy(0,3,"I2C ERROR!!!")
else
if(MissingMotor) LCD_printfxy(0,3,"Missing BL-Ctrl:%d!!",MissingMotor)
else LCD_printfxy(0,3,"----BL-Ctrl ok---");
break;
case 1:
LCD_printfxy(0,0,"DAC Offset");
LCD_printfxy(0,1,"%5i",AnalogOffsetNick); // = 113
LCD_printfxy(0,2,"%5i",AnalogOffsetRoll); // = 114
LCD_printfxy(0,3,"%5i",AnalogOffsetGier); // = 149
break;
case 2:
LCD_printfxy(0,0,"GlobalConfig"); //
LCD_printfxy(0,1,"%5i",EE_Parameter.GlobalConfig); //
LCD_printfxy(0,2,"EEPROM310"); //
unsigned char c47 = eeprom_read_byte(&EEPromArray[310]); //
LCD_printfxy(0,3,"%5i",c47); //
break;
case 3:
LCD_printfxy(0,0,"K1:%4i K2:%4i ",PPM_in[1],PPM_in[2]); // K1 = -125 kann -125 bis 120 = Gas K2 = 2 kann 115 bis -102 = Roll
LCD_printfxy(0,1,"K3:%4i K4:%4i ",PPM_in[3],PPM_in[4]); // K3 = 0 kann -117 bis 120 = Nick K4 = 2 kann -120 bis +120 = Gier
LCD_printfxy(0,2,"K5:%4i ",PPM_in[5]); // K5 = -117 oder +120 = Kippschalter
/*
LCD_printfxy(0,0,"Ni:%4i Ro:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_NICK]],PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]);
LCD_printfxy(0,1,"Gs:%4i Gi:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_GAS]],PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]);
LCD_printfxy(0,2,"P1:%4i P2:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]],PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]]);
LCD_printfxy(0,3,"P3:%4i P4:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]],PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]]);
*/
break;
case 4:
LCD_printfxy(0,0,"AdNeutral...");
LCD_printfxy(0,1,"Nick: %5i",AdNeutralNick); // 8461 ständig steigend
LCD_printfxy(0,2,"Roll: %5i",AdNeutralRoll); // 8463 ständig steigend
LCD_printfxy(0,3,"Gier: %5i",AdNeutralGier); // 1039
break;
case 5:
LCD_printfxy(0,0,"Gyro - Sensor");
LCD_printfxy(0,1,"Nick %4i (%3i)",AdWertNick - AdNeutralNick/8, AdNeutralNick/16); // = 1 (564)
LCD_printfxy(0,2,"Roll %4i (%3i)",AdWertRoll - AdNeutralRoll/8, AdNeutralRoll/16); // = 1 (555)
LCD_printfxy(0,3,"Gier %4i (%3i)",AdNeutralGier - AdWertGier, AdNeutralGier/2); // = 3 (322)
break;
case 6:
LCD_printfxy(0,0,"ACC - Sensor");
LCD_printfxy(0,1,"Nick %4i (%3i)",AdWertAccNick,NeutralAccX); // = -4 (504)
LCD_printfxy(0,2,"Roll %4i (%3i)",AdWertAccRoll,NeutralAccY); // = 7 (487)
LCD_printfxy(0,3,"Gier %4i (%3i)",Mittelwert_AccHoch/*accumulate_AccHoch / messanzahl_AccHoch*/,(int)NeutralAccZ); // = 0 (713)
break;
case 7:
LCD_printfxy(0,1,"Spannung: %5i",UBat); // = 120 müsst 12V sein
LCD_printfxy(0,2,"Empf.Pegel:%5i",SenderOkay); // = 200 bei gutem Empfang = 0 bei keinem Empfang
break;
case 8:
LCD_printfxy(0,0,"Kompass...");
LCD_printfxy(0,1,"Richtung: %4i",KompassRichtung); // = -75 wurde nach dem Start nach links gedreht
LCD_printfxy(0,2,"Value: %4i",KompassValue); // = 318 Anzeigewert des Kompass
LCD_printfxy(0,3,"Startwert: %4i",KompassStartwert); // = 34 ist die Differenz zwischen beiden Werten
break;
case 9:
LCD_printfxy(0,0,"Poti1: %3i",Poti1); // = 0
LCD_printfxy(0,1,"Poti2: %3i",Poti2); // = 154
LCD_printfxy(0,2,"Poti3: %3i",Poti3); // = 110
LCD_printfxy(0,3,"Poti4: %3i",Poti4); // = 110
break;
case 10:
LCD_printfxy(0,0,"Servo " );
LCD_printfxy(0,1,"Setpoint %3i",Parameter_ServoNickControl); // = 100
//LCD_printfxy(0,2,"Stellung: %3i",ServoValue);
LCD_printfxy(0,3,"Range:%3i-%3i",EE_Parameter.ServoNickMin,EE_Parameter.ServoNickMax); // 50-150
break;
case 11:
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)
{
LCD_printfxy(0,0,"Hoehe: %5i",HoehenWert);
LCD_printfxy(0,1,"SollHoehe: %5i",SollHoehe);
LCD_printfxy(0,2,"Luftdruck: %5i",MessLuftdruck);
LCD_printfxy(0,3,"Off : %5i",DruckOffsetSetting);
}
else
{
LCD_printfxy(0,1,"Keine ");
LCD_printfxy(0,2,"Höhenregelung");
}
break;
case 12:
LCD_printfxy(0,0,"BL-Ctrl Errors " );
LCD_printfxy(0,1," %3d %3d %3d %3d ",MotorError[0],MotorError[1],MotorError[2],MotorError[3]);
LCD_printfxy(0,2," %3d %3d %3d %3d ",MotorError[4],MotorError[5],MotorError[6],MotorError[7]);
LCD_printfxy(0,3," %3d %3d %3d %3d ",MotorError[8],MotorError[9],MotorError[10],MotorError[11]);
break;
case 13:
LCD_printfxy(0,0,"BL-Ctrl found " );
LCD_printfxy(0,1," %c %c %c %c ",MotorPresent[0] + '-',MotorPresent[1] + '-',MotorPresent[2] + '-',MotorPresent[3] + '-');
LCD_printfxy(0,2," %c %c %c %c ",MotorPresent[4] + '-',MotorPresent[5] + '-',MotorPresent[6] + '-',MotorPresent[7] + '-');
LCD_printfxy(0,3," %c - - -",MotorPresent[8] + '-');
if(MotorPresent[9]) LCD_printfxy(4,3,"10");
if(MotorPresent[10]) LCD_printfxy(8,3,"11");
if(MotorPresent[11]) LCD_printfxy(12,3,"12");
break;
case 14:
LCD_printfxy(0,0,"Flight-Time " );
LCD_printfxy(0,1," %5umin",FlugMinuten);
LCD_printfxy(0,2,"Total:%5umin",FlugMinutenGesamt);
LCD_printfxy(13,3,"(reset)");
if(RemoteKeys & KEY4) // #define KEY4 0x08
{
FlugMinuten = 0;
eeprom_write_byte(&EEPromArray[EEPROM_ADR_MINUTES2],FlugMinuten / 256); // FlugMinuten gesamt auf Null setzen
eeprom_write_byte(&EEPromArray[EEPROM_ADR_MINUTES2+1],FlugMinuten % 256);
}
break;
default:
MaxMenue = MenuePunkt - 1;
MenuePunkt = 0;
break;
}
RemoteKeys = 0;
}
//------------------------------------------------------------------------------------------------------------------------------------
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/menu.d
0,0 → 1,2
menu.o menu.d : menu.c main.h old_macros.h _Settings.h printf_P.h timer0.h uart.h \
analog.h eeprom.h twimaster.h menu.h rc.h fc.h led.h
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/menu.h
0,0 → 1,19
/*****************************************************************************************************************************
* File: menu.h
* Purpose: header of menu.c
*****************************************************************************************************************************/
#ifndef _MENU_H
#define _MENU_H
 
extern void Menu(void);
extern void LcdClear(void);
extern char DisplayBuff[80];
extern unsigned char DispPtr;
 
extern unsigned char MaxMenue;
extern unsigned char MenuePunkt;
extern unsigned char RemoteKeys;
 
#endif
//*** EOF: _MENU_H ***********************************************************************************************************
 
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/menu.lst
0,0 → 1,1807
1 .file "menu.c"
2 .arch atmega644
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 .global RemoteKeys
11 .global RemoteKeys
12 .section .bss
15 RemoteKeys:
16 0000 00 .skip 1,0
17 .global MenuePunkt
18 .global MenuePunkt
21 MenuePunkt:
22 0001 00 .skip 1,0
23 .global MaxMenue
24 .data
27 MaxMenue:
28 0000 0E .byte 14
29 .global DispPtr
30 .global DispPtr
31 .section .bss
34 DispPtr:
35 0002 00 .skip 1,0
36 .global DisplayBuff
37 .data
40 DisplayBuff:
41 0001 6371 2064 .string "cq de dk9nw"
41 6520 646B
41 396E 7700
42 000d 0000 0000 .skip 68,0
42 0000 0000
42 0000 0000
42 0000 0000
42 0000 0000
43 .global Array
46 Array:
47 0051 01 .byte 1
48 0052 02 .byte 2
49 0053 03 .byte 3
50 0054 04 .byte 4
51 0055 05 .byte 5
52 0056 06 .byte 6
53 0057 07 .byte 7
54 0058 08 .byte 8
55 0059 09 .byte 9
56 005a 0A .byte 10
57 .global TestInt
58 .global TestInt
59 .section .bss
62 TestInt:
63 0003 0000 .skip 2,0
64 .text
65 .global LcdClear
67 LcdClear:
68 /* prologue: frame size=0 */
69 /* prologue end (size=0) */
70 0000 90E2 ldi r25,lo8(32)
71 0002 E0E0 ldi r30,lo8(DisplayBuff)
72 0004 F0E0 ldi r31,hi8(DisplayBuff)
73 0006 8FE4 ldi r24,lo8(79)
74 .L5:
75 0008 9193 st Z+,r25
76 000a 8150 subi r24,lo8(-(-1))
77 000c 87FF sbrs r24,7
78 000e 00C0 rjmp .L5
79 /* epilogue: frame size=0 */
80 0010 0895 ret
81 /* epilogue end (size=1) */
82 /* function LcdClear size 9 (8) */
84 .section .progmem.data,"a",@progbits
87 __c.0:
88 0000 5B25 695D .string "[%i]"
88 00
91 __c.1:
92 0005 5B25 695D .string "[%i]"
92 00
95 __c.2:
96 000a 2B20 4D69 .string "+ MikroKopter +"
96 6B72 6F4B
96 6F70 7465
96 7220 2B00
99 __c.3:
100 001a 4857 3A56 .string "HW:V%d.%d SW:%d.%d%c"
100 2564 2E25
100 6420 5357
100 3A25 642E
100 2564 2563
103 __c.4:
104 002f 5365 7474 .string "Setting:%d %s"
104 696E 673A
104 2564 2025
104 7300
107 __c.5:
108 003d 4932 4320 .string "I2C ERROR!!!"
108 4552 524F
108 5221 2121
108 00
111 __c.6:
112 004a 4D69 7373 .string "Missing BL-Ctrl:%d!!"
112 696E 6720
112 424C 2D43
112 7472 6C3A
112 2564 2121
115 __c.7:
116 005f 2D2D 2D2D .string "----BL-Ctrl ok---"
116 424C 2D43
116 7472 6C20
116 6F6B 2D2D
116 2D00
119 __c.8:
120 0071 4441 4320 .string "DAC Offset"
120 4F66 6673
120 6574 00
123 __c.9:
124 007c 2535 6900 .string "%5i"
127 __c.10:
128 0080 2535 6900 .string "%5i"
131 __c.11:
132 0084 2535 6900 .string "%5i"
135 __c.12:
136 0088 476C 6F62 .string "GlobalConfig"
136 616C 436F
136 6E66 6967
136 00
139 __c.13:
140 0095 2535 6900 .string "%5i"
143 __c.14:
144 0099 4545 5052 .string "EEPROM310"
144 4F4D 3331
144 3000
147 __c.15:
148 00a3 2535 6900 .string "%5i"
151 __c.16:
152 00a7 4B31 3A25 .string "K1:%4i K2:%4i "
152 3469 2020
152 4B32 3A25
152 3469 2000
155 __c.17:
156 00b7 4B33 3A25 .string "K3:%4i K4:%4i "
156 3469 2020
156 4B34 3A25
156 3469 2000
159 __c.18:
160 00c7 4B35 3A25 .string "K5:%4i "
160 3469 2020
160 2020 2020
160 2020 2000
163 __c.19:
164 00d7 4164 4E65 .string "AdNeutral..."
164 7574 7261
164 6C2E 2E2E
164 00
167 __c.20:
168 00e4 4E69 636B .string "Nick: %5i"
168 3A20 2020
168 2020 2025
168 3569 00
171 __c.21:
172 00f3 526F 6C6C .string "Roll: %5i"
172 3A20 2020
172 2020 2025
172 3569 00
175 __c.22:
176 0102 4769 6572 .string "Gier: %5i"
176 3A20 2020
176 2020 2025
176 3569 00
179 __c.23:
180 0111 4779 726F .string "Gyro - Sensor"
180 202D 2053
180 656E 736F
180 7200
183 __c.24:
184 011f 4E69 636B .string "Nick %4i (%3i)"
184 2025 3469
184 2028 2533
184 6929 00
187 __c.25:
188 012e 526F 6C6C .string "Roll %4i (%3i)"
188 2025 3469
188 2028 2533
188 6929 00
191 __c.26:
192 013d 4769 6572 .string "Gier %4i (%3i)"
192 2025 3469
192 2028 2533
192 6929 00
195 __c.27:
196 014c 4143 4320 .string "ACC - Sensor"
196 2D20 5365
196 6E73 6F72
196 00
199 __c.28:
200 0159 4E69 636B .string "Nick %4i (%3i)"
200 2025 3469
200 2028 2533
200 6929 00
203 __c.29:
204 0168 526F 6C6C .string "Roll %4i (%3i)"
204 2025 3469
204 2028 2533
204 6929 00
207 __c.30:
208 0177 4769 6572 .string "Gier %4i (%3i)"
208 2025 3469
208 2028 2533
208 6929 00
211 __c.31:
212 0186 5370 616E .string "Spannung: %5i"
212 6E75 6E67
212 3A20 2025
212 3569 00
215 __c.32:
216 0195 456D 7066 .string "Empf.Pegel:%5i"
216 2E50 6567
216 656C 3A25
216 3569 00
219 __c.33:
220 01a4 4B6F 6D70 .string "Kompass..."
220 6173 732E
220 2E2E 00
223 __c.34:
224 01af 5269 6368 .string "Richtung: %4i"
224 7475 6E67
224 3A20 2534
224 6900
227 __c.35:
228 01bd 5661 6C75 .string "Value: %4i"
228 653A 2025
228 3469 00
231 __c.36:
232 01c8 5374 6172 .string "Startwert: %4i"
232 7477 6572
232 743A 2025
232 3469 00
235 __c.37:
236 01d7 506F 7469 .string "Poti1: %3i"
236 313A 2020
236 2533 6900
239 __c.38:
240 01e3 506F 7469 .string "Poti2: %3i"
240 323A 2020
240 2533 6900
243 __c.39:
244 01ef 506F 7469 .string "Poti3: %3i"
244 333A 2020
244 2533 6900
247 __c.40:
248 01fb 506F 7469 .string "Poti4: %3i"
248 343A 2020
248 2533 6900
251 __c.41:
252 0207 5365 7276 .string "Servo "
252 6F20 2000
255 __c.42:
256 020f 5365 7470 .string "Setpoint %3i"
256 6F69 6E74
256 2020 2533
256 6900
259 __c.43:
260 021d 5261 6E67 .string "Range:%3i-%3i"
260 653A 2533
260 692D 2533
260 6900
263 __c.44:
264 022b 486F 6568 .string "Hoehe: %5i"
264 653A 2020
264 2020 2025
264 3569 00
267 __c.45:
268 023a 536F 6C6C .string "SollHoehe: %5i"
268 486F 6568
268 653A 2025
268 3569 00
271 __c.46:
272 0249 4C75 6674 .string "Luftdruck: %5i"
272 6472 7563
272 6B3A 2025
272 3569 00
275 __c.47:
276 0258 4F66 6620 .string "Off : %5i"
276 2020 2020
276 203A 2025
276 3569 00
279 __c.48:
280 0267 4B65 696E .string "Keine "
280 6520 00
283 __c.49:
284 026e 48F6 6865 .string "H\366henregelung"
284 6E72 6567
284 656C 756E
284 6700
287 __c.50:
288 027c 424C 2D43 .string "BL-Ctrl Errors "
288 7472 6C20
288 4572 726F
288 7273 2000
291 __c.51:
292 028c 2025 3364 .string " %3d %3d %3d %3d "
292 2020 2533
292 6420 2025
292 3364 2020
292 2533 6420
295 __c.52:
296 02a1 2025 3364 .string " %3d %3d %3d %3d "
296 2020 2533
296 6420 2025
296 3364 2020
296 2533 6420
299 __c.53:
300 02b6 2025 3364 .string " %3d %3d %3d %3d "
300 2020 2533
300 6420 2025
300 3364 2020
300 2533 6420
303 __c.54:
304 02cb 424C 2D43 .string "BL-Ctrl found "
304 7472 6C20
304 666F 756E
304 6420 00
307 __c.55:
308 02da 2025 6320 .string " %c %c %c %c "
308 2020 2563
308 2020 2025
308 6320 2020
308 2563 2000
311 __c.56:
312 02ee 2025 6320 .string " %c %c %c %c "
312 2020 2563
312 2020 2025
312 6320 2020
312 2563 2000
315 __c.57:
316 0302 2025 6320 .string " %c - - -"
316 2020 2D20
316 2020 2D20
316 2020 2D00
319 __c.58:
320 0312 3130 00 .string "10"
323 __c.59:
324 0315 3131 00 .string "11"
327 __c.60:
328 0318 3132 00 .string "12"
331 __c.61:
332 031b 466C 6967 .string "Flight-Time "
332 6874 2D54
332 696D 6520
332 2000
335 __c.62:
336 0329 2020 2020 .string " %5umin"
336 2020 2535
336 756D 696E
336 00
339 __c.63:
340 0336 546F 7461 .string "Total:%5umin"
340 6C3A 2535
340 756D 696E
340 00
343 __c.64:
344 0343 2872 6573 .string "(reset)"
344 6574 2900
345 .text
346 .global Menu
348 Menu:
349 /* prologue: frame size=0 */
350 0012 1F93 push r17
351 /* prologue end (size=1) */
352 0014 8091 0000 lds r24,MenuePunkt
353 0018 2091 0000 lds r18,MaxMenue
354 001c 2817 cp r18,r24
355 001e 00F4 brsh .L10
356 0020 2093 0000 sts MenuePunkt,r18
357 .L10:
358 0024 9091 0000 lds r25,RemoteKeys
359 0028 90FF sbrs r25,0
360 002a 00C0 rjmp .L11
361 002c 8091 0000 lds r24,MenuePunkt
362 0030 8823 tst r24
363 0032 01F4 brne .+2
364 0034 00C0 rjmp .L12
365 0036 8150 subi r24,lo8(-(-1))
366 0038 8093 0000 sts MenuePunkt,r24
367 .L11:
368 003c 91FF sbrs r25,1
369 003e 00C0 rjmp .L14
370 0040 8091 0000 lds r24,MenuePunkt
371 0044 8217 cp r24,r18
372 0046 01F4 brne .+2
373 0048 00C0 rjmp .L71
374 004a 8F5F subi r24,lo8(-(1))
375 004c 8093 0000 sts MenuePunkt,r24
376 .L14:
377 0050 892F mov r24,r25
378 0052 9927 clr r25
379 0054 80FF sbrs r24,0
380 0056 00C0 rjmp .L17
381 0058 81FD sbrc r24,1
382 005a 00C0 rjmp .L72
383 .L17:
384 005c 0E94 0000 call LcdClear
385 0060 9091 0000 lds r25,MenuePunkt
386 0064 9A30 cpi r25,lo8(10)
387 0066 00F4 brsh .L18
388 0068 81E1 ldi r24,lo8(17)
389 006a 8093 0000 sts DispPtr,r24
390 006e 892F mov r24,r25
391 0070 9927 clr r25
392 0072 9F93 push r25
393 0074 8F93 push r24
394 0076 80E0 ldi r24,lo8(__c.0)
395 0078 90E0 ldi r25,hi8(__c.0)
396 .L65:
397 007a 9F93 push r25
398 007c 8F93 push r24
399 007e 81E0 ldi r24,lo8(1)
400 0080 8F93 push r24
401 0082 0E94 0000 call _printf_P
402 0086 0F90 pop __tmp_reg__
403 0088 0F90 pop __tmp_reg__
404 008a 0F90 pop __tmp_reg__
405 008c 0F90 pop __tmp_reg__
406 008e 0F90 pop __tmp_reg__
407 0090 2091 0000 lds r18,MenuePunkt
408 0094 822F mov r24,r18
409 0096 9927 clr r25
410 0098 AA27 clr r26
411 009a BB27 clr r27
412 009c FC01 movw r30,r24
413 009e 0F97 sbiw r24,15
414 00a0 00F4 brsh .L63
415 00a2 E050 subi r30,lo8(-(pm(.L64)))
416 00a4 F040 sbci r31,hi8(-(pm(.L64)))
417 00a6 0C94 0000 jmp __tablejump2__
418 .data
419 .section .progmem.gcc_sw_table, "a", @progbits
420 .p2align 1
421 .L64:
422 0000 0000 .word pm(.L21)
423 0002 0000 .word pm(.L26)
424 0004 0000 .word pm(.L27)
425 0006 0000 .word pm(.L32)
426 0008 0000 .word pm(.L33)
427 000a 0000 .word pm(.L34)
428 000c 0000 .word pm(.L40)
429 000e 0000 .word pm(.L41)
430 0010 0000 .word pm(.L42)
431 0012 0000 .word pm(.L43)
432 0014 0000 .word pm(.L44)
433 0016 0000 .word pm(.L45)
434 0018 0000 .word pm(.L48)
435 001a 0000 .word pm(.L49)
436 001c 0000 .word pm(.L53)
437 .text
438 .L18:
439 00aa 80E1 ldi r24,lo8(16)
440 00ac 8093 0000 sts DispPtr,r24
441 00b0 892F mov r24,r25
442 00b2 9927 clr r25
443 00b4 9F93 push r25
444 00b6 8F93 push r24
445 00b8 80E0 ldi r24,lo8(__c.1)
446 00ba 90E0 ldi r25,hi8(__c.1)
447 00bc 00C0 rjmp .L65
448 .L63:
449 00be 2150 subi r18,lo8(-(-1))
450 00c0 2093 0000 sts MaxMenue,r18
451 00c4 1092 0000 sts MenuePunkt,__zero_reg__
452 00c8 00C0 rjmp .L20
453 .L12:
454 00ca 2093 0000 sts MenuePunkt,r18
455 00ce 00C0 rjmp .L11
456 .L72:
457 00d0 1092 0000 sts MenuePunkt,__zero_reg__
458 00d4 00C0 rjmp .L17
459 .L71:
460 00d6 1092 0000 sts MenuePunkt,__zero_reg__
461 00da 00C0 rjmp .L14
462 .L41:
463 00dc 84E1 ldi r24,lo8(20)
464 00de 8093 0000 sts DispPtr,r24
465 00e2 8091 0000 lds r24,UBat
466 00e6 9091 0000 lds r25,(UBat)+1
467 00ea 9F93 push r25
468 00ec 8F93 push r24
469 00ee 80E0 ldi r24,lo8(__c.31)
470 00f0 90E0 ldi r25,hi8(__c.31)
471 00f2 9F93 push r25
472 00f4 8F93 push r24
473 00f6 11E0 ldi r17,lo8(1)
474 00f8 1F93 push r17
475 00fa 0E94 0000 call _printf_P
476 00fe 88E2 ldi r24,lo8(40)
477 0100 8093 0000 sts DispPtr,r24
478 0104 0F90 pop __tmp_reg__
479 0106 0F90 pop __tmp_reg__
480 0108 0F90 pop __tmp_reg__
481 010a 0F90 pop __tmp_reg__
482 010c 0F90 pop __tmp_reg__
483 010e 8091 0000 lds r24,SenderOkay
484 0112 9927 clr r25
485 0114 9F93 push r25
486 0116 8F93 push r24
487 0118 80E0 ldi r24,lo8(__c.32)
488 011a 90E0 ldi r25,hi8(__c.32)
489 .L67:
490 011c 9F93 push r25
491 011e 8F93 push r24
492 0120 1F93 push r17
493 .L70:
494 0122 0E94 0000 call _printf_P
495 0126 0F90 pop __tmp_reg__
496 0128 0F90 pop __tmp_reg__
497 012a 0F90 pop __tmp_reg__
498 012c 0F90 pop __tmp_reg__
499 012e 0F90 pop __tmp_reg__
500 0130 00C0 rjmp .L20
501 .L21:
502 0132 1092 0000 sts DispPtr,__zero_reg__
503 0136 80E0 ldi r24,lo8(__c.2)
504 0138 90E0 ldi r25,hi8(__c.2)
505 013a 9F93 push r25
506 013c 8F93 push r24
507 013e 11E0 ldi r17,lo8(1)
508 0140 1F93 push r17
509 0142 0E94 0000 call _printf_P
510 0146 84E1 ldi r24,lo8(20)
511 0148 8093 0000 sts DispPtr,r24
512 014c 0F90 pop __tmp_reg__
513 014e 0F90 pop __tmp_reg__
514 0150 0F90 pop __tmp_reg__
515 0152 87E6 ldi r24,lo8(103)
516 0154 90E0 ldi r25,hi8(103)
517 0156 9F93 push r25
518 0158 8F93 push r24
519 015a 8CE4 ldi r24,lo8(76)
520 015c 90E0 ldi r25,hi8(76)
521 015e 9F93 push r25
522 0160 8F93 push r24
523 0162 1F92 push __zero_reg__
524 0164 1F92 push __zero_reg__
525 0166 8091 0000 lds r24,PlatinenVersion
526 016a 6AE0 ldi r22,lo8(10)
527 016c 0E94 0000 call __udivmodqi4
528 0170 892F mov r24,r25
529 0172 9927 clr r25
530 0174 9F93 push r25
531 0176 8F93 push r24
532 0178 8091 0000 lds r24,PlatinenVersion
533 017c 0E94 0000 call __udivmodqi4
534 0180 9927 clr r25
535 0182 9F93 push r25
536 0184 8F93 push r24
537 0186 80E0 ldi r24,lo8(__c.3)
538 0188 90E0 ldi r25,hi8(__c.3)
539 018a 9F93 push r25
540 018c 8F93 push r24
541 018e 1F93 push r17
542 0190 0E94 0000 call _printf_P
543 0194 88E2 ldi r24,lo8(40)
544 0196 8093 0000 sts DispPtr,r24
545 019a 2DB7 in r18,__SP_L__
546 019c 3EB7 in r19,__SP_H__
547 019e 235F subi r18,lo8(-(13))
548 01a0 3F4F sbci r19,hi8(-(13))
549 01a2 2DBF out __SP_L__,r18
550 01a4 80E0 ldi r24,lo8(Mixer+1)
551 01a6 90E0 ldi r25,hi8(Mixer+1)
552 01a8 9F93 push r25
553 01aa 8F93 push r24
554 01ac 0E94 0000 call GetActiveParamSetNumber
555 01b0 9927 clr r25
556 01b2 9F93 push r25
557 01b4 8F93 push r24
558 01b6 80E0 ldi r24,lo8(__c.4)
559 01b8 90E0 ldi r25,hi8(__c.4)
560 01ba 9F93 push r25
561 01bc 8F93 push r24
562 01be 1F93 push r17
563 01c0 0E94 0000 call _printf_P
564 01c4 8091 0000 lds r24,I2CTimeout
565 01c8 9091 0000 lds r25,(I2CTimeout)+1
566 01cc 2DB7 in r18,__SP_L__
567 01ce 3EB7 in r19,__SP_H__
568 01d0 295F subi r18,lo8(-(7))
569 01d2 3F4F sbci r19,hi8(-(7))
570 01d4 2DBF out __SP_L__,r18
571 01d6 0697 sbiw r24,6
572 01d8 00F4 brsh .+2
573 01da 00C0 rjmp .L73
574 01dc 9091 0000 lds r25,MissingMotor
575 01e0 9923 tst r25
576 01e2 01F4 brne .+2
577 01e4 00C0 rjmp .L24
578 01e6 8CE3 ldi r24,lo8(60)
579 01e8 8093 0000 sts DispPtr,r24
580 01ec 892F mov r24,r25
581 01ee 9927 clr r25
582 01f0 9F93 push r25
583 01f2 8F93 push r24
584 01f4 80E0 ldi r24,lo8(__c.6)
585 01f6 90E0 ldi r25,hi8(__c.6)
586 01f8 00C0 rjmp .L67
587 .L27:
588 01fa 1092 0000 sts DispPtr,__zero_reg__
589 01fe 80E0 ldi r24,lo8(__c.12)
590 0200 90E0 ldi r25,hi8(__c.12)
591 0202 9F93 push r25
592 0204 8F93 push r24
593 0206 11E0 ldi r17,lo8(1)
594 0208 1F93 push r17
595 020a 0E94 0000 call _printf_P
596 020e 84E1 ldi r24,lo8(20)
597 0210 8093 0000 sts DispPtr,r24
598 0214 0F90 pop __tmp_reg__
599 0216 0F90 pop __tmp_reg__
600 0218 0F90 pop __tmp_reg__
601 021a 8091 0000 lds r24,EE_Parameter+8
602 021e 9927 clr r25
603 0220 9F93 push r25
604 0222 8F93 push r24
605 0224 80E0 ldi r24,lo8(__c.13)
606 0226 90E0 ldi r25,hi8(__c.13)
607 0228 9F93 push r25
608 022a 8F93 push r24
609 022c 1F93 push r17
610 022e 0E94 0000 call _printf_P
611 0232 88E2 ldi r24,lo8(40)
612 0234 8093 0000 sts DispPtr,r24
613 0238 0F90 pop __tmp_reg__
614 023a 0F90 pop __tmp_reg__
615 023c 0F90 pop __tmp_reg__
616 023e 0F90 pop __tmp_reg__
617 0240 0F90 pop __tmp_reg__
618 0242 80E0 ldi r24,lo8(__c.14)
619 0244 90E0 ldi r25,hi8(__c.14)
620 0246 9F93 push r25
621 0248 8F93 push r24
622 024a 1F93 push r17
623 024c 0E94 0000 call _printf_P
624 0250 0F90 pop __tmp_reg__
625 0252 0F90 pop __tmp_reg__
626 0254 0F90 pop __tmp_reg__
627 .L28:
628 0256 F999 sbic 63-0x20,1
629 0258 00C0 rjmp .L28
630 025a 80E0 ldi r24,lo8(EEPromArray+310)
631 025c 90E0 ldi r25,hi8(EEPromArray+310)
632 025e 92BD out (65)+1-0x20,r25
633 0260 81BD out 65-0x20,r24
634 /* #APP */
635 /* START EEPROM READ CRITICAL SECTION */
636 0262 F89A sbi 31, 0
637 0264 90B5 in r25, 32
638 /* END EEPROM READ CRITICAL SECTION */
639
640 /* #NOAPP */
641 0266 8CE3 ldi r24,lo8(60)
642 0268 8093 0000 sts DispPtr,r24
643 026c 892F mov r24,r25
644 026e 9927 clr r25
645 0270 9F93 push r25
646 0272 8F93 push r24
647 0274 80E0 ldi r24,lo8(__c.15)
648 0276 90E0 ldi r25,hi8(__c.15)
649 0278 9F93 push r25
650 027a 8F93 push r24
651 027c 81E0 ldi r24,lo8(1)
652 027e 8F93 push r24
653 0280 00C0 rjmp .L70
654 .L26:
655 0282 1092 0000 sts DispPtr,__zero_reg__
656 0286 80E0 ldi r24,lo8(__c.8)
657 0288 90E0 ldi r25,hi8(__c.8)
658 028a 9F93 push r25
659 028c 8F93 push r24
660 028e 11E0 ldi r17,lo8(1)
661 0290 1F93 push r17
662 0292 0E94 0000 call _printf_P
663 0296 84E1 ldi r24,lo8(20)
664 0298 8093 0000 sts DispPtr,r24
665 029c 0F90 pop __tmp_reg__
666 029e 0F90 pop __tmp_reg__
667 02a0 0F90 pop __tmp_reg__
668 02a2 8091 0000 lds r24,AnalogOffsetNick
669 02a6 9927 clr r25
670 02a8 9F93 push r25
671 02aa 8F93 push r24
672 02ac 80E0 ldi r24,lo8(__c.9)
673 02ae 90E0 ldi r25,hi8(__c.9)
674 02b0 9F93 push r25
675 02b2 8F93 push r24
676 02b4 1F93 push r17
677 02b6 0E94 0000 call _printf_P
678 02ba 88E2 ldi r24,lo8(40)
679 02bc 8093 0000 sts DispPtr,r24
680 02c0 0F90 pop __tmp_reg__
681 02c2 0F90 pop __tmp_reg__
682 02c4 0F90 pop __tmp_reg__
683 02c6 0F90 pop __tmp_reg__
684 02c8 0F90 pop __tmp_reg__
685 02ca 8091 0000 lds r24,AnalogOffsetRoll
686 02ce 9927 clr r25
687 02d0 9F93 push r25
688 02d2 8F93 push r24
689 02d4 80E0 ldi r24,lo8(__c.10)
690 02d6 90E0 ldi r25,hi8(__c.10)
691 02d8 9F93 push r25
692 02da 8F93 push r24
693 02dc 1F93 push r17
694 02de 0E94 0000 call _printf_P
695 02e2 8CE3 ldi r24,lo8(60)
696 02e4 8093 0000 sts DispPtr,r24
697 02e8 0F90 pop __tmp_reg__
698 02ea 0F90 pop __tmp_reg__
699 02ec 0F90 pop __tmp_reg__
700 02ee 0F90 pop __tmp_reg__
701 02f0 0F90 pop __tmp_reg__
702 02f2 8091 0000 lds r24,AnalogOffsetGier
703 02f6 9927 clr r25
704 02f8 9F93 push r25
705 02fa 8F93 push r24
706 02fc 80E0 ldi r24,lo8(__c.11)
707 02fe 90E0 ldi r25,hi8(__c.11)
708 0300 00C0 rjmp .L67
709 .L40:
710 0302 1092 0000 sts DispPtr,__zero_reg__
711 0306 80E0 ldi r24,lo8(__c.27)
712 0308 90E0 ldi r25,hi8(__c.27)
713 030a 9F93 push r25
714 030c 8F93 push r24
715 030e 11E0 ldi r17,lo8(1)
716 0310 1F93 push r17
717 0312 0E94 0000 call _printf_P
718 0316 84E1 ldi r24,lo8(20)
719 0318 8093 0000 sts DispPtr,r24
720 031c 0F90 pop __tmp_reg__
721 031e 0F90 pop __tmp_reg__
722 0320 0F90 pop __tmp_reg__
723 0322 8091 0000 lds r24,NeutralAccX
724 0326 9091 0000 lds r25,(NeutralAccX)+1
725 032a 9F93 push r25
726 032c 8F93 push r24
727 032e 8091 0000 lds r24,AdWertAccNick
728 0332 9091 0000 lds r25,(AdWertAccNick)+1
729 0336 9F93 push r25
730 0338 8F93 push r24
731 033a 80E0 ldi r24,lo8(__c.28)
732 033c 90E0 ldi r25,hi8(__c.28)
733 033e 9F93 push r25
734 0340 8F93 push r24
735 0342 1F93 push r17
736 0344 0E94 0000 call _printf_P
737 0348 88E2 ldi r24,lo8(40)
738 034a 8093 0000 sts DispPtr,r24
739 034e 2DB7 in r18,__SP_L__
740 0350 3EB7 in r19,__SP_H__
741 0352 295F subi r18,lo8(-(7))
742 0354 3F4F sbci r19,hi8(-(7))
743 0356 2DBF out __SP_L__,r18
744 0358 8091 0000 lds r24,NeutralAccY
745 035c 9091 0000 lds r25,(NeutralAccY)+1
746 0360 9F93 push r25
747 0362 8F93 push r24
748 0364 8091 0000 lds r24,AdWertAccRoll
749 0368 9091 0000 lds r25,(AdWertAccRoll)+1
750 036c 9F93 push r25
751 036e 8F93 push r24
752 0370 80E0 ldi r24,lo8(__c.29)
753 0372 90E0 ldi r25,hi8(__c.29)
754 0374 9F93 push r25
755 0376 8F93 push r24
756 0378 1F93 push r17
757 037a 0E94 0000 call _printf_P
758 037e 8CE3 ldi r24,lo8(60)
759 0380 8093 0000 sts DispPtr,r24
760 0384 8DB7 in r24,__SP_L__
761 0386 9EB7 in r25,__SP_H__
762 0388 0796 adiw r24,7
763 038a 8DBF out __SP_L__,r24
764 038c 8091 0000 lds r24,NeutralAccZ
765 0390 9091 0000 lds r25,(NeutralAccZ)+1
766 0394 A091 0000 lds r26,(NeutralAccZ)+2
767 0398 B091 0000 lds r27,(NeutralAccZ)+3
768 039c BC01 movw r22,r24
769 039e CD01 movw r24,r26
770 03a0 0E94 0000 call __fixsfsi
771 03a4 DC01 movw r26,r24
772 03a6 CB01 movw r24,r22
773 03a8 9F93 push r25
774 03aa 8F93 push r24
775 03ac 8091 0000 lds r24,Mittelwert_AccHoch
776 03b0 9091 0000 lds r25,(Mittelwert_AccHoch)+1
777 03b4 9F93 push r25
778 03b6 8F93 push r24
779 03b8 80E0 ldi r24,lo8(__c.30)
780 03ba 90E0 ldi r25,hi8(__c.30)
781 03bc 9F93 push r25
782 03be 8F93 push r24
783 03c0 1F93 push r17
784 03c2 0E94 0000 call _printf_P
785 03c6 2DB7 in r18,__SP_L__
786 03c8 3EB7 in r19,__SP_H__
787 03ca 295F subi r18,lo8(-(7))
788 03cc 3F4F sbci r19,hi8(-(7))
789 03ce 2DBF out __SP_L__,r18
790 03d0 00C0 rjmp .L20
791 .L34:
792 03d2 1092 0000 sts DispPtr,__zero_reg__
793 03d6 80E0 ldi r24,lo8(__c.23)
794 03d8 90E0 ldi r25,hi8(__c.23)
795 03da 9F93 push r25
796 03dc 8F93 push r24
797 03de 11E0 ldi r17,lo8(1)
798 03e0 1F93 push r17
799 03e2 0E94 0000 call _printf_P
800 03e6 84E1 ldi r24,lo8(20)
801 03e8 8093 0000 sts DispPtr,r24
802 03ec 0F90 pop __tmp_reg__
803 03ee 0F90 pop __tmp_reg__
804 03f0 0F90 pop __tmp_reg__
805 03f2 2091 0000 lds r18,AdNeutralNick
806 03f6 3091 0000 lds r19,(AdNeutralNick)+1
807 03fa C901 movw r24,r18
808 03fc 37FD sbrc r19,7
809 03fe 00C0 rjmp .L74
810 .L35:
811 0400 9595 asr r25
812 0402 8795 ror r24
813 0404 9595 asr r25
814 0406 8795 ror r24
815 0408 9595 asr r25
816 040a 8795 ror r24
817 040c 9595 asr r25
818 040e 8795 ror r24
819 0410 9F93 push r25
820 0412 8F93 push r24
821 0414 37FD sbrc r19,7
822 0416 00C0 rjmp .L75
823 .L36:
824 0418 3595 asr r19
825 041a 2795 ror r18
826 041c 3595 asr r19
827 041e 2795 ror r18
828 0420 3595 asr r19
829 0422 2795 ror r18
830 0424 8091 0000 lds r24,AdWertNick
831 0428 9091 0000 lds r25,(AdWertNick)+1
832 042c 821B sub r24,r18
833 042e 930B sbc r25,r19
834 0430 9F93 push r25
835 0432 8F93 push r24
836 0434 80E0 ldi r24,lo8(__c.24)
837 0436 90E0 ldi r25,hi8(__c.24)
838 0438 9F93 push r25
839 043a 8F93 push r24
840 043c 1F93 push r17
841 043e 0E94 0000 call _printf_P
842 0442 88E2 ldi r24,lo8(40)
843 0444 8093 0000 sts DispPtr,r24
844 0448 8DB7 in r24,__SP_L__
845 044a 9EB7 in r25,__SP_H__
846 044c 0796 adiw r24,7
847 044e 8DBF out __SP_L__,r24
848 0450 2091 0000 lds r18,AdNeutralRoll
849 0454 3091 0000 lds r19,(AdNeutralRoll)+1
850 0458 C901 movw r24,r18
851 045a 37FD sbrc r19,7
852 045c 00C0 rjmp .L76
853 .L37:
854 045e 9595 asr r25
855 0460 8795 ror r24
856 0462 9595 asr r25
857 0464 8795 ror r24
858 0466 9595 asr r25
859 0468 8795 ror r24
860 046a 9595 asr r25
861 046c 8795 ror r24
862 046e 9F93 push r25
863 0470 8F93 push r24
864 0472 37FD sbrc r19,7
865 0474 00C0 rjmp .L77
866 .L38:
867 0476 3595 asr r19
868 0478 2795 ror r18
869 047a 3595 asr r19
870 047c 2795 ror r18
871 047e 3595 asr r19
872 0480 2795 ror r18
873 0482 8091 0000 lds r24,AdWertRoll
874 0486 9091 0000 lds r25,(AdWertRoll)+1
875 048a 821B sub r24,r18
876 048c 930B sbc r25,r19
877 048e 9F93 push r25
878 0490 8F93 push r24
879 0492 80E0 ldi r24,lo8(__c.25)
880 0494 90E0 ldi r25,hi8(__c.25)
881 0496 9F93 push r25
882 0498 8F93 push r24
883 049a 1F93 push r17
884 049c 0E94 0000 call _printf_P
885 04a0 8CE3 ldi r24,lo8(60)
886 04a2 8093 0000 sts DispPtr,r24
887 04a6 2DB7 in r18,__SP_L__
888 04a8 3EB7 in r19,__SP_H__
889 04aa 295F subi r18,lo8(-(7))
890 04ac 3F4F sbci r19,hi8(-(7))
891 04ae 2DBF out __SP_L__,r18
892 04b0 2091 0000 lds r18,AdNeutralGier
893 04b4 3091 0000 lds r19,(AdNeutralGier)+1
894 04b8 C901 movw r24,r18
895 04ba 37FD sbrc r19,7
896 04bc 00C0 rjmp .L78
897 .L39:
898 04be 9595 asr r25
899 04c0 8795 ror r24
900 04c2 9F93 push r25
901 04c4 8F93 push r24
902 04c6 8091 0000 lds r24,AdWertGier
903 04ca 9091 0000 lds r25,(AdWertGier)+1
904 04ce 281B sub r18,r24
905 04d0 390B sbc r19,r25
906 04d2 3F93 push r19
907 04d4 2F93 push r18
908 04d6 80E0 ldi r24,lo8(__c.26)
909 04d8 90E0 ldi r25,hi8(__c.26)
910 .L69:
911 04da 9F93 push r25
912 04dc 8F93 push r24
913 04de 1F93 push r17
914 04e0 0E94 0000 call _printf_P
915 04e4 8DB7 in r24,__SP_L__
916 04e6 9EB7 in r25,__SP_H__
917 04e8 0796 adiw r24,7
918 04ea 8DBF out __SP_L__,r24
919 04ec 00C0 rjmp .L20
920 .L33:
921 04ee 1092 0000 sts DispPtr,__zero_reg__
922 04f2 80E0 ldi r24,lo8(__c.19)
923 04f4 90E0 ldi r25,hi8(__c.19)
924 04f6 9F93 push r25
925 04f8 8F93 push r24
926 04fa 11E0 ldi r17,lo8(1)
927 04fc 1F93 push r17
928 04fe 0E94 0000 call _printf_P
929 0502 84E1 ldi r24,lo8(20)
930 0504 8093 0000 sts DispPtr,r24
931 0508 0F90 pop __tmp_reg__
932 050a 0F90 pop __tmp_reg__
933 050c 0F90 pop __tmp_reg__
934 050e 8091 0000 lds r24,AdNeutralNick
935 0512 9091 0000 lds r25,(AdNeutralNick)+1
936 0516 9F93 push r25
937 0518 8F93 push r24
938 051a 80E0 ldi r24,lo8(__c.20)
939 051c 90E0 ldi r25,hi8(__c.20)
940 051e 9F93 push r25
941 0520 8F93 push r24
942 0522 1F93 push r17
943 0524 0E94 0000 call _printf_P
944 0528 88E2 ldi r24,lo8(40)
945 052a 8093 0000 sts DispPtr,r24
946 052e 0F90 pop __tmp_reg__
947 0530 0F90 pop __tmp_reg__
948 0532 0F90 pop __tmp_reg__
949 0534 0F90 pop __tmp_reg__
950 0536 0F90 pop __tmp_reg__
951 0538 8091 0000 lds r24,AdNeutralRoll
952 053c 9091 0000 lds r25,(AdNeutralRoll)+1
953 0540 9F93 push r25
954 0542 8F93 push r24
955 0544 80E0 ldi r24,lo8(__c.21)
956 0546 90E0 ldi r25,hi8(__c.21)
957 0548 9F93 push r25
958 054a 8F93 push r24
959 054c 1F93 push r17
960 054e 0E94 0000 call _printf_P
961 0552 8CE3 ldi r24,lo8(60)
962 0554 8093 0000 sts DispPtr,r24
963 0558 0F90 pop __tmp_reg__
964 055a 0F90 pop __tmp_reg__
965 055c 0F90 pop __tmp_reg__
966 055e 0F90 pop __tmp_reg__
967 0560 0F90 pop __tmp_reg__
968 0562 8091 0000 lds r24,AdNeutralGier
969 0566 9091 0000 lds r25,(AdNeutralGier)+1
970 056a 9F93 push r25
971 056c 8F93 push r24
972 056e 80E0 ldi r24,lo8(__c.22)
973 0570 90E0 ldi r25,hi8(__c.22)
974 0572 00C0 rjmp .L67
975 .L32:
976 0574 1092 0000 sts DispPtr,__zero_reg__
977 0578 8091 0000 lds r24,PPM_in+4
978 057c 9091 0000 lds r25,(PPM_in+4)+1
979 0580 9F93 push r25
980 0582 8F93 push r24
981 0584 8091 0000 lds r24,PPM_in+2
982 0588 9091 0000 lds r25,(PPM_in+2)+1
983 058c 9F93 push r25
984 058e 8F93 push r24
985 0590 80E0 ldi r24,lo8(__c.16)
986 0592 90E0 ldi r25,hi8(__c.16)
987 0594 9F93 push r25
988 0596 8F93 push r24
989 0598 11E0 ldi r17,lo8(1)
990 059a 1F93 push r17
991 059c 0E94 0000 call _printf_P
992 05a0 84E1 ldi r24,lo8(20)
993 05a2 8093 0000 sts DispPtr,r24
994 05a6 8DB7 in r24,__SP_L__
995 05a8 9EB7 in r25,__SP_H__
996 05aa 0796 adiw r24,7
997 05ac 8DBF out __SP_L__,r24
998 05ae 8091 0000 lds r24,PPM_in+8
999 05b2 9091 0000 lds r25,(PPM_in+8)+1
1000 05b6 9F93 push r25
1001 05b8 8F93 push r24
1002 05ba 8091 0000 lds r24,PPM_in+6
1003 05be 9091 0000 lds r25,(PPM_in+6)+1
1004 05c2 9F93 push r25
1005 05c4 8F93 push r24
1006 05c6 80E0 ldi r24,lo8(__c.17)
1007 05c8 90E0 ldi r25,hi8(__c.17)
1008 05ca 9F93 push r25
1009 05cc 8F93 push r24
1010 05ce 1F93 push r17
1011 05d0 0E94 0000 call _printf_P
1012 05d4 88E2 ldi r24,lo8(40)
1013 05d6 8093 0000 sts DispPtr,r24
1014 05da 2DB7 in r18,__SP_L__
1015 05dc 3EB7 in r19,__SP_H__
1016 05de 295F subi r18,lo8(-(7))
1017 05e0 3F4F sbci r19,hi8(-(7))
1018 05e2 2DBF out __SP_L__,r18
1019 05e4 8091 0000 lds r24,PPM_in+10
1020 05e8 9091 0000 lds r25,(PPM_in+10)+1
1021 05ec 9F93 push r25
1022 05ee 8F93 push r24
1023 05f0 80E0 ldi r24,lo8(__c.18)
1024 05f2 90E0 ldi r25,hi8(__c.18)
1025 05f4 00C0 rjmp .L67
1026 .L53:
1027 05f6 1092 0000 sts DispPtr,__zero_reg__
1028 05fa 80E0 ldi r24,lo8(__c.61)
1029 05fc 90E0 ldi r25,hi8(__c.61)
1030 05fe 9F93 push r25
1031 0600 8F93 push r24
1032 0602 11E0 ldi r17,lo8(1)
1033 0604 1F93 push r17
1034 0606 0E94 0000 call _printf_P
1035 060a 84E1 ldi r24,lo8(20)
1036 060c 8093 0000 sts DispPtr,r24
1037 0610 0F90 pop __tmp_reg__
1038 0612 0F90 pop __tmp_reg__
1039 0614 0F90 pop __tmp_reg__
1040 0616 8091 0000 lds r24,FlugMinuten
1041 061a 9091 0000 lds r25,(FlugMinuten)+1
1042 061e 9F93 push r25
1043 0620 8F93 push r24
1044 0622 80E0 ldi r24,lo8(__c.62)
1045 0624 90E0 ldi r25,hi8(__c.62)
1046 0626 9F93 push r25
1047 0628 8F93 push r24
1048 062a 1F93 push r17
1049 062c 0E94 0000 call _printf_P
1050 0630 88E2 ldi r24,lo8(40)
1051 0632 8093 0000 sts DispPtr,r24
1052 0636 0F90 pop __tmp_reg__
1053 0638 0F90 pop __tmp_reg__
1054 063a 0F90 pop __tmp_reg__
1055 063c 0F90 pop __tmp_reg__
1056 063e 0F90 pop __tmp_reg__
1057 0640 8091 0000 lds r24,FlugMinutenGesamt
1058 0644 9091 0000 lds r25,(FlugMinutenGesamt)+1
1059 0648 9F93 push r25
1060 064a 8F93 push r24
1061 064c 80E0 ldi r24,lo8(__c.63)
1062 064e 90E0 ldi r25,hi8(__c.63)
1063 0650 9F93 push r25
1064 0652 8F93 push r24
1065 0654 1F93 push r17
1066 0656 0E94 0000 call _printf_P
1067 065a 89E4 ldi r24,lo8(73)
1068 065c 8093 0000 sts DispPtr,r24
1069 0660 0F90 pop __tmp_reg__
1070 0662 0F90 pop __tmp_reg__
1071 0664 0F90 pop __tmp_reg__
1072 0666 0F90 pop __tmp_reg__
1073 0668 0F90 pop __tmp_reg__
1074 066a 80E0 ldi r24,lo8(__c.64)
1075 066c 90E0 ldi r25,hi8(__c.64)
1076 066e 9F93 push r25
1077 0670 8F93 push r24
1078 0672 1F93 push r17
1079 0674 0E94 0000 call _printf_P
1080 0678 8091 0000 lds r24,RemoteKeys
1081 067c 0F90 pop __tmp_reg__
1082 067e 0F90 pop __tmp_reg__
1083 0680 0F90 pop __tmp_reg__
1084 0682 83FF sbrs r24,3
1085 0684 00C0 rjmp .L20
1086 0686 1092 0000 sts (FlugMinuten)+1,__zero_reg__
1087 068a 1092 0000 sts FlugMinuten,__zero_reg__
1088 .L55:
1089 068e F999 sbic 63-0x20,1
1090 0690 00C0 rjmp .L55
1091 0692 1FBA out 63-0x20,__zero_reg__
1092 0694 80E0 ldi r24,lo8(EEPromArray+14)
1093 0696 90E0 ldi r25,hi8(EEPromArray+14)
1094 0698 92BD out (65)+1-0x20,r25
1095 069a 81BD out 65-0x20,r24
1096 069c 10BC out 64-0x20,__zero_reg__
1097 /* #APP */
1098 /* START EEPROM WRITE CRITICAL SECTION */
1099 069e 0FB6 in r0, 63
1100 06a0 F894 cli
1101 06a2 FA9A sbi 31, 2
1102 06a4 F99A sbi 31, 1
1103 06a6 0FBE out 63, r0
1104 /* END EEPROM WRITE CRITICAL SECTION */
1105 /* #NOAPP */
1106 06a8 2091 0000 lds r18,FlugMinuten
1107 .L59:
1108 06ac F999 sbic 63-0x20,1
1109 06ae 00C0 rjmp .L59
1110 06b0 1FBA out 63-0x20,__zero_reg__
1111 06b2 80E0 ldi r24,lo8(EEPromArray+15)
1112 06b4 90E0 ldi r25,hi8(EEPromArray+15)
1113 06b6 92BD out (65)+1-0x20,r25
1114 06b8 81BD out 65-0x20,r24
1115 06ba 20BD out 64-0x20,r18
1116 /* #APP */
1117 /* START EEPROM WRITE CRITICAL SECTION */
1118 06bc 0FB6 in r0, 63
1119 06be F894 cli
1120 06c0 FA9A sbi 31, 2
1121 06c2 F99A sbi 31, 1
1122 06c4 0FBE out 63, r0
1123 /* END EEPROM WRITE CRITICAL SECTION */
1124 /* #NOAPP */
1125 06c6 00C0 rjmp .L20
1126 .L49:
1127 06c8 1092 0000 sts DispPtr,__zero_reg__
1128 06cc 80E0 ldi r24,lo8(__c.54)
1129 06ce 90E0 ldi r25,hi8(__c.54)
1130 06d0 9F93 push r25
1131 06d2 8F93 push r24
1132 06d4 11E0 ldi r17,lo8(1)
1133 06d6 1F93 push r17
1134 06d8 0E94 0000 call _printf_P
1135 06dc 84E1 ldi r24,lo8(20)
1136 06de 8093 0000 sts DispPtr,r24
1137 06e2 0F90 pop __tmp_reg__
1138 06e4 0F90 pop __tmp_reg__
1139 06e6 0F90 pop __tmp_reg__
1140 06e8 8091 0000 lds r24,MotorPresent+3
1141 06ec 9927 clr r25
1142 06ee 8D96 adiw r24,45
1143 06f0 9F93 push r25
1144 06f2 8F93 push r24
1145 06f4 8091 0000 lds r24,MotorPresent+2
1146 06f8 9927 clr r25
1147 06fa 8D96 adiw r24,45
1148 06fc 9F93 push r25
1149 06fe 8F93 push r24
1150 0700 8091 0000 lds r24,MotorPresent+1
1151 0704 9927 clr r25
1152 0706 8D96 adiw r24,45
1153 0708 9F93 push r25
1154 070a 8F93 push r24
1155 070c 8091 0000 lds r24,MotorPresent
1156 0710 9927 clr r25
1157 0712 8D96 adiw r24,45
1158 0714 9F93 push r25
1159 0716 8F93 push r24
1160 0718 80E0 ldi r24,lo8(__c.55)
1161 071a 90E0 ldi r25,hi8(__c.55)
1162 071c 9F93 push r25
1163 071e 8F93 push r24
1164 0720 1F93 push r17
1165 0722 0E94 0000 call _printf_P
1166 0726 88E2 ldi r24,lo8(40)
1167 0728 8093 0000 sts DispPtr,r24
1168 072c 8DB7 in r24,__SP_L__
1169 072e 9EB7 in r25,__SP_H__
1170 0730 0B96 adiw r24,11
1171 0732 8DBF out __SP_L__,r24
1172 0734 8091 0000 lds r24,MotorPresent+7
1173 0738 9927 clr r25
1174 073a 8D96 adiw r24,45
1175 073c 9F93 push r25
1176 073e 8F93 push r24
1177 0740 8091 0000 lds r24,MotorPresent+6
1178 0744 9927 clr r25
1179 0746 8D96 adiw r24,45
1180 0748 9F93 push r25
1181 074a 8F93 push r24
1182 074c 8091 0000 lds r24,MotorPresent+5
1183 0750 9927 clr r25
1184 0752 8D96 adiw r24,45
1185 0754 9F93 push r25
1186 0756 8F93 push r24
1187 0758 8091 0000 lds r24,MotorPresent+4
1188 075c 9927 clr r25
1189 075e 8D96 adiw r24,45
1190 0760 9F93 push r25
1191 0762 8F93 push r24
1192 0764 80E0 ldi r24,lo8(__c.56)
1193 0766 90E0 ldi r25,hi8(__c.56)
1194 0768 9F93 push r25
1195 076a 8F93 push r24
1196 076c 1F93 push r17
1197 076e 0E94 0000 call _printf_P
1198 0772 8CE3 ldi r24,lo8(60)
1199 0774 8093 0000 sts DispPtr,r24
1200 0778 2DB7 in r18,__SP_L__
1201 077a 3EB7 in r19,__SP_H__
1202 077c 255F subi r18,lo8(-(11))
1203 077e 3F4F sbci r19,hi8(-(11))
1204 0780 2DBF out __SP_L__,r18
1205 0782 8091 0000 lds r24,MotorPresent+8
1206 0786 9927 clr r25
1207 0788 8D96 adiw r24,45
1208 078a 9F93 push r25
1209 078c 8F93 push r24
1210 078e 80E0 ldi r24,lo8(__c.57)
1211 0790 90E0 ldi r25,hi8(__c.57)
1212 0792 9F93 push r25
1213 0794 8F93 push r24
1214 0796 1F93 push r17
1215 0798 0E94 0000 call _printf_P
1216 079c 0F90 pop __tmp_reg__
1217 079e 0F90 pop __tmp_reg__
1218 07a0 0F90 pop __tmp_reg__
1219 07a2 0F90 pop __tmp_reg__
1220 07a4 0F90 pop __tmp_reg__
1221 07a6 8091 0000 lds r24,MotorPresent+9
1222 07aa 8823 tst r24
1223 07ac 01F0 breq .+2
1224 07ae 00C0 rjmp .L79
1225 .L50:
1226 07b0 8091 0000 lds r24,MotorPresent+10
1227 07b4 8823 tst r24
1228 07b6 01F0 breq .+2
1229 07b8 00C0 rjmp .L80
1230 .L51:
1231 07ba 8091 0000 lds r24,MotorPresent+11
1232 07be 8823 tst r24
1233 07c0 01F4 brne .+2
1234 07c2 00C0 rjmp .L20
1235 07c4 88E4 ldi r24,lo8(72)
1236 07c6 8093 0000 sts DispPtr,r24
1237 07ca 80E0 ldi r24,lo8(__c.60)
1238 07cc 90E0 ldi r25,hi8(__c.60)
1239 .L66:
1240 07ce 9F93 push r25
1241 07d0 8F93 push r24
1242 07d2 1F93 push r17
1243 07d4 0E94 0000 call _printf_P
1244 07d8 0F90 pop __tmp_reg__
1245 07da 0F90 pop __tmp_reg__
1246 07dc 0F90 pop __tmp_reg__
1247 07de 00C0 rjmp .L20
1248 .L45:
1249 07e0 8091 0000 lds r24,EE_Parameter+8
1250 07e4 80FF sbrs r24,0
1251 07e6 00C0 rjmp .L46
1252 07e8 1092 0000 sts DispPtr,__zero_reg__
1253 07ec 8091 0000 lds r24,HoehenWert
1254 07f0 9091 0000 lds r25,(HoehenWert)+1
1255 07f4 A091 0000 lds r26,(HoehenWert)+2
1256 07f8 B091 0000 lds r27,(HoehenWert)+3
1257 07fc BF93 push r27
1258 07fe AF93 push r26
1259 0800 9F93 push r25
1260 0802 8F93 push r24
1261 0804 80E0 ldi r24,lo8(__c.44)
1262 0806 90E0 ldi r25,hi8(__c.44)
1263 0808 9F93 push r25
1264 080a 8F93 push r24
1265 080c 11E0 ldi r17,lo8(1)
1266 080e 1F93 push r17
1267 0810 0E94 0000 call _printf_P
1268 0814 84E1 ldi r24,lo8(20)
1269 0816 8093 0000 sts DispPtr,r24
1270 081a 2DB7 in r18,__SP_L__
1271 081c 3EB7 in r19,__SP_H__
1272 081e 295F subi r18,lo8(-(7))
1273 0820 3F4F sbci r19,hi8(-(7))
1274 0822 2DBF out __SP_L__,r18
1275 0824 8091 0000 lds r24,SollHoehe
1276 0828 9091 0000 lds r25,(SollHoehe)+1
1277 082c A091 0000 lds r26,(SollHoehe)+2
1278 0830 B091 0000 lds r27,(SollHoehe)+3
1279 0834 BF93 push r27
1280 0836 AF93 push r26
1281 0838 9F93 push r25
1282 083a 8F93 push r24
1283 083c 80E0 ldi r24,lo8(__c.45)
1284 083e 90E0 ldi r25,hi8(__c.45)
1285 0840 9F93 push r25
1286 0842 8F93 push r24
1287 0844 1F93 push r17
1288 0846 0E94 0000 call _printf_P
1289 084a 88E2 ldi r24,lo8(40)
1290 084c 8093 0000 sts DispPtr,r24
1291 0850 8DB7 in r24,__SP_L__
1292 0852 9EB7 in r25,__SP_H__
1293 0854 0796 adiw r24,7
1294 0856 8DBF out __SP_L__,r24
1295 0858 8091 0000 lds r24,MessLuftdruck
1296 085c 9091 0000 lds r25,(MessLuftdruck)+1
1297 0860 9F93 push r25
1298 0862 8F93 push r24
1299 0864 80E0 ldi r24,lo8(__c.46)
1300 0866 90E0 ldi r25,hi8(__c.46)
1301 0868 9F93 push r25
1302 086a 8F93 push r24
1303 086c 1F93 push r17
1304 086e 0E94 0000 call _printf_P
1305 0872 8CE3 ldi r24,lo8(60)
1306 0874 8093 0000 sts DispPtr,r24
1307 0878 0F90 pop __tmp_reg__
1308 087a 0F90 pop __tmp_reg__
1309 087c 0F90 pop __tmp_reg__
1310 087e 0F90 pop __tmp_reg__
1311 0880 0F90 pop __tmp_reg__
1312 0882 8091 0000 lds r24,DruckOffsetSetting
1313 0886 9927 clr r25
1314 0888 9F93 push r25
1315 088a 8F93 push r24
1316 088c 80E0 ldi r24,lo8(__c.47)
1317 088e 90E0 ldi r25,hi8(__c.47)
1318 0890 00C0 rjmp .L67
1319 .L44:
1320 0892 1092 0000 sts DispPtr,__zero_reg__
1321 0896 80E0 ldi r24,lo8(__c.41)
1322 0898 90E0 ldi r25,hi8(__c.41)
1323 089a 9F93 push r25
1324 089c 8F93 push r24
1325 089e 11E0 ldi r17,lo8(1)
1326 08a0 1F93 push r17
1327 08a2 0E94 0000 call _printf_P
1328 08a6 84E1 ldi r24,lo8(20)
1329 08a8 8093 0000 sts DispPtr,r24
1330 08ac 0F90 pop __tmp_reg__
1331 08ae 0F90 pop __tmp_reg__
1332 08b0 0F90 pop __tmp_reg__
1333 08b2 8091 0000 lds r24,Parameter_ServoNickControl
1334 08b6 9927 clr r25
1335 08b8 9F93 push r25
1336 08ba 8F93 push r24
1337 08bc 80E0 ldi r24,lo8(__c.42)
1338 08be 90E0 ldi r25,hi8(__c.42)
1339 08c0 9F93 push r25
1340 08c2 8F93 push r24
1341 08c4 1F93 push r17
1342 08c6 0E94 0000 call _printf_P
1343 08ca 8CE3 ldi r24,lo8(60)
1344 08cc 8093 0000 sts DispPtr,r24
1345 08d0 0F90 pop __tmp_reg__
1346 08d2 0F90 pop __tmp_reg__
1347 08d4 0F90 pop __tmp_reg__
1348 08d6 0F90 pop __tmp_reg__
1349 08d8 0F90 pop __tmp_reg__
1350 08da 8091 0000 lds r24,EE_Parameter+42
1351 08de 9927 clr r25
1352 08e0 9F93 push r25
1353 08e2 8F93 push r24
1354 08e4 8091 0000 lds r24,EE_Parameter+41
1355 08e8 9927 clr r25
1356 08ea 9F93 push r25
1357 08ec 8F93 push r24
1358 08ee 80E0 ldi r24,lo8(__c.43)
1359 08f0 90E0 ldi r25,hi8(__c.43)
1360 08f2 00C0 rjmp .L69
1361 .L48:
1362 08f4 1092 0000 sts DispPtr,__zero_reg__
1363 08f8 80E0 ldi r24,lo8(__c.50)
1364 08fa 90E0 ldi r25,hi8(__c.50)
1365 08fc 9F93 push r25
1366 08fe 8F93 push r24
1367 0900 11E0 ldi r17,lo8(1)
1368 0902 1F93 push r17
1369 0904 0E94 0000 call _printf_P
1370 0908 84E1 ldi r24,lo8(20)
1371 090a 8093 0000 sts DispPtr,r24
1372 090e 0F90 pop __tmp_reg__
1373 0910 0F90 pop __tmp_reg__
1374 0912 0F90 pop __tmp_reg__
1375 0914 8091 0000 lds r24,MotorError+3
1376 0918 9927 clr r25
1377 091a 9F93 push r25
1378 091c 8F93 push r24
1379 091e 8091 0000 lds r24,MotorError+2
1380 0922 9927 clr r25
1381 0924 9F93 push r25
1382 0926 8F93 push r24
1383 0928 8091 0000 lds r24,MotorError+1
1384 092c 9927 clr r25
1385 092e 9F93 push r25
1386 0930 8F93 push r24
1387 0932 8091 0000 lds r24,MotorError
1388 0936 9927 clr r25
1389 0938 9F93 push r25
1390 093a 8F93 push r24
1391 093c 80E0 ldi r24,lo8(__c.51)
1392 093e 90E0 ldi r25,hi8(__c.51)
1393 0940 9F93 push r25
1394 0942 8F93 push r24
1395 0944 1F93 push r17
1396 0946 0E94 0000 call _printf_P
1397 094a 88E2 ldi r24,lo8(40)
1398 094c 8093 0000 sts DispPtr,r24
1399 0950 2DB7 in r18,__SP_L__
1400 0952 3EB7 in r19,__SP_H__
1401 0954 255F subi r18,lo8(-(11))
1402 0956 3F4F sbci r19,hi8(-(11))
1403 0958 2DBF out __SP_L__,r18
1404 095a 8091 0000 lds r24,MotorError+7
1405 095e 9927 clr r25
1406 0960 9F93 push r25
1407 0962 8F93 push r24
1408 0964 8091 0000 lds r24,MotorError+6
1409 0968 9927 clr r25
1410 096a 9F93 push r25
1411 096c 8F93 push r24
1412 096e 8091 0000 lds r24,MotorError+5
1413 0972 9927 clr r25
1414 0974 9F93 push r25
1415 0976 8F93 push r24
1416 0978 8091 0000 lds r24,MotorError+4
1417 097c 9927 clr r25
1418 097e 9F93 push r25
1419 0980 8F93 push r24
1420 0982 80E0 ldi r24,lo8(__c.52)
1421 0984 90E0 ldi r25,hi8(__c.52)
1422 0986 9F93 push r25
1423 0988 8F93 push r24
1424 098a 1F93 push r17
1425 098c 0E94 0000 call _printf_P
1426 0990 8CE3 ldi r24,lo8(60)
1427 0992 8093 0000 sts DispPtr,r24
1428 0996 8DB7 in r24,__SP_L__
1429 0998 9EB7 in r25,__SP_H__
1430 099a 0B96 adiw r24,11
1431 099c 8DBF out __SP_L__,r24
1432 099e 8091 0000 lds r24,MotorError+11
1433 09a2 9927 clr r25
1434 09a4 9F93 push r25
1435 09a6 8F93 push r24
1436 09a8 8091 0000 lds r24,MotorError+10
1437 09ac 9927 clr r25
1438 09ae 9F93 push r25
1439 09b0 8F93 push r24
1440 09b2 8091 0000 lds r24,MotorError+9
1441 09b6 9927 clr r25
1442 09b8 9F93 push r25
1443 09ba 8F93 push r24
1444 09bc 8091 0000 lds r24,MotorError+8
1445 09c0 9927 clr r25
1446 09c2 9F93 push r25
1447 09c4 8F93 push r24
1448 09c6 80E0 ldi r24,lo8(__c.53)
1449 09c8 90E0 ldi r25,hi8(__c.53)
1450 09ca 9F93 push r25
1451 09cc 8F93 push r24
1452 09ce 1F93 push r17
1453 09d0 0E94 0000 call _printf_P
1454 09d4 2DB7 in r18,__SP_L__
1455 09d6 3EB7 in r19,__SP_H__
1456 09d8 255F subi r18,lo8(-(11))
1457 09da 3F4F sbci r19,hi8(-(11))
1458 09dc 2DBF out __SP_L__,r18
1459 09de 00C0 rjmp .L20
1460 .L43:
1461 09e0 1092 0000 sts DispPtr,__zero_reg__
1462 09e4 8091 0000 lds r24,Poti1
1463 09e8 9091 0000 lds r25,(Poti1)+1
1464 09ec 9F93 push r25
1465 09ee 8F93 push r24
1466 09f0 80E0 ldi r24,lo8(__c.37)
1467 09f2 90E0 ldi r25,hi8(__c.37)
1468 09f4 9F93 push r25
1469 09f6 8F93 push r24
1470 09f8 11E0 ldi r17,lo8(1)
1471 09fa 1F93 push r17
1472 09fc 0E94 0000 call _printf_P
1473 0a00 84E1 ldi r24,lo8(20)
1474 0a02 8093 0000 sts DispPtr,r24
1475 0a06 0F90 pop __tmp_reg__
1476 0a08 0F90 pop __tmp_reg__
1477 0a0a 0F90 pop __tmp_reg__
1478 0a0c 0F90 pop __tmp_reg__
1479 0a0e 0F90 pop __tmp_reg__
1480 0a10 8091 0000 lds r24,Poti2
1481 0a14 9091 0000 lds r25,(Poti2)+1
1482 0a18 9F93 push r25
1483 0a1a 8F93 push r24
1484 0a1c 80E0 ldi r24,lo8(__c.38)
1485 0a1e 90E0 ldi r25,hi8(__c.38)
1486 0a20 9F93 push r25
1487 0a22 8F93 push r24
1488 0a24 1F93 push r17
1489 0a26 0E94 0000 call _printf_P
1490 0a2a 88E2 ldi r24,lo8(40)
1491 0a2c 8093 0000 sts DispPtr,r24
1492 0a30 0F90 pop __tmp_reg__
1493 0a32 0F90 pop __tmp_reg__
1494 0a34 0F90 pop __tmp_reg__
1495 0a36 0F90 pop __tmp_reg__
1496 0a38 0F90 pop __tmp_reg__
1497 0a3a 8091 0000 lds r24,Poti3
1498 0a3e 9091 0000 lds r25,(Poti3)+1
1499 0a42 9F93 push r25
1500 0a44 8F93 push r24
1501 0a46 80E0 ldi r24,lo8(__c.39)
1502 0a48 90E0 ldi r25,hi8(__c.39)
1503 0a4a 9F93 push r25
1504 0a4c 8F93 push r24
1505 0a4e 1F93 push r17
1506 0a50 0E94 0000 call _printf_P
1507 0a54 8CE3 ldi r24,lo8(60)
1508 0a56 8093 0000 sts DispPtr,r24
1509 0a5a 0F90 pop __tmp_reg__
1510 0a5c 0F90 pop __tmp_reg__
1511 0a5e 0F90 pop __tmp_reg__
1512 0a60 0F90 pop __tmp_reg__
1513 0a62 0F90 pop __tmp_reg__
1514 0a64 8091 0000 lds r24,Poti4
1515 0a68 9091 0000 lds r25,(Poti4)+1
1516 0a6c 9F93 push r25
1517 0a6e 8F93 push r24
1518 0a70 80E0 ldi r24,lo8(__c.40)
1519 0a72 90E0 ldi r25,hi8(__c.40)
1520 0a74 00C0 rjmp .L67
1521 .L42:
1522 0a76 1092 0000 sts DispPtr,__zero_reg__
1523 0a7a 80E0 ldi r24,lo8(__c.33)
1524 0a7c 90E0 ldi r25,hi8(__c.33)
1525 0a7e 9F93 push r25
1526 0a80 8F93 push r24
1527 0a82 11E0 ldi r17,lo8(1)
1528 0a84 1F93 push r17
1529 0a86 0E94 0000 call _printf_P
1530 0a8a 84E1 ldi r24,lo8(20)
1531 0a8c 8093 0000 sts DispPtr,r24
1532 0a90 0F90 pop __tmp_reg__
1533 0a92 0F90 pop __tmp_reg__
1534 0a94 0F90 pop __tmp_reg__
1535 0a96 8091 0000 lds r24,KompassRichtung
1536 0a9a 9091 0000 lds r25,(KompassRichtung)+1
1537 0a9e 9F93 push r25
1538 0aa0 8F93 push r24
1539 0aa2 80E0 ldi r24,lo8(__c.34)
1540 0aa4 90E0 ldi r25,hi8(__c.34)
1541 0aa6 9F93 push r25
1542 0aa8 8F93 push r24
1543 0aaa 1F93 push r17
1544 0aac 0E94 0000 call _printf_P
1545 0ab0 88E2 ldi r24,lo8(40)
1546 0ab2 8093 0000 sts DispPtr,r24
1547 0ab6 0F90 pop __tmp_reg__
1548 0ab8 0F90 pop __tmp_reg__
1549 0aba 0F90 pop __tmp_reg__
1550 0abc 0F90 pop __tmp_reg__
1551 0abe 0F90 pop __tmp_reg__
1552 0ac0 8091 0000 lds r24,KompassValue
1553 0ac4 9091 0000 lds r25,(KompassValue)+1
1554 0ac8 9F93 push r25
1555 0aca 8F93 push r24
1556 0acc 80E0 ldi r24,lo8(__c.35)
1557 0ace 90E0 ldi r25,hi8(__c.35)
1558 0ad0 9F93 push r25
1559 0ad2 8F93 push r24
1560 0ad4 1F93 push r17
1561 0ad6 0E94 0000 call _printf_P
1562 0ada 8CE3 ldi r24,lo8(60)
1563 0adc 8093 0000 sts DispPtr,r24
1564 0ae0 0F90 pop __tmp_reg__
1565 0ae2 0F90 pop __tmp_reg__
1566 0ae4 0F90 pop __tmp_reg__
1567 0ae6 0F90 pop __tmp_reg__
1568 0ae8 0F90 pop __tmp_reg__
1569 0aea 8091 0000 lds r24,KompassStartwert
1570 0aee 9091 0000 lds r25,(KompassStartwert)+1
1571 0af2 9F93 push r25
1572 0af4 8F93 push r24
1573 0af6 80E0 ldi r24,lo8(__c.36)
1574 0af8 90E0 ldi r25,hi8(__c.36)
1575 0afa 00C0 rjmp .L67
1576 .L46:
1577 0afc 84E1 ldi r24,lo8(20)
1578 0afe 8093 0000 sts DispPtr,r24
1579 0b02 80E0 ldi r24,lo8(__c.48)
1580 0b04 90E0 ldi r25,hi8(__c.48)
1581 0b06 9F93 push r25
1582 0b08 8F93 push r24
1583 0b0a 11E0 ldi r17,lo8(1)
1584 0b0c 1F93 push r17
1585 0b0e 0E94 0000 call _printf_P
1586 0b12 88E2 ldi r24,lo8(40)
1587 0b14 8093 0000 sts DispPtr,r24
1588 0b18 0F90 pop __tmp_reg__
1589 0b1a 0F90 pop __tmp_reg__
1590 0b1c 0F90 pop __tmp_reg__
1591 0b1e 80E0 ldi r24,lo8(__c.49)
1592 0b20 90E0 ldi r25,hi8(__c.49)
1593 0b22 00C0 rjmp .L66
1594 .L24:
1595 0b24 8CE3 ldi r24,lo8(60)
1596 0b26 8093 0000 sts DispPtr,r24
1597 0b2a 80E0 ldi r24,lo8(__c.7)
1598 0b2c 90E0 ldi r25,hi8(__c.7)
1599 0b2e 00C0 rjmp .L66
1600 .L73:
1601 0b30 8CE3 ldi r24,lo8(60)
1602 0b32 8093 0000 sts DispPtr,r24
1603 0b36 80E0 ldi r24,lo8(__c.5)
1604 0b38 90E0 ldi r25,hi8(__c.5)
1605 0b3a 00C0 rjmp .L66
1606 .L80:
1607 0b3c 84E4 ldi r24,lo8(68)
1608 0b3e 8093 0000 sts DispPtr,r24
1609 0b42 80E0 ldi r24,lo8(__c.59)
1610 0b44 90E0 ldi r25,hi8(__c.59)
1611 0b46 9F93 push r25
1612 0b48 8F93 push r24
1613 0b4a 1F93 push r17
1614 0b4c 0E94 0000 call _printf_P
1615 0b50 0F90 pop __tmp_reg__
1616 0b52 0F90 pop __tmp_reg__
1617 0b54 0F90 pop __tmp_reg__
1618 0b56 00C0 rjmp .L51
1619 .L79:
1620 0b58 80E4 ldi r24,lo8(64)
1621 0b5a 8093 0000 sts DispPtr,r24
1622 0b5e 80E0 ldi r24,lo8(__c.58)
1623 0b60 90E0 ldi r25,hi8(__c.58)
1624 0b62 9F93 push r25
1625 0b64 8F93 push r24
1626 0b66 1F93 push r17
1627 0b68 0E94 0000 call _printf_P
1628 0b6c 0F90 pop __tmp_reg__
1629 0b6e 0F90 pop __tmp_reg__
1630 0b70 0F90 pop __tmp_reg__
1631 0b72 00C0 rjmp .L50
1632 .L78:
1633 0b74 0196 adiw r24,1
1634 0b76 00C0 rjmp .L39
1635 .L75:
1636 0b78 295F subi r18,lo8(-(7))
1637 0b7a 3F4F sbci r19,hi8(-(7))
1638 0b7c 00C0 rjmp .L36
1639 .L74:
1640 0b7e 0F96 adiw r24,15
1641 0b80 00C0 rjmp .L35
1642 .L77:
1643 0b82 295F subi r18,lo8(-(7))
1644 0b84 3F4F sbci r19,hi8(-(7))
1645 0b86 00C0 rjmp .L38
1646 .L76:
1647 0b88 0F96 adiw r24,15
1648 0b8a 00C0 rjmp .L37
1649 .L20:
1650 0b8c 1092 0000 sts RemoteKeys,__zero_reg__
1651 /* epilogue: frame size=0 */
1652 0b90 1F91 pop r17
1653 0b92 0895 ret
1654 /* epilogue end (size=2) */
1655 /* function Menu size 1516 (1513) */
1657 .comm Mixer,77,1
1658 /* File "menu.c": code 1525 = 0x05f5 (1521), prologues 1, epilogues 3 */
DEFINED SYMBOLS
*ABS*:00000000 menu.c
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:3 *ABS*:0000003f __SREG__
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:4 *ABS*:0000003e __SP_H__
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:5 *ABS*:0000003d __SP_L__
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:15 .bss:00000000 RemoteKeys
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:21 .bss:00000001 MenuePunkt
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:27 .data:00000000 MaxMenue
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:34 .bss:00000002 DispPtr
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:40 .data:00000001 DisplayBuff
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:46 .data:00000051 Array
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:62 .bss:00000003 TestInt
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:67 .text:00000000 LcdClear
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:87 .progmem.data:00000000 __c.0
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:91 .progmem.data:00000005 __c.1
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:95 .progmem.data:0000000a __c.2
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:99 .progmem.data:0000001a __c.3
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:103 .progmem.data:0000002f __c.4
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:107 .progmem.data:0000003d __c.5
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:111 .progmem.data:0000004a __c.6
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:115 .progmem.data:0000005f __c.7
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:119 .progmem.data:00000071 __c.8
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:123 .progmem.data:0000007c __c.9
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:127 .progmem.data:00000080 __c.10
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:131 .progmem.data:00000084 __c.11
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:135 .progmem.data:00000088 __c.12
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:139 .progmem.data:00000095 __c.13
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:143 .progmem.data:00000099 __c.14
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:147 .progmem.data:000000a3 __c.15
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:151 .progmem.data:000000a7 __c.16
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:155 .progmem.data:000000b7 __c.17
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:159 .progmem.data:000000c7 __c.18
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:163 .progmem.data:000000d7 __c.19
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:167 .progmem.data:000000e4 __c.20
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:171 .progmem.data:000000f3 __c.21
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:175 .progmem.data:00000102 __c.22
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:179 .progmem.data:00000111 __c.23
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:183 .progmem.data:0000011f __c.24
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:187 .progmem.data:0000012e __c.25
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:191 .progmem.data:0000013d __c.26
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:195 .progmem.data:0000014c __c.27
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:199 .progmem.data:00000159 __c.28
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:203 .progmem.data:00000168 __c.29
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:207 .progmem.data:00000177 __c.30
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:211 .progmem.data:00000186 __c.31
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:215 .progmem.data:00000195 __c.32
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:219 .progmem.data:000001a4 __c.33
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:223 .progmem.data:000001af __c.34
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:227 .progmem.data:000001bd __c.35
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:231 .progmem.data:000001c8 __c.36
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:235 .progmem.data:000001d7 __c.37
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:239 .progmem.data:000001e3 __c.38
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:243 .progmem.data:000001ef __c.39
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:247 .progmem.data:000001fb __c.40
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:251 .progmem.data:00000207 __c.41
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:255 .progmem.data:0000020f __c.42
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:259 .progmem.data:0000021d __c.43
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:263 .progmem.data:0000022b __c.44
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:267 .progmem.data:0000023a __c.45
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:271 .progmem.data:00000249 __c.46
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:275 .progmem.data:00000258 __c.47
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:279 .progmem.data:00000267 __c.48
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:283 .progmem.data:0000026e __c.49
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:287 .progmem.data:0000027c __c.50
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:291 .progmem.data:0000028c __c.51
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:295 .progmem.data:000002a1 __c.52
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:299 .progmem.data:000002b6 __c.53
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:303 .progmem.data:000002cb __c.54
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:307 .progmem.data:000002da __c.55
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:311 .progmem.data:000002ee __c.56
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:315 .progmem.data:00000302 __c.57
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:319 .progmem.data:00000312 __c.58
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:323 .progmem.data:00000315 __c.59
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:327 .progmem.data:00000318 __c.60
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:331 .progmem.data:0000031b __c.61
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:335 .progmem.data:00000329 __c.62
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:339 .progmem.data:00000336 __c.63
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:343 .progmem.data:00000343 __c.64
C:\Users\Bernd\AppData\Local\Temp/cchoZETG.s:348 .text:00000012 Menu
*COM*:0000004d Mixer
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
_printf_P
__tablejump2__
UBat
SenderOkay
PlatinenVersion
__udivmodqi4
GetActiveParamSetNumber
I2CTimeout
MissingMotor
EE_Parameter
EEPromArray
AnalogOffsetNick
AnalogOffsetRoll
AnalogOffsetGier
NeutralAccX
AdWertAccNick
NeutralAccY
AdWertAccRoll
NeutralAccZ
__fixsfsi
Mittelwert_AccHoch
AdNeutralNick
AdWertNick
AdNeutralRoll
AdWertRoll
AdNeutralGier
AdWertGier
PPM_in
FlugMinuten
FlugMinutenGesamt
MotorPresent
HoehenWert
SollHoehe
MessLuftdruck
DruckOffsetSetting
Parameter_ServoNickControl
MotorError
Poti1
Poti2
Poti3
Poti4
KompassRichtung
KompassValue
KompassStartwert
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/mymath.c
0,0 → 1,134
/**************************************************************************************************************************************
* File: mymath.c
*
* Purpose: mathematic functions
*
* Functions: int16_t c_sin_8192(int16_t angle)
* int16_t c_cos_8192(int16_t angle)
* int16_t c_atan2(int16_t y, int16_t x)
* uint32_t c_sqrt(uint32_t a)
*
* hardware: Flight Ctrl V1.3
*
* Created: Feb 2013
*
*************************************************************************************************************************************/
#include "mymath.h"
 
#include <stdlib.h>
#include <avr/pgmspace.h>
 
 
 
const uint16_t pgm_sinlookup[91] PROGMEM = {0, 143, 286, 429, 571, 714, 856, 998, 1140, 1282, 1423, 1563, 1703, 1843, 1982, 2120, 2258, 2395, 2531, 2667, 2802, 2936, 3069, 3201, 3332, 3462, 3591, 3719, 3846, 3972, 4096, 4219, 4341, 4462, 4581, 4699, 4815, 4930, 5043, 5155, 5266, 5374, 5482, 5587, 5691, 5793, 5893, 5991, 6088, 6183, 6275, 6366, 6455, 6542, 6627, 6710, 6791, 6870, 6947, 7022, 7094, 7165, 7233, 7299, 7363, 7424, 7484, 7541, 7595, 7648, 7698, 7746, 7791, 7834, 7875, 7913, 7949, 7982, 8013, 8041, 8068, 8091, 8112, 8131, 8147, 8161, 8172, 8181, 8187, 8191, 8192};
 
//----------------------------------------------------------------------------------------------------------------------------------
// Sinus with argument in degree at an angular resolution of 1 degree and a discretisation of 13 bit.
//----------------------------------------------------------------------------------------------------------------------------------
int16_t c_sin_8192(int16_t angle)
{
int8_t m,n;
int16_t sinus;
 
// avoid negative angles
if (angle < 0)
{
m = -1;
angle = abs(angle);
}
else m = +1;
 
// fold angle to intervall 0 to 359
angle %= 360;
 
// check quadrant
if (angle <= 90) n=1; // first quadrant
else if ((angle > 90) && (angle <= 180)) {angle = 180 - angle; n = 1;} // second quadrant
else if ((angle > 180) && (angle <= 270)) {angle = angle - 180; n = -1;} // third quadrant
else {angle = 360 - angle; n = -1;} //fourth quadrant
// get lookup value
sinus = pgm_read_word(&pgm_sinlookup[angle]);
// calculate sinus value
return (sinus * m * n);
}
// ----------------------------------------------------------------------------------------------------------------------------------
 
 
//----------------------------------------------------------------------------------------------------------------------------------
// Cosinus with argument in degree at an angular resolution of 1 degree and a discretisation of 13 bit.
//----------------------------------------------------------------------------------------------------------------------------------
int16_t c_cos_8192(int16_t angle)
{
return (c_sin_8192(90 - angle));
}
// ----------------------------------------------------------------------------------------------------------------------------------
 
 
 
const uint8_t pgm_atanlookup[346] PROGMEM = {0,1,2,3,4,4,5,6,7,8,9,10,11,11,12,13,14,15,16,17,17,18,19,20,21,21,22,23,24,24,25,26,27,27,28,29,29,30,31,31,32,33,33,34,35,35,36,36,37,37,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,45,46,46,47,47,48,48,48,49,49,50,50,50,51,51,51,52,52,52,53,53,53,54,54,54,55,55,55,55,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,60,61,61,61,61,62,62,62,62,62,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,66,67,67,67,67,67,67,67,68,68,68,68,68,68,68,68,69,69,69,69,69,69,69,69,69,70,70,70,70,70,70,70,70,70,71,71,71,71,71,71,71,71,71,71,71,72,72,72,72,72,72,72,72,72,72,72,73,73,73,73,73,73,73,73,73,73,73,73,73,73,74,74,74,74,74,74,74,74,74,74,74,74,74,74,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79};
 
//----------------------------------------------------------------------------------------------------------------------------------
// arcustangens returns degree in a range of +/. 180 deg
//----------------------------------------------------------------------------------------------------------------------------------
int16_t c_atan2(int16_t y, int16_t x)
{
int16_t index, angle;
int8_t m;
 
if (!x && !y) return 0; //atan2(0, 0) is undefined
 
if (y < 0) m = -1;
else m = 1;
 
if (!x) return (90 * m); // atan2(y,0) = +/- 90 deg
 
index = (int16_t)(((int32_t)y * 64) / x);// calculate index for lookup table
if (index < 0) index = -index;
 
if (index < 346) angle = pgm_read_byte(&pgm_atanlookup[index]); // lookup for 0 deg to 79 deg
else if (index > 7334) angle = 90; // limit is 90 deg
else if (index > 2444) angle = 89; // 89 deg to 80 deg is mapped via intervalls
else if (index > 1465) angle = 88;
else if (index > 1046) angle = 87;
else if (index > 813) angle = 86;
else if (index > 664) angle = 85;
else if (index > 561) angle = 84;
else if (index > 486) angle = 83;
else if (index > 428) angle = 82;
else if (index > 382) angle = 81;
else angle = 80; // (index>345)
 
if (x > 0) return (angle * m); // 1st and 4th quadrant
else if ((x < 0) && (m > 0)) return (180 - angle); // 2nd quadrant
else return (angle - 180); // ( (x < 0) && (y < 0)) 3rd quadrant
}
// ----------------------------------------------------------------------------------------------------------------------------------
 
 
//----------------------------------------------------------------------------------------------------------------------------------
// Integer square root
//----------------------------------------------------------------------------------------------------------------------------------
uint32_t c_sqrt(uint32_t a)
{
uint32_t rem = 0;
uint32_t root = 0;
uint8_t i;
 
for(i = 0; i < 16; i++)
{
root <<= 1;
rem = ((rem << 2) + (a >> 30));
a <<= 2;
root++;
if(root <= rem)
{
rem -= root;
root++;
}
else root--;
}
return (root >> 1);
}
// ----------------------------------------------------------------------------------------------------------------------------------
 
// *** EOF: ************************************************************************************************************************
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/mymath.d
0,0 → 1,0
mymath.o mymath.d : mymath.c mymath.h
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/mymath.h
0,0 → 1,16
/*****************************************************************************************************************************
* File: mymath.h
* Purpose: header of mymath.c
*****************************************************************************************************************************/
#ifndef _MYMATH_H
#define _MYMATH_H
 
#include <inttypes.h>
 
extern int16_t c_sin_8192(int16_t angle);
extern int16_t c_cos_8192(int16_t angle);
extern int16_t c_atan2(int16_t y, int16_t x);
extern uint32_t c_sqrt(uint32_t a);
 
#endif
// EOF: _MYMATH_H *************************************************************************************************************
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/mymath.lst
0,0 → 1,869
1 .file "mymath.c"
2 .arch atmega644
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 .global pgm_atanlookup
11 .section .progmem.data,"a",@progbits
14 pgm_atanlookup:
15 0000 00 .byte 0
16 0001 01 .byte 1
17 0002 02 .byte 2
18 0003 03 .byte 3
19 0004 04 .byte 4
20 0005 04 .byte 4
21 0006 05 .byte 5
22 0007 06 .byte 6
23 0008 07 .byte 7
24 0009 08 .byte 8
25 000a 09 .byte 9
26 000b 0A .byte 10
27 000c 0B .byte 11
28 000d 0B .byte 11
29 000e 0C .byte 12
30 000f 0D .byte 13
31 0010 0E .byte 14
32 0011 0F .byte 15
33 0012 10 .byte 16
34 0013 11 .byte 17
35 0014 11 .byte 17
36 0015 12 .byte 18
37 0016 13 .byte 19
38 0017 14 .byte 20
39 0018 15 .byte 21
40 0019 15 .byte 21
41 001a 16 .byte 22
42 001b 17 .byte 23
43 001c 18 .byte 24
44 001d 18 .byte 24
45 001e 19 .byte 25
46 001f 1A .byte 26
47 0020 1B .byte 27
48 0021 1B .byte 27
49 0022 1C .byte 28
50 0023 1D .byte 29
51 0024 1D .byte 29
52 0025 1E .byte 30
53 0026 1F .byte 31
54 0027 1F .byte 31
55 0028 20 .byte 32
56 0029 21 .byte 33
57 002a 21 .byte 33
58 002b 22 .byte 34
59 002c 23 .byte 35
60 002d 23 .byte 35
61 002e 24 .byte 36
62 002f 24 .byte 36
63 0030 25 .byte 37
64 0031 25 .byte 37
65 0032 26 .byte 38
66 0033 27 .byte 39
67 0034 27 .byte 39
68 0035 28 .byte 40
69 0036 28 .byte 40
70 0037 29 .byte 41
71 0038 29 .byte 41
72 0039 2A .byte 42
73 003a 2A .byte 42
74 003b 2B .byte 43
75 003c 2B .byte 43
76 003d 2C .byte 44
77 003e 2C .byte 44
78 003f 2D .byte 45
79 0040 2D .byte 45
80 0041 2D .byte 45
81 0042 2E .byte 46
82 0043 2E .byte 46
83 0044 2F .byte 47
84 0045 2F .byte 47
85 0046 30 .byte 48
86 0047 30 .byte 48
87 0048 30 .byte 48
88 0049 31 .byte 49
89 004a 31 .byte 49
90 004b 32 .byte 50
91 004c 32 .byte 50
92 004d 32 .byte 50
93 004e 33 .byte 51
94 004f 33 .byte 51
95 0050 33 .byte 51
96 0051 34 .byte 52
97 0052 34 .byte 52
98 0053 34 .byte 52
99 0054 35 .byte 53
100 0055 35 .byte 53
101 0056 35 .byte 53
102 0057 36 .byte 54
103 0058 36 .byte 54
104 0059 36 .byte 54
105 005a 37 .byte 55
106 005b 37 .byte 55
107 005c 37 .byte 55
108 005d 37 .byte 55
109 005e 38 .byte 56
110 005f 38 .byte 56
111 0060 38 .byte 56
112 0061 39 .byte 57
113 0062 39 .byte 57
114 0063 39 .byte 57
115 0064 39 .byte 57
116 0065 3A .byte 58
117 0066 3A .byte 58
118 0067 3A .byte 58
119 0068 3A .byte 58
120 0069 3B .byte 59
121 006a 3B .byte 59
122 006b 3B .byte 59
123 006c 3B .byte 59
124 006d 3C .byte 60
125 006e 3C .byte 60
126 006f 3C .byte 60
127 0070 3C .byte 60
128 0071 3C .byte 60
129 0072 3D .byte 61
130 0073 3D .byte 61
131 0074 3D .byte 61
132 0075 3D .byte 61
133 0076 3E .byte 62
134 0077 3E .byte 62
135 0078 3E .byte 62
136 0079 3E .byte 62
137 007a 3E .byte 62
138 007b 3F .byte 63
139 007c 3F .byte 63
140 007d 3F .byte 63
141 007e 3F .byte 63
142 007f 3F .byte 63
143 0080 3F .byte 63
144 0081 40 .byte 64
145 0082 40 .byte 64
146 0083 40 .byte 64
147 0084 40 .byte 64
148 0085 40 .byte 64
149 0086 40 .byte 64
150 0087 41 .byte 65
151 0088 41 .byte 65
152 0089 41 .byte 65
153 008a 41 .byte 65
154 008b 41 .byte 65
155 008c 41 .byte 65
156 008d 42 .byte 66
157 008e 42 .byte 66
158 008f 42 .byte 66
159 0090 42 .byte 66
160 0091 42 .byte 66
161 0092 42 .byte 66
162 0093 42 .byte 66
163 0094 43 .byte 67
164 0095 43 .byte 67
165 0096 43 .byte 67
166 0097 43 .byte 67
167 0098 43 .byte 67
168 0099 43 .byte 67
169 009a 43 .byte 67
170 009b 44 .byte 68
171 009c 44 .byte 68
172 009d 44 .byte 68
173 009e 44 .byte 68
174 009f 44 .byte 68
175 00a0 44 .byte 68
176 00a1 44 .byte 68
177 00a2 44 .byte 68
178 00a3 45 .byte 69
179 00a4 45 .byte 69
180 00a5 45 .byte 69
181 00a6 45 .byte 69
182 00a7 45 .byte 69
183 00a8 45 .byte 69
184 00a9 45 .byte 69
185 00aa 45 .byte 69
186 00ab 45 .byte 69
187 00ac 46 .byte 70
188 00ad 46 .byte 70
189 00ae 46 .byte 70
190 00af 46 .byte 70
191 00b0 46 .byte 70
192 00b1 46 .byte 70
193 00b2 46 .byte 70
194 00b3 46 .byte 70
195 00b4 46 .byte 70
196 00b5 47 .byte 71
197 00b6 47 .byte 71
198 00b7 47 .byte 71
199 00b8 47 .byte 71
200 00b9 47 .byte 71
201 00ba 47 .byte 71
202 00bb 47 .byte 71
203 00bc 47 .byte 71
204 00bd 47 .byte 71
205 00be 47 .byte 71
206 00bf 47 .byte 71
207 00c0 48 .byte 72
208 00c1 48 .byte 72
209 00c2 48 .byte 72
210 00c3 48 .byte 72
211 00c4 48 .byte 72
212 00c5 48 .byte 72
213 00c6 48 .byte 72
214 00c7 48 .byte 72
215 00c8 48 .byte 72
216 00c9 48 .byte 72
217 00ca 48 .byte 72
218 00cb 49 .byte 73
219 00cc 49 .byte 73
220 00cd 49 .byte 73
221 00ce 49 .byte 73
222 00cf 49 .byte 73
223 00d0 49 .byte 73
224 00d1 49 .byte 73
225 00d2 49 .byte 73
226 00d3 49 .byte 73
227 00d4 49 .byte 73
228 00d5 49 .byte 73
229 00d6 49 .byte 73
230 00d7 49 .byte 73
231 00d8 49 .byte 73
232 00d9 4A .byte 74
233 00da 4A .byte 74
234 00db 4A .byte 74
235 00dc 4A .byte 74
236 00dd 4A .byte 74
237 00de 4A .byte 74
238 00df 4A .byte 74
239 00e0 4A .byte 74
240 00e1 4A .byte 74
241 00e2 4A .byte 74
242 00e3 4A .byte 74
243 00e4 4A .byte 74
244 00e5 4A .byte 74
245 00e6 4A .byte 74
246 00e7 4B .byte 75
247 00e8 4B .byte 75
248 00e9 4B .byte 75
249 00ea 4B .byte 75
250 00eb 4B .byte 75
251 00ec 4B .byte 75
252 00ed 4B .byte 75
253 00ee 4B .byte 75
254 00ef 4B .byte 75
255 00f0 4B .byte 75
256 00f1 4B .byte 75
257 00f2 4B .byte 75
258 00f3 4B .byte 75
259 00f4 4B .byte 75
260 00f5 4B .byte 75
261 00f6 4B .byte 75
262 00f7 4B .byte 75
263 00f8 4C .byte 76
264 00f9 4C .byte 76
265 00fa 4C .byte 76
266 00fb 4C .byte 76
267 00fc 4C .byte 76
268 00fd 4C .byte 76
269 00fe 4C .byte 76
270 00ff 4C .byte 76
271 0100 4C .byte 76
272 0101 4C .byte 76
273 0102 4C .byte 76
274 0103 4C .byte 76
275 0104 4C .byte 76
276 0105 4C .byte 76
277 0106 4C .byte 76
278 0107 4C .byte 76
279 0108 4C .byte 76
280 0109 4C .byte 76
281 010a 4C .byte 76
282 010b 4D .byte 77
283 010c 4D .byte 77
284 010d 4D .byte 77
285 010e 4D .byte 77
286 010f 4D .byte 77
287 0110 4D .byte 77
288 0111 4D .byte 77
289 0112 4D .byte 77
290 0113 4D .byte 77
291 0114 4D .byte 77
292 0115 4D .byte 77
293 0116 4D .byte 77
294 0117 4D .byte 77
295 0118 4D .byte 77
296 0119 4D .byte 77
297 011a 4D .byte 77
298 011b 4D .byte 77
299 011c 4D .byte 77
300 011d 4D .byte 77
301 011e 4D .byte 77
302 011f 4D .byte 77
303 0120 4D .byte 77
304 0121 4E .byte 78
305 0122 4E .byte 78
306 0123 4E .byte 78
307 0124 4E .byte 78
308 0125 4E .byte 78
309 0126 4E .byte 78
310 0127 4E .byte 78
311 0128 4E .byte 78
312 0129 4E .byte 78
313 012a 4E .byte 78
314 012b 4E .byte 78
315 012c 4E .byte 78
316 012d 4E .byte 78
317 012e 4E .byte 78
318 012f 4E .byte 78
319 0130 4E .byte 78
320 0131 4E .byte 78
321 0132 4E .byte 78
322 0133 4E .byte 78
323 0134 4E .byte 78
324 0135 4E .byte 78
325 0136 4E .byte 78
326 0137 4E .byte 78
327 0138 4E .byte 78
328 0139 4E .byte 78
329 013a 4E .byte 78
330 013b 4F .byte 79
331 013c 4F .byte 79
332 013d 4F .byte 79
333 013e 4F .byte 79
334 013f 4F .byte 79
335 0140 4F .byte 79
336 0141 4F .byte 79
337 0142 4F .byte 79
338 0143 4F .byte 79
339 0144 4F .byte 79
340 0145 4F .byte 79
341 0146 4F .byte 79
342 0147 4F .byte 79
343 0148 4F .byte 79
344 0149 4F .byte 79
345 014a 4F .byte 79
346 014b 4F .byte 79
347 014c 4F .byte 79
348 014d 4F .byte 79
349 014e 4F .byte 79
350 014f 4F .byte 79
351 0150 4F .byte 79
352 0151 4F .byte 79
353 0152 4F .byte 79
354 0153 4F .byte 79
355 0154 4F .byte 79
356 0155 4F .byte 79
357 0156 4F .byte 79
358 0157 4F .byte 79
359 0158 4F .byte 79
360 0159 4F .byte 79
361 .global pgm_sinlookup
364 pgm_sinlookup:
365 015a 0000 .word 0
366 015c 8F00 .word 143
367 015e 1E01 .word 286
368 0160 AD01 .word 429
369 0162 3B02 .word 571
370 0164 CA02 .word 714
371 0166 5803 .word 856
372 0168 E603 .word 998
373 016a 7404 .word 1140
374 016c 0205 .word 1282
375 016e 8F05 .word 1423
376 0170 1B06 .word 1563
377 0172 A706 .word 1703
378 0174 3307 .word 1843
379 0176 BE07 .word 1982
380 0178 4808 .word 2120
381 017a D208 .word 2258
382 017c 5B09 .word 2395
383 017e E309 .word 2531
384 0180 6B0A .word 2667
385 0182 F20A .word 2802
386 0184 780B .word 2936
387 0186 FD0B .word 3069
388 0188 810C .word 3201
389 018a 040D .word 3332
390 018c 860D .word 3462
391 018e 070E .word 3591
392 0190 870E .word 3719
393 0192 060F .word 3846
394 0194 840F .word 3972
395 0196 0010 .word 4096
396 0198 7B10 .word 4219
397 019a F510 .word 4341
398 019c 6E11 .word 4462
399 019e E511 .word 4581
400 01a0 5B12 .word 4699
401 01a2 CF12 .word 4815
402 01a4 4213 .word 4930
403 01a6 B313 .word 5043
404 01a8 2314 .word 5155
405 01aa 9214 .word 5266
406 01ac FE14 .word 5374
407 01ae 6A15 .word 5482
408 01b0 D315 .word 5587
409 01b2 3B16 .word 5691
410 01b4 A116 .word 5793
411 01b6 0517 .word 5893
412 01b8 6717 .word 5991
413 01ba C817 .word 6088
414 01bc 2718 .word 6183
415 01be 8318 .word 6275
416 01c0 DE18 .word 6366
417 01c2 3719 .word 6455
418 01c4 8E19 .word 6542
419 01c6 E319 .word 6627
420 01c8 361A .word 6710
421 01ca 871A .word 6791
422 01cc D61A .word 6870
423 01ce 231B .word 6947
424 01d0 6E1B .word 7022
425 01d2 B61B .word 7094
426 01d4 FD1B .word 7165
427 01d6 411C .word 7233
428 01d8 831C .word 7299
429 01da C31C .word 7363
430 01dc 001D .word 7424
431 01de 3C1D .word 7484
432 01e0 751D .word 7541
433 01e2 AB1D .word 7595
434 01e4 E01D .word 7648
435 01e6 121E .word 7698
436 01e8 421E .word 7746
437 01ea 6F1E .word 7791
438 01ec 9A1E .word 7834
439 01ee C31E .word 7875
440 01f0 E91E .word 7913
441 01f2 0D1F .word 7949
442 01f4 2E1F .word 7982
443 01f6 4D1F .word 8013
444 01f8 691F .word 8041
445 01fa 841F .word 8068
446 01fc 9B1F .word 8091
447 01fe B01F .word 8112
448 0200 C31F .word 8131
449 0202 D31F .word 8147
450 0204 E11F .word 8161
451 0206 EC1F .word 8172
452 0208 F51F .word 8181
453 020a FB1F .word 8187
454 020c FF1F .word 8191
455 020e 0020 .word 8192
456 .text
457 .global c_sin_8192
459 c_sin_8192:
460 /* prologue: frame size=0 */
461 0000 CF93 push r28
462 /* prologue end (size=1) */
463 0002 FC01 movw r30,r24
464 0004 97FD sbrc r25,7
465 0006 00C0 rjmp .L14
466 0008 C1E0 ldi r28,lo8(1)
467 .L4:
468 000a 28E6 ldi r18,lo8(360)
469 000c 31E0 ldi r19,hi8(360)
470 000e CF01 movw r24,r30
471 0010 B901 movw r22,r18
472 0012 0E94 0000 call __divmodhi4
473 0016 FC01 movw r30,r24
474 0018 8B35 cpi r24,91
475 001a 9105 cpc r25,__zero_reg__
476 001c 04F0 brlt .L12
477 001e 8B55 subi r24,lo8(-(-91))
478 0020 9040 sbci r25,hi8(-(-91))
479 0022 8A35 cpi r24,90
480 0024 9105 cpc r25,__zero_reg__
481 0026 00F4 brsh .L7
482 0028 84EB ldi r24,lo8(180)
483 002a 90E0 ldi r25,hi8(180)
484 002c 8E1B sub r24,r30
485 002e 9F0B sbc r25,r31
486 0030 FC01 movw r30,r24
487 .L12:
488 0032 41E0 ldi r20,lo8(1)
489 0034 00C0 rjmp .L6
490 .L7:
491 0036 CF01 movw r24,r30
492 0038 855B subi r24,lo8(-(-181))
493 003a 9040 sbci r25,hi8(-(-181))
494 003c 8A35 cpi r24,90
495 003e 9105 cpc r25,__zero_reg__
496 0040 00F4 brsh .L9
497 0042 E45B subi r30,lo8(-(-180))
498 0044 F040 sbci r31,hi8(-(-180))
499 0046 4FEF ldi r20,lo8(-1)
500 0048 00C0 rjmp .L6
501 .L14:
502 004a CFEF ldi r28,lo8(-1)
503 004c F095 com r31
504 004e E195 neg r30
505 0050 FF4F sbci r31,lo8(-1)
506 0052 00C0 rjmp .L4
507 .L9:
508 0054 2E1B sub r18,r30
509 0056 3F0B sbc r19,r31
510 0058 F901 movw r30,r18
511 005a 4FEF ldi r20,lo8(-1)
512 .L6:
513 005c EE0F add r30,r30
514 005e FF1F adc r31,r31
515 0060 E050 subi r30,lo8(-(pgm_sinlookup))
516 0062 F040 sbci r31,hi8(-(pgm_sinlookup))
517 /* #APP */
518 0064 2591 lpm r18, Z+
519 0066 3491 lpm r19, Z
520
521 /* #NOAPP */
522 0068 8C2F mov r24,r28
523 006a 9927 clr r25
524 006c 87FD sbrc r24,7
525 006e 9095 com r25
526 0070 829F mul r24,r18
527 0072 B001 movw r22,r0
528 0074 839F mul r24,r19
529 0076 700D add r23,r0
530 0078 929F mul r25,r18
531 007a 700D add r23,r0
532 007c 1124 clr r1
533 007e 842F mov r24,r20
534 0080 9927 clr r25
535 0082 87FD sbrc r24,7
536 0084 9095 com r25
537 0086 689F mul r22,r24
538 0088 A001 movw r20,r0
539 008a 699F mul r22,r25
540 008c 500D add r21,r0
541 008e 789F mul r23,r24
542 0090 500D add r21,r0
543 0092 1124 clr r1
544 0094 CA01 movw r24,r20
545 /* epilogue: frame size=0 */
546 0096 CF91 pop r28
547 0098 0895 ret
548 /* epilogue end (size=2) */
549 /* function c_sin_8192 size 81 (78) */
551 .global c_cos_8192
553 c_cos_8192:
554 /* prologue: frame size=0 */
555 /* prologue end (size=0) */
556 009a 2AE5 ldi r18,lo8(90)
557 009c 30E0 ldi r19,hi8(90)
558 009e 281B sub r18,r24
559 00a0 390B sbc r19,r25
560 00a2 C901 movw r24,r18
561 00a4 0E94 0000 call c_sin_8192
562 /* epilogue: frame size=0 */
563 00a8 0895 ret
564 /* epilogue end (size=1) */
565 /* function c_cos_8192 size 8 (7) */
567 .global c_atan2
569 c_atan2:
570 /* prologue: frame size=0 */
571 00aa 1F93 push r17
572 00ac CF93 push r28
573 00ae DF93 push r29
574 /* prologue end (size=3) */
575 00b0 EB01 movw r28,r22
576 00b2 6115 cp r22,__zero_reg__
577 00b4 7105 cpc r23,__zero_reg__
578 00b6 01F4 brne .L17
579 00b8 0097 sbiw r24,0
580 00ba 01F4 brne .+2
581 00bc 00C0 rjmp .L16
582 .L17:
583 00be 97FD sbrc r25,7
584 00c0 00C0 rjmp .L48
585 00c2 11E0 ldi r17,lo8(1)
586 .L19:
587 00c4 2097 sbiw r28,0
588 00c6 01F4 brne .L20
589 00c8 8AE5 ldi r24,lo8(90)
590 00ca 1802 muls r17,r24
591 00cc B001 movw r22,r0
592 00ce 1124 clr r1
593 00d0 00C0 rjmp .L16
594 .L20:
595 00d2 AA27 clr r26
596 00d4 97FD sbrc r25,7
597 00d6 A095 com r26
598 00d8 BA2F mov r27,r26
599 00da 26E0 ldi r18,6
600 00dc 880F 1: lsl r24
601 00de 991F rol r25
602 00e0 AA1F rol r26
603 00e2 BB1F rol r27
604 00e4 2A95 dec r18
605 00e6 01F4 brne 1b
606 00e8 9E01 movw r18,r28
607 00ea 4427 clr r20
608 00ec 37FD sbrc r19,7
609 00ee 4095 com r20
610 00f0 542F mov r21,r20
611 00f2 BC01 movw r22,r24
612 00f4 CD01 movw r24,r26
613 00f6 0E94 0000 call __divmodsi4
614 00fa F901 movw r30,r18
615 00fc 37FD sbrc r19,7
616 00fe 00C0 rjmp .L49
617 .L21:
618 0100 81E0 ldi r24,hi8(346)
619 0102 EA35 cpi r30,lo8(346)
620 0104 F807 cpc r31,r24
621 0106 04F0 brlt .L50
622 0108 8CE1 ldi r24,hi8(7335)
623 010a E73A cpi r30,lo8(7335)
624 010c F807 cpc r31,r24
625 010e 04F0 brlt .L24
626 0110 2AE5 ldi r18,lo8(90)
627 0112 30E0 ldi r19,hi8(90)
628 .L23:
629 0114 1C16 cp __zero_reg__,r28
630 0116 1D06 cpc __zero_reg__,r29
631 0118 04F4 brge .L44
632 011a 812F mov r24,r17
633 011c 9927 clr r25
634 011e 87FD sbrc r24,7
635 0120 9095 com r25
636 0122 829F mul r24,r18
637 0124 B001 movw r22,r0
638 0126 839F mul r24,r19
639 0128 700D add r23,r0
640 012a 929F mul r25,r18
641 012c 700D add r23,r0
642 012e 1124 clr r1
643 0130 00C0 rjmp .L16
644 .L50:
645 0132 E050 subi r30,lo8(-(pgm_atanlookup))
646 0134 F040 sbci r31,hi8(-(pgm_atanlookup))
647 /* #APP */
648 0136 8491 lpm r24, Z
649
650 /* #NOAPP */
651 0138 282F mov r18,r24
652 013a 3327 clr r19
653 013c 00C0 rjmp .L23
654 .L48:
655 013e 1FEF ldi r17,lo8(-1)
656 0140 00C0 rjmp .L19
657 .L24:
658 0142 89E0 ldi r24,hi8(2445)
659 0144 ED38 cpi r30,lo8(2445)
660 0146 F807 cpc r31,r24
661 0148 04F4 brge .L51
662 014a 85E0 ldi r24,hi8(1466)
663 014c EA3B cpi r30,lo8(1466)
664 014e F807 cpc r31,r24
665 0150 04F0 brlt .L28
666 0152 28E5 ldi r18,lo8(88)
667 0154 30E0 ldi r19,hi8(88)
668 0156 00C0 rjmp .L23
669 .L49:
670 0158 F095 com r31
671 015a E195 neg r30
672 015c FF4F sbci r31,lo8(-1)
673 015e 00C0 rjmp .L21
674 .L44:
675 0160 D7FD sbrc r29,7
676 0162 00C0 rjmp .L52
677 .L46:
678 0164 B901 movw r22,r18
679 0166 645B subi r22,lo8(-(-180))
680 0168 7040 sbci r23,hi8(-(-180))
681 016a 00C0 rjmp .L16
682 .L51:
683 016c 29E5 ldi r18,lo8(89)
684 016e 30E0 ldi r19,hi8(89)
685 0170 00C0 rjmp .L23
686 .L28:
687 0172 84E0 ldi r24,hi8(1047)
688 0174 E731 cpi r30,lo8(1047)
689 0176 F807 cpc r31,r24
690 0178 04F0 brlt .L30
691 017a 27E5 ldi r18,lo8(87)
692 017c 30E0 ldi r19,hi8(87)
693 017e 00C0 rjmp .L23
694 .L52:
695 0180 1116 cp __zero_reg__,r17
696 0182 04F4 brge .L46
697 0184 64EB ldi r22,lo8(180)
698 0186 70E0 ldi r23,hi8(180)
699 0188 621B sub r22,r18
700 018a 730B sbc r23,r19
701 018c 00C0 rjmp .L16
702 .L30:
703 018e 83E0 ldi r24,hi8(814)
704 0190 EE32 cpi r30,lo8(814)
705 0192 F807 cpc r31,r24
706 0194 04F0 brlt .L32
707 0196 26E5 ldi r18,lo8(86)
708 0198 30E0 ldi r19,hi8(86)
709 019a 00C0 rjmp .L23
710 .L32:
711 019c 82E0 ldi r24,hi8(665)
712 019e E939 cpi r30,lo8(665)
713 01a0 F807 cpc r31,r24
714 01a2 04F0 brlt .L34
715 01a4 25E5 ldi r18,lo8(85)
716 01a6 30E0 ldi r19,hi8(85)
717 01a8 00C0 rjmp .L23
718 .L34:
719 01aa 82E0 ldi r24,hi8(562)
720 01ac E233 cpi r30,lo8(562)
721 01ae F807 cpc r31,r24
722 01b0 04F0 brlt .L36
723 01b2 24E5 ldi r18,lo8(84)
724 01b4 30E0 ldi r19,hi8(84)
725 01b6 00C0 rjmp .L23
726 .L36:
727 01b8 81E0 ldi r24,hi8(487)
728 01ba E73E cpi r30,lo8(487)
729 01bc F807 cpc r31,r24
730 01be 04F0 brlt .L38
731 01c0 23E5 ldi r18,lo8(83)
732 01c2 30E0 ldi r19,hi8(83)
733 01c4 00C0 rjmp .L23
734 .L38:
735 01c6 81E0 ldi r24,hi8(429)
736 01c8 ED3A cpi r30,lo8(429)
737 01ca F807 cpc r31,r24
738 01cc 04F0 brlt .L40
739 01ce 22E5 ldi r18,lo8(82)
740 01d0 30E0 ldi r19,hi8(82)
741 01d2 00C0 rjmp .L23
742 .L40:
743 01d4 EF57 subi r30,lo8(383)
744 01d6 F140 sbci r31,hi8(383)
745 01d8 04F0 brlt .L42
746 01da 21E5 ldi r18,lo8(81)
747 01dc 30E0 ldi r19,hi8(81)
748 01de 00C0 rjmp .L23
749 .L42:
750 01e0 20E5 ldi r18,lo8(80)
751 01e2 30E0 ldi r19,hi8(80)
752 01e4 00C0 rjmp .L23
753 .L16:
754 01e6 CB01 movw r24,r22
755 /* epilogue: frame size=0 */
756 01e8 DF91 pop r29
757 01ea CF91 pop r28
758 01ec 1F91 pop r17
759 01ee 0895 ret
760 /* epilogue end (size=4) */
761 /* function c_atan2 size 167 (160) */
763 .global c_sqrt
765 c_sqrt:
766 /* prologue: frame size=0 */
767 01f0 EF92 push r14
768 01f2 FF92 push r15
769 01f4 0F93 push r16
770 01f6 1F93 push r17
771 01f8 CF93 push r28
772 01fa DF93 push r29
773 /* prologue end (size=6) */
774 01fc 7B01 movw r14,r22
775 01fe 8C01 movw r16,r24
776 0200 20E0 ldi r18,lo8(0)
777 0202 30E0 ldi r19,hi8(0)
778 0204 40E0 ldi r20,hlo8(0)
779 0206 50E0 ldi r21,hhi8(0)
780 0208 FA01 movw r30,r20
781 020a E901 movw r28,r18
782 020c 6FE0 ldi r22,lo8(15)
783 020e 00C0 rjmp .L59
784 .L63:
785 0210 C21B sub r28,r18
786 0212 D30B sbc r29,r19
787 0214 E40B sbc r30,r20
788 0216 F50B sbc r31,r21
789 0218 2F5F subi r18,lo8(-(1))
790 021a 3F4F sbci r19,hi8(-(1))
791 021c 4F4F sbci r20,hlo8(-(1))
792 021e 5F4F sbci r21,hhi8(-(1))
793 0220 6150 subi r22,lo8(-(-1))
794 0222 67FD sbrc r22,7
795 0224 00C0 rjmp .L62
796 .L59:
797 0226 220F lsl r18
798 0228 331F rol r19
799 022a 441F rol r20
800 022c 551F rol r21
801 022e CC0F lsl r28
802 0230 DD1F rol r29
803 0232 EE1F rol r30
804 0234 FF1F rol r31
805 0236 CC0F lsl r28
806 0238 DD1F rol r29
807 023a EE1F rol r30
808 023c FF1F rol r31
809 023e D801 movw r26,r16
810 0240 C701 movw r24,r14
811 0242 7EE1 ldi r23,30
812 0244 B695 1: lsr r27
813 0246 A795 ror r26
814 0248 9795 ror r25
815 024a 8795 ror r24
816 024c 7A95 dec r23
817 024e 01F4 brne 1b
818 0250 C80F add r28,r24
819 0252 D91F adc r29,r25
820 0254 EA1F adc r30,r26
821 0256 FB1F adc r31,r27
822 0258 EE0C lsl r14
823 025a FF1C rol r15
824 025c 001F rol r16
825 025e 111F rol r17
826 0260 EE0C lsl r14
827 0262 FF1C rol r15
828 0264 001F rol r16
829 0266 111F rol r17
830 0268 2F5F subi r18,lo8(-(1))
831 026a 3F4F sbci r19,hi8(-(1))
832 026c 4F4F sbci r20,hlo8(-(1))
833 026e 5F4F sbci r21,hhi8(-(1))
834 0270 C217 cp r28,r18
835 0272 D307 cpc r29,r19
836 0274 E407 cpc r30,r20
837 0276 F507 cpc r31,r21
838 0278 00F4 brsh .L63
839 027a 2150 subi r18,lo8(-(-1))
840 027c 3040 sbci r19,hi8(-(-1))
841 027e 4040 sbci r20,hlo8(-(-1))
842 0280 5040 sbci r21,hhi8(-(-1))
843 0282 6150 subi r22,lo8(-(-1))
844 0284 67FF sbrs r22,7
845 0286 00C0 rjmp .L59
846 .L62:
847 0288 5695 lsr r21
848 028a 4795 ror r20
849 028c 3795 ror r19
850 028e 2795 ror r18
851 0290 CA01 movw r24,r20
852 0292 B901 movw r22,r18
853 /* epilogue: frame size=0 */
854 0294 E6E0 ldi r30,6
855 0296 CDB7 in r28,__SP_L__
856 0298 DEB7 in r29,__SP_H__
857 029a 0C94 0000 jmp __epilogue_restores__+24
858 /* epilogue end (size=5) */
859 /* function c_sqrt size 87 (76) */
861 /* File "mymath.c": code 343 = 0x0157 ( 321), prologues 10, epilogues 12 */
DEFINED SYMBOLS
*ABS*:00000000 mymath.c
C:\Users\Bernd\AppData\Local\Temp/ccZ3fpJf.s:3 *ABS*:0000003f __SREG__
C:\Users\Bernd\AppData\Local\Temp/ccZ3fpJf.s:4 *ABS*:0000003e __SP_H__
C:\Users\Bernd\AppData\Local\Temp/ccZ3fpJf.s:5 *ABS*:0000003d __SP_L__
C:\Users\Bernd\AppData\Local\Temp/ccZ3fpJf.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Bernd\AppData\Local\Temp/ccZ3fpJf.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Bernd\AppData\Local\Temp/ccZ3fpJf.s:14 .progmem.data:00000000 pgm_atanlookup
C:\Users\Bernd\AppData\Local\Temp/ccZ3fpJf.s:364 .progmem.data:0000015a pgm_sinlookup
C:\Users\Bernd\AppData\Local\Temp/ccZ3fpJf.s:459 .text:00000000 c_sin_8192
C:\Users\Bernd\AppData\Local\Temp/ccZ3fpJf.s:553 .text:0000009a c_cos_8192
C:\Users\Bernd\AppData\Local\Temp/ccZ3fpJf.s:569 .text:000000aa c_atan2
C:\Users\Bernd\AppData\Local\Temp/ccZ3fpJf.s:765 .text:000001f0 c_sqrt
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__divmodhi4
__divmodsi4
__epilogue_restores__
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/old_macros.h
0,0 → 1,46
//----------------------------------------------------------------------------------------------------------------------------------
// For backwards compatibility only.
//----------------------------------------------------------------------------------------------------------------------------------
 
#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.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/printf_P.c
0,0 → 1,482
//----------------------------------------------------------------------------------------------------------------------------------
// Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist nicht von der Lizenz für den MikroKopter-Teil unterstellt
 
/*
Copyright (C) 1993 Free Software Foundation
 
This file is part of the GNU IO Library. This library is free
software; you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option)
any later version.
 
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this library; see the file COPYING. If not, write to the Free
Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
As a special exception, if you link this library with files
compiled with a GNU compiler to produce an executable, this does not cause
the resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why
the executable file might be covered by the GNU General Public License. */
 
/*
* Copyright (c) 1990 Regents of the University of California.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. [rescinded 22 July 1999]
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
*/
 
/******************************************************************************
This file is a patched version of printf called _printf_P
It is made to work with avr-gcc for Atmel AVR MCUs.
There are some differences from standard printf:
1. There is no floating point support (with fp the code is about 8K!)
2. Return type is void
3. Format string must be in program memory (by using macro printf this is
done automaticaly)
4. %n is not implemented (just remove the comment around it if you need it)
5. If LIGHTPRINTF is defined, the code is about 550 bytes smaller and the
folowing specifiers are disabled :
space # * . - + p s o O
6. A function void uart_sendchar(char c) is used for output. The UART must
be initialized before using printf.
 
Alexander Popov
sasho@vip.orbitel.bg
******************************************************************************/
 
/*
* Actual printf innards.
*
* This code is large and complicated...
*/
 
#include <string.h>
#ifdef __STDC__
#include <stdarg.h>
#else
#include <varargs.h>
#endif
 
#include "main.h"
 
 
//#define LIGHTPRINTF
char PrintZiel;
 
 
char Putchar(char zeichen)
{
if(PrintZiel == OUT_LCD) { DisplayBuff[DispPtr++] = zeichen; return(1);}
else return(uart_putchar(zeichen));
}
 
 
void PRINT(const char * ptr, unsigned int len)
{
for(;len;len--) Putchar(*ptr++);
}
void PRINTP(const char * ptr, unsigned int len)
{
for(;len;len--) Putchar(pgm_read_byte(ptr++));
}
 
void PAD_SP(signed char howmany)
{
for(;howmany>0;howmany--) Putchar(' ');
}
 
void PAD_0(signed char howmany)
{
for(;howmany>0;howmany--) Putchar('0');
}
 
#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 ziel,char const *fmt0, ...) /* Works with string from FLASH */
{
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] */
#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 */
 
PrintZiel = ziel; // bestimmt, LCD oder UART
va_start(ap, fmt0);
fmt = fmt0;
 
/*
* Scan the format for conversions (`%' character).
*/
for (;;) {
for (fmark = fmt; (ch = pgm_read_byte(fmt)) != '\0' && ch != '%'; fmt++)
/* void */;
if ((n = fmt - fmark) != 0) {
PRINTP(fmark, n);
}
if (ch == '\0')
goto done;
fmt++; /* skip over '%' */
 
flags = 0;
dprec = 0;
width = 0;
prec = -1;
sign = '\0';
 
rflag: ch = PRG_RDB(fmt++);
reswitch:
#ifdef LIGHTPRINTF
if (ch=='o' || ch=='u' || (ch|0x20)=='x') {
#else
if (ch=='u' || (ch|0x20)=='x') {
#endif
if (flags&LONGINT) {
_ulong=va_arg(ap, unsigned long);
} else {
register unsigned int _d;
_d=va_arg(ap, unsigned int);
_ulong = flags&SHORTINT ? (unsigned long)(unsigned short)_d : (unsigned long)_d;
}
}
#ifndef LIGHTPRINTF
if(ch==' ') {
/*
* ``If the space and + flags both appear, the space
* flag will be ignored.''
* -- ANSI X3J11
*/
if (!sign)
sign = ' ';
goto rflag;
} else if (ch=='#') {
flags |= ALT;
goto rflag;
} else if (ch=='*'||ch=='-') {
if (ch=='*') {
/*
* ``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)
goto rflag;
width = -width;
}
flags |= LADJUST;
flags &= ~ZEROPAD; /* '-' disables '0' */
goto rflag;
} else if (ch=='+') {
sign = '+';
goto rflag;
} else if (ch=='.') {
if ((ch = PRG_RDB(fmt++)) == '*') {
n = va_arg(ap, int);
prec = n < 0 ? -1 : n;
goto rflag;
}
n = 0;
while (is_digit(ch)) {
n = n*10 + to_digit(ch);
ch = PRG_RDB(fmt++);
}
prec = n < 0 ? -1 : n;
goto reswitch;
} else
#endif /* LIGHTPRINTF */
if (ch=='0') {
/*
* ``Note that 0 is taken as a flag, not as the
* beginning of a field width.''
* -- ANSI X3J11
*/
if (!(flags & LADJUST))
flags |= ZEROPAD; /* '-' disables '0' */
goto rflag;
} else if (ch>='1' && ch<='9') {
n = 0;
do {
n = 10 * n + to_digit(ch);
ch = PRG_RDB(fmt++);
} while (is_digit(ch));
width = n;
goto reswitch;
} else if (ch=='h') {
flags |= SHORTINT;
goto rflag;
} else if (ch=='l') {
flags |= LONGINT;
goto rflag;
} else if (ch=='c') {
*(cp = buf) = va_arg(ap, int);
size = 1;
sign = '\0';
} else if (ch=='D'||ch=='d'||ch=='i') {
if(ch=='D')
flags |= LONGINT;
if (flags&LONGINT) {
_ulong=va_arg(ap, long);
} else {
register int _d;
_d=va_arg(ap, int);
_ulong = flags&SHORTINT ? (long)(short)_d : (long)_d;
}
if ((long)_ulong < 0) {
_ulong = -_ulong;
sign = '-';
}
base = DEC;
goto number;
} 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') {
if (ch=='O')
flags |= LONGINT;
base = OCT;
goto nosign;
} else if (ch=='p') {
/*
* ``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 *);
base = HEX;
flags |= HEXPREFIX;
ch = 'x';
goto nosign;
} else if (ch=='s') { // print a string from RAM
if ((cp = va_arg(ap, char *)) == NULL) {
cp=buf;
cp[0] = '(';
cp[1] = 'n';
cp[2] = 'u';
cp[4] = cp[3] = 'l';
cp[5] = ')';
cp[6] = '\0';
}
if (prec >= 0) {
/*
* 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);
 
if (p != NULL) {
size = p - cp;
if (size > prec)
size = prec;
} else
size = prec;
} else
size = strlen(cp);
sign = '\0';
} else
#endif /* LIGHTPRINTF */
if(ch=='U'||ch=='u') {
if (ch=='U')
flags |= LONGINT;
base = DEC;
goto nosign;
} else if (ch=='X'||ch=='x') {
base = HEX;
/* leading 0x/X only if non-zero */
if (flags & ALT && _ulong != 0)
flags |= HEXPREFIX;
 
/* unsigned conversions */
nosign: sign = '\0';
/*
* ``... diouXx conversions ... if a precision is
* specified, the 0 flag will be ignored.''
* -- ANSI X3J11
*/
number: if ((dprec = prec) >= 0)
flags &= ~ZEROPAD;
 
/*
* ``The result of converting a zero value with an
* explicit precision of zero is no characters.''
* -- ANSI X3J11
*/
cp = buf + BUF;
if (_ulong != 0 || prec != 0) {
register unsigned char _d,notlastdigit;
do {
notlastdigit=(_ulong>=base);
_d = _ulong % base;
 
if (_d<10) {
_d+='0';
} else {
_d+='a'-10;
if (ch=='X') _d&=~0x20;
}
*--cp=_d;
_ulong /= base;
} while (notlastdigit);
#ifndef LIGHTPRINTF
// handle octal leading 0
if (base==OCT && flags & ALT && *cp != '0')
*--cp = '0';
#endif
}
 
size = buf + BUF - cp;
} else { //default
/* "%?" prints ?, unless ? is NUL */
if (ch == '\0')
goto done;
/* pretend it was %c with argument ch */
cp = buf;
*cp = ch;
size = 1;
sign = '\0';
}
 
/*
* 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;
 
dpad = dprec - size;
if (dpad < 0)
dpad = 0;
 
if (sign)
fieldsz++;
else if (flags & HEXPREFIX)
fieldsz += 2;
fieldsz += dpad;
 
/* right-adjusting blank padding */
if ((flags & (LADJUST|ZEROPAD)) == 0)
PAD_SP(width - fieldsz);
 
/* prefix */
if (sign) {
PRINT(&sign, 1);
} else if (flags & HEXPREFIX) {
ox[0] = '0';
ox[1] = ch;
PRINT(ox, 2);
}
 
/* right-adjusting zero padding */
if ((flags & (LADJUST|ZEROPAD)) == ZEROPAD)
PAD_0(width - fieldsz);
 
/* leading zeroes from decimal precision */
PAD_0(dpad);
 
/* the string or number proper */
PRINT(cp, size);
 
/* left-adjusting padding (always blank) */
if (flags & LADJUST)
PAD_SP(width - fieldsz);
}
done:
va_end(ap);
}
//----------------------------------------------------------------------------------------------------------------------------------
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/printf_P.d
0,0 → 1,2
printf_P.o printf_P.d : printf_P.c main.h old_macros.h _Settings.h printf_P.h \
timer0.h uart.h analog.h eeprom.h twimaster.h menu.h rc.h fc.h led.h
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/printf_P.h
0,0 → 1,24
//----------------------------------------------------------------------------------------------------------------------------------
// printf_P.h
//----------------------------------------------------------------------------------------------------------------------------------
 
#ifndef _PRINTF_P_H_
#define _PRINTF_P_H_
 
#include <avr/pgmspace.h>
 
#define OUT_V24 0
#define OUT_LCD 1
 
 
void _printf_P (char, char const *fmt0, ...);
extern char PrintZiel;
 
 
#define printf_P(format, args...) _printf_P(OUT_V24,format , ## args)
#define printf(format, args...) _printf_P(OUT_V24,PSTR(format) , ## args)
#define LCD_printfxy(x,y,format, args...) { DispPtr = y * 20 + x; _printf_P(OUT_LCD,PSTR(format) , ## args);}
#define LCD_printf(format, args...) { _printf_P(OUT_LCD,PSTR(format) , ## args);}
 
#endif
//----------------------------------------------------------------------------------------------------------------------------------
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/printf_P.lst
0,0 → 1,888
1 .file "printf_P.c"
2 .arch atmega644
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 .text
11 .global Putchar
13 Putchar:
14 /* prologue: frame size=0 */
15 /* prologue end (size=0) */
16 0000 982F mov r25,r24
17 0002 8091 0000 lds r24,PrintZiel
18 0006 8130 cpi r24,lo8(1)
19 0008 01F0 breq .L5
20 000a 892F mov r24,r25
21 000c 0E94 0000 call uart_putchar
22 0010 282F mov r18,r24
23 0012 3327 clr r19
24 0014 00C0 rjmp .L1
25 .L5:
26 0016 8091 0000 lds r24,DispPtr
27 001a E82F mov r30,r24
28 001c FF27 clr r31
29 001e E050 subi r30,lo8(-(DisplayBuff))
30 0020 F040 sbci r31,hi8(-(DisplayBuff))
31 0022 9083 st Z,r25
32 0024 8F5F subi r24,lo8(-(1))
33 0026 8093 0000 sts DispPtr,r24
34 002a 21E0 ldi r18,lo8(1)
35 002c 30E0 ldi r19,hi8(1)
36 .L1:
37 002e C901 movw r24,r18
38 /* epilogue: frame size=0 */
39 0030 0895 ret
40 /* epilogue end (size=1) */
41 /* function Putchar size 25 (24) */
43 .global PRINT
45 PRINT:
46 /* prologue: frame size=0 */
47 0032 0F93 push r16
48 0034 1F93 push r17
49 0036 CF93 push r28
50 0038 DF93 push r29
51 /* prologue end (size=4) */
52 003a 8C01 movw r16,r24
53 003c EB01 movw r28,r22
54 003e 672B or r22,r23
55 0040 01F0 breq .L12
56 .L10:
57 0042 F801 movw r30,r16
58 0044 8191 ld r24,Z+
59 0046 8F01 movw r16,r30
60 0048 0E94 0000 call Putchar
61 004c 2197 sbiw r28,1
62 004e 01F0 breq .L12
63 0050 F801 movw r30,r16
64 0052 8191 ld r24,Z+
65 0054 8F01 movw r16,r30
66 0056 0E94 0000 call Putchar
67 005a 2197 sbiw r28,1
68 005c 01F4 brne .L10
69 .L12:
70 /* epilogue: frame size=0 */
71 005e DF91 pop r29
72 0060 CF91 pop r28
73 0062 1F91 pop r17
74 0064 0F91 pop r16
75 0066 0895 ret
76 /* epilogue end (size=5) */
77 /* function PRINT size 29 (20) */
79 .global PRINTP
81 PRINTP:
82 /* prologue: frame size=0 */
83 0068 0F93 push r16
84 006a 1F93 push r17
85 006c CF93 push r28
86 006e DF93 push r29
87 /* prologue end (size=4) */
88 0070 8C01 movw r16,r24
89 0072 EB01 movw r28,r22
90 0074 672B or r22,r23
91 0076 01F0 breq .L20
92 .L18:
93 0078 F801 movw r30,r16
94 007a 0F5F subi r16,lo8(-(1))
95 007c 1F4F sbci r17,hi8(-(1))
96 /* #APP */
97 007e 8491 lpm r24, Z
98
99 /* #NOAPP */
100 0080 0E94 0000 call Putchar
101 0084 2197 sbiw r28,1
102 0086 01F0 breq .L20
103 0088 F801 movw r30,r16
104 008a 0F5F subi r16,lo8(-(1))
105 008c 1F4F sbci r17,hi8(-(1))
106 /* #APP */
107 008e 8491 lpm r24, Z
108
109 /* #NOAPP */
110 0090 0E94 0000 call Putchar
111 0094 2197 sbiw r28,1
112 0096 01F4 brne .L18
113 .L20:
114 /* epilogue: frame size=0 */
115 0098 DF91 pop r29
116 009a CF91 pop r28
117 009c 1F91 pop r17
118 009e 0F91 pop r16
119 00a0 0895 ret
120 /* epilogue end (size=5) */
121 /* function PRINTP size 37 (28) */
123 .global PAD_SP
125 PAD_SP:
126 /* prologue: frame size=0 */
127 00a2 CF93 push r28
128 /* prologue end (size=1) */
129 00a4 C82F mov r28,r24
130 00a6 1816 cp __zero_reg__,r24
131 00a8 04F4 brge .L28
132 .L26:
133 00aa 80E2 ldi r24,lo8(32)
134 00ac 0E94 0000 call Putchar
135 00b0 C150 subi r28,lo8(-(-1))
136 00b2 1C16 cp __zero_reg__,r28
137 00b4 04F0 brlt .L26
138 .L28:
139 /* epilogue: frame size=0 */
140 00b6 CF91 pop r28
141 00b8 0895 ret
142 /* epilogue end (size=2) */
143 /* function PAD_SP size 12 (9) */
145 .global PAD_0
147 PAD_0:
148 /* prologue: frame size=0 */
149 00ba CF93 push r28
150 /* prologue end (size=1) */
151 00bc C82F mov r28,r24
152 00be 1816 cp __zero_reg__,r24
153 00c0 04F4 brge .L35
154 .L33:
155 00c2 80E3 ldi r24,lo8(48)
156 00c4 0E94 0000 call Putchar
157 00c8 C150 subi r28,lo8(-(-1))
158 00ca 1C16 cp __zero_reg__,r28
159 00cc 04F0 brlt .L33
160 .L35:
161 /* epilogue: frame size=0 */
162 00ce CF91 pop r28
163 00d0 0895 ret
164 /* epilogue end (size=2) */
165 /* function PAD_0 size 12 (9) */
167 .global _printf_P
169 _printf_P:
170 /* prologue: frame size=48 */
171 00d2 A0E3 ldi r26,lo8(48)
172 00d4 B0E0 ldi r27,hi8(48)
173 00d6 E0E0 ldi r30,pm_lo8(1f)
174 00d8 F0E0 ldi r31,pm_hi8(1f)
175 00da 0C94 0000 jmp __prologue_saves__+0
176 1:
177 /* prologue end (size=6) */
178 00de 2696 adiw r28,69-63
179 00e0 8FAD ldd r24,Y+63
180 00e2 2697 sbiw r28,69-63
181 00e4 2896 adiw r28,70-62
182 00e6 EEAD ldd r30,Y+62
183 00e8 FFAD ldd r31,Y+63
184 00ea 2897 sbiw r28,70-62
185 00ec 8824 clr r8
186 00ee 9924 clr r9
187 00f0 5401 movw r10,r8
188 00f2 8093 0000 sts PrintZiel,r24
189 00f6 48E4 ldi r20,lo8(72)
190 00f8 C42E mov r12,r20
191 00fa D12C mov r13,__zero_reg__
192 00fc CC0E add r12,r28
193 00fe DD1E adc r13,r29
194 0100 7F01 movw r14,r30
195 .L160:
196 0102 C701 movw r24,r14
197 .L154:
198 0104 F701 movw r30,r14
199 /* #APP */
200 0106 1491 lpm r17, Z
201
202 /* #NOAPP */
203 0108 1123 tst r17
204 010a 01F0 breq .L40
205 010c 1532 cpi r17,lo8(37)
206 010e 01F0 breq .L40
207 0110 0894 sec
208 0112 E11C adc r14,__zero_reg__
209 0114 F11C adc r15,__zero_reg__
210 0116 00C0 rjmp .L154
211 .L40:
212 0118 B701 movw r22,r14
213 011a 681B sub r22,r24
214 011c 790B sbc r23,r25
215 011e 01F0 breq .+2
216 0120 00C0 rjmp .L163
217 .L43:
218 0122 1123 tst r17
219 0124 01F4 brne .+2
220 0126 00C0 rjmp .L45
221 0128 0894 sec
222 012a E11C adc r14,__zero_reg__
223 012c F11C adc r15,__zero_reg__
224 012e 1FA6 std Y+47,__zero_reg__
225 0130 3FA4 ldd r3,Y+47
226 0132 232C mov r2,r3
227 0134 0FEF ldi r16,lo8(-1)
228 0136 39A6 std Y+41,r3
229 .L46:
230 .L161:
231 0138 F701 movw r30,r14
232 013a 0894 sec
233 013c E11C adc r14,__zero_reg__
234 013e F11C adc r15,__zero_reg__
235 /* #APP */
236 0140 1491 lpm r17, Z
237
238 .L47:
239 /* #NOAPP */
240 .L162:
241 0142 1537 cpi r17,lo8(117)
242 0144 01F0 breq .L49
243 .L168:
244 0146 812F mov r24,r17
245 0148 8062 ori r24,lo8(32)
246 014a 8837 cpi r24,lo8(120)
247 014c 01F0 breq .L49
248 .L48:
249 014e 1032 cpi r17,lo8(32)
250 0150 01F4 brne .+2
251 0152 00C0 rjmp .L164
252 .L52:
253 0154 1332 cpi r17,lo8(35)
254 0156 01F4 brne .+2
255 0158 00C0 rjmp .L165
256 015a 1A32 cpi r17,lo8(42)
257 015c 01F4 brne .+2
258 015e 00C0 rjmp .L58
259 0160 1D32 cpi r17,lo8(45)
260 0162 01F4 brne .+2
261 0164 00C0 rjmp .L58
262 0166 1B32 cpi r17,lo8(43)
263 0168 01F0 breq .L155
264 016a 1E32 cpi r17,lo8(46)
265 016c 01F0 breq .L166
266 016e 1033 cpi r17,lo8(48)
267 0170 01F4 brne .+2
268 0172 00C0 rjmp .L167
269 0174 812F mov r24,r17
270 0176 8153 subi r24,lo8(-(-49))
271 0178 8930 cpi r24,lo8(9)
272 017a 00F0 brlo .+2
273 017c 00C0 rjmp .L75
274 017e 60E0 ldi r22,lo8(0)
275 0180 70E0 ldi r23,hi8(0)
276 .L76:
277 0182 CB01 movw r24,r22
278 0184 880F lsl r24
279 0186 991F rol r25
280 0188 880F lsl r24
281 018a 991F rol r25
282 018c 880F lsl r24
283 018e 991F rol r25
284 0190 860F add r24,r22
285 0192 971F adc r25,r23
286 0194 680F add r22,r24
287 0196 791F adc r23,r25
288 0198 610F add r22,r17
289 019a 711D adc r23,__zero_reg__
290 019c 6053 subi r22,lo8(-(-48))
291 019e 7040 sbci r23,hi8(-(-48))
292 01a0 F701 movw r30,r14
293 01a2 0894 sec
294 01a4 E11C adc r14,__zero_reg__
295 01a6 F11C adc r15,__zero_reg__
296 /* #APP */
297 01a8 1491 lpm r17, Z
298
299 /* #NOAPP */
300 01aa 812F mov r24,r17
301 01ac 8053 subi r24,lo8(-(-48))
302 01ae 8A30 cpi r24,lo8(10)
303 01b0 00F0 brlo .L76
304 01b2 262E mov r2,r22
305 01b4 1537 cpi r17,lo8(117)
306 01b6 01F4 brne .L168
307 .L49:
308 01b8 30FE sbrs r3,0
309 01ba 00C0 rjmp .L50
310 01bc F601 movw r30,r12
311 01be 84E0 ldi r24,lo8(4)
312 01c0 90E0 ldi r25,hi8(4)
313 01c2 C80E add r12,r24
314 01c4 D91E adc r13,r25
315 01c6 8080 ld r8,Z
316 01c8 9180 ldd r9,Z+1
317 01ca A280 ldd r10,Z+2
318 01cc B380 ldd r11,Z+3
319 01ce 1032 cpi r17,lo8(32)
320 01d0 01F0 breq .+2
321 01d2 00C0 rjmp .L52
322 .L164:
323 01d4 89A5 ldd r24,Y+41
324 01d6 8823 tst r24
325 01d8 01F0 breq .+2
326 01da 00C0 rjmp .L161
327 .L155:
328 01dc 19A7 std Y+41,r17
329 01de 00C0 rjmp .L161
330 .L166:
331 01e0 F701 movw r30,r14
332 01e2 0894 sec
333 01e4 E11C adc r14,__zero_reg__
334 01e6 F11C adc r15,__zero_reg__
335 /* #APP */
336 01e8 1491 lpm r17, Z
337
338 /* #NOAPP */
339 01ea 1A32 cpi r17,lo8(42)
340 01ec 01F4 brne .+2
341 01ee 00C0 rjmp .L169
342 01f0 60E0 ldi r22,lo8(0)
343 01f2 70E0 ldi r23,hi8(0)
344 01f4 00C0 rjmp .L156
345 .L170:
346 01f6 CB01 movw r24,r22
347 01f8 880F lsl r24
348 01fa 991F rol r25
349 01fc 880F lsl r24
350 01fe 991F rol r25
351 0200 880F lsl r24
352 0202 991F rol r25
353 0204 860F add r24,r22
354 0206 971F adc r25,r23
355 0208 680F add r22,r24
356 020a 791F adc r23,r25
357 020c 610F add r22,r17
358 020e 711D adc r23,__zero_reg__
359 0210 6053 subi r22,lo8(-(-48))
360 0212 7040 sbci r23,hi8(-(-48))
361 0214 F701 movw r30,r14
362 0216 0894 sec
363 0218 E11C adc r14,__zero_reg__
364 021a F11C adc r15,__zero_reg__
365 /* #APP */
366 021c 1491 lpm r17, Z
367
368 /* #NOAPP */
369 .L156:
370 021e 812F mov r24,r17
371 0220 8053 subi r24,lo8(-(-48))
372 0222 8A30 cpi r24,lo8(10)
373 0224 00F0 brlo .L170
374 0226 EFEF ldi r30,hi8(-1)
375 0228 6F3F cpi r22,lo8(-1)
376 022a 7E07 cpc r23,r30
377 022c 04F4 brge .L70
378 022e 6FEF ldi r22,lo8(-1)
379 0230 7FEF ldi r23,hi8(-1)
380 .L70:
381 0232 062F mov r16,r22
382 0234 00C0 rjmp .L162
383 .L50:
384 0236 F601 movw r30,r12
385 0238 82E0 ldi r24,lo8(2)
386 023a 90E0 ldi r25,hi8(2)
387 023c C80E add r12,r24
388 023e D91E adc r13,r25
389 0240 8081 ld r24,Z
390 0242 9181 ldd r25,Z+1
391 0244 4C01 movw r8,r24
392 0246 AA24 clr r10
393 0248 BB24 clr r11
394 024a 00C0 rjmp .L48
395 .L163:
396 024c 0E94 0000 call PRINTP
397 0250 00C0 rjmp .L43
398 .L58:
399 0252 1A32 cpi r17,lo8(42)
400 0254 01F4 brne .L59
401 0256 F601 movw r30,r12
402 0258 82E0 ldi r24,lo8(2)
403 025a 90E0 ldi r25,hi8(2)
404 025c C80E add r12,r24
405 025e D91E adc r13,r25
406 0260 2080 ld r2,Z
407 0262 2220 tst r2
408 0264 04F0 brlt .+2
409 0266 00C0 rjmp .L161
410 0268 2194 neg r2
411 .L59:
412 026a 90E1 ldi r25,lo8(16)
413 026c 392A or r3,r25
414 026e EFED ldi r30,lo8(-33)
415 0270 3E22 and r3,r30
416 0272 00C0 rjmp .L161
417 .L165:
418 0274 98E0 ldi r25,lo8(8)
419 0276 392A or r3,r25
420 0278 00C0 rjmp .L161
421 .L75:
422 027a 1836 cpi r17,lo8(104)
423 027c 01F0 breq .L171
424 027e 1C36 cpi r17,lo8(108)
425 0280 01F4 brne .L82
426 0282 81E0 ldi r24,lo8(1)
427 0284 382A or r3,r24
428 0286 00C0 rjmp .L161
429 .L167:
430 0288 34FC sbrc r3,4
431 028a 00C0 rjmp .L161
432 028c F0E2 ldi r31,lo8(32)
433 028e 3F2A or r3,r31
434 0290 00C0 rjmp .L161
435 .L169:
436 0292 F601 movw r30,r12
437 0294 82E0 ldi r24,lo8(2)
438 0296 90E0 ldi r25,hi8(2)
439 0298 C80E add r12,r24
440 029a D91E adc r13,r25
441 029c 6081 ld r22,Z
442 029e 7181 ldd r23,Z+1
443 02a0 9FEF ldi r25,hi8(-1)
444 02a2 6F3F cpi r22,lo8(-1)
445 02a4 7907 cpc r23,r25
446 02a6 04F4 brge .L66
447 02a8 6FEF ldi r22,lo8(-1)
448 02aa 7FEF ldi r23,hi8(-1)
449 .L66:
450 02ac 062F mov r16,r22
451 02ae 00C0 rjmp .L161
452 .L171:
453 02b0 24E0 ldi r18,lo8(4)
454 02b2 322A or r3,r18
455 02b4 00C0 rjmp .L161
456 .L82:
457 02b6 1336 cpi r17,lo8(99)
458 02b8 01F4 brne .+2
459 02ba 00C0 rjmp .L172
460 02bc 1434 cpi r17,lo8(68)
461 02be 01F4 brne .+2
462 02c0 00C0 rjmp .L87
463 02c2 1436 cpi r17,lo8(100)
464 02c4 01F4 brne .+2
465 02c6 00C0 rjmp .L87
466 02c8 1936 cpi r17,lo8(105)
467 02ca 01F4 brne .+2
468 02cc 00C0 rjmp .L87
469 02ce 1F34 cpi r17,lo8(79)
470 02d0 01F4 brne .+2
471 02d2 00C0 rjmp .L95
472 02d4 1F36 cpi r17,lo8(111)
473 02d6 01F4 brne .+2
474 02d8 00C0 rjmp .L95
475 02da 1037 cpi r17,lo8(112)
476 02dc 01F4 brne .+2
477 02de 00C0 rjmp .L173
478 02e0 1337 cpi r17,lo8(115)
479 02e2 01F4 brne .+2
480 02e4 00C0 rjmp .L174
481 02e6 1535 cpi r17,lo8(85)
482 02e8 01F4 brne .+2
483 02ea 00C0 rjmp .L110
484 02ec 1537 cpi r17,lo8(117)
485 02ee 01F4 brne .+2
486 02f0 00C0 rjmp .L110
487 02f2 1835 cpi r17,lo8(88)
488 02f4 01F4 brne .+2
489 02f6 00C0 rjmp .L114
490 02f8 1837 cpi r17,lo8(120)
491 02fa 01F4 brne .+2
492 02fc 00C0 rjmp .L114
493 02fe 1123 tst r17
494 0300 01F4 brne .+2
495 0302 00C0 rjmp .L45
496 0304 CE01 movw r24,r28
497 0306 0196 adiw r24,1
498 0308 9DA7 std Y+45,r25
499 030a 8CA7 std Y+44,r24
500 030c 1983 std Y+1,r17
501 .L159:
502 030e 81E0 ldi r24,lo8(1)
503 0310 482E mov r4,r24
504 .L157:
505 0312 19A6 std Y+41,__zero_reg__
506 0314 632C mov r6,r3
507 0316 7724 clr r7
508 .L54:
509 0318 042D mov r16,r4
510 031a 5FA4 ldd r5,Y+47
511 031c 5418 sub r5,r4
512 031e 57FC sbrc r5,7
513 0320 00C0 rjmp .L175
514 .L129:
515 0322 29A5 ldd r18,Y+41
516 0324 2223 tst r18
517 0326 01F0 breq .L130
518 0328 0F5F subi r16,lo8(-(1))
519 .L131:
520 032a 050D add r16,r5
521 032c C301 movw r24,r6
522 032e 8073 andi r24,lo8(48)
523 0330 9070 andi r25,hi8(48)
524 0332 892B or r24,r25
525 0334 01F4 brne .+2
526 0336 00C0 rjmp .L176
527 .L133:
528 0338 2223 tst r18
529 033a 01F0 breq .+2
530 033c 00C0 rjmp .L177
531 033e 66FC sbrc r6,6
532 0340 00C0 rjmp .L178
533 .L135:
534 0342 C301 movw r24,r6
535 0344 8073 andi r24,lo8(48)
536 0346 9070 andi r25,hi8(48)
537 0348 8097 sbiw r24,32
538 034a 01F4 brne .+2
539 034c 00C0 rjmp .L179
540 .L137:
541 034e 852D mov r24,r5
542 0350 0E94 0000 call PAD_0
543 0354 842D mov r24,r4
544 0356 9927 clr r25
545 0358 87FD sbrc r24,7
546 035a 9095 com r25
547 035c BC01 movw r22,r24
548 035e 8CA5 ldd r24,Y+44
549 0360 9DA5 ldd r25,Y+45
550 0362 0E94 0000 call PRINT
551 0366 64FE sbrs r6,4
552 0368 00C0 rjmp .L160
553 036a 822D mov r24,r2
554 036c 801B sub r24,r16
555 036e 0E94 0000 call PAD_SP
556 0372 00C0 rjmp .L160
557 .L130:
558 0374 66FE sbrs r6,6
559 0376 00C0 rjmp .L131
560 0378 0E5F subi r16,lo8(-(2))
561 037a 00C0 rjmp .L131
562 .L175:
563 037c 5524 clr r5
564 037e 00C0 rjmp .L129
565 .L114:
566 0380 E0E1 ldi r30,lo8(16)
567 0382 EEA7 std Y+46,r30
568 0384 33FE sbrs r3,3
569 0386 00C0 rjmp .L97
570 0388 8114 cp r8,__zero_reg__
571 038a 9104 cpc r9,__zero_reg__
572 038c A104 cpc r10,__zero_reg__
573 038e B104 cpc r11,__zero_reg__
574 0390 01F0 breq .L97
575 0392 F0E4 ldi r31,lo8(64)
576 0394 3F2A or r3,r31
577 .L97:
578 0396 19A6 std Y+41,__zero_reg__
579 .L92:
580 0398 0FA7 std Y+47,r16
581 039a 07FD sbrc r16,7
582 039c 00C0 rjmp .L116
583 039e 2FED ldi r18,lo8(-33)
584 03a0 3222 and r3,r18
585 .L116:
586 03a2 CE01 movw r24,r28
587 03a4 8996 adiw r24,41
588 03a6 9DA7 std Y+45,r25
589 03a8 8CA7 std Y+44,r24
590 03aa 8114 cp r8,__zero_reg__
591 03ac 9104 cpc r9,__zero_reg__
592 03ae A104 cpc r10,__zero_reg__
593 03b0 B104 cpc r11,__zero_reg__
594 03b2 01F4 brne .L118
595 03b4 9FA5 ldd r25,Y+47
596 03b6 9923 tst r25
597 03b8 01F0 breq .L143
598 .L118:
599 03ba EEA5 ldd r30,Y+46
600 03bc 4E2E mov r4,r30
601 03be 5524 clr r5
602 03c0 6624 clr r6
603 03c2 7724 clr r7
604 .L119:
605 03c4 18AA std Y+48,__zero_reg__
606 03c6 8414 cp r8,r4
607 03c8 9504 cpc r9,r5
608 03ca A604 cpc r10,r6
609 03cc B704 cpc r11,r7
610 03ce 00F0 brlo .L122
611 03d0 F1E0 ldi r31,lo8(1)
612 03d2 F8AB std Y+48,r31
613 .L122:
614 03d4 C501 movw r24,r10
615 03d6 B401 movw r22,r8
616 03d8 A301 movw r20,r6
617 03da 9201 movw r18,r4
618 03dc 0E94 0000 call __udivmodsi4
619 03e0 DC01 movw r26,r24
620 03e2 CB01 movw r24,r22
621 03e4 082F mov r16,r24
622 03e6 8A30 cpi r24,lo8(10)
623 03e8 00F4 brsh .L123
624 03ea 005D subi r16,lo8(-(48))
625 .L124:
626 03ec ECA5 ldd r30,Y+44
627 03ee FDA5 ldd r31,Y+45
628 03f0 0293 st -Z,r16
629 03f2 FDA7 std Y+45,r31
630 03f4 ECA7 std Y+44,r30
631 03f6 C501 movw r24,r10
632 03f8 B401 movw r22,r8
633 03fa A301 movw r20,r6
634 03fc 9201 movw r18,r4
635 03fe 0E94 0000 call __udivmodsi4
636 0402 4901 movw r8,r18
637 0404 5A01 movw r10,r20
638 0406 F8A9 ldd r31,Y+48
639 0408 FF23 tst r31
640 040a 01F4 brne .L119
641 040c 2EA5 ldd r18,Y+46
642 040e 2830 cpi r18,lo8(8)
643 0410 01F0 breq .L180
644 .L143:
645 0412 632C mov r6,r3
646 0414 7724 clr r7
647 .L117:
648 0416 CE01 movw r24,r28
649 0418 0196 adiw r24,1
650 041a 482E mov r4,r24
651 041c FCA5 ldd r31,Y+44
652 041e 4F1A sub r4,r31
653 0420 28E2 ldi r18,lo8(40)
654 0422 420E add r4,r18
655 0424 00C0 rjmp .L54
656 .L123:
657 0426 095A subi r16,lo8(-(87))
658 0428 1835 cpi r17,lo8(88)
659 042a 01F4 brne .L124
660 042c 0F7D andi r16,lo8(-33)
661 042e 00C0 rjmp .L124
662 .L180:
663 0430 632C mov r6,r3
664 0432 7724 clr r7
665 0434 63FE sbrs r6,3
666 0436 00C0 rjmp .L117
667 0438 0033 cpi r16,lo8(48)
668 043a 01F0 breq .L117
669 043c 80E3 ldi r24,lo8(48)
670 043e ECA5 ldd r30,Y+44
671 0440 FDA5 ldd r31,Y+45
672 0442 8293 st -Z,r24
673 0444 FDA7 std Y+45,r31
674 0446 ECA7 std Y+44,r30
675 0448 00C0 rjmp .L117
676 .L174:
677 044a F601 movw r30,r12
678 044c 82E0 ldi r24,lo8(2)
679 044e 90E0 ldi r25,hi8(2)
680 0450 C80E add r12,r24
681 0452 D91E adc r13,r25
682 0454 0190 ld __tmp_reg__,Z+
683 0456 F081 ld r31,Z
684 0458 E02D mov r30,__tmp_reg__
685 045a FDA7 std Y+45,r31
686 045c ECA7 std Y+44,r30
687 045e EF2B or r30,r31
688 0460 01F4 brne .L102
689 0462 FE01 movw r30,r28
690 0464 3196 adiw r30,1
691 0466 FDA7 std Y+45,r31
692 0468 ECA7 std Y+44,r30
693 046a 88E2 ldi r24,lo8(40)
694 046c 8983 std Y+1,r24
695 046e 8EE6 ldi r24,lo8(110)
696 0470 8183 std Z+1,r24
697 0472 85E7 ldi r24,lo8(117)
698 0474 8B83 std Y+3,r24
699 0476 8CE6 ldi r24,lo8(108)
700 0478 8C83 std Y+4,r24
701 047a 8D83 std Y+5,r24
702 047c 89E2 ldi r24,lo8(41)
703 047e 8E83 std Y+6,r24
704 0480 1F82 std Y+7,__zero_reg__
705 .L102:
706 0482 07FD sbrc r16,7
707 0484 00C0 rjmp .L103
708 0486 802F mov r24,r16
709 0488 9927 clr r25
710 048a 87FD sbrc r24,7
711 048c 9095 com r25
712 048e AC01 movw r20,r24
713 0490 60E0 ldi r22,lo8(0)
714 0492 70E0 ldi r23,hi8(0)
715 0494 8CA5 ldd r24,Y+44
716 0496 9DA5 ldd r25,Y+45
717 0498 0E94 0000 call memchr
718 049c 0097 sbiw r24,0
719 049e 01F0 breq .L104
720 04a0 482E mov r4,r24
721 04a2 FCA5 ldd r31,Y+44
722 04a4 4F1A sub r4,r31
723 04a6 0415 cp r16,r4
724 04a8 04F0 brlt .+2
725 04aa 00C0 rjmp .L157
726 .L104:
727 04ac 402E mov r4,r16
728 04ae 00C0 rjmp .L157
729 .L103:
730 04b0 ECA5 ldd r30,Y+44
731 04b2 FDA5 ldd r31,Y+45
732 04b4 0190 ld __tmp_reg__,Z+
733 04b6 0020 tst __tmp_reg__
734 04b8 01F4 brne .-6
735 04ba 3197 sbiw r30,1
736 04bc 4E2E mov r4,r30
737 04be 2CA5 ldd r18,Y+44
738 04c0 421A sub r4,r18
739 04c2 00C0 rjmp .L157
740 .L110:
741 04c4 1535 cpi r17,lo8(85)
742 04c6 01F4 brne .L111
743 04c8 81E0 ldi r24,lo8(1)
744 04ca 382A or r3,r24
745 .L111:
746 04cc 9AE0 ldi r25,lo8(10)
747 04ce 9EA7 std Y+46,r25
748 04d0 00C0 rjmp .L97
749 .L173:
750 04d2 F601 movw r30,r12
751 04d4 82E0 ldi r24,lo8(2)
752 04d6 90E0 ldi r25,hi8(2)
753 04d8 C80E add r12,r24
754 04da D91E adc r13,r25
755 04dc 8081 ld r24,Z
756 04de 9181 ldd r25,Z+1
757 04e0 4C01 movw r8,r24
758 04e2 AA24 clr r10
759 04e4 BB24 clr r11
760 04e6 90E1 ldi r25,lo8(16)
761 04e8 9EA7 std Y+46,r25
762 04ea E0E4 ldi r30,lo8(64)
763 04ec 3E2A or r3,r30
764 04ee 18E7 ldi r17,lo8(120)
765 04f0 00C0 rjmp .L97
766 .L95:
767 04f2 1F34 cpi r17,lo8(79)
768 04f4 01F4 brne .L96
769 04f6 E1E0 ldi r30,lo8(1)
770 04f8 3E2A or r3,r30
771 .L96:
772 04fa F8E0 ldi r31,lo8(8)
773 04fc FEA7 std Y+46,r31
774 04fe 00C0 rjmp .L97
775 .L87:
776 0500 1434 cpi r17,lo8(68)
777 0502 01F4 brne .L88
778 0504 91E0 ldi r25,lo8(1)
779 0506 392A or r3,r25
780 .L88:
781 0508 30FE sbrs r3,0
782 050a 00C0 rjmp .L89
783 050c F601 movw r30,r12
784 050e 84E0 ldi r24,lo8(4)
785 0510 90E0 ldi r25,hi8(4)
786 0512 C80E add r12,r24
787 0514 D91E adc r13,r25
788 0516 8080 ld r8,Z
789 0518 9180 ldd r9,Z+1
790 051a A280 ldd r10,Z+2
791 051c B380 ldd r11,Z+3
792 .L90:
793 051e B7FE sbrs r11,7
794 0520 00C0 rjmp .L91
795 0522 B094 com r11
796 0524 A094 com r10
797 0526 9094 com r9
798 0528 8094 com r8
799 052a 811C adc r8,__zero_reg__
800 052c 911C adc r9,__zero_reg__
801 052e A11C adc r10,__zero_reg__
802 0530 B11C adc r11,__zero_reg__
803 0532 8DE2 ldi r24,lo8(45)
804 0534 89A7 std Y+41,r24
805 .L91:
806 0536 9AE0 ldi r25,lo8(10)
807 0538 9EA7 std Y+46,r25
808 053a 00C0 rjmp .L92
809 .L89:
810 053c F601 movw r30,r12
811 053e 82E0 ldi r24,lo8(2)
812 0540 90E0 ldi r25,hi8(2)
813 0542 C80E add r12,r24
814 0544 D91E adc r13,r25
815 0546 8081 ld r24,Z
816 0548 9181 ldd r25,Z+1
817 054a 4C01 movw r8,r24
818 054c AA24 clr r10
819 054e 97FC sbrc r9,7
820 0550 A094 com r10
821 0552 BA2C mov r11,r10
822 0554 00C0 rjmp .L90
823 .L172:
824 0556 FE01 movw r30,r28
825 0558 3196 adiw r30,1
826 055a FDA7 std Y+45,r31
827 055c ECA7 std Y+44,r30
828 055e F601 movw r30,r12
829 0560 82E0 ldi r24,lo8(2)
830 0562 90E0 ldi r25,hi8(2)
831 0564 C80E add r12,r24
832 0566 D91E adc r13,r25
833 0568 8081 ld r24,Z
834 056a 8983 std Y+1,r24
835 056c 00C0 rjmp .L159
836 .L179:
837 056e 822D mov r24,r2
838 0570 801B sub r24,r16
839 0572 0E94 0000 call PAD_0
840 0576 00C0 rjmp .L137
841 .L178:
842 0578 80E3 ldi r24,lo8(48)
843 057a 8AA7 std Y+42,r24
844 057c 1BA7 std Y+43,r17
845 057e 62E0 ldi r22,lo8(2)
846 0580 70E0 ldi r23,hi8(2)
847 0582 CE01 movw r24,r28
848 0584 8A96 adiw r24,42
849 .L158:
850 0586 0E94 0000 call PRINT
851 058a 00C0 rjmp .L135
852 .L177:
853 058c 61E0 ldi r22,lo8(1)
854 058e 70E0 ldi r23,hi8(1)
855 0590 CE01 movw r24,r28
856 0592 8996 adiw r24,41
857 0594 00C0 rjmp .L158
858 .L176:
859 0596 822D mov r24,r2
860 0598 801B sub r24,r16
861 059a 0E94 0000 call PAD_SP
862 059e 29A5 ldd r18,Y+41
863 05a0 00C0 rjmp .L133
864 .L45:
865 /* epilogue: frame size=48 */
866 05a2 E2E1 ldi r30,18
867 05a4 C05D subi r28,-48
868 05a6 0C94 0000 jmp __epilogue_restores__+0
869 /* epilogue end (size=4) */
870 /* function _printf_P size 639 (629) */
872 .comm PrintZiel,1,1
873 .comm Mixer,77,1
874 /* File "printf_P.c": code 754 = 0x02f2 ( 719), prologues 16, epilogues 19 */
DEFINED SYMBOLS
*ABS*:00000000 printf_P.c
C:\Users\Bernd\AppData\Local\Temp/ccF6QCGh.s:3 *ABS*:0000003f __SREG__
C:\Users\Bernd\AppData\Local\Temp/ccF6QCGh.s:4 *ABS*:0000003e __SP_H__
C:\Users\Bernd\AppData\Local\Temp/ccF6QCGh.s:5 *ABS*:0000003d __SP_L__
C:\Users\Bernd\AppData\Local\Temp/ccF6QCGh.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Bernd\AppData\Local\Temp/ccF6QCGh.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Bernd\AppData\Local\Temp/ccF6QCGh.s:13 .text:00000000 Putchar
*COM*:00000001 PrintZiel
C:\Users\Bernd\AppData\Local\Temp/ccF6QCGh.s:45 .text:00000032 PRINT
C:\Users\Bernd\AppData\Local\Temp/ccF6QCGh.s:81 .text:00000068 PRINTP
C:\Users\Bernd\AppData\Local\Temp/ccF6QCGh.s:125 .text:000000a2 PAD_SP
C:\Users\Bernd\AppData\Local\Temp/ccF6QCGh.s:147 .text:000000ba PAD_0
C:\Users\Bernd\AppData\Local\Temp/ccF6QCGh.s:169 .text:000000d2 _printf_P
*COM*:0000004d Mixer
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
uart_putchar
DispPtr
DisplayBuff
__prologue_saves__
__udivmodsi4
memchr
__epilogue_restores__
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/rc.c
0,0 → 1,104
/**************************************************************************************************************************************
* File: rc.c
*
* Purpose: Decoding of the radio control sum signal
*
* Functions: void rc_sum_init(void)
* ISR(TIMER1_CAPT_vect)
*
*************************************************************************************************************************************/
#include "rc.h"
#include "main.h"
 
 
volatile int PPM_in[11]; // containing the stick signal of the according radio control chanel
volatile int PPM_diff[11]; // the differential stick signal of the appropriate radio control chanel
volatile char Channels; // containing the number of channels
volatile char tmpChannels = 0; //
volatile unsigned char NewPpmData = 1; //
 
 
//----------------------------------------------------------------------------------------------------------------------------------
// The input capture function of Timer1 is used to decode the PPM sum signal
//----------------------------------------------------------------------------------------------------------------------------------
void rc_sum_init(void)
{
//------------------------------------------------------------------------------------------------
// TCCR1B = Timer/Counter1 Control Register B -> ICNC1 ICES1 – WGM13 WGM12 CS12 CS11 CS10
//
// ICES1: Input Capture Edge Select = activated
// ICNC1: Input Capture Noise Canceler = activated
// CSn2:0 Clock Select = 1:64 from prescaler
//
TCCR1B= (1<<ICES1)|(1<<ICNC1)|(1<<CS11)|(1<<CS10);
//------------------------------------------------------------------------------------------------
// TIMSK1 = Timer/Counter1 Interrupt Mask Register -> – – ICIE1 – – OCIE1B OCIE1A TOIE1
// ICIE1: Timer/Counter1, Input Capture Interrupt Enable
//
TIMSK1 |= (1<<ICIE1);
AdNeutralGier = 0;
AdNeutralRoll = 0;
AdNeutralNick = 0;
return;
}
//----------------------------------------------------------------------------------------------------------------------------------
 
 
 
//----------------------------------------------------------------------------------------------------------------------------------
// This function works with Timer1 to decode the radio control
//----------------------------------------------------------------------------------------------------------------------------------
ISR(TIMER1_CAPT_vect)
{
static unsigned int AltICR=0;
signed int signal = 0;
signed int tmp;
static int index;
signal = (unsigned int) ICR1 - AltICR; // ICR1H and ICR1L – Input Capture Register 1
AltICR = ICR1;
if((signal > 1100) && (signal < 8000)) // Syncronisation break? (3.52 ms < signal < 25.6 ms)
{
Channels = index;
if(index >= 4) NewPpmData = 0; // zero is equal to new Data
index = 1;
}
else
{
if(index < 10)
{
if((signal > 250) && (signal < 687))
{
signal -= 466;
if(abs(signal - PPM_in[index]) < 6) // good signal
{
if(SenderOkay < 200) SenderOkay += 10;
else SenderOkay = 200;
}
tmp = (3 * (PPM_in[index]) + signal) / 4;
if(tmp > signal+1) tmp--;
else if(tmp < signal-1) tmp++;
if(SenderOkay >= 195) PPM_diff[index] = ((tmp - PPM_in[index]) / 3) * 3;
else PPM_diff[index] = 0;
PPM_in[index] = tmp;
}
index++;
if(index == 5) J3High; else J3Low; // Servosignal an J3 anlegen
if(index == 6) J4High; else J4Low; // Servosignal an J4 anlegen
if(index == 7) J5High; else J5Low; // Servosignal an J5 anlegen
}
}
}
//----------------------------------------------------------------------------------------------------------------------------------
 
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/rc.d
0,0 → 1,2
rc.o rc.d : rc.c rc.h main.h old_macros.h _Settings.h printf_P.h timer0.h \
uart.h analog.h eeprom.h twimaster.h menu.h fc.h led.h
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/rc.h
0,0 → 1,25
//-------------------------------------------------------------------------------------------------------------------------------------
// rc.c
//-------------------------------------------------------------------------------------------------------------------------------------
 
#ifndef _RC_H
#define _RC_H
 
#if defined (__AVR_ATmega644__)
#define TIMER_RELOAD_VALUE 250
#endif
 
#if defined (__AVR_ATmega644P__)
#define TIMER_RELOAD_VALUE 250
#endif
 
#define GAS PPM_in[2]
 
extern void rc_sum_init (void);
extern volatile int PPM_in[11]; // das Fernsteuer-Summensignal - decodiert // PPM_in[1] = Gas // PPM_in[2] = Roll // PPM_in[3] = Nick // PPM_in[4] = Gier
extern volatile int PPM_diff[11]; // das diffenzierte Stick-Signal
extern volatile unsigned char NewPpmData;
extern volatile char Channels,tmpChannels;
 
#endif //_RC_H
//-------------------------------------------------------------------------------------------------------------------------------------
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/rc.lst
0,0 → 1,325
1 .file "rc.c"
2 .arch atmega644
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 .global NewPpmData
11 .data
14 NewPpmData:
15 0000 01 .byte 1
16 .global tmpChannels
17 .global tmpChannels
18 .section .bss
21 tmpChannels:
22 0000 00 .skip 1,0
23 .text
24 .global rc_sum_init
26 rc_sum_init:
27 /* prologue: frame size=0 */
28 /* prologue end (size=0) */
29 0000 83EC ldi r24,lo8(-61)
30 0002 8093 8100 sts 129,r24
31 0006 8091 6F00 lds r24,111
32 000a 8062 ori r24,lo8(32)
33 000c 8093 6F00 sts 111,r24
34 0010 1092 0000 sts (AdNeutralGier)+1,__zero_reg__
35 0014 1092 0000 sts AdNeutralGier,__zero_reg__
36 0018 1092 0000 sts (AdNeutralRoll)+1,__zero_reg__
37 001c 1092 0000 sts AdNeutralRoll,__zero_reg__
38 0020 1092 0000 sts (AdNeutralNick)+1,__zero_reg__
39 0024 1092 0000 sts AdNeutralNick,__zero_reg__
40 /* epilogue: frame size=0 */
41 0028 0895 ret
42 /* epilogue end (size=1) */
43 /* function rc_sum_init size 21 (20) */
45 .lcomm AltICR.0,2
46 .lcomm index.1,2
47 .global __vector_12
49 __vector_12:
50 /* prologue: frame size=0 */
51 002a 1F92 push __zero_reg__
52 002c 0F92 push __tmp_reg__
53 002e 0FB6 in __tmp_reg__,__SREG__
54 0030 0F92 push __tmp_reg__
55 0032 1124 clr __zero_reg__
56 0034 EF92 push r14
57 0036 FF92 push r15
58 0038 0F93 push r16
59 003a 1F93 push r17
60 003c 2F93 push r18
61 003e 3F93 push r19
62 0040 4F93 push r20
63 0042 5F93 push r21
64 0044 6F93 push r22
65 0046 7F93 push r23
66 0048 8F93 push r24
67 004a 9F93 push r25
68 004c AF93 push r26
69 004e BF93 push r27
70 0050 CF93 push r28
71 0052 DF93 push r29
72 0054 EF93 push r30
73 0056 FF93 push r31
74 /* prologue end (size=23) */
75 0058 2091 8600 lds r18,134
76 005c 3091 8700 lds r19,(134)+1
77 0060 8091 0000 lds r24,AltICR.0
78 0064 9091 0000 lds r25,(AltICR.0)+1
79 0068 281B sub r18,r24
80 006a 390B sbc r19,r25
81 006c 8091 8600 lds r24,134
82 0070 9091 8700 lds r25,(134)+1
83 0074 9093 0000 sts (AltICR.0)+1,r25
84 0078 8093 0000 sts AltICR.0,r24
85 007c C901 movw r24,r18
86 007e 8D54 subi r24,lo8(-(-1101))
87 0080 9440 sbci r25,hi8(-(-1101))
88 0082 835F subi r24,lo8(6899)
89 0084 9A41 sbci r25,hi8(6899)
90 0086 00F4 brsh .L3
91 0088 8091 0000 lds r24,index.1
92 008c 8093 0000 sts Channels,r24
93 0090 8091 0000 lds r24,index.1
94 0094 9091 0000 lds r25,(index.1)+1
95 0098 0497 sbiw r24,4
96 009a 04F0 brlt .L4
97 009c 1092 0000 sts NewPpmData,__zero_reg__
98 .L4:
99 00a0 C1E0 ldi r28,lo8(1)
100 00a2 D0E0 ldi r29,hi8(1)
101 00a4 D093 0000 sts (index.1)+1,r29
102 00a8 C093 0000 sts index.1,r28
103 00ac 00C0 rjmp .L2
104 .L3:
105 00ae C091 0000 lds r28,index.1
106 00b2 D091 0000 lds r29,(index.1)+1
107 00b6 CA30 cpi r28,10
108 00b8 D105 cpc r29,__zero_reg__
109 00ba 04F0 brlt .+2
110 00bc 00C0 rjmp .L2
111 00be C901 movw r24,r18
112 00c0 8B5F subi r24,lo8(-(-251))
113 00c2 9040 sbci r25,hi8(-(-251))
114 00c4 845B subi r24,lo8(436)
115 00c6 9140 sbci r25,hi8(436)
116 00c8 00F0 brlo .L26
117 .L7:
118 00ca FE01 movw r30,r28
119 00cc 3196 adiw r30,1
120 00ce F093 0000 sts (index.1)+1,r31
121 00d2 E093 0000 sts index.1,r30
122 00d6 E530 cpi r30,5
123 00d8 F105 cpc r31,__zero_reg__
124 00da 01F4 brne .+2
125 00dc 00C0 rjmp .L27
126 00de 5D98 cbi 43-0x20,5
127 .L19:
128 00e0 E630 cpi r30,6
129 00e2 F105 cpc r31,__zero_reg__
130 00e4 01F4 brne .+2
131 00e6 00C0 rjmp .L28
132 00e8 5C98 cbi 43-0x20,4
133 .L21:
134 00ea 3797 sbiw r30,7
135 00ec 01F4 brne .+2
136 00ee 00C0 rjmp .L29
137 00f0 5B98 cbi 43-0x20,3
138 00f2 00C0 rjmp .L2
139 .L26:
140 00f4 225D subi r18,lo8(-(-466))
141 00f6 3140 sbci r19,hi8(-(-466))
142 00f8 FE01 movw r30,r28
143 00fa EC0F add r30,r28
144 00fc FD1F adc r31,r29
145 00fe E050 subi r30,lo8(-(PPM_in))
146 0100 F040 sbci r31,hi8(-(PPM_in))
147 0102 8081 ld r24,Z
148 0104 9181 ldd r25,Z+1
149 0106 F901 movw r30,r18
150 0108 E81B sub r30,r24
151 010a F90B sbc r31,r25
152 010c CF01 movw r24,r30
153 010e F7FD sbrc r31,7
154 0110 00C0 rjmp .L30
155 .L9:
156 0112 0697 sbiw r24,6
157 0114 04F4 brge .L8
158 0116 8091 0000 lds r24,SenderOkay
159 011a 883C cpi r24,lo8(-56)
160 011c 00F0 brlo .+2
161 011e 00C0 rjmp .L10
162 0120 8091 0000 lds r24,SenderOkay
163 0124 865F subi r24,lo8(-(10))
164 0126 8093 0000 sts SenderOkay,r24
165 .L8:
166 012a FE01 movw r30,r28
167 012c EC0F add r30,r28
168 012e FD1F adc r31,r29
169 0130 E050 subi r30,lo8(-(PPM_in))
170 0132 F040 sbci r31,hi8(-(PPM_in))
171 0134 8081 ld r24,Z
172 0136 9181 ldd r25,Z+1
173 0138 AC01 movw r20,r24
174 013a 440F lsl r20
175 013c 551F rol r21
176 013e 480F add r20,r24
177 0140 591F adc r21,r25
178 0142 420F add r20,r18
179 0144 531F adc r21,r19
180 0146 57FD sbrc r21,7
181 0148 00C0 rjmp .L31
182 .L12:
183 014a 7A01 movw r14,r20
184 014c F594 asr r15
185 014e E794 ror r14
186 0150 F594 asr r15
187 0152 E794 ror r14
188 0154 C901 movw r24,r18
189 0156 0196 adiw r24,1
190 0158 8E15 cp r24,r14
191 015a 9F05 cpc r25,r15
192 015c 04F4 brge .L13
193 015e 0894 sec
194 0160 E108 sbc r14,__zero_reg__
195 0162 F108 sbc r15,__zero_reg__
196 .L14:
197 0164 8091 0000 lds r24,SenderOkay
198 0168 833C cpi r24,lo8(-61)
199 016a 00F0 brlo .L16
200 016c 8E01 movw r16,r28
201 016e 0C0F add r16,r28
202 0170 1D1F adc r17,r29
203 0172 F801 movw r30,r16
204 0174 E050 subi r30,lo8(-(PPM_in))
205 0176 F040 sbci r31,hi8(-(PPM_in))
206 0178 8081 ld r24,Z
207 017a 9181 ldd r25,Z+1
208 017c 9701 movw r18,r14
209 017e 281B sub r18,r24
210 0180 390B sbc r19,r25
211 0182 C901 movw r24,r18
212 0184 63E0 ldi r22,lo8(3)
213 0186 70E0 ldi r23,hi8(3)
214 0188 0E94 0000 call __divmodhi4
215 018c CB01 movw r24,r22
216 018e 880F lsl r24
217 0190 991F rol r25
218 0192 860F add r24,r22
219 0194 971F adc r25,r23
220 0196 0050 subi r16,lo8(-(PPM_diff))
221 0198 1040 sbci r17,hi8(-(PPM_diff))
222 019a F801 movw r30,r16
223 019c 9183 std Z+1,r25
224 019e 8083 st Z,r24
225 .L17:
226 01a0 FE01 movw r30,r28
227 01a2 EC0F add r30,r28
228 01a4 FD1F adc r31,r29
229 01a6 E050 subi r30,lo8(-(PPM_in))
230 01a8 F040 sbci r31,hi8(-(PPM_in))
231 01aa F182 std Z+1,r15
232 01ac E082 st Z,r14
233 01ae 00C0 rjmp .L7
234 .L29:
235 01b0 5B9A sbi 43-0x20,3
236 01b2 00C0 rjmp .L2
237 .L28:
238 01b4 5C9A sbi 43-0x20,4
239 01b6 00C0 rjmp .L21
240 .L27:
241 01b8 5D9A sbi 43-0x20,5
242 01ba 00C0 rjmp .L19
243 .L16:
244 01bc FE01 movw r30,r28
245 01be EC0F add r30,r28
246 01c0 FD1F adc r31,r29
247 01c2 E050 subi r30,lo8(-(PPM_diff))
248 01c4 F040 sbci r31,hi8(-(PPM_diff))
249 01c6 1182 std Z+1,__zero_reg__
250 01c8 1082 st Z,__zero_reg__
251 01ca 00C0 rjmp .L17
252 .L13:
253 01cc 2150 subi r18,lo8(-(-1))
254 01ce 3040 sbci r19,hi8(-(-1))
255 01d0 E216 cp r14,r18
256 01d2 F306 cpc r15,r19
257 01d4 04F4 brge .L14
258 01d6 0894 sec
259 01d8 E11C adc r14,__zero_reg__
260 01da F11C adc r15,__zero_reg__
261 01dc 00C0 rjmp .L14
262 .L10:
263 01de 88EC ldi r24,lo8(-56)
264 01e0 8093 0000 sts SenderOkay,r24
265 01e4 00C0 rjmp .L8
266 .L31:
267 01e6 4D5F subi r20,lo8(-(3))
268 01e8 5F4F sbci r21,hi8(-(3))
269 01ea 00C0 rjmp .L12
270 .L30:
271 01ec 9095 com r25
272 01ee 8195 neg r24
273 01f0 9F4F sbci r25,lo8(-1)
274 01f2 00C0 rjmp .L9
275 .L2:
276 /* epilogue: frame size=0 */
277 01f4 FF91 pop r31
278 01f6 EF91 pop r30
279 01f8 DF91 pop r29
280 01fa CF91 pop r28
281 01fc BF91 pop r27
282 01fe AF91 pop r26
283 0200 9F91 pop r25
284 0202 8F91 pop r24
285 0204 7F91 pop r23
286 0206 6F91 pop r22
287 0208 5F91 pop r21
288 020a 4F91 pop r20
289 020c 3F91 pop r19
290 020e 2F91 pop r18
291 0210 1F91 pop r17
292 0212 0F91 pop r16
293 0214 FF90 pop r15
294 0216 EF90 pop r14
295 0218 0F90 pop __tmp_reg__
296 021a 0FBE out __SREG__,__tmp_reg__
297 021c 0F90 pop __tmp_reg__
298 021e 1F90 pop __zero_reg__
299 0220 1895 reti
300 /* epilogue end (size=23) */
301 /* function __vector_12 size 257 (211) */
303 .comm PPM_in,22,1
304 .comm PPM_diff,22,1
305 .comm Channels,1,1
306 .comm Mixer,77,1
307 /* File "rc.c": code 278 = 0x0116 ( 231), prologues 23, epilogues 24 */
DEFINED SYMBOLS
*ABS*:00000000 rc.c
C:\Users\Bernd\AppData\Local\Temp/ccgzl0K0.s:3 *ABS*:0000003f __SREG__
C:\Users\Bernd\AppData\Local\Temp/ccgzl0K0.s:4 *ABS*:0000003e __SP_H__
C:\Users\Bernd\AppData\Local\Temp/ccgzl0K0.s:5 *ABS*:0000003d __SP_L__
C:\Users\Bernd\AppData\Local\Temp/ccgzl0K0.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Bernd\AppData\Local\Temp/ccgzl0K0.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Bernd\AppData\Local\Temp/ccgzl0K0.s:14 .data:00000000 NewPpmData
C:\Users\Bernd\AppData\Local\Temp/ccgzl0K0.s:21 .bss:00000000 tmpChannels
C:\Users\Bernd\AppData\Local\Temp/ccgzl0K0.s:26 .text:00000000 rc_sum_init
.bss:00000001 AltICR.0
C:\Users\Bernd\AppData\Local\Temp/ccgzl0K0.s:45 .bss:00000003 index.1
C:\Users\Bernd\AppData\Local\Temp/ccgzl0K0.s:49 .text:0000002a __vector_12
*COM*:00000001 Channels
*COM*:00000016 PPM_in
*COM*:00000016 PPM_diff
*COM*:0000004d Mixer
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
AdNeutralGier
AdNeutralRoll
AdNeutralNick
SenderOkay
__divmodhi4
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/timer0.c
0,0 → 1,380
/*****************************************************************************************************************************
* File: timer0.c
*
* Purpose: setup of timer0 and timer2
* and delay functions
*
* Functions: void Timer_Init(void);
* void TIMER2_Init(void);
* void Delay_ms(unsigned int);
* void Delay_ms_Mess(unsigned int);
*
*****************************************************************************************************************************/
//
 
#include "main.h"
 
volatile unsigned int CountMilliseconds = 0;
volatile static unsigned int tim_main;
volatile unsigned char UpdateMotor = 0;
volatile unsigned int cntKompass = 0;
volatile unsigned int beeptime = 0;
volatile unsigned char SendSPI = 0;
volatile unsigned char ServoActive = 0;
 
unsigned int BeepMuster = 0xFFFF;
 
volatile int16_t ServoNickValue = 0;
volatile int16_t ServoRollValue = 0;
 
 
//---------------------------
enum
{
STOP = 0,
CK = 1,
CK8 = 2,
CK64 = 3,
CK256 = 4,
CK1024 = 5,
T0_FALLING_EDGE = 6,
T0_RISING_EDGE = 7
};
//---------------------------
 
 
 
//********************************************************************************************************************
// Timer0 is running with "fast PWM" at OC0A=PORTB3 and OC0B=PORTB4
// setup of Offset P_OFF1 and P_OFF2 for the air pressure sensor
//--------------------------------------------------------------------------------------------------------------------
void Timer_Init(void)
{
tim_main = SetDelay(10);
// ----------------------------------------------------------------------------------------------------------------
// TCCR0B – Timer/Counter Control Register B containing: FOC0A FOC0B – – WGM02 CS02 CS01 CS0
//
TCCR0B = CK8; // CK8 = 2 = clk/8 (From prescaler) one turnarround takes 0.1024ms
// ----------------------------------------------------------------------------------------------------------------
// TCCR0A – Timer/Counter Control Register A containing: COM0A1 COM0A0 COM0B1 COM0B0 – – WGM01 WGM00
//
TCCR0A = (1<<COM0A1)|(1<<COM0B1)|3; // WGM02 WGM01 WGM00 = 011 = Fast PWM
OCR0A = 0; // output compare Register A for Counter 0
OCR0B = 120; // output compare Register B for Counter 0
TCNT0 = (unsigned char)-TIMER_RELOAD_VALUE; // reload // #define TIMER_RELOAD_VALUE 250
// ----------------------------------------------------------------------------------------------------------------
// TIMSK0 – Timer/Counter Interrupt Mask Register containing: – – – – – OCIE0B OCIE0A TOIE0
// TOIE0: Timer/Counter0 Overflow Interrupt Enable - When the TOIE0 bit is written to one, and the I-bit in the Status Register is set
//
TIMSK0 |= (1<<TOIE0);
}
// **************************** EOF: void Timer_Init(void) *******************************************************************
 
 
 
// *************************************************************************************************************************
// this funktions returns the variable "CountMilliseconds" as it will be after the waiting time hase been exipired
// -------------------------------------------------------------------------------------------------------------------------
unsigned int SetDelay(unsigned int t)
{
return(CountMilliseconds + t + 1);
}
// *************************************************************************************************************************
 
 
 
 
// *************************************************************************************************************************
// Hier wird also die Zeitdifferenz (t-CountsMilliseconds) mit der Maske 0x08000 maskiert.
// 0x8000 = 1000 0000 0000 0000 setzt also bis auf das höchste Bit der 16-bit Zeitdifferenz alle Bits auf 0.
// Bei einer Integerzahl codiert das höchst bit das Vorzeichen. Ist also t < CountMillisconds wird,
// so flippt das Vorzeichen-Bit auf 1 sonst ist es 0. Diese Eigenschaft wird hier genutzt.
// Das Ganze wird dann noch um 9 Bits nach rechts geshiftet, damit die Information im unteren Byte liegt,
// um beim Typecast des Rückgabewertes auf 8-Bit die Ändeurng im oberen Byte nicht abgeschnitten wird.
//
// Man könnte den Code auch so aufschreiben:
/*
char CheckDelay(unsigned int t)
{
int diff;
diff = int(t-CountMilliseconds);
if (diff < 0) return 255;
else return 0;
}
*/
//
char CheckDelay(unsigned int t)
{
return(((t - CountMilliseconds) & 0x8000) >> 9); // 0x8000 = 0b 1000 0000 0000 0000
}
// *************************************************************************************************************************
 
 
 
// *************************************************************************************************************************
void Delay_ms(unsigned int w)
{
unsigned int akt;
akt = SetDelay(w);
while (!CheckDelay(akt));
}
// *************************************************************************************************************************
 
 
 
// *************************************************************************************************************************
void Delay_ms_Mess(unsigned int w)
{
unsigned int akt;
akt = SetDelay(w);
while (!CheckDelay(akt)) if(AdReady) {AdReady = 0; ANALOG_ON;} // #define ANALOG_ON ADCSRA=(1<<ADEN)|(1<<ADSC)|(0<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE)
}
// *************************************************************************************************************************
 
 
 
// *************************************************************************************************************************
// Interrupt due to overflow of Timer0
// --------------------------------------
ISR(TIMER0_OVF_vect)
{
static unsigned char cnt_1ms=1, cnt=0; // one turnarround of Timer0 takes 0.1024ms at 256 steps
unsigned char pieper_ein = 0;
if(SendSPI) SendSPI--; //
if(!cnt--)
{
cnt=9; // 10 steps * 0.1024ms -> 1ms
cnt_1ms++;
cnt_1ms %= 2; // modulo division
if(!cnt_1ms) UpdateMotor = 1; // all 2 ms the motor is updated
CountMilliseconds++;
}
if(beeptime >= 1)
{
beeptime--;
if(beeptime & BeepMuster)
{
pieper_ein = 1;
}
else pieper_ein = 0;
}
else
{
pieper_ein = 0;
BeepMuster = 0xFFFF;
}
if(pieper_ein)
{
PORTC |= (1<<7); // beeper is connected to PORTC.7
}
else
{
PORTC &= ~(1<<7);
}
//------------------------------------------------------------------------------------------------------------------------
// Compass works per PWM at PORTC4
//------------------------------------------------------------------------------------------------------------------------
if(EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV)
{
if(PINC & 0x10) // PORTC4 is up
{
cntKompass++;
}
else // PORTC4 is doing down now -> check lenght of PWM pulse
{
if((cntKompass) && (cntKompass < 362)) // if value is positiv and less then 362
{
cntKompass += cntKompass / 41;
if(cntKompass > 10) KompassValue = cntKompass - 10; else KompassValue = 0; // indicated value of compass
}
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; // differential direction
cntKompass = 0; // reset PWM counter
}
}
 
}
// *************************************************************************************************************************
 
 
 
 
// *************************************************************************************************************************
// Purpose: Initialize Timer 2
//
// Timer 2 is used to generate the PWM at PD7 (J7) to control a camera servo for nick compensation.
//
//---------------------------------------------------------------------------------------------------------------------------------------
void TIMER2_Init(void)
{
unsigned char sreg = SREG; // copy SREG – Status Register
cli(); // disable all interrupts before reconfiguration
PORTD &= ~(1<<PORTD7); // set PD7 = OC2A to low = Servo PPM
//------------------------------------------------------------------------------------------
// DDRC – Port C Data Direction Register containing: DDC7 DDC6 DDC5 DDC4 DDC3 DDC2 DDC1 DDC0
DDRC |= (1<<DDC6); // set PC6 as output (Reset for HEF4017)
HEF4017R_ON; // #define HEF4017R_ON PORTC |= (1<<PORTC6)
//------------------------------------------------------------------------------------------
// TCCR2A = Timer/Counter 2 Control Register A containing: COM2A1 COM2A0 COM2B1 COM2B0 – – WGM21 WGM20
// COM2A1:0: Compare Match Output A Mode. These bits control the Output Compare pin (OC2A) behavior
// COM2B1:0: Compare Match Output B Mode. These bits control the Output Compare pin (OC2B) behavior
TCCR2A &= ~((1<<COM2A1)|(1<<COM2A0)|(1<<COM2B1)|(1<<COM2B0)); // Normal port operation
//
// The counter counts from BOTTOM to TOP then restarts from BOTTOM.
// TOP is defined as OCR2A asxxx, MGM22:0 = 111.
TCCR2A |= (1<<WGM21)|(1<<WGM20);
//------------------------------------------------------------------------------------------
// TCCR2B = Timer/Counter 2 Control Register B containing: FOC2A FOC2B – – WGM22 CS22 CS21 CS20
// FOC2A: Force Output Compare A. The FOC2A bit is only active when the WGM bits specify a non-PWM mode
// FOC2B: Force Output Compare B. The FOC2B bit is only active when the WGM bits specify a non-PWM mode.
// CS22:0: Clock Select. The three Clock Select bits select the clock source to be used by the Timer/Counter
// Clock Select = 011 = SYSKLOCK/32 at 20MHz / 32 = 625 kHz
// The timer increments from 0x00 to OCR2A with an update rate of 625 kHz or 0.0016 ms
//
TCCR2B &= ~((1<<FOC2A)|(1<<FOC2B)|(1<<CS22));
TCCR2B |= (1<<CS21)|(1<<CS20)|(1<<WGM22);
//------------------------------------------------------------------------------------------
// Reset the Timer/Counter 2
TCNT2 = 0;
OCR2A = 255; // Initialize the Output Compare Register A used for PWM generation on port PD7.
TCCR2A |= (1<<COM2A1); // Clear OC2A on Compare Match when up-counting. Set OC2A on Compare Match when down-counting
//------------------------------------------------------------------------------------------
// TIMSK2 – Timer/Counter2 Interrupt Mask Register containing: – – – – – OCIE2B OCIE2A TOIE2
// OCIE2B: Timer/Counter2 Output Compare Match B Interrupt Enable
// TOIE2: Timer/Counter2 Overflow Interrupt Enable
//
TIMSK2 &= ~((1<<OCIE2B)|(1<<TOIE2)); // Output Compare Match B Interrupt is dissabled as Overflow Interrupt
TIMSK2 |= (1<<OCIE2A); // Timer/Counter2 Output Compare Match A Interrupt is enabled
SREG = sreg; // recopy SREG – Status Register
}
// *************************************************************************************************************************
 
 
 
// *************************************************************************************************************************
// Timer2 controlls the Position of Control Servos at
// OC2A=PORTD7
//---------------------------------------------------------------------------------------------------------------------------------------------
ISR(TIMER2_COMPA_vect)
{
// frame len 22.5 ms = 14063 * 1.6 us
// stop pulse: 0.3 ms = 188 * 1.6 us
// min servo pulse: 0.6 ms = 375 * 1.6 us
// max servo pulse: 2.4 ms = 1500 * 1.6 us
// resolution: 1500 - 375 = 1125 steps
#define IRS_RUNTIME 127
#define PPM_STOPPULSE 188
#define PPM_FRAMELEN (1757 * EE_Parameter.ServoNickRefresh)
#define MINSERVOPULSE 375
#define MAXSERVOPULSE 1500
#define SERVORANGE (MAXSERVOPULSE - MINSERVOPULSE)
static uint8_t PulseOutput = 0;
static uint16_t RemainingPulse = 0;
static uint16_t ServoFrameTime = 0;
//static uint8_t ServoIndex = 0;
#define MULTIPLYER 4
static int16_t ServoNickOffset = (255 / 2) * MULTIPLYER; // initial value near center positon
//static int16_t ServoRollOffset = (255 / 2) * MULTIPLYER; // initial value near center positon
//------------------------------------------------------------------------------------------------------------------------
// Nick servo state machine
//------------------------------------------------------------------------------------------------------------------------
if(!PulseOutput) // pulse output complete
{
if(TCCR2A & (1<<COM2A0)) // we had a low pulse
{
TCCR2A &= ~(1<<COM2A0); // make a high pulse
RemainingPulse = MINSERVOPULSE + SERVORANGE/2; // center position ~ 1.5ms
ServoNickOffset = (ServoNickOffset * 3 + (int16_t)Parameter_ServoNickControl * MULTIPLYER) / 4; // lowpass offset
ServoNickValue = ServoNickOffset; // offset (Range from 0 to 255 * 3 = 765)
if(EE_Parameter.ServoCompInvert & 0x01)
{ // inverting movement of servo
ServoNickValue += (int16_t)( ( (int32_t)EE_Parameter.ServoNickComp * MULTIPLYER * (IntegralNick / 128L ) ) / (256L) );
}
else
{ // non inverting movement of servo
ServoNickValue -= (int16_t)( ( (int32_t)EE_Parameter.ServoNickComp * MULTIPLYER * (IntegralNick / 128L ) ) / (256L) );
}
// limit servo value to its parameter range definition
if(ServoNickValue < ((int16_t)EE_Parameter.ServoNickMin * MULTIPLYER) )
{
ServoNickValue = (int16_t)EE_Parameter.ServoNickMin * MULTIPLYER;
}
else if(ServoNickValue > ((int16_t)EE_Parameter.ServoNickMax * MULTIPLYER) )
{
ServoNickValue = (int16_t)EE_Parameter.ServoNickMax * MULTIPLYER;
}
RemainingPulse += ServoNickValue - (256 / 2) * MULTIPLYER; // shift ServoNickValue to center position
ServoNickValue /= MULTIPLYER;
// range servo pulse width
if(RemainingPulse > MAXSERVOPULSE ) RemainingPulse = MAXSERVOPULSE; // upper servo pulse limit
else if(RemainingPulse < MINSERVOPULSE ) RemainingPulse = MINSERVOPULSE; // lower servo pulse limit
ServoFrameTime = RemainingPulse; // accumulate time for correct update rate
}
else // we had a high pulse
{
TCCR2A |= (1<<COM2A0); // make a low pulse
RemainingPulse = PPM_FRAMELEN - ServoFrameTime;
}
PulseOutput = 1; // set pulse output active
}
 
if(RemainingPulse > (255 + IRS_RUNTIME)) // General pulse output generator
{
OCR2A = 255;
RemainingPulse -= 255;
}
else
{
if(RemainingPulse > 255) // this is the 2nd last part
{
if((RemainingPulse - 255) < IRS_RUNTIME)
{
OCR2A = 255 - IRS_RUNTIME;
RemainingPulse -= 255 - IRS_RUNTIME;
}
else // last part > ISR_RUNTIME
{
OCR2A = 255;
RemainingPulse -= 255;
}
}
else // this is the last part
{
OCR2A = RemainingPulse;
RemainingPulse = 0;
PulseOutput = 0; // trigger to stop pulse
}
} // EOF: general pulse output generator
}
// *** EOF: ISR(TIMER2_COMPA_vect) ***************************************************************************************
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/timer0.d
0,0 → 1,2
timer0.o timer0.d : timer0.c main.h old_macros.h _Settings.h printf_P.h timer0.h \
uart.h analog.h eeprom.h twimaster.h menu.h rc.h fc.h led.h
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/timer0.h
0,0 → 1,30
/*****************************************************************************************************************************
* File: timer0.h
* Purpose: header of timer0.c
*****************************************************************************************************************************/
#ifndef _TIMER0
#define _TIMER0
 
#define TIMER_TEILER CK8
#define TIMER_RELOAD_VALUE 250
#define HEF4017R_ON PORTC |= (1<<PORTC6)
#define HEF4017R_OFF PORTC &= ~(1<<PORTC6)
 
void Timer_Init(void);
void TIMER2_Init(void);
void Delay_ms(unsigned int);
void Delay_ms_Mess(unsigned int);
unsigned int SetDelay (unsigned int t);
char CheckDelay (unsigned int t);
 
extern volatile unsigned int CountMilliseconds;
extern volatile unsigned char UpdateMotor;
extern volatile unsigned int beeptime;
extern volatile unsigned int cntKompass;
extern unsigned int BeepMuster;
extern volatile unsigned char SendSPI, ServoActive;
extern volatile int16_t ServoNickValue;
extern volatile int16_t ServoRollValue;
 
#endif
//*** EOF: _TIMER0_H ***********************************************************************************************************
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/timer0.lst
0,0 → 1,768
1 .file "timer0.c"
2 .arch atmega644
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 .global ServoRollValue
11 .global ServoRollValue
12 .section .bss
15 ServoRollValue:
16 0000 0000 .skip 2,0
17 .global ServoNickValue
18 .global ServoNickValue
21 ServoNickValue:
22 0002 0000 .skip 2,0
23 .global BeepMuster
24 .data
27 BeepMuster:
28 0000 FFFF .word -1
29 .global ServoActive
30 .global ServoActive
31 .section .bss
34 ServoActive:
35 0004 00 .skip 1,0
36 .global SendSPI
37 .global SendSPI
40 SendSPI:
41 0005 00 .skip 1,0
42 .global beeptime
43 .global beeptime
46 beeptime:
47 0006 0000 .skip 2,0
48 .global cntKompass
49 .global cntKompass
52 cntKompass:
53 0008 0000 .skip 2,0
54 .global UpdateMotor
55 .global UpdateMotor
58 UpdateMotor:
59 000a 00 .skip 1,0
60 .global CountMilliseconds
61 .global CountMilliseconds
64 CountMilliseconds:
65 000b 0000 .skip 2,0
66 .text
67 .global SetDelay
69 SetDelay:
70 /* prologue: frame size=0 */
71 /* prologue end (size=0) */
72 0000 2091 0000 lds r18,CountMilliseconds
73 0004 3091 0000 lds r19,(CountMilliseconds)+1
74 0008 280F add r18,r24
75 000a 391F adc r19,r25
76 000c C901 movw r24,r18
77 000e 0196 adiw r24,1
78 /* epilogue: frame size=0 */
79 0010 0895 ret
80 /* epilogue end (size=1) */
81 /* function SetDelay size 9 (8) */
83 .global Timer_Init
85 Timer_Init:
86 /* prologue: frame size=0 */
87 /* prologue end (size=0) */
88 0012 8AE0 ldi r24,lo8(10)
89 0014 90E0 ldi r25,hi8(10)
90 0016 0E94 0000 call SetDelay
91 001a 9093 0000 sts (tim_main)+1,r25
92 001e 8093 0000 sts tim_main,r24
93 0022 82E0 ldi r24,lo8(2)
94 0024 85BD out 69-0x20,r24
95 0026 83EA ldi r24,lo8(-93)
96 0028 84BD out 68-0x20,r24
97 002a 17BC out 71-0x20,__zero_reg__
98 002c 88E7 ldi r24,lo8(120)
99 002e 88BD out 72-0x20,r24
100 0030 86E0 ldi r24,lo8(6)
101 0032 86BD out 70-0x20,r24
102 0034 8091 6E00 lds r24,110
103 0038 8160 ori r24,lo8(1)
104 003a 8093 6E00 sts 110,r24
105 /* epilogue: frame size=0 */
106 003e 0895 ret
107 /* epilogue end (size=1) */
108 /* function Timer_Init size 23 (22) */
110 .global CheckDelay
112 CheckDelay:
113 /* prologue: frame size=0 */
114 /* prologue end (size=0) */
115 0040 2091 0000 lds r18,CountMilliseconds
116 0044 3091 0000 lds r19,(CountMilliseconds)+1
117 0048 821B sub r24,r18
118 004a 930B sbc r25,r19
119 004c 892F mov r24,r25
120 004e 9927 clr r25
121 0050 8695 lsr r24
122 0052 8074 andi r24,lo8(64)
123 0054 9070 andi r25,hi8(64)
124 /* epilogue: frame size=0 */
125 0056 0895 ret
126 /* epilogue end (size=1) */
127 /* function CheckDelay size 12 (11) */
129 .global Delay_ms
131 Delay_ms:
132 /* prologue: frame size=0 */
133 0058 CF93 push r28
134 005a DF93 push r29
135 /* prologue end (size=2) */
136 005c 0E94 0000 call SetDelay
137 0060 EC01 movw r28,r24
138 .L5:
139 0062 CE01 movw r24,r28
140 0064 0E94 0000 call CheckDelay
141 0068 8823 tst r24
142 006a 01F0 breq .L5
143 /* epilogue: frame size=0 */
144 006c DF91 pop r29
145 006e CF91 pop r28
146 0070 0895 ret
147 /* epilogue end (size=3) */
148 /* function Delay_ms size 13 (8) */
150 .global Delay_ms_Mess
152 Delay_ms_Mess:
153 /* prologue: frame size=0 */
154 0072 1F93 push r17
155 0074 CF93 push r28
156 0076 DF93 push r29
157 /* prologue end (size=3) */
158 0078 0E94 0000 call SetDelay
159 007c EC01 movw r28,r24
160 007e 1FEC ldi r17,lo8(-49)
161 0080 00C0 rjmp .L17
162 .L13:
163 0082 8091 0000 lds r24,AdReady
164 0086 8823 tst r24
165 0088 01F0 breq .L17
166 008a 9093 0000 sts AdReady,r25
167 008e 1093 7A00 sts 122,r17
168 .L17:
169 0092 CE01 movw r24,r28
170 0094 0E94 0000 call CheckDelay
171 0098 982F mov r25,r24
172 009a 8823 tst r24
173 009c 01F0 breq .L13
174 /* epilogue: frame size=0 */
175 009e DF91 pop r29
176 00a0 CF91 pop r28
177 00a2 1F91 pop r17
178 00a4 0895 ret
179 /* epilogue end (size=4) */
180 /* function Delay_ms_Mess size 26 (19) */
182 .data
185 cnt_1ms.4:
186 0002 01 .byte 1
187 .lcomm cnt.5,1
188 .text
189 .global __vector_18
191 __vector_18:
192 /* prologue: frame size=0 */
193 00a6 1F92 push __zero_reg__
194 00a8 0F92 push __tmp_reg__
195 00aa 0FB6 in __tmp_reg__,__SREG__
196 00ac 0F92 push __tmp_reg__
197 00ae 1124 clr __zero_reg__
198 00b0 2F93 push r18
199 00b2 3F93 push r19
200 00b4 5F93 push r21
201 00b6 6F93 push r22
202 00b8 7F93 push r23
203 00ba 8F93 push r24
204 00bc 9F93 push r25
205 00be AF93 push r26
206 00c0 BF93 push r27
207 00c2 EF93 push r30
208 00c4 FF93 push r31
209 /* prologue end (size=16) */
210 00c6 8091 0000 lds r24,SendSPI
211 00ca 8823 tst r24
212 00cc 01F0 breq .L19
213 00ce 8091 0000 lds r24,SendSPI
214 00d2 8150 subi r24,lo8(-(-1))
215 00d4 8093 0000 sts SendSPI,r24
216 .L19:
217 00d8 8091 0000 lds r24,cnt.5
218 00dc 8150 subi r24,lo8(-(-1))
219 00de 8F3F cpi r24,lo8(-1)
220 00e0 01F0 breq .L36
221 00e2 8093 0000 sts cnt.5,r24
222 .L20:
223 00e6 8091 0000 lds r24,beeptime
224 00ea 9091 0000 lds r25,(beeptime)+1
225 00ee 892B or r24,r25
226 00f0 01F0 breq .L22
227 00f2 8091 0000 lds r24,beeptime
228 00f6 9091 0000 lds r25,(beeptime)+1
229 00fa 0197 sbiw r24,1
230 00fc 9093 0000 sts (beeptime)+1,r25
231 0100 8093 0000 sts beeptime,r24
232 0104 8091 0000 lds r24,beeptime
233 0108 9091 0000 lds r25,(beeptime)+1
234 010c 2091 0000 lds r18,BeepMuster
235 0110 3091 0000 lds r19,(BeepMuster)+1
236 0114 8223 and r24,r18
237 0116 9323 and r25,r19
238 0118 892B or r24,r25
239 011a 01F4 brne .L37
240 .L26:
241 011c 4798 cbi 40-0x20,7
242 .L27:
243 011e 8091 0000 lds r24,EE_Parameter+8
244 0122 83FF sbrs r24,3
245 0124 00C0 rjmp .L18
246 0126 86B1 in r24,38-0x20
247 0128 9927 clr r25
248 012a FC01 movw r30,r24
249 012c E071 andi r30,lo8(16)
250 012e F070 andi r31,hi8(16)
251 0130 84FF sbrs r24,4
252 0132 00C0 rjmp .L29
253 0134 8091 0000 lds r24,cntKompass
254 0138 9091 0000 lds r25,(cntKompass)+1
255 013c 0196 adiw r24,1
256 013e 9093 0000 sts (cntKompass)+1,r25
257 0142 8093 0000 sts cntKompass,r24
258 0146 00C0 rjmp .L18
259 .L22:
260 0148 8FEF ldi r24,lo8(-1)
261 014a 9FEF ldi r25,hi8(-1)
262 014c 9093 0000 sts (BeepMuster)+1,r25
263 0150 8093 0000 sts BeepMuster,r24
264 0154 00C0 rjmp .L26
265 .L37:
266 0156 479A sbi 40-0x20,7
267 0158 00C0 rjmp .L27
268 .L36:
269 015a 89E0 ldi r24,lo8(9)
270 015c 8093 0000 sts cnt.5,r24
271 0160 8091 0000 lds r24,cnt_1ms.4
272 0164 8F5F subi r24,lo8(-(1))
273 0166 8170 andi r24,lo8(1)
274 0168 8093 0000 sts cnt_1ms.4,r24
275 016c 8823 tst r24
276 016e 01F4 brne .L21
277 0170 81E0 ldi r24,lo8(1)
278 0172 8093 0000 sts UpdateMotor,r24
279 .L21:
280 0176 8091 0000 lds r24,CountMilliseconds
281 017a 9091 0000 lds r25,(CountMilliseconds)+1
282 017e 0196 adiw r24,1
283 0180 9093 0000 sts (CountMilliseconds)+1,r25
284 0184 8093 0000 sts CountMilliseconds,r24
285 0188 00C0 rjmp .L20
286 .L29:
287 018a 8091 0000 lds r24,cntKompass
288 018e 9091 0000 lds r25,(cntKompass)+1
289 0192 892B or r24,r25
290 0194 01F0 breq .L31
291 0196 8091 0000 lds r24,cntKompass
292 019a 9091 0000 lds r25,(cntKompass)+1
293 019e 8A56 subi r24,lo8(362)
294 01a0 9140 sbci r25,hi8(362)
295 01a2 00F4 brsh .L31
296 01a4 8091 0000 lds r24,cntKompass
297 01a8 9091 0000 lds r25,(cntKompass)+1
298 01ac 69E2 ldi r22,lo8(41)
299 01ae 70E0 ldi r23,hi8(41)
300 01b0 0E94 0000 call __udivmodhi4
301 01b4 8091 0000 lds r24,cntKompass
302 01b8 9091 0000 lds r25,(cntKompass)+1
303 01bc 860F add r24,r22
304 01be 971F adc r25,r23
305 01c0 9093 0000 sts (cntKompass)+1,r25
306 01c4 8093 0000 sts cntKompass,r24
307 01c8 8091 0000 lds r24,cntKompass
308 01cc 9091 0000 lds r25,(cntKompass)+1
309 01d0 0B97 sbiw r24,11
310 01d2 00F0 brlo .L32
311 01d4 8091 0000 lds r24,cntKompass
312 01d8 9091 0000 lds r25,(cntKompass)+1
313 01dc 0A97 sbiw r24,10
314 01de 9093 0000 sts (KompassValue)+1,r25
315 01e2 8093 0000 sts KompassValue,r24
316 .L31:
317 01e6 8091 0000 lds r24,KompassValue
318 01ea 9091 0000 lds r25,(KompassValue)+1
319 01ee 2091 0000 lds r18,KompassStartwert
320 01f2 3091 0000 lds r19,(KompassStartwert)+1
321 01f6 821B sub r24,r18
322 01f8 930B sbc r25,r19
323 01fa 845E subi r24,lo8(-(540))
324 01fc 9D4F sbci r25,hi8(-(540))
325 01fe 68E6 ldi r22,lo8(360)
326 0200 71E0 ldi r23,hi8(360)
327 0202 0E94 0000 call __divmodhi4
328 0206 845B subi r24,lo8(-(-180))
329 0208 9040 sbci r25,hi8(-(-180))
330 020a 9093 0000 sts (KompassRichtung)+1,r25
331 020e 8093 0000 sts KompassRichtung,r24
332 0212 1092 0000 sts (cntKompass)+1,__zero_reg__
333 0216 1092 0000 sts cntKompass,__zero_reg__
334 021a 00C0 rjmp .L18
335 .L32:
336 021c F093 0000 sts (KompassValue)+1,r31
337 0220 E093 0000 sts KompassValue,r30
338 0224 00C0 rjmp .L31
339 .L18:
340 /* epilogue: frame size=0 */
341 0226 FF91 pop r31
342 0228 EF91 pop r30
343 022a BF91 pop r27
344 022c AF91 pop r26
345 022e 9F91 pop r25
346 0230 8F91 pop r24
347 0232 7F91 pop r23
348 0234 6F91 pop r22
349 0236 5F91 pop r21
350 0238 3F91 pop r19
351 023a 2F91 pop r18
352 023c 0F90 pop __tmp_reg__
353 023e 0FBE out __SREG__,__tmp_reg__
354 0240 0F90 pop __tmp_reg__
355 0242 1F90 pop __zero_reg__
356 0244 1895 reti
357 /* epilogue end (size=16) */
358 /* function __vector_18 size 210 (178) */
360 .global TIMER2_Init
362 TIMER2_Init:
363 /* prologue: frame size=0 */
364 /* prologue end (size=0) */
365 0246 9FB7 in r25,95-0x20
366 /* #APP */
367 0248 F894 cli
368 /* #NOAPP */
369 024a 5F98 cbi 43-0x20,7
370 024c 3E9A sbi 39-0x20,6
371 024e 469A sbi 40-0x20,6
372 0250 8091 B000 lds r24,176
373 0254 8F70 andi r24,lo8(15)
374 0256 8093 B000 sts 176,r24
375 025a 8091 B000 lds r24,176
376 025e 8360 ori r24,lo8(3)
377 0260 8093 B000 sts 176,r24
378 0264 8091 B100 lds r24,177
379 0268 8B73 andi r24,lo8(59)
380 026a 8093 B100 sts 177,r24
381 026e 8091 B100 lds r24,177
382 0272 8B60 ori r24,lo8(11)
383 0274 8093 B100 sts 177,r24
384 0278 1092 B200 sts 178,__zero_reg__
385 027c 8FEF ldi r24,lo8(-1)
386 027e 8093 B300 sts 179,r24
387 0282 8091 B000 lds r24,176
388 0286 8068 ori r24,lo8(-128)
389 0288 8093 B000 sts 176,r24
390 028c 8091 7000 lds r24,112
391 0290 8A7F andi r24,lo8(-6)
392 0292 8093 7000 sts 112,r24
393 0296 8091 7000 lds r24,112
394 029a 8260 ori r24,lo8(2)
395 029c 8093 7000 sts 112,r24
396 02a0 9FBF out 95-0x20,r25
397 /* epilogue: frame size=0 */
398 02a2 0895 ret
399 /* epilogue end (size=1) */
400 /* function TIMER2_Init size 48 (47) */
402 .lcomm PulseOutput.0,1
403 .lcomm RemainingPulse.1,2
404 .lcomm ServoFrameTime.2,2
405 .data
408 ServoNickOffset.3:
409 0003 FC01 .word 508
410 .text
411 .global __vector_9
413 __vector_9:
414 /* prologue: frame size=0 */
415 02a4 1F92 push __zero_reg__
416 02a6 0F92 push __tmp_reg__
417 02a8 0FB6 in __tmp_reg__,__SREG__
418 02aa 0F92 push __tmp_reg__
419 02ac 1124 clr __zero_reg__
420 02ae 2F93 push r18
421 02b0 3F93 push r19
422 02b2 4F93 push r20
423 02b4 5F93 push r21
424 02b6 6F93 push r22
425 02b8 7F93 push r23
426 02ba 8F93 push r24
427 02bc 9F93 push r25
428 02be AF93 push r26
429 02c0 BF93 push r27
430 02c2 EF93 push r30
431 02c4 FF93 push r31
432 /* prologue end (size=17) */
433 02c6 8091 0000 lds r24,PulseOutput.0
434 02ca 8823 tst r24
435 02cc 01F4 brne .L63
436 02ce 8091 B000 lds r24,176
437 02d2 86FD sbrc r24,6
438 02d4 00C0 rjmp .L69
439 02d6 8091 B000 lds r24,176
440 02da 8064 ori r24,lo8(64)
441 02dc 8093 B000 sts 176,r24
442 02e0 8091 0000 lds r24,EE_Parameter+47
443 02e4 282F mov r18,r24
444 02e6 3327 clr r19
445 02e8 8DED ldi r24,lo8(1757)
446 02ea 96E0 ldi r25,hi8(1757)
447 02ec 289F mul r18,r24
448 02ee A001 movw r20,r0
449 02f0 299F mul r18,r25
450 02f2 500D add r21,r0
451 02f4 389F mul r19,r24
452 02f6 500D add r21,r0
453 02f8 1124 clr r1
454 02fa CA01 movw r24,r20
455 02fc 2091 0000 lds r18,ServoFrameTime.2
456 0300 3091 0000 lds r19,(ServoFrameTime.2)+1
457 0304 821B sub r24,r18
458 0306 930B sbc r25,r19
459 0308 9093 0000 sts (RemainingPulse.1)+1,r25
460 030c 8093 0000 sts RemainingPulse.1,r24
461 0310 9C01 movw r18,r24
462 .L56:
463 0312 81E0 ldi r24,lo8(1)
464 0314 8093 0000 sts PulseOutput.0,r24
465 0318 51E0 ldi r21,hi8(383)
466 031a 2F37 cpi r18,lo8(383)
467 031c 3507 cpc r19,r21
468 031e 00F4 brsh .L70
469 .L57:
470 0320 2F3F cpi r18,255
471 0322 3105 cpc r19,__zero_reg__
472 0324 01F0 breq .L59
473 0326 00F0 brlo .L59
474 0328 A901 movw r20,r18
475 032a 4F5F subi r20,lo8(-(-255))
476 032c 5040 sbci r21,hi8(-(-255))
477 032e 4F37 cpi r20,127
478 0330 5105 cpc r21,__zero_reg__
479 0332 00F0 brlo .+2
480 0334 00C0 rjmp .L60
481 0336 80E8 ldi r24,lo8(-128)
482 0338 8093 B300 sts 179,r24
483 033c 2058 subi r18,lo8(-(-128))
484 033e 3040 sbci r19,hi8(-(-128))
485 0340 00C0 rjmp .L68
486 .L63:
487 0342 2091 0000 lds r18,RemainingPulse.1
488 0346 3091 0000 lds r19,(RemainingPulse.1)+1
489 034a 51E0 ldi r21,hi8(383)
490 034c 2F37 cpi r18,lo8(383)
491 034e 3507 cpc r19,r21
492 0350 00F0 brlo .L57
493 .L70:
494 0352 8FEF ldi r24,lo8(-1)
495 0354 8093 B300 sts 179,r24
496 0358 2F5F subi r18,lo8(-(-255))
497 035a 3040 sbci r19,hi8(-(-255))
498 .L68:
499 035c 3093 0000 sts (RemainingPulse.1)+1,r19
500 0360 2093 0000 sts RemainingPulse.1,r18
501 0364 00C0 rjmp .L39
502 .L59:
503 0366 8091 0000 lds r24,RemainingPulse.1
504 036a 8093 B300 sts 179,r24
505 036e 1092 0000 sts (RemainingPulse.1)+1,__zero_reg__
506 0372 1092 0000 sts RemainingPulse.1,__zero_reg__
507 0376 1092 0000 sts PulseOutput.0,__zero_reg__
508 037a 00C0 rjmp .L39
509 .L69:
510 037c 8091 B000 lds r24,176
511 0380 8F7B andi r24,lo8(-65)
512 0382 8093 B000 sts 176,r24
513 0386 89EA ldi r24,lo8(937)
514 0388 93E0 ldi r25,hi8(937)
515 038a 9093 0000 sts (RemainingPulse.1)+1,r25
516 038e 8093 0000 sts RemainingPulse.1,r24
517 0392 8091 0000 lds r24,ServoNickOffset.3
518 0396 9091 0000 lds r25,(ServoNickOffset.3)+1
519 039a 9C01 movw r18,r24
520 039c 220F lsl r18
521 039e 331F rol r19
522 03a0 280F add r18,r24
523 03a2 391F adc r19,r25
524 03a4 8091 0000 lds r24,Parameter_ServoNickControl
525 03a8 9927 clr r25
526 03aa 880F lsl r24
527 03ac 991F rol r25
528 03ae 880F lsl r24
529 03b0 991F rol r25
530 03b2 280F add r18,r24
531 03b4 391F adc r19,r25
532 03b6 37FD sbrc r19,7
533 03b8 00C0 rjmp .L71
534 .L42:
535 03ba C901 movw r24,r18
536 03bc 9595 asr r25
537 03be 8795 ror r24
538 03c0 9595 asr r25
539 03c2 8795 ror r24
540 03c4 9093 0000 sts (ServoNickOffset.3)+1,r25
541 03c8 8093 0000 sts ServoNickOffset.3,r24
542 03cc 9093 0000 sts (ServoNickValue)+1,r25
543 03d0 8093 0000 sts ServoNickValue,r24
544 03d4 8091 0000 lds r24,EE_Parameter+87
545 03d8 80FF sbrs r24,0
546 03da 00C0 rjmp .L43
547 03dc 8091 0000 lds r24,EE_Parameter+40
548 03e0 682F mov r22,r24
549 03e2 7727 clr r23
550 03e4 8827 clr r24
551 03e6 9927 clr r25
552 03e8 2091 0000 lds r18,IntegralNick
553 03ec 3091 0000 lds r19,(IntegralNick)+1
554 03f0 4091 0000 lds r20,(IntegralNick)+2
555 03f4 5091 0000 lds r21,(IntegralNick)+3
556 03f8 57FD sbrc r21,7
557 03fa 00C0 rjmp .L72
558 .L44:
559 03fc A7E0 ldi r26,7
560 03fe 5595 1: asr r21
561 0400 4795 ror r20
562 0402 3795 ror r19
563 0404 2795 ror r18
564 0406 AA95 dec r26
565 0408 01F4 brne 1b
566 040a 0E94 0000 call __mulsi3
567 040e 9B01 movw r18,r22
568 0410 AC01 movw r20,r24
569 0412 97FD sbrc r25,7
570 0414 00C0 rjmp .L73
571 .L45:
572 0416 F6E0 ldi r31,6
573 0418 5595 1: asr r21
574 041a 4795 ror r20
575 041c 3795 ror r19
576 041e 2795 ror r18
577 0420 FA95 dec r31
578 0422 01F4 brne 1b
579 0424 8091 0000 lds r24,ServoNickValue
580 0428 9091 0000 lds r25,(ServoNickValue)+1
581 042c 820F add r24,r18
582 042e 931F adc r25,r19
583 .L65:
584 0430 9093 0000 sts (ServoNickValue)+1,r25
585 0434 8093 0000 sts ServoNickValue,r24
586 0438 8091 0000 lds r24,EE_Parameter+41
587 043c 282F mov r18,r24
588 043e 3327 clr r19
589 0440 220F lsl r18
590 0442 331F rol r19
591 0444 220F lsl r18
592 0446 331F rol r19
593 0448 8091 0000 lds r24,ServoNickValue
594 044c 9091 0000 lds r25,(ServoNickValue)+1
595 0450 8217 cp r24,r18
596 0452 9307 cpc r25,r19
597 0454 04F0 brlt .L66
598 0456 8091 0000 lds r24,EE_Parameter+42
599 045a 282F mov r18,r24
600 045c 3327 clr r19
601 045e 220F lsl r18
602 0460 331F rol r19
603 0462 220F lsl r18
604 0464 331F rol r19
605 0466 8091 0000 lds r24,ServoNickValue
606 046a 9091 0000 lds r25,(ServoNickValue)+1
607 046e 2817 cp r18,r24
608 0470 3907 cpc r19,r25
609 0472 04F4 brge .L50
610 .L66:
611 0474 3093 0000 sts (ServoNickValue)+1,r19
612 0478 2093 0000 sts ServoNickValue,r18
613 .L50:
614 047c 2091 0000 lds r18,ServoNickValue
615 0480 3091 0000 lds r19,(ServoNickValue)+1
616 0484 8091 0000 lds r24,RemainingPulse.1
617 0488 9091 0000 lds r25,(RemainingPulse.1)+1
618 048c 280F add r18,r24
619 048e 391F adc r19,r25
620 0490 2050 subi r18,lo8(-(-512))
621 0492 3240 sbci r19,hi8(-(-512))
622 0494 8091 0000 lds r24,ServoNickValue
623 0498 9091 0000 lds r25,(ServoNickValue)+1
624 049c 97FD sbrc r25,7
625 049e 00C0 rjmp .L74
626 .L52:
627 04a0 9595 asr r25
628 04a2 8795 ror r24
629 04a4 9595 asr r25
630 04a6 8795 ror r24
631 04a8 9093 0000 sts (ServoNickValue)+1,r25
632 04ac 8093 0000 sts ServoNickValue,r24
633 04b0 45E0 ldi r20,hi8(1501)
634 04b2 2D3D cpi r18,lo8(1501)
635 04b4 3407 cpc r19,r20
636 04b6 00F4 brsh .+2
637 04b8 00C0 rjmp .L53
638 04ba 8CED ldi r24,lo8(1500)
639 04bc 95E0 ldi r25,hi8(1500)
640 .L67:
641 04be 9093 0000 sts (RemainingPulse.1)+1,r25
642 04c2 8093 0000 sts RemainingPulse.1,r24
643 .L54:
644 04c6 2091 0000 lds r18,RemainingPulse.1
645 04ca 3091 0000 lds r19,(RemainingPulse.1)+1
646 04ce 3093 0000 sts (ServoFrameTime.2)+1,r19
647 04d2 2093 0000 sts ServoFrameTime.2,r18
648 04d6 00C0 rjmp .L56
649 .L60:
650 04d8 8FEF ldi r24,lo8(-1)
651 04da 8093 B300 sts 179,r24
652 04de 5093 0000 sts (RemainingPulse.1)+1,r21
653 04e2 4093 0000 sts RemainingPulse.1,r20
654 04e6 00C0 rjmp .L39
655 .L71:
656 04e8 2D5F subi r18,lo8(-(3))
657 04ea 3F4F sbci r19,hi8(-(3))
658 04ec 00C0 rjmp .L42
659 .L43:
660 04ee 8091 0000 lds r24,EE_Parameter+40
661 04f2 682F mov r22,r24
662 04f4 7727 clr r23
663 04f6 8827 clr r24
664 04f8 9927 clr r25
665 04fa 2091 0000 lds r18,IntegralNick
666 04fe 3091 0000 lds r19,(IntegralNick)+1
667 0502 4091 0000 lds r20,(IntegralNick)+2
668 0506 5091 0000 lds r21,(IntegralNick)+3
669 050a 57FD sbrc r21,7
670 050c 00C0 rjmp .L75
671 .L47:
672 050e E7E0 ldi r30,7
673 0510 5595 1: asr r21
674 0512 4795 ror r20
675 0514 3795 ror r19
676 0516 2795 ror r18
677 0518 EA95 dec r30
678 051a 01F4 brne 1b
679 051c 0E94 0000 call __mulsi3
680 0520 9B01 movw r18,r22
681 0522 AC01 movw r20,r24
682 0524 97FD sbrc r25,7
683 0526 00C0 rjmp .L76
684 .L48:
685 0528 76E0 ldi r23,6
686 052a 5595 1: asr r21
687 052c 4795 ror r20
688 052e 3795 ror r19
689 0530 2795 ror r18
690 0532 7A95 dec r23
691 0534 01F4 brne 1b
692 0536 8091 0000 lds r24,ServoNickValue
693 053a 9091 0000 lds r25,(ServoNickValue)+1
694 053e 821B sub r24,r18
695 0540 930B sbc r25,r19
696 0542 00C0 rjmp .L65
697 .L53:
698 0544 51E0 ldi r21,hi8(375)
699 0546 2737 cpi r18,lo8(375)
700 0548 3507 cpc r19,r21
701 054a 00F4 brsh .L64
702 054c 87E7 ldi r24,lo8(375)
703 054e 91E0 ldi r25,hi8(375)
704 0550 00C0 rjmp .L67
705 .L64:
706 0552 3093 0000 sts (RemainingPulse.1)+1,r19
707 0556 2093 0000 sts RemainingPulse.1,r18
708 055a 00C0 rjmp .L54
709 .L74:
710 055c 0396 adiw r24,3
711 055e 00C0 rjmp .L52
712 .L72:
713 0560 2158 subi r18,lo8(-(127))
714 0562 3F4F sbci r19,hi8(-(127))
715 0564 4F4F sbci r20,hlo8(-(127))
716 0566 5F4F sbci r21,hhi8(-(127))
717 0568 00C0 rjmp .L44
718 .L76:
719 056a 215C subi r18,lo8(-(63))
720 056c 3F4F sbci r19,hi8(-(63))
721 056e 4F4F sbci r20,hlo8(-(63))
722 0570 5F4F sbci r21,hhi8(-(63))
723 0572 00C0 rjmp .L48
724 .L75:
725 0574 2158 subi r18,lo8(-(127))
726 0576 3F4F sbci r19,hi8(-(127))
727 0578 4F4F sbci r20,hlo8(-(127))
728 057a 5F4F sbci r21,hhi8(-(127))
729 057c 00C0 rjmp .L47
730 .L73:
731 057e 215C subi r18,lo8(-(63))
732 0580 3F4F sbci r19,hi8(-(63))
733 0582 4F4F sbci r20,hlo8(-(63))
734 0584 5F4F sbci r21,hhi8(-(63))
735 0586 00C0 rjmp .L45
736 .L39:
737 /* epilogue: frame size=0 */
738 0588 FF91 pop r31
739 058a EF91 pop r30
740 058c BF91 pop r27
741 058e AF91 pop r26
742 0590 9F91 pop r25
743 0592 8F91 pop r24
744 0594 7F91 pop r23
745 0596 6F91 pop r22
746 0598 5F91 pop r21
747 059a 4F91 pop r20
748 059c 3F91 pop r19
749 059e 2F91 pop r18
750 05a0 0F90 pop __tmp_reg__
751 05a2 0FBE out __SREG__,__tmp_reg__
752 05a4 0F90 pop __tmp_reg__
753 05a6 1F90 pop __zero_reg__
754 05a8 1895 reti
755 /* epilogue end (size=17) */
756 /* function __vector_9 size 387 (353) */
758 .comm Mixer,77,1
759 .lcomm tim_main,2
760 /* File "timer0.c": code 728 = 0x02d8 ( 646), prologues 38, epilogues 44 */
DEFINED SYMBOLS
*ABS*:00000000 timer0.c
C:\Users\Bernd\AppData\Local\Temp/ccrsFYQE.s:3 *ABS*:0000003f __SREG__
C:\Users\Bernd\AppData\Local\Temp/ccrsFYQE.s:4 *ABS*:0000003e __SP_H__
C:\Users\Bernd\AppData\Local\Temp/ccrsFYQE.s:5 *ABS*:0000003d __SP_L__
C:\Users\Bernd\AppData\Local\Temp/ccrsFYQE.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Bernd\AppData\Local\Temp/ccrsFYQE.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Bernd\AppData\Local\Temp/ccrsFYQE.s:15 .bss:00000000 ServoRollValue
C:\Users\Bernd\AppData\Local\Temp/ccrsFYQE.s:21 .bss:00000002 ServoNickValue
C:\Users\Bernd\AppData\Local\Temp/ccrsFYQE.s:27 .data:00000000 BeepMuster
C:\Users\Bernd\AppData\Local\Temp/ccrsFYQE.s:34 .bss:00000004 ServoActive
C:\Users\Bernd\AppData\Local\Temp/ccrsFYQE.s:40 .bss:00000005 SendSPI
C:\Users\Bernd\AppData\Local\Temp/ccrsFYQE.s:46 .bss:00000006 beeptime
C:\Users\Bernd\AppData\Local\Temp/ccrsFYQE.s:52 .bss:00000008 cntKompass
C:\Users\Bernd\AppData\Local\Temp/ccrsFYQE.s:58 .bss:0000000a UpdateMotor
C:\Users\Bernd\AppData\Local\Temp/ccrsFYQE.s:64 .bss:0000000b CountMilliseconds
C:\Users\Bernd\AppData\Local\Temp/ccrsFYQE.s:69 .text:00000000 SetDelay
C:\Users\Bernd\AppData\Local\Temp/ccrsFYQE.s:85 .text:00000012 Timer_Init
C:\Users\Bernd\AppData\Local\Temp/ccrsFYQE.s:404 .bss:00000013 tim_main
C:\Users\Bernd\AppData\Local\Temp/ccrsFYQE.s:112 .text:00000040 CheckDelay
C:\Users\Bernd\AppData\Local\Temp/ccrsFYQE.s:131 .text:00000058 Delay_ms
C:\Users\Bernd\AppData\Local\Temp/ccrsFYQE.s:152 .text:00000072 Delay_ms_Mess
C:\Users\Bernd\AppData\Local\Temp/ccrsFYQE.s:185 .data:00000002 cnt_1ms.4
.bss:0000000d cnt.5
C:\Users\Bernd\AppData\Local\Temp/ccrsFYQE.s:191 .text:000000a6 __vector_18
C:\Users\Bernd\AppData\Local\Temp/ccrsFYQE.s:362 .text:00000246 TIMER2_Init
C:\Users\Bernd\AppData\Local\Temp/ccrsFYQE.s:187 .bss:0000000e PulseOutput.0
C:\Users\Bernd\AppData\Local\Temp/ccrsFYQE.s:402 .bss:0000000f RemainingPulse.1
C:\Users\Bernd\AppData\Local\Temp/ccrsFYQE.s:403 .bss:00000011 ServoFrameTime.2
C:\Users\Bernd\AppData\Local\Temp/ccrsFYQE.s:408 .data:00000003 ServoNickOffset.3
C:\Users\Bernd\AppData\Local\Temp/ccrsFYQE.s:413 .text:000002a4 __vector_9
*COM*:0000004d Mixer
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
AdReady
EE_Parameter
__udivmodhi4
KompassValue
KompassStartwert
__divmodhi4
KompassRichtung
Parameter_ServoNickControl
IntegralNick
__mulsi3
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/twimaster.c
0,0 → 1,308
/*****************************************************************************************************************************
* File: twimaster.c
*
* Purpose: setup of I2C (TWI)
*
* Functions: extern void i2c_init (void); // initialize I2C
* extern void i2c_start (void); // Start I2C
* extern void i2c_reset(void); // resert I2C
* extern void i2c_stop (void); // Stop I2C
* extern void i2c_write_byte (char byte); // write 1 Byte
*
*****************************************************************************************************************************/
#include "twimaster.h"
#include "main.h"
 
volatile unsigned char twi_state = 0;
unsigned char motor=0;
unsigned char motorread=0, MissingMotor=0;
unsigned char motor_rx[16], motor_rx2[16];
unsigned char MotorPresent[MAX_MOTORS]; // #define MAX_MOTORS 4
unsigned char MotorError[MAX_MOTORS];
unsigned int I2CError=0;
 
 
// *************************************************************************************************************************************
// Initzialize I2C (TWI)
//
void i2c_init(void)
{
//--------------------------------------------------------------------------------------------------------------------
// TWSR = TWI Status Register containing: TWS7 TWS6 TWS5 TWS4 TWS3 – TWPS1 TWPS0
//
TWSR = 0; // TWSR – TWI Status Register
//--------------------------------------------------------------------------------------------------------------------
// TWBR = TWI Bit Rate Register containing: TWBR7 TWBR6 TWBR5 TWBR4 TWBR3 TWBR2 TWBR1 TWBR0
// set TWI Bit Rate Register // SYSCLK = 16000000 and SCL_CLOCK = 200000
TWBR = ((SYSCLK/SCL_CLOCK)-16)/2; // selects the division factor for the bit rate generator
}
// *************************************************************************************************************************************
 
 
 
//-------------------------------------------------------------------------------------------------------------------------------------
// Start I2C
//
void i2c_start(void)
{
// ---------------------------------------------------------------------------
// TWCR = TWI Control Register -> TWINT TWEA TWSTA TWSTO TWWC TWEN – TWIE
// TWINT = TWI interrupt flag - to be set to one, to reset the TWINT Flag
// TWSTA = TWI start and should be set to one, that TWI is started as Master.
// TWEN = TWI enable -> now TWI/I2C is working properly.
// TWIE = TWI Interrupt enable is the TWIE Bit -> should be set
//
TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN)|(1<<TWIE);
}
//-------------------------------------------------------------------------------------------------------------------------------------
 
 
 
//-------------------------------------------------------------------------------------------------------------------------------------
// Stop I2C
//
void i2c_stop(void)
{
// ---------------------------------------------------------------------------
// TWCR = TWI Control Register -> TWINT TWEA TWSTA TWSTO TWWC TWEN – TWIE
// TWINT = TWI interrupt flag - to be set to one, to reset the TWINT Flag
// TWSTO = TWI STOP Condition Bit (TWSTO = 1) -> now will be stoped
// TWEN = TWI enable -> TWI/I2C is working properly
//
TWCR = (1<<TWINT)|(1<<TWSTO)|(1<<TWEN);
}
//-------------------------------------------------------------------------------------------------------------------------------------
 
 
 
//-------------------------------------------------------------------------------------------------------------------------------------
// I2C Reset
//
void i2c_reset(void)
{
i2c_stop();
twi_state = 0;
motor = TWDR; // TWI Data Register (TWDR) siehe S 227
motor = 0; // ist das letzte gesendete oder empfangene Byte
TWCR = 0x80;
TWAMR = 0;
TWAR = 0;
TWDR = 0;
TWSR = 0;
TWBR = 0;
i2c_init();
i2c_start();
i2c_write_byte(0);
}
//-------------------------------------------------------------------------------------------------------------------------------------
 
 
 
//---------------------------------------------------------------------------------------------------------------------------------------------
// write via I2C
//
void i2c_write_byte(char byte)
{
TWSR = 0x00;
TWDR = byte; // sende dieses Byte via TWI Data Register
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE);
}
//---------------------------------------------------------------------------------------------------------------------------------------------
 
 
 
//---------------------------------------------------------------------------------------------------------------------------------------------
// write byte via I2C
//
void I2C_WriteByte(int8_t byte)
{
// move byte to send into TWI Data Register
TWDR = byte;
// clear interrupt flag (TWINT = 1)
// enable i2c bus (TWEN = 1)
// enable interrupt (TWIE = 1)
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE);
}
//---------------------------------------------------------------------------------------------------------------------------------------------
 
 
 
//---------------------------------------------------------------------------------------------------------------------------------------------
// ein Byte gelesen und sendet ACK
//
void I2C_ReceiveByte(void)
{
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE) | (1<<TWEA);
}
//---------------------------------------------------------------------------------------------------------------------------------------------
 
 
 
//---------------------------------------------------------------------------------------------------------------------------------------------
// I2C empfing das letzte Byte und sendet kein ACK
//
void I2C_ReceiveLastByte(void)
{
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE);
}
//---------------------------------------------------------------------------------------------------------------------------------------------
 
 
 
//-----------------------------------------------------------------------------------------------------------------------------------------------
// Interrupt I2C
//
ISR (TWI_vect)
{
static unsigned char missing_motor;
switch(twi_state++)
{
//----------------------------------------------------------------------------------------------------------------------------
// write Motor-Data
//----------------------------------------------------------------------------------------------------------------------------
case 0:
while(Mixer.Motor[motor][0] <= 0 && motor < MAX_MOTORS) motor++; // #define MAX_MOTORS 2
if(motor == MAX_MOTORS) // writing finished -> now read
{
motor = 0;
twi_state = 3;
if(motorread==0) i2c_write_byte(0x53); // Read-Adress of: Motor 1 = 0x53 / 2 = 0x55 / 3 = 0x57 / 4 = 0x59
if(motorread==1) i2c_write_byte(0x57);
}
else
{
if(motor==0) i2c_write_byte(0x52); // Write-Adress of: Motor 1 = 0x52 / 2 = 0x54 / 3 = 0x56 / 4 = 0x58
if(motor==1) i2c_write_byte(0x56);
}
break;
case 1:
i2c_write_byte(Motor[motor++]);
break;
case 2:
// TWSR – TWI Status Register -> TWS7 TWS6 TWS5 TWS4 TWS3 - TWPS1 TWPS0
// Data byte has been transmitted; NOT ACK has been received
if(TWSR == 0x30)
{
if(!missing_motor) missing_motor = motor; //
if(++MotorError[motor-1] == 0) MotorError[motor-1] = 255; //
}
i2c_stop();
I2CTimeout = 10; // counted down every 2ms = watchdog
twi_state = 0;
i2c_start();
break;
//----------------------------------------------------------------------------------------------------------
// read Motor-Data
//----------------------------------------------------------------------------------------------------------
case 3:
if(TWSR != 0x40) // Error?
{ // send 1. Byte to be read
MotorPresent[motorread] = 0;
motorread++;
if(motorread >= MAX_MOTORS) motorread = 0; // #define MAX_MOTORS 2
i2c_stop();
twi_state = 0;
}
else
{
MotorPresent[motorread] = ('1' - '-') + motorread;
I2C_ReceiveByte();
}
//MissingMotor = missing_motor;
MissingMotor = 0;
missing_motor = 0;
break;
case 4: // read 1. Byte and send 2. Byte
motor_rx[motorread] = TWDR;
I2C_ReceiveLastByte(); // no acknowledge
break;
case 5:
motor_rx2[motorread++] = TWDR; // read 2. Byte
if(motorread >= MAX_MOTORS) motorread = 0; // #define MAX_MOTORS 4
i2c_stop();
twi_state = 0;
break;
//----------------------------------------------------------------------------------------------------------------------------------
// write Gyro-Offset
//----------------------------------------------------------------------------------------------------------------------------------
case 8:
i2c_write_byte(0x98); // Address of DAC see DAC Manual page 17
break;
case 9:
i2c_write_byte(0x10); // byte sent to chanel A
break;
case 10:
i2c_write_byte(AnalogOffsetNick); // offset sent to DAC
break;
case 11:
i2c_write_byte(0x80); // The 2nd Byte does not care = 0x80 (Dummy)
break;
case 12:
i2c_stop();
I2CTimeout = 10;
i2c_start();
break;
case 13:
i2c_write_byte(0x98); // Address of DAC see DAC Manual page 17
break;
case 14:
i2c_write_byte(0x12); // byte sent to chanel B
break;
case 15:
i2c_write_byte(AnalogOffsetRoll); // offset sent to DAC
break;
case 16:
i2c_write_byte(0x80); // The 2nd Byte does not care = 0x80 (Dummy)
break;
case 17:
i2c_stop();
I2CTimeout = 10;
i2c_start();
break;
case 18:
i2c_write_byte(0x98); // Address of DAC see DAC Manual page 17
break;
case 19:
i2c_write_byte(0x14); // byte sent to chanel C
break;
case 20:
i2c_write_byte(AnalogOffsetGier); // offset sent to DAC
break;
case 21:
i2c_write_byte(0x80); // The 2nd Byte does not care = 0x80 (Dummy)
break;
case 22:
i2c_stop();
I2CTimeout = 10;
twi_state = 0;
break;
default: twi_state = 0;
break;
}
TWCR |= 0x80; // TWWC: TWI Write Collision Flag is set to 1
}
//-----------------------------------------------------------------------------------------------------------------------------------
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/twimaster.d
0,0 → 1,2
twimaster.o twimaster.d : twimaster.c twimaster.h main.h old_macros.h _Settings.h \
printf_P.h timer0.h uart.h analog.h eeprom.h menu.h rc.h fc.h led.h
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/twimaster.h
0,0 → 1,35
/*****************************************************************************************************************************
* File: twimaster.h
* Purpose: header of twimaster.c
*****************************************************************************************************************************/
 
#ifndef _I2C_MASTER_H
#define _I2C_MASTER_H
 
 
// ------------------------ definions for I2C ---
#define SCL_CLOCK 200000L
#define I2C_TIMEOUT 30000
#define I2C_START 0x08
#define I2C_REPEATED_START 0x10
#define I2C_TX_SLA_ACK 0x18
#define I2C_TX_DATA_ACK 0x28
#define I2C_RX_SLA_ACK 0x40
#define I2C_RX_DATA_ACK 0x50
 
 
extern volatile unsigned char twi_state;
extern unsigned char motor,MissingMotor;
extern unsigned char motorread;
extern unsigned char motor_rx[];
extern unsigned char MotorPresent[];
extern unsigned char MotorError[];
 
extern void i2c_init(void); // initialize I2C
extern void i2c_start(void); // start I2C
extern void i2c_stop(void); // stop I2C
extern void i2c_write_byte(char byte); // write 1 Byte
extern void i2c_reset(void); // reset
 
#endif
// *** EOF: I2C_MASTER_H ******************************************************************************************************
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/twimaster.lst
0,0 → 1,494
1 .file "twimaster.c"
2 .arch atmega644
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 .global I2CError
11 .global I2CError
12 .section .bss
15 I2CError:
16 0000 0000 .skip 2,0
17 .global MissingMotor
18 .global MissingMotor
21 MissingMotor:
22 0002 00 .skip 1,0
23 .global motorread
24 .global motorread
27 motorread:
28 0003 00 .skip 1,0
29 .global motor
30 .global motor
33 motor:
34 0004 00 .skip 1,0
35 .global twi_state
36 .global twi_state
39 twi_state:
40 0005 00 .skip 1,0
41 .text
42 .global i2c_init
44 i2c_init:
45 /* prologue: frame size=0 */
46 /* prologue end (size=0) */
47 0000 1092 B900 sts 185,__zero_reg__
48 0004 8AE2 ldi r24,lo8(42)
49 0006 8093 B800 sts 184,r24
50 /* epilogue: frame size=0 */
51 000a 0895 ret
52 /* epilogue end (size=1) */
53 /* function i2c_init size 6 (5) */
55 .global i2c_start
57 i2c_start:
58 /* prologue: frame size=0 */
59 /* prologue end (size=0) */
60 000c 85EA ldi r24,lo8(-91)
61 000e 8093 BC00 sts 188,r24
62 /* epilogue: frame size=0 */
63 0012 0895 ret
64 /* epilogue end (size=1) */
65 /* function i2c_start size 4 (3) */
67 .global i2c_stop
69 i2c_stop:
70 /* prologue: frame size=0 */
71 /* prologue end (size=0) */
72 0014 84E9 ldi r24,lo8(-108)
73 0016 8093 BC00 sts 188,r24
74 /* epilogue: frame size=0 */
75 001a 0895 ret
76 /* epilogue end (size=1) */
77 /* function i2c_stop size 4 (3) */
79 .global i2c_write_byte
81 i2c_write_byte:
82 /* prologue: frame size=0 */
83 /* prologue end (size=0) */
84 001c 1092 B900 sts 185,__zero_reg__
85 0020 8093 BB00 sts 187,r24
86 0024 85E8 ldi r24,lo8(-123)
87 0026 8093 BC00 sts 188,r24
88 /* epilogue: frame size=0 */
89 002a 0895 ret
90 /* epilogue end (size=1) */
91 /* function i2c_write_byte size 8 (7) */
93 .global i2c_reset
95 i2c_reset:
96 /* prologue: frame size=0 */
97 /* prologue end (size=0) */
98 002c 0E94 0000 call i2c_stop
99 0030 1092 0000 sts twi_state,__zero_reg__
100 0034 8091 BB00 lds r24,187
101 0038 1092 0000 sts motor,__zero_reg__
102 003c 80E8 ldi r24,lo8(-128)
103 003e 8093 BC00 sts 188,r24
104 0042 1092 BD00 sts 189,__zero_reg__
105 0046 1092 BA00 sts 186,__zero_reg__
106 004a 1092 BB00 sts 187,__zero_reg__
107 004e 1092 B900 sts 185,__zero_reg__
108 0052 1092 B800 sts 184,__zero_reg__
109 0056 0E94 0000 call i2c_init
110 005a 0E94 0000 call i2c_start
111 005e 80E0 ldi r24,lo8(0)
112 0060 0E94 0000 call i2c_write_byte
113 /* epilogue: frame size=0 */
114 0064 0895 ret
115 /* epilogue end (size=1) */
116 /* function i2c_reset size 29 (28) */
118 .global I2C_WriteByte
120 I2C_WriteByte:
121 /* prologue: frame size=0 */
122 /* prologue end (size=0) */
123 0066 8093 BB00 sts 187,r24
124 006a 85E8 ldi r24,lo8(-123)
125 006c 8093 BC00 sts 188,r24
126 /* epilogue: frame size=0 */
127 0070 0895 ret
128 /* epilogue end (size=1) */
129 /* function I2C_WriteByte size 6 (5) */
131 .global I2C_ReceiveByte
133 I2C_ReceiveByte:
134 /* prologue: frame size=0 */
135 /* prologue end (size=0) */
136 0072 85EC ldi r24,lo8(-59)
137 0074 8093 BC00 sts 188,r24
138 /* epilogue: frame size=0 */
139 0078 0895 ret
140 /* epilogue end (size=1) */
141 /* function I2C_ReceiveByte size 4 (3) */
143 .global I2C_ReceiveLastByte
145 I2C_ReceiveLastByte:
146 /* prologue: frame size=0 */
147 /* prologue end (size=0) */
148 007a 85E8 ldi r24,lo8(-123)
149 007c 8093 BC00 sts 188,r24
150 /* epilogue: frame size=0 */
151 0080 0895 ret
152 /* epilogue end (size=1) */
153 /* function I2C_ReceiveLastByte size 4 (3) */
155 .lcomm missing_motor.0,1
156 .global __vector_26
158 __vector_26:
159 /* prologue: frame size=0 */
160 0082 1F92 push __zero_reg__
161 0084 0F92 push __tmp_reg__
162 0086 0FB6 in __tmp_reg__,__SREG__
163 0088 0F92 push __tmp_reg__
164 008a 1124 clr __zero_reg__
165 008c 2F93 push r18
166 008e 3F93 push r19
167 0090 4F93 push r20
168 0092 5F93 push r21
169 0094 6F93 push r22
170 0096 7F93 push r23
171 0098 8F93 push r24
172 009a 9F93 push r25
173 009c AF93 push r26
174 009e BF93 push r27
175 00a0 EF93 push r30
176 00a2 FF93 push r31
177 /* prologue end (size=17) */
178 00a4 8091 0000 lds r24,twi_state
179 00a8 282F mov r18,r24
180 00aa 3327 clr r19
181 00ac 4427 clr r20
182 00ae 5527 clr r21
183 00b0 8F5F subi r24,lo8(-(1))
184 00b2 8093 0000 sts twi_state,r24
185 00b6 F901 movw r30,r18
186 00b8 2731 cpi r18,23
187 00ba 3105 cpc r19,__zero_reg__
188 00bc 00F4 brsh .L48
189 00be E050 subi r30,lo8(-(pm(.L49)))
190 00c0 F040 sbci r31,hi8(-(pm(.L49)))
191 00c2 0C94 0000 jmp __tablejump2__
192 .data
193 .section .progmem.gcc_sw_table, "a", @progbits
194 .p2align 1
195 .L49:
196 0000 0000 .word pm(.L11)
197 0002 0000 .word pm(.L21)
198 0004 0000 .word pm(.L22)
199 0006 0000 .word pm(.L26)
200 0008 0000 .word pm(.L30)
201 000a 0000 .word pm(.L31)
202 000c 0000 .word pm(.L48)
203 000e 0000 .word pm(.L48)
204 0010 0000 .word pm(.L43)
205 0012 0000 .word pm(.L34)
206 0014 0000 .word pm(.L35)
207 0016 0000 .word pm(.L46)
208 0018 0000 .word pm(.L42)
209 001a 0000 .word pm(.L43)
210 001c 0000 .word pm(.L39)
211 001e 0000 .word pm(.L40)
212 0020 0000 .word pm(.L46)
213 0022 0000 .word pm(.L42)
214 0024 0000 .word pm(.L43)
215 0026 0000 .word pm(.L44)
216 0028 0000 .word pm(.L45)
217 002a 0000 .word pm(.L46)
218 002c 0000 .word pm(.L47)
219 .text
220 .L31:
221 00c6 8091 0000 lds r24,motorread
222 00ca E82F mov r30,r24
223 00cc FF27 clr r31
224 00ce E050 subi r30,lo8(-(motor_rx2))
225 00d0 F040 sbci r31,hi8(-(motor_rx2))
226 00d2 9091 BB00 lds r25,187
227 00d6 9083 st Z,r25
228 00d8 8F5F subi r24,lo8(-(1))
229 00da 8230 cpi r24,lo8(2)
230 00dc 00F4 brsh .+2
231 00de 00C0 rjmp .L55
232 00e0 1092 0000 sts motorread,__zero_reg__
233 00e4 0E94 0000 call i2c_stop
234 .L48:
235 00e8 1092 0000 sts twi_state,__zero_reg__
236 00ec 00C0 rjmp .L10
237 .L46:
238 00ee 80E8 ldi r24,lo8(-128)
239 00f0 0E94 0000 call i2c_write_byte
240 00f4 00C0 rjmp .L10
241 .L43:
242 00f6 88E9 ldi r24,lo8(-104)
243 00f8 0E94 0000 call i2c_write_byte
244 00fc 00C0 rjmp .L10
245 .L42:
246 00fe 0E94 0000 call i2c_stop
247 0102 8AE0 ldi r24,lo8(10)
248 0104 90E0 ldi r25,hi8(10)
249 0106 9093 0000 sts (I2CTimeout)+1,r25
250 010a 8093 0000 sts I2CTimeout,r24
251 010e 0E94 0000 call i2c_start
252 0112 00C0 rjmp .L10
253 .L44:
254 0114 84E1 ldi r24,lo8(20)
255 0116 0E94 0000 call i2c_write_byte
256 011a 00C0 rjmp .L10
257 .L39:
258 011c 82E1 ldi r24,lo8(18)
259 011e 0E94 0000 call i2c_write_byte
260 0122 00C0 rjmp .L10
261 .L35:
262 0124 8091 0000 lds r24,AnalogOffsetNick
263 0128 0E94 0000 call i2c_write_byte
264 012c 00C0 rjmp .L10
265 .L34:
266 012e 80E1 ldi r24,lo8(16)
267 0130 0E94 0000 call i2c_write_byte
268 0134 00C0 rjmp .L10
269 .L40:
270 0136 8091 0000 lds r24,AnalogOffsetRoll
271 013a 0E94 0000 call i2c_write_byte
272 013e 00C0 rjmp .L10
273 .L45:
274 0140 8091 0000 lds r24,AnalogOffsetGier
275 0144 0E94 0000 call i2c_write_byte
276 0148 00C0 rjmp .L10
277 .L21:
278 014a 8091 0000 lds r24,motor
279 014e E82F mov r30,r24
280 0150 FF27 clr r31
281 0152 E050 subi r30,lo8(-(Motor))
282 0154 F040 sbci r31,hi8(-(Motor))
283 0156 8F5F subi r24,lo8(-(1))
284 0158 8093 0000 sts motor,r24
285 015c 8081 ld r24,Z
286 015e 0E94 0000 call i2c_write_byte
287 0162 00C0 rjmp .L10
288 .L11:
289 0164 9091 0000 lds r25,motor
290 0168 292F mov r18,r25
291 016a E92F mov r30,r25
292 016c FF27 clr r31
293 016e EE0F lsl r30
294 0170 FF1F rol r31
295 0172 EE0F lsl r30
296 0174 FF1F rol r31
297 0176 E050 subi r30,lo8(-(Mixer))
298 0178 F040 sbci r31,hi8(-(Mixer))
299 017a 8585 ldd r24,Z+13
300 017c 1816 cp __zero_reg__,r24
301 017e 04F0 brlt .+2
302 0180 00C0 rjmp .L59
303 .L13:
304 0182 9230 cpi r25,lo8(2)
305 0184 01F4 brne .+2
306 0186 00C0 rjmp .L60
307 0188 9923 tst r25
308 018a 01F4 brne .+2
309 018c 00C0 rjmp .L61
310 .L19:
311 018e 9130 cpi r25,lo8(1)
312 0190 01F0 breq .+2
313 0192 00C0 rjmp .L10
314 0194 86E5 ldi r24,lo8(86)
315 0196 0E94 0000 call i2c_write_byte
316 019a 00C0 rjmp .L10
317 .L30:
318 019c 8091 0000 lds r24,motorread
319 01a0 E82F mov r30,r24
320 01a2 FF27 clr r31
321 01a4 E050 subi r30,lo8(-(motor_rx))
322 01a6 F040 sbci r31,hi8(-(motor_rx))
323 01a8 8091 BB00 lds r24,187
324 01ac 8083 st Z,r24
325 01ae 0E94 0000 call I2C_ReceiveLastByte
326 01b2 00C0 rjmp .L10
327 .L26:
328 01b4 8091 B900 lds r24,185
329 01b8 8034 cpi r24,lo8(64)
330 01ba 01F4 brne .+2
331 01bc 00C0 rjmp .L27
332 01be 8091 0000 lds r24,motorread
333 01c2 E82F mov r30,r24
334 01c4 FF27 clr r31
335 01c6 E050 subi r30,lo8(-(MotorPresent))
336 01c8 F040 sbci r31,hi8(-(MotorPresent))
337 01ca 1082 st Z,__zero_reg__
338 01cc 8F5F subi r24,lo8(-(1))
339 01ce 8230 cpi r24,lo8(2)
340 01d0 00F0 brlo .L54
341 01d2 1092 0000 sts motorread,__zero_reg__
342 .L28:
343 01d6 0E94 0000 call i2c_stop
344 01da 1092 0000 sts twi_state,__zero_reg__
345 .L29:
346 01de 1092 0000 sts MissingMotor,__zero_reg__
347 01e2 1092 0000 sts missing_motor.0,__zero_reg__
348 01e6 00C0 rjmp .L10
349 .L22:
350 01e8 8091 B900 lds r24,185
351 01ec 8033 cpi r24,lo8(48)
352 01ee 01F4 brne .+2
353 01f0 00C0 rjmp .L62
354 .L23:
355 01f2 0E94 0000 call i2c_stop
356 01f6 8AE0 ldi r24,lo8(10)
357 01f8 90E0 ldi r25,hi8(10)
358 01fa 9093 0000 sts (I2CTimeout)+1,r25
359 01fe 8093 0000 sts I2CTimeout,r24
360 0202 1092 0000 sts twi_state,__zero_reg__
361 0206 0E94 0000 call i2c_start
362 020a 00C0 rjmp .L10
363 .L47:
364 020c 0E94 0000 call i2c_stop
365 0210 8AE0 ldi r24,lo8(10)
366 0212 90E0 ldi r25,hi8(10)
367 0214 9093 0000 sts (I2CTimeout)+1,r25
368 0218 8093 0000 sts I2CTimeout,r24
369 021c 00C0 rjmp .L48
370 .L55:
371 021e 8093 0000 sts motorread,r24
372 0222 0E94 0000 call i2c_stop
373 0226 00C0 rjmp .L48
374 .L54:
375 0228 8093 0000 sts motorread,r24
376 022c 00C0 rjmp .L28
377 .L59:
378 022e 9230 cpi r25,lo8(2)
379 0230 00F0 brlo .+2
380 0232 00C0 rjmp .L13
381 .L14:
382 0234 922F mov r25,r18
383 0236 9F5F subi r25,lo8(-(1))
384 0238 E92F mov r30,r25
385 023a FF27 clr r31
386 023c EE0F lsl r30
387 023e FF1F rol r31
388 0240 EE0F lsl r30
389 0242 FF1F rol r31
390 0244 E050 subi r30,lo8(-(Mixer))
391 0246 F040 sbci r31,hi8(-(Mixer))
392 0248 8585 ldd r24,Z+13
393 024a 1816 cp __zero_reg__,r24
394 024c 04F0 brlt .L51
395 024e 292F mov r18,r25
396 0250 9230 cpi r25,lo8(2)
397 0252 00F0 brlo .L14
398 .L51:
399 0254 9093 0000 sts motor,r25
400 0258 00C0 rjmp .L13
401 .L60:
402 025a 1092 0000 sts motor,__zero_reg__
403 025e 83E0 ldi r24,lo8(3)
404 0260 8093 0000 sts twi_state,r24
405 0264 8091 0000 lds r24,motorread
406 0268 8823 tst r24
407 026a 01F0 breq .L63
408 .L16:
409 026c 8130 cpi r24,lo8(1)
410 026e 01F4 brne .L10
411 0270 87E5 ldi r24,lo8(87)
412 0272 0E94 0000 call i2c_write_byte
413 0276 00C0 rjmp .L10
414 .L62:
415 0278 8091 0000 lds r24,missing_motor.0
416 027c 8823 tst r24
417 027e 01F4 brne .L52
418 0280 9091 0000 lds r25,motor
419 0284 9093 0000 sts missing_motor.0,r25
420 .L24:
421 0288 E92F mov r30,r25
422 028a FF27 clr r31
423 028c E050 subi r30,lo8(-(MotorError-1))
424 028e F040 sbci r31,hi8(-(MotorError-1))
425 0290 8081 ld r24,Z
426 0292 8F5F subi r24,lo8(-(1))
427 0294 01F4 brne .L53
428 0296 8FEF ldi r24,lo8(-1)
429 .L53:
430 0298 8083 st Z,r24
431 029a 00C0 rjmp .L23
432 .L61:
433 029c 82E5 ldi r24,lo8(82)
434 029e 0E94 0000 call i2c_write_byte
435 02a2 9091 0000 lds r25,motor
436 02a6 00C0 rjmp .L19
437 .L27:
438 02a8 8091 0000 lds r24,motorread
439 02ac E82F mov r30,r24
440 02ae FF27 clr r31
441 02b0 E050 subi r30,lo8(-(MotorPresent))
442 02b2 F040 sbci r31,hi8(-(MotorPresent))
443 02b4 8C5F subi r24,lo8(-(4))
444 02b6 8083 st Z,r24
445 02b8 0E94 0000 call I2C_ReceiveByte
446 02bc 00C0 rjmp .L29
447 .L52:
448 02be 9091 0000 lds r25,motor
449 02c2 00C0 rjmp .L24
450 .L63:
451 02c4 83E5 ldi r24,lo8(83)
452 02c6 0E94 0000 call i2c_write_byte
453 02ca 8091 0000 lds r24,motorread
454 02ce 00C0 rjmp .L16
455 .L10:
456 02d0 8091 BC00 lds r24,188
457 02d4 8068 ori r24,lo8(-128)
458 02d6 8093 BC00 sts 188,r24
459 /* epilogue: frame size=0 */
460 02da FF91 pop r31
461 02dc EF91 pop r30
462 02de BF91 pop r27
463 02e0 AF91 pop r26
464 02e2 9F91 pop r25
465 02e4 8F91 pop r24
466 02e6 7F91 pop r23
467 02e8 6F91 pop r22
468 02ea 5F91 pop r21
469 02ec 4F91 pop r20
470 02ee 3F91 pop r19
471 02f0 2F91 pop r18
472 02f2 0F90 pop __tmp_reg__
473 02f4 0FBE out __SREG__,__tmp_reg__
474 02f6 0F90 pop __tmp_reg__
475 02f8 1F90 pop __zero_reg__
476 02fa 1895 reti
477 /* epilogue end (size=17) */
478 /* function __vector_26 size 342 (308) */
480 .comm motor_rx,16,1
481 .comm MotorPresent,2,1
482 .comm MotorError,2,1
483 .comm Mixer,77,1
484 .comm motor_rx2,16,1
485 /* File "twimaster.c": code 407 = 0x0197 ( 365), prologues 17, epilogues 25 */
DEFINED SYMBOLS
*ABS*:00000000 twimaster.c
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:3 *ABS*:0000003f __SREG__
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:4 *ABS*:0000003e __SP_H__
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:5 *ABS*:0000003d __SP_L__
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:15 .bss:00000000 I2CError
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:21 .bss:00000002 MissingMotor
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:27 .bss:00000003 motorread
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:33 .bss:00000004 motor
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:39 .bss:00000005 twi_state
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:44 .text:00000000 i2c_init
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:57 .text:0000000c i2c_start
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:69 .text:00000014 i2c_stop
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:81 .text:0000001c i2c_write_byte
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:95 .text:0000002c i2c_reset
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:120 .text:00000066 I2C_WriteByte
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:133 .text:00000072 I2C_ReceiveByte
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:145 .text:0000007a I2C_ReceiveLastByte
.bss:00000006 missing_motor.0
C:\Users\Bernd\AppData\Local\Temp/ccqYbtJB.s:158 .text:00000082 __vector_26
*COM*:00000010 motor_rx2
*COM*:0000004d Mixer
*COM*:00000010 motor_rx
*COM*:00000002 MotorPresent
*COM*:00000002 MotorError
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__tablejump2__
I2CTimeout
AnalogOffsetNick
AnalogOffsetRoll
AnalogOffsetGier
Motor
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/uart.c
0,0 → 1,625
/**************************************************************************************************************************************
* File: uart.c
*
* Purpose: This program treats the RS232 USRAT interface
*
* Functions: void UART_Init(void)
* ISR(USART0_TX_vect)
* ISR(USART0_RX_vect)
* void AddCRC(unsigned int wieviele)
* void SendOutData(unsigned char cmd,unsigned char address, unsigned char BufferAnzahl, ...)
* void Decode64(void)
* void BearbeiteRxDaten(void)
* int uart_putchar(char c)
* void DatenUebertragung(void)
*
******************************************************************************************************************************************/
#include "main.h"
#include "uart.h"
 
#include <stdarg.h>
#include <string.h>
 
//------------------------ Definitionen ---------
#define FC_ADDRESS 1
#define NC_ADDRESS 2
#define MK3MAG_ADDRESS 3
 
//---------------------------------------------Variables-------
unsigned char GetExternalControl = 0;
unsigned char DebugDisplayAnforderung1 = 0;
unsigned char DebugDisplayAnforderung = 0;
unsigned char DebugDataAnforderung = 0;
unsigned char GetVersionAnforderung = 0;
unsigned char GetPPMChannelAnforderung = 0;
 
unsigned char DisplayLine = 0;
unsigned volatile char SioTmp = 0;
unsigned volatile char SendeBuffer[MAX_SENDE_BUFF];
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF];
unsigned volatile char NMEABuffer[MAX_EMPFANGS_BUFF];
unsigned volatile char NeuerDatensatzEmpfangen = 0;
unsigned volatile char NeueKoordinateEmpfangen = 0;
unsigned volatile char UebertragungAbgeschlossen = 1;
unsigned volatile char CntCrcError = 0;
unsigned volatile char AnzahlEmpfangsBytes = 0;
unsigned char *pRxData = 0;
unsigned char RxDataLen = 0;
unsigned volatile char PC_DebugTimeout = 0;
unsigned volatile char PC_MotortestActive = 0;
 
unsigned char DebugTextAnforderung = 255;
unsigned char PcZugriff = 100;
unsigned char MotorTest[16];
unsigned char MeineSlaveAdresse = 1; // Flight-Ctrl
unsigned char ConfirmFrame;
 
int Debug_Timer,Kompass_Timer,Timer3D;
unsigned int DebugDataIntervall = 200, Intervall3D = 0;
 
//---------------------------------------structs----------
struct str_DebugOut DebugOut;
struct str_ExternControl ExternControl;
struct str_VersionInfo VersionInfo;
struct str_WinkelOut WinkelOut;
struct str_Data3D Data3D;
 
 
const unsigned char ANALOG_TEXT[32][16] =
{
//1234567890123456 // -------------------------------------------------------------// siehe "Debugwerte zuordnen" in fc.c Zeile 1270
"3D Nick-Winkel ", // 0 = IntegralNick / (EE_Parameter.GyroAccFaktor * 4); // = Winkel * 10
"AccNick ", // 1 = Mittelwert_AccNick / 4; // = so um die Null
"maxcontrollerDD ", // 2 = // = so um die Null
"mincontrollerDD ", // 3 = // = so um die Null
"MesswertNick ", // 4 = MesswertGier; // = -450
"HiResNick ", // 5 = auf Null bezogener Gyro Nickwert // = so um die Null
"AdWertAccNick ", // 6 = // = 713
"Gas = thrust ", // 7 = Gas // = min 72 max 840 entspricht der Gashebelstellung
" ", // 8 = // = 0 bis 360 Grad jenachdem wie der MK steht
"Spannung V ", // 9 = UBat; // = 120 bei 12V
"Empfang ", // 10 = SenderOkay; // = 0 wenn Sender aus und ca 200 wenn Sender an
"controllerP ", // 11 = controllerP // = dreht sich im Kreis - Umlauf 40 sec
"Motor vorne ", // 12 = Motor[0] // = 0 // wird in SendMotorData(void) hier in fc.c zugewiesen
"Motor hinten ", // 13 = Motor[1] // = 0
"controllerD ", // 14 = // = 0
"controllerDD ", // 15 = // = 0
"PPM_in[3] Nick ", // 16 = // = -120...+120 // ab hier beginjnt der zweite Teil der Anzeige ------------
"ipk[0] ", // 17 = // =
"ipk[1] ", // 18 = // =
"ipk[2] ", // 19 = // =
"ucflg1 ", // 20 = // =
"Stick Kanal 5 ", // 21 = PPM_in[5] // = ca -120 oder +120
"MesswertNick ", // 22 = MesswertNick; // = 0
"maxcontrollerD ", // 23 = // = 0
"mincontrollerD ", // 24 = // = -560
"AdWertNick ", // 25 = AdWertNick; // = 1130
"maxcontrollerP ", // 26 = //
"mincontrollerP ", // 27 = //
"PPM_in[4] Gier ", // 28 = PPM_in[4]; // = ca -120 bis +120
"PPM_in[3] Nick ", // 29 = PPM_in[3]; // = ca -120 bis +120
"PPM_in[2] Roll ", // 30 = PPM_in[2]; // = ca -120 bis +120
"PPM_in[1] Gas " // 31 = PPM_in[1]; // = ca -120 bis +120
};
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
 
 
//------------------------------------------------------------------------------------------------------------------
// Installation of the USART COM Port
//------------------------------------------------------------------------------------------------------------------
void UART_Init(void)
{
//------------------------------------------------------------------------------------------------------------
// UCSR0B – USART Control and Status Register 0 B containing RXCIE0 TXCIE0 UDRIE0 RXEN0 TXEN0 UCSZ02 RXB80 TXB80
//
UCSR0B = (1 << TXEN0) | (1 << RXEN0); // Writing this bit to one enables the USART Transmitter
//------------------------------------------------------------------------------------------------------------
// UCSR0A – USART Control and Status Register A containing RXC0 TXC0 UDRE0 FE0 DORn UPEn U2X0 MPCM0
//
UCSR0A |= (1<<U2X0); // Double the USART Transmission Speed
//------------------------------------------------------------------------------------------------------------
// UCSR0B – USART Control and Status Register 0 B containing RXCIE0 TXCIE0 UDRIE0 RXEN0 TXEN0 UCSZ02 RXB80 TXB80
//
UCSR0B |= (1<<RXCIE); // RX Complete Interrupt Enable
UCSR0B |= (1<<TXCIE); // TX Complete Interrupt Enable
//------------------------------------------------------------------------------------------------------------
// UBRRnL and UBRRnH – USART Baud Rate Registers
//
UBRR0L = (SYSCLK / (BAUD_RATE * 8L) - 1); // set Baudrate to 57600
 
Debug_Timer = SetDelay(DebugDataIntervall);
Kompass_Timer = SetDelay(220);
 
VersionInfo.SWMajor = VERSION_MAJOR;
VersionInfo.SWMinor = VERSION_MINOR;
VersionInfo.SWPatch = VERSION_PATCH;
VersionInfo.ProtoMajor = VERSION_SERIAL_MAJOR;
VersionInfo.ProtoMinor = VERSION_SERIAL_MINOR;
pRxData = 0;
RxDataLen = 0;
}
//------------------------------------------------------------------------------------------------------------------
 
 
 
//-----------------------------------------------------------------------------------------------------
// Interrupt due to USART0 TX Complete
//-----------------------------------------------------------------------------------------------------
ISR(USART0_TX_vect)
{
static unsigned int ptr = 0;
unsigned char tmp_tx;
if(!UebertragungAbgeschlossen)
{
ptr++; // die [0] wurde schon gesendet
tmp_tx = SendeBuffer[ptr];
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF))
{
ptr = 0;
UebertragungAbgeschlossen = 1;
}
UDR = tmp_tx;
}
else ptr = 0;
}
//-----------------------------------------------------------------------------------------------------
 
 
 
//-----------------------------------------------------------------------------------------------------
// Interrupt due to USART0 RX Complete
//-----------------------------------------------------------------------------------------------------
ISR(USART0_RX_vect)
{
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; CntCrcError++;};
if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet
{
NeuerDatensatzEmpfangen = 1;
AnzahlEmpfangsBytes = buf_ptr + 1;
RxdBuffer[buf_ptr] = '\r';
if(RxdBuffer[2] == 'R')
{
wdt_enable(WDTO_250MS); // Reset-Commando
ServoActive = 0;
}
}
}
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;
}
}
//-----------------------------------------------------------------------------------------------------
 
 
 
// --------------------------------------------------------------------------
// checksum
// --------------------------------------------------------------------------
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];
}
//-----------------------------------------------------------------------------------------------------
 
 
 
// ---------------------------------------------------------------------------------------------------------------------------
//unsigned char *snd, unsigned char len)
// ---------------------------------------------------------------------------------------------------------------------------
void SendOutData(unsigned char cmd,unsigned char address, unsigned char BufferAnzahl, ...)
{
va_list ap;
unsigned int pt = 0;
unsigned char a,b,c;
unsigned char ptr = 0;
 
unsigned char *snd = 0;
int len = 0;
 
SendeBuffer[pt++] = '#'; // Startzeichen
SendeBuffer[pt++] = 'a' + address; // Adresse (a=0; b=1,...)
SendeBuffer[pt++] = cmd; // Commando
 
va_start(ap, BufferAnzahl);
if(BufferAnzahl)
{
snd = va_arg(ap, unsigned char*);
len = va_arg(ap, int);
ptr = 0;
BufferAnzahl--;
}
while(len)
{
if(len)
{
a = snd[ptr++];
len--;
if((!len) && BufferAnzahl)
{
snd = va_arg(ap, unsigned char*);
len = va_arg(ap, int);
ptr = 0;
BufferAnzahl--;
}
}
else a = 0;
if(len)
{
b = snd[ptr++];
len--;
if((!len) && BufferAnzahl)
{
snd = va_arg(ap, unsigned char*);
len = va_arg(ap, int);
ptr = 0;
BufferAnzahl--;
}
}
else b = 0;
if(len)
{
c = snd[ptr++];
len--;
if((!len) && BufferAnzahl)
{
snd = va_arg(ap, unsigned char*);
len = va_arg(ap, int);
ptr = 0;
BufferAnzahl--;
}
}
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);
}
va_end(ap);
AddCRC(pt);
}
// EOF : SendOutData() ----------------------------------------------------------------------------------------------------
 
 
 
// ----------------------------------------------------------------------------------------------------------------------
// die daten werden im rx buffer dekodiert, das geht nur, weil aus 4 byte immer 3 gemacht werden.
// ----------------------------------------------------------------------------------------------------------------------
void Decode64(void)
{
unsigned char a,b,c,d;
unsigned char x,y,z;
unsigned char ptrIn = 3; // start at begin of data block
unsigned char ptrOut = 3;
unsigned char len = AnzahlEmpfangsBytes - 6; // von der Gesamtbytezahl eines Frames gehen 3 Bytes des Headers ('#',Addr, Cmd) und 3 Bytes des Footers (CRC1, CRC2, '\r') ab.
 
while(len)
{
a = RxdBuffer[ptrIn++] - '=';
b = RxdBuffer[ptrIn++] - '=';
c = RxdBuffer[ptrIn++] - '=';
d = RxdBuffer[ptrIn++] - '=';
x = (a << 2) | (b >> 4);
y = ((b & 0x0f) << 4) | (c >> 2);
z = ((c & 0x03) << 6) | d;
if(len--) RxdBuffer[ptrOut++] = x; else break;
if(len--) RxdBuffer[ptrOut++] = y; else break;
if(len--) RxdBuffer[ptrOut++] = z; else break;
}
pRxData = (unsigned char*)&RxdBuffer[3]; // decodierte Daten beginnen beim 4. Byte
RxDataLen = ptrOut - 3; // wie viele Bytes wurden dekodiert?
 
}
//-----------------------------------------------------------------------------------------------------
 
 
 
// ----------------------------------------------------------------------------------------------------------------------
void BearbeiteRxDaten(void)
{
if(!NeuerDatensatzEmpfangen) return;
unsigned char tempchar1, tempchar2;
Decode64(); // dekodiere datenblock im Empfangsbuffer
switch(RxdBuffer[1]-'a') // check for Slave Address
{
case FC_ADDRESS: // FC special commands
switch(RxdBuffer[2])
{
case 'K': // Kompasswert
memcpy((unsigned char *)&KompassValue , (unsigned char *)pRxData, sizeof(KompassValue));
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180;
break;
case 't': // Motortest
if(AnzahlEmpfangsBytes > 20) memcpy(&MotorTest[0], (unsigned char *)pRxData, sizeof(MotorTest));
else memcpy(&MotorTest[0], (unsigned char *)pRxData, 4);
PC_MotortestActive = 240;
//while(!UebertragungAbgeschlossen);
//SendOutData('T', MeineSlaveAdresse, 0);
PcZugriff = 255;
break;
case 'n': // "Get Mixer
while(!UebertragungAbgeschlossen);
SendOutData('N', FC_ADDRESS, 1, (unsigned char *) &Mixer,sizeof(Mixer));
break;
case 'm': // "Write Mixer
while(!UebertragungAbgeschlossen);
if(pRxData[0] == MIXER_REVISION)
{
memcpy(&Mixer, (unsigned char *)pRxData, sizeof(Mixer));
eeprom_write_block(&Mixer, &EEPromArray[EEPROM_ADR_MIXER_TABLE], sizeof(Mixer));
tempchar1 = 1;
}
else tempchar1 = 0;
SendOutData('M', FC_ADDRESS, 1, &tempchar1, sizeof(tempchar1));
break;
case 'p': // get PPM Channels
GetPPMChannelAnforderung = 1;
break;
case 'q': // "Get"-Anforderung für Settings
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen
if(pRxData[0] == 0xFF)
{
pRxData[0] = GetActiveParamSetNumber();
}
// limit settings range
if(pRxData[0] < 1) pRxData[0] = 1; // limit to 5
else if(pRxData[0] > 5) pRxData[0] = 5; // limit to 5
// load requested parameter set
ReadParameterSet(pRxData[0], (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); // #define STRUCT_PARAM_LAENGE sizeof(EE_Parameter)
while(!UebertragungAbgeschlossen);
tempchar1 = pRxData[0];
tempchar2 = EE_DATENREVISION; // #define EE_DATENREVISION 80 // Parameter fürs Koptertool; entspricht den EEPROM-Daten von FlightCtrl Version V0.76g
SendOutData('Q', FC_ADDRESS, 3, &tempchar1, sizeof(tempchar1), &tempchar2, sizeof(tempchar2), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); // #define STRUCT_PARAM_LAENGE sizeof(EE_Parameter)
break;
case 's': // Parametersatz speichern
if((1 <= pRxData[0]) && (pRxData[0] <= 5) && (pRxData[1] == EE_DATENREVISION)) // check for setting to be in range
{
memcpy((unsigned char *) &EE_Parameter.Kanalbelegung[0], (unsigned char *)&pRxData[2], STRUCT_PARAM_LAENGE); // #define STRUCT_PARAM_LAENGE sizeof(EE_Parameter)
WriteParameterSet(pRxData[0], (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE);
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L;
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L;
SetActiveParamSetNumber(pRxData[0]);
tempchar1 = GetActiveParamSetNumber();
LipoDetection(0); // jump tp main.c line 59
Piep(tempchar1,110);
}
else
{
tempchar1 = 0; // mark in response an invlid setting
}
while(!UebertragungAbgeschlossen);
SendOutData('S', FC_ADDRESS, 1, &tempchar1, sizeof(tempchar1));
break;
} // EOF : case FC_ADDRESS
default: // any Slave Address
switch(RxdBuffer[2])
{
// 't' comand placed here only for compatibility to BL
case 't': // Motortest
if(AnzahlEmpfangsBytes > 20) memcpy(&MotorTest[0], (unsigned char *)pRxData, sizeof(MotorTest));
else memcpy(&MotorTest[0], (unsigned char *)pRxData, 4);
while(!UebertragungAbgeschlossen);
SendOutData('T', MeineSlaveAdresse, 0);
PC_MotortestActive = 250;
PcZugriff = 255;
break;
// 'K' comand placed here only for compatibility to old MK3MAG software, that does not send the right Slave Address
case 'K': // Kompasswert
memcpy((unsigned char *)&KompassValue , (unsigned char *)pRxData, sizeof(KompassValue));
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180;
break;
case 'a': // Texte der Analogwerte
DebugTextAnforderung = pRxData[0];
if (DebugTextAnforderung > 31) DebugTextAnforderung = 31;
PcZugriff = 255;
break;
case 'b':
memcpy((unsigned char *)&ExternControl, (unsigned char *)pRxData, sizeof(ExternControl));
ConfirmFrame = ExternControl.Frame;
PcZugriff = 255;
break;
case 'c': // Poll the 3D-Data
if(!Intervall3D) { if(pRxData[0]) Timer3D = SetDelay(pRxData[0] * 10);}
Intervall3D = pRxData[0] * 10;
break;
case 'd': // Poll the debug data
DebugDataIntervall = pRxData[0] * 10;
if(DebugDataIntervall > 0) DebugDataAnforderung = 1;
break;
case 'h': // x-1 Displayzeilen
PcZugriff = 255;
RemoteKeys |= pRxData[0];
if(RemoteKeys) DisplayLine = 0;
DebugDisplayAnforderung = 1;
break;
case 'l': // x-1 Displayzeilen
PcZugriff = 255;
MenuePunkt = pRxData[0];
DebugDisplayAnforderung1 = 1;
break;
case 'v': // Version-Anforderung und Ausbaustufe
GetVersionAnforderung = 1;
break;
case 'g': //
GetExternalControl = 1;
break;
}
break; // default:
}
NeuerDatensatzEmpfangen = 0;
pRxData = 0;
RxDataLen = 0;
}
//-----------------------------------------------------------------------------------------------------
 
 
 
// --------------------------------------------------------------------------
// function serial output
// --------------------------------------------------------------------------
int uart_putchar(char c)
{
if (c == '\n') uart_putchar('\r');
loop_until_bit_is_set(USR, UDRE); // Warten solange bis Zeichen gesendet wurde
UDR = c; // Ausgabe des Zeichens
return (0);
}
//-----------------------------------------------------------------------------------------------------
 
 
 
//---------------------------------------------------------------------------------------------
// Datenübertragung
//---------------------------------------------------------------------------------------------
void DatenUebertragung(void)
{
if(!UebertragungAbgeschlossen) return;
if(DebugDisplayAnforderung && UebertragungAbgeschlossen)
{
Menu();
SendOutData('H', FC_ADDRESS, 2, &DisplayLine, sizeof(DisplayLine), &DisplayBuff[DisplayLine * 20], 20);
DisplayLine++;
if(DisplayLine >= 4) DisplayLine = 0;
DebugDisplayAnforderung = 0;
}
if(DebugDisplayAnforderung1 && UebertragungAbgeschlossen)
{
Menu();
SendOutData('L', FC_ADDRESS, 3, &MenuePunkt, sizeof(MenuePunkt), &MaxMenue, sizeof(MaxMenue), DisplayBuff, sizeof(DisplayBuff));
DebugDisplayAnforderung1 = 0;
}
if(GetVersionAnforderung && UebertragungAbgeschlossen)
{
SendOutData('V', FC_ADDRESS, 1, (unsigned char *) &VersionInfo, sizeof(VersionInfo));
GetVersionAnforderung = 0;
}
if(GetExternalControl && UebertragungAbgeschlossen) // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen
{
SendOutData('G',MeineSlaveAdresse, 1, (unsigned char *) &ExternControl, sizeof(ExternControl));
GetExternalControl = 0;
}
if((CheckDelay(Kompass_Timer)) && UebertragungAbgeschlossen)
{
WinkelOut.Winkel[0] = (int) (IntegralNick / (EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad
WinkelOut.Winkel[1] = (int) (IntegralRoll / (EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad
WinkelOut.UserParameter[0] = Parameter_UserParam1;
WinkelOut.UserParameter[1] = Parameter_UserParam2;
SendOutData('w', MK3MAG_ADDRESS, 1, (unsigned char *) &WinkelOut,sizeof(WinkelOut));
if(WinkelOut.CalcState > 4) WinkelOut.CalcState = 6; // wird dann in SPI auf Null gesetzt
Kompass_Timer = SetDelay(99);
}
if(((DebugDataIntervall>0 && CheckDelay(Debug_Timer)) || DebugDataAnforderung) && UebertragungAbgeschlossen)
{
//if(Poti3 > 64)
SendOutData('D', FC_ADDRESS, 1, (unsigned char *) &DebugOut,sizeof(DebugOut));
DebugDataAnforderung = 0;
if(DebugDataIntervall>0) Debug_Timer = SetDelay(DebugDataIntervall);
}
if(Intervall3D > 0 && CheckDelay(Timer3D) && UebertragungAbgeschlossen)
{
Data3D.Winkel[0] = (int) (IntegralNick / (EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad
Data3D.Winkel[1] = (int) (IntegralRoll / (EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad
Data3D.Winkel[2] = (int) ((10 * ErsatzKompass) / GIER_GRAD_FAKTOR);
SendOutData('C', FC_ADDRESS, 1, (unsigned char *) &Data3D,sizeof(Data3D));
Timer3D = SetDelay(Intervall3D);
}
if(DebugTextAnforderung != 255) // Texte für die Analogdaten
{
SendOutData('A', FC_ADDRESS, 2, (unsigned char *)&DebugTextAnforderung, sizeof(DebugTextAnforderung),(unsigned char *) ANALOG_TEXT[DebugTextAnforderung], 16);
DebugTextAnforderung = 255;
}
if(ConfirmFrame && UebertragungAbgeschlossen) // Datensatz bestätigen
{
SendOutData('B', FC_ADDRESS, 1, (uint8_t*)&ConfirmFrame, sizeof(ConfirmFrame));
ConfirmFrame = 0;
}
if(GetPPMChannelAnforderung && UebertragungAbgeschlossen)
{
SendOutData('P', FC_ADDRESS, 1, (unsigned char *) &PPM_in, sizeof(PPM_in));
GetPPMChannelAnforderung = 0;
}
}
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/uart.d
0,0 → 1,2
uart.o uart.d : uart.c main.h old_macros.h _Settings.h printf_P.h timer0.h uart.h \
analog.h eeprom.h twimaster.h menu.h rc.h fc.h led.h
/branches/V0.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/uart.h
0,0 → 1,124
// -------------------------------------------------------------------------------------------------------------------------------------
// uart.h
// -------------------------------------------------------------------------------------------------------------------------------------
 
#ifndef _UART_H
#define _UART_H
 
#define MAX_SENDE_BUFF 150
#define MAX_EMPFANGS_BUFF 150
 
void BearbeiteRxDaten(void);
 
extern unsigned char DebugGetAnforderung;
extern unsigned volatile char SendeBuffer[MAX_SENDE_BUFF];
extern unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF];
extern unsigned volatile char UebertragungAbgeschlossen;
extern unsigned volatile char PC_DebugTimeout;
extern unsigned volatile char NeueKoordinateEmpfangen;
extern unsigned volatile char PC_MotortestActive;
extern unsigned char MeineSlaveAdresse;
extern unsigned char PcZugriff;
extern unsigned char RemotePollDisplayLine;
extern int Debug_Timer,Kompass_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 DatenUebertragung(void);
extern void BearbeiteRxDaten(void);
extern unsigned char MotorTest[16];
 
struct str_DebugOut
{
unsigned char Digital[2];
signed int Analog[32]; // Debugwerte
};
 
extern struct str_DebugOut DebugOut;
 
struct str_WinkelOut
{
signed int Winkel[2];
unsigned char UserParameter[2];
unsigned char CalcState; // wird als vierstufiges Flag in spi.c uart.c fc.c und main.c verwendet
unsigned char Orientation;
};
 
extern struct str_WinkelOut WinkelOut;
 
struct str_Data3D
{
signed int Winkel[3]; // nick, roll, compass in 0,1°
signed char reserve[8];
};
 
extern struct str_Data3D Data3D;
 
struct str_ExternControl
{
unsigned char Digital[2];
unsigned char RemoteTasten;
signed char Nick;
signed char Roll;
signed char Gier;
unsigned char Gas;
signed char Hight;
unsigned char free;
unsigned char Frame;
unsigned char Config;
};
 
extern struct str_ExternControl ExternControl;
 
struct str_VersionInfo
{
unsigned char SWMajor;
unsigned char SWMinor;
unsigned char ProtoMajor;
unsigned char ProtoMinor;
unsigned char SWPatch;
unsigned char Reserved[5];
};
 
extern struct str_VersionInfo VersionInfo;
 
 
#define BAUD_RATE 57600 //Die Baud_Rate der Seriellen Schnittstelle ist 57600 Baud
 
//Anpassen der seriellen Schnittstellen Register-----
#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
//--------------------------------------
#if defined (__AVR_ATmega644P__)
# 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.76g_dk9nw_balancekopter/794 MK FC V0.76g balance/uart.lst
0,0 → 1,2237
1 .file "uart.c"
2 .arch atmega644
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 .global ANALOG_TEXT
11 .data
14 ANALOG_TEXT:
15 0000 3344 204E .ascii "3D Nick-Winkel "
15 6963 6B2D
15 5769 6E6B
15 656C 2020
16 0010 4163 634E .ascii "AccNick "
16 6963 6B20
16 2020 2020
16 2020 2020
17 0020 6D61 7863 .ascii "maxcontrollerDD "
17 6F6E 7472
17 6F6C 6C65
17 7244 4420
18 0030 6D69 6E63 .ascii "mincontrollerDD "
18 6F6E 7472
18 6F6C 6C65
18 7244 4420
19 0040 4D65 7373 .ascii "MesswertNick "
19 7765 7274
19 4E69 636B
19 2020 2020
20 0050 4869 5265 .ascii "HiResNick "
20 734E 6963
20 6B20 2020
20 2020 2020
21 0060 4164 5765 .ascii "AdWertAccNick "
21 7274 4163
21 634E 6963
21 6B20 2020
22 0070 4761 7320 .ascii "Gas = thrust "
22 3D20 7468
22 7275 7374
22 2020 2020
23 0080 2020 2020 .ascii " "
23 2020 2020
23 2020 2020
23 2020 2020
24 0090 5370 616E .ascii "Spannung V "
24 6E75 6E67
24 2056 2020
24 2020 2020
25 00a0 456D 7066 .ascii "Empfang "
25 616E 6720
25 2020 2020
25 2020 2020
26 00b0 636F 6E74 .ascii "controllerP "
26 726F 6C6C
26 6572 5020
26 2020 2020
27 00c0 4D6F 746F .ascii "Motor vorne "
27 7220 766F
27 726E 6520
27 2020 2020
28 00d0 4D6F 746F .ascii "Motor hinten "
28 7220 6869
28 6E74 656E
28 2020 2020
29 00e0 636F 6E74 .ascii "controllerD "
29 726F 6C6C
29 6572 4420
29 2020 2020
30 00f0 636F 6E74 .ascii "controllerDD "
30 726F 6C6C
30 6572 4444
30 2020 2020
31 0100 5050 4D5F .ascii "PPM_in[3] Nick "
31 696E 5B33
31 5D20 4E69
31 636B 2020
32 0110 6970 6B5B .ascii "ipk[0] "
32 305D 2020
32 2020 2020
32 2020 2020
33 0120 6970 6B5B .ascii "ipk[1] "
33 315D 2020
33 2020 2020
33 2020 2020
34 0130 6970 6B5B .ascii "ipk[2] "
34 325D 2020
34 2020 2020
34 2020 2020
35 0140 7563 666C .ascii "ucflg1 "
35 6731 2020
35 2020 2020
35 2020 2020
36 0150 5374 6963 .ascii "Stick Kanal 5 "
36 6B20 4B61
36 6E61 6C20
36 3520 2020
37 0160 4D65 7373 .ascii "MesswertNick "
37 7765 7274
37 4E69 636B
37 2020 2020
38 0170 6D61 7863 .ascii "maxcontrollerD "
38 6F6E 7472
38 6F6C 6C65
38 7244 2020
39 0180 6D69 6E63 .ascii "mincontrollerD "
39 6F6E 7472
39 6F6C 6C65
39 7244 2020
40 0190 4164 5765 .ascii "AdWertNick "
40 7274 4E69
40 636B 2020
40 2020 2020
41 01a0 6D61 7863 .ascii "maxcontrollerP "
41 6F6E 7472
41 6F6C 6C65
41 7250 2020
42 01b0 6D69 6E63 .ascii "mincontrollerP "
42 6F6E 7472
42 6F6C 6C65
42 7250 2020
43 01c0 5050 4D5F .ascii "PPM_in[4] Gier "
43 696E 5B34
43 5D20 4769
43 6572 2020
44 01d0 5050 4D5F .ascii "PPM_in[3] Nick "
44 696E 5B33
44 5D20 4E69
44 636B 2020
45 01e0 5050 4D5F .ascii "PPM_in[2] Roll "
45 696E 5B32
45 5D20 526F
45 6C6C 2020
46 01f0 5050 4D5F .ascii "PPM_in[1] Gas "
46 696E 5B31
46 5D20 4761
46 7320 2020
47 .global Intervall3D
48 .global Intervall3D
49 .section .bss
52 Intervall3D:
53 0000 0000 .skip 2,0
54 .global DebugDataIntervall
55 .data
58 DebugDataIntervall:
59 0200 C800 .word 200
60 .global MeineSlaveAdresse
63 MeineSlaveAdresse:
64 0202 01 .byte 1
65 .global PcZugriff
68 PcZugriff:
69 0203 64 .byte 100
70 .global DebugTextAnforderung
73 DebugTextAnforderung:
74 0204 FF .byte -1
75 .global PC_MotortestActive
76 .global PC_MotortestActive
77 .section .bss
80 PC_MotortestActive:
81 0002 00 .skip 1,0
82 .global PC_DebugTimeout
83 .global PC_DebugTimeout
86 PC_DebugTimeout:
87 0003 00 .skip 1,0
88 .global RxDataLen
89 .global RxDataLen
92 RxDataLen:
93 0004 00 .skip 1,0
94 .global pRxData
95 .global pRxData
98 pRxData:
99 0005 0000 .skip 2,0
100 .global AnzahlEmpfangsBytes
101 .global AnzahlEmpfangsBytes
104 AnzahlEmpfangsBytes:
105 0007 00 .skip 1,0
106 .global CntCrcError
107 .global CntCrcError
110 CntCrcError:
111 0008 00 .skip 1,0
112 .global UebertragungAbgeschlossen
113 .data
116 UebertragungAbgeschlossen:
117 0205 01 .byte 1
118 .global NeueKoordinateEmpfangen
119 .global NeueKoordinateEmpfangen
120 .section .bss
123 NeueKoordinateEmpfangen:
124 0009 00 .skip 1,0
125 .global NeuerDatensatzEmpfangen
126 .global NeuerDatensatzEmpfangen
129 NeuerDatensatzEmpfangen:
130 000a 00 .skip 1,0
131 .global SioTmp
132 .global SioTmp
135 SioTmp:
136 000b 00 .skip 1,0
137 .global DisplayLine
138 .global DisplayLine
141 DisplayLine:
142 000c 00 .skip 1,0
143 .global GetPPMChannelAnforderung
144 .global GetPPMChannelAnforderung
147 GetPPMChannelAnforderung:
148 000d 00 .skip 1,0
149 .global GetVersionAnforderung
150 .global GetVersionAnforderung
153 GetVersionAnforderung:
154 000e 00 .skip 1,0
155 .global DebugDataAnforderung
156 .global DebugDataAnforderung
159 DebugDataAnforderung:
160 000f 00 .skip 1,0
161 .global DebugDisplayAnforderung
162 .global DebugDisplayAnforderung
165 DebugDisplayAnforderung:
166 0010 00 .skip 1,0
167 .global DebugDisplayAnforderung1
168 .global DebugDisplayAnforderung1
171 DebugDisplayAnforderung1:
172 0011 00 .skip 1,0
173 .global GetExternalControl
174 .global GetExternalControl
177 GetExternalControl:
178 0012 00 .skip 1,0
179 .text
181 eeprom_write_byte:
182 /* prologue: frame size=0 */
183 /* prologue end (size=0) */
184 .L2:
185 0000 F999 sbic 63-0x20,1
186 0002 00C0 rjmp .L2
187 0004 1FBA out 63-0x20,__zero_reg__
188 0006 92BD out (65)+1-0x20,r25
189 0008 81BD out 65-0x20,r24
190 000a 60BD out 64-0x20,r22
191 /* #APP */
192 /* START EEPROM WRITE CRITICAL SECTION */
193 000c 0FB6 in r0, 63
194 000e F894 cli
195 0010 FA9A sbi 31, 2
196 0012 F99A sbi 31, 1
197 0014 0FBE out 63, r0
198 /* END EEPROM WRITE CRITICAL SECTION */
199 /* #NOAPP */
200 /* epilogue: frame size=0 */
201 0016 0895 ret
202 /* epilogue end (size=1) */
203 /* function eeprom_write_byte size 21 (20) */
205 .global UART_Init
207 UART_Init:
208 /* prologue: frame size=0 */
209 /* prologue end (size=0) */
210 0018 88E1 ldi r24,lo8(24)
211 001a 8093 C100 sts 193,r24
212 001e 8091 C000 lds r24,192
213 0022 8260 ori r24,lo8(2)
214 0024 8093 C000 sts 192,r24
215 0028 8091 C100 lds r24,193
216 002c 8068 ori r24,lo8(-128)
217 002e 8093 C100 sts 193,r24
218 0032 8091 C100 lds r24,193
219 0036 8064 ori r24,lo8(64)
220 0038 8093 C100 sts 193,r24
221 003c 8AE2 ldi r24,lo8(42)
222 003e 8093 C400 sts 196,r24
223 0042 8091 0000 lds r24,DebugDataIntervall
224 0046 9091 0000 lds r25,(DebugDataIntervall)+1
225 004a 0E94 0000 call SetDelay
226 004e 9093 0000 sts (Debug_Timer)+1,r25
227 0052 8093 0000 sts Debug_Timer,r24
228 0056 8CED ldi r24,lo8(220)
229 0058 90E0 ldi r25,hi8(220)
230 005a 0E94 0000 call SetDelay
231 005e 9093 0000 sts (Kompass_Timer)+1,r25
232 0062 8093 0000 sts Kompass_Timer,r24
233 0066 1092 0000 sts VersionInfo,__zero_reg__
234 006a 8CE4 ldi r24,lo8(76)
235 006c 8093 0000 sts VersionInfo+1,r24
236 0070 86E0 ldi r24,lo8(6)
237 0072 8093 0000 sts VersionInfo+4,r24
238 0076 8AE0 ldi r24,lo8(10)
239 0078 8093 0000 sts VersionInfo+2,r24
240 007c 81E0 ldi r24,lo8(1)
241 007e 8093 0000 sts VersionInfo+3,r24
242 0082 1092 0000 sts (pRxData)+1,__zero_reg__
243 0086 1092 0000 sts pRxData,__zero_reg__
244 008a 1092 0000 sts RxDataLen,__zero_reg__
245 /* epilogue: frame size=0 */
246 008e 0895 ret
247 /* epilogue end (size=1) */
248 /* function UART_Init size 60 (59) */
250 .lcomm ptr.5,2
251 .global __vector_22
253 __vector_22:
254 /* prologue: frame size=0 */
255 0090 1F92 push __zero_reg__
256 0092 0F92 push __tmp_reg__
257 0094 0FB6 in __tmp_reg__,__SREG__
258 0096 0F92 push __tmp_reg__
259 0098 1124 clr __zero_reg__
260 009a 8F93 push r24
261 009c 9F93 push r25
262 009e EF93 push r30
263 00a0 FF93 push r31
264 /* prologue end (size=9) */
265 00a2 8091 0000 lds r24,UebertragungAbgeschlossen
266 00a6 8823 tst r24
267 00a8 01F4 brne .L8
268 00aa 8091 0000 lds r24,ptr.5
269 00ae 9091 0000 lds r25,(ptr.5)+1
270 00b2 0196 adiw r24,1
271 00b4 FC01 movw r30,r24
272 00b6 E050 subi r30,lo8(-(SendeBuffer))
273 00b8 F040 sbci r31,hi8(-(SendeBuffer))
274 00ba E081 ld r30,Z
275 00bc ED30 cpi r30,lo8(13)
276 00be 01F0 breq .L10
277 00c0 8639 cpi r24,150
278 00c2 9105 cpc r25,__zero_reg__
279 00c4 01F0 breq .L10
280 00c6 9093 0000 sts (ptr.5)+1,r25
281 00ca 8093 0000 sts ptr.5,r24
282 00ce E093 C600 sts 198,r30
283 00d2 00C0 rjmp .L7
284 .L8:
285 00d4 1092 0000 sts (ptr.5)+1,__zero_reg__
286 00d8 1092 0000 sts ptr.5,__zero_reg__
287 00dc 00C0 rjmp .L7
288 .L10:
289 00de 1092 0000 sts (ptr.5)+1,__zero_reg__
290 00e2 1092 0000 sts ptr.5,__zero_reg__
291 00e6 81E0 ldi r24,lo8(1)
292 00e8 8093 0000 sts UebertragungAbgeschlossen,r24
293 00ec E093 C600 sts 198,r30
294 .L7:
295 /* epilogue: frame size=0 */
296 00f0 FF91 pop r31
297 00f2 EF91 pop r30
298 00f4 9F91 pop r25
299 00f6 8F91 pop r24
300 00f8 0F90 pop __tmp_reg__
301 00fa 0FBE out __SREG__,__tmp_reg__
302 00fc 0F90 pop __tmp_reg__
303 00fe 1F90 pop __zero_reg__
304 0100 1895 reti
305 /* epilogue end (size=9) */
306 /* function __vector_22 size 57 (39) */
308 .lcomm crc.0,2
309 .lcomm crc1.1,1
310 .lcomm crc2.2,1
311 .lcomm buf_ptr.3,1
312 .lcomm UartState.4,1
313 .global __vector_20
315 __vector_20:
316 /* prologue: frame size=0 */
317 0102 1F92 push __zero_reg__
318 0104 0F92 push __tmp_reg__
319 0106 0FB6 in __tmp_reg__,__SREG__
320 0108 0F92 push __tmp_reg__
321 010a 1124 clr __zero_reg__
322 010c 2F93 push r18
323 010e 3F93 push r19
324 0110 4F93 push r20
325 0112 5F93 push r21
326 0114 8F93 push r24
327 0116 9F93 push r25
328 0118 AF93 push r26
329 011a BF93 push r27
330 011c EF93 push r30
331 011e FF93 push r31
332 /* prologue end (size=15) */
333 0120 90E0 ldi r25,lo8(0)
334 0122 8091 C600 lds r24,198
335 0126 8093 0000 sts SioTmp,r24
336 012a 5091 0000 lds r21,buf_ptr.3
337 012e 5639 cpi r21,lo8(-106)
338 0130 00F0 brlo .L14
339 0132 9093 0000 sts UartState.4,r25
340 .L14:
341 0136 8091 0000 lds r24,SioTmp
342 013a 8D30 cpi r24,lo8(13)
343 013c 01F0 breq .L33
344 013e 2091 0000 lds r18,UartState.4
345 .L15:
346 0142 822F mov r24,r18
347 0144 9927 clr r25
348 0146 8130 cpi r24,1
349 0148 9105 cpc r25,__zero_reg__
350 014a 01F4 brne .+2
351 014c 00C0 rjmp .L24
352 014e 8230 cpi r24,2
353 0150 9105 cpc r25,__zero_reg__
354 0152 04F4 brge .+2
355 0154 00C0 rjmp .L34
356 0156 0297 sbiw r24,2
357 0158 01F4 brne .+2
358 015a 00C0 rjmp .L25
359 .L28:
360 015c 1092 0000 sts UartState.4,__zero_reg__
361 0160 00C0 rjmp .L13
362 .L33:
363 0162 2091 0000 lds r18,UartState.4
364 0166 2230 cpi r18,lo8(2)
365 0168 01F4 brne .L15
366 016a 9093 0000 sts UartState.4,r25
367 016e 852F mov r24,r21
368 0170 9927 clr r25
369 0172 8050 subi r24,lo8(-(RxdBuffer))
370 0174 9040 sbci r25,hi8(-(RxdBuffer))
371 0176 FC01 movw r30,r24
372 0178 3297 sbiw r30,2
373 017a 4081 ld r20,Z
374 017c 2091 0000 lds r18,crc.0
375 0180 3091 0000 lds r19,(crc.0)+1
376 0184 241B sub r18,r20
377 0186 3109 sbc r19,__zero_reg__
378 0188 DC01 movw r26,r24
379 018a 1197 sbiw r26,1
380 018c 8C91 ld r24,X
381 018e 281B sub r18,r24
382 0190 3109 sbc r19,__zero_reg__
383 0192 C901 movw r24,r18
384 0194 9F70 andi r25,hi8(4095)
385 0196 9093 0000 sts (crc.0)+1,r25
386 019a 8093 0000 sts crc.0,r24
387 019e 0024 clr __tmp_reg__
388 01a0 880F lsl r24
389 01a2 991F rol r25
390 01a4 001C rol __tmp_reg__
391 01a6 880F lsl r24
392 01a8 991F rol r25
393 01aa 001C rol __tmp_reg__
394 01ac 892F mov r24,r25
395 01ae 902D mov r25,__tmp_reg__
396 01b0 982F mov r25,r24
397 01b2 935C subi r25,lo8(-(61))
398 01b4 9093 0000 sts crc1.1,r25
399 01b8 2F73 andi r18,lo8(63)
400 01ba 3070 andi r19,hi8(63)
401 01bc 235C subi r18,lo8(-(61))
402 01be 2093 0000 sts crc2.2,r18
403 01c2 8081 ld r24,Z
404 01c4 8917 cp r24,r25
405 01c6 01F4 brne .+2
406 01c8 00C0 rjmp .L35
407 .L16:
408 01ca 90E0 ldi r25,lo8(0)
409 01cc 8091 0000 lds r24,CntCrcError
410 01d0 8F5F subi r24,lo8(-(1))
411 01d2 8093 0000 sts CntCrcError,r24
412 .L17:
413 01d6 3091 0000 lds r19,NeuerDatensatzEmpfangen
414 01da 3323 tst r19
415 01dc 01F0 breq .+2
416 01de 00C0 rjmp .L13
417 01e0 9923 tst r25
418 01e2 01F4 brne .+2
419 01e4 00C0 rjmp .L13
420 01e6 81E0 ldi r24,lo8(1)
421 01e8 8093 0000 sts NeuerDatensatzEmpfangen,r24
422 01ec 580F add r21,r24
423 01ee 5093 0000 sts AnzahlEmpfangsBytes,r21
424 01f2 5150 subi r21,lo8(-(-1))
425 01f4 E52F mov r30,r21
426 01f6 FF27 clr r31
427 01f8 E050 subi r30,lo8(-(RxdBuffer))
428 01fa F040 sbci r31,hi8(-(RxdBuffer))
429 01fc 8DE0 ldi r24,lo8(13)
430 01fe 8083 st Z,r24
431 0200 8091 0000 lds r24,RxdBuffer+2
432 0204 8235 cpi r24,lo8(82)
433 0206 01F0 breq .+2
434 0208 00C0 rjmp .L13
435 020a 88E1 ldi r24,lo8(24)
436 020c 90E0 ldi r25,hi8(24)
437 020e 2CE0 ldi r18,lo8(12)
438 /* #APP */
439 0210 0FB6 in __tmp_reg__,__SREG__
440 0212 F894 cli
441 0214 A895 wdr
442 0216 8093 6000 sts 96,r24
443 021a 0FBE out __SREG__,__tmp_reg__
444 021c 2093 6000 sts 96,r18
445
446 /* #NOAPP */
447 0220 3093 0000 sts ServoActive,r19
448 0224 00C0 rjmp .L13
449 .L24:
450 0226 2F5F subi r18,lo8(-(1))
451 0228 2093 0000 sts UartState.4,r18
452 022c E52F mov r30,r21
453 022e FF27 clr r31
454 0230 E050 subi r30,lo8(-(RxdBuffer))
455 0232 F040 sbci r31,hi8(-(RxdBuffer))
456 0234 8091 0000 lds r24,SioTmp
457 0238 8083 st Z,r24
458 .L32:
459 023a 5F5F subi r21,lo8(-(1))
460 023c 5093 0000 sts buf_ptr.3,r21
461 .L27:
462 0240 2091 0000 lds r18,SioTmp
463 0244 8091 0000 lds r24,crc.0
464 0248 9091 0000 lds r25,(crc.0)+1
465 024c 820F add r24,r18
466 024e 911D adc r25,__zero_reg__
467 .L31:
468 0250 9093 0000 sts (crc.0)+1,r25
469 0254 8093 0000 sts crc.0,r24
470 0258 00C0 rjmp .L13
471 .L25:
472 025a E52F mov r30,r21
473 025c FF27 clr r31
474 025e E050 subi r30,lo8(-(RxdBuffer))
475 0260 F040 sbci r31,hi8(-(RxdBuffer))
476 0262 8091 0000 lds r24,SioTmp
477 0266 8083 st Z,r24
478 0268 5639 cpi r21,lo8(-106)
479 026a 00F0 brlo .L32
480 026c 1092 0000 sts UartState.4,__zero_reg__
481 0270 00C0 rjmp .L27
482 .L34:
483 0272 892B or r24,r25
484 0274 01F0 breq .+2
485 0276 00C0 rjmp .L28
486 0278 8091 0000 lds r24,SioTmp
487 027c 8332 cpi r24,lo8(35)
488 027e 01F0 breq .L36
489 .L23:
490 0280 8091 0000 lds r24,SioTmp
491 0284 8093 0000 sts RxdBuffer,r24
492 0288 81E0 ldi r24,lo8(1)
493 028a 8093 0000 sts buf_ptr.3,r24
494 028e 8091 0000 lds r24,SioTmp
495 0292 9927 clr r25
496 0294 00C0 rjmp .L31
497 .L36:
498 0296 8091 0000 lds r24,NeuerDatensatzEmpfangen
499 029a 8823 tst r24
500 029c 01F4 brne .L23
501 029e 81E0 ldi r24,lo8(1)
502 02a0 8093 0000 sts UartState.4,r24
503 02a4 00C0 rjmp .L23
504 .L35:
505 02a6 8C91 ld r24,X
506 02a8 8217 cp r24,r18
507 02aa 01F0 breq .+2
508 02ac 00C0 rjmp .L16
509 02ae 91E0 ldi r25,lo8(1)
510 02b0 00C0 rjmp .L17
511 .L13:
512 /* epilogue: frame size=0 */
513 02b2 FF91 pop r31
514 02b4 EF91 pop r30
515 02b6 BF91 pop r27
516 02b8 AF91 pop r26
517 02ba 9F91 pop r25
518 02bc 8F91 pop r24
519 02be 5F91 pop r21
520 02c0 4F91 pop r20
521 02c2 3F91 pop r19
522 02c4 2F91 pop r18
523 02c6 0F90 pop __tmp_reg__
524 02c8 0FBE out __SREG__,__tmp_reg__
525 02ca 0F90 pop __tmp_reg__
526 02cc 1F90 pop __zero_reg__
527 02ce 1895 reti
528 /* epilogue end (size=15) */
529 /* function __vector_20 size 239 (209) */
531 .global AddCRC
533 AddCRC:
534 /* prologue: frame size=0 */
535 /* prologue end (size=0) */
536 02d0 AC01 movw r20,r24
537 02d2 A0E0 ldi r26,lo8(0)
538 02d4 B0E0 ldi r27,hi8(0)
539 02d6 9D01 movw r18,r26
540 02d8 A817 cp r26,r24
541 02da B907 cpc r27,r25
542 02dc 00F4 brsh .L43
543 02de E0E0 ldi r30,lo8(SendeBuffer)
544 02e0 F0E0 ldi r31,hi8(SendeBuffer)
545 .L41:
546 02e2 8191 ld r24,Z+
547 02e4 280F add r18,r24
548 02e6 311D adc r19,__zero_reg__
549 02e8 1196 adiw r26,1
550 02ea A417 cp r26,r20
551 02ec B507 cpc r27,r21
552 02ee 00F0 brlo .L41
553 .L43:
554 02f0 3F70 andi r19,hi8(4095)
555 02f2 FD01 movw r30,r26
556 02f4 E050 subi r30,lo8(-(SendeBuffer))
557 02f6 F040 sbci r31,hi8(-(SendeBuffer))
558 02f8 C901 movw r24,r18
559 02fa 0024 clr __tmp_reg__
560 02fc 880F lsl r24
561 02fe 991F rol r25
562 0300 001C rol __tmp_reg__
563 0302 880F lsl r24
564 0304 991F rol r25
565 0306 001C rol __tmp_reg__
566 0308 892F mov r24,r25
567 030a 902D mov r25,__tmp_reg__
568 030c 835C subi r24,lo8(-(61))
569 030e 8083 st Z,r24
570 0310 1196 adiw r26,1
571 0312 FD01 movw r30,r26
572 0314 E050 subi r30,lo8(-(SendeBuffer))
573 0316 F040 sbci r31,hi8(-(SendeBuffer))
574 0318 2F73 andi r18,lo8(63)
575 031a 3070 andi r19,hi8(63)
576 031c 822F mov r24,r18
577 031e 835C subi r24,lo8(-(61))
578 0320 8083 st Z,r24
579 0322 A050 subi r26,lo8(-(SendeBuffer+1))
580 0324 B040 sbci r27,hi8(-(SendeBuffer+1))
581 0326 8DE0 ldi r24,lo8(13)
582 0328 8C93 st X,r24
583 032a 1092 0000 sts UebertragungAbgeschlossen,__zero_reg__
584 032e 8091 0000 lds r24,SendeBuffer
585 0332 8093 C600 sts 198,r24
586 /* epilogue: frame size=0 */
587 0336 0895 ret
588 /* epilogue end (size=1) */
589 /* function AddCRC size 53 (52) */
591 .global SendOutData
593 SendOutData:
594 /* prologue: frame size=0 */
595 0338 A0E0 ldi r26,lo8(0)
596 033a B0E0 ldi r27,hi8(0)
597 033c E0E0 ldi r30,pm_lo8(1f)
598 033e F0E0 ldi r31,pm_hi8(1f)
599 0340 0C94 0000 jmp __prologue_saves__+18
600 1:
601 /* prologue end (size=6) */
602 0344 2C85 ldd r18,Y+12
603 0346 9D85 ldd r25,Y+13
604 0348 7E85 ldd r23,Y+14
605 034a BB24 clr r11
606 034c 83E2 ldi r24,lo8(35)
607 034e 8093 0000 sts SendeBuffer,r24
608 0352 9F59 subi r25,lo8(-(97))
609 0354 9093 0000 sts SendeBuffer+1,r25
610 0358 2093 0000 sts SendeBuffer+2,r18
611 035c 03E0 ldi r16,lo8(3)
612 035e 10E0 ldi r17,hi8(3)
613 0360 7723 tst r23
614 0362 01F4 brne .+2
615 0364 00C0 rjmp .L60
616 0366 CF84 ldd r12,Y+15
617 0368 D888 ldd r13,Y+16
618 036a 43E1 ldi r20,lo8(19)
619 036c E42E mov r14,r20
620 036e F12C mov r15,__zero_reg__
621 0370 EC0E add r14,r28
622 0372 FD1E adc r15,r29
623 0374 A989 ldd r26,Y+17
624 0376 BA89 ldd r27,Y+18
625 0378 7150 subi r23,lo8(-(-1))
626 037a 1097 sbiw r26,0
627 037c 01F4 brne .+2
628 037e 00C0 rjmp .L60
629 .L63:
630 0380 1097 sbiw r26,0
631 0382 01F4 brne .+2
632 0384 00C0 rjmp .L49
633 0386 F601 movw r30,r12
634 0388 EB0D add r30,r11
635 038a F11D adc r31,__zero_reg__
636 038c B394 inc r11
637 038e 9081 ld r25,Z
638 0390 1197 sbiw r26,1
639 0392 01F4 brne .L51
640 0394 7723 tst r23
641 0396 01F0 breq .L52
642 0398 F701 movw r30,r14
643 039a 22E0 ldi r18,lo8(2)
644 039c 30E0 ldi r19,hi8(2)
645 039e E20E add r14,r18
646 03a0 F31E adc r15,r19
647 03a2 D701 movw r26,r14
648 03a4 C080 ld r12,Z
649 03a6 D180 ldd r13,Z+1
650 03a8 E20E add r14,r18
651 03aa F31E adc r15,r19
652 03ac 0D90 ld __tmp_reg__,X+
653 03ae BC91 ld r27,X
654 03b0 A02D mov r26,__tmp_reg__
655 03b2 BB24 clr r11
656 03b4 7150 subi r23,lo8(-(-1))
657 .L51:
658 03b6 1097 sbiw r26,0
659 03b8 01F0 breq .L52
660 03ba F601 movw r30,r12
661 03bc EB0D add r30,r11
662 03be F11D adc r31,__zero_reg__
663 03c0 B394 inc r11
664 03c2 4081 ld r20,Z
665 03c4 1197 sbiw r26,1
666 03c6 01F4 brne .+2
667 03c8 00C0 rjmp .L62
668 .L54:
669 03ca 1097 sbiw r26,0
670 03cc 01F0 breq .L55
671 03ce F601 movw r30,r12
672 03d0 EB0D add r30,r11
673 03d2 F11D adc r31,__zero_reg__
674 03d4 B394 inc r11
675 03d6 6081 ld r22,Z
676 03d8 1197 sbiw r26,1
677 03da 01F4 brne .L57
678 03dc 7723 tst r23
679 03de 01F0 breq .L57
680 03e0 F701 movw r30,r14
681 03e2 3296 adiw r30,2
682 03e4 D701 movw r26,r14
683 03e6 CD90 ld r12,X+
684 03e8 DC90 ld r13,X
685 03ea 32E0 ldi r19,lo8(2)
686 03ec E32E mov r14,r19
687 03ee F12C mov r15,__zero_reg__
688 03f0 EE0E add r14,r30
689 03f2 FF1E adc r15,r31
690 03f4 A081 ld r26,Z
691 03f6 B181 ldd r27,Z+1
692 03f8 BB24 clr r11
693 03fa 7150 subi r23,lo8(-(-1))
694 03fc 00C0 rjmp .L57
695 .L49:
696 03fe 90E0 ldi r25,lo8(0)
697 .L52:
698 0400 40E0 ldi r20,lo8(0)
699 .L55:
700 0402 60E0 ldi r22,lo8(0)
701 .L57:
702 0404 F801 movw r30,r16
703 0406 E050 subi r30,lo8(-(SendeBuffer))
704 0408 F040 sbci r31,hi8(-(SendeBuffer))
705 040a 892F mov r24,r25
706 040c 8695 lsr r24
707 040e 8695 lsr r24
708 0410 835C subi r24,lo8(-(61))
709 0412 8083 st Z,r24
710 0414 0F5F subi r16,lo8(-(1))
711 0416 1F4F sbci r17,hi8(-(1))
712 0418 F801 movw r30,r16
713 041a E050 subi r30,lo8(-(SendeBuffer))
714 041c F040 sbci r31,hi8(-(SendeBuffer))
715 041e 892F mov r24,r25
716 0420 9927 clr r25
717 0422 8370 andi r24,lo8(3)
718 0424 9070 andi r25,hi8(3)
719 0426 8295 swap r24
720 0428 9295 swap r25
721 042a 907F andi r25,0xf0
722 042c 9827 eor r25,r24
723 042e 807F andi r24,0xf0
724 0430 9827 eor r25,r24
725 0432 5527 clr r21
726 0434 9A01 movw r18,r20
727 0436 3295 swap r19
728 0438 2295 swap r18
729 043a 2F70 andi r18,0x0f
730 043c 2327 eor r18,r19
731 043e 3F70 andi r19,0x0f
732 0440 2327 eor r18,r19
733 0442 822B or r24,r18
734 0444 835C subi r24,lo8(-(61))
735 0446 8083 st Z,r24
736 0448 0F5F subi r16,lo8(-(1))
737 044a 1F4F sbci r17,hi8(-(1))
738 044c F801 movw r30,r16
739 044e E050 subi r30,lo8(-(SendeBuffer))
740 0450 F040 sbci r31,hi8(-(SendeBuffer))
741 0452 4F70 andi r20,lo8(15)
742 0454 5070 andi r21,hi8(15)
743 0456 440F lsl r20
744 0458 551F rol r21
745 045a 440F lsl r20
746 045c 551F rol r21
747 045e 862F mov r24,r22
748 0460 9927 clr r25
749 0462 0024 clr __tmp_reg__
750 0464 880F lsl r24
751 0466 991F rol r25
752 0468 001C rol __tmp_reg__
753 046a 880F lsl r24
754 046c 991F rol r25
755 046e 001C rol __tmp_reg__
756 0470 892F mov r24,r25
757 0472 902D mov r25,__tmp_reg__
758 0474 842B or r24,r20
759 0476 835C subi r24,lo8(-(61))
760 0478 8083 st Z,r24
761 047a 0F5F subi r16,lo8(-(1))
762 047c 1F4F sbci r17,hi8(-(1))
763 047e F801 movw r30,r16
764 0480 E050 subi r30,lo8(-(SendeBuffer))
765 0482 F040 sbci r31,hi8(-(SendeBuffer))
766 0484 6F73 andi r22,lo8(63)
767 0486 635C subi r22,lo8(-(61))
768 0488 6083 st Z,r22
769 048a 0F5F subi r16,lo8(-(1))
770 048c 1F4F sbci r17,hi8(-(1))
771 048e 1097 sbiw r26,0
772 0490 01F0 breq .+2
773 0492 00C0 rjmp .L63
774 0494 00C0 rjmp .L60
775 .L62:
776 0496 7723 tst r23
777 0498 01F4 brne .+2
778 049a 00C0 rjmp .L55
779 049c F701 movw r30,r14
780 049e A2E0 ldi r26,lo8(2)
781 04a0 B0E0 ldi r27,hi8(2)
782 04a2 EA0E add r14,r26
783 04a4 FB1E adc r15,r27
784 04a6 D701 movw r26,r14
785 04a8 C080 ld r12,Z
786 04aa D180 ldd r13,Z+1
787 04ac 22E0 ldi r18,lo8(2)
788 04ae 30E0 ldi r19,hi8(2)
789 04b0 E20E add r14,r18
790 04b2 F31E adc r15,r19
791 04b4 0D90 ld __tmp_reg__,X+
792 04b6 BC91 ld r27,X
793 04b8 A02D mov r26,__tmp_reg__
794 04ba BB24 clr r11
795 04bc 7150 subi r23,lo8(-(-1))
796 04be 00C0 rjmp .L54
797 .L60:
798 04c0 C801 movw r24,r16
799 04c2 0E94 0000 call AddCRC
800 /* epilogue: frame size=0 */
801 04c6 E9E0 ldi r30,9
802 04c8 0C94 0000 jmp __epilogue_restores__+18
803 /* epilogue end (size=3) */
804 /* function SendOutData size 204 (195) */
806 .global Decode64
808 Decode64:
809 /* prologue: frame size=0 */
810 /* prologue end (size=0) */
811 04cc A3E0 ldi r26,lo8(3)
812 04ce 7A2F mov r23,r26
813 04d0 4091 0000 lds r20,AnzahlEmpfangsBytes
814 04d4 4650 subi r20,lo8(-(-6))
815 04d6 01F4 brne .+2
816 04d8 00C0 rjmp .L66
817 .L76:
818 04da E72F mov r30,r23
819 04dc FF27 clr r31
820 04de E050 subi r30,lo8(-(RxdBuffer))
821 04e0 F040 sbci r31,hi8(-(RxdBuffer))
822 04e2 8081 ld r24,Z
823 04e4 8D53 subi r24,lo8(-(-61))
824 04e6 7F5F subi r23,lo8(-(1))
825 04e8 E72F mov r30,r23
826 04ea FF27 clr r31
827 04ec E050 subi r30,lo8(-(RxdBuffer))
828 04ee F040 sbci r31,hi8(-(RxdBuffer))
829 04f0 2081 ld r18,Z
830 04f2 2D53 subi r18,lo8(-(-61))
831 04f4 7F5F subi r23,lo8(-(1))
832 04f6 E72F mov r30,r23
833 04f8 FF27 clr r31
834 04fa E050 subi r30,lo8(-(RxdBuffer))
835 04fc F040 sbci r31,hi8(-(RxdBuffer))
836 04fe 3081 ld r19,Z
837 0500 3D53 subi r19,lo8(-(-61))
838 0502 7F5F subi r23,lo8(-(1))
839 0504 E72F mov r30,r23
840 0506 FF27 clr r31
841 0508 E050 subi r30,lo8(-(RxdBuffer))
842 050a F040 sbci r31,hi8(-(RxdBuffer))
843 050c 6081 ld r22,Z
844 050e 6D53 subi r22,lo8(-(-61))
845 0510 7F5F subi r23,lo8(-(1))
846 0512 9927 clr r25
847 0514 880F lsl r24
848 0516 991F rol r25
849 0518 880F lsl r24
850 051a 991F rol r25
851 051c 522F mov r21,r18
852 051e 5295 swap r21
853 0520 5F70 andi r21,0x0f
854 0522 582B or r21,r24
855 0524 822F mov r24,r18
856 0526 9927 clr r25
857 0528 8F70 andi r24,lo8(15)
858 052a 9070 andi r25,hi8(15)
859 052c 8295 swap r24
860 052e 9295 swap r25
861 0530 907F andi r25,0xf0
862 0532 9827 eor r25,r24
863 0534 807F andi r24,0xf0
864 0536 9827 eor r25,r24
865 0538 232F mov r18,r19
866 053a 2695 lsr r18
867 053c 2695 lsr r18
868 053e 282B or r18,r24
869 0540 832F mov r24,r19
870 0542 9927 clr r25
871 0544 8370 andi r24,lo8(3)
872 0546 9070 andi r25,hi8(3)
873 0548 0024 clr __tmp_reg__
874 054a 9695 lsr r25
875 054c 8795 ror r24
876 054e 0794 ror __tmp_reg__
877 0550 9695 lsr r25
878 0552 8795 ror r24
879 0554 0794 ror __tmp_reg__
880 0556 982F mov r25,r24
881 0558 802D mov r24,__tmp_reg__
882 055a 682B or r22,r24
883 055c 4150 subi r20,lo8(-(-1))
884 055e 4F3F cpi r20,lo8(-1)
885 0560 01F0 breq .L66
886 0562 EA2F mov r30,r26
887 0564 FF27 clr r31
888 0566 E050 subi r30,lo8(-(RxdBuffer))
889 0568 F040 sbci r31,hi8(-(RxdBuffer))
890 056a 5083 st Z,r21
891 056c AF5F subi r26,lo8(-(1))
892 056e 4150 subi r20,lo8(-(-1))
893 0570 4F3F cpi r20,lo8(-1)
894 0572 01F0 breq .L66
895 0574 EA2F mov r30,r26
896 0576 FF27 clr r31
897 0578 E050 subi r30,lo8(-(RxdBuffer))
898 057a F040 sbci r31,hi8(-(RxdBuffer))
899 057c 2083 st Z,r18
900 057e AF5F subi r26,lo8(-(1))
901 0580 4150 subi r20,lo8(-(-1))
902 0582 4F3F cpi r20,lo8(-1)
903 0584 01F0 breq .L66
904 0586 EA2F mov r30,r26
905 0588 FF27 clr r31
906 058a E050 subi r30,lo8(-(RxdBuffer))
907 058c F040 sbci r31,hi8(-(RxdBuffer))
908 058e 6083 st Z,r22
909 0590 AF5F subi r26,lo8(-(1))
910 0592 4423 tst r20
911 0594 01F0 breq .+2
912 0596 00C0 rjmp .L76
913 .L66:
914 0598 80E0 ldi r24,lo8(RxdBuffer+3)
915 059a 90E0 ldi r25,hi8(RxdBuffer+3)
916 059c 9093 0000 sts (pRxData)+1,r25
917 05a0 8093 0000 sts pRxData,r24
918 05a4 A350 subi r26,lo8(-(-3))
919 05a6 A093 0000 sts RxDataLen,r26
920 /* epilogue: frame size=0 */
921 05aa 0895 ret
922 /* epilogue end (size=1) */
923 /* function Decode64 size 113 (112) */
925 .global BearbeiteRxDaten
927 BearbeiteRxDaten:
928 /* prologue: frame size=2 */
929 05ac A2E0 ldi r26,lo8(2)
930 05ae B0E0 ldi r27,hi8(2)
931 05b0 E0E0 ldi r30,pm_lo8(1f)
932 05b2 F0E0 ldi r31,pm_hi8(1f)
933 05b4 0C94 0000 jmp __prologue_saves__+30
934 1:
935 /* prologue end (size=6) */
936 05b8 8091 0000 lds r24,NeuerDatensatzEmpfangen
937 05bc 8823 tst r24
938 05be 01F4 brne .+2
939 05c0 00C0 rjmp .L77
940 05c2 0E94 0000 call Decode64
941 05c6 8091 0000 lds r24,RxdBuffer+1
942 05ca 8236 cpi r24,lo8(98)
943 05cc 01F0 breq .L143
944 .L115:
945 05ce 8091 0000 lds r24,RxdBuffer+2
946 05d2 9927 clr r25
947 05d4 AA27 clr r26
948 05d6 BB27 clr r27
949 05d8 FC01 movw r30,r24
950 05da EB54 subi r30,lo8(-(-75))
951 05dc F040 sbci r31,hi8(-(-75))
952 05de EC32 cpi r30,44
953 05e0 F105 cpc r31,__zero_reg__
954 05e2 00F4 brsh .L79
955 05e4 E050 subi r30,lo8(-(pm(.L137)))
956 05e6 F040 sbci r31,hi8(-(pm(.L137)))
957 05e8 0C94 0000 jmp __tablejump2__
958 .data
959 .section .progmem.gcc_sw_table, "a", @progbits
960 .p2align 1
961 .L137:
962 0000 0000 .word pm(.L123)
963 0002 0000 .word pm(.L79)
964 0004 0000 .word pm(.L79)
965 0006 0000 .word pm(.L79)
966 0008 0000 .word pm(.L79)
967 000a 0000 .word pm(.L79)
968 000c 0000 .word pm(.L79)
969 000e 0000 .word pm(.L79)
970 0010 0000 .word pm(.L79)
971 0012 0000 .word pm(.L79)
972 0014 0000 .word pm(.L79)
973 0016 0000 .word pm(.L79)
974 0018 0000 .word pm(.L79)
975 001a 0000 .word pm(.L79)
976 001c 0000 .word pm(.L79)
977 001e 0000 .word pm(.L79)
978 0020 0000 .word pm(.L79)
979 0022 0000 .word pm(.L79)
980 0024 0000 .word pm(.L79)
981 0026 0000 .word pm(.L79)
982 0028 0000 .word pm(.L79)
983 002a 0000 .word pm(.L79)
984 002c 0000 .word pm(.L124)
985 002e 0000 .word pm(.L126)
986 0030 0000 .word pm(.L127)
987 0032 0000 .word pm(.L130)
988 0034 0000 .word pm(.L79)
989 0036 0000 .word pm(.L79)
990 0038 0000 .word pm(.L136)
991 003a 0000 .word pm(.L132)
992 003c 0000 .word pm(.L79)
993 003e 0000 .word pm(.L79)
994 0040 0000 .word pm(.L79)
995 0042 0000 .word pm(.L134)
996 0044 0000 .word pm(.L79)
997 0046 0000 .word pm(.L79)
998 0048 0000 .word pm(.L79)
999 004a 0000 .word pm(.L79)
1000 004c 0000 .word pm(.L79)
1001 004e 0000 .word pm(.L79)
1002 0050 0000 .word pm(.L79)
1003 0052 0000 .word pm(.L117)
1004 0054 0000 .word pm(.L79)
1005 0056 0000 .word pm(.L135)
1006 .text
1007 .L132:
1008 05ec 8FEF ldi r24,lo8(-1)
1009 05ee 8093 0000 sts PcZugriff,r24
1010 05f2 E091 0000 lds r30,pRxData
1011 05f6 F091 0000 lds r31,(pRxData)+1
1012 05fa 8081 ld r24,Z
1013 05fc 9091 0000 lds r25,RemoteKeys
1014 0600 892B or r24,r25
1015 0602 8093 0000 sts RemoteKeys,r24
1016 0606 8823 tst r24
1017 0608 01F0 breq .L133
1018 060a 1092 0000 sts DisplayLine,__zero_reg__
1019 .L133:
1020 060e 81E0 ldi r24,lo8(1)
1021 0610 8093 0000 sts DebugDisplayAnforderung,r24
1022 .L79:
1023 0614 1092 0000 sts NeuerDatensatzEmpfangen,__zero_reg__
1024 0618 1092 0000 sts (pRxData)+1,__zero_reg__
1025 061c 1092 0000 sts pRxData,__zero_reg__
1026 0620 1092 0000 sts RxDataLen,__zero_reg__
1027 0624 00C0 rjmp .L77
1028 .L143:
1029 0626 8091 0000 lds r24,RxdBuffer+2
1030 062a 9927 clr r25
1031 062c 8037 cpi r24,112
1032 062e 9105 cpc r25,__zero_reg__
1033 0630 01F4 brne .+2
1034 0632 00C0 rjmp .L97
1035 0634 8137 cpi r24,113
1036 0636 9105 cpc r25,__zero_reg__
1037 0638 04F4 brge .+2
1038 063a 00C0 rjmp .L144
1039 063c 8337 cpi r24,115
1040 063e 9105 cpc r25,__zero_reg__
1041 0640 01F4 brne .+2
1042 0642 00C0 rjmp .L106
1043 0644 8437 cpi r24,116
1044 0646 9105 cpc r25,__zero_reg__
1045 0648 04F0 brlt .+2
1046 064a 00C0 rjmp .L114
1047 064c 8137 cpi r24,113
1048 064e 9105 cpc r25,__zero_reg__
1049 0650 01F0 breq .+2
1050 0652 00C0 rjmp .L115
1051 0654 A091 0000 lds r26,pRxData
1052 0658 B091 0000 lds r27,(pRxData)+1
1053 065c 8C91 ld r24,X
1054 065e 8F3F cpi r24,lo8(-1)
1055 0660 01F4 brne .+2
1056 0662 00C0 rjmp .L145
1057 .L99:
1058 0664 8C91 ld r24,X
1059 0666 8823 tst r24
1060 0668 01F0 breq .+2
1061 066a 00C0 rjmp .L100
1062 066c 81E0 ldi r24,lo8(1)
1063 .L140:
1064 066e 8C93 st X,r24
1065 0670 A091 0000 lds r26,pRxData
1066 0674 B091 0000 lds r27,(pRxData)+1
1067 .L101:
1068 0678 45E6 ldi r20,lo8(101)
1069 067a 60E0 ldi r22,lo8(EE_Parameter)
1070 067c 70E0 ldi r23,hi8(EE_Parameter)
1071 067e 8C91 ld r24,X
1072 0680 0E94 0000 call ReadParameterSet
1073 .L103:
1074 0684 8091 0000 lds r24,UebertragungAbgeschlossen
1075 0688 8823 tst r24
1076 068a 01F0 breq .L103
1077 068c E091 0000 lds r30,pRxData
1078 0690 F091 0000 lds r31,(pRxData)+1
1079 0694 8081 ld r24,Z
1080 0696 8983 std Y+1,r24
1081 0698 80E5 ldi r24,lo8(80)
1082 069a 8A83 std Y+2,r24
1083 069c 85E6 ldi r24,lo8(101)
1084 069e 90E0 ldi r25,hi8(101)
1085 06a0 9F93 push r25
1086 06a2 8F93 push r24
1087 06a4 80E0 ldi r24,lo8(EE_Parameter)
1088 06a6 90E0 ldi r25,hi8(EE_Parameter)
1089 06a8 9F93 push r25
1090 06aa 8F93 push r24
1091 06ac 21E0 ldi r18,lo8(1)
1092 06ae 30E0 ldi r19,hi8(1)
1093 06b0 3F93 push r19
1094 06b2 2F93 push r18
1095 06b4 CE01 movw r24,r28
1096 06b6 0296 adiw r24,2
1097 06b8 9F93 push r25
1098 06ba 8F93 push r24
1099 06bc 3F93 push r19
1100 06be 2F93 push r18
1101 06c0 CE01 movw r24,r28
1102 06c2 820F add r24,r18
1103 06c4 931F adc r25,r19
1104 06c6 9F93 push r25
1105 06c8 8F93 push r24
1106 06ca 83E0 ldi r24,lo8(3)
1107 06cc 8F93 push r24
1108 06ce 81E0 ldi r24,lo8(1)
1109 06d0 8F93 push r24
1110 06d2 81E5 ldi r24,lo8(81)
1111 06d4 8F93 push r24
1112 06d6 0E94 0000 call SendOutData
1113 06da ADB7 in r26,__SP_L__
1114 06dc BEB7 in r27,__SP_H__
1115 06de 1F96 adiw r26,15
1116 06e0 ADBF out __SP_L__,r26
1117 06e2 00C0 rjmp .L115
1118 .L144:
1119 06e4 8D36 cpi r24,109
1120 06e6 9105 cpc r25,__zero_reg__
1121 06e8 01F0 breq .L91
1122 06ea 8E36 cpi r24,110
1123 06ec 9105 cpc r25,__zero_reg__
1124 06ee 04F0 brlt .+2
1125 06f0 00C0 rjmp .L113
1126 06f2 8B34 cpi r24,75
1127 06f4 9105 cpc r25,__zero_reg__
1128 06f6 01F0 breq .+2
1129 06f8 00C0 rjmp .L115
1130 06fa A091 0000 lds r26,pRxData
1131 06fe B091 0000 lds r27,(pRxData)+1
1132 0702 8D91 ld r24,X+
1133 0704 9C91 ld r25,X
1134 0706 9093 0000 sts (KompassValue)+1,r25
1135 070a 8093 0000 sts KompassValue,r24
1136 070e 2091 0000 lds r18,KompassStartwert
1137 0712 3091 0000 lds r19,(KompassStartwert)+1
1138 0716 821B sub r24,r18
1139 0718 930B sbc r25,r19
1140 071a 845E subi r24,lo8(-(540))
1141 071c 9D4F sbci r25,hi8(-(540))
1142 071e 68E6 ldi r22,lo8(360)
1143 0720 71E0 ldi r23,hi8(360)
1144 0722 0E94 0000 call __divmodhi4
1145 0726 845B subi r24,lo8(-(-180))
1146 0728 9040 sbci r25,hi8(-(-180))
1147 072a 9093 0000 sts (KompassRichtung)+1,r25
1148 072e 8093 0000 sts KompassRichtung,r24
1149 0732 00C0 rjmp .L115
1150 .L91:
1151 0734 8091 0000 lds r24,UebertragungAbgeschlossen
1152 0738 8823 tst r24
1153 073a 01F0 breq .L91
1154 073c A091 0000 lds r26,pRxData
1155 0740 B091 0000 lds r27,(pRxData)+1
1156 0744 1C91 ld r17,X
1157 0746 1130 cpi r17,lo8(1)
1158 0748 01F4 brne .+2
1159 074a 00C0 rjmp .L146
1160 074c 1982 std Y+1,__zero_reg__
1161 .L96:
1162 074e 81E0 ldi r24,lo8(1)
1163 0750 90E0 ldi r25,hi8(1)
1164 0752 9F93 push r25
1165 0754 8F93 push r24
1166 0756 CE01 movw r24,r28
1167 0758 0196 adiw r24,1
1168 075a 9F93 push r25
1169 075c 8F93 push r24
1170 075e 81E0 ldi r24,lo8(1)
1171 0760 8F93 push r24
1172 0762 8F93 push r24
1173 0764 8DE4 ldi r24,lo8(77)
1174 .L141:
1175 0766 8F93 push r24
1176 0768 0E94 0000 call SendOutData
1177 076c 8DB7 in r24,__SP_L__
1178 076e 9EB7 in r25,__SP_H__
1179 0770 0796 adiw r24,7
1180 0772 8DBF out __SP_L__,r24
1181 0774 00C0 rjmp .L115
1182 .L135:
1183 0776 81E0 ldi r24,lo8(1)
1184 0778 8093 0000 sts GetVersionAnforderung,r24
1185 077c 00C0 rjmp .L79
1186 .L134:
1187 077e 8FEF ldi r24,lo8(-1)
1188 0780 8093 0000 sts PcZugriff,r24
1189 0784 E091 0000 lds r30,pRxData
1190 0788 F091 0000 lds r31,(pRxData)+1
1191 078c 8081 ld r24,Z
1192 078e 8093 0000 sts MenuePunkt,r24
1193 0792 81E0 ldi r24,lo8(1)
1194 0794 8093 0000 sts DebugDisplayAnforderung1,r24
1195 0798 00C0 rjmp .L79
1196 .L136:
1197 079a 81E0 ldi r24,lo8(1)
1198 079c 8093 0000 sts GetExternalControl,r24
1199 07a0 00C0 rjmp .L79
1200 .L130:
1201 07a2 E091 0000 lds r30,pRxData
1202 07a6 F091 0000 lds r31,(pRxData)+1
1203 07aa 9081 ld r25,Z
1204 07ac 8AE0 ldi r24,lo8(10)
1205 07ae 989F mul r25,r24
1206 07b0 C001 movw r24,r0
1207 07b2 1124 clr r1
1208 07b4 9093 0000 sts (DebugDataIntervall)+1,r25
1209 07b8 8093 0000 sts DebugDataIntervall,r24
1210 07bc 892B or r24,r25
1211 07be 01F4 brne .+2
1212 07c0 00C0 rjmp .L79
1213 07c2 81E0 ldi r24,lo8(1)
1214 07c4 8093 0000 sts DebugDataAnforderung,r24
1215 07c8 00C0 rjmp .L79
1216 .L127:
1217 07ca 8091 0000 lds r24,Intervall3D
1218 07ce 9091 0000 lds r25,(Intervall3D)+1
1219 07d2 892B or r24,r25
1220 07d4 01F0 breq .+2
1221 07d6 00C0 rjmp .L138
1222 07d8 A091 0000 lds r26,pRxData
1223 07dc B091 0000 lds r27,(pRxData)+1
1224 07e0 9C91 ld r25,X
1225 07e2 9923 tst r25
1226 07e4 01F0 breq .+2
1227 07e6 00C0 rjmp .L147
1228 .L128:
1229 07e8 9C91 ld r25,X
1230 07ea 8AE0 ldi r24,lo8(10)
1231 07ec 989F mul r25,r24
1232 07ee C001 movw r24,r0
1233 07f0 1124 clr r1
1234 07f2 9093 0000 sts (Intervall3D)+1,r25
1235 07f6 8093 0000 sts Intervall3D,r24
1236 07fa 00C0 rjmp .L79
1237 .L126:
1238 07fc A091 0000 lds r26,pRxData
1239 0800 B091 0000 lds r27,(pRxData)+1
1240 0804 8BE0 ldi r24,lo8(11)
1241 0806 E0E0 ldi r30,lo8(ExternControl)
1242 0808 F0E0 ldi r31,hi8(ExternControl)
1243 080a 0D90 ld __tmp_reg__,X+
1244 080c 0192 st Z+,__tmp_reg__
1245 080e 8A95 dec r24
1246 0810 01F4 brne .-8
1247 0812 8091 0000 lds r24,ExternControl+9
1248 0816 8093 0000 sts ConfirmFrame,r24
1249 .L142:
1250 081a 8FEF ldi r24,lo8(-1)
1251 081c 8093 0000 sts PcZugriff,r24
1252 0820 00C0 rjmp .L79
1253 .L124:
1254 0822 E091 0000 lds r30,pRxData
1255 0826 F091 0000 lds r31,(pRxData)+1
1256 082a E081 ld r30,Z
1257 082c E032 cpi r30,lo8(32)
1258 082e 00F4 brsh .+2
1259 0830 00C0 rjmp .L139
1260 0832 8FE1 ldi r24,lo8(31)
1261 0834 8093 0000 sts DebugTextAnforderung,r24
1262 0838 00C0 rjmp .L142
1263 .L123:
1264 083a E091 0000 lds r30,pRxData
1265 083e F091 0000 lds r31,(pRxData)+1
1266 0842 8081 ld r24,Z
1267 0844 9181 ldd r25,Z+1
1268 0846 9093 0000 sts (KompassValue)+1,r25
1269 084a 8093 0000 sts KompassValue,r24
1270 084e 2091 0000 lds r18,KompassStartwert
1271 0852 3091 0000 lds r19,(KompassStartwert)+1
1272 0856 821B sub r24,r18
1273 0858 930B sbc r25,r19
1274 085a 845E subi r24,lo8(-(540))
1275 085c 9D4F sbci r25,hi8(-(540))
1276 085e 68E6 ldi r22,lo8(360)
1277 0860 71E0 ldi r23,hi8(360)
1278 0862 0E94 0000 call __divmodhi4
1279 0866 845B subi r24,lo8(-(-180))
1280 0868 9040 sbci r25,hi8(-(-180))
1281 086a 9093 0000 sts (KompassRichtung)+1,r25
1282 086e 8093 0000 sts KompassRichtung,r24
1283 0872 00C0 rjmp .L79
1284 .L117:
1285 0874 8091 0000 lds r24,AnzahlEmpfangsBytes
1286 0878 8531 cpi r24,lo8(21)
1287 087a 00F4 brsh .+2
1288 087c 00C0 rjmp .L118
1289 087e E091 0000 lds r30,pRxData
1290 0882 F091 0000 lds r31,(pRxData)+1
1291 0886 80E1 ldi r24,lo8(16)
1292 0888 A0E0 ldi r26,lo8(MotorTest)
1293 088a B0E0 ldi r27,hi8(MotorTest)
1294 088c 0190 ld __tmp_reg__,Z+
1295 088e 0D92 st X+,__tmp_reg__
1296 0890 8A95 dec r24
1297 0892 01F4 brne .-8
1298 .L120:
1299 0894 8091 0000 lds r24,UebertragungAbgeschlossen
1300 0898 8823 tst r24
1301 089a 01F0 breq .L120
1302 089c 1F92 push __zero_reg__
1303 089e 8091 0000 lds r24,MeineSlaveAdresse
1304 08a2 8F93 push r24
1305 08a4 84E5 ldi r24,lo8(84)
1306 08a6 8F93 push r24
1307 08a8 0E94 0000 call SendOutData
1308 08ac 8AEF ldi r24,lo8(-6)
1309 08ae 8093 0000 sts PC_MotortestActive,r24
1310 08b2 8FEF ldi r24,lo8(-1)
1311 08b4 8093 0000 sts PcZugriff,r24
1312 08b8 0F90 pop __tmp_reg__
1313 08ba 0F90 pop __tmp_reg__
1314 08bc 0F90 pop __tmp_reg__
1315 08be 00C0 rjmp .L79
1316 .L97:
1317 08c0 81E0 ldi r24,lo8(1)
1318 08c2 8093 0000 sts GetPPMChannelAnforderung,r24
1319 08c6 00C0 rjmp .L115
1320 .L113:
1321 08c8 8E36 cpi r24,110
1322 08ca 9105 cpc r25,__zero_reg__
1323 08cc 01F0 breq .+2
1324 08ce 00C0 rjmp .L115
1325 .L87:
1326 08d0 8091 0000 lds r24,UebertragungAbgeschlossen
1327 08d4 8823 tst r24
1328 08d6 01F0 breq .L87
1329 08d8 8DE4 ldi r24,lo8(77)
1330 08da 90E0 ldi r25,hi8(77)
1331 08dc 9F93 push r25
1332 08de 8F93 push r24
1333 08e0 80E0 ldi r24,lo8(Mixer)
1334 08e2 90E0 ldi r25,hi8(Mixer)
1335 08e4 9F93 push r25
1336 08e6 8F93 push r24
1337 08e8 81E0 ldi r24,lo8(1)
1338 08ea 8F93 push r24
1339 08ec 8F93 push r24
1340 08ee 8EE4 ldi r24,lo8(78)
1341 08f0 00C0 rjmp .L141
1342 .L114:
1343 08f2 8437 cpi r24,116
1344 08f4 9105 cpc r25,__zero_reg__
1345 08f6 01F0 breq .+2
1346 08f8 00C0 rjmp .L115
1347 08fa 8091 0000 lds r24,AnzahlEmpfangsBytes
1348 08fe 8531 cpi r24,lo8(21)
1349 0900 00F4 brsh .+2
1350 0902 00C0 rjmp .L84
1351 0904 A091 0000 lds r26,pRxData
1352 0908 B091 0000 lds r27,(pRxData)+1
1353 090c 80E1 ldi r24,lo8(16)
1354 090e E0E0 ldi r30,lo8(MotorTest)
1355 0910 F0E0 ldi r31,hi8(MotorTest)
1356 0912 0D90 ld __tmp_reg__,X+
1357 0914 0192 st Z+,__tmp_reg__
1358 0916 8A95 dec r24
1359 0918 01F4 brne .-8
1360 .L85:
1361 091a 80EF ldi r24,lo8(-16)
1362 091c 8093 0000 sts PC_MotortestActive,r24
1363 0920 8FEF ldi r24,lo8(-1)
1364 0922 8093 0000 sts PcZugriff,r24
1365 0926 00C0 rjmp .L115
1366 .L106:
1367 0928 2091 0000 lds r18,pRxData
1368 092c 3091 0000 lds r19,(pRxData)+1
1369 0930 F901 movw r30,r18
1370 0932 8081 ld r24,Z
1371 0934 8150 subi r24,lo8(-(-1))
1372 0936 8530 cpi r24,lo8(5)
1373 0938 00F4 brsh .L107
1374 093a 8181 ldd r24,Z+1
1375 093c 8035 cpi r24,lo8(80)
1376 093e 01F0 breq .L148
1377 .L107:
1378 0940 1982 std Y+1,__zero_reg__
1379 .L109:
1380 0942 8091 0000 lds r24,UebertragungAbgeschlossen
1381 0946 8823 tst r24
1382 0948 01F0 breq .L109
1383 094a 81E0 ldi r24,lo8(1)
1384 094c 90E0 ldi r25,hi8(1)
1385 094e 9F93 push r25
1386 0950 8F93 push r24
1387 0952 CE01 movw r24,r28
1388 0954 0196 adiw r24,1
1389 0956 9F93 push r25
1390 0958 8F93 push r24
1391 095a 81E0 ldi r24,lo8(1)
1392 095c 8F93 push r24
1393 095e 8F93 push r24
1394 0960 83E5 ldi r24,lo8(83)
1395 0962 8F93 push r24
1396 0964 0E94 0000 call SendOutData
1397 0968 EDB7 in r30,__SP_L__
1398 096a FEB7 in r31,__SP_H__
1399 096c 3796 adiw r30,7
1400 096e EDBF out __SP_L__,r30
1401 0970 00C0 rjmp .L115
1402 .L148:
1403 0972 60E0 ldi r22,lo8(EE_Parameter)
1404 0974 70E0 ldi r23,hi8(EE_Parameter)
1405 0976 85E6 ldi r24,lo8(101)
1406 0978 2E5F subi r18,lo8(-(2))
1407 097a 3F4F sbci r19,hi8(-(2))
1408 097c DB01 movw r26,r22
1409 097e F901 movw r30,r18
1410 0980 982F mov r25,r24
1411 0982 0190 ld __tmp_reg__,Z+
1412 0984 0D92 st X+,__tmp_reg__
1413 0986 9A95 dec r25
1414 0988 01F4 brne .-8
1415 098a 2250 subi r18,lo8(-(-2))
1416 098c 3040 sbci r19,hi8(-(-2))
1417 098e 482F mov r20,r24
1418 0990 D901 movw r26,r18
1419 0992 8C91 ld r24,X
1420 0994 0E94 0000 call WriteParameterSet
1421 0998 8091 0000 lds r24,EE_Parameter+54
1422 099c 9927 clr r25
1423 099e AA27 clr r26
1424 09a0 BB27 clr r27
1425 09a2 BC01 movw r22,r24
1426 09a4 CD01 movw r24,r26
1427 09a6 24EC ldi r18,lo8(2500)
1428 09a8 39E0 ldi r19,hi8(2500)
1429 09aa 40E0 ldi r20,hlo8(2500)
1430 09ac 50E0 ldi r21,hhi8(2500)
1431 09ae 0E94 0000 call __mulsi3
1432 09b2 DC01 movw r26,r24
1433 09b4 CB01 movw r24,r22
1434 09b6 8093 0000 sts Umschlag180Nick,r24
1435 09ba 9093 0000 sts (Umschlag180Nick)+1,r25
1436 09be A093 0000 sts (Umschlag180Nick)+2,r26
1437 09c2 B093 0000 sts (Umschlag180Nick)+3,r27
1438 09c6 8091 0000 lds r24,EE_Parameter+55
1439 09ca 9927 clr r25
1440 09cc AA27 clr r26
1441 09ce BB27 clr r27
1442 09d0 BC01 movw r22,r24
1443 09d2 CD01 movw r24,r26
1444 09d4 0E94 0000 call __mulsi3
1445 09d8 DC01 movw r26,r24
1446 09da CB01 movw r24,r22
1447 09dc 8093 0000 sts Umschlag180Roll,r24
1448 09e0 9093 0000 sts (Umschlag180Roll)+1,r25
1449 09e4 A093 0000 sts (Umschlag180Roll)+2,r26
1450 09e8 B093 0000 sts (Umschlag180Roll)+3,r27
1451 09ec E091 0000 lds r30,pRxData
1452 09f0 F091 0000 lds r31,(pRxData)+1
1453 09f4 8081 ld r24,Z
1454 09f6 0E94 0000 call SetActiveParamSetNumber
1455 09fa 0E94 0000 call GetActiveParamSetNumber
1456 09fe 8983 std Y+1,r24
1457 0a00 80E0 ldi r24,lo8(0)
1458 0a02 0E94 0000 call LipoDetection
1459 0a06 6EE6 ldi r22,lo8(110)
1460 0a08 70E0 ldi r23,hi8(110)
1461 0a0a 8981 ldd r24,Y+1
1462 0a0c 0E94 0000 call Piep
1463 0a10 00C0 rjmp .L109
1464 .L147:
1465 0a12 8AE0 ldi r24,lo8(10)
1466 0a14 989F mul r25,r24
1467 0a16 C001 movw r24,r0
1468 0a18 1124 clr r1
1469 0a1a 0E94 0000 call SetDelay
1470 0a1e 9093 0000 sts (Timer3D)+1,r25
1471 0a22 8093 0000 sts Timer3D,r24
1472 .L138:
1473 0a26 A091 0000 lds r26,pRxData
1474 0a2a B091 0000 lds r27,(pRxData)+1
1475 0a2e 00C0 rjmp .L128
1476 .L118:
1477 0a30 E091 0000 lds r30,pRxData
1478 0a34 F091 0000 lds r31,(pRxData)+1
1479 0a38 8081 ld r24,Z
1480 0a3a 9181 ldd r25,Z+1
1481 0a3c A281 ldd r26,Z+2
1482 0a3e B381 ldd r27,Z+3
1483 0a40 8093 0000 sts MotorTest,r24
1484 0a44 9093 0000 sts (MotorTest)+1,r25
1485 0a48 A093 0000 sts (MotorTest)+2,r26
1486 0a4c B093 0000 sts (MotorTest)+3,r27
1487 0a50 00C0 rjmp .L120
1488 .L139:
1489 0a52 E093 0000 sts DebugTextAnforderung,r30
1490 0a56 00C0 rjmp .L142
1491 .L84:
1492 0a58 A091 0000 lds r26,pRxData
1493 0a5c B091 0000 lds r27,(pRxData)+1
1494 0a60 8D91 ld r24,X+
1495 0a62 9D91 ld r25,X+
1496 0a64 0D90 ld __tmp_reg__,X+
1497 0a66 BC91 ld r27,X
1498 0a68 A02D mov r26,__tmp_reg__
1499 0a6a 8093 0000 sts MotorTest,r24
1500 0a6e 9093 0000 sts (MotorTest)+1,r25
1501 0a72 A093 0000 sts (MotorTest)+2,r26
1502 0a76 B093 0000 sts (MotorTest)+3,r27
1503 0a7a 00C0 rjmp .L85
1504 .L100:
1505 0a7c 8630 cpi r24,lo8(6)
1506 0a7e 00F4 brsh .+2
1507 0a80 00C0 rjmp .L101
1508 0a82 85E0 ldi r24,lo8(5)
1509 0a84 00C0 rjmp .L140
1510 .L146:
1511 0a86 60E0 ldi r22,lo8(Mixer)
1512 0a88 70E0 ldi r23,hi8(Mixer)
1513 0a8a 8DE4 ldi r24,lo8(77)
1514 0a8c FB01 movw r30,r22
1515 0a8e 0D90 ld __tmp_reg__,X+
1516 0a90 0192 st Z+,__tmp_reg__
1517 0a92 8A95 dec r24
1518 0a94 01F4 brne .-8
1519 0a96 20E0 ldi r18,lo8(pm(eeprom_write_byte))
1520 0a98 30E0 ldi r19,hi8(pm(eeprom_write_byte))
1521 0a9a 4DE4 ldi r20,lo8(77)
1522 0a9c 50E0 ldi r21,hi8(77)
1523 0a9e 80E0 ldi r24,lo8(EEPromArray+1000)
1524 0aa0 90E0 ldi r25,hi8(EEPromArray+1000)
1525 0aa2 0E94 0000 call __eewr_block
1526 0aa6 1983 std Y+1,r17
1527 0aa8 00C0 rjmp .L96
1528 .L145:
1529 0aaa 0E94 0000 call GetActiveParamSetNumber
1530 0aae E091 0000 lds r30,pRxData
1531 0ab2 F091 0000 lds r31,(pRxData)+1
1532 0ab6 8083 st Z,r24
1533 0ab8 A091 0000 lds r26,pRxData
1534 0abc B091 0000 lds r27,(pRxData)+1
1535 0ac0 00C0 rjmp .L99
1536 .L77:
1537 /* epilogue: frame size=2 */
1538 0ac2 E3E0 ldi r30,3
1539 0ac4 CE5F subi r28,-2
1540 0ac6 0C94 0000 jmp __epilogue_restores__+30
1541 /* epilogue end (size=4) */
1542 /* function BearbeiteRxDaten size 699 (689) */
1544 .global uart_putchar
1546 uart_putchar:
1547 /* prologue: frame size=0 */
1548 0aca CF93 push r28
1549 /* prologue end (size=1) */
1550 0acc C82F mov r28,r24
1551 0ace 8A30 cpi r24,lo8(10)
1552 0ad0 01F0 breq .L155
1553 .L152:
1554 0ad2 8091 C000 lds r24,192
1555 0ad6 85FF sbrs r24,5
1556 0ad8 00C0 rjmp .L152
1557 0ada 00C0 rjmp .L156
1558 .L155:
1559 0adc 8DE0 ldi r24,lo8(13)
1560 0ade 0E94 0000 call uart_putchar
1561 0ae2 00C0 rjmp .L152
1562 .L156:
1563 0ae4 C093 C600 sts 198,r28
1564 0ae8 80E0 ldi r24,lo8(0)
1565 0aea 90E0 ldi r25,hi8(0)
1566 /* epilogue: frame size=0 */
1567 0aec CF91 pop r28
1568 0aee 0895 ret
1569 /* epilogue end (size=2) */
1570 /* function uart_putchar size 19 (16) */
1572 .global DatenUebertragung
1574 DatenUebertragung:
1575 /* prologue: frame size=0 */
1576 0af0 EF92 push r14
1577 0af2 FF92 push r15
1578 0af4 0F93 push r16
1579 0af6 1F93 push r17
1580 /* prologue end (size=4) */
1581 0af8 8091 0000 lds r24,UebertragungAbgeschlossen
1582 0afc 8823 tst r24
1583 0afe 01F4 brne .+2
1584 0b00 00C0 rjmp .L157
1585 0b02 8091 0000 lds r24,DebugDisplayAnforderung
1586 0b06 8823 tst r24
1587 0b08 01F0 breq .+2
1588 0b0a 00C0 rjmp .L175
1589 .L159:
1590 0b0c 8091 0000 lds r24,DebugDisplayAnforderung1
1591 0b10 8823 tst r24
1592 0b12 01F0 breq .L161
1593 0b14 8091 0000 lds r24,UebertragungAbgeschlossen
1594 0b18 8823 tst r24
1595 0b1a 01F0 breq .+2
1596 0b1c 00C0 rjmp .L176
1597 .L161:
1598 0b1e 8091 0000 lds r24,GetVersionAnforderung
1599 0b22 8823 tst r24
1600 0b24 01F0 breq .L162
1601 0b26 8091 0000 lds r24,UebertragungAbgeschlossen
1602 0b2a 8823 tst r24
1603 0b2c 01F0 breq .+2
1604 0b2e 00C0 rjmp .L177
1605 .L162:
1606 0b30 8091 0000 lds r24,GetExternalControl
1607 0b34 8823 tst r24
1608 0b36 01F0 breq .L163
1609 0b38 8091 0000 lds r24,UebertragungAbgeschlossen
1610 0b3c 8823 tst r24
1611 0b3e 01F0 breq .+2
1612 0b40 00C0 rjmp .L178
1613 .L163:
1614 0b42 8091 0000 lds r24,Kompass_Timer
1615 0b46 9091 0000 lds r25,(Kompass_Timer)+1
1616 0b4a 0E94 0000 call CheckDelay
1617 0b4e 8823 tst r24
1618 0b50 01F0 breq .L164
1619 0b52 8091 0000 lds r24,UebertragungAbgeschlossen
1620 0b56 8823 tst r24
1621 0b58 01F0 breq .+2
1622 0b5a 00C0 rjmp .L179
1623 .L164:
1624 0b5c 8091 0000 lds r24,DebugDataIntervall
1625 0b60 9091 0000 lds r25,(DebugDataIntervall)+1
1626 0b64 892B or r24,r25
1627 0b66 01F0 breq .+2
1628 0b68 00C0 rjmp .L180
1629 .L168:
1630 0b6a 8091 0000 lds r24,DebugDataAnforderung
1631 0b6e 8823 tst r24
1632 0b70 01F0 breq .L166
1633 .L167:
1634 0b72 8091 0000 lds r24,UebertragungAbgeschlossen
1635 0b76 8823 tst r24
1636 0b78 01F0 breq .+2
1637 0b7a 00C0 rjmp .L181
1638 .L166:
1639 0b7c 8091 0000 lds r24,Intervall3D
1640 0b80 9091 0000 lds r25,(Intervall3D)+1
1641 0b84 892B or r24,r25
1642 0b86 01F0 breq .+2
1643 0b88 00C0 rjmp .L182
1644 .L170:
1645 0b8a 2091 0000 lds r18,DebugTextAnforderung
1646 0b8e 2F3F cpi r18,lo8(-1)
1647 0b90 01F0 breq .L171
1648 0b92 80E1 ldi r24,lo8(16)
1649 0b94 90E0 ldi r25,hi8(16)
1650 0b96 9F93 push r25
1651 0b98 8F93 push r24
1652 0b9a 822F mov r24,r18
1653 0b9c 9927 clr r25
1654 0b9e 8295 swap r24
1655 0ba0 9295 swap r25
1656 0ba2 907F andi r25,0xf0
1657 0ba4 9827 eor r25,r24
1658 0ba6 807F andi r24,0xf0
1659 0ba8 9827 eor r25,r24
1660 0baa 8050 subi r24,lo8(-(ANALOG_TEXT))
1661 0bac 9040 sbci r25,hi8(-(ANALOG_TEXT))
1662 0bae 9F93 push r25
1663 0bb0 8F93 push r24
1664 0bb2 81E0 ldi r24,lo8(1)
1665 0bb4 90E0 ldi r25,hi8(1)
1666 0bb6 9F93 push r25
1667 0bb8 8F93 push r24
1668 0bba 80E0 ldi r24,lo8(DebugTextAnforderung)
1669 0bbc 90E0 ldi r25,hi8(DebugTextAnforderung)
1670 0bbe 9F93 push r25
1671 0bc0 8F93 push r24
1672 0bc2 82E0 ldi r24,lo8(2)
1673 0bc4 8F93 push r24
1674 0bc6 81E0 ldi r24,lo8(1)
1675 0bc8 8F93 push r24
1676 0bca 81E4 ldi r24,lo8(65)
1677 0bcc 8F93 push r24
1678 0bce 0E94 0000 call SendOutData
1679 0bd2 8FEF ldi r24,lo8(-1)
1680 0bd4 8093 0000 sts DebugTextAnforderung,r24
1681 0bd8 8DB7 in r24,__SP_L__
1682 0bda 9EB7 in r25,__SP_H__
1683 0bdc 0B96 adiw r24,11
1684 0bde 8DBF out __SP_L__,r24
1685 .L171:
1686 0be0 8091 0000 lds r24,ConfirmFrame
1687 0be4 8823 tst r24
1688 0be6 01F0 breq .L172
1689 0be8 8091 0000 lds r24,UebertragungAbgeschlossen
1690 0bec 8823 tst r24
1691 0bee 01F0 breq .+2
1692 0bf0 00C0 rjmp .L183
1693 .L172:
1694 0bf2 8091 0000 lds r24,GetPPMChannelAnforderung
1695 0bf6 8823 tst r24
1696 0bf8 01F4 brne .+2
1697 0bfa 00C0 rjmp .L157
1698 0bfc 8091 0000 lds r24,UebertragungAbgeschlossen
1699 0c00 8823 tst r24
1700 0c02 01F4 brne .+2
1701 0c04 00C0 rjmp .L157
1702 0c06 00C0 rjmp .L184
1703 .L175:
1704 0c08 8091 0000 lds r24,UebertragungAbgeschlossen
1705 0c0c 8823 tst r24
1706 0c0e 01F4 brne .+2
1707 0c10 00C0 rjmp .L159
1708 0c12 0E94 0000 call Menu
1709 0c16 84E1 ldi r24,lo8(20)
1710 0c18 90E0 ldi r25,hi8(20)
1711 0c1a 9F93 push r25
1712 0c1c 8F93 push r24
1713 0c1e 9091 0000 lds r25,DisplayLine
1714 0c22 84E1 ldi r24,lo8(20)
1715 0c24 989F mul r25,r24
1716 0c26 C001 movw r24,r0
1717 0c28 1124 clr r1
1718 0c2a 8050 subi r24,lo8(-(DisplayBuff))
1719 0c2c 9040 sbci r25,hi8(-(DisplayBuff))
1720 0c2e 9F93 push r25
1721 0c30 8F93 push r24
1722 0c32 81E0 ldi r24,lo8(1)
1723 0c34 90E0 ldi r25,hi8(1)
1724 0c36 9F93 push r25
1725 0c38 8F93 push r24
1726 0c3a 80E0 ldi r24,lo8(DisplayLine)
1727 0c3c 90E0 ldi r25,hi8(DisplayLine)
1728 0c3e 9F93 push r25
1729 0c40 8F93 push r24
1730 0c42 82E0 ldi r24,lo8(2)
1731 0c44 8F93 push r24
1732 0c46 81E0 ldi r24,lo8(1)
1733 0c48 8F93 push r24
1734 0c4a 88E4 ldi r24,lo8(72)
1735 0c4c 8F93 push r24
1736 0c4e 0E94 0000 call SendOutData
1737 0c52 8091 0000 lds r24,DisplayLine
1738 0c56 8F5F subi r24,lo8(-(1))
1739 0c58 2DB7 in r18,__SP_L__
1740 0c5a 3EB7 in r19,__SP_H__
1741 0c5c 255F subi r18,lo8(-(11))
1742 0c5e 3F4F sbci r19,hi8(-(11))
1743 0c60 2DBF out __SP_L__,r18
1744 0c62 8430 cpi r24,lo8(4)
1745 0c64 00F4 brsh .+2
1746 0c66 00C0 rjmp .L174
1747 0c68 1092 0000 sts DisplayLine,__zero_reg__
1748 0c6c 1092 0000 sts DebugDisplayAnforderung,__zero_reg__
1749 0c70 00C0 rjmp .L159
1750 .L184:
1751 0c72 86E1 ldi r24,lo8(22)
1752 0c74 90E0 ldi r25,hi8(22)
1753 0c76 9F93 push r25
1754 0c78 8F93 push r24
1755 0c7a 80E0 ldi r24,lo8(PPM_in)
1756 0c7c 90E0 ldi r25,hi8(PPM_in)
1757 0c7e 9F93 push r25
1758 0c80 8F93 push r24
1759 0c82 81E0 ldi r24,lo8(1)
1760 0c84 8F93 push r24
1761 0c86 8F93 push r24
1762 0c88 80E5 ldi r24,lo8(80)
1763 0c8a 8F93 push r24
1764 0c8c 0E94 0000 call SendOutData
1765 0c90 1092 0000 sts GetPPMChannelAnforderung,__zero_reg__
1766 0c94 8DB7 in r24,__SP_L__
1767 0c96 9EB7 in r25,__SP_H__
1768 0c98 0796 adiw r24,7
1769 0c9a 8DBF out __SP_L__,r24
1770 0c9c 00C0 rjmp .L157
1771 .L183:
1772 0c9e 81E0 ldi r24,lo8(1)
1773 0ca0 90E0 ldi r25,hi8(1)
1774 0ca2 9F93 push r25
1775 0ca4 8F93 push r24
1776 0ca6 80E0 ldi r24,lo8(ConfirmFrame)
1777 0ca8 90E0 ldi r25,hi8(ConfirmFrame)
1778 0caa 9F93 push r25
1779 0cac 8F93 push r24
1780 0cae 81E0 ldi r24,lo8(1)
1781 0cb0 8F93 push r24
1782 0cb2 8F93 push r24
1783 0cb4 82E4 ldi r24,lo8(66)
1784 0cb6 8F93 push r24
1785 0cb8 0E94 0000 call SendOutData
1786 0cbc 1092 0000 sts ConfirmFrame,__zero_reg__
1787 0cc0 2DB7 in r18,__SP_L__
1788 0cc2 3EB7 in r19,__SP_H__
1789 0cc4 295F subi r18,lo8(-(7))
1790 0cc6 3F4F sbci r19,hi8(-(7))
1791 0cc8 2DBF out __SP_L__,r18
1792 0cca 00C0 rjmp .L172
1793 .L179:
1794 0ccc 8091 0000 lds r24,EE_Parameter+23
1795 0cd0 9927 clr r25
1796 0cd2 880F lsl r24
1797 0cd4 991F rol r25
1798 0cd6 880F lsl r24
1799 0cd8 991F rol r25
1800 0cda 7C01 movw r14,r24
1801 0cdc 0027 clr r16
1802 0cde F7FC sbrc r15,7
1803 0ce0 0095 com r16
1804 0ce2 102F mov r17,r16
1805 0ce4 8091 0000 lds r24,IntegralNick
1806 0ce8 9091 0000 lds r25,(IntegralNick)+1
1807 0cec A091 0000 lds r26,(IntegralNick)+2
1808 0cf0 B091 0000 lds r27,(IntegralNick)+3
1809 0cf4 BC01 movw r22,r24
1810 0cf6 CD01 movw r24,r26
1811 0cf8 A801 movw r20,r16
1812 0cfa 9701 movw r18,r14
1813 0cfc 0E94 0000 call __divmodsi4
1814 0d00 3093 0000 sts (WinkelOut)+1,r19
1815 0d04 2093 0000 sts WinkelOut,r18
1816 0d08 8091 0000 lds r24,IntegralRoll
1817 0d0c 9091 0000 lds r25,(IntegralRoll)+1
1818 0d10 A091 0000 lds r26,(IntegralRoll)+2
1819 0d14 B091 0000 lds r27,(IntegralRoll)+3
1820 0d18 BC01 movw r22,r24
1821 0d1a CD01 movw r24,r26
1822 0d1c A801 movw r20,r16
1823 0d1e 9701 movw r18,r14
1824 0d20 0E94 0000 call __divmodsi4
1825 0d24 3093 0000 sts (WinkelOut+2)+1,r19
1826 0d28 2093 0000 sts WinkelOut+2,r18
1827 0d2c 8091 0000 lds r24,Parameter_UserParam1
1828 0d30 8093 0000 sts WinkelOut+4,r24
1829 0d34 8091 0000 lds r24,Parameter_UserParam2
1830 0d38 8093 0000 sts WinkelOut+5,r24
1831 0d3c 88E0 ldi r24,lo8(8)
1832 0d3e 90E0 ldi r25,hi8(8)
1833 0d40 9F93 push r25
1834 0d42 8F93 push r24
1835 0d44 80E0 ldi r24,lo8(WinkelOut)
1836 0d46 90E0 ldi r25,hi8(WinkelOut)
1837 0d48 9F93 push r25
1838 0d4a 8F93 push r24
1839 0d4c 81E0 ldi r24,lo8(1)
1840 0d4e 8F93 push r24
1841 0d50 83E0 ldi r24,lo8(3)
1842 0d52 8F93 push r24
1843 0d54 87E7 ldi r24,lo8(119)
1844 0d56 8F93 push r24
1845 0d58 0E94 0000 call SendOutData
1846 0d5c 8091 0000 lds r24,WinkelOut+6
1847 0d60 2DB7 in r18,__SP_L__
1848 0d62 3EB7 in r19,__SP_H__
1849 0d64 295F subi r18,lo8(-(7))
1850 0d66 3F4F sbci r19,hi8(-(7))
1851 0d68 2DBF out __SP_L__,r18
1852 0d6a 8530 cpi r24,lo8(5)
1853 0d6c 00F0 brlo .L165
1854 0d6e 86E0 ldi r24,lo8(6)
1855 0d70 8093 0000 sts WinkelOut+6,r24
1856 .L165:
1857 0d74 83E6 ldi r24,lo8(99)
1858 0d76 90E0 ldi r25,hi8(99)
1859 0d78 0E94 0000 call SetDelay
1860 0d7c 9093 0000 sts (Kompass_Timer)+1,r25
1861 0d80 8093 0000 sts Kompass_Timer,r24
1862 0d84 00C0 rjmp .L164
1863 .L178:
1864 0d86 8BE0 ldi r24,lo8(11)
1865 0d88 90E0 ldi r25,hi8(11)
1866 0d8a 9F93 push r25
1867 0d8c 8F93 push r24
1868 0d8e 80E0 ldi r24,lo8(ExternControl)
1869 0d90 90E0 ldi r25,hi8(ExternControl)
1870 0d92 9F93 push r25
1871 0d94 8F93 push r24
1872 0d96 81E0 ldi r24,lo8(1)
1873 0d98 8F93 push r24
1874 0d9a 8091 0000 lds r24,MeineSlaveAdresse
1875 0d9e 8F93 push r24
1876 0da0 87E4 ldi r24,lo8(71)
1877 0da2 8F93 push r24
1878 0da4 0E94 0000 call SendOutData
1879 0da8 1092 0000 sts GetExternalControl,__zero_reg__
1880 0dac 8DB7 in r24,__SP_L__
1881 0dae 9EB7 in r25,__SP_H__
1882 0db0 0796 adiw r24,7
1883 0db2 8DBF out __SP_L__,r24
1884 0db4 00C0 rjmp .L163
1885 .L177:
1886 0db6 8AE0 ldi r24,lo8(10)
1887 0db8 90E0 ldi r25,hi8(10)
1888 0dba 9F93 push r25
1889 0dbc 8F93 push r24
1890 0dbe 80E0 ldi r24,lo8(VersionInfo)
1891 0dc0 90E0 ldi r25,hi8(VersionInfo)
1892 0dc2 9F93 push r25
1893 0dc4 8F93 push r24
1894 0dc6 81E0 ldi r24,lo8(1)
1895 0dc8 8F93 push r24
1896 0dca 8F93 push r24
1897 0dcc 86E5 ldi r24,lo8(86)
1898 0dce 8F93 push r24
1899 0dd0 0E94 0000 call SendOutData
1900 0dd4 1092 0000 sts GetVersionAnforderung,__zero_reg__
1901 0dd8 2DB7 in r18,__SP_L__
1902 0dda 3EB7 in r19,__SP_H__
1903 0ddc 295F subi r18,lo8(-(7))
1904 0dde 3F4F sbci r19,hi8(-(7))
1905 0de0 2DBF out __SP_L__,r18
1906 0de2 00C0 rjmp .L162
1907 .L176:
1908 0de4 0E94 0000 call Menu
1909 0de8 80E5 ldi r24,lo8(80)
1910 0dea 90E0 ldi r25,hi8(80)
1911 0dec 9F93 push r25
1912 0dee 8F93 push r24
1913 0df0 80E0 ldi r24,lo8(DisplayBuff)
1914 0df2 90E0 ldi r25,hi8(DisplayBuff)
1915 0df4 9F93 push r25
1916 0df6 8F93 push r24
1917 0df8 21E0 ldi r18,lo8(1)
1918 0dfa 30E0 ldi r19,hi8(1)
1919 0dfc 3F93 push r19
1920 0dfe 2F93 push r18
1921 0e00 80E0 ldi r24,lo8(MaxMenue)
1922 0e02 90E0 ldi r25,hi8(MaxMenue)
1923 0e04 9F93 push r25
1924 0e06 8F93 push r24
1925 0e08 3F93 push r19
1926 0e0a 2F93 push r18
1927 0e0c 80E0 ldi r24,lo8(MenuePunkt)
1928 0e0e 90E0 ldi r25,hi8(MenuePunkt)
1929 0e10 9F93 push r25
1930 0e12 8F93 push r24
1931 0e14 83E0 ldi r24,lo8(3)
1932 0e16 8F93 push r24
1933 0e18 81E0 ldi r24,lo8(1)
1934 0e1a 8F93 push r24
1935 0e1c 8CE4 ldi r24,lo8(76)
1936 0e1e 8F93 push r24
1937 0e20 0E94 0000 call SendOutData
1938 0e24 1092 0000 sts DebugDisplayAnforderung1,__zero_reg__
1939 0e28 8DB7 in r24,__SP_L__
1940 0e2a 9EB7 in r25,__SP_H__
1941 0e2c 0F96 adiw r24,15
1942 0e2e 8DBF out __SP_L__,r24
1943 0e30 00C0 rjmp .L161
1944 .L180:
1945 0e32 8091 0000 lds r24,Debug_Timer
1946 0e36 9091 0000 lds r25,(Debug_Timer)+1
1947 0e3a 0E94 0000 call CheckDelay
1948 0e3e 8823 tst r24
1949 0e40 01F0 breq .+2
1950 0e42 00C0 rjmp .L167
1951 0e44 00C0 rjmp .L168
1952 .L182:
1953 0e46 8091 0000 lds r24,Timer3D
1954 0e4a 9091 0000 lds r25,(Timer3D)+1
1955 0e4e 0E94 0000 call CheckDelay
1956 0e52 8823 tst r24
1957 0e54 01F4 brne .+2
1958 0e56 00C0 rjmp .L170
1959 0e58 8091 0000 lds r24,UebertragungAbgeschlossen
1960 0e5c 8823 tst r24
1961 0e5e 01F4 brne .+2
1962 0e60 00C0 rjmp .L170
1963 0e62 8091 0000 lds r24,EE_Parameter+23
1964 0e66 9927 clr r25
1965 0e68 880F lsl r24
1966 0e6a 991F rol r25
1967 0e6c 880F lsl r24
1968 0e6e 991F rol r25
1969 0e70 7C01 movw r14,r24
1970 0e72 0027 clr r16
1971 0e74 F7FC sbrc r15,7
1972 0e76 0095 com r16
1973 0e78 102F mov r17,r16
1974 0e7a 8091 0000 lds r24,IntegralNick
1975 0e7e 9091 0000 lds r25,(IntegralNick)+1
1976 0e82 A091 0000 lds r26,(IntegralNick)+2
1977 0e86 B091 0000 lds r27,(IntegralNick)+3
1978 0e8a BC01 movw r22,r24
1979 0e8c CD01 movw r24,r26
1980 0e8e A801 movw r20,r16
1981 0e90 9701 movw r18,r14
1982 0e92 0E94 0000 call __divmodsi4
1983 0e96 3093 0000 sts (Data3D)+1,r19
1984 0e9a 2093 0000 sts Data3D,r18
1985 0e9e 8091 0000 lds r24,IntegralRoll
1986 0ea2 9091 0000 lds r25,(IntegralRoll)+1
1987 0ea6 A091 0000 lds r26,(IntegralRoll)+2
1988 0eaa B091 0000 lds r27,(IntegralRoll)+3
1989 0eae BC01 movw r22,r24
1990 0eb0 CD01 movw r24,r26
1991 0eb2 A801 movw r20,r16
1992 0eb4 9701 movw r18,r14
1993 0eb6 0E94 0000 call __divmodsi4
1994 0eba 3093 0000 sts (Data3D+2)+1,r19
1995 0ebe 2093 0000 sts Data3D+2,r18
1996 0ec2 2091 0000 lds r18,ErsatzKompass
1997 0ec6 3091 0000 lds r19,(ErsatzKompass)+1
1998 0eca 4091 0000 lds r20,(ErsatzKompass)+2
1999 0ece 5091 0000 lds r21,(ErsatzKompass)+3
2000 0ed2 DA01 movw r26,r20
2001 0ed4 C901 movw r24,r18
2002 0ed6 03E0 ldi r16,3
2003 0ed8 880F 1: lsl r24
2004 0eda 991F rol r25
2005 0edc AA1F rol r26
2006 0ede BB1F rol r27
2007 0ee0 0A95 dec r16
2008 0ee2 01F4 brne 1b
2009 0ee4 820F add r24,r18
2010 0ee6 931F adc r25,r19
2011 0ee8 A41F adc r26,r20
2012 0eea B51F adc r27,r21
2013 0eec 820F add r24,r18
2014 0eee 931F adc r25,r19
2015 0ef0 A41F adc r26,r20
2016 0ef2 B51F adc r27,r21
2017 0ef4 2091 0000 lds r18,GIER_GRAD_FAKTOR
2018 0ef8 3091 0000 lds r19,(GIER_GRAD_FAKTOR)+1
2019 0efc 4091 0000 lds r20,(GIER_GRAD_FAKTOR)+2
2020 0f00 5091 0000 lds r21,(GIER_GRAD_FAKTOR)+3
2021 0f04 BC01 movw r22,r24
2022 0f06 CD01 movw r24,r26
2023 0f08 0E94 0000 call __divmodsi4
2024 0f0c 3093 0000 sts (Data3D+4)+1,r19
2025 0f10 2093 0000 sts Data3D+4,r18
2026 0f14 8EE0 ldi r24,lo8(14)
2027 0f16 90E0 ldi r25,hi8(14)
2028 0f18 9F93 push r25
2029 0f1a 8F93 push r24
2030 0f1c 80E0 ldi r24,lo8(Data3D)
2031 0f1e 90E0 ldi r25,hi8(Data3D)
2032 0f20 9F93 push r25
2033 0f22 8F93 push r24
2034 0f24 81E0 ldi r24,lo8(1)
2035 0f26 8F93 push r24
2036 0f28 8F93 push r24
2037 0f2a 83E4 ldi r24,lo8(67)
2038 0f2c 8F93 push r24
2039 0f2e 0E94 0000 call SendOutData
2040 0f32 8091 0000 lds r24,Intervall3D
2041 0f36 9091 0000 lds r25,(Intervall3D)+1
2042 0f3a 0E94 0000 call SetDelay
2043 0f3e 9093 0000 sts (Timer3D)+1,r25
2044 0f42 8093 0000 sts Timer3D,r24
2045 0f46 2DB7 in r18,__SP_L__
2046 0f48 3EB7 in r19,__SP_H__
2047 0f4a 295F subi r18,lo8(-(7))
2048 0f4c 3F4F sbci r19,hi8(-(7))
2049 0f4e 2DBF out __SP_L__,r18
2050 0f50 00C0 rjmp .L170
2051 .L181:
2052 0f52 82E4 ldi r24,lo8(66)
2053 0f54 90E0 ldi r25,hi8(66)
2054 0f56 9F93 push r25
2055 0f58 8F93 push r24
2056 0f5a 80E0 ldi r24,lo8(DebugOut)
2057 0f5c 90E0 ldi r25,hi8(DebugOut)
2058 0f5e 9F93 push r25
2059 0f60 8F93 push r24
2060 0f62 81E0 ldi r24,lo8(1)
2061 0f64 8F93 push r24
2062 0f66 8F93 push r24
2063 0f68 84E4 ldi r24,lo8(68)
2064 0f6a 8F93 push r24
2065 0f6c 0E94 0000 call SendOutData
2066 0f70 1092 0000 sts DebugDataAnforderung,__zero_reg__
2067 0f74 8DB7 in r24,__SP_L__
2068 0f76 9EB7 in r25,__SP_H__
2069 0f78 0796 adiw r24,7
2070 0f7a 8DBF out __SP_L__,r24
2071 0f7c 8091 0000 lds r24,DebugDataIntervall
2072 0f80 9091 0000 lds r25,(DebugDataIntervall)+1
2073 0f84 0097 sbiw r24,0
2074 0f86 01F4 brne .+2
2075 0f88 00C0 rjmp .L166
2076 0f8a 0E94 0000 call SetDelay
2077 0f8e 9093 0000 sts (Debug_Timer)+1,r25
2078 0f92 8093 0000 sts Debug_Timer,r24
2079 0f96 00C0 rjmp .L166
2080 .L174:
2081 0f98 8093 0000 sts DisplayLine,r24
2082 0f9c 1092 0000 sts DebugDisplayAnforderung,__zero_reg__
2083 0fa0 00C0 rjmp .L159
2084 .L157:
2085 /* epilogue: frame size=0 */
2086 0fa2 1F91 pop r17
2087 0fa4 0F91 pop r16
2088 0fa6 FF90 pop r15
2089 0fa8 EF90 pop r14
2090 0faa 0895 ret
2091 /* epilogue end (size=5) */
2092 /* function DatenUebertragung size 606 (597) */
2094 .comm SendeBuffer,150,1
2095 .comm RxdBuffer,150,1
2096 .comm Debug_Timer,2,1
2097 .comm Kompass_Timer,2,1
2098 .comm MotorTest,16,1
2099 .comm DebugOut,66,1
2100 .comm WinkelOut,8,1
2101 .comm Data3D,14,1
2102 .comm ExternControl,11,1
2103 .comm VersionInfo,10,1
2104 .comm Mixer,77,1
2105 .comm NMEABuffer,150,1
2106 .comm ConfirmFrame,1,1
2107 .comm Timer3D,2,1
2108 /* File "uart.c": code 2071 = 0x0817 (1988), prologues 41, epilogues 42 */
DEFINED SYMBOLS
*ABS*:00000000 uart.c
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:3 *ABS*:0000003f __SREG__
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:4 *ABS*:0000003e __SP_H__
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:5 *ABS*:0000003d __SP_L__
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:14 .data:00000000 ANALOG_TEXT
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:52 .bss:00000000 Intervall3D
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:58 .data:00000200 DebugDataIntervall
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:63 .data:00000202 MeineSlaveAdresse
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:68 .data:00000203 PcZugriff
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:73 .data:00000204 DebugTextAnforderung
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:80 .bss:00000002 PC_MotortestActive
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:86 .bss:00000003 PC_DebugTimeout
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:92 .bss:00000004 RxDataLen
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:98 .bss:00000005 pRxData
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:104 .bss:00000007 AnzahlEmpfangsBytes
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:110 .bss:00000008 CntCrcError
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:116 .data:00000205 UebertragungAbgeschlossen
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:123 .bss:00000009 NeueKoordinateEmpfangen
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:129 .bss:0000000a NeuerDatensatzEmpfangen
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:135 .bss:0000000b SioTmp
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:141 .bss:0000000c DisplayLine
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:147 .bss:0000000d GetPPMChannelAnforderung
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:153 .bss:0000000e GetVersionAnforderung
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:159 .bss:0000000f DebugDataAnforderung
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:165 .bss:00000010 DebugDisplayAnforderung
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:171 .bss:00000011 DebugDisplayAnforderung1
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:177 .bss:00000012 GetExternalControl
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:181 .text:00000000 eeprom_write_byte
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:207 .text:00000018 UART_Init
*COM*:00000002 Debug_Timer
*COM*:00000002 Kompass_Timer
*COM*:0000000a VersionInfo
.bss:00000013 ptr.5
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:253 .text:00000090 __vector_22
*COM*:00000096 SendeBuffer
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:250 .bss:00000015 crc.0
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:308 .bss:00000017 crc1.1
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:309 .bss:00000018 crc2.2
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:310 .bss:00000019 buf_ptr.3
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:311 .bss:0000001a UartState.4
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:315 .text:00000102 __vector_20
*COM*:00000096 RxdBuffer
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:533 .text:000002d0 AddCRC
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:593 .text:00000338 SendOutData
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:808 .text:000004cc Decode64
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:927 .text:000005ac BearbeiteRxDaten
*COM*:0000000b ExternControl
*COM*:00000001 ConfirmFrame
*COM*:00000010 MotorTest
*COM*:0000004d Mixer
*COM*:00000002 Timer3D
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:1546 .text:00000aca uart_putchar
C:\Users\Bernd\AppData\Local\Temp/ccjOzKk7.s:1574 .text:00000af0 DatenUebertragung
*COM*:00000008 WinkelOut
*COM*:0000000e Data3D
*COM*:00000042 DebugOut
*COM*:00000096 NMEABuffer
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
SetDelay
ServoActive
__prologue_saves__
__epilogue_restores__
__tablejump2__
RemoteKeys
EE_Parameter
ReadParameterSet
KompassValue
KompassStartwert
__divmodhi4
KompassRichtung
MenuePunkt
WriteParameterSet
__mulsi3
Umschlag180Nick
Umschlag180Roll
SetActiveParamSetNumber
GetActiveParamSetNumber
LipoDetection
Piep
EEPromArray
__eewr_block
CheckDelay
Menu
DisplayBuff
PPM_in
IntegralNick
__divmodsi4
IntegralRoll
Parameter_UserParam1
Parameter_UserParam2
MaxMenue
ErsatzKompass
GIER_GRAD_FAKTOR