Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 211 → Rev 212

/branches/V0.63_LED1_LED2/Hex-Files/Flight-Ctrl_MEGA644_V0_63_LED1_LED2.hex
0,0 → 1,1466
:100000000C94EC010C9409020C9409020C94090262
:100010000C9409020C9409020C9409020C94090234
:100020000C9409020C941F0B0C9409020C94090205
:100030000C94D8140C9409020C9409020C94090233
:100040000C9409020C9409020C945B0A0C940902AA
:100050000C9453040C9409020C941D040C94090292
:100060000C94050C0C9409020C940D140C940902C8
:100070000A0A0D004E65757472616C004865616412
:10008000696E67486F6C64000A0D5374657565721C
:10009000756E673A20004F4B0A0D000A0D416267EA
:1000A0006C65696368204C756674647275636B7304
:1000B000656E736F722E2E000A0D42656E75747A2E
:1000C0006520506172616D657465727361747A2028
:1000D0002564000A0D496E69742E20454550524F23
:1000E0004D3A2047656E65726965726520446566A4
:1000F00061756C742D506172616D657465722E2E20
:100100002E000A0D3D3D3D3D3D3D3D3D3D3D3D3DCE
:100110003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D0F
:100120003D3D000A0D466C69676874436F6E7472DA
:100130006F6C0A0D48617264776172653A25642EAE
:1001400025640A0D536F6674776172653A562564AB
:100150002E256420002E0052616E67653A253369B2
:100160002D253369005374656C6C756E673A2025D4
:10017000336900536574706F696E7420202533698C
:1001800000536572766F202000506F7469343A20F6
:100190002025336900506F7469333A202025336974
:1001A00000506F7469323A202025336900506F7413
:1001B00069313A20202533690053746172743A2002
:1001C00020202020253569004D6573737765727492
:1001D0003A2020253569005269636874756E673A64
:1001E0002020253569004B6F6D70617373202020CE
:1001F0002020202000456D70662E506567656C3AA2
:10020000253569005370616E6E756E673A20202542
:10021000356900486F6368202534692028253369D3
:100220002900526F6C6C20253469202825336929F8
:10023000004E69636B202534692028253369290025
:10024000414343202D2053656E736F7200476965EB
:10025000722025346920282533692900526F6C6C7F
:1002600020253469202825336929004E69636B20D5
:10027000253469202825336929004779726F202D9C
:100280002053656E736F720050333A253469202015
:1002900050343A253469200050313A253469202001
:1002A00050323A253469200047733A2534692020BA
:1002B00047693A25346920004E693A25346920207F
:1002C000526F3A25346920004B373A253469202093
:1002D0004B383A25346920004B353A2534692020C3
:1002E0004B363A25346920004B333A2534692020B7
:1002F0004B343A25346920004B313A2534692020AB
:100300004B323A25346920004B6F6D706173733A3C
:1003100020202025356900526F6C6C3A2020202067
:100320002020253569004E69636B3A20202020206B
:100330002025356900616B742E204C61676500488B
:10034000F668656E726567656C756E67004B65690A
:100350006E6520004F66662020202020203A202550
:100360003569004C756674647275636B3A20253587
:100370006900536F6C6C486F6568653A2025356974
:1003800000486F6568653A202020202025356900E7
:1003900028632920486F6C6765722042757373006B
:1003A00053657474696E673A202564200048573A93
:1003B0005625642E25642053573A25642E25640063
:1003C0002B2B204D696B726F4B6F70746572202BF5
:1003D0002B005B25695D000011241FBECFEFD0E12B
:1003E000DEBFCDBF11E0A0E0B1E0E0E0FBE502C080
:1003F00005900D92A039B107D9F715E0A0E9B1E059
:1004000001C01D92A833B107E1F70E9448020C9485
:100410007F2D0C94000022E030E0D9010E946B2D6A
:10042000802D863028F082E0D901082E0E94732D9D
:1004300099270895FB01282F863008F025E0842FA6
:100440009927429FD0011124AC59BF4F019724F046
:1004500001900E94732DFACFA2E0B0E0022E0E941C
:10046000732D0895CF93DF93FB01C42FDD278630D2
:1004700008F085E0489FD0011124AC59BF4F219767
:1004800024F00E946B2D0192FACFDF91CF91089555
:100490001F93CF93DF93189B02C08BE001C08AE0CB
:1004A0008093000181E887B98FEF88B98BE184B927
:1004B00081E085B98EE38AB9579A87EF8BB984B703
:1004C000877F84BF80916000886180936000109274
:1004D000600080ED97E09093AD018093AC011092A5
:1004E0003202109231021092C1041092C004109294
:1004F000300210922F0210922E0210922D02809143
:1005000000018A3011F4289801C0289A4298439833
:100510000E94C60B0E9425060E94C3140E94FF0B76
:100520000E94F31378941092BF038FE38093C0036B
:1005300085E08093C103209100018FE390E09F93B9
:100540008F931F921F92822F6AE00E94FB2C892FAB
:1005500099279F938F93822F0E94FB2C99279F931B
:100560008F9383E291E09F938F931F920E94B9072C
:1005700082E091E09F938F931F920E94B907299A7E
:10058000A1E0B0E00E946B2D802D2DB73EB7225F19
:100590003F4F0FB6F8943EBF0FBE2DBF8E33A9F16B
:1005A00083ED90E09F938F931F920E94B9070E9462
:1005B0007E1C4AE368EE74E080E00E941A0211E0BB
:1005C0000F900F900F90123049F40E94071C4AE3DD
:1005D00068EE74E082E00E941A0213E04AE368EEDB
:1005E00074E0812F0E941A021F5F163060F382E0D0
:1005F00022E030E0D901082E0E94732D8EE32150B5
:100600003040D901082E0E94732DC2E0D0E0DE01F7
:100610000E946B2D802D863028F082E0DE01082EAE
:100620000E94732D4AE368EE74E00E943202DE01FC
:100630000E946B2D802D863028F082E0DE01082E8E
:100640000E94732D99279F938F9388EB90E09F933F
:100650008F931F920E94B9078091F0040F900F9022
:100660000F900F900F9080FF20C08BE990E09F9338
:100670008F931F920E94B90788EE93E00E940A0BA5
:10068000EC010E94C10F0F900F900F90CE010E94BD
:10069000130B8823D9F386E990E09F938F931F92E1
:1006A0000E94B9070F900F900F900E943C1D8091FF
:1006B00000018A3011F4289801C0289A80ED97E053
:1006C0009093AD018093AC0188EE93E09093BA03D0
:1006D0008093B90385E58093B40388E890E09F9305
:1006E0008F931F920E94B9078091F0040F900F9092
:1006F0000F9082FF03C08CE790E002C084E790E097
:100700009F938F931F920E94B9070F900F900F90A5
:1007100080E790E09F938F931F920E94B9070E94F9
:10072000051088E893E190937B0180937A010F9004
:100730000F900F908091A901882309F451C0109265
:10074000A9010E94871E0E94F51C209100012A30F9
:1007500011F4289801C0289A80910201882319F089
:1007600081508093020180912C02882329F080918E
:100770002C02815080932C0280917A0190917B0110
:10078000892B01F585E090E090937B0180937A01BD
:100790000E949D1480910301909104018F5F9F4FEF
:1007A000F9F4809133028823D9F080E197E29093A5
:1007B000AD018093AC0180E890E0909304018093B8
:1007C00003010EC080917A0190917B010197909373
:1007D0007B0180937A012A3011F4289801C0289A6D
:1007E0000E9440060E94B606CE010E94130B882389
:1007F00009F4A0CF209107013091080180910005F4
:100800009927281739079CF48091030190910401DE
:100810008F5F9F4F61F480E797E19093AD018093E4
:10082000AC0180E093E0909304018093030184E69F
:1008300090E00E940A0BEC017DCF1F920F920FB641
:100840000F9211248F939F93EF93FF938091010157
:100850008823E1F48091A5019091A60101969093DF
:10086000A6018093A501FC01EA57FD4FE081ED3020
:1008700019F08639910539F41092A6011092A5015C
:1008800081E080930101E093C60004C01092A601AC
:100890001092A501FF91EF919F918F910F900FBE44
:1008A0000F901F9018951F920F920FB60F92112460
:1008B0002F933F934F938F939F93AF93BF93CF9378
:1008C000DF93EF93FF938091C60080939401409152
:1008D000A001463910F010929F01809194018D3053
:1008E00009F05CC080919F01823009F057C01092DE
:1008F0009F01A42FBB27FD01E953FC4F3081ED017F
:10090000C853DC4F28818091A3019091A401831BDF
:100910009109821B91099F709093A4018093A30178
:100920009C0196E0369527959A95E1F7235C2093F4
:10093000A201982F9F73935C9093A1018081281747
:1009400029F48881981711F491E006C080919701ED
:100950008F5F8093970190E080919501882309F043
:1009600064C0992309F461C081E0809395014093AC
:100970009801A753BC4F8DE08C938091CB038235B7
:1009800009F053C088E190E02CE00FB6F894A895E8
:10099000809360000FBE2093600047C080919F014C
:1009A0008130D9F0813018F08230E9F530C0809183
:1009B0009401833239F480919501882319F481E000
:1009C00080939F01809194018093C90381E080937B
:1009D000A00180919401992715C082E080939F0126
:1009E000E42FFF2780919401E753FC4F80834F5FF2
:1009F0004093A001209194018091A3019091A401C2
:100A0000820F911D9093A4018093A3010EC0E42F47
:100A1000FF2780919401E753FC4F8083463938F3D8
:100A200010929F01E7CF10929F01FF91EF91DF910C
:100A3000CF91BF91AF919F918F914F913F912F9106
:100A40000F900FBE0F901F901895DC0120E030E052
:100A500040E050E0E6E8F2E005C08191280F311D4A
:100A60004F5F5F4F4A175B07C1F73F70C90136E020
:100A7000969587953A95E1F7835CFD01EA57FD4F1E
:100A8000808311962F73235CFD01EA57FD4F20836D
:100A9000A957BD4F8DE08C93109201018091860281
:100AA0008093C6000895EF92FF920F931F93CF9308
:100AB000DF937A01722F93E290938602609387020C
:100AC0008093880203E010E060E0A9E8B2E046C04D
:100AD000F701E60FF11D90816F5F715019F4E0E0AE
:100AE00040E00FC0F701E60FF11D40816F5F7150CC
:100AF00011F4E0E006C0F701E60FF11DE0816F5F41
:100B00007150892F86958695835C8C935527892F04
:100B100099278370907024E0880F991F2A95E1F738
:100B20009A0194E0369527959A95E1F7822B835C9C
:100B3000ED0189834F705070440F551F440F551FAE
:100B40008E2F8295869586958370842B835C8A830D
:100B5000EF73E35CEB830C5F1F4F1496772309F070
:100B6000B7CFC8010E942505DF91CF911F910F914A
:100B7000FF90EF9008951F93CF93DF93EC0170E007
:100B8000A22FBB27129748C0E42FFF27E753FC4F43
:100B900030814F5FE42FFF27E753FC4F50814F5FB9
:100BA000E42FFF27E753FC4F10814F5FE42FFF270F
:100BB000E753FC4F20814F5F842F9927A817B9076F
:100BC00074F15D53FE01E70FF11D3D53330F330FF9
:100BD000852F82958F70382B3083613001F1912FF2
:100BE0009D537F5FFE01E70FF11D71505295507FBD
:100BF000892F86958695582B508363506F3F79F0E7
:100C00007E5FFE01E70FF11D9295990F990F907C81
:100C10002D53922B90837F5F662309F0B5CFDF9130
:100C2000CF911F9108951F93182F8A3019F48DE0EA
:100C30000E9413068091C00085FFFCCF1093C60070
:100C400080E090E01F9108950895E1ECF0E088E1E4
:100C50008083A0ECB0E08C9182608C93808180686E
:100C600080838081806480838AE28093C40088ECE2
:100C700090E00E940A0B9093B3038093B20308950F
:100C800080910101882309F470C08091900188232C
:100C900071F080910101882351F02BE044EB53E087
:100CA0006091850287E40E94530510929001809123
:100CB000B2039091B3030E94130B882321F4809117
:100CC00092018823B1F080910101882391F022E400
:100CD0004FE554E06091850284E40E945305109230
:100CE000920184EF91E00E940A0B9093B3038093EA
:100CF000B20380919101882331F180910101882311
:100D000011F10E940E101092910180919E01982F76
:100D10009F5F90939E01943059F426E14CEB54E090
:100D200060E084E30E9453058FEF80939E010BC027
:100D300044E1949FA0011124475E5E4F24E160E0EE
:100D40008F5C0E94530580919301882371F08091FC
:100D50000101882351F02AE04FEB53E060918502B6
:100D600086E50E9453051092930108951F93CF9337
:100D7000DF93CDB7DEB722970FB6F894DEBF0FBE74
:100D8000CDBF80919501882309F490C08FEF8093A7
:100D900002018091CB03813758F48C3608F067C08C
:100DA0008736C9F18836C1F0833609F07DC008C0A6
:100DB000843721F1863759F1813709F075C02FC08A
:100DC0002091980143E06BE084EB93E00E94BB0527
:100DD00081E08093920168C02091980143E062E035
:100DE000CE0101960E94BB058091CE019981892B8D
:100DF0008093CE0181E08093910156C020919801AB
:100E000043E064E08AE991E00E94BB054DC081E0C7
:100E10008093930149C081E08093900145C0209167
:100E2000980143E062E0CE0101960E94BB058981F2
:100E30008F3F89F0863010F085E089834AE368EEC1
:100E400074E089810E94320289812AE348EE54E0ED
:100E50006091850208C0109185020E940B022AE36E
:100E600048EE54E0612F855B0E9453051DC0209120
:100E7000980143E06AE388EE94E00E94BB0580910C
:100E8000CB034AE368EE74E08B560E941A0280910D
:100E9000CB038B56A2E0B0E0082E0E94732D0E9477
:100EA0000B0299270E94721E1092950122960FB68E
:100EB000F894DEBF0FBECDBFDF91CF911F91089593
:100EC000982F8091A104813069F48091CD01E82FA1
:100ED000FF27E75EFE4F90838F5F8093CD0121E077
:100EE00030E005C0892F0E941306282F3327C9013F
:100EF00008951F93182F04C080E30E9460071150CB
:100F00001116D4F31F9108951F93182F04C080E287
:100F10000E94600711501116D4F31F9108950F938A
:100F20001F93CF93DF938C01EB0108C0F8010F5F93
:100F30001F4FE4918E2F0E94600721972097B1F7F1
:100F4000DF91CF911F910F9108950F931F93CF932E
:100F5000DF938C01EB0106C0F80181918F010E94A3
:100F6000600721972097C1F7DF91CF911F910F91D3
:100F700008952F923F924F925F926F927F928F923D
:100F80009F92AF92BF92CF92DF92EF92FF920F9318
:100F90001F93CF93DF93CDB7DEB7E3970FB6F894E7
:100FA000DEBF0FBECDBF29968FAD29978093A104D8
:100FB000CE01855B9F4F9D838C832B968EAD9FAD1D
:100FC0002B979FA78EA722243324210102C013014F
:100FD00024010EA51FA502C00F5F1F4FF801F4905A
:100FE000FF2019F0F5E2FF16B9F7B8018EA59FA50D
:100FF000681B790B11F00E948F07FF2009F442C291
:101000000F5F1F4F1FA70EA71982AC81BD811BAABE
:101010001AAA9FEF99ABEEA5FFA5CF0101969FA756
:101020008EA7B49095E7B91621F08B2D8062883792
:1010300089F4EBA9E0FF07C02D903D904D905C90A6
:101040001397149607C08D919C9111971C0144240D
:1010500055241296F0E2BF1621F489818823D9F62F
:1010600085C083E2B81609F483C09AE2B91621F06C
:10107000EDE2BE1669F408C0FD011296E081EAAB0C
:10108000E7FFC9CFE195EAABFBA9F061FF7D72C034
:101090008BE2B81609F46AC09EE2B916B1F52EA526
:1010A0003FA52F5F3F4FEEA5FFA584918A3221F027
:1010B000B82E20E030E01BC0FD0112964081518126
:1010C00057FF02C04FEF5FEF49AB3FA72EA7A3CF5B
:1010D000C90103E0880F991F0A95E1F7220F331F1A
:1010E000280F391F2B0D311D20533040B4903196FD
:1010F0008B2D80538A3060F3FFA7EEA7A90137FF3D
:1011000002C04FEF5FEF49AB8DCFF0E3BF1631F474
:101110008BA984FD80CF80628BAB7DCF8B2D8153DB
:101120008930E8F420E030E0C901F3E0880F991F2E
:10113000FA95E1F7220F331F280F391F2B0D311DB0
:1011400020533040EEA5FFA5CF0101969FA78EA7A3
:10115000B4908B2D80538A3038F32AAB63CF98E656
:10116000B91651F4EBA9E460EBAB55CFB98253CF7C
:10117000FBA9F860FBAB4FCF8CE6B81621F49BA916
:1011800091609BAB48CFBD83AC83E3E6BE1639F4D8
:101190001296BD83AC8312978C918E8318C1F4E4B0
:1011A000BF1639F084E6B81639F099E6B91659F544
:1011B00003C0EBA9E160EBABFBA9F0FF08C01496FC
:1011C000BD83AC835E904E903E902E900AC01296E6
:1011D000BD83AC839E918E911C01442437FC4094C6
:1011E000542C57FC03C08AE088AB92C050944094C2
:1011F00030942094211C311C411C511C8DE28983A8
:101200009AE098AB85C0EFE4BE1629F0FFE6BF1662
:1012100039F488E061C09BA991609BABE8E056C0BF
:10122000F0E7BF1671F41296BD83AC839E918E9148
:101230001C01442455248BA980648BAB78E7B72E1E
:101240005EC0E3E7BE16D9F51296BD83AC83DE908F
:10125000CE90C114D10489F488E28E838EE68F8308
:1012600085E788878CE689878A8789E28B871C8651
:1012700066E0C62ED12CCC0EDD1EF9A9F7FD13C0F9
:101280004F2F552747FD509560E070E0C6010E9442
:10129000672B009711F419A90DC08C1919A9811792
:1012A0004CF4182F07C0F60101900020E9F73197A0
:1012B0001E2F1C1919824201310140E094C085E5BE
:1012C000B81631F095E7B91649F4EAE0E8AB1FC06B
:1012D000FBA9F160FBAB8AE088AB19C098E5B916B1
:1012E00021F0E8E7BE1609F06EC0FBA9F3FD02C0CD
:1012F00080E1F2CF211431044104510419F490E14A
:1013000098AB05C0EBA9E064EBABF0E1F8AB198258
:1013100089A987FD03C09BA99F7D9BAB2114310444
:101320004104510461F4E9A9EE2349F466247724C9
:1013300043015EE2C52ED12CCC0EDD1E3EC04EE236
:10134000C42ED12CCC0EDD1EF8A9EF2EFF240027D1
:101350001127C201B101A80197010E942E2D6A3008
:1013600020F430E3A32EA60E08C027E5A22EA60E79
:1013700088E5B81611F49FEDA922F601A2926F013B
:10138000C201B101A80197010E942E2D39014A0125
:101390002E143F044006510618F019012A01D9CF36
:1013A000F8A9F83051F48BA983FF07C090E3A91680
:1013B00021F080E3F60182936F01CE018C19182F82
:1013C000125D49A910C0BB2009F45CC0BE8219821D
:1013D0004201310100E096E0C92ED12CCC0EDD1E79
:1013E00011E021E005C0212F042F011B07FD00E0C3
:1013F0008981882319F0812F8F5F07C09BA996FDF3
:1014000002C0812F02C0822F8E5FA82EA00EEBA9F2
:10141000EE2EFF2480E3482E512C4E205F204114F5
:10142000510421F48AA98A190E948407898188239A
:1014300029F061E070E0CE01019609C0E6FE09C026
:1014400080E38A83BB8262E070E0CE0102960E9454
:10145000A507F0E24F16510421F48AA98A190E94C7
:101460007907802F0E947907612F772767FD709594
:10147000C6010E94A507E4FEAACD8AA98A190E9486
:101480008407A5CDE3960FB6F894DEBF0FBECDBF9F
:10149000DF91CF911F910F91FF90EF90DF90CF9050
:1014A000BF90AF909F908F907F906F905F904F9084
:1014B0003F902F9008951F920F920FB60F92112414
:1014C0002F933F935F936F937F938F939F93AF93EC
:1014D000BF938091B00181508093B0018F3FB9F4E8
:1014E00089E08093B001809106018F5F81708093C5
:1014F0000601882319F481E08093A9018091A70156
:101500009091A80101969093A8018093A7018091E2
:10151000AC019091AD010297B8F08091AC0190912F
:10152000AD0101979093AD018093AC018091AC0126
:101530009091AD0120910301309104018223932306
:10154000892B09F053C006C08FEF9FEF90930401E1
:1015500080930301809100018A3039F404C05A9AC3
:1015600005C0479A03C05A9801C047988091F0047B
:1015700083FF42C0349B0AC08091AA019091AB01C5
:1015800001969093AB018093AA0136C08091AA0185
:101590009091AB01892B79F08091AA019091AB01D8
:1015A000805A9F4040F48091AA019091AB019093A2
:1015B00018028093170280911702909118022091CF
:1015C000190230911A02821B930B845E9D4F68E6CC
:1015D00071E00E941B2D845B904090931C028093CD
:1015E0001B021092AB011092AA0106C0809100016B
:1015F0008A3009F0B6CFB3CFBF91AF919F918F9151
:101600007F916F915F913F912F910F900FBE0F903F
:101610001F9018952091A7013091A8012F5F3F4F8F
:10162000820F931F08952091A7013091A801821B7A
:10163000930B892F992786958074992708951F9277
:101640000F920FB60F921124EF92FF920F931F93F8
:101650002F933F934F935F936F937F938F939F93BA
:10166000AF93BF93CF93DF93EF93FF9380910501E7
:101670008150809305018F3F09F06DC083E880930E
:10168000B00080918D01C82FDD27D093AF01C093AA
:10169000AE0180911105E0900A0580FF1EC06091A7
:1016A000E7017091E8018091E9019091EA01FF243E
:1016B0000027112720E830E040E050E00E94502D44
:1016C000C801B7010E94DC2C20E032E040E050E08D
:1016D0000E94502DC20FD31F1DC06091E701709171
:1016E000E8018091E9019091EA01FF240027112788
:1016F00020E830E040E050E00E94502DC801B701E2
:101700000E94DC2C20E032E040E050E00E94502DAE
:10171000C21BD30BD093AF01C093AE012091AE0199
:101720003091AF0180910B0599272817390734F0C4
:1017300080910C0599278217930724F49093AF01A9
:101740008093AE018091AE018093B30080910D052E
:101750008093050104C083E08093B0005F98FF91FF
:10176000EF91DF91CF91BF91AF919F918F917F9139
:101770006F915F914F913F912F911F910F91FF902A
:10178000EF900F900FBE0F901F9018958091A701BA
:101790009091A8010B969093B2018093B10182E0E1
:1017A00085BD83EA84BD17BC88E788BD96E096BDF9
:1017B00083EC8093B0009093B100E0E7F0E080818B
:1017C00082608083EEE6F0E08081816080838AE041
:1017D0008093B3001092B20008952091A701309138
:1017E000A8012F5F3F4F280F391F8091A7019091CB
:1017F000A801A901481B590B57FFF7CF0895109274
:101800007C008FEE80937A0008951F920F920FB69E
:101810000F921124EF92FF920F931F932F933F93F8
:101820004F935F936F937F938F939F93AF93BF93E8
:10183000CF93DF93EF93FF9310927A004091C90109
:101840004F5F4093C9014150433009F4B4C1443063
:1018500038F4413009F469C0423008F008C10DC0C5
:10186000453009F4E8C1453008F4C2C1463009F4F6
:1018700007C2473009F063C3EAC22091DB0130910F
:10188000DC018091780090917900281B390B8091C0
:1018900000018A3011F0220F331F8091B70190911F
:1018A000B801820F931F9093B8018093B701809184
:1018B000C1018F5F8093C10180910B0290910C0256
:1018C000A0910D02B0910E02442737FD4095542F90
:1018D000820F931FA41FB51F80930B0290930C02DD
:1018E000A0930D02B0930E0280910F02909110020E
:1018F000A0911102B0911202820F931FA41FB51F75
:1019000080930F0290931002A0931102B0931202E1
:1019100081E08093CA018091C7019091C80101962E
:101920009093C8018093C7010EC3609178007091B5
:1019300079008091D9019091DA01681B790B80912F
:1019400000018A3011F0660F771F80910302909199
:101950000402A0910502B09106029B01442737FDC5
:101960004095542F820F931FA41FB51F809303022D
:1019700090930402A0930502B0930602809107029F
:1019800090910802A0910902B0910A02820F931F60
:10199000A41FB51F8093070290930802A093090229
:1019A000B0930A028091030290910402A091050273
:1019B000B0910602815F9A4BA440B04064F080E38E
:1019C00093E9ABEFBFEF8093030290930402A093DF
:1019D0000502B09306028091030290910402A09147
:1019E0000502B091060280519544AB4FBF4F64F49D
:1019F00080ED9CE6A4E0B0E08093030290930402A3
:101A0000A0930502B093060280917800909179002E
:101A10000F9710F468E17CEF809178009091790045
:101A2000079710F460E378EF809178009091790047
:101A3000835F934010F068EE73E08091780090919E
:101A400079008A5F934010F060ED77E08091B501F6
:101A50009091B601860F971F9093B6018093B501C0
:101A60008091C0018F5F8093C00182E0A1C060912E
:101A70007800709179008091D7019091D801681B0E
:101A8000790B809100018A3011F0660F771F8091E9
:101A9000FB019091FC01A091FD01B091FE019B0121
:101AA000442737FD4095542F820F931FA41FB51F65
:101AB0008093FB019093FC01A093FD01B093FE0184
:101AC0008091FF0190910002A0910102B091020269
:101AD000820F931FA41FB51F8093FF0190930002F4
:101AE000A0930102B09302028091FB019091FC014E
:101AF000A091FD01B091FE01815F9A4BA440B040DE
:101B000064F080E393E9ABEFBFEF8093FB01909328
:101B1000FC01A093FD01B093FE018091FB01909127
:101B2000FC01A091FD01B091FE0180519544AB4FA5
:101B3000BF4F64F480ED9CE6A4E0B0E08093FB012D
:101B40009093FC01A093FD01B093FE018091780079
:101B5000909179000F9710F468E17CEF8091780004
:101B600090917900079710F460E378EF8091780006
:101B700090917900835F934010F068EE73E080915C
:101B80007800909179008A5F934010F060ED77E0E3
:101B90008091B3019091B401860F971F9093B40187
:101BA0008093B3018091BF018F5F8093BF0184E078
:101BB0008093CA01C8C140910701509108018091EA
:101BC0007800909179009A01220F331F240F351F5E
:101BD00063E070E00E94072D260F371F369527958A
:101BE00036952795309308012093070186E0E0CFD2
:101BF0008091DF019091E00120917800309179008F
:101C0000821B930B9093A3048093A2048091B9014B
:101C10009091BA012091A2043091A304820F931FE6
:101C20009093BA018093B9018091C3018F5F809333
:101C3000C30187E0BDCF8091780090917900209119
:101C4000DD013091DE01821B930B9093AE048093F3
:101C5000AD048091BB019091BC012091AD04309105
:101C6000AE04820F931F9093BC018093BB018091BF
:101C7000C2018F5F8093C2014093CA0186E0E4C035
:101C80006091780070917900E090E101F090E201BC
:101C90000091E3011091E401882777FD8095982F4A
:101CA0000E941A2CA80197010E94742B0E94FD2B00
:101CB0007093BE016093BD012091BD013091BE01C2
:101CC000E091A204F091A3048091AD049091AE0440
:101CD00097FF03C0909581959F4F64E070E00E944C
:101CE0001B2DEB01CF01F7FF03C0909581959F4F0E
:101CF00064E070E00E941B2D260F371F2C0F3D1F44
:101D00003093BE012093BD018091BD019091BE0131
:101D1000029704F16091E1017091E2018091E30189
:101D20009091E40120E030E048E454E40E94242C47
:101D300088230CF03CC06091E1017091E201809138
:101D4000E3019091E4012AE037ED43EA5CE30E946D
:101D5000752B25C08091BD019091BE018F5F9F4F73
:101D600034F56091E1017091E2018091E30190917D
:101D7000E40120E030E046E154E40E94272C1816EC
:101D8000B4F46091E1017091E2018091E3019091DE
:101D9000E4012AE037ED43EA5CE30E94742B609390
:101DA000E1017093E2018093E3019093E40181E00B
:101DB0008093C40180917800909179009093A5045C
:101DC0008093A404209113023091140240911502D3
:101DD000509116028091BD019091BE01AA2797FDF6
:101DE000A095BA2F280F391F4A1F5B1F209313029B
:101DF000309314024093150250931602E0901302A0
:101E0000F0901402009115021091160260911302D5
:101E100070911402809115029091160220E034E036
:101E200040E050E00E94502DE21AF30A040B150B1B
:101E3000E0921302F092140200931502109316021E
:101E400083E08093CA0187E08093C9017CC08091C0
:101E5000B2049091B3042091780030917900820F00
:101E6000931F9093B3048093B2048091AA048F5F70
:101E70008093AA048091AA04853008F460C0809100
:101E800078009091790090930E0180930D0110924B
:101E9000AA048091A6049091A7042091B2043091E5
:101EA000B304821B930B2091340230913502821BC4
:101EB000930B9093C6018093C5016091B204709119
:101EC000B304E0900901F0900A0100910B01109118
:101ED0000C01882777FD8095982FA8019701220F84
:101EE000331F441F551F2E0D3F1D401F511F620FF2
:101EF000731F841F951F24E030E040E050E00E94F3
:101F0000502D2093090130930A0140930B01509307
:101F10000C012091A6043091A704809109019091B1
:101F20000A01A0910B01B0910C01281B390B3093D1
:101F30003502209334021092B3041092B20410922E
:101F4000CA011092C9018091CA0180937C008FEE72
:101F500080937A00FF91EF91DF91CF91BF91AF9184
:101F60009F918F917F916F915F914F913F912F91B1
:101F70001F910F91FF90EF900F900FBE0F901F9049
:101F80001895CF93DF93A3E0B0E00E946B2D802DD6
:101F9000C82FDD27C531D10508F02A97C7BD84E6D3
:101FA00090E00E94ED0B80910D0190910E01825501
:101FB0009340D0F4C0E0D0E017C0C7BD82E390E00A
:101FC0000E94ED0B85E591E09F938F931F920E94F5
:101FD000B90780910D0190910E010F900F900F9015
:101FE0008458934020F02196CA3FD10530F3A3E0F6
:101FF000B0E00C2E0E94732DC093AF048CE291E0F0
:102000000E94ED0BDF91CF910895E9E1F1E080E2CC
:10201000819391E0E936F907D9F70895FF920F937C
:102020001F938091CE01282F3327C90181709070B2
:10203000682F882391F08091CF01882311F081507F
:1020400002C0809169018093CF01E9E1F1E080E273
:10205000819391E0E936F907D9F7A90142705070F0
:1020600021FF0DC08091CF018F5F8093CF01E9E107
:10207000F1E080E2819391E0E936F907D9F7662330
:1020800021F0452B11F01092CF0181E18093CD0119
:102090008091CF0199279F938F9382ED93E09F9337
:1020A0008F9311E0F12EFF920E94B9070091CF01AA
:1020B0000F900F900F900F900F90053009F4F8C11A
:1020C000063090F4023009F4C8C0033030F4002325
:1020D000F1F0013009F07CC35DC0033009F412C196
:1020E000043009F075C361C1083009F4B9C2093080
:1020F00038F4063009F432C2073009F069C38DC2E2
:10210000093009F4EAC20A3009F062C324C310920C
:10211000CD0180EC93E09F938F93FF920E94B907CB
:1021200084E18093CD01209100018FE390E09F93A3
:102130008F931F921F92822F6AE00E94FB2C892F9F
:1021400099279F938F93822F0E94FB2C99279F930F
:102150008F938DEA93E09F938F93FF920E94B9072C
:1021600088E28093CD010E940B0299279F938F9361
:1021700080EA93E09F938F93FF920E94B9078CE3CC
:102180008093CD0180E993E09F938F93FF920E940B
:10219000B907B4C08091F00480FF47C01092CD0110
:1021A00080913402909135029F938F9381E893E060
:1021B0009F938F930F930E94B90784E18093CD0181
:1021C00080913602909137029F938F9382E793E03C
:1021D0009F938F930F930E94B90788E28093CD015C
:1021E00080910D0190910E019F938F9383E693E070
:1021F0009F938F930F930E94B9078CE38093CD0137
:102200008091AF0499279F938F9384E593E09F93E8
:102210008F930F930E94B9078DB79EB744960FB660
:10222000F8949EBF0FBE8DBFD8C284E18093CD01CC
:102230008DE493E09F938F930F930E94B90788E2F8
:102240008093CD018FE393E09F938F930F930E9430
:10225000B9078DB79EB70696E2CF1092CD0185E300
:1022600093E09F938F93FF920E94B90784E180933C
:10227000CD016091E7017091E8018091E9019091B1
:10228000EA0120E034E040E050E00E94502D5F93EE
:102290004F933F932F9386E293E09F938F93FF9208
:1022A0000E94B90788E28093CD016091EF0170919F
:1022B000F0018091F1019091F20120E034E040E0E2
:1022C00050E00E94502D5F934F933F932F9387E1EF
:1022D00093E09F938F93FF920E94B9078CE38093C2
:1022E000CD0180911702909118029F938F9388E0FF
:1022F00093E09F938F93FF920E94B9078DB79EB78B
:1023000046968DCF1092CD018091C0049091C1046A
:102310002091BE043091BF049F938F933F932F93DE
:1023200088EF92E09F938F93FF920E94B90784E118
:102330008093CD018091C4049091C5042091C20482
:102340003091C3049F938F933F932F9388EE92E035
:102350009F938F93FF920E94B90788E28093CD01EB
:102360008091C8049091C9042091C6043091C7049B
:102370009F938F933F932F9388ED92E09F938F933A
:10238000FF920E94B9078CE38093CD018091CC0429
:102390009091CD042091CA043091CB049F938F93E8
:1023A0003F932F9388EC92E07AC01092CD01E09198
:1023B000E904FF27EE0FFF1FE454FB4F208131811A
:1023C000E091E804FF27EE0FFF1FE454FB4F8081EC
:1023D00091813F932F939F938F9388EB92E09F93EC
:1023E0008F93FF920E94B90784E18093CD01E09121
:1023F000EB04FF27EE0FFF1FE454FB4F20813181D8
:10240000E091EA04FF27EE0FFF1FE454FB4F8081A9
:1024100091813F932F939F938F9388EA92E09F93AC
:102420008F93FF920E94B90788E28093CD01E091DB
:10243000ED04FF27EE0FFF1FE454FB4F2081318195
:10244000E091EC04FF27EE0FFF1FE454FB4F808167
:1024500091813F932F939F938F9388E992E09F936D
:102460008F93FF920E94B9078CE38093CD01E09196
:10247000EF04FF27EE0FFF1FE454FB4F2081318153
:10248000E091EE04FF27EE0FFF1FE454FB4F808125
:1024900091813F932F939F938F9388E892E09F932E
:1024A0008F93FF920E94B9078DB79EB74C96B7CE17
:1024B0001092CD018AE792E09F938F93FF920E9442
:1024C000B90784E18093CD012091D7013091D801E3
:1024D0008091B3019091B4016091BF013F932F931C
:1024E00077270E941B2D7F936F938BE692E09F933B
:1024F0008F93FF920E94B90788E28093CD012091CB
:10250000D9013091DA018091B5019091B6016091C5
:10251000C0013F932F9377270E941B2D7F936F93CA
:102520008CE592E09F938F93FF920E94B9078CE312
:102530008093CD012091DB013091DC018091B701C6
:102540009091B8016091C1013F932F9377270E942A
:102550001B2D7F936F938DE492E056C01092CD01B6
:1025600080E492E09F938F93FF920E94B90784E1E9
:102570008093CD012091DD013091DE018091BB017E
:102580009091BC016091C2013F932F9377270E94E5
:102590001B2D7F936F9381E392E09F938F93FF9224
:1025A0000E94B90788E28093CD012091DF0130912C
:1025B000E0018091B9019091BA016091C3013F930C
:1025C0002F9377270E941B2D7F936F9382E292E0D7
:1025D0009F938F93FF920E94B9078CE38093CD0164
:1025E0006091E1017091E2018091E3019091E40139
:1025F0000091A4041091A5040E94FD2B7F936F937A
:102600001F930F9383E192E09F938F93FF920E9419
:10261000B9078DB79EB7489602CE84E18093CD016D
:1026200080910701909108019F938F9384E092E03D
:102630009F938F93FF920E94B90788E28093CD0108
:1026400080912C0299279F938F9385EF91E09F9320
:102650008F93FF920E94B9078DB79EB70A96DFCD80
:102660001092CD0186EE91E09F938F93FF920E948E
:10267000B90784E18093CD0180911B0290911C02E7
:102680009F938F9387ED91E09F938F93FF920E948A
:10269000B90788E28093CD018091170290911802CA
:1026A0009F938F9388EC91E09F938F93FF920E946A
:1026B000B9078CE38093CD018091190290911A02A1
:1026C0009F938F9389EB91E09F938F93FF920E944A
:1026D000B9078DB79EB74296A2CD1092CD018091D9
:1026E0002402909125029F938F938DEA91E09F930E
:1026F0008F93FF920E94B90784E18093CD0180916E
:102700002602909127029F938F9381EA91E09F93F5
:102710008F93FF920E94B90788E28093CD01809148
:102720002802909129029F938F9385E991E09F93CE
:102730008F93FF920E94B9078CE38093CD01809123
:102740002A0290912B029F938F9389E891E09F93A7
:102750008F93FF925FCD1092CD0181E891E09F931E
:102760008F93FF920E94B90784E18093CD018091FD
:102770008D0199279F938F9383E791E09F938F9388
:10278000FF920E94B90788E28093CD018091AE014B
:102790009091AF019F938F9385E691E09F938F93E4
:1027A000FF920E94B9078CE38093CD0180910C05C4
:1027B00099279F938F9380910B0599279F938F93D0
:1027C00087E591E09F938F93FF920E94B90724CDF4
:1027D0000150009369011092CF011092CE011F9118
:1027E0000F91FF9008951092B9008AE28093B8008B
:1027F000089585EA8093BC0080E090E0089584E924
:102800008093BC0008951092B9008093BB0085E8C6
:102810008093BC0080E090E008951F920F920FB665
:102820000F9211248F939F93EF93FF938091D00188
:102830008F5F8093D00181508330A9F1843028F4D8
:10284000813091F0823008F50AC0853089F18530F9
:10285000B8F18630A9F1873009F061C045C0809198
:10286000D101880F8E5A09C08091D1018F5F80936A
:10287000D101815027C0809175021092B9008093D8
:10288000BB0085E88093BC004AC084E98093BC000B
:102890008091D101843018F41092D00102C01092BE
:1028A000D10185EAEFCF8091D201880F8D5AE5CF13
:1028B0008091BB00E091D201FF27EC54FB4F808355
:1028C0008091D201813039F08130A8F2823031F02C
:1028D000833029F506C080917602CFCF80917902AE
:1028E000CCCF80917B02C9CF8091D2019091BB0067
:1028F000E82FFF27EC54FB4F94838F5F8093D20126
:10290000843010F01092D20184E98093BC008AE0F8
:1029100090E090937B0180937A011092D001809196
:10292000BC0080688093BC00FF91EF919F918F91D4
:102930000F900FBE0F901F9018954CEB50E084E95C
:10294000DA018C931092D0012BEB30E0F9018081F9
:102950001092D10180E88C931092BD001092BA00C1
:102960001082E9EBF0E01082A8EBB0E01C9210823C
:102970008AE28C9385EADA018C931082F901108245
:1029800085E88C93089583EC80938100EFE6F0E076
:102990008081806280831092DC011092DB011092B2
:1029A000DA011092D9011092D8011092D70108953E
:1029B0001F920F920FB60F9211240F931F932F9314
:1029C0003F934F935F936F937F938F939F93AF93B7
:1029D000BF93CF93DF93EF93FF93209186003091C5
:1029E00087008091D5019091D601281B390B8091E9
:1029F0008600909187009093D6018093D501C901FC
:102A00008D5D95408356994148F481E090E0909324
:102A1000D4018093D30110926A0178C00091D30150
:102A20001091D4010A3011050CF070C0C9018B5F00
:102A30009040845B914008F051C0E901C25DD140F3
:102A4000F801EE0FFF1FE454FB4F808191819E013E
:102A5000281B390BC90137FF03C0909581959F4F03
:102A600006974CF480912C02883C28F480912C022B
:102A7000865F80932C02F801EE0FFF1FE454FB4F9A
:102A800020813181C901880F991F820F931F8C0FFC
:102A90009D1F64E070E00E941B2DCE0101968617F9
:102AA00097071CF46150704006C021976C177D0792
:102AB00014F46F5F7F4FF801EE0FFF1FDF01A45486
:102AC000BB4F8D919C9111979B01281B390BEE52A6
:102AD000FB4F3183208311967C936E93F8013196DE
:102AE000F093D401E093D301E530F10519F45D9A38
:102AF0005C980BC05D98E630F10511F45C9A05C056
:102B00005C98379711F45B9A01C05B98FF91EF9145
:102B1000DF91CF91BF91AF919F918F917F916F91F5
:102B20005F914F913F912F911F910F910F900FBE89
:102B30000F901F901895AF92BF92CF92DF92EF92B5
:102B4000FF920F931F9310927A008091BF01882308
:102B500069F08091B3019091B4016091BF01772732
:102B60000E941B2D70932505609324058091C00160
:102B7000882369F08091B5019091B6016091C00100
:102B800077270E941B2D7093230560932205809167
:102B9000C101882369F08091B7019091B8016091DB
:102BA000C10177270E941B2D70933105609330057A
:102BB0008091C2018823D9F1E0902D05F0902E0577
:102BC0006091BB017091BC012091C2010027F7FC0C
:102BD0000095102F5701680183E0AA0CBB1CCC1C88
:102BE000DD1C8A95D1F7AE18BF08C00AD10A882724
:102BF00077FD8095982FB4E0660F771F881F991F87
:102C0000BA95D1F73327442755270E94502DA20E9D
:102C1000B31EC41ED51EC601B50128E030E040E059
:102C200050E00E94502D30932E0520932D05809169
:102C3000C3018823D9F1E0903605F0903705609103
:102C4000B9017091BA012091C3010027F7FC0095EA
:102C5000102F57016801A3E0AA0CBB1CCC1CDD1C83
:102C6000AA95D1F7AE18BF08C00AD10A882777FD08
:102C70008095982FF4E0660F771F881F991FFA95AB
:102C8000D1F73327442755270E94502DA20EB31E9B
:102C9000C41ED51EC601B50128E030E040E050E07A
:102CA0000E94502D30933705209336058091C40142
:102CB0008823A1F1E0902705F09028056091BD01DF
:102CC0007091BE012091C4010027F7FC0095102FE0
:102CD00057016801E3E0AA0CBB1CCC1CDD1CEA9583
:102CE000D1F7AE18BF08C00AD10A882777FD8095B2
:102CF000982F3327442755270E94502DA20EB31E2C
:102D0000C41ED51EC601B50128E030E040E050E009
:102D10000E94502D30932805209327051092B4016E
:102D20001092B3011092BF011092B6011092B5013A
:102D30001092C0011092B8011092B7011092C10117
:102D40001092BA011092B9011092C3011092BC0105
:102D50001092BB011092C2011092BE011092BD01EF
:102D60001092C40180910B0290910C02A0910D026F
:102D7000B0910E028093F7019093F801A093F901AE
:102D8000B093FA018091FB019091FC01A091FD01AB
:102D9000B091FE018093E7019093E801A093E901CF
:102DA000B093EA018091030290910402A091050280
:102DB000B09106028093EF019093F001A093F1018E
:102DC000B093F2018091FF0190910002A091010265
:102DD000B09102028093EB019093EC01A093ED017E
:102DE000B093EE018091070290910802A091090230
:102DF000B0910A028093F3019093F401A093F5013E
:102E0000B093F6018FEE80937A00209124023091E6
:102E100025028091EC04E82FFF27EE0FFF1FE454FA
:102E2000FB4F8081918182599F4F281739071CF4ED
:102E30002F5F3F4F0CC08081918182599F4F821735
:102E400093074CF42115310531F021503040309377
:102E5000250220932402209126023091270280919E
:102E6000ED04E82FFF27EE0FFF1FE454FB4F808196
:102E7000918182599F4F281739071CF42F5F3F4FCC
:102E80000CC08081918182599F4F821793074CF427
:102E90002115310531F02150304030932702209325
:102EA000260220912802309129028091EE04E82F19
:102EB000FF27EE0FFF1FE454FB4F80819181825961
:102EC0009F4F281739071CF42F5F3F4F0CC080819C
:102ED000918182599F4F821793074CF42115310538
:102EE00031F0215030403093290220932802209164
:102EF0002A0230912B028091EF04E82FFF27EE0F7A
:102F0000FF1FE454FB4F8081918182599F4F281706
:102F100039071CF42F5F3F4F0CC08081918182598B
:102F20009F4F821793074CF42115310531F0215042
:102F3000304030932B0220932A02809124029091FA
:102F4000250297FF05C010922502109224020AC0A4
:102F50008F3F910539F034F08FEF90E09093250288
:102F600080932402809126029091270297FF05C04A
:102F700010922702109226020AC08F3F910539F065
:102F800034F08FEF90E09093270280932602809197
:102F900028029091290297FF05C0109229021092F1
:102FA00028020AC08F3F910539F034F08FEF90E08E
:102FB000909329028093280280912A0290912B02FB
:102FC00097FF05C010922B0210922A020AC08F3F71
:102FD000910539F034F08FEF90E090932B028093BD
:102FE0002A021F910F91FF90EF90DF90CF90BF903A
:102FF000AF90089510927A008091BF01882369F004
:103000008091B3019091B4016091BF0177270E9434
:103010001B2D70932505609324058091C0018823A2
:1030200069F08091B5019091B6016091C001772758
:103030000E941B2D70932305609322058091C1018E
:10304000882369F08091B7019091B8016091C10126
:1030500077270E941B2D7093310560933005809176
:10306000C2018823D1F06091BB017091BC01209115
:10307000C201882777FD8095982FF4E0660F771FAF
:10308000881F991FFA95D1F73327442755270E94A7
:10309000502D30932E0520932D058091C301882358
:1030A000D1F06091B9017091BA012091C3018827D4
:1030B00077FD8095982FE4E0660F771F881F991F92
:1030C000EA95D1F73327442755270E94502D309396
:1030D0003705209336058091C401882399F06091CB
:1030E000BD017091BE012091C401882777FD8095B4
:1030F000982F3327442755270E94502D30932805B9
:10310000209327051092B4011092B3011092BF01D1
:103110001092B6011092B5011092C0011092B80140
:103120001092B7011092C1011092BA011092B90128
:103130001092C3011092BC011092BB011092C20107
:103140001092BE011092BD011092C4018FEE8093C7
:103150007A0020912402309125028091EC04E82F1E
:10316000FF27EE0FFF1FE454FB4F808191818259AE
:103170009F4F281739071CF42F5F3F4F0CC08081E9
:10318000918182599F4F821793074CF42115310585
:1031900031F02150304030932502209324022091B9
:1031A0002602309127028091ED04E82FFF27EE0FD1
:1031B000FF1FE454FB4F8081918182599F4F281754
:1031C00039071CF42F5F3F4F0CC0808191818259D9
:1031D0009F4F821793074CF42115310531F0215090
:1031E000304030932702209326022091280230910C
:1031F00029028091EE04E82FFF27EE0FFF1FE45411
:10320000FB4F8081918182599F4F281739071CF409
:103210002F5F3F4F0CC08081918182599F4F821751
:1032200093074CF42115310531F021503040309393
:1032300029022093280220912A0230912B028091AA
:10324000EF04E82FFF27EE0FFF1FE454FB4F8081B0
:10325000918182599F4F281739071CF42F5F3F4FE8
:103260000CC08081918182599F4F821793074CF443
:103270002115310531F02150304030932B0220933D
:103280002A02809124029091250297FF05C0109296
:103290002502109224020AC08F3F910539F034F0C4
:1032A0008FEF90E090932502809324028091260274
:1032B0009091270297FF05C01092270210922602D4
:1032C0000AC08F3F910539F034F08FEF90E0909372
:1032D000270280932602809128029091290297FF6D
:1032E00005C010922902109228020AC08F3F910552
:1032F00039F034F08FEF90E0909329028093280208
:1033000080912A0290912B0297FF05C010922B0208
:1033100010922A0208958F3F910539F034F08FEF13
:1033200090E090932B0280932A0208951F9380913E
:10333000F3048B3F98F08B3F19F4809124020EC068
:103340008C3F19F48091260209C08D3F19F48091B9
:10335000280204C08E3F21F480912A0280938501C7
:1033600080918501882319F41092850104C08F3F54
:1033700011F4809385018091F2048B3F98F08B3F8C
:1033800019F4809124020EC08C3F19F4809126021A
:1033900009C08D3F19F48091280204C08E3F21F4AA
:1033A00080912A028093840180918401882319F4FA
:1033B0001092840105C0843618F084E6809384015D
:1033C0008091F4048B3F98F08B3F19F48091240294
:1033D0000EC08C3F19F48091260209C08D3F19F46C
:1033E0008091280204C08E3F21F480912A028093AC
:1033F000860180918601882319F41092860105C008
:10340000843618F084E6809386018091F6048B3F21
:1034100098F08B3F19F4809124020EC08C3F19F470
:103420008091260209C08D3F19F48091280204C0C2
:103430008E3F21F480912A02809387018091870139
:10344000882319F41092870104C08F3F11F48093F0
:1034500087018091FD048B3F98F08B3F19F4809198
:1034600024020EC08C3F19F48091260209C08D3FC2
:1034700019F48091280204C08E3F21F480912A0221
:103480008093880180918801882319F41092880123
:1034900004C08F3F11F4809388018091FE048B3F1C
:1034A00098F08B3F19F4809124020EC08C3F19F4E0
:1034B0008091260209C08D3F19F48091280204C032
:1034C0008E3F21F480912A028093890180918901A5
:1034D0008B3010F48AE002C08F3F11F48093890191
:1034E0008091FF048B3F98F08B3F19F48091240268
:1034F0000EC08C3F19F48091260209C08D3F19F44B
:103500008091280204C08E3F21F480912A0280938A
:103510008A0180918A01882319F410928A0104C0DB
:103520008F3F11F480938A01809104058B3F98F0BE
:103530008B3F19F4809124020EC08C3F19F48091C6
:10354000260209C08D3F19F48091280204C08E3FE5
:1035500021F480912A0280938C0180918C01882330
:1035600019F410928C0104C08F3F11F480938C01E8
:10357000809105058B3F98F08B3F19F480912402D0
:103580000EC08C3F19F48091260209C08D3F19F4BA
:103590008091280204C08E3F21F480912A028093FA
:1035A0003A0280913A02882319F410923A0204C038
:1035B0008F3F11F480933A02809106058B3F98F07B
:1035C0008B3F19F4809124020EC08C3F19F4809136
:1035D000260209C08D3F19F48091280204C08E3F55
:1035E00021F480912A0280933B0280913B02882340
:1035F00019F410923B0204C08F3F11F480933B02F8
:10360000809107058B3F98F08B3F19F4809124023D
:103610000EC08C3F19F48091260209C08D3F19F429
:103620008091280204C08E3F21F480912A02809369
:103630003C0280913C02882319F410923C0204C0A1
:103640008F3F11F480933C02809108058B3F98F0E6
:103650008B3F19F4809124020EC08C3F19F48091A5
:10366000260209C08D3F19F48091280204C08E3FC4
:1036700021F480912A0280933D0280913D028823AB
:1036800019F410923D0204C08F3F11F480933D0263
:10369000909109059B3FB0F09B3F19F48091240263
:1036A00004C09C3F29F48091260280938D010CC0B8
:1036B0009D3F19F480912802F8CF9E3F29F4809114
:1036C0002A02F3CF90938D0180918D01882319F404
:1036D00010928D0104C08F3F11F480938D019B3FA8
:1036E000B0F09B3F19F48091240204C09C3F29F460
:1036F0008091260280938D010CC09D3F19F480912A
:103700002802F8CF9E3F29F480912A02F3CF9093AC
:103710008D0180918D01882319F410928D0104C0D0
:103720008F3F11F480938D019B3FB0F09B3F19F4C4
:103730008091240204C09C3F29F48091260280934A
:103740008D010CC09D3F19F480912802F8CF9E3F57
:1037500029F480912A02F3CF90938D0180918D01FD
:10376000882319F410928D0104C08F3F11F48093C7
:103770008D0180910E058B3F98F08B3F19F480915D
:1037800024020EC08C3F19F48091260209C08D3F9F
:1037900019F48091280204C08E3F21F480912A02FE
:1037A00080938E0180918E01882319F410928E01EE
:1037B00004C08F3F11F480938E0110918C01612F12
:1037C000772767FD7095872F972F0E941A2C17FF78
:1037D00006C020E030E040E853E40E94752B27E16A
:1037E00037EB41ED58E30E94942C60938001709375
:1037F000810180938201909383018091FB048093E7
:103800002F058091FA04809326051F91089583E087
:103810008093E80432E03093E90481E08093EA0485
:1038200024E02093EB0445E04093EC0486E0809391
:10383000ED0487E08093EE0488E08093EF0410921B
:10384000F0048EE18093F1048BEF8093F3048AE01F
:103850008093F40492E39093F2049093F6043093EF
:10386000F5042093F7041092F80480E18093F904A2
:103870008FE08093FA048AEF8093FB048AE18093BF
:10388000FC0480E88093FD048FEA8093FE0480931B
:10389000FF048EE58093000583E28093010584E1B7
:1038A00080930205109203051092040510920505FD
:1038B00010920605109207051092080584E6809381
:1038C000090588E280930A051092110590930B0573
:1038D00086E980930C0540930D0590930E058AE5CB
:1038E00080930F0510921005A6E1B5E0EBE6F1E03C
:1038F0008CE001900D928150E1F7089583E0809370
:10390000E80482E08093E90481E08093EA0494E093
:103910009093EB0445E04093EC0486E08093ED0443
:1039200087E08093EE0438E03093EF041092F004C7
:103930008EE18093F1048BEF8093F3048AE080930F
:10394000F40422E32093F2042093F6049093F50408
:103950009093F7043093F80480E18093F9048FE0AA
:103960008093FA048AEF8093FB048AE18093FC043D
:1039700080E88093FD0488E78093FE0496E99093A5
:10398000FF048EE58093000583E28093010584E1C6
:10399000809302051092030510920405109205050C
:1039A00010920605109207051092080584E6809390
:1039B000090588E280930A051092110520930B05F2
:1039C00090930C0540930D0520930E058AE5809396
:1039D0000F0510921005A6E1B5E0E3E7F1E08CE0F9
:1039E00001900D928150E1F7089580913302882370
:1039F00001F51092760210927502109279021092DF
:103A00007B0280919A01882311F080937502809146
:103A10009B01882311F08093760280919C0188237A
:103A200011F080937B0280919D01882311F0809397
:103A3000790280917502992790937A048093790492
:103A400080917602992790937C0480937B048091E7
:103A50007B02992790937E0480937D048091790264
:103A600099279093800480937F041092D001109244
:103A7000D1010E94F9130895CF93DF931092DE01D4
:103A80001092DD011092E0011092DF0180E090E0E1
:103A9000A0E0B0E08093E1019093E201A093E30104
:103AA000B093E4011092D8011092D7011092DA017C
:103AB0001092D9011092DC011092DB010E94FA17DA
:103AC00085E090E00E940A0BEC01CE010E94130BEE
:103AD0008823D9F30E94FA178091F00480FF10C068
:103AE00080910D0190910E01875B934038F4809195
:103AF0000D0190910E018E5E924010F40E94C10F54
:103B0000809100018A3041F580912405909125052E
:103B100097FF03C0909581959F4F9093D801809314
:103B2000D701809122059091230597FF03C09095BE
:103B300081959F4F9093DA018093D9018091300550
:103B40009091310597FF03C0909581959F4F909379
:103B5000DC018093DB0133C0809124059091250521
:103B600097FF03C0909581959F4F62E070E00E949F
:103B70001B2D7093D8016093D701809122059091FD
:103B8000230597FF03C0909581959F4F62E070E0F9
:103B90000E941B2D7093DA016093D901809130054A
:103BA0009091310597FF03C0909581959F4F62E0FA
:103BB00070E00E941B2D7093DC016093DB0180910B
:103BC00036059091370597FF03C0909581959F4FDB
:103BD00060E170E00E941B2D7093E0016093DF01B3
:103BE00080912D0590912E0597FF03C090958195AA
:103BF0009F4F60E170E00E941B2D7093DE01609387
:103C0000DD016091A4047091A504882777FD80955B
:103C1000982F0E941A2C6093E1017093E201809327
:103C2000E3019093E4011092FB011092FC011092C9
:103C3000FD011092FE011092FF01109200021092FD
:103C400001021092020210920302109204021092DA
:103C500005021092060210920702109208021092BA
:103C6000090210920A0210920B0210920C0210929A
:103C70000D0210920E02109225051092240510924A
:103C80002305109222051092310510923005809183
:103C9000090190910A01A0910B01B0910C01909340
:103CA000A7048093A6041092C6011092C501109239
:103CB00013021092140210921502109216028091B3
:103CC00017029091180290931A02809319020E9491
:103CD0003D2B82E390E09093AD018093AC01DF91A6
:103CE000CF9108951F93182F0EC08091330288231F
:103CF00061F484E690E09093AD018093AC018AEF8B
:103D000090E00E94ED0B115080F71F9108952F92C3
:103D10003F924F925F926F927F928F929F92AF925B
:103D2000BF92CF92DF92EF92FF920F931F93CF93A8
:103D3000DF93CDB7DEB724970FB6F894DEBF0FBE82
:103D4000CDBF0E949B15299AE091EA04FF27EE0F50
:103D5000FF1FE454FB4FA080B18028E730E0A20EA3
:103D6000B31EB7FE02C0AA24BB2480912C02843665
:103D700008F05BC080910201882399F480910301CF
:103D8000909104018F5F9F4F61F488E99AE39093CB
:103D9000AD018093AC0180E09CE09093040180939E
:103DA00003018091490290914A02009731F00197F6
:103DB00090934A028093490204C0109233021092F9
:103DC0001D02809100018A3011F4289A01C02898C0
:103DD0008091440290914502815D974018F1809155
:103DE0000105A82EBB2481E080931D02E091E80428
:103DF000FF27EE0FFF1FE454FB4F11821082E0916A
:103E0000E904FF27EE0FFF1FE454FB4F11821082DD
:103E1000E091EB04FF27EE0FFF1FE454FB4F1182EC
:103E20001082CAC110923302C7C180912C028D3812
:103E300008F4C2C110921D028091020522E3829F04
:103E4000C001112490934A028093490259E2A516B9
:103E5000B1046CF080914402909145026FEF8F3F66
:103E6000960781F1019690934502809344028091D8
:103E7000440290914502883C910520F078E2A71613
:103E8000B10404F510925B0210925C0210925D0284
:103E900010925E021092570210925802109259022C
:103EA00010925A0210920B0210920C0210920D0204
:103EB00010920E0210920F02109210021092110234
:103EC0001092120289ECA816B1040CF4D5C08091AE
:103ED0003302882309F070C1E091EB04FF27EE0F55
:103EE000FF1FE454FB4F808191818C3491050CF4C9
:103EF000C0C0809148028F5F80934802893C08F4DB
:103F00005BC1299810923302109248021092450228
:103F1000109244028091E804282F3327F901EE0F14
:103F2000FF1FE454FB4F80819181873491059CF4FD
:103F3000E091E904FF27EE0FFF1FE454FB4F0190CF
:103F4000F081E02DF7FF03C0F095E195FF4FE734D6
:103F5000F1050CF46CC08091E904682F7727DB0130
:103F6000AA0FBB1FA454BB4F8D919C91119787340E
:103F700091053CF0F901EE0FFF1FE454FB4F8081E7
:103F800091818D919C918734910564F0F901EE0F38
:103F9000FF1FE454FB4F808191818734910514F019
:103FA00042E001C041E0FB01EE0FFF1FE454FB4F74
:103FB00080819181863491055CF4F901EE0FFF1F39
:103FC000E454FB4F80819181873491050CF043E0EC
:103FD000FB01EE0FFF1FE454FB4F808191818A5B50
:103FE0009F4F5CF4F901EE0FFF1FE454FB4F8081FB
:103FF0009181873491050CF044E0660F771F64547B
:104000007B4FFB01808191818A5B9F4F5CF4220F83
:10401000331F24543B4FD9018D919C9186349105D7
:104020000CF445E0A2E0B0E0042E0E94732D8091D4
:10403000F00480FF10C080910D0190910E01875B0C
:10404000934038F480910D0190910E018E5E924064
:1040500010F40E94C10F0E940B024AE368EE74E064
:104060000E9432020E943C1D0E940B020E94721E9E
:10407000A3C010924802A0C0F3E2AF16B1040CF046
:104080009BC08091EB04482F5527FA01EE0FFF1FCC
:10409000E454FB4F80819181855B9F4F0CF06DC094
:1040A000809147028F5F80934702893C08F467C084
:1040B00088EC8093470281E090E0909345028093E2
:1040C000440281E080933302109253021092540212
:1040D000109255021092560210920B0210920C028E
:1040E00010920D0210920E0210920F021092100206
:1040F00010921102109212021092FB011092FC0118
:104100001092FD011092FE0110920302109204021F
:1041100010920502109206028091E7019091E80149
:10412000A091E901B091EA018093FF019093000210
:10413000A0930102B09302028091EF019091F001EF
:10414000A091F101B091F2018093070290930802CF
:10415000A0930902B0930A0210925B0210925C02D3
:1041600010925D0210925E02109257021092580255
:104170001092590210925A0202C010924702440F44
:10418000551F44545B4FDA018D919C918C349105FD
:104190008CF0809146028F5F80934602893C60F0EC
:1041A0001092330288EC80934602109245021092DE
:1041B000440202C01092460280916A0181508093AD
:1041C0006A0180916A018F3F29F080911D02882346
:1041D00009F41EC20E949619E091E804FF27EE0F31
:1041E000FF1FDF01A454BB4F4D915C918091F704F8
:1041F000482E5524EE52FB4F808191812091F80486
:104200003327449D4001459D900C549D900C1124F2
:10421000FC01E29FC001E39F900DF29F900D1124DD
:10422000880E991E90922E0280922D02E091E90450
:10423000FF27EE0FFF1FDF01A454BB4F4D915C9190
:10424000EE52FB4F80819181449D3001459D700C61
:10425000549D700C1124AC01429FC001439F900DEE
:10426000529F900D1124680E791E70923002609258
:104270002F02E091EB04FF27EE0FFF1FE454FB4FEA
:1042800080819181909581959F4F90933202809388
:10429000310210918901612F772767FD7095872F73
:1042A000972F0E941A2C17FF06C020E030E040E84C
:1042B00053E40E94752B20E030E040E251E40E947C
:1042C000752B20E030E040E85BE30E94942C6B010A
:1042D0007C0160933205709333058093340590938D
:1042E000350510918A01612F772767FD7095872F1B
:1042F000972F0E941A2C17FF06C020E030E040E8FC
:1043000053E40E94752B20E030EE4BE257E40E940C
:10431000B72B6093290570932A0580932B05909302
:104320002C058091F00482FF0CC080E090E0A0E0BA
:10433000B0E08093290590932A05A0932B05B093B4
:104340002C0520E030E040E050E0C701B6010E94BB
:10435000242C882364F480E090E0A0E0B0E0809317
:10436000320590933305A0933405B093350520E0D2
:1043700030E040E050E06091290570912A0580917D
:104380002B0590912C050E94242C882364F480E056
:1043900090E0A0E0B0E08093290590932A05A093D7
:1043A0002B05B0932C05E091ED04FF27EE0FFF1FC6
:1043B000E454FB4F80819181482F80931F0220E0BD
:1043C00030E081528F3310F421E030E080E090E063
:1043D000413A10F081E090E0282B392B80912202A5
:1043E000232B11F08F5F03C0882319F08150809335
:1043F000220280912102413610F08F5F03C0882392
:1044000071F0815080932102809121028A3028F03E
:104410008AE080932102429A03C0823008F44298D5
:10442000809122028A3038F08AE08093220281E073
:104430008093230209C0823018F41092230209C02D
:1044400080912302813029F4809120028F5F809334
:104450002002809120028E3420F0439A813518F496
:1044600004C0439802C01092200280911005992741
:1044700082FDCEC083FDCCC08091E7019091E80120
:10448000A091E901B091EA0181569A4EA040B04056
:1044900044F1C20173E0880F991F7A95E1F7A401F6
:1044A000481B590B50932E0240932D028091E70137
:1044B0009091E801A091E901B091EA0181589843F7
:1044C000A140B0400CF43FC0C20164E0880F991FC6
:1044D0006A95E1F7481B590B50932E0240932D0229
:1044E00032C08091E7019091E801A091E901B0917B
:1044F000EA01805A9541AF4FBF4F2CF5920153E02E
:10450000220F331F5A95E1F7280D391D30932E02E3
:1045100020932D028091E7019091E801A091E9019B
:10452000B091EA0181589843A140B04064F0C201C3
:1045300044E0880F991F4A95E1F7281B390B309307
:104540002E0220932D028091EF019091F001A09115
:10455000F101B091F20181569A4EA040B0403CF179
:10456000C20133E0880F991F3A95E1F7A301481B78
:10457000590B5093300240932F028091EF0190919C
:10458000F001A091F101B091F20181589843A1404E
:10459000B0400CF43DC024E0440C551C2A95E1F7D2
:1045A000441955095093300240932F0231C0809135
:1045B000EF019091F001A091F101B091F201805AC8
:1045C0009541AF4FBF4F24F5920193E0220F331F67
:1045D0009A95E1F7260D371D3093300220932F0274
:1045E0008091EF019091F001A091F101B091F20161
:1045F00081589843A140B0405CF084E0440C551CC5
:104600008A95E1F7241935093093300220932F025F
:104610008091E904E82FFF27EE0FFF1FE454FB4FC2
:104620002081318180910F05482F5527421753076C
:1046300024F48091100582FD0DC0208131818827EE
:104640009927841B950B281739077CF48091100556
:1046500083FF0BC081E08093390280910E05682EA4
:1046600077246A147B0424F002C0109239023501C9
:104670008091E804E82FFF27EE0FFF1FE454FB4F63
:10468000808191814817590724F48091100580FD9D
:104690000DC02081318188279927841B950B28170D
:1046A00039078CF48091100581FF0DC081E0809363
:1046B00038021092390280910E05992786159705C8
:1046C00024F43C0102C01092380290901D029920FF
:1046D00041F1109232021092310210922E02109289
:1046E0002D021092300210922F028DEC9CECACEC5B
:1046F000BDE38093320590933305A0933405B093C6
:1047000035058AE097EDA3EABBE3809329059093F2
:104710002A05A0932B05B0932C0510923902109214
:1047200038028091C7019091C8018D54914008F4DE
:1047300098C02091EB013091EC014091ED01509136
:10474000EE018091E7019091E801A091E901B0911B
:10475000EA01281B390B4A0B5B0BE090F301F09048
:10476000F4010091F5011091F6018091EF01909113
:10477000F001A091F101B091F201E81AF90A0A0BD7
:104780001B0B1092C8011092C701273A3105410551
:10479000510534F08091D7019091D80101960AC05B
:1047A0002A553F4F4F4F5F4F4CF48091D701909166
:1047B000D80101979093D8018093D70177EAE71643
:1047C000F1040105110534F08091D9019091DA01CD
:1047D00001960EC08AE5E8168FEFF8068FEF0807FE
:1047E0008FEF18074CF48091D9019091DA0101976D
:1047F0009093DA018093D90110927A008091E701B9
:104800009091E801A091E901B091EA018093FF0144
:1048100090930002A0930102B09302028091EF01F5
:104820009091F001A091F101B091F2018093070203
:1048300090930802A0930902B0930A028091F701B5
:104840009091F801A091F901B091FA0180930F02C3
:1048500090931002A0931102B09312028FEE8093F6
:104860007A002090290530902A0540902B05509021
:104870002C0520E030E040E050E0C201B1010E9490
:10488000242C882309F4F7C080913802882309F08A
:10489000F2C080913902882309F0EDC06091E701F0
:1048A0007091E8018091E9019091EA012091FC0466
:1048B000A22EBB24CC24DD24E0902D05F0902E0503
:1048C000A60195010E94502D0027F7FC0095102F9E
:1048D0002E193F09400B510B20934F023093500289
:1048E000409351025093520280912D0590912E05D4
:1048F000AA2797FDA095BA2FB7FF07C0B095A0953E
:10490000909581959F4FAF4FBF4F883C9105A10572
:10491000B1053CF4CA01B90128E030E040E050E0C4
:1049200006C0CA01B90120E130E040E050E00E9439
:10493000502D20934F0230935002409351025093D8
:1049400052026091EF017091F0018091F10190911C
:10495000F201E0903605F0903705A60195010E941E
:10496000502D0027F7FC0095102F2E193F09400B02
:10497000510B20934B0230934C0240934D025093C5
:104980004E028091360590913705AA2797FDA09594
:10499000BA2FB7FF07C0B095A095909581959F4F0E
:1049A000AF4FBF4F883C9105A105B1053CF4CA014A
:1049B000B90128E030E040E050E006C0CA01B9018A
:1049C00020E130E040E050E00E94502D20934B0267
:1049D00030934C0240934D0250934E0280914F020F
:1049E00090915002A0915102B0915202853FE1E0B6
:1049F0009E07E0E0AE07E0E0BE072CF084EF91E018
:104A0000A0E0B0E009C08C509E4FAF4FBF4F64F4A0
:104A10008CE09EEFAFEFBFEF80934F029093500278
:104A2000A0935102B093520280914B0290914C029C
:104A3000A0914D02B0914E02853F21E0920720E007
:104A4000A20720E0B2072CF084EF91E0A0E0B0E0F4
:104A500009C08C509E4FAF4FBF4FECF48CE09EEFDF
:104A6000AFEFBFEF80934B0290934C02A0934D02A7
:104A7000B0934E0210C010924F021092500210924A
:104A800051021092520210924B0210924C0210925C
:104A90004D0210924E0210927A008091FB0190918B
:104AA000FC01A091FD01B091FE0120914F023091D7
:104AB00050024091510250915202821B930BA40B61
:104AC000B50B8093FB019093FC01A093FD01B09383
:104AD000FE018091030290910402A0910502B09121
:104AE000060220914B0230914C0240914D025091B0
:104AF0004E02821B930BA40BB50B80930302909381
:104B00000402A0930502B0930602009131021091B5
:104B10003202A80117FF04C044275527401B510B40
:104B2000443251053CF08091F00484FD03C081E0E3
:104B3000809340022091F9043327049FC001059F10
:104B4000900D149F900D1124AC01249FC001259F4E
:104B5000900D349F900D112460E072E00E941B2D97
:104B60007B01209FC001219F900D309F900D11244B
:104B700064E070E00E941B2DE60EF71EB701882747
:104B800077FD8095982F69837A838B839C836093CC
:104B90005302709354028093550290935602809171
:104BA0000B0290910C02A0910D02B0910E0229818E
:104BB0003A814B815C81821B930BA40BB50B8093D4
:104BC0000B0290930C02A0930D02B0930E02809101
:104BD0000B0290910C02A0910D02B0910E02895A25
:104BE0009146A040B04064F088EA91E6A0E0B0E0D1
:104BF00080930B0290930C02A0930D02B0930E02CF
:104C000080910B0290910C02A0910D02B0910E02C6
:104C100088559E49AF4FBF4F64F488E59EE9AFEFDA
:104C2000BFEF80930B0290930C02A0930D02B09300
:104C30000E028FEE80937A008091170290911802F5
:104C4000892B09F4A1C08091F00483FF9DC060917D
:104C5000E7017091E8018091E9019091EA0120E07B
:104C600032E040E050E00E94502D890137FF03C040
:104C7000109501951F4F6091EF017091F0018091A7
:104C8000F1019091F20120E032E040E050E00E941A
:104C9000502DB90137FF03C0709561957F4F6017A4
:104CA00071070CF4B80169317105A4F480914002D8
:104CB000882381F080913E0290913F02892B51F42C
:104CC000809117029091180290931A028093190212
:104CD00010924002209188013327629FC001639F98
:104CE000900D729F900D112460E470E00E941B2DC6
:104CF000A901461B570B141615060CF03FC0109265
:104D00007A0020913E0230913F022115310561F574
:104D100000910B0210910C0220910D0230910E02B5
:104D200080911B0290911C02BC01649FC001659F91
:104D3000900D749F900D112460E270E00E941B2D75
:104D4000882777FD8095982F060F171F281F391F7A
:104D500000930B0210930C0220930D0230930E026D
:104D60008FEE80937A0010C08FEE80937A002150EE
:104D7000304030933F0220933E0206C084EF91E022
:104D800090933F0280933E02809141028150809334
:104D900041028F3F09F062C081E38093410260913C
:104DA000E7017091E8018091E9019091EA01E090BA
:104DB000FC04FF2400271127A80197010E94502D11
:104DC00030936204209361046091EF017091F001CF
:104DD0008091F1019091F201A80197010E94502D5C
:104DE000309364042093630480912D0590912E05E7
:104DF0009093660480936504809136059091370501
:104E000090936804809367048091300590913105F8
:104E100090936A04809369048091340290913502E2
:104E200090936C0480936B04609113027091140250
:104E3000809115029091160220E032E040E050E0AF
:104E40000E94502D30936E0420936D0480911702C0
:104E500090911802909372048093710480913802AB
:104E60008823A9F06091240570912505882777FD96
:104E70008095982F0E941A2C20913205309133058D
:104E800040913405509135050E94942C2CC06091BE
:104E9000E7017091E8018091E9019091EA01E090C9
:104EA0002405F09025050E941A2CA20191010E9470
:104EB000942C5B016C010027F7FC0095102FC801B2
:104EC000B7010E941A2C2091320530913305409190
:104ED0003405509135050E94942C9B01AC01C6010C
:104EE000B5010E94752B0E94FD2B709325056093E0
:104EF0002405809139028823A9F0609122057091E0
:104F00002305882777FD8095982F0E941A2C2091E1
:104F100032053091330540913405509135050E949A
:104F2000942C2CC06091EF017091F0018091F101FF
:104F30009091F201E0902205F09023050E941A2C36
:104F4000A20191010E94942C5B016C010027F7FCE7
:104F50000095102FC801B7010E941A2C209132052C
:104F60003091330540913405509135050E94942CC1
:104F70009B01AC01C601B5010E94752B0E94FD2B5F
:104F8000709323056093220560913005709131057F
:104F9000E090F701F090F8010091F9011091FA0109
:104FA000882777FD8095982F0E941A2C2091320532
:104FB0003091330540913405509135050E94942C71
:104FC0005B016C01C801B7010E941A2CA20191017A
:104FD0000E94942C20E030E040E05FE30E94942C9B
:104FE0009B01AC01C601B5010E94752B0E94FD2BEF
:104FF00070933105609330058091240590912505CB
:105000008150984034F080E098E09093250580939B
:10501000240580912405909125058050984F34F403
:1050200080E098EF909325058093240580912205D8
:10503000909123058150984034F080E098E090935F
:1050400023058093220580912205909123058050AD
:10505000984F34F480E098EF9093230580932205D5
:1050600080913005909131058150984034F080E076
:1050700098E09093310580933005809130059091B0
:1050800031058050984F34F480E098EF90933105CB
:10509000809330058091F004992780FFBCC0209157
:1050A000850181FF0EC02233B0F4809134029091CB
:1050B00035024497909337028093360210921E0275
:1050C0000DC08091F504289FC0011124449790934E
:1050D00037028093360281E080931E02992021F0EE
:1050E000109237021092360220913402309135022C
:1050F0004091360250913702421753070CF08BC093
:1051000080911E02882309F486C0241B350B8091F0
:1051100086019927AC01249FC001259F900D349FE3
:10512000900D112460E170E00E941B2D8301061B8D
:10513000170B2091C5013091C601809184019927F8
:10514000BC01269FC001279F900D369F900D112412
:1051500068E070E00E941B2D061B170B6091130284
:1051600070911402809115029091160220E032E0B5
:1051700040E050E00E94502DCA01B9012091870102
:105180003327442755270E94DC2C20E230E040E002
:1051900050E00E94502D7FEF2E3C370714F42EEC88
:1051A0003FEF8091420290914302AC01B4E0440F82
:1051B000551FBA95E1F7481B590B2333310514F0FD
:1051C00022E330E0021B130BCA01800F911F60E144
:1051D00070E00E941B2D7093430260934202809105
:1051E000F1049927681779073CF4681679065CF092
:1051F0009093430280934202809142029091430235
:105200006816790624F4709243026092420260901C
:105210004202709043027092700460926F0480901A
:1052200030059090310589819A81881A990AB301D5
:10523000882777FD8095982F0E941A2C5B016C01BE
:1052400023E333E343EB5FE30E94942C7B018C0167
:10525000B401882777FD8095982F0E941A2CA80109
:1052600097010E94272C18162CF4C801B7010E9440
:10527000FD2B4B0123E333E343EB5FEBC601B501A9
:105280000E94942C7B018C01B401882777FD8095C6
:10529000982F0E941A2CA80197010E94242C882381
:1052A0002CF4C801B7010E94FD2B4B019AE069164E
:1052B000710414F48824992420907C0130907D019D
:1052C00040907E0150907F016091240570912505EA
:1052D00020912D0230912E0240915F025091600288
:1052E000241B350B621B730B882777FD8095982F45
:1052F0000E941A2C9B01AC01C201B1010E94942CA6
:105300000E94FD2B70937802609377028091770260
:10531000909178028C01222717FD2095322F8091E1
:105320005B0290915C02A0915D02B0915E02080F59
:10533000191F2A1F3B1F00935B0210935C022093EE
:105340005D0230935E021016110612061306ACF4CD
:10535000C80117FF03C0909581959F4F60E071E0F1
:105360000E941B2D6F5F7F4F882777FD8095982FB8
:10537000061B170B280B390B14C0C80117FF03C0FD
:10538000909581959F4F60E071E00E941B2D6F5FAB
:105390007F4F882777FD8095982F060F171F281FAE
:1053A000391F00935B0210935C0220935D023093DF
:1053B0005E0280915B0290915C02A0915D02B091CF
:1053C0005E028138EEE39E07E0E0AE07E0E0BE0754
:1053D0002CF080E89EE3A0E0B0E009C08058914C3A
:1053E000AF4FBF4F64F480E891ECAFEFBFEF809315
:1053F0005B0290935C02A0935D02B0935E022091E9
:105400007702309178027301EE0CFF1CC7012E1554
:105410003F050CF4C901CC24DD24CE18DF08B60109
:10542000C816D9060CF4BC019301280D391D260FAE
:10543000371F37FF03C040E050E008C080912F05C0
:10544000482F5527241735070CF4A901809126050C
:10545000A82EBB24C501A416B5060CF4CA0180937E
:1054600075029301261B370B280D391D37FF03C02A
:1054700080E090E007C080912F0599272817390711
:105480000CF4C9019501A816B9060CF49C012093EF
:105490007602609122057091230520912F023091B0
:1054A00030024091610250916202241B350B621B55
:1054B000730B882777FD8095982F0E941A2C9B01EB
:1054C000AC01C201B1010E94942C0E94FD2B70938B
:1054D00074026093730280917302909174028C0144
:1054E000222717FD2095322F809157029091580264
:1054F000A0915902B0915A02080F191F2A1F3B1F91
:1055000000935702109358022093590230935A0285
:105510001016110612061306ACF4C80117FF03C0DB
:10552000909581959F4F60E071E00E941B2D6F5F09
:105530007F4F882777FD8095982F061B170B280B28
:10554000390B14C0C80117FF03C0909581959F4F78
:1055500060E071E00E941B2D6F5F7F4F882777FD11
:105560008095982F060F171F281F391F0093570289
:10557000109358022093590230935A028091570297
:1055800090915802A0915902B0915A0281382EE3AD
:10559000920720E0A20720E0B2072CF080E89EE30B
:1055A000A0E0B0E009C08058914CAF4FBF4F64F409
:1055B00080E891ECAFEFBFEF8093570290935802D1
:1055C000A0935902B0935A02809173029091740291
:1055D00097018E159F050CF49C01B601C216D306E7
:1055E0000CF4B9019301260F371F2819390937FF29
:1055F00003C040E050E008C080912F05482F552798
:10560000241735070CF4A9019501A416B5060CF46E
:105610009A0120937B02661A770AB3016819790907
:1056200077FF03C020E030E008C080912F05282FCD
:105630003327621773070CF49B01C501A216B3064A
:105640000CF4C9018093790224960FB6F894DEBF5A
:105650000FBECDBFDF91CF911F910F91FF90EF90C3
:10566000DF90CF90BF90AF909F908F907F906F9082
:105670005F904F903F902F9008958091630290919A
:105680006402A0916502B091660280936B029093D0
:105690006C02A0936D02B0936E02809167029091AC
:1056A0006802A0916902B0916A0280936F029093A0
:1056B0007002A0937102B09372020895109260027A
:1056C00010925F0210926202109261020895FC0132
:1056D0004150504030F001900616D1F73197CF017C
:1056E00008958827992708955058192EEFD001D092
:1056F000D2C0BA176207730784079507B1F188F41F
:105700000EF410940B2EBA2FA02D062E622F202DF2
:10571000072E732F302D082E842F402D092E952F04
:10572000502DFF275523B9F0591B49F0573E98F0EB
:10573000469537952795A795F0405395C9F776F08C
:10574000BA0F621F731F841F30F487957795679592
:10575000B795F040939517FA0F2E0895BF1BBB27FE
:10576000BA0B620B730B840BF6CFDEF6DBC0AED048
:1057700001D091C0552359F0992369F09F575F5785
:10578000951B33F442F4903811F4915805C09BC036
:1057900091589F3F09F4C6C0BB27112462177307B5
:1057A000840730F4660F771F881FBB1F915098F352
:1057B00011D00F920FD00F920DD0A0E82617370707
:1057C00048071B0609F0A048BA2F602D7F918F91E2
:1057D00000240895A0E80024621773078407B10528
:1057E00028F0621B730B840BB1090A2A660F771F1E
:1057F000881FBB1FA69581F7089597FB73D09F372D
:1058000038F0FEE9F91B982F872F762F6B2F05C0F4
:1058100086C09695879577956795F150D0F73EF4B9
:1058200090958095709561957F4F8F4F9F4F08950C
:10583000E89403C097FB0EF4F3DFB62F672F782FA1
:10584000892F9EE9002427C00ED05EF004C00BD043
:1058500026F001C008D019F020F48FEF089580E001
:10586000089581E0089597FB092E052600F86894B5
:1058700030D0E89407FC07C06217730784079507C8
:1058800021F008F400940794989408959A95BB0F1A
:10589000661F771F881F11249923A1F08823B2F770
:1058A0009F3F59F0BB0F48F421F4002011F460FF32
:1058B00004C06F5F7F4F8F4F9F4F881F97958795CD
:1058C00097F908952CC09FEF80EC0895052E0926C6
:1058D00007FA440F551F5F3F79F0AA27A51708F074
:1058E00051E04795880F991F9F3F31F0BB27B917AB
:1058F00008F091E0879508959F919F911124E3CF3F
:1059000097FB880F991F9F3F31F0BB27B91708F00D
:1059100091E0879508959F919F911124D4CF662798
:105920007727882799270895D1DF01D0B4CF99230D
:1059300039F0552329F09F575F57950F13F49AF1CB
:10594000F1CF91589F3FE1F3629FA12D0F92BB27AA
:10595000639FA00DB11DEE27729FA00DB11DEE1F1C
:10596000AF93AA27649FB00DE11D739FB00DE11D99
:10597000AA1F6627829FB00DE11DA61F5527749FA1
:10598000E00DA11D551F839FE00DA11D561F849F93
:10599000A00D511D852F7A2F6E2F1F900F908823F9
:1059A0001AF4939539F48FCF000C111CBB1F661F9E
:1059B000771F881F01280895629FD001739FF0010F
:1059C000829FE00DF11D649FE00DF11D929FF00D8F
:1059D000839FF00D749FF00D659FF00D9927729FC6
:1059E000B00DE11DF91F639FB00DE11DF91FBD0151
:1059F000CF0111240895991B79E004C0991F9617CF
:105A000008F0961B881F7A95C9F780950895AA1B00
:105A1000BB1B51E107C0AA1FBB1FA617B70710F099
:105A2000A61BB70B881F991F5A95A9F780959095CB
:105A3000BC01CD01089597FB092E07260AD077FDFA
:105A400004D0E5DF06D000201AF4709561957F4FF1
:105A50000895F6F7909581959F4F0895A1E21A2E2B
:105A6000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1F02
:105A7000A217B307E407F50720F0A21BB30BE40B52
:105A8000F50B661F771F881F991F1A9469F7609599
:105A90007095809590959B01AC01BD01CF01089553
:105AA00097FB092E05260ED057FD04D0D7DF0AD06C
:105AB000001C38F450954095309521953F4F4F4F3D
:105AC0005F4F0895F6F790958095709561957F4F9B
:105AD0008F4F9F4F0895F999FECFB2BDA1BDF89A9F
:105AE000119600B40895F999FECFB2BDA1BD00BCD6
:105AF00011960FB6F894FA9AF99A0FBE0895FFCF4F
:105B00000A0164FFFF0A016400007D0000FF030139
:105B100002030405060708090A48616C6C6F2057E8
:105B2000656C740000000000000000000000000030
:105B30000000000000000000000000000000000065
:105B40000000000000000000000000000000000055
:105B50000000000000000000000000000000000045
:105B60000000000000000000000A014B616D65723A
:105B700061000053706F7274000064000000803F89
:105B800017B7D13830FB103A409696020A644600A7
:00000001FF
/branches/V0.63_LED1_LED2/Readme.txt
0,0 → 1,17
Diese Version basiert auf V0.63
Sie ist erweitert, um mit der Graupner MX12 mit den beiden linken Schaltern (Flap & Elev D/R) die 2 LED Kanäle der Flight-Crtl schalten zu können.
LED1 wird ein-und ausgeschaltet, LED2 ist als schaltbares Blitzlicht realisiert.
Die MX12 wird folgendermaßen eingestellt:
Flap System: Flap up 100%, Elev 0%
Mixer1: Fla->Fla Offset -100 +50% SW Elev D/R
Damit wird auf Kanal 6 folgendes ausgegeben:
Beide Schalter aus 0%
Elev D/R ein 50%
Flap ein 100%
Beide ein 150%
Die Flight_Ctrl macht daraus die Werte 0, 64, 128, 192
(Funktion PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]])
Es werden die Beriche <32, 32-96, 96-150 und > 150 ausgewertet.
Erst wenn 10 gleiche Bereiche hintereinander erkannt wurden, werden die LEDs ein- oder ausgeschaltet.
Hierdurch wird eine erhöhte Störsicherheit durch kurzzeitigen Senderausfall erreicht.
Die Änderungen befinden sich im wesentlichen in fc.c in den Zeilen 595-606.
/branches/V0.63_LED1_LED2/fc.c
6,14 → 6,14
// + Nur für den privaten Gebrauch
// + www.MikroKopter.com
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation),
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist.
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt
// + bzgl. der Nutzungsbedingungen aufzunehmen.
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation),
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist.
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt
// + bzgl. der Nutzungsbedingungen aufzunehmen.
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen,
// + Verkauf von Luftbildaufnahmen, usw.
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht,
// + 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
24,21 → 24,21
// + Benutzung auf eigene Gefahr
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur
// + mit unserer Zustimmung zulässig
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Redistributions of source code (with or without modifications) must retain the above copyright notice,
// + 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
// + * 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
// + 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
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be
// + clearly linked as origin
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
50,7 → 50,7
// + 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.
// + POSSIBILITY OF SUCH DAMAGE.
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
#include "main.h"
75,12 → 75,19
unsigned char MAX_GAS,MIN_GAS;
unsigned char Notlandung = 0;
unsigned char HoehenReglerAktiv = 0;
//-------HF-------
unsigned char LED_Switch = 0;
unsigned char LED_flash = 0;
unsigned char LED_1 = 0;
unsigned char LED_2 = 0;
unsigned char LED_2on = 0;
//-------HF-------
 
