/branches/V0.70_safer_engine_stop/Flight-Ctrl_MEGA644_V0_70d.hex |
---|
0,0 → 1,2340 |
:100000000C9467020C9482020C9482020C9482027B |
:100010000C9482020C9482020C9482020C94820250 |
:100020000C9482020C94FA0D0C9482020C94DB0D59 |
:100030000C94471A0C9482020C9482020C94820253 |
:100040000C9482020C9482020C94A30C0C948202F5 |
:100050000C9445050C9482020C940F050C948202BA |
:100060000C941F100C9482020C9465190C9482025B |
:100070008C199119A819B419C219B919C219E01922 |
:10008000071AF219F4190E1AFC19071AF719F919B7 |
:100090000E1AFC19071A091A0B1A0E1A121A0A0D4F |
:1000A000466C69676874436F6E74726F6C0A0D48B2 |
:1000B000617264776172653A25642E25640A0D5376 |
:1000C0006F6674776172653A5625642E25642563E0 |
:1000D00020000A0D3D3D3D3D3D3D3D3D3D3D3D3D0D |
:1000E0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D40 |
:1000F0003D3D000A0D496E69742E20454550524F12 |
:100100004D3A2047656E6572696572652044656683 |
:1001100061756C742D506172616D657465722E2EFF |
:100120002E000A0D414343206E69636874206162AA |
:100130006765676C696368656E21000A0D42656ECC |
:1001400075747A6520506172616D65746572736152 |
:10015000747A202564000A0D4162676C65696368E2 |
:10016000204C756674647275636B73656E736F7221 |
:100170002E2E004F4B0A0D000A0D537465756572E3 |
:10018000756E673A200048656164696E67486F6CF8 |
:1001900064004E65757472616C000A0A0D002E00D1 |
:1001A0005B25695D005B25695D002B204D696B72E5 |
:1001B0006F4B6F70746572202B0048573A56256458 |
:1001C0002E25642053573A25642E25642563005359 |
:1001D000657474696E673A202564200028632920BD |
:1001E000486F6C676572204275737300486F65686D |
:1001F000653A202020202025356900536F6C6C481B |
:100200006F6568653A20253569004C7566746472BF |
:1002100075636B3A20253569004F666620202020E3 |
:1002200020203A20253569004B65696E652000481D |
:10023000F668656E726567656C756E6700616B74F4 |
:100240002E204C616765004E69636B3A20202020A8 |
:10025000202025356900526F6C6C3A202020202028 |
:1002600020253569004B6F6D706173733A20202033 |
:10027000253569004B313A25346920204B323A2527 |
:10028000346920004B333A25346920204B343A2519 |
:10029000346920004B353A25346920204B363A2505 |
:1002A000346920004B373A25346920204B383A25F1 |
:1002B000346920004E693A2534692020526F3A256E |
:1002C0003469200047733A253469202047693A256C |
:1002D0003469200050313A253469202050323A25C3 |
:1002E0003469200050333A253469202050343A25AF |
:1002F000346920004779726F202D2053656E736F2B |
:1003000072004E69636B20253469202825336929E2 |
:1003100000526F6C6C202534692028253369290030 |
:100320004769657220253469202825336929004EE4 |
:1003300069636B2025346920282533692900526FB1 |
:100340006C6C2025346920282533692900476965AC |
:100350007220253469202825336929004E69636B92 |
:100360002025346920282533692928253369290067 |
:10037000526F6C6C20253469202825336929282583 |
:10038000336929004769657220253469202825339F |
:100390006929282533692900414343202D205365CD |
:1003A0006E736F72004E69636B20253469202825B7 |
:1003B00033692900526F6C6C20253469202825335D |
:1003C000692900486F63682025346920282533692E |
:1003D00029005370616E6E756E673A20202535696D |
:1003E00000456D70662E506567656C3A253569006D |
:1003F0004B6F6D70617373202020202020200052ED |
:1004000069636874756E673A2020253569004D650B |
:100410007373776572743A202025356900537461CF |
:1004200072743A202020202025356900506F7469AD |
:10043000313A202025336900506F7469323A202008 |
:1004400025336900506F7469333A202025336900E1 |
:10045000506F7469343A20202533690053657276F1 |
:100460006F202000536574706F696E7420202533EF |
:1004700069005374656C6C756E673A2025336900AA |
:1004800052616E67653A2533692D253369004578D9 |
:100490007465726E436F6E74726F6C2020004E69CB |
:1004A0003A2534692020526F3A2534692000477379 |
:1004B0003A253469202047693A2534692000486983 |
:1004C0003A253469202043663A25346920001124F6 |
:1004D0001FBECFEFD0E1DEBFCDBF13E0A0E0B1E0A3 |
:1004E000E6E6FFE802C005900D92A43BB107D9F7FC |
:1004F00018E0A4EBB3E001C01D92AD36B107E1F7FF |
:100500000C94F4020C940000FB01863008F085E0A6 |
:10051000489FD0011124AC59BF4F842F99270197D0 |
:1005200024F00E949F470192FACF0E94134508953C |
:10053000282FFB01863008F025E0429FD0011124CE |
:10054000AC59BF4F842F9927019724F001900E9446 |
:10055000A747FACFA2E0B0E0022E0E94A7470E9470 |
:1005600013450895A2E0B0E09D010E949F47802DB1 |
:10057000863028F082E0D901082E0E94A7479927EB |
:10058000089580917807E82FFF27EE0FFF1FE65BA5 |
:10059000F84F808191818D5E9F4F14F0109202017F |
:1005A000808191818A5B9F4FBCF4809102018823F6 |
:1005B00099F481E080930201809147068F5F8093D8 |
:1005C0004706853038F088EE93E09093D40380930B |
:1005D000D30302C00E943C1D809147069927909347 |
:1005E0001507809314070895CFEFD0E1DEBFCDBF8C |
:1005F00014B815B897EEE92E93E0F92E8EEC9FEF24 |
:10060000E80EF91EF7FEFACF88EEE82E83E0F82E0A |
:10061000189B06C0199B02C08DE003C08BE001C08F |
:100620008AE08093010181E887B98FEF88B98BE177 |
:1006300084B981E085B98EE38AB9579A87EF8BB97F |
:1006400084B7877F84BF8091600088618093600059 |
:100650001092600080ED97E09093D4038093D303D1 |
:10066000109233041092320410924F0710924E07EA |
:10067000109235041092340410923704109236040C |
:10068000809101018A3011F4289801C0289A0E94B3 |
:100690008A0D0E949C080E94321A0E94180F0E9424 |
:1006A0002E190E945F4278941092370686E4809358 |
:1006B000380688E08093390681E080933A0684E624 |
:1006C00090E09F938F9386E490E09F938F931F9287 |
:1006D0001F92809101016AE00E942F47892F99277C |
:1006E0009F938F93809101010E942F4799279F9399 |
:1006F0008F938EE990E09F938F931F920E94190A27 |
:100700008DB79EB70D960FB6F8949EBF0FBE8DBFE6 |
:1007100082ED90E09F938F931F920E94190A80911F |
:1007200001010F900F900F908C3010F4299A01C0A6 |
:10073000299801E010E0D8010E949F47802D87345E |
:1007400061F183EF90E09F938F931F920E94190AAB |
:100750000E94311BC0E00F900F900F90C23039F013 |
:10076000C33019F40E94911C04C0C43010F00E94E0 |
:10077000E01B43E568E777E08C2F0E949802CF5F8B |
:10078000C63060F3A2E0B0E083E0082E0E94A747E5 |
:1007900087E4D801082E0E94A747A4E0B0E00E9499 |
:1007A0009F47802D853050F082E291E09F938F9398 |
:1007B0001F920E94190A0F900F900F900E94B20290 |
:1007C00043E568E777E00E9484020E94B20299271D |
:1007D0009F938F938BE391E09F938F931F920E943F |
:1007E000190A809180070F900F900F900F900F9033 |
:1007F00080FF20C086E591E09F938F931F920E9417 |
:10080000190A88EE93E00E94810D7C010E941E0F60 |
:100810000F900F900F90C7010E94B10D8823D9F35C |
:1008200083E791E09F938F931F920E94190A0F9084 |
:100830000F900F900E945425809101018A3011F48D |
:10084000289801C0289A80ED97E09093D403809374 |
:10085000D30385E58093490688E791E09F938F93C2 |
:100860001F920E94190A809180070F900F900F909D |
:1008700082FF03C086E891E002C082E991E09F9385 |
:100880008F931F920E94190A0F900F900F908AE980 |
:1008900091E09F938F931F920E94190A0E94281340 |
:1008A00088E893E1909392038093910381E0809391 |
:1008B00048060F900F900F908091D703882309F47A |
:1008C000A6C01092D70380914706882319F00E9492 |
:1008D000C10202C00E94912A0E94F42620910101C7 |
:1008E0002A3011F4289801C0289A809103038823A4 |
:1008F00021F081508093030312C08093B40380934E |
:10090000B5038093530610921604109215041092AA |
:100910001404109213041092120410921104809186 |
:100920003804882329F0809138048150809338045A |
:100930008091910390919203892B01F585E090E0DD |
:1009400090939203809391030E944819809106032B |
:10095000909107038F5F9F4FF9F480912F048823B4 |
:10096000D9F080E197E29093D4038093D30380E899 |
:1009700090E090930703809306030EC0809191034B |
:1009800090919203019790939203809391032A3060 |
:1009900011F4289801C0289A8091D703882321F068 |
:1009A00080912F04882311F40E94C2080E942F070F |
:1009B000C7010E94B10D882341F180919007282F33 |
:1009C00033278091170390911803821793079CF4A3 |
:1009D00080910603909107038F5F9F4F61F480E73A |
:1009E00097E19093D4038093D30380E093E09093B6 |
:1009F0000703809306030E94474484E08093D20358 |
:100A000084E190E00E94810D7C010E94224580914A |
:100A1000D203882309F050CF0E9488444DCF1F9203 |
:100A20000F920FB60F9211248F939F93EF93FF9322 |
:100A3000809105038823E1F48091C8039091C90354 |
:100A400001969093C9038093C803FC01E75FFA4FB6 |
:100A5000E081ED3019F08639910539F41092C9031F |
:100A60001092C80381E080930503E093C60004C0A0 |
:100A70001092C9031092C803FF91EF919F918F913B |
:100A80000F900FBE0F901F9018951F920F920FB6E8 |
:100A90000F9211242F933F934F935F938F939F93C4 |
:100AA000AF93BF93EF93FF9390E08091C600809344 |
:100AB000C3035091CE03563910F09093CF03809129 |
:100AC000C3038D3009F05FC08091CF03823009F0FD |
:100AD0005AC09093CF03852F99278A5A994FFC01CA |
:100AE000329740812091CA033091CB03241B3109F6 |
:100AF000DC0111978C91281B3109C9019F709093DB |
:100B0000CB038093CA0346E0969587954A95E1F713 |
:100B1000982F935C9093CC032F733070235C2093B9 |
:100B2000CD038081981729F48C91281711F491E056 |
:100B300006C090E08091C0038F5F8093C0038091D6 |
:100B4000C203882309F06EC0992309F46BC081E0C9 |
:100B50008093C2035093BF03E52FFF27EA5AF94F52 |
:100B60008DE0808380915806823509F05BC088E172 |
:100B700090E02CE00FB6F894A895809360000FBE2B |
:100B8000209360004FC02091CF03822F992781309E |
:100B90009105F9F0823091051CF4892B21F040C0B9 |
:100BA000029711F13DC08091C303833239F48091E3 |
:100BB000C203882319F481E08093CF038091C3039B |
:100BC0008093560681E08093CE038091C3039927DA |
:100BD00022C02F5F2093CF03E52FFF27EA5AF94F5A |
:100BE0008091C303808309C0E52FFF27EA5AF94F9C |
:100BF0008091C3038083563920F45F5F5093CE0306 |
:100C000002C01092CF032091C3038091CA03909138 |
:100C1000CB03820F911D9093CB038093CA0302C034 |
:100C20001092CF03FF91EF91BF91AF919F918F9160 |
:100C30005F914F913F912F910F900FBE0F901F909A |
:100C40001895AC01A0E0B0E09D01A817B90748F4E1 |
:100C5000E9E0F5E08191280F311D1196A417B50741 |
:100C6000C8F33F70FD01E75FFA4FC90156E0969562 |
:100C700087955A95E1F7835C80831196FD01E75FC4 |
:100C8000FA4F2F733070822F835C8083A65FBA4F38 |
:100C90008DE08C9310920503809109058093C60026 |
:100CA00008951F93CF93DF93382FEA01722F10E03E |
:100CB00083E28093090560930A0530930B05A3E056 |
:100CC000B0E0772309F458C0772311F4972F07C0B9 |
:100CD000FE01E10FF11D1F5F9081715011F4472F4C |
:100CE0000EC0FE01E10FF11D1F5F4081715039F010 |
:100CF000FE01E10FF11D1F5F6081715001C0672F80 |
:100D0000FD01E75FFA4F892F86958695835C808386 |
:100D10001196FD01E75FFA4F892F99278370907034 |
:100D200024E0880F991F2A95E1F755279A0194E04E |
:100D3000369527959A95E1F7822B835C80831196EF |
:100D4000FD01E75FFA4F4F705070440F551F440F7D |
:100D5000551F862F992726E0969587952A95E1F7C6 |
:100D6000842B835C80831196FD01E75FFA4F6F73DC |
:100D7000635C60831196A5CFCD010E942106DF91AF |
:100D8000CF911F9108951F93CF93DF93EC0110E053 |
:100D9000662309F460C0A22FBB271297E42FFF2718 |
:100DA000EA5AF94F30813D534F5FE42FFF27EA5A4B |
:100DB000F94F50815D534F5FE42FFF27EA5AF94FF7 |
:100DC00070817D534F5FE42FFF27EA5AF94FE0818E |
:100DD000ED534F5F842F9927A817B907E4F1832FAC |
:100DE0009927880F991F880F991F352F32953F70CB |
:100DF000382B852F99278F709070F4E0880F991FFA |
:100E0000FA95E1F7572F56955695582B872F992726 |
:100E10008370907076E0880F991F7A95E1F78E2B9A |
:100E200061506F3FC1F0FE01E10FF11D30831F5F84 |
:100E300061506F3F81F0FE01E10FF11D50831F5F94 |
:100E400061506F3F41F0FE01E10FF11D80831F5F94 |
:100E5000662309F0A3CFDF91CF911F910895CF931F |
:100E6000DF93CDB7DEB724970FB6F894DEBF0FBE81 |
:100E7000CDBF8091C203882309F443C180915806F5 |
:100E800099278836910509F492C089369105C4F4F2 |
:100E90008236910509F462C08336910544F48B349F |
:100EA000910559F18136910509F44CC028C183366A |
:100EB000910509F465C08736910509F4B0C01FC1DA |
:100EC000813791054CF48C3691050CF0D2C08B36ED |
:100ED000910509F490C013C18437910509F482C0CB |
:100EE000853791052CF48137910509F49CC007C121 |
:100EF0008637910509F48FC002C12091BF0343E0FA |
:100F000062E0CE0101960E94C30689819A81909386 |
:100F10004B0480934A0480914A0490914B042091A1 |
:100F2000480430914904821B930B845E9D4F68E610 |
:100F300071E00E944F47845B9040909347048093F8 |
:100F40004604DDC02091BF0343E062E0CE0103967A |
:100F50000E94C3068B818093040359C02091BF0374 |
:100F600043E06BE089E496E00E94C3068091FE03B3 |
:100F700090914B06892B8093FE038091520645C0C9 |
:100F80002091BF0343E06BE089E496E00E94C30632 |
:100F90008091FE0390914B06892B8093FE038091F4 |
:100FA000520680932E0781E08093C50330C02091C4 |
:100FB000BF0343E062E0CE0103960E94C306809126 |
:100FC000FE039B81892B8093FE038C818F3F21F44C |
:100FD00081E08093BC0302C01092BC0381E0809347 |
:100FE000C6038DC02091BF0343E064E088EB93E02B |
:100FF0000E94C3060CC02091BF0343E064E084EB71 |
:1010000093E00E94C3068091B70380932E078FEF71 |
:101010008093030374C081E08093C40370C081E0B7 |
:101020008093C7036CC02091BF0343E062E0CE0110 |
:1010300003960E94C306809105038823E1F38B8108 |
:101040008F3F61F0863010F085E08B8343E568E7E1 |
:1010500077E08B810E9484028B8102C00E94B202E1 |
:1010600023E548E757E060910805855B0E9451063B |
:1010700046C02091BF0343E063E588E797E00E9404 |
:10108000C3068091580643E568E777E08B560E94D7 |
:101090009802A2E0B0E0809158068B56082E0E947C |
:1010A000A7478091A3079927AA27BB27BC01CD0199 |
:1010B00024EC39E040E050E00E941047DC01CB0115 |
:1010C00080938B0390938C03A0938D03B0938E0336 |
:1010D0008091A4079927AA27BB27BC01CD010E94B4 |
:1010E0001047DC01CB018093870390938803A09382 |
:1010F0008903B0938A030E94B2020E943C1D1092A1 |
:10110000C20324960FB6F894DEBF0FBECDBFDF91A9 |
:10111000CF910895CF93C82F8A3019F48DE00E94A3 |
:101120008A088091C00085FFFCCFC093C60080E094 |
:1011300090E0CF910895089588E18093C100809157 |
:10114000C00082608093C0008091C100806880935D |
:10115000C1008091C10080648093C1008AE28093C5 |
:10116000C40088EC90E00E94810D90933606809335 |
:1011700035068CED90E00E94810D9093550680938A |
:101180005406089580910503882309F4F7C08091DF |
:10119000C703882371F080910503882351F02BE069 |
:1011A00049E456E06091080587E40E9451061092D8 |
:1011B000C70380915406909155060E94B10D882373 |
:1011C00009F44CC080910503882309F447C080913D |
:1011D000840490918504A0918604B0918704BC0199 |
:1011E000CD012CE630E040E050E00E94844730938F |
:1011F00042062093410680917C0490917D04A09149 |
:101200007E04B0917F04BC01CD012CE630E040E0CB |
:1012100050E00E9484473093440620934306809117 |
:1012200020048093450680911F048093460628E0A1 |
:1012300041E456E06091080587E70E9451068091DD |
:101240004706853018F086E08093470683E690E0F5 |
:101250000E94810D90935506809354068091350627 |
:10126000909136060E94B10D882321F48091C50328 |
:101270008823B1F080910503882391F022E44CEE9D |
:1012800056E06091080584E40E9451061092C5035F |
:101290008AEF90E00E94810D909336068093350688 |
:1012A000609104036F3F91F0862F992734E0880FF7 |
:1012B000991F3A95E1F78D5F9E4F605D20E1AC018B |
:1012C00081E40E9451068FEF8093040390912E07D2 |
:1012D0009923A1F080910503882381F083E2809314 |
:1012E000090590930A058DE080930B051092050384 |
:1012F00010922E07809109058093C6008091C60345 |
:10130000882351F180910503882331F10E94311324 |
:101310001092C6033091BD03832F8F5F8093BD036E |
:10132000843021F06091BC03662359F026E14AE441 |
:1013300057E060E084E30E9451068FEF8093BD0385 |
:101340000BC024E1829FC0011124875E9C4FAC0139 |
:10135000832F8F5C0E9451068091C403882371F013 |
:1013600080910503882351F02AE047E356E060911D |
:10137000080586E50E9451061092C4030895982F2F |
:1013800080912F07813069F48091FF03E82FFF27B8 |
:10139000E75EFC4F90838F5F8093FF0321E030E096 |
:1013A00005C0892F0E948A08282F3327C901089574 |
:1013B0000F931F93CF93DF938C01EB01672B39F0D1 |
:1013C000F80181918F010E94BF092197C9F7DF9130 |
:1013D000CF911F910F9108950F931F93CF93DF9398 |
:1013E0008C01EB01672B41F0F8010F5F1F4F8491D7 |
:1013F0000E94BF092197C1F7DF91CF911F910F91F3 |
:101400000895CF93C82F181634F480E20E94BF09C4 |
:10141000C1501C16D4F3CF910895CF93C82F18163E |
:1014200034F480E30E94BF09C1501C16D4F3CF915D |
:1014300008952F923F924F925F926F927F928F9278 |
:101440009F92AF92BF92CF92DF92EF92FF920F9353 |
:101450001F93CF93DF93CDB7DEB7E0970FB6F89425 |
:10146000DEBF0FBECDBF26968FAD26972896EEAD78 |
:10147000FFAD28971CA61DA61EA61FA680932F07AA |
:10148000A8E46A2E712C6C0E7D1E5F01C50105C09B |
:10149000053239F00894A11CB11CF5010491002318 |
:1014A000B9F7B501681B790B11F00E94EC09002314 |
:1014B00009F430C20894A11CB11C552458AA252C4B |
:1014C0001FEF59A6F5010894A11CB11C0491053722 |
:1014D00021F0802F80628837F1F450FE0EC0F301B6 |
:1014E00024E030E0620E731E80819181A281B3817D |
:1014F0008CA79DA7AEA7BFA70EC0F301A2E0B0E0E6 |
:101500006A0E7B1E808191819C01442755272CA760 |
:101510003DA74EA75FA7003221F489A5882391F645 |
:101520001BC0033211F438E081C00A3211F00D32D1 |
:1015300089F40A3251F4F30142E050E0640E751E62 |
:10154000208022200CF0BECF219450E1552A8FED4F |
:101550005822B8CF0B3211F409A7B4CF0E32C1F51F |
:10156000F5010894A11CB11C04910A3279F4F3012D |
:10157000A2E0B0E06A0E7B1E60817181BFEF6F3F19 |
:101580007B0714F46FEF7FEF162F9CCF60E070E0C5 |
:10159000802F80538A30A0F4CB01F3E0880F991F8D |
:1015A000FA95E1F7860F971F680F791F600F711D7D |
:1015B00060537040F5010894A11CB11C0491E8CF60 |
:1015C000EFEF6F3F7E0714F46FEF7FEF162F7FCFA3 |
:1015D000003329F454FC76CFF0E25F2A73CF802FDA |
:1015E00081538930D8F460E070E0CB01E3E0880FEC |
:1015F000991FEA95E1F7860F971F680F791F600F13 |
:10160000711D60537040F5010894A11CB11C049138 |
:10161000802F80538A3048F3262E59CF083619F48C |
:1016200024E0522A4FCF0C3619F431E0532A4ACF26 |
:10163000033661F44E010894811C911CF30142E0D1 |
:1016400050E0640E751E808189831BC1043421F033 |
:10165000043611F00936B1F5043411F451E0552A7D |
:1016600050FE0AC0F30184E090E0680E791E2081EC |
:101670003181428153810CC0F30142E050E0640E9D |
:10168000751E808191819C01442737FD4095542F20 |
:101690002CA73DA74EA75FA78CA59DA5AEA5BFA56E |
:1016A000B7FF0DC0B095A095909581959F4FAF4F16 |
:1016B000BF4F8CA79DA7AEA7BFA78DE289A77AE0F1 |
:1016C000472E7BC00F3411F00F3639F40F3411F46C |
:1016D00091E0592A68E0462E6FC00037A1F4F3016B |
:1016E000A2E0B0E06A0E7B1E808191819C014427BC |
:1016F00055272CA73DA74EA75FA750E1452E30E404 |
:10170000532A08E759C00337C1F5F30142E050E01E |
:10171000640E751E808091808114910489F44E01BD |
:101720000894811C911C88E289838EE6F4018183F0 |
:1017300085E78B838CE68C838D8389E28E831F8281 |
:1017400017FD13C0812F992787FD9095AC0160E0AC |
:1017500070E0C4010E949B45009729F0D82ED8184C |
:101760001D150CF090C0D12E8EC0F4010190002008 |
:10177000E9F73197DE2ED81886C0053511F0053708 |
:1017800039F4053511F4F1E05F2A4AE0442E14C023 |
:10179000083519F0083709F06CC030E1432E53FECC |
:1017A0000BC02CA53DA54EA55FA521153105410512 |
:1017B000510511F030E4532A19A618AB17FD02C0E9 |
:1017C0004FED542229E2822E912C8C0E9D1E8CA569 |
:1017D0009DA5AEA5BFA50097A105B10521F498A9C7 |
:1017E000992309F43FC0C42CDD24EE24FF243324C4 |
:1017F0002CA53DA54EA55FA52C153D054E055F0505 |
:1018000010F091E0392E6CA57DA58EA59FA5A701AE |
:1018100096010E946247DC01CB01182F8A3010F438 |
:10182000105D04C0195A083509F41F7DD4011E93B8 |
:101830004D016CA57DA58EA59FA5A70196010E94CF |
:1018400062472CA73DA74EA75FA7332081F6B8E0DB |
:101850004B1641F453FE06C0103321F080E3F4012F |
:1018600082934F01CE010196D82ED818F8E2DF0EF0 |
:101870000BC0002309F44EC04E010894811C911C3A |
:10188000098381E0D82E19A61D2DC8A8CD18C7FC44 |
:10189000CC2489A5882311F01F5F02C056FC1E5F6F |
:1018A0001C0DE52CFF24C70180739070892B21F457 |
:1018B000822D811B0E94010A89A5882329F061E0FD |
:1018C00070E0CE01899609C0E6FE09C080E38AA7D0 |
:1018D0000BA762E070E0CE018A960E94D809C7018A |
:1018E00080739070809721F4822D811B0E940D0AD5 |
:1018F0008C2D0E940D0A8D2D992787FD9095BC0196 |
:10190000C4010E94D809E4FEC1CD822D811B0E9432 |
:10191000010ABCCDE0960FB6F894DEBF0FBECDBF76 |
:10192000DF91CF911F910F91FF90EF90DF90CF90BB |
:10193000BF90AF909F908F907F906F905F904F90EF |
:101940003F902F9008951F920F920FB60F9211247F |
:101950002F933F935F936F937F938F939F93AF9357 |
:10196000BF93EF93FF938091D203882329F0809156 |
:10197000D20381508093D2038091DA038150809307 |
:10198000DA038F3FB9F489E08093DA0380910A0388 |
:101990008F5F817080930A03882319F481E080931C |
:1019A000D7038091D8039091D90301969093D903DE |
:1019B0008093D8038091D3039091D4030297C8F009 |
:1019C0008091D3039091D40301979093D403809393 |
:1019D000D3038091D3039091D403209106033091D7 |
:1019E000070382239323892B11F021E009C020E013 |
:1019F00007C020E08FEF9FEF9093070380930603CB |
:101A000080910101222331F08A3011F45A9A07C0E3 |
:101A1000479A05C08A3011F45A9801C047988091BE |
:101A2000800783FF5EC086B19927FC01E071F070EA |
:101A300084FF0AC08091D5039091D60301969093BC |
:101A4000D6038093D5034DC08091D5039091D603E2 |
:101A5000892B69F18091D5039091D6038A569140E4 |
:101A600030F58091D5039091D60369E270E00E9431 |
:101A70003B478091D5039091D603860F971F909393 |
:101A8000D6038093D5038091D5039091D6030B970D |
:101A900050F08091D5039091D6030A9790934B0410 |
:101AA00080934A0404C0F0934B04E0934A0480916D |
:101AB0004A0490914B042091480430914904821BC0 |
:101AC000930B845E9D4F68E671E00E944F47845BF4 |
:101AD000904090934704809346041092D60310924E |
:101AE000D503FF91EF91BF91AF919F918F917F911E |
:101AF0006F915F913F912F910F900FBE0F901F90AC |
:101B000018952091D8033091D903280F391FC901A6 |
:101B1000019608958AE090E00E94810D9093DC0385 |
:101B20008093DB0382E085BD83EA84BD17BC88E730 |
:101B300088BD86E086BD83EC8093B00084E080930E |
:101B4000B1008091700082608093700080916E007F |
:101B5000816080936E008AE08093B3001092B2009F |
:101B600008952091D8033091D903821B930B892FBC |
:101B700099278695807490700895CF93DF930E9483 |
:101B8000810DEC01CE010E94B10D8823D9F3DF91C4 |
:101B9000CF910895CF93DF930E94810DEC0103C094 |
:101BA0008FEE80937A00CE010E94B10D8823C1F39D |
:101BB000DF91CF9108951F920F920FB60F921124CB |
:101BC0008F939F938091080390910903892B11F0C3 |
:101BD0005F9A01C05F9883E08093B00080917000AD |
:101BE0008E7F809370009F918F910F900FBE0F900A |
:101BF0001F9018951F920F920FB60F9211242F93DA |
:101C00003F934F935F936F937F938F939F93AF9384 |
:101C1000BF93CF93DF93EF93FF938091080390914D |
:101C20000903049709F0A6C080E390E09093D103E4 |
:101C30008093D00380910C0390910D039C01220F9F |
:101C4000331F280F391F809179039927880F991F17 |
:101C5000280F391F37FF02C02D5F3F4FC9019595EF |
:101C600087959595879590930D0380930C03EC01D0 |
:101C7000E096D093D103C093D0038091BA0790919E |
:101C80009A072091840430918504409186045091F4 |
:101C9000870480FF18C0892F9927AA27BB27BC017A |
:101CA000CD010E94104797FF04C06150704C8F4FC8 |
:101CB0009F4F5EE095958795779567955A95D1F7F3 |
:101CC000C60FD71F17C0892F9927AA27BB27BC018A |
:101CD000CD010E94104797FF04C06150704C8F4F98 |
:101CE0009F4F4EE095958795779567954A95D1F7E3 |
:101CF000C61BD70BD093D103C093D00380919B0711 |
:101D000043E0849FC00111242091D0033091D1037E |
:101D10002817390740F080919C07849FC001112447 |
:101D20008217930720F49093D1038093D0032091DE |
:101D3000D0033091D1033093170720931607C901C0 |
:101D40006FEF70E00E943B478D9740F4235B3F4F5D |
:101D50003093D1032093D00383E101C080E68093C8 |
:101D60000B038091D0039091D10380958093B300B1 |
:101D700083EC40C08091080390910903892B39F1CD |
:101D80008091080390910903049708F52091D003EE |
:101D90003091D1032F3F310561F058F05F9A83E015 |
:101DA0008093B0002F5F30403093D1032093D00355 |
:101DB00023C083E88093B00080910B038093B3002D |
:101DC00081E090E0909309038093080315C080910F |
:101DD000080390910903892B79F480919D07992735 |
:101DE000880F991F880F991F909309038093080308 |
:101DF0005F9883E08093B00080910803909109037D |
:101E000001979093090380930803FF91EF91DF916D |
:101E1000CF91BF91AF919F918F917F916F915F9182 |
:101E20004F913F912F910F900FBE0F901F901895DB |
:101E300010927C008FEE80937A0008950F931F9389 |
:101E4000CF93DF9303E010E0D8010E949F47802DDD |
:101E5000C82FDD27C531D10508F02A97C7BD84E614 |
:101E600090E00E94CA0D8091110390911203825557 |
:101E7000934010F4C0E0D0E0CA3FD105C0F4C7BD24 |
:101E800082E390E00E94CA0D8EE991E09F938F93C8 |
:101E90001F920E94190A80911103909112030F90D2 |
:101EA0000F900F908458934010F02196E5CFD80101 |
:101EB0000C2E0E94A747C0933D078CE291E00E9440 |
:101EC000CA0DDF91CF911F910F9108951F93CF936A |
:101ED000C0E0C093DF03C093DE03C093DD031CE8C2 |
:101EE000C33019F41B3008F019E0C0E08091F4030E |
:101EF0009091F5038C5F934024F4809110038150FE |
:101F00000AC08091F4039091F5038750944034F017 |
:101F1000809110038F5F8093100301C0C1E0809116 |
:101F2000F2039091F3038C5F934024F480910F03AC |
:101F300081500AC08091F2039091F303875094403E |
:101F400034F080910F038F5F80930F0301C0CF5F48 |
:101F50008091F0039091F1038C5F934024F4809181 |
:101F60000E0381500AC08091F0039091F1038750D5 |
:101F7000944034F080910E038F5F80930E0301C074 |
:101F8000CF5F88E0809305040E943419809110038C |
:101F90008A3030F481E08093DF038AE0809310037D |
:101FA00080911003863F30F081E08093DF0385EF5E |
:101FB0008093100380910F038A3030F481E0809386 |
:101FC000DE038AE080930F0380910F03863F30F099 |
:101FD00081E08093DE0385EF80930F0380910E03F1 |
:101FE0008A3030F481E08093DD038AE080930E0331 |
:101FF00080910E03863F30F081E08093DD0385EF12 |
:1020000080930E03809105048823E1F780933807BD |
:102010008FEE80937A00809138078823E1F31A309D |
:1020200020F48AE090E00E94CA0D115009F058CFC8 |
:1020300086E490E00E94CA0DCF911F9108951F92EF |
:102040000F920FB60F921124EF92FF920F931F93EE |
:102050002F933F934F935F936F937F938F939F93B0 |
:10206000AF93BF93CF93DF93EF93FF9310927A00D8 |
:102070008091F703682F77278F5F8093F703653090 |
:10208000710509F48EC066307105BCF462307105CB |
:1020900009F44AC0633071053CF46115710531F1F2 |
:1020A00061307105C1F1AEC26330710509F446C0FB |
:1020B0006430710509F45DC0A5C26830710509F48A |
:1020C000C3C0693071054CF46630710509F482C0F3 |
:1020D0006730710509F49BC095C26930710509F438 |
:1020E000D0C06A30710509F4EBC18CC280917800D0 |
:1020F000909179009093F9038093F80381E08093A5 |
:10210000F6038091E0039091E10301969093E1033F |
:102110008093E0037BC28091780090917900909346 |
:10212000FB038093FA038EC0809178009091790030 |
:102130009093FD038093FC0384E0BFC1809117035B |
:10214000909118039C01220F331F280F391F809193 |
:102150007800909179000E943B47260F371F3695F3 |
:10216000279536952795309318032093170386E01B |
:10217000A4C18091900490919104209178003091B5 |
:102180007900821B930B90933107809330078091E5 |
:102190003007909131079093EF038093EE0387E02F |
:1021A0008CC18091780090917900209192043091B7 |
:1021B0009304821B930B90933C0780933B07809181 |
:1021C0003B0790913C079093ED038093EC031092B2 |
:1021D000F6031CC2809101012091F8033091F903AC |
:1021E0008A3049F48091780090917900820F931F92 |
:1021F0009695879506C08091780090917900820F1E |
:10220000931F9093F1038093F00381E056C1809176 |
:1022100001012091FA033091FB038A3049F4809147 |
:10222000780090917900820F931F9695879506C04C |
:102230008091780090917900820F931F9093F3031F |
:102240008093F20382E039C1809101012091FC0367 |
:102250003091FD038A3049F48091780090917900A3 |
:10226000820F931F9695879506C080917800909174 |
:102270007900820F931F9093F5038093F40385E018 |
:102280001CC18091780090917900AA2797FDA095B4 |
:10229000BA2FBC01CD010E944E467B018C0180917A |
:1022A0008A0490918B04A0918C04B0918D049C01C0 |
:1022B000AD01C801B7010E94A845DC01CB01BC01FA |
:1022C000CD010E943146DC01CB019093EB0380935A |
:1022D000EA038091EA039091EB0302970CF446C065 |
:1022E00080918A0490918B04A0918C04B0918D040C |
:1022F00020E030E84BE354E4BC01CD010E94584695 |
:1023000088230CF088C080918A0490918B04A0915E |
:102310008C04B0918D042AE037ED43EA5CE3BC0104 |
:10232000CD010E94A945DC01CB0180938A049093E2 |
:102330008B04A0938C04B0938D0480910B04909136 |
:102340000C04845F914008F066C080918A049091EB |
:102350008B04A0918C04B0918D042DEC3CEC4CECE2 |
:102360005DE3BC01CD010E94A9454BC08091EA0309 |
:102370009091EB038F5F9F4F0CF04DC080918A04CA |
:1023800090918B04A0918C04B0918D0420E030E8F2 |
:1023900049E054E4BC01CD010E945B461816DCF50F |
:1023A00080918A0490918B04A0918C04B0918D044B |
:1023B0002AE037ED43EA5CE3BC01CD010E94A84569 |
:1023C000DC01CB0180938A0490938B04A0938C044E |
:1023D000B0938D0480910B0490910C04845F914024 |
:1023E000D0F480918A0490918B04A0918C04B091D8 |
:1023F0008D042DEC3CEC4CEC5DE3BC01CD010E9466 |
:10240000A845DC01CB0180938A0490938B04A093B0 |
:102410008C04B0938D0481E08093E4038091780074 |
:102420009091790090933307809332078091EA036B |
:102430009091EB039C01442737FD4095542F8091E8 |
:102440004C0490914D04A0914E04B0914F04820F22 |
:10245000931FA41FB51F80934C0490934D04A09329 |
:102460004E04B0934F0420914C0430914D044091A0 |
:102470004E0450914F0457FF04C021503C4F4F4F22 |
:102480005F4FAAE05595479537952795AA95D1F7BF |
:1024900080914C0490914D04A0914E04B0914F0452 |
:1024A000821B930BA40BB50B80934C0490934D04AB |
:1024B000A0934E04B0934F0483E08093F603A6C02C |
:1024C00080914007909141072091780030917900E8 |
:1024D000820F931F909341078093400780913807A4 |
:1024E0008F5F8093380780913807853008F48AC061 |
:1024F000809178009091790090931203809311035A |
:10250000109238078091E2039091E303BC01F3E05D |
:10251000660F771FFA95E1F7681B790B80918203AC |
:10252000482F552780913407909135072091400717 |
:1025300030914107821B930B20912D0430912E0482 |
:10254000821B930B489F9001499F300D589F300D7F |
:102550001124620F731F77FF02C0695F7F4FE3E0B2 |
:1025600075956795EA95E1F77093E3036093E2034D |
:102570008091400790914107EC01EE27D7FDE0954F |
:10258000FE2F2091130330911403409115035091B5 |
:102590001603DA01C901880F991FAA1FBB1F820FFA |
:1025A000931FA41FB51FC80FD91FEA1FFB1FF7FFFA |
:1025B00003C02396E11DF11D82E0F595E795D795BF |
:1025C000C7958A95D1F7C0931303D0931403E09372 |
:1025D0001503F09316038091130390911403A091B7 |
:1025E0001503B09116039C01809134079091350733 |
:1025F000821B930B90932E0480932D04109241071D |
:10260000109240071092F6031092F7038091F603A0 |
:1026100080937C008091F703882319F08FEE8093DC |
:102620007A00FF91EF91DF91CF91BF91AF919F9190 |
:102630008F917F916F915F914F913F912F911F915A |
:102640000F91FF90EF900F900FBE0F901F90189575 |
:1026500090E2E9E1F3E08FE49193815087FFFCCFB2 |
:1026600008951F93CF93DF938091FE0380FF0FC0E7 |
:1026700080910204882311F0815002C0809173037D |
:10268000809302040E9428138FEF8093BD038091F2 |
:10269000FE0381FF0AC0809102048F5F80930204D1 |
:1026A0000E9428138FEF8093BD038091FE0399272A |
:1026B00080FF04C081FF02C01092020480910204D6 |
:1026C000282F33278A3040F481E18093FF033F9322 |
:1026D0002F9380EA91E007C080E18093FF033F934E |
:1026E0002F9385EA91E09F938F9381E08F930E94CF |
:1026F000190A0F900F900F900F900F908091020485 |
:10270000C82FDD27C530D10509F46AC2C630D1050E |
:10271000ACF4C230D10509F4E9C0C330D10534F4BA |
:10272000209739F1219709F477C08DC5C330D105C1 |
:1027300009F44EC1249709F4B7C185C5C830D10545 |
:1027400009F439C4C930D10544F4C630D10509F4BF |
:10275000ACC3279709F40EC476C5CA30D10509F475 |
:10276000C2C4CA30D1050CF469C42B9709F401C561 |
:102770006AC51092FF038AEA91E09F938F9311E05C |
:102780001F930E94190A84E18093FF030F900F901A |
:102790000F9084E690E09F938F9386E490E09F9360 |
:1027A0008F93DF93CF93809101016AE00E942F47BE |
:1027B000892F99279F938F93809101010E942F4722 |
:1027C00099279F938F938AEB91E09F938F931F9309 |
:1027D0000E94190A88E28093FF038DB79EB70D9679 |
:1027E0000FB6F8949EBF0FBE8DBF0E94B20299270C |
:1027F0009F938F938FEC91E09F938F931F930E94F1 |
:10280000190A8CE38093FF030F900F900F900F90A5 |
:102810000F908CED91E061C08091800780FF4AC0ED |
:102820001092FF0380912D0490912E049F938F931B |
:102830008CEE91E09F938F9311E01F930E94190AF1 |
:1028400084E18093FF030F900F900F900F900F90F3 |
:1028500080912B0490912C049F938F938BEF91E0A8 |
:102860009F938F931F930E94190A88E28093FF031E |
:102870000F900F900F900F900F90809111039091F7 |
:1028800012039F938F938AE092E09F938F931F93FD |
:102890000E94190A8CE38093FF030F900F900F9012 |
:1028A0000F900F9080913D0799279F938F9389E117 |
:1028B00092E00EC484E18093FF0388E292E09F934C |
:1028C0008F9311E01F930E94190A88E28093FF03FF |
:1028D0000F900F900F908FE292E09F938F931F9332 |
:1028E0000E94190A0F900F900F90B2C41092FF032C |
:1028F0008DE392E09F938F93C1E0CF930E94190ADA |
:1029000084E18093FF030F900F900F9080918404D7 |
:1029100090918504A0918604B0918704B7FF04C00C |
:1029200081509C4FAF4FBF4FFAE0B595A795979553 |
:102930008795FA95D1F7BF93AF939F938F9387E4D1 |
:1029400092E09F938F93CF930E94190A88E280931D |
:10295000FF038DB79EB707960FB6F8949EBF0FBEC4 |
:102960008DBF80917C0490917D04A0917E04B091F4 |
:102970007F04B7FF04C081509C4FAF4FBF4FEAE0C8 |
:10298000B595A79597958795EA95D1F7BF93AF939E |
:102990009F938F9386E592E09F938F93CF930E94AE |
:1029A000190A8CE38093FF038DB79EB707960FB685 |
:1029B000F8949EBF0FBE8DBF80914A0490914B0446 |
:1029C0009F938F9385E692E09F938F93CF9383C3DA |
:1029D0001092FF0380914E0790914F079F938F9322 |
:1029E00080914C0790914D079F938F9384E792E0DD |
:1029F0009F938F9311E01F930E94190A84E18093A3 |
:102A0000FF038DB79EB707960FB6F8949EBF0FBE13 |
:102A10008DBF80915207909153079F938F93809120 |
:102A20005007909151079F938F9384E892E09F9372 |
:102A30008F931F930E94190A88E28093FF038DB73A |
:102A40009EB707960FB6F8949EBF0FBE8DBF8091BC |
:102A50005607909157079F938F93809154079091B9 |
:102A600055079F938F9384E992E09F938F931F93D1 |
:102A70000E94190A8CE38093FF038DB79EB70796D7 |
:102A80000FB6F8949EBF0FBE8DBF80915A079091EC |
:102A90005B079F938F9380915807909159079F935D |
:102AA0008F9384EA92E0C1C31092FF03809179076B |
:102AB000E82FFF27EE0FFF1FE65BF84F8081918123 |
:102AC0009F938F9380917807E82FFF27EE0FFF1FCA |
:102AD000E65BF84F808191819F938F9384EB92E026 |
:102AE0009F938F9311E01F930E94190A84E18093B2 |
:102AF000FF038DB79EB707960FB6F8949EBF0FBE23 |
:102B00008DBF80917B07E82FFF27EE0FFF1FE65B4D |
:102B1000F84F808191819F938F9380917A07E82F5E |
:102B2000FF27EE0FFF1FE65BF84F808191819F9397 |
:102B30008F9384EC92E09F938F931F930E94190AC6 |
:102B400088E28093FF038DB79EB707960FB6F8947F |
:102B50009EBF0FBE8DBF80917D07E82FFF27EE0F30 |
:102B6000FF1FE65BF84F808191819F938F93809147 |
:102B70007C07E82FFF27EE0FFF1FE65BF84F8081F1 |
:102B800091819F938F9384ED92E09F938F931F93F6 |
:102B90000E94190A8CE38093FF038DB79EB70796B6 |
:102BA0000FB6F8949EBF0FBE8DBF80917F07E82FB0 |
:102BB000FF27EE0FFF1FE65BF84F808191819F9307 |
:102BC0008F9380917E07E82FFF27EE0FFF1FE65BB4 |
:102BD000F84F808191819F938F9384EE92E025C37B |
:102BE0001092FF0384EF92E09F938F93C1E0CF9305 |
:102BF0000E94190A809101010F900F900F908A3066 |
:102C000009F060C084E18093FF0380919C0490915F |
:102C10009D049F938F938091F4039091F5032091ED |
:102C20009C0430919D04821B930B9F938F9382E0B1 |
:102C300093E09F938F93CF930E94190A88E2809329 |
:102C4000FF038DB79EB707960FB6F8949EBF0FBED1 |
:102C50008DBF80919A0490919B049F938F93809154 |
:102C6000F2039091F30320919A0430919B04821B0C |
:102C7000930B9F938F9381E193E09F938F93CF93D7 |
:102C80000E94190A8CE38093FF038DB79EB70796C5 |
:102C90000FB6F8949EBF0FBE8DBF8091980490919F |
:102CA00099049F938F938091980490919904209117 |
:102CB000F0033091F103821B930B9F938F9380E27B |
:102CC00093E06FC020919C0430919D048B3009F0FB |
:102CD0006CC084E18093FF03C90137FD019695958F |
:102CE00087959F938F938091F4039091F5032091A2 |
:102CF0009C0430919D04821B930B9F938F938FE2D2 |
:102D000093E09F938F93CF930E94190A88E2809358 |
:102D1000FF038DB79EB707960FB6F8949EBF0FBE00 |
:102D20008DBF80919A0490919B0497FD0196959593 |
:102D300087959F938F938091F2039091F303209155 |
:102D40009A0430919B04821B930B9F938F938EE385 |
:102D500093E09F938F93CF930E94190A8CE3809303 |
:102D6000FF038DB79EB707960FB6F8949EBF0FBEB0 |
:102D70008DBF809198049091990497FD0196959547 |
:102D800087959F938F9380919804909199042091B7 |
:102D9000F0033091F103821B930B9F938F938DE48B |
:102DA00093E09F938F93CF9343C284E18093FF037B |
:102DB0008091100399279F938F93C90137FD019646 |
:102DC000959587959F938F938091F4039091F50348 |
:102DD00020919C0430919D04821B930B9F938F93B1 |
:102DE0008CE593E09F938F93CF930E94190A88E21A |
:102DF0008093FF038DB79EB709960FB6F8949EBFD8 |
:102E00000FBE8DBF80910F0399279F938F93809161 |
:102E10009A0490919B0497FD0196959587959F93B1 |
:102E20008F938091F2039091F30320919A04309153 |
:102E30009B04821B930B9F938F9380E793E09F9358 |
:102E40008F93CF930E94190A8CE38093FF038DB771 |
:102E50009EB709960FB6F8949EBF0FBE8DBF8091A6 |
:102E60000E0399279F938F938091980490919904D2 |
:102E700097FD0196959587959F938F9380919804E0 |
:102E8000909199042091F0033091F103821B930BF0 |
:102E90009F938F9384E893E09F938F93CF930E94A7 |
:102EA000190A8DB79EB70996C8C11092FF0388E929 |
:102EB00093E09F938F9311E01F930E94190A84E17E |
:102EC0008093FF030F900F900F9080919204909148 |
:102ED00093049F938F938091EC039091ED039F93C4 |
:102EE0008F9385EA93E09F938F931F930E94190A13 |
:102EF00088E28093FF038DB79EB707960FB6F894CC |
:102F00009EBF0FBE8DBF80919004909191049F93BE |
:102F10008F938091EE039091EF039F938F9384EBB7 |
:102F200093E09F938F931F930E94190A8CE38093E1 |
:102F3000FF038DB79EB707960FB6F8949EBF0FBEDE |
:102F40008DBF80918A0490918B04A0918C04B091E4 |
:102F50008D04BC01CD010E943146DC01CB019F9361 |
:102F60008F938091E2079091E3079F938F9383EC77 |
:102F700093E05BC184E18093FF03809117039091FC |
:102F800018039F938F9382ED93E09F938F9311E0AB |
:102F90001F930E94190A88E28093FF030F900F90FD |
:102FA0000F900F900F908091380499279F938F93E3 |
:102FB00081EE93E08DC01092FF0380EF93E09F932A |
:102FC0008F9311E01F930E94190A84E18093FF03FD |
:102FD0000F900F900F9080914604909147049F931B |
:102FE0008F938FEF93E09F938F931F930E94190A03 |
:102FF00088E28093FF030F900F900F900F900F9037 |
:1030000080914A0490914B049F938F938EE094E0BB |
:103010009F938F931F930E94190A8CE38093FF0361 |
:103020000F900F900F900F900F9080914804909107 |
:1030300049049F938F938DE194E04AC01092FF035F |
:1030400080913F04909140049F938F938CE294E091 |
:103050009F938F9311E01F930E94190A84E180933C |
:10306000FF030F900F900F900F900F9080913D04F1 |
:1030700090913E049F938F9388E394E09F938F9366 |
:103080001F930E94190A88E28093FF030F900F900C |
:103090000F900F900F9080913B0490913C049F9370 |
:1030A0008F9384E494E09F938F931F930E94190A57 |
:1030B0008CE38093FF030F900F900F900F900F9071 |
:1030C0008091390490913A049F938F9380E594E026 |
:1030D0009F938F931F930E94190A0F900F900F9048 |
:1030E0000F900F90B5C01092FF038CE594E09F9372 |
:1030F0008F9311E01F930E94190A84E18093FF03CC |
:103100000F900F900F908091790399279F938F9341 |
:1031100084E694E09F938F931F930E94190A88E29C |
:103120008093FF030F900F900F900F900F9080915E |
:10313000D0039091D1039F938F9382E794E09F9364 |
:103140008F931F930E94190A8CE38093FF030F90C3 |
:103150000F900F900F900F9080919C0799279F934D |
:103160008F9380919B0799279F938F9380E894E09A |
:103170005CC01092FF038EE894E09F938F9311E060 |
:103180001F930E94190A84E18093FF030F900F9010 |
:103190000F9080914D06992787FD90959F938F936F |
:1031A00080914C06992787FD90959F938F938EE988 |
:1031B00094E09F938F931F930E94190A88E2809353 |
:1031C000FF038DB79EB707960FB6F8949EBF0FBE4C |
:1031D0008DBF80914E06992787FD90959F938F9381 |
:1031E00080914F0699279F938F938EEA94E09F9347 |
:1031F0008F931F930E94190A8CE38093FF038DB76E |
:103200009EB707960FB6F8949EBF0FBE8DBF8091F4 |
:10321000530699279F938F9380915006992787FD96 |
:1032200090959F938F938EEB94E09F938F931F9332 |
:103230000E94190A8DB79EB707960FB6F8949EBFE5 |
:103240000FBE8DBF05C0815080937303109202049E |
:103250001092FE03DF91CF911F9108951092B90053 |
:103260008AE28093B800089585EA8093BC0080E0EC |
:1032700090E0089584E98093BC0008951092B9000D |
:103280008093BB0085E88093BC0080E090E00895C7 |
:103290000E943A19109205048091BB001092040418 |
:1032A00080E88093BC001092BD001092BA0010928A |
:1032B000BB001092B9001092B8000E942E190E9413 |
:1032C000341980E00E943E1908951F920F920FB6A4 |
:1032D0000F9211242F933F934F935F936F937F939C |
:1032E0008F939F93AF93BF93EF93FF9380910504C8 |
:1032F000282F3327442755278F5F80930504F90132 |
:103300002731310508F098C0E85CFF4FEE0FFF1F32 |
:103310000590F491E02D099480910404880F8E5A51 |
:103320007EC080910404282F33278F5F809304048C |
:1033300021303105E1F1223031051CF4232BA1F1BC |
:103340007BC022303105B1F123303105B1F174C0B9 |
:103350000E943A1980910404843018F410920504F4 |
:1033600053C01092040450C080910304880F8D5AFA |
:1033700056C080910304E82FFF27EE5BF84F809141 |
:10338000BB0080838091030499278130910579F0F7 |
:10339000823091051CF4892B39F04EC082309105A2 |
:1033A00049F0039751F048C08091CF0738C0809111 |
:1033B000D80735C08091F70732C08091F9072FC038 |
:1033C00090910304E92FFF27EE5BF84F8091BB003B |
:1033D0008483892F8F5F80930304843018F11092C7 |
:1033E000030420C080E11BC08091100318C082E15B |
:1033F00016C080910F0313C00E943A198AE090E032 |
:1034000090939203809391030E94341915C088E928 |
:1034100006C084E104C080910E0301C080E80E94D0 |
:103420003E190AC00E943A198AE090E090939203F4 |
:1034300080939103109205048091BC008068809372 |
:10344000BC00FF91EF91BF91AF919F918F917F91C0 |
:103450006F915F914F913F912F910F900FBE0F9001 |
:103460001F90189583EC8093810080916F0080629B |
:1034700080936F00109299041092980410929B040C |
:1034800010929A0410929D0410929C0408951F9229 |
:103490000F920FB60F9211240F931F932F933F9308 |
:1034A0004F935F936F937F938F939F93AF93BF934C |
:1034B000CF93DF93EF93FF93409186005091870065 |
:1034C0008091060490910704481B590B8091860057 |
:1034D000909187009093070480930604CA018D544D |
:1034E0009440A0910804B0910904835F9A4158F474 |
:1034F000149714F01092740381E090E09093090403 |
:103500008093080499C0AA30B1050CF095C0CA0197 |
:103510008B5F9040845B914008F071C0425D5140E8 |
:10352000FD01EA0FFB1FE65BF84F80819181FA01F4 |
:10353000E81BF90BCF01F7FF03C0909581959F4FD2 |
:1035400006974CF480913804883C28F48091380424 |
:10355000865F80933804FD01EA0FFB1FE65BF84F9E |
:10356000808191819C01220F331F280F391F240F66 |
:10357000351F37FF02C02D5F3F4FE901D595C79535 |
:10358000D595C795CA0101968C179D0714F421970C |
:1035900006C041505040C417D5070CF421968091C5 |
:1035A0003804833CD8F08D010A0F1B1FF801E65B3D |
:1035B000F84F808191819E01281B390BC90163E07E |
:1035C00070E00E944F47CB01880F991F860F971F0D |
:1035D000005A184FF8019183808307C0AA0FBB1FC0 |
:1035E000A05AB84F11961C921E92E0910804F091D7 |
:1035F0000904EE0FFF1FE65BF84FD183C083809173 |
:10360000080490910904019690930904809308049A |
:10361000059711F45D9A01C05D988091080490911E |
:1036200009048630910511F45C9A01C05C980797F3 |
:1036300011F45B9A01C05B98FF91EF91DF91CF91FC |
:10364000BF91AF919F918F917F916F915F914F91BA |
:103650003F912F911F910F910F900FBE0F901F90D0 |
:103660001895CF93DF9381E08093780782E0809371 |
:10367000790783E080937A0764E060937B0745E0F5 |
:1036800040937C07F6E0F0937D0787E080937E0708 |
:1036900078E070937F0788E6809380079EE190939F |
:1036A00081078BEF809383078AE080938407909350 |
:1036B000820790938607609385073FE030938707E2 |
:1036C00090938807ECE0E093890770938A0786EE71 |
:1036D00080938B0790938C0780E880938D0780E51B |
:1036E00080938E0756E950938F078EE5809390075D |
:1036F00083E280939107909392071092930780E260 |
:10370000809394071092950710929607109297074E |
:10371000109298071092A8071092A9071092AA0772 |
:103720001092AB0724E62093990788E280939A07CA |
:103730001092BA0782E380939B0750939C074093B3 |
:103740009D0780939E079AE590939F078093A0071B |
:103750001092B9079093A1074093A20785E5809343 |
:10376000A3078093A40780E18093A5076093A60731 |
:103770002093A7078FE58093AC0783EF8093AE0774 |
:103780003093AD073093AF078DEF8093B007209350 |
:10379000B1079093B2079093B3079093B407109238 |
:1037A000B507F093B6077093B707CFEBD7E0A3E95F |
:1037B000B3E00D900992E150E1F7DF91CF910895C8 |
:1037C000CF93DF9381E08093780782E0809379073D |
:1037D00023E020937A07E4E0E0937B0735E0309321 |
:1037E0007C0766E060937D0787E080937E0758E062 |
:1037F00050937F0788E6809380079EE1909381072E |
:103800008BEF809383078AE08093840790938207ED |
:103810009093860720938507FCE0F093870780E16B |
:10382000809388076093890750938A0786EE809378 |
:103830008B0790938C0780E880938D0780E58093B9 |
:103840008E0788E780938F078EE58093900783E249 |
:1038500080939107909392071092930740E24093D0 |
:10386000940710929507109296071092970710925E |
:1038700098071092A8071092A9071092AA07109211 |
:10388000AB0774E67093990788E280939A071092C9 |
:10389000BA0792E390939B0786E980939C07309345 |
:1038A0009D0790939E072AE520939F079093A0077A |
:1038B0001092B9072093A1073093A20785E5809362 |
:1038C000A3078093A4074093A507E093A6078BE482 |
:1038D0008093A7078FE58093AC0783EF8093AE07B3 |
:1038E00084E18093AD078093AF078DEF8093B0079D |
:1038F0007093B1072093B2072093B3072093B407C6 |
:103900001092B5076093B6075093B707CFEBD7E097 |
:10391000AAE9B3E00D900992F150E1F7DF91CF9160 |
:10392000089581E08093780782E08093790793E09F |
:1039300090937A07E4E0E0937B0755E050937C078F |
:1039400076E070937D0787E080937E0768E0609360 |
:103950007F0788EE809380073EE1309381078BEFED |
:10396000809383078AE080938407309382073093A3 |
:103970008607909385076093870790E19093880767 |
:103980007093890760938A0786EE80938B07309344 |
:103990008C0780E880938D0744E640938E0788E784 |
:1039A00080938F078EE58093900783E28093910741 |
:1039B00084E180939207109293079093940710925A |
:1039C00095071092960710929707109298071092F9 |
:1039D000A8071092A9071092AA071092AB0740936C |
:1039E000990788E280939A071092BA0792E390931E |
:1039F0009B0786E980939C0750939D0790939E07B1 |
:103A00002AE520939F079093A0071092B90720936F |
:103A1000A1075093A20785E58093A3078093A4078D |
:103A200080E28093A507E093A6079093A7078FE510 |
:103A30008093AC0783EF8093AE073093AD0730934C |
:103A4000AF078DEF8093B0074093B1072093B20783 |
:103A50002093B3072093B4071092B5077093B6076D |
:103A60006093B707AFEBB7E0E2EAF3E08CE00190D8 |
:103A70000D928150E1F70895CF93C82FC150CF3FE9 |
:103A800081F080912F04882361F484E690E0909384 |
:103A9000D4038093D3038AEF90E00E94BD0DC15000 |
:103AA00080F7CF9108959F92AF92BF92CF92DF920D |
:103AB000EF92FF920F931F93CF93DF93809198041F |
:103AC000909199042091F0033091F103821B930BA4 |
:103AD00090930108809300088091F1079091F2077C |
:103AE0002091F0033091F103821B930B90937707A1 |
:103AF000809376078091F2039091F30320919A04CA |
:103B000030919B04821B930B9093CE078093CD073B |
:103B10008091F4039091F50320919C0430919D04D1 |
:103B2000821B930B9093DA078093D9078091CD077E |
:103B30009091CE0790932707809326078091FC07EA |
:103B40009091FD077C010027F7FC0095102F8091D4 |
:103B5000EC039091ED03AA2797FDA095BA2FBC0125 |
:103B6000CD012CE030E040E050E00E941047DC0145 |
:103B7000CB01E80EF91E0A1F1B1F17FF05C0089492 |
:103B8000E11CF11C011D111D15950795F794E79493 |
:103B9000F092FD07E092FC0780910E0890910F08CB |
:103BA0007C010027F7FC0095102F8091EE03909187 |
:103BB000EF03AA2797FDA095BA2FBC01CD012CE0F9 |
:103BC00030E040E050E00E941047DC01CB01E80EFD |
:103BD000F91E0A1F1B1F17FF05C00894E11CF11CEA |
:103BE000011D111D15950795F794E794F0920F08A4 |
:103BF000E0920E088091E2079091E3079C01442730 |
:103C000037FD4095542F8091EA039091EB03AA274A |
:103C100097FDA095BA2F280F391F4A1F5B1F57FF2A |
:103C200004C02F5F3F4F4F4F5F4F559547953795D6 |
:103C300027953093E3072093E2078091EC0390915E |
:103C4000ED036CE070E0869F9001879F300D969F9A |
:103C5000300D1124C9019C01442737FD4095542F94 |
:103C60008091740490917504A0917604B0917704CA |
:103C7000820F931FA41FB51F809374049093750443 |
:103C8000A0937604B09377048091EE039091EF03B4 |
:103C9000869F9001879F300D969F300D1124C9019A |
:103CA0009C01442737FD4095542F809170049091DA |
:103CB0007104A0917204B0917304820F931FA41F2A |
:103CC000B51F8093700490937104A0937204B09315 |
:103CD00073048091EA079091EB072091EC033091F7 |
:103CE000ED03820F931F9093EB078093EA07809177 |
:103CF0000308909104082091EE033091EF03820FA6 |
:103D0000931F909304088093030880918E049091F0 |
:103D10008F04019690938F0480938E0480916C049D |
:103D200090916D04A0916E04B0916F04BC01CD011F |
:103D30000E944E465B016C018091320790913307DF |
:103D4000AA2797FDA095BA2FBC01CD010E944E462F |
:103D50007B018C0180918A0490918B04A0918C044A |
:103D6000B0918D049C01AD01C801B7010E94A84526 |
:103D7000DC01CB019C01AD01C601B5010E94A94542 |
:103D8000DC01CB01BC01CD010E943146DC01CB013D |
:103D900080936C0490936D04A0936E04B0936F04B1 |
:103DA0008091000890910108AA2797FDA095BA2F4D |
:103DB000C0910A08D0910B08E0910C08F0910D0811 |
:103DC000C80FD91FEA1FFB1FC0930A08D0930B0826 |
:103DD000E0930C08F0930D08809100089091010881 |
:103DE0009C01442737FD4095542F809154049091B5 |
:103DF0005504A0915604B0915704820F931FA41F3D |
:103E0000B51F8093540490935504A0935604B09327 |
:103E10005704C03B33E8D30738E0E30730E0F3074B |
:103E200064F0C05BD348E840F040C0930A08D093E8 |
:103E30000B08E0930C08F0930D0880910A0890910C |
:103E40000B08A0910C08B0910D08B7FF0CC080556D |
:103E50009C47A74FBF4F80930A0890930B08A093ED |
:103E60000C08B0930D0890902604992009F0C3C067 |
:103E700080912504882309F0BEC08091800786FFC9 |
:103E8000BAC08091760790917707AA2797FDA095F1 |
:103E9000BA2F2091640430916504409166045091DA |
:103EA0006704BC01CD010E941047EC01DB0197FFC4 |
:103EB00004C0A150B84FCF4FDF4F1BE0D595C79539 |
:103EC000B795A7951A95D1F780911804E82EFF248D |
:103ED00000271127BD01CE01A80197010E941047BC |
:103EE000DC01CB0180939E0490939F04A093A004D7 |
:103EF000B093A104B7FF04C08150904FAF4FBF4FA4 |
:103F00005C016D01ACE0D594C794B794A794AA95D1 |
:103F1000D1F7A0929E04B0929F04C092A004D092C8 |
:103F2000A1048091760790917707AA2797FDA09525 |
:103F3000BA2F20915C0430915D0440915E04509151 |
:103F40005F04BC01CD010E94104797FF04C061507F |
:103F5000784F8F4F9F4FFBE09595879577956795A5 |
:103F6000FA95D1F7A80197010E941047DC01CB0117 |
:103F70008093A2049093A304A093A404B093A504F7 |
:103F8000B7FF04C08150904FAF4FBF4F9C01AD01B0 |
:103F9000ECE05595479537952795EA95D1F720930D |
:103FA000A2043093A3044093A4045093A504D60123 |
:103FB000C501D7FE07C0B095A095909581959F4FFC |
:103FC000AF4FBF4F81389105A105B10584F4DA01E7 |
:103FD000C90157FF07C0B095A095909581959F4F57 |
:103FE000AF4FBF4F81389105A105B105A4F081E025 |
:103FF0008093430410C01092A2041092A304109264 |
:10400000A4041092A50410929E0410929F04109292 |
:10401000A0041092A1048091CD079091CE07209129 |
:104020009E0430919F04820F931F9093CE0780933C |
:10403000CD0700911704202F33274427552780915F |
:10404000A2049091A304A091A404B091A504BC0182 |
:10405000CD010E9410479B01AC0197FF04C0215085 |
:104060003E4F4F4F5F4F79E05595479537952795D0 |
:104070007A95D1F78091CD079091CE07820F931F4B |
:104080009093CE078093CD078091CD079091CE0776 |
:104090009C01442737FD4095542F809158049091FE |
:1040A0005904A0915A04B0915B04820F931FA41F7E |
:1040B000B51F8093580490935904A0935A04B09369 |
:1040C0005B048091CD079091CE0720912904309117 |
:1040D0002A04821B930B9C01442737FD4095542FE3 |
:1040E00080915C0490915D04A0915E04B0915F04A6 |
:1040F000820F931FA41FB51F80935C0490935D04EF |
:10410000A0935E04B0935F04C0918703D0918803AD |
:10411000E0918903F0918A03C817D907EA07FB07E2 |
:10412000C4F488EA91E6A0E0B0E08C1B9D0BAE0BD6 |
:10413000BF0B80935C0490935D04A0935E04B093E6 |
:104140005F048093580490935904A0935A04B09349 |
:104150005B0422273327A9012C1B3D0B4E0B5F0B61 |
:1041600080915C0490915D04A0915E04B0915F0425 |
:1041700082179307A407B507B4F4CE01DF01885A6C |
:104180009146A040B04080935C0490935D04A0935E |
:104190005E04B0935F048093580490935904A093F5 |
:1041A0005A04B0935B048091F2039091F3030F974C |
:1041B00034F488E19CEF9093CE078093CD078091F3 |
:1041C000F2039091F303079734F480E398EF909310 |
:1041D000CE078093CD07109101011A30A9F4809188 |
:1041E000F2039091F303835F934034F088EE93E001 |
:1041F0009093CE078093CD078091F2039091F303C3 |
:104200008A5F9340DCF014C08091F2039091F30335 |
:10421000855E974034F088EE93E09093CE078093CC |
:10422000CD078091F2039091F303835F974034F0C0 |
:1042300080ED97E09093CE078093CD078091D907CA |
:104240009091DA072091A2043091A304821B930B72 |
:104250009093DA078093D907202F332744275527D7 |
:1042600080919E0490919F04A091A004B091A1041C |
:10427000BC01CD010E9410479B01AC0197FF04C017 |
:1042800021503E4F4F4F5F4F69E055954795379509 |
:1042900027956A95D1F78091D9079091DA07821B0B |
:1042A000930B9093DA078093D9078091D907909167 |
:1042B000DA079C01442737FD4095542F8091600414 |
:1042C00090916104A0916204B0916304820F931FE6 |
:1042D000A41FB51F8093600490936104A0936204AF |
:1042E000B09363048091D9079091DA072091270455 |
:1042F00030912804821B930B9C01442737FD409585 |
:10430000542F8091640490916504A0916604B0914B |
:104310006704820F931FA41FB51F809364049093BA |
:104320006504A0936604B0936704C0918B03D09199 |
:104330008C03E0918D03F0918E03C817D907EA072B |
:10434000FB07C4F488EA91E6A0E0B0E08C1B9D0B6B |
:10435000AE0BBF0B8093640490936504A093660436 |
:10436000B09367048093600490936104A093620407 |
:10437000B093630422273327A9012C1B3D0B4E0B5E |
:104380005F0B8091640490916504A0916604B091E4 |
:10439000670482179307A407B507B4F4CE01DF01C1 |
:1043A000885A9146A040B04080936404909365047D |
:1043B000A0936604B09367048093600490936104B3 |
:1043C000A0936204B09363048091F4039091F50389 |
:1043D0000F9734F488E19CEF9093DA078093D90724 |
:1043E0008091F4039091F503079734F480E398EFFC |
:1043F0009093DA078093D9071A30A9F48091F403D7 |
:104400009091F503835F934034F088EE93E09093AE |
:10441000DA078093D9078091F4039091F5038A5FBE |
:104420009340DCF014C08091F4039091F503855E15 |
:10443000974034F088EE93E09093DA078093D907A1 |
:104440008091F4039091F503835F974034F080ED01 |
:1044500097E09093DA078093D9078FEE80937A00E4 |
:104460008091540490915504A0915604B091570442 |
:104470008093680490936904A0936A04B0936B04DA |
:104480008091640490916504A0916604B0916704E2 |
:104490008093840490938504A0938604B09387044A |
:1044A00080915C0490915D04A0915E04B0915F04E2 |
:1044B00080937C0490937D04A0937E04B0937F044A |
:1044C0008091600490916104A0916204B0916304B2 |
:1044D0008093800490938104A0938204B09383041A |
:1044E0008091580490915904A0915A04B0915B04B2 |
:1044F0008093780490937904A0937A04B0937B041A |
:104500008091800787FF6EC0992009F06BC0809171 |
:104510002504882309F066C08091D9079091DA07B5 |
:10452000893C91058CF02091D9073091DA07220F50 |
:10453000331F220F331F8091D9079091DA07820F22 |
:10454000931F8052934017C08091D9079091DA074A |
:1045500088539F4FA4F42091D9073091DA07220F96 |
:10456000331F220F331F8091D9079091DA07820FF2 |
:10457000931F805E9C4F9093DA078093D9078091B8 |
:10458000CD079091CE07893C91058CF02091CD0705 |
:104590003091CE07220F331F220F331F8091CD079A |
:1045A0009091CE07820F931F8052934017C0809145 |
:1045B000CD079091CE0788539F4FA4F42091CD074B |
:1045C0003091CE07220F331F220F331F8091CD076A |
:1045D0009091CE07820F931F805E9C4F9093CE07E1 |
:1045E0008093CD0780917C07E82FFF27EE0FFF1FF8 |
:1045F000E65BF84F8081918182599F4F20913F0463 |
:1046000030914004281739071CF42F5F3F4F0CC02E |
:104610008081918182599F4F821793074CF4211515 |
:10462000310531F0215030403093400420933F0455 |
:1046300080917D07E82FFF27EE0FFF1FE65BF84F05 |
:104640008081918182599F4F20913D0430913E0499 |
:10465000281739071CF42F5F3F4F0CC080819181D0 |
:1046600082599F4F821793074CF42115310531F081 |
:104670002150304030933E0420933D0480917E07CA |
:10468000E82FFF27EE0FFF1FE65BF84F8081918137 |
:1046900082599F4F20913B0430913C0428173907E1 |
:1046A0001CF42F5F3F4F0CC08081918182599F4F36 |
:1046B000821793074CF42115310531F02150304019 |
:1046C00030933C0420933B0480917F07E82FFF2721 |
:1046D000EE0FFF1FE65BF84F8081918182599F4F5B |
:1046E0002091390430913A04281739071CF42F5FC0 |
:1046F0003F4F0CC08081918182599F4F8217930751 |
:104700004CF42115310531F02150304030933A04FA |
:104710002093390480913F049091400497FF05C095 |
:104720001092400410923F040AC08F3F910539F067 |
:1047300034F08FEF90E09093400480933F04809199 |
:104740003D0490913E0497FF05C010923E041092E4 |
:104750003D040AC08F3F910539F034F08FEF90E0AF |
:1047600090933E0480933D0480913B0490913C04DF |
:1047700097FF05C010923C0410923B040AC08F3F83 |
:10478000910539F034F08FEF90E090933C048093E2 |
:104790003B048091390490913A0497FF05C0109230 |
:1047A0003A04109239040AC08F3F910539F034F071 |
:1047B0008FEF90E090933A0480933904DF91CF918A |
:1047C0001F910F91FF90EF90DF90CF90BF90AF902F |
:1047D0009F900895809101018D3010F00E94660F26 |
:1047E00010927A008091F4039091F5039093DA0788 |
:1047F0008093D9078091F2039091F3039093CE07B1 |
:104800008093CD078091F0039091F103909301087C |
:10481000809300088091EC039091ED03AA2797FD07 |
:10482000A095BA2FBC01CD012CE030E040E050E073 |
:104830000E941047DC01CB019093FD078093FC0799 |
:104840008091EE039091EF03AA2797FDA095BA2FD0 |
:10485000BC01CD010E941047DC01CB0190930F08F1 |
:1048600080930E088091EA039091EB039093E30705 |
:104870008093E2078FEE80937A0080917C07E82F87 |
:10488000FF27EE0FFF1FE65BF84F80819181825971 |
:104890009F4F20913F0430914004281739071CF4A2 |
:1048A0002F5F3F4F0CC08081918182599F4F8217AB |
:1048B00093074CF42115310531F0215030403093ED |
:1048C000400420933F0480917D07E82FFF27EE0FDF |
:1048D000FF1FE65BF84F8081918182599F4F2091A5 |
:1048E0003D0430913E04281739071CF42F5F3F4FD9 |
:1048F0000CC08081918182599F4F821793074CF49D |
:104900002115310531F02150304030933E04209381 |
:104910003D0480917E07E82FFF27EE0FFF1FE65B27 |
:10492000F84F8081918182599F4F20913B043091B3 |
:104930003C04281739071CF42F5F3F4F0CC08081BF |
:10494000918182599F4F821793074CF421153105AD |
:1049500031F02150304030933C0420933B0480914F |
:104960007F07E82FFF27EE0FFF1FE65BF84F8081E0 |
:10497000918182599F4F2091390430913A04281730 |
:1049800039071CF42F5F3F4F0CC080819181825901 |
:104990009F4F821793074CF42115310531F02150B8 |
:1049A000304030933A042093390480913F04909131 |
:1049B000400497FF05C01092400410923F040AC0C3 |
:1049C0008F3F910539F034F08FEF90E090934004E1 |
:1049D00080933F0480913D0490913E0497FF05C071 |
:1049E00010923E0410923D040AC08F3F910539F0A9 |
:1049F00034F08FEF90E090933E0480933D048091DB |
:104A00003B0490913C0497FF05C010923C04109227 |
:104A10003B040AC08F3F910539F034F08FEF90E0EE |
:104A200090933C0480933B048091390490913A0424 |
:104A300097FF05C010923A04109239040AC08F3FC4 |
:104A4000910539F034F08FEF90E090933A04809321 |
:104A500039048091A3079927AA27BB27BC01CD0160 |
:104A600024EC39E040E050E00E941047DC01CB012B |
:104A700080938B0390938C03A0938D03B0938E034C |
:104A80008091A4079927AA27BB27BC01CD010E94CA |
:104A90001047DC01CB018093870390938803A09398 |
:104AA0008903B0938A03089510929304109292049C |
:104AB000109291041092900480E090E0A0E0B0E0A9 |
:104AC00080938A0490938B04A0938C04B0938D04FC |
:104AD00010929D0410929C0410929B0410929A04D0 |
:104AE00010929904109298041092F2071092F10714 |
:104AF00010921804109217040E94EA2384E690E0B2 |
:104B00000E94CA0D0E94EA238091800780FF10C096 |
:104B10008091110390911203875B934038F4809148 |
:104B20001103909112038E5E924010F40E941E0FAA |
:104B30004091F4035091F50350939D0440939C04DD |
:104B40002091F2033091F30330939B0420939A0455 |
:104B50008091F0039091F1039093990480939804CD |
:104B60008091F0039091F1039093F2078093F10705 |
:104B700030939704209396045093950440939404A3 |
:104B800044E050E0DA010E949F47802D853038F1E3 |
:104B900080910E0890910F0897FF03C09095819522 |
:104BA0009F4F6CE070E00E944F47709391046093B8 |
:104BB00090048091FC079091FD0797FF03C09095AA |
:104BC00081959F4F6CE070E00E944F477093930473 |
:104BD00060939204809132079091330734C0DA01D8 |
:104BE0000E949F47802D9927982F8827DA011196D8 |
:104BF0000E949F47202D820F911D909393048093D4 |
:104C00009204DA0112960E949F47802D9927982FCF |
:104C10008827DA0113960E949F47202D820F911D4D |
:104C20009093910480939004DA0114960E949F4718 |
:104C3000802D9927982F8827DA0115960E949F4783 |
:104C4000202D820F911DAA2797FDA095BA2FBC0198 |
:104C5000CD010E944E46DC01CB0180938A049093E3 |
:104C60008B04A0938C04B0938D0410926404109272 |
:104C7000650410926604109267041092600410920A |
:104C80006104109262041092630410925C0410920A |
:104C90005D0410925E0410925F041092580410920A |
:104CA000590410925A0410925B041092540410920A |
:104CB000550410925604109257041092DA0710927D |
:104CC000D9071092CE071092CD07109201081092CA |
:104CD000000884E690E00E94CA0D80911303909131 |
:104CE0001403A0911503B091160390933507809398 |
:104CF00034071092E3031092E20310924C041092D6 |
:104D00004D0410924E0410924F0480914A049091E9 |
:104D10004B0490934904809348040E94354282E3F7 |
:104D200090E09093D4038093D3038091A3079927B5 |
:104D3000AA27BB27BC01CD0124EC39E040E050E0BC |
:104D40000E941047DC01CB018856954CAF4FBF4FF6 |
:104D500080938B0390938C03A0938D03B0938E0369 |
:104D60008091A4079927AA27BB27BC01CD010E94E7 |
:104D70001047DC01CB018856954CAF4FBF4F809355 |
:104D8000870390938803A0938903B0938A031092BA |
:104D900076031092750380914A0490914B04AA27E0 |
:104DA00097FDA095BA2FBC01CD012EE036E040E082 |
:104DB00050E00E941047DC01CB0180930A089093D9 |
:104DC0000B08A0930C08B0930D08109242041092A7 |
:104DD000410481E0809300010E94134580910A0400 |
:104DE000846080930A04089580912F04882321F51C |
:104DF0008093D8078093CF078093F7078093F907B4 |
:104E00008091B803882311F08093CF078091B90374 |
:104E1000882311F08093D8078091BA03882311F07A |
:104E20008093F9078091BB03882311F08093F707E3 |
:104E300080910A048C7F03C080910A048160809372 |
:104E40000A048091CF07992790930707809306075C |
:104E50008091D8079927909309078093080780913C |
:104E6000F907992790930B0780930A078091F7071A |
:104E7000992790930D0780930C07109205041092C8 |
:104E800004040E94341908951F93809183078B3F77 |
:104E900098F08B3F19F480913F040EC08C3F19F4B9 |
:104EA00080913D0409C08D3F19F480913B0404C0FA |
:104EB0008E3F21F480913904809381038091820791 |
:104EC0008B3F98F08B3F19F480913F040EC08C3FCC |
:104ED00019F480913D0409C08D3F19F480913B0481 |
:104EE00004C08E3F21F48091390480938203809125 |
:104EF0008203882329F0843618F084E680938203A5 |
:104F0000809184078B3F98F08B3F19F480913F0488 |
:104F10000EC08C3F19F480913D0409C08D3F19F4F7 |
:104F200080913B0404C08E3F21F48091390480932A |
:104F3000800380918003882329F0843618F084E66A |
:104F400080938003809186078B3F98F08B3F19F404 |
:104F500080913F040EC08C3F19F480913D0409C03C |
:104F60008D3F19F480913B0404C08E3F21F4809161 |
:104F7000390480937F0380918D078B3F98F08B3F9E |
:104F800019F480913F040EC08C3F19F480913D04C8 |
:104F900009C08D3F19F480913B0404C08E3F21F479 |
:104FA0008091390480937E0380918E078B3F98F027 |
:104FB0008B3F19F480913F040EC08C3F19F480910F |
:104FC0003D0409C08D3F19F480913B0404C08E3F1D |
:104FD00021F48091390480937D0380917D038B308F |
:104FE00010F48AE002C08F3F11F480937D0380911A |
:104FF0008F078B3F98F08B3F19F480913F040EC0D0 |
:105000008C3F19F480913D0409C08D3F19F48091C3 |
:105010003B0404C08E3F21F48091390480937C03CB |
:10502000809194078B3F98F08B3F19F480913F0457 |
:105030000EC08C3F19F480913D0409C08D3F19F4D6 |
:1050400080913B0404C08E3F21F480913904809309 |
:105050007A03809195078B3F98F08B3F19F48091EC |
:105060003F040EC08C3F19F480913D0409C08D3F70 |
:1050700019F480913B0404C08E3F21F480913904DF |
:1050800080932004809196078B3F98F08B3F19F412 |
:1050900080913F040EC08C3F19F480913D0409C0FB |
:1050A0008D3F19F480913B0404C08E3F21F4809120 |
:1050B000390480931F04809197078B3F98F08B3FB2 |
:1050C00019F480913F040EC08C3F19F480913D0487 |
:1050D00009C08D3F19F480913B0404C08E3F21F438 |
:1050E0008091390480931E04809198078B3F98F03B |
:1050F0008B3F19F480913F040EC08C3F19F48091CE |
:105100003D0409C08D3F19F480913B0404C08E3FDB |
:1051100021F48091390480931D048091A8078B3F6E |
:1051200098F08B3F19F480913F040EC08C3F19F426 |
:1051300080913D0409C08D3F19F480913B0404C067 |
:105140008E3F21F48091390480931C048091A9073B |
:105150008B3F98F08B3F19F480913F040EC08C3F39 |
:1051600019F480913D0409C08D3F19F480913B04EE |
:1051700004C08E3F21F48091390480931B048091F8 |
:10518000AA078B3F98F08B3F19F480913F040EC023 |
:105190008C3F19F480913D0409C08D3F19F4809132 |
:1051A0003B0404C08E3F21F48091390480931A049B |
:1051B0008091AB078B3F98F08B3F19F480913F04AF |
:1051C0000EC08C3F19F480913D0409C08D3F19F445 |
:1051D00080913B0404C08E3F21F480913904809378 |
:1051E0001904809199078B3F98F08B3F19F48091B7 |
:1051F0003F040EC08C3F19F480913D0409C08D3FDF |
:1052000019F480913B0404C08E3F21F4809139044D |
:105210008093790380919E078B3F98F08B3F19F420 |
:1052200080913F040EC08C3F19F480913D0409C069 |
:105230008D3F19F480913B0404C08E3F21F480918E |
:105240003904809378038091A1078B3F98F08B3FBE |
:1052500019F480913F040EC08C3F19F480913D04F5 |
:1052600009C08D3F19F480913B0404C08E3F21F4A6 |
:1052700080913904809318048091A2078B3F98F0A5 |
:105280008B3F19F480913F040EC08C3F19F480913C |
:105290003D0409C08D3F19F480913B0404C08E3F4A |
:1052A00021F480913904809317048091A7078B3FE4 |
:1052B00098F08B3F19F480913F040EC08C3F19F495 |
:1052C00080913D0409C08D3F19F480913B0404C0D6 |
:1052D0008E3F21F480913904809377038091AD074C |
:1052E0008B3F98F08B3F19F480913F040EC08C3FA8 |
:1052F00019F480913D0409C08D3F19F480913B045D |
:1053000004C08E3F21F4809139048093EC07809192 |
:10531000EC07823010F481E002C08F3F11F48093DB |
:10532000EC078091AF078B3F98F08B3F19F4809189 |
:105330003F040EC08C3F19F480913D0409C08D3F9D |
:1053400019F480913B0404C08E3F21F4809139040C |
:105350008093FE078091FE07823010F481E002C046 |
:105360008F3F11F48093FE078091B0078B3F98F038 |
:105370008B3F19F480913F040EC08C3F19F480914B |
:105380003D0409C08D3F19F480913B0404C08E3F59 |
:1053900021F4809139048093D7078091B1078B3F26 |
:1053A00098F08B3F19F480913F040EC08C3F19F4A4 |
:1053B00080913D0409C08D3F19F480913B0404C0E5 |
:1053C0008E3F21F480913904809310088091B207B8 |
:1053D0008B3F98F08B3F19F480913F040EC08C3FB7 |
:1053E00019F480913D0409C08D3F19F480913B046C |
:1053F00004C08E3F21F4809139048093D0078091BE |
:10540000B3078B3F98F08B3F19F480913F040EC097 |
:105410008C3F19F480913D0409C08D3F19F48091AF |
:105420003B0404C08E3F21F4809139048093DB0754 |
:105430008091B4078B3F98F08B3F19F480913F0423 |
:105440000EC08C3F19F480913D0409C08D3F19F4C2 |
:1054500080913B0404C08E3F21F4809139048093F5 |
:1054600013088091B5078B3F98F08B3F19F480911A |
:105470003F040EC08C3F19F480913D0409C08D3F5C |
:1054800019F480913B0404C08E3F21F480913904CB |
:105490008093DD078091B8078B3F98F08B3F19F41C |
:1054A00080913F040EC08C3F19F480913D0409C0E7 |
:1054B0008D3F19F480913B0404C08E3F21F480910C |
:1054C00039048093110810917A03812F992787FD61 |
:1054D0009095A92FB92FBC01CD010E944E4617FF10 |
:1054E00006C020E030E040E853E40E94A94527E1EF |
:1054F00037EB41ED58E30E94C846DC01CB018093B5 |
:10550000830390938403A0938503B09386038091D3 |
:105510008B078093FF0780918A078093DC071F9198 |
:1055200008952F923F924F925F926F927F928F9247 |
:105530009F92AF92BF92CF92DF92EF92FF920F9322 |
:105540001F93CF93DF93CDB7DEB765970FB6F8946F |
:10555000DEBF0FBECDBF0E94531D309101013C3014 |
:1055600010F4299A01C02998E0903004F090310499 |
:10557000FA82E9828091DC0799270A96E816F906F3 |
:1055800014F49A83898380913804843608F06CC0BF |
:1055900080910303882399F4809106039091070377 |
:1055A0008F5F9F4F61F488E99AE39093D4038093CF |
:1055B000D30380E09CE090930703809306038091DF |
:1055C000C2049091C304009731F001979093C304F3 |
:1055D0008093C20404C010922F04109245043A3004 |
:1055E00011F4289A01C0289880910B0490910C0422 |
:1055F000895E9340B0F180919107282F33273A8339 |
:10560000298381E08093450480917807A82FBB27E8 |
:10561000AA0FBB1FFD01E05AF84F11821082809142 |
:105620007907282F3327220F331FC901805A984F3B |
:10563000FC0111821082A65BB84F11961C921E923B |
:10564000265B384FD90111961C921E9280917B07E0 |
:10565000E82FFF27EE0FFF1FE65BF84F1182108245 |
:10566000CEC210922F04CBC2809138048D3808F43A |
:10567000C6C2109245049091920782E3989FC001A0 |
:1056800011249093C3048093C204E981FA81B997ED |
:105690008CF080912F04882369F080910B04909105 |
:1056A0000C04FFEF8F3F9F0729F0019690930C04A5 |
:1056B00080930B0480910B0490910C048F3F910513 |
:1056C00009F038F51092A6041092A7041092A804CD |
:1056D0001092A9041092AA041092AB041092AC0488 |
:1056E0001092AD048A3F9105C9F481E08093CA0409 |
:1056F0001092AE041092AF041092B0041092B10454 |
:1057000010925404109255041092560410925704AB |
:1057100005C080910A04826080930A0480917A0710 |
:10572000E82FFF27EE0FFF1FE65BF84F8081918186 |
:10573000813591050CF49BC120912F04222309F09F |
:1057400096C180917B07E82FFF27EE0FFF1FE65BD6 |
:10575000F84F808191818C3491050CF4FBC08091CD |
:10576000C4048F5F8093C404893C08F480C13C303A |
:1057700010F4299801C0299A10922F041092C404A1 |
:1057800010920C0410920B0430917807E32FFF273E |
:10579000EE0FFF1FE65BF84F808191818734910502 |
:1057A000B4F480917907E82FFF27EE0FFF1FE65B27 |
:1057B000F84F808191810190F081E02DF7FF03C0C7 |
:1057C000F095E195FF4FE734F1050CF47AC041E024 |
:1057D00020917907A22FBB27AA0FBB1FA65BB84F4A |
:1057E0008D919C9111978734910544F0E32FFF2709 |
:1057F000EE0FFF1FE65BF84F808191818D919C91A8 |
:105800008734910574F080917807E82FFF27EE0F19 |
:10581000FF1FE65BF84F80819181873491050CF082 |
:1058200042E0E22FFF27EE0FFF1FE65BF84F80817B |
:1058300091818634910574F480917807E82FFF27D1 |
:10584000EE0FFF1FE65BF84F808191818734910551 |
:105850000CF043E0E22FFF27EE0FFF1FE65BF84F4F |
:10586000808191818A5B9F4F74F480917807E82F43 |
:10587000FF27EE0FFF1FE65BF84F80819181873491 |
:1058800091050CF044E0E22FFF27EE0FFF1FE65BCF |
:10589000F84F808191818A5B9F4F74F480917807E3 |
:1058A000E82FFF27EE0FFF1FE65BF84F8081918105 |
:1058B000863491050CF445E0A2E0B0E0042E0E948D |
:1058C000A74780917907E82FFF27EE0FFF1FE65BC0 |
:1058D000F84F808191810190F081E02DF7FF03C0A6 |
:1058E000F095E195FF4F7497BCF480917807E82F0D |
:1058F000FF27EE0FFF1FE65BF84F808191818A5BE7 |
:105900009F4F54F481E08093470688EE93E0909394 |
:10591000D4038093D303ABC00E94B20243E568E78F |
:1059200077E00E9484028091800780FF10C0809100 |
:10593000110390911203875B934038F48091110317 |
:10594000909112038E5E924010F40E941E0F0E94EE |
:10595000542586C080819181855B9F4F0CF085C066 |
:105960008091C4048F5F8093C404893C08F47FC095 |
:105970003C3010F4299801C0299AA4E0B0E08FEFE0 |
:10598000082E0E94A74710922F041092C404109270 |
:105990000C0410920B040E945425A4E0B0E0809106 |
:1059A00092049091930497FF02C081509F4F892FDA |
:1059B000990F990B082E0E94A747A5E0B0E08091AF |
:1059C000920490919304082E0E94A747A6E0B0E0AD |
:1059D000809190049091910497FF02C081509F4F55 |
:1059E000892F990F990B082E0E94A747A7E0B0E0D6 |
:1059F0008091900490919104082E0E94A74708E09E |
:105A000010E080918A0490918B04A0918C04B09155 |
:105A10008D04BC01CD010E943146DC01CB019C010B |
:105A200097FF02C021503F4F832F992787FD9A95FA |
:105A3000D801082E0E94A74709E010E080918A044F |
:105A400090918B04A0918C04B0918D04BC01CD0188 |
:105A50000E943146DC01CB01D801082E0E94A747E5 |
:105A60000E94B2020E943C1D02C02093C404809197 |
:105A70007A07E82FFF27EE0FFF1FE65BF84F8081C4 |
:105A800091818B5A9F4F0CF0BAC020917B07E22F77 |
:105A9000FF27EE0FFF1FE65BF84F80819181855B4A |
:105AA0009F4F0CF072C08091C5048F5F8093C50436 |
:105AB000893C08F46CC088EC8093C50481E090E0D8 |
:105AC00090930C0480930B0481E080932F04109238 |
:105AD000AE041092AF041092B0041092B104109270 |
:105AE00054041092550410925604109257041092C8 |
:105AF00050041092510410925204109253041092C8 |
:105B00006404109265041092660410926704109267 |
:105B10005C0410925D0410925E0410925F04809108 |
:105B2000840490918504A0918604B09187048093A9 |
:105B3000600490936104A0936204B0936304809125 |
:105B40007C0490917D04A0917E04B0917F048093A9 |
:105B5000580490935904A0935A04B0935B04109294 |
:105B6000A6041092A7041092A8041092A9041092FF |
:105B7000AA041092AB041092AC041092AD04809170 |
:105B80000A04886080930A0402C01092C504E22FC0 |
:105B9000FF27EE0FFF1FE65BF84F808191818C3469 |
:105BA00091055CF180917807E82FFF27EE0FFF1F2A |
:105BB000E65BF84F808191818C349105F4F08091FF |
:105BC0007907E82FFF27EE0FFF1FE65BF84F808174 |
:105BD0009181855B9F4F8CF48091C6048F5F809389 |
:105BE000C604893C60F010922F0488EC8093C604B0 |
:105BF00010920C0410920B0402C01092C604809103 |
:105C00007403815080937403809174038F3F29F053 |
:105C100080914504882309F4F1C30E9444278091B0 |
:105C2000D3049091D404AC01440F551F480F591F61 |
:105C3000F0907807AF2DBB27AA0FBB1FFD01E65BD5 |
:105C4000F84FE0908707CE2CDD24808191818C9DD8 |
:105C500080018D9D100D9C9D100D1124400F511F32 |
:105C600057FF02C04D5F5F4F559547955595479536 |
:105C7000A05AB84F80918807682F77278D919C9103 |
:105C8000869F9001879F300D969F300D1124420F03 |
:105C9000531F5093D4044093D3048091FB049091FC |
:105CA000FC042091F7043091F804820F931F481BE5 |
:105CB000590B50933704409336048091D50490914A |
:105CC000D604AC01440F551F480F591F00917907A6 |
:105CD000A02FBB27AA0FBB1FFD01E65BF84F8081F9 |
:105CE00091818C9DF0018D9DF00D9C9DF00D1124F6 |
:105CF0004E0F5F1F57FF02C04D5F5F4F5595479591 |
:105D000055954795A05AB84F8D919C91869F9001CB |
:105D1000879F300D969F300D1124420F531F5093D3 |
:105D2000D6044093D5048091F9049091FA0420910F |
:105D3000F5043091F604820F931F481B590B5093C2 |
:105D400035044093340480917B07E82FFF27EE0F42 |
:105D5000FF1FE65BF84F80819181909581959F4F61 |
:105D6000909333048093320480917A07E82FFF27C1 |
:105D7000EE0FFF1FE65BF84F8081918188589F4F9F |
:105D8000909331048093300410917D03812F9927E3 |
:105D900087FD9095A92FB92FBC01CD010E944E46D9 |
:105DA00017FF06C020E030E040E853E40E94A94518 |
:105DB00020E030E040E251E40E94A945DC01CB0143 |
:105DC00020E030E040E85CE3BC01CD010E94C84621 |
:105DD000DC01CB018093050890930608A093070887 |
:105DE000B093080810917C03812F992787FD909527 |
:105DF000A92FB92FBC01CD010E944E4617FF06C046 |
:105E000020E030E040E853E40E94A94520E030EE75 |
:105E10004BE256E40E94EB45DC01CB018093F30793 |
:105E20009093F407A093F507B093F6076091B5033C |
:105E3000662331F08AE090E09093D4038093D303FB |
:105E4000462F552742FF09C080911108282F33277C |
:105E5000220F331F220F331F13C09A012870307096 |
:105E600043FF0EC080911108282F33278CEF9FEF3E |
:105E7000289FA001299F500D389F500D11249A0191 |
:105E80008091150490911604AC01F3E0440F551F66 |
:105E9000FA95E1F7481B590B420F531F57FF02C0F9 |
:105EA000495F5F4FE3E055954795EA95E1F75093D9 |
:105EB000160440931504462F552744FF09C08091CE |
:105EC0001108282F3327220F331F220F331F13C02F |
:105ED0009A012072307045FF0EC080911108282F62 |
:105EE00033278CEF9FEF289FD001299FB00D389F5B |
:105EF000B00D11249D018091130490911404AC0104 |
:105F000063E0440F551F6A95E1F7481B590B420F98 |
:105F1000531F57FF02C0495F5F4F83E05595479578 |
:105F20008A95E1F750931404409313044091B4030D |
:105F3000842F992783FF03C082E390E007C09C0170 |
:105F40002470307082FF07C08EEC9FEF9093120494 |
:105F50008093110404C03093120420931104242F61 |
:105F6000332721FF09C08091750390917603019634 |
:105F7000909376038093750324FF09C08091750385 |
:105F800090917603019790937603809375038091A7 |
:105F900015049091160497FD019695958795E091CB |
:105FA0003604F0913704E80FF91FF0933704E093BB |
:105FB0003604809113049091140497FD01969595F1 |
:105FC00087956091340470913504680F791F709340 |
:105FD0003504609334048091110490911204880F69 |
:105FE000991F880F991F4091320450913304480F34 |
:105FF000591F50933304409332048091530680FF1D |
:1060000059C080911108813808F454C080914C0621 |
:10601000992787FD90952E2D3327829FD001839F4E |
:10602000B00D929FB00D1124EA0FFB1FF0933704BF |
:10603000E093360480914D06992787FD9095829FC5 |
:10604000F001839FF00D929FF00D11246E0F7F1FC2 |
:10605000709335046093340480914E06992787FD30 |
:106060009095480F591F5093330440933204809108 |
:106070005006282F332727FD3095809185079927D3 |
:10608000289FA001299F500D389F500D1124509337 |
:1060900076034093750380914F06282F3327809114 |
:1060A0003004909131042817390724F430933104D7 |
:1060B00020933004809130049091310497FF04C004 |
:1060C00010923104109230048091800782FF0CC03E |
:1060D00080E090E0A0E0B0E08093F3079093F407B5 |
:1060E000A093F507B093F6078091050890910608F4 |
:1060F000A0910708B091080820E030E040E050E0AF |
:10610000BC01CD010E945846882364F480E090E0F1 |
:10611000A0E0B0E08093050890930608A0930708DC |
:10612000B09308088091F3079091F407A091F507C8 |
:10613000B091F60720E030E040E050E0BC01CD0136 |
:106140000E945846882364F480E090E0A0E0B0E02C |
:106150008093F3079093F407A093F507B093F607A5 |
:106160004091360450913704CA0157FD03969C01B3 |
:10617000359527953595279537FF03C0309521959F |
:106180003F4F80910F049091100482179307B4F44D |
:10619000CA0157FF03C0909581959F4F97FD0396C5 |
:1061A00095958795959587959093100480930F0406 |
:1061B0008536910544F084E690E001C00197909304 |
:1061C000100480930F044091340450913504CA01A7 |
:1061D00057FD03969C01359527953595279537FFF3 |
:1061E00003C0309521953F4F80910D0490910E048E |
:1061F00082179307B4F4CA0157FF03C090958195A5 |
:106200009F4F97FD039695958795959587959093C4 |
:106210000E0480930D048536910544F084E690E0E9 |
:1062200001C0019790930E0480930D048091450462 |
:10623000882341F01092100410920F0410920E0463 |
:1062400010920D04E02FFF27EE0FFF1FE65BF84FC3 |
:1062500040919F07242F3327808191812817390788 |
:1062600044F48091B90782FF04C081E08093240444 |
:1062700013C0E02FFF27EE0FFF1FE65BF84F842FC0 |
:1062800099272091A007821B91092081318128172D |
:10629000390714F41092240440917907E42FFF2762 |
:1062A000EE0FFF1FE65BF84F50919F07852F992750 |
:1062B00022273327281B390B80819181821793076E |
:1062C00044F48091B90783FF04C081E080932304E4 |
:1062D00016C080912304882391F0E42FFF27EE0F4E |
:1062E000FF1FE65BF84F8091A0079927851B910956 |
:1062F000208131818217930714F410922304EF2D2B |
:10630000FF27EE0FFF1FE65BF84F40919F07242FFA |
:106310003327808191812817390744F48091B90788 |
:1063200080FF04C081E08093210417C08091210484 |
:10633000882399F0EF2DFF27EE0FFF1FE65BF84F44 |
:10634000842F99272091A007821B910920813181F8 |
:106350002817390714F41092210440917807E42F8C |
:10636000FF27EE0FFF1FE65BF84F50919F07852F29 |
:10637000992722273327281B390B80819181821787 |
:10638000930744F48091B90781FF04C081E08093B2 |
:10639000220416C080912204882391F0E42FFF2765 |
:1063A000EE0FFF1FE65BF84F8091A0079927851B32 |
:1063B0009109208131818217930714F410922204ED |
:1063C00080912404882319F480912304811181E0B1 |
:1063D0008093250480912104882321F48091220454 |
:1063E000882351F081E080932604109225041092B6 |
:1063F00024041092230402C0809326048091250473 |
:10640000882321F480912604882351F080919E07EF |
:106410009927A981BA818A179B0714F49A838983E3 |
:10642000B0914504BB83BB2341F110923304109219 |
:1064300032041092370410923604109235041092F0 |
:10644000340480E090E0A8ECBFE3809305089093CB |
:106450000608A0930708B09308088BE09CEBA2E322 |
:10646000BCE38093F3079093F407A093F507B093F0 |
:10647000F60710922504109226048091E607909169 |
:10648000E707A091E807B091E907209184043091D3 |
:1064900085044091860450918704820F931FA41FA6 |
:1064A000B51F8093E6079093E707A093E807B093A2 |
:1064B000E9078091ED079091EE07A091EF07B09169 |
:1064C000F00760907C0470907D0480907E04909032 |
:1064D0007F04860D971DA81DB91D8093ED0790932D |
:1064E000EE07A093EF07B093F0078091DE0790913D |
:1064F000DF07A091E007B091E107E0908004F09001 |
:1065000081040091820410918304EC82FD820E8349 |
:106510001F838E0D9F1DA01FB11F8093DE079093D8 |
:10652000DF07A093E007B093E1078091D307909134 |
:10653000D407A091D507B091D607E0907804F090E9 |
:10654000790400917A0410917B04E886F9860A8721 |
:106550001B878E0D9F1DA01FB11F8093D3079093A3 |
:10656000D407A093D507B093D607509026045520A2 |
:1065700029F480912504882309F45FC010927404E3 |
:1065800010927504109276041092770410927004A1 |
:106590001092710410927204109273041092E60724 |
:1065A0001092E7071092E8071092E9071092ED07A2 |
:1065B0001092EE071092EF071092F0071092DE078C |
:1065C0001092DF071092E0071092E1071092D307B4 |
:1065D0001092D4071092D5071092D60780916404C8 |
:1065E00090916504A0916604B09167048093600463 |
:1065F00090936104A0936204B093630480915C045F |
:1066000090915D04A0915E04B0915F048093580462 |
:1066100090935904A0935A04B0935B041092E10341 |
:106620001092E003109228041092270410922A047A |
:1066300010922904552009F0FDC08091250488237B |
:1066400009F0F8C080918C07E82EFF24002711275D |
:10665000CA01B901A80197010E94844759016A0142 |
:106660008091FC079091FD07AA2797FDA095BA2F6E |
:10667000A81AB90ACA0ADB0AC401B301A801970122 |
:106680000E94844779018A0180910E0890910F0839 |
:10669000AA2797FDA095BA2FE81AF90A0A0B1B0B37 |
:1066A000D601C501D7FE03C00F96A11DB11D5C0127 |
:1066B0006D0154E0D594C794B794A7945A95D1F737 |
:1066C000D801C70117FF03C00F96A11DB11D7C01A2 |
:1066D0008D0144E015950795F794E7944A95D1F715 |
:1066E00080910F0490911004813491053CF48091C5 |
:1066F0000D0490910E0481349105A4F0C601B501FA |
:1067000023E030E040E050E00E94844759016A01F4 |
:10671000C801B70123E030E040E050E00E94844728 |
:1067200079018A0180917B07E82FFF27EE0FFF1F79 |
:10673000E65BF84F808191810190F081E02DF7FFB9 |
:1067400003C0F095E195FF4F7A97A4F0C601B5011B |
:1067500023E030E040E050E00E94844759016A01A4 |
:10676000C801B70123E030E040E050E00E948447D8 |
:1067700079018A0121E2A216B104C104D1042CF0EE |
:1067800030E2A32EB12CC12CD12C30EEA3163FEF5A |
:10679000B3063FEFC3063FEFD30644F420EEA22E2C |
:1067A0002FEFB22E2FEFC22E2FEFD22E41E2E416A2 |
:1067B000F104010511052CF090E2E92EF12C012DD8 |
:1067C000112D50EEE5165FEFF5065FEF05075FEF61 |
:1067D000150744F480EEE82E8FEFF82E8FEF082F88 |
:1067E0008FEF182F8091640490916504A091660446 |
:1067F000B09167048A199B09AC09BD0980936404B0 |
:1068000090936504A0936604B093670480915C0440 |
:1068100090915D04A0915E04B0915F048E199F0970 |
:10682000A00BB10B80935C0490935D04A0935E0475 |
:10683000B0935F048091E0039091E1038F3F910555 |
:1068400009F008F488C5552009F005C58091250494 |
:10685000882309F000C580914304882309F0FBC414 |
:106860008091E6079091E707A091E807B091E907CA |
:10687000B7FF04C081509F4FAF4FBF4F292E3A2E14 |
:106880004B2E552447FC5A942092E6073092E70796 |
:106890004092E8075092E9078091ED079091EE074A |
:1068A000A091EF07B091F007B7FF04C081509F4F50 |
:1068B000AF4FBF4F892F9A2FAB2FBB27A7FDBA959C |
:1068C0008C879D87AE87BF878093ED079093EE07F7 |
:1068D000A093EF07B093F00780918C07E82EFF2478 |
:1068E000002711272091740430917504409176049B |
:1068F00050917704C801B7010E94104797FF04C068 |
:1069000061507F4F8F4F9F4FA72EB82EC92EDD2489 |
:10691000C7FCDA94A0927404B0927504C092760415 |
:10692000D0927704209170043091710440917204E8 |
:1069300050917304C801B7010E94104797FF04C02B |
:1069400061507F4F8F4F9F4F672E782E892E99244D |
:1069500087FC9A9460927004709271048092720421 |
:106960009092730480916C0490916D04A0916E04D8 |
:10697000B0916F04B7FF04C081509F4FAF4FBF4F1E |
:10698000892F9A2FAB2FBB27A7FDBA9580936C0454 |
:1069900090936D04A0936E04B0936F04D201C10173 |
:1069A0008A199B09AC09BD098093BA049093BB0472 |
:1069B000A093BC04B093BD042091A507E22EFF2450 |
:1069C00000271127BC01CD01A80197010E9484472F |
:1069D00059016A012093CB043093CC044093CD0439 |
:1069E0005093CE048C859D85AE85BF858619970909 |
:1069F000A809B9098093BE049093BF04A093C00472 |
:106A0000B093C104BC01CD01A80197010E94844745 |
:106A10002093CF043093D0044093D1045093D204F8 |
:106A2000D601C501D7FE04C081509F4FAF4FBF4F65 |
:106A3000892F9A2FAB2FBB27A7FDBA9590932804D7 |
:106A40008093270457FF04C021503F4F4F4F5F4FA3 |
:106A5000BB2757FDBA95A52F942F832F90932A0417 |
:106A60008093290480910F04909110048134910542 |
:106A7000DCF480910D0490910E0481349105A4F40E |
:106A800080917B07E82FFF27EE0FFF1FE65BF84F93 |
:106A9000808191810190F081E02DF7FF03C0F09596 |
:106AA000E195FF4F7A97C4F08091270490912804D4 |
:106AB00097FD0196959587959093280480932704D8 |
:106AC0008091290490912A0497FD019695958795C8 |
:106AD00090932A04809329048091DE079091DF0728 |
:106AE000A091E007B091E107B7FF04C081509F4F2C |
:106AF000AF4FBF4F892F9A2FAB2FBB27A7FDBA955A |
:106B00008093DE079093DF07A093E007B093E1073F |
:106B10008091D3079091D407A091D507B091D60763 |
:106B2000B7FF04C081509F4FAF4FBF4F892F9A2F9F |
:106B3000AB2FBB27A7FDBA958093D3079093D407BB |
:106B4000A093D507B093D6078091840490918504D3 |
:106B5000A0918604B0918704EC80FD800E811F8196 |
:106B6000E81AF90A0A0B1B0BE092B204F092B30484 |
:106B70000093B4041093B50480917C0490917D043B |
:106B8000A0917E04B0917F04288539854A855B8574 |
:106B9000281B390B4A0B5B0B2093B6043093B704C8 |
:106BA0004093B8045093B904E092BA04F092BB0445 |
:106BB0000093BC041093BD042093BE043093BF0423 |
:106BC0004093C0045093C10480916004909161048B |
:106BD000A0916204B09163048E199F09A00BB10BC0 |
:106BE0008093600490936104A0936204B093630463 |
:106BF0008091580490915904A0915A04B0915B047B |
:106C0000821B930BA40BB50B8093580490935904EB |
:106C1000A0935A04B0935B04209141043091420444 |
:106C20002138310594F0809198049091990401964F |
:106C300090939904809398048091F1079091F207C2 |
:106C400001969093F2078093F10720583F4F94F4F8 |
:106C5000809198049091990401979093990480935E |
:106C600098048091F1079091F20701979093F207B1 |
:106C70008093F107A090ED07B090EE07C090EF076A |
:106C8000D090F007C601B5012AE130E040E050E0C5 |
:106C90000E94844730931B0720931A0710924204E6 |
:106CA0001092410481E090E09093D8048093D7043F |
:106CB0008091DD049091DE04A091DF04B091E004A6 |
:106CC0002091E6073091E7074091E8075091E907E6 |
:106CD000821B930BA40BB50B815E914BAF4FBF4F43 |
:106CE0008F539C49A040B04008F0FEC0F1E0EF1681 |
:106CF000F0E1FF06F0E00F07F0E01F070CF46CC0B6 |
:106D00008091D904882309F463C0D801C70117FF13 |
:106D100007C088279927DC018E199F09A00BB10BAA |
:106D2000B7FF04C08150904FAF4FBF4F2CE0B595D7 |
:106D3000A795979587952A95D1F701969093D804B2 |
:106D40008093D704D801C70117FF03C00796A11D80 |
:106D5000B11D13E0B595A795979587951A95D1F72D |
:106D60008093CB049093CC04A093CD04B093CE0435 |
:106D700089589341A040B04064F088E893E1A0E0D6 |
:106D8000B0E08093CB049093CC04A093CD04B09357 |
:106D9000CE042091CB043091CC044091CD0450918D |
:106DA000CE0457FF04C021503F4F4F4F5F4F232F5A |
:106DB000342F452F552747FD5A95809127049091F0 |
:106DC0002804820F931F909328048093270406C001 |
:106DD00081E08093D90402C01092D904E090BA04F3 |
:106DE000F090BB040091BC041091BD0420E0E216B9 |
:106DF00020EFF2062FEF02072FEF12070CF071C001 |
:106E00008091DA04882309F468C0A801970117FF6C |
:106E100007C022273327A9012E193F09400B510B28 |
:106E200057FF04C02150304F4F4F5F4FECE0559556 |
:106E3000479537952795EA95D1F78091D70490919A |
:106E4000D804820F931F9093D8048093D704D8015D |
:106E5000C70117FF03C00796A11DB11D73E0B595CB |
:106E6000A795979587957A95D1F78093CB049093C2 |
:106E7000CC04A093CD04B093CE0488579C4EAF4F62 |
:106E8000BF4F64F488E79CEEAFEFBFEF8093CB0475 |
:106E90009093CC04A093CD04B093CE042091CB0466 |
:106EA0003091CC044091CD045091CE0457FF04C0E2 |
:106EB00021503F4F4F4F5F4F232F342F452F5527E2 |
:106EC00047FD5A958091270490912804820F931FC3 |
:106ED000909328048093270411C081E08093DA0402 |
:106EE0000DC01092DA040AC01092D8041092D70490 |
:106EF00088EE93E09093900380938F031091A60700 |
:106F0000212F33278091D7049091D804281739076F |
:106F100024F43093D8042093D7044091BA045091BC |
:106F2000BB046091BC047091BD04413084E05807FB |
:106F300080E0680780E0780774F080919C0490916D |
:106F40009D042091D7043091D804820F931F909311 |
:106F50009D0480939C0440505C4F6F4F7F4F74F4AE |
:106F600080919C0490919D042091D7043091D80485 |
:106F7000821B930B90939D0480939C0481E090E08E |
:106F80009093D8048093D7041092CF041092D00429 |
:106F90001092D1041092D2048091E1049091E20405 |
:106FA000A091E304B091E4048A199B09AC09BD09DE |
:106FB000815E914BAF4FBF4F8F539C49A040B04073 |
:106FC00008F000C1C090BE04D090BF04E090C0049F |
:106FD000F090C104F1E0CF16F0E1DF06F0E0EF063B |
:106FE000F0E0FF060CF46CC08091DB04882309F408 |
:106FF00063C0D701C601F7FE07C088279927DC01C7 |
:107000008C199D09AE09BF09B7FF04C08150904F8C |
:10701000AF4FBF4F3CE0B595A795979587953A95AB |
:10702000D1F701969093D8048093D704D701C60175 |
:10703000F7FE03C00796A11DB11D23E0B595A795E6 |
:10704000979587952A95D1F78093CF049093D00494 |
:10705000A093D104B093D20489589341A040B0408A |
:1070600064F088E893E1A0E0B0E08093CF049093CF |
:10707000D004A093D104B093D2042091CF043091D6 |
:10708000D0044091D1045091D20457FF04C0215044 |
:107090003F4F4F4F5F4F232F342F452F552747FD2D |
:1070A0005A958091290490912A04820F931F9093FE |
:1070B0002A048093290406C081E08093DB0402C087 |
:1070C0001092DB0420E0C21620EFD2062FEFE2067A |
:1070D0002FEFF2060CF073C08091DC04882309F4D2 |
:1070E0006AC0D701C601F7FE07C088279927DC01CF |
:1070F0008C199D09AE09BF099C01AD01B7FF04C001 |
:107100002150304F4F4F5F4F8CE055954795379545 |
:1071100027958A95D1F78091D7049091D804820F52 |
:10712000931F9093D8048093D704D701C601F7FE2C |
:1071300003C00796A11DB11D03E0B595A7959795CE |
:1071400087950A95D1F78093CF049093D004A093AC |
:10715000D104B093D20488579C4EAF4FBF4F64F414 |
:1071600088E79CEEAFEFBFEF8093CF049093D004FD |
:10717000A093D104B093D2042091CF043091D004D5 |
:107180004091D1045091D20457FF04C021503F4F89 |
:107190004F4F5F4F232F342F452F552747FD5A95CB |
:1071A0008091290490912A04820F931F90932A04BE |
:1071B0008093290411C081E08093DC040DC01092FB |
:1071C000DC040AC01092D8041092D70488EE93E031 |
:1071D0009093900380938F03212F33278091D704BE |
:1071E0009091D8042817390724F43093D8042093B9 |
:1071F000D7044091BE045091BF046091C0047091C7 |
:10720000C104413084E0580780E0680780E07807D7 |
:1072100074F080919A0490919B042091D70430914E |
:10722000D804820F931F90939B0480939A0440503C |
:107230005C4F6F4F7F4FCCF480919A0490919B04E8 |
:107240002091D7043091D804821B930B90939B0418 |
:1072500080939A040AC010922A0410922904109272 |
:10726000280410922704109243048091F307909110 |
:10727000F407A091F507B091F60720E030E040E078 |
:1072800050E0BC01CD010E945846882341F4109281 |
:107290002A04109229041092280410922704809145 |
:1072A000E6079091E707A091E807B091E90780937E |
:1072B000DD049093DE04A093DF04B093E00480919A |
:1072C000ED079091EE07A091EF07B091F007809342 |
:1072D000E1049093E204A093E304B093E4041092D9 |
:1072E0007404109275041092760410927704109230 |
:1072F0007004109271041092720410927304109230 |
:107300006C0410926D0410926E0410926F0410922F |
:10731000E6071092E7071092E8071092E90710922B |
:10732000ED071092EE071092EF071092F0071092FF |
:10733000DE071092DF071092E0071092E10710922B |
:10734000D3071092D4071092D5071092D607109247 |
:10735000E1031092E003A0903204B0903304C50121 |
:10736000B7FE04C0882799278A199B0940976CF0BB |
:1073700088EE93E09093900380938F038091800731 |
:1073800084FD03C081E08093CA04D0908907ED2C6E |
:10739000FF2400271127B501882777FD8095982FB6 |
:1073A0009501B7FE04C0222733272A193B09442739 |
:1073B00037FD4095542F0E9410479B01AC01C80136 |
:1073C000B7010E94104797FF04C061507E4F8F4F56 |
:1073D0009F4FE9E09595879577956795EA95D1F761 |
:1073E0009B018D2D99278A9DD0018B9DB00D9A9D73 |
:1073F000B00D1124CD01B7FD039695958795959510 |
:107400008795280F391F442737FD4095542F209327 |
:10741000AE043093AF044093B0045093B104809114 |
:10742000540490915504A0915604B0915704821BC6 |
:10743000930BA40BB50B8093540490935504A09325 |
:107440005604B09357048155934CA040B04064F06B |
:1074500080E593ECA0E0B0E0809354049093550451 |
:10746000A0935604B093570480915404909155040E |
:10747000A0915604B0915704805B9C43AF4FBF4F1F |
:1074800064F480EB9CE3AFEFBFEF809354049093E0 |
:107490005504A0935604B093570480914A049091E8 |
:1074A0004B04892B09F455C18091800783FF51C19A |
:1074B0008091840490918504A0918604B091870402 |
:1074C000B7FF04C081509E4FAF4FBF4F59E0B595F5 |
:1074D000A795979587955A95D1F76C0197FF04C0AA |
:1074E000D094C194D108D39480917C0490917D0470 |
:1074F000A0917E04B0917F04B7FF04C081509E4FDD |
:10750000AF4FBF4F49E0B595A795979587954A9599 |
:10751000D1F7BC0197FF03C0709561957F4FC616E8 |
:10752000D7060CF46B01B601D7FE02C0695F7F4F2E |
:107530001B0133E0359427943A95E1F70894211C18 |
:10754000311C80914A0490914B04845E9D4F7C01D4 |
:107550000027F7FC0095102F40900A0850900B0868 |
:1075600060900C0870900D08C301B2012EE036E067 |
:1075700040E050E00E94844749015A01E21AF30AB0 |
:10758000040B150BC801B70128E631E040E050E0DC |
:107590000E948447DC01CB019C01245B3040E091D8 |
:1075A0008F03F09190033097F1F409E1C016D104F4 |
:1075B000D4F48091410490914204820F931F9093E0 |
:1075C0004204809341048091CA04882361F088ECCE |
:1075D00090E09093D4038093D303909249048092D7 |
:1075E00048041092CA04C90123E0880F991F2A9504 |
:1075F000E1F7B1010E944F479B01442737FD4095B9 |
:10760000542F240D351D461D571D20930A08309315 |
:107610000B0840930C0850930D0810917E03612FC6 |
:107620007727C69EC001C79E900DD69E900D11244F |
:1076300097FD4F966C0185E0D594C7948A95E1F744 |
:107640006C197D096B0177FD7EC0309709F075C01C |
:10765000E0900F04F090100480910D0490910E04BE |
:10766000E80EF91EF7FE04C087E090E0E80EF91E70 |
:1076700003E0F594E7940A95E1F7A0E4B0E0EA0EA0 |
:10768000FB1ECA01B9012EE036E040E050E00E9446 |
:107690008447DA01C9012091480430914904442704 |
:1076A00037FD4095542F821B930BA40BB50B845EC2 |
:1076B0009D4FAF4FBF4FBC01CD0128E631E040E008 |
:1076C00050E00E948447DC01CB01845B90408C9D9C |
:1076D000F0018D9DF00D9C9DF00D1124CF01B7019F |
:1076E0000E944F4783E0189F60011124C616D706F9 |
:1076F00014F4B60108C0882799278C199D096817CA |
:1077000079070CF4BC019B01442737FD4095542FA9 |
:107710008091540490915504A0915604B09157045F |
:10772000820F931FA41FB51F809354049093550498 |
:10773000A0935604B09357040CC03197F093900374 |
:10774000E0938F0306C084EF91E0909390038093C1 |
:107750008F038091C90481508093C9048F3F09F041 |
:10776000B0C088E18093C90480918C07E82EFF2483 |
:10777000002711278091840490918504A0918604AC |
:10778000B0918704BC01CD01A80197010E948447F4 |
:107790003093EF062093EE0680917C0490917D0457 |
:1077A000A0917E04B0917F04BC01CD01A801970196 |
:1077B0000E9484473093F1062093F0068091FC07E5 |
:1077C0009091FD079093F3068093F20680910E0846 |
:1077D00090910F089093F5068093F406809100082D |
:1077E000909101089093F7068093F60680912D04FE |
:1077F00090912E049093F9068093F80680914C04A2 |
:1078000090914D04A0914E04B0914F04B7FF04C075 |
:1078100081509E4FAF4FBF4F19E0B595A7959795F3 |
:1078200087951A95D1F79093FB068093FA0680917D |
:107830004A0490914B049093FF068093FE0680913A |
:10784000170390911803909301078093000780918C |
:107850000A0890910B08A0910C08B0910D08BC018A |
:10786000CD012EE036E040E050E00E9484473093A6 |
:107870000507209304078091380499279093030704 |
:10788000809302078091470699279093150780936C |
:1078900014078091D0039091D103909317078093A0 |
:1078A00016078091FB049091FC0490932B07809322 |
:1078B0002A078091F9049091FA0490932D07809300 |
:1078C0002C0780912604A0900508B0900608C0906F |
:1078D0000708D09008088823A9F08091D9079091D3 |
:1078E000DA07AA2797FDA095BA2FBC01CD010E9407 |
:1078F0004E46DC01CB01A6019501BC01CD010E94E1 |
:10790000C8463AC08091840490918504A091860471 |
:10791000B0918704BC01CD010E944E467B018C01D1 |
:107920008091F3079091F407A091F507B091F607C5 |
:107930009C01AD01C801B7010E94C8467B018C01C2 |
:107940008091D9079091DA07AA2797FDA095BA2FC1 |
:10795000BC01CD010E944E46DC01CB01A601950180 |
:10796000BC01CD010E94C846DC01CB019C01AD01E8 |
:10797000C801B7010E94A945DC01CB01BC01CD01C2 |
:107980000E943146DC01CB019093DA078093D9073E |
:1079900080912504A0900508B0900608C0900708C3 |
:1079A000D09008088823A9F08091CD079091CE0748 |
:1079B000AA2797FDA095BA2FBC01CD010E944E4683 |
:1079C000DC01CB01A6019501BC01CD010E94C84696 |
:1079D0003AC080917C0490917D04A0917E04B09186 |
:1079E0007F04BC01CD010E944E467B018C01809139 |
:1079F000F3079091F407A091F507B091F6079C0169 |
:107A0000AD01C801B7010E94C8467B018C0180917D |
:107A1000CD079091CE07AA2797FDA095BA2FBC015C |
:107A2000CD010E944E46DC01CB01A6019501BC01AF |
:107A3000CD010E94C846DC01CB019C01AD01C8010B |
:107A4000B7010E94A945DC01CB01BC01CD010E9418 |
:107A50003146DC01CB019093CE078093CD07809116 |
:107A6000000890910108AA2797FDA095BA2FBC01A4 |
:107A7000CD010E944E467B018C01809105089091BA |
:107A80000608A0910708B09108089C01AD01BC014F |
:107A9000CD010E94A945DC01CB019C01AD01C801CB |
:107AA000B7010E94C8467B018C01809168049091C7 |
:107AB0006904A0916A04B0916B04BC01CD010E94DD |
:107AC0004E46DC01CB014090F3075090F4076090E4 |
:107AD000F5077090F607A3019201BC01CD010E9449 |
:107AE000C846DC01CB0120E030E040E05FE3BC01B0 |
:107AF000CD010E94C846DC01CB019C01AD01C8014B |
:107B0000B7010E94A945DC01CB01BC01CD010E9457 |
:107B10003146DC01CB0190930108809300088091ED |
:107B2000D9079091DA0790931907809318078091ED |
:107B3000CD079091CE0790931B0780931A078091F1 |
:107B4000D9079091DA078150904434F080E090E4B6 |
:107B50009093DA078093D9078091D9079091DA073B |
:107B60008050904C34F480E090EC9093DA0780934E |
:107B7000D9078091CD079091CE078150904434F081 |
:107B800080E090E49093CE078093CD078091CD075D |
:107B90009091CE078050904C34F480E090EC90931C |
:107BA000CE078093CD078091000890910108815005 |
:107BB000904434F080E090E49093010880930008B2 |
:107BC00080910008909101088050904C34F480E03E |
:107BD00090EC909301088093000889819A81880F26 |
:107BE000991F880F991F9A8389838091800799270D |
:107BF00080FFF0C02091810381FF0EC0223310F579 |
:107C000080912D0490912E04449790932C0480939E |
:107C10002B041092440419C080917503909176034F |
:107C2000820F911D209185073327829FD001839F6A |
:107C3000B00D929FB00D1124CD01449790932C0468 |
:107C400080932B0481E080934404BB81BB2321F00B |
:107C500010922C0410922B0400912D0410912E04EC |
:107C600020912B0430912C04201731070CF0B2C066 |
:107C700080914404882309F4ADC0021B130B80914A |
:107C800080039927089FF001099FF00D189FF00DC0 |
:107C90001124CF01F7FD03968C01159507951595D5 |
:107CA0000795E980FA80E01AF10A87018091E203E2 |
:107CB0009091E30397FD019695958795081B190B05 |
:107CC000C0904C04D0904D04E0904E04F0904F04CE |
:107CD000F7FE08C02FE730E040E050E0C20ED31EB0 |
:107CE000E41EF51E67E0F594E794D794C7946A956F |
:107CF000D1F780917F03282F332744275527C701C9 |
:107D0000B6010E94104797FF04C0615E7F4F8F4FFE |
:107D10009F4F55E095958795779567955A95D1F73B |
:107D200031E0693173071CF068E171E006C04EEF85 |
:107D3000683E740714F468EE7EEF061B170B809103 |
:107D4000C7049091C8049C0144E0220F331F4A9558 |
:107D5000E1F7281B390B200F311F37FF02C0215FCD |
:107D60003F4F14E0359527951A95E1F73093C804F5 |
:107D70002093C70480918107482F5527440F551F32 |
:107D8000440F551F2417350794F489819A8184176D |
:107D9000950724F05093C8044093C704A981BA8181 |
:107DA000A417B50724F4B093C804A093C704809126 |
:107DB000C7049091C804E981FA81E817F90724F40F |
:107DC000F093C804E093C704E090C704F090C8049F |
:107DD000FA82E9823090FF07832D9927880F991F37 |
:107DE000880F991F8055904009811A81801791074B |
:107DF00014F49A83898329813A813093FD06209374 |
:107E0000FC068091AE049091AF04A091B004B091B3 |
:107E1000B104F2E0880F991FAA1FBB1FFA95D1F792 |
:107E20008090000890900108881A990A213A31053B |
:107E30008CF0C90137FD01969595879588159905B0 |
:107E40000CF44C01909581959F4F8816990694F4F7 |
:107E50004C0110C031E5831691041CF070E5872EAB |
:107E6000912C40EB84164FEF940624F460EB862EA1 |
:107E70006FEF962E232D3327220F331F220F331F30 |
:107E8000C901A981BA818A1B9B0B881599050CF43D |
:107E90004C01E981FA81E21BF30B8E169F060CF46C |
:107EA0004F018091D9079091DA07E0903604F09065 |
:107EB0003704FD8AEC8A8E199F099093E507809319 |
:107EC000E40720E030E040E050E0C301B2010E944E |
:107ED00058462091A6043091A7044091A8045091DF |
:107EE000A904882309F448C0CA01B9010E944E467A |
:107EF0005B016C018091840490918504A0918604BB |
:107F0000B0918704BC01CD010E944E46DC01CB013B |
:107F1000A3019201BC01CD010E94C8467B018C01E6 |
:107F20002C893D89C901AA2797FDA095BA2FBC01CC |
:107F3000CD010E944E46DC01CB019C01AD01C80180 |
:107F4000B7010E94A845DC01CB019C01AD01C6012F |
:107F5000B5010E94A945DC01CB01BC01CD010E9405 |
:107F60003146DC01CB018093A6049093A704A09333 |
:107F7000A804B093A90414C08091E4079091E50788 |
:107F8000AA2797FDA095BA2F280F391F4A1F5B1FFC |
:107F90002093A6043093A7044093A8045093A90407 |
:107FA0008091A6049091A704A091A804B091A9047F |
:107FB00081509A4FA040B04064F080E09AEFA0E07A |
:107FC000B0E08093A6049093A704A093A804B09374 |
:107FD000A9048091A6049091A704A091A804B0914F |
:107FE000A90480509640AF4FBF4F64F480E096E004 |
:107FF000AFEFBFEF8093A6049093A704A093A804CB |
:10800000B093A9048091E4079091E507AA2797FD12 |
:10801000A095BA2FBC01CD010E944E467B018C0178 |
:108020008091A6049091A704A091A804B091A904FE |
:10803000BC01CD010E944E46DC01CB01209183039F |
:10804000309184034091850350918603288B398BAE |
:108050004A8B5B8B9C01AD01688979898A899B89F0 |
:108060000E94C846DC01CB019C01AD01C801B701EB |
:108070000E94A945DC01CB01BC01CD010E94314623 |
:10808000DC01CB018C0120907703622D77278827B4 |
:108090009927940197FE04C022273327281939090C |
:1080A00037FF02C02F5F3F4F3595279549815A8191 |
:1080B000240F351F442737FD4095542F0E94104749 |
:1080C00097FF04C0615C7F4F8F4F9F4F26E09595CF |
:1080D0008795779567952A95D1F79B01601771076A |
:1080E0000CF48B01309521953F4F021713070CF4C8 |
:1080F000890129813A81200F311F280D391DC901BD |
:1081000037FD03969C01359527953595279537FFC3 |
:1081100003C020E030E006C0832D99278217930723 |
:108120000CF49C013090DC07832D99272817390720 |
:108130000CF49C012093CF0729813A81201B310B3D |
:10814000280D391DC90137FD03969C0135952795EA |
:108150003595279537FF03C020E030E007C08091B8 |
:10816000FF079927821793070CF49C01832D992709 |
:10817000281739070CF49C012093D8078091CD076C |
:108180009091CE07A0913404B0913504BD8BAC8B97 |
:108190008A1B9B0B9093CC078093CB0720E030E0A9 |
:1081A00040E050E0C301B2010E9458462091AA0469 |
:1081B0003091AB044091AC045091AD04882309F494 |
:1081C00048C0CA01B9010E944E465B016C01809112 |
:1081D0007C0490917D04A0917E04B0917F04BC0149 |
:1081E000CD010E944E46DC01CB01A3019201BC01EE |
:1081F000CD010E94C8467B018C01EC89FD89CF012D |
:10820000AA2797FDA095BA2FBC01CD010E944E462A |
:10821000DC01CB019C01AD01C801B7010E94A8455A |
:10822000DC01CB019C01AD01C601B5010E94A9454D |
:10823000DC01CB01BC01CD010E943146DC01CB0148 |
:108240008093AA049093AB04A093AC04B093AD04C4 |
:1082500014C08091CB079091CC07AA2797FDA095D9 |
:10826000BA2F280F391F4A1F5B1F2093AA0430938F |
:10827000AB044093AC045093AD048091AA04909158 |
:10828000AB04A091AC04B091AD0481509A4FA040D2 |
:10829000B04064F080E09AEFA0E0B0E08093AA04E0 |
:1082A0009093AB04A093AC04B093AD048091AA0466 |
:1082B0009091AB04A091AC04B091AD048050964075 |
:1082C000AF4FBF4F64F480E096E0AFEFBFEF809315 |
:1082D000AA049093AB04A093AC04B093AD04809136 |
:1082E000CB079091CC07AA2797FDA095BA2FBC0188 |
:1082F000CD010E944E467B018C018091AA04909191 |
:10830000AB04A091AC04B091AD04BC01CD010E94BE |
:108310004E46DC01CB019C01AD01688979898A89CF |
:108320009B890E94C846DC01CB019C01AD01C801BC |
:10833000B7010E94A945DC01CB01BC01CD010E941F |
:108340003146DC01CB018C01622D772788279927E4 |
:10835000940197FE04C0222733272819390937FFD3 |
:1083600002C02F5F3F4F3595279549815A81240FD1 |
:10837000351F442737FD4095542F0E94104797FF23 |
:1083800004C0615C7F4F8F4F9F4FF6E095958795B6 |
:1083900077956795FA95D1F79B01601771070CF4F3 |
:1083A0008B01309521953F4F021713070CF489017B |
:1083B00029813A81200F311F28193909C90137FD58 |
:1083C00003969C01359527953595279537FF03C072 |
:1083D00020E030E007C08091FF07992782179307BC |
:1083E0000CF49C01832D9927281739070CF49C0164 |
:1083F0002093F90729813A81201B310B281939096B |
:10840000C90137FD03969C0135952795359527952C |
:1084100037FF03C020E030E007C08091FF079927B5 |
:10842000821793070CF49C01832D9927281739078D |
:108430000CF49C012093F70765960FB6F894DEBF05 |
:108440000FBECDBFDF91CF911F910F91FF90EF90A5 |
:10845000DF90CF90BF90AF909F908F907F906F9064 |
:108460005F904F903F902F9008958091F1049091EC |
:10847000F204A091F304B091F4048093E904909382 |
:10848000EA04A093EB04B093EC048091ED04909186 |
:10849000EE04A091EF04B091F0048093E504909372 |
:1084A000E604A093E704B093E80408951092FC0456 |
:1084B0001092FB041092FA041092F904089584B10A |
:1084C000806A84B93D9A82E58CBD1DBC459A81E0E5 |
:1084D000809314088AEA8093180883E88093190827 |
:1084E0008AE080931A0810921C0810921B081092C0 |
:1084F0001E0810921D0810923A080895F894809171 |
:10850000840490918504A0918604B0918704BC01F5 |
:10851000CD012CE630E040E050E00E9484473093EB |
:108520001C0820931B0880917C0490917D04A091ED |
:108530007E04B0917F04BC01CD012CE630E040E028 |
:1085400050E00E94844730931E0820931D088091BC |
:108550000A0890910B08A0910C08B0910D08BC017D |
:10856000CD012EE036E040E050E00E948447309399 |
:10857000240820932308E0918E04F0918F048091C9 |
:10858000EA079091EB07BF010E944F472CE030E0D3 |
:10859000629FA001639F500D729F500D1124509354 |
:1085A000200840931F088091030890910408BF01A0 |
:1085B0000E944F47629FA001639F500D729F500D14 |
:1085C0001124509322084093210810928F04109296 |
:1085D0008E041092EB071092EA0710920408109292 |
:1085E000030880911A0899278B30910509F468C017 |
:1085F0008C3091051CF40A9741F0E4C08C30910551 |
:1086000009F4D7C00D97D1F1DDC08091200480938B |
:108610002B0880911F0480932C0880911E04809366 |
:108620002D0880911D0480932E0880911C04809356 |
:108630002F0880911B048093300880911A04809346 |
:108640003108809119048093320880910A04809344 |
:108650003308837F80930A04809117039091180355 |
:10866000809334088091900780933508A2E0B0E0B1 |
:108670000E949F47802D80933608A4C08091D70721 |
:1086800080932B088091100880932C088091D0074C |
:1086900080932D088091DB0780932E08809113082A |
:1086A00080932F088091DD07809330088091B60772 |
:1086B000809331088091B707809332088FE076C0AD |
:1086C00080917A07E82FFF27EE0FFF1FE65BF84F38 |
:1086D0000190F081E02DE038F1051CF0EFE7F0E0CB |
:1086E00006C05FEFE138F50714F4E1E8FFEFE0932F |
:1086F0002B0880917B07E82FFF27EE0FFF1FE65B1B |
:10870000F84F0190F081E02DE038F1051CF0EFE723 |
:10871000F0E006C06FEFE138F60714F4E1E8FFEF90 |
:10872000E0932C0880917907E82FFF27EE0FFF1FB9 |
:10873000E65BF84F0190F081E02DE038F1051CF088 |
:10874000EFE7F0E006C08FEFE138F80714F4E1E856 |
:10875000FFEFE0932D0880917807E82FFF27EE0FB9 |
:10876000FF1FE65BF84F0190F081E02DE038F10546 |
:108770001CF0EFE7F0E006C02FEFE138F20714F449 |
:10878000E1E8FFEFE0932E0880913F0480932F08EB |
:1087900080913D048093300880913B0480933108A0 |
:1087A0008091390480933208809138048093330893 |
:1087B00009C080914706863018F01092470685E080 |
:1087C00080932B08789480913A08882309F456C046 |
:1087D00040913C0850913D08CA0181509E4F8F5FE7 |
:1087E0009340B0F420913E0830913F08C901815078 |
:1087F0009E4F8F5F934060F48091800785FF08C093 |
:108800005093FC044093FB043093FA042093F90442 |
:10881000809142089091430821E08936920724F420 |
:1088200090934B0480934A0480914A0490914B04A6 |
:108830002091480430914904821B930B845E9D4F24 |
:1088400068E671E00E944F47845B90409093470434 |
:108850008093460480914608282F33278091D303C4 |
:108860009091D4038217930788F480914706882358 |
:1088700069F43093D4032093D30308951092FC0439 |
:108880001092FB041092FA041092F904089580915A |
:108890001408882309F43BC0459888E198E0909338 |
:1088A0001608809315089091FD04E92FFF27E455E1 |
:1088B000FC4F9F5F9093FD04808180931A08953050 |
:1088C00010F01092FD04109214080E947E4281E084 |
:1088D0008093170800000000000000000000000066 |
:1088E0000000000000000000000000000000000088 |
:1088F0000000000000000000000000000000000078 |
:108900000000000080911808809337088EBD0895FC |
:1089100030911408332309F085C00DB407FE82C0DE |
:1089200084E08093D203459A2EB58091FF04992765 |
:108930008130910589F0823091051CF4892B21F05A |
:108940003EC00297B9F03BC0309339082093000530 |
:108950002138A9F581E008C0253549F4809100054A |
:10896000820F8093000582E08093FF0428C030933B |
:10897000FF0425C080913908E82FFF27EC5AF74FF4 |
:1089800020838F5F80933908909100058931A0F092 |
:10899000291769F4ABE3B8E0E4E5F8E089E1019078 |
:1089A0000D928150E1F781E080933A0802C0309344 |
:1089B0003A081092FF0403C0920F90930005209193 |
:1089C0001708203208F028C0459800000000000079 |
:1089D0000000000000000000000000000000000097 |
:1089E0000000000000000000000000000000000087 |
:1089F00000000000000000000000E0911508F09168 |
:108A00001608E20FF11D80818EBD8091370890819C |
:108A1000890F8093370803C081E0809314082F5F8B |
:108A200020931708089587B18C6087B942984398BE |
:108A30001092020580E88093B203109201058093A2 |
:108A4000B1030895809107058150809307058F3FFA |
:108A500009F070C084E0809307059091AD079B3FBB |
:108A600048F08091EC07873E28F08091AC0788237E |
:108A70003CF128C09B3F48F08091EC078A3028F4F5 |
:108A80008091AC078823F4F01BC0809102058150CF |
:108A9000809302058F3FB9F48091EC078150809359 |
:108AA00002058091B203813011F480E801C08695FF |
:108AB0008093B2038091B2039091AC07892311F0A7 |
:108AC000429A01C042989091AF079B3F48F0809135 |
:108AD000FE07873E28F08091AE07882344F10AC044 |
:108AE0009B3F50F08091FE078A3030F48091AE07B2 |
:108AF00087FF1DC0439808958091010581508093A0 |
:108B000001058F3FB9F48091FE07815080930105E4 |
:108B10008091B103813011F480E801C08695809383 |
:108B2000B1038091B1039091AE07892311F0439A6C |
:108B3000089543980895FC014150504030F0019051 |
:108B40000616D1F73197CF01089588279927089500 |
:108B50005058192EEFD001D0D2C0BA176207730750 |
:108B600084079507B1F188F40EF410940B2EBA2FF8 |
:108B7000A02D062E622F202D072E732F302D082EAC |
:108B8000842F402D092E952F502DFF275523B9F006 |
:108B9000591B49F0573E98F0469537952795A7956C |
:108BA000F0405395C9F776F0BA0F621F731F841F08 |
:108BB00030F4879577956795B795F040939517FAB8 |
:108BC0000F2E0895BF1BBB27BA0B620B730B840BD0 |
:108BD000F6CFDEF6DBC0AED001D091C0552359F000 |
:108BE000992369F09F575F57951B33F442F49038EF |
:108BF00011F4915805C09BC091589F3F09F4C6C01D |
:108C0000BB27112462177307840730F4660F771FA0 |
:108C1000881FBB1F915098F311D00F920FD00F9265 |
:108C20000DD0A0E82617370748071B0609F0A04813 |
:108C3000BA2F602D7F918F9100240895A0E8002421 |
:108C4000621773078407B10528F0621B730B840B4E |
:108C5000B1090A2A660F771F881FBB1FA69581F7E7 |
:108C6000089597FB73D09F3738F0FEE9F91B982FD2 |
:108C7000872F762F6B2F05C086C0969587957795A1 |
:108C80006795F150D0F73EF4909580957095619579 |
:108C90007F4F8F4F9F4F0895E89403C097FB0EF4CA |
:108CA000F3DFB62F672F782F892F9EE9002427C086 |
:108CB0000ED05EF004C00BD026F001C008D019F031 |
:108CC00020F48FEF089580E0089581E0089597FBE8 |
:108CD000092E052600F8689430D0E89407FC07C0F8 |
:108CE000621773078407950721F008F4009407942E |
:108CF000989408959A95BB0F661F771F881F1124BB |
:108D00009923A1F08823B2F79F3F59F0BB0F48F495 |
:108D100021F4002011F460FF04C06F5F7F4F8F4F7C |
:108D20009F4F881F9795879597F908952CC09FEFBF |
:108D300080EC0895052E092607FA440F551F5F3F62 |
:108D400079F0AA27A51708F051E04795880F991FD9 |
:108D50009F3F31F0BB27B91708F091E08795089540 |
:108D60009F919F911124E3CF97FB880F991F9F3FFD |
:108D700031F0BB27B91708F091E0879508959F91CE |
:108D80009F911124D4CF66277727882799270895A4 |
:108D9000D1DF01D0B4CF992339F0552329F09F5763 |
:108DA0005F57950F13F49AF1F1CF91589F3FE1F37C |
:108DB000629FA12D0F92BB27639FA00DB11DEE27CF |
:108DC000729FA00DB11DEE1FAF93AA27649FB00D37 |
:108DD000E11D739FB00DE11DAA1F6627829FB00D94 |
:108DE000E11DA61F5527749FE00DA11D551F839FF0 |
:108DF000E00DA11D561F849FA00D511D852F7A2FB8 |
:108E00006E2F1F900F9088231AF4939539F48FCF0B |
:108E1000000C111CBB1F661F771F881F01280895B7 |
:108E2000629FD001739FF001829FE00DF11D649F4E |
:108E3000E00DF11D929FF00D839FF00D749FF00DDA |
:108E4000659FF00D9927729FB00DE11DF91F639F7B |
:108E5000B00DE11DF91FBD01CF0111240895991B2B |
:108E600079E004C0991F961708F0961B881F7A9521 |
:108E7000C9F780950895AA1BBB1B51E107C0AA1F23 |
:108E8000BB1FA617B70710F0A61BB70B881F991FAB |
:108E90005A95A9F780959095BC01CD01089597FB4F |
:108EA000092E07260AD077FD04D0E5DF06D0002082 |
:108EB0001AF4709561957F4F0895F6F79095819516 |
:108EC0009F4F0895A1E21A2EAA1BBB1BFD010DC0E6 |
:108ED000AA1FBB1FEE1FFF1FA217B307E407F5076A |
:108EE00020F0A21BB30BE40BF50B661F771F881F46 |
:108EF000991F1A9469F760957095809590959B01DC |
:108F0000AC01BD01CF01089597FB092E05260ED0B7 |
:108F100057FD04D0D7DF0AD0001C38F45095409597 |
:108F2000309521953F4F4F4F5F4F0895F6F790953D |
:108F30008095709561957F4F8F4F9F4F0895F99958 |
:108F4000FECFB2BDA1BDF89A119600B40895F9996B |
:108F5000FECFB2BDA1BD00BC11960FB6F894FA9A2F |
:068F6000F99A0FBE08950E |
:108F6600010A01496E74656772616C4E69636B2014 |
:108F7600202020496E74656772616C526F6C6C209C |
:108F86002020204163634E69636B2020202020202F |
:108F9600202020416363526F6C6C2020202020200B |
:108FA6002020204779726F47696572202020202093 |
:108FB600202020486F6568656E57657274202020F2 |
:108FC6002020204163635A202020202020202020BA |
:108FD60020202047617320202020202020202020D0 |
:108FE6002020204B6F6D7061737356616C75652020 |
:108FF6002020205370616E6E756E67202020202021 |
:10900600202020456D7066616E672020202020207C |
:1090160020202045727361747A6B6F6D7061737373 |
:109026002020204D6F746F725F566F726E65202020 |
:109036002020204D6F746F725F48696E74656E20D4 |
:109046002020204D6F746F725F4C696E6B73202009 |
:109056002020204D6F746F725F52656368747320B1 |
:1090660020202020202020202020202020202020FA |
:1090760020202044697374616E63652020202020BF |
:109086002020204F7364426172202020202020205F |
:109096002020204D4B334D61672043616C53746132 |
:1090A600746520536572766F2020202020202020B2 |
:1090B6002020204E69636B202020202020202020A5 |
:1090C600202020526F6C6C20202020202020202081 |
:1090D600202020202020202020202020202020208A |
:1090E600202020202020202020202020202020207A |
:1090F600202020202020202020202020202020206A |
:109106002020202020202020202020202020202059 |
:109116002020202020202020202020202020202049 |
:109126002020202020202020202020202020202039 |
:109136002020202020202020202020202020202029 |
:109146002020204750535F4E69636B20202020204B |
:109156002020204750535F526F6C6C202020202027 |
:1091660020202064FF01FFFF280001806400737344 |
:1091760073FF03007D0000640048616C6C6F20572C |
:10918600656C740000000000000000000000000094 |
:1091960000000000000000000000000000000000C9 |
:1091A60000000000000000000000000000000000B9 |
:1091B60000000000000000000000000000000000A9 |
:1091C600000000000000000000010203040506077D |
:1091D60008090A0B01ECFF6446640A029696403AB7 |
:1091E60010FB3017B7D13890D0030090D00300F4AD |
:1091F60001640053706F727400004E6F726D616C83 |
:109206000000426567696E6E657200000A0B0D0B01 |
:049216000C01010046 |
:00000001FF |
/branches/V0.70_safer_engine_stop/FlightCtrl.aps |
---|
0,0 → 1,0 |
<AVRStudio><MANAGEMENT><ProjectName>FlightCtrl</ProjectName><Created>15-May-2007 11:20:41</Created><LastEdit>11-Oct-2007 22:58:54</LastEdit><ICON>241</ICON><ProjectType>0</ProjectType><Created>15-May-2007 11:20:41</Created><Version>4</Version><Build>4, 13, 0, 528</Build><ProjectTypeName>AVR GCC</ProjectTypeName></MANAGEMENT><CODE_CREATION><ObjectFile>default\Flight-Ctrl.elf</ObjectFile><EntryFile></EntryFile><SaveFolder>F:\SVN\MikroKopter\FlightCtrl\branches\V0.64_ZeroWarnings\</SaveFolder></CODE_CREATION><DEBUG_TARGET><CURRENT_TARGET>AVR Simulator</CURRENT_TARGET><CURRENT_PART>ATmega644.xml</CURRENT_PART><BREAKPOINTS></BREAKPOINTS><IO_EXPAND><HIDE>false</HIDE></IO_EXPAND><REGISTERNAMES><Register>R00</Register><Register>R01</Register><Register>R02</Register><Register>R03</Register><Register>R04</Register><Register>R05</Register><Register>R06</Register><Register>R07</Register><Register>R08</Register><Register>R09</Register><Register>R10</Register><Register>R11</Register><Register>R12</Register><Register>R13</Register><Register>R14</Register><Register>R15</Register><Register>R16</Register><Register>R17</Register><Register>R18</Register><Register>R19</Register><Register>R20</Register><Register>R21</Register><Register>R22</Register><Register>R23</Register><Register>R24</Register><Register>R25</Register><Register>R26</Register><Register>R27</Register><Register>R28</Register><Register>R29</Register><Register>R30</Register><Register>R31</Register></REGISTERNAMES><COM>Auto</COM><COMType>0</COMType><WATCHNUM>0</WATCHNUM><WATCHNAMES><Pane0></Pane0><Pane1></Pane1><Pane2></Pane2><Pane3></Pane3></WATCHNAMES><BreakOnTrcaeFull>0</BreakOnTrcaeFull></DEBUG_TARGET><Debugger><Triggers></Triggers></Debugger><AVRGCCPLUGIN><FILES><SOURCEFILE>uart.c</SOURCEFILE><SOURCEFILE>analog.c</SOURCEFILE><SOURCEFILE>eeprom.c</SOURCEFILE><SOURCEFILE>fc.c</SOURCEFILE><SOURCEFILE>GPS.c</SOURCEFILE><SOURCEFILE>main.c</SOURCEFILE><SOURCEFILE>menu.c</SOURCEFILE><SOURCEFILE>printf_P.c</SOURCEFILE><SOURCEFILE>rc.c</SOURCEFILE><SOURCEFILE>timer0.c</SOURCEFILE><SOURCEFILE>twimaster.c</SOURCEFILE><HEADERFILE>uart.h</HEADERFILE><HEADERFILE>_Settings.h</HEADERFILE><HEADERFILE>analog.h</HEADERFILE><HEADERFILE>fc.h</HEADERFILE><HEADERFILE>gps.h</HEADERFILE><HEADERFILE>main.h</HEADERFILE><HEADERFILE>menu.h</HEADERFILE><HEADERFILE>old_macros.h</HEADERFILE><HEADERFILE>printf_P.h</HEADERFILE><HEADERFILE>rc.h</HEADERFILE><HEADERFILE>Settings.h</HEADERFILE><HEADERFILE>timer0.h</HEADERFILE><HEADERFILE>twimaster.h</HEADERFILE></FILES><CONFIGS><CONFIG><NAME>default</NAME><USESEXTERNALMAKEFILE>NO</USESEXTERNALMAKEFILE><EXTERNALMAKEFILE></EXTERNALMAKEFILE><PART>atmega644</PART><HEX>1</HEX><LIST>1</LIST><MAP>1</MAP><OUTPUTFILENAME>Flight-Ctrl.elf</OUTPUTFILENAME><OUTPUTDIR>default\</OUTPUTDIR><ISDIRTY>1</ISDIRTY><OPTIONS><OPTION><FILE>GPS.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>analog.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>eeprom.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>fc.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>main.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>menu.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>printf_P.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>rc.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>timer0.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>twimaster.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>uart.c</FILE><OPTIONLIST></OPTIONLIST></OPTION></OPTIONS><INCDIRS/><LIBDIRS/><LIBS><LIB>libc.a</LIB><LIB>libm.a</LIB></LIBS><LINKOBJECTS/><OPTIONSFORALL>-Wall -gdwarf-2 -Wstrict-prototypes -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -DVERSION_HAUPTVERSION=0 -DVERSION_NEBENVERSION=64 -DVERSION_KOMPATIBEL=5</OPTIONSFORALL><LINKEROPTIONS></LINKEROPTIONS><SEGMENTS/></CONFIG></CONFIGS><LASTCONFIG>default</LASTCONFIG><USES_WINAVR>1</USES_WINAVR><GCC_LOC>C:\Program Files\WinAVR\bin\avr-gcc.exe</GCC_LOC><MAKE_LOC>C:\Program Files\WinAVR\utils\bin\make.exe</MAKE_LOC></AVRGCCPLUGIN><IOView><usergroups/></IOView><Files><File00000><FileId>00000</FileId><FileName>main.c</FileName><Status>1</Status></File00000><File00001><FileId>00001</FileId><FileName>uart.c</FileName><Status>1</Status></File00001><File00002><FileId>00002</FileId><FileName>menu.c</FileName><Status>1</Status></File00002><File00003><FileId>00003</FileId><FileName>timer0.c</FileName><Status>1</Status></File00003><File00004><FileId>00004</FileId><FileName>fc.c</FileName><Status>1</Status></File00004><File00005><FileId>00005</FileId><FileName>fc.h</FileName><Status>1</Status></File00005><File00006><FileId>00006</FileId><FileName>menu.h</FileName><Status>1</Status></File00006><File00007><FileId>00007</FileId><FileName>TWIMASTER.C</FileName><Status>1</Status></File00007><File00008><FileId>00008</FileId><FileName>twimaster.h</FileName><Status>1</Status></File00008><File00009><FileId>00009</FileId><FileName>uart.h</FileName><Status>1</Status></File00009><File00010><FileId>00010</FileId><FileName>_Settings.h</FileName><Status>1</Status></File00010><File00011><FileId>00011</FileId><FileName>analog.h</FileName><Status>1</Status></File00011><File00012><FileId>00012</FileId><FileName>gps.h</FileName><Status>1</Status></File00012><File00013><FileId>00013</FileId><FileName>main.h</FileName><Status>1</Status></File00013><File00014><FileId>00014</FileId><FileName>old_macros.h</FileName><Status>1</Status></File00014><File00015><FileId>00015</FileId><FileName>printf_P.h</FileName><Status>1</Status></File00015><File00016><FileId>00016</FileId><FileName>rc.h</FileName><Status>1</Status></File00016><File00017><FileId>00017</FileId><FileName>Settings.h</FileName><Status>1</Status></File00017><File00018><FileId>00018</FileId><FileName>timer0.h</FileName><Status>1</Status></File00018></Files><Events><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio> |
/branches/V0.70_safer_engine_stop/GPS.c |
---|
0,0 → 1,32 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
signed int GPS_Nick = 0; |
signed int GPS_Roll = 0; |
signed int GPS_Nick2 = 0; |
signed int GPS_Roll2 = 0; |
long GpsAktuell_X = 0; |
long GpsAktuell_Y = 0; |
long GpsZiel_X = 0; |
long GpsZiel_Y = 0; |
void GPS_Neutral(void) |
{ |
GpsZiel_X = GpsAktuell_X; |
GpsZiel_Y = GpsAktuell_Y; |
} |
void GPS_BerechneZielrichtung(void) |
{ |
GPS_Nick = 0; |
GPS_Roll = 0; |
} |
/branches/V0.70_safer_engine_stop/Hex-Files/BootLoader_MEGA644_20MHZ_V0_1.hex |
---|
0,0 → 1,64 |
:10F8000011241FBECFEFD0E1DEBFCDBF11E0A0E0DD |
:10F81000B1E0E0EEFBEF02C005900D92A030B10721 |
:10F82000D9F712E0A0E0B1E001C01D92A230B1070B |
:10F83000E1F70C943B7C0C941D7C0895982F8091EB |
:10F84000C00085FFFCCF9093C60008958091C00052 |
:10F850008823E4F78091C600992708958DE40E94DB |
:10F860001E7C8BE40E941E7C82E40E941E7C8CE441 |
:10F870000E941E7C0895CFEFD0E1DEBFCDBFE0E057 |
:10F88000F0E014915F01772474BE98E10FB6F8940C |
:10F8900090936000109260000FBE7092C5008AE2E3 |
:10F8A0008093C4008091C00082608093C0009093D8 |
:10F8B000C10086E08093C200EF01072D8091C00057 |
:10F8C00087FF0DC0013031F48091C6008A3AB1F152 |
:10F8D00000E005C08091C6008B3109F401E0CE0143 |
:10F8E00021968436910528F11F3F41F0112331F014 |
:10F8F000E0910001F091010109951BC01092C50033 |
:10F900008AE28093C4008AE00E941E7C8DE00E94FF |
:10F910001E7C86E50E941E7C80E30E941E7C8EE297 |
:10F920000E941E7C81E30E941E7C8AE30E941E7C52 |
:10F9300005C080E593EC0197F1F7C0CF0E942E7CC3 |
:10F940000E94267C813611F489E547C1813471F427 |
:10F950000E94267CA82EBB24BA2CAA240E94267CB6 |
:10F960009927A82AB92AB694A79406C1823629F401 |
:10F9700089E50E941E7C81E00BC1823409F083C0BE |
:10F980000E94267C9927D82FCC270E94267C992775 |
:10F99000C82BD92B0E94267C082F12E0812E11E063 |
:10F9A000912EEE24FF2464010894811C911CEC1616 |
:10F9B000FD0618F40E94267C01C08FEFD6018C93BF |
:10F9C0000894E11CF11CBFEFEB16F10461F358F34E |
:10F9D000E4E77E1609F0DEC0063409F03DC0FFEF13 |
:10F9E000AF16F7EFBF0608F033C0DE01A5016627AA |
:10F9F0007727440F551F661F771F6A017B01C2E0FE |
:10FA0000D1E001E08991992729913327322F2227CC |
:10FA1000822B932B0C01FA0100935700E8951124D7 |
:10FA20004E5F5F4F6F4F7F4F129761F785E0F60192 |
:10FA300080935700E89507B600FCFDCF81E18093E5 |
:10FA40005700E89576956795579547955A0194C064 |
:10FA500080E00E941E7C90C0053409F08DC0F50145 |
:10FA60009E01A2E0B1E0E1BD8F2F992782BD8D916B |
:10FA700080BD3196FA9AF99AF999FECF215030401B |
:10FA800091F75F0179C0873609F047C00E94267C54 |
:10FA90009927D82ECC240E94267C9927C82AD92AB7 |
:10FAA0000E94267C863411F5E6016501EE24FF24D0 |
:10FAB000CC0CDD1CEE1CFF1CF60105911491802F6F |
:10FAC0000E941E7C812F99270E941E7C82E090E07C |
:10FAD000A0E0B0E0C80ED91EEA1EFB1E229761F717 |
:10FAE000F694E794D794C79456012ACF853409F049 |
:10FAF00027CF7501E1BC8F2D992782BDF89A089414 |
:10FB0000E11CF11C80B50E941E7C0894C108D1083C |
:10FB1000C114D10479F7570113CF853601F594E765 |
:10FB2000791651F580E090E0A0E0B0E023E0FC0120 |
:10FB300020935700E89507B600FCFDCF80509F4FFB |
:10FB4000AF4FBF4F8F3FE7EF9E07E0E0AE07E0E02B |
:10FB5000BE0768F381E180935700E8950DC08534B6 |
:10FB600069F488E190E02CE00FB6F894A8958093B2 |
:10FB700060000FBE209360008DE02FC08035E1F360 |
:10FB80008C34D1F3803711F483E527C0843721F416 |
:10FB90000E941E7C80E021C0843521F40E94267CD6 |
:10FBA000782EEACF8B3109F4C9CE8A3A09F4C6CE51 |
:10FBB000863529F480E30E941E7C81E30EC08337E2 |
:10FBC00041F489E00E941E7C86E90E941E7C8EE141 |
:10FBD00004C08B3109F4B4CE8FE30E941E7CB0CEFA |
:040000030000F80001 |
:00000001FF |
/branches/V0.70_safer_engine_stop/Hex-Files/Flight-Ctrl_MEGA644_V0_70d.hex |
---|
0,0 → 1,2340 |
:100000000C9467020C9482020C9482020C9482027B |
:100010000C9482020C9482020C9482020C94820250 |
:100020000C9482020C94FA0D0C9482020C94DB0D59 |
:100030000C94471A0C9482020C9482020C94820253 |
:100040000C9482020C9482020C94A30C0C948202F5 |
:100050000C9445050C9482020C940F050C948202BA |
:100060000C941F100C9482020C9465190C9482025B |
:100070008C199119A819B419C219B919C219E01922 |
:10008000071AF219F4190E1AFC19071AF719F919B7 |
:100090000E1AFC19071A091A0B1A0E1A121A0A0D4F |
:1000A000466C69676874436F6E74726F6C0A0D48B2 |
:1000B000617264776172653A25642E25640A0D5376 |
:1000C0006F6674776172653A5625642E25642563E0 |
:1000D00020000A0D3D3D3D3D3D3D3D3D3D3D3D3D0D |
:1000E0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D40 |
:1000F0003D3D000A0D496E69742E20454550524F12 |
:100100004D3A2047656E6572696572652044656683 |
:1001100061756C742D506172616D657465722E2EFF |
:100120002E000A0D414343206E69636874206162AA |
:100130006765676C696368656E21000A0D42656ECC |
:1001400075747A6520506172616D65746572736152 |
:10015000747A202564000A0D4162676C65696368E2 |
:10016000204C756674647275636B73656E736F7221 |
:100170002E2E004F4B0A0D000A0D537465756572E3 |
:10018000756E673A200048656164696E67486F6CF8 |
:1001900064004E65757472616C000A0A0D002E00D1 |
:1001A0005B25695D005B25695D002B204D696B72E5 |
:1001B0006F4B6F70746572202B0048573A56256458 |
:1001C0002E25642053573A25642E25642563005359 |
:1001D000657474696E673A202564200028632920BD |
:1001E000486F6C676572204275737300486F65686D |
:1001F000653A202020202025356900536F6C6C481B |
:100200006F6568653A20253569004C7566746472BF |
:1002100075636B3A20253569004F666620202020E3 |
:1002200020203A20253569004B65696E652000481D |
:10023000F668656E726567656C756E6700616B74F4 |
:100240002E204C616765004E69636B3A20202020A8 |
:10025000202025356900526F6C6C3A202020202028 |
:1002600020253569004B6F6D706173733A20202033 |
:10027000253569004B313A25346920204B323A2527 |
:10028000346920004B333A25346920204B343A2519 |
:10029000346920004B353A25346920204B363A2505 |
:1002A000346920004B373A25346920204B383A25F1 |
:1002B000346920004E693A2534692020526F3A256E |
:1002C0003469200047733A253469202047693A256C |
:1002D0003469200050313A253469202050323A25C3 |
:1002E0003469200050333A253469202050343A25AF |
:1002F000346920004779726F202D2053656E736F2B |
:1003000072004E69636B20253469202825336929E2 |
:1003100000526F6C6C202534692028253369290030 |
:100320004769657220253469202825336929004EE4 |
:1003300069636B2025346920282533692900526FB1 |
:100340006C6C2025346920282533692900476965AC |
:100350007220253469202825336929004E69636B92 |
:100360002025346920282533692928253369290067 |
:10037000526F6C6C20253469202825336929282583 |
:10038000336929004769657220253469202825339F |
:100390006929282533692900414343202D205365CD |
:1003A0006E736F72004E69636B20253469202825B7 |
:1003B00033692900526F6C6C20253469202825335D |
:1003C000692900486F63682025346920282533692E |
:1003D00029005370616E6E756E673A20202535696D |
:1003E00000456D70662E506567656C3A253569006D |
:1003F0004B6F6D70617373202020202020200052ED |
:1004000069636874756E673A2020253569004D650B |
:100410007373776572743A202025356900537461CF |
:1004200072743A202020202025356900506F7469AD |
:10043000313A202025336900506F7469323A202008 |
:1004400025336900506F7469333A202025336900E1 |
:10045000506F7469343A20202533690053657276F1 |
:100460006F202000536574706F696E7420202533EF |
:1004700069005374656C6C756E673A2025336900AA |
:1004800052616E67653A2533692D253369004578D9 |
:100490007465726E436F6E74726F6C2020004E69CB |
:1004A0003A2534692020526F3A2534692000477379 |
:1004B0003A253469202047693A2534692000486983 |
:1004C0003A253469202043663A25346920001124F6 |
:1004D0001FBECFEFD0E1DEBFCDBF13E0A0E0B1E0A3 |
:1004E000E6E6FFE802C005900D92A43BB107D9F7FC |
:1004F00018E0A4EBB3E001C01D92AD36B107E1F7FF |
:100500000C94F4020C940000FB01863008F085E0A6 |
:10051000489FD0011124AC59BF4F842F99270197D0 |
:1005200024F00E949F470192FACF0E94134508953C |
:10053000282FFB01863008F025E0429FD0011124CE |
:10054000AC59BF4F842F9927019724F001900E9446 |
:10055000A747FACFA2E0B0E0022E0E94A7470E9470 |
:1005600013450895A2E0B0E09D010E949F47802DB1 |
:10057000863028F082E0D901082E0E94A7479927EB |
:10058000089580917807E82FFF27EE0FFF1FE65BA5 |
:10059000F84F808191818D5E9F4F14F0109202017F |
:1005A000808191818A5B9F4FBCF4809102018823F6 |
:1005B00099F481E080930201809147068F5F8093D8 |
:1005C0004706853038F088EE93E09093D40380930B |
:1005D000D30302C00E943C1D809147069927909347 |
:1005E0001507809314070895CFEFD0E1DEBFCDBF8C |
:1005F00014B815B897EEE92E93E0F92E8EEC9FEF24 |
:10060000E80EF91EF7FEFACF88EEE82E83E0F82E0A |
:10061000189B06C0199B02C08DE003C08BE001C08F |
:100620008AE08093010181E887B98FEF88B98BE177 |
:1006300084B981E085B98EE38AB9579A87EF8BB97F |
:1006400084B7877F84BF8091600088618093600059 |
:100650001092600080ED97E09093D4038093D303D1 |
:10066000109233041092320410924F0710924E07EA |
:10067000109235041092340410923704109236040C |
:10068000809101018A3011F4289801C0289A0E94B3 |
:100690008A0D0E949C080E94321A0E94180F0E9424 |
:1006A0002E190E945F4278941092370686E4809358 |
:1006B000380688E08093390681E080933A0684E624 |
:1006C00090E09F938F9386E490E09F938F931F9287 |
:1006D0001F92809101016AE00E942F47892F99277C |
:1006E0009F938F93809101010E942F4799279F9399 |
:1006F0008F938EE990E09F938F931F920E94190A27 |
:100700008DB79EB70D960FB6F8949EBF0FBE8DBFE6 |
:1007100082ED90E09F938F931F920E94190A80911F |
:1007200001010F900F900F908C3010F4299A01C0A6 |
:10073000299801E010E0D8010E949F47802D87345E |
:1007400061F183EF90E09F938F931F920E94190AAB |
:100750000E94311BC0E00F900F900F90C23039F013 |
:10076000C33019F40E94911C04C0C43010F00E94E0 |
:10077000E01B43E568E777E08C2F0E949802CF5F8B |
:10078000C63060F3A2E0B0E083E0082E0E94A747E5 |
:1007900087E4D801082E0E94A747A4E0B0E00E9499 |
:1007A0009F47802D853050F082E291E09F938F9398 |
:1007B0001F920E94190A0F900F900F900E94B20290 |
:1007C00043E568E777E00E9484020E94B20299271D |
:1007D0009F938F938BE391E09F938F931F920E943F |
:1007E000190A809180070F900F900F900F900F9033 |
:1007F00080FF20C086E591E09F938F931F920E9417 |
:10080000190A88EE93E00E94810D7C010E941E0F60 |
:100810000F900F900F90C7010E94B10D8823D9F35C |
:1008200083E791E09F938F931F920E94190A0F9084 |
:100830000F900F900E945425809101018A3011F48D |
:10084000289801C0289A80ED97E09093D403809374 |
:10085000D30385E58093490688E791E09F938F93C2 |
:100860001F920E94190A809180070F900F900F909D |
:1008700082FF03C086E891E002C082E991E09F9385 |
:100880008F931F920E94190A0F900F900F908AE980 |
:1008900091E09F938F931F920E94190A0E94281340 |
:1008A00088E893E1909392038093910381E0809391 |
:1008B00048060F900F900F908091D703882309F47A |
:1008C000A6C01092D70380914706882319F00E9492 |
:1008D000C10202C00E94912A0E94F42620910101C7 |
:1008E0002A3011F4289801C0289A809103038823A4 |
:1008F00021F081508093030312C08093B40380934E |
:10090000B5038093530610921604109215041092AA |
:100910001404109213041092120410921104809186 |
:100920003804882329F0809138048150809338045A |
:100930008091910390919203892B01F585E090E0DD |
:1009400090939203809391030E944819809106032B |
:10095000909107038F5F9F4FF9F480912F048823B4 |
:10096000D9F080E197E29093D4038093D30380E899 |
:1009700090E090930703809306030EC0809191034B |
:1009800090919203019790939203809391032A3060 |
:1009900011F4289801C0289A8091D703882321F068 |
:1009A00080912F04882311F40E94C2080E942F070F |
:1009B000C7010E94B10D882341F180919007282F33 |
:1009C00033278091170390911803821793079CF4A3 |
:1009D00080910603909107038F5F9F4F61F480E73A |
:1009E00097E19093D4038093D30380E093E09093B6 |
:1009F0000703809306030E94474484E08093D20358 |
:100A000084E190E00E94810D7C010E94224580914A |
:100A1000D203882309F050CF0E9488444DCF1F9203 |
:100A20000F920FB60F9211248F939F93EF93FF9322 |
:100A3000809105038823E1F48091C8039091C90354 |
:100A400001969093C9038093C803FC01E75FFA4FB6 |
:100A5000E081ED3019F08639910539F41092C9031F |
:100A60001092C80381E080930503E093C60004C0A0 |
:100A70001092C9031092C803FF91EF919F918F913B |
:100A80000F900FBE0F901F9018951F920F920FB6E8 |
:100A90000F9211242F933F934F935F938F939F93C4 |
:100AA000AF93BF93EF93FF9390E08091C600809344 |
:100AB000C3035091CE03563910F09093CF03809129 |
:100AC000C3038D3009F05FC08091CF03823009F0FD |
:100AD0005AC09093CF03852F99278A5A994FFC01CA |
:100AE000329740812091CA033091CB03241B3109F6 |
:100AF000DC0111978C91281B3109C9019F709093DB |
:100B0000CB038093CA0346E0969587954A95E1F713 |
:100B1000982F935C9093CC032F733070235C2093B9 |
:100B2000CD038081981729F48C91281711F491E056 |
:100B300006C090E08091C0038F5F8093C0038091D6 |
:100B4000C203882309F06EC0992309F46BC081E0C9 |
:100B50008093C2035093BF03E52FFF27EA5AF94F52 |
:100B60008DE0808380915806823509F05BC088E172 |
:100B700090E02CE00FB6F894A895809360000FBE2B |
:100B8000209360004FC02091CF03822F992781309E |
:100B90009105F9F0823091051CF4892B21F040C0B9 |
:100BA000029711F13DC08091C303833239F48091E3 |
:100BB000C203882319F481E08093CF038091C3039B |
:100BC0008093560681E08093CE038091C3039927DA |
:100BD00022C02F5F2093CF03E52FFF27EA5AF94F5A |
:100BE0008091C303808309C0E52FFF27EA5AF94F9C |
:100BF0008091C3038083563920F45F5F5093CE0306 |
:100C000002C01092CF032091C3038091CA03909138 |
:100C1000CB03820F911D9093CB038093CA0302C034 |
:100C20001092CF03FF91EF91BF91AF919F918F9160 |
:100C30005F914F913F912F910F900FBE0F901F909A |
:100C40001895AC01A0E0B0E09D01A817B90748F4E1 |
:100C5000E9E0F5E08191280F311D1196A417B50741 |
:100C6000C8F33F70FD01E75FFA4FC90156E0969562 |
:100C700087955A95E1F7835C80831196FD01E75FC4 |
:100C8000FA4F2F733070822F835C8083A65FBA4F38 |
:100C90008DE08C9310920503809109058093C60026 |
:100CA00008951F93CF93DF93382FEA01722F10E03E |
:100CB00083E28093090560930A0530930B05A3E056 |
:100CC000B0E0772309F458C0772311F4972F07C0B9 |
:100CD000FE01E10FF11D1F5F9081715011F4472F4C |
:100CE0000EC0FE01E10FF11D1F5F4081715039F010 |
:100CF000FE01E10FF11D1F5F6081715001C0672F80 |
:100D0000FD01E75FFA4F892F86958695835C808386 |
:100D10001196FD01E75FFA4F892F99278370907034 |
:100D200024E0880F991F2A95E1F755279A0194E04E |
:100D3000369527959A95E1F7822B835C80831196EF |
:100D4000FD01E75FFA4F4F705070440F551F440F7D |
:100D5000551F862F992726E0969587952A95E1F7C6 |
:100D6000842B835C80831196FD01E75FFA4F6F73DC |
:100D7000635C60831196A5CFCD010E942106DF91AF |
:100D8000CF911F9108951F93CF93DF93EC0110E053 |
:100D9000662309F460C0A22FBB271297E42FFF2718 |
:100DA000EA5AF94F30813D534F5FE42FFF27EA5A4B |
:100DB000F94F50815D534F5FE42FFF27EA5AF94FF7 |
:100DC00070817D534F5FE42FFF27EA5AF94FE0818E |
:100DD000ED534F5F842F9927A817B907E4F1832FAC |
:100DE0009927880F991F880F991F352F32953F70CB |
:100DF000382B852F99278F709070F4E0880F991FFA |
:100E0000FA95E1F7572F56955695582B872F992726 |
:100E10008370907076E0880F991F7A95E1F78E2B9A |
:100E200061506F3FC1F0FE01E10FF11D30831F5F84 |
:100E300061506F3F81F0FE01E10FF11D50831F5F94 |
:100E400061506F3F41F0FE01E10FF11D80831F5F94 |
:100E5000662309F0A3CFDF91CF911F910895CF931F |
:100E6000DF93CDB7DEB724970FB6F894DEBF0FBE81 |
:100E7000CDBF8091C203882309F443C180915806F5 |
:100E800099278836910509F492C089369105C4F4F2 |
:100E90008236910509F462C08336910544F48B349F |
:100EA000910559F18136910509F44CC028C183366A |
:100EB000910509F465C08736910509F4B0C01FC1DA |
:100EC000813791054CF48C3691050CF0D2C08B36ED |
:100ED000910509F490C013C18437910509F482C0CB |
:100EE000853791052CF48137910509F49CC007C121 |
:100EF0008637910509F48FC002C12091BF0343E0FA |
:100F000062E0CE0101960E94C30689819A81909386 |
:100F10004B0480934A0480914A0490914B042091A1 |
:100F2000480430914904821B930B845E9D4F68E610 |
:100F300071E00E944F47845B9040909347048093F8 |
:100F40004604DDC02091BF0343E062E0CE0103967A |
:100F50000E94C3068B818093040359C02091BF0374 |
:100F600043E06BE089E496E00E94C3068091FE03B3 |
:100F700090914B06892B8093FE038091520645C0C9 |
:100F80002091BF0343E06BE089E496E00E94C30632 |
:100F90008091FE0390914B06892B8093FE038091F4 |
:100FA000520680932E0781E08093C50330C02091C4 |
:100FB000BF0343E062E0CE0103960E94C306809126 |
:100FC000FE039B81892B8093FE038C818F3F21F44C |
:100FD00081E08093BC0302C01092BC0381E0809347 |
:100FE000C6038DC02091BF0343E064E088EB93E02B |
:100FF0000E94C3060CC02091BF0343E064E084EB71 |
:1010000093E00E94C3068091B70380932E078FEF71 |
:101010008093030374C081E08093C40370C081E0B7 |
:101020008093C7036CC02091BF0343E062E0CE0110 |
:1010300003960E94C306809105038823E1F38B8108 |
:101040008F3F61F0863010F085E08B8343E568E7E1 |
:1010500077E08B810E9484028B8102C00E94B202E1 |
:1010600023E548E757E060910805855B0E9451063B |
:1010700046C02091BF0343E063E588E797E00E9404 |
:10108000C3068091580643E568E777E08B560E94D7 |
:101090009802A2E0B0E0809158068B56082E0E947C |
:1010A000A7478091A3079927AA27BB27BC01CD0199 |
:1010B00024EC39E040E050E00E941047DC01CB0115 |
:1010C00080938B0390938C03A0938D03B0938E0336 |
:1010D0008091A4079927AA27BB27BC01CD010E94B4 |
:1010E0001047DC01CB018093870390938803A09382 |
:1010F0008903B0938A030E94B2020E943C1D1092A1 |
:10110000C20324960FB6F894DEBF0FBECDBFDF91A9 |
:10111000CF910895CF93C82F8A3019F48DE00E94A3 |
:101120008A088091C00085FFFCCFC093C60080E094 |
:1011300090E0CF910895089588E18093C100809157 |
:10114000C00082608093C0008091C100806880935D |
:10115000C1008091C10080648093C1008AE28093C5 |
:10116000C40088EC90E00E94810D90933606809335 |
:1011700035068CED90E00E94810D9093550680938A |
:101180005406089580910503882309F4F7C08091DF |
:10119000C703882371F080910503882351F02BE069 |
:1011A00049E456E06091080587E40E9451061092D8 |
:1011B000C70380915406909155060E94B10D882373 |
:1011C00009F44CC080910503882309F447C080913D |
:1011D000840490918504A0918604B0918704BC0199 |
:1011E000CD012CE630E040E050E00E94844730938F |
:1011F00042062093410680917C0490917D04A09149 |
:101200007E04B0917F04BC01CD012CE630E040E0CB |
:1012100050E00E9484473093440620934306809117 |
:1012200020048093450680911F048093460628E0A1 |
:1012300041E456E06091080587E70E9451068091DD |
:101240004706853018F086E08093470683E690E0F5 |
:101250000E94810D90935506809354068091350627 |
:10126000909136060E94B10D882321F48091C50328 |
:101270008823B1F080910503882391F022E44CEE9D |
:1012800056E06091080584E40E9451061092C5035F |
:101290008AEF90E00E94810D909336068093350688 |
:1012A000609104036F3F91F0862F992734E0880FF7 |
:1012B000991F3A95E1F78D5F9E4F605D20E1AC018B |
:1012C00081E40E9451068FEF8093040390912E07D2 |
:1012D0009923A1F080910503882381F083E2809314 |
:1012E000090590930A058DE080930B051092050384 |
:1012F00010922E07809109058093C6008091C60345 |
:10130000882351F180910503882331F10E94311324 |
:101310001092C6033091BD03832F8F5F8093BD036E |
:10132000843021F06091BC03662359F026E14AE441 |
:1013300057E060E084E30E9451068FEF8093BD0385 |
:101340000BC024E1829FC0011124875E9C4FAC0139 |
:10135000832F8F5C0E9451068091C403882371F013 |
:1013600080910503882351F02AE047E356E060911D |
:10137000080586E50E9451061092C4030895982F2F |
:1013800080912F07813069F48091FF03E82FFF27B8 |
:10139000E75EFC4F90838F5F8093FF0321E030E096 |
:1013A00005C0892F0E948A08282F3327C901089574 |
:1013B0000F931F93CF93DF938C01EB01672B39F0D1 |
:1013C000F80181918F010E94BF092197C9F7DF9130 |
:1013D000CF911F910F9108950F931F93CF93DF9398 |
:1013E0008C01EB01672B41F0F8010F5F1F4F8491D7 |
:1013F0000E94BF092197C1F7DF91CF911F910F91F3 |
:101400000895CF93C82F181634F480E20E94BF09C4 |
:10141000C1501C16D4F3CF910895CF93C82F18163E |
:1014200034F480E30E94BF09C1501C16D4F3CF915D |
:1014300008952F923F924F925F926F927F928F9278 |
:101440009F92AF92BF92CF92DF92EF92FF920F9353 |
:101450001F93CF93DF93CDB7DEB7E0970FB6F89425 |
:10146000DEBF0FBECDBF26968FAD26972896EEAD78 |
:10147000FFAD28971CA61DA61EA61FA680932F07AA |
:10148000A8E46A2E712C6C0E7D1E5F01C50105C09B |
:10149000053239F00894A11CB11CF5010491002318 |
:1014A000B9F7B501681B790B11F00E94EC09002314 |
:1014B00009F430C20894A11CB11C552458AA252C4B |
:1014C0001FEF59A6F5010894A11CB11C0491053722 |
:1014D00021F0802F80628837F1F450FE0EC0F301B6 |
:1014E00024E030E0620E731E80819181A281B3817D |
:1014F0008CA79DA7AEA7BFA70EC0F301A2E0B0E0E6 |
:101500006A0E7B1E808191819C01442755272CA760 |
:101510003DA74EA75FA7003221F489A5882391F645 |
:101520001BC0033211F438E081C00A3211F00D32D1 |
:1015300089F40A3251F4F30142E050E0640E751E62 |
:10154000208022200CF0BECF219450E1552A8FED4F |
:101550005822B8CF0B3211F409A7B4CF0E32C1F51F |
:10156000F5010894A11CB11C04910A3279F4F3012D |
:10157000A2E0B0E06A0E7B1E60817181BFEF6F3F19 |
:101580007B0714F46FEF7FEF162F9CCF60E070E0C5 |
:10159000802F80538A30A0F4CB01F3E0880F991F8D |
:1015A000FA95E1F7860F971F680F791F600F711D7D |
:1015B00060537040F5010894A11CB11C0491E8CF60 |
:1015C000EFEF6F3F7E0714F46FEF7FEF162F7FCFA3 |
:1015D000003329F454FC76CFF0E25F2A73CF802FDA |
:1015E00081538930D8F460E070E0CB01E3E0880FEC |
:1015F000991FEA95E1F7860F971F680F791F600F13 |
:10160000711D60537040F5010894A11CB11C049138 |
:10161000802F80538A3048F3262E59CF083619F48C |
:1016200024E0522A4FCF0C3619F431E0532A4ACF26 |
:10163000033661F44E010894811C911CF30142E0D1 |
:1016400050E0640E751E808189831BC1043421F033 |
:10165000043611F00936B1F5043411F451E0552A7D |
:1016600050FE0AC0F30184E090E0680E791E2081EC |
:101670003181428153810CC0F30142E050E0640E9D |
:10168000751E808191819C01442737FD4095542F20 |
:101690002CA73DA74EA75FA78CA59DA5AEA5BFA56E |
:1016A000B7FF0DC0B095A095909581959F4FAF4F16 |
:1016B000BF4F8CA79DA7AEA7BFA78DE289A77AE0F1 |
:1016C000472E7BC00F3411F00F3639F40F3411F46C |
:1016D00091E0592A68E0462E6FC00037A1F4F3016B |
:1016E000A2E0B0E06A0E7B1E808191819C014427BC |
:1016F00055272CA73DA74EA75FA750E1452E30E404 |
:10170000532A08E759C00337C1F5F30142E050E01E |
:10171000640E751E808091808114910489F44E01BD |
:101720000894811C911C88E289838EE6F4018183F0 |
:1017300085E78B838CE68C838D8389E28E831F8281 |
:1017400017FD13C0812F992787FD9095AC0160E0AC |
:1017500070E0C4010E949B45009729F0D82ED8184C |
:101760001D150CF090C0D12E8EC0F4010190002008 |
:10177000E9F73197DE2ED81886C0053511F0053708 |
:1017800039F4053511F4F1E05F2A4AE0442E14C023 |
:10179000083519F0083709F06CC030E1432E53FECC |
:1017A0000BC02CA53DA54EA55FA521153105410512 |
:1017B000510511F030E4532A19A618AB17FD02C0E9 |
:1017C0004FED542229E2822E912C8C0E9D1E8CA569 |
:1017D0009DA5AEA5BFA50097A105B10521F498A9C7 |
:1017E000992309F43FC0C42CDD24EE24FF243324C4 |
:1017F0002CA53DA54EA55FA52C153D054E055F0505 |
:1018000010F091E0392E6CA57DA58EA59FA5A701AE |
:1018100096010E946247DC01CB01182F8A3010F438 |
:10182000105D04C0195A083509F41F7DD4011E93B8 |
:101830004D016CA57DA58EA59FA5A70196010E94CF |
:1018400062472CA73DA74EA75FA7332081F6B8E0DB |
:101850004B1641F453FE06C0103321F080E3F4012F |
:1018600082934F01CE010196D82ED818F8E2DF0EF0 |
:101870000BC0002309F44EC04E010894811C911C3A |
:10188000098381E0D82E19A61D2DC8A8CD18C7FC44 |
:10189000CC2489A5882311F01F5F02C056FC1E5F6F |
:1018A0001C0DE52CFF24C70180739070892B21F457 |
:1018B000822D811B0E94010A89A5882329F061E0FD |
:1018C00070E0CE01899609C0E6FE09C080E38AA7D0 |
:1018D0000BA762E070E0CE018A960E94D809C7018A |
:1018E00080739070809721F4822D811B0E940D0AD5 |
:1018F0008C2D0E940D0A8D2D992787FD9095BC0196 |
:10190000C4010E94D809E4FEC1CD822D811B0E9432 |
:10191000010ABCCDE0960FB6F894DEBF0FBECDBF76 |
:10192000DF91CF911F910F91FF90EF90DF90CF90BB |
:10193000BF90AF909F908F907F906F905F904F90EF |
:101940003F902F9008951F920F920FB60F9211247F |
:101950002F933F935F936F937F938F939F93AF9357 |
:10196000BF93EF93FF938091D203882329F0809156 |
:10197000D20381508093D2038091DA038150809307 |
:10198000DA038F3FB9F489E08093DA0380910A0388 |
:101990008F5F817080930A03882319F481E080931C |
:1019A000D7038091D8039091D90301969093D903DE |
:1019B0008093D8038091D3039091D4030297C8F009 |
:1019C0008091D3039091D40301979093D403809393 |
:1019D000D3038091D3039091D403209106033091D7 |
:1019E000070382239323892B11F021E009C020E013 |
:1019F00007C020E08FEF9FEF9093070380930603CB |
:101A000080910101222331F08A3011F45A9A07C0E3 |
:101A1000479A05C08A3011F45A9801C047988091BE |
:101A2000800783FF5EC086B19927FC01E071F070EA |
:101A300084FF0AC08091D5039091D60301969093BC |
:101A4000D6038093D5034DC08091D5039091D603E2 |
:101A5000892B69F18091D5039091D6038A569140E4 |
:101A600030F58091D5039091D60369E270E00E9431 |
:101A70003B478091D5039091D603860F971F909393 |
:101A8000D6038093D5038091D5039091D6030B970D |
:101A900050F08091D5039091D6030A9790934B0410 |
:101AA00080934A0404C0F0934B04E0934A0480916D |
:101AB0004A0490914B042091480430914904821BC0 |
:101AC000930B845E9D4F68E671E00E944F47845BF4 |
:101AD000904090934704809346041092D60310924E |
:101AE000D503FF91EF91BF91AF919F918F917F911E |
:101AF0006F915F913F912F910F900FBE0F901F90AC |
:101B000018952091D8033091D903280F391FC901A6 |
:101B1000019608958AE090E00E94810D9093DC0385 |
:101B20008093DB0382E085BD83EA84BD17BC88E730 |
:101B300088BD86E086BD83EC8093B00084E080930E |
:101B4000B1008091700082608093700080916E007F |
:101B5000816080936E008AE08093B3001092B2009F |
:101B600008952091D8033091D903821B930B892FBC |
:101B700099278695807490700895CF93DF930E9483 |
:101B8000810DEC01CE010E94B10D8823D9F3DF91C4 |
:101B9000CF910895CF93DF930E94810DEC0103C094 |
:101BA0008FEE80937A00CE010E94B10D8823C1F39D |
:101BB000DF91CF9108951F920F920FB60F921124CB |
:101BC0008F939F938091080390910903892B11F0C3 |
:101BD0005F9A01C05F9883E08093B00080917000AD |
:101BE0008E7F809370009F918F910F900FBE0F900A |
:101BF0001F9018951F920F920FB60F9211242F93DA |
:101C00003F934F935F936F937F938F939F93AF9384 |
:101C1000BF93CF93DF93EF93FF938091080390914D |
:101C20000903049709F0A6C080E390E09093D103E4 |
:101C30008093D00380910C0390910D039C01220F9F |
:101C4000331F280F391F809179039927880F991F17 |
:101C5000280F391F37FF02C02D5F3F4FC9019595EF |
:101C600087959595879590930D0380930C03EC01D0 |
:101C7000E096D093D103C093D0038091BA0790919E |
:101C80009A072091840430918504409186045091F4 |
:101C9000870480FF18C0892F9927AA27BB27BC017A |
:101CA000CD010E94104797FF04C06150704C8F4FC8 |
:101CB0009F4F5EE095958795779567955A95D1F7F3 |
:101CC000C60FD71F17C0892F9927AA27BB27BC018A |
:101CD000CD010E94104797FF04C06150704C8F4F98 |
:101CE0009F4F4EE095958795779567954A95D1F7E3 |
:101CF000C61BD70BD093D103C093D00380919B0711 |
:101D000043E0849FC00111242091D0033091D1037E |
:101D10002817390740F080919C07849FC001112447 |
:101D20008217930720F49093D1038093D0032091DE |
:101D3000D0033091D1033093170720931607C901C0 |
:101D40006FEF70E00E943B478D9740F4235B3F4F5D |
:101D50003093D1032093D00383E101C080E68093C8 |
:101D60000B038091D0039091D10380958093B300B1 |
:101D700083EC40C08091080390910903892B39F1CD |
:101D80008091080390910903049708F52091D003EE |
:101D90003091D1032F3F310561F058F05F9A83E015 |
:101DA0008093B0002F5F30403093D1032093D00355 |
:101DB00023C083E88093B00080910B038093B3002D |
:101DC00081E090E0909309038093080315C080910F |
:101DD000080390910903892B79F480919D07992735 |
:101DE000880F991F880F991F909309038093080308 |
:101DF0005F9883E08093B00080910803909109037D |
:101E000001979093090380930803FF91EF91DF916D |
:101E1000CF91BF91AF919F918F917F916F915F9182 |
:101E20004F913F912F910F900FBE0F901F901895DB |
:101E300010927C008FEE80937A0008950F931F9389 |
:101E4000CF93DF9303E010E0D8010E949F47802DDD |
:101E5000C82FDD27C531D10508F02A97C7BD84E614 |
:101E600090E00E94CA0D8091110390911203825557 |
:101E7000934010F4C0E0D0E0CA3FD105C0F4C7BD24 |
:101E800082E390E00E94CA0D8EE991E09F938F93C8 |
:101E90001F920E94190A80911103909112030F90D2 |
:101EA0000F900F908458934010F02196E5CFD80101 |
:101EB0000C2E0E94A747C0933D078CE291E00E9440 |
:101EC000CA0DDF91CF911F910F9108951F93CF936A |
:101ED000C0E0C093DF03C093DE03C093DD031CE8C2 |
:101EE000C33019F41B3008F019E0C0E08091F4030E |
:101EF0009091F5038C5F934024F4809110038150FE |
:101F00000AC08091F4039091F5038750944034F017 |
:101F1000809110038F5F8093100301C0C1E0809116 |
:101F2000F2039091F3038C5F934024F480910F03AC |
:101F300081500AC08091F2039091F303875094403E |
:101F400034F080910F038F5F80930F0301C0CF5F48 |
:101F50008091F0039091F1038C5F934024F4809181 |
:101F60000E0381500AC08091F0039091F1038750D5 |
:101F7000944034F080910E038F5F80930E0301C074 |
:101F8000CF5F88E0809305040E943419809110038C |
:101F90008A3030F481E08093DF038AE0809310037D |
:101FA00080911003863F30F081E08093DF0385EF5E |
:101FB0008093100380910F038A3030F481E0809386 |
:101FC000DE038AE080930F0380910F03863F30F099 |
:101FD00081E08093DE0385EF80930F0380910E03F1 |
:101FE0008A3030F481E08093DD038AE080930E0331 |
:101FF00080910E03863F30F081E08093DD0385EF12 |
:1020000080930E03809105048823E1F780933807BD |
:102010008FEE80937A00809138078823E1F31A309D |
:1020200020F48AE090E00E94CA0D115009F058CFC8 |
:1020300086E490E00E94CA0DCF911F9108951F92EF |
:102040000F920FB60F921124EF92FF920F931F93EE |
:102050002F933F934F935F936F937F938F939F93B0 |
:10206000AF93BF93CF93DF93EF93FF9310927A00D8 |
:102070008091F703682F77278F5F8093F703653090 |
:10208000710509F48EC066307105BCF462307105CB |
:1020900009F44AC0633071053CF46115710531F1F2 |
:1020A00061307105C1F1AEC26330710509F446C0FB |
:1020B0006430710509F45DC0A5C26830710509F48A |
:1020C000C3C0693071054CF46630710509F482C0F3 |
:1020D0006730710509F49BC095C26930710509F438 |
:1020E000D0C06A30710509F4EBC18CC280917800D0 |
:1020F000909179009093F9038093F80381E08093A5 |
:10210000F6038091E0039091E10301969093E1033F |
:102110008093E0037BC28091780090917900909346 |
:10212000FB038093FA038EC0809178009091790030 |
:102130009093FD038093FC0384E0BFC1809117035B |
:10214000909118039C01220F331F280F391F809193 |
:102150007800909179000E943B47260F371F3695F3 |
:10216000279536952795309318032093170386E01B |
:10217000A4C18091900490919104209178003091B5 |
:102180007900821B930B90933107809330078091E5 |
:102190003007909131079093EF038093EE0387E02F |
:1021A0008CC18091780090917900209192043091B7 |
:1021B0009304821B930B90933C0780933B07809181 |
:1021C0003B0790913C079093ED038093EC031092B2 |
:1021D000F6031CC2809101012091F8033091F903AC |
:1021E0008A3049F48091780090917900820F931F92 |
:1021F0009695879506C08091780090917900820F1E |
:10220000931F9093F1038093F00381E056C1809176 |
:1022100001012091FA033091FB038A3049F4809147 |
:10222000780090917900820F931F9695879506C04C |
:102230008091780090917900820F931F9093F3031F |
:102240008093F20382E039C1809101012091FC0367 |
:102250003091FD038A3049F48091780090917900A3 |
:10226000820F931F9695879506C080917800909174 |
:102270007900820F931F9093F5038093F40385E018 |
:102280001CC18091780090917900AA2797FDA095B4 |
:10229000BA2FBC01CD010E944E467B018C0180917A |
:1022A0008A0490918B04A0918C04B0918D049C01C0 |
:1022B000AD01C801B7010E94A845DC01CB01BC01FA |
:1022C000CD010E943146DC01CB019093EB0380935A |
:1022D000EA038091EA039091EB0302970CF446C065 |
:1022E00080918A0490918B04A0918C04B0918D040C |
:1022F00020E030E84BE354E4BC01CD010E94584695 |
:1023000088230CF088C080918A0490918B04A0915E |
:102310008C04B0918D042AE037ED43EA5CE3BC0104 |
:10232000CD010E94A945DC01CB0180938A049093E2 |
:102330008B04A0938C04B0938D0480910B04909136 |
:102340000C04845F914008F066C080918A049091EB |
:102350008B04A0918C04B0918D042DEC3CEC4CECE2 |
:102360005DE3BC01CD010E94A9454BC08091EA0309 |
:102370009091EB038F5F9F4F0CF04DC080918A04CA |
:1023800090918B04A0918C04B0918D0420E030E8F2 |
:1023900049E054E4BC01CD010E945B461816DCF50F |
:1023A00080918A0490918B04A0918C04B0918D044B |
:1023B0002AE037ED43EA5CE3BC01CD010E94A84569 |
:1023C000DC01CB0180938A0490938B04A0938C044E |
:1023D000B0938D0480910B0490910C04845F914024 |
:1023E000D0F480918A0490918B04A0918C04B091D8 |
:1023F0008D042DEC3CEC4CEC5DE3BC01CD010E9466 |
:10240000A845DC01CB0180938A0490938B04A093B0 |
:102410008C04B0938D0481E08093E4038091780074 |
:102420009091790090933307809332078091EA036B |
:102430009091EB039C01442737FD4095542F8091E8 |
:102440004C0490914D04A0914E04B0914F04820F22 |
:10245000931FA41FB51F80934C0490934D04A09329 |
:102460004E04B0934F0420914C0430914D044091A0 |
:102470004E0450914F0457FF04C021503C4F4F4F22 |
:102480005F4FAAE05595479537952795AA95D1F7BF |
:1024900080914C0490914D04A0914E04B0914F0452 |
:1024A000821B930BA40BB50B80934C0490934D04AB |
:1024B000A0934E04B0934F0483E08093F603A6C02C |
:1024C00080914007909141072091780030917900E8 |
:1024D000820F931F909341078093400780913807A4 |
:1024E0008F5F8093380780913807853008F48AC061 |
:1024F000809178009091790090931203809311035A |
:10250000109238078091E2039091E303BC01F3E05D |
:10251000660F771FFA95E1F7681B790B80918203AC |
:10252000482F552780913407909135072091400717 |
:1025300030914107821B930B20912D0430912E0482 |
:10254000821B930B489F9001499F300D589F300D7F |
:102550001124620F731F77FF02C0695F7F4FE3E0B2 |
:1025600075956795EA95E1F77093E3036093E2034D |
:102570008091400790914107EC01EE27D7FDE0954F |
:10258000FE2F2091130330911403409115035091B5 |
:102590001603DA01C901880F991FAA1FBB1F820FFA |
:1025A000931FA41FB51FC80FD91FEA1FFB1FF7FFFA |
:1025B00003C02396E11DF11D82E0F595E795D795BF |
:1025C000C7958A95D1F7C0931303D0931403E09372 |
:1025D0001503F09316038091130390911403A091B7 |
:1025E0001503B09116039C01809134079091350733 |
:1025F000821B930B90932E0480932D04109241071D |
:10260000109240071092F6031092F7038091F603A0 |
:1026100080937C008091F703882319F08FEE8093DC |
:102620007A00FF91EF91DF91CF91BF91AF919F9190 |
:102630008F917F916F915F914F913F912F911F915A |
:102640000F91FF90EF900F900FBE0F901F90189575 |
:1026500090E2E9E1F3E08FE49193815087FFFCCFB2 |
:1026600008951F93CF93DF938091FE0380FF0FC0E7 |
:1026700080910204882311F0815002C0809173037D |
:10268000809302040E9428138FEF8093BD038091F2 |
:10269000FE0381FF0AC0809102048F5F80930204D1 |
:1026A0000E9428138FEF8093BD038091FE0399272A |
:1026B00080FF04C081FF02C01092020480910204D6 |
:1026C000282F33278A3040F481E18093FF033F9322 |
:1026D0002F9380EA91E007C080E18093FF033F934E |
:1026E0002F9385EA91E09F938F9381E08F930E94CF |
:1026F000190A0F900F900F900F900F908091020485 |
:10270000C82FDD27C530D10509F46AC2C630D1050E |
:10271000ACF4C230D10509F4E9C0C330D10534F4BA |
:10272000209739F1219709F477C08DC5C330D105C1 |
:1027300009F44EC1249709F4B7C185C5C830D10545 |
:1027400009F439C4C930D10544F4C630D10509F4BF |
:10275000ACC3279709F40EC476C5CA30D10509F475 |
:10276000C2C4CA30D1050CF469C42B9709F401C561 |
:102770006AC51092FF038AEA91E09F938F9311E05C |
:102780001F930E94190A84E18093FF030F900F901A |
:102790000F9084E690E09F938F9386E490E09F9360 |
:1027A0008F93DF93CF93809101016AE00E942F47BE |
:1027B000892F99279F938F93809101010E942F4722 |
:1027C00099279F938F938AEB91E09F938F931F9309 |
:1027D0000E94190A88E28093FF038DB79EB70D9679 |
:1027E0000FB6F8949EBF0FBE8DBF0E94B20299270C |
:1027F0009F938F938FEC91E09F938F931F930E94F1 |
:10280000190A8CE38093FF030F900F900F900F90A5 |
:102810000F908CED91E061C08091800780FF4AC0ED |
:102820001092FF0380912D0490912E049F938F931B |
:102830008CEE91E09F938F9311E01F930E94190AF1 |
:1028400084E18093FF030F900F900F900F900F90F3 |
:1028500080912B0490912C049F938F938BEF91E0A8 |
:102860009F938F931F930E94190A88E28093FF031E |
:102870000F900F900F900F900F90809111039091F7 |
:1028800012039F938F938AE092E09F938F931F93FD |
:102890000E94190A8CE38093FF030F900F900F9012 |
:1028A0000F900F9080913D0799279F938F9389E117 |
:1028B00092E00EC484E18093FF0388E292E09F934C |
:1028C0008F9311E01F930E94190A88E28093FF03FF |
:1028D0000F900F900F908FE292E09F938F931F9332 |
:1028E0000E94190A0F900F900F90B2C41092FF032C |
:1028F0008DE392E09F938F93C1E0CF930E94190ADA |
:1029000084E18093FF030F900F900F9080918404D7 |
:1029100090918504A0918604B0918704B7FF04C00C |
:1029200081509C4FAF4FBF4FFAE0B595A795979553 |
:102930008795FA95D1F7BF93AF939F938F9387E4D1 |
:1029400092E09F938F93CF930E94190A88E280931D |
:10295000FF038DB79EB707960FB6F8949EBF0FBEC4 |
:102960008DBF80917C0490917D04A0917E04B091F4 |
:102970007F04B7FF04C081509C4FAF4FBF4FEAE0C8 |
:10298000B595A79597958795EA95D1F7BF93AF939E |
:102990009F938F9386E592E09F938F93CF930E94AE |
:1029A000190A8CE38093FF038DB79EB707960FB685 |
:1029B000F8949EBF0FBE8DBF80914A0490914B0446 |
:1029C0009F938F9385E692E09F938F93CF9383C3DA |
:1029D0001092FF0380914E0790914F079F938F9322 |
:1029E00080914C0790914D079F938F9384E792E0DD |
:1029F0009F938F9311E01F930E94190A84E18093A3 |
:102A0000FF038DB79EB707960FB6F8949EBF0FBE13 |
:102A10008DBF80915207909153079F938F93809120 |
:102A20005007909151079F938F9384E892E09F9372 |
:102A30008F931F930E94190A88E28093FF038DB73A |
:102A40009EB707960FB6F8949EBF0FBE8DBF8091BC |
:102A50005607909157079F938F93809154079091B9 |
:102A600055079F938F9384E992E09F938F931F93D1 |
:102A70000E94190A8CE38093FF038DB79EB70796D7 |
:102A80000FB6F8949EBF0FBE8DBF80915A079091EC |
:102A90005B079F938F9380915807909159079F935D |
:102AA0008F9384EA92E0C1C31092FF03809179076B |
:102AB000E82FFF27EE0FFF1FE65BF84F8081918123 |
:102AC0009F938F9380917807E82FFF27EE0FFF1FCA |
:102AD000E65BF84F808191819F938F9384EB92E026 |
:102AE0009F938F9311E01F930E94190A84E18093B2 |
:102AF000FF038DB79EB707960FB6F8949EBF0FBE23 |
:102B00008DBF80917B07E82FFF27EE0FFF1FE65B4D |
:102B1000F84F808191819F938F9380917A07E82F5E |
:102B2000FF27EE0FFF1FE65BF84F808191819F9397 |
:102B30008F9384EC92E09F938F931F930E94190AC6 |
:102B400088E28093FF038DB79EB707960FB6F8947F |
:102B50009EBF0FBE8DBF80917D07E82FFF27EE0F30 |
:102B6000FF1FE65BF84F808191819F938F93809147 |
:102B70007C07E82FFF27EE0FFF1FE65BF84F8081F1 |
:102B800091819F938F9384ED92E09F938F931F93F6 |
:102B90000E94190A8CE38093FF038DB79EB70796B6 |
:102BA0000FB6F8949EBF0FBE8DBF80917F07E82FB0 |
:102BB000FF27EE0FFF1FE65BF84F808191819F9307 |
:102BC0008F9380917E07E82FFF27EE0FFF1FE65BB4 |
:102BD000F84F808191819F938F9384EE92E025C37B |
:102BE0001092FF0384EF92E09F938F93C1E0CF9305 |
:102BF0000E94190A809101010F900F900F908A3066 |
:102C000009F060C084E18093FF0380919C0490915F |
:102C10009D049F938F938091F4039091F5032091ED |
:102C20009C0430919D04821B930B9F938F9382E0B1 |
:102C300093E09F938F93CF930E94190A88E2809329 |
:102C4000FF038DB79EB707960FB6F8949EBF0FBED1 |
:102C50008DBF80919A0490919B049F938F93809154 |
:102C6000F2039091F30320919A0430919B04821B0C |
:102C7000930B9F938F9381E193E09F938F93CF93D7 |
:102C80000E94190A8CE38093FF038DB79EB70796C5 |
:102C90000FB6F8949EBF0FBE8DBF8091980490919F |
:102CA00099049F938F938091980490919904209117 |
:102CB000F0033091F103821B930B9F938F9380E27B |
:102CC00093E06FC020919C0430919D048B3009F0FB |
:102CD0006CC084E18093FF03C90137FD019695958F |
:102CE00087959F938F938091F4039091F5032091A2 |
:102CF0009C0430919D04821B930B9F938F938FE2D2 |
:102D000093E09F938F93CF930E94190A88E2809358 |
:102D1000FF038DB79EB707960FB6F8949EBF0FBE00 |
:102D20008DBF80919A0490919B0497FD0196959593 |
:102D300087959F938F938091F2039091F303209155 |
:102D40009A0430919B04821B930B9F938F938EE385 |
:102D500093E09F938F93CF930E94190A8CE3809303 |
:102D6000FF038DB79EB707960FB6F8949EBF0FBEB0 |
:102D70008DBF809198049091990497FD0196959547 |
:102D800087959F938F9380919804909199042091B7 |
:102D9000F0033091F103821B930B9F938F938DE48B |
:102DA00093E09F938F93CF9343C284E18093FF037B |
:102DB0008091100399279F938F93C90137FD019646 |
:102DC000959587959F938F938091F4039091F50348 |
:102DD00020919C0430919D04821B930B9F938F93B1 |
:102DE0008CE593E09F938F93CF930E94190A88E21A |
:102DF0008093FF038DB79EB709960FB6F8949EBFD8 |
:102E00000FBE8DBF80910F0399279F938F93809161 |
:102E10009A0490919B0497FD0196959587959F93B1 |
:102E20008F938091F2039091F30320919A04309153 |
:102E30009B04821B930B9F938F9380E793E09F9358 |
:102E40008F93CF930E94190A8CE38093FF038DB771 |
:102E50009EB709960FB6F8949EBF0FBE8DBF8091A6 |
:102E60000E0399279F938F938091980490919904D2 |
:102E700097FD0196959587959F938F9380919804E0 |
:102E8000909199042091F0033091F103821B930BF0 |
:102E90009F938F9384E893E09F938F93CF930E94A7 |
:102EA000190A8DB79EB70996C8C11092FF0388E929 |
:102EB00093E09F938F9311E01F930E94190A84E17E |
:102EC0008093FF030F900F900F9080919204909148 |
:102ED00093049F938F938091EC039091ED039F93C4 |
:102EE0008F9385EA93E09F938F931F930E94190A13 |
:102EF00088E28093FF038DB79EB707960FB6F894CC |
:102F00009EBF0FBE8DBF80919004909191049F93BE |
:102F10008F938091EE039091EF039F938F9384EBB7 |
:102F200093E09F938F931F930E94190A8CE38093E1 |
:102F3000FF038DB79EB707960FB6F8949EBF0FBEDE |
:102F40008DBF80918A0490918B04A0918C04B091E4 |
:102F50008D04BC01CD010E943146DC01CB019F9361 |
:102F60008F938091E2079091E3079F938F9383EC77 |
:102F700093E05BC184E18093FF03809117039091FC |
:102F800018039F938F9382ED93E09F938F9311E0AB |
:102F90001F930E94190A88E28093FF030F900F90FD |
:102FA0000F900F900F908091380499279F938F93E3 |
:102FB00081EE93E08DC01092FF0380EF93E09F932A |
:102FC0008F9311E01F930E94190A84E18093FF03FD |
:102FD0000F900F900F9080914604909147049F931B |
:102FE0008F938FEF93E09F938F931F930E94190A03 |
:102FF00088E28093FF030F900F900F900F900F9037 |
:1030000080914A0490914B049F938F938EE094E0BB |
:103010009F938F931F930E94190A8CE38093FF0361 |
:103020000F900F900F900F900F9080914804909107 |
:1030300049049F938F938DE194E04AC01092FF035F |
:1030400080913F04909140049F938F938CE294E091 |
:103050009F938F9311E01F930E94190A84E180933C |
:10306000FF030F900F900F900F900F9080913D04F1 |
:1030700090913E049F938F9388E394E09F938F9366 |
:103080001F930E94190A88E28093FF030F900F900C |
:103090000F900F900F9080913B0490913C049F9370 |
:1030A0008F9384E494E09F938F931F930E94190A57 |
:1030B0008CE38093FF030F900F900F900F900F9071 |
:1030C0008091390490913A049F938F9380E594E026 |
:1030D0009F938F931F930E94190A0F900F900F9048 |
:1030E0000F900F90B5C01092FF038CE594E09F9372 |
:1030F0008F9311E01F930E94190A84E18093FF03CC |
:103100000F900F900F908091790399279F938F9341 |
:1031100084E694E09F938F931F930E94190A88E29C |
:103120008093FF030F900F900F900F900F9080915E |
:10313000D0039091D1039F938F9382E794E09F9364 |
:103140008F931F930E94190A8CE38093FF030F90C3 |
:103150000F900F900F900F9080919C0799279F934D |
:103160008F9380919B0799279F938F9380E894E09A |
:103170005CC01092FF038EE894E09F938F9311E060 |
:103180001F930E94190A84E18093FF030F900F9010 |
:103190000F9080914D06992787FD90959F938F936F |
:1031A00080914C06992787FD90959F938F938EE988 |
:1031B00094E09F938F931F930E94190A88E2809353 |
:1031C000FF038DB79EB707960FB6F8949EBF0FBE4C |
:1031D0008DBF80914E06992787FD90959F938F9381 |
:1031E00080914F0699279F938F938EEA94E09F9347 |
:1031F0008F931F930E94190A8CE38093FF038DB76E |
:103200009EB707960FB6F8949EBF0FBE8DBF8091F4 |
:10321000530699279F938F9380915006992787FD96 |
:1032200090959F938F938EEB94E09F938F931F9332 |
:103230000E94190A8DB79EB707960FB6F8949EBFE5 |
:103240000FBE8DBF05C0815080937303109202049E |
:103250001092FE03DF91CF911F9108951092B90053 |
:103260008AE28093B800089585EA8093BC0080E0EC |
:1032700090E0089584E98093BC0008951092B9000D |
:103280008093BB0085E88093BC0080E090E00895C7 |
:103290000E943A19109205048091BB001092040418 |
:1032A00080E88093BC001092BD001092BA0010928A |
:1032B000BB001092B9001092B8000E942E190E9413 |
:1032C000341980E00E943E1908951F920F920FB6A4 |
:1032D0000F9211242F933F934F935F936F937F939C |
:1032E0008F939F93AF93BF93EF93FF9380910504C8 |
:1032F000282F3327442755278F5F80930504F90132 |
:103300002731310508F098C0E85CFF4FEE0FFF1F32 |
:103310000590F491E02D099480910404880F8E5A51 |
:103320007EC080910404282F33278F5F809304048C |
:1033300021303105E1F1223031051CF4232BA1F1BC |
:103340007BC022303105B1F123303105B1F174C0B9 |
:103350000E943A1980910404843018F410920504F4 |
:1033600053C01092040450C080910304880F8D5AFA |
:1033700056C080910304E82FFF27EE5BF84F809141 |
:10338000BB0080838091030499278130910579F0F7 |
:10339000823091051CF4892B39F04EC082309105A2 |
:1033A00049F0039751F048C08091CF0738C0809111 |
:1033B000D80735C08091F70732C08091F9072FC038 |
:1033C00090910304E92FFF27EE5BF84F8091BB003B |
:1033D0008483892F8F5F80930304843018F11092C7 |
:1033E000030420C080E11BC08091100318C082E15B |
:1033F00016C080910F0313C00E943A198AE090E032 |
:1034000090939203809391030E94341915C088E928 |
:1034100006C084E104C080910E0301C080E80E94D0 |
:103420003E190AC00E943A198AE090E090939203F4 |
:1034300080939103109205048091BC008068809372 |
:10344000BC00FF91EF91BF91AF919F918F917F91C0 |
:103450006F915F914F913F912F910F900FBE0F9001 |
:103460001F90189583EC8093810080916F0080629B |
:1034700080936F00109299041092980410929B040C |
:1034800010929A0410929D0410929C0408951F9229 |
:103490000F920FB60F9211240F931F932F933F9308 |
:1034A0004F935F936F937F938F939F93AF93BF934C |
:1034B000CF93DF93EF93FF93409186005091870065 |
:1034C0008091060490910704481B590B8091860057 |
:1034D000909187009093070480930604CA018D544D |
:1034E0009440A0910804B0910904835F9A4158F474 |
:1034F000149714F01092740381E090E09093090403 |
:103500008093080499C0AA30B1050CF095C0CA0197 |
:103510008B5F9040845B914008F071C0425D5140E8 |
:10352000FD01EA0FFB1FE65BF84F80819181FA01F4 |
:10353000E81BF90BCF01F7FF03C0909581959F4FD2 |
:1035400006974CF480913804883C28F48091380424 |
:10355000865F80933804FD01EA0FFB1FE65BF84F9E |
:10356000808191819C01220F331F280F391F240F66 |
:10357000351F37FF02C02D5F3F4FE901D595C79535 |
:10358000D595C795CA0101968C179D0714F421970C |
:1035900006C041505040C417D5070CF421968091C5 |
:1035A0003804833CD8F08D010A0F1B1FF801E65B3D |
:1035B000F84F808191819E01281B390BC90163E07E |
:1035C00070E00E944F47CB01880F991F860F971F0D |
:1035D000005A184FF8019183808307C0AA0FBB1FC0 |
:1035E000A05AB84F11961C921E92E0910804F091D7 |
:1035F0000904EE0FFF1FE65BF84FD183C083809173 |
:10360000080490910904019690930904809308049A |
:10361000059711F45D9A01C05D988091080490911E |
:1036200009048630910511F45C9A01C05C980797F3 |
:1036300011F45B9A01C05B98FF91EF91DF91CF91FC |
:10364000BF91AF919F918F917F916F915F914F91BA |
:103650003F912F911F910F910F900FBE0F901F90D0 |
:103660001895CF93DF9381E08093780782E0809371 |
:10367000790783E080937A0764E060937B0745E0F5 |
:1036800040937C07F6E0F0937D0787E080937E0708 |
:1036900078E070937F0788E6809380079EE190939F |
:1036A00081078BEF809383078AE080938407909350 |
:1036B000820790938607609385073FE030938707E2 |
:1036C00090938807ECE0E093890770938A0786EE71 |
:1036D00080938B0790938C0780E880938D0780E51B |
:1036E00080938E0756E950938F078EE5809390075D |
:1036F00083E280939107909392071092930780E260 |
:10370000809394071092950710929607109297074E |
:10371000109298071092A8071092A9071092AA0772 |
:103720001092AB0724E62093990788E280939A07CA |
:103730001092BA0782E380939B0750939C074093B3 |
:103740009D0780939E079AE590939F078093A0071B |
:103750001092B9079093A1074093A20785E5809343 |
:10376000A3078093A40780E18093A5076093A60731 |
:103770002093A7078FE58093AC0783EF8093AE0774 |
:103780003093AD073093AF078DEF8093B007209350 |
:10379000B1079093B2079093B3079093B407109238 |
:1037A000B507F093B6077093B707CFEBD7E0A3E95F |
:1037B000B3E00D900992E150E1F7DF91CF910895C8 |
:1037C000CF93DF9381E08093780782E0809379073D |
:1037D00023E020937A07E4E0E0937B0735E0309321 |
:1037E0007C0766E060937D0787E080937E0758E062 |
:1037F00050937F0788E6809380079EE1909381072E |
:103800008BEF809383078AE08093840790938207ED |
:103810009093860720938507FCE0F093870780E16B |
:10382000809388076093890750938A0786EE809378 |
:103830008B0790938C0780E880938D0780E58093B9 |
:103840008E0788E780938F078EE58093900783E249 |
:1038500080939107909392071092930740E24093D0 |
:10386000940710929507109296071092970710925E |
:1038700098071092A8071092A9071092AA07109211 |
:10388000AB0774E67093990788E280939A071092C9 |
:10389000BA0792E390939B0786E980939C07309345 |
:1038A0009D0790939E072AE520939F079093A0077A |
:1038B0001092B9072093A1073093A20785E5809362 |
:1038C000A3078093A4074093A507E093A6078BE482 |
:1038D0008093A7078FE58093AC0783EF8093AE07B3 |
:1038E00084E18093AD078093AF078DEF8093B0079D |
:1038F0007093B1072093B2072093B3072093B407C6 |
:103900001092B5076093B6075093B707CFEBD7E097 |
:10391000AAE9B3E00D900992F150E1F7DF91CF9160 |
:10392000089581E08093780782E08093790793E09F |
:1039300090937A07E4E0E0937B0755E050937C078F |
:1039400076E070937D0787E080937E0768E0609360 |
:103950007F0788EE809380073EE1309381078BEFED |
:10396000809383078AE080938407309382073093A3 |
:103970008607909385076093870790E19093880767 |
:103980007093890760938A0786EE80938B07309344 |
:103990008C0780E880938D0744E640938E0788E784 |
:1039A00080938F078EE58093900783E28093910741 |
:1039B00084E180939207109293079093940710925A |
:1039C00095071092960710929707109298071092F9 |
:1039D000A8071092A9071092AA071092AB0740936C |
:1039E000990788E280939A071092BA0792E390931E |
:1039F0009B0786E980939C0750939D0790939E07B1 |
:103A00002AE520939F079093A0071092B90720936F |
:103A1000A1075093A20785E58093A3078093A4078D |
:103A200080E28093A507E093A6079093A7078FE510 |
:103A30008093AC0783EF8093AE073093AD0730934C |
:103A4000AF078DEF8093B0074093B1072093B20783 |
:103A50002093B3072093B4071092B5077093B6076D |
:103A60006093B707AFEBB7E0E2EAF3E08CE00190D8 |
:103A70000D928150E1F70895CF93C82FC150CF3FE9 |
:103A800081F080912F04882361F484E690E0909384 |
:103A9000D4038093D3038AEF90E00E94BD0DC15000 |
:103AA00080F7CF9108959F92AF92BF92CF92DF920D |
:103AB000EF92FF920F931F93CF93DF93809198041F |
:103AC000909199042091F0033091F103821B930BA4 |
:103AD00090930108809300088091F1079091F2077C |
:103AE0002091F0033091F103821B930B90937707A1 |
:103AF000809376078091F2039091F30320919A04CA |
:103B000030919B04821B930B9093CE078093CD073B |
:103B10008091F4039091F50320919C0430919D04D1 |
:103B2000821B930B9093DA078093D9078091CD077E |
:103B30009091CE0790932707809326078091FC07EA |
:103B40009091FD077C010027F7FC0095102F8091D4 |
:103B5000EC039091ED03AA2797FDA095BA2FBC0125 |
:103B6000CD012CE030E040E050E00E941047DC0145 |
:103B7000CB01E80EF91E0A1F1B1F17FF05C0089492 |
:103B8000E11CF11C011D111D15950795F794E79493 |
:103B9000F092FD07E092FC0780910E0890910F08CB |
:103BA0007C010027F7FC0095102F8091EE03909187 |
:103BB000EF03AA2797FDA095BA2FBC01CD012CE0F9 |
:103BC00030E040E050E00E941047DC01CB01E80EFD |
:103BD000F91E0A1F1B1F17FF05C00894E11CF11CEA |
:103BE000011D111D15950795F794E794F0920F08A4 |
:103BF000E0920E088091E2079091E3079C01442730 |
:103C000037FD4095542F8091EA039091EB03AA274A |
:103C100097FDA095BA2F280F391F4A1F5B1F57FF2A |
:103C200004C02F5F3F4F4F4F5F4F559547953795D6 |
:103C300027953093E3072093E2078091EC0390915E |
:103C4000ED036CE070E0869F9001879F300D969F9A |
:103C5000300D1124C9019C01442737FD4095542F94 |
:103C60008091740490917504A0917604B0917704CA |
:103C7000820F931FA41FB51F809374049093750443 |
:103C8000A0937604B09377048091EE039091EF03B4 |
:103C9000869F9001879F300D969F300D1124C9019A |
:103CA0009C01442737FD4095542F809170049091DA |
:103CB0007104A0917204B0917304820F931FA41F2A |
:103CC000B51F8093700490937104A0937204B09315 |
:103CD00073048091EA079091EB072091EC033091F7 |
:103CE000ED03820F931F9093EB078093EA07809177 |
:103CF0000308909104082091EE033091EF03820FA6 |
:103D0000931F909304088093030880918E049091F0 |
:103D10008F04019690938F0480938E0480916C049D |
:103D200090916D04A0916E04B0916F04BC01CD011F |
:103D30000E944E465B016C018091320790913307DF |
:103D4000AA2797FDA095BA2FBC01CD010E944E462F |
:103D50007B018C0180918A0490918B04A0918C044A |
:103D6000B0918D049C01AD01C801B7010E94A84526 |
:103D7000DC01CB019C01AD01C601B5010E94A94542 |
:103D8000DC01CB01BC01CD010E943146DC01CB013D |
:103D900080936C0490936D04A0936E04B0936F04B1 |
:103DA0008091000890910108AA2797FDA095BA2F4D |
:103DB000C0910A08D0910B08E0910C08F0910D0811 |
:103DC000C80FD91FEA1FFB1FC0930A08D0930B0826 |
:103DD000E0930C08F0930D08809100089091010881 |
:103DE0009C01442737FD4095542F809154049091B5 |
:103DF0005504A0915604B0915704820F931FA41F3D |
:103E0000B51F8093540490935504A0935604B09327 |
:103E10005704C03B33E8D30738E0E30730E0F3074B |
:103E200064F0C05BD348E840F040C0930A08D093E8 |
:103E30000B08E0930C08F0930D0880910A0890910C |
:103E40000B08A0910C08B0910D08B7FF0CC080556D |
:103E50009C47A74FBF4F80930A0890930B08A093ED |
:103E60000C08B0930D0890902604992009F0C3C067 |
:103E700080912504882309F0BEC08091800786FFC9 |
:103E8000BAC08091760790917707AA2797FDA095F1 |
:103E9000BA2F2091640430916504409166045091DA |
:103EA0006704BC01CD010E941047EC01DB0197FFC4 |
:103EB00004C0A150B84FCF4FDF4F1BE0D595C79539 |
:103EC000B795A7951A95D1F780911804E82EFF248D |
:103ED00000271127BD01CE01A80197010E941047BC |
:103EE000DC01CB0180939E0490939F04A093A004D7 |
:103EF000B093A104B7FF04C08150904FAF4FBF4FA4 |
:103F00005C016D01ACE0D594C794B794A794AA95D1 |
:103F1000D1F7A0929E04B0929F04C092A004D092C8 |
:103F2000A1048091760790917707AA2797FDA09525 |
:103F3000BA2F20915C0430915D0440915E04509151 |
:103F40005F04BC01CD010E94104797FF04C061507F |
:103F5000784F8F4F9F4FFBE09595879577956795A5 |
:103F6000FA95D1F7A80197010E941047DC01CB0117 |
:103F70008093A2049093A304A093A404B093A504F7 |
:103F8000B7FF04C08150904FAF4FBF4F9C01AD01B0 |
:103F9000ECE05595479537952795EA95D1F720930D |
:103FA000A2043093A3044093A4045093A504D60123 |
:103FB000C501D7FE07C0B095A095909581959F4FFC |
:103FC000AF4FBF4F81389105A105B10584F4DA01E7 |
:103FD000C90157FF07C0B095A095909581959F4F57 |
:103FE000AF4FBF4F81389105A105B105A4F081E025 |
:103FF0008093430410C01092A2041092A304109264 |
:10400000A4041092A50410929E0410929F04109292 |
:10401000A0041092A1048091CD079091CE07209129 |
:104020009E0430919F04820F931F9093CE0780933C |
:10403000CD0700911704202F33274427552780915F |
:10404000A2049091A304A091A404B091A504BC0182 |
:10405000CD010E9410479B01AC0197FF04C0215085 |
:104060003E4F4F4F5F4F79E05595479537952795D0 |
:104070007A95D1F78091CD079091CE07820F931F4B |
:104080009093CE078093CD078091CD079091CE0776 |
:104090009C01442737FD4095542F809158049091FE |
:1040A0005904A0915A04B0915B04820F931FA41F7E |
:1040B000B51F8093580490935904A0935A04B09369 |
:1040C0005B048091CD079091CE0720912904309117 |
:1040D0002A04821B930B9C01442737FD4095542FE3 |
:1040E00080915C0490915D04A0915E04B0915F04A6 |
:1040F000820F931FA41FB51F80935C0490935D04EF |
:10410000A0935E04B0935F04C0918703D0918803AD |
:10411000E0918903F0918A03C817D907EA07FB07E2 |
:10412000C4F488EA91E6A0E0B0E08C1B9D0BAE0BD6 |
:10413000BF0B80935C0490935D04A0935E04B093E6 |
:104140005F048093580490935904A0935A04B09349 |
:104150005B0422273327A9012C1B3D0B4E0B5F0B61 |
:1041600080915C0490915D04A0915E04B0915F0425 |
:1041700082179307A407B507B4F4CE01DF01885A6C |
:104180009146A040B04080935C0490935D04A0935E |
:104190005E04B0935F048093580490935904A093F5 |
:1041A0005A04B0935B048091F2039091F3030F974C |
:1041B00034F488E19CEF9093CE078093CD078091F3 |
:1041C000F2039091F303079734F480E398EF909310 |
:1041D000CE078093CD07109101011A30A9F4809188 |
:1041E000F2039091F303835F934034F088EE93E001 |
:1041F0009093CE078093CD078091F2039091F303C3 |
:104200008A5F9340DCF014C08091F2039091F30335 |
:10421000855E974034F088EE93E09093CE078093CC |
:10422000CD078091F2039091F303835F974034F0C0 |
:1042300080ED97E09093CE078093CD078091D907CA |
:104240009091DA072091A2043091A304821B930B72 |
:104250009093DA078093D907202F332744275527D7 |
:1042600080919E0490919F04A091A004B091A1041C |
:10427000BC01CD010E9410479B01AC0197FF04C017 |
:1042800021503E4F4F4F5F4F69E055954795379509 |
:1042900027956A95D1F78091D9079091DA07821B0B |
:1042A000930B9093DA078093D9078091D907909167 |
:1042B000DA079C01442737FD4095542F8091600414 |
:1042C00090916104A0916204B0916304820F931FE6 |
:1042D000A41FB51F8093600490936104A0936204AF |
:1042E000B09363048091D9079091DA072091270455 |
:1042F00030912804821B930B9C01442737FD409585 |
:10430000542F8091640490916504A0916604B0914B |
:104310006704820F931FA41FB51F809364049093BA |
:104320006504A0936604B0936704C0918B03D09199 |
:104330008C03E0918D03F0918E03C817D907EA072B |
:10434000FB07C4F488EA91E6A0E0B0E08C1B9D0B6B |
:10435000AE0BBF0B8093640490936504A093660436 |
:10436000B09367048093600490936104A093620407 |
:10437000B093630422273327A9012C1B3D0B4E0B5E |
:104380005F0B8091640490916504A0916604B091E4 |
:10439000670482179307A407B507B4F4CE01DF01C1 |
:1043A000885A9146A040B04080936404909365047D |
:1043B000A0936604B09367048093600490936104B3 |
:1043C000A0936204B09363048091F4039091F50389 |
:1043D0000F9734F488E19CEF9093DA078093D90724 |
:1043E0008091F4039091F503079734F480E398EFFC |
:1043F0009093DA078093D9071A30A9F48091F403D7 |
:104400009091F503835F934034F088EE93E09093AE |
:10441000DA078093D9078091F4039091F5038A5FBE |
:104420009340DCF014C08091F4039091F503855E15 |
:10443000974034F088EE93E09093DA078093D907A1 |
:104440008091F4039091F503835F974034F080ED01 |
:1044500097E09093DA078093D9078FEE80937A00E4 |
:104460008091540490915504A0915604B091570442 |
:104470008093680490936904A0936A04B0936B04DA |
:104480008091640490916504A0916604B0916704E2 |
:104490008093840490938504A0938604B09387044A |
:1044A00080915C0490915D04A0915E04B0915F04E2 |
:1044B00080937C0490937D04A0937E04B0937F044A |
:1044C0008091600490916104A0916204B0916304B2 |
:1044D0008093800490938104A0938204B09383041A |
:1044E0008091580490915904A0915A04B0915B04B2 |
:1044F0008093780490937904A0937A04B0937B041A |
:104500008091800787FF6EC0992009F06BC0809171 |
:104510002504882309F066C08091D9079091DA07B5 |
:10452000893C91058CF02091D9073091DA07220F50 |
:10453000331F220F331F8091D9079091DA07820F22 |
:10454000931F8052934017C08091D9079091DA074A |
:1045500088539F4FA4F42091D9073091DA07220F96 |
:10456000331F220F331F8091D9079091DA07820FF2 |
:10457000931F805E9C4F9093DA078093D9078091B8 |
:10458000CD079091CE07893C91058CF02091CD0705 |
:104590003091CE07220F331F220F331F8091CD079A |
:1045A0009091CE07820F931F8052934017C0809145 |
:1045B000CD079091CE0788539F4FA4F42091CD074B |
:1045C0003091CE07220F331F220F331F8091CD076A |
:1045D0009091CE07820F931F805E9C4F9093CE07E1 |
:1045E0008093CD0780917C07E82FFF27EE0FFF1FF8 |
:1045F000E65BF84F8081918182599F4F20913F0463 |
:1046000030914004281739071CF42F5F3F4F0CC02E |
:104610008081918182599F4F821793074CF4211515 |
:10462000310531F0215030403093400420933F0455 |
:1046300080917D07E82FFF27EE0FFF1FE65BF84F05 |
:104640008081918182599F4F20913D0430913E0499 |
:10465000281739071CF42F5F3F4F0CC080819181D0 |
:1046600082599F4F821793074CF42115310531F081 |
:104670002150304030933E0420933D0480917E07CA |
:10468000E82FFF27EE0FFF1FE65BF84F8081918137 |
:1046900082599F4F20913B0430913C0428173907E1 |
:1046A0001CF42F5F3F4F0CC08081918182599F4F36 |
:1046B000821793074CF42115310531F02150304019 |
:1046C00030933C0420933B0480917F07E82FFF2721 |
:1046D000EE0FFF1FE65BF84F8081918182599F4F5B |
:1046E0002091390430913A04281739071CF42F5FC0 |
:1046F0003F4F0CC08081918182599F4F8217930751 |
:104700004CF42115310531F02150304030933A04FA |
:104710002093390480913F049091400497FF05C095 |
:104720001092400410923F040AC08F3F910539F067 |
:1047300034F08FEF90E09093400480933F04809199 |
:104740003D0490913E0497FF05C010923E041092E4 |
:104750003D040AC08F3F910539F034F08FEF90E0AF |
:1047600090933E0480933D0480913B0490913C04DF |
:1047700097FF05C010923C0410923B040AC08F3F83 |
:10478000910539F034F08FEF90E090933C048093E2 |
:104790003B048091390490913A0497FF05C0109230 |
:1047A0003A04109239040AC08F3F910539F034F071 |
:1047B0008FEF90E090933A0480933904DF91CF918A |
:1047C0001F910F91FF90EF90DF90CF90BF90AF902F |
:1047D0009F900895809101018D3010F00E94660F26 |
:1047E00010927A008091F4039091F5039093DA0788 |
:1047F0008093D9078091F2039091F3039093CE07B1 |
:104800008093CD078091F0039091F103909301087C |
:10481000809300088091EC039091ED03AA2797FD07 |
:10482000A095BA2FBC01CD012CE030E040E050E073 |
:104830000E941047DC01CB019093FD078093FC0799 |
:104840008091EE039091EF03AA2797FDA095BA2FD0 |
:10485000BC01CD010E941047DC01CB0190930F08F1 |
:1048600080930E088091EA039091EB039093E30705 |
:104870008093E2078FEE80937A0080917C07E82F87 |
:10488000FF27EE0FFF1FE65BF84F80819181825971 |
:104890009F4F20913F0430914004281739071CF4A2 |
:1048A0002F5F3F4F0CC08081918182599F4F8217AB |
:1048B00093074CF42115310531F0215030403093ED |
:1048C000400420933F0480917D07E82FFF27EE0FDF |
:1048D000FF1FE65BF84F8081918182599F4F2091A5 |
:1048E0003D0430913E04281739071CF42F5F3F4FD9 |
:1048F0000CC08081918182599F4F821793074CF49D |
:104900002115310531F02150304030933E04209381 |
:104910003D0480917E07E82FFF27EE0FFF1FE65B27 |
:10492000F84F8081918182599F4F20913B043091B3 |
:104930003C04281739071CF42F5F3F4F0CC08081BF |
:10494000918182599F4F821793074CF421153105AD |
:1049500031F02150304030933C0420933B0480914F |
:104960007F07E82FFF27EE0FFF1FE65BF84F8081E0 |
:10497000918182599F4F2091390430913A04281730 |
:1049800039071CF42F5F3F4F0CC080819181825901 |
:104990009F4F821793074CF42115310531F02150B8 |
:1049A000304030933A042093390480913F04909131 |
:1049B000400497FF05C01092400410923F040AC0C3 |
:1049C0008F3F910539F034F08FEF90E090934004E1 |
:1049D00080933F0480913D0490913E0497FF05C071 |
:1049E00010923E0410923D040AC08F3F910539F0A9 |
:1049F00034F08FEF90E090933E0480933D048091DB |
:104A00003B0490913C0497FF05C010923C04109227 |
:104A10003B040AC08F3F910539F034F08FEF90E0EE |
:104A200090933C0480933B048091390490913A0424 |
:104A300097FF05C010923A04109239040AC08F3FC4 |
:104A4000910539F034F08FEF90E090933A04809321 |
:104A500039048091A3079927AA27BB27BC01CD0160 |
:104A600024EC39E040E050E00E941047DC01CB012B |
:104A700080938B0390938C03A0938D03B0938E034C |
:104A80008091A4079927AA27BB27BC01CD010E94CA |
:104A90001047DC01CB018093870390938803A09398 |
:104AA0008903B0938A03089510929304109292049C |
:104AB000109291041092900480E090E0A0E0B0E0A9 |
:104AC00080938A0490938B04A0938C04B0938D04FC |
:104AD00010929D0410929C0410929B0410929A04D0 |
:104AE00010929904109298041092F2071092F10714 |
:104AF00010921804109217040E94EA2384E690E0B2 |
:104B00000E94CA0D0E94EA238091800780FF10C096 |
:104B10008091110390911203875B934038F4809148 |
:104B20001103909112038E5E924010F40E941E0FAA |
:104B30004091F4035091F50350939D0440939C04DD |
:104B40002091F2033091F30330939B0420939A0455 |
:104B50008091F0039091F1039093990480939804CD |
:104B60008091F0039091F1039093F2078093F10705 |
:104B700030939704209396045093950440939404A3 |
:104B800044E050E0DA010E949F47802D853038F1E3 |
:104B900080910E0890910F0897FF03C09095819522 |
:104BA0009F4F6CE070E00E944F47709391046093B8 |
:104BB00090048091FC079091FD0797FF03C09095AA |
:104BC00081959F4F6CE070E00E944F477093930473 |
:104BD00060939204809132079091330734C0DA01D8 |
:104BE0000E949F47802D9927982F8827DA011196D8 |
:104BF0000E949F47202D820F911D909393048093D4 |
:104C00009204DA0112960E949F47802D9927982FCF |
:104C10008827DA0113960E949F47202D820F911D4D |
:104C20009093910480939004DA0114960E949F4718 |
:104C3000802D9927982F8827DA0115960E949F4783 |
:104C4000202D820F911DAA2797FDA095BA2FBC0198 |
:104C5000CD010E944E46DC01CB0180938A049093E3 |
:104C60008B04A0938C04B0938D0410926404109272 |
:104C7000650410926604109267041092600410920A |
:104C80006104109262041092630410925C0410920A |
:104C90005D0410925E0410925F041092580410920A |
:104CA000590410925A0410925B041092540410920A |
:104CB000550410925604109257041092DA0710927D |
:104CC000D9071092CE071092CD07109201081092CA |
:104CD000000884E690E00E94CA0D80911303909131 |
:104CE0001403A0911503B091160390933507809398 |
:104CF00034071092E3031092E20310924C041092D6 |
:104D00004D0410924E0410924F0480914A049091E9 |
:104D10004B0490934904809348040E94354282E3F7 |
:104D200090E09093D4038093D3038091A3079927B5 |
:104D3000AA27BB27BC01CD0124EC39E040E050E0BC |
:104D40000E941047DC01CB018856954CAF4FBF4FF6 |
:104D500080938B0390938C03A0938D03B0938E0369 |
:104D60008091A4079927AA27BB27BC01CD010E94E7 |
:104D70001047DC01CB018856954CAF4FBF4F809355 |
:104D8000870390938803A0938903B0938A031092BA |
:104D900076031092750380914A0490914B04AA27E0 |
:104DA00097FDA095BA2FBC01CD012EE036E040E082 |
:104DB00050E00E941047DC01CB0180930A089093D9 |
:104DC0000B08A0930C08B0930D08109242041092A7 |
:104DD000410481E0809300010E94134580910A0400 |
:104DE000846080930A04089580912F04882321F51C |
:104DF0008093D8078093CF078093F7078093F907B4 |
:104E00008091B803882311F08093CF078091B90374 |
:104E1000882311F08093D8078091BA03882311F07A |
:104E20008093F9078091BB03882311F08093F707E3 |
:104E300080910A048C7F03C080910A048160809372 |
:104E40000A048091CF07992790930707809306075C |
:104E50008091D8079927909309078093080780913C |
:104E6000F907992790930B0780930A078091F7071A |
:104E7000992790930D0780930C07109205041092C8 |
:104E800004040E94341908951F93809183078B3F77 |
:104E900098F08B3F19F480913F040EC08C3F19F4B9 |
:104EA00080913D0409C08D3F19F480913B0404C0FA |
:104EB0008E3F21F480913904809381038091820791 |
:104EC0008B3F98F08B3F19F480913F040EC08C3FCC |
:104ED00019F480913D0409C08D3F19F480913B0481 |
:104EE00004C08E3F21F48091390480938203809125 |
:104EF0008203882329F0843618F084E680938203A5 |
:104F0000809184078B3F98F08B3F19F480913F0488 |
:104F10000EC08C3F19F480913D0409C08D3F19F4F7 |
:104F200080913B0404C08E3F21F48091390480932A |
:104F3000800380918003882329F0843618F084E66A |
:104F400080938003809186078B3F98F08B3F19F404 |
:104F500080913F040EC08C3F19F480913D0409C03C |
:104F60008D3F19F480913B0404C08E3F21F4809161 |
:104F7000390480937F0380918D078B3F98F08B3F9E |
:104F800019F480913F040EC08C3F19F480913D04C8 |
:104F900009C08D3F19F480913B0404C08E3F21F479 |
:104FA0008091390480937E0380918E078B3F98F027 |
:104FB0008B3F19F480913F040EC08C3F19F480910F |
:104FC0003D0409C08D3F19F480913B0404C08E3F1D |
:104FD00021F48091390480937D0380917D038B308F |
:104FE00010F48AE002C08F3F11F480937D0380911A |
:104FF0008F078B3F98F08B3F19F480913F040EC0D0 |
:105000008C3F19F480913D0409C08D3F19F48091C3 |
:105010003B0404C08E3F21F48091390480937C03CB |
:10502000809194078B3F98F08B3F19F480913F0457 |
:105030000EC08C3F19F480913D0409C08D3F19F4D6 |
:1050400080913B0404C08E3F21F480913904809309 |
:105050007A03809195078B3F98F08B3F19F48091EC |
:105060003F040EC08C3F19F480913D0409C08D3F70 |
:1050700019F480913B0404C08E3F21F480913904DF |
:1050800080932004809196078B3F98F08B3F19F412 |
:1050900080913F040EC08C3F19F480913D0409C0FB |
:1050A0008D3F19F480913B0404C08E3F21F4809120 |
:1050B000390480931F04809197078B3F98F08B3FB2 |
:1050C00019F480913F040EC08C3F19F480913D0487 |
:1050D00009C08D3F19F480913B0404C08E3F21F438 |
:1050E0008091390480931E04809198078B3F98F03B |
:1050F0008B3F19F480913F040EC08C3F19F48091CE |
:105100003D0409C08D3F19F480913B0404C08E3FDB |
:1051100021F48091390480931D048091A8078B3F6E |
:1051200098F08B3F19F480913F040EC08C3F19F426 |
:1051300080913D0409C08D3F19F480913B0404C067 |
:105140008E3F21F48091390480931C048091A9073B |
:105150008B3F98F08B3F19F480913F040EC08C3F39 |
:1051600019F480913D0409C08D3F19F480913B04EE |
:1051700004C08E3F21F48091390480931B048091F8 |
:10518000AA078B3F98F08B3F19F480913F040EC023 |
:105190008C3F19F480913D0409C08D3F19F4809132 |
:1051A0003B0404C08E3F21F48091390480931A049B |
:1051B0008091AB078B3F98F08B3F19F480913F04AF |
:1051C0000EC08C3F19F480913D0409C08D3F19F445 |
:1051D00080913B0404C08E3F21F480913904809378 |
:1051E0001904809199078B3F98F08B3F19F48091B7 |
:1051F0003F040EC08C3F19F480913D0409C08D3FDF |
:1052000019F480913B0404C08E3F21F4809139044D |
:105210008093790380919E078B3F98F08B3F19F420 |
:1052200080913F040EC08C3F19F480913D0409C069 |
:105230008D3F19F480913B0404C08E3F21F480918E |
:105240003904809378038091A1078B3F98F08B3FBE |
:1052500019F480913F040EC08C3F19F480913D04F5 |
:1052600009C08D3F19F480913B0404C08E3F21F4A6 |
:1052700080913904809318048091A2078B3F98F0A5 |
:105280008B3F19F480913F040EC08C3F19F480913C |
:105290003D0409C08D3F19F480913B0404C08E3F4A |
:1052A00021F480913904809317048091A7078B3FE4 |
:1052B00098F08B3F19F480913F040EC08C3F19F495 |
:1052C00080913D0409C08D3F19F480913B0404C0D6 |
:1052D0008E3F21F480913904809377038091AD074C |
:1052E0008B3F98F08B3F19F480913F040EC08C3FA8 |
:1052F00019F480913D0409C08D3F19F480913B045D |
:1053000004C08E3F21F4809139048093EC07809192 |
:10531000EC07823010F481E002C08F3F11F48093DB |
:10532000EC078091AF078B3F98F08B3F19F4809189 |
:105330003F040EC08C3F19F480913D0409C08D3F9D |
:1053400019F480913B0404C08E3F21F4809139040C |
:105350008093FE078091FE07823010F481E002C046 |
:105360008F3F11F48093FE078091B0078B3F98F038 |
:105370008B3F19F480913F040EC08C3F19F480914B |
:105380003D0409C08D3F19F480913B0404C08E3F59 |
:1053900021F4809139048093D7078091B1078B3F26 |
:1053A00098F08B3F19F480913F040EC08C3F19F4A4 |
:1053B00080913D0409C08D3F19F480913B0404C0E5 |
:1053C0008E3F21F480913904809310088091B207B8 |
:1053D0008B3F98F08B3F19F480913F040EC08C3FB7 |
:1053E00019F480913D0409C08D3F19F480913B046C |
:1053F00004C08E3F21F4809139048093D0078091BE |
:10540000B3078B3F98F08B3F19F480913F040EC097 |
:105410008C3F19F480913D0409C08D3F19F48091AF |
:105420003B0404C08E3F21F4809139048093DB0754 |
:105430008091B4078B3F98F08B3F19F480913F0423 |
:105440000EC08C3F19F480913D0409C08D3F19F4C2 |
:1054500080913B0404C08E3F21F4809139048093F5 |
:1054600013088091B5078B3F98F08B3F19F480911A |
:105470003F040EC08C3F19F480913D0409C08D3F5C |
:1054800019F480913B0404C08E3F21F480913904CB |
:105490008093DD078091B8078B3F98F08B3F19F41C |
:1054A00080913F040EC08C3F19F480913D0409C0E7 |
:1054B0008D3F19F480913B0404C08E3F21F480910C |
:1054C00039048093110810917A03812F992787FD61 |
:1054D0009095A92FB92FBC01CD010E944E4617FF10 |
:1054E00006C020E030E040E853E40E94A94527E1EF |
:1054F00037EB41ED58E30E94C846DC01CB018093B5 |
:10550000830390938403A0938503B09386038091D3 |
:105510008B078093FF0780918A078093DC071F9198 |
:1055200008952F923F924F925F926F927F928F9247 |
:105530009F92AF92BF92CF92DF92EF92FF920F9322 |
:105540001F93CF93DF93CDB7DEB765970FB6F8946F |
:10555000DEBF0FBECDBF0E94531D309101013C3014 |
:1055600010F4299A01C02998E0903004F090310499 |
:10557000FA82E9828091DC0799270A96E816F906F3 |
:1055800014F49A83898380913804843608F06CC0BF |
:1055900080910303882399F4809106039091070377 |
:1055A0008F5F9F4F61F488E99AE39093D4038093CF |
:1055B000D30380E09CE090930703809306038091DF |
:1055C000C2049091C304009731F001979093C304F3 |
:1055D0008093C20404C010922F04109245043A3004 |
:1055E00011F4289A01C0289880910B0490910C0422 |
:1055F000895E9340B0F180919107282F33273A8339 |
:10560000298381E08093450480917807A82FBB27E8 |
:10561000AA0FBB1FFD01E05AF84F11821082809142 |
:105620007907282F3327220F331FC901805A984F3B |
:10563000FC0111821082A65BB84F11961C921E923B |
:10564000265B384FD90111961C921E9280917B07E0 |
:10565000E82FFF27EE0FFF1FE65BF84F1182108245 |
:10566000CEC210922F04CBC2809138048D3808F43A |
:10567000C6C2109245049091920782E3989FC001A0 |
:1056800011249093C3048093C204E981FA81B997ED |
:105690008CF080912F04882369F080910B04909105 |
:1056A0000C04FFEF8F3F9F0729F0019690930C04A5 |
:1056B00080930B0480910B0490910C048F3F910513 |
:1056C00009F038F51092A6041092A7041092A804CD |
:1056D0001092A9041092AA041092AB041092AC0488 |
:1056E0001092AD048A3F9105C9F481E08093CA0409 |
:1056F0001092AE041092AF041092B0041092B10454 |
:1057000010925404109255041092560410925704AB |
:1057100005C080910A04826080930A0480917A0710 |
:10572000E82FFF27EE0FFF1FE65BF84F8081918186 |
:10573000813591050CF49BC120912F04222309F09F |
:1057400096C180917B07E82FFF27EE0FFF1FE65BD6 |
:10575000F84F808191818C3491050CF4FBC08091CD |
:10576000C4048F5F8093C404893C08F480C13C303A |
:1057700010F4299801C0299A10922F041092C404A1 |
:1057800010920C0410920B0430917807E32FFF273E |
:10579000EE0FFF1FE65BF84F808191818734910502 |
:1057A000B4F480917907E82FFF27EE0FFF1FE65B27 |
:1057B000F84F808191810190F081E02DF7FF03C0C7 |
:1057C000F095E195FF4FE734F1050CF47AC041E024 |
:1057D00020917907A22FBB27AA0FBB1FA65BB84F4A |
:1057E0008D919C9111978734910544F0E32FFF2709 |
:1057F000EE0FFF1FE65BF84F808191818D919C91A8 |
:105800008734910574F080917807E82FFF27EE0F19 |
:10581000FF1FE65BF84F80819181873491050CF082 |
:1058200042E0E22FFF27EE0FFF1FE65BF84F80817B |
:1058300091818634910574F480917807E82FFF27D1 |
:10584000EE0FFF1FE65BF84F808191818734910551 |
:105850000CF043E0E22FFF27EE0FFF1FE65BF84F4F |
:10586000808191818A5B9F4F74F480917807E82F43 |
:10587000FF27EE0FFF1FE65BF84F80819181873491 |
:1058800091050CF044E0E22FFF27EE0FFF1FE65BCF |
:10589000F84F808191818A5B9F4F74F480917807E3 |
:1058A000E82FFF27EE0FFF1FE65BF84F8081918105 |
:1058B000863491050CF445E0A2E0B0E0042E0E948D |
:1058C000A74780917907E82FFF27EE0FFF1FE65BC0 |
:1058D000F84F808191810190F081E02DF7FF03C0A6 |
:1058E000F095E195FF4F7497BCF480917807E82F0D |
:1058F000FF27EE0FFF1FE65BF84F808191818A5BE7 |
:105900009F4F54F481E08093470688EE93E0909394 |
:10591000D4038093D303ABC00E94B20243E568E78F |
:1059200077E00E9484028091800780FF10C0809100 |
:10593000110390911203875B934038F48091110317 |
:10594000909112038E5E924010F40E941E0F0E94EE |
:10595000542586C080819181855B9F4F0CF085C066 |
:105960008091C4048F5F8093C404893C08F47FC095 |
:105970003C3010F4299801C0299AA4E0B0E08FEFE0 |
:10598000082E0E94A74710922F041092C404109270 |
:105990000C0410920B040E945425A4E0B0E0809106 |
:1059A00092049091930497FF02C081509F4F892FDA |
:1059B000990F990B082E0E94A747A5E0B0E08091AF |
:1059C000920490919304082E0E94A747A6E0B0E0AD |
:1059D000809190049091910497FF02C081509F4F55 |
:1059E000892F990F990B082E0E94A747A7E0B0E0D6 |
:1059F0008091900490919104082E0E94A74708E09E |
:105A000010E080918A0490918B04A0918C04B09155 |
:105A10008D04BC01CD010E943146DC01CB019C010B |
:105A200097FF02C021503F4F832F992787FD9A95FA |
:105A3000D801082E0E94A74709E010E080918A044F |
:105A400090918B04A0918C04B0918D04BC01CD0188 |
:105A50000E943146DC01CB01D801082E0E94A747E5 |
:105A60000E94B2020E943C1D02C02093C404809197 |
:105A70007A07E82FFF27EE0FFF1FE65BF84F8081C4 |
:105A800091818B5A9F4F0CF0BAC020917B07E22F77 |
:105A9000FF27EE0FFF1FE65BF84F80819181855B4A |
:105AA0009F4F0CF072C08091C5048F5F8093C50436 |
:105AB000893C08F46CC088EC8093C50481E090E0D8 |
:105AC00090930C0480930B0481E080932F04109238 |
:105AD000AE041092AF041092B0041092B104109270 |
:105AE00054041092550410925604109257041092C8 |
:105AF00050041092510410925204109253041092C8 |
:105B00006404109265041092660410926704109267 |
:105B10005C0410925D0410925E0410925F04809108 |
:105B2000840490918504A0918604B09187048093A9 |
:105B3000600490936104A0936204B0936304809125 |
:105B40007C0490917D04A0917E04B0917F048093A9 |
:105B5000580490935904A0935A04B0935B04109294 |
:105B6000A6041092A7041092A8041092A9041092FF |
:105B7000AA041092AB041092AC041092AD04809170 |
:105B80000A04886080930A0402C01092C504E22FC0 |
:105B9000FF27EE0FFF1FE65BF84F808191818C3469 |
:105BA00091055CF180917807E82FFF27EE0FFF1F2A |
:105BB000E65BF84F808191818C349105F4F08091FF |
:105BC0007907E82FFF27EE0FFF1FE65BF84F808174 |
:105BD0009181855B9F4F8CF48091C6048F5F809389 |
:105BE000C604893C60F010922F0488EC8093C604B0 |
:105BF00010920C0410920B0402C01092C604809103 |
:105C00007403815080937403809174038F3F29F053 |
:105C100080914504882309F4F1C30E9444278091B0 |
:105C2000D3049091D404AC01440F551F480F591F61 |
:105C3000F0907807AF2DBB27AA0FBB1FFD01E65BD5 |
:105C4000F84FE0908707CE2CDD24808191818C9DD8 |
:105C500080018D9D100D9C9D100D1124400F511F32 |
:105C600057FF02C04D5F5F4F559547955595479536 |
:105C7000A05AB84F80918807682F77278D919C9103 |
:105C8000869F9001879F300D969F300D1124420F03 |
:105C9000531F5093D4044093D3048091FB049091FC |
:105CA000FC042091F7043091F804820F931F481BE5 |
:105CB000590B50933704409336048091D50490914A |
:105CC000D604AC01440F551F480F591F00917907A6 |
:105CD000A02FBB27AA0FBB1FFD01E65BF84F8081F9 |
:105CE00091818C9DF0018D9DF00D9C9DF00D1124F6 |
:105CF0004E0F5F1F57FF02C04D5F5F4F5595479591 |
:105D000055954795A05AB84F8D919C91869F9001CB |
:105D1000879F300D969F300D1124420F531F5093D3 |
:105D2000D6044093D5048091F9049091FA0420910F |
:105D3000F5043091F604820F931F481B590B5093C2 |
:105D400035044093340480917B07E82FFF27EE0F42 |
:105D5000FF1FE65BF84F80819181909581959F4F61 |
:105D6000909333048093320480917A07E82FFF27C1 |
:105D7000EE0FFF1FE65BF84F8081918188589F4F9F |
:105D8000909331048093300410917D03812F9927E3 |
:105D900087FD9095A92FB92FBC01CD010E944E46D9 |
:105DA00017FF06C020E030E040E853E40E94A94518 |
:105DB00020E030E040E251E40E94A945DC01CB0143 |
:105DC00020E030E040E85CE3BC01CD010E94C84621 |
:105DD000DC01CB018093050890930608A093070887 |
:105DE000B093080810917C03812F992787FD909527 |
:105DF000A92FB92FBC01CD010E944E4617FF06C046 |
:105E000020E030E040E853E40E94A94520E030EE75 |
:105E10004BE256E40E94EB45DC01CB018093F30793 |
:105E20009093F407A093F507B093F6076091B5033C |
:105E3000662331F08AE090E09093D4038093D303FB |
:105E4000462F552742FF09C080911108282F33277C |
:105E5000220F331F220F331F13C09A012870307096 |
:105E600043FF0EC080911108282F33278CEF9FEF3E |
:105E7000289FA001299F500D389F500D11249A0191 |
:105E80008091150490911604AC01F3E0440F551F66 |
:105E9000FA95E1F7481B590B420F531F57FF02C0F9 |
:105EA000495F5F4FE3E055954795EA95E1F75093D9 |
:105EB000160440931504462F552744FF09C08091CE |
:105EC0001108282F3327220F331F220F331F13C02F |
:105ED0009A012072307045FF0EC080911108282F62 |
:105EE00033278CEF9FEF289FD001299FB00D389F5B |
:105EF000B00D11249D018091130490911404AC0104 |
:105F000063E0440F551F6A95E1F7481B590B420F98 |
:105F1000531F57FF02C0495F5F4F83E05595479578 |
:105F20008A95E1F750931404409313044091B4030D |
:105F3000842F992783FF03C082E390E007C09C0170 |
:105F40002470307082FF07C08EEC9FEF9093120494 |
:105F50008093110404C03093120420931104242F61 |
:105F6000332721FF09C08091750390917603019634 |
:105F7000909376038093750324FF09C08091750385 |
:105F800090917603019790937603809375038091A7 |
:105F900015049091160497FD019695958795E091CB |
:105FA0003604F0913704E80FF91FF0933704E093BB |
:105FB0003604809113049091140497FD01969595F1 |
:105FC00087956091340470913504680F791F709340 |
:105FD0003504609334048091110490911204880F69 |
:105FE000991F880F991F4091320450913304480F34 |
:105FF000591F50933304409332048091530680FF1D |
:1060000059C080911108813808F454C080914C0621 |
:10601000992787FD90952E2D3327829FD001839F4E |
:10602000B00D929FB00D1124EA0FFB1FF0933704BF |
:10603000E093360480914D06992787FD9095829FC5 |
:10604000F001839FF00D929FF00D11246E0F7F1FC2 |
:10605000709335046093340480914E06992787FD30 |
:106060009095480F591F5093330440933204809108 |
:106070005006282F332727FD3095809185079927D3 |
:10608000289FA001299F500D389F500D1124509337 |
:1060900076034093750380914F06282F3327809114 |
:1060A0003004909131042817390724F430933104D7 |
:1060B00020933004809130049091310497FF04C004 |
:1060C00010923104109230048091800782FF0CC03E |
:1060D00080E090E0A0E0B0E08093F3079093F407B5 |
:1060E000A093F507B093F6078091050890910608F4 |
:1060F000A0910708B091080820E030E040E050E0AF |
:10610000BC01CD010E945846882364F480E090E0F1 |
:10611000A0E0B0E08093050890930608A0930708DC |
:10612000B09308088091F3079091F407A091F507C8 |
:10613000B091F60720E030E040E050E0BC01CD0136 |
:106140000E945846882364F480E090E0A0E0B0E02C |
:106150008093F3079093F407A093F507B093F607A5 |
:106160004091360450913704CA0157FD03969C01B3 |
:10617000359527953595279537FF03C0309521959F |
:106180003F4F80910F049091100482179307B4F44D |
:10619000CA0157FF03C0909581959F4F97FD0396C5 |
:1061A00095958795959587959093100480930F0406 |
:1061B0008536910544F084E690E001C00197909304 |
:1061C000100480930F044091340450913504CA01A7 |
:1061D00057FD03969C01359527953595279537FFF3 |
:1061E00003C0309521953F4F80910D0490910E048E |
:1061F00082179307B4F4CA0157FF03C090958195A5 |
:106200009F4F97FD039695958795959587959093C4 |
:106210000E0480930D048536910544F084E690E0E9 |
:1062200001C0019790930E0480930D048091450462 |
:10623000882341F01092100410920F0410920E0463 |
:1062400010920D04E02FFF27EE0FFF1FE65BF84FC3 |
:1062500040919F07242F3327808191812817390788 |
:1062600044F48091B90782FF04C081E08093240444 |
:1062700013C0E02FFF27EE0FFF1FE65BF84F842FC0 |
:1062800099272091A007821B91092081318128172D |
:10629000390714F41092240440917907E42FFF2762 |
:1062A000EE0FFF1FE65BF84F50919F07852F992750 |
:1062B00022273327281B390B80819181821793076E |
:1062C00044F48091B90783FF04C081E080932304E4 |
:1062D00016C080912304882391F0E42FFF27EE0F4E |
:1062E000FF1FE65BF84F8091A0079927851B910956 |
:1062F000208131818217930714F410922304EF2D2B |
:10630000FF27EE0FFF1FE65BF84F40919F07242FFA |
:106310003327808191812817390744F48091B90788 |
:1063200080FF04C081E08093210417C08091210484 |
:10633000882399F0EF2DFF27EE0FFF1FE65BF84F44 |
:10634000842F99272091A007821B910920813181F8 |
:106350002817390714F41092210440917807E42F8C |
:10636000FF27EE0FFF1FE65BF84F50919F07852F29 |
:10637000992722273327281B390B80819181821787 |
:10638000930744F48091B90781FF04C081E08093B2 |
:10639000220416C080912204882391F0E42FFF2765 |
:1063A000EE0FFF1FE65BF84F8091A0079927851B32 |
:1063B0009109208131818217930714F410922204ED |
:1063C00080912404882319F480912304811181E0B1 |
:1063D0008093250480912104882321F48091220454 |
:1063E000882351F081E080932604109225041092B6 |
:1063F00024041092230402C0809326048091250473 |
:10640000882321F480912604882351F080919E07EF |
:106410009927A981BA818A179B0714F49A838983E3 |
:10642000B0914504BB83BB2341F110923304109219 |
:1064300032041092370410923604109235041092F0 |
:10644000340480E090E0A8ECBFE3809305089093CB |
:106450000608A0930708B09308088BE09CEBA2E322 |
:10646000BCE38093F3079093F407A093F507B093F0 |
:10647000F60710922504109226048091E607909169 |
:10648000E707A091E807B091E907209184043091D3 |
:1064900085044091860450918704820F931FA41FA6 |
:1064A000B51F8093E6079093E707A093E807B093A2 |
:1064B000E9078091ED079091EE07A091EF07B09169 |
:1064C000F00760907C0470907D0480907E04909032 |
:1064D0007F04860D971DA81DB91D8093ED0790932D |
:1064E000EE07A093EF07B093F0078091DE0790913D |
:1064F000DF07A091E007B091E107E0908004F09001 |
:1065000081040091820410918304EC82FD820E8349 |
:106510001F838E0D9F1DA01FB11F8093DE079093D8 |
:10652000DF07A093E007B093E1078091D307909134 |
:10653000D407A091D507B091D607E0907804F090E9 |
:10654000790400917A0410917B04E886F9860A8721 |
:106550001B878E0D9F1DA01FB11F8093D3079093A3 |
:10656000D407A093D507B093D607509026045520A2 |
:1065700029F480912504882309F45FC010927404E3 |
:1065800010927504109276041092770410927004A1 |
:106590001092710410927204109273041092E60724 |
:1065A0001092E7071092E8071092E9071092ED07A2 |
:1065B0001092EE071092EF071092F0071092DE078C |
:1065C0001092DF071092E0071092E1071092D307B4 |
:1065D0001092D4071092D5071092D60780916404C8 |
:1065E00090916504A0916604B09167048093600463 |
:1065F00090936104A0936204B093630480915C045F |
:1066000090915D04A0915E04B0915F048093580462 |
:1066100090935904A0935A04B0935B041092E10341 |
:106620001092E003109228041092270410922A047A |
:1066300010922904552009F0FDC08091250488237B |
:1066400009F0F8C080918C07E82EFF24002711275D |
:10665000CA01B901A80197010E94844759016A0142 |
:106660008091FC079091FD07AA2797FDA095BA2F6E |
:10667000A81AB90ACA0ADB0AC401B301A801970122 |
:106680000E94844779018A0180910E0890910F0839 |
:10669000AA2797FDA095BA2FE81AF90A0A0B1B0B37 |
:1066A000D601C501D7FE03C00F96A11DB11D5C0127 |
:1066B0006D0154E0D594C794B794A7945A95D1F737 |
:1066C000D801C70117FF03C00F96A11DB11D7C01A2 |
:1066D0008D0144E015950795F794E7944A95D1F715 |
:1066E00080910F0490911004813491053CF48091C5 |
:1066F0000D0490910E0481349105A4F0C601B501FA |
:1067000023E030E040E050E00E94844759016A01F4 |
:10671000C801B70123E030E040E050E00E94844728 |
:1067200079018A0180917B07E82FFF27EE0FFF1F79 |
:10673000E65BF84F808191810190F081E02DF7FFB9 |
:1067400003C0F095E195FF4F7A97A4F0C601B5011B |
:1067500023E030E040E050E00E94844759016A01A4 |
:10676000C801B70123E030E040E050E00E948447D8 |
:1067700079018A0121E2A216B104C104D1042CF0EE |
:1067800030E2A32EB12CC12CD12C30EEA3163FEF5A |
:10679000B3063FEFC3063FEFD30644F420EEA22E2C |
:1067A0002FEFB22E2FEFC22E2FEFD22E41E2E416A2 |
:1067B000F104010511052CF090E2E92EF12C012DD8 |
:1067C000112D50EEE5165FEFF5065FEF05075FEF61 |
:1067D000150744F480EEE82E8FEFF82E8FEF082F88 |
:1067E0008FEF182F8091640490916504A091660446 |
:1067F000B09167048A199B09AC09BD0980936404B0 |
:1068000090936504A0936604B093670480915C0440 |
:1068100090915D04A0915E04B0915F048E199F0970 |
:10682000A00BB10B80935C0490935D04A0935E0475 |
:10683000B0935F048091E0039091E1038F3F910555 |
:1068400009F008F488C5552009F005C58091250494 |
:10685000882309F000C580914304882309F0FBC414 |
:106860008091E6079091E707A091E807B091E907CA |
:10687000B7FF04C081509F4FAF4FBF4F292E3A2E14 |
:106880004B2E552447FC5A942092E6073092E70796 |
:106890004092E8075092E9078091ED079091EE074A |
:1068A000A091EF07B091F007B7FF04C081509F4F50 |
:1068B000AF4FBF4F892F9A2FAB2FBB27A7FDBA959C |
:1068C0008C879D87AE87BF878093ED079093EE07F7 |
:1068D000A093EF07B093F00780918C07E82EFF2478 |
:1068E000002711272091740430917504409176049B |
:1068F00050917704C801B7010E94104797FF04C068 |
:1069000061507F4F8F4F9F4FA72EB82EC92EDD2489 |
:10691000C7FCDA94A0927404B0927504C092760415 |
:10692000D0927704209170043091710440917204E8 |
:1069300050917304C801B7010E94104797FF04C02B |
:1069400061507F4F8F4F9F4F672E782E892E99244D |
:1069500087FC9A9460927004709271048092720421 |
:106960009092730480916C0490916D04A0916E04D8 |
:10697000B0916F04B7FF04C081509F4FAF4FBF4F1E |
:10698000892F9A2FAB2FBB27A7FDBA9580936C0454 |
:1069900090936D04A0936E04B0936F04D201C10173 |
:1069A0008A199B09AC09BD098093BA049093BB0472 |
:1069B000A093BC04B093BD042091A507E22EFF2450 |
:1069C00000271127BC01CD01A80197010E9484472F |
:1069D00059016A012093CB043093CC044093CD0439 |
:1069E0005093CE048C859D85AE85BF858619970909 |
:1069F000A809B9098093BE049093BF04A093C00472 |
:106A0000B093C104BC01CD01A80197010E94844745 |
:106A10002093CF043093D0044093D1045093D204F8 |
:106A2000D601C501D7FE04C081509F4FAF4FBF4F65 |
:106A3000892F9A2FAB2FBB27A7FDBA9590932804D7 |
:106A40008093270457FF04C021503F4F4F4F5F4FA3 |
:106A5000BB2757FDBA95A52F942F832F90932A0417 |
:106A60008093290480910F04909110048134910542 |
:106A7000DCF480910D0490910E0481349105A4F40E |
:106A800080917B07E82FFF27EE0FFF1FE65BF84F93 |
:106A9000808191810190F081E02DF7FF03C0F09596 |
:106AA000E195FF4F7A97C4F08091270490912804D4 |
:106AB00097FD0196959587959093280480932704D8 |
:106AC0008091290490912A0497FD019695958795C8 |
:106AD00090932A04809329048091DE079091DF0728 |
:106AE000A091E007B091E107B7FF04C081509F4F2C |
:106AF000AF4FBF4F892F9A2FAB2FBB27A7FDBA955A |
:106B00008093DE079093DF07A093E007B093E1073F |
:106B10008091D3079091D407A091D507B091D60763 |
:106B2000B7FF04C081509F4FAF4FBF4F892F9A2F9F |
:106B3000AB2FBB27A7FDBA958093D3079093D407BB |
:106B4000A093D507B093D6078091840490918504D3 |
:106B5000A0918604B0918704EC80FD800E811F8196 |
:106B6000E81AF90A0A0B1B0BE092B204F092B30484 |
:106B70000093B4041093B50480917C0490917D043B |
:106B8000A0917E04B0917F04288539854A855B8574 |
:106B9000281B390B4A0B5B0B2093B6043093B704C8 |
:106BA0004093B8045093B904E092BA04F092BB0445 |
:106BB0000093BC041093BD042093BE043093BF0423 |
:106BC0004093C0045093C10480916004909161048B |
:106BD000A0916204B09163048E199F09A00BB10BC0 |
:106BE0008093600490936104A0936204B093630463 |
:106BF0008091580490915904A0915A04B0915B047B |
:106C0000821B930BA40BB50B8093580490935904EB |
:106C1000A0935A04B0935B04209141043091420444 |
:106C20002138310594F0809198049091990401964F |
:106C300090939904809398048091F1079091F207C2 |
:106C400001969093F2078093F10720583F4F94F4F8 |
:106C5000809198049091990401979093990480935E |
:106C600098048091F1079091F20701979093F207B1 |
:106C70008093F107A090ED07B090EE07C090EF076A |
:106C8000D090F007C601B5012AE130E040E050E0C5 |
:106C90000E94844730931B0720931A0710924204E6 |
:106CA0001092410481E090E09093D8048093D7043F |
:106CB0008091DD049091DE04A091DF04B091E004A6 |
:106CC0002091E6073091E7074091E8075091E907E6 |
:106CD000821B930BA40BB50B815E914BAF4FBF4F43 |
:106CE0008F539C49A040B04008F0FEC0F1E0EF1681 |
:106CF000F0E1FF06F0E00F07F0E01F070CF46CC0B6 |
:106D00008091D904882309F463C0D801C70117FF13 |
:106D100007C088279927DC018E199F09A00BB10BAA |
:106D2000B7FF04C08150904FAF4FBF4F2CE0B595D7 |
:106D3000A795979587952A95D1F701969093D804B2 |
:106D40008093D704D801C70117FF03C00796A11D80 |
:106D5000B11D13E0B595A795979587951A95D1F72D |
:106D60008093CB049093CC04A093CD04B093CE0435 |
:106D700089589341A040B04064F088E893E1A0E0D6 |
:106D8000B0E08093CB049093CC04A093CD04B09357 |
:106D9000CE042091CB043091CC044091CD0450918D |
:106DA000CE0457FF04C021503F4F4F4F5F4F232F5A |
:106DB000342F452F552747FD5A95809127049091F0 |
:106DC0002804820F931F909328048093270406C001 |
:106DD00081E08093D90402C01092D904E090BA04F3 |
:106DE000F090BB040091BC041091BD0420E0E216B9 |
:106DF00020EFF2062FEF02072FEF12070CF071C001 |
:106E00008091DA04882309F468C0A801970117FF6C |
:106E100007C022273327A9012E193F09400B510B28 |
:106E200057FF04C02150304F4F4F5F4FECE0559556 |
:106E3000479537952795EA95D1F78091D70490919A |
:106E4000D804820F931F9093D8048093D704D8015D |
:106E5000C70117FF03C00796A11DB11D73E0B595CB |
:106E6000A795979587957A95D1F78093CB049093C2 |
:106E7000CC04A093CD04B093CE0488579C4EAF4F62 |
:106E8000BF4F64F488E79CEEAFEFBFEF8093CB0475 |
:106E90009093CC04A093CD04B093CE042091CB0466 |
:106EA0003091CC044091CD045091CE0457FF04C0E2 |
:106EB00021503F4F4F4F5F4F232F342F452F5527E2 |
:106EC00047FD5A958091270490912804820F931FC3 |
:106ED000909328048093270411C081E08093DA0402 |
:106EE0000DC01092DA040AC01092D8041092D70490 |
:106EF00088EE93E09093900380938F031091A60700 |
:106F0000212F33278091D7049091D804281739076F |
:106F100024F43093D8042093D7044091BA045091BC |
:106F2000BB046091BC047091BD04413084E05807FB |
:106F300080E0680780E0780774F080919C0490916D |
:106F40009D042091D7043091D804820F931F909311 |
:106F50009D0480939C0440505C4F6F4F7F4F74F4AE |
:106F600080919C0490919D042091D7043091D80485 |
:106F7000821B930B90939D0480939C0481E090E08E |
:106F80009093D8048093D7041092CF041092D00429 |
:106F90001092D1041092D2048091E1049091E20405 |
:106FA000A091E304B091E4048A199B09AC09BD09DE |
:106FB000815E914BAF4FBF4F8F539C49A040B04073 |
:106FC00008F000C1C090BE04D090BF04E090C0049F |
:106FD000F090C104F1E0CF16F0E1DF06F0E0EF063B |
:106FE000F0E0FF060CF46CC08091DB04882309F408 |
:106FF00063C0D701C601F7FE07C088279927DC01C7 |
:107000008C199D09AE09BF09B7FF04C08150904F8C |
:10701000AF4FBF4F3CE0B595A795979587953A95AB |
:10702000D1F701969093D8048093D704D701C60175 |
:10703000F7FE03C00796A11DB11D23E0B595A795E6 |
:10704000979587952A95D1F78093CF049093D00494 |
:10705000A093D104B093D20489589341A040B0408A |
:1070600064F088E893E1A0E0B0E08093CF049093CF |
:10707000D004A093D104B093D2042091CF043091D6 |
:10708000D0044091D1045091D20457FF04C0215044 |
:107090003F4F4F4F5F4F232F342F452F552747FD2D |
:1070A0005A958091290490912A04820F931F9093FE |
:1070B0002A048093290406C081E08093DB0402C087 |
:1070C0001092DB0420E0C21620EFD2062FEFE2067A |
:1070D0002FEFF2060CF073C08091DC04882309F4D2 |
:1070E0006AC0D701C601F7FE07C088279927DC01CF |
:1070F0008C199D09AE09BF099C01AD01B7FF04C001 |
:107100002150304F4F4F5F4F8CE055954795379545 |
:1071100027958A95D1F78091D7049091D804820F52 |
:10712000931F9093D8048093D704D701C601F7FE2C |
:1071300003C00796A11DB11D03E0B595A7959795CE |
:1071400087950A95D1F78093CF049093D004A093AC |
:10715000D104B093D20488579C4EAF4FBF4F64F414 |
:1071600088E79CEEAFEFBFEF8093CF049093D004FD |
:10717000A093D104B093D2042091CF043091D004D5 |
:107180004091D1045091D20457FF04C021503F4F89 |
:107190004F4F5F4F232F342F452F552747FD5A95CB |
:1071A0008091290490912A04820F931F90932A04BE |
:1071B0008093290411C081E08093DC040DC01092FB |
:1071C000DC040AC01092D8041092D70488EE93E031 |
:1071D0009093900380938F03212F33278091D704BE |
:1071E0009091D8042817390724F43093D8042093B9 |
:1071F000D7044091BE045091BF046091C0047091C7 |
:10720000C104413084E0580780E0680780E07807D7 |
:1072100074F080919A0490919B042091D70430914E |
:10722000D804820F931F90939B0480939A0440503C |
:107230005C4F6F4F7F4FCCF480919A0490919B04E8 |
:107240002091D7043091D804821B930B90939B0418 |
:1072500080939A040AC010922A0410922904109272 |
:10726000280410922704109243048091F307909110 |
:10727000F407A091F507B091F60720E030E040E078 |
:1072800050E0BC01CD010E945846882341F4109281 |
:107290002A04109229041092280410922704809145 |
:1072A000E6079091E707A091E807B091E90780937E |
:1072B000DD049093DE04A093DF04B093E00480919A |
:1072C000ED079091EE07A091EF07B091F007809342 |
:1072D000E1049093E204A093E304B093E4041092D9 |
:1072E0007404109275041092760410927704109230 |
:1072F0007004109271041092720410927304109230 |
:107300006C0410926D0410926E0410926F0410922F |
:10731000E6071092E7071092E8071092E90710922B |
:10732000ED071092EE071092EF071092F0071092FF |
:10733000DE071092DF071092E0071092E10710922B |
:10734000D3071092D4071092D5071092D607109247 |
:10735000E1031092E003A0903204B0903304C50121 |
:10736000B7FE04C0882799278A199B0940976CF0BB |
:1073700088EE93E09093900380938F038091800731 |
:1073800084FD03C081E08093CA04D0908907ED2C6E |
:10739000FF2400271127B501882777FD8095982FB6 |
:1073A0009501B7FE04C0222733272A193B09442739 |
:1073B00037FD4095542F0E9410479B01AC01C80136 |
:1073C000B7010E94104797FF04C061507E4F8F4F56 |
:1073D0009F4FE9E09595879577956795EA95D1F761 |
:1073E0009B018D2D99278A9DD0018B9DB00D9A9D73 |
:1073F000B00D1124CD01B7FD039695958795959510 |
:107400008795280F391F442737FD4095542F209327 |
:10741000AE043093AF044093B0045093B104809114 |
:10742000540490915504A0915604B0915704821BC6 |
:10743000930BA40BB50B8093540490935504A09325 |
:107440005604B09357048155934CA040B04064F06B |
:1074500080E593ECA0E0B0E0809354049093550451 |
:10746000A0935604B093570480915404909155040E |
:10747000A0915604B0915704805B9C43AF4FBF4F1F |
:1074800064F480EB9CE3AFEFBFEF809354049093E0 |
:107490005504A0935604B093570480914A049091E8 |
:1074A0004B04892B09F455C18091800783FF51C19A |
:1074B0008091840490918504A0918604B091870402 |
:1074C000B7FF04C081509E4FAF4FBF4F59E0B595F5 |
:1074D000A795979587955A95D1F76C0197FF04C0AA |
:1074E000D094C194D108D39480917C0490917D0470 |
:1074F000A0917E04B0917F04B7FF04C081509E4FDD |
:10750000AF4FBF4F49E0B595A795979587954A9599 |
:10751000D1F7BC0197FF03C0709561957F4FC616E8 |
:10752000D7060CF46B01B601D7FE02C0695F7F4F2E |
:107530001B0133E0359427943A95E1F70894211C18 |
:10754000311C80914A0490914B04845E9D4F7C01D4 |
:107550000027F7FC0095102F40900A0850900B0868 |
:1075600060900C0870900D08C301B2012EE036E067 |
:1075700040E050E00E94844749015A01E21AF30AB0 |
:10758000040B150BC801B70128E631E040E050E0DC |
:107590000E948447DC01CB019C01245B3040E091D8 |
:1075A0008F03F09190033097F1F409E1C016D104F4 |
:1075B000D4F48091410490914204820F931F9093E0 |
:1075C0004204809341048091CA04882361F088ECCE |
:1075D00090E09093D4038093D303909249048092D7 |
:1075E00048041092CA04C90123E0880F991F2A9504 |
:1075F000E1F7B1010E944F479B01442737FD4095B9 |
:10760000542F240D351D461D571D20930A08309315 |
:107610000B0840930C0850930D0810917E03612FC6 |
:107620007727C69EC001C79E900DD69E900D11244F |
:1076300097FD4F966C0185E0D594C7948A95E1F744 |
:107640006C197D096B0177FD7EC0309709F075C01C |
:10765000E0900F04F090100480910D0490910E04BE |
:10766000E80EF91EF7FE04C087E090E0E80EF91E70 |
:1076700003E0F594E7940A95E1F7A0E4B0E0EA0EA0 |
:10768000FB1ECA01B9012EE036E040E050E00E9446 |
:107690008447DA01C9012091480430914904442704 |
:1076A00037FD4095542F821B930BA40BB50B845EC2 |
:1076B0009D4FAF4FBF4FBC01CD0128E631E040E008 |
:1076C00050E00E948447DC01CB01845B90408C9D9C |
:1076D000F0018D9DF00D9C9DF00D1124CF01B7019F |
:1076E0000E944F4783E0189F60011124C616D706F9 |
:1076F00014F4B60108C0882799278C199D096817CA |
:1077000079070CF4BC019B01442737FD4095542FA9 |
:107710008091540490915504A0915604B09157045F |
:10772000820F931FA41FB51F809354049093550498 |
:10773000A0935604B09357040CC03197F093900374 |
:10774000E0938F0306C084EF91E0909390038093C1 |
:107750008F038091C90481508093C9048F3F09F041 |
:10776000B0C088E18093C90480918C07E82EFF2483 |
:10777000002711278091840490918504A0918604AC |
:10778000B0918704BC01CD01A80197010E948447F4 |
:107790003093EF062093EE0680917C0490917D0457 |
:1077A000A0917E04B0917F04BC01CD01A801970196 |
:1077B0000E9484473093F1062093F0068091FC07E5 |
:1077C0009091FD079093F3068093F20680910E0846 |
:1077D00090910F089093F5068093F406809100082D |
:1077E000909101089093F7068093F60680912D04FE |
:1077F00090912E049093F9068093F80680914C04A2 |
:1078000090914D04A0914E04B0914F04B7FF04C075 |
:1078100081509E4FAF4FBF4F19E0B595A7959795F3 |
:1078200087951A95D1F79093FB068093FA0680917D |
:107830004A0490914B049093FF068093FE0680913A |
:10784000170390911803909301078093000780918C |
:107850000A0890910B08A0910C08B0910D08BC018A |
:10786000CD012EE036E040E050E00E9484473093A6 |
:107870000507209304078091380499279093030704 |
:10788000809302078091470699279093150780936C |
:1078900014078091D0039091D103909317078093A0 |
:1078A00016078091FB049091FC0490932B07809322 |
:1078B0002A078091F9049091FA0490932D07809300 |
:1078C0002C0780912604A0900508B0900608C0906F |
:1078D0000708D09008088823A9F08091D9079091D3 |
:1078E000DA07AA2797FDA095BA2FBC01CD010E9407 |
:1078F0004E46DC01CB01A6019501BC01CD010E94E1 |
:10790000C8463AC08091840490918504A091860471 |
:10791000B0918704BC01CD010E944E467B018C01D1 |
:107920008091F3079091F407A091F507B091F607C5 |
:107930009C01AD01C801B7010E94C8467B018C01C2 |
:107940008091D9079091DA07AA2797FDA095BA2FC1 |
:10795000BC01CD010E944E46DC01CB01A601950180 |
:10796000BC01CD010E94C846DC01CB019C01AD01E8 |
:10797000C801B7010E94A945DC01CB01BC01CD01C2 |
:107980000E943146DC01CB019093DA078093D9073E |
:1079900080912504A0900508B0900608C0900708C3 |
:1079A000D09008088823A9F08091CD079091CE0748 |
:1079B000AA2797FDA095BA2FBC01CD010E944E4683 |
:1079C000DC01CB01A6019501BC01CD010E94C84696 |
:1079D0003AC080917C0490917D04A0917E04B09186 |
:1079E0007F04BC01CD010E944E467B018C01809139 |
:1079F000F3079091F407A091F507B091F6079C0169 |
:107A0000AD01C801B7010E94C8467B018C0180917D |
:107A1000CD079091CE07AA2797FDA095BA2FBC015C |
:107A2000CD010E944E46DC01CB01A6019501BC01AF |
:107A3000CD010E94C846DC01CB019C01AD01C8010B |
:107A4000B7010E94A945DC01CB01BC01CD010E9418 |
:107A50003146DC01CB019093CE078093CD07809116 |
:107A6000000890910108AA2797FDA095BA2FBC01A4 |
:107A7000CD010E944E467B018C01809105089091BA |
:107A80000608A0910708B09108089C01AD01BC014F |
:107A9000CD010E94A945DC01CB019C01AD01C801CB |
:107AA000B7010E94C8467B018C01809168049091C7 |
:107AB0006904A0916A04B0916B04BC01CD010E94DD |
:107AC0004E46DC01CB014090F3075090F4076090E4 |
:107AD000F5077090F607A3019201BC01CD010E9449 |
:107AE000C846DC01CB0120E030E040E05FE3BC01B0 |
:107AF000CD010E94C846DC01CB019C01AD01C8014B |
:107B0000B7010E94A945DC01CB01BC01CD010E9457 |
:107B10003146DC01CB0190930108809300088091ED |
:107B2000D9079091DA0790931907809318078091ED |
:107B3000CD079091CE0790931B0780931A078091F1 |
:107B4000D9079091DA078150904434F080E090E4B6 |
:107B50009093DA078093D9078091D9079091DA073B |
:107B60008050904C34F480E090EC9093DA0780934E |
:107B7000D9078091CD079091CE078150904434F081 |
:107B800080E090E49093CE078093CD078091CD075D |
:107B90009091CE078050904C34F480E090EC90931C |
:107BA000CE078093CD078091000890910108815005 |
:107BB000904434F080E090E49093010880930008B2 |
:107BC00080910008909101088050904C34F480E03E |
:107BD00090EC909301088093000889819A81880F26 |
:107BE000991F880F991F9A8389838091800799270D |
:107BF00080FFF0C02091810381FF0EC0223310F579 |
:107C000080912D0490912E04449790932C0480939E |
:107C10002B041092440419C080917503909176034F |
:107C2000820F911D209185073327829FD001839F6A |
:107C3000B00D929FB00D1124CD01449790932C0468 |
:107C400080932B0481E080934404BB81BB2321F00B |
:107C500010922C0410922B0400912D0410912E04EC |
:107C600020912B0430912C04201731070CF0B2C066 |
:107C700080914404882309F4ADC0021B130B80914A |
:107C800080039927089FF001099FF00D189FF00DC0 |
:107C90001124CF01F7FD03968C01159507951595D5 |
:107CA0000795E980FA80E01AF10A87018091E203E2 |
:107CB0009091E30397FD019695958795081B190B05 |
:107CC000C0904C04D0904D04E0904E04F0904F04CE |
:107CD000F7FE08C02FE730E040E050E0C20ED31EB0 |
:107CE000E41EF51E67E0F594E794D794C7946A956F |
:107CF000D1F780917F03282F332744275527C701C9 |
:107D0000B6010E94104797FF04C0615E7F4F8F4FFE |
:107D10009F4F55E095958795779567955A95D1F73B |
:107D200031E0693173071CF068E171E006C04EEF85 |
:107D3000683E740714F468EE7EEF061B170B809103 |
:107D4000C7049091C8049C0144E0220F331F4A9558 |
:107D5000E1F7281B390B200F311F37FF02C0215FCD |
:107D60003F4F14E0359527951A95E1F73093C804F5 |
:107D70002093C70480918107482F5527440F551F32 |
:107D8000440F551F2417350794F489819A8184176D |
:107D9000950724F05093C8044093C704A981BA8181 |
:107DA000A417B50724F4B093C804A093C704809126 |
:107DB000C7049091C804E981FA81E817F90724F40F |
:107DC000F093C804E093C704E090C704F090C8049F |
:107DD000FA82E9823090FF07832D9927880F991F37 |
:107DE000880F991F8055904009811A81801791074B |
:107DF00014F49A83898329813A813093FD06209374 |
:107E0000FC068091AE049091AF04A091B004B091B3 |
:107E1000B104F2E0880F991FAA1FBB1FFA95D1F792 |
:107E20008090000890900108881A990A213A31053B |
:107E30008CF0C90137FD01969595879588159905B0 |
:107E40000CF44C01909581959F4F8816990694F4F7 |
:107E50004C0110C031E5831691041CF070E5872EAB |
:107E6000912C40EB84164FEF940624F460EB862EA1 |
:107E70006FEF962E232D3327220F331F220F331F30 |
:107E8000C901A981BA818A1B9B0B881599050CF43D |
:107E90004C01E981FA81E21BF30B8E169F060CF46C |
:107EA0004F018091D9079091DA07E0903604F09065 |
:107EB0003704FD8AEC8A8E199F099093E507809319 |
:107EC000E40720E030E040E050E0C301B2010E944E |
:107ED00058462091A6043091A7044091A8045091DF |
:107EE000A904882309F448C0CA01B9010E944E467A |
:107EF0005B016C018091840490918504A0918604BB |
:107F0000B0918704BC01CD010E944E46DC01CB013B |
:107F1000A3019201BC01CD010E94C8467B018C01E6 |
:107F20002C893D89C901AA2797FDA095BA2FBC01CC |
:107F3000CD010E944E46DC01CB019C01AD01C80180 |
:107F4000B7010E94A845DC01CB019C01AD01C6012F |
:107F5000B5010E94A945DC01CB01BC01CD010E9405 |
:107F60003146DC01CB018093A6049093A704A09333 |
:107F7000A804B093A90414C08091E4079091E50788 |
:107F8000AA2797FDA095BA2F280F391F4A1F5B1FFC |
:107F90002093A6043093A7044093A8045093A90407 |
:107FA0008091A6049091A704A091A804B091A9047F |
:107FB00081509A4FA040B04064F080E09AEFA0E07A |
:107FC000B0E08093A6049093A704A093A804B09374 |
:107FD000A9048091A6049091A704A091A804B0914F |
:107FE000A90480509640AF4FBF4F64F480E096E004 |
:107FF000AFEFBFEF8093A6049093A704A093A804CB |
:10800000B093A9048091E4079091E507AA2797FD12 |
:10801000A095BA2FBC01CD010E944E467B018C0178 |
:108020008091A6049091A704A091A804B091A904FE |
:10803000BC01CD010E944E46DC01CB01209183039F |
:10804000309184034091850350918603288B398BAE |
:108050004A8B5B8B9C01AD01688979898A899B89F0 |
:108060000E94C846DC01CB019C01AD01C801B701EB |
:108070000E94A945DC01CB01BC01CD010E94314623 |
:10808000DC01CB018C0120907703622D77278827B4 |
:108090009927940197FE04C022273327281939090C |
:1080A00037FF02C02F5F3F4F3595279549815A8191 |
:1080B000240F351F442737FD4095542F0E94104749 |
:1080C00097FF04C0615C7F4F8F4F9F4F26E09595CF |
:1080D0008795779567952A95D1F79B01601771076A |
:1080E0000CF48B01309521953F4F021713070CF4C8 |
:1080F000890129813A81200F311F280D391DC901BD |
:1081000037FD03969C01359527953595279537FFC3 |
:1081100003C020E030E006C0832D99278217930723 |
:108120000CF49C013090DC07832D99272817390720 |
:108130000CF49C012093CF0729813A81201B310B3D |
:10814000280D391DC90137FD03969C0135952795EA |
:108150003595279537FF03C020E030E007C08091B8 |
:10816000FF079927821793070CF49C01832D992709 |
:10817000281739070CF49C012093D8078091CD076C |
:108180009091CE07A0913404B0913504BD8BAC8B97 |
:108190008A1B9B0B9093CC078093CB0720E030E0A9 |
:1081A00040E050E0C301B2010E9458462091AA0469 |
:1081B0003091AB044091AC045091AD04882309F494 |
:1081C00048C0CA01B9010E944E465B016C01809112 |
:1081D0007C0490917D04A0917E04B0917F04BC0149 |
:1081E000CD010E944E46DC01CB01A3019201BC01EE |
:1081F000CD010E94C8467B018C01EC89FD89CF012D |
:10820000AA2797FDA095BA2FBC01CD010E944E462A |
:10821000DC01CB019C01AD01C801B7010E94A8455A |
:10822000DC01CB019C01AD01C601B5010E94A9454D |
:10823000DC01CB01BC01CD010E943146DC01CB0148 |
:108240008093AA049093AB04A093AC04B093AD04C4 |
:1082500014C08091CB079091CC07AA2797FDA095D9 |
:10826000BA2F280F391F4A1F5B1F2093AA0430938F |
:10827000AB044093AC045093AD048091AA04909158 |
:10828000AB04A091AC04B091AD0481509A4FA040D2 |
:10829000B04064F080E09AEFA0E0B0E08093AA04E0 |
:1082A0009093AB04A093AC04B093AD048091AA0466 |
:1082B0009091AB04A091AC04B091AD048050964075 |
:1082C000AF4FBF4F64F480E096E0AFEFBFEF809315 |
:1082D000AA049093AB04A093AC04B093AD04809136 |
:1082E000CB079091CC07AA2797FDA095BA2FBC0188 |
:1082F000CD010E944E467B018C018091AA04909191 |
:10830000AB04A091AC04B091AD04BC01CD010E94BE |
:108310004E46DC01CB019C01AD01688979898A89CF |
:108320009B890E94C846DC01CB019C01AD01C801BC |
:10833000B7010E94A945DC01CB01BC01CD010E941F |
:108340003146DC01CB018C01622D772788279927E4 |
:10835000940197FE04C0222733272819390937FFD3 |
:1083600002C02F5F3F4F3595279549815A81240FD1 |
:10837000351F442737FD4095542F0E94104797FF23 |
:1083800004C0615C7F4F8F4F9F4FF6E095958795B6 |
:1083900077956795FA95D1F79B01601771070CF4F3 |
:1083A0008B01309521953F4F021713070CF489017B |
:1083B00029813A81200F311F28193909C90137FD58 |
:1083C00003969C01359527953595279537FF03C072 |
:1083D00020E030E007C08091FF07992782179307BC |
:1083E0000CF49C01832D9927281739070CF49C0164 |
:1083F0002093F90729813A81201B310B281939096B |
:10840000C90137FD03969C0135952795359527952C |
:1084100037FF03C020E030E007C08091FF079927B5 |
:10842000821793070CF49C01832D9927281739078D |
:108430000CF49C012093F70765960FB6F894DEBF05 |
:108440000FBECDBFDF91CF911F910F91FF90EF90A5 |
:10845000DF90CF90BF90AF909F908F907F906F9064 |
:108460005F904F903F902F9008958091F1049091EC |
:10847000F204A091F304B091F4048093E904909382 |
:10848000EA04A093EB04B093EC048091ED04909186 |
:10849000EE04A091EF04B091F0048093E504909372 |
:1084A000E604A093E704B093E80408951092FC0456 |
:1084B0001092FB041092FA041092F904089584B10A |
:1084C000806A84B93D9A82E58CBD1DBC459A81E0E5 |
:1084D000809314088AEA8093180883E88093190827 |
:1084E0008AE080931A0810921C0810921B081092C0 |
:1084F0001E0810921D0810923A080895F894809171 |
:10850000840490918504A0918604B0918704BC01F5 |
:10851000CD012CE630E040E050E00E9484473093EB |
:108520001C0820931B0880917C0490917D04A091ED |
:108530007E04B0917F04BC01CD012CE630E040E028 |
:1085400050E00E94844730931E0820931D088091BC |
:108550000A0890910B08A0910C08B0910D08BC017D |
:10856000CD012EE036E040E050E00E948447309399 |
:10857000240820932308E0918E04F0918F048091C9 |
:10858000EA079091EB07BF010E944F472CE030E0D3 |
:10859000629FA001639F500D729F500D1124509354 |
:1085A000200840931F088091030890910408BF01A0 |
:1085B0000E944F47629FA001639F500D729F500D14 |
:1085C0001124509322084093210810928F04109296 |
:1085D0008E041092EB071092EA0710920408109292 |
:1085E000030880911A0899278B30910509F468C017 |
:1085F0008C3091051CF40A9741F0E4C08C30910551 |
:1086000009F4D7C00D97D1F1DDC08091200480938B |
:108610002B0880911F0480932C0880911E04809366 |
:108620002D0880911D0480932E0880911C04809356 |
:108630002F0880911B048093300880911A04809346 |
:108640003108809119048093320880910A04809344 |
:108650003308837F80930A04809117039091180355 |
:10866000809334088091900780933508A2E0B0E0B1 |
:108670000E949F47802D80933608A4C08091D70721 |
:1086800080932B088091100880932C088091D0074C |
:1086900080932D088091DB0780932E08809113082A |
:1086A00080932F088091DD07809330088091B60772 |
:1086B000809331088091B707809332088FE076C0AD |
:1086C00080917A07E82FFF27EE0FFF1FE65BF84F38 |
:1086D0000190F081E02DE038F1051CF0EFE7F0E0CB |
:1086E00006C05FEFE138F50714F4E1E8FFEFE0932F |
:1086F0002B0880917B07E82FFF27EE0FFF1FE65B1B |
:10870000F84F0190F081E02DE038F1051CF0EFE723 |
:10871000F0E006C06FEFE138F60714F4E1E8FFEF90 |
:10872000E0932C0880917907E82FFF27EE0FFF1FB9 |
:10873000E65BF84F0190F081E02DE038F1051CF088 |
:10874000EFE7F0E006C08FEFE138F80714F4E1E856 |
:10875000FFEFE0932D0880917807E82FFF27EE0FB9 |
:10876000FF1FE65BF84F0190F081E02DE038F10546 |
:108770001CF0EFE7F0E006C02FEFE138F20714F449 |
:10878000E1E8FFEFE0932E0880913F0480932F08EB |
:1087900080913D048093300880913B0480933108A0 |
:1087A0008091390480933208809138048093330893 |
:1087B00009C080914706863018F01092470685E080 |
:1087C00080932B08789480913A08882309F456C046 |
:1087D00040913C0850913D08CA0181509E4F8F5FE7 |
:1087E0009340B0F420913E0830913F08C901815078 |
:1087F0009E4F8F5F934060F48091800785FF08C093 |
:108800005093FC044093FB043093FA042093F90442 |
:10881000809142089091430821E08936920724F420 |
:1088200090934B0480934A0480914A0490914B04A6 |
:108830002091480430914904821B930B845E9D4F24 |
:1088400068E671E00E944F47845B90409093470434 |
:108850008093460480914608282F33278091D303C4 |
:108860009091D4038217930788F480914706882358 |
:1088700069F43093D4032093D30308951092FC0439 |
:108880001092FB041092FA041092F904089580915A |
:108890001408882309F43BC0459888E198E0909338 |
:1088A0001608809315089091FD04E92FFF27E455E1 |
:1088B000FC4F9F5F9093FD04808180931A08953050 |
:1088C00010F01092FD04109214080E947E4281E084 |
:1088D0008093170800000000000000000000000066 |
:1088E0000000000000000000000000000000000088 |
:1088F0000000000000000000000000000000000078 |
:108900000000000080911808809337088EBD0895FC |
:1089100030911408332309F085C00DB407FE82C0DE |
:1089200084E08093D203459A2EB58091FF04992765 |
:108930008130910589F0823091051CF4892B21F05A |
:108940003EC00297B9F03BC0309339082093000530 |
:108950002138A9F581E008C0253549F4809100054A |
:10896000820F8093000582E08093FF0428C030933B |
:10897000FF0425C080913908E82FFF27EC5AF74FF4 |
:1089800020838F5F80933908909100058931A0F092 |
:10899000291769F4ABE3B8E0E4E5F8E089E1019078 |
:1089A0000D928150E1F781E080933A0802C0309344 |
:1089B0003A081092FF0403C0920F90930005209193 |
:1089C0001708203208F028C0459800000000000079 |
:1089D0000000000000000000000000000000000097 |
:1089E0000000000000000000000000000000000087 |
:1089F00000000000000000000000E0911508F09168 |
:108A00001608E20FF11D80818EBD8091370890819C |
:108A1000890F8093370803C081E0809314082F5F8B |
:108A200020931708089587B18C6087B942984398BE |
:108A30001092020580E88093B203109201058093A2 |
:108A4000B1030895809107058150809307058F3FFA |
:108A500009F070C084E0809307059091AD079B3FBB |
:108A600048F08091EC07873E28F08091AC0788237E |
:108A70003CF128C09B3F48F08091EC078A3028F4F5 |
:108A80008091AC078823F4F01BC0809102058150CF |
:108A9000809302058F3FB9F48091EC078150809359 |
:108AA00002058091B203813011F480E801C08695FF |
:108AB0008093B2038091B2039091AC07892311F0A7 |
:108AC000429A01C042989091AF079B3F48F0809135 |
:108AD000FE07873E28F08091AE07882344F10AC044 |
:108AE0009B3F50F08091FE078A3030F48091AE07B2 |
:108AF00087FF1DC0439808958091010581508093A0 |
:108B000001058F3FB9F48091FE07815080930105E4 |
:108B10008091B103813011F480E801C08695809383 |
:108B2000B1038091B1039091AE07892311F0439A6C |
:108B3000089543980895FC014150504030F0019051 |
:108B40000616D1F73197CF01089588279927089500 |
:108B50005058192EEFD001D0D2C0BA176207730750 |
:108B600084079507B1F188F40EF410940B2EBA2FF8 |
:108B7000A02D062E622F202D072E732F302D082EAC |
:108B8000842F402D092E952F502DFF275523B9F006 |
:108B9000591B49F0573E98F0469537952795A7956C |
:108BA000F0405395C9F776F0BA0F621F731F841F08 |
:108BB00030F4879577956795B795F040939517FAB8 |
:108BC0000F2E0895BF1BBB27BA0B620B730B840BD0 |
:108BD000F6CFDEF6DBC0AED001D091C0552359F000 |
:108BE000992369F09F575F57951B33F442F49038EF |
:108BF00011F4915805C09BC091589F3F09F4C6C01D |
:108C0000BB27112462177307840730F4660F771FA0 |
:108C1000881FBB1F915098F311D00F920FD00F9265 |
:108C20000DD0A0E82617370748071B0609F0A04813 |
:108C3000BA2F602D7F918F9100240895A0E8002421 |
:108C4000621773078407B10528F0621B730B840B4E |
:108C5000B1090A2A660F771F881FBB1FA69581F7E7 |
:108C6000089597FB73D09F3738F0FEE9F91B982FD2 |
:108C7000872F762F6B2F05C086C0969587957795A1 |
:108C80006795F150D0F73EF4909580957095619579 |
:108C90007F4F8F4F9F4F0895E89403C097FB0EF4CA |
:108CA000F3DFB62F672F782F892F9EE9002427C086 |
:108CB0000ED05EF004C00BD026F001C008D019F031 |
:108CC00020F48FEF089580E0089581E0089597FBE8 |
:108CD000092E052600F8689430D0E89407FC07C0F8 |
:108CE000621773078407950721F008F4009407942E |
:108CF000989408959A95BB0F661F771F881F1124BB |
:108D00009923A1F08823B2F79F3F59F0BB0F48F495 |
:108D100021F4002011F460FF04C06F5F7F4F8F4F7C |
:108D20009F4F881F9795879597F908952CC09FEFBF |
:108D300080EC0895052E092607FA440F551F5F3F62 |
:108D400079F0AA27A51708F051E04795880F991FD9 |
:108D50009F3F31F0BB27B91708F091E08795089540 |
:108D60009F919F911124E3CF97FB880F991F9F3FFD |
:108D700031F0BB27B91708F091E0879508959F91CE |
:108D80009F911124D4CF66277727882799270895A4 |
:108D9000D1DF01D0B4CF992339F0552329F09F5763 |
:108DA0005F57950F13F49AF1F1CF91589F3FE1F37C |
:108DB000629FA12D0F92BB27639FA00DB11DEE27CF |
:108DC000729FA00DB11DEE1FAF93AA27649FB00D37 |
:108DD000E11D739FB00DE11DAA1F6627829FB00D94 |
:108DE000E11DA61F5527749FE00DA11D551F839FF0 |
:108DF000E00DA11D561F849FA00D511D852F7A2FB8 |
:108E00006E2F1F900F9088231AF4939539F48FCF0B |
:108E1000000C111CBB1F661F771F881F01280895B7 |
:108E2000629FD001739FF001829FE00DF11D649F4E |
:108E3000E00DF11D929FF00D839FF00D749FF00DDA |
:108E4000659FF00D9927729FB00DE11DF91F639F7B |
:108E5000B00DE11DF91FBD01CF0111240895991B2B |
:108E600079E004C0991F961708F0961B881F7A9521 |
:108E7000C9F780950895AA1BBB1B51E107C0AA1F23 |
:108E8000BB1FA617B70710F0A61BB70B881F991FAB |
:108E90005A95A9F780959095BC01CD01089597FB4F |
:108EA000092E07260AD077FD04D0E5DF06D0002082 |
:108EB0001AF4709561957F4F0895F6F79095819516 |
:108EC0009F4F0895A1E21A2EAA1BBB1BFD010DC0E6 |
:108ED000AA1FBB1FEE1FFF1FA217B307E407F5076A |
:108EE00020F0A21BB30BE40BF50B661F771F881F46 |
:108EF000991F1A9469F760957095809590959B01DC |
:108F0000AC01BD01CF01089597FB092E05260ED0B7 |
:108F100057FD04D0D7DF0AD0001C38F45095409597 |
:108F2000309521953F4F4F4F5F4F0895F6F790953D |
:108F30008095709561957F4F8F4F9F4F0895F99958 |
:108F4000FECFB2BDA1BDF89A119600B40895F9996B |
:108F5000FECFB2BDA1BD00BC11960FB6F894FA9A2F |
:068F6000F99A0FBE08950E |
:108F6600010A01496E74656772616C4E69636B2014 |
:108F7600202020496E74656772616C526F6C6C209C |
:108F86002020204163634E69636B2020202020202F |
:108F9600202020416363526F6C6C2020202020200B |
:108FA6002020204779726F47696572202020202093 |
:108FB600202020486F6568656E57657274202020F2 |
:108FC6002020204163635A202020202020202020BA |
:108FD60020202047617320202020202020202020D0 |
:108FE6002020204B6F6D7061737356616C75652020 |
:108FF6002020205370616E6E756E67202020202021 |
:10900600202020456D7066616E672020202020207C |
:1090160020202045727361747A6B6F6D7061737373 |
:109026002020204D6F746F725F566F726E65202020 |
:109036002020204D6F746F725F48696E74656E20D4 |
:109046002020204D6F746F725F4C696E6B73202009 |
:109056002020204D6F746F725F52656368747320B1 |
:1090660020202020202020202020202020202020FA |
:1090760020202044697374616E63652020202020BF |
:109086002020204F7364426172202020202020205F |
:109096002020204D4B334D61672043616C53746132 |
:1090A600746520536572766F2020202020202020B2 |
:1090B6002020204E69636B202020202020202020A5 |
:1090C600202020526F6C6C20202020202020202081 |
:1090D600202020202020202020202020202020208A |
:1090E600202020202020202020202020202020207A |
:1090F600202020202020202020202020202020206A |
:109106002020202020202020202020202020202059 |
:109116002020202020202020202020202020202049 |
:109126002020202020202020202020202020202039 |
:109136002020202020202020202020202020202029 |
:109146002020204750535F4E69636B20202020204B |
:109156002020204750535F526F6C6C202020202027 |
:1091660020202064FF01FFFF280001806400737344 |
:1091760073FF03007D0000640048616C6C6F20572C |
:10918600656C740000000000000000000000000094 |
:1091960000000000000000000000000000000000C9 |
:1091A60000000000000000000000000000000000B9 |
:1091B60000000000000000000000000000000000A9 |
:1091C600000000000000000000010203040506077D |
:1091D60008090A0B01ECFF6446640A029696403AB7 |
:1091E60010FB3017B7D13890D0030090D00300F4AD |
:1091F60001640053706F727400004E6F726D616C83 |
:109206000000426567696E6E657200000A0B0D0B01 |
:049216000C01010046 |
:00000001FF |
/branches/V0.70_safer_engine_stop/Hex-Files/WasIstWas.txt |
---|
0,0 → 1,15 |
+++++++++++++++++++++++++ |
+ Flight-Ctrl: |
+++++++++++++++++++++++++ |
BootLoader_MEGA644_20MHZ_V0_1.hex |
Der Bootloader wird per ISP eingespielt |
Der Bootloader nur dann eingespielt werden, wenn noch nie ein Bootloader eingespielt wurde! |
Danach können Softwareupdates seriell eingespielt werden. |
Flight-Ctrl_MEGA644_Vx_yy.hex |
Aktuelle Firmware |
Wird per serielle Schnittstelle (durch den Bootloader) eingespielt |
Flight-Ctrl SW > 0.62 benötigt das Kopter-Tool >1.47 |
/branches/V0.70_safer_engine_stop/Kopter-Tool/MikroKopter-Tool.exe |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/V0.70_safer_engine_stop/License.txt |
---|
0,0 → 1,52 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + 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 und nichtkommerziellen Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt und genannt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-profit use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet, our webpage (http://www.MikroKopter.de) must be |
// + clearly linked and named as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
/branches/V0.70_safer_engine_stop/Settings.h |
---|
--- _Settings.h (nonexistent) |
+++ _Settings.h (revision 990) |
@@ -0,0 +1,44 @@ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Abstimmung |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define ACC_AMPLIFY 12 |
+#define FAKTOR_P 1 |
+#define FAKTOR_I 0.0001 |
+ |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Debug-Interface |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define SIO_DEBUG 1 // Soll der Debugger aktiviert sein? |
+#define MIN_DEBUG_INTERVALL 250 // in diesem Intervall werden Degugdaten ohne Aufforderung gesendet |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Sender |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ #define K_NICK 0 |
+ #define K_ROLL 1 |
+ #define K_GAS 2 |
+ #define K_GIER 3 |
+ #define K_POTI1 4 |
+ #define K_POTI2 5 |
+ #define K_POTI3 6 |
+ #define K_POTI4 7 |
+// +++++++++++++++++++++++++++++++ |
+// + Getestete Settings: |
+// +++++++++++++++++++++++++++++++ |
+// Setting: Kamera |
+// Stick_P:3 |
+// Stick_D:0 |
+// Gyro_P: 175 |
+// Gyro_I: 175 |
+// Ki_Anteil: 10 |
+// +++++++++++++++++++++++++++++++ |
+// + Getestete Settings: |
+// +++++++++++++++++++++++++++++++ |
+// Setting: Normal |
+// Stick_P:2 |
+// Stick_D:8 |
+// Gyro_P: 80 |
+// Gyro_I: 150 |
+// Ki_Anteil: 5 |
+ |
/branches/V0.70_safer_engine_stop/analog.c |
---|
0,0 → 1,181 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az, UBat = 100; |
volatile int AdWertNick = 0, AdWertRoll = 0, AdWertGier = 0; |
volatile int AdWertAccRoll = 0,AdWertAccNick = 0,AdWertAccHoch = 0; |
volatile char MessanzahlNick = 0, MessanzahlRoll = 0, MessanzahlGier = 0; |
volatile char messanzahl_AccNick = 0, messanzahl_AccRoll = 0, messanzahl_AccHoch = 0; |
volatile long Luftdruck = 32000; |
volatile int StartLuftdruck; |
volatile unsigned int MessLuftdruck = 1023; |
unsigned char DruckOffsetSetting; |
volatile int HoeheD = 0; |
volatile char messanzahl_Druck; |
volatile int tmpLuftdruck; |
volatile unsigned int ZaehlMessungen = 0; |
unsigned char AnalogOffsetNick = 115,AnalogOffsetRoll = 115,AnalogOffsetGier = 115; |
unsigned char GyroDefektN = 0,GyroDefektR = 0,GyroDefektG = 0; |
//####################################################################################### |
// |
void ADC_Init(void) |
//####################################################################################### |
{ |
ADMUX = 0;//Referenz ist extern |
ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE); |
//Free Running Mode, Division Factor 128, Interrupt on |
} |
void SucheLuftruckOffset(void) |
{ |
unsigned int off; |
off = eeprom_read_byte(&EEPromArray[EEPROM_ADR_LAST_OFFSET]); |
if(off > 20) off -= 10; |
OCR0A = off; |
Delay_ms_Mess(100); |
if(MessLuftdruck < 850) off = 0; |
for(; off < 250;off++) |
{ |
OCR0A = off; |
Delay_ms_Mess(50); |
printf("."); |
if(MessLuftdruck < 900) break; |
} |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_LAST_OFFSET], off); |
DruckOffsetSetting = off; |
Delay_ms_Mess(300); |
} |
void SucheGyroOffset(void) |
{ |
unsigned char i, ready = 0; |
GyroDefektN = 0; GyroDefektR = 0; GyroDefektG = 0; |
for(i=140; i != 0; i--) |
{ |
if(ready == 3 && i > 10) i = 9; |
ready = 0; |
if(AdWertNick < 1020) AnalogOffsetNick--; else if(AdWertNick > 1030) AnalogOffsetNick++; else ready++; |
if(AdWertRoll < 1020) AnalogOffsetRoll--; else if(AdWertRoll > 1030) AnalogOffsetRoll++; else ready++; |
if(AdWertGier < 1020) AnalogOffsetGier--; else if(AdWertGier > 1030) AnalogOffsetGier++; else ready++; |
twi_state = 8; |
i2c_start(); |
if(AnalogOffsetNick < 10) { GyroDefektN = 1; AnalogOffsetNick = 10;}; if(AnalogOffsetNick > 245) { GyroDefektN = 1; AnalogOffsetNick = 245;}; |
if(AnalogOffsetRoll < 10) { GyroDefektR = 1; AnalogOffsetRoll = 10;}; if(AnalogOffsetRoll > 245) { GyroDefektR = 1; AnalogOffsetRoll = 245;}; |
if(AnalogOffsetGier < 10) { GyroDefektG = 1; AnalogOffsetGier = 10;}; if(AnalogOffsetGier > 245) { GyroDefektG = 1; AnalogOffsetGier = 245;}; |
while(twi_state); |
messanzahl_Druck = 0; |
ANALOG_ON; |
while(messanzahl_Druck == 0); |
if(i<10) Delay_ms_Mess(10); |
} |
Delay_ms_Mess(70); |
} |
//####################################################################################### |
// |
SIGNAL(SIG_ADC) |
//####################################################################################### |
{ |
static unsigned char kanal=0,state = 0; |
static unsigned int gier1, roll1, nick1; |
ANALOG_OFF; |
switch(state++) |
{ |
case 0: |
gier1 = ADC; |
kanal = 1; |
ZaehlMessungen++; |
break; |
case 1: |
roll1 = ADC; |
kanal = 2; |
break; |
case 2: |
nick1 = ADC; |
kanal = 4; |
break; |
case 3: |
UBat = (3 * UBat + ADC / 3) / 4;//(UBat + ((ADC * 39) / 256) + 19) / 2; |
kanal = 6; |
break; |
case 4: |
Aktuell_ay = NeutralAccY - ADC; |
AdWertAccRoll = Aktuell_ay; |
kanal = 7; |
break; |
case 5: |
Aktuell_ax = ADC - NeutralAccX; |
AdWertAccNick = Aktuell_ax; |
kanal = 0; |
break; |
case 6: |
if(PlatinenVersion == 10) AdWertGier = (ADC + gier1) / 2; |
else AdWertGier = ADC + gier1; |
kanal = 1; |
break; |
case 7: |
if(PlatinenVersion == 10) AdWertRoll = (ADC + roll1) / 2; |
else AdWertRoll = ADC + roll1; |
kanal = 2; |
break; |
case 8: |
if(PlatinenVersion == 10) AdWertNick = (ADC + nick1) / 2; |
else AdWertNick = ADC + nick1; |
//AdWertNick = 0; |
//AdWertNick += Poti2; |
kanal = 5; |
break; |
case 9: |
AdWertAccHoch = (signed int) ADC - NeutralAccZ; |
// AdWertAccHoch += abs(Aktuell_ay) / 4 + abs(Aktuell_ax) / 4; |
if(AdWertAccHoch > 1) |
{ |
if(NeutralAccZ < 750) |
{ |
NeutralAccZ += 0.02; |
if(modell_fliegt < 500) NeutralAccZ += 0.1; |
} |
} |
else if(AdWertAccHoch < -1) |
{ |
if(NeutralAccZ > 550) |
{ |
NeutralAccZ-= 0.02; |
if(modell_fliegt < 500) NeutralAccZ -= 0.1; |
} |
} |
messanzahl_AccHoch = 1; |
Aktuell_az = ADC; |
Mess_Integral_Hoch += AdWertAccHoch; // Integrieren |
Mess_Integral_Hoch -= Mess_Integral_Hoch / 1024; // dämfen |
kanal = 3; |
break; |
case 10: |
tmpLuftdruck += ADC; |
if(++messanzahl_Druck >= 5) |
{ |
MessLuftdruck = ADC; |
messanzahl_Druck = 0; |
HoeheD = (7 * HoeheD + (int) Parameter_Luftdruck_D * (int)(StartLuftdruck - tmpLuftdruck - HoehenWert))/8; // D-Anteil = neuerWert - AlterWert |
Luftdruck = (tmpLuftdruck + 3 * Luftdruck) / 4; |
HoehenWert = StartLuftdruck - Luftdruck; |
tmpLuftdruck = 0; |
} |
kanal = 0; |
state = 0; |
break; |
default: |
kanal = 0; |
state = 0; |
break; |
} |
ADMUX = kanal; |
if(state != 0) ANALOG_ON; |
} |
/branches/V0.70_safer_engine_stop/analog.h |
---|
0,0 → 1,26 |
/*####################################################################################### |
#######################################################################################*/ |
extern volatile int UBat; |
extern volatile int AdWertNick, AdWertRoll, AdWertGier; |
extern volatile int AdWertAccRoll,AdWertAccNick,AdWertAccHoch; |
extern volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az; |
extern volatile long Luftdruck; |
extern volatile char messanzahl_Druck; |
extern volatile unsigned int ZaehlMessungen; |
extern unsigned char DruckOffsetSetting; |
extern volatile int HoeheD; |
extern volatile unsigned int MessLuftdruck; |
extern volatile int StartLuftdruck; |
extern volatile char MessanzahlNick; |
extern unsigned char AnalogOffsetNick,AnalogOffsetRoll,AnalogOffsetGier; |
unsigned int ReadADC(unsigned char adc_input); |
void ADC_Init(void); |
void SucheLuftruckOffset(void); |
void SucheGyroOffset(void); |
#define ANALOG_OFF ADCSRA=0 |
#define ANALOG_ON ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE) |
/branches/V0.70_safer_engine_stop/eeprom.c |
---|
0,0 → 1,218 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Konstanten |
// + 0-250 -> normale Werte |
// + 251 -> Poti1 |
// + 252 -> Poti2 |
// + 253 -> Poti3 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
void DefaultKonstanten1(void) |
{ |
EE_Parameter.Kanalbelegung[K_NICK] = 1; |
EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
EE_Parameter.Kanalbelegung[K_GAS] = 3; |
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 = CFG_ACHSENKOPPLUNG_AKTIV | CFG_KOMPASS_AKTIV | CFG_GPS_AKTIV;//CFG_HOEHEN_SCHALTER |
EE_Parameter.Hoehe_MinGas = 30; |
EE_Parameter.MaxHoehe = 251; // Wert : 0-250 251 -> Poti1 |
EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
EE_Parameter.Luftdruck_D = 30; // Wert : 0-250 |
EE_Parameter.Hoehe_ACC_Wirkung = 30; // Wert : 0-250 |
EE_Parameter.Hoehe_Verstaerkung = 4; // Wert : 0-50 |
EE_Parameter.Stick_P = 15; // Wert : 1-6 |
EE_Parameter.Stick_D = 30; // Wert : 0-64 |
EE_Parameter.Gier_P = 12; // Wert : 1-20 |
EE_Parameter.Gas_Min = 8; // Wert : 0-32 |
EE_Parameter.Gas_Max = 230; // Wert : 33-250 |
EE_Parameter.GyroAccFaktor = 30; // Wert : 1-64 |
EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
EE_Parameter.Gyro_P = 80; // Wert : 0-250 |
EE_Parameter.Gyro_I = 150; // Wert : 0-250 |
EE_Parameter.UnterspannungsWarnung = 94; // Wert : 0-250 |
EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
EE_Parameter.NotGasZeit = 30; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
EE_Parameter.I_Faktor = 32; |
EE_Parameter.UserParam1 = 0; // zur freien Verwendung |
EE_Parameter.UserParam2 = 0; // zur freien Verwendung |
EE_Parameter.UserParam3 = 0; // zur freien Verwendung |
EE_Parameter.UserParam4 = 0; // zur freien Verwendung |
EE_Parameter.UserParam5 = 0; // zur freien Verwendung |
EE_Parameter.UserParam6 = 0; // zur freien Verwendung |
EE_Parameter.UserParam7 = 0; // zur freien Verwendung |
EE_Parameter.UserParam8 = 0; // zur freien Verwendung |
EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickRefresh = 5; |
EE_Parameter.LoopGasLimit = 50; |
EE_Parameter.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag |
EE_Parameter.LoopHysterese = 50; |
EE_Parameter.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
EE_Parameter.AchsKopplung1 = 90; |
EE_Parameter.AchsGegenKopplung1 = 5; |
EE_Parameter.WinkelUmschlagNick = 85; |
EE_Parameter.WinkelUmschlagRoll = 85; |
EE_Parameter.GyroAccAbgleich = 16; // 1/k |
EE_Parameter.Driftkomp = 4; |
EE_Parameter.DynamicStability = 100; |
EE_Parameter.J16Bitmask = 95; |
EE_Parameter.J17Bitmask = 243; |
EE_Parameter.J16Timing = 15; |
EE_Parameter.J17Timing = 15; |
EE_Parameter.NaviGpsModeControl = 253; |
EE_Parameter.NaviGpsGain = 100; |
EE_Parameter.NaviGpsP = 90; |
EE_Parameter.NaviGpsI = 90; |
EE_Parameter.NaviGpsD = 90; |
EE_Parameter.NaviGpsACC = 0; |
EE_Parameter.NaviGpsMinSat = 6; |
EE_Parameter.NaviStickThreshold = 8; |
memcpy(EE_Parameter.Name, "Sport\0", 12); |
} |
void DefaultKonstanten2(void) |
{ |
EE_Parameter.Kanalbelegung[K_NICK] = 1; |
EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
EE_Parameter.Kanalbelegung[K_GAS] = 3; |
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 = CFG_ACHSENKOPPLUNG_AKTIV | CFG_KOMPASS_AKTIV | CFG_GPS_AKTIV;///*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV;//0x01; |
EE_Parameter.Hoehe_MinGas = 30; |
EE_Parameter.MaxHoehe = 251; // Wert : 0-250 251 -> Poti1 |
EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
EE_Parameter.Luftdruck_D = 30; // Wert : 0-250 |
EE_Parameter.Hoehe_ACC_Wirkung = 30; // Wert : 0-250 |
EE_Parameter.Hoehe_Verstaerkung = 3; // Wert : 0-50 |
EE_Parameter.Stick_P = 12; // Wert : 1-6 |
EE_Parameter.Stick_D = 16; // Wert : 0-64 |
EE_Parameter.Gier_P = 6; // Wert : 1-20 |
EE_Parameter.Gas_Min = 8; // Wert : 0-32 |
EE_Parameter.Gas_Max = 230; // Wert : 33-250 |
EE_Parameter.GyroAccFaktor = 30; // Wert : 1-64 |
EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
EE_Parameter.Gyro_P = 80; // Wert : 0-250 |
EE_Parameter.Gyro_I = 120; // Wert : 0-250 |
EE_Parameter.UnterspannungsWarnung = 94; // Wert : 0-250 |
EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
EE_Parameter.NotGasZeit = 30; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
EE_Parameter.I_Faktor = 32; |
EE_Parameter.UserParam1 = 0; // zur freien Verwendung |
EE_Parameter.UserParam2 = 0; // zur freien Verwendung |
EE_Parameter.UserParam3 = 0; // zur freien Verwendung |
EE_Parameter.UserParam4 = 0; // zur freien Verwendung |
EE_Parameter.UserParam5 = 0; // zur freien Verwendung |
EE_Parameter.UserParam6 = 0; // zur freien Verwendung |
EE_Parameter.UserParam7 = 0; // zur freien Verwendung |
EE_Parameter.UserParam8 = 0; // zur freien Verwendung |
EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickRefresh = 5; |
EE_Parameter.LoopGasLimit = 50; |
EE_Parameter.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag |
EE_Parameter.LoopHysterese = 50; |
EE_Parameter.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts |
EE_Parameter.AchsKopplung1 = 90; // Faktor, mit dem Gier die Achsen Roll und Nick verkoppelt |
EE_Parameter.AchsGegenKopplung1 = 5; |
EE_Parameter.WinkelUmschlagNick = 85; |
EE_Parameter.WinkelUmschlagRoll = 85; |
EE_Parameter.GyroAccAbgleich = 32; // 1/k |
EE_Parameter.Driftkomp = 4; |
EE_Parameter.DynamicStability = 75; |
EE_Parameter.J16Bitmask = 95; |
EE_Parameter.J17Bitmask = 243; |
EE_Parameter.J16Timing = 20; |
EE_Parameter.J17Timing = 20; |
EE_Parameter.NaviGpsModeControl = 253; |
EE_Parameter.NaviGpsGain = 100; |
EE_Parameter.NaviGpsP = 90; |
EE_Parameter.NaviGpsI = 90; |
EE_Parameter.NaviGpsD = 90; |
EE_Parameter.NaviGpsACC = 0; |
EE_Parameter.NaviGpsMinSat = 6; |
EE_Parameter.NaviStickThreshold = 8; |
memcpy(EE_Parameter.Name, "Normal\0", 12); |
} |
void DefaultKonstanten3(void) |
{ |
EE_Parameter.Kanalbelegung[K_NICK] = 1; |
EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
EE_Parameter.Kanalbelegung[K_GAS] = 3; |
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 = CFG_DREHRATEN_BEGRENZER | CFG_ACHSENKOPPLUNG_AKTIV | CFG_KOMPASS_AKTIV | CFG_GPS_AKTIV;///*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV;//0x01; |
EE_Parameter.Hoehe_MinGas = 30; |
EE_Parameter.MaxHoehe = 251; // Wert : 0-250 251 -> Poti1 |
EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
EE_Parameter.Luftdruck_D = 30; // Wert : 0-250 |
EE_Parameter.Hoehe_ACC_Wirkung = 30; // Wert : 0-250 |
EE_Parameter.Hoehe_Verstaerkung = 3; // Wert : 0-50 |
EE_Parameter.Stick_P = 8; // Wert : 1-6 |
EE_Parameter.Stick_D = 16; // Wert : 0-64 |
EE_Parameter.Gier_P = 6; // Wert : 1-20 |
EE_Parameter.Gas_Min = 8; // Wert : 0-32 |
EE_Parameter.Gas_Max = 230; // Wert : 33-250 |
EE_Parameter.GyroAccFaktor = 30; // Wert : 1-64 |
EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
EE_Parameter.Gyro_P = 100; // Wert : 0-250 |
EE_Parameter.Gyro_I = 120; // Wert : 0-250 |
EE_Parameter.UnterspannungsWarnung = 94; // Wert : 0-250 |
EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
EE_Parameter.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
EE_Parameter.I_Faktor = 16; |
EE_Parameter.UserParam1 = 0; // zur freien Verwendung |
EE_Parameter.UserParam2 = 0; // zur freien Verwendung |
EE_Parameter.UserParam3 = 0; // zur freien Verwendung |
EE_Parameter.UserParam4 = 0; // zur freien Verwendung |
EE_Parameter.UserParam5 = 0; // zur freien Verwendung |
EE_Parameter.UserParam6 = 0; // zur freien Verwendung |
EE_Parameter.UserParam7 = 0; // zur freien Verwendung |
EE_Parameter.UserParam8 = 0; // zur freien Verwendung |
EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickRefresh = 5; |
EE_Parameter.LoopGasLimit = 50; |
EE_Parameter.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag |
EE_Parameter.LoopHysterese = 50; |
EE_Parameter.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts |
EE_Parameter.AchsKopplung1 = 90; // Faktor, mit dem Gier die Achsen Roll und Nick verkoppelt |
EE_Parameter.AchsGegenKopplung1 = 5; |
EE_Parameter.WinkelUmschlagNick = 85; |
EE_Parameter.WinkelUmschlagRoll = 85; |
EE_Parameter.GyroAccAbgleich = 32; // 1/k |
EE_Parameter.Driftkomp = 4; |
EE_Parameter.DynamicStability = 50; |
EE_Parameter.J16Bitmask = 95; |
EE_Parameter.J17Bitmask = 243; |
EE_Parameter.J16Timing = 30; |
EE_Parameter.J17Timing = 30; |
EE_Parameter.NaviGpsModeControl = 253; |
EE_Parameter.NaviGpsGain = 100; |
EE_Parameter.NaviGpsP = 90; |
EE_Parameter.NaviGpsI = 90; |
EE_Parameter.NaviGpsD = 90; |
EE_Parameter.NaviGpsACC = 0; |
EE_Parameter.NaviGpsMinSat = 6; |
EE_Parameter.NaviStickThreshold = 8; |
memcpy(EE_Parameter.Name, "Beginner\0", 12); |
} |
/branches/V0.70_safer_engine_stop/fc.c |
---|
0,0 → 1,1280 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + 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. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "eeprom.c" |
unsigned char h,m,s; |
volatile unsigned int I2CTimeout = 100; |
volatile int MesswertNick,MesswertRoll,MesswertGier,MesswertGierBias; |
int AdNeutralGierBias; |
int AdNeutralNick = 0,AdNeutralRoll = 0,AdNeutralGier = 0,StartNeutralRoll = 0,StartNeutralNick = 0; |
int Mittelwert_AccNick, Mittelwert_AccRoll,Mittelwert_AccHoch, NeutralAccX=0, NeutralAccY=0; |
int NaviAccNick, NaviAccRoll,NaviCntAcc = 0; |
volatile float NeutralAccZ = 0; |
unsigned char CosinusNickWinkel = 0, CosinusRollWinkel = 0; |
long IntegralNick = 0,IntegralNick2 = 0; |
long IntegralRoll = 0,IntegralRoll2 = 0; |
long IntegralAccNick = 0,IntegralAccRoll = 0,IntegralAccZ = 0; |
long Integral_Gier = 0; |
long Mess_IntegralNick = 0,Mess_IntegralNick2 = 0; |
long Mess_IntegralRoll = 0,Mess_IntegralRoll2 = 0; |
long Mess_Integral_Gier = 0,Mess_Integral_Gier2 = 0; |
long MittelIntegralNick,MittelIntegralRoll,MittelIntegralNick2,MittelIntegralRoll2; |
volatile long Mess_Integral_Hoch = 0; |
volatile int KompassValue = 0; |
volatile int KompassStartwert = 0; |
volatile int KompassRichtung = 0; |
unsigned int KompassSignalSchlecht = 500; |
unsigned char MAX_GAS,MIN_GAS; |
unsigned char Notlandung = 0; |
unsigned char HoehenReglerAktiv = 0; |
unsigned char TrichterFlug = 0; |
long Umschlag180Nick = 250000L, Umschlag180Roll = 250000L; |
long ErsatzKompass; |
int ErsatzKompassInGrad; // Kompasswert in Grad |
int GierGyroFehler = 0; |
float GyroFaktor; |
float IntegralFaktor; |
volatile int DiffNick,DiffRoll; |
int Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0; |
volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count; |
volatile unsigned char SenderOkay = 0; |
int StickNick = 0,StickRoll = 0,StickGier = 0,StickGas = 0; |
char MotorenEin = 0; |
int HoehenWert = 0; |
int SollHoehe = 0; |
int LageKorrekturRoll = 0,LageKorrekturNick = 0; |
float Ki = FAKTOR_I; |
unsigned char Looping_Nick = 0,Looping_Roll = 0; |
unsigned char Looping_Links = 0, Looping_Rechts = 0, Looping_Unten = 0, Looping_Oben = 0; |
unsigned char Parameter_Luftdruck_D = 48; // Wert : 0-250 |
unsigned char Parameter_MaxHoehe = 251; // Wert : 0-250 |
unsigned char Parameter_Hoehe_P = 16; // Wert : 0-32 |
unsigned char Parameter_Hoehe_ACC_Wirkung = 58; // Wert : 0-250 |
unsigned char Parameter_KompassWirkung = 64; // Wert : 0-250 |
unsigned char Parameter_Gyro_P = 150; // Wert : 10-250 |
unsigned char Parameter_Gyro_I = 150; // Wert : 0-250 |
unsigned char Parameter_Gier_P = 2; // Wert : 1-20 |
unsigned char Parameter_I_Faktor = 10; // Wert : 1-20 |
unsigned char Parameter_UserParam1 = 0; |
unsigned char Parameter_UserParam2 = 0; |
unsigned char Parameter_UserParam3 = 0; |
unsigned char Parameter_UserParam4 = 0; |
unsigned char Parameter_UserParam5 = 0; |
unsigned char Parameter_UserParam6 = 0; |
unsigned char Parameter_UserParam7 = 0; |
unsigned char Parameter_UserParam8 = 0; |
unsigned char Parameter_ServoNickControl = 100; |
unsigned char Parameter_LoopGasLimit = 70; |
unsigned char Parameter_AchsKopplung1 = 0; |
unsigned char Parameter_AchsGegenKopplung1 = 0; |
unsigned char Parameter_DynamicStability = 100; |
unsigned char Parameter_J16Bitmask; // for the J16 Output |
unsigned char Parameter_J16Timing; // for the J16 Output |
unsigned char Parameter_J17Bitmask; // for the J17 Output |
unsigned char Parameter_J17Timing; // for the J17 Output |
unsigned char Parameter_NaviGpsModeControl; // Parameters for the Naviboard |
unsigned char Parameter_NaviGpsGain; |
unsigned char Parameter_NaviGpsP; |
unsigned char Parameter_NaviGpsI; |
unsigned char Parameter_NaviGpsD; |
unsigned char Parameter_NaviGpsACC; |
unsigned char Parameter_ExternalControl; |
struct mk_param_struct EE_Parameter; |
signed int ExternStickNick = 0,ExternStickRoll = 0,ExternStickGier = 0, ExternHoehenValue = -20; |
int MaxStickNick = 0,MaxStickRoll = 0; |
unsigned int modell_fliegt = 0; |
unsigned char MikroKopterFlags = 0; |
void Piep(unsigned char Anzahl) |
{ |
while(Anzahl--) |
{ |
if(MotorenEin) return; //auf keinen Fall im Flug! |
beeptime = 100; |
Delay_ms(250); |
} |
} |
//############################################################################ |
// Nullwerte ermitteln |
void SetNeutral(void) |
//############################################################################ |
{ |
NeutralAccX = 0; |
NeutralAccY = 0; |
NeutralAccZ = 0; |
AdNeutralNick = 0; |
AdNeutralRoll = 0; |
AdNeutralGier = 0; |
AdNeutralGierBias = 0; |
Parameter_AchsKopplung1 = 0; |
Parameter_AchsGegenKopplung1 = 0; |
CalibrierMittelwert(); |
Delay_ms_Mess(100); |
CalibrierMittelwert(); |
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
{ |
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
} |
AdNeutralNick= AdWertNick; |
AdNeutralRoll= AdWertRoll; |
AdNeutralGier= AdWertGier; |
AdNeutralGierBias = AdWertGier; |
StartNeutralRoll = AdNeutralRoll; |
StartNeutralNick = AdNeutralNick; |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK]) > 4) |
{ |
NeutralAccY = abs(Mittelwert_AccRoll) / ACC_AMPLIFY; |
NeutralAccX = abs(Mittelwert_AccNick) / ACC_AMPLIFY; |
NeutralAccZ = Aktuell_az; |
} |
else |
{ |
NeutralAccX = (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK]) * 256 + (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK+1]); |
NeutralAccY = (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_ROLL]) * 256 + (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_ROLL+1]); |
NeutralAccZ = (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_Z]) * 256 + (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_Z+1]); |
} |
Mess_IntegralNick = 0; |
Mess_IntegralNick2 = 0; |
Mess_IntegralRoll = 0; |
Mess_IntegralRoll2 = 0; |
Mess_Integral_Gier = 0; |
MesswertNick = 0; |
MesswertRoll = 0; |
MesswertGier = 0; |
Delay_ms_Mess(100); |
StartLuftdruck = Luftdruck; |
HoeheD = 0; |
Mess_Integral_Hoch = 0; |
KompassStartwert = KompassValue; |
GPS_Neutral(); |
beeptime = 50; |
Umschlag180Nick = ((long) EE_Parameter.WinkelUmschlagNick * 2500L) + 15000L; |
Umschlag180Roll = ((long) EE_Parameter.WinkelUmschlagRoll * 2500L) + 15000L; |
ExternHoehenValue = 0; |
ErsatzKompass = KompassValue * GIER_GRAD_FAKTOR; |
GierGyroFehler = 0; |
SendVersionToNavi = 1; |
LED_Init(); |
MikroKopterFlags |= FLAG_CALIBRATE; |
} |
//############################################################################ |
// Bearbeitet die Messwerte |
void Mittelwert(void) |
//############################################################################ |
{ |
static signed long tmpl,tmpl2; |
MesswertGier = (signed int) AdNeutralGier - AdWertGier; |
MesswertGierBias = (signed int) AdNeutralGierBias - AdWertGier; |
MesswertRoll = (signed int) AdWertRoll - AdNeutralRoll; |
MesswertNick = (signed int) AdWertNick - AdNeutralNick; |
//DebugOut.Analog[26] = MesswertNick; |
DebugOut.Analog[28] = MesswertRoll; |
// Beschleunigungssensor ++++++++++++++++++++++++++++++++++++++++++++++++ |
Mittelwert_AccNick = ((long)Mittelwert_AccNick * 1 + ((ACC_AMPLIFY * (long)AdWertAccNick))) / 2L; |
Mittelwert_AccRoll = ((long)Mittelwert_AccRoll * 1 + ((ACC_AMPLIFY * (long)AdWertAccRoll))) / 2L; |
Mittelwert_AccHoch = ((long)Mittelwert_AccHoch * 1 + ((long)AdWertAccHoch)) / 2L; |
IntegralAccNick += ACC_AMPLIFY * AdWertAccNick; |
IntegralAccRoll += ACC_AMPLIFY * AdWertAccRoll; |
NaviAccNick += AdWertAccNick; |
NaviAccRoll += AdWertAccRoll; |
NaviCntAcc++; |
IntegralAccZ += Aktuell_az - NeutralAccZ; |
// Gier ++++++++++++++++++++++++++++++++++++++++++++++++ |
ErsatzKompass += MesswertGier; |
Mess_Integral_Gier += MesswertGier; |
// Mess_Integral_Gier2 += MesswertGier; |
if(ErsatzKompass >= (360L * GIER_GRAD_FAKTOR)) ErsatzKompass -= 360L * GIER_GRAD_FAKTOR; // 360° Umschlag |
if(ErsatzKompass < 0) ErsatzKompass += 360L * GIER_GRAD_FAKTOR; |
// Kopplungsanteil +++++++++++++++++++++++++++++++++++++ |
if(!Looping_Nick && !Looping_Roll && (EE_Parameter.GlobalConfig & CFG_ACHSENKOPPLUNG_AKTIV)) |
{ |
tmpl = (MesswertGierBias * Mess_IntegralNick) / 2048L; |
tmpl *= Parameter_AchsKopplung1; //125 |
tmpl /= 4096L; |
tmpl2 = (MesswertGierBias * Mess_IntegralRoll) / 2048L; |
tmpl2 *= Parameter_AchsKopplung1; |
tmpl2 /= 4096L; |
if(labs(tmpl) > 128 || labs(tmpl2) > 128) TrichterFlug = 1; |
} |
else tmpl = tmpl2 = 0; |
// Roll ++++++++++++++++++++++++++++++++++++++++++++++++ |
MesswertRoll += tmpl; |
MesswertRoll += (tmpl2*Parameter_AchsGegenKopplung1)/512L; //109 |
Mess_IntegralRoll2 += MesswertRoll; |
Mess_IntegralRoll += MesswertRoll - LageKorrekturRoll; |
if(Mess_IntegralRoll > Umschlag180Roll) |
{ |
Mess_IntegralRoll = -(Umschlag180Roll - 25000L); |
Mess_IntegralRoll2 = Mess_IntegralRoll; |
} |
if(Mess_IntegralRoll <-Umschlag180Roll) |
{ |
Mess_IntegralRoll = (Umschlag180Roll - 25000L); |
Mess_IntegralRoll2 = Mess_IntegralRoll; |
} |
if(AdWertRoll < 15) MesswertRoll = -1000; |
if(AdWertRoll < 7) MesswertRoll = -2000; |
if(PlatinenVersion == 10) |
{ |
if(AdWertRoll > 1010) MesswertRoll = +1000; |
if(AdWertRoll > 1017) MesswertRoll = +2000; |
} |
else |
{ |
if(AdWertRoll > 2020) MesswertRoll = +1000; |
if(AdWertRoll > 2034) MesswertRoll = +2000; |
} |
// Nick ++++++++++++++++++++++++++++++++++++++++++++++++ |
MesswertNick -= tmpl2; |
MesswertNick -= (tmpl*Parameter_AchsGegenKopplung1)/512L; |
Mess_IntegralNick2 += MesswertNick; |
Mess_IntegralNick += MesswertNick - LageKorrekturNick; |
if(Mess_IntegralNick > Umschlag180Nick) |
{ |
Mess_IntegralNick = -(Umschlag180Nick - 25000L); |
Mess_IntegralNick2 = Mess_IntegralNick; |
} |
if(Mess_IntegralNick <-Umschlag180Nick) |
{ |
Mess_IntegralNick = (Umschlag180Nick - 25000L); |
Mess_IntegralNick2 = Mess_IntegralNick; |
} |
if(AdWertNick < 15) MesswertNick = -1000; |
if(AdWertNick < 7) MesswertNick = -2000; |
if(PlatinenVersion == 10) |
{ |
if(AdWertNick > 1010) MesswertNick = +1000; |
if(AdWertNick > 1017) MesswertNick = +2000; |
} |
else |
{ |
if(AdWertNick > 2020) MesswertNick = +1000; |
if(AdWertNick > 2034) MesswertNick = +2000; |
} |
//++++++++++++++++++++++++++++++++++++++++++++++++ |
// ADC einschalten |
ANALOG_ON; |
//++++++++++++++++++++++++++++++++++++++++++++++++ |
Integral_Gier = Mess_Integral_Gier; |
IntegralNick = Mess_IntegralNick; |
IntegralRoll = Mess_IntegralRoll; |
IntegralNick2 = Mess_IntegralNick2; |
IntegralRoll2 = Mess_IntegralRoll2; |
if(EE_Parameter.GlobalConfig & CFG_DREHRATEN_BEGRENZER && !Looping_Nick && !Looping_Roll) |
{ |
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); |
} |
if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--; |
if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--; |
if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--; |
if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--; |
if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255; |
if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255; |
if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255; |
if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255; |
} |
//############################################################################ |
// Messwerte beim Ermitteln der Nullage |
void CalibrierMittelwert(void) |
//############################################################################ |
{ |
if(PlatinenVersion >= 13) SucheGyroOffset(); |
// ADC auschalten, damit die Werte sich nicht während der Berechnung ändern |
ANALOG_OFF; |
MesswertNick = AdWertNick; |
MesswertRoll = AdWertRoll; |
MesswertGier = AdWertGier; |
Mittelwert_AccNick = ACC_AMPLIFY * (long)AdWertAccNick; |
Mittelwert_AccRoll = ACC_AMPLIFY * (long)AdWertAccRoll; |
Mittelwert_AccHoch = (long)AdWertAccHoch; |
// ADC einschalten |
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--; |
if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--; |
if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255; |
if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255; |
if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255; |
if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255; |
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L; |
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L; |
} |
//############################################################################ |
// Senden der Motorwerte per I2C-Bus |
void SendMotorData(void) |
//############################################################################ |
{ |
if(!MotorenEin) |
{ |
Motor_Hinten = 0; |
Motor_Vorne = 0; |
Motor_Rechts = 0; |
Motor_Links = 0; |
if(MotorTest[0]) Motor_Vorne = MotorTest[0]; |
if(MotorTest[1]) Motor_Hinten = MotorTest[1]; |
if(MotorTest[2]) Motor_Links = MotorTest[2]; |
if(MotorTest[3]) Motor_Rechts = MotorTest[3]; |
MikroKopterFlags &= ~(FLAG_MOTOR_RUN | FLAG_FLY); |
} else MikroKopterFlags |= FLAG_MOTOR_RUN; |
DebugOut.Analog[12] = Motor_Vorne; |
DebugOut.Analog[13] = Motor_Hinten; |
DebugOut.Analog[14] = Motor_Links; |
DebugOut.Analog[15] = Motor_Rechts; |
//Start I2C Interrupt Mode |
twi_state = 0; |
motor = 0; |
i2c_start(); |
} |
//############################################################################ |
// Trägt ggf. das Poti als Parameter ein |
void ParameterZuordnung(void) |
//############################################################################ |
{ |
#define CHK_POTI_MM(b,a,min,max) { if(a > 250) { if(a == 251) b = Poti1; else if(a == 252) b = Poti2; else if(a == 253) b = Poti3; else if(a == 254) b = Poti4;} else b = a; if(b <= min) b = min; else if(b >= max) b = max;} |
#define CHK_POTI(b,a,min,max) { if(a > 250) { if(a == 251) b = Poti1; else if(a == 252) b = Poti2; else if(a == 253) b = Poti3; else if(a == 254) b = Poti4;} else b = a; } |
CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe,0,255); |
CHK_POTI_MM(Parameter_Luftdruck_D,EE_Parameter.Luftdruck_D,0,100); |
CHK_POTI_MM(Parameter_Hoehe_P,EE_Parameter.Hoehe_P,0,100); |
CHK_POTI(Parameter_Hoehe_ACC_Wirkung,EE_Parameter.Hoehe_ACC_Wirkung,0,255); |
CHK_POTI(Parameter_KompassWirkung,EE_Parameter.KompassWirkung,0,255); |
CHK_POTI_MM(Parameter_Gyro_P,EE_Parameter.Gyro_P,10,255); |
CHK_POTI(Parameter_Gyro_I,EE_Parameter.Gyro_I,0,255); |
CHK_POTI(Parameter_I_Faktor,EE_Parameter.I_Faktor,0,255); |
CHK_POTI(Parameter_UserParam1,EE_Parameter.UserParam1,0,255); |
CHK_POTI(Parameter_UserParam2,EE_Parameter.UserParam2,0,255); |
CHK_POTI(Parameter_UserParam3,EE_Parameter.UserParam3,0,255); |
CHK_POTI(Parameter_UserParam4,EE_Parameter.UserParam4,0,255); |
CHK_POTI(Parameter_UserParam5,EE_Parameter.UserParam5,0,255); |
CHK_POTI(Parameter_UserParam6,EE_Parameter.UserParam6,0,255); |
CHK_POTI(Parameter_UserParam7,EE_Parameter.UserParam7,0,255); |
CHK_POTI(Parameter_UserParam8,EE_Parameter.UserParam8,0,255); |
CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
CHK_POTI(Parameter_LoopGasLimit,EE_Parameter.LoopGasLimit,0,255); |
CHK_POTI(Parameter_AchsKopplung1, EE_Parameter.AchsKopplung1,0,255); |
CHK_POTI(Parameter_AchsGegenKopplung1,EE_Parameter.AchsGegenKopplung1,0,255); |
CHK_POTI(Parameter_DynamicStability,EE_Parameter.DynamicStability,0,255); |
CHK_POTI_MM(Parameter_J16Timing,EE_Parameter.J16Timing,1,255); |
CHK_POTI_MM(Parameter_J17Timing,EE_Parameter.J17Timing,1,255); |
CHK_POTI(Parameter_NaviGpsModeControl,EE_Parameter.NaviGpsModeControl,0,255); |
CHK_POTI(Parameter_NaviGpsGain,EE_Parameter.NaviGpsGain,0,255); |
CHK_POTI(Parameter_NaviGpsP,EE_Parameter.NaviGpsP,0,255); |
CHK_POTI(Parameter_NaviGpsI,EE_Parameter.NaviGpsI,0,255); |
CHK_POTI(Parameter_NaviGpsD,EE_Parameter.NaviGpsD,0,255); |
CHK_POTI(Parameter_NaviGpsACC,EE_Parameter.NaviGpsACC,0,255); |
CHK_POTI(Parameter_ExternalControl,EE_Parameter.ExternalControl,0,255); |
Ki = (float) Parameter_I_Faktor * 0.0001; |
MAX_GAS = EE_Parameter.Gas_Max; |
MIN_GAS = EE_Parameter.Gas_Min; |
} |
//############################################################################ |
// |
void MotorRegler(void) |
//############################################################################ |
{ |
int motorwert,pd_ergebnis,h,tmp_int; |
int GierMischanteil,GasMischanteil; |
static long SummeNick=0,SummeRoll=0; |
static long sollGier = 0,tmp_long,tmp_long2; |
static long IntegralFehlerNick = 0; |
static long IntegralFehlerRoll = 0; |
static unsigned int RcLostTimer; |
static unsigned char delay_neutral = 0; |
static unsigned char delay_einschalten = 0,delay_ausschalten = 0; |
static int hoehenregler = 0; |
static char TimerWerteausgabe = 0; |
static char NeueKompassRichtungMerken = 0; |
static long ausgleichNick, ausgleichRoll; |
Mittelwert(); |
GRN_ON; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gaswert ermitteln |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
GasMischanteil = StickGas; |
if(GasMischanteil < MIN_GAS + 10) GasMischanteil = MIN_GAS + 10; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Empfang schlecht |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(SenderOkay < 100) |
{ |
if(!PcZugriff) |
{ |
if(BeepMuster == 0xffff) |
{ |
beeptime = 15000; |
BeepMuster = 0x0c00; |
} |
} |
if(RcLostTimer) RcLostTimer--; |
else |
{ |
MotorenEin = 0; |
Notlandung = 0; |
} |
ROT_ON; |
if(modell_fliegt > 1000) // wahrscheinlich in der Luft --> langsam absenken |
{ |
GasMischanteil = EE_Parameter.NotGas; |
Notlandung = 1; |
PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] = 0; |
PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] = 0; |
PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] = 0; |
PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] = 0; |
PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] = 0; |
} |
else MotorenEin = 0; |
} |
else |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Emfang gut |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(SenderOkay > 140) |
{ |
Notlandung = 0; |
RcLostTimer = EE_Parameter.NotGasZeit * 50; |
if(GasMischanteil > 40 && MotorenEin) |
{ |
if(modell_fliegt < 0xffff) modell_fliegt++; |
} |
if((modell_fliegt < 256)) |
{ |
SummeNick = 0; |
SummeRoll = 0; |
if(modell_fliegt == 250) |
{ |
NeueKompassRichtungMerken = 1; |
sollGier = 0; |
Mess_Integral_Gier = 0; |
// Mess_Integral_Gier2 = 0; |
} |
} else MikroKopterFlags |= FLAG_FLY; |
if((PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] > 80) && MotorenEin == 0) |
{ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// auf Nullwerte kalibrieren |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) // Neutralwerte |
{ |
if(++delay_neutral > 200) // nicht sofort |
{ |
GRN_OFF; |
MotorenEin = 0; |
delay_neutral = 0; |
modell_fliegt = 0; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70 || abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) > 70) |
{ |
unsigned char setting=1; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 1; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 2; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5; |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], setting); // aktiven Datensatz merken |
} |
// else |
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) < 20 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -70) |
{ |
WinkelOut.CalcState = 1; |
beeptime = 1000; |
} |
else |
{ |
ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
{ |
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
} |
SetNeutral(); |
Piep(GetActiveParamSetNumber()); |
} |
} |
} |
else |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75) // ACC Neutralwerte speichern |
{ |
if(++delay_neutral > 200) // nicht sofort |
{ |
GRN_OFF; |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_NICK],0xff); // Werte löschen |
MotorenEin = 0; |
delay_neutral = 0; |
modell_fliegt = 0; |
SetNeutral(); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_NICK],NeutralAccX / 256); // ACC-NeutralWerte speichern |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_NICK+1],NeutralAccX % 256); // ACC-NeutralWerte speichern |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_ROLL],NeutralAccY / 256); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_ROLL+1],NeutralAccY % 256); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_Z],(int)NeutralAccZ / 256); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_Z+1],(int)NeutralAccZ % 256); |
Piep(GetActiveParamSetNumber()); |
} |
} |
else delay_neutral = 0; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gas ist unten |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] < 35-120) |
{ |
// Starten |
if((PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75)) |
{ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Einschalten |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(++delay_einschalten > 200) |
{ |
delay_einschalten = 200; |
modell_fliegt = 1; |
MotorenEin = 1; |
sollGier = 0; |
Mess_Integral_Gier = 0; |
Mess_Integral_Gier2 = 0; |
Mess_IntegralNick = 0; |
Mess_IntegralRoll = 0; |
Mess_IntegralNick2 = IntegralNick; |
Mess_IntegralRoll2 = IntegralRoll; |
SummeNick = 0; |
SummeRoll = 0; |
MikroKopterFlags |= FLAG_START; |
} |
} |
else delay_einschalten = 0; |
//Auf Neutralwerte setzen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Auschalten |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if((PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75)&&(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 75)&&(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < -75)) |
{ |
if(++delay_ausschalten > 200) // nicht sofort |
{ |
MotorenEin = 0; |
delay_ausschalten = 200; |
modell_fliegt = 0; |
} |
} |
else delay_ausschalten = 0; |
} |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// neue Werte von der Funke |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!NewPpmData-- || Notlandung) |
{ |
int tmp_int; |
static int stick_nick,stick_roll; |
ParameterZuordnung(); |
stick_nick = (stick_nick * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P) / 4; |
stick_nick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D; |
StickNick = stick_nick - (GPS_Nick + GPS_Nick2); |
// StickNick = (StickNick * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P) / 4; |
stick_roll = (stick_roll * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P) / 4; |
stick_roll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D; |
StickRoll = stick_roll - (GPS_Roll + GPS_Roll2); |
// StickRoll = (StickRoll * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P) / 4; |
StickGier = -PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]; |
StickGas = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 120; |
/* if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]]) > MaxStickNick) |
MaxStickNick = abs(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]]); else MaxStickNick--; |
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) > MaxStickRoll) |
MaxStickRoll = abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]); else MaxStickRoll--; |
*/ |
GyroFaktor = ((float)Parameter_Gyro_P + 10.0) / (256.0/STICK_GAIN); |
IntegralFaktor = ((float) Parameter_Gyro_I) / (44000 / STICK_GAIN); |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ Digitale Steuerung per DubWise |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define KEY_VALUE (Parameter_ExternalControl * 4) //(Poti3 * 8) |
if(DubWiseKeys[1]) beeptime = 10; |
if(DubWiseKeys[1] & DUB_KEY_UP) tmp_int = KEY_VALUE; else |
if(DubWiseKeys[1] & DUB_KEY_DOWN) tmp_int = -KEY_VALUE; else tmp_int = 0; |
ExternStickNick = (ExternStickNick * 7 + tmp_int) / 8; |
if(DubWiseKeys[1] & DUB_KEY_LEFT) tmp_int = KEY_VALUE; else |
if(DubWiseKeys[1] & DUB_KEY_RIGHT) tmp_int = -KEY_VALUE; else tmp_int = 0; |
ExternStickRoll = (ExternStickRoll * 7 + tmp_int) / 8; |
if(DubWiseKeys[0] & 8) ExternStickGier = 50;else |
if(DubWiseKeys[0] & 4) ExternStickGier =-50;else ExternStickGier = 0; |
if(DubWiseKeys[0] & 2) ExternHoehenValue++; |
if(DubWiseKeys[0] & 16) ExternHoehenValue--; |
StickNick += (STICK_GAIN * ExternStickNick) / 8; |
StickRoll += (STICK_GAIN * ExternStickRoll) / 8; |
StickGier += STICK_GAIN * ExternStickGier; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ Analoge Steuerung per Seriell |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(ExternControl.Config & 0x01 && Parameter_ExternalControl > 128) |
{ |
StickNick += (int) ExternControl.Nick * (int) EE_Parameter.Stick_P; |
StickRoll += (int) ExternControl.Roll * (int) EE_Parameter.Stick_P; |
StickGier += ExternControl.Gier; |
ExternHoehenValue = (int) ExternControl.Hight * (int)EE_Parameter.Hoehe_Verstaerkung; |
if(ExternControl.Gas < StickGas) StickGas = ExternControl.Gas; |
} |
if(StickGas < 0) StickGas = 0; |
if(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor = 0; |
if(GyroFaktor < 0) GyroFaktor = 0; |
if(IntegralFaktor < 0) IntegralFaktor = 0; |
if(abs(StickNick/STICK_GAIN) > MaxStickNick) |
{ |
MaxStickNick = abs(StickNick)/STICK_GAIN; |
if(MaxStickNick > 100) MaxStickNick = 100; |
} |
else MaxStickNick--; |
if(abs(StickRoll/STICK_GAIN) > MaxStickRoll) |
{ |
MaxStickRoll = abs(StickRoll)/STICK_GAIN; |
if(MaxStickRoll > 100) MaxStickRoll = 100; |
} |
else MaxStickRoll--; |
if(Notlandung) {MaxStickNick = 0; MaxStickRoll = 0;} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Looping? |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_LINKS) Looping_Links = 1; |
else |
{ |
{ |
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < (EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese))) Looping_Links = 0; |
} |
} |
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < -EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_RECHTS) Looping_Rechts = 1; |
else |
{ |
if(Looping_Rechts) // Hysterese |
{ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > -(EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese)) Looping_Rechts = 0; |
} |
} |
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_OBEN) Looping_Oben = 1; |
else |
{ |
if(Looping_Oben) // Hysterese |
{ |
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < (EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese))) Looping_Oben = 0; |
} |
} |
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_UNTEN) Looping_Unten = 1; |
else |
{ |
if(Looping_Unten) // Hysterese |
{ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > -(EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese)) Looping_Unten = 0; |
} |
} |
if(Looping_Links || Looping_Rechts) Looping_Roll = 1; else Looping_Roll = 0; |
if(Looping_Oben || Looping_Unten) {Looping_Nick = 1; Looping_Roll = 0; Looping_Links = 0; Looping_Rechts = 0;} else Looping_Nick = 0; |
} // Ende neue Funken-Werte |
if(Looping_Roll || Looping_Nick) |
{ |
if(GasMischanteil > EE_Parameter.LoopGasLimit) GasMischanteil = EE_Parameter.LoopGasLimit; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Bei Empfangsausfall im Flug |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Notlandung) |
{ |
StickGier = 0; |
StickNick = 0; |
StickRoll = 0; |
GyroFaktor = (float) 100 / (256.0 / STICK_GAIN); |
IntegralFaktor = (float) 120 / (44000 / STICK_GAIN); |
Looping_Roll = 0; |
Looping_Nick = 0; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Integrale auf ACC-Signal abgleichen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define ABGLEICH_ANZAHL 256L |
MittelIntegralNick += IntegralNick; // Für die Mittelwertbildung aufsummieren |
MittelIntegralRoll += IntegralRoll; |
MittelIntegralNick2 += IntegralNick2; |
MittelIntegralRoll2 += IntegralRoll2; |
if(Looping_Nick || Looping_Roll) |
{ |
IntegralAccNick = 0; |
IntegralAccRoll = 0; |
MittelIntegralNick = 0; |
MittelIntegralRoll = 0; |
MittelIntegralNick2 = 0; |
MittelIntegralRoll2 = 0; |
Mess_IntegralNick2 = Mess_IntegralNick; |
Mess_IntegralRoll2 = Mess_IntegralRoll; |
ZaehlMessungen = 0; |
LageKorrekturNick = 0; |
LageKorrekturRoll = 0; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!Looping_Nick && !Looping_Roll) |
{ |
long tmp_long, tmp_long2; |
tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick); |
tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll); |
tmp_long /= 16; |
tmp_long2 /= 16; |
if((MaxStickNick > 64) || (MaxStickRoll > 64)) |
{ |
tmp_long /= 3; |
tmp_long2 /= 3; |
} |
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]) > 25) |
{ |
tmp_long /= 3; |
tmp_long2 /= 3; |
} |
#define AUSGLEICH 32 |
if(tmp_long > AUSGLEICH) tmp_long = AUSGLEICH; |
if(tmp_long < -AUSGLEICH) tmp_long =-AUSGLEICH; |
if(tmp_long2 > AUSGLEICH) tmp_long2 = AUSGLEICH; |
if(tmp_long2 <-AUSGLEICH) tmp_long2 =-AUSGLEICH; |
Mess_IntegralNick -= tmp_long; |
Mess_IntegralRoll -= tmp_long2; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(ZaehlMessungen >= ABGLEICH_ANZAHL) |
{ |
static int cnt = 0; |
static char last_n_p,last_n_n,last_r_p,last_r_n; |
static long MittelIntegralNick_Alt,MittelIntegralRoll_Alt; |
if(!Looping_Nick && !Looping_Roll && !TrichterFlug) |
{ |
MittelIntegralNick /= ABGLEICH_ANZAHL; |
MittelIntegralRoll /= ABGLEICH_ANZAHL; |
IntegralAccNick = (EE_Parameter.GyroAccFaktor * IntegralAccNick) / ABGLEICH_ANZAHL; |
IntegralAccRoll = (EE_Parameter.GyroAccFaktor * IntegralAccRoll) / ABGLEICH_ANZAHL; |
IntegralAccZ = IntegralAccZ / ABGLEICH_ANZAHL; |
#define MAX_I 0//(Poti2/10) |
// Nick ++++++++++++++++++++++++++++++++++++++++++++++++ |
IntegralFehlerNick = (long)(MittelIntegralNick - (long)IntegralAccNick); |
ausgleichNick = IntegralFehlerNick / EE_Parameter.GyroAccAbgleich; |
// Roll ++++++++++++++++++++++++++++++++++++++++++++++++ |
IntegralFehlerRoll = (long)(MittelIntegralRoll - (long)IntegralAccRoll); |
ausgleichRoll = IntegralFehlerRoll / EE_Parameter.GyroAccAbgleich; |
LageKorrekturNick = ausgleichNick / ABGLEICH_ANZAHL; |
LageKorrekturRoll = ausgleichRoll / ABGLEICH_ANZAHL; |
if((MaxStickNick > 64) || (MaxStickRoll > 64) || (abs(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]) > 25)) |
{ |
LageKorrekturNick /= 2; |
LageKorrekturRoll /= 2; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gyro-Drift ermitteln |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
MittelIntegralNick2 /= ABGLEICH_ANZAHL; |
MittelIntegralRoll2 /= ABGLEICH_ANZAHL; |
tmp_long = IntegralNick2 - IntegralNick; |
tmp_long2 = IntegralRoll2 - IntegralRoll; |
//DebugOut.Analog[25] = MittelIntegralRoll2 / 26; |
IntegralFehlerNick = tmp_long; |
IntegralFehlerRoll = tmp_long2; |
Mess_IntegralNick2 -= IntegralFehlerNick; |
Mess_IntegralRoll2 -= IntegralFehlerRoll; |
// IntegralFehlerNick = (IntegralFehlerNick * 1 + tmp_long) / 2; |
// IntegralFehlerRoll = (IntegralFehlerRoll * 1 + tmp_long2) / 2; |
if(GierGyroFehler > ABGLEICH_ANZAHL/2) { AdNeutralGier++; AdNeutralGierBias++; } |
if(GierGyroFehler <-ABGLEICH_ANZAHL/2) { AdNeutralGier--; AdNeutralGierBias--; } |
DebugOut.Analog[22] = MittelIntegralRoll / 26; |
//DebugOut.Analog[24] = GierGyroFehler; |
GierGyroFehler = 0; |
/*DebugOut.Analog[17] = IntegralAccNick / 26; |
DebugOut.Analog[18] = IntegralAccRoll / 26; |
DebugOut.Analog[19] = IntegralFehlerNick;// / 26; |
DebugOut.Analog[20] = IntegralFehlerRoll;// / 26; |
*/ |
//DebugOut.Analog[21] = MittelIntegralNick / 26; |
//MittelIntegralRoll = MittelIntegralRoll; |
//DebugOut.Analog[28] = ausgleichNick; |
/* |
DebugOut.Analog[29] = ausgleichRoll; |
DebugOut.Analog[30] = LageKorrekturRoll * 10; |
*/ |
#define FEHLER_LIMIT (ABGLEICH_ANZAHL * 4) |
#define FEHLER_LIMIT2 (ABGLEICH_ANZAHL * 16) |
#define BEWEGUNGS_LIMIT 20000 |
// Nick +++++++++++++++++++++++++++++++++++++++++++++++++ |
cnt = 1;// + labs(IntegralFehlerNick) / 4096; |
if(labs(MittelIntegralNick_Alt - MittelIntegralNick) < BEWEGUNGS_LIMIT) |
{ |
if(IntegralFehlerNick > FEHLER_LIMIT2) |
{ |
if(last_n_p) |
{ |
cnt += labs(IntegralFehlerNick) / FEHLER_LIMIT2; |
ausgleichNick = IntegralFehlerNick / 8; |
if(ausgleichNick > 5000) ausgleichNick = 5000; |
LageKorrekturNick += ausgleichNick / ABGLEICH_ANZAHL; |
} |
else last_n_p = 1; |
} else last_n_p = 0; |
if(IntegralFehlerNick < -FEHLER_LIMIT2) |
{ |
if(last_n_n) |
{ |
cnt += labs(IntegralFehlerNick) / FEHLER_LIMIT2; |
ausgleichNick = IntegralFehlerNick / 8; |
if(ausgleichNick < -5000) ausgleichNick = -5000; |
LageKorrekturNick += ausgleichNick / ABGLEICH_ANZAHL; |
} |
else last_n_n = 1; |
} else last_n_n = 0; |
} |
else |
{ |
cnt = 0; |
KompassSignalSchlecht = 1000; |
} |
if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp; |
if(IntegralFehlerNick > FEHLER_LIMIT) AdNeutralNick += cnt; |
if(IntegralFehlerNick < -FEHLER_LIMIT) AdNeutralNick -= cnt; |
// Roll +++++++++++++++++++++++++++++++++++++++++++++++++ |
cnt = 1;// + labs(IntegralFehlerNick) / 4096; |
ausgleichRoll = 0; |
if(labs(MittelIntegralRoll_Alt - MittelIntegralRoll) < BEWEGUNGS_LIMIT) |
{ |
if(IntegralFehlerRoll > FEHLER_LIMIT2) |
{ |
if(last_r_p) |
{ |
cnt += labs(IntegralFehlerRoll) / FEHLER_LIMIT2; |
ausgleichRoll = IntegralFehlerRoll / 8; |
if(ausgleichRoll > 5000) ausgleichRoll = 5000; |
LageKorrekturRoll += ausgleichRoll / ABGLEICH_ANZAHL; |
} |
else last_r_p = 1; |
} else last_r_p = 0; |
if(IntegralFehlerRoll < -FEHLER_LIMIT2) |
{ |
if(last_r_n) |
{ |
cnt += labs(IntegralFehlerRoll) / FEHLER_LIMIT2; |
ausgleichRoll = IntegralFehlerRoll / 8; |
if(ausgleichRoll < -5000) ausgleichRoll = -5000; |
LageKorrekturRoll += ausgleichRoll / ABGLEICH_ANZAHL; |
} |
else last_r_n = 1; |
} else last_r_n = 0; |
} else |
{ |
cnt = 0; |
KompassSignalSchlecht = 1000; |
} |
if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp; |
if(IntegralFehlerRoll > FEHLER_LIMIT) AdNeutralRoll += cnt; |
if(IntegralFehlerRoll < -FEHLER_LIMIT) AdNeutralRoll -= cnt; |
} |
else |
{ |
LageKorrekturRoll = 0; |
LageKorrekturNick = 0; |
TrichterFlug = 0; |
} |
if(!IntegralFaktor) { LageKorrekturRoll = 0; LageKorrekturNick = 0;} // z.B. bei HH |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++ |
MittelIntegralNick_Alt = MittelIntegralNick; |
MittelIntegralRoll_Alt = MittelIntegralRoll; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++ |
IntegralAccNick = 0; |
IntegralAccRoll = 0; |
IntegralAccZ = 0; |
MittelIntegralNick = 0; |
MittelIntegralRoll = 0; |
MittelIntegralNick2 = 0; |
MittelIntegralRoll2 = 0; |
ZaehlMessungen = 0; |
} |
//DebugOut.Analog[31] = StickRoll / (26*IntegralFaktor); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gieren |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// if(GasMischanteil < 35) { if(StickGier > 10) StickGier = 10; else if(StickGier < -10) StickGier = -10;}; |
if(abs(StickGier) > 15) // war 35 |
{ |
KompassSignalSchlecht = 1000; |
if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX)) |
{ |
NeueKompassRichtungMerken = 1; |
}; |
} |
tmp_int = (long) EE_Parameter.Gier_P * ((long)StickGier * abs(StickGier)) / 512L; // expo y = ax + bx² |
tmp_int += (EE_Parameter.Gier_P * StickGier) / 4; |
sollGier = tmp_int; |
Mess_Integral_Gier -= tmp_int; |
if(Mess_Integral_Gier > 50000) Mess_Integral_Gier = 50000; // begrenzen |
if(Mess_Integral_Gier <-50000) Mess_Integral_Gier =-50000; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Kompass |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//DebugOut.Analog[29] = (MaxStickNick + MaxStickRoll); |
if(KompassValue && (EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV)) |
{ |
int w,v,r,fehler,korrektur; |
w = abs(IntegralNick /512); // mit zunehmender Neigung den Einfluss drosseln |
v = abs(IntegralRoll /512); |
if(v > w) w = v; // grösste Neigung ermitteln |
korrektur = w / 8 + 1; |
fehler = ((540 + KompassValue - (ErsatzKompass/GIER_GRAD_FAKTOR)) % 360) - 180; |
//DebugOut.Analog[25] = KompassSignalSchlecht; |
if(!KompassSignalSchlecht && w < 25) |
{ |
GierGyroFehler += fehler; |
if(NeueKompassRichtungMerken) |
{ |
beeptime = 200; |
// KompassStartwert = KompassValue; |
KompassStartwert = (ErsatzKompass/GIER_GRAD_FAKTOR); |
NeueKompassRichtungMerken = 0; |
} |
} |
ErsatzKompass += (fehler * 8) / korrektur; |
w = (w * Parameter_KompassWirkung) / 32; // auf die Wirkung normieren |
w = Parameter_KompassWirkung - w; // Wirkung ggf drosseln |
if(w >= 0) |
{ |
if(!KompassSignalSchlecht) |
{ |
v = 64 + ((MaxStickNick + MaxStickRoll)) / 8; |
r = ((540 + (ErsatzKompass/GIER_GRAD_FAKTOR) - KompassStartwert) % 360) - 180; |
// r = KompassRichtung; |
v = (r * w) / v; // nach Kompass ausrichten |
w = 3 * Parameter_KompassWirkung; |
if(v > w) v = w; // Begrenzen |
else |
if(v < -w) v = -w; |
Mess_Integral_Gier += v; |
} |
if(KompassSignalSchlecht) KompassSignalSchlecht--; |
} |
else KompassSignalSchlecht = 500; // so lange das Signal taub stellen --> ca. 1 sek |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Debugwerte zuordnen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!TimerWerteausgabe--) |
{ |
TimerWerteausgabe = 24; |
DebugOut.Analog[0] = IntegralNick / EE_Parameter.GyroAccFaktor; |
DebugOut.Analog[1] = IntegralRoll / EE_Parameter.GyroAccFaktor; |
DebugOut.Analog[2] = Mittelwert_AccNick; |
DebugOut.Analog[3] = Mittelwert_AccRoll; |
DebugOut.Analog[4] = MesswertGier; |
DebugOut.Analog[5] = HoehenWert; |
DebugOut.Analog[6] = (Mess_Integral_Hoch / 512); |
DebugOut.Analog[8] = KompassValue; |
DebugOut.Analog[9] = UBat; |
DebugOut.Analog[11] = ErsatzKompass / GIER_GRAD_FAKTOR; |
DebugOut.Analog[10] = SenderOkay; |
//DebugOut.Analog[16] = Mittelwert_AccHoch; |
// DebugOut.Analog[17] = FromNaviCtrl_Value.Distance; |
// DebugOut.Analog[18] = (int)FromNaviCtrl_Value.OsdBar; |
DebugOut.Analog[19] = WinkelOut.CalcState; |
DebugOut.Analog[20] = ServoValue; |
DebugOut.Analog[30] = GPS_Nick; |
DebugOut.Analog[31] = GPS_Roll; |
// DebugOut.Analog[19] -= DebugOut.Analog[19]/128; |
// if(DebugOut.Analog[19] > 0) DebugOut.Analog[19]--; else DebugOut.Analog[19]++; |
/* DebugOut.Analog[16] = motor_rx[0]; |
DebugOut.Analog[17] = motor_rx[1]; |
DebugOut.Analog[18] = motor_rx[2]; |
DebugOut.Analog[19] = motor_rx[3]; |
DebugOut.Analog[20] = motor_rx[0] + motor_rx[1] + motor_rx[2] + motor_rx[3]; |
DebugOut.Analog[20] /= 14; |
DebugOut.Analog[21] = motor_rx[4]; |
DebugOut.Analog[22] = motor_rx[5]; |
DebugOut.Analog[23] = motor_rx[6]; |
DebugOut.Analog[24] = motor_rx[7]; |
DebugOut.Analog[25] = motor_rx[4] + motor_rx[5] + motor_rx[6] + motor_rx[7]; |
*/ |
// DebugOut.Analog[9] = MesswertNick; |
// 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] = 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; |
else MesswertRoll = IntegralRoll * IntegralFaktor + MesswertRoll * GyroFaktor; |
MesswertGier = MesswertGier * (2 * GyroFaktor) + Integral_Gier * IntegralFaktor / 2; |
DebugOut.Analog[21] = MesswertNick; |
DebugOut.Analog[22] = MesswertRoll; |
// Maximalwerte abfangen |
#define MAX_SENSOR (4096*STICK_GAIN) |
if(MesswertNick > MAX_SENSOR) MesswertNick = MAX_SENSOR; |
if(MesswertNick < -MAX_SENSOR) MesswertNick = -MAX_SENSOR; |
if(MesswertRoll > MAX_SENSOR) MesswertRoll = MAX_SENSOR; |
if(MesswertRoll < -MAX_SENSOR) MesswertRoll = -MAX_SENSOR; |
if(MesswertGier > MAX_SENSOR) MesswertGier = MAX_SENSOR; |
if(MesswertGier < -MAX_SENSOR) MesswertGier = -MAX_SENSOR; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Höhenregelung |
// Die Höhenregelung schwächt lediglich das Gas ab, erhöht es allerdings nicht |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//OCR0B = 180 - (Poti1 + 120) / 4; |
//DruckOffsetSetting = OCR0B; |
GasMischanteil *= STICK_GAIN; |
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung |
{ |
int tmp_int; |
if(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER) // Regler wird über Schalter gesteuert |
{ |
if(Parameter_MaxHoehe < 50) |
{ |
SollHoehe = HoehenWert - 20; // Parameter_MaxHoehe ist der PPM-Wert des Schalters |
HoehenReglerAktiv = 0; |
} |
else |
HoehenReglerAktiv = 1; |
} |
else |
{ |
SollHoehe = ((int) ExternHoehenValue + (int) Parameter_MaxHoehe) * (int)EE_Parameter.Hoehe_Verstaerkung - 20; |
HoehenReglerAktiv = 1; |
} |
if(Notlandung) SollHoehe = 0; |
h = HoehenWert; |
if((h > SollHoehe) && HoehenReglerAktiv) // zu hoch --> drosseln |
{ |
h = ((h - SollHoehe) * (int) Parameter_Hoehe_P) / (16 / STICK_GAIN); // Differenz bestimmen --> P-Anteil |
h = GasMischanteil - h; // vom Gas abziehen |
// h -= (HoeheD * Parameter_Luftdruck_D)/(8/STICK_GAIN); // D-Anteil |
h -= (HoeheD)/(8/STICK_GAIN); // D-Anteil |
tmp_int = ((Mess_Integral_Hoch / 128) * (signed long) Parameter_Hoehe_ACC_Wirkung) / (128 / STICK_GAIN); |
if(tmp_int > 70*STICK_GAIN) tmp_int = 70*STICK_GAIN; |
else if(tmp_int < -(70*STICK_GAIN)) tmp_int = -(70*STICK_GAIN); |
h -= tmp_int; |
hoehenregler = (hoehenregler*15 + h) / 16; |
if(hoehenregler < EE_Parameter.Hoehe_MinGas * STICK_GAIN) // nicht unter MIN |
{ |
if(GasMischanteil >= EE_Parameter.Hoehe_MinGas * STICK_GAIN) hoehenregler = EE_Parameter.Hoehe_MinGas * STICK_GAIN; |
if(GasMischanteil < EE_Parameter.Hoehe_MinGas * STICK_GAIN) hoehenregler = GasMischanteil; |
} |
if(hoehenregler > GasMischanteil) hoehenregler = GasMischanteil; // nicht mehr als Gas |
GasMischanteil = hoehenregler; |
} |
} |
if(GasMischanteil > (MAX_GAS - 20) * STICK_GAIN) GasMischanteil = (MAX_GAS - 20) * STICK_GAIN; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Mischer und PI-Regler |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
DebugOut.Analog[7] = GasMischanteil; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gier-Anteil |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define MUL_G 1.0 |
GierMischanteil = MesswertGier - sollGier * STICK_GAIN; // Regler für Gier |
// GierMischanteil = 0; |
#define MIN_GIERGAS (40*STICK_GAIN) // unter diesem Gaswert trotzdem Gieren |
if(GasMischanteil > MIN_GIERGAS) |
{ |
if(GierMischanteil > (GasMischanteil / 2)) GierMischanteil = GasMischanteil / 2; |
if(GierMischanteil < -(GasMischanteil / 2)) GierMischanteil = -(GasMischanteil / 2); |
} |
else |
{ |
if(GierMischanteil > (MIN_GIERGAS / 2)) GierMischanteil = MIN_GIERGAS / 2; |
if(GierMischanteil < -(MIN_GIERGAS / 2)) GierMischanteil = -(MIN_GIERGAS / 2); |
} |
tmp_int = MAX_GAS*STICK_GAIN; |
if(GierMischanteil > ((tmp_int - GasMischanteil))) GierMischanteil = ((tmp_int - GasMischanteil)); |
if(GierMischanteil < -((tmp_int - GasMischanteil))) GierMischanteil = -((tmp_int - GasMischanteil)); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Nick-Achse |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
DiffNick = MesswertNick - StickNick; // Differenz bestimmen |
if(IntegralFaktor) SummeNick += IntegralNick * IntegralFaktor - StickNick; // I-Anteil bei Winkelregelung |
else SummeNick += DiffNick; // I-Anteil bei HH |
if(SummeNick > (STICK_GAIN * 16000L)) SummeNick = (STICK_GAIN * 16000L); |
if(SummeNick < -(16000L * STICK_GAIN)) SummeNick = -(16000L * STICK_GAIN); |
pd_ergebnis = DiffNick + Ki * SummeNick; // PI-Regler für Nick |
// Motor Vorn |
tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64; |
if(pd_ergebnis > tmp_int) pd_ergebnis = tmp_int; |
if(pd_ergebnis < -tmp_int) pd_ergebnis = -tmp_int; |
motorwert = GasMischanteil + pd_ergebnis + GierMischanteil; // Mischer |
motorwert /= STICK_GAIN; |
if ((motorwert < 0)) motorwert = 0; |
else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
Motor_Vorne = motorwert; |
// Motor Heck |
motorwert = GasMischanteil - pd_ergebnis + GierMischanteil; |
motorwert /= STICK_GAIN; |
if ((motorwert < 0)) motorwert = 0; |
else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
Motor_Hinten = motorwert; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Roll-Achse |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
DiffRoll = MesswertRoll - StickRoll; // Differenz bestimmen |
if(IntegralFaktor) SummeRoll += IntegralRoll * IntegralFaktor - StickRoll;// I-Anteil bei Winkelregelung |
else SummeRoll += DiffRoll; // I-Anteil bei HH |
if(SummeRoll > (STICK_GAIN * 16000L)) SummeRoll = (STICK_GAIN * 16000L); |
if(SummeRoll < -(16000L * STICK_GAIN)) SummeRoll = -(16000L * STICK_GAIN); |
pd_ergebnis = DiffRoll + Ki * SummeRoll; // PI-Regler für Roll |
tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64; |
if(pd_ergebnis > tmp_int) pd_ergebnis = tmp_int; |
if(pd_ergebnis < -tmp_int) pd_ergebnis = -tmp_int; |
// Motor Links |
motorwert = GasMischanteil + pd_ergebnis - GierMischanteil; |
motorwert /= STICK_GAIN; |
if ((motorwert < 0)) motorwert = 0; |
else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
Motor_Links = motorwert; |
// Motor Rechts |
motorwert = GasMischanteil - pd_ergebnis - GierMischanteil; |
motorwert /= STICK_GAIN; |
if ((motorwert < 0)) motorwert = 0; |
else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
Motor_Rechts = motorwert; |
// +++++++++++++++++++++++++++++++++++++++++++++++ |
} |
/branches/V0.70_safer_engine_stop/fc.h |
---|
0,0 → 1,172 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
#ifndef _FC_H |
#define _FC_H |
//#define GIER_GRAD_FAKTOR 1450L // Abhängigkeit wzischen GyroIntegral und Winkel |
#define GIER_GRAD_FAKTOR 1550L // Abhängigkeit wzischen GyroIntegral und Winkel |
#define STICK_GAIN 4 |
#define FLAG_MOTOR_RUN 1 |
#define FLAG_FLY 2 |
#define FLAG_CALIBRATE 4 |
#define FLAG_START 8 |
extern unsigned char MikroKopterFlags; |
extern volatile unsigned int I2CTimeout; |
extern unsigned char Sekunde,Minute; |
extern long IntegralNick,IntegralNick2; |
extern long IntegralRoll,IntegralRoll2; |
extern long Mess_IntegralNick,Mess_IntegralNick2; |
extern long Mess_IntegralRoll,Mess_IntegralRoll2; |
extern long IntegralAccNick,IntegralAccRoll; |
extern volatile long Mess_Integral_Hoch; |
extern long Integral_Gier,Mess_Integral_Gier,Mess_Integral_Gier2; |
extern volatile int KompassValue; |
extern volatile int KompassStartwert; |
extern volatile int KompassRichtung; |
extern long ErsatzKompass; |
extern int ErsatzKompassInGrad; // Kompasswert in Grad |
extern int HoehenWert; |
extern int SollHoehe; |
extern volatile int MesswertNick,MesswertRoll,MesswertGier; |
extern int AdNeutralNick,AdNeutralRoll,AdNeutralGier, Mittelwert_AccNick, Mittelwert_AccRoll; |
extern int NeutralAccX, NeutralAccY,Mittelwert_AccHoch; |
extern volatile float NeutralAccZ; |
extern long Umschlag180Nick, Umschlag180Roll; |
extern signed int ExternStickNick,ExternStickRoll,ExternStickGier; |
extern unsigned char Parameter_UserParam1,Parameter_UserParam2,Parameter_UserParam3,Parameter_UserParam4,Parameter_UserParam5,Parameter_UserParam6,Parameter_UserParam7,Parameter_UserParam8; |
extern int NaviAccNick,NaviAccRoll,NaviCntAcc; |
extern unsigned int modell_fliegt; |
void MotorRegler(void); |
void SendMotorData(void); |
void CalibrierMittelwert(void); |
void Mittelwert(void); |
void SetNeutral(void); |
void Piep(unsigned char Anzahl); |
extern void DefaultKonstanten(void); |
void DefaultKonstanten1(void); |
void DefaultKonstanten2(void); |
extern unsigned char h,m,s; |
extern volatile unsigned char Timeout ; |
extern unsigned char CosinusNickWinkel, CosinusRollWinkel; |
extern volatile int DiffNick,DiffRoll; |
extern int Poti1, Poti2, Poti3, Poti4; |
extern volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count; |
extern volatile unsigned char SenderOkay; |
extern int StickNick,StickRoll,StickGier; |
extern char MotorenEin; |
extern void DefaultKonstanten1(void); |
extern void DefaultKonstanten2(void); |
#define STRUCT_PARAM_LAENGE 83 |
struct mk_param_struct |
{ |
unsigned char Kanalbelegung[8]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3 |
unsigned char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv |
unsigned char Hoehe_MinGas; // Wert : 0-100 |
unsigned char Luftdruck_D; // Wert : 0-250 |
unsigned char MaxHoehe; // Wert : 0-32 |
unsigned char Hoehe_P; // Wert : 0-32 |
unsigned char Hoehe_Verstaerkung; // Wert : 0-50 |
unsigned char Hoehe_ACC_Wirkung; // Wert : 0-250 |
unsigned char Stick_P; // Wert : 1-6 |
unsigned char Stick_D; // Wert : 0-64 |
unsigned char Gier_P; // Wert : 1-20 |
unsigned char Gas_Min; // Wert : 0-32 |
unsigned char Gas_Max; // Wert : 33-250 |
unsigned char GyroAccFaktor; // Wert : 1-64 |
unsigned char KompassWirkung; // Wert : 0-32 |
unsigned char Gyro_P; // Wert : 10-250 |
unsigned char Gyro_I; // Wert : 0-250 |
unsigned char UnterspannungsWarnung; // Wert : 0-250 |
unsigned char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust |
unsigned char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen |
unsigned char UfoAusrichtung; // X oder + Formation |
unsigned char I_Faktor; // Wert : 0-250 |
unsigned char UserParam1; // Wert : 0-250 |
unsigned char UserParam2; // Wert : 0-250 |
unsigned char UserParam3; // Wert : 0-250 |
unsigned char UserParam4; // Wert : 0-250 |
unsigned char ServoNickControl; // Wert : 0-250 // Stellung des Servos |
unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
unsigned char ServoNickMin; // Wert : 0-250 // Anschlag |
unsigned char ServoNickMax; // Wert : 0-250 // Anschlag |
unsigned char ServoNickRefresh; // |
unsigned char LoopGasLimit; // Wert: 0-250 max. Gas während Looping |
unsigned char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag |
unsigned char LoopHysterese; // Wert: 0-250 Hysterese für Stickausschlag |
unsigned char AchsKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick koppelt (NickRollMitkopplung) |
unsigned char AchsGegenKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick Gegenkoppelt (NickRollGegenkopplung) |
unsigned char WinkelUmschlagNick; // Wert: 0-250 180°-Punkt |
unsigned char WinkelUmschlagRoll; // Wert: 0-250 180°-Punkt |
unsigned char GyroAccAbgleich; // 1/k (Koppel_ACC_Wirkung) |
unsigned char Driftkomp; |
unsigned char DynamicStability; |
unsigned char UserParam5; // Wert : 0-250 |
unsigned char UserParam6; // Wert : 0-250 |
unsigned char UserParam7; // Wert : 0-250 |
unsigned char UserParam8; // Wert : 0-250 |
//---Output --------------------------------------------- |
unsigned char J16Bitmask; // for the J16 Output |
unsigned char J16Timing; // for the J16 Output |
unsigned char J17Bitmask; // for the J17 Output |
unsigned char J17Timing; // for the J17 Output |
//---NaviCtrl--------------------------------------------- |
unsigned char NaviGpsModeControl; // Parameters for the Naviboard |
unsigned char NaviGpsGain; |
unsigned char NaviGpsP; |
unsigned char NaviGpsI; |
unsigned char NaviGpsD; |
unsigned char NaviGpsACC; |
unsigned char NaviGpsMinSat; |
unsigned char NaviStickThreshold; |
//---Ext.Ctrl--------------------------------------------- |
unsigned char ExternalControl; // for serial Control |
//------------------------------------------------ |
unsigned char LoopConfig; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
unsigned char ServoNickCompInvert; // Wert : 0-250 0 oder 1 // WICHTIG!!! am Ende lassen |
unsigned char Reserved[4]; |
char Name[12]; |
}; |
/* |
unsigned char ServoNickMax; // Wert : 0-250 |
unsigned char ServoNickRefresh; // |
unsigned char LoopGasLimit; // Wert: 0-250 max. Gas während Looping |
unsigned char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag |
//------------------------------------------------ |
unsigned char LoopConfig; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
unsigned char ServoNickCompInvert; // Wert : 0-250 0 oder 1 // WICHTIG!!! am Ende lassen |
unsigned char Reserved[4]; |
char Name[12]; |
*/ |
extern struct mk_param_struct EE_Parameter; |
extern unsigned char Parameter_Luftdruck_D; |
extern unsigned char Parameter_MaxHoehe; |
extern unsigned char Parameter_Hoehe_P; |
extern unsigned char Parameter_Hoehe_ACC_Wirkung; |
extern unsigned char Parameter_KompassWirkung; |
extern unsigned char Parameter_Gyro_P; |
extern unsigned char Parameter_Gyro_I; |
extern unsigned char Parameter_Gier_P; |
extern unsigned char Parameter_ServoNickControl; |
extern unsigned char Parameter_AchsKopplung1; |
extern unsigned char Parameter_AchsGegenKopplung1; |
extern unsigned char Parameter_J16Bitmask; // for the J16 Output |
extern unsigned char Parameter_J16Timing; // for the J16 Output |
extern unsigned char Parameter_J17Bitmask; // for the J17 Output |
extern unsigned char Parameter_J17Timing; // for the J17 Output |
extern unsigned char Parameter_NaviGpsModeControl; // Parameters for the Naviboard |
extern unsigned char Parameter_NaviGpsGain; |
extern unsigned char Parameter_NaviGpsP; |
extern unsigned char Parameter_NaviGpsI; |
extern unsigned char Parameter_NaviGpsD; |
extern unsigned char Parameter_NaviGpsACC; |
#endif //_FC_H |
/branches/V0.70_safer_engine_stop/flight.pnproj |
---|
0,0 → 1,0 |
<Project name="Flight-Ctrl"><File path="uart.h"></File><File path="main.c"></File><File path="main.h"></File><File path="makefile"></File><File path="uart.c"></File><File path="printf_P.h"></File><File path="printf_P.c"></File><File path="timer0.c"></File><File path="timer0.h"></File><File path="old_macros.h"></File><File path="twimaster.c"></File><File path="version.txt"></File><File path="twimaster.h"></File><File path="rc.c"></File><File path="rc.h"></File><File path="fc.h"></File><File path="menu.h"></File><File path="menu.c"></File><File path="_Settings.h"></File><File path="analog.c"></File><File path="analog.h"></File><File path="GPS.c"></File><File path="gps.h"></File><File path="License.txt"></File><File path="eeprom.c"></File><File path="spi.h"></File><File path="spi.c"></File><File path="led.h"></File><File path="led.c"></File><File path="fc.c"></File></Project> |
/branches/V0.70_safer_engine_stop/flight.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="Flight-Ctrl" x="true"></e></ViewState></pd> |
/branches/V0.70_safer_engine_stop/gps.h |
---|
0,0 → 1,7 |
extern signed int GPS_Nick; |
extern signed int GPS_Roll; |
extern signed int GPS_Nick2; |
extern signed int GPS_Roll2; |
void GPS_Neutral(void); |
void GPS_BerechneZielrichtung(void); |
/branches/V0.70_safer_engine_stop/led.c |
---|
0,0 → 1,49 |
#include <inttypes.h> |
#include "main.h" |
uint16_t LED1_Timing = 0; |
uint16_t LED2_Timing = 0; |
unsigned char J16Blinkcount = 0, J16Mask = 1; |
unsigned char J17Blinkcount = 0, J17Mask = 1; |
// initializes the LED control outputs J16, J17 |
void LED_Init(void) |
{ |
// set PC2 & PC3 as output (control of J16 & J17) |
DDRC |= (1<<DDC2)|(1<<DDC3); |
J16_OFF; |
J17_OFF; |
J16Blinkcount = 0; J16Mask = 128; |
J17Blinkcount = 0; J17Mask = 128; |
} |
// called in UpdateMotors() every 2ms |
void LED_Update(void) |
{ |
static char delay = 0; |
if(!delay--) // 10ms Intervall |
{ |
delay = 4; |
if((EE_Parameter.J16Timing > 250) && (Parameter_J16Timing > 230)) {if(EE_Parameter.J16Bitmask & 128) J16_ON; else J16_OFF;} |
else |
if((EE_Parameter.J16Timing > 250) && (Parameter_J16Timing < 10)) {if(EE_Parameter.J16Bitmask & 128) J16_OFF; else J16_ON;} |
else |
if(!J16Blinkcount--) |
{ |
J16Blinkcount = Parameter_J16Timing-1; |
if(J16Mask == 1) J16Mask = 128; else J16Mask /= 2; |
if(J16Mask & EE_Parameter.J16Bitmask) J16_ON; else J16_OFF; |
} |
if((EE_Parameter.J17Timing > 250) && (Parameter_J17Timing > 230)) {if(EE_Parameter.J17Bitmask & 128) J17_ON; else J17_OFF;} |
else |
if((EE_Parameter.J17Timing > 250) && (Parameter_J17Timing < 10)) {if(EE_Parameter.J17Bitmask & 128) J17_OFF; else J17_ON;} |
else |
if(!J17Blinkcount--) |
{ |
J17Blinkcount = Parameter_J17Timing-1; |
if(J17Mask == 1) J17Mask = 128; else J17Mask /= 2; |
if(J17Mask & EE_Parameter.J17Bitmask) J17_ON; else J17_OFF; |
} |
} |
} |
/branches/V0.70_safer_engine_stop/led.h |
---|
0,0 → 1,11 |
#include <avr/io.h> |
#define J16_ON PORTC |= (1<<PORTC2) |
#define J16_OFF PORTC &= ~(1<<PORTC2) |
#define J16_TOGGLE PORTC ^= (1<<PORTC2) |
#define J17_ON PORTC |= (1<<PORTC3) |
#define J17_OFF PORTC &= ~(1<<PORTC3) |
#define J17_TOGGLE PORTC ^= (1<<PORTC3) |
extern void LED_Init(void); |
extern void LED_Update(void); |
/branches/V0.70_safer_engine_stop/main.c |
---|
0,0 → 1,289 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + 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 und nicht-kommerziellen Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt und genannt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned char EEPromArray[E2END+1] EEMEM; |
unsigned char PlatinenVersion = 10; |
unsigned char SendVersionToNavi = 1; |
// -- Parametersatz aus EEPROM lesen --- |
// number [0..5] |
void ReadParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if (number > 5) number = 5; |
eeprom_read_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length); |
LED_Init(); |
} |
// -- Parametersatz ins EEPROM schreiben --- |
// number [0..5] |
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if(number > 5) number = 5; |
eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], number); // diesen Parametersatz als aktuell merken |
LED_Init(); |
} |
unsigned char GetActiveParamSetNumber(void) |
{ |
unsigned char set; |
set = eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET]); |
if(set > 5) |
{ |
set = 2; |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], set); // diesen Parametersatz als aktuell merken |
} |
return(set); |
} |
void CalMk3Mag(void) |
{ |
static unsigned char stick = 1; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > -20) stick = 0; |
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -70) && !stick) |
{ |
stick = 1; |
WinkelOut.CalcState++; |
if(WinkelOut.CalcState > 4) |
{ |
// WinkelOut.CalcState = 0; // in Uart.c |
beeptime = 1000; |
} |
else Piep(WinkelOut.CalcState); |
} |
DebugOut.Analog[19] = WinkelOut.CalcState; |
} |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
unsigned int timer; |
//unsigned int timer2 = 0; |
DDRB = 0x00; |
PORTB = 0x00; |
for(timer = 0; timer < 1000; timer++); // verzögern |
if(PINB & 0x01) |
{ |
if(PINB & 0x02) PlatinenVersion = 13; |
else PlatinenVersion = 11; |
} |
else PlatinenVersion = 10; |
DDRC = 0x81; // SCL |
PORTC = 0xff; // Pullup SDA |
DDRB = 0x1B; // LEDs und Druckoffset |
PORTB = 0x01; // LED_Rot |
DDRD = 0x3E; // Speaker & TXD & J3 J4 J5 |
DDRD |=0x80; // J7 |
PORTD = 0xF7; // LED |
MCUSR &=~(1<<WDRF); |
WDTCSR |= (1<<WDCE)|(1<<WDE); |
WDTCSR = 0; |
beeptime = 2000; |
StickGier = 0; PPM_in[K_GAS] = 0;StickRoll = 0; StickNick = 0; |
ROT_OFF; |
Timer_Init(); |
UART_Init(); |
rc_sum_init(); |
ADC_Init(); |
i2c_init(); |
SPI_MasterInit(); |
sei(); |
VersionInfo.Hauptversion = VERSION_HAUPTVERSION; |
VersionInfo.Nebenversion = VERSION_NEBENVERSION; |
VersionInfo.PCKompatibel = VERSION_KOMPATIBEL; |
VersionInfo.Hardware = 1; // FlightCtrl |
printf("\n\rFlightControl\n\rHardware:%d.%d\n\rSoftware:V%d.%d%c ",PlatinenVersion/10,PlatinenVersion%10, VERSION_HAUPTVERSION, VERSION_NEBENVERSION,VERSION_INDEX + 'a'); |
printf("\n\r=============================="); |
GRN_ON; |
#define EE_DATENREVISION 71 // wird angepasst, wenn sich die EEPROM-Daten geändert haben |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != EE_DATENREVISION) |
{ |
printf("\n\rInit. EEPROM: Generiere Default-Parameter..."); |
DefaultKonstanten1(); |
for (unsigned char i=0;i<6;i++) |
{ |
if(i==2) DefaultKonstanten2(); // Kamera |
if(i==3) DefaultKonstanten3(); // Beginner |
if(i>3) DefaultKonstanten2(); // Kamera |
WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
} |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], 3); // default-Setting |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], EE_DATENREVISION); |
} |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK]) > 4) |
{ |
printf("\n\rACC nicht abgeglichen!"); |
} |
ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
printf("\n\rBenutze Parametersatz %d", GetActiveParamSetNumber()); |
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
printf("\n\rAbgleich Luftdrucksensor.."); |
timer = SetDelay(1000); |
SucheLuftruckOffset(); |
while (!CheckDelay(timer)); |
printf("OK\n\r"); |
} |
SetNeutral(); |
ROT_OFF; |
beeptime = 2000; |
ExternControl.Digital[0] = 0x55; |
printf("\n\rSteuerung: "); |
if (EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) printf("HeadingHold"); |
else printf("Neutral"); |
printf("\n\n\r"); |
LcdClear(); |
I2CTimeout = 5000; |
WinkelOut.Orientation = 1; |
while (1) |
{ |
if(UpdateMotor) // ReglerIntervall |
{ |
UpdateMotor=0; |
//PORTD |= 0x08; |
if(WinkelOut.CalcState) CalMk3Mag(); |
else MotorRegler(); |
//PORTD &= ~0x08; |
SendMotorData(); |
ROT_OFF; |
if(PcZugriff) PcZugriff--; |
else |
{ |
DubWiseKeys[0] = 0; |
DubWiseKeys[1] = 0; |
ExternControl.Config = 0; |
ExternStickNick = 0; |
ExternStickRoll = 0; |
ExternStickGier = 0; |
} |
if(SenderOkay) SenderOkay--; |
if(!I2CTimeout) |
{ |
I2CTimeout = 5; |
i2c_reset(); |
if((BeepMuster == 0xffff) && MotorenEin) |
{ |
beeptime = 10000; |
BeepMuster = 0x0080; |
} |
} |
else |
{ |
I2CTimeout--; |
ROT_OFF; |
} |
if(SIO_DEBUG && (!UpdateMotor || !MotorenEin)) |
{ |
DatenUebertragung(); |
BearbeiteRxDaten(); |
} |
else BearbeiteRxDaten(); |
if(CheckDelay(timer)) |
{ |
if(UBat < EE_Parameter.UnterspannungsWarnung) |
{ |
if(BeepMuster == 0xffff) |
{ |
beeptime = 6000; |
BeepMuster = 0x0300; |
} |
} |
/* if(SendVersionToNavi) |
{ |
SPI_StartTransmitPacket(SPI_CMD_VERSION);//# |
SendVersionToNavi = 0; |
} |
else SPI_StartTransmitPacket(SPI_CMD_VALUE);//# |
*/ |
SPI_StartTransmitPacket();//# |
SendSPI = 4; |
timer = SetDelay(20); |
} |
//if(UpdateMotor) DebugOut.Analog[26]++; |
LED_Update(); |
} |
if(!SendSPI) { SPI_TransmitByte(); } |
} |
return (1); |
} |
/branches/V0.70_safer_engine_stop/main.h |
---|
0,0 → 1,103 |
#ifndef _MAIN_H |
#define _MAIN_H |
//Hier die Quarz Frequenz einstellen |
#if defined (__AVR_ATmega32__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
#endif |
#if defined (__AVR_ATmega644__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
//#define SYSCLK 16000000L //Quarz Frequenz in Hz |
#endif |
// neue Hardware |
#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 {if(PlatinenVersion < 12) PORTB &=~0x02; else PORTB |= 0x02;} |
#define GRN_ON {if(PlatinenVersion < 12) PORTB |= 0x02; else PORTB &=~0x02;} |
#define GRN_FLASH PORTB ^= 0x02 |
#define F_CPU SYSCLK |
//#ifndef F_CPU |
//#error ################## F_CPU nicht definiert oder ungültig ############# |
//#endif |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define EEPROM_ADR_VALID 1 |
#define EEPROM_ADR_ACTIVE_SET 2 |
#define EEPROM_ADR_LAST_OFFSET 3 |
#define EEPROM_ADR_ACC_NICK 4 |
#define EEPROM_ADR_ACC_ROLL 6 |
#define EEPROM_ADR_ACC_Z 8 |
#define EEPROM_ADR_PARAM_BEGIN 100 |
#define CFG_HOEHENREGELUNG 0x01 |
#define CFG_HOEHEN_SCHALTER 0x02 |
#define CFG_HEADING_HOLD 0x04 |
#define CFG_KOMPASS_AKTIV 0x08 |
#define CFG_KOMPASS_FIX 0x10 |
#define CFG_GPS_AKTIV 0x20 |
#define CFG_ACHSENKOPPLUNG_AKTIV 0x40 |
#define CFG_DREHRATEN_BEGRENZER 0x80 |
#define CFG_LOOP_OBEN 0x01 |
#define CFG_LOOP_UNTEN 0x02 |
#define CFG_LOOP_LINKS 0x04 |
#define CFG_LOOP_RECHTS 0x08 |
//#define SYSCLK |
//extern unsigned long SYSCLK; |
extern volatile int i_Nick[20],i_Roll[20],DiffNick,DiffRoll; |
extern volatile unsigned char SenderOkay; |
extern unsigned char CosinusNickWinkel, CosinusRollWinkel; |
extern unsigned char PlatinenVersion; |
extern unsigned char SendVersionToNavi; |
void ReadParameterSet (unsigned char number, unsigned char *buffer, unsigned char length); |
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length); |
extern unsigned char GetActiveParamSetNumber(void); |
extern unsigned char EEPromArray[]; |
#include <stdlib.h> |
#include <string.h> |
#include <avr/io.h> |
#include <avr/pgmspace.h> |
#include <avr/interrupt.h> |
#include <avr/eeprom.h> |
#include <avr/boot.h> |
#include <avr/wdt.h> |
#include "old_macros.h" |
#include "_Settings.h" |
#include "printf_P.h" |
#include "timer0.h" |
#include "uart.h" |
#include "analog.h" |
#include "twimaster.h" |
#include "menu.h" |
#include "rc.h" |
#include "fc.h" |
#include "gps.h" |
#include "spi.h" |
#include "led.h" |
#ifndef EEMEM |
#define EEMEM __attribute__ ((section (".eeprom"))) |
#endif |
#define DEBUG_DISPLAY_INTERVALL 123 // in ms |
#define DELAY_US(x) ((unsigned int)( (x) * 1e-6 * F_CPU )) |
#endif //_MAIN_H |
/branches/V0.70_safer_engine_stop/makefile |
---|
0,0 → 1,431 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega644 |
F_CPU = 20000000 |
#------------------------------------------------------------------- |
HAUPT_VERSION = 0 |
NEBEN_VERSION = 70 |
VERSION_INDEX = 3 |
VERSION_KOMPATIBEL = 8 # PC-Kompatibilität |
#------------------------------------------------------------------- |
ifeq ($(MCU), atmega32) |
# FUSE_SETTINGS= -u -U lfuse:w:0xff:m -U hfuse:w:0xcf:m |
HEX_NAME = MEGA32 |
endif |
ifeq ($(MCU), atmega644) |
FUSE_SETTINGS = -u -U lfuse:w:0xff:m -U hfuse:w:0xdf:m |
#FUSE_SETTINGS = -U lfuse:w:0xff:m -U hfuse:w:0xdf:m |
# -u bei neuen Controllern wieder einspielen |
HEX_NAME = MEGA644 |
endif |
ifeq ($(MCU), atmega644p) |
FUSE_SETTINGS = -u -U lfuse:w:0xff:m -U hfuse:w:0xdf:m |
HEX_NAME = MEGA644 |
endif |
ifeq ($(F_CPU), 16000000) |
QUARZ = 16MHZ |
endif |
ifeq ($(F_CPU), 20000000) |
QUARZ = 20MHZ |
endif |
# Output format. (can be srec, ihex, binary) |
FORMAT = ihex |
# Target file name (without extension). |
ifeq ($(VERSION_INDEX), 0) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)a |
endif |
ifeq ($(VERSION_INDEX), 1) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)b |
endif |
ifeq ($(VERSION_INDEX), 2) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)c |
endif |
ifeq ($(VERSION_INDEX), 3) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)d |
endif |
ifeq ($(VERSION_INDEX), 4) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)e |
endif |
ifeq ($(VERSION_INDEX), 5) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)f |
endif |
ifeq ($(VERSION_INDEX), 6) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)g |
endif |
ifeq ($(VERSION_INDEX), 7) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)h |
endif |
ifeq ($(VERSION_INDEX), 8) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)i |
endif |
ifeq ($(VERSION_INDEX), 9) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)j |
endif |
ifeq ($(VERSION_INDEX), 10) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)k |
endif |
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
OPT = s |
########################################################################################################## |
# List C source files here. (C dependencies are automatically generated.) |
SRC = main.c uart.c printf_P.c timer0.c analog.c menu.c |
SRC += twimaster.c rc.c fc.c GPS.c spi.c led.c |
########################################################################################################## |
# List Assembler source files here. |
# Make them always end in a capital .S. Files ending in a lowercase .s |
# will not be considered source files but generated files (assembler |
# output from the compiler), and will be deleted upon "make clean"! |
# Even though the DOS/Win* filesystem matches both .s and .S the same, |
# it will preserve the spelling of the filenames, and gcc itself does |
# care about how the name is spelled on its command-line. |
ASRC = |
# List any extra directories to look for include files here. |
# Each directory must be seperated by a space. |
EXTRAINCDIRS = |
# Optional compiler flags. |
# -g: generate debugging information (for GDB, or for COFF conversion) |
# -O*: optimization level |
# -f...: tuning, see gcc manual and avr-libc documentation |
# -Wall...: warning level |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create assembler listing |
CFLAGS = -O$(OPT) \ |
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \ |
-Wall -Wstrict-prototypes \ |
-Wa,-adhlns=$(<:.c=.lst) \ |
$(patsubst %,-I%,$(EXTRAINCDIRS)) |
# Set a "language standard" compiler flag. |
# Unremark just one line below to set the language standard to use. |
# gnu99 = C99 + GNU extensions. See GCC manual for more information. |
#CFLAGS += -std=c89 |
#CFLAGS += -std=gnu89 |
#CFLAGS += -std=c99 |
CFLAGS += -std=gnu99 |
CFLAGS += -DVERSION_HAUPTVERSION=$(HAUPT_VERSION) -DVERSION_NEBENVERSION=$(NEBEN_VERSION) -DVERSION_KOMPATIBEL=$(VERSION_KOMPATIBEL) -DVERSION_INDEX=$(VERSION_INDEX) |
# Optional assembler flags. |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create listing |
# -gstabs: have the assembler create line number information; note that |
# for use in COFF files, additional information about filenames |
# and function names needs to be present in the assembler source |
# files -- see avr-libc docs [FIXME: not yet described there] |
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs |
# Optional linker flags. |
# -Wl,...: tell GCC to pass this to linker. |
# -Map: create map file |
# --cref: add cross reference to map file |
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref |
# Additional libraries |
# Minimalistic printf version |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min |
# Floating point printf version (requires -lm below) |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt |
# -lm = math library |
LDFLAGS += -lm |
##LDFLAGS += -T./linkerfile/avr5.x |
# Programming support using avrdude. Settings and variables. |
# Programming hardware: alf avr910 avrisp bascom bsd |
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 |
# |
# Type: avrdude -c ? |
# to get a full listing. |
# |
#AVRDUDE_PROGRAMMER = dt006 |
#AVRDUDE_PROGRAMMER = stk200 |
#AVRDUDE_PROGRAMMER = ponyser |
AVRDUDE_PROGRAMMER = avrispv2 |
#falls Ponyser ausgewählt wird, muss sich unsere avrdude-Configdatei im Bin-Verzeichnis des Compilers befinden |
#AVRDUDE_PORT = com1 # programmer connected to serial device |
#AVRDUDE_PORT = lpt1 # programmer connected to parallel port |
AVRDUDE_PORT = usb # programmer connected to USB |
#AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex |
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex $(FUSE_SETTINGS) |
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep |
#avrdude -c avrispv2 -P usb -p m32 -U flash:w:blink.hex |
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) |
# Uncomment the following if you want avrdude's erase cycle counter. |
# Note that this counter needs to be initialized first using -Yn, |
# see avrdude manual. |
#AVRDUDE_ERASE += -y |
# Uncomment the following if you do /not/ wish a verification to be |
# performed after programming the device. |
AVRDUDE_FLAGS += -V |
# Increase verbosity level. Please use this when submitting bug |
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> |
# to submit bug reports. |
#AVRDUDE_FLAGS += -v -v |
# --------------------------------------------------------------------------- |
# Define directories, if needed. |
DIRAVR = c:/winavr |
DIRAVRBIN = $(DIRAVR)/bin |
DIRAVRUTILS = $(DIRAVR)/utils/bin |
DIRINC = . |
DIRLIB = $(DIRAVR)/avr/lib |
# Define programs and commands. |
SHELL = sh |
CC = avr-gcc |
OBJCOPY = avr-objcopy |
OBJDUMP = avr-objdump |
SIZE = avr-size |
# Programming support using avrdude. |
AVRDUDE = avrdude |
REMOVE = rm -f |
COPY = cp |
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
ELFSIZE = $(SIZE) -A $(TARGET).elf |
# Define Messages |
# English |
MSG_ERRORS_NONE = Errors: none |
MSG_BEGIN = -------- begin -------- |
MSG_END = -------- end -------- |
MSG_SIZE_BEFORE = Size before: |
MSG_SIZE_AFTER = Size after: |
MSG_COFF = Converting to AVR COFF: |
MSG_EXTENDED_COFF = Converting to AVR Extended COFF: |
MSG_FLASH = Creating load file for Flash: |
MSG_EEPROM = Creating load file for EEPROM: |
MSG_EXTENDED_LISTING = Creating Extended Listing: |
MSG_SYMBOL_TABLE = Creating Symbol Table: |
MSG_LINKING = Linking: |
MSG_COMPILING = Compiling: |
MSG_ASSEMBLING = Assembling: |
MSG_CLEANING = Cleaning project: |
# Define all object files. |
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) |
# Define all listing files. |
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) |
# Combine all necessary flags and optional flags. |
# Add target processor to flags. |
#ALL_CFLAGS = -mmcu=$(MCU) -DF_CPU=$(F_CPU) -I. $(CFLAGS) |
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) |
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) |
# Default target. |
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
$(TARGET).lss $(TARGET).sym sizeafter finished end |
# Eye candy. |
# AVR Studio 3.x does not check make's exit code but relies on |
# the following magic strings to be generated by the compile job. |
begin: |
@echo |
@echo $(MSG_BEGIN) |
finished: |
@echo $(MSG_ERRORS_NONE) |
end: |
@echo $(MSG_END) |
@echo |
# Display size of file. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi |
# Display compiler version information. |
gccversion : |
@$(CC) --version |
# Convert ELF to COFF for use in debugging / simulating in |
# AVR Studio or VMLAB. |
COFFCONVERT=$(OBJCOPY) --debugging \ |
--change-section-address .data-0x800000 \ |
--change-section-address .bss-0x800000 \ |
--change-section-address .noinit-0x800000 \ |
--change-section-address .eeprom-0x810000 |
coff: $(TARGET).elf |
@echo |
@echo $(MSG_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof |
extcoff: $(TARGET).elf |
@echo |
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof |
# Program the device. |
program: $(TARGET).hex $(TARGET).eep |
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
# Create final output files (.hex, .eep) from ELF output file. |
%.hex: %.elf |
@echo |
@echo $(MSG_FLASH) $@ |
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ |
%.eep: %.elf |
@echo |
@echo $(MSG_EEPROM) $@ |
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ |
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@ |
# Create extended listing file from ELF output file. |
%.lss: %.elf |
@echo |
@echo $(MSG_EXTENDED_LISTING) $@ |
$(OBJDUMP) -h -S $< > $@ |
# Create a symbol table from ELF output file. |
%.sym: %.elf |
@echo |
@echo $(MSG_SYMBOL_TABLE) $@ |
avr-nm -n $< > $@ |
# Link: create ELF output file from object files. |
.SECONDARY : $(TARGET).elf |
.PRECIOUS : $(OBJ) |
%.elf: $(OBJ) |
@echo |
@echo $(MSG_LINKING) $@ |
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) |
# Compile: create object files from C source files. |
%.o : %.c |
@echo |
@echo $(MSG_COMPILING) $< |
$(CC) -c $(ALL_CFLAGS) $< -o $@ |
# Compile: create assembler files from C source files. |
%.s : %.c |
$(CC) -S $(ALL_CFLAGS) $< -o $@ |
# Assemble: create object files from assembler source files. |
%.o : %.S |
@echo |
@echo $(MSG_ASSEMBLING) $< |
$(CC) -c $(ALL_ASFLAGS) $< -o $@ |
# Target: clean project. |
clean: begin clean_list finished end |
clean_list : |
@echo |
@echo $(MSG_CLEANING) |
# $(REMOVE) $(TARGET).hex |
$(REMOVE) $(TARGET).eep |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).cof |
$(REMOVE) $(TARGET).elf |
$(REMOVE) $(TARGET).map |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).a90 |
$(REMOVE) $(TARGET).sym |
$(REMOVE) $(TARGET).lnk |
$(REMOVE) $(TARGET).lss |
$(REMOVE) $(OBJ) |
$(REMOVE) $(LST) |
$(REMOVE) $(SRC:.c=.s) |
$(REMOVE) $(SRC:.c=.d) |
# Automatically generate C source code dependencies. |
# (Code originally taken from the GNU make user manual and modified |
# (See README.txt Credits).) |
# |
# Note that this will work with sh (bash) and sed that is shipped with WinAVR |
# (see the SHELL variable defined above). |
# This may not work with other shells or other seds. |
# |
%.d: %.c |
set -e; $(CC) -MM $(ALL_CFLAGS) $< \ |
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ |
[ -s $@ ] || rm -f $@ |
# Remove the '-' if you want to see the dependency files generated. |
-include $(SRC:.c=.d) |
# Listing of phony targets. |
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \ |
clean clean_list program |
/branches/V0.70_safer_engine_stop/menu.c |
---|
0,0 → 1,141 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned int TestInt = 0; |
#define ARRAYGROESSE 10 |
unsigned char Array[ARRAYGROESSE] = {1,2,3,4,5,6,7,8,9,10}; |
char DisplayBuff[80] = "Hallo Welt"; |
unsigned char DispPtr = 0; |
unsigned char RemoteTasten = 0; |
#define KEY1 0x01 |
#define KEY2 0x02 |
#define KEY3 0x04 |
#define KEY4 0x08 |
#define KEY5 0x10 |
void LcdClear(void) |
{ |
unsigned char i; |
for(i=0;i<80;i++) DisplayBuff[i] = ' '; |
} |
void Menu(void) |
{ |
static unsigned char MaxMenue = 11,MenuePunkt=0; |
if(RemoteTasten & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue; LcdClear(); RemotePollDisplayLine = -1; } |
if(RemoteTasten & KEY2) { MenuePunkt++; LcdClear(); RemotePollDisplayLine = -1;} |
if((RemoteTasten & KEY1) && (RemoteTasten & KEY2)) MenuePunkt = 0; |
if(MenuePunkt < 10) {LCD_printfxy(17,0,"[%i]",MenuePunkt);} else {LCD_printfxy(16,0,"[%i]",MenuePunkt);}; |
switch(MenuePunkt) |
{ |
case 0: |
LCD_printfxy(0,0,"+ MikroKopter +"); |
LCD_printfxy(0,1,"HW:V%d.%d SW:%d.%d%c",PlatinenVersion/10,PlatinenVersion%10,VERSION_HAUPTVERSION, VERSION_NEBENVERSION,VERSION_INDEX+'a'); |
LCD_printfxy(0,2,"Setting: %d ",GetActiveParamSetNumber()); |
LCD_printfxy(0,3,"(c) Holger Buss"); |
// if(RemoteTasten & KEY3) TestInt--; |
// if(RemoteTasten & KEY4) TestInt++; |
break; |
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 |
{ |
LCD_printfxy(0,1,"Keine "); |
LCD_printfxy(0,2,"Höhenregelung"); |
} |
break; |
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: |
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: |
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: |
LCD_printfxy(0,0,"Gyro - Sensor"); |
if(PlatinenVersion == 10) |
{ |
LCD_printfxy(0,1,"Nick %4i (%3i)",AdWertNick - AdNeutralNick, AdNeutralNick); |
LCD_printfxy(0,2,"Roll %4i (%3i)",AdWertRoll - AdNeutralRoll, AdNeutralRoll); |
LCD_printfxy(0,3,"Gier %4i (%3i)",AdNeutralGier - AdWertGier, AdNeutralGier); |
} |
else |
if(PlatinenVersion == 11) |
{ |
LCD_printfxy(0,1,"Nick %4i (%3i)",AdWertNick - AdNeutralNick, AdNeutralNick/2); |
LCD_printfxy(0,2,"Roll %4i (%3i)",AdWertRoll - AdNeutralRoll, AdNeutralRoll/2); |
LCD_printfxy(0,3,"Gier %4i (%3i)",AdNeutralGier - AdWertGier, AdNeutralGier/2); |
} |
else |
{ |
LCD_printfxy(0,1,"Nick %4i (%3i)(%3i)",AdWertNick - AdNeutralNick, AdNeutralNick/2,AnalogOffsetNick); |
LCD_printfxy(0,2,"Roll %4i (%3i)(%3i)",AdWertRoll - AdNeutralRoll, AdNeutralRoll/2,AnalogOffsetRoll); |
LCD_printfxy(0,3,"Gier %4i (%3i)(%3i)",AdNeutralGier - AdWertGier, AdNeutralGier/2,AnalogOffsetGier); |
} |
break; |
case 6: |
LCD_printfxy(0,0,"ACC - Sensor"); |
LCD_printfxy(0,1,"Nick %4i (%3i)",AdWertAccNick,NeutralAccX); |
LCD_printfxy(0,2,"Roll %4i (%3i)",AdWertAccRoll,NeutralAccY); |
LCD_printfxy(0,3,"Hoch %4i (%3i)",Mittelwert_AccHoch/*accumulate_AccHoch / messanzahl_AccHoch*/,(int)NeutralAccZ); |
break; |
case 7: |
LCD_printfxy(0,1,"Spannung: %5i",UBat); |
LCD_printfxy(0,2,"Empf.Pegel:%5i",SenderOkay); |
break; |
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: |
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: |
LCD_printfxy(0,0,"Servo " ); |
LCD_printfxy(0,1,"Setpoint %3i",Parameter_ServoNickControl); |
LCD_printfxy(0,2,"Stellung: %3i",ServoValue); |
LCD_printfxy(0,3,"Range:%3i-%3i",EE_Parameter.ServoNickMin,EE_Parameter.ServoNickMax); |
break; |
case 11: |
LCD_printfxy(0,0,"ExternControl " ); |
LCD_printfxy(0,1,"Ni:%4i Ro:%4i ",ExternControl.Nick,ExternControl.Roll); |
LCD_printfxy(0,2,"Gs:%4i Gi:%4i ",ExternControl.Gas,ExternControl.Gier); |
LCD_printfxy(0,3,"Hi:%4i Cf:%4i ",ExternControl.Hight,ExternControl.Config); |
break; |
default: MaxMenue = MenuePunkt - 1; |
MenuePunkt = 0; |
break; |
} |
RemoteTasten = 0; |
} |
/branches/V0.70_safer_engine_stop/menu.h |
---|
0,0 → 1,6 |
extern void Menu(void); |
extern void LcdClear(void); |
extern char DisplayBuff[80]; |
extern unsigned char DispPtr; |
extern unsigned char RemoteTasten; |
/branches/V0.70_safer_engine_stop/old_macros.h |
---|
0,0 → 1,47 |
/* |
For backwards compatibility only. |
Ingo Busker ingo@mikrocontroller.com |
*/ |
#ifndef cbi |
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) |
#endif |
#ifndef sbi |
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) |
#endif |
#ifndef inb |
#define inb(sfr) _SFR_BYTE(sfr) |
#endif |
#ifndef outb |
#define outb(sfr, val) (_SFR_BYTE(sfr) = (val)) |
#endif |
#ifndef inw |
#define inw(sfr) _SFR_WORD(sfr) |
#endif |
#ifndef outw |
#define outw(sfr, val) (_SFR_WORD(sfr) = (val)) |
#endif |
#ifndef outp |
#define outp(val, sfr) outb(sfr, val) |
#endif |
#ifndef inp |
#define inp(sfr) inb(sfr) |
#endif |
#ifndef BV |
#define BV(bit) _BV(bit) |
#endif |
#ifndef PRG_RDB |
#define PRG_RDB pgm_read_byte |
#endif |
/branches/V0.70_safer_engine_stop/printf_P.c |
---|
0,0 → 1,480 |
// Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist nicht von der Lizenz für den MikroKopter-Teil unterstellt |
/* |
Copyright (C) 1993 Free Software Foundation |
This file is part of the GNU IO Library. This library is free |
software; you can redistribute it and/or modify it under the |
terms of the GNU General Public License as published by the |
Free Software Foundation; either version 2, or (at your option) |
any later version. |
This library is distributed in the hope that it will be useful, |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
GNU General Public License for more details. |
You should have received a copy of the GNU General Public License |
along with this library; see the file COPYING. If not, write to the Free |
Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
As a special exception, if you link this library with files |
compiled with a GNU compiler to produce an executable, this does not cause |
the resulting executable to be covered by the GNU General Public License. |
This exception does not however invalidate any other reasons why |
the executable file might be covered by the GNU General Public License. */ |
/* |
* Copyright (c) 1990 Regents of the University of California. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. [rescinded 22 July 1999] |
* 4. Neither the name of the University nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
/****************************************************************************** |
This file is a patched version of printf called _printf_P |
It is made to work with avr-gcc for Atmel AVR MCUs. |
There are some differences from standard printf: |
1. There is no floating point support (with fp the code is about 8K!) |
2. Return type is void |
3. Format string must be in program memory (by using macro printf this is |
done automaticaly) |
4. %n is not implemented (just remove the comment around it if you need it) |
5. If LIGHTPRINTF is defined, the code is about 550 bytes smaller and the |
folowing specifiers are disabled : |
space # * . - + p s o O |
6. A function void uart_sendchar(char c) is used for output. The UART must |
be initialized before using printf. |
Alexander Popov |
sasho@vip.orbitel.bg |
******************************************************************************/ |
/* |
* Actual printf innards. |
* |
* This code is large and complicated... |
*/ |
#include <string.h> |
#ifdef __STDC__ |
#include <stdarg.h> |
#else |
#include <varargs.h> |
#endif |
#include "main.h" |
//#define LIGHTPRINTF |
char PrintZiel; |
char Putchar(char zeichen) |
{ |
if(PrintZiel == OUT_LCD) { DisplayBuff[DispPtr++] = zeichen; return(1);} |
else return(uart_putchar(zeichen)); |
} |
void PRINT(const char * ptr, unsigned int len) |
{ |
for(;len;len--) Putchar(*ptr++); |
} |
void PRINTP(const char * ptr, unsigned int len) |
{ |
for(;len;len--) Putchar(pgm_read_byte(ptr++)); |
} |
void PAD_SP(signed char howmany) |
{ |
for(;howmany>0;howmany--) Putchar(' '); |
} |
void PAD_0(signed char howmany) |
{ |
for(;howmany>0;howmany--) Putchar('0'); |
} |
#define BUF 40 |
/* |
* Macros for converting digits to letters and vice versa |
*/ |
#define to_digit(c) ((c) - '0') |
#define is_digit(c) ((c)<='9' && (c)>='0') |
#define to_char(n) ((n) + '0') |
/* |
* Flags used during conversion. |
*/ |
#define LONGINT 0x01 /* long integer */ |
#define LONGDBL 0x02 /* long double; unimplemented */ |
#define SHORTINT 0x04 /* short integer */ |
#define ALT 0x08 /* alternate form */ |
#define LADJUST 0x10 /* left adjustment */ |
#define ZEROPAD 0x20 /* zero (as opposed to blank) pad */ |
#define HEXPREFIX 0x40 /* add 0x or 0X prefix */ |
void _printf_P (char ziel,char const *fmt0, ...) /* Works with string from FLASH */ |
{ |
va_list ap; |
register const char *fmt; /* format string */ |
register char ch; /* character from fmt */ |
register int n; /* handy integer (short term usage) */ |
register char *cp; /* handy char pointer (short term usage) */ |
const char *fmark; /* for remembering a place in fmt */ |
register unsigned char flags; /* flags as above */ |
signed char width; /* width from format (%8d), or 0 */ |
signed char prec; /* precision from format (%.3d), or -1 */ |
char sign; /* sign prefix (' ', '+', '-', or \0) */ |
unsigned long _ulong=0; /* integer arguments %[diouxX] */ |
#define OCT 8 |
#define DEC 10 |
#define HEX 16 |
unsigned char base; /* base for [diouxX] conversion */ |
signed char dprec; /* a copy of prec if [diouxX], 0 otherwise */ |
signed char dpad; /* extra 0 padding needed for integers */ |
signed char fieldsz; /* field size expanded by sign, dpad etc */ |
/* The initialization of 'size' is to suppress a warning that |
'size' might be used unitialized. It seems gcc can't |
quite grok this spaghetti code ... */ |
signed char size = 0; /* size of converted field or string */ |
char buf[BUF]; /* space for %c, %[diouxX], %[eEfgG] */ |
char ox[2]; /* space for 0x hex-prefix */ |
PrintZiel = ziel; // bestimmt, LCD oder UART |
va_start(ap, fmt0); |
fmt = fmt0; |
/* |
* Scan the format for conversions (`%' character). |
*/ |
for (;;) { |
for (fmark = fmt; (ch = pgm_read_byte(fmt)) != '\0' && ch != '%'; fmt++) |
/* void */; |
if ((n = fmt - fmark) != 0) { |
PRINTP(fmark, n); |
} |
if (ch == '\0') |
goto done; |
fmt++; /* skip over '%' */ |
flags = 0; |
dprec = 0; |
width = 0; |
prec = -1; |
sign = '\0'; |
rflag: ch = PRG_RDB(fmt++); |
reswitch: |
#ifdef LIGHTPRINTF |
if (ch=='o' || ch=='u' || (ch|0x20)=='x') { |
#else |
if (ch=='u' || (ch|0x20)=='x') { |
#endif |
if (flags&LONGINT) { |
_ulong=va_arg(ap, unsigned long); |
} else { |
register unsigned int _d; |
_d=va_arg(ap, unsigned int); |
_ulong = flags&SHORTINT ? (unsigned long)(unsigned short)_d : (unsigned long)_d; |
} |
} |
#ifndef LIGHTPRINTF |
if(ch==' ') { |
/* |
* ``If the space and + flags both appear, the space |
* flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
if (!sign) |
sign = ' '; |
goto rflag; |
} else if (ch=='#') { |
flags |= ALT; |
goto rflag; |
} else if (ch=='*'||ch=='-') { |
if (ch=='*') { |
/* |
* ``A negative field width argument is taken as a |
* - flag followed by a positive field width.'' |
* -- ANSI X3J11 |
* They don't exclude field widths read from args. |
*/ |
if ((width = va_arg(ap, int)) >= 0) |
goto rflag; |
width = -width; |
} |
flags |= LADJUST; |
flags &= ~ZEROPAD; /* '-' disables '0' */ |
goto rflag; |
} else if (ch=='+') { |
sign = '+'; |
goto rflag; |
} else if (ch=='.') { |
if ((ch = PRG_RDB(fmt++)) == '*') { |
n = va_arg(ap, int); |
prec = n < 0 ? -1 : n; |
goto rflag; |
} |
n = 0; |
while (is_digit(ch)) { |
n = n*10 + to_digit(ch); |
ch = PRG_RDB(fmt++); |
} |
prec = n < 0 ? -1 : n; |
goto reswitch; |
} else |
#endif /* LIGHTPRINTF */ |
if (ch=='0') { |
/* |
* ``Note that 0 is taken as a flag, not as the |
* beginning of a field width.'' |
* -- ANSI X3J11 |
*/ |
if (!(flags & LADJUST)) |
flags |= ZEROPAD; /* '-' disables '0' */ |
goto rflag; |
} else if (ch>='1' && ch<='9') { |
n = 0; |
do { |
n = 10 * n + to_digit(ch); |
ch = PRG_RDB(fmt++); |
} while (is_digit(ch)); |
width = n; |
goto reswitch; |
} else if (ch=='h') { |
flags |= SHORTINT; |
goto rflag; |
} else if (ch=='l') { |
flags |= LONGINT; |
goto rflag; |
} else if (ch=='c') { |
*(cp = buf) = va_arg(ap, int); |
size = 1; |
sign = '\0'; |
} else if (ch=='D'||ch=='d'||ch=='i') { |
if(ch=='D') |
flags |= LONGINT; |
if (flags&LONGINT) { |
_ulong=va_arg(ap, long); |
} else { |
register int _d; |
_d=va_arg(ap, int); |
_ulong = flags&SHORTINT ? (long)(short)_d : (long)_d; |
} |
if ((long)_ulong < 0) { |
_ulong = -_ulong; |
sign = '-'; |
} |
base = DEC; |
goto number; |
} else |
/* |
if (ch=='n') { |
if (flags & LONGINT) |
*va_arg(ap, long *) = ret; |
else if (flags & SHORTINT) |
*va_arg(ap, short *) = ret; |
else |
*va_arg(ap, int *) = ret; |
continue; // no output |
} else |
*/ |
#ifndef LIGHTPRINTF |
if (ch=='O'||ch=='o') { |
if (ch=='O') |
flags |= LONGINT; |
base = OCT; |
goto nosign; |
} else if (ch=='p') { |
/* |
* ``The argument shall be a pointer to void. The |
* value of the pointer is converted to a sequence |
* of printable characters, in an implementation- |
* defined manner.'' |
* -- ANSI X3J11 |
*/ |
/* NOSTRICT */ |
_ulong = (unsigned int)va_arg(ap, void *); |
base = HEX; |
flags |= HEXPREFIX; |
ch = 'x'; |
goto nosign; |
} else if (ch=='s') { // print a string from RAM |
if ((cp = va_arg(ap, char *)) == NULL) { |
cp=buf; |
cp[0] = '('; |
cp[1] = 'n'; |
cp[2] = 'u'; |
cp[4] = cp[3] = 'l'; |
cp[5] = ')'; |
cp[6] = '\0'; |
} |
if (prec >= 0) { |
/* |
* can't use strlen; can only look for the |
* NUL in the first `prec' characters, and |
* strlen() will go further. |
*/ |
char *p = (char*)memchr(cp, 0, prec); |
if (p != NULL) { |
size = p - cp; |
if (size > prec) |
size = prec; |
} else |
size = prec; |
} else |
size = strlen(cp); |
sign = '\0'; |
} else |
#endif /* LIGHTPRINTF */ |
if(ch=='U'||ch=='u') { |
if (ch=='U') |
flags |= LONGINT; |
base = DEC; |
goto nosign; |
} else if (ch=='X'||ch=='x') { |
base = HEX; |
/* leading 0x/X only if non-zero */ |
if (flags & ALT && _ulong != 0) |
flags |= HEXPREFIX; |
/* unsigned conversions */ |
nosign: sign = '\0'; |
/* |
* ``... diouXx conversions ... if a precision is |
* specified, the 0 flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
number: if ((dprec = prec) >= 0) |
flags &= ~ZEROPAD; |
/* |
* ``The result of converting a zero value with an |
* explicit precision of zero is no characters.'' |
* -- ANSI X3J11 |
*/ |
cp = buf + BUF; |
if (_ulong != 0 || prec != 0) { |
register unsigned char _d,notlastdigit; |
do { |
notlastdigit=(_ulong>=base); |
_d = _ulong % base; |
if (_d<10) { |
_d+='0'; |
} else { |
_d+='a'-10; |
if (ch=='X') _d&=~0x20; |
} |
*--cp=_d; |
_ulong /= base; |
} while (notlastdigit); |
#ifndef LIGHTPRINTF |
// handle octal leading 0 |
if (base==OCT && flags & ALT && *cp != '0') |
*--cp = '0'; |
#endif |
} |
size = buf + BUF - cp; |
} else { //default |
/* "%?" prints ?, unless ? is NUL */ |
if (ch == '\0') |
goto done; |
/* pretend it was %c with argument ch */ |
cp = buf; |
*cp = ch; |
size = 1; |
sign = '\0'; |
} |
/* |
* All reasonable formats wind up here. At this point, |
* `cp' points to a string which (if not flags&LADJUST) |
* should be padded out to `width' places. If |
* flags&ZEROPAD, it should first be prefixed by any |
* sign or other prefix; otherwise, it should be blank |
* padded before the prefix is emitted. After any |
* left-hand padding and prefixing, emit zeroes |
* required by a decimal [diouxX] precision, then print |
* the string proper, then emit zeroes required by any |
* leftover floating precision; finally, if LADJUST, |
* pad with blanks. |
*/ |
/* |
* compute actual size, so we know how much to pad. |
*/ |
fieldsz = size; |
dpad = dprec - size; |
if (dpad < 0) |
dpad = 0; |
if (sign) |
fieldsz++; |
else if (flags & HEXPREFIX) |
fieldsz += 2; |
fieldsz += dpad; |
/* right-adjusting blank padding */ |
if ((flags & (LADJUST|ZEROPAD)) == 0) |
PAD_SP(width - fieldsz); |
/* prefix */ |
if (sign) { |
PRINT(&sign, 1); |
} else if (flags & HEXPREFIX) { |
ox[0] = '0'; |
ox[1] = ch; |
PRINT(ox, 2); |
} |
/* right-adjusting zero padding */ |
if ((flags & (LADJUST|ZEROPAD)) == ZEROPAD) |
PAD_0(width - fieldsz); |
/* leading zeroes from decimal precision */ |
PAD_0(dpad); |
/* the string or number proper */ |
PRINT(cp, size); |
/* left-adjusting padding (always blank) */ |
if (flags & LADJUST) |
PAD_SP(width - fieldsz); |
} |
done: |
va_end(ap); |
} |
/branches/V0.70_safer_engine_stop/printf_P.h |
---|
0,0 → 1,19 |
#ifndef _PRINTF_P_H_ |
#define _PRINTF_P_H_ |
#include <avr/pgmspace.h> |
#define OUT_V24 0 |
#define OUT_LCD 1 |
void _printf_P (char, char const *fmt0, ...); |
extern char PrintZiel; |
#define printf_P(format, args...) _printf_P(OUT_V24,format , ## args) |
#define printf(format, args...) _printf_P(OUT_V24,PSTR(format) , ## args) |
#define LCD_printfxy(x,y,format, args...) { DispPtr = y * 20 + x; _printf_P(OUT_LCD,PSTR(format) , ## args);} |
#define LCD_printf(format, args...) { _printf_P(OUT_LCD,PSTR(format) , ## args);} |
#endif |
/branches/V0.70_safer_engine_stop/rc.c |
---|
0,0 → 1,85 |
/*####################################################################################### |
Decodieren eines RC Summen Signals |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "rc.h" |
#include "main.h" |
volatile int PPM_in[11]; |
volatile int PPM_diff[11]; // das diffenzierte Stick-Signal |
volatile unsigned char NewPpmData = 1; |
//############################################################################ |
//zum decodieren des PPM-Signals wird Timer1 mit seiner Input |
//Capture Funktion benutzt: |
void rc_sum_init (void) |
//############################################################################ |
{ |
TCCR1B=(1<<CS11)|(1<<CS10)|(1<<ICES1)|(1<<ICNC1);//|(1 << WGM12); //timer1 prescale 64 |
// PWM |
//TCCR1A = (1 << COM1B1) | (1 << WGM11) | (1 << WGM10); |
//TCCR1B |= (1 << WGM12); |
//OCR1B = 55; |
TIMSK1 |= _BV(ICIE1); |
AdNeutralGier = 0; |
AdNeutralRoll = 0; |
AdNeutralNick = 0; |
return; |
} |
//############################################################################ |
//Diese Routine startet und inizialisiert den Timer für RC |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int AltICR=0; |
signed int signal = 0,tmp; |
static int index; |
signal = (unsigned int) ICR1 - AltICR; |
AltICR = ICR1; |
//Syncronisationspause? |
// if((signal > (int) Parameter_UserParam2 * 10) && (signal < 8000)) |
if((signal > 1100) && (signal < 8000)) |
{ |
if(index >= 4) NewPpmData = 0; // Null bedeutet: Neue Daten |
index = 1; |
} |
else |
{ |
if(index < 10) |
{ |
if((signal > 250) && (signal < 687)) |
{ |
signal -= 466; |
// Stabiles Signal |
if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10;} |
// tmp = (7 * (PPM_in[index]) + signal) / 8; |
tmp = (3 * (PPM_in[index]) + signal) / 4; |
if(tmp > signal+1) tmp--; else |
if(tmp < signal-1) tmp++; |
if(SenderOkay >= 195) PPM_diff[index] = ((tmp - PPM_in[index]) / 3) * 3; |
else PPM_diff[index] = 0; |
PPM_in[index] = tmp; |
} |
index++; |
if(index == 5) PORTD |= 0x20; else PORTD &= ~0x20; // Servosignal an J3 anlegen |
if(index == 6) PORTD |= 0x10; else PORTD &= ~0x10; // Servosignal an J4 anlegen |
if(index == 7) PORTD |= 0x08; else PORTD &= ~0x08; // Servosignal an J5 anlegen |
} |
} |
} |
/branches/V0.70_safer_engine_stop/rc.h |
---|
0,0 → 1,29 |
/*####################################################################################### |
Derkodieren eines RC Summen Signals |
#######################################################################################*/ |
#ifndef _RC_H |
#define _RC_H |
#if defined (__AVR_ATmega32__) |
#define TIMER_TEILER CK64 |
#define TIMER_RELOAD_VALUE 250 |
#endif |
#if defined (__AVR_ATmega644__) |
//#define TIMER_TEILER CK64 |
#define TIMER_RELOAD_VALUE 250 |
//#define TIMER_TEILER CK256 // bei 20MHz |
//#define TIMER_RELOAD_VALUE -78 // bei 20MHz |
#endif |
#define GAS PPM_in[2] |
extern void rc_sum_init (void); |
extern volatile int PPM_in[11]; |
extern volatile int PPM_diff[11]; // das diffenzierte Stick-Signal |
extern volatile unsigned char NewPpmData; |
#endif //_RC_H |
/branches/V0.70_safer_engine_stop/spi.c |
---|
0,0 → 1,268 |
// ######################## SPI - FlightCtrl ################### |
#include "main.h" |
//struct str_ToNaviCtrl_Version ToNaviCtrl_Version; |
//struct str_FromNaviCtrl_Version FromNaviCtrl_Version; |
struct str_ToNaviCtrl ToNaviCtrl; |
struct str_FromNaviCtrl FromNaviCtrl; |
unsigned char SPI_BufferIndex; |
unsigned char SPI_RxBufferIndex; |
volatile unsigned char SPI_Buffer[sizeof(FromNaviCtrl)]; |
unsigned char *SPI_TX_Buffer; |
unsigned char SPITransferCompleted, SPI_ChkSum; |
unsigned char SPI_RxDataValid; |
unsigned char SPI_CommandSequence[] = { SPI_CMD_USER, SPI_CMD_STICK, SPI_CMD_PARAMETER1, SPI_CMD_STICK, SPI_CMD_CAL_COMPASS}; |
unsigned char SPI_CommandCounter = 0; |
#ifdef USE_SPI_COMMUNICATION |
//------------------------------------------------------ |
void SPI_MasterInit(void) |
{ |
DDR_SPI |= (1<<DD_MOSI)|(1<<DD_SCK); // Set MOSI and SCK output, all others input |
SLAVE_SELECT_DDR_PORT |= (1 << SPI_SLAVE_SELECT); |
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR1)|(0<<SPR0)|(0<<SPIE); // Enable SPI, Master, set clock rate fck/64 |
SPSR = 0;//(1<<SPI2X); |
SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); |
SPITransferCompleted = 1; |
//SPDR = 0x00; // dummy write |
ToNaviCtrl.Sync1 = 0xAA; |
ToNaviCtrl.Sync2 = 0x83; |
ToNaviCtrl.Command = SPI_CMD_USER; |
ToNaviCtrl.IntegralNick = 0; |
ToNaviCtrl.IntegralRoll = 0; |
SPI_RxDataValid = 0; |
} |
//------------------------------------------------------ |
void SPI_StartTransmitPacket(void) |
{ |
//if ((SLAVE_SELECT_PORT & (1 << SPI_SLAVE_SELECT)) == 0) return; // transfer of prev. packet not completed |
if (!SPITransferCompleted) return; |
// _delay_us(30); |
SLAVE_SELECT_PORT &= ~(1 << SPI_SLAVE_SELECT); // SelectSlave |
SPI_TX_Buffer = (unsigned char *) &ToNaviCtrl; |
ToNaviCtrl.Command = SPI_CommandSequence[SPI_CommandCounter++]; |
if (SPI_CommandCounter >= sizeof(SPI_CommandSequence)) SPI_CommandCounter = 0; |
SPITransferCompleted = 0; |
UpdateSPI_Buffer(); // update buffer |
SPI_BufferIndex = 1; |
//ebugOut.Analog[16]++; |
// -- Debug-Output --- |
//---- |
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); |
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); |
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); |
ToNaviCtrl.Chksum = ToNaviCtrl.Sync1; |
SPDR = ToNaviCtrl.Sync1; // Start transmission |
// SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); // DeselectSlave |
} |
//------------------------------------------------------ |
//SIGNAL(SIG_SPI) |
void SPI_TransmitByte(void) |
{ |
static unsigned char SPI_RXState = 0; |
unsigned char rxdata; |
static unsigned char rxchksum; |
if (SPITransferCompleted) return; |
if (!(SPSR & (1 << SPIF))) return; |
SendSPI = 4; |
// _delay_us(30); |
SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); // DeselectSlave |
rxdata = SPDR; |
switch ( SPI_RXState) |
{ |
case 0: |
SPI_RxBufferIndex = 0; |
//DebugOut.Analog[17]++; |
rxchksum = rxdata; |
if (rxdata == 0x81 ) { SPI_RXState = 1; } // 1. Syncbyte ok |
break; |
case 1: |
if (rxdata == 0x55) { rxchksum += rxdata; SPI_RXState = 2; } // 2. Syncbyte ok |
else SPI_RXState = 0; |
//DebugOut.Analog[18]++; |
break; |
case 2: |
SPI_Buffer[SPI_RxBufferIndex++]= rxdata; // get data |
//DebugOut.Analog[19]++; |
if (SPI_RxBufferIndex >= sizeof(FromNaviCtrl)) |
{ |
if (rxdata == rxchksum) |
{ |
unsigned char *ptr = (unsigned char *)&FromNaviCtrl; |
memcpy(ptr, (unsigned char *) SPI_Buffer, sizeof(SPI_Buffer)); |
SPI_RxDataValid = 1; |
} |
else SPI_RxDataValid = 0; |
SPI_RXState = 0; |
} |
else rxchksum += rxdata; |
break; |
} |
if (SPI_BufferIndex < sizeof(ToNaviCtrl)) |
{ |
SLAVE_SELECT_PORT &= ~(1 << SPI_SLAVE_SELECT); // SelectSlave |
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); |
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); |
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); |
SPDR = SPI_TX_Buffer[SPI_BufferIndex]; |
ToNaviCtrl.Chksum += SPI_TX_Buffer[SPI_BufferIndex]; |
// SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); // DeselectSlave |
} |
else SPITransferCompleted = 1; |
SPI_BufferIndex++; |
} |
//------------------------------------------------------ |
void UpdateSPI_Buffer(void) |
{ |
static unsigned char i =0; |
signed int tmp; |
cli(); |
ToNaviCtrl.IntegralNick = (int) (IntegralNick / 108); |
ToNaviCtrl.IntegralRoll = (int) (IntegralRoll / 108); |
ToNaviCtrl.GyroCompass = ErsatzKompass / GIER_GRAD_FAKTOR; |
ToNaviCtrl.AccNick = (int) ACC_AMPLIFY * (NaviAccNick / NaviCntAcc); |
ToNaviCtrl.AccRoll = (int) ACC_AMPLIFY * (NaviAccRoll / NaviCntAcc); |
NaviCntAcc = 0; NaviAccNick = 0; NaviAccRoll = 0; |
// ToNaviCtrl.User8 = Parameter_UserParam8; |
// ToNaviCtrl.CalState = WinkelOut.CalcState; |
switch(ToNaviCtrl.Command) // |
{ |
case SPI_CMD_USER: |
ToNaviCtrl.Param.Byte[0] = Parameter_UserParam1; |
ToNaviCtrl.Param.Byte[1] = Parameter_UserParam2; |
ToNaviCtrl.Param.Byte[2] = Parameter_UserParam3; |
ToNaviCtrl.Param.Byte[3] = Parameter_UserParam4; |
ToNaviCtrl.Param.Byte[4] = Parameter_UserParam5; |
ToNaviCtrl.Param.Byte[5] = Parameter_UserParam6; |
ToNaviCtrl.Param.Byte[6] = Parameter_UserParam7; |
ToNaviCtrl.Param.Byte[7] = Parameter_UserParam8; |
ToNaviCtrl.Param.Byte[8] = (unsigned char) MikroKopterFlags; |
MikroKopterFlags &= ~(FLAG_CALIBRATE | FLAG_START); |
ToNaviCtrl.Param.Byte[9] = (unsigned char) UBat; |
ToNaviCtrl.Param.Byte[10] =(unsigned char) EE_Parameter.UnterspannungsWarnung; |
ToNaviCtrl.Param.Byte[11] =(unsigned char) eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET]); |
break; |
case SPI_CMD_PARAMETER1: |
ToNaviCtrl.Param.Byte[0] = Parameter_NaviGpsModeControl; // Parameters for the Naviboard |
ToNaviCtrl.Param.Byte[1] = Parameter_NaviGpsGain; |
ToNaviCtrl.Param.Byte[2] = Parameter_NaviGpsP; |
ToNaviCtrl.Param.Byte[3] = Parameter_NaviGpsI; |
ToNaviCtrl.Param.Byte[4] = Parameter_NaviGpsD; |
ToNaviCtrl.Param.Byte[5] = Parameter_NaviGpsACC; |
ToNaviCtrl.Param.Byte[6] = EE_Parameter.NaviGpsMinSat; |
ToNaviCtrl.Param.Byte[7] = EE_Parameter.NaviStickThreshold; |
ToNaviCtrl.Param.Byte[8] = 15; // MaxRadius |
break; |
case SPI_CMD_STICK: |
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]]; if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127; |
ToNaviCtrl.Param.Byte[0] = (char) tmp; |
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]; if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127; |
ToNaviCtrl.Param.Byte[1] = (char) tmp; |
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]; if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127; |
ToNaviCtrl.Param.Byte[2] = (char) tmp; |
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_NICK]]; if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127; |
ToNaviCtrl.Param.Byte[3] = (char) tmp; |
ToNaviCtrl.Param.Byte[4] = (unsigned char) Poti1; |
ToNaviCtrl.Param.Byte[5] = (unsigned char) Poti2; |
ToNaviCtrl.Param.Byte[6] = (unsigned char) Poti3; |
ToNaviCtrl.Param.Byte[7] = (unsigned char) Poti4; |
ToNaviCtrl.Param.Byte[8] = (unsigned char) SenderOkay; |
break; |
case SPI_CMD_CAL_COMPASS: |
if(WinkelOut.CalcState > 5) |
{ |
WinkelOut.CalcState = 0; |
ToNaviCtrl.Param.Byte[0] = 5; |
} |
else ToNaviCtrl.Param.Byte[0] = WinkelOut.CalcState; |
break; |
} |
sei(); |
if (SPI_RxDataValid) |
{ |
if(abs(FromNaviCtrl.GPS_Nick) < 512 && abs(FromNaviCtrl.GPS_Roll) < 512 && (EE_Parameter.GlobalConfig & CFG_GPS_AKTIV)) |
{ |
GPS_Nick = FromNaviCtrl.GPS_Nick; |
GPS_Roll = FromNaviCtrl.GPS_Roll; |
} |
if(FromNaviCtrl.CompassValue <= 360) KompassValue = FromNaviCtrl.CompassValue; |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
if(FromNaviCtrl.BeepTime > beeptime && !WinkelOut.CalcState) beeptime = FromNaviCtrl.BeepTime; |
switch (FromNaviCtrl.Command) |
{ |
case SPI_CMD_OSD_DATA: |
// ToFlightCtrl.Param.Byte[0] = OsdBar; |
// ToFlightCtrl.Param.Int[1] = Distance; |
break; |
case SPI_CMD_GPS_POS: |
// ToFlightCtrl.Param.Long[0] = GPS_Data.Longitude; |
// ToFlightCtrl.Param.Long[1] = GPS_Data.Latitude; |
break; |
case SPI_CMD_GPS_TARGET: |
// ToFlightCtrl.Param.Long[0] = GPS_Data.TargetLongitude; |
// ToFlightCtrl.Param.Long[1] = GPS_Data.TargetLatitude; |
break; |
default: |
break; |
} |
} |
else |
{ |
// KompassValue = 0; |
// KompassRichtung = 0; |
GPS_Nick = 0; |
GPS_Roll = 0; |
} |
} |
#endif |
/branches/V0.70_safer_engine_stop/spi.h |
---|
0,0 → 1,123 |
// ######################## SPI - FlightCtrl ################### |
#ifndef _SPI_H |
#define _SPI_H |
#include <util/delay.h> |
#define USE_SPI_COMMUNICATION |
#define SPI_PROTOCOL_COMP 1 |
//----------------------------------------- |
#define DDR_SPI DDRB |
#define DD_SS PB4 |
#define DD_SCK PB7 |
#define DD_MOSI PB5 |
#define DD_MISO PB6 |
// for compatibility reasons gcc3.x <-> gcc4.x |
#ifndef SPCR |
#define SPCR SPCR0 |
#endif |
#ifndef SPE |
#define SPE SPE0 |
#endif |
#ifndef MSTR |
#define MSTR MSTR0 |
#endif |
#ifndef SPR1 |
#define SPR1 SPR01 |
#endif |
#ifndef SPR0 |
#define SPR0 SPR00 |
#endif |
#ifndef SPIE |
#define SPIE SPIE0 |
#endif |
#ifndef SPDR |
#define SPDR SPDR0 |
#endif |
#ifndef SPIF |
#define SPIF SPIF0 |
#endif |
#ifndef SPSR |
#define SPSR SPSR0 |
#endif |
// ------------------------- |
#define SLAVE_SELECT_DDR_PORT DDRC |
#define SLAVE_SELECT_PORT PORTC |
#define SPI_SLAVE_SELECT PC5 |
#define SPI_CMD_USER 10 |
#define SPI_CMD_STICK 11 |
#define SPI_CMD_CAL_COMPASS 12 |
#define SPI_CMD_PARAMETER1 13 |
struct str_ToNaviCtrl |
{ |
unsigned char Sync1, Sync2; |
unsigned char Command; |
signed int IntegralNick; |
signed int IntegralRoll; |
signed int AccNick; |
signed int AccRoll; |
signed int GyroCompass; |
signed int GyroNick; |
signed int GyroRoll; |
signed int GyroGier; |
union |
{ char Byte[12]; |
int Int[6]; |
long Long[3]; |
float Float[3]; |
} Param; |
unsigned char Chksum; |
}; |
#define SPI_CMD_OSD_DATA 100 |
#define SPI_CMD_GPS_POS 101 |
#define SPI_CMD_GPS_TARGET 102 |
struct str_FromNaviCtrl |
{ |
unsigned char Command; |
signed int GPS_Nick; |
signed int GPS_Roll; |
signed int GPS_Gier; |
signed int CompassValue; |
signed int Status; |
unsigned char BeepTime; |
union |
{ char Byte[12]; |
int Int[6]; |
long Long[3]; |
float Float[3]; |
} Param; |
unsigned char Chksum; |
}; |
#ifdef USE_SPI_COMMUNICATION |
extern struct str_ToNaviCtrl ToNaviCtrl; |
extern struct str_FromNaviCtrl FromNaviCtrl; |
extern unsigned char SPI_CommandCounter; |
//#define SPI_CMD_VALUE 0x03 |
extern void SPI_MasterInit(void); |
extern void SPI_StartTransmitPacket(void); |
extern void UpdateSPI_Buffer(void); |
extern void SPI_TransmitByte(void); |
#else |
// -------------------------------- Dummy ----------------------------------------- |
#define SPI_MasterInit() ; |
#define SPI_StartTransmitPacket() ; |
#define UpdateSPI_Buffer() ; |
#define SPI_TransmitByte() ; |
#endif |
#endif |
/branches/V0.70_safer_engine_stop/timer0.c |
---|
0,0 → 1,198 |
#include "main.h" |
volatile unsigned int CountMilliseconds = 0; |
volatile static unsigned int tim_main; |
volatile unsigned char UpdateMotor = 0; |
volatile unsigned int cntKompass = 0; |
volatile unsigned int beeptime = 0; |
volatile unsigned char SendSPI = 0; |
volatile unsigned int ServoState = 40; |
unsigned int BeepMuster = 0xffff; |
unsigned int ServoValue = 0; |
enum { |
STOP = 0, |
CK = 1, |
CK8 = 2, |
CK64 = 3, |
CK256 = 4, |
CK1024 = 5, |
T0_FALLING_EDGE = 6, |
T0_RISING_EDGE = 7 |
}; |
SIGNAL (SIG_OVERFLOW0) // 8kHz |
{ |
static unsigned char cnt_1ms = 1,cnt = 0; |
unsigned char pieper_ein = 0; |
// TCNT0 -= 250;//TIMER_RELOAD_VALUE; |
if(SendSPI) SendSPI--; |
if(!cnt--) |
{ |
cnt = 9; |
cnt_1ms++; |
cnt_1ms %= 2; |
if(!cnt_1ms) UpdateMotor = 1; |
CountMilliseconds++; |
} |
if(beeptime > 1) |
{ |
beeptime--; |
if(beeptime & BeepMuster) |
{ |
pieper_ein = 1; |
} |
else pieper_ein = 0; |
} |
else |
{ |
pieper_ein = 0; |
BeepMuster = 0xffff; |
} |
if(pieper_ein) |
{ |
if(PlatinenVersion == 10) PORTD |= (1<<2); // Speaker an PORTD.2 |
else PORTC |= (1<<7); // Speaker an PORTC.7 |
} |
else |
{ |
if(PlatinenVersion == 10) PORTD &= ~(1<<2); |
else PORTC &= ~(1<<7); |
} |
if(EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV) |
{ |
if(PINC & 0x10) |
{ |
cntKompass++; |
} |
else |
{ |
if((cntKompass) && (cntKompass < 362)) |
{ |
cntKompass += cntKompass / 41; |
if(cntKompass > 10) KompassValue = cntKompass - 10; else KompassValue = 0; |
} |
// if(cntKompass < 10) cntKompass = 10; |
// KompassValue = (unsigned long)((unsigned long)(cntKompass-10)*720L + 1L) / 703L; |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
cntKompass = 0; |
} |
} |
} |
//---------------------------- |
void Timer_Init(void) |
{ |
tim_main = SetDelay(10); |
TCCR0B = CK8; |
TCCR0A = (1<<COM0A1)|(1<<COM0B1)|3;//fast PWM |
OCR0A = 0; |
OCR0B = 120; |
TCNT0 = (unsigned char)-TIMER_RELOAD_VALUE; // reload |
//OCR1 = 0x00; |
TCCR2A=(1<<COM2A1)|(1<<COM2A0)|3; |
// TCCR2B=(0<<CS20)|(1<<CS21)|(1<<CS22); // clk/256 |
TCCR2B=(0<<CS20)|(0<<CS21)|(1<<CS22); // clk/64 |
TIMSK2 |= _BV(OCIE2A); |
TIMSK0 |= _BV(TOIE0); |
OCR2A = 10; |
TCNT2 = 0; |
} |
// ----------------------------------------------------------------------- |
unsigned int SetDelay (unsigned int t) |
{ |
// TIMSK0 &= ~_BV(TOIE0); |
return(CountMilliseconds + t + 1); |
// TIMSK0 |= _BV(TOIE0); |
} |
// ----------------------------------------------------------------------- |
char CheckDelay(unsigned int t) |
{ |
// TIMSK0 &= ~_BV(TOIE0); |
return(((t - CountMilliseconds) & 0x8000) >> 9); |
// TIMSK0 |= _BV(TOIE0); |
} |
// ----------------------------------------------------------------------- |
void Delay_ms(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)); |
} |
void Delay_ms_Mess(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)) ANALOG_ON; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Servo ansteuern |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(SIG_OVERFLOW2) |
{ |
if (ServoState > 0) PORTD |= 0x80; |
else PORTD &= ~0x80; |
TCCR2A =3; |
TIMSK2 &= ~_BV(TOIE2); |
} |
SIGNAL(SIG_OUTPUT_COMPARE2A) |
{ |
static unsigned char postPulse = 0x80; |
static int filterServo = 100; |
#define MULTIPLIER 4 |
if(ServoState == 4) |
{ |
ServoValue = 0x0030; // Offset Part1 |
filterServo = (filterServo * 3 + (int) Parameter_ServoNickControl * 2)/4; |
ServoValue += filterServo; |
if(EE_Parameter.ServoNickCompInvert & 0x01) ServoValue += ((long) ((long)EE_Parameter.ServoNickComp * IntegralNick) / 128L )/ (512L/MULTIPLIER); |
else ServoValue -= ((long) ((long)EE_Parameter.ServoNickComp * IntegralNick) / 128L) / (512L/MULTIPLIER); |
if((ServoValue) < ((int)EE_Parameter.ServoNickMin*3)) ServoValue = (int)EE_Parameter.ServoNickMin*3; |
else if((ServoValue) > ((int)EE_Parameter.ServoNickMax*3)) ServoValue = (int)EE_Parameter.ServoNickMax*3; |
DebugOut.Analog[20] = ServoValue; |
if ((ServoValue % 255) < 45) { ServoValue+= 77; postPulse = 0x60 - 77; } else postPulse = 0x60; |
OCR2A = 255-(ServoValue % 256); |
TCCR2A=(1<<COM2A1)|(1<<COM2A0)|3; |
} |
else if ((ServoState > 0) && (ServoState < 4)) |
{ |
if(ServoValue > 255) |
{ PORTD |= 0x80; |
TCCR2A =3; |
ServoValue -= 255; |
} |
else |
{ |
TCCR2A=(1<<COM2A1)|(0<<COM2A0)|3; |
OCR2A = postPulse; // Offset Part2 |
ServoState = 1; |
} |
} |
else if (ServoState == 0) |
{ |
ServoState = (int) EE_Parameter.ServoNickRefresh * MULTIPLIER; |
PORTD&=~0x80; |
TCCR2A = 3; |
} |
ServoState--; |
} |
/branches/V0.70_safer_engine_stop/timer0.h |
---|
0,0 → 1,17 |
#define TIMER_TEILER CK8 |
#define TIMER_RELOAD_VALUE 250 |
void Timer_Init(void); |
void Delay_ms(unsigned int); |
void Delay_ms_Mess(unsigned int); |
unsigned int SetDelay (unsigned int t); |
char CheckDelay (unsigned int t); |
extern volatile unsigned int CountMilliseconds; |
extern volatile unsigned char UpdateMotor; |
extern volatile unsigned int beeptime; |
extern volatile unsigned int cntKompass; |
extern unsigned int ServoValue; |
extern unsigned int BeepMuster; |
extern volatile unsigned char SendSPI; |
/branches/V0.70_safer_engine_stop/twimaster.c |
---|
0,0 → 1,204 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
volatile unsigned char twi_state = 0; |
unsigned char motor = 0; |
unsigned char motorread = 0; |
unsigned char motor_rx[8]; |
//############################################################################ |
//Initzialisieren der I2C (TWI) Schnittstelle |
void i2c_init(void) |
//############################################################################ |
{ |
TWSR = 0; |
TWBR = ((SYSCLK/SCL_CLOCK)-16)/2; |
} |
//############################################################################ |
//Start I2C |
char i2c_start(void) |
//############################################################################ |
{ |
TWCR = (1<<TWSTA) | (1<<TWEN) | (1<<TWINT) | (1<<TWIE); |
return(0); |
} |
//############################################################################ |
//Start I2C |
void i2c_stop(void) |
//############################################################################ |
{ |
TWCR = (1<<TWEN) | (1<<TWSTO) | (1<<TWINT); |
} |
void i2c_reset(void) |
//############################################################################ |
{ |
i2c_stop(); |
twi_state = 0; |
motor = TWDR; |
motor = 0; |
TWCR = 0x80; |
TWAMR = 0; |
TWAR = 0; |
TWDR = 0; |
TWSR = 0; |
TWBR = 0; |
i2c_init(); |
i2c_start(); |
i2c_write_byte(0); |
} |
//############################################################################ |
//Start I2C |
char i2c_write_byte(char byte) |
//############################################################################ |
{ |
TWSR = 0x00; |
TWDR = byte; |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE); |
return(0); |
} |
//############################################################################ |
//Start I2C |
SIGNAL (TWI_vect) |
//############################################################################ |
{ |
switch (twi_state++) |
{ |
case 0: |
i2c_write_byte(0x52+(motor*2)); |
break; |
case 1: |
switch(motor++) |
{ |
case 0: |
i2c_write_byte(Motor_Vorne); |
break; |
case 1: |
i2c_write_byte(Motor_Hinten); |
break; |
case 2: |
i2c_write_byte(Motor_Rechts); |
break; |
case 3: |
i2c_write_byte(Motor_Links); |
break; |
} |
break; |
case 2: |
i2c_stop(); |
if (motor<4) twi_state = 0; |
else motor = 0; |
i2c_start(); |
break; |
//Liest Daten von Motor |
case 3: |
i2c_write_byte(0x53+(motorread*2)); |
break; |
case 4: |
switch(motorread) |
{ |
case 0: |
i2c_write_byte(Motor_Vorne); |
break; |
case 1: |
i2c_write_byte(Motor_Hinten); |
break; |
case 2: |
i2c_write_byte(Motor_Rechts); |
break; |
case 3: |
i2c_write_byte(Motor_Links); |
break; |
} |
break; |
case 5: //1 Byte vom Motor lesen |
motor_rx[motorread] = TWDR; |
case 6: |
switch(motorread) |
{ |
case 0: |
i2c_write_byte(Motor_Vorne); |
break; |
case 1: |
i2c_write_byte(Motor_Hinten); |
break; |
case 2: |
i2c_write_byte(Motor_Rechts); |
break; |
case 3: |
i2c_write_byte(Motor_Links); |
break; |
} |
break; |
case 7: //2 Byte vom Motor lesen |
motor_rx[motorread+4] = TWDR; |
motorread++; |
if (motorread>3) motorread=0; |
i2c_stop(); |
I2CTimeout = 10; |
twi_state = 0; |
break; |
case 8: // Gyro-Offset |
i2c_write_byte(0x98); // Address of the DAC |
break; |
case 9: |
i2c_write_byte(0x10); // Update Channel A |
break; |
case 10: |
i2c_write_byte(AnalogOffsetNick); // Value |
break; |
case 11: |
i2c_write_byte(0x80); // Value |
break; |
case 12: |
i2c_stop(); |
I2CTimeout = 10; |
i2c_start(); |
break; |
case 13: |
i2c_write_byte(0x98); // Address of the DAC |
break; |
case 14: |
i2c_write_byte(0x12); // Update Channel B |
break; |
case 15: |
i2c_write_byte(AnalogOffsetRoll); // Value |
break; |
case 16: |
i2c_write_byte(0x80); // Value |
break; |
case 17: |
i2c_stop(); |
I2CTimeout = 10; |
i2c_start(); |
break; |
case 18: |
i2c_write_byte(0x98); // Address of the DAC |
break; |
case 19: |
i2c_write_byte(0x14); // Update Channel C |
break; |
case 20: |
i2c_write_byte(AnalogOffsetGier); // Value |
break; |
case 21: |
i2c_write_byte(0x80); // Value |
break; |
case 22: |
i2c_stop(); |
I2CTimeout = 10; |
twi_state = 0; |
break; |
} |
TWCR |= 0x80; |
} |
/branches/V0.70_safer_engine_stop/twimaster.h |
---|
0,0 → 1,33 |
/*############################################################################ |
############################################################################*/ |
#ifndef _I2C_MASTER_H |
#define _I2C_MASTER_H |
//############################################################################ |
// I2C Konstanten |
#define SCL_CLOCK 200000L |
#define I2C_TIMEOUT 30000 |
#define I2C_START 0x08 |
#define I2C_REPEATED_START 0x10 |
#define I2C_TX_SLA_ACK 0x18 |
#define I2C_TX_DATA_ACK 0x28 |
#define I2C_RX_SLA_ACK 0x40 |
#define I2C_RX_DATA_ACK 0x50 |
//############################################################################ |
extern volatile unsigned char twi_state; |
extern unsigned char motor; |
extern unsigned char motorread; |
extern unsigned char motor_rx[8]; |
void i2c_reset(void); |
extern void i2c_init (void); // I2C initialisieren |
extern char i2c_start (void); // Start I2C |
extern void i2c_stop (void); // Stop I2C |
extern char i2c_write_byte (char byte); // 1 Byte schreiben |
extern void i2c_reset(void); |
#endif |
/branches/V0.70_safer_engine_stop/uart.c |
---|
0,0 → 1,423 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "uart.h" |
unsigned char DebugGetAnforderung = 0,DebugDisplayAnforderung = 0,DebugDataAnforderung = 0,GetVersionAnforderung = 0; |
unsigned volatile char SioTmp = 0; |
unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NMEABuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NeuerDatensatzEmpfangen = 0; |
unsigned volatile char NeueKoordinateEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned volatile char CntCrcError = 0; |
unsigned volatile char AnzahlEmpfangsBytes = 0; |
unsigned volatile char PC_DebugTimeout = 0; |
unsigned char RemotePollDisplayLine = 0; |
unsigned char NurKanalAnforderung = 0; |
unsigned char DebugTextAnforderung = 255; |
unsigned char PcZugriff = 100; |
unsigned char MotorTest[4] = {0,0,0,0}; |
unsigned char DubWiseKeys[4] = {0,0,0,0}; |
unsigned char MeineSlaveAdresse; |
unsigned char ConfirmFrame; |
struct str_DebugOut DebugOut; |
struct str_ExternControl ExternControl; |
struct str_VersionInfo VersionInfo; |
struct str_WinkelOut WinkelOut; |
int Debug_Timer,Kompass_Timer; |
const unsigned char ANALOG_TEXT[32][16] = |
{ |
//1234567890123456 |
"IntegralNick ", //0 |
"IntegralRoll ", |
"AccNick ", |
"AccRoll ", |
"GyroGier ", |
"HoehenWert ", //5 |
"AccZ ", |
"Gas ", |
"KompassValue ", |
"Spannung ", |
"Empfang ", //10 |
"Ersatzkompass ", |
"Motor_Vorne ", |
"Motor_Hinten ", |
"Motor_Links ", |
"Motor_Rechts ", //15 |
" ", |
"Distance ", |
"OsdBar ", |
"MK3Mag CalState ", |
"Servo ", //20 |
"Nick ", |
"Roll ", |
" ", |
" ", |
" ", //25 |
" ", |
" ", |
" ", |
" ", |
"GPS_Nick ", //30 |
"GPS_Roll " |
}; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Sende-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_TX) |
{ |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!UebertragungAbgeschlossen) |
{ |
ptr++; // die [0] wurde schon gesendet |
tmp_tx = SendeBuffer[ptr]; |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
{ |
ptr = 0; |
UebertragungAbgeschlossen = 1; |
} |
UDR = tmp_tx; |
} |
else ptr = 0; |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung, incl. CRC-Auswertung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
SioTmp = UDR; |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
if(SioTmp == '\r' && UartState == 2) |
{ |
UartState = 0; |
crc -= RxdBuffer[buf_ptr-2]; |
crc -= RxdBuffer[buf_ptr-1]; |
crc %= 4096; |
crc1 = '=' + crc / 64; |
crc2 = '=' + crc % 64; |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; CntCrcError++;}; |
if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet |
{ |
NeuerDatensatzEmpfangen = 1; |
AnzahlEmpfangsBytes = buf_ptr; |
RxdBuffer[buf_ptr] = '\r'; |
if(RxdBuffer[2] == 'R') wdt_enable(WDTO_250MS); // Reset-Commando |
} |
} |
else |
switch(UartState) |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc = SioTmp; |
break; |
case 1: // Adresse auswerten |
UartState++; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
else UartState = 0; |
crc += SioTmp; |
break; |
default: |
UartState = 0; |
break; |
} |
} |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
{ |
tmpCRC += SendeBuffer[i]; |
} |
tmpCRC %= 4096; |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
SendeBuffer[i++] = '\r'; |
UebertragungAbgeschlossen = 0; |
UDR = SendeBuffer[0]; |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
SendeBuffer[pt++] = '#'; // Startzeichen |
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...) |
SendeBuffer[pt++] = cmd; // Commando |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
} |
AddCRC(pt); |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
} |
} |
// -------------------------------------------------------------------------- |
void BearbeiteRxDaten(void) |
{ |
if(!NeuerDatensatzEmpfangen) return; |
unsigned int tmp_int_arr1[1]; |
// unsigned int tmp_int_arr2[2]; |
// unsigned int tmp_int_arr3[3]; |
unsigned char tmp_char_arr2[2]; |
// unsigned char tmp_char_arr3[3]; |
// unsigned char tmp_char_arr4[4]; |
//if(!MotorenEin) |
switch(RxdBuffer[2]) |
{ |
case 'K':// Kompasswert |
Decode64((unsigned char *) &tmp_int_arr1[0],sizeof(tmp_int_arr1),3,AnzahlEmpfangsBytes); |
KompassValue = tmp_int_arr1[0]; |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
break; |
case 'a':// Texte der Analogwerte |
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes); |
DebugTextAnforderung = tmp_char_arr2[0]; |
PcZugriff = 255; |
break; |
case 'b': |
Decode64((unsigned char *) &ExternControl,sizeof(ExternControl),3,AnzahlEmpfangsBytes); |
RemoteTasten |= ExternControl.RemoteTasten; |
ConfirmFrame = ExternControl.Frame; |
PcZugriff = 255; |
break; |
case 'c': |
Decode64((unsigned char *) &ExternControl,sizeof(ExternControl),3,AnzahlEmpfangsBytes); |
RemoteTasten |= ExternControl.RemoteTasten; |
ConfirmFrame = ExternControl.Frame; |
DebugDataAnforderung = 1; |
PcZugriff = 255; |
break; |
case 'h':// x-1 Displayzeilen |
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes); |
RemoteTasten |= tmp_char_arr2[0]; |
if(tmp_char_arr2[1] == 255) NurKanalAnforderung = 1; else NurKanalAnforderung = 0; // keine Displaydaten |
DebugDisplayAnforderung = 1; |
break; |
case 't':// Motortest |
Decode64((unsigned char *) &MotorTest[0],sizeof(MotorTest),3,AnzahlEmpfangsBytes); |
PcZugriff = 255; |
break; |
case 'k':// Keys von DubWise |
Decode64((unsigned char *) &DubWiseKeys[0],sizeof(DubWiseKeys),3,AnzahlEmpfangsBytes); |
ConfirmFrame = DubWiseKeys[3]; |
PcZugriff = 255; |
break; |
case 'v': // Version-Anforderung und Ausbaustufe |
GetVersionAnforderung = 1; |
break; |
case 'g':// "Get"-Anforderung für Debug-Daten |
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
DebugGetAnforderung = 1; |
break; |
case 'q':// "Get"-Anforderung für Settings |
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes); |
while(!UebertragungAbgeschlossen); |
if(tmp_char_arr2[0] != 0xff) |
{ |
if(tmp_char_arr2[0] > 5) tmp_char_arr2[0] = 5; |
ReadParameterSet(tmp_char_arr2[0], (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
SendOutData('L' + tmp_char_arr2[0] -1,MeineSlaveAdresse,(unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE); |
} |
else |
SendOutData('L' + GetActiveParamSetNumber()-1,MeineSlaveAdresse,(unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE); |
break; |
case 'l': |
case 'm': |
case 'n': |
case 'o': |
case 'p': // Parametersatz speichern |
Decode64((unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE,3,AnzahlEmpfangsBytes); |
WriteParameterSet(RxdBuffer[2] - 'l' + 1, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], RxdBuffer[2] - 'l' + 1); // aktiven Datensatz merken |
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L; |
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L; |
Piep(GetActiveParamSetNumber()); |
break; |
} |
// DebugOut.AnzahlZyklen = Debug_Timer_Intervall; |
NeuerDatensatzEmpfangen = 0; |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
if (c == '\n') |
uart_putchar('\r'); |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
//Ausgabe des Zeichens |
UDR = c; |
return (0); |
} |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
//if (ProgramLocation == IN_RAM) Buffer[pos] = wert; |
// else eeprom_write_byte(&EE_Buffer[pos], wert); |
// Buffer[pos] = wert; |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); |
// TX-Interrupt Freigabe |
UCSRB |= (1<<TXCIE); |
//Teiler wird gesetzt |
UBRR=(SYSCLK / (BAUD_RATE * 8L) - 1); |
//UBRR = 33; |
//öffnet einen Kanal für printf (STDOUT) |
//fdevopen (uart_putchar, 0); |
//sbi(PORTD,4); |
Debug_Timer = SetDelay(200); |
Kompass_Timer = SetDelay(220); |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
if(!UebertragungAbgeschlossen) return; |
if(DebugGetAnforderung && UebertragungAbgeschlossen) // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
{ |
SendOutData('G',MeineSlaveAdresse,(unsigned char *) &ExternControl,sizeof(ExternControl)); |
DebugGetAnforderung = 0; |
} |
if((CheckDelay(Kompass_Timer)) && UebertragungAbgeschlossen) |
{ |
WinkelOut.Winkel[0] = (int) (IntegralNick / 108); // etwa in 0,1 Grad |
WinkelOut.Winkel[1] = (int) (IntegralRoll / 108); // etwa in 0,1 Grad |
WinkelOut.UserParameter[0] = Parameter_UserParam1; |
WinkelOut.UserParameter[1] = Parameter_UserParam2; |
SendOutData('w',MeineSlaveAdresse,(unsigned char *) &WinkelOut,sizeof(WinkelOut)); |
if(WinkelOut.CalcState > 4) WinkelOut.CalcState = 6; // wird dann in SPI auf Null gesetzt |
Kompass_Timer = SetDelay(99); |
} |
if((CheckDelay(Debug_Timer) || DebugDataAnforderung) && UebertragungAbgeschlossen) |
{ |
SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut)); |
DebugDataAnforderung = 0; |
Debug_Timer = SetDelay(MIN_DEBUG_INTERVALL); |
} |
if(DebugTextAnforderung != 255) // Texte für die Analogdaten |
{ |
SendOutData('A',DebugTextAnforderung + '0',(unsigned char *) ANALOG_TEXT[DebugTextAnforderung],16); |
DebugTextAnforderung = 255; |
} |
if(ConfirmFrame && UebertragungAbgeschlossen) // Datensatz ohne CRC bestätigen |
{ |
SendeBuffer[0] = '#'; |
SendeBuffer[1] = ConfirmFrame; |
SendeBuffer[2] = '\r'; |
UebertragungAbgeschlossen = 0; |
ConfirmFrame = 0; |
UDR = SendeBuffer[0]; |
} |
if(DebugDisplayAnforderung && UebertragungAbgeschlossen) |
{ |
Menu(); |
DebugDisplayAnforderung = 0; |
if(++RemotePollDisplayLine == 4 || NurKanalAnforderung) |
{ |
SendOutData('4',0,(unsigned char *)&PPM_in,sizeof(PPM_in)); // DisplayZeile übertragen |
RemotePollDisplayLine = -1; |
} |
else SendOutData('0' + RemotePollDisplayLine,0,(unsigned char *)&DisplayBuff[20 * RemotePollDisplayLine],20); // DisplayZeile übertragen |
} |
if(GetVersionAnforderung && UebertragungAbgeschlossen) |
{ |
SendOutData('V',MeineSlaveAdresse,(unsigned char *) &VersionInfo,sizeof(VersionInfo)); |
GetVersionAnforderung = 0; |
} |
} |
/branches/V0.70_safer_engine_stop/uart.h |
---|
0,0 → 1,117 |
#ifndef _UART_H |
#define _UART_H |
#define MAX_SENDE_BUFF 150 |
#define MAX_EMPFANGS_BUFF 150 |
#define DUB_KEY_UP 4 |
#define DUB_KEY_DOWN 8 |
#define DUB_KEY_RIGHT 32 |
#define DUB_KEY_LEFT 16 |
#define DUB_KEY_FIRE 64 |
void BearbeiteRxDaten(void); |
extern unsigned char DebugGetAnforderung; |
extern unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
extern unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
extern unsigned volatile char UebertragungAbgeschlossen; |
extern unsigned volatile char PC_DebugTimeout; |
extern unsigned volatile char NeueKoordinateEmpfangen; |
extern unsigned char MeineSlaveAdresse; |
extern unsigned char PcZugriff; |
extern unsigned char RemotePollDisplayLine; |
extern int Debug_Timer,Kompass_Timer; |
extern void UART_Init (void); |
extern int uart_putchar (char c); |
extern void boot_program_page (uint32_t page, uint8_t *buf); |
extern void DatenUebertragung(void); |
extern void DecodeNMEA(void); |
extern void BearbeiteRxDaten(void); |
extern unsigned char MotorTest[4]; |
extern unsigned char DubWiseKeys[4]; |
struct str_DebugOut |
{ |
unsigned char Digital[2]; |
signed int Analog[32]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
struct str_WinkelOut |
{ |
signed int Winkel[2]; |
unsigned char UserParameter[2]; |
unsigned char CalcState; |
unsigned char Orientation; |
}; |
extern struct str_WinkelOut WinkelOut; |
struct str_ExternControl |
{ |
unsigned char Digital[2]; |
unsigned char RemoteTasten; |
signed char Nick; |
signed char Roll; |
signed char Gier; |
unsigned char Gas; |
signed char Hight; |
unsigned char free; |
unsigned char Frame; |
unsigned char Config; |
}; |
extern struct str_ExternControl ExternControl; |
struct str_VersionInfo |
{ |
unsigned char Hauptversion; |
unsigned char Nebenversion; |
unsigned char PCKompatibel; |
unsigned char Hardware; |
unsigned char Rserved[6]; |
}; |
extern struct str_VersionInfo VersionInfo; |
//Die Baud_Rate der Seriellen Schnittstelle ist 9600 Baud |
//#define BAUD_RATE 9600 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 14400 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 28800 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 38400 //Baud Rate für die Serielle Schnittstelle |
#define BAUD_RATE 57600 //Baud Rate für die Serielle Schnittstelle |
//Anpassen der seriellen Schnittstellen Register wenn ein ATMega128 benutzt wird |
#if defined (__AVR_ATmega128__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICRB |
#endif |
#if defined (__AVR_ATmega32__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega644__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICR0B |
# define TXEN TXEN0 |
# define RXEN RXEN0 |
# define RXCIE RXCIE0 |
# define TXCIE TXCIE0 |
# define U2X U2X0 |
# define UCSRB UCSR0B |
# define UDRE UDRE0 |
# define INT_VEC_RX SIG_USART_RECV |
# define INT_VEC_TX SIG_USART_TRANS |
#endif |
#endif //_UART_H |
/branches/V0.70_safer_engine_stop/version.txt |
---|
0,0 → 1,158 |
------- |
V0.53 27.04.2007 H.Buss |
- erste öffentliche Version |
V0.53b 29.04.2007 H.Buss |
- der FAKTOR_I war versehentlich auf Null, dann liegt der MikroKopter nicht so hart in der Luft |
V0.53c 29.04.2007 H.Buss |
- es gib ein Menü, in dem die Werte der Kanäle nach Nick, Roll, Gas,... sortiert sind. |
Die angezeigten Werte waren nicht die Werte der Funke |
V0.54 01.05.2007 H.Buss |
- die Paramtersätze können jetzt vor dem Start ausgewählt werden |
Dazu wird beim Kalibrieren der Messwerte (Gashebel oben links) der Nick-Rollhebel abgefragt: |
2 3 4 |
1 x 5 |
- - - |
Bedeutet: Nick-Rollhebel Links Mitte = Setting:1 Links Oben = Setting:2 usw. |
- der Faktor_I für den Hauptregler ist hinzugekommen. Im Heading-Hold-Modus sollte er vergössert werden, was Stabilität bringt |
V0.55 14.05.2007 H.Buss |
- es können nun Servos an J3,J4,J5 mit den Kanälen 5-7 gesteuert werden |
V0.56 14.05.2007 H.Buss |
- es gab Probleme mit Funken, die mehr als 8 Kanäle haben, wenn mehrere Kanäle dann auf Null waren |
- Funken, die nicht bis +-120 aussteuern können, sollten jetzt auch gehen |
V0.57 24.05.2007 H.Buss |
- Der Höhenregler kann nun auch mittels Schalter bedient werden |
- Bug im Gier-Algorithmus behoben; Schnelles Gieren fürhrte dazu, dass der MK zu weit gedreht hat |
- Kompass-Einfluss dämpfen bei Neigung |
- Man kann zwischen Kompass FIX (Richtung beim Kalibrieren) und Variabel (einstellbar per Gier) wählen |
- Der Motortest vom Kopter-Tool geht jetzt |
- Man kann den Parametersätzen einen Namen geben |
- Das Kamerasetting ist unter Setting 2 defaultmässig integriert |
V0.58 30.05.2007 H.Buss |
- Der Höhenregler-Algorithmus wird nun umgangen, wenn der Höhenreglerschalter aus ist |
V0.60 17.08.2007 H.Buss |
- "Schwindel-Bug" behoben |
- Die Poti-Werte werden jetzt auf Unterlauf (<0) überprüft |
- Poti4 zugefügt |
- Es werden jetzt 8 Kanäle ausgewertet |
- Kamera-Servo (an J7) |
- Die Settings müssen überschrieben werden |
V0.61 - V0.63 H.Buss 27.09.2007 |
- Poti 4 und Kanal 8 werden im Menü angezeigt |
- ein paar Kleinigkeiten bei den DefaultKonstanten2 bereinigt |
- Analog.c: Aktuell_ax korrigiert |
- auf 32 Debug-Kanäle erweitert |
- Loopings sind jetzt möglich und einzeln im KopterTool freischaltbar |
- leichte Anpassungen im Gier - Geschwindigkeit und Drift |
- die Hardwareversion V1.1 wird erkannt und das Programm stellt sich auf die geänderte Gyroverstärkung und die geänderten Portpins ein |
- die Software startet nach dem Einschalten schneller, weil der Luftdruckoffset schneller gefunden wird |
- die PPM-Ausgänge liegen wieder an den Pins an |
- Details an der Sensordatenverarbeitung -> es fliegt sich geringfügig anders |
- der MK ist bei wenig Gas nicht mehr so giftig -> soll das Landen vereinfachen |
- I2C-Bus läuft jetzt sicher nach einer Störung wieder an |
- Sticksignale werden präziser ausgewertet |
- Stick-Kanäle werden ans Kopter-Tool übertragen |
- Es muss die Version V1.47 des Kopter-Tool verwendet werden |
- Die Settings werden auf Default zurückgesetzt |
- am Piepen kann man die Fehlerart unterscheiden |
1. einzelnes Piepen beim Einschalten und Kalibrieren |
2. langsames Intervall mindestens 1 Sek -> Empfangsausfall |
3. schnelleres Intervall mindestens 1 Sek -> Akku |
4. sehr schnelles Intervall mindestens 1 Sek -> Kommunikation zu den Reglern gestört |
V0.64 H.Buss 30.09.2007 |
- beim Gieren wurden die Achsen nicht hart genug geregelt |
V0.65a H.Buss 15.10.2007 |
- Integral im Mischer wieder integriert |
- Feinabstimmung im ACC/Gyro Abgleich -> 1/32 & 100 |
- ACC/Gyro Abgleich auch bei HH |
V0.66a H.Buss 3.11.2007 |
- Messwertverarbeitung aus dem Analog-Interrupt entfernt |
- Analogmessung hängt jetzt am FC-Timing |
- Looping-Stick-Hysterese eingebaut |
- Looping-180°-Umschlag einstellbar |
- Achsenkopplung: Gierbewegung verkoppelt Nick und Roll |
- Lageregelung nach ACC-Sensor verbessert |
- zusätzlicher I-Anteil in der Lageregelung verbessert die Neutrallage |
- Gyrodriftkompensation überarbeitet |
- Bug in der Gier-Stick-Berechnung behoben |
- Gyro-Messung auf 1kHz beschleunigt |
V0.67a H.Buss 16.11.2007 |
- der Hauptregler-I-Anteil wirkt jetzt nur noch auf den Winkel (ausser im HH-Mode) |
- Gyro-Acc-Abgleich jetzt wieder in jedem Zyklus |
- Feinabstimmung |
- Beim HH-Modus gab es noch Bugs |
V0.67e H.Buss 29.11.2007 |
- Parameter: Dynamic Stability und Driftfaktor eingeführt |
- Die Namen der Analogwerte werden jetzt zum Koptertool übertragen |
- Kompatibilität zum Koptertool erhöht |
V0.67f H.Buss 04.12.2007 |
- Das Integral des Hauptreglers wird jetzt linear entladen und nicht mehr proportional |
- Schub für Gier wird jetzt auf den Gaswert begrenzt, dadurch steigt der MK nicht mehr beim Gieren. Gier ist allerdings nicht mehr so agressiv |
- Die ACC-Nullwerte können jetzt dauerhaft im EEPROM gespeichert werden (Stick:Vollgas und Gier rechts) |
V0.68a I.Busker 28.12.2007 |
- SPI.c & SPI.h ins Projekt aufgenommen |
SPI-Kommuikation kann in SPI.h aktiviert/deaktivert werden |
V0.68c H.Buss 05.01.2008 |
- Stickauswertung verbessert -> träger und präziser |
- Alle Settings angepasst |
V0.69e H.Buss 05.05.2008 |
- kleinere Bugs beseitigt |
- Schneller Sinkflug jetzt möglich |
- Min- und Maxgas in den Settings geändert |
- Lagewinkel wird jetzt in 0,1 Grad an Kompass und Navi gesendet |
- Kalibrierung für MK3Mag -> Nick unten beim Kalibrieren |
- Kompassroutine um den Ersatzkompass (Gyro unterstützt Kompasswert) erweitert |
V0.69h H.Buss 21.05.2008 |
- STICK_GAIN = 4 eingeführt. Das erhöht die Auflösung der Sollwerte. Stick_P und Stick_I müssen nun um Faktor 4 erhöht werden |
- SenderOkay auch an das Naviboard übertragen |
- Bessere Parameter bei Senderausfall |
V0.69j H.Buss 30.05.2008 |
- Höhere Präzision der Achsenkopplung |
V0.69k H.Buss 31.05.2008 |
- Bug in SPI.C behoben |
- in 0.69h war ein Bug, der zu ungewollten Loopings führen konnte |
V0.69L H.Buss 14.06.2008 |
- feinere Cam-Servo-Auflösung |
V0.70a H.Buss 01.07.2008 |
- Unterstützung der V1.3-Hardware mit automatischem Hardware-Gyro-Abgleich |
V0.70b H.Buss 14.07.2008 |
- flexible Einstellungsmöglichkeit von J16 und J17 (Transistorausgänge) |
- eigene Parameter für GPS-Naviboard |
- eigener Parameter für ExternalControl (war vorher UserParameter1 bzw. 8) |
- neue Parameter im EEPROM-Datensatz: J16Bitmask, J16Timing, ExternalControl, Navi... |
- MikroKopterFlags eingeführt, damit das Navi den Status des MKs kennt |
- KopterTool-Kompatibilität auf 8 erhöht |
V0.70c H.Buss 30.07.2008 |
- Parameter der Datenfusion leicht modifiziert |
- EEPROM-Parameter für Looping-Umschlag angepasst (von 100 auf 85) |
- MaxStick wird auf 100 begrenzt |
V0.70d H.Buss 02.08.2008 |
- Transistorausgänge: das oberste Bit der Blinkmaske (im KopterTool linkes Bit) gibt nun den Zustand des Ausgangs im Schalterbetrieb an |