/branches/V0.64_Simprop_Steff/GPS.c |
---|
0,0 → 1,30 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + 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; |
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.64_Simprop_Steff/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.64_Simprop_Steff/Hex-Files/Flight-Ctrl_MEGA644_V0_64.hex |
---|
0,0 → 1,1544 |
:100000000C94EC010C9407020C9407020C94070268 |
:100010000C9407020C9407020C9407020C9407023C |
:100020000C9407020C94590B0C9407020C940702D1 |
:100030000C9400160C9407020C9407020C9407020F |
:100040000C9407020C9407020C94630A0C940702A8 |
:100050000C943C040C9407020C9406040C940702C4 |
:100060000C945E0C0C9407020C942A150C94070255 |
:100070000A0D466C69676874436F6E74726F6C0A20 |
:100080000D48617264776172653A25642E25640AB1 |
:100090000D536F6674776172653A5625642E256438 |
:1000A00020000A0D3D3D3D3D3D3D3D3D3D3D3D3D3D |
:1000B0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D70 |
:1000C0003D3D000A0D496E69742E20454550524F42 |
:1000D0004D3A2047656E65726965726520446566B4 |
:1000E00061756C742D506172616D657465722E2E30 |
:1000F0002E000A0D42656E75747A6520506172613A |
:100100006D657465727361747A202564000A0D410F |
:1001100062676C65696368204C75667464727563A8 |
:100120006B73656E736F722E2E004F4B0A0D000AB3 |
:100130000D537465756572756E673A200048656188 |
:1001400064696E67486F6C64004E65757472616CAB |
:10015000000A0A0D002E005B25695D002B2B204D47 |
:10016000696B726F4B6F70746572202B2B00485750 |
:100170003A5625642E25642053573A25642E25646B |
:100180000053657474696E673A2025642000286303 |
:100190002920486F6C676572204275737300486F41 |
:1001A0006568653A202020202025356900536F6C52 |
:1001B0006C486F6568653A20253569004C75667432 |
:1001C000647275636B3A20253569004F666620209E |
:1001D000202020203A20253569004B65696E652076 |
:1001E0000048F668656E726567656C756E670061DC |
:1001F0006B742E204C616765004E69636B3A20205A |
:100200002020202025356900526F6C6C3A20202078 |
:10021000202020253569004B6F6D706173733A2083 |
:100220002020253569004B313A25346920204B3296 |
:100230003A25346920004B333A25346920204B3469 |
:100240003A25346920004B353A25346920204B3655 |
:100250003A25346920004B373A25346920204B3841 |
:100260003A25346920004E693A2534692020526FBE |
:100270003A253469200047733A25346920204769BC |
:100280003A253469200050313A2534692020503213 |
:100290003A253469200050333A25346920205034FF |
:1002A0003A25346920004779726F202D2053656EFE |
:1002B000736F72004E69636B2025346920282533E3 |
:1002C000692900526F6C6C20253469202825336918 |
:1002D000290047696572202534692028253369295A |
:1002E00000414343202D2053656E736F72004E69A9 |
:1002F000636B2025346920282533692900526F6CEF |
:100300006C2025346920282533692900486F6368EB |
:1003100020253469202825336929005370616E6EC9 |
:10032000756E673A202025356900456D70662E5040 |
:100330006567656C3A253569004B6F6D7061737345 |
:1003400020202020202020005269636874756E6789 |
:100350003A2020253569004D657373776572743ACC |
:1003600020202535690053746172743A20202020C2 |
:100370002025356900506F7469313A202025336992 |
:1003800000506F7469323A202025336900506F7431 |
:1003900069333A202025336900506F7469343A205C |
:1003A0002025336900536572766F202000536574F1 |
:1003B000706F696E742020253369005374656C6C0E |
:1003C000756E673A202533690052616E67653A257C |
:1003D00033692D253369000011241FBECFEFD0E112 |
:1003E000DEBFCDBF11E0A0E0B1E0E8EDFFE502C067 |
:1003F00005900D92A039B107D9F715E0A0E9B1E059 |
:1004000001C01D92A333B107E1F70C9442020C9492 |
:100410000000FB01863008F085E0489FD0011124E0 |
:10042000AC59BF4F842F9927019724F00E94D82FF1 |
:100430000192FACF0895282FFB01863008F025E0BD |
:10044000429FD0011124AC59BF4F842F99270197A7 |
:1004500024F001900E94E02FFACFA2E0B0E0022E3B |
:100460000E94E02F0895A2E0B0E09D010E94D82FE5 |
:10047000802D863028F082E0D901082E0E94E02FDE |
:1004800099270895CFEFD0E1DEBFCDBF14B815B8DE |
:1004900097EEE92E93E0F92E8EEC9FEFE80EF91E11 |
:1004A000F7FEFACF88EEE82E83E0F82E189B02C004 |
:1004B0008BE001C08AE08093000181E887B98FEF6B |
:1004C00088B98BE184B981E085B98EE38AB9579AFE |
:1004D00087EF8BB984B7877F84BF80916000886184 |
:1004E000809360001092600080ED97E09093AA01E5 |
:1004F0008093A9011092E3011092E2011092BC04D2 |
:100500001092BB041092E5011092E4011092E701F1 |
:100510001092E601809100018A3011F4289801C000 |
:10052000289A0E941A0B0E94EA060E94EB150E946C |
:10053000100C0E94F31478941092BA0380E4809314 |
:10054000BB0385E08093BC0380E490E09F938F938E |
:100550001F921F92809100016AE00E94682F892FEC |
:1005600099279F938F93809100010E94682F99276C |
:100570009F938F9380E790E09F938F931F920E94A9 |
:10058000D9078DB79EB70B960FB6F8949EBF0FBED6 |
:100590008DBF82EA90E09F938F931F920E94D907AC |
:1005A000299A0F900F900F90C1E0D0E0DE010E94D9 |
:1005B000D82F802D8E3329F183EC90E09F938F9379 |
:1005C0001F920E94D9070E94951C10E00F900F9077 |
:1005D0000F90123011F40E940C1D4AE363EE74E098 |
:1005E000812F0E941B021F5F163098F3A2E0B0E03B |
:1005F00082E0082E0E94E02F8EE3DE01082E0E948A |
:10060000E02F0E9433024AE363EE74E00E94090285 |
:100610000E94330299279F938F9382EF90E09F93DC |
:100620008F931F920E94D9078091EB040F900F9037 |
:100630000F900F900F9080FF20C08DE091E09F936E |
:100640008F931F920E94D90788EE93E00E94110BAE |
:100650007C010E94160C0F900F900F90C7010E9412 |
:10066000400B8823D9F38AE291E09F938F931F92E6 |
:100670000E94D9070F900F900F900E9471188091DF |
:1006800000018A3011F4289801C0289A80ED97E083 |
:100690009093AA018093A90188EE93E09093B5030B |
:1006A0008093B40385E58093AF038FE291E09F933D |
:1006B0008F931F920E94D9078091EB040F900F90A7 |
:1006C0000F9082FF03C08DE391E002C089E491E0C6 |
:1006D0009F938F931F920E94D9070F900F900F90B6 |
:1006E00081E591E09F938F931F920E94D9070E940A |
:1006F000591088E893E190937F0180937E010F90D9 |
:100700000F900F908091AD01882309F451C0109291 |
:10071000AD010E94CB1F0E944E1C209100012A3087 |
:1007200011F4289801C0289A80910101882319F0BA |
:100730008150809301018091E801882329F0809104 |
:10074000E80181508093E80180917E0190917F01C2 |
:10075000892B01F585E090E090937F0180937E01E5 |
:100760000E940D1580910301909104018F5F9F4FAE |
:10077000F9F48091E1018823D9F080E197E2909328 |
:10078000AA018093A90180E890E0909304018093EE |
:1007900003010EC080917E0190917F01019790939B |
:1007A0007F0180937E012A3011F4289801C0289A95 |
:1007B0000E9408070E942606C7010E94400B88235A |
:1007C00009F4A0CF8091FB04282F332780910D01DD |
:1007D00090910E01821793079CF4809103019091F0 |
:1007E00004018F5F9F4F61F480E797E19093AA0126 |
:1007F0008093A90180E093E090930401809303012A |
:1008000084E690E00E94110B7C017CCF1F920F9236 |
:100810000FB60F9211248F939F93EF93FF938091C4 |
:1008200002018823E1F480919E0190919F0101963D |
:1008300090939F0180939E01FC01EF57FD4FE08153 |
:10084000ED3019F08639910539F410929F0110921C |
:100850009E0181E080930201E093C60004C01092E3 |
:100860009F0110929E01FF91EF919F918F910F90A8 |
:100870000FBE0F901F9018951F920F920FB60F92F8 |
:1008800011242F933F934F935F938F939F93AF9335 |
:10089000BF93EF93FF9390E08091C60080939901FE |
:1008A0005091A401563910F09093A50180919901BF |
:1008B0008D3009F05FC08091A501823009F05AC0E7 |
:1008C0009093A501852F99278C539C4FFC0132975B |
:1008D00040812091A0013091A101241B3109DC014C |
:1008E00011978C91281B3109C9019F709093A10128 |
:1008F0008093A00146E0969587954A95E1F7982F59 |
:10090000935C9093A2012F733070235C2093A3011A |
:100910008081981729F48C91281711F491E006C072 |
:1009200090E0809196018F5F80939601809198016D |
:10093000882309F06EC0992309F46BC081E080938D |
:10094000980150939501E52FFF27EC53FC4F8DE064 |
:1009500080838091C603823509F05BC088E190E016 |
:100960002CE00FB6F894A895809360000FBE2093FA |
:1009700060004FC02091A501822F992781309105F9 |
:10098000F9F0823091051CF4892B21F040C00297C8 |
:1009900011F13DC080919901833239F48091980121 |
:1009A000882319F481E08093A501809199018093B7 |
:1009B000C40381E08093A40180919901992722C00A |
:1009C0002F5F2093A501E52FFF27EC53FC4F80916B |
:1009D0009901808309C0E52FFF27EC53FC4F8091DC |
:1009E00099018083563920F45F5F5093A40102C0BF |
:1009F0001092A501209199018091A0019091A101EF |
:100A0000820F911D9093A1018093A00102C01092CA |
:100A1000A501FF91EF91BF91AF919F918F915F9150 |
:100A20004F913F912F910F900FBE0F901F901895EF |
:100A3000AC01A0E0B0E09D01A817B90748F4E1E8D7 |
:100A4000F2E08191280F311D1196A417B507C8F364 |
:100A50003F70FD01EF57FD4FC90156E09695879510 |
:100A60005A95E1F7835C80831196FD01EF57FD4FA6 |
:100A70002F733070822F835C8083AE57BD4F8DE023 |
:100A80008C9310920201809181028093C600089598 |
:100A90001F93CF93DF93382FEA01722F10E083E288 |
:100AA000809381026093820230938302A3E0B0E0DE |
:100AB000772309F458C0772311F4972F07C0FE015C |
:100AC000E10FF11D1F5F9081715011F4472F0EC08F |
:100AD000FE01E10FF11D1F5F4081715039F0FE01F1 |
:100AE000E10FF11D1F5F6081715001C0672FFD0193 |
:100AF000EF57FD4F892F86958695835C80831196ED |
:100B0000FD01EF57FD4F892F99278370907024E0E6 |
:100B1000880F991F2A95E1F755279A0194E0369599 |
:100B200027959A95E1F7822B835C80831196FD01CE |
:100B3000EF57FD4F4F705070440F551F440F551F16 |
:100B4000862F992726E0969587952A95E1F7842B9D |
:100B5000835C80831196FD01EF57FD4F6F73635CDB |
:100B600060831196A5CFCD010E941805DF91CF912A |
:100B70001F9108951F93CF93DF93EC0110E066233C |
:100B800009F460C0A22FBB271297E42FFF27EC5374 |
:100B9000FC4F30813D534F5FE42FFF27EC53FC4F58 |
:100BA00050815D534F5FE42FFF27EC53FC4F708162 |
:100BB0007D534F5FE42FFF27EC53FC4FE081ED5353 |
:100BC0004F5F842F9927A817B907E4F1832F99273E |
:100BD000880F991F880F991F352F32953F70382B3A |
:100BE000852F99278F709070F4E0880F991FFA95E0 |
:100BF000E1F7572F56955695582B872F99278370D5 |
:100C0000907076E0880F991F7A95E1F78E2B6150EE |
:100C10006F3FC1F0FE01E10FF11D30831F5F615096 |
:100C20006F3F81F0FE01E10FF11D50831F5F6150A6 |
:100C30006F3F41F0FE01E10FF11D80831F5F6623CE |
:100C400009F0A3CFDF91CF911F910895CF93DF9348 |
:100C5000CDB7DEB72B970FB6F894DEBF0FBECDBF72 |
:100C600080919801882309F49AC08FEF8093010145 |
:100C70008091C6039927813791059CF48C369105A4 |
:100C80000CF06EC08736910509F444C08836910592 |
:100C900024F48336910599F080C088369105D9F007 |
:100CA0007CC08437910549F18537910524F481375B |
:100CB0009105A1F172C08637910541F16EC0209176 |
:100CC000950143E06BE08FEA93E00E94BA0581E072 |
:100CD00080939B0162C02091950143E062E0CE01C8 |
:100CE0000A960E94BA058091CB019A85892B809340 |
:100CF000CB0181E080939C0150C02091950143E09D |
:100D000064E080E991E00E94BA0547C081E08093E9 |
:100D10009A0143C081E080939D013FC020919501DD |
:100D200043E062E0CE010A960E94BA058A858F3FB1 |
:100D300061F0863010F085E08A874AE363EE74E064 |
:100D40008A850E9409028A8502C00E9433022AE332 |
:100D500043EE54E060918002855B0E9448051DC00F |
:100D60002091950143E06AE383EE94E00E94BA0586 |
:100D70008091C6034AE363EE74E08B560E941B0227 |
:100D8000A2E0B0E08091C6038B56082E0E94E02FAF |
:100D90000E94330299270E94B216109298012B9656 |
:100DA0000FB6F894DEBF0FBECDBFDF91CF9108958F |
:100DB000CF93C82F8A3019F48DE00E94D806809115 |
:100DC000C00085FFFCCFC093C60080E090E0CF91CB |
:100DD0000895089588E18093C1008091C0008260E9 |
:100DE0008093C0008091C10080688093C100809191 |
:100DF000C10080648093C1008AE28093C40088ECC3 |
:100E000090E00E94110B9093AE038093AD03089580 |
:100E100080910201882309F471C080919D0188238B |
:100E200071F080910201882351F02BE04FEA53E0EA |
:100E30006091800287E40E94480510929D01809194 |
:100E4000AD039091AE030E94400B882321F4809162 |
:100E50009B018823B1F080910201882391F022E464 |
:100E60004AE554E06091800284E40E9448051092B3 |
:100E70009B0184EF91E00E94110B9093AE0380934D |
:100E8000AD0380919C01882339F180910201882370 |
:100E900019F10E94621010929C013091A601832FDB |
:100EA0008F5F8093A601843059F426E147EB54E02C |
:100EB00060E084E30E9448058FEF8093A6010CC098 |
:100EC00024E1829FC0011124815F9E4FAC0160E04C |
:100ED000832F8F5C0E94480580919A01882371F0CE |
:100EE00080910201882351F02AE04AEB53E060919F |
:100EF000800286E50E94480510929A010895982F75 |
:100F000080919C04813069F48091CC01E82FFF2707 |
:100F1000E15FFE4F90838F5F8093CC0121E030E052 |
:100F200005C0892F0E94D806282F3327C9010895AC |
:100F30000F931F93CF93DF938C01EB01672B39F055 |
:100F4000F80181918F010E947F072197C9F7DF91F6 |
:100F5000CF911F910F9108950F931F93CF93DF931C |
:100F60008C01EB01672B41F0F8010F5F1F4F84915B |
:100F70000E947F072197C1F7DF91CF911F910F91B9 |
:100F80000895CF93C82F181634F480E20E947F078B |
:100F9000C1501C16D4F3CF910895CF93C82F1816C3 |
:100FA00034F480E30E947F07C1501C16D4F3CF9124 |
:100FB00008952F923F924F925F926F927F928F92FD |
:100FC0009F92AF92BF92CF92DF92EF92FF920F93D8 |
:100FD0001F93CF93DF93CDB7DEB7E0970FB6F894AA |
:100FE000DEBF0FBECDBF26968FAD26972896EEADFD |
:100FF000FFAD28971CA61DA61EA61FA680939C04C5 |
:10100000A8E46A2E712C6C0E7D1E5F01C50105C01F |
:10101000053239F00894A11CB11CF501049100239C |
:10102000B9F7B501681B790B11F00E94AC070023DA |
:1010300009F430C20894A11CB11C552458AA252CCF |
:101040001FEF59A6F5010894A11CB11C04910537A6 |
:1010500021F0802F80628837F1F450FE0EC0F3013A |
:1010600024E030E0620E731E80819181A281B38101 |
:101070008CA79DA7AEA7BFA70EC0F301A2E0B0E06A |
:101080006A0E7B1E808191819C01442755272CA7E5 |
:101090003DA74EA75FA7003221F489A5882391F6CA |
:1010A0001BC0033211F438E081C00A3211F00D3256 |
:1010B00089F40A3251F4F30142E050E0640E751EE7 |
:1010C000208022200CF0BECF219450E1552A8FEDD4 |
:1010D0005822B8CF0B3211F409A7B4CF0E32C1F5A4 |
:1010E000F5010894A11CB11C04910A3279F4F301B2 |
:1010F000A2E0B0E06A0E7B1E60817181BFEF6F3F9E |
:101100007B0714F46FEF7FEF162F9CCF60E070E049 |
:10111000802F80538A30A0F4CB01F3E0880F991F11 |
:10112000FA95E1F7860F971F680F791F600F711D01 |
:1011300060537040F5010894A11CB11C0491E8CFE4 |
:10114000EFEF6F3F7E0714F46FEF7FEF162F7FCF27 |
:10115000003329F454FC76CFF0E25F2A73CF802F5E |
:1011600081538930D8F460E070E0CB01E3E0880F70 |
:10117000991FEA95E1F7860F971F680F791F600F97 |
:10118000711D60537040F5010894A11CB11C0491BD |
:10119000802F80538A3048F3262E59CF083619F411 |
:1011A00024E0522A4FCF0C3619F431E0532A4ACFAB |
:1011B000033661F44E010894811C911CF30142E056 |
:1011C00050E0640E751E808189831BC1043421F0B8 |
:1011D000043611F00936B1F5043411F451E0552A02 |
:1011E00050FE0AC0F30184E090E0680E791E208171 |
:1011F0003181428153810CC0F30142E050E0640E22 |
:10120000751E808191819C01442737FD4095542FA4 |
:101210002CA73DA74EA75FA78CA59DA5AEA5BFA5F2 |
:10122000B7FF0DC0B095A095909581959F4FAF4F9A |
:10123000BF4F8CA79DA7AEA7BFA78DE289A77AE075 |
:10124000472E7BC00F3411F00F3639F40F3411F4F0 |
:1012500091E0592A68E0462E6FC00037A1F4F301EF |
:10126000A2E0B0E06A0E7B1E808191819C01442740 |
:1012700055272CA73DA74EA75FA750E1452E30E488 |
:10128000532A08E759C00337C1F5F30142E050E0A3 |
:10129000640E751E808091808114910489F44E0142 |
:1012A0000894811C911C88E289838EE6F401818375 |
:1012B00085E78B838CE68C838D8389E28E831F8206 |
:1012C00017FD13C0812F992787FD9095AC0160E031 |
:1012D00070E0C4010E94D42D009729F0D82ED818B0 |
:1012E0001D150CF090C0D12E8EC0F401019000208D |
:1012F000E9F73197DE2ED81886C0053511F005378D |
:1013000039F4053511F4F1E05F2A4AE0442E14C0A7 |
:10131000083519F0083709F06CC030E1432E53FE50 |
:101320000BC02CA53DA54EA55FA521153105410596 |
:10133000510511F030E4532A19A618AB17FD02C06D |
:101340004FED542229E2822E912C8C0E9D1E8CA5ED |
:101350009DA5AEA5BFA50097A105B10521F498A94B |
:10136000992309F43FC0C42CDD24EE24FF24332448 |
:101370002CA53DA54EA55FA52C153D054E055F0589 |
:1013800010F091E0392E6CA57DA58EA59FA5A70133 |
:1013900096010E949B2FDC01CB01182F8A3010F49C |
:1013A000105D04C0195A083509F41F7DD4011E933D |
:1013B0004D016CA57DA58EA59FA5A70196010E9454 |
:1013C0009B2F2CA73DA74EA75FA7332081F6B8E03F |
:1013D0004B1641F453FE06C0103321F080E3F401B4 |
:1013E00082934F01CE010196D82ED818F8E2DF0E75 |
:1013F0000BC0002309F44EC04E010894811C911CBF |
:10140000098381E0D82E19A61D2DC8A8CD18C7FCC8 |
:10141000CC2489A5882311F01F5F02C056FC1E5FF3 |
:101420001C0DE52CFF24C70180739070892B21F4DB |
:10143000822D811B0E94C10789A5882329F061E0C4 |
:1014400070E0CE01899609C0E6FE09C080E38AA754 |
:101450000BA762E070E0CE018A960E949807C70150 |
:1014600080739070809721F4822D811B0E94CD079C |
:101470008C2D0E94CD078D2D992787FD9095BC015D |
:10148000C4010E949807E4FEC1CD822D811B0E94F9 |
:10149000C107BCCDE0960FB6F894DEBF0FBECDBF3E |
:1014A000DF91CF911F910F91FF90EF90DF90CF9040 |
:1014B000BF90AF909F908F907F906F905F904F9074 |
:1014C0003F902F9008951F920F920FB60F92112404 |
:1014D0002F933F935F936F937F938F939F93AF93DC |
:1014E000BF938091B00181508093B0018F3FB9F4D8 |
:1014F00089E08093B001809105018F5F81708093B6 |
:101500000501882319F481E08093AD018091AE013B |
:101510009091AF0101969093AF018093AE018091BD |
:10152000A9019091AA010297C8F08091A901909118 |
:10153000AA0101979093AA018093A9018091A90122 |
:101540009091AA01209103013091040182239323F9 |
:10155000892B11F021E009C020E007C020E08FEFC7 |
:101560009FEF909304018093030180910001222357 |
:1015700031F08A3011F45A9A07C0479A05C08A3070 |
:1015800011F45A9801C047988091EB0483FF3BC047 |
:10159000349B0AC08091AB019091AC01019690936D |
:1015A000AC018093AB012FC08091AB019091AC0155 |
:1015B000892B79F08091AB019091AC01805A9F40CA |
:1015C00040F48091AB019091AC019093F80180932D |
:1015D000F7018091F7019091F8012091F501309188 |
:1015E000F601821B930B845E9D4F68E671E00E94BA |
:1015F000882F845B90409093F4018093F3011092C4 |
:10160000AC011092AB01BF91AF919F918F917F91EF |
:101610006F915F913F912F910F900FBE0F901F9090 |
:1016200018952091AE013091AF01280F391FC901E3 |
:10163000019608958AE090E00E94110B9093B20108 |
:101640008093B10182E085BD83EA84BD17BC88E741 |
:1016500088BD96E096BD83EC8093B0009093B10076 |
:101660008091700082608093700080916E00816034 |
:1016700080936E008AE08093B3001092B2000895C8 |
:101680002091AE013091AF01821B930B892F9927D6 |
:101690008695807490700895CF93DF930E94110B0C |
:1016A000EC01CE010E94400B8823D9F3DF91CF914A |
:1016B00008951F920F920FB60F9211242F933F930C |
:1016C0004F935F936F937F938F939F93AF93BF934A |
:1016D000CF93DF93EF93FF93809106018150809326 |
:1016E00006018F3F09F085C083E88093B0008091A8 |
:1016F0006C01C82FDD27D093A801C093A70180916A |
:101700000C056091050580FF2AC077278827992757 |
:101710002091250230912602409127025091280203 |
:1017200057FF04C021583F4F4F4F5F4FA7E05595DB |
:10173000479537952795AA95D1F70E94492F97FF8E |
:1017400004C061507E4F8F4F9F4FF9E0959587956C |
:1017500077956795FA95D1F7C60FD71F29C07727D8 |
:10176000882799272091250230912602409127024F |
:101770005091280257FF04C021583F4F4F4F5F4FF1 |
:10178000E7E05595479537952795EA95D1F70E945B |
:10179000492F97FF04C061507E4F8F4F9F4F39E014 |
:1017A00095958795779567953A95D1F7C61BD70B91 |
:1017B000D093A801C093A701809106059927209195 |
:1017C000A7013091A8012817390734F08091070547 |
:1017D00099278217930724F49093A8018093A70177 |
:1017E0008091A7018093B300809108058093060142 |
:1017F00004C083E08093B0005F98FF91EF91DF9188 |
:10180000CF91BF91AF919F918F917F916F915F9198 |
:101810004F913F912F910F900FBE0F901F901895F1 |
:1018200010927C008FEE80937A0008950F931F939F |
:10183000CF93DF9303E010E0D8010E94D82F802DD2 |
:10184000C82FDD27C531D10508F02A97C7BD84E62A |
:1018500090E00E944C0B8091070190910801825505 |
:10186000934010F4C0E0D0E0CA3FD105C0F4C7BD3A |
:1018700082E390E00E944C0B85E591E09F938F936B |
:101880001F920E94D90780910701909108010F9043 |
:101890000F900F908458934010F02196E5CFD80117 |
:1018A0000C2E0E94E02FC093AA048CE291E00E94CB |
:1018B0004C0BDF91CF911F910F9108951F920F92C2 |
:1018C0000FB60F921124EF92FF920F931F932F9355 |
:1018D0003F934F935F936F937F938F939F93AF93B8 |
:1018E000BF93CF93DF93EF93FF9310927A00809191 |
:1018F000CA01682F77278F5F8093CA016330710513 |
:1019000009F4BCC1643071055CF46130710509F4FF |
:1019100071C0623071050CF00FC1672B91F0A7C345 |
:101920006530710509F4EAC1653071050CF4C1C177 |
:101930006630710509F408C26730710509F417C3F0 |
:1019400096C3609133027091340280917800909137 |
:101950007900681B790B809100018A3011F0660FC5 |
:10196000771F8091C3019091C401860F971F9093B8 |
:10197000C4018093C3018091BA018F5F8093BA0143 |
:101980009B01442737FD4095542F8091010290918F |
:101990000202A0910302B0910402820F931FA41FC0 |
:1019A000B51F8093010290930202A0930302B093AB |
:1019B00004028091FD019091FE01A091FF01B09180 |
:1019C0000002820F931FA41FB51F8093FD01909307 |
:1019D000FE01A093FF01B093000281E08093C90152 |
:1019E0008091B3019091B40101969093B4018093DA |
:1019F000B30141C360917800709179008091350204 |
:101A000090913602681B790B809100018A3011F0A9 |
:101A1000660F771F9B01442737FD4095542F809117 |
:101A2000090290910A02A0910B02B0910C02820F60 |
:101A3000931FA41FB51F8093090290930A02A093DD |
:101A40000B02B0930C028091050290910602A091C6 |
:101A50000702B0910802820F931FA41FB51F809345 |
:101A6000050290930602A0930702B09308028091AA |
:101A7000090290910A02A0910B02B0910C02815FC1 |
:101A80009A4BA440B04064F080E393E9ABEFBFEF22 |
:101A90008093090290930A02A0930B02B0930C0268 |
:101AA0008091090290910A02A0910B02B0910C0260 |
:101AB00080519544AB4FBF4F64F480ED9CE6A4E0A9 |
:101AC000B0E08093090290930A02A0930B02B093B6 |
:101AD0000C0280917800909179000F9710F468E1E2 |
:101AE0007CEF8091780090917900079710F460E383 |
:101AF00078EF8091780090917900835F934010F0A7 |
:101B000068EE73E080917800909179008A5F93404D |
:101B100010F060ED77E08091C5019091C601860FCD |
:101B2000971F9093C6018093C5018091BB018F5F81 |
:101B30008093BB0182E0DFC06091780070917900F2 |
:101B40008091370290913802681B790B80910001D7 |
:101B50008A3011F0660F771F9B01442737FD4095AF |
:101B6000542F8091110290911202A0911302B09112 |
:101B70001402820F931FA41FB51F8093110290932C |
:101B80001202A0931302B093140280910D0290915F |
:101B90000E02A0910F02B0911002820F931FA41F9A |
:101BA000B51F80930D0290930E02A0930F02B09385 |
:101BB00010028091110290911202A0911302B09133 |
:101BC0001402815F9A4BA440B04064F080E393E933 |
:101BD000ABEFBFEF8093110290931202A093130218 |
:101BE000B09314028091110290911202A0911302FD |
:101BF000B091140280519544AB4FBF4F64F480ED17 |
:101C00009CE6A4E0B0E08093110290931202A093AE |
:101C10001302B093140280917800909179000F978D |
:101C200010F468E17CEF809178009091790007973B |
:101C300010F460E378EF8091780090917900835FF1 |
:101C4000934010F068EE73E08091780090917900F5 |
:101C50008A5F934010F060ED77E08091C70190912A |
:101C6000C801860F971F9093C8018093C701809188 |
:101C7000BC018F5F8093BC0184E03DC080910D0169 |
:101C800090910E019C01220F331F280F391F809164 |
:101C90007800909179000E94742F260F371F369597 |
:101CA00027953695279530930E0120930D0186E0F8 |
:101CB00022C080912F0290913002209178003091C3 |
:101CC0007900821B930B90939E0480939D048091D6 |
:101CD000C1019091C20120919D0430919E04820F18 |
:101CE000931F9093C2018093C1018091B8018F5FCF |
:101CF0008093B80187E08093C901BDC180917800CD |
:101D0000909179002091310230913202821B930B25 |
:101D10009093A9048093A8048091BF019091C00181 |
:101D20002091A8043091A904820F931F9093C001C1 |
:101D30008093BF018091B9018F5F8093B90185E0E5 |
:101D40008093C90186E010C180917800909179005C |
:101D5000AA2797FDA095BA2FBC01CD010E94872E1E |
:101D60007B018C0180912B0290912C02A0912D027D |
:101D7000B0912E029C01AD01C801B7010E94E12D76 |
:101D8000DC01CB01BC01CD010E946A2EDC01CB013C |
:101D90009093BE018093BD0180919D0490919E041B |
:101DA00080919D0490919E0497FF03C0909581952A |
:101DB0009F4F97FD0396AC015595479555954795CF |
:101DC0008091A8049091A9048091A8049091A904FD |
:101DD00097FF03C0909581959F4F9C0197FF02C08C |
:101DE0002D5F3F4F3595279535952795240F351F46 |
:101DF0008091BD019091BE01820F931F9093BE010F |
:101E00008093BD018091BD019091BE01029724F1A4 |
:101E100080912B0290912C02A0912D02B0912E0264 |
:101E200020E030E048E454E4BC01CD010E94912E52 |
:101E300088230CF044C080912B0290912C02A09139 |
:101E40002D02B0912E022AE037ED43EA5CE3BC019B |
:101E5000CD010E94E22D29C08091BD019091BE016B |
:101E60008F5F9F4F64F580912B0290912C02A0917F |
:101E70002D02B0912E0220E030E046E154E4BC0196 |
:101E8000CD010E94942E1816D4F480912B029091CB |
:101E90002C02A0912D02B0912E022AE037ED43EAE8 |
:101EA0005CE3BC01CD010E94E12DDC01CB018093FC |
:101EB0002B0290932C02A0932D02B0932E0281E06E |
:101EC0008093B70180917800909179009093A0045D |
:101ED00080939F048091BD019091BE019C01442795 |
:101EE00037FD4095542F8091F9019091FA01A0910E |
:101EF000FB01B091FC01820F931FA41FB51F8093BB |
:101F0000F9019093FA01A093FB01B093FC01209199 |
:101F1000F9013091FA014091FB015091FC0157FF0A |
:101F200004C021503C4F4F4F5F4F7AE05595479585 |
:101F3000379527957A95D1F78091F9019091FA011B |
:101F4000A091FB01B091FC01821B930BA40BB50B7C |
:101F50008093F9019093FA01A093FB01B093FC01E7 |
:101F600083E08093C90187E08093CA0184C0809197 |
:101F7000AD049091AE042091780030917900820FE9 |
:101F8000931F9093AE048093AD048091A5048F5F5E |
:101F90008093A5048091A504853008F468C08091E1 |
:101FA0007800909179009093080180930701109236 |
:101FB000A5048091A1049091A2042091AD043091D8 |
:101FC000AE04821B930B2091DF013091E001821B54 |
:101FD000930B9093B6018093B5018091AD049091DD |
:101FE000AE04EC01EE27D7FDE095FE2F209109010C |
:101FF00030910A0140910B0150910C01DA01C901A5 |
:10200000880F991FAA1FBB1F820F931FA41FB51F04 |
:10201000C80FD91FEA1FFB1FF7FF03C02396E11D5E |
:10202000F11D82E0F595E795D795C7958A95D1F78B |
:10203000C0930901D0930A01E0930B01F0930C01C6 |
:102040008091090190910A01A0910B01B0910C01BE |
:102050009C018091A1049091A204821B930B909308 |
:10206000E0018093DF011092AE041092AD04109253 |
:10207000C9011092CA018091C90180937C008FEE42 |
:1020800080937A00FF91EF91DF91CF91BF91AF9153 |
:102090009F918F917F916F915F914F913F912F9180 |
:1020A0001F910F91FF90EF900F900FBE0F901F9018 |
:1020B000189590E2EFE0F1E08FE49193815087FF73 |
:1020C000FCCF08951F93CF93DF938091CB0180FFC6 |
:1020D0000CC08091CF01882311F0815002C0809103 |
:1020E00069018093CF010E9459108091CB0181FF3B |
:1020F00007C08091CF018F5F8093CF010E9459105C |
:102100008091CB01992780FF04C081FF02C010920B |
:10211000CF0181E18093CC018091CF0199279F93DA |
:102120008F9387E591E09F938F9311E01F930E9417 |
:10213000D9070F900F900F900F900F908091CF01C3 |
:10214000C82FDD27C530D10509F459C2C630D105E5 |
:10215000ACF4C230D10509F4DEC0C330D10534F48B |
:10216000209719F1219709F46EC032C4C330D1050C |
:1021700009F43FC1249709F4A7C12AC4C830D10586 |
:1021800009F43EC3C930D10544F4C630D10509F481 |
:10219000A5C2279709F414C31BC4C930D10509F49B |
:1021A00071C32A9709F4C2C313C41092CC018CE501 |
:1021B00091E09F938F931F930E94D90784E18093AE |
:1021C000CC010F900F900F908FE390E09F938F932F |
:1021D000DF93CF93809100016AE00E94682F892FDE |
:1021E00099279F938F93809100010E94682F9927D0 |
:1021F0009F938F938EE691E09F938F931F930E94FE |
:10220000D90788E28093CC018DB79EB70B960FB6A5 |
:10221000F8949EBF0FBE8DBF0E94330299279F93F3 |
:102220008F9381E891E09F938F931F930E94D9072A |
:102230008CE38093CC010F900F900F900F900F9034 |
:102240008EE891E05FC08091EB0480FF49C010925E |
:10225000CC018091DF019091E0019F938F938EE9F3 |
:1022600091E09F938F931F930E94D90784E18093FD |
:10227000CC010F900F900F900F900F908091DD0187 |
:102280009091DE019F938F938DEA91E09F938F93BE |
:102290001F930E94D90788E28093CC010F900F9082 |
:1022A0000F900F900F9080910701909108019F93DC |
:1022B0008F938CEB91E09F938F931F930E94D9078C |
:1022C0008CE38093CC010F900F900F900F900F90A4 |
:1022D0008091AA0499279F938F938BEC91E01BC365 |
:1022E00084E18093CC018AED91E09F938F931F93BB |
:1022F0000E94D90788E28093CC010F900F900F9035 |
:1023000081EE91E09F938F931F930E94D9070F90C6 |
:102310000F900F9062C31092CC018FEE91E09F93CB |
:102320008F931F930E94D90784E18093CC010F9073 |
:102330000F900F908091250290912602A091270284 |
:10234000B0912802B7FF04C081509C4FAF4FBF4FE0 |
:102350003AE0B595A795979587953A95D1F7BF93AC |
:10236000AF939F938F9389EF91E09F938F931F93E8 |
:102370000E94D90788E28093CC018DB79EB707965B |
:102380000FB6F8949EBF0FBE8DBF80911D02909135 |
:102390001E02A0911F02B0912002B7FF04C081501D |
:1023A0009C4FAF4FBF4F2AE0B595A795979587955E |
:1023B0002A95D1F7BF93AF939F938F9388E092E0D4 |
:1023C0009F938F931F930E94D9078CE38093CC0136 |
:1023D0008DB79EB707960FB6F8949EBF0FBE8DBF00 |
:1023E0008091F7019091F8019F938F9387E192E09C |
:1023F00092C21092CC018091BB049091BC049F9337 |
:102400008F938091B9049091BA049F938F9386E241 |
:1024100092E09F938F931F930E94D90784E180934A |
:10242000CC018DB79EB707960FB6F8949EBF0FBE2E |
:102430008DBF8091BF049091C0049F938F93809132 |
:10244000BD049091BE049F938F9386E392E09F9387 |
:102450008F931F930E94D90788E28093CC018DB798 |
:102460009EB707960FB6F8949EBF0FBE8DBF8091A2 |
:10247000C3049091C4049F938F938091C104909161 |
:10248000C2049F938F9386E492E09F938F931F9350 |
:102490000E94D9078CE38093CC018DB79EB7079635 |
:1024A0000FB6F8949EBF0FBE8DBF8091C704909168 |
:1024B000C8049F938F938091C5049091C6049F9305 |
:1024C0008F9386E592E076C21092CC018091E4046D |
:1024D000E82FFF27EE0FFF1FE954FB4F808191810A |
:1024E0009F938F938091E304E82FFF27EE0FFF1F48 |
:1024F000E954FB4F808191819F938F9386E692E010 |
:102500009F938F931F930E94D90784E18093CC01FE |
:102510008DB79EB707960FB6F8949EBF0FBE8DBFBE |
:102520008091E604E82FFF27EE0FFF1FE954FB4FD1 |
:10253000808191819F938F938091E504E82FFF27FD |
:10254000EE0FFF1FE954FB4F808191819F938F9382 |
:1025500086E792E09F938F931F930E94D90788E2AA |
:102560008093CC018DB79EB707960FB6F8949EBFA7 |
:102570000FBE8DBF8091E804E82FFF27EE0FFF1FED |
:10258000E954FB4F808191819F938F938091E70461 |
:10259000E82FFF27EE0FFF1FE954FB4F8081918149 |
:1025A0009F938F9386E892E09F938F931F930E944F |
:1025B000D9078CE38093CC018DB79EB707960FB6F1 |
:1025C000F8949EBF0FBE8DBF8091EA04E82FFF27CD |
:1025D000EE0FFF1FE954FB4F808191819F938F93F2 |
:1025E0008091E904E82FFF27EE0FFF1FE954FB4F0E |
:1025F000808191819F938F9386E992E0DBC1109255 |
:10260000CC0186EA92E09F938F931F930E94D90793 |
:1026100084E18093CC010F900F900F90809137024E |
:10262000909138029F938F938091BC01282F33277C |
:102630008091C7019091C801B9010E94882F7F93B2 |
:102640006F9384EB92E09F938F931F930E94D9071F |
:1026500088E28093CC018DB79EB707960FB6F894A9 |
:102660009EBF0FBE8DBF80913502909136029F9321 |
:102670008F938091BB01282F33278091C5019091C2 |
:10268000C601B9010E94882F7F936F9383EC92E07B |
:102690009F938F931F930E94D9078CE38093CC0163 |
:1026A0008DB79EB707960FB6F8949EBF0FBE8DBF2D |
:1026B00080913302909134029F938F938091BA015D |
:1026C000282F33278091C3019091C401B9010E9442 |
:1026D000882F7F936F9382ED92E06CC11092CC01B2 |
:1026E00081EE92E09F938F931F930E94D90784E11C |
:1026F0008093CC010F900F900F90809131029091B8 |
:1027000032029F938F938091B901282F33278091B4 |
:10271000BF019091C001B9010E94882F7F936F93F0 |
:102720008EEE92E09F938F931F930E94D90788E2C9 |
:102730008093CC018DB79EB707960FB6F8949EBFD5 |
:102740000FBE8DBF80912F02909130029F938F9387 |
:102750008091B801282F33278091C1019091C20147 |
:10276000B9010E94882F7F936F938DEF92E09F9322 |
:102770008F931F930E94D9078CE38093CC018DB770 |
:102780009EB707960FB6F8949EBF0FBE8DBF80917F |
:102790002B0290912C02A0912D02B0912E02BC012F |
:1027A000CD010E946A2EDC01CB019F938F93809113 |
:1027B0009F049091A0049F938F938CE093E0FAC0C4 |
:1027C00084E18093CC0180910D0190910E019F9343 |
:1027D0008F938BE193E09F938F931F930E94D90770 |
:1027E00088E28093CC010F900F900F900F900F9084 |
:1027F0008091E80199279F938F938AE293E08BC0A1 |
:102800001092CC0189E393E09F938F931F930E94D2 |
:10281000D90784E18093CC010F900F900F908091A5 |
:10282000F3019091F4019F938F9388E493E09F9339 |
:102830008F931F930E94D90788E28093CC010F9059 |
:102840000F900F900F900F908091F7019091F801E9 |
:102850009F938F9387E593E09F938F931F930E949D |
:10286000D9078CE38093CC010F900F900F900F90BD |
:102870000F908091F5019091F6019F938F9386E6DA |
:1028800093E049C01092CC018091EF019091F0014A |
:102890009F938F9385E793E09F938F931F930E945D |
:1028A000D90784E18093CC010F900F900F900F9087 |
:1028B0000F908091ED019091EE019F938F9381E8AD |
:1028C00093E09F938F931F930E94D90788E2809390 |
:1028D000CC010F900F900F900F900F908091EB0113 |
:1028E0009091EC019F938F938DE893E09F938F934A |
:1028F0001F930E94D9078CE38093CC010F900F9017 |
:102900000F900F900F908091E9019091EA019F93B1 |
:102910008F9389E993E09F938F931F930E94D90728 |
:102920000F900F900F900F900F9057C01092CC0106 |
:1029300085EA93E09F938F931F930E94D90784E1C8 |
:102940008093CC010F900F900F9080916C0199278C |
:102950009F938F938DEA93E09F938F931F930E9491 |
:10296000D90788E28093CC010F900F900F900F90C1 |
:102970000F908091A7019091A8019F938F938BEB6B |
:1029800093E09F938F931F930E94D9078CE38093CA |
:10299000CC010F900F900F900F900F908091070532 |
:1029A00099279F938F938091060599279F938F93E3 |
:1029B00089EC93E09F938F931F930E94D9078DB763 |
:1029C0009EB707960FB6F8949EBF0FBE8DBF05C089 |
:1029D0008150809369011092CF011092CB01DF9159 |
:1029E000CF911F9108951092B9008AE28093B800A8 |
:1029F000089585EA8093BC0080E090E0089584E922 |
:102A00008093BC0008951092B9008093BB0085E8C4 |
:102A10008093BC0080E090E008950E94FF14109223 |
:102A2000D2018091BB001092D10180E88093BC005C |
:102A30001092BD001092BA001092BB001092B90023 |
:102A40001092B8000E94F3140E94F91480E00E94D2 |
:102A5000031508951F920F920FB60F9211242F9312 |
:102A60003F934F935F936F937F938F939F93AF9316 |
:102A7000BF93EF93FF938091D201282F33278F5F6D |
:102A80008093D2012330310509F446C0243031054A |
:102A90004CF421303105D1F0223031057CF5232B67 |
:102AA00081F083C025303105E1F1253031050CF48A |
:102AB00041C026303105F1F12730310509F45AC003 |
:102AC00074C08091D101880F8E5A51C08091D1017C |
:102AD000282F33278F5F8093D1012130310509F4EE |
:102AE0003EC0223031051CF4232BB1F15EC02230F0 |
:102AF0003105C1F123303105C1F157C00E94FF14E7 |
:102B00008091D101843018F41092D20102C0109249 |
:102B1000D1010E94F91449C08091D001880F8D5ACB |
:102B200026C08091D001E82FFF27E155FB4F80910F |
:102B3000BB0080838091D00199278130910579F085 |
:102B4000823091051CF4892B39F02FC08230910519 |
:102B500049F0039751F029C08091700208C080911C |
:102B6000710205C08091740202C0809176020E94B9 |
:102B700003151BC09091D001E92FFF27E155FB4FB2 |
:102B80008091BB008483892F8F5F8093D001843034 |
:102B900010F01092D0010E94FF148AE090E0909310 |
:102BA0007F0180937E011092D2018091BC008068E9 |
:102BB0008093BC00FF91EF91BF91AF919F918F9156 |
:102BC0007F916F915F914F913F912F910F900FBE29 |
:102BD0000F901F90189583EC8093810080916F0077 |
:102BE000806280936F001092340210923302109230 |
:102BF0003602109235021092380210923702089570 |
:102C00001F920F920FB60F9211242F933F934F9361 |
:102C10005F936F937F938F939F93AF93BF93EF9344 |
:102C2000FF9340918600509187008091D30190914D |
:102C3000D401481B590B8091860090918700909396 |
:102C4000D4018093D301CA018D5D9540835699418B |
:102C500048F481E090E09093D6018093D5011092E2 |
:102C60006A016FC02091D5013091D6012A3031051B |
:102C70000CF067C0CA018B5F9040845B914008F004 |
:102C800043C0425D5140F901E20FF31FE954FB4F8D |
:102C900080819181BA01681B790BCB0177FF03C05A |
:102CA000909581959F4F06974CF48091E801883C60 |
:102CB00028F48091E801865F8093E801F901E20F32 |
:102CC000F31FDF01A954BB4F8D919C9111979C017B |
:102CD000220F331F280F391F240F351F37FF02C063 |
:102CE0002D5F3F4FC9019595879595958795E3533E |
:102CF000FB4F2D913C911197AC01421B530B51831B |
:102D0000408311969C938E938091D5019091D6012A |
:102D100001969093D6018093D501059711F45D9AA1 |
:102D200001C05D988091D5019091D60186309105C2 |
:102D300011F45C9A01C05C98079711F45B9A01C08A |
:102D40005B98FF91EF91BF91AF919F918F917F9190 |
:102D50006F915F914F913F912F910F900FBE0F9008 |
:102D60001F901895CF93C82FC150CF3F81F080910D |
:102D7000E101882361F484E690E09093AA018093B6 |
:102D8000A9018AEF90E00E944C0BC15080F7CF91CF |
:102D9000089510927A008091BC01882379F0809187 |
:102DA000BC01282F33278091C7019091C801B90138 |
:102DB0000E94882F7093200560931F058091BB01AE |
:102DC000882379F08091BB01282F33278091C5019A |
:102DD0009091C601B9010E94882F70931E056093DF |
:102DE0001D058091BA01882379F08091BA01282FBE |
:102DF00033278091C3019091C401B9010E94882FAB |
:102E000070932C0560932B058091B9018823E1F024 |
:102E10008091BF019091C001AA2797FDA095BA2F7C |
:102E200034E0880F991FAA1FBB1F3A95D1F7209154 |
:102E3000B901332744275527BC01CD010E94BD2F7E |
:102E400030932905209328058091B8018823E1F06B |
:102E50008091C1019091C201AA2797FDA095BA2F38 |
:102E600024E0880F991FAA1FBB1F2A95D1F7209134 |
:102E7000B801332744275527BC01CD010E94BD2F3F |
:102E800030933205209331058091B7018823A9F052 |
:102E90008091BD019091BE01AA2797FDA095BA2F00 |
:102EA0002091B701332744275527BC01CD010E944B |
:102EB000BD2F30932305209322051092C801109254 |
:102EC000C7011092BC011092C6011092C501109268 |
:102ED000BB011092C4011092C3011092BA0110926A |
:102EE000C2011092C1011092B8011092C00110925B |
:102EF000BF011092B9011092BE011092BD01109253 |
:102F0000B7018FEE80937A008091E704E82FFF27C6 |
:102F1000EE0FFF1FE954FB4F8081918182599F4F33 |
:102F20002091EF013091F001281739071CF42F5F31 |
:102F30003F4F0CC08081918182599F4F8217930728 |
:102F40004CF42115310531F0215030403093F0011F |
:102F50002093EF018091E804E82FFF27EE0FFF1F79 |
:102F6000E954FB4F8081918182599F4F2091ED015F |
:102F70003091EE01281739071CF42F5F3F4F0CC02A |
:102F80008081918182599F4F821793074CF42115BC |
:102F9000310531F0215030403093EE012093ED01A6 |
:102FA0008091E904E82FFF27EE0FFF1FE954FB4F44 |
:102FB0008081918182599F4F2091EB013091EC01EA |
:102FC000281739071CF42F5F3F4F0CC08081918177 |
:102FD00082599F4F821793074CF42115310531F028 |
:102FE000215030403093EC012093EB018091EA04B2 |
:102FF000E82FFF27EE0FFF1FE954FB4F80819181DF |
:1030000082599F4F2091E9013091EA012817390731 |
:103010001CF42F5F3F4F0CC08081918182599F4FDC |
:10302000821793074CF42115310531F021503040BF |
:103030003093EA012093E9018091EF019091F00132 |
:1030400097FF05C01092F0011092EF010AC08F3F68 |
:10305000910539F034F08FEF90E09093F001809378 |
:10306000EF018091ED019091EE0197FF05C0109264 |
:10307000EE011092ED010AC08F3F910539F034F056 |
:103080008FEF90E09093EE018093ED018091EB0142 |
:103090009091EC0197FF05C01092EC011092EB01AA |
:1030A0000AC08F3F910539F034F08FEF90E0909394 |
:1030B000EC018093EB018091E9019091EA0197FF87 |
:1030C00005C01092EA011092E90108958F3F910521 |
:1030D00039F034F08FEF90E09093EA018093E901AA |
:1030E0000895CF93DF931092320210923102109222 |
:1030F000300210922F0280E090E0A0E0B0E08093D8 |
:103100002B0290932C02A0932D02B0932E021092CA |
:103110003802109237021092360210923502109245 |
:103120003402109233020E94C91685E090E00E949A |
:10313000110BEC01CE010E94400B8823D9F30E94B1 |
:10314000C9168091EB0480FF10C080910701909117 |
:103150000801875B934038F4809107019091080142 |
:103160008E5E924010F40E94160C809100018A300D |
:1031700081F580911F059091200580911F05909108 |
:10318000200597FF03C0909581959F4F909338023B |
:103190008093370280911D0590911E0580911D0539 |
:1031A00090911E0597FF03C0909581959F4F909336 |
:1031B00036028093350280912B0590912C058091E9 |
:1031C0002B0590912C0597FF3FC0909581959F4FBF |
:1031D0003BC080911F059091200580911F05909123 |
:1031E000200597FF03C0909581959F4F97FD01960D |
:1031F00095958795909338028093370280911D05AD |
:1032000090911E0580911D0590911E0597FF03C0AA |
:10321000909581959F4F97FD0196959587959093F1 |
:1032200036028093350280912B0590912C05809178 |
:103230002B0590912C0597FF03C0909581959F4F8A |
:1032400097FD01969595879590933402809333026C |
:103250008091310590913205809131059091320530 |
:1032600097FF03C0909581959F4F97FD0F9654E06F |
:10327000959587955A95E1F79093300280932F02A8 |
:103280008091280590912905809128059091290524 |
:1032900097FF03C0909581959F4F97FD0F9644E04F |
:1032A000959587954A95E1F7909332028093310284 |
:1032B00080919F049091A004AA2797FDA095BA2F12 |
:1032C000BC01CD010E94872EDC01CB0180932B0233 |
:1032D00090932C02A0932D02B0932E021092110213 |
:1032E00010921202109213021092140210920D0208 |
:1032F00010920E0210920F02109210021092090208 |
:1033000010920A0210920B0210920C021092050207 |
:103310001092060210920702109208021092010207 |
:1033200010920202109203021092040210922005E1 |
:1033300010921F0510921E0510921D0510922C056B |
:1033400010922B058091090190910A01A0910B0127 |
:10335000B0910C019093A2048093A1041092B60145 |
:103360001092B5011092F9011092FA011092FB012E |
:103370001092FC018091F7019091F8019093F60171 |
:103380008093F5010E94AA2D82E390E09093AA0118 |
:103390008093A901DF91CF910895EF92FF920F934F |
:1033A0001F9310927A008091BC01882379F080915C |
:1033B000BC01282F33278091C7019091C801B90122 |
:1033C0000E94882F7093200560931F058091BB0198 |
:1033D000882379F08091BB01282F33278091C50184 |
:1033E0009091C601B9010E94882F70931E056093C9 |
:1033F0001D058091BA01882379F08091BA01282FA8 |
:1034000033278091C3019091C401B9010E94882F94 |
:1034100070932C0560932B058091B901882309F4E2 |
:1034200046C08091280590912905AA2797FDA0956F |
:10343000BA2F7C018D01E3E0EE0CFF1C001F111F71 |
:10344000EA95D1F7E81AF90A0A0B1B0B8091BF0124 |
:103450009091C001AA2797FDA095BA2F74E0880F1C |
:10346000991FAA1FBB1F7A95D1F72091B901332765 |
:1034700044275527BC01CD010E94BD2FE20EF31E4B |
:10348000041F151F17FF08C087E090E0A0E0B0E020 |
:10349000E80EF91E0A1F1B1F63E015950795F794A8 |
:1034A000E7946A95D1F7F0922905E092280580917A |
:1034B000B801882309F446C0809131059091320506 |
:1034C000AA2797FDA095BA2F7C018D0153E0EE0C41 |
:1034D000FF1C001F111F5A95D1F7E81AF90A0A0BB1 |
:1034E0001B0B8091C1019091C201AA2797FDA09565 |
:1034F000BA2F44E0880F991FAA1FBB1F4A95D1F726 |
:103500002091B801332744275527BC01CD010E94E3 |
:10351000BD2FE20EF31E041F151F17FF08C087E022 |
:1035200090E0A0E0B0E0E80EF91E0A1F1B1F33E098 |
:1035300015950795F794E7943A95D1F7F0923205EF |
:10354000E09231058091B701882309F43FC0809152 |
:10355000220590912305AA2797FDA095BA2F7C01FB |
:103560008D0123E0EE0CFF1C001F111F2A95D1F7DF |
:10357000E81AF90A0A0B1B0B8091BD019091BE015C |
:10358000AA2797FDA095BA2F2091B701332744278A |
:103590005527BC01CD010E94BD2FE20EF31E041F72 |
:1035A000151F17FF08C087E090E0A0E0B0E0E80E2C |
:1035B000F91E0A1F1B1FF3E015950795F794E79472 |
:1035C000FA95D1F7F0922305E09222051092C801F6 |
:1035D0001092C7011092BC011092C6011092C50151 |
:1035E0001092BB011092C4011092C3011092BA0153 |
:1035F0001092C2011092C1011092B8011092C00144 |
:103600001092BF011092B9011092BE011092BD013B |
:103610001092B7018091010290910202A0910302E1 |
:10362000B09104028093150290931602A0931702A2 |
:10363000B09318028091110290911202A09113028E |
:10364000B09114028093250290932602A093270242 |
:10365000B09328028091090290910A02A0910B0276 |
:10366000B0910C0280931D0290931E02A0931F0242 |
:10367000B093200280910D0290910E02A0910F0252 |
:10368000B09110028093210290932202A093230212 |
:10369000B09324028091050290910602A091070246 |
:1036A000B09108028093190290931A02A0931B0212 |
:1036B000B0931C028FEE80937A008091E704E82F8C |
:1036C000FF27EE0FFF1FE954FB4F80819181825944 |
:1036D0009F4F2091EF013091F001281739071CF41A |
:1036E0002F5F3F4F0CC08081918182599F4F82177D |
:1036F00093074CF42115310531F0215030403093BF |
:10370000F0012093EF018091E804E82FFF27EE0FEE |
:10371000FF1FE954FB4F8081918182599F4F209177 |
:10372000ED013091EE01281739071CF42F5F3F4F50 |
:103730000CC08081918182599F4F821793074CF46E |
:103740002115310531F0215030403093EE012093A6 |
:10375000ED018091E904E82FFF27EE0FFF1FE954E8 |
:10376000FB4F8081918182599F4F2091EB013091D5 |
:10377000EC01281739071CF42F5F3F4F0CC08081E4 |
:10378000918182599F4F821793074CF4211531057F |
:1037900031F0215030403093EC012093EB018091C7 |
:1037A000EA04E82FFF27EE0FFF1FE954FB4F80814B |
:1037B000918182599F4F2091E9013091EA012817A8 |
:1037C00039071CF42F5F3F4F0CC0808191818259D3 |
:1037D0009F4F821793074CF42115310531F021508A |
:1037E00030403093EA012093E9018091EF019091FC |
:1037F000F00197FF05C01092F0011092EF010AC08E |
:103800008F3F910539F034F08FEF90E09093F00105 |
:103810008093EF018091ED019091EE0197FF05C03B |
:103820001092EE011092ED010AC08F3F910539F020 |
:1038300034F08FEF90E09093EE018093ED01809152 |
:10384000EB019091EC0197FF05C01092EC011092F2 |
:10385000EB010AC08F3F910539F034F08FEF90E013 |
:103860009093EC018093EB018091E9019091EA0142 |
:1038700097FF05C01092EA011092E9010AC08F3F3C |
:10388000910539F034F08FEF90E09093EA01809346 |
:10389000E9011F910F91FF90EF9008958091E10150 |
:1038A000882301F5809371028093700280937402E3 |
:1038B0008093760280919001882311F080937002AA |
:1038C00080919101882311F080937102809192017F |
:1038D000882311F08093760280919301882311F060 |
:1038E000809374028091700299279093750480935D |
:1038F00074048091710299279093770480937604E1 |
:10390000809176029927909379048093780480912E |
:103910007402992790937B0480937A041092D201C9 |
:103920001092D1010E94F914089581E08093E3047C |
:1039300082E08093E40483E08093E50494E0909334 |
:10394000E60445E04093E70486E08093E80487E0DE |
:103950008093E90438E03093EA041092EB048EE19E |
:103960008093EC048BEF8093EE048AE08093EF0465 |
:1039700022E32093ED042093F1049093F0049093BC |
:10398000F2043093F30480E18093F4048FE0809399 |
:10399000F5048AEF8093F6048AE18093F70480E8C7 |
:1039A0008093F80488E78093F90496E99093FA04E9 |
:1039B0008EE58093FB0483E28093FC0484E1809392 |
:1039C000FD041092FE041092FF0410920005109264 |
:1039D0000105109202051092030584E68093040508 |
:1039E00088E28093050510920C05209306059093BC |
:1039F000070540930805209309058AE580930A0589 |
:103A000010920B05A1E1B5E0E0E8F1E08CE0019057 |
:103A10000D928150E1F7089581E08093E30432E054 |
:103A20003093E40483E08093E50424E02093E604EB |
:103A300045E04093E70486E08093E80487E08093C4 |
:103A4000E90488E08093EA041092EB048EE180930D |
:103A5000EC048BEF8093EE048AE08093EF0492E312 |
:103A60009093ED049093F1043093F0042093F204CA |
:103A70001092F30480E18093F4048FE08093F504C6 |
:103A80008AEF8093F6048AE18093F70480E88093BC |
:103A9000F8048FEA8093F9048093FA048EE580930A |
:103AA000FB0483E28093FC0484E18093FD04109284 |
:103AB000FE041092FF04109200051092010510926E |
:103AC00002051092030584E68093040588E2809342 |
:103AD000050510920C059093060586E9809307056D |
:103AE00040930805909309058AE580930A05109292 |
:103AF0000B05A1E1B5E0E7E8F1E08CE001900D9263 |
:103B00008150E1F708951F938091EE048B3F98F068 |
:103B10008B3F19F48091EF010EC08C3F19F4809116 |
:103B2000ED0109C08D3F19F48091EB0104C08E3F77 |
:103B300021F48091E90180937401809174018823BC |
:103B400021F08F3F11F4809374018091ED048B3F3D |
:103B500098F08B3F19F48091EF010EC08C3F19F45F |
:103B60008091ED0109C08D3F19F48091EB0104C0F3 |
:103B70008E3F21F48091E901809375018091750158 |
:103B8000882329F0843618F084E6809375018091AB |
:103B9000EF048B3F98F08B3F19F48091EF010EC03A |
:103BA0008C3F19F48091ED0109C08D3F19F480918B |
:103BB000EB0104C08E3F21F48091E90180937301F1 |
:103BC00080917301882329F0843618F084E680936D |
:103BD00073018091F1048B3F98F08B3F19F4809131 |
:103BE000EF010EC08C3F19F48091ED0109C08D3FAB |
:103BF00019F48091EB0104C08E3F21F48091E9011A |
:103C00008093720180917201882321F08F3F11F41B |
:103C1000809372018091F8048B3F98F08B3F19F4E8 |
:103C20008091EF010EC08C3F19F48091ED0109C025 |
:103C30008D3F19F48091EB0104C08E3F21F48091F7 |
:103C4000E9018093710180917101882321F08F3FF8 |
:103C500011F4809371018091F9048B3F98F08B3FB0 |
:103C600019F48091EF010EC08C3F19F48091ED01A1 |
:103C700009C08D3F19F48091EB0104C08E3F21F4FF |
:103C80008091E90180937001809170018B3010F474 |
:103C90008AE002C08F3F11F4809370018091FA0492 |
:103CA0008B3F98F08B3F19F48091EF010EC08C3F51 |
:103CB00019F48091ED0109C08D3F19F48091EB0159 |
:103CC00004C08E3F21F48091E90180936F018091BF |
:103CD0006F01882321F08F3F11F480936F01809151 |
:103CE000FF048B3F98F08B3F19F48091EF010EC0D9 |
:103CF0008C3F19F48091ED0109C08D3F19F480913A |
:103D0000EB0104C08E3F21F48091E90180936D01A5 |
:103D100080916D01882321F08F3F11F480936D0114 |
:103D2000809100058B3F98F08B3F19F48091EF0153 |
:103D30000EC08C3F19F48091ED0109C08D3F19F43C |
:103D40008091EB0104C08E3F21F48091E9018093C2 |
:103D5000DA018091DA01882321F08F3F11F48093FA |
:103D6000DA01809101058B3F98F08B3F19F4809127 |
:103D7000EF010EC08C3F19F48091ED0109C08D3F19 |
:103D800019F48091EB0104C08E3F21F48091E90188 |
:103D90008093D9018091D901882321F08F3F11F4BC |
:103DA0008093D901809102058B3F98F08B3F19F4E5 |
:103DB0008091EF010EC08C3F19F48091ED0109C094 |
:103DC0008D3F19F48091EB0104C08E3F21F4809166 |
:103DD000E9018093D8018091D801882321F08F3F99 |
:103DE00011F48093D801809103058B3F98F08B3FAD |
:103DF00019F48091EF010EC08C3F19F48091ED0110 |
:103E000009C08D3F19F48091EB0104C08E3F21F46D |
:103E10008091E9018093D7018091D701882321F017 |
:103E20008F3F11F48093D701909104059B3FB0F030 |
:103E30009B3F19F48091EF010EC09C3F19F48091D3 |
:103E4000ED0109C09D3F19F48091EB0104C09E3F34 |
:103E500039F48091E90180936C0102C090936C0168 |
:103E600080916C01882321F08F3F11F480936C01C5 |
:103E70009B3FB0F09B3F19F48091EF010EC09C3F37 |
:103E800019F48091ED0109C09D3F19F48091EB0177 |
:103E900004C09E3F39F48091E90180936C0102C017 |
:103EA00090936C0180916C01882321F08F3F11F475 |
:103EB00080936C019B3FB0F09B3F19F48091EF0120 |
:103EC0000EC09C3F19F48091ED0109C09D3F19F48B |
:103ED0008091EB0104C09E3F39F48091E901809309 |
:103EE0006C0102C090936C0180916C01882321F0D9 |
:103EF0008F3F11F480936C01809109058B3F98F0FE |
:103F00008B3F19F48091EF010EC08C3F19F4809122 |
:103F1000ED0109C08D3F19F48091EB0104C08E3F83 |
:103F200021F48091E90180936B0180916B018823DA |
:103F300021F08F3F11F480936B0110916D01812F5F |
:103F4000992787FD9095A92FB92FBC01CD010E941B |
:103F5000872E17FF06C020E030E040E853E40E94BF |
:103F6000E22D27E137EB41ED58E30E94012FDC0100 |
:103F7000CB018093760190937701A0937801B09361 |
:103F800079018091F60480932A058091F50480934D |
:103F900021051F9108953F924F925F926F927F92F9 |
:103FA0008F929F92AF92BF92CF92DF92EF92FF9249 |
:103FB0000F931F93CF93DF930E94CD19299A80917D |
:103FC000E504E82FFF27EE0FFF1FE954FB4F808029 |
:103FD000918028E730E0820E931E97FE02C088246D |
:103FE00099248091E801843608F05EC08091010137 |
:103FF000882399F480910301909104018F5F9F4F72 |
:1040000061F488E99AE39093AA018093A90180E082 |
:104010009CE0909304018093030180914D02909164 |
:104020004E02009731F0019790934E0280934D021B |
:1040300004C01092E1011092F201809100018A30D7 |
:1040400011F4289A01C0289880915202909153024D |
:10405000815D974030F18091FC04882E992481E0A5 |
:104060008093F2018091E304E82FFF27EE0FFF1FFA |
:10407000E954FB4F118210828091E404E82FFF275E |
:10408000EE0FFF1FE954FB4F118210828091E6046E |
:10409000E82FFF27EE0FFF1FE954FB4F118210821C |
:1040A000E0C11092E101DDC18091E8018D3808F492 |
:1040B000D8C11092F2019091FD0482E3989FC00153 |
:1040C000112490934E0280934D0259E2851691047B |
:1040D0006CF080915202909153026FEF8F3F9607E0 |
:1040E00029F00196909353028093520280915202DC |
:1040F00090915302883C910520F078E28716910454 |
:1041000004F51092390210923A0210923B0210927A |
:104110003C0210923D0210923E0210923F02109219 |
:1041200040021092010210920202109203021092B9 |
:1041300004021092FD011092FE011092FF011092F4 |
:10414000000289EC881691040CF4EBC02091E10187 |
:10415000222309F0E6C08091E604E82FFF27EE0F46 |
:10416000FF1FE954FB4F808191818C3491050CF441 |
:10417000D6C080914F028F5F80934F02893C08F434 |
:10418000D0C0299820934F021092530210925202ED |
:104190003091E304E32FFF27EE0FFF1FE954FB4F9D |
:1041A0008081918187349105B4F48091E404E82FF3 |
:1041B000FF27EE0FFF1FE954FB4F80819181019093 |
:1041C000F081E02DF7FF03C0F095E195FF4FE73454 |
:1041D000F1050CF482C02091E404E22FFF27EE0FDA |
:1041E000FF1FE954FB4F808191818734910564F072 |
:1041F000E32FFF27EE0FFF1FE954FB4F80819181D2 |
:10420000863491050CF4C1E0E22FFF27EE0FFF1F6B |
:10421000E954FB4F808191818734910574F080913E |
:10422000E304E82FFF27EE0FFF1FE954FB4F8081C7 |
:104230009181873491050CF0C2E0E22FFF27EE0F49 |
:10424000FF1FE954FB4F808191818634910574F4FE |
:104250008091E304E82FFF27EE0FFF1FE954FB4F87 |
:1042600080819181873491050CF0C3E0E22FFF2714 |
:10427000EE0FFF1FE954FB4F808191818A5B9F4FB6 |
:1042800074F48091E304E82FFF27EE0FFF1FE95439 |
:10429000FB4F80819181873491050CF0C4E0E22FBF |
:1042A000FF27EE0FFF1FE954FB4F808191818A5B4E |
:1042B0009F4F74F48091E304E82FFF27EE0FFF1F58 |
:1042C000E954FB4F80819181863491050CF4C5E05F |
:1042D000A2E0B0E00C2E0E94E02F8091EB0480FF62 |
:1042E00010C08091070190910801875B934038F4DA |
:1042F00080910701909108018E5E924010F40E9417 |
:10430000160C0E9433024AE363EE74E00E94090235 |
:104310000E9471180E9433020E94B21602C02093BC |
:104320004F0273E2871691040CF09BC02091E604C3 |
:10433000E22FFF27EE0FFF1FE954FB4F8081918191 |
:10434000855B9F4F0CF06DC0809150028F5F809312 |
:104350005002893C08F467C088EC8093500281E0E9 |
:1043600090E0909353028093520281E08093E101A8 |
:1043700010924102109242021092430210924402A3 |
:104380001092010210920202109203021092040293 |
:104390001092FD011092FE011092FF011092000296 |
:1043A0001092110210921202109213021092140233 |
:1043B0001092090210920A0210920B0210920C0243 |
:1043C0008091250290912602A0912702B0912802A7 |
:1043D00080930D0290930E02A0930F02B0931002EF |
:1043E00080911D0290911E02A0911F02B0912002A7 |
:1043F0008093050290930602A0930702B0930802EF |
:104400001092390210923A0210923B0210923C0232 |
:1044100010923D0210923E0210923F021092400212 |
:1044200002C010925002E22FFF27EE0FFF1FE95447 |
:10443000FB4F808191818C3491058CF080915102E9 |
:104440008F5F80935102893C60F01092E10188EC0B |
:1044500080935102109253021092520202C01092A5 |
:10446000510280916A01815080936A0180916A01B2 |
:104470008F3F29F08091F201882309F4AAC10E949C |
:10448000831D8091E304E82FFF27EE0FFF1FDF015C |
:10449000A954BB4F0091F204C02FDD278D919C9150 |
:1044A0008C9F70018D9FF00C9C9FF00C1124E353A6 |
:1044B000FB4F8091F304482F552780819181849F81 |
:1044C000B001859F700D949F700D1124E60EF71EAC |
:1044D000F092E701E092E6018091E404E82FFF27E3 |
:1044E000EE0FFF1FDF01A954BB4F8D919C918C9F54 |
:1044F00090018D9F300D9C9F300D1124E353FB4F95 |
:1045000080819181849FB001859F700D949F700D73 |
:104510001124260F371F3093E5012093E401809189 |
:10452000E604E82FFF27EE0FFF1FE954FB4F8081C1 |
:104530009181909581959F4F9093E3018093E20143 |
:1045400010917001812F992787FD9095A92FB92F80 |
:10455000BC01CD010E94872E17FF06C020E030E08D |
:1045600040E853E40E94E22D20E030E040E251E4D4 |
:104570000E94E22DDC01CB0120E030E040E85BE36B |
:10458000BC01CD010E94012F5B016C0160932D05E0 |
:1045900070932E0580932F059093300510916F0135 |
:1045A000812F992787FD9095A92FB92FBC01CD01A7 |
:1045B0000E94872E17FF06C020E030E040E853E459 |
:1045C0000E94E22D20E030EE4BE257E40E94242EC0 |
:1045D000DC01CB018093240590932505A09326054B |
:1045E000B09327058091EB0482FF0CC080E090E03F |
:1045F000A0E0B0E08093240590932505A0932605C4 |
:10460000B093270520E030E040E050E0C601B5015E |
:104610000E94912E882364F480E090E0A0E0B0E056 |
:1046200080932D0590932E05A0932F05B093300510 |
:104630008091240590912505A0912605B09127052C |
:1046400020E030E040E050E0BC01CD010E94912E1E |
:10465000882364F480E090E0A0E0B0E0809324053B |
:1046600090932505A0932605B093270580910B050F |
:10467000992782FDAEC083FDACC080912502909148 |
:104680002602A0912702B091280281569A4EA0409E |
:10469000B040DCF0CE0123E0880F991F2A95E1F7A6 |
:1046A0009701281B390B3093E7012093E601809195 |
:1046B000250290912602A0912702B09128028158EC |
:1046C0009843A140B04094F126C08091250290917A |
:1046D0002602A0912702B0912802805A9541AF4F3F |
:1046E000BF4F24F59E0113E0220F331F1A95E1F707 |
:1046F0002E0D3F1D3093E7012093E60180912502A6 |
:1047000090912602A0912702B091280281589843E7 |
:10471000A140B0405CF0B4E0CC0FDD1FBA95E1F7EA |
:104720002C1B3D0B3093E7012093E60180911D0285 |
:1047300090911E02A0911F02B091200281569A4EC4 |
:10474000A040B0407CF0402F5527CA01A3E0880F5D |
:10475000991FAA95E1F72091E4013091E501281B0A |
:10476000390B1BC080911D0290911E02A0911F0267 |
:10477000B0912002805A9541AF4FBF4F54F5402F62 |
:104780005527CA01F3E0880F991FFA95E1F72091A8 |
:10479000E4013091E501280F391F3093E5012093A2 |
:1047A000E40180911D0290911E02A0911F02B09120 |
:1047B000200281589843A140B0405CF0E4E0440FEF |
:1047C000551FEA95E1F7241B350B3093E501209343 |
:1047D000E4018091E404E82FFF27EE0FFF1FE95466 |
:1047E000FB4F40910A05242F3327808191812817A0 |
:1047F000390724F480910B0582FD0CC0309521957A |
:104800003F4F80819181821793077CF480910B0543 |
:1048100083FF0BC081E08093DB018091090599271C |
:104820008815990524F44C0102C01092DB01809197 |
:10483000E304E82FFF27EE0FFF1FE954FB4F242F5F |
:104840003327808191812817390724F480910B0543 |
:1048500080FD0CC0309521953F4F8081918182175A |
:1048600093078CF480910B0581FF0DC081E080934C |
:10487000DC011092DB0180910905992788159905C3 |
:1048800024F44C0102C01092DC013090F20133207C |
:1048900041F11092E3011092E2011092E7011092AF |
:1048A000E6011092E5011092E4018DEC9CECACEC79 |
:1048B000BDE380932D0590932E05A0932F05B09313 |
:1048C00030058AE097EDA3EABBE38093240590933B |
:1048D0002505A0932605B09327051092DB011092C1 |
:1048E000DC018091B3019091B4018D54914008F4A2 |
:1048F00099C02091210230912202409123025091CF |
:1049000024028091250290912602A0912702B09165 |
:104910002802281B390B4A0B5B0BC0911902D0915E |
:104920001A02E0911B02F0911C0280911D029091ED |
:104930001E02A0911F02B0912002C81BD90BEA0BE6 |
:10494000FB0B1092B4011092B301273A31054105D7 |
:1049500051054CF080913702909138020196909366 |
:104960003802809337022A553F4F4F4F5F4F4CF428 |
:10497000809137029091380201979093380280938A |
:104980003702C73AD105E105F1054CF080913502B7 |
:104990009091360201969093360280933502CA5563 |
:1049A000DF4FEF4FFF4F4CF480913502909136026C |
:1049B0000197909336028093350210927A0080918D |
:1049C000250290912602A0912702B091280280939F |
:1049D0000D0290930E02A0930F02B09310028091EB |
:1049E0001D0290911E02A0911F02B091200280939F |
:1049F000050290930602A0930702B09308028091EB |
:104A0000150290911602A0911702B091180280939E |
:104A1000FD019093FE01A093FF01B09300028FEE81 |
:104A200080937A00409024055090250560902605DB |
:104A30007090270520E030E040E050E0C301B20173 |
:104A40000E94912E882309F43DC18091DC018823C6 |
:104A500009F038C18091DB01882309F033C1C0918E |
:104A6000F7042C2F33274427552780912502909156 |
:104A70002602A0912702B0912802BC01CD010E941C |
:104A8000BD2F8091280590912905AA2797FDA09513 |
:104A9000BA2F281B390B4A0B5B0B2093450230932E |
:104AA0004602409347025093480280912805909116 |
:104AB0002905AA2797FDA095BA2FB7FF07C0B09583 |
:104AC000A095909581959F4FAF4FBF4F883C910522 |
:104AD000A105B105BCF4DA01C90157FF03C007966F |
:104AE000A11DB11D73E0B595A795979587957A950A |
:104AF000D1F78093450290934602A0934702B0936A |
:104B0000480215C057FF04C0215F3F4F4F4F5F4F12 |
:104B100064E055954795379527956A95D1F7209389 |
:104B200045023093460240934702509348022C2F8F |
:104B300033274427552780911D0290911E02A09192 |
:104B40001F02B0912002BC01CD010E94BD2F8091B7 |
:104B5000310590913205AA2797FDA095BA2F281B01 |
:104B6000390B4A0B5B0B2093490230934A02409366 |
:104B70004B0250934C028091310590913205AA2747 |
:104B800097FDA095BA2FB7FF07C0B095A095909557 |
:104B900081959F4FAF4FBF4F883C9105A105B1054F |
:104BA000BCF4DA01C90157FF03C00796A11DB11D6E |
:104BB00023E0B595A795979587952A95D1F780938A |
:104BC000490290934A02A0934B02B0934C0215C045 |
:104BD00057FF04C0215F3F4F4F4F5F4F94E0559503 |
:104BE0004795379527959A95D1F7209349023093A9 |
:104BF0004A0240934B0250934C028091450290919F |
:104C00004602A0914702B0914802855F9140A040C2 |
:104C1000B04064F084EF91E0A0E0B0E08093450202 |
:104C200090934602A0934702B093480280914502B8 |
:104C300090914602A0914702B09148028C509E4F3D |
:104C4000AF4FBF4F64F48CE09EEFAFEFBFEF8093A8 |
:104C5000450290934602A0934702B0934802809188 |
:104C6000490290914A02A0914B02B0914C02855F9B |
:104C70009140A040B04064F084EF91E0A0E0B0E04B |
:104C80008093490290934A02A0934B02B0934C0246 |
:104C90008091490290914A02A0914B02B0914C023E |
:104CA0008C509E4FAF4FBF4FECF48CE09EEFAFEFB8 |
:104CB000BFEF8093490290934A02A0934B02B093B6 |
:104CC0004C0210C010924502109246021092470208 |
:104CD000109248021092490210924A0210924B021E |
:104CE00010924C0210927A0080911102909112025F |
:104CF000A0911302B0911402209145023091460216 |
:104D00004091470250914802821B930BA40BB50BB4 |
:104D10008093110290931202A0931302B093140295 |
:104D20008091090290910A02A0910B02B0910C02AD |
:104D30002091490230914A0240914B0250914C021D |
:104D4000821B930BA40BB50B8093090290930A026C |
:104D5000A0930B02B0930C022091E2013091E30189 |
:104D6000C90137FF04C088279927821B930B4597F9 |
:104D70003CF08091EB0484FD03C081E080935702F6 |
:104D80008091F404682F7727C90137FF04C0882772 |
:104D90009927821B930B289FA001299F500D389FB4 |
:104DA000500D1124CA01689FA001699F500D789F82 |
:104DB000500D1124CA0157FF02C081509E4FAC0113 |
:104DC000452F550F550B4595629FC001639F900D70 |
:104DD000729F900D112497FD039695958795959553 |
:104DE0008795480F591FCA01AA2797FDA095BA2F8A |
:104DF0008093410290934202A0934302B0934402F5 |
:104E0000209101023091020240910302509104026C |
:104E1000281B390B4A0B5B0B2093010230930202D3 |
:104E20004093030250930402809101029091020288 |
:104E3000A0910302B0910402895A9146A040B0406B |
:104E400064F088EA91E6A0E0B0E0809301029093DC |
:104E50000202A0930302B093040280910102909198 |
:104E60000202A0910302B091040288559E49AF4FFF |
:104E7000BF4F64F488E59EE9AFEFBFEF8093010276 |
:104E800090930202A0930302B09304028FEE8093EA |
:104E90007A008091F7019091F801892B09F4B8C04C |
:104EA0008091EB0483FFB4C080912502909126028B |
:104EB000A0912702B0912802B7FF04C081509E4FF5 |
:104EC000AF4FBF4F19E0B595A795979587951A9560 |
:104ED000D1F79C0197FF03C0309521953F4F8091FA |
:104EE0001D0290911E02A0911F02B0912002B7FFF7 |
:104EF00004C081509E4FAF4FBF4FC9E0B595A795F5 |
:104F000097958795CA95D1F7BC0197FF03C0709517 |
:104F100061957F4F261737070CF49B012931310526 |
:104F2000A4F480915702882381F0809158029091D7 |
:104F30005902892B51F48091F7019091F8019093D7 |
:104F4000F6018093F5011092570280917101482F6C |
:104F50005527249FC001259F900D349F900D11244B |
:104F600097FDCF969C01B6E035952795BA95E1F768 |
:104F7000421B530B9A01141615060CF043C01092F5 |
:104F80007A0060915802709159026115710569F5B6 |
:104F90008091F3019091F401829FA001839F500DB5 |
:104FA000929F500D11249A0157FF02C0215E3F4F7E |
:104FB000A5E035952795AA95E1F7442737FD40955B |
:104FC000542F8091010290910202A0910302B091AE |
:104FD0000402820F931FA41FB51F809301029093B8 |
:104FE0000202A0930302B09304028FEE80937A0032 |
:104FF0006115710569F061507040709359026093BA |
:10500000580206C084EF91E09093590280935802B1 |
:10501000809156028150809356028F3F09F06EC0F6 |
:1050200081E3809356028091F704E82EFF24002745 |
:1050300011278091250290912602A0912702B0911C |
:105040002802BC01CD01A80197010E94BD2F309319 |
:105050005D0420935C0480911D0290911E02A0913A |
:105060001F02B0912002BC01CD01A80197010E944E |
:10507000BD2F30935F0420935E04809128059091AA |
:10508000290590936104809360048091310590918B |
:105090003205909363048093620480912B05909174 |
:1050A0002C0590936504809364048091DF019091B6 |
:1050B000E00190936704809366048091F9019091D8 |
:1050C000FA01A091FB01B091FC01B7FF04C081502F |
:1050D0009E4FAF4FBF4FF9E0B595A7959795879530 |
:1050E000FA95D1F790936904809368048091F70151 |
:1050F0009091F80190936D0480936C048091DC0191 |
:10510000A0902D05B0902E05C0902F05D0903005B1 |
:105110008823A9F080911F0590912005AA2797FD6B |
:10512000A095BA2FBC01CD010E94872EDC01CB01D6 |
:10513000A6019501BC01CD010E94012F32C08091D2 |
:10514000250290912602A0912702B0912802BC016D |
:10515000CD010E94872EDC01CB01A3019201BC018D |
:10516000CD010E94012F7B018C0180911F05909140 |
:105170002005AA2797FDA095BA2FBC01CD010E945A |
:10518000872EDC01CB01A6019501BC01CD010E9457 |
:10519000012FDC01CB019C01AD01C801B7010E94C8 |
:1051A000E22DDC01CB01BC01CD010E946A2EDC01A5 |
:1051B000CB019093200580931F058091DB01A09087 |
:1051C0002D05B0902E05C0902F05D0903005882376 |
:1051D000A9F080911D0590911E05AA2797FDA09525 |
:1051E000BA2FBC01CD010E94872EDC01CB01A601A4 |
:1051F0009501BC01CD010E94012F3AC080911D0292 |
:1052000090911E02A0911F02B0912002BC01CD011D |
:105210000E94872E7B018C018091240590912505A9 |
:10522000A0912605B09127059C01AD01C801B701E9 |
:105230000E94012F7B018C0180911D0590911E051C |
:10524000AA2797FDA095BA2FBC01CD010E94872EF9 |
:10525000DC01CB01A6019501BC01CD010E94012F0B |
:10526000DC01CB019C01AD01C801B7010E94E22D18 |
:10527000DC01CB01BC01CD010E946A2EDC01CB0117 |
:1052800090931E0580931D0580912B0590912C0510 |
:10529000AA2797FDA095BA2FBC01CD010E94872EA9 |
:1052A0007B018C0180912D0590912E05A0912F05F9 |
:1052B000B09130059C01AD01C801B7010E94012FDA |
:1052C0005B016C018091150290911602A09117026A |
:1052D000B0911802BC01CD010E94872E7B018C0188 |
:1052E0008091240590912505A0912605B091270570 |
:1052F0009C01AD01C801B7010E94012FDC01CB0167 |
:1053000020E030E040E05FE3BC01CD010E94012FCE |
:10531000DC01CB019C01AD01C601B5010E94E22D6B |
:10532000DC01CB01BC01CD010E946A2EDC01CB0166 |
:1053300090932C0580932B0580911F05909120055B |
:105340008150984034F080E098E09093200580935D |
:105350001F0580911F05909120058050984F34F4CF |
:1053600080E098EF9093200580931F0580911D05A4 |
:1053700090911E058150984034F080E098E0909321 |
:105380001E0580931D0580911D0590911E0580507E |
:10539000984F34F480E098EF90931E0580931D059C |
:1053A00080912B0590912C058150984034F080E03D |
:1053B00098E090932C0580932B0580912B0590917C |
:1053C0002C058050984F34F480E098EF90932C0592 |
:1053D00080932B058091EB04992780FFE1C02091F9 |
:1053E000740181FF0EC02233B0F48091DF019091EF |
:1053F000E00144979093DE018093DD011092F1016A |
:105400000DC08091F004289FC0011124449790930F |
:10541000DE018093DD0181E08093F101332021F0F2 |
:105420001092DE011092DD01C090DF01D090E0010A |
:105430002091DD013091DE012C153D050CF0B0C04E |
:105440008091F101882309F4ABC0C21AD30A80917C |
:1054500073019927C89EB001C99E700DD89E700D2A |
:105460001124CB0177FD0F966C01E4E0D594C7942D |
:10547000EA95E1F7C4018C199D096C0180917501D1 |
:10548000282F33278091B5019091B601829FA0010A |
:10549000839F500D929F500D1124CA0157FD07960E |
:1054A00073E0959587957A95E1F7C81AD90AA09186 |
:1054B000F901B091FA01C091FB01D091FC01D7FF35 |
:1054C00004C0A150BE4FCF4FDF4F69E0D595C795BF |
:1054D000B795A7956A95D1F780917201282F332748 |
:1054E00044275527BD01CE010E94492F97FF04C0D4 |
:1054F000615E7F4F8F4F9F4F55E0959587957795CC |
:1055000067955A95D1F7633371051CF062E370E03B |
:1055100006C05FEF6E3C750714F46EEC7FEFC61AA1 |
:10552000D70A80915402909155029C0144E0220FC9 |
:10553000331F4A95E1F7281B390B2C0D3D1D37FF12 |
:1055400002C0215F3F4F04E0359527950A95E1F7AA |
:1055500030935502209354028091EC04482F552734 |
:105560002417350774F48416950624F050935502D9 |
:10557000409354028416950624F49092550280922A |
:10558000540280915402909155028816990624F491 |
:10559000909255028092540280905402909055024D |
:1055A00090926B0480926A04C0912B05D0912C05D7 |
:1055B0008091410290914202C81BD90BCE01AA27CB |
:1055C00097FDA095BA2FBC01CD010E94872E7B01CB |
:1055D0008C01C401AA2797FDA095BA2FBC01CD016B |
:1055E0000E94872E5B016C019B01AC01C801B701D1 |
:1055F0000E94942E18163CF4C601B5010E946A2E32 |
:10560000DC01CB01EC01CE01AA2797FDA095BA2FB2 |
:10561000BC01CD010E94872EDC01CB01D7FAD094CA |
:10562000D7F8D094A6019501BC01CD010E94912E1E |
:1056300088233CF4C601B5010E946A2EDC01CB012F |
:10564000EC01C536D10514F0C4E6D0E06FEFCC39DB |
:10565000D60714F4CCE9DFEF74E18716910414F453 |
:10566000C0E0D0E02091E6013091E70180916C022A |
:1056700090916D02281B390B80911F059091200598 |
:10568000821B930BAA2797FDA095BA2FBC01CD01D1 |
:105690000E94872EDC01CB01C0907A01D0907B0163 |
:1056A000E0907C01F0907D019C01AD01C701B60145 |
:1056B0000E94012FDC01CB01BC01CD010E946A2EAA |
:1056C000DC01CB019093730280937202809172028D |
:1056D00090917302AA2797FDA095BA2F20913902C5 |
:1056E00030913A0240913B0250913C02280F391F01 |
:1056F0004A1F5B1F2093390230933A0240933B02CA |
:1057000050933C026091390270913A0212161306CE |
:1057100014061506C4F4CB0177FF04C08827992727 |
:10572000861B970B97FF02C081509F4F892F990FBF |
:10573000990B0196AA2797FDA095BA2F281B390B24 |
:105740004A0B5B0B16C0CB0177FF03C09095819588 |
:105750009F4F97FF02C081509F4F892F990F990B40 |
:105760000196AA2797FDA095BA2F280F391F4A1F27 |
:105770005B1F2093390230933A0240933B025093CF |
:105780003C028091390290913A02A0913B02B09183 |
:105790003C0281589E43A040B04064F080E89EE304 |
:1057A000A0E0B0E08093390290933A02A0933B02CC |
:1057B000B0933C028091390290913A02A0913B0251 |
:1057C000B0913C028058914CAF4FBF4F64F480E8D9 |
:1057D00091ECAFEFBFEF8093390290933A02A09320 |
:1057E0003B02B0933C024091720250917302CE0191 |
:1057F000D7FF04C0882799278C1B9D0B880D991D06 |
:10580000880F991F8417950764F4CE01D7FF04C051 |
:10581000882799278C1B9D0BA401480F591F440F03 |
:10582000551FCE01D7FF04C0882799278C1B9D0BDD |
:10583000880D991D2EEF3FEF829FB001839F700D61 |
:10584000929F700D11244617570784F4CE01D7FF9D |
:1058500004C0882799278C1B9D0B880D991D829F5A |
:10586000A001839F500D929F500D11249401240F8D |
:10587000351F2C0F3D1F37FF03C020E030E007C06D |
:1058800080912A059927821793070CF49C011091A7 |
:105890002105812F9927281739070CF49C012093A3 |
:1058A00070029401241B350B2C0F3D1F37FF03C0E2 |
:1058B00020E030E007C080912A05992782179307DE |
:1058C0000CF49C01812F9927281739070CF49C01AF |
:1058D000209371022091E4013091E50180916A02E8 |
:1058E00090916B02281B390B80911D0590911E052C |
:1058F000821B930BAA2797FDA095BA2FBC01CD015F |
:105900000E94872EDC01CB019C01AD01C701B601CD |
:105910000E94012FDC01CB01BC01CD010E946A2E47 |
:10592000DC01CB0190936F0280936E0280916E0236 |
:1059300090916F02AA2797FDA095BA2F20913D0262 |
:1059400030913E0240913F0250914002280F391F92 |
:105950004A1F5B1F20933D0230933E0240933F025B |
:105960005093400260913D0270913E021216130660 |
:1059700014061506C4F4CB0177FF04C088279927C5 |
:10598000861B970B97FF02C081509F4F892F990F5D |
:10599000990B0196AA2797FDA095BA2F281B390BC2 |
:1059A0004A0B5B0B16C0CB0177FF03C09095819526 |
:1059B0009F4F97FF02C081509F4F892F990F990BDE |
:1059C0000196AA2797FDA095BA2F280F391F4A1FC5 |
:1059D0005B1F20933D0230933E0240933F02509361 |
:1059E000400280913D0290913E02A0913F02B09111 |
:1059F000400281589E43A040B04064F080E89EE39E |
:105A0000A0E0B0E080933D0290933E02A0933F025D |
:105A1000B093400280913D0290913E02A0913F02DE |
:105A2000B09140028058914CAF4FBF4F64F480E872 |
:105A300091ECAFEFBFEF80933D0290933E02A093B5 |
:105A40003F02B093400240916E0250916F02CE012E |
:105A5000D7FF04C0882799278C1B9D0B880D991DA3 |
:105A6000880F991F8417950764F4CE01D7FF04C0EF |
:105A7000882799278C1B9D0BA401480F591F440FA1 |
:105A8000551FCE01D7FF04C0882799278C1B9D0B7B |
:105A9000880D991D2EEF3FEF829FB001839F700DFF |
:105AA000929F700D11244617570784F4CE01D7FF3B |
:105AB00004C0882799278C1B9D0B880D991D829FF8 |
:105AC000A001839F500D929F500D11249401240F2B |
:105AD000351F2C1B3D0B37FF03C020E030E007C013 |
:105AE00080912A059927821793070CF49C01812F36 |
:105AF0009927281739070CF49C012093760294010A |
:105B0000241B350B2C1B3D0B37FF03C020E030E07E |
:105B100007C080912A059927821793070CF49C01EE |
:105B2000812F9927281739070CF49C0120937402C0 |
:105B3000DF91CF911F910F91FF90EF90DF90CF9069 |
:105B4000BF90AF909F908F907F906F905F904F909D |
:105B50003F9008958091660290916702A09168023B |
:105B6000B091690280935E0290935F02A0936002FD |
:105B7000B09361028091620290916302A0916402ED |
:105B8000B091650280935A0290935B02A0935C02ED |
:105B9000B0935D02089510926D0210926C02109203 |
:105BA0006B0210926A020895FC014150504030F09F |
:105BB00001900616D1F73197CF01089588279927CC |
:105BC00008955058192EEFD001D0D2C0BA176207ED |
:105BD000730784079507B1F188F40EF410940B2E27 |
:105BE000BA2FA02D062E622F202D072E732F302DB9 |
:105BF000082E842F402D092E952F502DFF27552339 |
:105C0000B9F0591B49F0573E98F0469537952795BE |
:105C1000A795F0405395C9F776F0BA0F621F731F2E |
:105C2000841F30F4879577956795B795F0409395E5 |
:105C300017FA0F2E0895BF1BBB27BA0B620B730B0D |
:105C4000840BF6CFDEF6DBC0AED001D091C0552379 |
:105C500059F0992369F09F575F57951B33F442F42D |
:105C6000903811F4915805C09BC091589F3F09F49A |
:105C7000C6C0BB27112462177307840730F4660F70 |
:105C8000771F881FBB1F915098F311D00F920FD030 |
:105C90000F920DD0A0E82617370748071B0609F01A |
:105CA000A048BA2F602D7F918F9100240895A0E81D |
:105CB0000024621773078407B10528F0621B730B79 |
:105CC000840BB1090A2A660F771F881FBB1FA69590 |
:105CD00081F7089597FB73D09F3738F0FEE9F91BE1 |
:105CE000982F872F762F6B2F05C086C096958795A6 |
:105CF00077956795F150D0F73EF490958095709523 |
:105D000061957F4F8F4F9F4F0895E89403C097FB95 |
:105D10000EF4F3DFB62F672F782F892F9EE900242A |
:105D200027C00ED05EF004C00BD026F001C008D012 |
:105D300019F020F48FEF089580E0089581E0089530 |
:105D400097FB092E052600F8689430D0E89407FCEC |
:105D500007C0621773078407950721F008F40094C1 |
:105D60000794989408959A95BB0F661F771F881F14 |
:105D700011249923A1F08823B2F79F3F59F0BB0F5C |
:105D800048F421F4002011F460FF04C06F5F7F4FDE |
:105D90008F4F9F4F881F9795879597F908952CC02F |
:105DA0009FEF80EC0895052E092607FA440F551F32 |
:105DB0005F3F79F0AA27A51708F051E04795880FB3 |
:105DC000991F9F3F31F0BB27B91708F091E08795E5 |
:105DD00008959F919F911124E3CF97FB880F991FFE |
:105DE0009F3F31F0BB27B91708F091E087950895E0 |
:105DF0009F919F911124D4CF6627772788279927D1 |
:105E00000895D1DF01D0B4CF992339F0552329F07B |
:105E10009F575F57950F13F49AF1F1CF91589F3F19 |
:105E2000E1F3629FA12D0F92BB27639FA00DB11DCF |
:105E3000EE27729FA00DB11DEE1FAF93AA27649F9E |
:105E4000B00DE11D739FB00DE11DAA1F6627829F53 |
:105E5000B00DE11DA61F5527749FE00DA11D551F14 |
:105E6000839FE00DA11D561F849FA00D511D852FFE |
:105E70007A2F6E2F1F900F9088231AF4939539F480 |
:105E80008FCF000C111CBB1F661F771F881F0128B6 |
:105E90000895629FD001739FF001829FE00DF11D74 |
:105EA000649FE00DF11D929FF00D839FF00D749F94 |
:105EB000F00D659FF00D9927729FB00DE11DF91F40 |
:105EC000639FB00DE11DF91FBD01CF01112408959D |
:105ED000991B79E004C0991F961708F0961B881F3C |
:105EE0007A95C9F780950895AA1BBB1B51E107C09D |
:105EF000AA1FBB1FA617B70710F0A61BB70B881F5A |
:105F0000991F5A95A9F780959095BC01CD010895E8 |
:105F100097FB092E07260AD077FD04D0E5DF06D0CF |
:105F200000201AF4709561957F4F0895F6F79095CB |
:105F300081959F4F0895A1E21A2EAA1BBB1BFD015C |
:105F40000DC0AA1FBB1FEE1FFF1FA217B307E40758 |
:105F5000F50720F0A21BB30BE40BF50B661F771FB0 |
:105F6000881F991F1A9469F7609570958095909590 |
:105F70009B01AC01BD01CF01089597FB092E0526B9 |
:105F80000ED057FD04D0D7DF0AD0001C38F450954E |
:105F90004095309521953F4F4F4F5F4F0895F6F74D |
:105FA00090958095709561957F4F8F4F9F4F089585 |
:105FB000F999FECFB2BDA1BDF89A119600B408952B |
:105FC000F999FECFB2BDA1BD00BC11960FB6F894F1 |
:085FD000FA9AF99A0FBE089538 |
:105FD8000A6401FFFF010AFF03007D000064004816 |
:105FE800616C6C6F2057656C740000000000000045 |
:105FF8000000000000000000000000000000000099 |
:106008000000000000000000000000000000000088 |
:106018000000000000000000000000000000000078 |
:106028000000000000000000000000000000000167 |
:1060380002030405060708090A0A0146640A0296CB |
:1060480096403A10FB3017B7D1380000803F640003 |
:1060580053706F727400004B616D657261000000CF |
:00000001FF |
/branches/V0.64_Simprop_Steff/Hex-Files/Flight-Ctrl_MEGA644_V0_64_Simprop_Steff.hex |
---|
0,0 → 1,1454 |
:100000000C94EC010C9409020C9409020C94090262 |
:100010000C9409020C9409020C9409020C94090234 |
:100020000C9409020C94220B0C9409020C94090202 |
:100030000C94DB140C9409020C9409020C94090230 |
:100040000C9409020C9409020C945E0A0C940902A7 |
:100050000C9456040C9409020C9420040C9409028C |
:100060000C94080C0C9409020C9410140C940902C2 |
:100070000A0A0D004E65757472616C004865616412 |
:10008000696E67486F6C64000A0D5374657565721C |
:10009000756E673A20004F4B0A0D000A0D416267EA |
:1000A0006C65696368204C756674647275636B7304 |
:1000B000656E736F722E2E000A0D42656E75747A2E |
:1000C0006520506172616D657465727361747A2028 |
:1000D0002564000A0D496E69742E20454550524F23 |
:1000E0004D3A2047656E65726965726520446566A4 |
:1000F00061756C742D506172616D657465722E2E20 |
:100100002E000A0D3D3D3D3D3D3D3D3D3D3D3D3DCE |
:100110003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D0F |
:100120003D3D000A0D466C69676874436F6E7472DA |
:100130006F6C0A0D48617264776172653A25642EAE |
:1001400025640A0D536F6674776172653A562564AB |
:100150002E256420002E0052616E67653A253369B2 |
:100160002D253369005374656C6C756E673A2025D4 |
:10017000336900536574706F696E7420202533698C |
:1001800000536572766F202000506F7469343A20F6 |
:100190002025336900506F7469333A202025336974 |
:1001A00000506F7469323A202025336900506F7413 |
:1001B00069313A20202533690053746172743A2002 |
:1001C00020202020253569004D6573737765727492 |
:1001D0003A2020253569005269636874756E673A64 |
:1001E0002020253569004B6F6D70617373202020CE |
:1001F0002020202000456D70662E506567656C3AA2 |
:10020000253569005370616E6E756E673A20202542 |
:10021000356900486F6368202534692028253369D3 |
:100220002900526F6C6C20253469202825336929F8 |
:10023000004E69636B202534692028253369290025 |
:10024000414343202D2053656E736F7200476965EB |
:10025000722025346920282533692900526F6C6C7F |
:1002600020253469202825336929004E69636B20D5 |
:10027000253469202825336929004779726F202D9C |
:100280002053656E736F720050333A253469202015 |
:1002900050343A253469200050313A253469202001 |
:1002A00050323A253469200047733A2534692020BA |
:1002B00047693A25346920004E693A25346920207F |
:1002C000526F3A25346920004B373A253469202093 |
:1002D0004B383A25346920004B353A2534692020C3 |
:1002E0004B363A25346920004B333A2534692020B7 |
:1002F0004B343A25346920004B313A2534692020AB |
:100300004B323A25346920004B6F6D706173733A3C |
:1003100020202025356900526F6C6C3A2020202067 |
:100320002020253569004E69636B3A20202020206B |
:100330002025356900616B742E204C61676500488B |
:10034000F668656E726567656C756E67004B65690A |
:100350006E6520004F66662020202020203A202550 |
:100360003569004C756674647275636B3A20253587 |
:100370006900536F6C6C486F6568653A2025356974 |
:1003800000486F6568653A202020202025356900E7 |
:1003900028632920486F6C6765722042757373006B |
:1003A00053657474696E673A202564200048573A93 |
:1003B0005625642E25642053573A25642E25640063 |
:1003C0002B2B204D696B726F4B6F70746572202BF5 |
:1003D0002B005B25695D000011241FBECFEFD0E12B |
:1003E000DEBFCDBF11E0A0E0B1E0E8E3FAE502C076 |
:1003F00005900D92A039B107D9F715E0A0E9B1E059 |
:1004000001C01D92A333B107E1F70E9448020C948A |
:100410001B2D0C94000022E030E0D9010E94072D32 |
:10042000802D863028F082E0D901082E0E940F2D01 |
:1004300099270895FB01282F863008F025E0842FA6 |
:100440009927429FD0011124AC59BF4F019724F046 |
:1004500001900E940F2DFACFA2E0B0E0022E0E9480 |
:100460000F2D0895CF93DF93FB01C42FDD27863036 |
:1004700008F085E0489FD0011124AC59BF4F219767 |
:1004800024F00E94072D0192FACFDF91CF910895B9 |
:100490001F93CF93DF9314B815B8189B02C08BE05D |
:1004A00001C08AE08093000181E887B98FEF88B9A5 |
:1004B0008BE184B981E085B98EE38AB9579A87EFD9 |
:1004C0008BB984B7877F84BF8091600088618093F7 |
:1004D00060001092600080ED97E09093AD018093F2 |
:1004E000AC0110922D0210922C021092BC041092BA |
:1004F000BB0410922B0210922A0210922902109231 |
:100500002802809100018A3011F4289801C0289AAD |
:100510000E94C90B0E9428060E94C6140E94020C69 |
:100520000E94F61378941092BA0380E48093BB0380 |
:1005300085E08093BC032091000180E490E09F93CC |
:100540008F931F921F92822F6AE00E94972C892F0F |
:1005500099279F938F93822F0E94972C99279F937F |
:100560008F9383E291E09F938F931F920E94BC0729 |
:1005700082E091E09F938F931F920E94BC07299A7B |
:10058000A1E0B0E00E94072D802D2DB73EB7225F7D |
:100590003F4F0FB6F8943EBF0FBE2DBF8E33A9F16B |
:1005A00083ED90E09F938F931F920E94BC070E945F |
:1005B000701C4AE363EE74E080E00E941A0211E0CE |
:1005C0000F900F900F90123049F40E94F91B4AE3EC |
:1005D00063EE74E082E00E941A0213E04AE363EEE5 |
:1005E00074E0812F0E941A021F5F163060F382E0D0 |
:1005F00022E030E0D901082E0E940F2D8EE3215019 |
:100600003040D901082E0E940F2DC2E0D0E0DE015B |
:100610000E94072D802D863028F082E0DE01082E12 |
:100620000E940F2D4AE363EE74E00E943202DE0165 |
:100630000E94072D802D863028F082E0DE01082EF2 |
:100640000E940F2D99279F938F9388EB90E09F93A3 |
:100650008F931F920E94BC078091EB040F900F9024 |
:100660000F900F900F9080FD03C0C8EED3E020C024 |
:100670008BE990E09F938F931F920E94BC0788EEB6 |
:1006800093E00E940D0BEC010E94C40F0F900F909D |
:100690000F90CE010E94160B8823D9F386E990E0D3 |
:1006A0009F938F931F920E94BC070F900F900F9003 |
:1006B0000E942E1D809100018A3011F4289801C0FB |
:1006C000289A80ED97E09093AD018093AC0188EE7D |
:1006D00093E09093B5038093B40385E58093AF03D3 |
:1006E00088E890E09F938F931F920E94BC078091AF |
:1006F000EB040F900F900F9082FF03C08CE790E007 |
:1007000002C084E790E09F938F931F920E94BC07E2 |
:100710000F900F900F9080E790E09F938F931F9220 |
:100720000E94BC070E94081088E893E190937B0127 |
:1007300080937A010F900F900F908091A9018823E8 |
:1007400009F451C01092A9010E94791E0E94E71C71 |
:10075000209100012A3011F4289801C0289A809134 |
:100760000201882319F081508093020180912702B1 |
:10077000882329F08091270281508093270280915D |
:100780007A0190917B01892B01F585E090E09093AF |
:100790007B0180937A010E94A014809103019091C3 |
:1007A00004018F5F9F4FF9F480912E028823D9F0C6 |
:1007B00080E197E29093AD018093AC0180E890E0F6 |
:1007C00090930401809303010EC080917A0190916F |
:1007D0007B01019790937B0180937A012A3011F479 |
:1007E000289801C0289A0E9443060E94B906CE01AB |
:1007F0000E94160B882309F4A0CF209107013091A5 |
:1008000008018091FB049927281739079CF48091EF |
:100810000301909104018F5F9F4F61F480E797E19E |
:100820009093AD018093AC0180E093E0909304013C |
:100830008093030184E690E00E940D0BEC017DCFD4 |
:100840001F920F920FB60F9211248F939F93EF93E5 |
:10085000FF93809101018823E1F48091A50190919B |
:10086000A60101969093A6018093A501FC01EF5784 |
:10087000FD4FE081ED3019F08639910539F4109281 |
:10088000A6011092A50181E080930101E093C600CA |
:1008900004C01092A6011092A501FF91EF919F91C3 |
:1008A0008F910F900FBE0F901F9018951F920F926F |
:1008B0000FB60F9211242F933F934F938F939F93D3 |
:1008C000AF93BF93CF93DF93EF93FF938091C600D5 |
:1008D000809394014091A001463910F010929F013D |
:1008E000809194018D3009F05CC080919F0182302D |
:1008F00009F057C010929F01A42FBB27FD01EE53B2 |
:10090000FC4F3081ED01CD53DC4F28818091A30154 |
:100910009091A401831B9109821B91099F70909370 |
:10092000A4018093A3019C0196E0369527959A95A2 |
:10093000E1F7235C2093A201982F9F73935C90931F |
:10094000A1018081281729F48881981711F491E07A |
:1009500006C0809197018F5F8093970190E080910E |
:100960009501882309F064C0992309F461C081E0EE |
:100970008093950140939801AC53BC4F8DE08C93CC |
:100980008091C603823509F053C088E190E02CE0E5 |
:100990000FB6F894A895809360000FBE2093600076 |
:1009A00047C080919F018130D9F0813018F08230AA |
:1009B000E9F530C080919401833239F4809195013A |
:1009C000882319F481E080939F01809194018093A2 |
:1009D000C40381E08093A00180919401992715C000 |
:1009E00082E080939F01E42FFF2780919401EC53D4 |
:1009F000FC4F80834F5F4093A00120919401809130 |
:100A0000A3019091A401820F911D9093A401809362 |
:100A1000A3010EC0E42FFF2780919401EC53FC4FFB |
:100A20008083463938F310929F01E7CF10929F01DF |
:100A3000FF91EF91DF91CF91BF91AF919F918F91F6 |
:100A40004F913F912F910F900FBE0F901F901895CF |
:100A5000DC0120E030E040E050E0E1E8F2E005C0F9 |
:100A60008191280F311D4F5F5F4F4A175B07C1F718 |
:100A70003F70C90136E0969587953A95E1F7835C1A |
:100A8000FD01EF57FD4F808311962F73235CFD010D |
:100A9000EF57FD4F2083AE57BD4F8DE08C931092E2 |
:100AA0000101809181028093C6000895EF92FF9228 |
:100AB0000F931F93CF93DF937A01722F93E290935A |
:100AC0008102609382028093830203E010E060E081 |
:100AD000A4E8B2E046C0F701E60FF11D90816F5F18 |
:100AE000715019F4E0E040E00FC0F701E60FF11D8E |
:100AF00040816F5F715011F4E0E006C0F701E60F2E |
:100B0000F11DE0816F5F7150892F86958695835C1A |
:100B10008C935527892F99278370907024E0880F34 |
:100B2000991F2A95E1F79A0194E0369527959A95B1 |
:100B3000E1F7822B835CED0189834F705070440F85 |
:100B4000551F440F551F8E2F82958695869583706D |
:100B5000842B835C8A83EF73E35CEB830C5F1F4F12 |
:100B60001496772309F0B7CFC8010E942805DF91BA |
:100B7000CF911F910F91FF90EF9008951F93CF9306 |
:100B8000DF93EC0170E0A22FBB27129748C0E42F3F |
:100B9000FF27EC53FC4F30814F5FE42FFF27EC53CE |
:100BA000FC4F50814F5FE42FFF27EC53FC4F108127 |
:100BB0004F5FE42FFF27EC53FC4F20814F5F842FC2 |
:100BC0009927A817B90774F15D53FE01E70FF11DCE |
:100BD0003D53330F330F852F82958F70382B308321 |
:100BE000613001F1912F9D537F5FFE01E70FF11DF1 |
:100BF00071505295507F892F86958695582B50833A |
:100C000063506F3F79F07E5FFE01E70FF11D929513 |
:100C1000990F990F907C2D53922B90837F5F6623C1 |
:100C200009F0B5CFDF91CF911F9108951F93182F31 |
:100C30008A3019F48DE00E9416068091C00085FF6D |
:100C4000FCCF1093C60080E090E01F9108950895B6 |
:100C5000E1ECF0E088E18083A0ECB0E08C91826070 |
:100C60008C938081806880838081806480838AE225 |
:100C70008093C40088EC90E00E940D0B9093AE032B |
:100C80008093AD03089580910101882309F470C019 |
:100C900080919001882371F080910101882351F0A7 |
:100CA0002BE04FEA53E06091800287E40E945605F2 |
:100CB000109290018091AD039091AE030E94160BAB |
:100CC000882321F4809192018823B1F08091010161 |
:100CD000882391F022E44AE554E06091800284E4A4 |
:100CE0000E9456051092920184EF91E00E940D0B34 |
:100CF0009093AE038093AD0380919101882331F1ED |
:100D000080910101882311F10E941110109291012C |
:100D100080919E01982F9F5F90939E01943059F48B |
:100D200026E147EB54E060E084E30E9456058FEF34 |
:100D300080939E010BC044E1949FA0011124475E63 |
:100D40005E4F24E160E08F5C0E9456058091930124 |
:100D5000882371F080910101882351F02AE04AEB49 |
:100D600053E06091800286E50E945605109293013F |
:100D700008951F93CF93DF93CDB7DEB722970FB6B9 |
:100D8000F894DEBF0FBECDBF80919501882309F492 |
:100D900090C08FEF809302018091C603813758F491 |
:100DA0008C3608F067C08736C9F18836C1F08336C3 |
:100DB00009F07DC008C0843721F1863759F18137A9 |
:100DC00009F075C02FC02091980143E06BE08FEAD5 |
:100DD00093E00E94BE0581E08093920168C020915B |
:100DE000980143E062E0CE0101960E94BE05809129 |
:100DF000CE019981892B8093CE0181E0809391016E |
:100E000056C02091980143E064E08AE991E00E9495 |
:100E1000BE054DC081E08093930149C081E080937D |
:100E2000900145C02091980143E062E0CE01019617 |
:100E30000E94BE0589818F3F89F0863010F085E0E1 |
:100E400089834AE363EE74E089810E9432028981DA |
:100E50002AE343EE54E06091800208C010918002C2 |
:100E60000E940B022AE343EE54E0612F855B0E944F |
:100E700056051DC02091980143E06AE383EE94E09B |
:100E80000E94BE058091C6034AE363EE74E08B5670 |
:100E90000E941A028091C6038B56A2E0B0E0082E91 |
:100EA0000E940F2D0E940B0299270E94641E10922F |
:100EB000950122960FB6F894DEBF0FBECDBFDF912D |
:100EC000CF911F910895982F80919C04813069F4EF |
:100ED0008091CD01E82FFF27E75EFE4F90838F5F63 |
:100EE0008093CD0121E030E005C0892F0E941606D5 |
:100EF000282F3327C90108951F93182F04C080E3BA |
:100F00000E94630711501116D4F31F9108951F9387 |
:100F1000182F04C080E20E94630711501116D4F309 |
:100F20001F9108950F931F93CF93DF938C01EB01D3 |
:100F300008C0F8010F5F1F4FE4918E2F0E946307D6 |
:100F400021972097B1F7DF91CF911F910F910895CD |
:100F50000F931F93CF93DF938C01EB0106C0F80131 |
:100F600081918F010E94630721972097C1F7DF913C |
:100F7000CF911F910F9108952F923F924F925F92C0 |
:100F80006F927F928F929F92AF92BF92CF92DF9299 |
:100F9000EF92FF920F931F93CF93DF93CDB7DEB7FE |
:100FA000E3970FB6F894DEBF0FBECDBF29968FAD85 |
:100FB000299780939C04CE01855B9F4F9D838C83F2 |
:100FC0002B968EAD9FAD2B979FA78EA722243324FF |
:100FD000210102C0130124010EA51FA502C00F5F4D |
:100FE0001F4FF801F490FF2019F0F5E2FF16B9F752 |
:100FF000B8018EA59FA5681B790B11F00E9492077E |
:10100000FF2009F442C20F5F1F4F1FA70EA71982CE |
:10101000AC81BD811BAA1AAA9FEF99ABEEA5FFA5D3 |
:10102000CF0101969FA78EA7B49095E7B91621F03E |
:101030008B2D8062883789F4EBA9E0FF07C02D90E3 |
:101040003D904D905C901397149607C08D919C91A4 |
:1010500011971C01442455241296F0E2BF1621F486 |
:1010600089818823D9F685C083E2B81609F483C044 |
:101070009AE2B91621F0EDE2BE1669F408C0FD014E |
:101080001296E081EAABE7FFC9CFE195EAABFBA995 |
:10109000F061FF7D72C08BE2B81609F46AC09EE26F |
:1010A000B916B1F52EA53FA52F5F3F4FEEA5FFA5C1 |
:1010B00084918A3221F0B82E20E030E01BC0FD017F |
:1010C00012964081518157FF02C04FEF5FEF49AB4D |
:1010D0003FA72EA7A3CFC90103E0880F991F0A9548 |
:1010E000E1F7220F331F280F391F2B0D311D20531D |
:1010F0003040B49031968B2D80538A3060F3FFA737 |
:10110000EEA7A90137FF02C04FEF5FEF49AB8DCFCC |
:10111000F0E3BF1631F48BA984FD80CF80628BABE6 |
:101120007DCF8B2D81538930E8F420E030E0C90178 |
:10113000F3E0880F991FFA95E1F7220F331F280F6C |
:10114000391F2B0D311D20533040EEA5FFA5CF01D7 |
:1011500001969FA78EA7B4908B2D80538A3038F3C9 |
:101160002AAB63CF98E6B91651F4EBA9E460EBAB78 |
:1011700055CFB98253CFFBA9F860FBAB4FCF8CE6BC |
:10118000B81621F49BA991609BAB48CFBD83AC837B |
:10119000E3E6BE1639F41296BD83AC8312978C91A8 |
:1011A0008E8318C1F4E4BF1639F084E6B81639F01E |
:1011B00099E6B91659F503C0EBA9E160EBABFBA9C1 |
:1011C000F0FF08C01496BD83AC835E904E903E90B5 |
:1011D0002E900AC01296BD83AC839E918E911C0105 |
:1011E000442437FC4094542C57FC03C08AE088AB5D |
:1011F00092C05094409430942094211C311C411C86 |
:10120000511C8DE289839AE098AB85C0EFE4BE164D |
:1012100029F0FFE6BF1639F488E061C09BA9916010 |
:101220009BABE8E056C0F0E7BF1671F41296BD83A1 |
:10123000AC839E918E911C01442455248BA980641B |
:101240008BAB78E7B72E5EC0E3E7BE16D9F51296F2 |
:10125000BD83AC83DE90CE90C114D10489F488E2C2 |
:101260008E838EE68F8385E788878CE689878A87D9 |
:1012700089E28B871C8666E0C62ED12CCC0EDD1E43 |
:10128000F9A9F7FD13C04F2F552747FD509560E092 |
:1012900070E0C6010E94032B009711F419A90DC03C |
:1012A0008C1919A981174CF4182F07C0F601019069 |
:1012B0000020E9F731971E2F1C19198242013101D4 |
:1012C00040E094C085E5B81631F095E7B91649F4C9 |
:1012D000EAE0E8AB1FC0FBA9F160FBAB8AE088AB9A |
:1012E00019C098E5B91621F0E8E7BE1609F06EC0FE |
:1012F000FBA9F3FD02C080E1F2CF211431044104C7 |
:10130000510419F490E198AB05C0EBA9E064EBAB94 |
:10131000F0E1F8AB198289A987FD03C09BA99F7DE5 |
:101320009BAB211431044104510461F4E9A9EE237B |
:1013300049F46624772443015EE2C52ED12CCC0EFD |
:10134000DD1E3EC04EE2C42ED12CCC0EDD1EF8A90F |
:10135000EF2EFF2400271127C201B101A801970138 |
:101360000E94CA2C6A3020F430E3A32EA60E08C0D7 |
:1013700027E5A22EA60E88E5B81611F49FEDA92246 |
:10138000F601A2926F01C201B101A80197010E946A |
:10139000CA2C39014A012E143F044006510618F0A8 |
:1013A00019012A01D9CFF8A9F83051F48BA983FF8C |
:1013B00007C090E3A91621F080E3F60182936F0144 |
:1013C000CE018C19182F125D49A910C0BB2009F459 |
:1013D0005CC0BE8219824201310100E096E0C92E54 |
:1013E000D12CCC0EDD1E11E021E005C0212F042FF1 |
:1013F000011B07FD00E08981882319F0812F8F5F91 |
:1014000007C09BA996FD02C0812F02C0822F8E5F6C |
:10141000A82EA00EEBA9EE2EFF2480E3482E512C1F |
:101420004E205F204114510421F48AA98A190E9498 |
:1014300087078981882329F061E070E0CE01019659 |
:1014400009C0E6FE09C080E38A83BB8262E070E0E7 |
:10145000CE0102960E94A807F0E24F16510421F433 |
:101460008AA98A190E947C07802F0E947C07612F1D |
:10147000772767FD7095C6010E94A807E4FEAACDF4 |
:101480008AA98A190E948707A5CDE3960FB6F8941A |
:10149000DEBF0FBECDBFDF91CF911F910F91FF90A7 |
:1014A000EF90DF90CF90BF90AF909F908F907F9004 |
:1014B0006F905F904F903F902F9008951F920F92E2 |
:1014C0000FB60F9211242F933F935F936F937F93E7 |
:1014D0008F939F93AF93BF938091B001815080937E |
:1014E000B0018F3FB9F489E08093B001809106018B |
:1014F0008F5F817080930601882319F481E08093C7 |
:10150000A9018091A7019091A80101969093A8014B |
:101510008093A7018091AC019091AD010297B8F042 |
:101520008091AC019091AD0101979093AD018093B2 |
:10153000AC018091AC019091AD01209103013091FB |
:10154000040182239323892B09F053C006C08FEF37 |
:101550009FEF9093040180930301809100018A30F2 |
:1015600039F404C05A9A05C0479A03C05A9801C07A |
:1015700047988091EB0483FF42C0349B0AC080915E |
:10158000AA019091AB0101969093AB018093AA01BF |
:1015900036C08091AA019091AB01892B79F080919E |
:1015A000AA019091AB01805A9F4040F48091AA011A |
:1015B0009091AB01909318028093170280911702CB |
:1015C000909118022091190230911A02821B930BFC |
:1015D000845E9D4F68E671E00E94B72C845B90406A |
:1015E00090931C0280931B021092AB011092AA01EF |
:1015F00006C0809100018A3009F0B6CFB3CFBF9109 |
:10160000AF919F918F917F916F915F913F912F91BA |
:101610000F900FBE0F901F9018952091A701309149 |
:10162000A8012F5F3F4F820F931F08952091A701BC |
:101630003091A801821B930B892F9927869580747E |
:10164000992708951F920F920FB60F921124EF92CF |
:10165000FF920F931F932F933F934F935F936F933B |
:101660007F938F939F93AF93BF93CF93DF93EF932A |
:10167000FF93809105018150809305018F3F09F010 |
:101680006DC083E88093B00080918D01C82FDD2765 |
:10169000D093AF01C093AE0180910C05E090050599 |
:1016A00080FF1EC06091E7017091E8018091E9011F |
:1016B0009091EA01FF240027112720E830E040E064 |
:1016C00050E00E94EC2CC801B7010E94782C20E069 |
:1016D00032E040E050E00E94EC2CC20FD31F1DC04E |
:1016E0006091E7017091E8018091E9019091EA0130 |
:1016F000FF240027112720E830E040E050E00E945E |
:10170000EC2CC801B7010E94782C20E032E040E0C8 |
:1017100050E00E94EC2CC21BD30BD093AF01C093BE |
:10172000AE012091AE013091AF018091060599275D |
:101730002817390734F080910705992782179307F6 |
:1017400024F49093AF018093AE018091AE01809319 |
:10175000B300809108058093050104C083E0809365 |
:10176000B0005F98FF91EF91DF91CF91BF91AF9162 |
:101770009F918F917F916F915F914F913F912F91A9 |
:101780001F910F91FF90EF900F900FBE0F901F9041 |
:1017900018958091A7019091A8010B969093B201A2 |
:1017A0008093B10182E085BD83EA84BD17BC88E7E0 |
:1017B00088BD96E096BD83EC8093B0009093B10015 |
:1017C000E0E7F0E0808182608083EEE6F0E08081F7 |
:1017D000816080838AE08093B3001092B200089504 |
:1017E0002091A7013091A8012F5F3F4F280F391F8B |
:1017F0008091A7019091A801A901481B590B57FF9F |
:10180000F7CF089510927C008FEE80937A000895B0 |
:101810001F920F920FB60F921124EF92FF920F9327 |
:101820001F932F933F934F935F936F937F938F9368 |
:101830009F93AF93BF93CF93DF93EF93FF93109258 |
:101840007A004091C9014F5F4093C9014150433034 |
:1018500009F4B4C1443038F4413009F469C042306D |
:1018600008F008C10DC0453009F4E8C1453008F45E |
:10187000C2C1463009F407C2473009F063C3EAC267 |
:101880002091DB013091DC0180917800909179000A |
:10189000281B390B809100018A3011F0220F331F71 |
:1018A0008091B7019091B801820F931F9093B80176 |
:1018B0008093B7018091C1018F5F8093C1018091B6 |
:1018C0000B0290910C02A0910D02B0910E024427E0 |
:1018D00037FD4095542F820F931FA41FB51F80938F |
:1018E0000B0290930C02A0930D02B0930E02809114 |
:1018F0000F0290911002A0911102B0911202820F7A |
:10190000931FA41FB51F80930F0290931002A09302 |
:101910001102B093120281E08093CA018091C70145 |
:101920009091C80101969093C8018093C7010EC39E |
:1019300060917800709179008091D9019091DA01DD |
:10194000681B790B809100018A3011F0660F771FB8 |
:101950008091030290910402A0910502B0910602C9 |
:101960009B01442737FD4095542F820F931FA41FDE |
:10197000B51F8093030290930402A0930502B093D5 |
:1019800006028091070290910802A0910902B0918D |
:101990000A02820F931FA41FB51F80930702909322 |
:1019A0000802A0930902B0930A0280910302909169 |
:1019B0000402A0910502B0910602815F9A4BA440F7 |
:1019C000B04064F080E393E9ABEFBFEF8093030294 |
:1019D00090930402A0930502B09306028091030243 |
:1019E00090910402A0910502B091060280519544A5 |
:1019F000AB4FBF4F64F480ED9CE6A4E0B0E0809371 |
:101A0000030290930402A0930502B0930602809112 |
:101A10007800909179000F9710F468E17CEF809145 |
:101A2000780090917900079710F460E378EF809147 |
:101A3000780090917900835F934010F068EE73E036 |
:101A400080917800909179008A5F934010F060ED6A |
:101A500077E08091B5019091B601860F971F909322 |
:101A6000B6018093B5018091C0018F5F8093C00162 |
:101A700082E0A1C060917800709179008091D701D7 |
:101A80009091D801681B790B809100018A3011F088 |
:101A9000660F771F8091FB019091FC01A091FD01E1 |
:101AA000B091FE019B01442737FD4095542F820FD2 |
:101AB000931FA41FB51F8093FB019093FC01A0937B |
:101AC000FD01B093FE018091FF0190910002A09171 |
:101AD0000102B0910202820F931FA41FB51F8093D1 |
:101AE000FF0190930002A0930102B0930202809143 |
:101AF000FB019091FC01A091FD01B091FE01815F7D |
:101B00009A4BA440B04064F080E393E9ABEFBFEFA1 |
:101B10008093FB019093FC01A093FD01B093FE0123 |
:101B20008091FB019091FC01A091FD01B091FE011B |
:101B300080519544AB4FBF4F64F480ED9CE6A4E028 |
:101B4000B0E08093FB019093FC01A093FD01B09362 |
:101B5000FE0180917800909179000F9710F468E170 |
:101B60007CEF8091780090917900079710F460E302 |
:101B700078EF8091780090917900835F934010F026 |
:101B800068EE73E080917800909179008A5F9340CD |
:101B900010F060ED77E08091B3019091B401860F71 |
:101BA000971F9093B4018093B3018091BF018F5F21 |
:101BB0008093BF0184E08093CA01C8C140910701AE |
:101BC0005091080180917800909179009A01220F3C |
:101BD000331F240F351F63E070E00E94A32C260FF3 |
:101BE000371F369527953695279530930801209312 |
:101BF000070186E0E0CF8091DF019091E001209124 |
:101C0000780030917900821B930B90939E0480930F |
:101C10009D048091B9019091BA0120919D04309169 |
:101C20009E04820F931F9093BA018093B901809113 |
:101C3000C3018F5F8093C30187E0BDCF809178009F |
:101C4000909179002091DD013091DE01821B930B90 |
:101C50009093A9048093A8048091BB019091BC014A |
:101C60002091A8043091A904820F931F9093BC0186 |
:101C70008093BB018091C2018F5F8093C20140932A |
:101C8000CA0186E0E4C06091780070917900E0902C |
:101C9000E101F090E2010091E3011091E401882755 |
:101CA00077FD8095982F0E94B62BA80197010E947E |
:101CB000102B0E94992B7093BE016093BD0120915F |
:101CC000BD013091BE01E0919D04F0919E04809190 |
:101CD000A8049091A90497FF03C0909581959F4F08 |
:101CE00064E070E00E94B72CEB01CF01F7FF03C066 |
:101CF000909581959F4F64E070E00E94B72C260F6D |
:101D0000371F2C0F3D1F3093BE012093BD018091E2 |
:101D1000BD019091BE01029704F16091E1017091C3 |
:101D2000E2018091E3019091E40120E030E048E499 |
:101D300054E40E94C02B88230CF03CC06091E10168 |
:101D40007091E2018091E3019091E4012AE037ED86 |
:101D500043EA5CE30E94112B25C08091BD01909164 |
:101D6000BE018F5F9F4F34F56091E1017091E201F8 |
:101D70008091E3019091E40120E030E046E154E4F9 |
:101D80000E94C32B1816B4F46091E1017091E20136 |
:101D90008091E3019091E4012AE037ED43EA5CE3AE |
:101DA0000E94102B6093E1017093E2018093E301A4 |
:101DB0009093E40181E08093C40180917800909138 |
:101DC00079009093A00480939F0420911302309196 |
:101DD000140240911502509116028091BD0190911C |
:101DE000BE01AA2797FDA095BA2F280F391F4A1FB9 |
:101DF0005B1F2093130230931402409315025093FB |
:101E00001602E0901302F090140200911502109156 |
:101E10001602609113027091140280911502909144 |
:101E2000160220E034E040E050E00E94EC2CE21A80 |
:101E3000F30A040B150BE0921302F09214020093C4 |
:101E400015021093160283E08093CA0187E0809305 |
:101E5000C9017CC08091AD049091AE0420917800BE |
:101E600030917900820F931F9093AE048093AD045C |
:101E70008091A5048F5F8093A5048091A50485308F |
:101E800008F460C0809178009091790090930E01E1 |
:101E900080930D011092A5048091A1049091A20459 |
:101EA0002091AD043091AE04821B930B20912F0240 |
:101EB00030913002821B930B9093C6018093C50131 |
:101EC0006091AD047091AE04E0900901F0900A01B8 |
:101ED00000910B0110910C01882777FD8095982FB8 |
:101EE000A8019701220F331F441F551F2E0D3F1DC0 |
:101EF000401F511F620F731F841F951F24E030E0A5 |
:101F000040E050E00E94EC2C2093090130930A013C |
:101F100040930B0150930C012091A1043091A20435 |
:101F20008091090190910A01A0910B01B0910C01DF |
:101F3000281B390B3093300220932F021092AE04ED |
:101F40001092AD041092CA011092C9018091CA0189 |
:101F500080937C008FEE80937A00FF91EF91DF9168 |
:101F6000CF91BF91AF919F918F917F916F915F9131 |
:101F70004F913F912F911F910F91FF90EF900F90F4 |
:101F80000FBE0F901F901895CF93DF93A3E0B0E0A2 |
:101F90000E94072D802DC82FDD27C531D10508F0FF |
:101FA0002A97C7BD84E690E00E94F00B80910D0156 |
:101FB00090910E0182559340D0F4C0E0D0E017C05C |
:101FC000C7BD82E390E00E94F00B85E591E09F930E |
:101FD0008F931F920E94BC0780910D0190910E017A |
:101FE0000F900F900F908458934020F02196CA3F95 |
:101FF000D10530F3A3E0B0E00C2E0E940F2DC0936A |
:10200000AA048CE291E00E94F00BDF91CF91089539 |
:10201000E9E1F1E080E2819391E0E936F907D9F74F |
:102020000895FF920F931F938091CE01282F33279D |
:10203000C90181709070682F882391F08091CF0141 |
:10204000882311F0815002C0809169018093CF01F3 |
:10205000E9E1F1E080E2819391E0E936F907D9F70F |
:10206000A9014270507021FF0DC08091CF018F5F98 |
:102070008093CF01E9E1F1E080E2819391E0E936DC |
:10208000F907D9F7662321F0452B11F01092CF0103 |
:1020900081E18093CD018091CF0199279F938F9308 |
:1020A00082ED93E09F938F9311E0F12EFF920E94B7 |
:1020B000BC070091CF010F900F900F900F900F90E1 |
:1020C000053009F4F8C1063090F4023009F4C8C0B4 |
:1020D000033030F40023F1F0013009F07CC35DC01F |
:1020E000033009F412C1043009F075C361C108302E |
:1020F00009F4B9C2093038F4063009F432C20730A5 |
:1021000009F069C38DC2093009F4EAC20A3009F046 |
:1021100062C324C31092CD0180EC93E09F938F9310 |
:10212000FF920E94BC0784E18093CD0120910001C1 |
:1021300080E490E09F938F931F921F92822F6AE01A |
:102140000E94972C892F99279F938F93822F0E940B |
:10215000972C99279F938F938DEA93E09F938F936A |
:10216000FF920E94BC0788E28093CD010E940B027F |
:1021700099279F938F9380EA93E09F938F93FF9289 |
:102180000E94BC078CE38093CD0180E993E09F938C |
:102190008F93FF920E94BC07B4C08091EB0480FF34 |
:1021A00047C01092CD0180912F02909130029F93F1 |
:1021B0008F9381E893E09F938F930F930E94BC07C6 |
:1021C00084E18093CD0180913102909132029F93FE |
:1021D0008F9382E793E09F938F930F930E94BC07A6 |
:1021E00088E28093CD0180910D0190910E019F9323 |
:1021F0008F9383E693E09F938F930F930E94BC0786 |
:102200008CE38093CD018091AA0499279F938F93AB |
:1022100084E593E09F938F930F930E94BC078DB743 |
:102220009EB744960FB6F8949EBF0FBE8DBFD8C21E |
:1022300084E18093CD018DE493E09F938F930F937E |
:102240000E94BC0788E28093CD018FE393E09F93C7 |
:102250008F930F930E94BC078DB79EB70696E2CF6F |
:102260001092CD0185E393E09F938F93FF920E949C |
:10227000BC0784E18093CD016091E7017091E80192 |
:102280008091E9019091EA0120E034E040E050E0E3 |
:102290000E94EC2C5F934F933F932F9386E293E041 |
:1022A0009F938F93FF920E94BC0788E28093CD0199 |
:1022B0006091EF017091F0018091F1019091F20134 |
:1022C00020E034E040E050E00E94EC2C5F934F931C |
:1022D0003F932F9387E193E09F938F93FF920E9408 |
:1022E000BC078CE38093CD01809117029091180276 |
:1022F0009F938F9388E093E09F938F93FF920E9428 |
:10230000BC078DB79EB746968DCF1092CD018091B8 |
:10231000BB049091BC042091B9043091BA049F93FE |
:102320008F933F932F9388EF92E09F938F93FF9229 |
:102330000E94BC0784E18093CD018091BF049091FD |
:10234000C0042091BD043091BE049F938F933F93AE |
:102350002F9388EE92E09F938F93FF920E94BC0789 |
:1023600088E28093CD018091C3049091C4042091B0 |
:10237000C1043091C2049F938F933F932F9388EDB4 |
:1023800092E09F938F93FF920E94BC078CE380930F |
:10239000CD018091C7049091C8042091C50430916B |
:1023A000C6049F938F933F932F9388EC92E07AC05B |
:1023B0001092CD01E091E404FF27EE0FFF1FE954D6 |
:1023C000FB4F20813181E091E304FF27EE0FFF1FD7 |
:1023D000E954FB4F808191813F932F939F938F937B |
:1023E00088EB92E09F938F93FF920E94BC0784E159 |
:1023F0008093CD01E091E604FF27EE0FFF1FE95423 |
:10240000FB4F20813181E091E504FF27EE0FFF1F94 |
:10241000E954FB4F808191813F932F939F938F933A |
:1024200088EA92E09F938F93FF920E94BC0788E214 |
:102430008093CD01E091E804FF27EE0FFF1FE954E0 |
:10244000FB4F20813181E091E704FF27EE0FFF1F52 |
:10245000E954FB4F808191813F932F939F938F93FA |
:1024600088E992E09F938F93FF920E94BC078CE3D0 |
:102470008093CD01E091EA04FF27EE0FFF1FE9549E |
:10248000FB4F20813181E091E904FF27EE0FFF1F10 |
:10249000E954FB4F808191813F932F939F938F93BA |
:1024A00088E892E09F938F93FF920E94BC078DB7BC |
:1024B0009EB74C96B7CE1092CD018AE792E09F93DB |
:1024C0008F93FF920E94BC0784E18093CD012091FD |
:1024D000D7013091D8018091B3019091B4016091FE |
:1024E000BF013F932F9377270E94B72C7F936F9361 |
:1024F0008BE692E09F938F93FF920E94BC0788E245 |
:102500008093CD012091D9013091DA018091B501FC |
:102510009091B6016091C0013F932F9377270E945D |
:10252000B72C7F936F938CE592E09F938F93FF92EC |
:102530000E94BC078CE38093CD012091DB01309198 |
:10254000DC018091B7019091B8016091C1013F9386 |
:102550002F9377270E94B72C7F936F938DE492E09F |
:1025600056C01092CD0180E492E09F938F93FF922A |
:102570000E94BC0784E18093CD012091DD01309160 |
:10258000DE018091BB019091BC016091C2013F933B |
:102590002F9377270E94B72C7F936F9381E392E06C |
:1025A0009F938F93FF920E94BC0788E28093CD0196 |
:1025B0002091DF013091E0018091B9019091BA0141 |
:1025C0006091C3013F932F9377270E94B72C7F938D |
:1025D0006F9382E292E09F938F93FF920E94BC07D9 |
:1025E0008CE38093CD016091E1017091E2018091D3 |
:1025F000E3019091E40100919F041091A0040E94D6 |
:10260000992B7F936F931F930F9383E192E09F9396 |
:102610008F93FF920E94BC078DB79EB7489602CE5B |
:1026200084E18093CD0180910701909108019F93EF |
:102630008F9384E092E09F938F93FF920E94BC0758 |
:1026400088E28093CD018091270299279F938F93F1 |
:1026500085EF91E09F938F93FF920E94BC078DB707 |
:102660009EB70A96DFCD1092CD0186EE91E09F9342 |
:102670008F93FF920E94BC0784E18093CD018091EB |
:102680001B0290911C029F938F9387ED91E09F9383 |
:102690008F93FF920E94BC0788E28093CD018091C6 |
:1026A0001702909118029F938F9388EC91E09F936B |
:1026B0008F93FF920E94BC078CE38093CD018091A1 |
:1026C000190290911A029F938F9389EB91E09F9347 |
:1026D0008F93FF920E94BC078DB79EB74296A2CD02 |
:1026E0001092CD0180911F02909120029F938F93B1 |
:1026F0008DEA91E09F938F93FF920E94BC0784E143 |
:102700008093CD0180912102909122029F938F931B |
:1027100081EA91E09F938F93FF920E94BC0788E229 |
:102720008093CD0180912302909124029F938F93F7 |
:1027300085E991E09F938F93FF920E94BC078CE301 |
:102740008093CD0180912502909126029F938F93D3 |
:1027500089E891E09F938F93FF925FCD1092CD0116 |
:1027600081E891E09F938F93FF920E94BC0784E1E0 |
:102770008093CD0180918D0199279F938F9383E75B |
:1027800091E09F938F93FF920E94BC0788E2809311 |
:10279000CD018091AE019091AF019F938F9385E61B |
:1027A00091E09F938F93FF920E94BC078CE38093EC |
:1027B000CD018091070599279F938F9380910605FE |
:1027C00099279F938F9387E591E09F938F93FF9233 |
:1027D0000E94BC0724CD0150009369011092CF01E3 |
:1027E0001092CE011F910F91FF9008951092B900A1 |
:1027F0008AE28093B800089585EA8093BC0080E067 |
:1028000090E0089584E98093BC0008951092B90087 |
:102810008093BB0085E88093BC0080E090E0089541 |
:102820001F920F920FB60F9211248F939F93EF93E5 |
:10283000FF938091D0018F5F8093D00181508330CE |
:10284000A9F1843028F4813091F0823008F50AC073 |
:10285000853089F18530B8F18630A9F1873009F0EB |
:1028600061C045C08091D101880F8E5A09C0809106 |
:10287000D1018F5F8093D101815027C08091700278 |
:102880001092B9008093BB0085E88093BC004AC0D9 |
:1028900084E98093BC008091D101843018F41092B7 |
:1028A000D00102C01092D10185EAEFCF8091D20110 |
:1028B000880F8D5AE5CF8091BB00E091D201FF27B0 |
:1028C000E155FB4F80838091D201813039F0813016 |
:1028D000A8F2823031F0833029F506C08091710270 |
:1028E000CFCF80917402CCCF80917602C9CF8091F6 |
:1028F000D2019091BB00E82FFF27E155FB4F948355 |
:102900008F5F8093D201843010F01092D20184E95D |
:102910008093BC008AE090E090937B0180937A01E1 |
:102920001092D0018091BC0080688093BC00FF9120 |
:10293000EF919F918F910F900FBE0F901F90189560 |
:102940004CEB50E084E9DA018C931092D0012BEB30 |
:1029500030E0F90180811092D10180E88C931092CF |
:10296000BD001092BA001082E9EBF0E01082A8EBF3 |
:10297000B0E01C9210828AE28C9385EADA018C9393 |
:102980001082F901108285E88C93089583EC80937E |
:102990008100EFE6F0E08081806280831092DC01AC |
:1029A0001092DB011092DA011092D9011092D80135 |
:1029B0001092D70108951F920F920FB60F92112413 |
:1029C0000F931F932F933F934F935F936F937F9337 |
:1029D0008F939F93AF93BF93CF93DF93EF93FF9327 |
:1029E00020918600309187008091D5019091D60189 |
:1029F000281B390B80918600909187009093D60117 |
:102A00008093D501C9018D5D95408356994148F465 |
:102A100081E090E09093D4018093D30110926A01F9 |
:102A200067C0C091D301D091D401CA30D1050CF058 |
:102A30005FC0C9018B5F9040845B914008F040C04B |
:102A4000A9014E505240FE01EE0FFF1FE954FB4F0B |
:102A500080819181FA01E81BF90BCF01F7FF03C0D8 |
:102A6000909581959F4F06974CF480912702883C62 |
:102A700028F480912702865F80932702FE01EE0FE3 |
:102A8000FF1F8F0109541B4FD8012D913C91C901A3 |
:102A9000880F991F820F931F840F951F64E070E0C9 |
:102AA0000E94B72CD8018D919C9111979B01281BF6 |
:102AB000390BE353FB4F3183208311967C936E9344 |
:102AC000FE013196F093D401E093D301E530F10596 |
:102AD00019F45D9A5C980BC05D98E630F10511F42D |
:102AE0005C9A05C05C98379711F45B9A01C05B98BB |
:102AF000FF91EF91DF91CF91BF91AF919F918F9116 |
:102B00007F916F915F914F913F912F911F910F9105 |
:102B10000F900FBE0F901F901895AF92BF92CF925B |
:102B2000DF92EF92FF920F931F9310927A008091A1 |
:102B3000BF01882369F08091B3019091B401609145 |
:102B4000BF0177270E94B72C7093200560931F0563 |
:102B50008091C001882369F08091B5019091B60100 |
:102B60006091C00177270E94B72C70931E05609377 |
:102B70001D058091C101882369F08091B701909172 |
:102B8000B8016091C10177270E94B72C70932C0582 |
:102B900060932B058091C2018823D9F1E09028052C |
:102BA000F09029056091BB017091BC012091C20198 |
:102BB0000027F7FC0095102F5701680183E0AA0C4D |
:102BC000BB1CCC1CDD1C8A95D1F7AE18BF08C00A0F |
:102BD000D10A882777FD8095982FB4E0660F771F7C |
:102BE000881F991FBA95D1F73327442755270E948C |
:102BF000EC2CA20EB31EC41ED51EC601B50128E0E2 |
:102C000030E040E050E00E94EC2C30932905209306 |
:102C100028058091C3018823D9F1E0903105F09017 |
:102C200032056091B9017091BA012091C30100276A |
:102C3000F7FC0095102F57016801A3E0AA0CBB1CFC |
:102C4000CC1CDD1CAA95D1F7AE18BF08C00AD10A6A |
:102C5000882777FD8095982FF4E0660F771F881FEF |
:102C6000991FFA95D1F73327442755270E94EC2C5A |
:102C7000A20EB31EC41ED51EC601B50128E030E069 |
:102C800040E050E00E94EC2C309332052093310557 |
:102C90008091C4018823A1F1E0902205F0902305E2 |
:102CA0006091BD017091BE012091C4010027F7FC25 |
:102CB0000095102F57016801E3E0AA0CBB1CCC1C47 |
:102CC000DD1CEA95D1F7AE18BF08C00AD10A8827E3 |
:102CD00077FD8095982F3327442755270E94EC2CA9 |
:102CE000A20EB31EC41ED51EC601B50128E030E0F9 |
:102CF00040E050E00E94EC2C309323052093220505 |
:102D00001092B4011092B3011092BF011092B6015B |
:102D10001092B5011092C0011092B8011092B70143 |
:102D20001092C1011092BA011092B9011092C30120 |
:102D30001092BC011092BB011092C2011092BE0110 |
:102D40001092BD011092C40180910B0290910C026F |
:102D5000A0910D02B0910E028093F7019093F801BB |
:102D6000A093F901B093FA018091FB019091FC01CD |
:102D7000A091FD01B091FE018093E7019093E801DD |
:102D8000A093E901B093EA018091030290910402BB |
:102D9000A0910502B09106028093EF019093F0019B |
:102DA000A093F101B093F2018091FF019091000294 |
:102DB000A0910102B09102028093EB019093EC018B |
:102DC000A093ED01B093EE0180910702909108026B |
:102DD000A0910902B0910A028093F3019093F4014B |
:102DE000A093F501B093F6018FEE80937A002091C5 |
:102DF0001F02309120028091E704E82FFF27EE0F99 |
:102E0000FF1FE954FB4F8081918182599F4F281702 |
:102E100039071CF42F5F3F4F0CC08081918182598C |
:102E20009F4F821793074CF42115310531F0215043 |
:102E300030403093200220931F02209121023091D4 |
:102E400022028091E804E82FFF27EE0FFF1FE954CC |
:102E5000FB4F8081918182599F4F281739071CF4BD |
:102E60002F5F3F4F0CC08081918182599F4F821705 |
:102E700093074CF42115310531F021503040309347 |
:102E8000220220932102209123023091240280917A |
:102E9000E904E82FFF27EE0FFF1FE954FB4F808165 |
:102EA000918182599F4F281739071CF42F5F3F4F9C |
:102EB0000CC08081918182599F4F821793074CF4F7 |
:102EC0002115310531F021503040309324022093F8 |
:102ED000230220912502309126028091EA04E82FF6 |
:102EE000FF27EE0FFF1FE954FB4F8081918182592C |
:102EF0009F4F281739071CF42F5F3F4F0CC080816C |
:102F0000918182599F4F821793074CF42115310507 |
:102F100031F02150304030932602209325028091D9 |
:102F20001F029091200297FF05C01092200210927C |
:102F30001F020AC08F3F910539F034F08FEF90E007 |
:102F40009093200280931F0280912102909122028F |
:102F500097FF05C010922202109221020AC08F3FF3 |
:102F6000910539F034F08FEF90E090932202809336 |
:102F70002102809123029091240297FF05C01092B4 |
:102F80002402109223020AC08F3F910539F034F0D9 |
:102F90008FEF90E09093240280932302809125028A |
:102FA0009091260297FF05C01092260210922502EA |
:102FB0000AC08F3F910539F034F08FEF90E0909385 |
:102FC0002602809325021F910F91FF90EF90DF90D2 |
:102FD000CF90BF90AF90089510927A008091BF017A |
:102FE000882369F08091B3019091B4016091BF0191 |
:102FF00077270E94B72C7093200560931F0580915E |
:10300000C001882369F08091B5019091B60160916B |
:10301000C00177270E94B72C70931E0560931D0591 |
:103020008091C101882369F08091B7019091B80126 |
:103030006091C10177270E94B72C70932C05609393 |
:103040002B058091C2018823D1F06091BB01709162 |
:10305000BC012091C201882777FD8095982FF4E06C |
:10306000660F771F881F991FFA95D1F733274427DA |
:1030700055270E94EC2C3093290520932805809138 |
:10308000C3018823D1F06091B9017091BA012091F8 |
:10309000C301882777FD8095982FE4E0660F771F9E |
:1030A000881F991FEA95D1F73327442755270E9497 |
:1030B000EC2C30933205209331058091C401882394 |
:1030C00099F06091BD017091BE012091C4018827E3 |
:1030D00077FD8095982F3327442755270E94EC2CA5 |
:1030E00030932305209322051092B4011092B3016E |
:1030F0001092BF011092B6011092B5011092C0015A |
:103100001092B8011092B7011092C1011092BA0149 |
:103110001092B9011092C3011092BC011092BB0130 |
:103120001092C2011092BE011092BD011092C40112 |
:103130008FEE80937A0020911F02309120028091BF |
:10314000E704E82FFF27EE0FFF1FE954FB4F8081B4 |
:10315000918182599F4F281739071CF42F5F3F4FE9 |
:103160000CC08081918182599F4F821793074CF444 |
:103170002115310531F02150304030932002209349 |
:103180001F0220912102309122028091E804E82F51 |
:10319000FF27EE0FFF1FE954FB4F80819181825979 |
:1031A0009F4F281739071CF42F5F3F4F0CC08081B9 |
:1031B000918182599F4F821793074CF42115310555 |
:1031C00031F021503040309322022093210220918F |
:1031D0002302309124028091E904E82FFF27EE0FAB |
:1031E000FF1FE954FB4F8081918182599F4F28171F |
:1031F00039071CF42F5F3F4F0CC0808191818259A9 |
:103200009F4F821793074CF42115310531F021505F |
:1032100030403093240220932302209125023091E4 |
:1032200026028091EA04E82FFF27EE0FFF1FE954E2 |
:10323000FB4F8081918182599F4F281739071CF4D9 |
:103240002F5F3F4F0CC08081918182599F4F821721 |
:1032500093074CF42115310531F021503040309363 |
:1032600026022093250280911F029091200297FF51 |
:1032700005C01092200210921F020AC08F3F9105D4 |
:1032800039F034F08FEF90E09093200280931F028A |
:10329000809121029091220297FF05C01092220294 |
:1032A000109221020AC08F3F910539F034F08FEF60 |
:1032B00090E09093220280932102809123029091CA |
:1032C000240297FF05C010922402109223020AC024 |
:1032D0008F3F910539F034F08FEF90E09093240206 |
:1032E00080932302809125029091260297FF05C0CA |
:1032F000109226021092250208958F3F910539F011 |
:1033000034F08FEF90E09093260280932502089589 |
:103310001F938091EE048B3F98F08B3F19F48091BE |
:103320001F020EC08C3F19F48091210209C08D3F0D |
:1033300019F48091230204C08E3F21F4809125026C |
:103340008093850180918501882319F4109285016D |
:1033500004C08F3F11F4809385018091ED048B3F71 |
:1033600098F08B3F19F480911F020EC08C3F19F426 |
:103370008091210209C08D3F19F48091230204C07D |
:103380008E3F21F4809125028093840180918401F5 |
:10339000882319F41092840105C0843618F084E65D |
:1033A000809384018091EF048B3F98F08B3F19F458 |
:1033B00080911F020EC08C3F19F48091210209C038 |
:1033C0008D3F19F48091230204C08E3F21F4809137 |
:1033D00025028093860180918601882319F410923A |
:1033E000860105C0843618F084E6809386018091BA |
:1033F000F1048B3F98F08B3F19F480911F020EC0AF |
:103400008C3F19F48091210209C08D3F19F48091FD |
:10341000230204C08E3F21F480912502809387010E |
:1034200080918701882319F41092870104C08F3F8F |
:1034300011F4809387018091F8048B3F98F08B3FC3 |
:1034400019F480911F020EC08C3F19F48091210263 |
:1034500009C08D3F19F48091230204C08E3F21F4EE |
:10346000809125028093880180918801882319F436 |
:103470001092880104C08F3F11F4809388018091DD |
:10348000F9048B3F98F08B3F19F480911F020EC016 |
:103490008C3F19F48091210209C08D3F19F480916D |
:1034A000230204C08E3F21F480912502809389017C |
:1034B000809189018B3010F48AE002C08F3F11F4B3 |
:1034C000809389018091FA048B3F98F08B3F19F427 |
:1034D00080911F020EC08C3F19F48091210209C017 |
:1034E0008D3F19F48091230204C08E3F21F4809116 |
:1034F000250280938A0180918A01882319F4109211 |
:103500008A0104C08F3F11F480938A018091FF04E7 |
:103510008B3F98F08B3F19F480911F020EC08C3FB7 |
:1035200019F48091210209C08D3F19F48091230282 |
:1035300004C08E3F21F48091250280938C018091FC |
:103540008C01882319F410928C0104C08F3F11F470 |
:1035500080938C01809100058B3F98F08B3F19F48C |
:1035600080911F020EC08C3F19F48091210209C086 |
:103570008D3F19F48091230204C08E3F21F4809185 |
:1035800025028093350280913502882319F4109228 |
:10359000350204C08F3F11F48093350280910105FC |
:1035A0008B3F98F08B3F19F480911F020EC08C3F27 |
:1035B00019F48091210209C08D3F19F480912302F2 |
:1035C00004C08E3F21F480912502809336028091C1 |
:1035D0003602882319F41092360204C08F3F11F48A |
:1035E00080933602809102058B3F98F08B3F19F44F |
:1035F00080911F020EC08C3F19F48091210209C0F6 |
:103600008D3F19F48091230204C08E3F21F48091F4 |
:1036100025028093370280913702882319F4109293 |
:10362000370204C08F3F11F4809337028091030565 |
:103630008B3F98F08B3F19F480911F020EC08C3F96 |
:1036400019F48091210209C08D3F19F48091230261 |
:1036500004C08E3F21F4809125028093380280912E |
:103660003802882319F41092380204C08F3F11F4F5 |
:1036700080933802909104059B3FB0F09B3F19F472 |
:1036800080911F0204C09C3F29F480912102809305 |
:103690008D010CC09D3F19F480912302F8CF9E3F0D |
:1036A00029F480912502F3CF90938D0180918D01B3 |
:1036B000882319F410928D0104C08F3F11F4809378 |
:1036C0008D019B3FB0F09B3F19F480911F0204C015 |
:1036D0009C3F29F48091210280938D010CC09D3F75 |
:1036E00019F480912302F8CF9E3F29F4809125029E |
:1036F000F3CF90938D0180918D01882319F410925E |
:103700008D0104C08F3F11F480938D019B3FB0F079 |
:103710009B3F19F480911F0204C09C3F29F48091C3 |
:10372000210280938D010CC09D3F19F480912302EA |
:10373000F8CF9E3F29F480912502F3CF90938D011D |
:1037400080918D01882319F410928D0104C08F3F60 |
:1037500011F480938D01809109058B3F98F08B3F88 |
:1037600019F480911F020EC08C3F19F48091210240 |
:1037700009C08D3F19F48091230204C08E3F21F4CB |
:103780008091250280938E0180918E01882319F407 |
:1037900010928E0104C08F3F11F480938E0110911E |
:1037A0008C01612F772767FD7095872F972F0E94D7 |
:1037B000B62B17FF06C020E030E040E853E40E943B |
:1037C000112B27E137EB41ED58E30E94302C609339 |
:1037D0008001709381018093820190938301809195 |
:1037E000F60480932A058091F504809321051F91AA |
:1037F000089581E08093E30432E03093E40483E0B1 |
:103800008093E50424E02093E60445E04093E70438 |
:1038100086E08093E80487E08093E90488E0809361 |
:10382000EA041092EB048EE18093EC048BEF80931A |
:10383000EE048AE08093EF0492E39093ED0490937A |
:10384000F1043093F0042093F2041092F30480E129 |
:103850008093F4048FE08093F5048AEF8093F6045C |
:103860008AE18093F70480E88093F8048FEA8093DC |
:10387000F9048093FA048EE58093FB0483E280933D |
:10388000FC0484E18093FD041092FE041092FF0476 |
:103890001092000510920105109202051092030586 |
:1038A00084E68093040588E28093050510920C0558 |
:1038B0009093060586E98093070540930805909349 |
:1038C00009058AE580930A0510920B05A1E1B5E090 |
:1038D000EBE6F1E08CE001900D928150E1F7089564 |
:1038E00081E08093E30482E08093E40483E08093AA |
:1038F000E50494E09093E60445E04093E70486E015 |
:103900008093E80487E08093E90438E03093EA0488 |
:103910001092EB048EE18093EC048BEF8093EE0425 |
:103920008AE08093EF0422E32093ED042093F104D6 |
:103930009093F0049093F2043093F30480E1809329 |
:10394000F4048FE08093F5048AEF8093F6048AE113 |
:103950008093F70480E88093F80488E78093F90463 |
:1039600096E99093FA048EE58093FB0483E28093BA |
:10397000FC0484E18093FD041092FE041092FF0485 |
:103980001092000510920105109202051092030595 |
:1039900084E68093040588E28093050510920C0567 |
:1039A0002093060590930705409308052093090589 |
:1039B0008AE580930A0510920B05A1E1B5E0E3E7E3 |
:1039C000F1E08CE001900D928150E1F70895809133 |
:1039D0002E02882301F5109271021092700210924B |
:1039E00074021092760280919A01882311F08093DC |
:1039F000700280919B01882311F080937102809165 |
:103A00009C01882311F08093760280919D01882388 |
:103A100011F080937402809170029927909375043D |
:103A20008093740480917102992790937704809316 |
:103A30007604809176029927909379048093780494 |
:103A400080917402992790937B0480937A0410925A |
:103A5000D0011092D1010E94FC130895CF93DF93FF |
:103A60001092DE011092DD011092E0011092DF0150 |
:103A700080E090E0A0E0B0E08093E1019093E2016B |
:103A8000A093E301B093E4011092D8011092D70102 |
:103A90001092DA011092D9011092DC011092DB0130 |
:103AA0000E94EC1785E090E00E940D0BEC01CE0126 |
:103AB0000E94160B8823D9F30E94EC178091EB0427 |
:103AC00080FF10C080910D0190910E01875B9340A3 |
:103AD00038F480910D0190910E018E5E924010F4A9 |
:103AE0000E94C40F809100018A3041F580911F052A |
:103AF0009091200597FF03C0909581959F4F9093DB |
:103B0000D8018093D70180911D0590911E0597FFE4 |
:103B100003C0909581959F4F9093DA018093D901CE |
:103B200080912B0590912C0597FF03C0909581956E |
:103B30009F4F9093DC018093DB0133C080911F0580 |
:103B40009091200597FF03C0909581959F4F62E06B |
:103B500070E00E94B72C7093D8016093D7018091D8 |
:103B60001D0590911E0597FF03C0909581959F4F6D |
:103B700062E070E00E94B72C7093DA016093D90183 |
:103B800080912B0590912C0597FF03C0909581950E |
:103B90009F4F62E070E00E94B72C7093DC0160934D |
:103BA000DB01809131059091320597FF03C090951C |
:103BB00081959F4F60E170E00E94B72C7093E00107 |
:103BC0006093DF01809128059091290597FF03C03C |
:103BD000909581959F4F60E170E00E94B72C7093A3 |
:103BE000DE016093DD0160919F047091A00488273D |
:103BF00077FD8095982F0E94B62B6093E10170931A |
:103C0000E2018093E3019093E4011092FB01109292 |
:103C1000FC011092FD011092FE011092FF01109222 |
:103C200000021092010210920202109203021092FE |
:103C300004021092050210920602109207021092DE |
:103C400008021092090210920A0210920B021092BE |
:103C50000C0210920D0210920E021092200510928A |
:103C60001F0510921E0510921D0510922C05109232 |
:103C70002B058091090190910A01A0910B01B0914F |
:103C80000C019093A2048093A1041092C60110929B |
:103C9000C501109213021092140210921502109294 |
:103CA0001602809117029091180290931A02809345 |
:103CB00019020E94D92A82E390E09093AD0180938B |
:103CC000AC01DF91CF9108951F93182F0EC0809102 |
:103CD0002E02882361F484E690E09093AD018093F6 |
:103CE000AC018AEF90E00E94F00B115080F71F9119 |
:103CF00008952F923F924F925F926F927F928F9290 |
:103D00009F92AF92BF92CF92DF92EF92FF920F936A |
:103D10001F93CF93DF93CDB7DEB724970FB6F894F8 |
:103D2000DEBF0FBECDBF0E948D15299AE091E5043C |
:103D3000FF27EE0FFF1FE954FB4F6080718028E7DB |
:103D400030E0620E731E77FE02C0662477248091F5 |
:103D50002702843608F05BC080910201882399F421 |
:103D600080910301909104018F5F9F4F61F488E976 |
:103D70009AE39093AD018093AC0180E09CE0909336 |
:103D800004018093030180914402909145020097C1 |
:103D900031F00197909345028093440204C0109241 |
:103DA0002E0210921D02809100018A3011F4289A8F |
:103DB00001C0289880913F0290914002815D974018 |
:103DC00018F18091FC04682E772481E080931D0215 |
:103DD000E091E304FF27EE0FFF1FE954FB4F118230 |
:103DE0001082E091E404FF27EE0FFF1FE954FB4F20 |
:103DF00011821082E091E604FF27EE0FFF1FE954C5 |
:103E0000FB4F11821082CAC110922E02C7C180914D |
:103E100027028D3808F4C2C110921D028091FD0462 |
:103E200022E3829FC00111249093450280934402B3 |
:103E300059E2651671046CF080913F029091400246 |
:103E40006FEF8F3F960781F1019690934002809328 |
:103E50003F0280913F0290914002883C910520F002 |
:103E600078E26716710404F5109256021092570218 |
:103E7000109258021092590210925202109253025C |
:103E8000109254021092550210920B0210920C02E2 |
:103E900010920D0210920E0210920F021092100258 |
:103EA000109211021092120289EC681671040CF43F |
:103EB000D5C080912E02882309F070C1E091E604FC |
:103EC000FF27EE0FFF1FE954FB4F808191818C3457 |
:103ED00091050CF4C0C0809143028F5F8093430230 |
:103EE000893C08F45BC1299810922E02109243027B |
:103EF0001092400210923F028091E304282F332752 |
:103F0000F901EE0FFF1FE954FB4F80819181873447 |
:103F100091059CF4E091E404FF27EE0FFF1FE954A4 |
:103F2000FB4F0190F081E02DF7FF03C0F095E19584 |
:103F3000FF4FE734F1050CF46CC08091E404682F66 |
:103F40007727DB01AA0FBB1FA954BB4F8D919C9112 |
:103F50001197873491053CF0F901EE0FFF1FE954EA |
:103F6000FB4F808191818D919C918734910564F004 |
:103F7000F901EE0FFF1FE954FB4F808191818734D7 |
:103F8000910514F042E001C041E0FB01EE0FFF1F7C |
:103F9000E954FB4F80819181863491055CF4F901ED |
:103FA000EE0FFF1FE954FB4F80819181873491050B |
:103FB0000CF043E0FB01EE0FFF1FE954FB4F808143 |
:103FC00091818A5B9F4F5CF4F901EE0FFF1FE9546A |
:103FD000FB4F80819181873491050CF044E0660F9E |
:103FE000771F69547B4FFB01808191818A5B9F4FD2 |
:103FF0005CF4220F331F29543B4FD9018D919C91C2 |
:10400000863491050CF445E0A2E0B0E0042E0E9455 |
:104010000F2D8091EB0480FF10C080910D019091D5 |
:104020000E01875B934038F480910D0190910E0151 |
:104030008E5E924010F40E94C40F0E940B024AE36D |
:1040400063EE74E00E9432020E942E1D0E940B0259 |
:104050000E94641EA3C010924302A0C0F3E26F1638 |
:1040600071040CF09BC08091E604482F5527FA019B |
:10407000EE0FFF1FE954FB4F80819181855B9F4FBD |
:104080000CF06DC0809142028F5F80934202893CA8 |
:1040900008F467C088EC8093420281E090E090933E |
:1040A000400280933F0281E080932E0210924E02E4 |
:1040B00010924F02109250021092510210920B0275 |
:1040C00010920C0210920D0210920E0210920F022A |
:1040D0001092100210921102109212021092FB0123 |
:1040E0001092FC011092FD011092FE011092030249 |
:1040F0001092040210920502109206028091E701CC |
:104100009091E801A091E901B091EA018093FF014B |
:1041100090930002A0930102B09302028091EF01FC |
:104120009091F001A091F101B091F201809307020A |
:1041300090930802A0930902B0930A0210925602CB |
:104140001092570210925802109259021092520285 |
:1041500010925302109254021092550202C0109213 |
:104160004202440F551F49545B4FDA018D919C91D7 |
:104170008C3491058CF0809141028F5F80934102D5 |
:10418000893C60F010922E0288EC809341021092DC |
:10419000400210923F0202C01092410280916A01D7 |
:1041A000815080936A0180916A018F3F29F080914C |
:1041B0001D02882309F4BCC10E948819E091E30420 |
:1041C000FF27EE0FFF1FDF01A954BB4F4D915C91FC |
:1041D0008091F204482E5524E353FB4F8081918156 |
:1041E0002091F3043327449D5001459DB00C549D0C |
:1041F000B00C1124FC01E29FC001E39F900DF29FDF |
:10420000900D1124A80EB91EB0922902A092280286 |
:10421000E091E404FF27EE0FFF1FDF01A954BB4F1D |
:104220004D915C91E353FB4F80819181449D40010E |
:10423000459D900C549D900C1124AC01429FC001EF |
:10424000439F900D529F900D1124880E991E9092BD |
:104250002B0280922A02E091E604FF27EE0FFF1F57 |
:10426000E954FB4F80819181909581959F4F909368 |
:104270002D0280932C0210918901612F772767FD11 |
:104280007095872F972F0E94B62B17FF06C020E04E |
:1042900030E040E853E40E94112B20E030E040E29F |
:1042A00051E40E94112B20E030E040E85BE30E94E3 |
:1042B000302C6B017C0160932D0570932E0580934B |
:1042C0002F059093300510918A01612F772767FDA4 |
:1042D0007095872F972F0E94B62B17FF06C020E0FE |
:1042E00030E040E853E40E94112B20E030EE4BE236 |
:1042F00057E40E94532B6093240570932505809307 |
:104300002605909327058091EB0482FF0CC080E086 |
:1043100090E0A0E0B0E08093240590932505A09361 |
:104320002605B093270520E030E040E050E0C701CB |
:10433000B6010E94C02B882364F480E090E0A0E0E6 |
:10434000B0E080932D0590932E05A0932F05B09398 |
:10435000300520E030E040E050E0609124057091AD |
:10436000250580912605909127050E94C02B882362 |
:1043700064F480E090E0A0E0B0E0809324059093A6 |
:104380002505A0932605B093270580910B05992755 |
:1043900082FDCEC083FDCCC08091E7019091E80101 |
:1043A000A091E901B091EA0181569A4EA040B04037 |
:1043B00044F1C20173E0880F991F7A95E1F7A501D6 |
:1043C000481B590B50932902409328028091E70122 |
:1043D0009091E801A091E901B091EA0181589843D8 |
:1043E000A140B0400CF43FC0C20164E0880F991FA7 |
:1043F0006A95E1F7481B590B509329024093280214 |
:1044000032C08091E7019091E801A091E901B0915B |
:10441000EA01805A9541AF4FBF4F2CF5920153E00E |
:10442000220F331F5A95E1F72A0D3B1D30932902C5 |
:10443000209328028091E7019091E801A091E90181 |
:10444000B091EA0181589843A140B04064F0C201A4 |
:1044500044E0880F991F4A95E1F7281B390B3093E8 |
:104460002902209328028091EF019091F001A09100 |
:10447000F101B091F20181569A4EA040B0403CF15A |
:10448000C20123E0880F991F2A95E1F7A401481B78 |
:10449000590B50932B0240932A028091EF01909187 |
:1044A000F001A091F101B091F20181589843A1402F |
:1044B000B0400CF43DC004E0440C551C0A95E1F7F3 |
:1044C0004419550950932B0240932A0231C0809120 |
:1044D000EF019091F001A091F101B091F201805AA9 |
:1044E0009541AF4FBF4F24F5920113E0220F331FC8 |
:1044F0001A95E1F7280D391D30932B0220932A02DB |
:104500008091EF019091F001A091F101B091F20141 |
:1045100081589843A140B0405CF0B4E0440C551C75 |
:10452000BA95E1F72419350930932B0220932A021A |
:104530008091E404E82FFF27EE0FFF1FE954FB4FA3 |
:104540002081318180910A05482F55274217530752 |
:1045500024F480910B0582FD0DC0208131818827D4 |
:104560009927841B950B281739077CF480910B053C |
:1045700083FF0BC081E08093340280910905882E6F |
:1045800099248614970424F002C010923402430147 |
:104590008091E304E82FFF27EE0FFF1FE954FB4F44 |
:1045A000808191814817590724F480910B0580FD83 |
:1045B0000DC02081318188279927841B950B2817EE |
:1045C00039078CF480910B0581FF0DC081E0809349 |
:1045D00033021092340280910905992788159905B4 |
:1045E00024F44C0102C01092330230901D0233209B |
:1045F00041F110922D0210922C0210922902109279 |
:10460000280210922B0210922A028DEC9CECACEC4A |
:10461000BDE380932D0590932E05A0932F05B093B5 |
:1046200030058AE097EDA3EABBE3809324059093DD |
:104630002505A0932605B093270510923402109209 |
:1046400033028091C7019091C8018D54914008F4C4 |
:1046500098C02091EB013091EC014091ED01509117 |
:10466000EE018091E7019091E801A091E901B091FC |
:10467000EA01281B390B4A0B5B0BE090F301F09029 |
:10468000F4010091F5011091F6018091EF019091F4 |
:10469000F001A091F101B091F201E81AF90A0A0BB8 |
:1046A0001B0B1092C8011092C701273A3105410532 |
:1046B000510534F08091D7019091D80101960AC03C |
:1046C0002A553F4F4F4F5F4F4CF48091D701909147 |
:1046D000D80101979093D8018093D70177EAE71624 |
:1046E000F1040105110534F08091D9019091DA01AE |
:1046F00001960EC08AE5E8168FEFF8068FEF0807DF |
:104700008FEF18074CF48091D9019091DA0101974D |
:104710009093DA018093D90110927A008091E70199 |
:104720009091E801A091E901B091EA018093FF0125 |
:1047300090930002A0930102B09302028091EF01D6 |
:104740009091F001A091F101B091F20180930702E4 |
:1047500090930802A0930902B0930A028091F70196 |
:104760009091F801A091F901B091FA0180930F02A4 |
:1047700090931002A0931102B09312028FEE8093D7 |
:104780007A00409024055090250560902605709091 |
:10479000270520E030E040E050E0C301B2010E9474 |
:1047A000C02B882309F4F7C080913302882309F0D5 |
:1047B000F2C080913402882309F0EDC06091E701D6 |
:1047C0007091E8018091E9019091EA012091F7044C |
:1047D000A22EBB24CC24DD24E0902805F0902905EE |
:1047E000A60195010E94EC2C0027F7FC0095102FE4 |
:1047F0002E193F09400B510B20934A0230934B0274 |
:1048000040934C0250934D028091280590912905C8 |
:10481000AA2797FDA095BA2FB7FF07C0B095A0951E |
:10482000909581959F4FAF4FBF4F883C9105A10553 |
:10483000B1053CF4CA01B90128E030E040E050E0A5 |
:1048400006C0CA01B90120E130E040E050E00E941A |
:10485000EC2C20934A0230934B0240934C0250932D |
:104860004D026091EF017091F0018091F101909102 |
:10487000F201E0903105F0903205A60195010E9409 |
:10488000EC2C0027F7FC0095102F2E193F09400B48 |
:10489000510B2093460230934702409348025093B5 |
:1048A00049028091310590913205AA2797FDA09584 |
:1048B000BA2FB7FF07C0B095A095909581959F4FEF |
:1048C000AF4FBF4F883C9105A105B1053CF4CA012B |
:1048D000B90128E030E040E050E006C0CA01B9016B |
:1048E00020E130E040E050E00E94EC2C20934602B2 |
:1048F00030934702409348025093490280914A0204 |
:1049000090914B02A0914C02B0914D02853FE1E0A5 |
:104910009E07E0E0AE07E0E0BE072CF084EF91E0F8 |
:10492000A0E0B0E009C08C509E4FAF4FBF4F64F481 |
:104930008CE09EEFAFEFBFEF80934A0290934B0263 |
:10494000A0934C02B0934D02809146029091470291 |
:10495000A0914802B0914902853F21E0920720E0F2 |
:10496000A20720E0B2072CF084EF91E0A0E0B0E0D5 |
:1049700009C08C509E4FAF4FBF4FECF48CE09EEFC0 |
:10498000AFEFBFEF8093460290934702A093480297 |
:10499000B093490210C010924A0210924B0210923A |
:1049A0004C0210924D021092460210924702109251 |
:1049B00048021092490210927A008091FB01909176 |
:1049C000FC01A091FD01B091FE0120914A023091BD |
:1049D0004B0240914C0250914D02821B930BA40B51 |
:1049E000B50B8093FB019093FC01A093FD01B09364 |
:1049F000FE018091030290910402A0910502B09102 |
:104A0000060220914602309147024091480250919F |
:104A10004902821B930BA40BB50B80930302909366 |
:104A20000402A0930502B093060200912C0210919B |
:104A30002D02A80117FF04C044275527401B510B26 |
:104A4000453151053CF08091EB0484FD03C081E0C9 |
:104A500080933B022091F4043327049FC001059FFB |
:104A6000900D149F900D1124AC01249FC001259F2F |
:104A7000900D349F900D112460E072E00E94B72CDD |
:104A80007B01209FC001219F900D309F900D11242C |
:104A900064E070E00E94B72CE60EF71EB70188278D |
:104AA00077FD8095982F69837A838B839C836093AD |
:104AB0004E0270934F028093500290935102809166 |
:104AC0000B0290910C02A0910D02B0910E0229816F |
:104AD0003A814B815C81821B930BA40BB50B8093B5 |
:104AE0000B0290930C02A0930D02B0930E028091E2 |
:104AF0000B0290910C02A0910D02B0910E02895A06 |
:104B00009146A040B04064F088EA91E6A0E0B0E0B1 |
:104B100080930B0290930C02A0930D02B0930E02AF |
:104B200080910B0290910C02A0910D02B0910E02A7 |
:104B300088559E49AF4FBF4F64F488E59EE9AFEFBB |
:104B4000BFEF80930B0290930C02A0930D02B093E1 |
:104B50000E028FEE80937A008091170290911802D6 |
:104B6000892B09F4A1C08091EB0483FF9DC0609163 |
:104B7000E7017091E8018091E9019091EA0120E05C |
:104B800032E040E050E00E94EC2C890137FF03C086 |
:104B9000109501951F4F6091EF017091F001809188 |
:104BA000F1019091F20120E032E040E050E00E94FB |
:104BB000EC2CB90137FF03C0709561957F4F6017EA |
:104BC00071070CF4B80169317105A4F480913B02BE |
:104BD000882381F08091390290913A02892B51F417 |
:104BE000809117029091180290931A0280931902F3 |
:104BF00010923B02209188013327629FC001639F7E |
:104C0000900D729F900D112460E470E00E94B72C0B |
:104C1000A901461B570B141615060CF03FC0109245 |
:104C20007A002091390230913A022115310561F55F |
:104C300000910B0210910C0220910D0230910E0296 |
:104C400080911B0290911C02BC01649FC001659F72 |
:104C5000900D749F900D112460E270E00E94B72CBB |
:104C6000882777FD8095982F060F171F281F391F5B |
:104C700000930B0210930C0220930D0230930E024E |
:104C80008FEE80937A0010C08FEE80937A002150CF |
:104C9000304030933A022093390206C084EF91E00D |
:104CA00090933A028093390280913C028150809324 |
:104CB0003C028F3F09F062C081E380933C02609127 |
:104CC000E7017091E8018091E9019091EA01E0909B |
:104CD000F704FF2400271127A80197010E94EC2C5C |
:104CE00030935D0420935C046091EF017091F001BA |
:104CF0008091F1019091F201A80197010E94EC2CA2 |
:104D000030935F0420935E048091280590912905DB |
:104D100090936104809360048091310590913205F5 |
:104D2000909363048093620480912B0590912C05ED |
:104D3000909365048093640480912F0290913002D7 |
:104D4000909367048093660460911302709114023B |
:104D5000809115029091160220E032E040E050E090 |
:104D60000E94EC2C30936904209368048091170210 |
:104D70009091180290936D0480936C04809133029B |
:104D80008823A9F060911F0570912005882777FD81 |
:104D90008095982F0E94B62B20912D0530912E05DD |
:104DA00040912F05509130050E94302C2CC060910D |
:104DB000E7017091E8018091E9019091EA01E090AA |
:104DC0001F05F09020050E94B62BA30192010E94BE |
:104DD000302C5B016C010027F7FC0095102FC801F7 |
:104DE000B7010E94B62B20912D0530912E054091E0 |
:104DF0002F05509130050E94302C9B01AC01C6015B |
:104E0000B5010E94112B0E94992B7093200560938D |
:104E10001F05809134028823A9F060911D057091CF |
:104E20001E05882777FD8095982F0E94B62B20912C |
:104E30002D0530912E0540912F05509130050E948F |
:104E4000302C2CC06091EF017091F0018091F10144 |
:104E50009091F201E0901D05F0901E050E94B62B86 |
:104E6000A30192010E94302C5B016C010027F7FC2A |
:104E70000095102FC801B7010E94B62B20912D0577 |
:104E800030912E0540912F05509130050E94302C15 |
:104E90009B01AC01C601B5010E94112B0E94992B08 |
:104EA00070931E0560931D0560912B0570912C0574 |
:104EB000E090F701F090F8010091F9011091FA01EA |
:104EC000882777FD8095982F0E94B62B20912D057D |
:104ED00030912E0540912F05509130050E94302CC5 |
:104EE0005B016C01C801B7010E94B62BA3019201BE |
:104EF0000E94302C20E030E040E05FE30E94302C44 |
:104F00009B01AC01C601B5010E94112B0E94992B97 |
:104F100070932C0560932B0580911F0590912005BF |
:104F20008150984034F080E098E090932005809381 |
:104F30001F0580911F05909120058050984F34F4F3 |
:104F400080E098EF9093200580931F0580911D05C8 |
:104F500090911E058150984034F080E098E0909345 |
:104F60001E0580931D0580911D0590911E058050A2 |
:104F7000984F34F480E098EF90931E0580931D05C0 |
:104F800080912B0590912C058150984034F080E061 |
:104F900098E090932C0580932B0580912B059091A0 |
:104FA0002C058050984F34F480E098EF90932C05B6 |
:104FB00080932B058091EB04992780FFBCC0209142 |
:104FC000850181FF0EC02233B0F480912F029091B1 |
:104FD00030024497909332028093310210921E0265 |
:104FE0000DC08091F004289FC00111244497909334 |
:104FF00032028093310281E080931E02332021F03F |
:10500000109232021092310220912F023091300220 |
:105010004091310250913202421753070CF08BC07D |
:1050200080911E02882309F486C0241B350B8091D1 |
:1050300086019927AC01249FC001259F900D349FC4 |
:10504000900D112460E170E00E94B72C8401061BD2 |
:10505000170B2091C5013091C601809184019927D9 |
:10506000BC01269FC001279F900D369F900D1124F3 |
:1050700068E070E00E94B72C061B170B60911302CA |
:1050800070911402809115029091160220E032E096 |
:1050900040E050E00E94EC2CCA01B9012091870148 |
:1050A0003327442755270E94782C20E230E040E047 |
:1050B00050E00E94EC2C7FEF2E3C370714F42EECCE |
:1050C0003FEF80913D0290913E02AC0164E0440FBD |
:1050D000551F6A95E1F7481B590B2333310514F02E |
:1050E00022E330E0021B130BCA01800F911F60E125 |
:1050F00070E00E94B72C70933E0260933D02809155 |
:10510000EC049927681779073CF4881699065CF037 |
:1051100090933E0280933D0280913D0290913E0229 |
:105120008816990624F490923E0280923D02809067 |
:105130003D0290903E0290926B0480926A0420900F |
:105140002B0530902C0589819A81281A390AB401DF |
:10515000882777FD8095982F0E94B62B7B018C01C4 |
:10516000B101882777FD8095982F0E94B62BA80162 |
:1051700097010E94C32B18162CF4C801B7010E9496 |
:10518000992B1B0117FB109517F91095B101882772 |
:1051900077FD8095982F0E94B62BA80197010E9459 |
:1051A000C02B88232CF4C801B7010E94992B1B0146 |
:1051B00095E62916310424F014E6212E312C09C07D |
:1051C000ACE92A16AFEF3A0624F4BCE92B2EBFEF68 |
:1051D0003B2EB4E18B16910414F422243324409026 |
:1051E0007C0150907D0160907E0170907F01609104 |
:1051F0001F057091200520912802309129024091CD |
:105200005A0250915B02241B350B621B730B8827DB |
:1052100077FD8095982F0E94B62B9B01AC01C301AE |
:10522000B2010E94302C0E94992B709373026093FC |
:10523000720280917202909173028C01222717FDF5 |
:105240002095322F8091560290915702A0915802DA |
:10525000B0915902080F191F2A1F3B1F00935602D5 |
:1052600010935702209358023093590210161106DA |
:1052700012061306ACF4C80117FF03C09095819580 |
:105280009F4F60E071E00E94B72C6F5F7F4F8827CF |
:1052900077FD8095982F061B170B280B390B14C030 |
:1052A000C80117FF03C0909581959F4F60E071E0A2 |
:1052B0000E94B72C6F5F7F4F882777FD8095982FCE |
:1052C000060F171F281F391F00935602109357020D |
:1052D00020935802309359028091560290915702C0 |
:1052E000A0915802B09159028138EEE39E07E0E0A8 |
:1052F000AE07E0E0BE072CF080E89EE3A0E0B0E05F |
:1053000009C08058914CAF4FBF4F64F480E891ECD6 |
:10531000AFEFBFEF8093560290935702A0935802CD |
:10532000B09359022091720230917302C10137FE8D |
:1053300004C088279927821993096401C80ED91ED1 |
:10534000CC0CDD1CC6012C153D050CF4C901AA24AA |
:10535000BB24AC18BD08B501A816B9060CF4BC01F5 |
:105360009401220D331D260F371F37FF03C040E085 |
:1053700050E008C080912A05482F5527241735078B |
:105380000CF4A90180912105E82EFF24C701E41641 |
:10539000F5060CF4CA01809370029401261B370BAA |
:1053A000220D331D37FF03C080E090E007C08091DD |
:1053B0002A059927281739070CF4C9019701E8161F |
:1053C000F9060CF49C012093710260911D05709107 |
:1053D0001E0520912A0230912B0240915C025091CF |
:1053E0005D02241B350B621B730B882777FD8095AC |
:1053F000982F0E94B62B9B01AC01C301B2010E9401 |
:10540000302C0E94992B70936F0260936E028091F2 |
:105410006E0290916F028C01222717FD2095322F8A |
:105420008091520290915302A0915402B091550282 |
:10543000080F191F2A1F3B1F00935202109353029B |
:1054400020935402309355021016110612061306CB |
:10545000ACF4C80117FF03C0909581959F4F60E0A1 |
:1054600071E00E94B72C6F5F7F4F882777FD809592 |
:10547000982F061B170B280B390B14C0C80117FFF8 |
:1054800003C0909581959F4F60E071E00E94B72C1A |
:105490006F5F7F4F882777FD8095982F060F171F26 |
:1054A000281F391F00935202109353022093540275 |
:1054B000309355028091520290915302A091540270 |
:1054C000B091550281382EE3920720E0A20720E038 |
:1054D000B2072CF080E89EE3A0E0B0E009C080585D |
:1054E000914CAF4FBF4F64F480E891ECAFEFBFEF4A |
:1054F0008093520290935302A0935402B0935502AA |
:1055000080916E0290916F0296018C159D050CF4AE |
:105510009C01B501A216B3060CF4B9019401260F43 |
:10552000371F2219330937FF03C040E050E008C09D |
:1055300080912A05482F5527241735070CF4A90117 |
:105540009701E416F5060CF49A0120937602861A68 |
:10555000970AB4016219730977FF03C020E030E0B5 |
:1055600008C080912A05282F3327621773070CF48F |
:105570009B01C701E216F3060CF4C9018093740283 |
:1055800024960FB6F894DEBF0FBECDBFDF91CF914A |
:105590001F910F91FF90EF90DF90CF90BF90AF9051 |
:1055A0009F908F907F906F905F904F903F902F9043 |
:1055B000089580915E0290915F02A0916002B09187 |
:1055C00061028093660290936702A0936802B09391 |
:1055D00069028091620290916302A0916402B0918D |
:1055E000650280936A0290936B02A0936C02B09361 |
:1055F0006D02089510925B0210925A0210925D02A1 |
:1056000010925C020895FC014150504030F001902E |
:105610000616D1F73197CF01089588279927089565 |
:105620005058192EEFD001D0D2C0BA1762077307B5 |
:1056300084079507B1F188F40EF410940B2EBA2F5D |
:10564000A02D062E622F202D072E732F302D082E11 |
:10565000842F402D092E952F502DFF275523B9F06B |
:10566000591B49F0573E98F0469537952795A795D1 |
:10567000F0405395C9F776F0BA0F621F731F841F6D |
:1056800030F4879577956795B795F040939517FA1D |
:105690000F2E0895BF1BBB27BA0B620B730B840B35 |
:1056A000F6CFDEF6DBC0AED001D091C0552359F065 |
:1056B000992369F09F575F57951B33F442F4903854 |
:1056C00011F4915805C09BC091589F3F09F4C6C082 |
:1056D000BB27112462177307840730F4660F771F06 |
:1056E000881FBB1F915098F311D00F920FD00F92CB |
:1056F0000DD0A0E82617370748071B0609F0A04879 |
:10570000BA2F602D7F918F9100240895A0E8002486 |
:10571000621773078407B10528F0621B730B840BB3 |
:10572000B1090A2A660F771F881FBB1FA69581F74C |
:10573000089597FB73D09F3738F0FEE9F91B982F37 |
:10574000872F762F6B2F05C086C096958795779506 |
:105750006795F150D0F73EF49095809570956195DE |
:105760007F4F8F4F9F4F0895E89403C097FB0EF42F |
:10577000F3DFB62F672F782F892F9EE9002427C0EB |
:105780000ED05EF004C00BD026F001C008D019F096 |
:1057900020F48FEF089580E0089581E0089597FB4D |
:1057A000092E052600F8689430D0E89407FC07C05D |
:1057B000621773078407950721F008F40094079493 |
:1057C000989408959A95BB0F661F771F881F112420 |
:1057D0009923A1F08823B2F79F3F59F0BB0F48F4FB |
:1057E00021F4002011F460FF04C06F5F7F4F8F4FE2 |
:1057F0009F4F881F9795879597F908952CC09FEF25 |
:1058000080EC0895052E092607FA440F551F5F3FC7 |
:1058100079F0AA27A51708F051E04795880F991F3E |
:105820009F3F31F0BB27B91708F091E087950895A5 |
:105830009F919F911124E3CF97FB880F991F9F3F62 |
:1058400031F0BB27B91708F091E0879508959F9133 |
:105850009F911124D4CF6627772788279927089509 |
:10586000D1DF01D0B4CF992339F0552329F09F57C8 |
:105870005F57950F13F49AF1F1CF91589F3FE1F3E1 |
:10588000629FA12D0F92BB27639FA00DB11DEE2734 |
:10589000729FA00DB11DEE1FAF93AA27649FB00D9C |
:1058A000E11D739FB00DE11DAA1F6627829FB00DF9 |
:1058B000E11DA61F5527749FE00DA11D551F839F55 |
:1058C000E00DA11D561F849FA00D511D852F7A2F1D |
:1058D0006E2F1F900F9088231AF4939539F48FCF71 |
:1058E000000C111CBB1F661F771F881F012808951D |
:1058F000629FD001739FF001829FE00DF11D649FB4 |
:10590000E00DF11D929FF00D839FF00D749FF00D3F |
:10591000659FF00D9927729FB00DE11DF91F639FE0 |
:10592000B00DE11DF91FBD01CF0111240895991B90 |
:1059300079E004C0991F961708F0961B881F7A9586 |
:10594000C9F780950895AA1BBB1B51E107C0AA1F88 |
:10595000BB1FA617B70710F0A61BB70B881F991F10 |
:105960005A95A9F780959095BC01CD01089597FBB4 |
:10597000092E07260AD077FD04D0E5DF06D00020E7 |
:105980001AF4709561957F4F0895F6F7909581957B |
:105990009F4F0895A1E21A2EAA1BBB1BFD010DC04B |
:1059A000AA1FBB1FEE1FFF1FA217B307E407F507CF |
:1059B00020F0A21BB30BE40BF50B661F771F881FAB |
:1059C000991F1A9469F760957095809590959B0141 |
:1059D000AC01BD01CF01089597FB092E05260ED01D |
:1059E00057FD04D0D7DF0AD0001C38F450954095FD |
:1059F000309521953F4F4F4F5F4F0895F6F79095A3 |
:105A00008095709561957F4F8F4F9F4F0895F999BD |
:105A1000FECFB2BDA1BDF89A119600B40895F999D0 |
:105A2000FECFB2BDA1BD00BC11960FB6F894FA9A94 |
:085A3000F99A0FBE0895FFCFA3 |
:105A38000A0164FFFF0A016400007D0000FF030102 |
:105A480002030405060708090A48616C6C6F2057B1 |
:105A5800656C7400000000000000000000000000F9 |
:105A6800000000000000000000000000000000002E |
:105A7800000000000000000000000000000000001E |
:105A8800000000000000000000000000000000000E |
:105A98000000000000000000000A014B616D657203 |
:105AA80061000053706F7274000064000000803F52 |
:105AB80017B7D13830FB103A409696020A64460070 |
:00000001FF |
/branches/V0.64_Simprop_Steff/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.64_Simprop_Steff/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.64_Simprop_Steff/Settings.h |
---|
--- _Settings.h (nonexistent) |
+++ _Settings.h (revision 191) |
@@ -0,0 +1,50 @@ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Testmodi |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define MOTOR_OFF 0 |
+#define MOTOR_TEST 0 |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Abstimmung |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define ACC_AMPLIFY 16 |
+#define FAKTOR_P 1 |
+#define FAKTOR_I 0.0001 |
+ |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Debug-Interface |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define SIO_DEBUG 1 // Soll der Debugger aktiviert sein? |
+#define MIN_DEBUG_INTERVALL 500 // 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.64_Simprop_Steff/analog.c |
---|
0,0 → 1,172 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + 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 AccumulateNick = 0, AccumulateRoll = 0, AccumulateGier = 0; |
volatile int accumulate_AccRoll = 0,accumulate_AccNick = 0,accumulate_AccHoch = 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; |
//####################################################################################### |
// |
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(100); |
if(MessLuftdruck < 850) off = 0; |
for(; off < 250;off++) |
{ |
OCR0A = off; |
Delay_ms(50); |
printf("."); |
if(MessLuftdruck < 900) break; |
} |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_LAST_OFFSET], off); |
DruckOffsetSetting = off; |
Delay_ms(300); |
} |
//####################################################################################### |
// |
SIGNAL(SIG_ADC) |
//####################################################################################### |
{ |
static unsigned char kanal=0,state = 0; |
signed int wert; |
ANALOG_OFF; |
switch(state++) |
{ |
case 0: |
wert = (signed int) AdNeutralGier - ADC; |
if(PlatinenVersion != 10) wert *= 2; |
AccumulateGier += wert; // |
MessanzahlGier++; |
Mess_Integral_Gier += wert;// / 16; |
Mess_Integral_Gier2 += wert; |
kanal = 1; |
ZaehlMessungen++; |
break; |
case 1: |
wert = (signed int) ADC - AdNeutralRoll; |
if(PlatinenVersion != 10) wert *= 2; |
Mess_IntegralRoll += wert; |
Mess_IntegralRoll2 += wert; |
if(Mess_IntegralRoll > 310000L) Mess_IntegralRoll = -290000L; |
if(Mess_IntegralRoll <-310000L) Mess_IntegralRoll = 290000L; |
if(ADC < 15) wert = -1000; |
if(ADC < 7) wert = -2000; |
if(ADC > 1010) wert = +1000; |
if(ADC > 1017) wert = +2000; |
AccumulateRoll += wert; |
MessanzahlRoll++; |
kanal = 2; |
break; |
case 2: |
wert = (signed int) ADC - AdNeutralNick; |
if(PlatinenVersion != 10) wert *= 2; |
Mess_IntegralNick += wert; |
Mess_IntegralNick2 += wert; |
if(Mess_IntegralNick > 310000L) Mess_IntegralNick = -290000L; |
if(Mess_IntegralNick <-310000L) Mess_IntegralNick = 290000L; |
if(ADC < 15) wert = -1000; |
if(ADC < 7) wert = -2000; |
if(ADC > 1010) wert = +1000; |
if(ADC > 1017) wert = +2000; |
AccumulateNick += wert; |
MessanzahlNick++; |
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; |
accumulate_AccRoll += Aktuell_ay; |
messanzahl_AccRoll++; |
kanal = 7; |
break; |
case 5: |
Aktuell_ax = ADC - NeutralAccX; |
accumulate_AccNick += Aktuell_ax; |
messanzahl_AccNick++; |
kanal = 5; |
state = 6; |
break; |
case 6: |
accumulate_AccHoch = (signed int) ADC - NeutralAccZ; |
accumulate_AccHoch += abs(Aktuell_ay) / 4 + abs(Aktuell_ax) / 4; |
if(accumulate_AccHoch > 1) |
{ |
if(NeutralAccZ < 800) NeutralAccZ+= 0.02; |
} |
else if(accumulate_AccHoch < -1) |
{ |
if(NeutralAccZ > 600) NeutralAccZ-= 0.02; |
} |
messanzahl_AccHoch = 1; |
Aktuell_az = ADC; |
Mess_Integral_Hoch += accumulate_AccHoch; // Integrieren |
Mess_Integral_Hoch -= Mess_Integral_Hoch / 1024; // dämfen |
// Mess_Integral_Hoch -= Mess_Integral_Hoch / 512; // dämfen |
/* if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
kanal = 3; |
state = 7; |
} |
else |
{ |
kanal = 0; |
state = 0; |
}*/ |
kanal = 3; |
state = 7; |
break; |
case 7: |
tmpLuftdruck += ADC; |
if(++messanzahl_Druck >= 5) |
{ |
MessLuftdruck = ADC; |
messanzahl_Druck = 0; |
HoeheD = (int)(StartLuftdruck - tmpLuftdruck - HoehenWert); // 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; |
ANALOG_ON; |
} |
/branches/V0.64_Simprop_Steff/analog.h |
---|
0,0 → 1,23 |
/*####################################################################################### |
#######################################################################################*/ |
extern volatile int UBat; |
extern volatile int AccumulateNick, AccumulateRoll, AccumulateGier,accumulate_AccRoll,accumulate_AccNick,accumulate_AccHoch; |
extern volatile char MessanzahlNick, MessanzahlRoll, MessanzahlGier,messanzahl_AccNick, messanzahl_AccRoll,messanzahl_AccHoch; |
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 unsigned int ReadADC(unsigned char adc_input); |
extern void ADC_Init(void); |
extern void SucheLuftruckOffset(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.64_Simprop_Steff/eeprom.c |
---|
--- fc.c (nonexistent) |
+++ fc.c (revision 191) |
@@ -0,0 +1,912 @@ |
+/*####################################################################################### |
+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" |
+ |
+unsigned char h,m,s; |
+volatile unsigned int I2CTimeout = 100; |
+volatile int MesswertNick,MesswertRoll,MesswertGier; |
+volatile int AdNeutralNick = 0,AdNeutralRoll = 0,AdNeutralGier = 0; |
+volatile int Mittelwert_AccNick, Mittelwert_AccRoll,Mittelwert_AccHoch, NeutralAccX=0, NeutralAccY=0; |
+volatile float NeutralAccZ = 0; |
+unsigned char CosinusNickWinkel = 0, CosinusRollWinkel = 0; |
+volatile long IntegralNick = 0,IntegralNick2 = 0; |
+volatile long IntegralRoll = 0,IntegralRoll2 = 0; |
+volatile long Integral_Gier = 0; |
+volatile long Mess_IntegralNick = 0,Mess_IntegralNick2 = 0; |
+volatile long Mess_IntegralRoll = 0,Mess_IntegralRoll2 = 0; |
+volatile long Mess_Integral_Gier = 0,Mess_Integral_Gier2 = 0; |
+volatile long Mess_Integral_Hoch = 0; |
+volatile int KompassValue = 0; |
+volatile int KompassStartwert = 0; |
+volatile int KompassRichtung = 0; |
+unsigned char MAX_GAS,MIN_GAS; |
+unsigned char Notlandung = 0; |
+unsigned char HoehenReglerAktiv = 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; |
+unsigned char MotorWert[5]; |
+volatile unsigned char SenderOkay = 0; |
+int StickNick = 0,StickRoll = 0,StickGier = 0; |
+char MotorenEin = 0; |
+int HoehenWert = 0; |
+int SollHoehe = 0; |
+unsigned char Looping_Nick = 0,Looping_Roll = 0; |
+ |
+float Kp = FAKTOR_P; |
+float Ki = FAKTOR_I; |
+ |
+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_ServoNickControl = 100; |
+unsigned char Parameter_LoopGasLimit = 70; |
+struct mk_param_struct EE_Parameter; |
+ |
+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) |
+//############################################################################ |
+{ |
+ unsigned int timer; |
+ NeutralAccX = 0; |
+ NeutralAccY = 0; |
+ NeutralAccZ = 0; |
+ AdNeutralNick = 0; |
+ AdNeutralRoll = 0; |
+ AdNeutralGier = 0; |
+ CalibrierMittelwert(); |
+ timer = SetDelay(5); |
+ while (!CheckDelay(timer)); |
+ CalibrierMittelwert(); |
+ if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
+ { |
+ if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
+ } |
+ |
+ if(PlatinenVersion == 10) |
+ { |
+ AdNeutralNick= abs(MesswertNick); |
+ AdNeutralRoll= abs(MesswertRoll); |
+ AdNeutralGier= abs(MesswertGier); |
+ } |
+ else |
+ { |
+ AdNeutralNick= abs(MesswertNick) / 2; |
+ AdNeutralRoll= abs(MesswertRoll) / 2; |
+ AdNeutralGier= abs(MesswertGier) / 2; |
+ } |
+ NeutralAccY = abs(Mittelwert_AccRoll) / ACC_AMPLIFY; |
+ NeutralAccX = abs(Mittelwert_AccNick) / ACC_AMPLIFY; |
+ NeutralAccZ = Aktuell_az; |
+ |
+ Mess_IntegralNick = 0; |
+ Mess_IntegralNick2 = 0; |
+ Mess_IntegralRoll = 0; |
+ Mess_IntegralRoll2 = 0; |
+ Mess_Integral_Gier = 0; |
+ MesswertNick = 0; |
+ MesswertRoll = 0; |
+ MesswertGier = 0; |
+ StartLuftdruck = Luftdruck; |
+ HoeheD = 0; |
+ Mess_Integral_Hoch = 0; |
+ KompassStartwert = KompassValue; |
+ GPS_Neutral(); |
+ beeptime = 50; |
+} |
+ |
+//############################################################################ |
+// Bildet den Mittelwert aus den Messwerten |
+void Mittelwert(void) |
+//############################################################################ |
+{ |
+ // ADC auschalten, damit die Werte sich nicht während der Berechnung ändern |
+ ANALOG_OFF; |
+ if(MessanzahlNick) (MesswertNick = AccumulateNick / MessanzahlNick); |
+ if(MessanzahlRoll) (MesswertRoll = AccumulateRoll / MessanzahlRoll); |
+ if(MessanzahlGier) (MesswertGier = AccumulateGier / MessanzahlGier); |
+ if(messanzahl_AccNick) Mittelwert_AccNick = ((long)Mittelwert_AccNick * 7 + ((ACC_AMPLIFY * (long)accumulate_AccNick) / messanzahl_AccNick)) / 8L; |
+ if(messanzahl_AccRoll) Mittelwert_AccRoll = ((long)Mittelwert_AccRoll * 7 + ((ACC_AMPLIFY * (long)accumulate_AccRoll) / messanzahl_AccRoll)) / 8L; |
+ if(messanzahl_AccHoch) Mittelwert_AccHoch = ((long)Mittelwert_AccHoch * 7 + ((long)accumulate_AccHoch) / messanzahl_AccHoch) / 8L; |
+ AccumulateNick = 0; MessanzahlNick = 0; |
+ AccumulateRoll = 0; MessanzahlRoll = 0; |
+ AccumulateGier = 0; MessanzahlGier = 0; |
+ accumulate_AccRoll = 0;messanzahl_AccRoll = 0; |
+ accumulate_AccNick = 0;messanzahl_AccNick = 0; |
+ accumulate_AccHoch = 0;messanzahl_AccHoch = 0; |
+ Integral_Gier = Mess_Integral_Gier; |
+// Integral_Gier2 = Mess_Integral_Gier2; |
+ IntegralNick = Mess_IntegralNick; |
+ IntegralRoll = Mess_IntegralRoll; |
+ IntegralNick2 = Mess_IntegralNick2; |
+ IntegralRoll2 = Mess_IntegralRoll2; |
+ // ADC einschalten |
+ ANALOG_ON; |
+ |
+/* |
+//------------------------------------------------------------------------------ |
+ 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) |
+//############################################################################ |
+{ |
+ // ADC auschalten, damit die Werte sich nicht während der Berechnung ändern |
+ ANALOG_OFF; |
+ if(MessanzahlNick) (MesswertNick = AccumulateNick / MessanzahlNick); |
+ if(MessanzahlRoll) (MesswertRoll = AccumulateRoll / MessanzahlRoll); |
+ if(MessanzahlGier) (MesswertGier = AccumulateGier / MessanzahlGier); |
+ if(messanzahl_AccNick) Mittelwert_AccNick = ((ACC_AMPLIFY * (long)accumulate_AccNick) / messanzahl_AccNick); |
+ if(messanzahl_AccRoll) Mittelwert_AccRoll = (ACC_AMPLIFY * (long)accumulate_AccRoll) / messanzahl_AccRoll; |
+ if(messanzahl_AccHoch) Mittelwert_AccHoch = ((long)accumulate_AccHoch) / messanzahl_AccHoch; |
+ AccumulateNick = 0; MessanzahlNick = 0; |
+ AccumulateRoll = 0; MessanzahlRoll = 0; |
+ AccumulateGier = 0; MessanzahlGier = 0; |
+ accumulate_AccRoll = 0;messanzahl_AccRoll = 0; |
+ accumulate_AccNick = 0;messanzahl_AccNick = 0; |
+ accumulate_AccHoch = 0;messanzahl_AccHoch = 0; |
+ // 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; |
+} |
+ |
+//############################################################################ |
+// Senden der Motorwerte per I2C-Bus |
+void SendMotorData(void) |
+//############################################################################ |
+{ |
+ if(MOTOR_OFF || !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]; |
+ } |
+ |
+ 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(); |
+} |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + 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 = 0;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV | CFG_KOMPASS_FIX;//0x01; |
+ EE_Parameter.Hoehe_MinGas = 30; |
+ EE_Parameter.MaxHoehe = 251; // Wert : 0-32 251 -> Poti1 |
+ EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
+ EE_Parameter.Luftdruck_D = 50; // Wert : 0-250 |
+ EE_Parameter.Hoehe_ACC_Wirkung = 50; // Wert : 0-250 |
+ EE_Parameter.Hoehe_Verstaerkung = 4; // Wert : 0-50 |
+ EE_Parameter.Stick_P = 4; //2 // Wert : 1-6 |
+ EE_Parameter.Stick_D = 8; //8 // Wert : 0-64 |
+ EE_Parameter.Gier_P = 16; // Wert : 1-20 |
+ EE_Parameter.Gas_Min = 15; // Wert : 0-32 |
+ EE_Parameter.Gas_Max = 250; // Wert : 33-250 |
+ EE_Parameter.GyroAccFaktor = 26; // Wert : 1-64 |
+ EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
+ EE_Parameter.Gyro_P = 120; //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 = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
+ EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
+ EE_Parameter.I_Faktor = 0; |
+ 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.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.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
+ 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 = 0;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV;//0x01; |
+ EE_Parameter.Hoehe_MinGas = 30; |
+ EE_Parameter.MaxHoehe = 251; // Wert : 0-32 251 -> Poti1 |
+ EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
+ EE_Parameter.Luftdruck_D = 50; // Wert : 0-250 |
+ EE_Parameter.Hoehe_ACC_Wirkung = 50; // Wert : 0-250 |
+ EE_Parameter.Hoehe_Verstaerkung = 2; // Wert : 0-50 |
+ EE_Parameter.Stick_P = 4; //2 // Wert : 1-6 |
+ EE_Parameter.Stick_D = 0; //8 // Wert : 0-64 |
+ EE_Parameter.Gier_P = 16; // Wert : 1-20 |
+ EE_Parameter.Gas_Min = 15; // Wert : 0-32 |
+ EE_Parameter.Gas_Max = 250; // Wert : 33-250 |
+ EE_Parameter.GyroAccFaktor = 26; // Wert : 1-64 |
+ EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
+ EE_Parameter.Gyro_P = 175; //80 // Wert : 0-250 |
+ EE_Parameter.Gyro_I = 175; // 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 = 0; |
+ 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.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.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts |
+ memcpy(EE_Parameter.Name, "Kamera\0", 12); |
+} |
+ |
+ |
+//############################################################################ |
+// Trägt ggf. das Poti als Parameter ein |
+void ParameterZuordnung(void) |
+//############################################################################ |
+{ |
+ |
+ #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; if(b <= min) b = min; else if(b >= max) b = max;} |
+ CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe,0,255); |
+ CHK_POTI(Parameter_Luftdruck_D,EE_Parameter.Luftdruck_D,0,100); |
+ CHK_POTI(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(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_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
+ CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
+ CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
+ CHK_POTI(Parameter_LoopGasLimit,EE_Parameter.LoopGasLimit,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; |
+ long IntegralFehlerNick = 0; |
+ long IntegralFehlerRoll = 0; |
+ static unsigned int RcLostTimer; |
+ static unsigned char delay_neutral = 0; |
+ static unsigned char delay_einschalten = 0,delay_ausschalten = 0; |
+ static unsigned int modell_fliegt = 0; |
+ static int hoehenregler = 0; |
+ static char TimerWerteausgabe = 0; |
+ static char NeueKompassRichtungMerken = 0; |
+ Mittelwert(); |
+ |
+ GRN_ON; |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gaswert ermitteln |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ GasMischanteil = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 120; |
+ if(GasMischanteil < 0) GasMischanteil = 0; |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Emfang schlecht |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(SenderOkay < 100) |
+ { |
+ if(!PcZugriff) |
+ { |
+ if(BeepMuster == 0xffff) |
+ { |
+ beeptime = 15000; |
+ BeepMuster = 0x0c00; |
+ } |
+ } |
+ if(RcLostTimer) RcLostTimer--; |
+ else |
+ { |
+ MotorenEin = 0; |
+ Notlandung = 0; |
+ } |
+ ROT_ON; |
+ if(modell_fliegt > 2000) // wahrscheinlich in der Luft --> langsam absenken |
+ { |
+ GasMischanteil = EE_Parameter.NotGas; |
+ Notlandung = 1; |
+ 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) |
+ { |
+ if(modell_fliegt < 0xffff) modell_fliegt++; |
+ } |
+ if((modell_fliegt < 200) || (GasMischanteil < 40)) |
+ { |
+ SummeNick = 0; |
+ SummeRoll = 0; |
+ Mess_Integral_Gier = 0; |
+ Mess_Integral_Gier2 = 0; |
+ } |
+ if((GasMischanteil > 200) && MotorenEin == 0) |
+ { |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// auf Nullwerte kalibrieren |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) // Neutralwerte |
+ { |
+ unsigned char setting; |
+ 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) |
+ { |
+ 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 |
+ } |
+ if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
+ { |
+ if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
+ } |
+ ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
+ SetNeutral(); |
+ Piep(GetActiveParamSetNumber()); |
+ } |
+ } |
+ else delay_neutral = 0; |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gas ist unten |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(GasMischanteil < 35) |
+ { |
+ // Starten |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75) |
+ { |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Einschalten |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(++delay_einschalten > 200) |
+ { |
+ delay_einschalten = 200; |
+ 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; |
+ } |
+ } |
+ else delay_einschalten = 0; |
+ //Auf Neutralwerte setzen |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Auschalten |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) |
+ { |
+ if(++delay_ausschalten > 200) // nicht sofort |
+ { |
+ MotorenEin = 0; |
+ delay_ausschalten = 200; |
+ modell_fliegt = 0; |
+ } |
+ } |
+ else delay_ausschalten = 0; |
+ } |
+ } |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// neue Werte von der Funke |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(!NewPpmData-- || Notlandung) |
+ { |
+ ParameterZuordnung(); |
+ StickNick = PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P; |
+ StickNick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D; |
+ StickRoll = PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P; |
+ StickRoll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D; |
+ StickGier = -PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]; |
+ GyroFaktor = ((float)Parameter_Gyro_P + 10.0) / 256.0; |
+ IntegralFaktor = ((float) Parameter_Gyro_I) / 44000; |
+ |
+ if(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor = 0; |
+ if(GyroFaktor < 0) GyroFaktor = 0; |
+ if(IntegralFaktor < 0) IntegralFaktor = 0; |
+ // greift in den Stick ein, um ungewolltes überschlagen zu verhindern |
+ if(!(EE_Parameter.LoopConfig & CFG_LOOP_LINKS) && !(EE_Parameter.LoopConfig & CFG_LOOP_RECHTS)) |
+ { |
+ if(IntegralNick > 60000) |
+ { |
+ StickNick -= 8 * EE_Parameter.Stick_P; |
+ if(IntegralNick > 80000) StickNick -= 16 * EE_Parameter.Stick_P; |
+ } |
+ else |
+ if(IntegralNick < -60000) |
+ { |
+ StickNick += 8 * EE_Parameter.Stick_P; |
+ if(IntegralNick > 80000) StickNick -= 16 * EE_Parameter.Stick_P; |
+ } |
+ if(IntegralRoll > 60000) |
+ { |
+ StickRoll -= 8 * EE_Parameter.Stick_P; |
+ if(IntegralRoll > 80000) StickRoll -= 16 * EE_Parameter.Stick_P; |
+ } |
+ else |
+ if(IntegralRoll < -60000) |
+ { |
+ StickRoll += 8 * EE_Parameter.Stick_P; |
+ if(IntegralRoll > 80000) StickRoll -= 16 * EE_Parameter.Stick_P; |
+ } |
+ } |
+ |
+ } |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Looping? |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_LINKS) || |
+ ((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < -EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_RECHTS)) |
+ { |
+ Looping_Roll = 1; |
+ if(GasMischanteil > EE_Parameter.LoopGasLimit) GasMischanteil = EE_Parameter.LoopGasLimit; |
+ } |
+ else Looping_Roll = 0; |
+ |
+ if(((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_OBEN) || |
+ ((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_UNTEN)) |
+ { |
+ Looping_Nick = 1; |
+ Looping_Roll = 0; |
+ if(GasMischanteil > EE_Parameter.LoopGasLimit) GasMischanteil = EE_Parameter.LoopGasLimit; |
+ } |
+ else Looping_Nick = 0; |
+ |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Bei Empfangsausfall im Flug |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(Notlandung) |
+ { |
+ StickGier = 0; |
+ StickNick = 0; |
+ StickRoll = 0; |
+ GyroFaktor = 0.1; |
+ IntegralFaktor = 0.005; |
+ Looping_Roll = 0; |
+ Looping_Nick = 0; |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gyro-Drift kompensieren |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define DRIFT_FAKTOR 3 |
+ if(ZaehlMessungen >= 1000 / DRIFT_FAKTOR) |
+ { |
+ IntegralFehlerNick = IntegralNick2 - IntegralNick; |
+ IntegralFehlerRoll = IntegralRoll2 - IntegralRoll; |
+ ZaehlMessungen = 0; |
+ if(IntegralFehlerNick > 500/DRIFT_FAKTOR) AdNeutralNick++; |
+ if(IntegralFehlerNick < -500/DRIFT_FAKTOR) AdNeutralNick--; |
+ if(IntegralFehlerRoll > 500/DRIFT_FAKTOR) AdNeutralRoll++; |
+ if(IntegralFehlerRoll < -500/DRIFT_FAKTOR) AdNeutralRoll--; |
+// if(Mess_Integral_Gier2 > 500/DRIFT_FAKTOR) AdNeutralGier--; // macht nur mit Referenz (Kompass Sinn) |
+// if(Mess_Integral_Gier2 <-500/DRIFT_FAKTOR) AdNeutralGier++; // macht nur mit Referenz (Kompass Sinn) |
+ ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
+ Mess_IntegralNick2 = IntegralNick; |
+ Mess_IntegralRoll2 = IntegralRoll; |
+ Mess_Integral_Gier2 = Integral_Gier; |
+ ANALOG_ON; // ADC einschalten |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Integrale auf ACC-Signal abgleichen |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(IntegralFaktor && !Looping_Nick && !Looping_Roll) |
+ { |
+ tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick); |
+ if(labs(Mittelwert_AccNick) < 200) tmp_long /= 8; |
+ else tmp_long /= 16; |
+ tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll); |
+ if(labs(Mittelwert_AccRoll) < 200) tmp_long2 /= 8; |
+ else tmp_long2 /= 16; |
+ |
+ #define AUSGLEICH 500 |
+ 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; |
+ } |
+ else |
+ { |
+ tmp_long = 0; |
+ tmp_long2 = 0; |
+ } |
+ ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
+ Mess_IntegralNick -= tmp_long; |
+ Mess_IntegralRoll -= tmp_long2; |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gieren |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(abs(StickGier) > 20) // war 35 |
+ { |
+ if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX)) NeueKompassRichtungMerken = 1; |
+ } |
+ tmp_int = EE_Parameter.Gier_P * (StickGier * abs(StickGier)) / 512; // expo y = ax + bx² |
+ tmp_int += (EE_Parameter.Gier_P * StickGier) / 4; |
+ sollGier = tmp_int; |
+ Mess_Integral_Gier -= tmp_int; |
+ if(Mess_Integral_Gier > 25000) Mess_Integral_Gier = 25000; // begrenzen |
+ if(Mess_Integral_Gier <-25000) Mess_Integral_Gier =-25000; |
+ |
+ ANALOG_ON; // ADC einschalten |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Kompass |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(KompassValue && (EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV)) |
+ { |
+ int w,v; |
+ static int SignalSchlecht = 0; |
+ w = abs(IntegralNick /512); // mit zunehmender Neigung den Einfluss drosseln |
+ v = abs(IntegralRoll /512); |
+ if(v > w) w = v; // grösste Neigung ermitteln |
+ if(w < 25 && NeueKompassRichtungMerken && !SignalSchlecht) |
+ { |
+ KompassStartwert = KompassValue; |
+ NeueKompassRichtungMerken = 0; |
+ } |
+ w = (w * Parameter_KompassWirkung) / 64; // auf die Wirkung normieren |
+ w = Parameter_KompassWirkung - w; // Wirkung ggf drosseln |
+ if(w > 0) |
+ { |
+ ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
+ if(!SignalSchlecht) Mess_Integral_Gier += (KompassRichtung * w) / 32; // nach Kompass ausrichten |
+ ANALOG_ON; // ADC einschalten |
+ if(SignalSchlecht) SignalSchlecht--; |
+ } |
+ else SignalSchlecht = 500; // so lange das Signal taub stellen --> ca. 1 sek |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Debugwerte zuordnen |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(!TimerWerteausgabe--) |
+ { |
+ TimerWerteausgabe = 49; |
+ 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[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 * (GyroFaktor/2) + Integral_Gier * IntegralFaktor; |
+ MesswertGier = MesswertGier * (GyroFaktor) + Integral_Gier * IntegralFaktor/2; |
+ |
+ // Maximalwerte abfangen |
+ #define MAX_SENSOR 2048 |
+ 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; |
+ 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 = Parameter_MaxHoehe * 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; // Differenz bestimmen --> P-Anteil |
+ h = GasMischanteil - h; // vom Gas abziehen |
+ h -= (HoeheD * Parameter_Luftdruck_D)/8; // D-Anteil |
+ tmp_int = ((Mess_Integral_Hoch / 512) * (signed long) Parameter_Hoehe_ACC_Wirkung) / 32; |
+ if(tmp_int > 50) tmp_int = 50; |
+ else if(tmp_int < -50) tmp_int = -50; |
+ h -= tmp_int; |
+ hoehenregler = (hoehenregler*15 + h) / 16; |
+ if(hoehenregler < EE_Parameter.Hoehe_MinGas) // nicht unter MIN |
+ { |
+ if(GasMischanteil >= EE_Parameter.Hoehe_MinGas) hoehenregler = EE_Parameter.Hoehe_MinGas; |
+ if(GasMischanteil < EE_Parameter.Hoehe_MinGas) hoehenregler = GasMischanteil; |
+ } |
+ if(hoehenregler > GasMischanteil) hoehenregler = GasMischanteil; // nicht mehr als Gas |
+ GasMischanteil = hoehenregler; |
+ } |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Mischer und PI-Regler |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ DebugOut.Analog[7] = GasMischanteil; |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gier-Anteil |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define MUL_G 1.0 |
+ GierMischanteil = MesswertGier - sollGier; // Regler für Gier |
+//GierMischanteil = 0; |
+ if(GierMischanteil > (MUL_G * GasMischanteil)) GierMischanteil = MUL_G * GasMischanteil; |
+ if(GierMischanteil < -(MUL_G * GasMischanteil)) GierMischanteil = -(MUL_G * GasMischanteil); |
+ if(GierMischanteil > 100) GierMischanteil = 100; |
+ if(GierMischanteil < -100) GierMischanteil = -100; |
+ |
+ if(GasMischanteil < 20) GierMischanteil = 0; |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Nick-Achse |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+ DiffNick = Kp * (MesswertNick - (StickNick - GPS_Nick)); // Differenz bestimmen |
+ SummeNick += DiffNick; // I-Anteil |
+ if(SummeNick > 0) SummeNick-= (abs(SummeNick)/256 + 1); else SummeNick += abs(SummeNick)/256 + 1; |
+ if(SummeNick > 16000) SummeNick = 16000; |
+ if(SummeNick < -16000) SummeNick = -16000; |
+ pd_ergebnis = DiffNick;// + Ki * SummeNick; // PI-Regler für Nick |
+ // Motor Vorn |
+#define MUL 2 |
+ if(pd_ergebnis > MUL * (GasMischanteil + abs(GierMischanteil))) pd_ergebnis = MUL * (GasMischanteil + abs(GierMischanteil)); |
+ if(pd_ergebnis < -MUL * (GasMischanteil + abs(GierMischanteil))) pd_ergebnis = -MUL * (GasMischanteil + abs(GierMischanteil)); |
+ |
+ motorwert = GasMischanteil + pd_ergebnis + GierMischanteil; // Mischer |
+ if ((motorwert < 0)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Vorne = motorwert; |
+ // Motor Heck |
+ motorwert = GasMischanteil - pd_ergebnis + GierMischanteil; |
+ if ((motorwert < 0)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Hinten = motorwert; |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Roll-Achse |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ DiffRoll = Kp * (MesswertRoll - (StickRoll - GPS_Roll)); // Differenz bestimmen |
+ SummeRoll += DiffRoll; // I-Anteil |
+ if(SummeRoll > 0) SummeRoll-= (abs(SummeRoll)/256 + 1); else SummeRoll += abs(SummeRoll)/256 + 1; |
+ if(SummeRoll > 16000) SummeRoll = 16000; |
+ if(SummeRoll < -16000) SummeRoll = -16000; |
+ pd_ergebnis = DiffRoll;// + Ki * SummeRoll; // PI-Regler für Roll |
+ if(pd_ergebnis > MUL * (GasMischanteil + abs(GierMischanteil))) pd_ergebnis = MUL * (GasMischanteil + abs(GierMischanteil)); |
+ if(pd_ergebnis < -MUL * (GasMischanteil + abs(GierMischanteil))) pd_ergebnis = -MUL * (GasMischanteil + abs(GierMischanteil)); |
+ // Motor Links |
+ motorwert = GasMischanteil + pd_ergebnis - GierMischanteil; |
+ if ((motorwert < 0)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Links = motorwert; |
+ // Motor Rechts |
+ motorwert = GasMischanteil - pd_ergebnis - GierMischanteil; |
+ if ((motorwert < 0)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Rechts = motorwert; |
+ // +++++++++++++++++++++++++++++++++++++++++++++++ |
+} |
+ |
/branches/V0.64_Simprop_Steff/fc.h |
---|
0,0 → 1,119 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
#ifndef _FC_H |
#define _FC_H |
extern volatile unsigned int I2CTimeout; |
extern unsigned char Sekunde,Minute; |
extern volatile long IntegralNick,IntegralNick2; |
extern volatile long IntegralRoll,IntegralRoll2; |
extern volatile long Mess_IntegralNick,Mess_IntegralNick2; |
extern volatile long Mess_IntegralRoll,Mess_IntegralRoll2; |
extern volatile long Mess_Integral_Hoch; |
extern volatile long Integral_Gier,Mess_Integral_Gier,Mess_Integral_Gier2; |
extern volatile int KompassValue; |
extern volatile int KompassStartwert; |
extern volatile int KompassRichtung; |
extern int HoehenWert; |
extern int SollHoehe; |
extern volatile int MesswertNick,MesswertRoll,MesswertGier; |
extern volatile int AdNeutralNick,AdNeutralRoll,AdNeutralGier, Mittelwert_AccNick, Mittelwert_AccRoll; |
extern volatile int NeutralAccX, NeutralAccY,Mittelwert_AccHoch; |
extern volatile float NeutralAccZ; |
void MotorRegler(void); |
void SendMotorData(void); |
void CalibrierMittelwert(void); |
void Mittelwert(void); |
void SetNeutral(void); |
unsigned char h,m,s; |
volatile unsigned char Timeout ; |
unsigned char CosinusNickWinkel, CosinusRollWinkel; |
volatile long IntegralNick,IntegralNick2; |
volatile long IntegralRoll,IntegralRoll2; |
volatile long Integral_Gier; |
volatile long Mess_IntegralNick,Mess_IntegralNick2; |
volatile long Mess_IntegralRoll,Mess_IntegralRoll2; |
volatile long Mess_Integral_Gier; |
volatile int DiffNick,DiffRoll; |
extern int Poti1, Poti2, Poti3, Poti4; |
volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count; |
unsigned char MotorWert[5]; |
volatile unsigned char SenderOkay; |
int StickNick,StickRoll,StickGier; |
char MotorenEin; |
extern void DefaultKonstanten(void); |
#define STRUCT_PARAM_LAENGE 58 |
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 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; |
#endif //_FC_H |
/branches/V0.64_Simprop_Steff/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="fc.c"></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></Project> |
/branches/V0.64_Simprop_Steff/flight.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="Flight-Ctrl" x="true"></e></ViewState></pd> |
/branches/V0.64_Simprop_Steff/gps.h |
---|
0,0 → 1,4 |
extern signed int GPS_Nick; |
extern signed int GPS_Roll; |
extern void GPS_Neutral(void); |
extern void GPS_BerechneZielrichtung(void); |
/branches/V0.64_Simprop_Steff/main.c |
---|
0,0 → 1,227 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + 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; |
// -- 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); |
} |
// -- 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 |
} |
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); |
} |
//############################################################################ |
//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) 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(); |
sei(); |
VersionInfo.Hauptversion = VERSION_HAUPTVERSION; |
VersionInfo.Nebenversion = VERSION_NEBENVERSION; |
VersionInfo.PCKompatibel = VERSION_KOMPATIBEL; |
printf("\n\rFlightControl\n\rHardware:%d.%d\n\rSoftware:V%d.%d ",PlatinenVersion/10,PlatinenVersion%10, VERSION_HAUPTVERSION, VERSION_NEBENVERSION); |
printf("\n\r=============================="); |
GRN_ON; |
#define EE_DATENREVISION 62 // 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(); |
WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
} |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], 2); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], EE_DATENREVISION); |
} |
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; |
DebugIn.Analog[1] = 1000; |
DebugIn.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; |
while (1) |
{ |
if (UpdateMotor) // ReglerIntervall |
{ |
UpdateMotor=0; |
MotorRegler(); |
SendMotorData(); |
ROT_OFF; |
if(PcZugriff) PcZugriff--; |
if(SenderOkay) SenderOkay--; |
if(!I2CTimeout) |
{ |
I2CTimeout = 5; |
i2c_reset(); |
if((BeepMuster == 0xffff) && MotorenEin) |
{ |
beeptime = 10000; |
BeepMuster = 0x0080; |
} |
} |
else |
{ |
I2CTimeout--; |
ROT_OFF; |
} |
} |
if(SIO_DEBUG) |
{ |
DatenUebertragung(); |
BearbeiteRxDaten(); |
} |
else BearbeiteRxDaten(); |
if(CheckDelay(timer)) |
{ |
if(UBat < EE_Parameter.UnterspannungsWarnung) |
{ |
if(BeepMuster == 0xffff) |
{ |
beeptime = 6000; |
BeepMuster = 0x0300; |
} |
} |
timer = SetDelay(100); |
} |
} |
return (1); |
} |
/branches/V0.64_Simprop_Steff/main.h |
---|
0,0 → 1,97 |
#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 PORTB &=~0x02 |
#define GRN_ON PORTB |= 0x02 |
#define GRN_FLASH PORTB ^= 0x02 |
//#ifndef F_CPU |
//#error ################## F_CPU nicht definiert oder ungültig ############# |
//#endif |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//#define ANZ_MITTELWERT 4 |
#define EEPROM_ADR_VALID 1 |
#define EEPROM_ADR_ACTIVE_SET 2 |
#define EEPROM_ADR_LAST_OFFSET 3 |
#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_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 void ReadParameterSet (unsigned char number, unsigned char *buffer, unsigned char length); |
extern 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" |
#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.64_Simprop_Steff/makefile |
---|
0,0 → 1,391 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega644 |
F_CPU = 20000000 |
#------------------------------------------------------------------- |
HAUPT_VERSION = 0 |
NEBEN_VERSION = 64 |
VERSION_KOMPATIBEL = 5 # 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 ($(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). |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION) |
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
OPT = s |
########################################################################################################## |
# List C source files here. (C dependencies are automatically generated.) |
SRC = main.c uart.c printf_P.c timer0.c analog.c menu.c |
SRC += twimaster.c rc.c fc.c GPS.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) |
# 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 = stk200 |
AVRDUDE_PROGRAMMER = dt006 |
#AVRDUDE_PROGRAMMER = ponyser |
#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_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_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.64_Simprop_Steff/menu.c |
---|
0,0 → 1,118 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + 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 = 10,MenuePunkt=0; |
if(RemoteTasten & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue; LcdClear(); } |
if(RemoteTasten & KEY2) { MenuePunkt++; LcdClear(); } |
if((RemoteTasten & KEY1) && (RemoteTasten & KEY2)) MenuePunkt = 0; |
LCD_printfxy(17,0,"[%i]",MenuePunkt); |
switch(MenuePunkt) |
{ |
case 0: |
LCD_printfxy(0,0,"++ MikroKopter ++"); |
LCD_printfxy(0,1,"HW:V%d.%d SW:%d.%d",PlatinenVersion/10,PlatinenVersion%10,VERSION_HAUPTVERSION, VERSION_NEBENVERSION); |
LCD_printfxy(0,2,"Setting: %d ",GetActiveParamSetNumber()); |
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"); |
LCD_printfxy(0,1,"Nick %4i (%3i)",AccumulateNick / MessanzahlNick, AdNeutralNick); |
LCD_printfxy(0,2,"Roll %4i (%3i)",AccumulateRoll / MessanzahlRoll, AdNeutralRoll); |
LCD_printfxy(0,3,"Gier %4i (%3i)",AccumulateGier / MessanzahlGier, AdNeutralGier); |
break; |
case 6: |
LCD_printfxy(0,0,"ACC - Sensor"); |
LCD_printfxy(0,1,"Nick %4i (%3i)",accumulate_AccNick / messanzahl_AccNick,NeutralAccX); |
LCD_printfxy(0,2,"Roll %4i (%3i)",accumulate_AccRoll / messanzahl_AccRoll,NeutralAccY); |
LCD_printfxy(0,3,"Hoch %4i (%3i)",Aktuell_az/*accumulate_AccHoch / messanzahl_AccHoch*/,(int)NeutralAccZ); |
break; |
case 7: |
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; |
default: MaxMenue = MenuePunkt - 1; |
MenuePunkt = 0; |
break; |
} |
RemoteTasten = 0; |
} |
/branches/V0.64_Simprop_Steff/menu.h |
---|
0,0 → 1,5 |
extern void Menu(void); |
extern char DisplayBuff[80]; |
extern unsigned char DispPtr; |
unsigned char RemoteTasten; |
/branches/V0.64_Simprop_Steff/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.64_Simprop_Steff/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.64_Simprop_Steff/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 |
extern 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.64_Simprop_Steff/rc.c |
---|
0,0 → 1,86 |
/*####################################################################################### |
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 > 1500) && (signal < 8000)) |
{ |
index = 1; |
NewPpmData = 0; // Null bedeutet: Neue Daten |
// OCR2A = Poti2/2 + 80; |
} |
else |
{ |
if(index < 10) |
{ |
if((signal > 250) && (signal < 687)) |
{ |
// signal -= 466; |
signal -= 526; // Anpassung fuer Simprop SAM FM 30.09.07 Steff |
// Stabiles Signal |
if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10;} |
tmp = (3 * (PPM_in[index]) + signal) / 4; |
// if(tmp > signal+1) tmp--; else |
// if(tmp < signal-1) tmp++; |
PPM_diff[index] = tmp - PPM_in[index]; |
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.64_Simprop_Steff/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.64_Simprop_Steff/timer0.c |
---|
0,0 → 1,158 |
#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; |
unsigned int BeepMuster = 0xffff; |
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(!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 < 4000)) |
{ |
KompassValue = cntKompass; |
} |
// 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 = -TIMER_RELOAD_VALUE; // reload |
//OCR1 = 0x00; |
TCCR2A=(1<<COM2A1)|(1<<COM2A0)|3; |
TCCR2B=(0<<CS20)|(1<<CS21)|(1<<CS22); |
// TIMSK2 |= _BV(TOIE2); |
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)); |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Servo ansteuern |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(SIG_OUTPUT_COMPARE2A) |
{ |
static unsigned char timer = 10; |
if(!timer--) |
{ |
TCCR2A=(1<<COM2A1)|(0<<COM2A0)|3; |
ServoValue = Parameter_ServoNickControl; |
if(EE_Parameter.ServoNickCompInvert & 0x01) ServoValue += ((long) EE_Parameter.ServoNickComp * (IntegralNick / 128)) / 512; |
else ServoValue -= ((long) EE_Parameter.ServoNickComp * (IntegralNick / 128)) / 512; |
if(ServoValue < EE_Parameter.ServoNickMin) ServoValue = EE_Parameter.ServoNickMin; |
else if(ServoValue > EE_Parameter.ServoNickMax) ServoValue = EE_Parameter.ServoNickMax; |
OCR2A = ServoValue;// + 75; |
timer = EE_Parameter.ServoNickRefresh; |
} |
else |
{ |
TCCR2A =3; |
PORTD&=~0x80; |
} |
} |
/branches/V0.64_Simprop_Steff/timer0.h |
---|
0,0 → 1,15 |
#define TIMER_TEILER CK8 |
#define TIMER_RELOAD_VALUE 250 |
void Timer_Init(void); |
void Delay_ms(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 int ServoValue; |
extern unsigned int BeepMuster; |
/branches/V0.64_Simprop_Steff/twimaster.c |
---|
0,0 → 1,152 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
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; |
} |
TWCR |= 0x80; |
} |
/branches/V0.64_Simprop_Steff/twimaster.h |
---|
0,0 → 1,32 |
/*############################################################################ |
############################################################################*/ |
#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 unsigned char twi_state; |
extern unsigned char motor; |
extern unsigned char motorread; |
extern unsigned char motor_rx[8]; |
void i2c_init (void); // I2C initialisieren |
char i2c_start (void); // Start I2C |
void i2c_stop (void); // Stop I2C |
char i2c_write_byte (char byte); // 1 Byte schreiben |
#endif |
/branches/V0.64_Simprop_Steff/uart.c |
---|
0,0 → 1,332 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + 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 PcZugriff = 100; |
unsigned char MotorTest[4] = {0,0,0,0}; |
unsigned char MeineSlaveAdresse; |
struct str_DebugOut DebugOut; |
struct str_Debug DebugIn; |
struct str_VersionInfo VersionInfo; |
int Debug_Timer; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ 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) |
PcZugriff = 255; |
switch(RxdBuffer[2]) |
{ |
case 'c':// Debugdaten incl. Externe IOs usw |
Decode64((unsigned char *) &DebugIn,sizeof(DebugIn),3,AnzahlEmpfangsBytes); |
/* for(unsigned char i=0; i<4;i++) |
{ |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2], DebugIn.Analog[i]); |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2 + 1], DebugIn.Analog[i] >> 8); |
}*/ |
//RemoteTasten |= DebugIn.RemoteTasten; |
DebugDataAnforderung = 1; |
break; |
case 'h':// x-1 Displayzeilen |
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes); |
RemoteTasten |= tmp_char_arr2[0]; |
DebugDisplayAnforderung = 1; |
break; |
case 't':// Motortest |
Decode64((unsigned char *) &MotorTest[0],sizeof(MotorTest),3,AnzahlEmpfangsBytes); |
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); |
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 |
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); |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
static char dis_zeile = 0; |
if(!UebertragungAbgeschlossen) return; |
if(DebugGetAnforderung && UebertragungAbgeschlossen) // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
{ |
SendOutData('G',MeineSlaveAdresse,(unsigned char *) &DebugIn,sizeof(DebugIn)); |
DebugGetAnforderung = 0; |
} |
if((CheckDelay(Debug_Timer) || DebugDataAnforderung) && UebertragungAbgeschlossen) |
{ |
SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut)); |
DebugDataAnforderung = 0; |
Debug_Timer = SetDelay(MIN_DEBUG_INTERVALL); |
} |
if(DebugDisplayAnforderung && UebertragungAbgeschlossen) |
{ |
Menu(); |
DebugDisplayAnforderung = 0; |
if(++dis_zeile == 4) |
{ |
SendOutData('4',0,&PPM_in,sizeof(PPM_in)); // DisplayZeile übertragen |
dis_zeile = -1; |
} |
else SendOutData('0' + dis_zeile,0,&DisplayBuff[20 * dis_zeile],20); // DisplayZeile übertragen |
} |
if(GetVersionAnforderung && UebertragungAbgeschlossen) |
{ |
SendOutData('V',MeineSlaveAdresse,(unsigned char *) &VersionInfo,sizeof(VersionInfo)); |
GetVersionAnforderung = 0; |
} |
} |
/branches/V0.64_Simprop_Steff/uart.h |
---|
0,0 → 1,90 |
#ifndef _UART_H |
#define _UART_H |
#define MAX_SENDE_BUFF 150 |
#define MAX_EMPFANGS_BUFF 150 |
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 int Debug_Timer; |
extern void UART_Init (void); |
extern int uart_putchar (char c); |
extern void boot_program_page (uint32_t page, uint8_t *buf); |
extern void DatenUebertragung(void); |
extern void DecodeNMEA(void); |
extern unsigned char MotorTest[4]; |
struct str_DebugOut |
{ |
unsigned char Digital[2]; |
unsigned int Analog[32]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
struct str_Debug |
{ |
unsigned char Digital[2]; |
unsigned char RemoteTasten; |
unsigned int Analog[4]; |
}; |
extern struct str_Debug DebugIn; |
struct str_VersionInfo |
{ |
unsigned char Hauptversion; |
unsigned char Nebenversion; |
unsigned char PCKompatibel; |
unsigned char Rserved[7]; |
}; |
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.64_Simprop_Steff/version.txt |
---|
0,0 → 1,84 |
------- |
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.64_Simprop_Steff S. Spies 30.09.2007 |
- Anpassung der rc.c an Simprop SAM FM Sender |
signal -= 466 |
geändert in |
signal -= 526 |