float GyroFaktor;
float IntegralFaktor;
 
volatile int DiffNick,DiffRoll;
int Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0;
int Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0;
volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count;
unsigned char MotorWert[5];
volatile unsigned char SenderOkay = 0;
126,42 → 133,42
//############################################################################
{
unsigned int timer;
NeutralAccX = 0;
NeutralAccX = 0;
NeutralAccY = 0;
NeutralAccZ = 0;
AdNeutralNick = 0;
AdNeutralRoll = 0;
AdNeutralNick = 0;
AdNeutralRoll = 0;
AdNeutralGier = 0;
CalibrierMittelwert();
timer = SetDelay(5);
CalibrierMittelwert();
timer = SetDelay(5);
while (!CheckDelay(timer));
CalibrierMittelwert();
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert?
{
{
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset();
}
 
if(PlatinenVersion == 10)
if(PlatinenVersion == 10)
{
AdNeutralNick= abs(MesswertNick);
AdNeutralRoll= abs(MesswertRoll);
AdNeutralNick= abs(MesswertNick);
AdNeutralRoll= abs(MesswertRoll);
AdNeutralGier= abs(MesswertGier);
}
else
}
else
{
AdNeutralNick= abs(MesswertNick) / 2;
AdNeutralRoll= abs(MesswertRoll) / 2;
AdNeutralNick= abs(MesswertNick) / 2;
AdNeutralRoll= abs(MesswertRoll) / 2;
AdNeutralGier= abs(MesswertGier) / 2;
}
}
NeutralAccY = abs(Mittelwert_AccRoll) / ACC_AMPLIFY;
NeutralAccX = abs(Mittelwert_AccNick) / ACC_AMPLIFY;
NeutralAccZ = Aktuell_az;
Mess_IntegralNick = 0;
 
Mess_IntegralNick = 0;
Mess_IntegralNick2 = 0;
Mess_IntegralRoll = 0;
Mess_IntegralRoll = 0;
Mess_IntegralRoll2 = 0;
Mess_Integral_Gier = 0;
Mess_Integral_Gier = 0;
MesswertNick = 0;
MesswertRoll = 0;
MesswertGier = 0;
170,7 → 177,7
Mess_Integral_Hoch = 0;
KompassStartwert = KompassValue;
GPS_Neutral();
beeptime = 50;
beeptime = 50;
}
 
//############################################################################
177,7 → 184,7
// Bildet den Mittelwert aus den Messwerten
void Mittelwert(void)
//############################################################################
{
{
// ADC auschalten, damit die Werte sich nicht während der Berechnung ändern
ANALOG_OFF;
if(MessanzahlNick) (MesswertNick = AccumulateNick / MessanzahlNick);
196,19 → 203,19
// Integral_Gier2 = Mess_Integral_Gier2;
IntegralNick = Mess_IntegralNick;
IntegralRoll = Mess_IntegralRoll;
IntegralNick2 = Mess_IntegralNick2;
IntegralNick2 = Mess_IntegralNick2;
IntegralRoll2 = Mess_IntegralRoll2;
// ADC einschalten
ANALOG_ON;
ANALOG_ON;
 
/*
//------------------------------------------------------------------------------
if(MesswertNick > 200) MesswertNick += 4 * (MesswertNick - 200);
else
if(MesswertNick < -200) MesswertNick += 4 * (MesswertNick + 200);
else
if(MesswertNick < -200) MesswertNick += 4 * (MesswertNick + 200);
if(MesswertRoll > 200) MesswertRoll += 4 * (MesswertRoll - 200);
else
if(MesswertRoll < -200) MesswertRoll += 4 * (MesswertRoll + 200);
else
if(MesswertRoll < -200) MesswertRoll += 4 * (MesswertRoll + 200);
//------------------------------------------------------------------------------
*/
if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--;
225,7 → 232,7
// Messwerte beim Ermitteln der Nullage
void CalibrierMittelwert(void)
//############################################################################
{
{
// ADC auschalten, damit die Werte sich nicht während der Berechnung ändern
ANALOG_OFF;
if(MessanzahlNick) (MesswertNick = AccumulateNick / MessanzahlNick);
241,7 → 248,7
accumulate_AccNick = 0;messanzahl_AccNick = 0;
accumulate_AccHoch = 0;messanzahl_AccHoch = 0;
// ADC einschalten
ANALOG_ON;
ANALOG_ON;
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--;
256,7 → 263,7
// Senden der Motorwerte per I2C-Bus
void SendMotorData(void)
//############################################################################
{
{
if(MOTOR_OFF || !MotorenEin)
{
Motor_Hinten = 0;
272,16 → 279,16
DebugOut.Analog[12] = Motor_Vorne;
DebugOut.Analog[13] = Motor_Hinten;
DebugOut.Analog[14] = Motor_Links;
DebugOut.Analog[15] = Motor_Rechts;
DebugOut.Analog[15] = Motor_Rechts;
 
//Start I2C Interrupt Mode
twi_state = 0;
motor = 0;
i2c_start();
i2c_start();
}
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Konstanten
// + Konstanten
// + 0-250 -> normale Werte
// + 251 -> Poti1
// + 252 -> Poti2
289,15 → 296,15
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void DefaultKonstanten1(void)
{
EE_Parameter.Kanalbelegung[K_NICK] = 1;
EE_Parameter.Kanalbelegung[K_NICK] = 3;
EE_Parameter.Kanalbelegung[K_ROLL] = 2;
EE_Parameter.Kanalbelegung[K_GAS] = 3;
EE_Parameter.Kanalbelegung[K_GAS] = 1;
EE_Parameter.Kanalbelegung[K_GIER] = 4;
EE_Parameter.Kanalbelegung[K_POTI1] = 5;
EE_Parameter.Kanalbelegung[K_POTI2] = 6;
EE_Parameter.Kanalbelegung[K_POTI3] = 7;
EE_Parameter.Kanalbelegung[K_POTI4] = 8;
EE_Parameter.GlobalConfig = 0;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV | CFG_KOMPASS_FIX;//0x01;
EE_Parameter.GlobalConfig = 0;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV | CFG_KOMPASS_FIX;//0x01;
EE_Parameter.Hoehe_MinGas = 30;
EE_Parameter.MaxHoehe = 251; // Wert : 0-32 251 -> Poti1
EE_Parameter.Hoehe_P = 10; // Wert : 0-32
331,20 → 338,20
EE_Parameter.LoopGasLimit = 50;
EE_Parameter.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag
EE_Parameter.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt
memcpy(EE_Parameter.Name, "Sport\0", 12);
memcpy(EE_Parameter.Name, "Sport\0", 12);
}
 
void DefaultKonstanten2(void)
{
EE_Parameter.Kanalbelegung[K_NICK] = 1;
EE_Parameter.Kanalbelegung[K_NICK] = 3;
EE_Parameter.Kanalbelegung[K_ROLL] = 2;
EE_Parameter.Kanalbelegung[K_GAS] = 3;
EE_Parameter.Kanalbelegung[K_GAS] = 1;
EE_Parameter.Kanalbelegung[K_GIER] = 4;
EE_Parameter.Kanalbelegung[K_POTI1] = 5;
EE_Parameter.Kanalbelegung[K_POTI2] = 6;
EE_Parameter.Kanalbelegung[K_POTI3] = 7;
EE_Parameter.Kanalbelegung[K_POTI4] = 8;
EE_Parameter.GlobalConfig = 0;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV;//0x01;
EE_Parameter.GlobalConfig = 0;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV;//0x01;
EE_Parameter.Hoehe_MinGas = 30;
EE_Parameter.MaxHoehe = 251; // Wert : 0-32 251 -> Poti1
EE_Parameter.Hoehe_P = 10; // Wert : 0-32
377,14 → 384,14
EE_Parameter.ServoNickRefresh = 5;
EE_Parameter.LoopGasLimit = 50;
EE_Parameter.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag
EE_Parameter.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts
memcpy(EE_Parameter.Name, "Kamera\0", 12);
EE_Parameter.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts
memcpy(EE_Parameter.Name, "Kamera\0", 12);
}
 
 
//############################################################################
// Trägt ggf. das Poti als Parameter ein
void ParameterZuordnung(void)
void ParameterZuordnung(void)
//############################################################################
{
 
396,11 → 403,11
CHK_POTI(Parameter_KompassWirkung,EE_Parameter.KompassWirkung,0,255);
CHK_POTI(Parameter_Gyro_P,EE_Parameter.Gyro_P,10,255);
CHK_POTI(Parameter_Gyro_I,EE_Parameter.Gyro_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_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_ServoNickControl,EE_Parameter.ServoNickControl,0,255);
CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255);
CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255);
430,34 → 437,34
static int hoehenregler = 0;
static char TimerWerteausgabe = 0;
static char NeueKompassRichtungMerken = 0;
Mittelwert();
Mittelwert();
 
GRN_ON;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Gaswert ermitteln
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
GasMischanteil = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 120;
if(GasMischanteil < 0) GasMischanteil = 0;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Emfang schlecht
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(SenderOkay < 100)
{
if(!PcZugriff)
if(!PcZugriff)
{
if(BeepMuster == 0xffff)
{
if(BeepMuster == 0xffff)
{
beeptime = 15000;
BeepMuster = 0x0c00;
}
}
}
if(RcLostTimer) RcLostTimer--;
else
if(RcLostTimer) RcLostTimer--;
else
{
MotorenEin = 0;
Notlandung = 0;
}
}
ROT_ON;
if(modell_fliegt > 2000) // wahrscheinlich in der Luft --> langsam absenken
{
469,10 → 476,10
}
else MotorenEin = 0;
}
else
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
else
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Emfang gut
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(SenderOkay > 140)
{
Notlandung = 0;
485,14 → 492,14
{
SummeNick = 0;
SummeRoll = 0;
Mess_Integral_Gier = 0;
Mess_Integral_Gier = 0;
Mess_Integral_Gier2 = 0;
}
if((GasMischanteil > 200) && MotorenEin == 0)
{
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// auf Nullwerte kalibrieren
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) // Neutralwerte
{
unsigned char setting;
514,25 → 521,25
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert?
{
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset();
}
}
ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE);
SetNeutral();
Piep(GetActiveParamSetNumber());
}
}
}
else delay_neutral = 0;
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Gas ist unten
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(GasMischanteil < 35)
{
// Starten
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75)
{
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Einschalten
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(++delay_einschalten > 200)
{
delay_einschalten = 200;
539,7 → 546,7
modell_fliegt = 1;
MotorenEin = 1;
sollGier = 0;
Mess_Integral_Gier = 0;
Mess_Integral_Gier = 0;
Mess_Integral_Gier2 = 0;
Mess_IntegralNick = 0;
Mess_IntegralRoll = 0;
547,13 → 554,13
Mess_IntegralRoll2 = IntegralRoll;
SummeNick = 0;
SummeRoll = 0;
}
}
}
}
else delay_einschalten = 0;
//Auf Neutralwerte setzen
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Auschalten
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75)
{
if(++delay_ausschalten > 200) // nicht sofort
561,19 → 568,19
MotorenEin = 0;
delay_ausschalten = 200;
modell_fliegt = 0;
}
}
}
else delay_ausschalten = 0;
}
}
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// neue Werte von der Funke
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(!NewPpmData-- || Notlandung)
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(!NewPpmData-- || Notlandung)
{
ParameterZuordnung();
StickNick = PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P;
StickNick = PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P;
StickNick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D;
StickRoll = PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P;
StickRoll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D;
584,59 → 591,73
if(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor = 0;
if(GyroFaktor < 0) GyroFaktor = 0;
if(IntegralFaktor < 0) IntegralFaktor = 0;
//------HF------- LEDs Schalten - LED1 Normal, LED2 Blitzlicht
LED_Switch = PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]];
if (((LED_Switch > 32) & (LED_Switch < 96)) | (LED_Switch > 160)) LED_2++; else if (LED_2 > 0) LED_2--;
if ((LED_Switch > 96)) LED_1++; else if (LED_1 > 0) LED_1--;
if (LED_1 >= 10) {LED_1 = 10; LED1_ON;}
if (LED_1 <= 1) LED1_OFF;
if (LED_2 >= 10) {LED_2 = 10; LED_2on = 1;}
if (LED_2 <= 1) LED_2on = 0;
if (LED_2on == 1) LED_flash++;
if (LED_flash > 77) LED2_ON; else LED2_OFF;
if (LED_flash > 80) LED_flash = 0;
//------HF------- End LEDs Schalten
 
// greift in den Stick ein, um ungewolltes überschlagen zu verhindern
if(!(EE_Parameter.LoopConfig & CFG_LOOP_LINKS) && !(EE_Parameter.LoopConfig & CFG_LOOP_RECHTS))
{
if(IntegralNick > 60000)
{
StickNick -= 8 * EE_Parameter.Stick_P;
if(IntegralNick > 80000) StickNick -= 16 * EE_Parameter.Stick_P;
}
if(IntegralNick > 60000)
{
StickNick -= 8 * EE_Parameter.Stick_P;
if(IntegralNick > 80000) StickNick -= 16 * EE_Parameter.Stick_P;
}
else
if(IntegralNick < -60000)
if(IntegralNick < -60000)
{
StickNick += 8 * EE_Parameter.Stick_P;
if(IntegralNick > 80000) StickNick -= 16 * EE_Parameter.Stick_P;
}
if(IntegralRoll > 60000)
{
StickRoll -= 8 * EE_Parameter.Stick_P;
if(IntegralRoll > 80000) StickRoll -= 16 * EE_Parameter.Stick_P;
}
if(IntegralNick > 80000) StickNick -= 16 * EE_Parameter.Stick_P;
}
if(IntegralRoll > 60000)
{
StickRoll -= 8 * EE_Parameter.Stick_P;
if(IntegralRoll > 80000) StickRoll -= 16 * EE_Parameter.Stick_P;
}
else
if(IntegralRoll < -60000)
if(IntegralRoll < -60000)
{
StickRoll += 8 * EE_Parameter.Stick_P;
if(IntegralRoll > 80000) StickRoll -= 16 * EE_Parameter.Stick_P;
}
if(IntegralRoll > 80000) StickRoll -= 16 * EE_Parameter.Stick_P;
}
}
 
}
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Looping?
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_LINKS) ||
((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < -EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_RECHTS))
{
{
Looping_Roll = 1;
if(GasMischanteil > EE_Parameter.LoopGasLimit) GasMischanteil = EE_Parameter.LoopGasLimit;
}
else Looping_Roll = 0;
else Looping_Roll = 0;
 
if(((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_OBEN) ||
((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_UNTEN))
{
{
Looping_Nick = 1;
Looping_Roll = 0;
Looping_Roll = 0;
if(GasMischanteil > EE_Parameter.LoopGasLimit) GasMischanteil = EE_Parameter.LoopGasLimit;
}
else Looping_Nick = 0;
else Looping_Nick = 0;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Bei Empfangsausfall im Flug
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Bei Empfangsausfall im Flug
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(Notlandung)
{
StickGier = 0;
646,10 → 667,10
IntegralFaktor = 0.005;
Looping_Roll = 0;
Looping_Nick = 0;
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Gyro-Drift kompensieren
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#define DRIFT_FAKTOR 3
if(ZaehlMessungen >= 1000 / DRIFT_FAKTOR)
{
660,24 → 681,24
if(IntegralFehlerNick < -500/DRIFT_FAKTOR) AdNeutralNick--;
if(IntegralFehlerRoll > 500/DRIFT_FAKTOR) AdNeutralRoll++;
if(IntegralFehlerRoll < -500/DRIFT_FAKTOR) AdNeutralRoll--;
// if(Mess_Integral_Gier2 > 500/DRIFT_FAKTOR) AdNeutralGier--; // macht nur mit Referenz (Kompass Sinn)
// if(Mess_Integral_Gier2 <-500/DRIFT_FAKTOR) AdNeutralGier++; // macht nur mit Referenz (Kompass Sinn)
// if(Mess_Integral_Gier2 > 500/DRIFT_FAKTOR) AdNeutralGier--; // macht nur mit Referenz (Kompass Sinn)
// if(Mess_Integral_Gier2 <-500/DRIFT_FAKTOR) AdNeutralGier++; // macht nur mit Referenz (Kompass Sinn)
ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern
Mess_IntegralNick2 = IntegralNick;
Mess_IntegralNick2 = IntegralNick;
Mess_IntegralRoll2 = IntegralRoll;
Mess_Integral_Gier2 = Integral_Gier;
ANALOG_ON; // ADC einschalten
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Integrale auf ACC-Signal abgleichen
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(IntegralFaktor && !Looping_Nick && !Looping_Roll)
{
tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick);
if(labs(Mittelwert_AccNick) < 200) tmp_long /= 8;
if(labs(Mittelwert_AccNick) < 200) tmp_long /= 8;
else tmp_long /= 16;
tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll);
if(labs(Mittelwert_AccRoll) < 200) tmp_long2 /= 8;
tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll);
if(labs(Mittelwert_AccRoll) < 200) tmp_long2 /= 8;
else tmp_long2 /= 16;
 
#define AUSGLEICH 500
686,7 → 707,7
if(tmp_long2 > AUSGLEICH) tmp_long2 = AUSGLEICH;
if(tmp_long2 <-AUSGLEICH) tmp_long2 =-AUSGLEICH;
}
else
else
{
tmp_long = 0;
tmp_long2 = 0;
694,26 → 715,26
ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern
Mess_IntegralNick -= tmp_long;
Mess_IntegralRoll -= tmp_long2;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Gieren
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(abs(StickGier) > 35)
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(abs(StickGier) > 35)
{
if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX)) NeueKompassRichtungMerken = 1;
}
tmp_int = EE_Parameter.Gier_P * (StickGier * abs(StickGier)) / 512; // expo y = ax + bx²
tmp_int += (EE_Parameter.Gier_P * StickGier) / 4;
tmp_int += (EE_Parameter.Gier_P * StickGier) / 4;
sollGier = tmp_int;
Mess_Integral_Gier -= tmp_int;
Mess_Integral_Gier -= tmp_int;
if(Mess_Integral_Gier > 25000) Mess_Integral_Gier = 25000; // begrenzen
if(Mess_Integral_Gier <-25000) Mess_Integral_Gier =-25000;
 
ANALOG_ON; // ADC einschalten
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Kompass
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(KompassValue && (EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV))
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(KompassValue && (EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV))
{
int w,v;
static int SignalSchlecht = 0;
720,8 → 741,8
w = abs(IntegralNick /512); // mit zunehmender Neigung den Einfluss drosseln
v = abs(IntegralRoll /512);
if(v > w) w = v; // grösste Neigung ermitteln
if(w < 25 && NeueKompassRichtungMerken && !SignalSchlecht)
{
if(w < 25 && NeueKompassRichtungMerken && !SignalSchlecht)
{
KompassStartwert = KompassValue;
NeueKompassRichtungMerken = 0;
}
733,14 → 754,14
if(!SignalSchlecht) Mess_Integral_Gier += (KompassRichtung * w) / 32; // nach Kompass ausrichten
ANALOG_ON; // ADC einschalten
if(SignalSchlecht) SignalSchlecht--;
}
}
else SignalSchlecht = 500; // so lange das Signal taub stellen --> ca. 1 sek
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Debugwerte zuordnen
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(!TimerWerteausgabe--)
{
TimerWerteausgabe = 49;
769,17 → 790,17
// DebugOut.Analog[9] = SollHoehe;
// DebugOut.Analog[10] = Mess_Integral_Gier / 128;
// DebugOut.Analog[11] = KompassStartwert;
// DebugOut.Analog[10] = Parameter_Gyro_I;
// DebugOut.Analog[10] = EE_Parameter.Gyro_I;
// DebugOut.Analog[9] = KompassRichtung;
// DebugOut.Analog[10] = Parameter_Gyro_I;
// DebugOut.Analog[10] = EE_Parameter.Gyro_I;
// DebugOut.Analog[9] = KompassRichtung;
// DebugOut.Analog[10] = GasMischanteil;
// DebugOut.Analog[3] = HoeheD * 32;
// DebugOut.Analog[4] = hoehenregler;
}
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Drehgeschwindigkeit und -winkel zu einem Istwert zusammenfassen
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(Looping_Nick) MesswertNick = MesswertNick * GyroFaktor;
else MesswertNick = IntegralNick * IntegralFaktor + MesswertNick * GyroFaktor;
if(Looping_Roll) MesswertRoll = MesswertRoll * GyroFaktor;
796,10 → 817,10
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
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//OCR0B = 180 - (Poti1 + 120) / 4;
//DruckOffsetSetting = OCR0B;
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung
807,15 → 828,15
int tmp_int;
if(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER) // Regler wird über Schalter gesteuert
{
if(Parameter_MaxHoehe < 50)
if(Parameter_MaxHoehe < 50)
{
SollHoehe = HoehenWert - 20; // Parameter_MaxHoehe ist der PPM-Wert des Schalters
HoehenReglerAktiv = 0;
}
else
else
HoehenReglerAktiv = 1;
}
else
else
{
SollHoehe = Parameter_MaxHoehe * EE_Parameter.Hoehe_Verstaerkung - 20;
HoehenReglerAktiv = 1;
831,24 → 852,24
if(tmp_int > 50) tmp_int = 50;
else if(tmp_int < -50) tmp_int = -50;
h -= tmp_int;
hoehenregler = (hoehenregler*15 + h) / 16;
hoehenregler = (hoehenregler*15 + h) / 16;
if(hoehenregler < EE_Parameter.Hoehe_MinGas) // nicht unter MIN
{
if(GasMischanteil >= EE_Parameter.Hoehe_MinGas) hoehenregler = EE_Parameter.Hoehe_MinGas;
if(GasMischanteil < EE_Parameter.Hoehe_MinGas) hoehenregler = GasMischanteil;
}
}
if(hoehenregler > GasMischanteil) hoehenregler = GasMischanteil; // nicht mehr als Gas
GasMischanteil = hoehenregler;
}
}
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Mischer und PI-Regler
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DebugOut.Analog[7] = GasMischanteil;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Gier-Anteil
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#define MUL_G 1.4
GierMischanteil = MesswertGier - sollGier; // Regler für Gier
//GierMischanteil = 0;
856,35 → 877,35
if(GierMischanteil < -(MUL_G * GasMischanteil)) GierMischanteil = -(MUL_G * GasMischanteil);
 
if(GasMischanteil < 10) GierMischanteil = 0;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Nick-Achse
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
DiffNick = Kp * (MesswertNick - (StickNick - GPS_Nick)); // Differenz bestimmen
SummeNick += DiffNick; // I-Anteil
if(SummeNick > 0) SummeNick-= (abs(SummeNick)/256 + 1); else SummeNick += abs(SummeNick)/256 + 1;
if(SummeNick > 0) SummeNick-= (abs(SummeNick)/256 + 1); else SummeNick += abs(SummeNick)/256 + 1;
if(SummeNick > 16000) SummeNick = 16000;
if(SummeNick < -16000) SummeNick = -16000;
pd_ergebnis = DiffNick;// + Ki * SummeNick; // PI-Regler für Nick
pd_ergebnis = DiffNick;// + Ki * SummeNick; // PI-Regler für Nick
// Motor Vorn
#define MUL 2
if((pd_ergebnis > MUL * (GasMischanteil))) pd_ergebnis = MUL * (GasMischanteil);
if((pd_ergebnis < -MUL * (GasMischanteil))) pd_ergebnis = -MUL * (GasMischanteil);
if((pd_ergebnis > MUL * (GasMischanteil))) pd_ergebnis = MUL * (GasMischanteil);
if((pd_ergebnis < -MUL * (GasMischanteil))) pd_ergebnis = -MUL * (GasMischanteil);
 
motorwert = GasMischanteil + pd_ergebnis + GierMischanteil; // Mischer
if ((motorwert < 0)) motorwert = 0;
else if(motorwert > MAX_GAS) motorwert = MAX_GAS;
if (motorwert < MIN_GAS) motorwert = MIN_GAS;
Motor_Vorne = motorwert;
if (motorwert < MIN_GAS) motorwert = MIN_GAS;
Motor_Vorne = motorwert;
// Motor Heck
motorwert = GasMischanteil - pd_ergebnis + GierMischanteil;
if ((motorwert < 0)) motorwert = 0;
else if(motorwert > MAX_GAS) motorwert = MAX_GAS;
if (motorwert < MIN_GAS) motorwert = MIN_GAS;
Motor_Hinten = motorwert;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Motor_Hinten = motorwert;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Roll-Achse
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DiffRoll = Kp * (MesswertRoll - (StickRoll - GPS_Roll)); // Differenz bestimmen
SummeRoll += DiffRoll; // I-Anteil
if(SummeRoll > 0) SummeRoll-= (abs(SummeRoll)/256 + 1); else SummeRoll += abs(SummeRoll)/256 + 1;
891,19 → 912,19
if(SummeRoll > 16000) SummeRoll = 16000;
if(SummeRoll < -16000) SummeRoll = -16000;
pd_ergebnis = DiffRoll;// + Ki * SummeRoll; // PI-Regler für Roll
if((pd_ergebnis > MUL * (GasMischanteil))) pd_ergebnis = MUL * (GasMischanteil);
if((pd_ergebnis < -MUL * (GasMischanteil))) pd_ergebnis = -MUL * (GasMischanteil);
if((pd_ergebnis > MUL * (GasMischanteil))) pd_ergebnis = MUL * (GasMischanteil);
if((pd_ergebnis < -MUL * (GasMischanteil))) pd_ergebnis = -MUL * (GasMischanteil);
// Motor Links
motorwert = GasMischanteil + pd_ergebnis - GierMischanteil;
if ((motorwert < 0)) motorwert = 0;
else if(motorwert > MAX_GAS) motorwert = MAX_GAS;
if (motorwert < MIN_GAS) motorwert = MIN_GAS;
Motor_Links = motorwert;
Motor_Links = motorwert;
// Motor Rechts
motorwert = GasMischanteil - pd_ergebnis - GierMischanteil;
if ((motorwert < 0)) motorwert = 0;
else if(motorwert > MAX_GAS) motorwert = MAX_GAS;
if (motorwert < MIN_GAS) motorwert = MIN_GAS;
if (motorwert < MIN_GAS) motorwert = MIN_GAS;
Motor_Rechts = motorwert;
// +++++++++++++++++++++++++++++++++++++++++++++++
}
/branches/V0.63_LED1_LED2/main.c
113,7 → 113,11
StickGier = 0; PPM_in[K_GAS] = 0;StickRoll = 0; StickNick = 0;
 
ROT_OFF;
//--------HF------
LED1_OFF;
LED2_OFF;
//--------HF------
Timer_Init();
UART_Init();
rc_sum_init();
/branches/V0.63_LED1_LED2/main.h
15,9 → 15,15
#define ROT_OFF {if(PlatinenVersion == 10) PORTB &=~0x01; else PORTB |= 0x01;}
#define ROT_ON {if(PlatinenVersion == 10) PORTB |= 0x01; else PORTB &=~0x01;}
#define ROT_FLASH PORTB ^= 0x01
#define GRN_OFF PORTB &=~0x02
#define GRN_ON PORTB |= 0x02
#define GRN_OFF PORTB &=~0x02
#define GRN_ON PORTB |= 0x02
#define GRN_FLASH PORTB ^= 0x02
//-------------H.F.------------
#define LED1_ON PORTC |= 0x04
#define LED1_OFF PORTC &=~0x04
#define LED2_ON PORTC |= 0x08
#define LED2_OFF PORTC &=~0x08
//-------------H.F.------------
 
//#ifndef F_CPU
//#error ################## F_CPU nicht definiert oder ungültig #############
45,7 → 51,7
#define CFG_LOOP_LINKS 0x04
#define CFG_LOOP_RECHTS 0x08
 
//#define SYSCLK
//#define SYSCLK
//extern unsigned long SYSCLK;
extern volatile int i_Nick[20],i_Roll[20],DiffNick,DiffRoll;
extern volatile unsigned char SenderOkay;
87,7 → 93,7
 
 
#define DELAY_US(x) ((unsigned int)( (x) * 1e-6 * F_CPU ))
 
#endif //_MAIN_H
 
 
/branches/V0.63_LED1_LED2/menu.c
21,14 → 21,14
 
void LcdClear(void)
{
unsigned char i;
for(i=0;i<80;i++) DisplayBuff[i] = ' ';
unsigned char i;
for(i=0;i<80;i++) DisplayBuff[i] = ' ';
}
 
void Menu(void)
{
static unsigned char MaxMenue = 10,MenuePunkt=0;
static unsigned char MaxMenue = 10,MenuePunkt=0;
 
if(RemoteTasten & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue; LcdClear(); }
if(RemoteTasten & KEY2) { MenuePunkt++; LcdClear(); }
if((RemoteTasten & KEY1) && (RemoteTasten & KEY2)) MenuePunkt = 0;
35,7 → 35,7
LCD_printfxy(17,0,"[%i]",MenuePunkt);
switch(MenuePunkt)
{
case 0:
case 0:
LCD_printfxy(0,0,"++ MikroKopter ++");
LCD_printfxy(0,1,"HW:V%d.%d SW:%d.%d",PlatinenVersion/10,PlatinenVersion%10,VERSION_HAUPTVERSION, VERSION_NEBENVERSION);
LCD_printfxy(0,2,"Setting: %d ",GetActiveParamSetNumber());
43,68 → 43,68
// if(RemoteTasten & KEY3) TestInt--;
// if(RemoteTasten & KEY4) TestInt++;
break;
case 1:
case 1:
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
{
else
{
LCD_printfxy(0,1,"Keine ");
LCD_printfxy(0,2,"Höhenregelung");
}
 
break;
case 2:
case 2:
LCD_printfxy(0,0,"akt. Lage");
LCD_printfxy(0,1,"Nick: %5i",IntegralNick/1024);
LCD_printfxy(0,2,"Roll: %5i",IntegralRoll/1024);
LCD_printfxy(0,3,"Kompass: %5i",KompassValue);
break;
case 3:
case 3:
LCD_printfxy(0,0,"K1:%4i K2:%4i ",PPM_in[1],PPM_in[2]);
LCD_printfxy(0,1,"K3:%4i K4:%4i ",PPM_in[3],PPM_in[4]);
LCD_printfxy(0,2,"K5:%4i K6:%4i ",PPM_in[5],PPM_in[6]);
LCD_printfxy(0,3,"K7:%4i K8:%4i ",PPM_in[7],PPM_in[8]);
break;
case 4:
case 4:
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 5:
case 5:
LCD_printfxy(0,0,"Gyro - Sensor");
LCD_printfxy(0,1,"Nick %4i (%3i)",AccumulateNick / MessanzahlNick, AdNeutralNick);
LCD_printfxy(0,2,"Roll %4i (%3i)",AccumulateRoll / MessanzahlRoll, AdNeutralRoll);
LCD_printfxy(0,3,"Gier %4i (%3i)",AccumulateGier / MessanzahlGier, AdNeutralGier);
break;
case 6:
case 6:
LCD_printfxy(0,0,"ACC - Sensor");
LCD_printfxy(0,1,"Nick %4i (%3i)",accumulate_AccNick / messanzahl_AccNick,NeutralAccX);
LCD_printfxy(0,2,"Roll %4i (%3i)",accumulate_AccRoll / messanzahl_AccRoll,NeutralAccY);
LCD_printfxy(0,3,"Hoch %4i (%3i)",Aktuell_az/*accumulate_AccHoch / messanzahl_AccHoch*/,(int)NeutralAccZ);
break;
case 7:
case 7:
LCD_printfxy(0,1,"Spannung: %5i",UBat);
LCD_printfxy(0,2,"Empf.Pegel:%5i",SenderOkay);
break;
case 8:
case 8:
LCD_printfxy(0,0,"Kompass ");
LCD_printfxy(0,1,"Richtung: %5i",KompassRichtung);
LCD_printfxy(0,2,"Messwert: %5i",KompassValue);
LCD_printfxy(0,3,"Start: %5i",KompassStartwert);
break;
case 9:
case 9:
LCD_printfxy(0,0,"Poti1: %3i",Poti1);
LCD_printfxy(0,1,"Poti2: %3i",Poti2);
LCD_printfxy(0,2,"Poti3: %3i",Poti3);
LCD_printfxy(0,3,"Poti4: %3i",Poti4);
break;
case 10:
case 10:
LCD_printfxy(0,0,"Servo " );
LCD_printfxy(0,1,"Setpoint %3i",Parameter_ServoNickControl);
LCD_printfxy(0,2,"Stellung: %3i",ServoValue);
111,8 → 111,8
LCD_printfxy(0,3,"Range:%3i-%3i",EE_Parameter.ServoNickMin,EE_Parameter.ServoNickMax);
break;
default: MaxMenue = MenuePunkt - 1;
MenuePunkt = 0;
MenuePunkt = 0;
break;
}
RemoteTasten = 0;
}
}