/branches/V0.60_GPS_BETA_chris2798_hallo2/main.c |
---|
File deleted |
/branches/V0.60_GPS_BETA_chris2798_hallo2/twimaster.h |
---|
File deleted |
/branches/V0.60_GPS_BETA_chris2798_hallo2/printf_P.h |
---|
File deleted |
/branches/V0.60_GPS_BETA_chris2798_hallo2/old_macros.h |
---|
File deleted |
/branches/V0.60_GPS_BETA_chris2798_hallo2/fc.c |
---|
File deleted |
/branches/V0.60_GPS_BETA_chris2798_hallo2/GPS.c |
---|
File deleted |
/branches/V0.60_GPS_BETA_chris2798_hallo2/main.h |
---|
File deleted |
/branches/V0.60_GPS_BETA_chris2798_hallo2/V0.71_Beta_HEX/Flight-Ctrl_MEGA644_V0_71.hex |
---|
File deleted |
/branches/V0.60_GPS_BETA_chris2798_hallo2/V0.71_Beta_HEX/readme.txt |
---|
File deleted |
/branches/V0.60_GPS_BETA_chris2798_hallo2/readme.txt |
---|
File deleted |
/branches/V0.60_GPS_BETA_chris2798_hallo2/makefile |
---|
File deleted |
/branches/V0.60_GPS_BETA_chris2798_hallo2/fc.h |
---|
File deleted |
/branches/V0.60_GPS_BETA_chris2798_hallo2/gps.h |
---|
File deleted |
/branches/V0.60_GPS_BETA_chris2798_hallo2/timer0.c |
---|
File deleted |
/branches/V0.60_GPS_BETA_chris2798_hallo2/analog.c |
---|
File deleted |
/branches/V0.60_GPS_BETA_chris2798_hallo2/flight.pnproj |
---|
File deleted |
\ No newline at end of file |
/branches/V0.60_GPS_BETA_chris2798_hallo2/rc.c |
---|
File deleted |
/branches/V0.60_GPS_BETA_chris2798_hallo2/_Settings.h |
---|
File deleted |
/branches/V0.60_GPS_BETA_chris2798_hallo2/menu.c |
---|
File deleted |
\ No newline at end of file |
/branches/V0.60_GPS_BETA_chris2798_hallo2/timer0.h |
---|
File deleted |
\ No newline at end of file |
/branches/V0.60_GPS_BETA_chris2798_hallo2/analog.h |
---|
File deleted |
/branches/V0.60_GPS_BETA_chris2798_hallo2/rc.h |
---|
File deleted |
/branches/V0.60_GPS_BETA_chris2798_hallo2/menu.h |
---|
File deleted |
/branches/V0.60_GPS_BETA_chris2798_hallo2/flight.pnps |
---|
File deleted |
\ No newline at end of file |
/branches/V0.60_GPS_BETA_chris2798_hallo2/uart.c |
---|
File deleted |
/branches/V0.60_GPS_BETA_chris2798_hallo2/twimaster.c |
---|
File deleted |
/branches/V0.60_GPS_BETA_chris2798_hallo2/License.txt |
---|
File deleted |
/branches/V0.60_GPS_BETA_chris2798_hallo2/uart.h |
---|
File deleted |
/branches/V0.60_GPS_BETA_chris2798_hallo2/printf_P.c |
---|
File deleted |
/branches/V0.60_GPS_BETA_chris2798_hallo2/Flight-Ctrl_MEGA644_V0_60.hex |
---|
File deleted |
/branches/GPS_BETA_chris2798_hallo2/Flight-Ctrl_MEGA644_V0_60.hex |
---|
0,0 → 1,1457 |
:100000000C94D9010C94F6010C94F6010C94F601B1 |
:100010000C94F6010C94F6010C94F6010C94F60184 |
:100020000C94F6010C94100C0C94F6010C94F6014F |
:100030000C94E1140C94F6010C94F6010C94F60166 |
:100040000C94F6010C94F6010C94670B0C94F601D9 |
:100050000C9443040C94F6010C9492030C94F60156 |
:100060000C94FC0C0C94F6010C942E140C94F601D8 |
:100070000A0A0D004E65757472616C004865616412 |
:10008000696E67486F6C64000A0D5374657565721C |
:10009000756E673A20004F4B0A0D000A0D416267EA |
:1000A0006C65696368204C756674647275636B7304 |
:1000B000656E736F722E2E000A0D42656E75747A2E |
:1000C0006520506172616D657465727361747A2028 |
:1000D0002564000A0D496E69742E20454550524F23 |
:1000E0004D3A2047656E65726965726520446566A4 |
:1000F00061756C742D506172616D657465722E2E20 |
:100100002E000A0D3D3D3D3D3D3D3D3D3D3D3D3DCE |
:100110003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D0F |
:100120003D3D000A0D466C69676874436F6E7472DA |
:100130006F6C205625642E256420002E0052616EBF |
:1001400067653A2533692D253369005374656C6CF6 |
:10015000756E673A2025336900536574706F696E58 |
:1001600074202025336900536572766F202000507B |
:100170006F7469343A202025336900506F746933F5 |
:100180003A202025336900506F7469323A202025C7 |
:10019000336900506F7469313A2020253369005368 |
:1001A000746172743A2020202020253569004D6545 |
:1001B0007373776572743A2020253569005269633C |
:1001C0006874756E673A2020253569004B6F6D7035 |
:1001D0006173732020202020202000456D70662E42 |
:1001E000506567656C3A253569005370616E6E75B0 |
:1001F0006E673A202025356900486F6368202534F2 |
:100200006920282533692900526F6C6C20253469D8 |
:10021000202825336929004E69636B202534692025 |
:10022000282533692900414343202D2053656E73EF |
:100230006F7200476965722025346920282533696B |
:100240002900526F6C6C20253469202825336929D8 |
:10025000004E69636B202534692028253369290005 |
:100260004779726F202D2053656E736F7200503383 |
:100270003A25346920204B616EE46C6520005031D2 |
:100280003A253469202050323A25346920004773DA |
:100290003A253469202047693A25346920004E699F |
:1002A0003A2534692020526F3A25346920004B37B3 |
:1002B0003A25346920204B616EE46C6520004B3593 |
:1002C0003A25346920204B363A25346920004B33D7 |
:1002D0003A25346920204B343A25346920004B31CB |
:1002E0003A25346920204B323A25346920004B6F7F |
:1002F0006D706173733A20202025356900526F6C50 |
:100300006C3A202020202020253569004E69636B3F |
:100310003A20202020202025356900616B742E2092 |
:100320004C6167650048F668656E726567656C7557 |
:100330006E67004B65696E6520004F666620202061 |
:100340002020203A20253569004C7566746472754A |
:10035000636B3A2025356900536F6C6C486F656894 |
:10036000653A2025356900486F6568653A20202088 |
:1003700020202535690028632920486F6C67657245 |
:1003800020427573730053657474696E673A202553 |
:100390006420005625642E2564002B2B204D696BAC |
:1003A000726F4B6F70746572202B2B005B25695D3B |
:1003B000000011241FBECFEFD0E1DEBFCDBF11E0A2 |
:1003C000A0E0B1E0E0E7FAE502C005900D92AE389A |
:1003D000B107D9F715E0AEE8B1E001C01D92AD3B21 |
:1003E000B107E1F70E942D020C94372D0C94000008 |
:1003F000A2E0B0E00E94232D802D99270895FB01F3 |
:10040000282F863008F025E0842F9927429FD001BD |
:100410001124AC59BF4F019724F001900E942B2D5D |
:10042000FACFA2E0B0E0022E0E942B2D0895CF93C8 |
:10043000DF93FB01C42FDD27863008F085E0489F5D |
:10044000D0011124AC59BF4F219724F00E94232DD5 |
:100450000192FACFDF91CF9108950F931F93CF931D |
:10046000DF9391E097B98FEF88B98BE184B995B9A3 |
:100470008EE38AB9579A87EF8BB984B7877F84BF99 |
:10048000809160008861809360001092600080ED30 |
:1004900097E09093AC018093AB0110922D021092E3 |
:1004A0002C02109246051092450510922B021092D4 |
:1004B0002A02109229021092280228980E94BD0C4C |
:1004C0000E942D070E94CC140E94F60C0E94141466 |
:1004D0007894109200048CE38093010484E080936C |
:1004E00002048CE390E09F938F931F921F9283E20C |
:1004F00091E09F938F931F920E94C30882E091E046 |
:100500009F938F931F920E94C308299AA1E0B0E0A5 |
:100510000E94232D802D2DB73EB7265F3F4F0FB68B |
:10052000F8943EBF0FBE2DBF8B33A9F183ED90E051 |
:100530009F938F931F920E94C3080E94971C4AE3C7 |
:100540006DE675E080E00E94FF0101E00F900F90E2 |
:100550000F90023049F40E942A1C4AE36DE675E0D0 |
:1005600082E00E94FF0103E04AE36DE675E0802F20 |
:100570000E94FF010F5F063060F381E022E030E06F |
:10058000D901082E0E942B2D8BE321503040D90138 |
:10059000082E0E942B2D02E010E0D8010E94232D8E |
:1005A000802D4AE36DE675E00E941702D8010E9493 |
:1005B000232D802D99279F938F9388EB90E09F9315 |
:1005C0008F931F920E94C308809175050F900F9022 |
:1005D0000F900F900F9080FF20C08BE990E09F93C9 |
:1005E0008F931F920E94C30884EC99E00E94FB0B3A |
:1005F000EC010E9420100F900F900F90CE010E94EE |
:10060000040C8823D9F386E990E09F938F931F927F |
:100610000E94C3080F900F900F900E944F1D2898C2 |
:1006200080ED97E09093AC018093AB0188EE93E06E |
:100630009093FB038093FA0385E58093F50388E8A4 |
:1006400090E09F938F931F920E94C308809175053D |
:100650000F900F900F9082FF03C08CE790E002C0D4 |
:1006600084E790E09F938F931F920E94C3080F909E |
:100670000F900F9080E790E09F938F931F920E94BE |
:10068000C3080E9447100F900F900F908091A8010F |
:10069000882379F11092A8010E94601E0E94081D13 |
:1006A000289880910101882319F0815080930101DD |
:1006B00080912702882329F080912702815080931E |
:1006C0002702209104013091050180918505992729 |
:1006D0002817390734F480ED97E09093AC018093AC |
:1006E000AB018091D601882319F40E94141401C033 |
:1006F00028980E944A070E94B80780E090E00E9474 |
:10070000040C882319F280912E02882329F088B1E5 |
:1007100090E1892788B901C0449884EF91E00E9454 |
:10072000FB0BB4CF1F920F920FB60F9211248F9331 |
:100730009F93EF93FF93809100018823E1F48091D0 |
:10074000A3019091A40101969093A4018093A30129 |
:10075000FC01EB54FD4FE081ED3019F08639910535 |
:1007600039F41092A4011092A30181E0809300015A |
:10077000E093C60004C01092A4011092A301FF915F |
:10078000EF919F918F910F900FBE0F901F90189532 |
:100790008091D704813091F58091C7049091C8046D |
:1007A000A091C904B091CA0480930A0590930B05E7 |
:1007B000A0930C05B0930D058091CB049091CC04CF |
:1007C000A091CD04B091CE0480930E0590930F05B7 |
:1007D000A0931005B09311058091CF049091D0049F |
:1007E000A091D104B091D204809312059093130587 |
:1007F000A0931405B09315051092D7048091F403CB |
:10080000813031F48091E803809322051092F40343 |
:1008100080912404813091F5809114049091150405 |
:10082000A0911604B09117048093160590931705B4 |
:10083000A0931805B093190580911804909119049C |
:10084000A0911A04B0911B0480931A0590931B0584 |
:10085000A0931C05B0931D0580911C0490911D046C |
:10086000A0911E04B0911F0480931E0590931F0554 |
:10087000A0932005B09321051092240480912205B5 |
:100880008111289A08951F920F920FB60F9211248A |
:100890002F933F934F935F936F937F938F939F9388 |
:1008A000AF93BF93CF93DF93EF93FF938091C600F5 |
:1008B000809392018091C00040919201887109F06B |
:1008C00005C18091A501843009F48AC0853050F4B7 |
:1008D0008130D1F0813098F0823001F1833009F01D |
:1008E000F2C021C0863009F4ABC0863008F48CC059 |
:1008F000873009F4D6C0883009F0E5C0D8C0453B40 |
:1009000009F0E8C081E003C0423621F482E0809320 |
:10091000A501E0C0453B09F4DDC0D5C0413009F078 |
:10092000D2C083E0F4CF409324054F5F4093B402DC |
:100930008091B4028F5F8093E30384E08093A501EC |
:1009400080912405833031F0813161F1813009F0EB |
:100950003FC014C084EE93E090930F0480930E0484 |
:1009600025E035E03093B2022093B1024096909397 |
:10097000BC048093BB048091F40327C083EC94E013 |
:1009800090930F0480930E042CE736E03093B2026C |
:100990002093B10244969093BC048093BB04809151 |
:1009A000D70413C080E194E090930F0480930E0469 |
:1009B00029EC35E03093B2022093B1024496909333 |
:1009C000BC048093BB04809124048093250582C0DD |
:1009D00081E0809325051092BC041092BB047AC07C |
:1009E000842F99279093BE048093BD048091B40214 |
:1009F000840F8093B4028091E3039091B402890F35 |
:100A00008093E30385E083CF2091BD043091BE0441 |
:100A1000842F9927982F8827280F391F3093BE04D9 |
:100A20002093BD048091B402840F8093B40280911E |
:100A3000E3039091B402890F8093E30386E067CFCC |
:100A40008091B402840F8093B4028091E30390916B |
:100A5000B402890F8093E30380912505882381F4F4 |
:100A6000E0910E04F0910F048091B1029091B202D6 |
:100A7000E817F90728F44193F0930F04E0930E046C |
:100A80008091BD049091BE0401979093BE04809321 |
:100A9000BD048091BD049091BE04892BD9F487E0F8 |
:100AA00036CF8091B402481771F488E030CF80913E |
:100AB000E303481741F4E091BB04F091BC04309784 |
:100AC00011F081E080831092A50104C01092A5016D |
:100AD0000E94C8030E94C80340919E01463910F04D |
:100AE00010929D01809192018D3009F05CC080913F |
:100AF0009D01823009F057C010929D01A42FBB27A1 |
:100B0000FD01ED5DFB4F3081ED01CC5DDB4F2881B8 |
:100B10008091A1019091A201831B9109821B9109EF |
:100B20009F709093A2018093A1019C0196E036955D |
:100B300027959A95E1F7235C2093A001982F9F7346 |
:100B4000935C90939F018081281729F488819817DE |
:100B500011F491E006C0809195018F5F809395011B |
:100B600090E080919301882309F064C0992309F4EF |
:100B700061C081E08093930140939601AB5DBB4FD0 |
:100B80008DE08C9380912704823509F053C088E171 |
:100B900090E02CE00FB6F894A895809360000FBE0B |
:100BA0002093600047C080919D018130D9F0813051 |
:100BB00018F08230E9F530C080919201833239F427 |
:100BC00080919301882319F481E080939D018091A5 |
:100BD00092018093250481E080939E01809192018F |
:100BE000992715C082E080939D01E42FFF27809113 |
:100BF0009201EB5DFB4F80834F5F40939E012091FC |
:100C000092018091A1019091A201820F911D909378 |
:100C1000A2018093A1010EC0E42FFF2780919201D1 |
:100C2000EB5DFB4F8083463938F310929D01E7CF8F |
:100C300010929D01FF91EF91DF91CF91BF91AF9104 |
:100C40009F918F917F916F915F914F913F912F91E4 |
:100C50000F900FBE0F901F901895DC0120E030E040 |
:100C600040E050E0E5EBF2E005C08191280F311D36 |
:100C70004F5F5F4F4A175B07C1F73F70C90166E0DE |
:100C8000969587956A95E1F7835CFD01EB54FD4FDE |
:100C9000808311962F73235CFD01EB54FD4F20835D |
:100CA000AA54BD4F8DE08C93109200018091B50243 |
:100CB0008093C6000895EF92FF920F931F93CF93F6 |
:100CC000DF937A01722F93E29093B5026093B6029C |
:100CD0008093B70203E010E060E0A8EBB2E046C00A |
:100CE000F701E60FF11D90816F5F715019F4E0E09C |
:100CF00040E00FC0F701E60FF11D40816F5F7150BA |
:100D000011F4E0E006C0F701E60FF11DE0816F5F2E |
:100D10007150892F86958695835C8C935527892FF2 |
:100D200099278370907024E0880F991F2A95E1F726 |
:100D30009A0194E0369527959A95E1F7822B835C8A |
:100D4000ED0189834F705070440F551F440F551F9C |
:100D50008E2F8295869586958370842B835C8A83FB |
:100D6000EF73E35CEB830C5F1F4F1496772309F05E |
:100D7000B7CFC8010E942D06DF91CF911F910F912F |
:100D8000FF90EF9008951F93CF93DF93EC0170E0F5 |
:100D9000A22FBB27129748C0E42FFF27EB5DFB4F24 |
:100DA00030814F5FE42FFF27EB5DFB4F50814F5F9A |
:100DB000E42FFF27EB5DFB4F10814F5FE42FFF27F0 |
:100DC000EB5DFB4F20814F5F842F9927A817B90750 |
:100DD00074F15D53FE01E70FF11D3D53330F330FE7 |
:100DE000852F82958F70382B3083613001F1912FE0 |
:100DF0009D537F5FFE01E70FF11D71505295507FAB |
:100E0000892F86958695582B508363506F3F79F0D4 |
:100E10007E5FFE01E70FF11D9295990F990F907C6F |
:100E20002D53922B90837F5F662309F0B5CFDF911E |
:100E3000CF911F9108951F93182F8A3019F48DE0D8 |
:100E40000E941B078091C00085FFFCCF1093C60055 |
:100E500080E090E01F9108950895E1ECF0E088E1D2 |
:100E60008083A0ECB0E08C9182608C93808180685C |
:100E700080838081806480838AE28093C40088ECD0 |
:100E800090E00E94FB0B9093E2038093E1031092A9 |
:100E9000A501089580910001882309F468C080911C |
:100EA0008E01882371F080910001882351F02BE09E |
:100EB00045EF53E06091B30287E40E945B06109215 |
:100EC0008E018091E1039091E2030E94040C88233B |
:100ED00021F4809190018823B1F080910001882352 |
:100EE00091F022E348ED54E06091B30284E40E9463 |
:100EF0005B06109290018AEF90E00E94FB0B9093AA |
:100F0000E2038093E10380918F018823F1F08091C7 |
:100F100000018823D1F00E94501010928F0180911F |
:100F20009C018F5F80939C01843011F410929C018E |
:100F300080919C0144E1849FA00111244A5E5E4F90 |
:100F400024E160E0805D0E945B068091910188232E |
:100F500071F080910001882351F02AE040E054E0D4 |
:100F60006091B30286E50E945B061092910108959C |
:100F70001F93CF93DF93CDB7DEB722970FB6F894C8 |
:100F8000DEBF0FBECDBF80919301882309F498C0C6 |
:100F90008FEF8093010180912704813760F48C36B4 |
:100FA00008F06FC0873609F440C08836F9F0833600 |
:100FB00009F084C008C0843759F1863791F1813730 |
:100FC00009F07CC036C02091960143E06BE085EFCC |
:100FD00093E00E94C3068091CD019091F703892B85 |
:100FE0008093CD0181E08093900168C020919601AB |
:100FF00043E062E0CE0101960E94C3068091CD01DC |
:101000009981892B8093CD0181E080938F0156C017 |
:101010002091960143E064E088E991E00E94C306D4 |
:101020004DC081E08093910149C081E080938E01A1 |
:1010300045C02091960143E062E0CE0101960E94F6 |
:10104000C30689818F3F89F0863010F085E089835F |
:101050004AE36DE675E089810E94170289812AE3DF |
:101060004DE655E06091B30208C01091B3020E94B2 |
:10107000F8012AE34DE655E0612F855B0E945B068F |
:101080001DC02091960143E06AE38DE695E00E9441 |
:10109000C306809127044AE36DE675E08B560E94F3 |
:1010A000FF01809127048B56A2E0B0E0082E0E9439 |
:1010B0002B2D0E94F80199270E944B1E109293013C |
:1010C00022960FB6F894DEBF0FBECDBFDF91CF9151 |
:1010D0001F910895982F80912605813069F48091A1 |
:1010E000CC01E82FFF27EA5EFE4F90838F5F80934D |
:1010F000CC0121E030E005C0892F0E941B07282F7A |
:101100003327C90108951F93182F04C080E30E945C |
:101110006A0811501116D4F31F9108951F93182FC8 |
:1011200004C080E20E946A0811501116D4F31F9186 |
:1011300008950F931F93CF93DF938C01EB0108C0A9 |
:10114000F8010F5F1F4FE4918E2F0E946A082197CC |
:101150002097B1F7DF91CF911F910F9108950F93D1 |
:101160001F93CF93DF938C01EB0106C0F8018191AF |
:101170008F010E946A0821972097C1F7DF91CF91D4 |
:101180001F910F9108952F923F924F925F926F920D |
:101190007F928F929F92AF92BF92CF92DF92EF9207 |
:1011A000FF920F931F93CF93DF93CDB7DEB7E397F3 |
:1011B0000FB6F894DEBF0FBECDBF29968FAD29972D |
:1011C00080932605CE01855B9F4F9D838C832B9654 |
:1011D0008EAD9FAD2B979FA78EA72224332421018C |
:1011E00002C0130124010EA51FA502C00F5F1F4FEF |
:1011F000F801F490FF2019F0F5E2FF16B9F7B801F5 |
:101200008EA59FA5681B790B11F00E949908FF20FD |
:1012100009F444C20F5F1F4F1FA70EA71982AC81AC |
:10122000BD811BAA1AAA9FEF99ABEEA5FFA5CF011E |
:1012300001969FA78EA7B49095E7B91621F08B2D44 |
:101240008062883789F4EBA9E0FF07C02D903D90BC |
:101250004D905C901397149607C08D919C911197B7 |
:101260001C01442455241296F0E2BF1621F4898112 |
:101270008823D9F685C083E2B81609F483C09AE2C0 |
:10128000B91621F0EDE2BE1669F408C0FD01129610 |
:10129000E081EAABE7FFC9CFE195EAABFBA9F061DA |
:1012A000FF7D72C08BE2B81609F46AC09EE2B916DF |
:1012B000B1F52EA53FA52F5F3F4FEEA5FFA5849169 |
:1012C0008A3221F0B82E20E030E01BC0FD011296DA |
:1012D0004081518157FF02C04FEF5FEF49AB3FA7FD |
:1012E0002EA7A3CFC90103E0880F991F0A95E1F744 |
:1012F000220F331F280F391F2B0D311D2053304073 |
:10130000B49031968B2D80538A3060F3FFA7EEA7FF |
:10131000A90137FF02C04FEF5FEF49AB8DCFF0E37C |
:10132000BF1631F48BA984FD80CF80628BAB7DCF5B |
:101330008B2D81538930E8F420E030E0C901F3E0DF |
:10134000880F991FFA95E1F7220F331F280F391FD5 |
:101350002B0D311D20533040EEA5FFA5CF01019686 |
:101360009FA78EA7B4908B2D80538A3038F32AAB79 |
:1013700063CF98E6B91651F4EBA9E460EBAB55CF17 |
:10138000B98253CFFBA9F860FBAB4FCF8CE6B81600 |
:1013900021F49BA991609BAB48CFBD83AC83E3E66E |
:1013A000BE1639F41296BD83AC8312978C918E834E |
:1013B0001AC1F4E4BF1639F084E6B81639F099E69C |
:1013C000B91659F503C0EBA9E160EBABFBA9F0FF3F |
:1013D00008C01496BD83AC835E904E903E902E90D4 |
:1013E0000AC01296BD83AC839E918E911C01442449 |
:1013F00037FC4094542C57FC03C08AE088AB94C05F |
:101400005094409430942094211C311C411C511C58 |
:101410008DE289839AE098AB87C0EFE4BE1629F08D |
:10142000FFE6BF1639F488E063C09BA991609BABCF |
:10143000E8E058C0F0E7BF1681F41296BD83AC8394 |
:101440009E918E911C01442455248BA980648BAB02 |
:1014500090E198AB78E7B72E66C0E3E7BE16D9F502 |
:101460001296BD83AC83DE90CE90C114D10489F472 |
:1014700088E28E838EE68F8385E788878CE689876E |
:101480008A8789E28B871C8666E0C62ED12CCC0E1B |
:10149000DD1EF9A9F7FD13C04F2F552747FD5095C5 |
:1014A00060E070E0C6010E94D12A009711F419A9EA |
:1014B0000DC08C1919A981174CF4182F07C0F6011B |
:1014C00001900020E9F731971E2F1C191982420163 |
:1014D000310140E094C085E5B81631F095E7B916C2 |
:1014E00049F4EAE0E8AB1FC0FBA9F160FBAB8AE07E |
:1014F00088AB19C098E5B91621F0E8E7BE1609F0E7 |
:101500006EC0FBA9F3FD02C080E1F2CF21143104CB |
:101510004104510419F490E198AB05C0EBA9E064D3 |
:10152000EBABF0E1F8AB198289A987FD03C09BA959 |
:101530009F7D9BAB211431044104510461F4E9A95E |
:10154000EE2349F46624772443015EE2C52ED12CB4 |
:10155000CC0EDD1E3EC04EE2C42ED12CCC0EDD1EC4 |
:10156000F8A9EF2EFF2400271127C201B101A8011D |
:1015700097010E94E62C6A3020F430E3A32EA60ED9 |
:1015800008C027E5A22EA60E88E5B81611F49FED37 |
:10159000A922F601A2926F01C201B101A80197012F |
:1015A0000E94E62C39014A012E143F0440065106E0 |
:1015B00018F019012A01D9CFF8A9F83051F48BA9F4 |
:1015C00083FF07C090E3A91621F080E3F601829320 |
:1015D0006F01CE018C19182F125D49A910C0BB20D4 |
:1015E00009F45CC0BE8219824201310100E011E0C1 |
:1015F00096E0C92ED12CCC0EDD1E21E005C0212F96 |
:10160000042F011B07FD00E08981882319F0812F39 |
:101610008F5F07C09BA996FD02C0812F02C0822F59 |
:101620008E5FA82EA00EEBA9EE2EFF2480E3482E9D |
:10163000512C4E205F204114510421F48AA98A19AB |
:101640000E948E088981882329F061E070E0CE0134 |
:10165000019609C0E6FE09C080E38A83BB8262E08E |
:1016600070E0CE0102960E94AF08F0E24F165104DE |
:1016700021F48AA98A190E948308802F0E94830876 |
:10168000612F772767FD7095C6010E94AF08E4FEC1 |
:10169000A8CD8AA98A190E948E08A3CDE3960FB619 |
:1016A000F894DEBF0FBECDBFDF91CF911F910F9198 |
:1016B000FF90EF90DF90CF90BF90AF909F908F9072 |
:1016C0007F906F905F904F903F902F9008951F9262 |
:1016D0000F920FB60F9211242F933F935F936F9346 |
:1016E0007F938F939F93AF93BF938091AF0181506E |
:1016F0008093AF018F3F01F589E08093AF01809126 |
:1017000003018F5F817080930301882319F481E0C6 |
:101710008093A8018091A6019091A70101969093D2 |
:10172000A7018093A6018091D601882329F080919A |
:10173000D60181508093D6018091AB019091AC018C |
:10174000029758F08091AB019091AC010197909372 |
:10175000AC018093AB015A9A01C05A9880917505EB |
:1017600083FF3BC0349B0AC08091A9019091AA01DC |
:1017700001969093AA018093A9012FC08091A9019D |
:101780009091AA01892B79F08091A9019091AA01E9 |
:10179000805A9F4040F48091A9019091AA019093B2 |
:1017A00018028093170280911702909118022091DD |
:1017B000190230911A02821B930B845E9D4F68E6DA |
:1017C00071E00E94D32C845B904090931C02809324 |
:1017D0001B021092AA011092A901BF91AF919F9193 |
:1017E0008F917F916F915F913F912F910F900FBEDD |
:1017F0000F901F9018952091A6013091A7012F5F9F |
:101800003F4F820F931F08952091A6013091A701A9 |
:10181000821B930B892F99278695807499270895A9 |
:101820001F920F920FB60F921124EF92FF920F9317 |
:101830001F932F933F934F935F936F937F938F9358 |
:101840009F93AF93BF93CF93DF93EF93FF938091D9 |
:1018500002018150809302018F3F09F073C083E839 |
:101860008093B00080918901C82FDD27D093AE010D |
:10187000C093AD0180919305E0908F0580FF1EC05D |
:101880006091E7017091E8018091E9019091EA018E |
:10189000FF240027112720E830E040E050E00E94BC |
:1018A000082DC801B7010E94A02C20E032E040E0E2 |
:1018B00050E00E94082DC20FD31F1DC06091E701A8 |
:1018C0007091E8018091E9019091EA01FF240027DD |
:1018D000112720E830E040E050E00E94082DC801C8 |
:1018E000B7010E94A02C20E032E040E050E00E94CE |
:1018F000082DC21BD30BD093AE01C093AD01209134 |
:10190000AD013091AE0180919005992728173907D4 |
:1019100034F08091910599278217930724F49093CE |
:10192000AE018093AD018091AD019091AE01909395 |
:10193000FF048093FE048093B3008091920580930E |
:10194000020104C083E08093B0005F98FF91EF91A3 |
:10195000DF91CF91BF91AF919F918F917F916F91C7 |
:101960005F914F913F912F911F910F91FF90EF90B9 |
:101970000F900FBE0F901F9018958091A601909127 |
:10198000A7010B969093B1018093B00182E085BDD1 |
:1019900083EA84BD17BC88E788BD96E096BD83ECDA |
:1019A0008093B0009093B100E0E7F0E08081826026 |
:1019B0008083EEE6F0E08081816080838AE080931E |
:1019C000B3001092B20008952091A6013091A701B2 |
:1019D0002F5F3F4F280F391F8091A6019091A701DB |
:1019E000A901481B590B57FFF7CF089510927C00AF |
:1019F0008FEE80937A0008951F920F920FB60F9288 |
:101A00001124EF92FF920F931F932F933F934F93C5 |
:101A10005F936F937F938F939F93AF93BF93CF9376 |
:101A2000DF93EF93FF9310927A004091C8014F5FCC |
:101A30004093C8014150433009F41CC1443038F48C |
:101A4000413009F463C0423008F0B9C00DC04530E0 |
:101A500009F450C1453008F42AC1463009F46FC179 |
:101A6000473009F0CBC252C22091DB013091DC013A |
:101A70008091780090917900281B390B8091B601F4 |
:101A80009091B701820F931F9093B7018093B60195 |
:101A90008091C0018F5F8093C00180910B02909173 |
:101AA0000C02A0910D02B0910E02442737FD409523 |
:101AB000542F820F931FA41FB51F80930B02909386 |
:101AC0000C02A0930D02B0930E0280910F02909130 |
:101AD0001002A0911102B0911202820F931FA41F55 |
:101AE000B51F80930F0290931002A0931102B09340 |
:101AF000120281E08093C9018091C6019091C701D3 |
:101B000001969093C7018093C6017CC260917800D2 |
:101B1000709179008091D9019091DA01681B790B5D |
:101B20008091030290910402A0910502B0910602F7 |
:101B30009B01442737FD4095542F820F931FA41F0C |
:101B4000B51F8093030290930402A0930502B09303 |
:101B500006028091070290910802A0910902B091BB |
:101B60000A02820F931FA41FB51F80930702909350 |
:101B70000802A0930902B0930A0280917800909124 |
:101B800079000A9710F464E47DEF809178009091D9 |
:101B90007900895E934010F06CEB72E08091B401A3 |
:101BA0009091B501860F971F9093B5018093B40172 |
:101BB0008091BF018F5F8093BF0182E058C0609128 |
:101BC0007800709179008091D7019091D801681BBD |
:101BD000790B8091FB019091FC01A091FD01B091E6 |
:101BE000FE019B01442737FD4095542F820F931F20 |
:101BF000A41FB51F8093FB019093FC01A093FD01EE |
:101C0000B093FE018091FF0190910002A09101022A |
:101C1000B0910202820F931FA41FB51F8093FF0192 |
:101C200090930002A0930102B09302028091780089 |
:101C3000909179000A9710F464E47DEF8091780028 |
:101C400090917900895E934010F06CEB72E0809186 |
:101C5000B2019091B301860F971F9093B3018093C7 |
:101C6000B2018091BE018F5F8093BE0184E08093BA |
:101C7000C901C8C1409104015091050180917800CB |
:101C8000909179009A01220F331F240F351F63E0D2 |
:101C900070E00E94BF2C260F371F3695279536958A |
:101CA0002795309305012093040186E0E0CF8091D1 |
:101CB000DF019091E0012091780030917900821B42 |
:101CC000930B90932805809327058091B8019091FC |
:101CD000B9012091270530912805820F931F909319 |
:101CE000B9018093B8018091C2018F5F8093C201D6 |
:101CF00087E0BDCF80917800909179002091DD013F |
:101D00003091DE01821B930B909328058093270569 |
:101D10008091BA019091BB0120912705309128054F |
:101D2000820F931F9093BB018093BA018091C101F0 |
:101D30008F5F8093C1014093C90186E0E4C0609148 |
:101D4000780070917900E090E101F090E20100915B |
:101D5000E3011091E401882777FD8095982F0E9478 |
:101D6000842BA80197010E94DE2A0E94672B7093A2 |
:101D7000BD016093BC012091BC013091BD01E09197 |
:101D80002705F0912805809132059091330597FF42 |
:101D900003C0909581959F4F64E070E00E94D32C22 |
:101DA000EB01CF01F7FF03C0909581959F4F64E051 |
:101DB00070E00E94D32C260F371F2C0F3D1F30934D |
:101DC000BD012093BC018091BC019091BD0102979F |
:101DD00004F16091E1017091E2018091E301909141 |
:101DE000E40120E030E048E454E40E948E2B882394 |
:101DF0000CF03CC06091E1017091E2018091E3013F |
:101E00009091E4012AE037ED43EA5CE30E94DF2A87 |
:101E100025C08091BC019091BD018F5F9F4F34F52B |
:101E20006091E1017091E2018091E3019091E40100 |
:101E300020E030E046E154E40E94912B1816B4F4FF |
:101E40006091E1017091E2018091E3019091E401E0 |
:101E50002AE037ED43EA5CE30E94DE2A6093E10169 |
:101E60007093E2018093E3019093E40181E0809319 |
:101E7000C301809178009091790090932A05809316 |
:101E800029052091130230911402409115025091BE |
:101E900016028091BC019091BD01AA2797FDA095E3 |
:101EA000BA2F280F391F4A1F5B1F2093130230934C |
:101EB00014024093150250931602E0901302F09022 |
:101EC0001402009115021091160260911302709194 |
:101ED0001402809115029091160220E034E040E057 |
:101EE00050E00E94082DE21AF30A040B150BE09251 |
:101EF0001302F0921402009315021093160283E06D |
:101F00008093C90187E08093C8017CC08091370528 |
:101F1000909138052091780030917900820F931FBD |
:101F2000909338058093370580912F058F5F8093BC |
:101F30002F0580912F05853008F460C080917800CE |
:101F40009091790090930B0180930A0110922F05D4 |
:101F500080912B0590912C05209137053091380503 |
:101F6000821B930B20912F0230913002821B930B26 |
:101F70009093C5018093C401609137057091380535 |
:101F8000E0900601F090070100910801109109010D |
:101F9000882777FD8095982FA8019701220F331F7E |
:101FA000441F551F2E0D3F1D401F511F620F731FF1 |
:101FB000841F951F24E030E040E050E00E94082D8F |
:101FC00020930601309307014093080150930901C3 |
:101FD00020912B0530912C058091060190910701ED |
:101FE000A0910801B0910901281B390B30933002F0 |
:101FF00020932F0210923805109237051092C901D4 |
:102000001092C8018091C90180937C008FEE80936B |
:102010007A00FF91EF91DF91CF91BF91AF919F91A6 |
:102020008F917F916F915F914F913F912F911F9170 |
:102030000F91FF90EF900F900FBE0F901F9018958B |
:10204000CF93DF93C0E0D0E0C7BD82E390E00E9471 |
:10205000E40C8BE391E09F938F931F920E94C3083F |
:1020600080910A0190910B010F900F900F9084586E |
:10207000934020F02196CA3FD10531F7C093340533 |
:1020800088EC90E00E94E40CDF91CF910895E6E1A6 |
:10209000F1E080E2819391E0E636F907D9F70895FF |
:1020A000FF920F931F938091CD01282F3327C901F1 |
:1020B00081709070682F882391F08091CE018823E1 |
:1020C00011F0815002C0809166018093CE01E6E15B |
:1020D000F1E080E2819391E0E636F907D9F7A901B2 |
:1020E0004270507021FF0DC08091CE018F5F8093B0 |
:1020F000CE01E6E1F1E080E2819391E0E636F90776 |
:10210000D9F7662321F0452B11F01092CE0181E121 |
:102110008093CC018091CE0199279F938F938CEA75 |
:1021200093E09F938F93E1E0FE2EFF920E94C308FD |
:102130000091CE010F900F900F900F900F900530EF |
:1021400009F4D7C1063090F4023009F4B8C0033066 |
:1021500030F40023F1F0013009F05BC34DC00330CF |
:1021600009F402C1043009F054C34BC1083009F42A |
:1021700098C2093038F4063009F411C2073009F06A |
:1021800048C36CC2093009F4C9C20A3009F041C31E |
:1021900003C31092CC018AE993E09F938F93FF923F |
:1021A0000E94C30884E18093CC018CE390E09F936C |
:1021B0008F931F921F9283E993E09F938F93FF92D7 |
:1021C0000E94C30888E28093CC010E94F8019927FD |
:1021D0009F938F9386E893E09F938F93FF920E9443 |
:1021E000C3088CE38093CC0186E793E09F938F93A1 |
:1021F000FF920E94C3088EC28091750580FF47C080 |
:102200001092CC0180912F02909130029F938F9376 |
:1022100087E693E09F938F930F930E94C30884E116 |
:102220008093CC0180913102909132029F938F93E1 |
:1022300088E593E09F938F930F930E94C30888E2F1 |
:102240008093CC0180910A0190910B019F938F9311 |
:1022500089E493E09F938F930F930E94C3088CE3CC |
:102260008093CC018091340599279F938F938AE3C3 |
:1022700093E09F938F930F930E94C3088DB79EB7EF |
:1022800044960FB6F8949EBF0FBE8DBFC7C284E1BF |
:102290008093CC0183E393E09F938F930F930E94ED |
:1022A000C30888E28093CC0185E293E09F938F93EB |
:1022B0000F930E94C3088DB79EB70696E2CF109287 |
:1022C000CC018BE193E09F938F93FF920E94C30810 |
:1022D00084E18093CC016091E7017091E8018091E5 |
:1022E000E9019091EA0120E034E040E050E00E94F2 |
:1022F000082D5F934F933F932F938CE093E09F9330 |
:102300008F93FF920E94C30888E28093CC01609172 |
:10231000EF017091F0018091F1019091F20120E0C4 |
:1023200034E040E050E00E94082D5F934F933F93CC |
:102330002F938DEF92E09F938F93FF920E94C3089B |
:102340008CE38093CC0180911702909118029F93A7 |
:102350008F938EEE92E09F938F93FF920E94C3081B |
:102360008DB79EB746968DCF1092CC0180914505D2 |
:102370009091460520914305309144059F938F939A |
:102380003F932F938EED92E09F938F93FF920E9445 |
:10239000C30884E18093CC018091490590914A055E |
:1023A00020914705309148059F938F933F932F933A |
:1023B0008EEC92E09F938F93FF920E94C30888E275 |
:1023C0008093CC0180914D0590914E0520914B0555 |
:1023D00030914C059F938F933F932F938EEB92E018 |
:1023E0009F938F93FF920E94C3088CE38093CC014C |
:1023F00080914F05909150059F938F938EEA92E0C4 |
:102400006FC01092CC01E0916E05FF27EE0FFF1F09 |
:10241000EF5BFA4F20813181E0916D05FF27EE0FD0 |
:10242000FF1FEF5BFA4F808191813F932F939F9322 |
:102430008F938EE992E09F938F93FF920E94C3083F |
:1024400084E18093CC01E0917005FF27EE0FFF1F20 |
:10245000EF5BFA4F20813181E0916F05FF27EE0F8E |
:10246000FF1FEF5BFA4F808191813F932F939F93E2 |
:102470008F938EE892E09F938F93FF920E94C30800 |
:1024800088E28093CC01E0917205FF27EE0FFF1FD9 |
:10249000EF5BFA4F20813181E0917105FF27EE0F4C |
:1024A000FF1FEF5BFA4F808191813F932F939F93A2 |
:1024B0008F938EE792E09F938F93FF920E94C308C1 |
:1024C0008CE38093CC01E0917305FF27EE0FFF1F93 |
:1024D000EF5BFA4F808191819F938F938EE692E01C |
:1024E0009F938F93FF920E94C3088DB79EB74A9621 |
:1024F000C8CE1092CC0180E692E09F938F93FF921A |
:102500000E94C30884E18093CC012091D7013091CF |
:10251000D8018091B2019091B3016091BE013F93C7 |
:102520002F9377270E94D32C7F936F9381E592E0BE |
:102530009F938F93FF920E94C30888E28093CC01FF |
:102540002091D9013091DA018091B4019091B501C7 |
:102550006091BF013F932F9377270E94D32C7F93E5 |
:102560006F9382E492E09F938F93FF920E94C3083F |
:102570008CE38093CC012091DB013091DC018091D0 |
:10258000B6019091B7016091C0013F932F937727D7 |
:102590000E94D32C7F936F9383E392E056C01092F6 |
:1025A000CC0186E292E09F938F93FF920E94C30832 |
:1025B00084E18093CC012091DD013091DE01809196 |
:1025C000BA019091BB016091C1013F932F9377278E |
:1025D0000E94D32C7F936F9387E192E09F938F9318 |
:1025E000FF920E94C30888E28093CC012091DF0112 |
:1025F0003091E0018091B8019091B9016091C201E0 |
:102600003F932F9377270E94D32C7F936F9388E07B |
:1026100092E09F938F93FF920E94C3088CE3809374 |
:10262000CC016091E1017091E2018091E301909110 |
:10263000E4010091290510912A050E94672B7F93E0 |
:102640006F931F930F9389EF91E09F938F93FF9266 |
:102650000E94C3088DB79EB7489613CE84E180933D |
:10266000CC0180910401909105019F938F938AEE94 |
:1026700091E09F938F93FF920E94C30888E280931A |
:10268000CC018091270299279F938F938BED91E046 |
:102690009F938F93FF920E94C3088DB79EB70A96AF |
:1026A000F0CD1092CC018CEC91E09F938F93FF9230 |
:1026B0000E94C30884E18093CC0180911B02909119 |
:1026C0001C029F938F938DEB91E09F938F93FF92CA |
:1026D0000E94C30888E28093CC01809117029091F8 |
:1026E00018029F938F938EEA91E09F938F93FF92AE |
:1026F0000E94C3088CE38093CC01809119029091D1 |
:102700001A029F938F938FE991E09F938F93FF928B |
:102710000E94C3088DB79EB74296B3CD1092CC01EC |
:1027200080911F02909120029F938F9383E991E003 |
:102730009F938F93FF920E94C30884E18093CC0102 |
:1027400080912102909122029F938F9387E891E0DC |
:102750009F938F93FF920E94C30888E28093CC01DD |
:1027600080912302909124029F938F938BE791E0B5 |
:102770009F938F93FF920E94C3088CE38093CC01B8 |
:1027800080912502909126029F938F938FE691E08E |
:102790009F938F93FF9270CD1092CC0187E691E0CA |
:1027A0009F938F93FF920E94C30884E18093CC0192 |
:1027B0008091890199279F938F9389E591E09F9359 |
:1027C0008F93FF920E94C30888E28093CC0180918E |
:1027D000AD019091AE019F938F938BE491E09F9315 |
:1027E0008F93FF920E94C3088CE38093CC01809169 |
:1027F000910599279F938F938091900599279F9397 |
:102800008F938DE391E09F938F93FF920E94C30873 |
:1028100035CD0150009366011092CE011092CD018A |
:102820001F910F91FF9008951092B9008AE2809352 |
:10283000B800089585EA8093BC0080E090E0089598 |
:1028400084E98093BC0008951092B9008093BB0086 |
:1028500085E88093BC0080E090E008951F920F927D |
:102860000FB60F9211248F939F93EF93FF93809154 |
:10287000CF018F5F8093CF018150833009F442C034 |
:10288000843028F48130A1F0823070F50CC085309E |
:1028900009F448C08530D8F1863009F44BC0873040 |
:1028A00009F071C05BC08091D001880F8E5A14C0AE |
:1028B0008091D0018F5F8093D0018150813009F4E5 |
:1028C00044C0813038F0823009F442C0833009F0CE |
:1028D0005AC041C0809196021092B9008093BB000B |
:1028E00085E88093BC004FC084E98093BC00809150 |
:1028F000D001843018F41092CF0102C01092D001A0 |
:1029000085EAEFCF8091D101880F8D5AE5CF809174 |
:10291000D1018130D1F08130E8F28230C9F08330CA |
:1029200091F519C08091BB00E091D101FF27E75CD0 |
:10293000FA4F80838091D101813039F0813050F29B |
:10294000823031F08330F9F406C080919702C4CF11 |
:1029500080919A02C1CF8091A602BECF8091D10111 |
:102960009091BB00E82FFF27E75CFA4F94838F5FBD |
:102970008093D101843010F01092D10184E98093CA |
:10298000BC001092CF01FF91EF919F918F910F901A |
:102990000FBE0F901F90189583EC80938100EFE697 |
:1029A000F0E08081806280831092DC011092DB0174 |
:1029B0001092DA011092D9011092D8011092D70129 |
:1029C00008951F920F920FB60F9211240F931F9329 |
:1029D0002F933F934F935F936F937F938F939F9327 |
:1029E000AF93BF93CF93DF93EF93FF932091860034 |
:1029F000309187008091D4019091D501281B390B2B |
:102A000080918600909187009093D5018093D401A6 |
:102A1000C9018D5D95408356994148F481E090E06D |
:102A20009093D3018093D2011092670154C0C0915A |
:102A3000D201D091D301CA30D1050CF04CC0C901EC |
:102A40008B5F9040845B914008F040C0A901425DDB |
:102A50005140FE01EE0FFF1FEF5BFA4F8081918125 |
:102A6000FA01E81BF90BCF01F7FF03C090958195A0 |
:102A70009F4F06974CF480912702883C28F4809160 |
:102A80002702865F80932702FE01EE0FFF1F8F0152 |
:102A90000F5B1A4FD8012D913C91C901880F991FE6 |
:102AA000820F931F840F951F64E070E00E94D32C67 |
:102AB000D8018D919C9111979B01281B390BE95AE4 |
:102AC000FA4F3183208311967C936E932196D09395 |
:102AD000D301C093D201FF91EF91DF91CF91BF91CC |
:102AE000AF919F918F917F916F915F914F913F91A6 |
:102AF0002F911F910F910F900FBE0F901F9018955F |
:102B0000AF92BF92CF92DF92EF92FF920F931F93FB |
:102B100010927A008091BE01882369F08091B20101 |
:102B20009091B3016091BE0177270E94D32C7093DE |
:102B3000AA056093A9058091BF01882369F080915F |
:102B4000B4019091B5016091BF0177270E94D32C09 |
:102B50007093A8056093A7058091C001882369F050 |
:102B60008091B6019091B7016091C00177270E94D2 |
:102B7000D32C7093B6056093B5058091C10188236D |
:102B8000D9F1E090B205F090B3056091BA0170916F |
:102B9000BB012091C1010027F7FC0095102F5701C0 |
:102BA000680143E0AA0CBB1CCC1CDD1C4A95D1F784 |
:102BB000AE18BF08C00AD10A882777FD8095982FE4 |
:102BC00034E0660F771F881F991F3A95D1F7332796 |
:102BD000442755270E94082DA20EB31EC41ED51EE1 |
:102BE000C601B50128E030E040E050E00E94082D29 |
:102BF0003093B3052093B2058091C2018823D9F1A7 |
:102C0000E090BB05F090BC056091B8017091B901EE |
:102C10002091C2010027F7FC0095102F5701680191 |
:102C200083E0AA0CBB1CCC1CDD1C8A95D1F7AE1826 |
:102C3000BF08C00AD10A882777FD8095982FB4E095 |
:102C4000660F771F881F991FBA95D1F7332744273E |
:102C500055270E94082DA20EB31EC41ED51EC60104 |
:102C6000B50128E030E040E050E00E94082D3093AC |
:102C7000BC052093BB058091C3018823A1F1E0909E |
:102C8000AC05F090AD056091BC017091BD01209143 |
:102C9000C3010027F7FC0095102F57016801A3E03E |
:102CA000AA0CBB1CCC1CDD1CAA95D1F7AE18BF0822 |
:102CB000C00AD10A882777FD8095982F33274427AB |
:102CC00055270E94082DA20EB31EC41ED51EC60194 |
:102CD000B50128E030E040E050E00E94082D30933C |
:102CE000AD052093AC051092B3011092B201109281 |
:102CF000BE011092B5011092B4011092BF01109262 |
:102D0000B7011092B6011092C0011092B901109251 |
:102D1000B8011092C2011092BB011092BA01109238 |
:102D2000C1011092BD011092BC011092C3018091AB |
:102D30000B0290910C02A0910D02B0910E028093B3 |
:102D4000F7019093F801A093F901B093FA018091F3 |
:102D5000FB019091FC01A091FD01B091FE018093D7 |
:102D6000E7019093E801A093E901B093EA01809113 |
:102D7000030290910402A0910502B0910602809393 |
:102D8000EF019093F001A093F101B093F2018091D3 |
:102D9000FF0190910002A0910102B0910202809384 |
:102DA000EB019093EC01A093ED01B093EE018091C3 |
:102DB000070290910802A0910902B0910A02809343 |
:102DC000F3019093F401A093F501B093F6018FEE17 |
:102DD00080937A008091A9059091AA05893C91057C |
:102DE0007CF02091A9053091AA058091A9059091C8 |
:102DF000AA05880F991F880F991F2052334015C0CC |
:102E00008091A9059091AA0588539F4FA4F4209121 |
:102E1000A9053091AA058091A9059091AA05880F6E |
:102E2000991F880F991F205E3C4F820F931F90932C |
:102E3000AA058093A9058091A7059091A805893CD2 |
:102E400091057CF02091A7053091A8058091A705F8 |
:102E50009091A805880F991F880F991F2052334021 |
:102E600015C08091A7059091A80588539F4FA4F4A1 |
:102E70002091A7053091A8058091A7059091A805FC |
:102E8000880F991F880F991F205E3C4F820F931F58 |
:102E90009093A8058093A70520911F0230912002EE |
:102EA00080917105E82FFF27EE0FFF1FEF5BFA4FB0 |
:102EB0008081918182599F4F281739071CF42F5F19 |
:102EC0003F4F0CC08081918182599F4F8217930799 |
:102ED0004CF42115310531F021503040309320025F |
:102EE00020931F02209121023091220280917205CD |
:102EF000E82FFF27EE0FFF1FEF5BFA4F80819181D4 |
:102F000082599F4F281739071CF42F5F3F4F0CC081 |
:102F10008081918182599F4F821793074CF421152C |
:102F2000310531F0215030403093220220932102AC |
:102F3000209123023091240280917305E82FFF270E |
:102F4000EE0FFF1FEF5BFA4F8081918182599F4FF7 |
:102F5000281739071CF42F5F3F4F0CC080819181E7 |
:102F600082599F4F821793074CF42115310531F098 |
:102F700021503040309324022093230220912502D7 |
:102F80003091260280917405E82FFF27EE0FFF1F76 |
:102F9000EF5BFA4F8081918182599F4F2817390743 |
:102FA0001CF42F5F3F4F0CC08081918182599F4F4D |
:102FB000821793074CF42115310531F02150304030 |
:102FC000309326022093250280911F0290912002C7 |
:102FD00097FF05C01092200210921F020AC08F3F77 |
:102FE000910539F034F08FEF90E0909320028093B8 |
:102FF0001F02809121029091220297FF05C010923A |
:103000002202109221020AC08F3F910539F034F05C |
:103010008FEF90E09093220280932102809123020F |
:103020009091240297FF05C010922402109223026F |
:103030000AC08F3F910539F034F08FEF90E0909304 |
:10304000240280932302809125029091260297FF0B |
:1030500005C010922602109225020AC08F3F9105EA |
:1030600039F034F08FEF90E09093260280932502A0 |
:103070001F910F91FF90EF90DF90CF90BF90AF9096 |
:10308000089510927A008091BE01882369F08091A2 |
:10309000B2019091B3016091BE0177270E94D32CB9 |
:1030A0007093AA056093A9058091BF01882369F0F8 |
:1030B0008091B4019091B5016091BF0177270E9482 |
:1030C000D32C7093A8056093A7058091C001882335 |
:1030D00069F08091B6019091B7016091C0017727A6 |
:1030E0000E94D32C7093B6056093B5058091C10101 |
:1030F0008823D1F06091BA017091BB012091C10188 |
:10310000882777FD8095982F34E0660F771F881FFA |
:10311000991F3A95D1F73327442755270E94082D48 |
:103120003093B3052093B2058091C2018823D1F07A |
:103130006091B8017091B9012091C201882777FD93 |
:103140008095982FB4E0660F771F881F991FBA9556 |
:10315000D1F73327442755270E94082D3093BC050B |
:103160002093BB058091C301882399F06091BC0135 |
:103170007091BD012091C301882777FD8095982F1C |
:103180003327442755270E94082D3093AD052093FF |
:10319000AC051092B3011092B2011092BE011092D0 |
:1031A000B5011092B4011092BF011092B7011092B4 |
:1031B000B6011092C0011092B9011092B80110929C |
:1031C000C2011092BB011092BA011092C10110927B |
:1031D000BD011092BC011092C3018FEE80937A0062 |
:1031E00020911F023091200280917105E82FFF2766 |
:1031F000EE0FFF1FEF5BFA4F8081918182599F4F45 |
:10320000281739071CF42F5F3F4F0CC08081918134 |
:1032100082599F4F821793074CF42115310531F0E5 |
:10322000215030403093200220931F022091210230 |
:103230003091220280917205E82FFF27EE0FFF1FC9 |
:10324000EF5BFA4F8081918182599F4F2817390790 |
:103250001CF42F5F3F4F0CC08081918182599F4F9A |
:10326000821793074CF42115310531F0215030407D |
:1032700030932202209321022091230230912402D4 |
:1032800080917305E82FFF27EE0FFF1FEF5BFA4FCA |
:103290008081918182599F4F281739071CF42F5F35 |
:1032A0003F4F0CC08081918182599F4F82179307B5 |
:1032B0004CF42115310531F0215030403093240277 |
:1032C00020932302209125023091260280917405DB |
:1032D000E82FFF27EE0FFF1FEF5BFA4F80819181F0 |
:1032E00082599F4F281739071CF42F5F3F4F0CC09E |
:1032F0008081918182599F4F821793074CF4211549 |
:10330000310531F0215030403093260220932502C0 |
:1033100080911F029091200297FF05C01092200219 |
:1033200010921F020AC08F3F910539F034F08FEFE1 |
:1033300090E09093200280931F028091210290914F |
:10334000220297FF05C010922202109221020AC0A9 |
:103350008F3F910539F034F08FEF90E09093220287 |
:1033600080932102809123029091240297FF05C04F |
:1033700010922402109223020AC08F3F910539F067 |
:1033800034F08FEF90E09093240280932302809199 |
:1033900025029091260297FF05C0109226021092F6 |
:1033A000250208958F3F910539F034F08FEF90E0BA |
:1033B000909326028093250208951F9380917805AB |
:1033C0008B3F98F08B3F19F480911F020EC08C3F09 |
:1033D00019F48091210209C08D3F19F480912302D4 |
:1033E00004C08E3F21F48091250280938101809159 |
:1033F0008101882319F41092810104C08F3F11F4D8 |
:1034000080938101809177058B3F98F08B3F19F471 |
:1034100080911F020EC08C3F19F48091210209C0D7 |
:103420008D3F19F48091230204C08E3F21F48091D6 |
:1034300025028093800180918001882319F41092E5 |
:10344000800105C0843618F084E680938001809165 |
:1034500079058B3F98F08B3F19F480911F020EC0C5 |
:103460008C3F19F48091210209C08D3F19F480919D |
:10347000230204C08E3F21F48091250280938201B3 |
:1034800080918201882319F41092820105C084364C |
:1034900018F084E68093820180917B058B3F98F041 |
:1034A0008B3F19F480911F020EC08C3F19F480915C |
:1034B000210209C08D3F19F48091230204C08E3F80 |
:1034C00021F48091250280938301809183018823D8 |
:1034D00019F41092830104C08F3F11F4809383018B |
:1034E000809182058B3F98F08B3F19F480911F02E9 |
:1034F0000EC08C3F19F48091210209C08D3F19F450 |
:103500008091230204C08E3F21F480912502809394 |
:10351000840180918401882319F41092840104C0ED |
:103520008F3F11F480938401809183058B3F98F045 |
:103530008B3F19F480911F020EC08C3F19F48091CB |
:10354000210209C08D3F19F48091230204C08E3FEF |
:1035500021F48091250280938501809185018B3033 |
:1035600010F48AE002C08F3F11F4809385018091AE |
:1035700084058B3F98F08B3F19F480911F020EC099 |
:103580008C3F19F48091210209C08D3F19F480917C |
:10359000230204C08E3F21F480912502809386018E |
:1035A00080918601882319F41092860104C08F3F10 |
:1035B00011F480938601809189058B3F98F08B3FB1 |
:1035C00019F480911F020EC08C3F19F480912102E2 |
:1035D00009C08D3F19F48091230204C08E3F21F46D |
:1035E000809125028093880180918801882319F4B5 |
:1035F0001092880104C08F3F11F48093880180915C |
:103600008A058B3F98F08B3F19F480911F020EC002 |
:103610008C3F19F48091210209C08D3F19F48091EB |
:10362000230204C08E3F21F480912502809333024F |
:1036300080913302882319F41092330204C08F3F23 |
:1036400011F48093330280918B058B3F98F08B3F70 |
:1036500019F480911F020EC08C3F19F48091210251 |
:1036600009C08D3F19F48091230204C08E3F21F4DC |
:10367000809125028093340280913402882319F4CA |
:103680001092340204C08F3F11F480933402809171 |
:103690008C058B3F98F08B3F19F480911F020EC070 |
:1036A0008C3F19F48091210209C08D3F19F480915B |
:1036B000230204C08E3F21F48091250280933502BD |
:1036C00080913502882319F41092350204C08F3F8F |
:1036D00011F48093350280918D058B3F98F08B3FDC |
:1036E00019F480911F020EC08C3F19F480912102C1 |
:1036F00009C08D3F19F48091230204C08E3F21F44C |
:10370000809125028093360280913602882319F435 |
:103710001092360204C08F3F11F4809336029091CC |
:103720008E059B3FB0F09B3F19F480911F0204C0AF |
:103730009C3F29F480912102809389010CC09D3F18 |
:1037400019F480912302F8CF9E3F29F4809125023D |
:10375000F3CF9093890180918901882319F4109205 |
:10376000890104C08F3F11F4809389019B3FB0F021 |
:103770009B3F19F480911F0204C09C3F29F4809163 |
:103780002102809389010CC09D3F19F4809123028E |
:10379000F8CF9E3F29F480912502F3CF90938901C1 |
:1037A00080918901882319F41092890104C08F3F08 |
:1037B00011F4809389019B3FB0F09B3F19F48091F5 |
:1037C0001F0204C09C3F29F480912102809389014B |
:1037D0000CC09D3F19F480912302F8CF9E3F29F43D |
:1037E00080912502F3CF90938901809189018823EC |
:1037F00019F41092890104C08F3F11F4809389015C |
:1038000010918801612F772767FD7095872F972F7B |
:103810000E94842B17FF06C020E030E040E853E40C |
:103820000E94DF2A27E137EB41ED58E30E94FE2B8F |
:1038300060937C0170937D0180937E0190937F0162 |
:10384000809180058093B40580917F058093AB05BE |
:103850001F91089581E080936D0542E040936E05CD |
:1038600083E080936F0524E02093700535E030936A |
:10387000710586E08093720587E08093730510924E |
:1038800075058EE1809376058BEF809378058AE04D |
:103890008093790592E39093770590937B0540930D |
:1038A0007A0520937C0510927D0580E180937E054A |
:1038B0008FE080937F058AEF809380058AE1809373 |
:1038C000810580E8809382058FEA80938305809349 |
:1038D00084058AE58093850583E28093860584E1EB |
:1038E00080938705109288053093890510928A0588 |
:1038F00010928B0510928C0510928D0584E68093B2 |
:103900008E0588E280938F05109293059093900521 |
:1039100086E98093910530939205ABE9B5E0E8E63E |
:10392000F1E08CE001900D928150E1F7089581E083 |
:1039300080936D0552E050936E0583E080936F0590 |
:1039400044E04093700535E03093710586E0809344 |
:10395000720587E08093730528E020937405109228 |
:1039600075059EE1909376058BEF809378058AE04C |
:103970008093790586E48093770590937B05509337 |
:103980007A0540937C0520937D0580E180937E0538 |
:103990008FE080937F058AEF809380058AE1809392 |
:1039A000810580E88093820588E78093830596E906 |
:1039B000909384058AE58093850583E2809386054C |
:1039C00084E18093870510928805309389051092D1 |
:1039D0008A0510928B0510928C0510928D0584E655 |
:1039E00080938E0588E280938F051092930582E381 |
:1039F000809390059093910530939205ABE9B5E0E3 |
:103A0000E0E7F1E08CE001900D928150E1F708953C |
:103A100080912E02882301F510929702109296024F |
:103A200010929A021092A60280919801882311F0B8 |
:103A30008093960280919901882311F080939702D8 |
:103A400080919A01882311F08093A60280919B01B6 |
:103A5000882311F080939A0280919602992790937F |
:103A6000030580930205809197029927909305059D |
:103A7000809304058091A60299279093070580936F |
:103A8000060580919A02992790930905809308056D |
:103A90001092CF011092D0010E941A140895CF9372 |
:103AA000DF931092DE011092DD011092E00110927E |
:103AB000DF0180E090E0A0E0B0E08093E10190932E |
:103AC000E201A093E301B093E4011092D8011092B7 |
:103AD000D7011092DA011092D9011092DC011092F4 |
:103AE000DB010E94411885E090E00E94FB0BEC0195 |
:103AF000CE010E94040C8823D9F30E9441188091C2 |
:103B0000750580FF10C080910A0190910B01875BC1 |
:103B1000934038F480910A0190910B018E5E92409F |
:103B200010F40E9420108091A9059091AA0597FF9A |
:103B300003C0909581959F4F9093D8018093D701B2 |
:103B40008091A7059091A80597FF03C09095819556 |
:103B50009F4F9093DA018093D9018091B5059091A0 |
:103B6000B60597FF03C0909581959F4F9093DC0118 |
:103B70008093DB018091BB059091BC0597FF03C04A |
:103B8000909581959F4F60E170E00E94D32C7093D7 |
:103B9000E0016093DF018091B2059091B30597FF3A |
:103BA00003C0909581959F4F60E170E00E94D32CF7 |
:103BB0007093DE016093DD016091290570912A0503 |
:103BC000882777FD8095982F0E94842B6093E101D0 |
:103BD0007093E2018093E3019093E4011092FB0162 |
:103BE0001092FC011092FD011092FE011092FF0153 |
:103BF000109200021092010210920202109203022F |
:103C0000109204021092050210920602109207020E |
:103C1000109208021092090210920A0210920B02EE |
:103C200010920C0210920D0210920E021092AA0530 |
:103C30001092A9051092A8051092A7051092B6053A |
:103C40001092B5058091060190910701A09108019D |
:103C5000B091090190932C0580932B051092C5011A |
:103C60001092C401109213021092140210921502C5 |
:103C700010921602809117029091180290931A02E6 |
:103C80008093190282E390E09093AC018093AB01A2 |
:103C9000DF91CF9108951F93182F0EC080912E02AF |
:103CA000882361F484E690E09093AC018093AB01AB |
:103CB0008AEF90E00E94E40C115080F71F91089564 |
:103CC0002F923F924F925F926F927F928F929F922C |
:103CD000AF92BF92CF92DF92EF92FF920F931F931A |
:103CE000CF93DF93CDB7DEB724970FB6F894DEBF3E |
:103CF0000FBECDBF0E948015299AE0916F05AE2FAF |
:103D0000BB27AA0FBB1FAF5BBA4F0D90BC91A02D74 |
:103D10009D0128583F4F3A83298337FF02C01A82FA |
:103D2000198280912702843608F04AC080910101EF |
:103D3000882331F484EF91E09093AC018093AB0140 |
:103D40008091420290914302009731F00197909345 |
:103D500043028093420204C010922E0210921D0270 |
:103D6000289A80913D0290913E02815D974028F112 |
:103D700080918605482F55275A83498381E0809397 |
:103D80001D02E0916D05FF27EE0FFF1FEF5BFA4F5D |
:103D900011821082E0916E05FF27EE0FFF1FEF5B8F |
:103DA000FA4F11821082E0917005FF27EE0FFF1F7E |
:103DB000EF5BFA4F11821082CEC110922E02CBC15E |
:103DC000809127028D3808F4C6C110921D0280919F |
:103DD000870522E3829FC0011124909343028093C0 |
:103DE000420269817A81693271056CF080913D02ED |
:103DF00090913E027FEF8F3F970781F1019690935C |
:103E00003E0280933D0280913D0290913E02883CAB |
:103E1000910520F089819A81889704F510925802C3 |
:103E20001092590210925A0210925B0210925402A0 |
:103E300010925502109256021092570210920B02E5 |
:103E400010920C0210920D0210920E0210920F02AC |
:103E5000109210021092110210921202E981FA815E |
:103E6000E93CF1050CF4D6C080912E02882309F0BC |
:103E700072C1E0917005FF27EE0FFF1FEF5BFA4F55 |
:103E8000808191818C3491050CF4C1C080914102F4 |
:103E90008F5F80934102893C08F45DC129980E949C |
:103EA0004F1D10922E021092410210923E0210926B |
:103EB0003D0280916D05282F3327F901EE0FFF1F7A |
:103EC000EF5BFA4F80819181873491059CF4E091FA |
:103ED0006E05FF27EE0FFF1FEF5BFA4F0190F08199 |
:103EE000E02DF7FF03C0F095E195FF4FE734F105B2 |
:103EF0000CF46CC080916E05682F7727DB01AA0F48 |
:103F0000BB1FAF5BBA4F8D919C9111978734910580 |
:103F10003CF0F901EE0FFF1FEF5BFA4F80819181BA |
:103F20008D919C918734910564F0F901EE0FFF1F8C |
:103F3000EF5BFA4F808191818734910514F042E064 |
:103F400001C041E0FB01EE0FFF1FEF5BFA4F8081E4 |
:103F50009181863491055CF4F901EE0FFF1FEF5B50 |
:103F6000FA4F80819181873491050CF043E0FB0189 |
:103F7000EE0FFF1FEF5BFA4F808191818A5B9F4FAD |
:103F80005CF4F901EE0FFF1FEF5BFA4F8081918126 |
:103F9000873491050CF044E0660F771F6F5B7A4F12 |
:103FA000FB01808191818A5B9F4F5CF4220F331F5C |
:103FB0002F5B3A4FF90180819181863491050CF491 |
:103FC00045E0A2E0B0E0042E0E942B2D0E94F801F3 |
:103FD0004AE36DE675E00E9417020E94F8010E9414 |
:103FE0004B1E8091750580FFB6C080910A019091AB |
:103FF0000B01875B934040F480910A0190910B0183 |
:104000008E5E924008F0A7C00E942010A4C01092BB |
:104010004102A1C049815A81433251050CF09BC035 |
:1040200080917005482F5527FA01EE0FFF1FEF5BB7 |
:10403000FA4F80819181855B9F4F0CF06DC080911C |
:1040400040028F5F80934002893C08F467C088EC8F |
:104050008093400281E090E090933E0280933D0285 |
:1040600081E080932E021092500210925102109221 |
:1040700052021092530210920B0210920C021092F4 |
:104080000D0210920E0210920F0210921002109266 |
:104090001102109212021092FB011092FC01109278 |
:1040A000FD011092FE011092030210920402109280 |
:1040B0000502109206028091E7019091E801A0911B |
:1040C000E901B091EA018093FF0190930002A0936F |
:1040D0000102B09302028091EF019091F001A09152 |
:1040E000F101B091F2018093070290930802A0932E |
:1040F0000902B0930A0210925802109259021092CB |
:104100005A0210925B0210925402109255021092C1 |
:1041100056021092570202C010924002440F551FDF |
:104120004F5B5A4FFA01808191818C3491058CF05C |
:1041300080913F028F5F80933F02893C60F0109234 |
:104140002E0288EC80933F0210923E0210923D02B4 |
:1041500002C010923F0280916701815080936701F5 |
:10416000809167018F3F29F080911D02882309F417 |
:1041700012C10E94DD19E0916D05FF27EE0FFF1FB0 |
:10418000DF01AF5BBA4F8D919C9160917C057727E1 |
:10419000E95AFA4F2081318140917D055527FC0174 |
:1041A000E69FC001E79F900DF69F900D1124F90145 |
:1041B000E49F9001E59F300DF49F300D1124820F94 |
:1041C000931F9093290280932802E0916E05FF27A8 |
:1041D000EE0FFF1FDF01AF5BBA4F8D919C91E95A43 |
:1041E000FA4F20813181FC01E69FC001E79F900DCD |
:1041F000F69F900D1124B901649F9001659F300DC9 |
:10420000749F300D1124820F931F90932B02809383 |
:104210002A02E0917005FF27EE0FFF1FEF5BFA4FB8 |
:1042200080819181909581959F4F90932D028093ED |
:104230002C0210918501612F772767FD7095872FDC |
:10424000972F0E94842B17FF06C020E030E040E843 |
:1042500053E40E94DF2A20E030E040E251E40E9473 |
:10426000DF2A20E030E040E85BE30E94FE2B5B01A8 |
:104270006C016093B7057093B8058093B90590936E |
:10428000BA0510918601612F772767FD7095872FFA |
:10429000972F0E94842B17FF06C020E030E040E8F3 |
:1042A00053E40E94DF2A20E030EE4BE257E40E9404 |
:1042B000212B6093AE057093AF058093B00590936A |
:1042C000B1058091750582FF0CC080E090E0A0E010 |
:1042D000B0E08093AE059093AF05A093B005B09386 |
:1042E000B10520E030E040E050E0C601B5010E9499 |
:1042F0008E2B882364F480E090E0A0E0B0E080930F |
:10430000B7059093B805A093B905B093BA0520E01E |
:1043100030E040E050E06091AE057091AF058091D3 |
:10432000B0059091B1050E948E2B882364F480E043 |
:1043300090E0A0E0B0E08093AE059093AF05A0932D |
:10434000B005B093B10580911D02882321F1109230 |
:104350002D0210922C021092290210922802109223 |
:104360002B0210922A028DEC9CECACECBDE3809306 |
:10437000B7059093B805A093B905B093BA058AE044 |
:1043800097EDA3EABBE38093AE059093AF05A093AE |
:10439000B005B093B1058091C6019091C7018D54CD |
:1043A000914008F4BCC02091EB013091EC014091A8 |
:1043B000ED015091EE018091E7019091E801A0910B |
:1043C000E901B091EA01B901681B790B70934702CA |
:1043D000609346022091F3013091F4014091F50180 |
:1043E0005091F6018091EF019091F001A091F101BF |
:1043F000B091F201281B390B3093450220934402FF |
:104400001092C7011092C601673A710534F080918D |
:10441000D7019091D801019608C06A557F4F4CF49E |
:104420008091D7019091D80101979093D801809302 |
:10443000D701273A310534F08091D9019091DA0102 |
:10444000019608C02A553F4F4CF48091D9019091B4 |
:10445000DA0101979093DA018093D90180910F02DC |
:1044600090911002A0911102B0911202873A910529 |
:10447000A105B1054CF08091DB019091DC01019721 |
:104480009093DC018093DB0180910F0290911002E8 |
:10449000A0911102B09112028A559F4FAF4FBF4FAA |
:1044A0004CF48091DB019091DC0101969093DC014A |
:1044B0008093DB0110927A008091E7019091E801EE |
:1044C000A091E901B091EA018093FF01909300026D |
:1044D000A0930102B09302028091EF019091F0014C |
:1044E000A091F101B091F20180930702909308022C |
:1044F000A0930902B0930A028091F7019091F8010C |
:10450000A091F901B091FA0180930F0290931002EB |
:10451000A0931102B09312028FEE80937A00609103 |
:10452000E7017091E8018091E9019091EA01A09082 |
:104530008105BB24CC24DD24E090B205F090B305C6 |
:10454000A60195010E94082D0027F7FC0095102F69 |
:104550002E193F09400B510BCA01B90120E130E08F |
:1045600040E050E00E94082D39014A0120934C029E |
:1045700030934D0240934E0250934F026091EF01F1 |
:104580007091F0018091F1019091F201E090BB05F2 |
:10459000F090BC05A60195010E94082D0027F7FCAC |
:1045A0000095102F2E193F09400B510BCA01B9017C |
:1045B00020E130E040E050E00E94082D20934802C6 |
:1045C0003093490240934A0250934B02F5EF6F1625 |
:1045D000F1E07F06F0E08F06F0E09F062CF084EF1C |
:1045E00091E0A0E0B0E00DC06CE066166EEF7606DC |
:1045F0006FEF86066FEF960664F48CE09EEFAFEFE8 |
:10460000BFEF80934C0290934D02A0934E02B09363 |
:104610004F02253F71E0370770E0470770E057070A |
:104620002CF084EF91E0A0E0B0E009C02C503E4FA8 |
:104630004F4F5F4F64F48CE09EEFAFEFBFEF80937E |
:10464000480290934902A0934A02B0934B02109201 |
:104650007A008091FB019091FC01A091FD01B09145 |
:10466000FE0120914C0230914D0240914E0250913A |
:104670004F02821B930BA40BB50B8093FB0190930D |
:10468000FC01A093FD01B093FE0180910302909183 |
:104690000402A0910502B0910602209148023091D7 |
:1046A000490240914A0250914B02821B930BA40B8A |
:1046B000B50B8093030290930402A0930502B0937C |
:1046C000060280912C0290912D025C01CC24B7FC53 |
:1046D000C094DC2CA0925002B0925102C0925202BF |
:1046E000D092530297FF03C0909581959F4F849776 |
:1046F0003CF08091750584FD03C081E08093390210 |
:1047000060900B0270900C0280900D0290900E024F |
:10471000C501B7FE03C0909581959F4F7C0100278E |
:10472000F7FC0095102F20917E053327442755274D |
:10473000C601B5010E94A02C9B01AC01C801B701C4 |
:104740000E94A02C20E031E040E050E00E94082DC3 |
:10475000442737FD4095542F621A730A840A950A3C |
:1047600060920B0270920C0280920D0290920E02E7 |
:1047700080910B0290910C02A0910D02B0910E025B |
:1047800081539547A040B04064F080E395E7A0E0F6 |
:10479000B0E080930B0290930C02A0930D02B093B3 |
:1047A0000E0280910B0290910C02A0910D02B0912B |
:1047B0000E02805D9A48AF4FBF4F64F480ED9AE8D7 |
:1047C000AFEFBFEF80930B0290930C02A0930D020A |
:1047D000B0930E028FEE80937A0080911702909131 |
:1047E0001802892B09F4A1C08091750583FF9DC033 |
:1047F0006091E7017091E8018091E9019091EA01EF |
:1048000020E032E040E050E00E94082D890137FFAF |
:1048100003C0109501951F4F6091EF017091F00159 |
:104820008091F1019091F20120E032E040E050E00F |
:104830000E94082DB90137FF03C0709561957F4F25 |
:10484000601771070CF4B80169317105A4F4809107 |
:104850003902882381F08091370290913802892BA8 |
:1048600051F4809117029091180290931A0280934C |
:10487000190210923902209184013327629FC001EE |
:10488000639F900D729F900D112460E470E00E9470 |
:10489000D32CA901461B570B141615060CF03FC06C |
:1048A00010927A002091370230913802211531059B |
:1048B00061F500910B0210910C0220910D023091D4 |
:1048C0000E0280911B0290911C02BC01649FC001EA |
:1048D000659F900D749F900D112460E270E00E941E |
:1048E000D32C882777FD8095982F060F171F281F38 |
:1048F000391F00930B0210930C0220930D0230938A |
:104900000E028FEE80937A0010C08FEE80937A00B3 |
:1049100021503040309338022093370206C084EF94 |
:1049200091E090933802809337028091750585FF5E |
:1049300011C08091330299279093A3028093A20221 |
:104940008091340299279093A5028093A4020E943B |
:104950002A2908C010928D0210928C0210928F02A8 |
:1049600010928E028091E9048F5F8093E904809118 |
:104970003A02815080933A028F3F09F068C081E388 |
:1049800080933A026091E7017091E8018091E9011A |
:104990009091EA01E0908105FF2400271127A801EA |
:1049A00097010E94082D3093EB042093EA04609154 |
:1049B000EF017091F0018091F1019091F201A80155 |
:1049C00097010E94082D3093ED042093EC04809110 |
:1049D000B2059091B3059093EF048093EE0480911B |
:1049E000BB059091BC059093F1048093F0048091F5 |
:1049F000B5059091B6059093F3048093F2048091ED |
:104A00002F02909130029093F5048093F40460910A |
:104A1000130270911402809115029091160220E009 |
:104A200032E040E050E00E94082D3093F7042093DC |
:104A3000F60489819A819093F9048093F804809117 |
:104A40001702909118029093FB048093FA046091EE |
:104A5000E7017091E8018091E9019091EA012090CD |
:104A6000AE053090AF054090B0055090B105E09094 |
:104A7000A905F090AA056090B7057090B8058090E0 |
:104A8000B9059090BA050E94842BA20191010E9461 |
:104A9000FE2B5B016C010027F7FC0095102FC8016D |
:104AA000B7010E94842BA40193010E94FE2B9B015D |
:104AB000AC01C601B5010E94DF2A0E94672B7093EA |
:104AC000AA056093A9056091EF017091F0018091B2 |
:104AD000F1019091F201E090A705F090A8050E94E5 |
:104AE000842BA20191010E94FE2B5B016C01002727 |
:104AF000F7FC0095102FC801B7010E94842BA40178 |
:104B000093010E94FE2B9B01AC01C601B5010E94DE |
:104B1000DF2A0E94672B7093A8056093A705609118 |
:104B2000B5057091B605A090F701B090F801C0905E |
:104B3000F901D090FA01882777FD8095982F0E947F |
:104B4000842B7B018C0120E030E040E05FE3C40176 |
:104B5000B3010E94FE2B9B01AC01C801B7010E946A |
:104B6000FE2B7B018C01C601B5010E94842BA201A2 |
:104B700091010E94FE2B9B01AC01C801B7010E946C |
:104B8000DF2A0E94672B7093B6056093B50580916C |
:104B9000A9059091AA058150984034F080E098E0F2 |
:104BA0009093AA058093A9058091A9059091AA05E3 |
:104BB0008050984F34F480E098EF9093AA0580934A |
:104BC000A9058091A7059091A8058150984034F0DF |
:104BD00080E098E09093A8058093A7058091A705B1 |
:104BE0009091A8058050984F34F480E098EF90930E |
:104BF000A8058093A7058091B5059091B6058150D1 |
:104C0000984034F080E098E09093B6058093B50525 |
:104C10008091B5059091B6058050984F34F480E0AE |
:104C200098EF9093B6058093B50580917505992707 |
:104C300080FFCDC02091810181FF0EC02233B0F4EE |
:104C400080912F029091300244979093320280938A |
:104C5000310210921E020DC080917A05289FC0017A |
:104C600011244497909332028093310281E0809323 |
:104C70001E0280911D02882321F0109232021092B0 |
:104C8000310220912F023091300240913102509137 |
:104C90003202421753070CF09AC080911E028823FB |
:104CA00009F495C0241B350B809182019927BC0122 |
:104CB000269FC001279F900D369F900D112460E123 |
:104CC00070E00E94D32C09811A81061B170B2091DA |
:104CD000C4013091C501809180019927FC012E9F6C |
:104CE000C0012F9F900D3E9F900D112468E070E051 |
:104CF0000E94D32C061B170B6091130270911402B3 |
:104D0000809115029091160220E032E040E050E0E0 |
:104D10000E94082DCA01B90120918301332744273D |
:104D200055270E94A02C20E230E040E050E00E9495 |
:104D3000082DFFEF2E3C3F0714F42EEC3FEF80913F |
:104D40003B0290913C02AC0174E0440F551F7A95F0 |
:104D5000E1F7481B590B2333310514F022E330E00F |
:104D6000021B130BCA01800F911F60E170E00E94CB |
:104D7000D32C70933C0260933B0280917605992777 |
:104D8000681779078CF429813A81281739072CF0A4 |
:104D900090933C0280933B0207C049815A81509313 |
:104DA0003C0240933B020DC080913B0290913C023B |
:104DB00069817A816817790724F470933C026093C3 |
:104DC0003B0280913B0290913C029A838983C09080 |
:104DD000B505D090B6058091500290915102C81A45 |
:104DE000D90A95E6C916D10424F064E6C62ED12C62 |
:104DF00009C0ECE9CE16EFEFDE0624F45CE9C52E1F |
:104E00005FEFD52E409078015090790160907A0143 |
:104E100070907B016091A9057091AA0520912802EC |
:104E20003091290240918C0250918D02241B350B48 |
:104E3000621B730B882777FD8095982F0E94842B27 |
:104E40009B01AC01C301B2010E94FE2B0E94672BA3 |
:104E500070939902609398028091980290919902C0 |
:104E60008C01222717FD2095322F809158029091B6 |
:104E70005902A0915A02B0915B02080F191F2A1F14 |
:104E80003B1F009358021093590220935A0230930B |
:104E90005B021016110612061306ACF4C80117FFC8 |
:104EA00003C0909581959F4F60E071E00E94D32CE4 |
:104EB0006F5F7F4F882777FD8095982F061B170B14 |
:104EC000280B390B14C0C80117FF03C090958195BA |
:104ED0009F4F60E071E00E94D32C6F5F7F4F882767 |
:104EE00077FD8095982F060F171F281F391F0093F5 |
:104EF00058021093590220935A0230935B0280911A |
:104F0000580290915902A0915A02B0915B028138E7 |
:104F1000FEE39F07F0E0AF07F0E0BF072CF080E86A |
:104F20009EE3A0E0B0E009C08058914CAF4FBF4F66 |
:104F300064F480E891ECAFEFBFEF80935802909358 |
:104F40005902A0935A02B0935B026091980270914B |
:104F5000990280907C0190907D01A0907E01B0909C |
:104F60007F01882777FD8095982F0E94842B7B01F5 |
:104F70008C01609158027091590280915A0290916F |
:104F80005B020E94842B9B01AC01C501B4010E940D |
:104F9000FE2B9B01AC01C801B7010E94DF2A0E94D1 |
:104FA000672B9601260F371F49815A81240F351F21 |
:104FB00022244A30510514F441E0242E37FD02C06A |
:104FC000222019F040E050E008C08091B405482F3D |
:104FD0005527241735070CF4A9018091AB05E82F5C |
:104FE000FF27FC83EB839F01E417F5070CF49A017C |
:104FF0002093960229813A81261B370BB9016C0D4B |
:105000007D1D77FD02C0222019F080E090E007C0EE |
:105010008091B4059927681779070CF4CB012B818F |
:105020003C81281739070CF49C012093970260916A |
:10503000A7057091A80520912A0230912B0240917A |
:105040008E0250918F02241B350B621B730B882735 |
:1050500077FD8095982F0E94842B9B01AC01C301A2 |
:10506000B2010E94FE2B0E94672B70939502609301 |
:10507000940280919402909195028C01222717FD51 |
:105080002095322F8091540290915502A0915602A2 |
:10509000B0915702080F191F2A1F3B1F009354029B |
:1050A00010935502209356023093570210161106A2 |
:1050B00012061306ACF4C80117FF03C09095819542 |
:1050C0009F4F60E071E00E94D32C6F5F7F4F882775 |
:1050D00077FD8095982F061B170B280B390B14C0F2 |
:1050E000C80117FF03C0909581959F4F60E071E064 |
:1050F0000E94D32C6F5F7F4F882777FD8095982F74 |
:10510000060F171F281F391F0093540210935502D2 |
:105110002093560230935702809154029091550289 |
:10512000A0915602B091570281383EE3930730E0D8 |
:10513000A30730E0B3072CF080E89EE3A0E0B0E0E6 |
:1051400009C08058914CAF4FBF4F64F480E891EC98 |
:10515000AFEFBFEF8093540290935502A093560295 |
:10516000B09357026091940270919502882777FD61 |
:105170008095982F0E94842B7B018C0160915402B2 |
:105180007091550280915602909157020E94842B93 |
:105190009B01AC01C501B4010E94FE2B9B01AC0137 |
:1051A000C801B7010E94DF2A0E94672B29813A813A |
:1051B000260F371F2C193D0937FD02C0222019F098 |
:1051C00040E050E008C08091B405482F55272417CF |
:1051D00035070CF4A9012B813C81241735070CF409 |
:1051E0009A012093A60289819A81861B970BBC01A4 |
:1051F0006C197D0977FD02C0222019F020E030E013 |
:1052000008C08091B405282F3327621773070CF468 |
:105210009B018B819C81821793070CF4C9018093B9 |
:105220009A0224960FB6F894DEBF0FBECDBFDF9171 |
:10523000CF911F910F91FF90EF90DF90CF90BF9093 |
:10524000AF909F908F907F906F905F904F903F9026 |
:105250002F9008956F927F928F929F92AF92BF92FC |
:10526000CF92DF92EF92FF920F931F9380911F02D4 |
:1052700090912002181619060CF078C18091220531 |
:10528000882309F473C180918A0190918B01892B45 |
:10529000D1F180910A0590910B05A0910C05B09178 |
:1052A0000D0580935C0290935D02A0935E02B09323 |
:1052B0005F0280910E0590910F05A0911005B091AD |
:1052C00011058093600290936102A0936202B093F3 |
:1052D00063028091120590911305A0911405B0917D |
:1052E00015058093640290936502A0936602B093C3 |
:1052F000670282E390E09093AC018093AB0110923F |
:105300008B0110928A01A090A202B090A30260913A |
:1053100064027091650280916602909167026E5FEF |
:105320007F4F8F4F9F4F20915C0230915D024091E3 |
:105330005E0250915F02E2E0EE2EF12C012D112D64 |
:105340002E253F254027512762277327842795273D |
:105350000E94842B0E94462C3B014C016091120557 |
:105360007091130580911405909115056E5F7F4F24 |
:105370008F4F9F4F20910A0530910B0540910C05EE |
:1053800050910D052E253F25402751276227732771 |
:10539000842795270E94842B0E94462C9B01AC01F8 |
:1053A000C401B3010E94DE2A7B018C01CC24B7FC2E |
:1053B000C094DC2CC601B5010E94842B9B01AC017A |
:1053C000C801B7010E94FE2B20E030E040E251E42A |
:1053D0000E94212B0E94672B3B014C0160936A02C3 |
:1053E00070936B0280936C0290936D022091A202E5 |
:1053F0003091A3026091600270916102809162021B |
:1054000090916302E0900E05F0900F050091100559 |
:10541000109111056E197F09800B910B442737FD00 |
:105420004095542F0E94A02C2AE030E040E050E04C |
:105430000E94082D59016A0120936E0230936F0279 |
:1054400040937002509371026091A4027091A50282 |
:10545000882777FD8095982F2091160530911705A4 |
:1054600040911805509119050E94A02C2DEF3FEF97 |
:105470004FEF5FEF0E94082D79018A0120937A0295 |
:1054800030937B0240937C0250937D026091A40292 |
:105490007091A502882777FD8095982F20911A0595 |
:1054A00030911B0540911C0550911D050E94A02CB8 |
:1054B0002DEF3FEF4FEF5FEF0E94082D20937E020C |
:1054C00030937F024093800250938102B3016E0DAE |
:1054D0007F1D70938D0260938C022A0D3B1D3093CB |
:1054E0008F0220938E0280918C0190918D018617FE |
:1054F00097072CF480918C0190918D0111C08091BF |
:105500008C0190918D01909581959F4F6817790737 |
:105510005CF480918C0190918D01909581959F4FC5 |
:1055200090938D0280938C0280918C0190918D01DB |
:10553000821793072CF480918C0190918D0111C0FA |
:1055400080918C0190918D01909581959F4F2817A6 |
:105550003907D4F480918C0190918D0190958195BB |
:105560009F4F90938F0280938E020EC085E090E053 |
:1055700090938B0180938A0110928D0210928C027D |
:1055800010928F0210928E021F910F91FF90EF9058 |
:10559000DF90CF90BF90AF909F908F907F906F9053 |
:1055A0000895FC014150504030F001900616D1F7AB |
:1055B0003197CF0108958827992708955058192EBB |
:1055C000EFD001D0D2C0BA176207730784079507DE |
:1055D000B1F188F40EF410940B2EBA2FA02D062EE4 |
:1055E000622F202D072E732F302D082E842F402D53 |
:1055F000092E952F502DFF275523B9F0591B49F03F |
:10560000573E98F0469537952795A795F0405395C6 |
:10561000C9F776F0BA0F621F731F841F30F48795A5 |
:1056200077956795B795F040939517FA0F2E0895E3 |
:10563000BF1BBB27BA0B620B730B840BF6CFDEF6D6 |
:10564000DBC0AED001D091C0552359F0992369F049 |
:105650009F575F57951B33F442F4903811F49158DB |
:1056600005C09BC091589F3F09F4C6C0BB271124B9 |
:1056700062177307840730F4660F771F881FBB1FFC |
:10568000915098F311D00F920FD00F920DD0A0E847 |
:105690002617370748071B0609F0A048BA2F602DC8 |
:1056A0007F918F9100240895A0E80024621773076A |
:1056B0008407B10528F0621B730B840BB1090A2A19 |
:1056C000660F771F881FBB1FA69581F7089597FB6C |
:1056D00073D09F3738F0FEE9F91B982F872F762F6C |
:1056E0006B2F05C086C09695879577956795F15085 |
:1056F000D0F73EF490958095709561957F4F8F4FD0 |
:105700009F4F0895E89403C097FB0EF4F3DFB62F84 |
:10571000672F782F892F9EE9002427C00ED05EF0D6 |
:1057200004C00BD026F001C008D019F020F48FEF90 |
:10573000089580E0089581E0089597FB092E0526DD |
:1057400000F8689430D0E89407FC07C0621773072C |
:105750008407950721F008F400940794989408951D |
:105760009A95BB0F661F771F881F11249923A1F0FC |
:105770008823B2F79F3F59F0BB0F48F421F4002073 |
:1057800011F460FF04C06F5F7F4F8F4F9F4F881FE2 |
:105790009795879597F908952CC09FEF80EC089511 |
:1057A000052E092607FA440F551F5F3F79F0AA27F7 |
:1057B000A51708F051E04795880F991F9F3F31F0DA |
:1057C000BB27B91708F091E0879508959F919F91A5 |
:1057D0001124E3CF97FB880F991F9F3F31F0BB2720 |
:1057E000B91708F091E0879508959F919F91112432 |
:1057F000D4CF66277727882799270895D1DF01D04E |
:10580000B4CF992339F0552329F09F575F57950F4F |
:1058100013F49AF1F1CF91589F3FE1F3629FA12DCC |
:105820000F92BB27639FA00DB11DEE27729FA00DA5 |
:10583000B11DEE1FAF93AA27649FB00DE11D739FAA |
:10584000B00DE11DAA1F6627829FB00DE11DA61FA6 |
:105850005527749FE00DA11D551F839FE00DA11DCD |
:10586000561F849FA00D511D852F7A2F6E2F1F90DC |
:105870000F9088231AF4939539F48FCF000C111CE4 |
:10588000BB1F661F771F881F0128089597FD85CFCE |
:10589000992309F40895482F9DDFF92FFF57F595B7 |
:1058A0009F1B9F1BFF9361DFFF92EF92DF92CF92CE |
:1058B000BF92AF929F928F926B017C0140584795A7 |
:1058C0003327222740685FE3B601C70149015A0127 |
:1058D0000E94212B9401A5010E94DF2A4FEF5FEF68 |
:1058E00013D09B01AC0182169306A406B50661F79E |
:1058F0008F909F90AF90BF90CF90DF90EF90FF90F0 |
:105900005F9168DF950F31CF65DF992359F0AA27A2 |
:10591000940FA51F43F032F04FEF50E09417A50706 |
:1059200014F423CF66CF0EF006C000C09FEF80E8CE |
:1059300070E060E008959FE780E870E060E008951F |
:10594000629FD001739FF001829FE00DF11D649F63 |
:10595000E00DF11D929FF00D839FF00D749FF00DEF |
:10596000659FF00D9927729FB00DE11DF91F639F90 |
:10597000B00DE11DF91FBD01CF0111240895AA1B2F |
:10598000BB1B51E107C0AA1FBB1FA617B70710F02A |
:10599000A61BB70B881F991F5A95A9F7809590955C |
:1059A000BC01CD01089597FB092E07260AD077FD8B |
:1059B00004D0E5DF06D000201AF4709561957F4F82 |
:1059C0000895F6F7909581959F4F0895A1E21A2EBC |
:1059D000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1F93 |
:1059E000A217B307E407F50720F0A21BB30BE40BE3 |
:1059F000F50B661F771F881F991F1A9469F760952A |
:105A00007095809590959B01AC01BD01CF010895E3 |
:105A100097FB092E05260ED057FD04D0D7DF0AD0FC |
:105A2000001C38F450954095309521953F4F4F4FCD |
:105A30005F4F0895F6F790958095709561957F4F2B |
:105A40008F4F9F4F0895F999FECFB2BDA1BDF89A2F |
:105A5000119600B40895F999FECFB2BDA1BD00BC66 |
:105A600011960FB6F894FA9AF99A0FBE0895FFCFDF |
:105A700001640A016400007D0000FF0301020304C9 |
:105A800005060708090A48616C6C6F2057656C743D |
:105A90000000000000000000000000000000000006 |
:105AA00000000000000000000000000000000000F6 |
:105AB00000000000000000000000000000000000E6 |
:105AC00000000000000000000000000000000000D6 |
:105AD0000000000000000A014B616D65726100006A |
:105AE0004E6F726D616C00000000803F17B7D138B7 |
:0E5AF00030FB103A403296020A640500230093 |
:00000001FF |
/branches/GPS_BETA_chris2798_hallo2/GPS.c |
---|
0,0 → 1,89 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 08.2007 by Christopher Hartmann / Daniel Schmitz |
// + |
// + Bitte die read_me Datei beachten! Es handelt sich hierbei um eine erste Probeversion! |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "math.h" |
// GPS feste Variablen++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//volatile int loop = 0; |
//long gps_northing = 0, gps_easting = 0, gps_altitude = 0; |
long target_x = 0, target_y = 0, target_z = 0; |
volatile int alpha = 0; |
long zwn = 0, zwe = 0, zwn1 = 0, zwe1 = 0, zwn2 = 0, zwe2 = 0; |
volatile int gps_getpos = 5; |
long gps_home_x = 0; |
long gps_home_y = 0; |
// GPS Einstellungen +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
volatile int komp_dreh = 0; // verdrehten Kompasseinbau kompensieren (+/-Grad) |
volatile int gpsmax = 35; //maximal zulässiger "GPS-Steuerausschlag" |
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
signed int GPS_Nick = 0; |
signed int GPS_Roll = 0; |
void gps_main(void) |
{ |
/* |
if (MotorenEin = 1 && gps_gethome == 0 && actualPos.state != 0){ //speichert GPS-Home-Position |
gps_home_x = actualPos.x; |
gps_home_y = actualPos.y; |
beeptime = 80; |
gps_gethome = 1; |
}*/ |
if (Poti1>0 && actualPos.state != 0){ //Beginn GPS-Position-Hold |
if (gps_getpos != 0){ //Postion mit Schalter loggen |
target_x = actualPos.x; |
target_y = actualPos.y; |
target_z = actualPos.z; |
beeptime = 50; |
gps_getpos = 0;} |
//Regler ########################################################################################################################## |
//P-Regler |
zwn = ((sqrt(target_x^2+target_z^2)-sqrt(actualPos.x^2+actualPos.z^2))*gps_p)/10; //8 |
zwe = ((target_y-actualPos.y)*gps_p)/10; |
//D-Regler |
zwn2= (gps_d*actualPos.vx)/-3; //-2 |
zwe2= (gps_d*actualPos.vy)/-3; |
GPS_Nick = (zwn+zwn2); // skal; |
GPS_Roll = (zwe+zwe2); // skal; |
//GPS-Mixer######################################################################################################################## |
if (GPS_Nick>gpsmax){GPS_Nick=gpsmax;} else if (GPS_Nick<(-1*gpsmax)){GPS_Nick=(-1*gpsmax);} //min-max Wert überprüfen |
if (GPS_Roll>gpsmax){GPS_Roll=gpsmax;} else if (GPS_Roll<(-1*gpsmax)){GPS_Roll=(-1*gpsmax);} |
/* |
//Rotationsmatrix################################################################################################################## |
//Kompass ++++++++++++++++++++++++++++ |
alpha=0; |
alpha = komp_dreh+KompassValue; |
if (KompassValue>300) {beeptime=50;} |
if (alpha>359) {alpha=alpha-360;} |
GPS_Nick=(sin(alpha)*GPS_Roll+cos(alpha)*GPS_Nick); |
GPS_Roll=(cos(alpha)*GPS_Roll-sin(alpha)*GPS_Nick); |
*/ |
}else { |
gps_getpos=5; |
GPS_Nick=0; |
GPS_Roll=0; |
} |
} |
/branches/GPS_BETA_chris2798_hallo2/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/GPS_BETA_chris2798_hallo2/V0.71_Beta_HEX/Flight-Ctrl_MEGA644_V0_71.hex |
---|
0,0 → 1,1556 |
:100000000C94EC010C9409020C9409020C94090262 |
:100010000C9409020C9409020C9409020C94090234 |
:100020000C9409020C942D0C0C9409020C940902F6 |
:100030000C94FE140C9409020C9409020C9409020D |
:100040000C9409020C9409020C94840B0C94090280 |
:100050000C945D040C9409020C94A5030C94090201 |
:100060000C94190D0C9409020C944B140C94090275 |
:100070000829573F9F2D49CBA5310F76C73493F2FE |
:100080007E37D00D013AB60B613D2AAAAB3F000086 |
:10009000003F800000000A0A0D004E657574726111 |
:1000A0006C0048656164696E67486F6C64000A0D96 |
:1000B000537465756572756E673A20004F4B0A0D73 |
:1000C000000A0D4162676C65696368204C7566744F |
:1000D000647275636B73656E736F722E2E000A0DFA |
:1000E00042656E75747A6520506172616D657465E4 |
:1000F000727361747A202564000A0D496E69742E4A |
:1001000020454550524F4D3A2047656E65726965EE |
:1001100072652044656661756C742D506172616D05 |
:10012000657465722E2E2E000A0D3D3D3D3D3D3D10 |
:100130003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DEF |
:100140003D3D3D3D3D3D3D3D000A0D466C696768C6 |
:1001500074436F6E74726F6C205625642E25642074 |
:10016000002E0052616E67653A2533692D2533698B |
:10017000005374656C6C756E673A202533690053C3 |
:100180006574706F696E7420202533690053657241 |
:10019000766F202000506F7469343A20202533692F |
:1001A00000506F7469333A202025336900506F7412 |
:1001B00069323A202025336900506F7469313A2042 |
:1001C000202533690053746172743A202020202066 |
:1001D000253569004D657373776572743A20202563 |
:1001E0003569005269636874756E673A2020253559 |
:1001F00069004B6F6D7061737320202020202020D8 |
:1002000000456D70662E506567656C3A253569004E |
:100210005370616E6E756E673A202025356900480F |
:100220006F63682025346920282533692900526FBF |
:100230006C6C20253469202825336929004E6963B8 |
:100240006B20253469202825336929004143432048 |
:100250002D2053656E736F720047696572202534D7 |
:100260006920282533692900526F6C6C2025346978 |
:10027000202825336929004E69636B2025346920C5 |
:100280002825336929004779726F202D2053656E28 |
:10029000736F720050333A25346920204B616EE44D |
:1002A0006C65200050313A253469202050323A25BF |
:1002B0003469200047733A253469202047693A257C |
:1002C000346920004E693A2534692020526F3A255E |
:1002D000346920004B373A25346920204B616EE4A5 |
:1002E0006C6520004B353A25346920204B363A2581 |
:1002F000346920004B333A25346920204B343A25A9 |
:10030000346920004B313A25346920204B323A259C |
:10031000346920004B6F6D706173733A2020202583 |
:10032000356900526F6C6C3A202020202020253542 |
:1003300069004E69636B3A20202020202025356912 |
:1003400000616B742E204C6167650048F668656E2D |
:10035000726567656C756E67004B65696E65200038 |
:100360004F66662020202020203A20253569004C49 |
:10037000756674647275636B3A2025356900536F36 |
:100380006C6C486F6568653A2025356900486F6573 |
:1003900068653A202020202025356900286329201F |
:1003A000486F6C676572204275737300536574748F |
:1003B000696E673A20256420005625642E25640066 |
:1003C0002B2B204D696B726F4B6F70746572202BF5 |
:1003D0002B005B25695D000011241FBECFEFD0E12B |
:1003E000DEBFCDBF11E0A0E0B1E0E8E9F0E602C079 |
:1003F00005900D92AA38B107D9F716E0AAE8B1E046 |
:1004000001C01D92AB30B107E1F70E9440020C948D |
:100410004B300C940000A2E0B0E00E943730802DF9 |
:1004200099270895FB01282F863008F025E0842FB6 |
:100430009927429FD0011124AC59BF4F019724F056 |
:1004400001900E943F30FACFA2E0B0E0022E0E945D |
:100450003F300895CF93DF93FB01C42FDD27863013 |
:1004600008F085E0489FD0011124AC59BF4F219777 |
:1004700024F00E9437300192FACFDF91CF91089596 |
:100480000F931F93CF93DF9391E097B98FEF88B9C4 |
:100490008BE184B995B98EE38AB9579A87EF8BB906 |
:1004A00084B7877F84BF80916000886180936000FB |
:1004B0001092600080ED97E09093A8018093A701CF |
:1004C000109233021092320210929405109293050A |
:1004D000109231021092300210922F0210922E02CE |
:1004E00028980E94DA0C0E944C070E94E9140E948E |
:1004F000130D0E943114789410924E048CE3809373 |
:100500004F0484E0809350048CE390E09F938F939A |
:100510001F921F9289E491E09F938F931F920E94F4 |
:10052000E20888E291E09F938F931F920E94E20875 |
:10053000299AA1E0B0E00E943730802D2DB73EB758 |
:10054000265F3F4F0FB6F8943EBF0FBE2DBF8B33D3 |
:10055000A9F189EF90E09F938F931F920E94E20888 |
:100560000E94B41C4AE36BEB75E080E00E9412022B |
:1005700001E00F900F900F90023049F40E94471C49 |
:100580004AE36BEB75E082E00E94120203E04AE36B |
:100590006BEB75E0802F0E9412020F5F063060F354 |
:1005A00081E022E030E0D901082E0E943F308BE349 |
:1005B00021503040D901082E0E943F3002E010E067 |
:1005C000D8010E943730802D4AE36BEB75E00E9422 |
:1005D0002A02D8010E943730802D99279F938F934C |
:1005E0008EED90E09F938F931F920E94E20880917E |
:1005F000C3050F900F900F900F900F9080FF20C0B9 |
:1006000081EC90E09F938F931F920E94E20884EC0C |
:1006100099E00E94180CEC010E943D100F900F9081 |
:100620000F90CE010E94210C8823D9F38CEB90E02F |
:100630009F938F931F920E94E2080F900F900F904C |
:100640000E946C1D289880ED97E09093A8018093FC |
:10065000A70188EE93E0909349048093480485E5D0 |
:10066000809343048EEA90E09F938F931F920E94A1 |
:10067000E2088091C3050F900F900F9082FF03C096 |
:1006800082EA90E002C08AE990E09F938F931F92E4 |
:100690000E94E2080F900F900F9086E990E09F93E0 |
:1006A0008F931F920E94E2080E9464100F900F9097 |
:1006B0000F908091A401882379F11092A4010E94E7 |
:1006C0007D1E0E94251D289880910101882319F024 |
:1006D00081508093010180912D02882329F080911F |
:1006E0002D02815080932D0220910401309105014B |
:1006F0008091D30599272817390734F480ED97E0C6 |
:100700009093A8018093A7018091D201882319F4C6 |
:100710000E94311401C028980E9469070E94D707DF |
:1007200080E090E00E94210C882319F2809134022D |
:10073000882329F088B190E1892788B901C04498BD |
:1007400084EF91E00E94180CB4CF1F920F920FB665 |
:100750000F9211248F939F93EF93FF938091000149 |
:100760008823E1F480919F019091A00101969093DC |
:10077000A00180939F01FC01ED5FFC4FE081ED3013 |
:1007800019F08639910539F41092A00110929F0159 |
:1007900081E080930001E093C60004C01092A001A4 |
:1007A00010929F01FF91EF919F918F910F900FBE3B |
:1007B0000F901F90189580912505813091F58091BB |
:1007C000150590911605A0911705B0911805809315 |
:1007D000580590935905A0935A05B0935B058091F5 |
:1007E000190590911A05A0911B05B0911C058093E5 |
:1007F0005C0590935D05A0935E05B0935F058091C5 |
:100800001D0590911E05A0911F05B09120058093B4 |
:10081000600590936105A0936205B0936305109203 |
:10082000250580914204813031F480913604809313 |
:1008300070051092420480917204813091F580918C |
:10084000620490916304A0916404B0916504809364 |
:10085000640590936505A0936605B0936705809144 |
:10086000660490916704A0916804B0916904809334 |
:10087000680590936905A0936A05B0936B05809114 |
:100880006A0490916B04A0916C04B0916D04809304 |
:100890006C0590936D05A0936E05B0936F05109253 |
:1008A000720480917005882339F0289A81E090E0E5 |
:1008B0009093D5028093D40208951F920F920FB6A1 |
:1008C0000F9211242F933F934F935F936F937F93D6 |
:1008D0008F939F93AF93BF93CF93DF93EF93FF9348 |
:1008E0008091C60080938E018091C00040918E015E |
:1008F000887109F005C18091A101843009F48AC092 |
:10090000853050F48130D1F0813098F0823001F19F |
:10091000833009F0F2C021C0863009F4ABC08630C4 |
:1009200008F48CC0873009F4D6C0883009F0E5C0DF |
:10093000D8C0453B09F0E8C081E003C0423621F44D |
:1009400082E08093A101E0C0453B09F4DDC0D5C041 |
:10095000413009F0D2C083E0F4CF409372054F5F7D |
:1009600040930203809102038F5F8093310484E0FF |
:100970008093A10180917205833031F0813161F162 |
:10098000813009F03FC014C082E394E090935D048D |
:1009900080935C0423E535E0309300032093FF024D |
:1009A000409690930A05809309058091420427C0E0 |
:1009B00081E195E090935D0480935C042AEC36E03D |
:1009C000309300032093FF02449690930A0580938E |
:1009D00009058091250513C08EE594E090935D0490 |
:1009E00080935C0427E136E0309300032093FF02FC |
:1009F000449690930A058093090580917204809330 |
:100A0000730582C081E08093730510920A051092ED |
:100A100009057AC0842F992790930C0580930B05C4 |
:100A200080910203840F809302038091310490919E |
:100A30000203890F8093310485E083CF20910B0559 |
:100A400030910C05842F9927982F8827280F391F5C |
:100A500030930C0520930B0580910203840F809343 |
:100A600002038091310490910203890F8093310435 |
:100A700086E067CF80910203840F80930203809108 |
:100A8000310490910203890F8093310480917305A2 |
:100A9000882381F4E0915C04F0915D048091FF0271 |
:100AA00090910003E817F90728F44193F0935D044F |
:100AB000E0935C0480910B0590910C050197909355 |
:100AC0000C0580930B0580910B0590910C05892BEB |
:100AD000D9F487E036CF80910203481771F488E09B |
:100AE00030CF80913104481741F4E0910905F0912D |
:100AF0000A05309711F081E080831092A10104C0B3 |
:100B00001092A1010E94DB030E94DB0340919A0135 |
:100B1000463910F01092990180918E018D3009F0C4 |
:100B20005CC080919901823009F057C01092990100 |
:100B3000A42FBB27FD01EF58FB4F3081ED01CE58AC |
:100B4000DB4F288180919D0190919E01831B91092B |
:100B5000821B91099F7090939E0180939D019C013F |
:100B600096E0369527959A95E1F7235C20939C01B2 |
:100B7000982F9F73935C90939B018081281729F491 |
:100B80008881981711F491E006C0809191018F5FE0 |
:100B90008093910190E080918F01882309F064C0D7 |
:100BA000992309F461C081E080938F014093920101 |
:100BB000AD58BB4F8DE08C9380917504823509F060 |
:100BC00053C088E190E02CE00FB6F894A89580938C |
:100BD00060000FBE2093600047C080919901813072 |
:100BE000D9F0813018F08230E9F530C080918E0163 |
:100BF000833239F480918F01882319F481E0809346 |
:100C0000990180918E018093730481E080939A0111 |
:100C100080918E01992715C082E080939901E42F7D |
:100C2000FF2780918E01ED58FB4F80834F5F4093EB |
:100C30009A0120918E0180919D0190919E01820FD9 |
:100C4000911D90939E0180939D010EC0E42FFF277C |
:100C500080918E01ED58FB4F8083463938F3109216 |
:100C60009901E7CF10929901FF91EF91DF91CF9118 |
:100C7000BF91AF919F918F917F916F915F914F91B4 |
:100C80003F912F910F900FBE0F901F901895DC0190 |
:100C900020E030E040E050E0E3E0F3E005C0819187 |
:100CA000280F311D4F5F5F4F4A175B07C1F73F7039 |
:100CB000C90166E0969587956A95E1F7835CFD0129 |
:100CC000ED5FFC4F808311962F73235CFD01ED5F78 |
:100CD000FC4F2083AC5FBC4F8DE08C9310920001E1 |
:100CE000809103038093C6000895EF92FF920F93C3 |
:100CF0001F93CF93DF937A01722F93E290930303B4 |
:100D0000609304038093050303E010E060E0A6E035 |
:100D1000B3E046C0F701E60FF11D90816F5F71509F |
:100D200019F4E0E040E00FC0F701E60FF11D40814B |
:100D30006F5F715011F4E0E006C0F701E60FF11D9E |
:100D4000E0816F5F7150892F86958695835C8C93C7 |
:100D50005527892F99278370907024E0880F991F59 |
:100D60002A95E1F79A0194E0369527959A95E1F74F |
:100D7000822B835CED0189834F705070440F551FA7 |
:100D8000440F551F8E2F8295869586958370842BF0 |
:100D9000835C8A83EF73E35CEB830C5F1F4F1496D5 |
:100DA000772309F0B7CFC8010E944706DF91CF91A2 |
:100DB0001F910F91FF90EF9008950F931F93CF9382 |
:100DC000DF93EC01062F70E0A22FBB2712974AC0D9 |
:100DD000E42FFF27ED58FB4F30814F5FE42FFF27B3 |
:100DE000ED58FB4F50814F5FE42FFF27ED58FB4F2D |
:100DF00010814F5FE42FFF27ED58FB4F20814F5F9D |
:100E0000842F9927A817B90784F1701771F15D53E2 |
:100E1000FE01E70FF11D3D53330F330F852F8295F0 |
:100E20008F70382B3083613001F1912F9D537F5F9C |
:100E3000FE01E70FF11D71505295507F892F869565 |
:100E40008695582B508363506F3F79F07E5FFE018B |
:100E5000E70FF11D9295990F990F907C2D53922BCE |
:100E600090837F5F662309F0B3CFDF91CF911F910D |
:100E70000F9108951F93182F8A3019F48DE00E9466 |
:100E80003A078091C00085FFFCCF1093C60080E038 |
:100E900090E01F9108950895E1ECF0E088E18083EF |
:100EA000A0ECB0E08C9182608C938081806880831C |
:100EB0008081806480838AE28093C40088EC90E023 |
:100EC0000E94180C9093300480932F041092A1017B |
:100ED000089580910001882309F468C080918A01F7 |
:100EE000882371F080910001882351F02BE043E4C6 |
:100EF00054E06091010387E40E94750610928A0114 |
:100F000080912F04909130040E94210C882321F4B9 |
:100F100080918C018823B1F080910001882391F0A9 |
:100F200022E346E255E06091010384E40E947506E5 |
:100F300010928C018AEF90E00E94180C909330047C |
:100F400080932F0480918B018823F1F08091000120 |
:100F50008823D1F00E946D1010928B01809198012E |
:100F60008F5F80939801843011F4109298018091E2 |
:100F7000980144E1849FA00111244A5E5E4F24E160 |
:100F800060E0805D0E94750680918D01882371F07C |
:100F900080910001882351F02AE04EE454E06091F2 |
:100FA000010386E50E94750610928D0108951F9336 |
:100FB000CF93DF93CDB7DEB722970FB6F894DEBF9D |
:100FC0000FBECDBF80918F01882309F498C08FEFA9 |
:100FD0008093010180917504813760F48C3608F0AC |
:100FE0006FC0873609F440C08836F9F0833609F0BF |
:100FF00084C008C0843759F1863791F1813709F0F0 |
:101000007CC036C02091920143E06BE083E494E021 |
:101010000E94DD068091C90190914504892B80933F |
:10102000C90181E080938C0168C02091920143E066 |
:1010300062E0CE0101960E94DD068091C90199818E |
:10104000892B8093C90181E080938B0156C0209148 |
:10105000920143E064E084E991E00E94DD064DC026 |
:1010600081E080938D0149C081E080938A0145C071 |
:101070002091920143E062E0CE0101960E94DD06DC |
:1010800089818F3F89F0863010F085E089834AE3BB |
:101090006BEB75E089810E942A0289812AE34BEB80 |
:1010A00055E06091010308C0109101030E940B02FA |
:1010B0002AE34BEB55E0612F855B0E9475061DC04E |
:1010C0002091920143E06AE38BEB95E00E94DD06FC |
:1010D000809175044AE36BEB75E08B560E94120217 |
:1010E000809175048B56A2E0B0E0082E0E943F303C |
:1010F0000E940B0299270E94681E10928F0122966F |
:101100000FB6F894DEBF0FBECDBFDF91CF911F9118 |
:101110000895982F80917405813069F48091C801F9 |
:10112000E82FFF27EA5EFE4F90838F5F8093C80110 |
:1011300021E030E005C0892F0E943A07282F33278D |
:10114000C90108951F93182F04C080E30E948908E5 |
:1011500011501116D4F31F9108951F93182F04C036 |
:1011600080E20E94890811501116D4F31F9108954E |
:101170000F931F93CF93DF938C01EB0108C0F8010D |
:101180000F5F1F4FE4918E2F0E94890821972097AF |
:10119000B1F7DF91CF911F910F9108950F931F9396 |
:1011A000CF93DF938C01EB0106C0F80181918F0191 |
:1011B0000E94890821972097C1F7DF91CF911F9155 |
:1011C0000F9108952F923F924F925F926F927F926C |
:1011D0008F929F92AF92BF92CF92DF92EF92FF9247 |
:1011E0000F931F93CF93DF93CDB7DEB7E3970FB67F |
:1011F000F894DEBF0FBECDBF29968FAD299780939F |
:101200007405CE01855B9F4F9D838C832B968EAD9D |
:101210009FAD2B979FA78EA722243324210102C0C4 |
:10122000130124010EA51FA502C00F5F1F4FF80177 |
:10123000F490FF2019F0F5E2FF16B9F7B8018EA57A |
:101240009FA5681B790B11F00E94B808FF2009F4D4 |
:1012500042C20F5F1F4F1FA70EA71982AC81BD812D |
:101260001BAA1AAA9FEF99ABEEA5FFA5CF01019685 |
:101270009FA78EA7B49095E7B91621F08B2D8062B9 |
:10128000883789F4EBA9E0FF07C02D903D904D9081 |
:101290005C901397149607C08D919C9111971C0137 |
:1012A000442455241296F0E2BF1621F48981882344 |
:1012B000D9F685C083E2B81609F483C09AE2B9165C |
:1012C00021F0EDE2BE1669F408C0FD011296E0813E |
:1012D000EAABE7FFC9CFE195EAABFBA9F061FF7D7F |
:1012E00072C08BE2B81609F46AC09EE2B916B1F575 |
:1012F0002EA53FA52F5F3F4FEEA5FFA584918A3213 |
:1013000021F0B82E20E030E01BC0FD011296408194 |
:10131000518157FF02C04FEF5FEF49AB3FA72EA7A8 |
:10132000A3CFC90103E0880F991F0A95E1F7220FA7 |
:10133000331F280F391F2B0D311D20533040B4901F |
:1013400031968B2D80538A3060F3FFA7EEA7A90159 |
:1013500037FF02C04FEF5FEF49AB8DCFF0E3BF1611 |
:1013600031F48BA984FD80CF80628BAB7DCF8B2D38 |
:1013700081538930E8F420E030E0C901F3E0880FC0 |
:10138000991FFA95E1F7220F331F280F391F2B0DF4 |
:10139000311D20533040EEA5FFA5CF0101969FA738 |
:1013A0008EA7B4908B2D80538A3038F32AAB63CF4D |
:1013B00098E6B91651F4EBA9E460EBAB55CFB982CE |
:1013C00053CFFBA9F860FBAB4FCF8CE6B81621F4E6 |
:1013D0009BA991609BAB48CFBD83AC83E3E6BE166F |
:1013E00039F41296BD83AC8312978C918E8318C109 |
:1013F000F4E4BF1639F084E6B81639F099E6B91668 |
:1014000059F503C0EBA9E160EBABFBA9F0FF08C005 |
:101410001496BD83AC835E904E903E902E900AC091 |
:101420001296BD83AC839E918E911C01442437FC9F |
:101430004094542C57FC03C08AE088AB92C050946F |
:10144000409430942094211C311C411C511C8DE28D |
:1014500089839AE098AB85C0EFE4BE1629F0FFE6D9 |
:10146000BF1639F488E061C09BA991609BABE8E0AE |
:1014700056C0F0E7BF1671F41296BD83AC839E91FF |
:101480008E911C01442455248BA980648BAB78E792 |
:10149000B72E5EC0E3E7BE16D9F51296BD83AC83C6 |
:1014A000DE90CE90C114D10489F488E28E838EE65A |
:1014B0008F8385E788878CE689878A8789E28B878F |
:1014C0001C8666E0C62ED12CCC0EDD1EF9A9F7FDD8 |
:1014D00013C04F2F552747FD509560E070E0C601BF |
:1014E0000E94702D009711F419A90DC08C1919A92B |
:1014F00081174CF4182F07C0F60101900020E9F77E |
:1015000031971E2F1C1919824201310140E094C00D |
:1015100085E5B81631F095E7B91649F4EAE0E8AB8D |
:101520001FC0FBA9F160FBAB8AE088AB19C098E54E |
:10153000B91621F0E8E7BE1609F06EC0FBA9F3FD6D |
:1015400002C080E1F2CF211431044104510419F4A6 |
:1015500090E198AB05C0EBA9E064EBABF0E1F8AB30 |
:10156000198289A987FD03C09BA99F7D9BAB21148C |
:1015700031044104510461F4E9A9EE2349F46624DD |
:10158000772443015EE2C52ED12CCC0EDD1E3EC079 |
:101590004EE2C42ED12CCC0EDD1EF8A9EF2EFF2476 |
:1015A00000271127C201B101A80197010E94FA2F5B |
:1015B0006A3020F430E3A32EA60E08C027E5A22E41 |
:1015C000A60E88E5B81611F49FEDA922F601A292A5 |
:1015D0006F01C201B101A80197010E94FA2F3901E0 |
:1015E0004A012E143F044006510618F019012A0141 |
:1015F000D9CFF8A9F83051F48BA983FF07C090E345 |
:10160000A91621F080E3F60182936F01CE018C19B7 |
:10161000182F125D49A910C0BB2009F45CC0BE821E |
:1016200019824201310100E096E0C92ED12CCC0E86 |
:10163000DD1E11E021E005C0212F042F011B07FD55 |
:1016400000E08981882319F0812F8F5F07C09BA953 |
:1016500096FD02C0812F02C0822F8E5FA82EA00EA1 |
:10166000EBA9EE2EFF2480E3482E512C4E205F2064 |
:101670004114510421F48AA98A190E94AD08898174 |
:10168000882329F061E070E0CE01019609C0E6FEF2 |
:1016900009C080E38A83BB8262E070E0CE010296DB |
:1016A0000E94CE08F0E24F16510421F48AA98A194B |
:1016B0000E94A208802F0E94A208612F772767FD51 |
:1016C0007095C6010E94CE08E4FEAACD8AA98A19A7 |
:1016D0000E94AD08A5CDE3960FB6F894DEBF0FBE0D |
:1016E000CDBFDF91CF911F910F91FF90EF90DF90D1 |
:1016F000CF90BF90AF909F908F907F906F905F90B2 |
:101700004F903F902F9008951F920F920FB60F9217 |
:1017100011242F933F935F936F937F938F939F93A6 |
:10172000AF93BF938091AB0181508093AB018F3F0A |
:1017300001F589E08093AB01809103018F5F817097 |
:1017400080930301882319F481E08093A4018091A0 |
:10175000A2019091A30101969093A3018093A2010D |
:101760008091D201882329F08091D2018150809309 |
:10177000D2018091A7019091A801029758F0809121 |
:10178000A7019091A80101979093A8018093A701C8 |
:101790005A9A01C05A988091C30583FF3BC0349B7D |
:1017A0000AC08091A5019091A60101969093A6018F |
:1017B0008093A5012FC08091A5019091A601892B4E |
:1017C00079F08091A5019091A601805A9F4040F444 |
:1017D0008091A5019091A60190931E0280931D0215 |
:1017E00080911D0290911E0220911F0230912002D3 |
:1017F000821B930B845E9D4F68E671E00E94E72F89 |
:10180000845B904090932202809321021092A60163 |
:101810001092A501BF91AF919F918F917F916F9190 |
:101820005F913F912F910F900FBE0F901F901895D1 |
:101830002091A2013091A3012F5F3F4F820F931F90 |
:1018400008952091A2013091A301821B930B892F4F |
:10185000992786958074992708951F920F920FB645 |
:101860000F921124EF92FF920F931F932F933F93A8 |
:101870004F935F936F937F938F939F93AF93BF9398 |
:10188000CF93DF93EF93FF93809102018150809378 |
:1018900002018F3F09F073C083E88093B00080910C |
:1018A0008901C82FDD27D093AA01C093A901809197 |
:1018B000E105E090DD0580FF1EC06091ED017091B3 |
:1018C000EE018091EF019091F001FF240027112794 |
:1018D00020E830E040E050E00E941C30C801B70131 |
:1018E0000E94B42F20E032E040E050E00E941C3023 |
:1018F000C20FD31F1DC06091ED017091EE01809168 |
:10190000EF019091F001FF240027112720E830E03B |
:1019100040E050E00E941C30C801B7010E94B42F83 |
:1019200020E032E040E050E00E941C30C21BD30BAC |
:10193000D093AA01C093A9012091A9013091AA01D5 |
:101940008091DE0599272817390734F08091DF054B |
:1019500099278217930724F49093AA018093A901F1 |
:101960008091A9019091AA0190934D0580934C0517 |
:101970008093B3008091E0058093020104C083E06E |
:101980008093B0005F98FF91EF91DF91CF91BF916D |
:10199000AF919F918F917F916F915F914F913F9107 |
:1019A0002F911F910F91FF90EF900F900FBE0F900E |
:1019B0001F9018958091A2019091A3010B9690938E |
:1019C000AD018093AC0182E085BD83EA84BD17BC84 |
:1019D00088E788BD96E096BD83EC8093B000909335 |
:1019E000B100E0E7F0E0808182608083EEE6F0E025 |
:1019F0008081816080838AE08093B3001092B2007E |
:101A000008952091A2013091A3012F5F3F4F280F2D |
:101A1000391F8091A2019091A301A901481B590B84 |
:101A200057FFF7CF089510927C008FEE80937A00D5 |
:101A300008951F920F920FB60F921124EF92FF920A |
:101A40000F931F932F933F934F935F936F937F93C6 |
:101A50008F939F93AF93BF93CF93DF93EF93FF93B6 |
:101A600010927A004091C4014F5F4093C4014150ED |
:101A7000433009F41CC1443038F4413009F463C0E8 |
:101A8000423008F0B9C00DC0453009F450C14530AE |
:101A900008F42AC1463009F46FC1473009F0CBC2BF |
:101AA00052C22091D7013091D80180917800909155 |
:101AB0007900281B390B8091B2019091B301820FFC |
:101AC000931F9093B3018093B2018091BC018F5F0B |
:101AD0008093BC018091110290911202A091130297 |
:101AE000B0911402442737FD4095542F820F931F65 |
:101AF000A41FB51F8093110290931202A0931302AA |
:101B0000B09314028091150290911602A0911702D1 |
:101B1000B0911802820F931FA41FB51F8093150266 |
:101B200090931602A0931702B093180281E080935D |
:101B3000C5018091C2019091C30101969093C301A8 |
:101B40008093C2017CC2609178007091790080918D |
:101B5000D5019091D601681B790B80910902909173 |
:101B60000A02A0910B02B0910C029B01442737FDA1 |
:101B70004095542F820F931FA41FB51F8093090215 |
:101B800090930A02A0930B02B0930C0280910D0275 |
:101B900090910E02A0910F02B0911002820F931F3C |
:101BA000A41FB51F80930D0290930E02A0930F0205 |
:101BB000B093100280917800909179000A9710F408 |
:101BC00064E47DEF8091780090917900895E934084 |
:101BD00010F06CEB72E08091B0019091B101860F32 |
:101BE000971F9093B1018093B0018091BB018F5FEB |
:101BF0008093BB0182E058C06091780070917900B9 |
:101C00008091D3019091D401681B790B80910102DE |
:101C100090910202A0910302B09104029B0144271B |
:101C200037FD4095542F820F931FA41FB51F80933B |
:101C3000010290930202A0930302B09304028091E8 |
:101C4000050290910602A0910702B0910802820F4E |
:101C5000931FA41FB51F8093050290930602A093C3 |
:101C60000702B093080280917800909179000A975A |
:101C700010F464E47DEF8091780090917900895EA2 |
:101C8000934010F06CEB72E08091AE019091AF0147 |
:101C9000860F971F9093AF018093AE018091BA0198 |
:101CA0008F5F8093BA0184E08093C501C8C14091E1 |
:101CB00004015091050180917800909179009A017A |
:101CC000220F331F240F351F63E070E00E94D32FD3 |
:101CD000260F371F369527953695279530930501A2 |
:101CE0002093040186E0E0CF8091DB019091DC013C |
:101CF0002091780030917900821B930B90937605A8 |
:101D0000809375058091B4019091B501209175057E |
:101D100030917605820F931F9093B5018093B401A3 |
:101D20008091BE018F5F8093BE0187E0BDCF80911F |
:101D30007800909179002091D9013091DA01821BCD |
:101D4000930B90937605809375058091B6019091E1 |
:101D5000B7012091750530917605820F931F9093FE |
:101D6000B7018093B6018091BD018F5F8093BD0163 |
:101D70004093C50186E0E4C06091780070917900DD |
:101D8000E090E701F090E8010091E9011091EA018B |
:101D9000882777FD8095982F0E94292EA80197010A |
:101DA0000E947D2D0E940C2E7093B9016093B801A2 |
:101DB0002091B8013091B901E0917505F091760557 |
:101DC000809180059091810597FF03C09095819542 |
:101DD0009F4F64E070E00E94E72FEB01CF01F7FF17 |
:101DE00003C0909581959F4F64E070E00E94E72FBB |
:101DF000260F371F2C0F3D1F3093B9012093B801D8 |
:101E00008091B8019091B901029704F16091E701C6 |
:101E10007091E8018091E9019091EA0120E030E0C1 |
:101E200048E454E40E945F2E88230CF03CC060918B |
:101E3000E7017091E8018091E9019091EA012AE0BF |
:101E400037ED43EA5CE30E947E2D25C08091B80106 |
:101E50009091B9018F5F9F4F34F56091E7017091C8 |
:101E6000E8018091E9019091EA0120E030E046E14B |
:101E700054E40E94622E1816B4F46091E701709148 |
:101E8000E8018091E9019091EA012AE037ED43EA07 |
:101E90005CE30E947D2D6093E7017093E8018093DD |
:101EA000E9019093EA0181E08093BF01809178007D |
:101EB000909179009093780580937705209119028D |
:101EC00030911A0240911B0250911C028091B8017E |
:101ED0009091B901AA2797FDA095BA2F280F391F15 |
:101EE0004A1F5B1F2093190230931A0240931B0272 |
:101EF00050931C02E0901902F0901A0200911B020C |
:101F000010911C026091190270911A0280911B02BB |
:101F100090911C0220E034E040E050E00E941C3030 |
:101F2000E21AF30A040B150BE0921902F0921A025E |
:101F300000931B0210931C0283E08093C50187E08D |
:101F40008093C4017CC08091850590918605209185 |
:101F5000780030917900820F931F909386058093CB |
:101F6000850580917D058F5F80937D0580917D053E |
:101F7000853008F460C0809178009091790090934A |
:101F80000B0180930A0110927D0580917905909153 |
:101F90007A052091850530918605821B930B20914F |
:101FA000350230913602821B930B9093C1018093CE |
:101FB000C0016091850570918605E0900601F09062 |
:101FC00007010091080110910901882777FD80958C |
:101FD000982FA8019701220F331F441F551F2E0D64 |
:101FE0003F1D401F511F620F731F841F951F24E068 |
:101FF00030E040E050E00E941C3020930601309316 |
:10200000070140930801509309012091790530910F |
:102010007A058091060190910701A0910801B09185 |
:102020000901281B390B3093360220933502109298 |
:102030008605109285051092C5011092C401809109 |
:10204000C50180937C008FEE80937A00FF91EF9121 |
:10205000DF91CF91BF91AF919F918F917F916F91C0 |
:102060005F914F913F912F911F910F91FF90EF90B2 |
:102070000F900FBE0F901F901895CF93DF93C0E085 |
:10208000D0E0C7BD82E390E00E94010D81E691E0BF |
:102090009F938F931F920E94E20880910A01909172 |
:1020A0000B010F900F900F908458934020F02196D1 |
:1020B000CA3FD10531F7C093820588EC90E00E94B9 |
:1020C000010DDF91CF910895E6E1F1E080E2819387 |
:1020D00091E0E636F907D9F70895FF920F931F9321 |
:1020E0008091C901282F3327C90181709070682F12 |
:1020F000882391F08091CA01882311F0815002C099 |
:10210000809166018093CA01E6E1F1E080E281936B |
:1021100091E0E636F907D9F7A9014270507021FF26 |
:102120000DC08091CA018F5F8093CA01E6E1F1E0A2 |
:1021300080E2819391E0E636F907D9F7662321F032 |
:10214000452B11F01092CA0181E18093C801809162 |
:10215000CA0199279F938F9382ED93E09F938F936A |
:10216000E1E0FE2EFF920E94E2080091CA010F906A |
:102170000F900F900F900F90053009F4D7C10630E3 |
:1021800090F4023009F4B8C0033030F40023F1F0C9 |
:10219000013009F05BC34DC0033009F402C10430C3 |
:1021A00009F054C34BC1083009F498C2093038F41F |
:1021B000063009F411C2073009F048C36CC2093077 |
:1021C00009F4C9C20A3009F041C303C31092C8011F |
:1021D00080EC93E09F938F93FF920E94E20884E14A |
:1021E0008093C8018CE390E09F938F931F921F927E |
:1021F00089EB93E09F938F93FF920E94E20888E21D |
:102200008093C8010E940B0299279F938F938CEAB9 |
:1022100093E09F938F93FF920E94E2088CE3809358 |
:10222000C8018CE993E09F938F93FF920E94E2088C |
:102230008EC28091C30580FF47C01092C801809173 |
:102240003502909136029F938F938DE893E09F9390 |
:102250008F930F930E94E20884E18093C8018091DC |
:102260003702909138029F938F938EE793E09F936C |
:102270008F930F930E94E20888E28093C8018091B7 |
:102280000A0190910B019F938F938FE693E09F93A8 |
:102290008F930F930E94E2088CE38093C801809192 |
:1022A000820599279F938F9380E693E09F938F9366 |
:1022B0000F930E94E2088DB79EB744960FB6F8942C |
:1022C0009EBF0FBE8DBFC7C284E18093C80189E560 |
:1022D00093E09F938F930F930E94E20888E280938C |
:1022E000C8018BE493E09F938F930F930E94E208C1 |
:1022F0008DB79EB70696E2CF1092C80181E493E0B5 |
:102300009F938F93FF920E94E20884E18093C8011B |
:102310006091ED017091EE018091EF019091F001DB |
:1023200020E034E040E050E00E941C305F934F9387 |
:102330003F932F9382E393E09F938F93FF920E94AA |
:10234000E20888E28093C8016091F5017091F6017E |
:102350008091F7019091F80120E034E040E050E0F6 |
:102360000E941C305F934F933F932F9383E293E03F |
:102370009F938F93FF920E94E2088CE38093C801A1 |
:1023800080911D0290911E029F938F9384E193E0B0 |
:102390009F938F93FF920E94E2088DB79EB7469657 |
:1023A0008DCF1092C8018091930590919405209152 |
:1023B0009105309192059F938F933F932F9384E0E3 |
:1023C00093E09F938F93FF920E94E20884E18093B1 |
:1023D000C8018091970590919805209195053091BD |
:1023E00096059F938F933F932F9384EF92E09F9353 |
:1023F0008F93FF920E94E20888E28093C801809147 |
:102400009B0590919C052091990530919A059F9389 |
:102410008F933F932F9384EE92E09F938F93FF923D |
:102420000E94E2088CE38093C80180919D05909101 |
:102430009E059F938F9384ED92E06FC01092C80128 |
:10244000E091BC05FF27EE0FFF1FE157FA4F2081F7 |
:102450003181E091BB05FF27EE0FFF1FE157FA4FD7 |
:10246000808191813F932F939F938F9384EC92E08F |
:102470009F938F93FF920E94E20884E18093C801AA |
:10248000E091BE05FF27EE0FFF1FE157FA4F2081B5 |
:102490003181E091BD05FF27EE0FFF1FE157FA4F95 |
:1024A000808191813F932F939F938F9384EB92E050 |
:1024B0009F938F93FF920E94E20888E28093C80165 |
:1024C000E091C005FF27EE0FFF1FE157FA4F208173 |
:1024D0003181E091BF05FF27EE0FFF1FE157FA4F53 |
:1024E000808191813F932F939F938F9384EA92E011 |
:1024F0009F938F93FF920E94E2088CE38093C80120 |
:10250000E091C105FF27EE0FFF1FE157FA4F8081D1 |
:1025100091819F938F9384E992E09F938F93FF9291 |
:102520000E94E2088DB79EB74A96C8CE1092C801A5 |
:1025300086E892E09F938F93FF920E94E20884E1E5 |
:102540008093C8012091D3013091D4018091AE01D4 |
:102550009091AF016091BA013F932F9377270E942A |
:10256000E72F7F936F9387E792E09F938F93FF927C |
:102570000E94E20888E28093C8012091D501309141 |
:10258000D6018091B0019091B1016091BB013F9360 |
:102590002F9377270E94E72F7F936F9388E692E02F |
:1025A0009F938F93FF920E94E2088CE38093C8016F |
:1025B0002091D7013091D8018091B2019091B3015F |
:1025C0006091BC013F932F9377270E94E72F7F9361 |
:1025D0006F9389E592E056C01092C8018CE492E0B6 |
:1025E0009F938F93FF920E94E20884E18093C80139 |
:1025F0002091D9013091DA018091B6019091B70113 |
:102600006091BD013F932F9377270E94E72F7F931F |
:102610006F938DE392E09F938F93FF920E94E20865 |
:1026200088E28093C8012091DB013091DC01809128 |
:10263000B4019091B5016091BE013F932F9377272C |
:102640000E94E72F7F936F938EE292E09F938F9388 |
:10265000FF920E94E2088CE38093C8016091E70139 |
:102660007091E8018091E9019091EA01009177056C |
:10267000109178050E940C2E7F936F931F930F93F8 |
:102680008FE192E09F938F93FF920E94E2088DB7B3 |
:102690009EB7489613CE84E18093C80180910401CF |
:1026A000909105019F938F9380E192E09F938F9388 |
:1026B000FF920E94E20888E28093C80180912D0277 |
:1026C00099279F938F9381E092E09F938F93FF923E |
:1026D0000E94E2088DB79EB70A96F0CD1092C8010D |
:1026E00082EF91E09F938F93FF920E94E20884E132 |
:1026F0008093C80180912102909122029F938F9331 |
:1027000083EE91E09F938F93FF920E94E20888E20C |
:102710008093C80180911D0290911E029F938F9318 |
:1027200084ED91E09F938F93FF920E94E2088CE3E7 |
:102730008093C80180911F02909120029F938F93F4 |
:1027400085EC91E09F938F93FF920E94E2088DB7F2 |
:102750009EB74296B3CD1092C80180912502909108 |
:1027600026029F938F9389EB91E09F938F93FF9223 |
:102770000E94E20884E18093C80180912702909131 |
:1027800028029F938F938DEA91E09F938F93FF92FE |
:102790000E94E20888E28093C8018091290290910A |
:1027A0002A029F938F9381EA91E09F938F93FF92E8 |
:1027B0000E94E2088CE38093C80180912B029091E3 |
:1027C0002C029F938F9385E991E09F938F93FF92C3 |
:1027D00070CD1092C8018DE891E09F938F93FF9286 |
:1027E0000E94E20884E18093C801809189019927C1 |
:1027F0009F938F938FE791E09F938F93FF920E9417 |
:10280000E20888E28093C8018091A9019091AA0111 |
:102810009F938F9381E791E09F938F93FF920E9404 |
:10282000E2088CE38093C8018091DF0599279F938C |
:102830008F938091DE0599279F938F9383E691E094 |
:102840009F938F93FF920E94E20835CD0150009331 |
:1028500066011092CA011092C9011F910F91FF9059 |
:1028600008951092B9008AE28093B800089585EA2D |
:102870008093BC0080E090E0089584E98093BC00E0 |
:1028800008951092B9008093BB0085E88093BC0046 |
:1028900080E090E008951F920F920FB60F921124DE |
:1028A0008F939F93EF93FF938091CB018F5F8093E2 |
:1028B000CB018150833009F442C0843028F4813048 |
:1028C000A1F0823070F50CC0853009F448C0853025 |
:1028D000D8F1863009F44BC0873009F071C05BC075 |
:1028E0008091CC01880F8E5A14C08091CC018F5FEB |
:1028F0008093CC018150813009F444C0813038F09C |
:10290000823009F442C0833009F05AC041C080913E |
:10291000C4021092B9008093BB0085E88093BC008C |
:102920004FC084E98093BC008091CC01843018F4BE |
:102930001092CB0102C01092CC0185EAEFCF8091BA |
:10294000CD01880F8D5AE5CF8091CD018130D1F036 |
:102950008130E8F28230C9F0833091F519C080915E |
:10296000BB00E091CD01FF27E957FA4F80838091AA |
:10297000CD01813039F0813050F2823031F0833036 |
:10298000F9F406C08091C502C4CF8091D602C1CFB0 |
:102990008091EC02BECF8091CD019091BB00E82FD9 |
:1029A000FF27E957FA4F94838F5F8093CD018430DE |
:1029B00010F01092CD0184E98093BC001092CB01FD |
:1029C000FF91EF919F918F910F900FBE0F901F90ED |
:1029D000189583EC80938100EFE6F0E080818062BF |
:1029E00080831092D8011092D7011092D6011092D4 |
:1029F000D5011092D4011092D30108951F920F9225 |
:102A00000FB60F9211240F931F932F933F934F9361 |
:102A10005F936F937F938F939F93AF93BF93CF9366 |
:102A2000DF93EF93FF932091860030918700809190 |
:102A3000D0019091D101281B390B80918600909193 |
:102A400087009093D1018093D001C9018D5D95409D |
:102A50008356994148F481E090E09093CF018093B0 |
:102A6000CE011092670154C0C091CE01D091CF0128 |
:102A7000CA30D1050CF04CC0C9018B5F9040845B1B |
:102A8000914008F040C0A901425D5140FE01EE0FA7 |
:102A9000FF1FE157FA4F80819181FA01E81BF90B82 |
:102AA000CF01F7FF03C0909581959F4F06974CF497 |
:102AB00080912D02883C28F480912D02865F8093BE |
:102AC0002D02FE01EE0FFF1F8F0101571A4FD80193 |
:102AD0002D913C91C901880F991F820F931F840F7C |
:102AE000951F64E070E00E94E72FD8018D919C91C2 |
:102AF00011979B01281B390BEB55FA4F318320832B |
:102B000011967C936E932196D093CF01C093CE0102 |
:102B1000FF91EF91DF91CF91BF91AF919F918F91F5 |
:102B20007F916F915F914F913F912F911F910F91E5 |
:102B30000F900FBE0F901F901895AF92BF92CF923B |
:102B4000DF92EF92FF920F931F9310927A00809181 |
:102B5000BA01882369F08091AE019091AF01609134 |
:102B6000BA0177270E94E72F7093F8056093F70565 |
:102B70008091BB01882369F08091B0019091B101EF |
:102B80006091BB0177270E94E72F7093F605609351 |
:102B9000F5058091BC01882369F08091B201909184 |
:102BA000B3016091BC0177270E94E72F7093040660 |
:102BB000609303068091BD018823D9F1E09000065F |
:102BC000F09001066091B6017091B7012091BD01AE |
:102BD0000027F7FC0095102F5701680143E0AA0C6D |
:102BE000BB1CCC1CDD1C4A95D1F7AE18BF08C00A2F |
:102BF000D10A882777FD8095982F34E0660F771FDC |
:102C0000881F991F3A95D1F73327442755270E94EB |
:102C10001C30A20EB31EC41ED51EC601B50128E08D |
:102C200030E040E050E00E941C30309301062093D9 |
:102C300000068091BE018823D9F1E0900906F0904A |
:102C40000A066091B4017091B5012091BE01002780 |
:102C5000F7FC0095102F5701680183E0AA0CBB1CFC |
:102C6000CC1CDD1C8A95D1F7AE18BF08C00AD10A6A |
:102C7000882777FD8095982FB4E0660F771F881F0F |
:102C8000991FBA95D1F73327442755270E941C3046 |
:102C9000A20EB31EC41ED51EC601B50128E030E049 |
:102CA00040E050E00E941C3030930A062093090651 |
:102CB0008091BF018823A1F1E090FA05F090FB0517 |
:102CC0006091B8017091B9012091BF010027F7FC14 |
:102CD0000095102F57016801A3E0AA0CBB1CCC1C67 |
:102CE000DD1CAA95D1F7AE18BF08C00AD10A882703 |
:102CF00077FD8095982F3327442755270E941C3055 |
:102D0000A20EB31EC41ED51EC601B50128E030E0D8 |
:102D100040E050E00E941C303093FB052093FA0500 |
:102D20001092AF011092AE011092BA011092B1014F |
:102D30001092B0011092BB011092B3011092B20137 |
:102D40001092BC011092B5011092B4011092BE0114 |
:102D50001092B7011092B6011092BD011092B90104 |
:102D60001092B8011092BF0180911102909112024D |
:102D7000A0911302B09114028093FD019093FE0183 |
:102D8000A093FF01B0930002809101029091020292 |
:102D9000A0910302B09104028093ED019093EE01A3 |
:102DA000A093EF01B093F0018091090290910A0283 |
:102DB000A0910B02B0910C028093F5019093F60163 |
:102DC000A093F701B093F80180910502909106025B |
:102DD000A0910702B09108028093F1019093F20153 |
:102DE000A093F301B093F40180910D0290910E0233 |
:102DF000A0910F02B09110028093F9019093FA0113 |
:102E0000A093FB01B093FC018FEE80937A00809138 |
:102E1000F7059091F805893C91057CF02091F70524 |
:102E20003091F8058091F7059091F805880F991F6A |
:102E3000880F991F2052334015C08091F70590915B |
:102E4000F80588539F4FA4F42091F7053091F805B9 |
:102E50008091F7059091F805880F991F880F991FA9 |
:102E6000205E3C4F820F931F9093F8058093F705E7 |
:102E70008091F5059091F605893C91057CF02091B3 |
:102E8000F5053091F6058091F5059091F605880FCE |
:102E9000991F880F991F2052334015C08091F50566 |
:102EA0009091F60588539F4FA4F42091F505309139 |
:102EB000F6058091F5059091F605880F991F880F0A |
:102EC000991F205E3C4F820F931F9093F6058093CD |
:102ED000F50520912502309126028091BF05E82F4B |
:102EE000FF27EE0FFF1FE157FA4F80819181825932 |
:102EF0009F4F281739071CF42F5F3F4F0CC080816C |
:102F0000918182599F4F821793074CF42115310507 |
:102F100031F0215030403093260220932502209139 |
:102F20002702309128028091C005E82FFF27EE0F7D |
:102F3000FF1FE157FA4F8081918182599F4F2817D7 |
:102F400039071CF42F5F3F4F0CC08081918182595B |
:102F50009F4F821793074CF42115310531F0215012 |
:102F6000304030932802209327022091290230918B |
:102F70002A028091C105E82FFF27EE0FFF1FE157BE |
:102F8000FA4F8081918182599F4F281739071CF48D |
:102F90002F5F3F4F0CC08081918182599F4F8217D4 |
:102FA00093074CF42115310531F021503040309316 |
:102FB0002A022093290220912B0230912C02809129 |
:102FC000C205E82FFF27EE0FFF1FE157FA4F808160 |
:102FD000918182599F4F281739071CF42F5F3F4F6B |
:102FE0000CC08081918182599F4F821793074CF4C6 |
:102FF0002115310531F02150304030932C022093BF |
:103000002B02809125029091260297FF05C0109215 |
:103010002602109225020AC08F3F910539F034F044 |
:103020008FEF90E0909326028093250280912702F3 |
:103030009091280297FF05C0109228021092270253 |
:103040000AC08F3F910539F034F08FEF90E09093F4 |
:103050002802809327028091290290912A0297FFEB |
:1030600005C010922A02109229020AC08F3F9105D2 |
:1030700039F034F08FEF90E090932A028093290288 |
:1030800080912B0290912C0297FF05C010922C0288 |
:1030900010922B020AC08F3F910539F034F08FEF68 |
:1030A00090E090932C0280932B021F910F91FF9040 |
:1030B000EF90DF90CF90BF90AF90089510927A007C |
:1030C0008091BA01882369F08091AE019091AF019F |
:1030D0006091BA0177270E94E72F7093F8056093FB |
:1030E000F7058091BB01882369F08091B001909130 |
:1030F000B1016091BB0177270E94E72F7093F6051D |
:103100006093F5058091BC01882369F08091B2013C |
:103110009091B3016091BC0177270E94E72F7093D3 |
:103120000406609303068091BD018823D1F060916D |
:10313000B6017091B7012091BD01882777FD809578 |
:10314000982F34E0660F771F881F991F3A95D1F7A3 |
:103150003327442755270E941C30309301062093C3 |
:1031600000068091BE018823D1F06091B401709176 |
:10317000B5012091BE01882777FD8095982FB4E096 |
:10318000660F771F881F991FBA95D1F733274427F9 |
:1031900055270E941C3030930A062093090680911F |
:1031A000BF01882399F06091B8017091B901209115 |
:1031B000BF01882777FD8095982F3327442755270F |
:1031C0000E941C303093FB052093FA051092AF014A |
:1031D0001092AE011092BA011092B1011092B0019A |
:1031E0001092BB011092B3011092B2011092BC0177 |
:1031F0001092B5011092B4011092BE011092B70165 |
:103200001092B6011092BD011092B9011092B8014E |
:103210001092BF018FEE80937A00209125023091A9 |
:1032200026028091BF05E82FFF27EE0FFF1FE15711 |
:10323000FA4F8081918182599F4F281739071CF4DA |
:103240002F5F3F4F0CC08081918182599F4F821721 |
:1032500093074CF42115310531F021503040309363 |
:103260002602209325022091270230912802809186 |
:10327000C005E82FFF27EE0FFF1FE157FA4F8081AF |
:10328000918182599F4F281739071CF42F5F3F4FB8 |
:103290000CC08081918182599F4F821793074CF413 |
:1032A0002115310531F02150304030932802209310 |
:1032B00027022091290230912A028091C105E82F2E |
:1032C000FF27EE0FFF1FE157FA4F8081918182594E |
:1032D0009F4F281739071CF42F5F3F4F0CC0808188 |
:1032E000918182599F4F821793074CF42115310524 |
:1032F00031F02150304030932A022093290220914E |
:103300002B0230912C028091C205E82FFF27EE0F8F |
:10331000FF1FE157FA4F8081918182599F4F2817F3 |
:1033200039071CF42F5F3F4F0CC080819181825977 |
:103330009F4F821793074CF42115310531F021502E |
:10334000304030932C0220932B02809125029091E3 |
:10335000260297FF05C010922602109225020AC08D |
:103360008F3F910539F034F08FEF90E09093260273 |
:1033700080932502809127029091280297FF05C033 |
:1033800010922802109227020AC08F3F910539F04F |
:1033900034F08FEF90E09093280280932702809181 |
:1033A000290290912A0297FF05C010922A021092DA |
:1033B00029020AC08F3F910539F034F08FEF90E079 |
:1033C00090932A028093290280912B0290912C02E3 |
:1033D00097FF05C010922C0210922B0208958F3F88 |
:1033E000910539F034F08FEF90E090932C028093A8 |
:1033F0002B0208951F938091C6058B3F98F08B3F59 |
:1034000019F4809125020EC08C3F19F48091270297 |
:1034100009C08D3F19F48091290204C08E3F21F428 |
:1034200080912B028093810180918101882319F47E |
:103430001092810104C08F3F11F48093810180912B |
:10344000C5058B3F98F08B3F19F4809125020EC083 |
:103450008C3F19F48091270209C08D3F19F48091A7 |
:10346000290204C08E3F21F480912B0280938001B9 |
:1034700080918001882319F41092800105C0843660 |
:1034800018F084E6809380018091C7058B3F98F007 |
:103490008B3F19F4809125020EC08C3F19F4809166 |
:1034A000270209C08D3F19F48091290204C08E3F84 |
:1034B00021F480912B0280938201809182018823E4 |
:1034C00019F41092820105C0843618F084E68093C6 |
:1034D00082018091C9058B3F98F08B3F19F4809150 |
:1034E00025020EC08C3F19F48091270209C08D3F40 |
:1034F00019F48091290204C08E3F21F480912B029F |
:103500008093830180918301882319F410928301B1 |
:1035100004C08F3F11F4809383018091D0058B3FCD |
:1035200098F08B3F19F4809125020EC08C3F19F45E |
:103530008091270209C08D3F19F48091290204C0AF |
:103540008E3F21F480912B0280938401809184012D |
:10355000882319F41092840104C08F3F11F48093E2 |
:1035600084018091D1058B3F98F08B3F19F48091B5 |
:1035700025020EC08C3F19F48091270209C08D3FAF |
:1035800019F48091290204C08E3F21F480912B020E |
:1035900080938501809185018B3010F48AE002C010 |
:1035A0008F3F11F4809385018091D2058B3F98F075 |
:1035B0008B3F19F4809125020EC08C3F19F4809145 |
:1035C000270209C08D3F19F48091290204C08E3F63 |
:1035D00021F480912B0280938601809186018823BB |
:1035E00019F41092860104C08F3F11F48093860174 |
:1035F0008091D7058B3F98F08B3F19F4809125027D |
:103600000EC08C3F19F48091270209C08D3F19F438 |
:103610008091290204C08E3F21F480912B02809377 |
:10362000880180918801882319F41092880104C0D0 |
:103630008F3F11F4809388018091D8058B3F98F0DB |
:103640008B3F19F4809125020EC08C3F19F48091B4 |
:10365000270209C08D3F19F48091290204C08E3FD2 |
:1036600021F480912B0280933902809139028823C2 |
:1036700019F41092390204C08F3F11F4809339027B |
:103680008091D9058B3F98F08B3F19F480912502EA |
:103690000EC08C3F19F48091270209C08D3F19F4A8 |
:1036A0008091290204C08E3F21F480912B028093E7 |
:1036B0003A0280913A02882319F410923A0204C027 |
:1036C0008F3F11F480933A028091DA058B3F98F096 |
:1036D0008B3F19F4809125020EC08C3F19F4809124 |
:1036E000270209C08D3F19F48091290204C08E3F42 |
:1036F00021F480912B0280933B0280913B0288232E |
:1037000019F410923B0204C08F3F11F480933B02E6 |
:103710008091DB058B3F98F08B3F19F48091250257 |
:103720000EC08C3F19F48091270209C08D3F19F417 |
:103730008091290204C08E3F21F480912B02809356 |
:103740003C0280913C02882319F410923C0204C090 |
:103750008F3F11F480933C029091DC059B3FB0F0C9 |
:103760009B3F19F48091250204C09C3F29F480916D |
:103770002702809389010CC09D3F19F48091290292 |
:10378000F8CF9E3F29F480912B02F3CF90938901CB |
:1037900080918901882319F41092890104C08F3F18 |
:1037A00011F4809389019B3FB0F09B3F19F4809105 |
:1037B000250204C09C3F29F480912702809389014F |
:1037C0000CC09D3F19F480912902F8CF9E3F29F447 |
:1037D00080912B02F3CF90938901809189018823F6 |
:1037E00019F41092890104C08F3F11F4809389016C |
:1037F0009B3FB0F09B3F19F48091250204C09C3F91 |
:1038000029F480912702809389010CC09D3F19F40F |
:1038100080912902F8CF9E3F29F480912B02F3CFAB |
:103820009093890180918901882319F4109289016C |
:1038300004C08F3F11F48093890110918801612F9A |
:10384000772767FD7095872F972F0E94292E17FFE6 |
:1038500006C020E030E040E853E40E947E2D27E1DE |
:1038600037EB41ED58E30E94502F60937C01709339 |
:103870007D0180937E0190937F018091CE0580939E |
:1038800002068091CD058093F9051F91089581E08E |
:103890008093BB0542E04093BC0583E08093BD0567 |
:1038A00024E02093BE0535E03093BF0586E0809389 |
:1038B000C00587E08093C1051092C3058EE1809317 |
:1038C000C4058BEF8093C6058AE08093C70592E319 |
:1038D0009093C5059093C9054093C8052093CA05E8 |
:1038E0001092CB0580E18093CC058FE08093CD05CD |
:1038F0008AEF8093CE058AE18093CF0580E880939C |
:10390000D0058FEA8093D1058093D2058AE5809314 |
:10391000D30583E28093D40584E18093D50510928A |
:10392000D6053093D7051092D8051092D90510927C |
:10393000DA051092DB0584E68093DC0588E280934B |
:10394000DD051092E1059093DE0586E98093DF05A1 |
:103950003093E005A9EEB5E0E8E6F1E08CE00190F7 |
:103960000D928150E1F7089581E08093BB0552E00C |
:103970005093BC0583E08093BD0544E04093BE05B1 |
:1039800035E03093BF0586E08093C00587E08093E3 |
:10399000C10528E02093C2051092C3059EE19093D3 |
:1039A000C4058BEF8093C6058AE08093C70586E443 |
:1039B0008093C5059093C9055093C8054093CA05E7 |
:1039C0002093CB0580E18093CC058FE08093CD05DB |
:1039D0008AEF8093CE058AE18093CF0580E88093BB |
:1039E000D00588E78093D10596E99093D2058AE5C2 |
:1039F0008093D30583E28093D40584E18093D50539 |
:103A00001092D6053093D7051092D8051092D9059B |
:103A10001092DA051092DB0584E68093DC0588E2DB |
:103A20008093DD051092E10582E38093DE0590939B |
:103A3000DF053093E005A9EEB5E0E0E7F1E08CE0CA |
:103A400001900D928150E1F708958091340288230E |
:103A500001F51092C5021092C4021092D602109283 |
:103A6000EC0280919401882311F08093C40280912C |
:103A70009501882311F08093C502809196018823D7 |
:103A800011F08093EC0280919701882311F08093CC |
:103A9000D6028091C40299279093510580935005D6 |
:103AA0008091C50299279093530580935205809188 |
:103AB000EC02992790935505809354058091D60286 |
:103AC000992790935705809356051092CB01109239 |
:103AD000CC010E9437140895CF93DF931092DA013E |
:103AE0001092D9011092DC011092DB0180E090E08D |
:103AF000A0E0B0E08093E7019093E801A093E90192 |
:103B0000B093EA011092D4011092D3011092D60121 |
:103B10001092D5011092D8011092D7010E945E1820 |
:103B200085E090E00E94180CEC01CE010E94210C6F |
:103B30008823D9F30E945E188091C30580FF10C0CE |
:103B400080910A0190910B01875B934038F480913A |
:103B50000A0190910B018E5E924010F40E943D107C |
:103B60008091F7059091F80597FF03C09095819596 |
:103B70009F4F9093D4018093D3018091F50590914C |
:103B8000F60597FF03C0909581959F4F9093D601BE |
:103B90008093D501809103069091040697FF03C09E |
:103BA000909581959F4F9093D8018093D7018091F4 |
:103BB000090690910A0697FF03C0909581959F4F43 |
:103BC00060E170E00E94E72F7093DC016093DB01FD |
:103BD000809100069091010697FF03C09095819512 |
:103BE0009F4F60E170E00E94E72F7093DA016093CD |
:103BF000D9016091770570917805882777FD8095C8 |
:103C0000982F0E94292E6093E7017093E80180931A |
:103C1000E9019093EA0110920102109202021092BF |
:103C200003021092040210920502109206021092F2 |
:103C30000702109208021092090210920A021092D2 |
:103C40000B0210920C0210920D0210920E021092B2 |
:103C50000F02109210021092110210921202109292 |
:103C60001302109214021092F8051092F7051092A8 |
:103C7000F6051092F5051092040610920306809145 |
:103C8000060190910701A0910801B091090190935C |
:103C90007A05809379051092C1011092C0011092AB |
:103CA000190210921A0210921B0210921C028091AB |
:103CB0001D0290911E029093200280931F0282E3C6 |
:103CC00090E09093A8018093A701DF91CF91089590 |
:103CD0001F93182F0EC080913402882361F484E66C |
:103CE00090E09093A8018093A7018AEF90E00E9452 |
:103CF000010D115080F71F9108952F923F924F921E |
:103D00005F926F927F928F929F92AF92BF92CF926B |
:103D1000DF92EF92FF920F931F93CF93DF93CDB774 |
:103D2000DEB724970FB6F894DEBF0FBECDBF0E945A |
:103D30009D15299AE091BD05AE2FBB27AA0FBB1F89 |
:103D4000A157BA4F0D90BC91A02D9D0128583F4F0F |
:103D50003A83298337FF02C01A82198280912D028B |
:103D6000843608F04AC080910101882331F484EF41 |
:103D700091E09093A8018093A701809148029091CF |
:103D80004902009731F001979093490280934802CD |
:103D900004C01092340210922302289A80914302A8 |
:103DA00090914402815D974028F18091D405482F7D |
:103DB00055275A83498381E080932302E091BB0514 |
:103DC000FF27EE0FFF1FE157FA4F11821082E0919B |
:103DD000BC05FF27EE0FFF1FE157FA4F118210823B |
:103DE000E091BE05FF27EE0FFF1FE157FA4F11824A |
:103DF0001082CEC110923402CBC180912D028D3839 |
:103E000008F4C6C1109223028091D50522E3829F57 |
:103E1000C0011124909349028093480269817A81FC |
:103E2000693271056CF080914302909144027FEFFA |
:103E30008F3F970781F1019690934402809343024C |
:103E40008091430290914402883C910520F0898141 |
:103E50009A81889704F510925E0210925F02109288 |
:103E600060021092610210925A0210925B0210924C |
:103E70005C0210925D0210921102109212021092D6 |
:103E80001302109214021092150210921602109250 |
:103E9000170210921802E981FA81E93CF1050CF44D |
:103EA000D6C080913402882309F072C1E091BE052A |
:103EB000FF27EE0FFF1FE157FA4F808191818C346D |
:103EC00091050CF4C1C0809147028F5F8093470237 |
:103ED000893C08F45DC129980E946C1D109234023F |
:103EE0001092470210924402109243028091BB0547 |
:103EF000282F3327F901EE0FFF1FE157FA4F80817A |
:103F00009181873491059CF4E091BC05FF27EE0F69 |
:103F1000FF1FE157FA4F0190F081E02DF7FF03C03A |
:103F2000F095E195FF4FE734F1050CF46CC08091FA |
:103F3000BC05682F7727DB01AA0FBB1FA157BA4F1B |
:103F40008D919C911197873491053CF0F901EE0F0A |
:103F5000FF1FE157FA4F808191818D919C918734A9 |
:103F6000910564F0F901EE0FFF1FE157FA4F8081D0 |
:103F700091818734910514F042E001C041E0FB01DA |
:103F8000EE0FFF1FE157FA4F808191818634910532 |
:103F90005CF4F901EE0FFF1FE157FA4F8081918128 |
:103FA000873491050CF043E0FB01EE0FFF1FE15752 |
:103FB000FA4F808191818A5B9F4F5CF4F901EE0F8B |
:103FC000FF1FE157FA4F80819181873491050CF0F2 |
:103FD00044E0660F771F61577A4FFB018081918122 |
:103FE0008A5B9F4F5CF4220F331F21573A4FF90130 |
:103FF00080819181863491050CF445E0A2E0B0E027 |
:10400000042E0E943F300E940B024AE36BEB75E0E6 |
:104010000E942A020E940B020E94681E8091C30522 |
:1040200080FFB6C080910A0190910B01875B93409D |
:1040300040F480910A0190910B018E5E924008F04D |
:10404000A7C00E943D10A4C010924702A1C04981A0 |
:104050005A81433251050CF09BC08091BE05482F18 |
:104060005527FA01EE0FFF1FE157FA4F808191812A |
:10407000855B9F4F0CF06DC0809146028F5F8093EF |
:104080004602893C08F467C088EC8093460281E0D0 |
:1040900090E0909344028093430281E08093340245 |
:1040A0001092560210925702109258021092590222 |
:1040B0001092110210921202109213021092140226 |
:1040C0001092150210921602109217021092180206 |
:1040D0001092010210920202109203021092040246 |
:1040E0001092090210920A0210920B0210920C0216 |
:1040F0008091ED019091EE01A091EF01B091F0015E |
:104100008093050290930602A0930702B0930802E1 |
:104110008091F5019091F601A091F701B091F8011D |
:1041200080930D0290930E02A0930F02B0931002A1 |
:1041300010925E0210925F02109260021092610271 |
:1041400010925A0210925B0210925C0210925D0271 |
:1041500002C010924602440F551F41575A4FFA01B0 |
:10416000808191818C3491058CF0809145028F5F24 |
:1041700080934502893C60F01092340288EC809371 |
:104180004502109244021092430202C0109245026E |
:1041900080916701815080936701809167018F3F13 |
:1041A00029F080912302882309F412C10E94FA1990 |
:1041B000E091BB05FF27EE0FFF1FDF01A157BA4FAC |
:1041C0008D919C916091CA057727EB55FA4F20811C |
:1041D00031814091CB055527FC01E69FC001E79F47 |
:1041E000900DF69F900D1124F901E49F9001E59F39 |
:1041F000300DF49F300D1124820F931F90932F02E6 |
:1042000080932E02E091BC05FF27EE0FFF1FDF0118 |
:10421000A157BA4F8D919C91EB55FA4F2081318176 |
:10422000FC01E69FC001E79F900DF69F900D1124C1 |
:10423000B901649F9001659F300D749F300D11246A |
:10424000820F931F9093310280933002E091BE055C |
:10425000FF27EE0FFF1FE157FA4F80819181909564 |
:1042600081959F4F90933302809332021091850184 |
:10427000612F772767FD7095872F972F0E94292E32 |
:1042800017FF06C020E030E040E853E40E947E2D96 |
:1042900020E030E040E251E40E947E2D20E030E05A |
:1042A00040E85BE30E94502F5B016C0160930506C0 |
:1042B0007093060680930706909308061091860176 |
:1042C000612F772767FD7095872F972F0E94292EE2 |
:1042D00017FF06C020E030E040E853E40E947E2D46 |
:1042E00020E030EE4BE257E40E94C62D6093FC05BF |
:1042F0007093FD058093FE059093FF058091C305A3 |
:1043000082FF0CC080E090E0A0E0B0E08093FC056C |
:104310009093FD05A093FE05B093FF0520E030E0EB |
:1043200040E050E0C601B5010E945F2E882364F48E |
:1043300080E090E0A0E0B0E0809305069093060650 |
:10434000A0930706B093080620E030E040E050E07C |
:104350006091FC057091FD058091FE059091FF052F |
:104360000E945F2E882364F480E090E0A0E0B0E03B |
:104370008093FC059093FD05A093FE05B093FF0587 |
:1043800080912302882321F110923302109232028D |
:1043900010922F0210922E021092310210923002CF |
:1043A0008DEC9CECACECBDE3809305069093060687 |
:1043B000A0930706B09308068AE097EDA3EABBE353 |
:1043C0008093FC059093FD05A093FE05B093FF0537 |
:1043D0008091C2019091C3018D54914008F4BCC0FA |
:1043E0002091F1013091F2014091F3015091F401DB |
:1043F0008091ED019091EE01A091EF01B091F0015B |
:10440000B901681B790B70934D0260934C022091A7 |
:10441000F9013091FA014091FB015091FC0180912A |
:10442000F5019091F601A091F701B091F801281BD8 |
:10443000390B30934B0220934A021092C301109221 |
:10444000C201673A710534F08091D3019091D40193 |
:10445000019608C06A557F4F4CF48091D30190912A |
:10446000D40101979093D4018093D301273A310569 |
:1044700034F08091D5019091D601019608C02A555B |
:104480003F4F4CF48091D5019091D60101979093C4 |
:10449000D6018093D5018091150290911602A091CA |
:1044A0001702B0911802873A9105A105B1054CF0A9 |
:1044B0008091D7019091D80101979093D801809372 |
:1044C000D7018091150290911602A0911702B09128 |
:1044D00018028A559F4FAF4FBF4F4CF48091D701C0 |
:1044E0009091D80101969093D8018093D7011092B2 |
:1044F0007A008091ED019091EE01A091EF01B091D1 |
:10450000F0018093050290930602A0930702B093F6 |
:1045100008028091F5019091F601A091F701B09108 |
:10452000F80180930D0290930E02A0930F02B093B6 |
:1045300010028091FD019091FE01A091FF01B091C8 |
:1045400000028093150290931602A0931702B09375 |
:1045500018028FEE80937A006091ED017091EE0168 |
:104560008091EF019091F001A090CF05BB24CC2465 |
:10457000DD24E0900006F0900106A60195010E945E |
:104580001C300027F7FC0095102F2E193F09400B17 |
:10459000510BCA01B90120E130E040E050E00E9437 |
:1045A0001C3039014A012093520230935302409348 |
:1045B0005402509355026091F5017091F60180917B |
:1045C000F7019091F801E0900906F0900A06A60123 |
:1045D00095010E941C300027F7FC0095102F2E1922 |
:1045E0003F09400B510BCA01B90120E130E040E026 |
:1045F00050E00E941C3020934E0230934F024093B3 |
:10460000500250935102F5EF6F16F1E07F06F0E093 |
:104610008F06F0E09F062CF084EF91E0A0E0B0E080 |
:104620000DC06CE066166EEF76066FEF86066FEFD4 |
:10463000960664F48CE09EEFAFEFBFEF80935202DA |
:1046400090935302A0935402B0935502253F71E01A |
:10465000370770E0470770E057072CF084EF91E0D0 |
:10466000A0E0B0E009C02C503E4F4F4F5F4F64F4C4 |
:104670008CE09EEFAFEFBFEF80934E0290934F021E |
:10468000A0935002B093510210927A0080910102DF |
:1046900090910202A0910302B09104022091520273 |
:1046A000309153024091540250915502821B930B5A |
:1046B000A40BB50B8093010290930202A093030216 |
:1046C000B09304028091090290910A02A0910B021A |
:1046D000B0910C0220914E0230914F024091500255 |
:1046E00050915102821B930BA40BB50B80930902CE |
:1046F00090930A02A0930B02B0930C0280913202B5 |
:10470000909133025C01CC24B7FCC094DC2CA092C5 |
:104710005602B0925702C0925802D092590297FFA7 |
:1047200003C0909581959F4F84973CF08091C3057D |
:1047300084FD03C081E080933F026090110270907D |
:1047400012028090130290901402C501B7FE03C0BC |
:10475000909581959F4F7C010027F7FC0095102FC5 |
:104760002091CC05332744275527C601B5010E9467 |
:10477000B42F9B01AC01C801B7010E94B42F20E007 |
:1047800031E040E050E00E941C30442737FD409566 |
:10479000542F621A730A840A950A60921102709269 |
:1047A0001202809213029092140280911102909151 |
:1047B0001202A0911302B091140281539547A040B8 |
:1047C000B04064F080E395E7A0E0B0E08093110290 |
:1047D00090931202A0931302B093140280911102DD |
:1047E00090911202A0911302B0911402805D9A4838 |
:1047F000AF4FBF4F64F480ED9AE8AFEFBFEF809307 |
:10480000110290931202A0931302B09314028FEE40 |
:1048100080937A0080911D0290911E02892B09F4E9 |
:10482000A1C08091C30583FF9DC06091ED0170918F |
:10483000EE018091EF019091F00120E032E040E044 |
:1048400050E00E941C30890137FF03C0109501958C |
:104850001F4F6091F5017091F6018091F7019091E1 |
:10486000F80120E032E040E050E00E941C30B90145 |
:1048700037FF03C0709561957F4F601771070CF487 |
:10488000B80169317105A4F480913F02882381F059 |
:1048900080913D0290913E02892B51F480911D023E |
:1048A00090911E029093200280931F0210923F026B |
:1048B000209184013327629FC001639F900D729FF6 |
:1048C000900D112460E470E00E94E72FA901461BBF |
:1048D000570B141615060CF03FC010927A00209169 |
:1048E0003D0230913E022115310561F50091110222 |
:1048F0001091120220911302309114028091210232 |
:1049000090912202BC01649FC001659F900D749F2D |
:10491000900D112460E270E00E94E72F882777FD58 |
:104920008095982F060F171F281F391F009311021B |
:104930001093120220931302309314028FEE80938F |
:104940007A0010C08FEE80937A002150304030936F |
:104950003E0220933D0206C084EF91E090933E0218 |
:1049600080933D028091390299279093E7028093CA |
:10497000E60280913A0299279093E9028093E80237 |
:1049800080913B0299279093E3028093E202809109 |
:104990003C0299279093E5028093E40289E190E03C |
:1049A0009093D3028093D2028091250290912602A7 |
:1049B0001816190614F40E94792980912502909105 |
:1049C0002602892B71F485E090E09093DD028093BC |
:1049D000DC021092BF021092BE021092C10210922D |
:1049E000C002809137058F5F809337058091400228 |
:1049F0008150809340028F3F09F078C081E380931B |
:104A000040026091ED017091EE018091EF01909173 |
:104A1000F001E090CF05FF2400271127A80197019E |
:104A20000E941C3030933905209338056091F501C0 |
:104A30007091F6018091F7019091F801A80197011A |
:104A40000E941C3030933B0520933A05809100066C |
:104A50009091010690933D0580933C058091090655 |
:104A600090910A0690933F0580933E05809103063E |
:104A70009091040690934105809340058091350202 |
:104A800090913602909343058093420560911902FC |
:104A900070911A0280911B0290911C0220E032E07A |
:104AA00040E050E00E941C303093450520934405BF |
:104AB00089819A81909347058093460580911D02D4 |
:104AC00090911E02909349058093480580911D02A4 |
:104AD00090911E0290934B0580934A0580911D0290 |
:104AE00090911E0290934D0580934C056091ED01CD |
:104AF0007091EE018091EF019091F0012090FC0502 |
:104B00003090FD054090FE055090FF05E090F705C0 |
:104B1000F090F805609005067090060680900706F4 |
:104B2000909008060E94292EA20191010E94502F08 |
:104B30005B016C010027F7FC0095102FC801B7013D |
:104B40000E94292EA40193010E94502F9B01AC01C9 |
:104B5000C601B5010E947E2D0E940C2E7093F805AF |
:104B60006093F7056091F5017091F6018091F7016E |
:104B70009091F801E090F505F090F6050E94292E3D |
:104B8000A20191010E94502F5B016C010027F7FCEC |
:104B90000095102FC801B7010E94292EA40193018E |
:104BA0000E94502F9B01AC01C601B5010E947E2DD1 |
:104BB0000E940C2E7093F6056093F5056091030634 |
:104BC00070910406A090FD01B090FE01C090FF011D |
:104BD000D0900002882777FD8095982F0E94292E7B |
:104BE0007B018C0120E030E040E05FE3C401B301D1 |
:104BF0000E94502F9B01AC01C801B7010E94502FA9 |
:104C00007B018C01C601B5010E94292EA2019101F0 |
:104C10000E94502F9B01AC01C801B7010E947E2D5C |
:104C20000E940C2E70930406609303068091F70592 |
:104C30009091F8058150984034F080E098E090938E |
:104C4000F8058093F7058091F7059091F80580505D |
:104C5000984F34F480E098EF9093F8058093F7052F |
:104C60008091F5059091F6058150984034F080E0F0 |
:104C700098E09093F6058093F5058091F505909165 |
:104C8000F6058050984F34F480E098EF9093F60545 |
:104C90008093F50580910306909104068150984019 |
:104CA00034F080E098E090930406809303068091AE |
:104CB0000306909104068050984F34F480E098EFFA |
:104CC00090930406809303068091C305992780FF83 |
:104CD000CDC02091810181FF0EC02233B0F48091BC |
:104CE00035029091360244979093380280933702B0 |
:104CF000109224020DC08091C805289FC001112484 |
:104D00004497909338028093370281E08093240285 |
:104D100080912302882321F01092380210923702EA |
:104D2000209135023091360240913702509138027D |
:104D3000421753070CF09AC080912402882309F48B |
:104D400095C0241B350B809182019927BC01269FB9 |
:104D5000C001279F900D369F900D112460E170E0F7 |
:104D60000E94E72F09811A81061B170B2091C001B1 |
:104D70003091C101809180019927FC012E9FC001D3 |
:104D80002F9F900D3E9F900D112468E070E00E94CF |
:104D9000E72F061B170B6091190270911A02809180 |
:104DA0001B0290911C0220E032E040E050E00E94A3 |
:104DB0001C30CA01B90120918301332744275527AC |
:104DC0000E94B42F20E230E040E050E00E941C300E |
:104DD000FFEF2E3C3F0714F42EEC3FEF8091410291 |
:104DE00090914202AC0174E0440F551F7A95E1F7AF |
:104DF000481B590B2333310514F022E330E0021B2A |
:104E0000130BCA01800F911F60E170E00E94E72F31 |
:104E100070934202609341028091C40599276817FC |
:104E200079078CF429813A81281739072CF090935F |
:104E300042028093410207C049815A815093420245 |
:104E4000409341020DC080914102909142026981DC |
:104E50007A816817790724F47093420260934102C3 |
:104E600080914102909142029A838983C090030607 |
:104E7000D09004068091560290915702C81AD90A20 |
:104E800095E6C916D10424F064E6C62ED12C09C0DB |
:104E9000ECE9CE16EFEFDE0624F45CE9C52E5FEFF9 |
:104EA000D52E409078015090790160907A017090F1 |
:104EB0007B016091F7057091F80520912E023091E9 |
:104EC0002F024091BE025091BF02241B350B621B82 |
:104ED000730B882777FD8095982F0E94292E9B01C0 |
:104EE000AC01C301B2010E94502F0E940C2E70939E |
:104EF000D1026093D0028091D0029091D1028C01B6 |
:104F0000222717FD2095322F80915E0290915F023B |
:104F1000A0916002B0916102080F191F2A1F3B1F68 |
:104F200000935E0210935F0220936002309361024F |
:104F30001016110612061306ACF4C80117FF03C0C1 |
:104F4000909581959F4F60E071E00E94E72F6F5F21 |
:104F50007F4F882777FD8095982F061B170B280B0E |
:104F6000390B14C0C80117FF03C0909581959F4F5E |
:104F700060E071E00E94E72F6F5F7F4F882777FD29 |
:104F80008095982F060F171F281F391F00935E0268 |
:104F900010935F02209360023093610280915E0261 |
:104FA00090915F02A0916002B09161028138FEE3AE |
:104FB0009F07F0E0AF07F0E0BF072CF080E89EE32A |
:104FC000A0E0B0E009C08058914CAF4FBF4F64F4EF |
:104FD00080E891ECAFEFBFEF80935E0290935F02A9 |
:104FE000A0936002B09361026091D0027091D102EF |
:104FF00080907C0190907D01A0907E01B0907F0117 |
:10500000882777FD8095982F0E94292E7B018C019F |
:1050100060915E0270915F028091600290916102E6 |
:105020000E94292E9B01AC01C501B4010E94502FA2 |
:105030009B01AC01C801B7010E947E2D0E940C2E7D |
:105040009601260F371F49815A81240F351F2224CC |
:105050004A30510514F441E0242E37FD02C02220CD |
:1050600019F040E050E008C080910206482F552713 |
:10507000241735070CF4A9018091F905E82FFF27C3 |
:10508000FC83EB839F01E417F5070CF49A0120934E |
:10509000C40229813A81261B370BB9016C0D7D1D95 |
:1050A00077FD02C0222019F080E090E007C08091D7 |
:1050B00002069927681779070CF4CB012B813C81F4 |
:1050C000281739070CF49C012093C5026091F5055F |
:1050D0007091F60520913002309131024091C0026A |
:1050E0005091C102241B350B621B730B882777FD7F |
:1050F0008095982F0E94292E9B01AC01C301B2011B |
:105100000E94502F0E940C2E7093C3026093C20223 |
:105110008091C2029091C3028C01222717FD209535 |
:10512000322F80915A0290915B02A0915C02B09163 |
:105130005D02080F191F2A1F3B1F00935A0210938C |
:105140005B0220935C0230935D021016110612067A |
:105150001306ACF4C80117FF03C0909581959F4FCB |
:1051600060E071E00E94E72F6F5F7F4F882777FD37 |
:105170008095982F061B170B280B390B14C0C801FC |
:1051800017FF03C0909581959F4F60E071E00E94EA |
:10519000E72F6F5F7F4F882777FD8095982F060F49 |
:1051A000171F281F391F00935A0210935B02209388 |
:1051B0005C0230935D0280915A0290915B02A09153 |
:1051C0005C02B0915D0281383EE3930730E0A307B3 |
:1051D00030E0B3072CF080E89EE3A0E0B0E009C027 |
:1051E0008058914CAF4FBF4F64F480E891ECAFEF23 |
:1051F000BFEF80935A0290935B02A0935C02B0933E |
:105200005D026091C2027091C302882777FD80958C |
:10521000982F0E94292E7B018C0160915A02709177 |
:105220005B0280915C0290915D020E94292E9B019D |
:10523000AC01C501B4010E94502F9B01AC01C80113 |
:10524000B7010E947E2D0E940C2E29813A81260FE3 |
:10525000371F2C193D0937FD02C0222019F040E00C |
:1052600050E008C080910206482F552724173507C3 |
:105270000CF4A9012B813C81241735070CF49A0109 |
:105280002093EC0289819A81861B970BBC016C19D3 |
:105290007D0977FD02C0222019F020E030E008C02F |
:1052A00080910206282F3327621773070CF49B01A5 |
:1052B0008B819C81821793070CF4C9018093D602DD |
:1052C00024960FB6F894DEBF0FBECDBFDF91CF910D |
:1052D0001F910F91FF90EF90DF90CF90BF90AF9014 |
:1052E0009F908F907F906F905F904F903F902F9006 |
:1052F00008952F923F924F925F926F927F928F927A |
:105300009F92AF92BF92CF92DF92EF92FF920F9354 |
:105310001F93CF93DF93CDB7DEB764970FB6F894A2 |
:10532000DEBF0FBECDBF80917005882309F4BFC3D7 |
:105330008091BC029091BD0201969093BD02809332 |
:10534000BC028230910581F18330910524F40197EC |
:1053500009F090C008C08330910509F446C0049755 |
:1053600009F088C063C08091580590915905A091BB |
:105370005A05B0915B058093900290939102A0939F |
:105380009202B093930280915C0590915D05A0918B |
:105390005E05B0915F058093A0029093A102A09357 |
:1053A000A202B093A30266C080915805909159055E |
:1053B000A0915A05B0915B05809394029093950259 |
:1053C000A0939602B093970280915C0590915D0541 |
:1053D000A0915E05B0915F058093A4029093A50211 |
:1053E000A093A602B093A70245C080915805909162 |
:1053F0005905A0915A05B0915B058093980290934E |
:105400009902A0939A02B0939B0280915C059091BF |
:105410005D05A0915E05B0915F058093A802909311 |
:10542000A902A093AA02B093AB0224C080915805B0 |
:1054300090915905A0915A05B0915B0580939C020B |
:1054400090939D02A0939E02B0939F0280915C0571 |
:1054500090915D05A0915E05B0915F058093AC02CF |
:105460009093AD02A093AE02B093AF021092BD0232 |
:105470001092BC0260919002709191028091920210 |
:10548000909193022091940230919502409196025E |
:1054900050919702620F731F841F951F20919C02E9 |
:1054A00030919D0240919E0250919F02E09098029F |
:1054B000F090990200919A0210919B022E0D3F1DCF |
:1054C000401F511F620F731F841F951F24E030E09F |
:1054D00040E050E00E941C30CA01B9010E94292E10 |
:1054E0000E94332E0E940C2E5B016C016093C80257 |
:1054F0007093C9028093CA029093CB026091A0027C |
:105500007091A1028091A2029091A3022091A40225 |
:105510003091A5024091A6025091A702620F731F1D |
:10552000841F951F2091AC023091AD024091AE02D4 |
:105530005091AF02E090A802F090A9020091AA0257 |
:105540001091AB022E0D3F1D401F511F620F731FA4 |
:10555000841F951F24E030E040E050E00E941C30A2 |
:10556000CA01B9010E94292E0E94332E0E940C2EDE |
:105570007B018C016093F1027093F2028093F3023D |
:105580009093F4028091D4029091D502019709F092 |
:105590008EC28091250290912602181619060CF0F1 |
:1055A00086C28091DC029091DD02892B51F18091BD |
:1055B000580590915905A0915A05B0915B058093CB |
:1055C000CC029093CD02A093CE02B093CF028091F3 |
:1055D0005C0590915D05A0915E05B0915F0580939B |
:1055E000DE029093DF02A093E002B093E10282E337 |
:1055F00090E09093A8018093A7011092DD02109291 |
:10560000DC028091CC029091CD02A091CE02B091AB |
:10561000CF028A199B09AC09BD09898B9A8BAB8B88 |
:10562000BC8B2091E6023091E702442737FD40957C |
:10563000542FBC01CD010E94B42F5B016C0160931B |
:105640006402709365028093660290936702809172 |
:10565000DE029091DF02A091E002B091E1028E198A |
:105660009F09A00BB10B8D879E87AF87B88B2091C8 |
:10567000E6023091E702442737FD4095542FBC01E4 |
:10568000CD010E94B42F1B012C016093680270931E |
:10569000690280936A0290936B02809164059091F5 |
:1056A0006505A0916605B091670589879A87AB87E4 |
:1056B000BC872091E8023091E902309521953F4F57 |
:1056C000442737FD4095542FBC01CD010E94B42FD3 |
:1056D0003B014C01609374027093750280937602D3 |
:1056E000909377028091680590916905A0916A0571 |
:1056F000B0916B058D839E83AF83B8872091E802BC |
:105700003091E902309521953F4F442737FD409570 |
:10571000542FBC01CD010E94B42F69837A838B83FF |
:105720009C83609378027093790280937A029093BD |
:105730007B02E090E202F090E302A60CB71CC81CCA |
:10574000D91CC601B5010E94292E0E94332E5B018F |
:105750006C010027F7FC0095102FC801B7010E94CB |
:10576000292E9B01AC01C601B5010E94C62D0E94E5 |
:105770000C2E4B017093BF026093BE02E090E202D8 |
:10578000F090E30289819A81AB81BC81280E391E99 |
:105790004A1E5B1EC201B1010E94292E0E94332EB7 |
:1057A0005B016C010027F7FC0095102FC801B701C1 |
:1057B0000E94292E9B01AC01C601B5010E94C62D95 |
:1057C0000E940C2E9B017093C1026093C0028091D5 |
:1057D000D2029091D302881599052CF48091D202BF |
:1057E0009091D30211C08091D2029091D3029095F2 |
:1057F00081959F4F881699065CF48091D202909112 |
:10580000D302909581959F4F9093BF028093BE02E3 |
:105810008091D2029091D302821793072CF4809149 |
:10582000D2029091D30211C08091D2029091D30202 |
:10583000909581959F4F281739075CF48091D2028B |
:105840009091D302909581959F4F9093C102809340 |
:10585000C00289899A89AB89BC8980937C02909324 |
:105860007D02A0937E02B0937F028D859E85AF85D9 |
:10587000B8898093800290938102A0938202B093B2 |
:1058800083028091C30583FFACC08091E4029091B4 |
:10589000E50220911D0230911E02820F931F90930A |
:1058A0006302809362028091620290916302885643 |
:1058B000914054F080916202909163028856914029 |
:1058C0009093630280936202E0906202F090630220 |
:1058D0006091C0027091C102882777FD8095982F52 |
:1058E0000E94292E1B012C01A0906202B09063023D |
:1058F0000027F7FC0095102FC801B7010E94292E40 |
:105900000E94982FA20191010E94502F3B014C014F |
:10591000CC24B7FCC094DC2CC601B5010E94292E12 |
:105920000E94C02D7B018C016091BE027091BF026C |
:10593000882777FD8095982F0E94292E9B01AC0126 |
:10594000C801B7010E94502F9B01AC01C401B301F3 |
:105950000E947E2D0E94332E0E940C2E5B017093BC |
:10596000BF026093BE026091620270916302E09098 |
:105970006202F0906302882777FD8095982F0E943D |
:10598000292E0E94C02DA20191010E94502F3B019F |
:105990004C010027F7FC0095102FC801B7010E94A9 |
:1059A000292E0E94982F7B018C01CC24B7FCC09437 |
:1059B000DC2CC601B5010E94292E9B01AC01C80157 |
:1059C000B7010E94502F9B01AC01C401B3010E949A |
:1059D0007D2D0E94332E0E940C2E7093C102609385 |
:1059E000C0028091BE029091BF021816190694F46D |
:1059F00089859A85AB85BC854A97A105B10514F1C7 |
:105A000089899A89AB89BC898D599F4FAF4FBF4F08 |
:105A1000ACF418C0892BB1F089859A85AB85BC851B |
:105A2000875E9F4FAF4FBF4F6CF489899A89AB89CE |
:105A3000BC8984369105A105B10524F41092BF02FA |
:105A40001092BE028091C0029091C10218161906F0 |
:105A500094F48D819E81AF81B8854A97A105B105E7 |
:105A600014F18D859E85AF85B8898D599F4FAF4FB5 |
:105A7000BF4FACF418C0892BB1F08D819E81AF81EE |
:105A8000B885875E9F4FAF4FBF4F6CF48D859E8565 |
:105A9000AF85B88984369105A105B10524F410922B |
:105AA000C1021092C0021092D5021092D4026496E4 |
:105AB0000FB6F894DEBF0FBECDBFDF91CF911F911F |
:105AC0000F91FF90EF90DF90CF90BF90AF909F909D |
:105AD0008F907F906F905F904F903F902F900895A0 |
:105AE000FC014150504030F001900616D1F731973B |
:105AF000CF0108958827992708955058192E72D1FB |
:105B000001D022C1BA176207730784079507B1F164 |
:105B100088F40EF410940B2EBA2FA02D062E622FAF |
:105B2000202D072E732F302D082E842F402D092E67 |
:105B3000952F502DFF275523B9F0591B49F0573E9B |
:105B400098F0469537952795A795F0405395C9F756 |
:105B500076F0BA0F621F731F841F30F48795779514 |
:105B60006795B795F040939517FA0F2E0895BF1BD0 |
:105B7000BB27BA0B620B730B840BF6CFDEF65EC14C |
:105B800050E449EC3FE02BED87D0BBC02BD101D0D6 |
:105B9000DBC0552359F0992369F09F575F57951B38 |
:105BA00033F442F4903811F4915805C0E5C091588F |
:105BB0009F3F09F443C1BB27112462177307840771 |
:105BC00030F4660F771F881FBB1F915098F311D0D8 |
:105BD0000F920FD00F920DD0A0E826173707480775 |
:105BE0001B0609F0A048BA2F602D7F918F910024E9 |
:105BF0000895A0E80024621773078407B10528F010 |
:105C0000621B730B840BB1090A2A660F771F881F6A |
:105C1000BB1FA69581F7089597FBF0D09F3738F00A |
:105C2000FEE9F91B982F872F762F6B2F05C003C134 |
:105C30009695879577956795F150D0F73EF49095B6 |
:105C40008095709561957F4F8F4F9F4F0895E89491 |
:105C500003C097FB0EF4F3DFB62F672F782F892F41 |
:105C60009EE9002471C0D8D09F3760F40EF0E3C0E5 |
:105C70009FEB80E877276627089586957795679547 |
:105C8000B11D93959639C8F32EF4BB2319F06F5FBD |
:105C90007F4F8F4FBB2758C05F77552319F444239C |
:105CA0000AF06AC02F933F934F935F936FDF55279E |
:105CB0004427C6D05F914F913F912F91F1C00ED0F4 |
:105CC0005EF004C00BD026F001C008D019F020F41B |
:105CD0008FEF089580E0089581E0089597FB092EE5 |
:105CE000052600F8689481D0E89407FC07C0621785 |
:105CF00073078407950721F008F40094079498949B |
:105D000008951F939F7750EC49E43FE02BEDF6DEBA |
:105D100010E89F775FE349EC3FE02BED62177307D4 |
:105D20008407950720F050EC49E4E8DE112713D1F1 |
:105D30009068E0E7F0E023D091271F9108959A95AD |
:105D4000BB0F661F771F881F11249923A1F088239A |
:105D5000B2F79F3F59F0BB0F48F421F4002011F433 |
:105D600060FF04C06F5F7F4F8F4F9F4F881F9795D5 |
:105D7000879597F908955FC09FEF80EC0895FF9293 |
:105D8000EF92DF92CF92BF926B017C01B59016D05B |
:105D9000B590BB2069F09F938F937F936F93B6016B |
:105DA000C7010CD02F913F914F915F910E94C62D5A |
:105DB000BF90CF90DF90EF90FF900895D0D002C0B9 |
:105DC0009601A701EF93FF930E94502FFF91EF914F |
:105DD000C6D0EF93FF930E947E2DFF91EF91BA946E |
:105DE00079F70895052E092607FA440F551F5F3FDE |
:105DF00079F0AA27A51708F051E04795880F991F59 |
:105E00009F3F31F0BB27B91708F091E087950895BF |
:105E10009F919F911124B0CF97FB880F991F9F3FAF |
:105E200031F0BB27B91708F091E0879508959F914D |
:105E30009F911124A1CF6627772788279927089556 |
:105E4000EBDFCF93DF93D52FC42F5527442733277C |
:105E500022279923D9F09F37C8F0F92F75DF592FE2 |
:105E6000482F372F262FF63968F4D6DEF2DEC03001 |
:105E7000CD0721F069937993899399939058DF9195 |
:105E8000CF913CCE9927882777276627C030CD074A |
:105E900021F02993399349935993DF91CF9154CFAE |
:105EA000A1DF01D051CF992339F0552329F09F5715 |
:105EB0005F57950F13F49AF1C1CF91589F3FE1F3CB |
:105EC000629FA12D0F92BB27639FA00DB11DEE27EE |
:105ED000729FA00DB11DEE1FAF93AA27649FB00D56 |
:105EE000E11D739FB00DE11DAA1F6627829FB00DB3 |
:105EF000E11DA61F5527749FE00DA11D551F839F0F |
:105F0000E00DA11D561F849FA00D511D852F7A2FD6 |
:105F10006E2F1F900F9088231AF4939539F42CCF8D |
:105F2000000C111CBB1F661F771F881F01280895D6 |
:105F30009F939F77993358F050E449EC3FE02BED65 |
:105F4000ABDE5FEB49EC3FE02BEDD8DDDADE5F91B5 |
:105F50005078952708959B01AC010C94502F5591D2 |
:105F60004591359125910895629FD001739FF0016D |
:105F7000829FE00DF11D649FE00DF11D929FF00DD9 |
:105F8000839FF00D749FF00D659FF00D9927729F10 |
:105F9000B00DE11DF91F639FB00DE11DF91FBD019B |
:105FA000CF0111240895AA1BBB1B51E107C0AA1FF2 |
:105FB000BB1FA617B70710F0A61BB70B881F991FAA |
:105FC0005A95A9F780959095BC01CD01089597FB4E |
:105FD000092E07260AD077FD04D0E5DF06D0002081 |
:105FE0001AF4709561957F4F0895F6F79095819515 |
:105FF0009F4F0895A1E21A2EAA1BBB1BFD010DC0E5 |
:10600000AA1FBB1FEE1FFF1FA217B307E407F50768 |
:1060100020F0A21BB30BE40BF50B661F771F881F44 |
:10602000991F1A9469F760957095809590959B01DA |
:10603000AC01BD01CF01089597FB092E05260ED0B6 |
:1060400057FD04D0D7DF0AD0001C38F45095409596 |
:10605000309521953F4F4F4F5F4F0895F6F790953C |
:106060008095709561957F4F8F4F9F4F0895F99957 |
:10607000FECFB2BDA1BDF89A119600B40895F9996A |
:10608000FECFB2BDA1BD00BC11960FB6F894FA9A2E |
:08609000F99A0FBE0895FFCF3D |
:1060980001640A016400007D0000FF03010203049B |
:1060A80005060708090A48616C6C6F2057656C740F |
:1060B80000000000000000000000000000000000D8 |
:1060C80000000000000000000000000000000000C8 |
:1060D80000000000000000000000000000000000B8 |
:1060E80000000000000000000000000000000000A8 |
:1060F8000000000000000A014B616D65726100003C |
:106108004E6F726D616C00000000803F17B7D13888 |
:0A61180030FB103A403296020A6490 |
:00000001FF |
/branches/GPS_BETA_chris2798_hallo2/V0.71_Beta_HEX/readme.txt |
---|
0,0 → 1,80 |
GPS-Modifikation auf Basis der Original V0.6 by Holger Buss & Ingo Busker |
----- BETA V0.71----- |
Copyright by Christopher Hartmann und Daniel Schmitz. |
-Disclaimer- |
Wir übernehmen keinerlei Garantie für die Funktionstüchtigkeit dieser Software |
jegliche Änderung geschehen auf Eigene Gefahr |
für eventuelle Schäden übernehmen wir keinerlei Haftung |
!!!!!!!!!!!!!! WICHTIG !!!!!!!!!!!!! |
------------------------------------------------------------------------------------ |
DER HALBAUTONOME SCHWEBEFLUG MUSS VOM PILOTEN STEHTS ÜBERWACHT WERDEN! |
DER PILOT MUSS IN JEDER SITUATION IN DER LAGE SEIN, BEI FEHLFUNKTIONEN EINZUGREIFEN! |
------------------------------------------------------------------------------------ |
Parametrierung über Koptertool (getestet für MK mit 54cm Achsstand): |
--------------------------------------------------------------------- |
- ggf. aktivieren des Höhenreglers über Schalter |
- aktivieren der Option GPS |
- anpassen des ACC Wertes unter dem Reiter "Gyro" von 26 auf 50 |
- Userpara1. -> 5 |
- Userpara2. -> 23 |
- Userpara3. -> zwischen 42 und 46 |
ACHTUNG: |
Kompass arbeitet noch nicht richtig. Daher Kompass im MK Tool NICHT aktivieren! |
Der MK muss von Hand nach Norden ausgerichtet bleiben! |
___________________________________________________________________________________________________________________________________ |
Features: |
-Auslesen der GPS Daten im UBX Protokoll (modifizierte Version, - Original von Pitschu (Peter Schulten) ) |
- integrierter PD Regler - Parametrierung des P-, D-Anteils und Skalierungsanteils |
User Parameter 1: P-Regler, 2:D-Regler; 3: Skalierung |
- Rotationsmatrix für Kompass (funktioniert noch nicht richtig) |
- Postiton Hold (Aktivierung über Poti 1 ( 0=Aus , >0 =aktiviert) |
- kurzes Piepsen bestätigt Aktivierung des PositionHold (PH) |
- rote LED der Flight-Ctrl für Statusanzeige: (blinkend : GPS Aktiv) |
- Aktivierung des Postiton-Hold ohne Empfang von GPS unterbunden |
- Einbinden des GPS-Empfängers bitte Erklärung von PITSCHU aus XUFO-Forum entnehmen (http://forum.xufo.net/bb/viewtopic.php?t=5980) |
----- BAUDRATE jedoch einstellen auf 57600 ------ |
----- unter Messages muss statt: |
-NAV-POSLLH |
-NAV-POSUTM |
-NAV-VELNED |
für für Target1 folgendes aktiviert werden (siehe Pitschu Anleitung): |
-NAV-POSECEF |
-NAV-VELECEF |
____________________________________________________________________________________________________________________________________ |
in Planung: (TWI: teilweise Integriert, siehe Quelltext -- UNGETESTET -- ) |
- Kompass (TWI) |
-"Home Postition" (TWI) |
- Waypoint fliegen |
- Auslagerung auf externen Prozessor |
. |
/branches/GPS_BETA_chris2798_hallo2/_Settings.h |
---|
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 250 // in diesem Intervall werden Degugdaten ohne Aufforderung gesendet |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Sender |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define K_NICK 0 |
#define K_ROLL 1 |
#define K_GAS 2 |
#define K_GIER 3 |
#define K_POTI1 4 |
#define K_POTI2 5 |
#define K_POTI3 6 |
#define K_POTI4 7 |
// +++++++++++++++++++++++++++++++ |
// + Getestete Settings: |
// +++++++++++++++++++++++++++++++ |
// Setting: Kamera |
// Stick_P:3 |
// Stick_D:0 |
// Gyro_P: 175 |
// Gyro_I: 175 |
// Ki_Anteil: 10 |
// +++++++++++++++++++++++++++++++ |
// + Getestete Settings: |
// +++++++++++++++++++++++++++++++ |
// Setting: Normal |
// Stick_P:2 |
// Stick_D:8 |
// Gyro_P: 80 |
// Gyro_I: 150 |
// Ki_Anteil: 5 |
/branches/GPS_BETA_chris2798_hallo2/analog.c |
---|
0,0 → 1,155 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + 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; |
for(off=0; off < 250;off++) |
{ |
OCR0A = off; |
Delay_ms(50); |
printf("."); |
if(MessLuftdruck < 900) break; |
} |
DruckOffsetSetting = off; |
Delay_ms(200); |
} |
//####################################################################################### |
// |
SIGNAL(SIG_ADC) |
//####################################################################################### |
{ |
static unsigned char kanal=0,state = 0; |
signed int wert; |
ANALOG_OFF; |
switch(state++) |
{ |
case 0: |
wert = (signed int) AdNeutralGier - ADC; |
AccumulateGier += wert; // |
MessanzahlGier++; |
Mess_Integral_Gier += wert;// / 16; |
Mess_Integral_Gier2 += wert; |
kanal = 1; |
ZaehlMessungen++; |
break; |
case 1: |
wert = (signed int) ADC - AdNeutralRoll; |
Mess_IntegralRoll += wert; |
Mess_IntegralRoll2 += wert; |
if(ADC < 10) wert = -700; |
if(ADC > 1000) wert = +700; |
AccumulateRoll += wert; |
MessanzahlRoll++; |
kanal = 2; |
break; |
case 2: |
wert = (signed int) ADC - AdNeutralNick; |
Mess_IntegralNick += wert; |
Mess_IntegralNick2 += wert; |
if(ADC < 10) wert = -700; |
if(ADC > 1000) wert = +700; |
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_ay = ADC - NeutralAccX; |
accumulate_AccNick += Aktuell_ay; |
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/GPS_BETA_chris2798_hallo2/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/GPS_BETA_chris2798_hallo2/eeprom.c |
---|
--- GPS_BETA_chris2798_hallo2/fc.c (nonexistent) |
+++ GPS_BETA_chris2798_hallo2/fc.c (revision 130) |
@@ -0,0 +1,828 @@ |
+/*####################################################################################### |
+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 char Timeout = 0; |
+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; |
+ |
+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 = 50; // 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; |
+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(); |
+ } |
+ AdNeutralNick= abs(MesswertNick); |
+ AdNeutralRoll= abs(MesswertRoll); |
+ AdNeutralGier= abs(MesswertGier); |
+ 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; |
+ 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 = 70; // Wert : 0-250 |
+ EE_Parameter.Hoehe_ACC_Wirkung = 30; // Wert : 0-250 |
+ EE_Parameter.Hoehe_Verstaerkung = 2; // 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 = 90; // 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 = 5; |
+ 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; |
+ memcpy(EE_Parameter.Name, "Normal\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.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 = 90; // 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 = 5; |
+ 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.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; |
+ 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); |
+ |
+ unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
+ unsigned char ServoNickCompInvert; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
+ unsigned char ServoNickMin; // Wert : 0-250 // Anschlag |
+ unsigned char ServoNickMax; // Wert : 0-250 // Anschlag |
+ |
+ |
+ 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); |
+ |
+ Ki = (float) Parameter_I_Faktor * 0.0001; |
+ MAX_GAS = EE_Parameter.Gas_Max; |
+ MIN_GAS = EE_Parameter.Gas_Min; |
+} |
+ |
+ |
+//############################################################################ |
+// |
+void MotorRegler(void) |
+//############################################################################ |
+{ |
+ int motorwert,pd_ergebnis,h,tmp_int; |
+ int GierMischanteil,GasMischanteil; |
+ static long SummeNick=0,SummeRoll=0; |
+ static long sollGier = 0,tmp_long,tmp_long2; |
+ static int IntegralFehlerNick = 0; |
+ static int 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) beeptime = 500; |
+ 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; |
+/* Poti1 = 65; |
+ Poti2 = 48; |
+ Poti3 = 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; |
+ SetNeutral(); |
+ 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 |
+ } |
+ ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
+ Piep(GetActiveParamSetNumber()); |
+ if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
+ { |
+ if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
+ } |
+ } |
+ } |
+ 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; |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Bei Empfangsausfall im Flug |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(Notlandung) |
+ { |
+ StickGier = 0; |
+ StickNick = 0; |
+ StickRoll = 0; |
+ GyroFaktor = 0.1; |
+ IntegralFaktor = 0.005; |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// 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--; |
+ if(Mess_Integral_Gier2 <-500/DRIFT_FAKTOR) AdNeutralGier++; |
+ 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 |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick) / 16; |
+ tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll) / 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; |
+ ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
+ Mess_IntegralNick -= tmp_long; |
+ Mess_IntegralRoll -= tmp_long2; |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gieren |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ sollGier = StickGier; |
+ if(abs(StickGier) > 35) |
+ { |
+ if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX)) NeueKompassRichtungMerken = 1; |
+ } |
+ tmp_int = EE_Parameter.Gier_P * (sollGier * abs(sollGier)) / 256; // expo |
+ Mess_Integral_Gier -= tmp_int; |
+ if(Mess_Integral_Gier > 30000) Mess_Integral_Gier = 30000; // begrenzen |
+ if(Mess_Integral_Gier <-30000) Mess_Integral_Gier =-30000; |
+ |
+ ANALOG_ON; // ADC einschalten |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Kompass |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ //KompassValue = 12; |
+ 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 |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// GPS |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+if(EE_Parameter.GlobalConfig & CFG_GPS_AKTIV) |
+{ |
+ gps_p = Parameter_UserParam1; |
+ gps_d = Parameter_UserParam2; |
+ |
+ gps_main(); |
+} |
+else |
+{ |
+ GPS_Nick = 0; |
+ GPS_Roll = 0; |
+} |
+ |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Debugwerte zuordnen |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+DebugOut.Sekunden++; |
+ if(!TimerWerteausgabe--) |
+ { |
+ TimerWerteausgabe = 49; |
+// DebugOut.Analog[0] = MesswertNick; |
+// DebugOut.Analog[1] = MesswertRoll; |
+// DebugOut.Analog[2] = MesswertGier; |
+ 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[7] = GasMischanteil; |
+ DebugOut.Analog[8] = KompassValue; |
+// 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 |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ MesswertNick = IntegralNick * IntegralFaktor + MesswertNick * GyroFaktor; |
+ MesswertRoll = IntegralRoll * IntegralFaktor + MesswertRoll * GyroFaktor; |
+ MesswertGier = MesswertGier * (GyroFaktor/2) + Integral_Gier * IntegralFaktor; |
+ |
+ // 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 |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gier-Anteil |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ GierMischanteil = MesswertGier - sollGier; // Regler für Gier |
+ if(GierMischanteil > 100) GierMischanteil = 100; |
+ if(GierMischanteil < -100) GierMischanteil = -100; |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// 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 |
+ motorwert = GasMischanteil + pd_ergebnis + GierMischanteil; // Mischer |
+ if ((motorwert < 0) | (GasMischanteil < 10)) 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) | (GasMischanteil < 10)) 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 |
+ // Motor Links |
+ motorwert = GasMischanteil + pd_ergebnis - GierMischanteil; |
+ if ((motorwert < 0) | (GasMischanteil < 10)) 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) | (GasMischanteil < 10)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Rechts = motorwert; |
+ // +++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+} |
+ |
/branches/GPS_BETA_chris2798_hallo2/fc.h |
---|
0,0 → 1,106 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
#ifndef _FC_H |
#define _FC_H |
extern volatile unsigned char Timeout; |
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; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
unsigned char ServoNickCompInvert; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
unsigned char Reserved[7]; |
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/GPS_BETA_chris2798_hallo2/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/GPS_BETA_chris2798_hallo2/flight.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="Flight-Ctrl" x="true"></e></ViewState></pd> |
/branches/GPS_BETA_chris2798_hallo2/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/GPS_BETA_chris2798_hallo2/main.c |
---|
0,0 → 1,210 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + 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; |
// -- 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) |
{ |
return(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET])); |
} |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
unsigned int timer; |
unsigned int timer2 = 0; |
DDRC = 0x01; // 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 V%d.%d ", VERSION_HAUPTVERSION, VERSION_NEBENVERSION); |
printf("\n\r=============================="); |
GRN_ON; |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != 59) // seit V 0.60 |
{ |
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], 1); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], 59); |
} |
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(2500); |
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(); |
while (1) |
{ |
if (UpdateMotor) // ReglerIntervall |
{ |
UpdateMotor=0; |
MotorRegler(); |
SendMotorData(); |
ROT_OFF; |
if(PcZugriff) PcZugriff--; |
if(SenderOkay) SenderOkay--; |
if (UBat < EE_Parameter.UnterspannungsWarnung) |
{ |
beeptime = 2000; |
} |
if(!Timeout) |
{ |
i2c_init(); |
} |
else |
{ |
ROT_OFF; |
} |
} |
if(SIO_DEBUG) |
{ |
DatenUebertragung(); |
BearbeiteRxDaten(); |
} |
else BearbeiteRxDaten(); |
if(CheckDelay(timer2)) |
{ |
if(MotorenEin) PORTC ^= 0x10; else PORTC &= ~0x10; |
timer = SetDelay(500); |
} |
} |
return (1); |
} |
/branches/GPS_BETA_chris2798_hallo2/main.h |
---|
0,0 → 1,101 |
#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 PORTB &=~0x01 |
#define ROT_ON PORTB |= 0x01 |
#define ROT_FLASH PORTB ^= 0x01 |
#define GRN_OFF PORTB &=~0x02 |
#define GRN_ON PORTB |= 0x02 |
#define GRN_FLASH PORTD ^= 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_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 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 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[]; |
long durchschnitt_northing; |
long durchschnitt_easting; |
volatile int gps_p; //P-Anteil (10) |
volatile int gps_d; //D-Anteil (4) |
volatile int skal; //Skalierungsfaktor der Regelung (alter Wert: 10) (20) |
volatile int gps_gethome; |
#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/GPS_BETA_chris2798_hallo2/makefile |
---|
0,0 → 1,391 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega644 |
F_CPU = 20000000 |
#------------------------------------------------------------------- |
HAUPT_VERSION = 0 |
NEBEN_VERSION = 60 |
VERSION_KOMPATIBEL = 4 # 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/GPS_BETA_chris2798_hallo2/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,"V%d.%d",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 Kanäle ",PPM_in[7]); |
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 Kanäle ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]]); |
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/GPS_BETA_chris2798_hallo2/menu.h |
---|
0,0 → 1,5 |
extern void Menu(void); |
extern char DisplayBuff[80]; |
extern unsigned char DispPtr; |
unsigned char RemoteTasten; |
/branches/GPS_BETA_chris2798_hallo2/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/GPS_BETA_chris2798_hallo2/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/GPS_BETA_chris2798_hallo2/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/GPS_BETA_chris2798_hallo2/rc.c |
---|
0,0 → 1,85 |
/*####################################################################################### |
Decodieren eines RC Summen Signals |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "rc.h" |
#include "main.h" |
volatile int PPM_in[11]; |
volatile int PPM_diff[11]; // das diffenzierte Stick-Signal |
volatile unsigned char NewPpmData = 1; |
//############################################################################ |
//zum decodieren des PPM-Signals wird Timer1 mit seiner Input |
//Capture Funktion benutzt: |
void rc_sum_init (void) |
//############################################################################ |
{ |
TCCR1B=(1<<CS11)|(1<<CS10)|(1<<ICES1)|(1<<ICNC1);//|(1 << WGM12); //timer1 prescale 64 |
// PWM |
//TCCR1A = (1 << COM1B1) | (1 << WGM11) | (1 << WGM10); |
//TCCR1B |= (1 << WGM12); |
//OCR1B = 55; |
TIMSK1 |= _BV(ICIE1); |
AdNeutralGier = 0; |
AdNeutralRoll = 0; |
AdNeutralNick = 0; |
return; |
} |
//############################################################################ |
//Diese Routine startet und inizialisiert den Timer für RC |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int AltICR=0; |
signed int signal = 0; |
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; |
// Stabiles Signal |
if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10;} |
signal = (3 * (PPM_in[index]) + signal) / 4; |
//373 entspricht ca. 1.5ms also Mittelstellung |
PPM_diff[index] = signal - PPM_in[index]; |
PPM_in[index] = signal; |
} |
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/GPS_BETA_chris2798_hallo2/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/GPS_BETA_chris2798_hallo2/readme.txt |
---|
0,0 → 1,84 |
GPS-Modifikation auf Basis der Original V0.6 by Holger Buss & Ingo Busker |
----- BETA V0.2----- |
Copyright by Christopher Hartmann und Daniel Schmitz. |
-Disclaimer- |
Wir übernehmen keinerlei Garantie für die Funktionstüchtigkeit dieser Software |
jegliche Änderung geschehen auf Eigene Gefahr |
für eventuelle Schäden übernehmen wir keinerlei Haftung |
______ |
Parametrierung ist noch nicht abgeschlossen !!!! |
Kompass nicht integriert !!!! -> Ufo muss nach Norden ausgerichtet sein !!!!!! |
Im Koptertool nicht vergessen GPS zu aktivieren ! |
Testparamter : P:2 / D:2 |
________ ***************ÄNDERUNGEN**************************** |
folgende Änderungen am GPS-Empfänger vornehmen (siehe auch Pitschu Anleitung für Details) |
folgende Einstellungen werden nicht mehr benötigt (muss nicht zwingend deaktiviert werden) |
unter Messages: |
-NAV-POSLLH |
-NAV-POSUTM |
-NAV-VELNED |
folgende Einstellungen müssen aktiviert werden: (für Target1) |
unter Messages: |
-NAV-POSECEF |
-NAV-VELECEF |
_________****************************************************** |
features: |
-Auslesen der GPS Daten im UBX Protokoll (modifizierte Version, - Original von Pitschu (Peter Schulten) ) |
- integrierter PD Regler - Parametrierung des P-, D-Anteils (der D-Anteil sollte ggf. durch Änderung im Quelltext weiter verkleinert werden) |
User Parameter 1: P-Regler, 2:D-Regler |
- Rotationsmatrix für Kompass |
- Postiton Hold (Aktivierung über Poti 1 ( 0=Aus , >0 =aktiviert) |
- kruzes Piepsen bestätigt Aktivierung des PH |
- rote LED der Flight-Ctrl für Statusanzeige: (blinkend : GPS Aktiv) |
- Aktivierung des Postiton-Hold ohne Empfang von GPS unterbunden |
- Einbinden des GPS-Empfängers bitte Erklärung von PITSCHU aus XUFO-Forum entnehmen (http://forum.xufo.net/bb/viewtopic.php?t=5980) |
----- BAUDRATE einstellen auf 57600 ------ |
_____ |
in Planung: (TWI: teilweise Integriert, siehe Quelltext -- UNGETESTET -- ) |
- Kompass (TWI) |
- dynamische Parametrierung anhand der mittleren Abweichung der GPS Daten (höhrere Genauigkeit im PH) |
-"Home Postition" (TWI) |
- Eingangsdatenfilterung (Kompensation von Ungenauigkeit) |
- Auslagerung auf externen Prozessor |
. |
/branches/GPS_BETA_chris2798_hallo2/timer0.c |
---|
0,0 → 1,139 |
#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; |
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; |
// TCNT0 -= 250;//TIMER_RELOAD_VALUE; |
if(!cnt--) |
{ |
cnt = 9; |
cnt_1ms++; |
cnt_1ms %= 2; |
if(!cnt_1ms) UpdateMotor = 1; |
CountMilliseconds++; |
if(Timeout) Timeout--; |
} |
if(beeptime > 1) |
{ |
beeptime--; |
PORTD |= (1<<2); |
} |
else |
PORTD &= ~(1<<2); |
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; |
DebugOut.Analog[10] = ServoValue; |
OCR2A = ServoValue;// + 75; |
timer = EE_Parameter.ServoNickRefresh; |
} |
else |
{ |
TCCR2A =3; |
PORTD&=~0x80; |
} |
} |
/branches/GPS_BETA_chris2798_hallo2/timer0.h |
---|
0,0 → 1,14 |
#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; |
/branches/GPS_BETA_chris2798_hallo2/twimaster.c |
---|
0,0 → 1,131 |
/*############################################################################ |
############################################################################*/ |
#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); |
} |
//############################################################################ |
//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(); |
twi_state = 0; |
} |
} |
/branches/GPS_BETA_chris2798_hallo2/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/GPS_BETA_chris2798_hallo2/uart.c |
---|
0,0 → 1,656 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// + |
// + GPS read out: |
// + modified Version of the Pitschu Brushless Ufo - (c) Peter Schulten, Mülheim, Germany |
// + only for non-profit use |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#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; |
static uint8_t gpsState; |
#define GPS_EMPTY 0 |
#define GPS_SYNC1 1 |
#define GPS_SYNC2 2 |
#define GPS_CLASS 3 |
#define GPS_LEN1 4 |
#define GPS_LEN2 5 |
#define GPS_FILLING 6 |
#define GPS_CKA 7 |
#define GPS_CKB 8 |
//gpsInfo_t gpsPoints[5]; // stored position to fly to (currently only 1 target supported) |
//gpsInfo_t *gpsTarget; // points to one of the targets |
gpsInfo_t actualPos; // measured position (last gps record) |
#define SYNC_CHAR1 0xb5 |
#define SYNC_CHAR2 0x62 |
#define CLASS_NAV 0x01 |
#define MSGID_POSECEF 0x01 |
#define MSGID_STATUS 0x03 |
//#define MSGID_POSLLH 0x02 |
#define MSGID_VELECEF 0x11 |
//#define MSGID_POSUTM 0x08 |
//#define MSGID_VELNED 0x12 |
typedef struct { |
unsigned long ITOW; // time of week |
uint8_t GPSfix; // GPSfix Type, range 0..6 |
uint8_t Flags; // Navigation Status Flags |
uint8_t DiffS; // Differential Status |
uint8_t res; // reserved |
unsigned long TTFF; // Time to first fix (millisecond time tag) |
unsigned long MSSS; // Milliseconds since Startup / Reset |
uint8_t packetStatus; |
} NAV_STATUS_t; |
/* |
typedef struct { |
unsigned long ITOW; // time of week |
long LON; // longitude in 1e-07 deg |
long LAT; // lattitude |
long HEIGHT; // height in mm |
long HMSL; // height above mean sea level im mm |
unsigned long Hacc; // horizontal accuracy in mm |
unsigned long Vacc; // vertical accuracy in mm |
uint8_t packetStatus; |
} NAV_POSLLH_t; |
typedef struct { |
unsigned long ITOW; // time of week |
long EAST; // cm UTM Easting |
long NORTH; // cm UTM Nording |
long ALT; // cm altitude |
uint8_t ZONE; // UTM zone number |
uint8_t HEM; // Hemisphere Indicator (0=North, 1=South) |
uint8_t packetStatus; |
} NAV_POSUTM_t; |
typedef struct { |
unsigned long ITOW; // ms GPS Millisecond Time of Week |
long VEL_N; // cm/s NED north velocity |
long VEL_E; // cm/s NED east velocity |
long VEL_D; // cm/s NED down velocity |
unsigned long Speed; // cm/s Speed (3-D) |
unsigned long GSpeed; // cm/s Ground Speed (2-D) |
long Heading; // deg (1e-05) Heading 2-D |
unsigned long SAcc; // cm/s Speed Accuracy Estimate |
unsigned long CAcc; // deg Course / Heading Accuracy Estimate |
uint8_t packetStatus; |
} NAV_VELNED_t; |
*/ |
typedef struct { |
unsigned long ITOW; // ms GPS Millisecond Time of Week |
long ECEF_X; // ecef x / cm |
long ECEF_Y; // ecef y / cm |
long ECEF_Z; // ecef z / cm |
unsigned long Pacc; // Abweichung |
uint8_t packetStatus; |
} NAV_POSECEF_t ; |
typedef struct { |
unsigned long ITOW; // ms GPS Millisecond Time of Week |
long ECEFVX; // ecef x velocity cm/s |
long ECEFVY; // ecef y velocity cm/s |
long ECEFVZ; // ecef z velocity cm/s |
unsigned long SAcc; // Abweichung |
uint8_t packetStatus; |
} NAV_VELECEF_t; |
NAV_STATUS_t navStatus; |
NAV_POSECEF_t navPosECEF; |
NAV_VELECEF_t navVelECEF; |
//NAV_POSLLH_t navPosLlh; |
//NAV_POSUTM_t navPosUtm; |
//NAV_VELECEF avVelNed; |
volatile char *ubxP, *ubxEp, *ubxSp; // pointers to packet currently transfered |
volatile uint8_t CK_A, CK_B; // UBX checksum bytes |
volatile unsigned short msgLen; |
volatile uint8_t msgID; |
volatile uint8_t ignorePacket; // true when previous packet was not processed |
// distance to target position |
long rollOffset; // in 10cm |
long nickOffset; |
#define GPS_INTCYCLES 100 |
#define GPS_I_LIMIT (long)(40 * MAINLOOPS_PER_SEC) |
#ifdef GPS_DEBUG // if set then the GPS data is transfered to display |
extern volatile uint8_t v24state; |
char buf[200]; |
char *bp; |
char *ep; |
#endif |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ 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; |
} |
void GPSscanData (void) |
{ |
if (navPosECEF.packetStatus == 1) // valid packet |
{ |
actualPos.x = navPosECEF.ECEF_X; //ECEF X in cm |
actualPos.y = navPosECEF.ECEF_Y; //ECEF Y in cm |
actualPos.z = navPosECEF.ECEF_Z; //ECEF Z in cm |
navPosECEF.packetStatus = 0; |
} |
if (navStatus.packetStatus == 1) // valid packet |
{ |
actualPos.state = navStatus.GPSfix; |
navStatus.packetStatus = 0; |
} |
if (navVelECEF.packetStatus == 1) // valid packet |
{ |
actualPos.vx = navVelECEF.ECEFVX; //ECEF VEL X in cm/s |
actualPos.vy = navVelECEF.ECEFVY; //ECEF VEL Y in cm/s |
actualPos.vz = navVelECEF.ECEFVZ; //ECEF VEL Z in cm/s |
navVelECEF.packetStatus = 0; |
} |
/* |
if (navPosUtm.packetStatus == 1) // valid packet |
{ |
actualPos.northing = navPosUtm.NORTH; ///10; // in 10cm; |
actualPos.easting = navPosUtm.EAST; //10; |
actualPos.altitude = navPosUtm.ALT; //10; |
navPosUtm.packetStatus = 0; |
} |
if (navPosLlh.packetStatus == 1) |
navPosLlh.packetStatus = 0; |
if (navVelNed.packetStatus == 1){ |
actualPos.velNorth = navVelNed.VEL_N; |
actualPos.velEast = navVelNed.VEL_E; |
navVelNed.packetStatus = 0;} |
navPosLlh and navVelNed currently not used |
*/ |
if (actualPos.state != 0){ROT_ON;} //-> Rot blinkt mit 4Hz wenn GPS Signal brauchbar |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ 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; |
uint8_t c; |
uint8_t re; |
re = (UCSR0A & (_B1(FE0) | _B1(DOR0))); // any error occured ? |
c = SioTmp; |
#ifdef GPS_DEBUG |
*bp++ = c; |
if (bp >= (buf+200)) bp = buf; |
if (v24state == 0) |
{ |
v24state = 1; |
UDR0 = *ep++; |
if (ep >= buf+200) |
ep = buf; |
UCSR0B |= _B1(UDRIE0); //enable further irqs |
} |
#endif |
if (re == 0) |
{ |
switch (gpsState) |
{ |
case GPS_EMPTY: |
if (c == SYNC_CHAR1) |
gpsState = GPS_SYNC1; |
break; |
case GPS_SYNC1: |
if (c == SYNC_CHAR2) |
gpsState = GPS_SYNC2; |
else if (c != SYNC_CHAR1) |
gpsState = GPS_EMPTY; |
break; |
case GPS_SYNC2: |
if (c == CLASS_NAV) |
gpsState = GPS_CLASS; |
else |
gpsState = GPS_EMPTY; |
break; |
case GPS_CLASS: // msg ID seen: init packed receive |
msgID = c; |
CK_A = CLASS_NAV + c; |
CK_B = CLASS_NAV + CK_A; |
gpsState = GPS_LEN1; |
switch (msgID) |
{ |
case MSGID_STATUS: |
ubxP = (char*)&navStatus; |
ubxEp = (char*)(&navStatus + sizeof(NAV_STATUS_t)); |
ubxSp = (char*)&navStatus.packetStatus; |
ignorePacket = navStatus.packetStatus; |
break; |
case MSGID_POSECEF: |
ubxP = (char*)&navPosECEF; |
ubxEp = (char*)(&navPosECEF + sizeof(NAV_POSECEF_t)); |
ubxSp = (char*)&navPosECEF.packetStatus; |
ignorePacket = navPosECEF.packetStatus; |
break; |
case MSGID_VELECEF: |
ubxP = (char*)&navVelECEF; |
ubxEp = (char*)(&navVelECEF + sizeof(NAV_VELECEF_t)); |
ubxSp = (char*)&navVelECEF.packetStatus; |
ignorePacket = navVelECEF.packetStatus; |
break; |
/* |
case MSGID_POSLLH: |
ubxP = (char*)&navPosLlh; |
ubxEp = (char*)(&navPosLlh + sizeof(NAV_POSLLH_t)); |
ubxSp = (char*)&navPosLlh.packetStatus; |
ignorePacket = navPosLlh.packetStatus; |
break; |
case MSGID_POSUTM: |
ubxP = (char*)&navPosUtm; |
ubxEp = (char*)(&navPosUtm + sizeof(NAV_POSUTM_t)); |
ubxSp = (char*)&navPosUtm.packetStatus; |
ignorePacket = navPosUtm.packetStatus; |
break; |
case MSGID_VELNED: |
ubxP = (char*)&navVelNed; |
ubxEp = (char*)(&navVelNed + sizeof(NAV_VELNED_t)); |
ubxSp = (char*)&navVelNed.packetStatus; |
ignorePacket = navVelNed.packetStatus; |
break; |
*/ |
default: |
ignorePacket = 1; |
ubxSp = (char*)0; |
} |
break; |
case GPS_LEN1: // first len byte |
msgLen = c; |
CK_A += c; |
CK_B += CK_A; |
gpsState = GPS_LEN2; |
break; |
case GPS_LEN2: // second len byte |
msgLen = msgLen + (c * 256); |
CK_A += c; |
CK_B += CK_A; |
gpsState = GPS_FILLING; // next data will be stored in packet struct |
break; |
case GPS_FILLING: |
CK_A += c; |
CK_B += CK_A; |
if ( !ignorePacket && ubxP < ubxEp) |
*ubxP++ = c; |
if (--msgLen == 0) |
gpsState = GPS_CKA; |
break; |
case GPS_CKA: |
if (c == CK_A) |
gpsState = GPS_CKB; |
else |
gpsState = GPS_EMPTY; |
break; |
case GPS_CKB: |
if (c == CK_B && ubxSp) // No error -> packet received successfully |
*ubxSp = 1; // set packetStatus in struct |
gpsState = GPS_EMPTY; // ready for next packet |
break; |
default: |
gpsState = GPS_EMPTY; // ready for next packet |
} |
} |
else // discard any data if error occured |
{ |
gpsState = GPS_EMPTY; |
GPSscanData (); //Test kann ggf. wieder gelöscht werden! |
} |
GPSscanData (); |
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[1] == MeineSlaveAdresse || (RxdBuffer[1] == 'a')) && */(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); |
gpsState = GPS_EMPTY; |
} |
//--------------------------------------------------------------------------------------------- |
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) dis_zeile = 0; |
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/GPS_BETA_chris2798_hallo2/uart.h |
---|
0,0 → 1,118 |
#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[13]; |
unsigned int AnzahlZyklen; |
unsigned int Zeit; |
unsigned char Sekunden; |
unsigned int Analog[16]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
#define _B1(bit) (1 << (bit)) |
#define _B0(bit) (0 << (bit)) |
typedef struct { |
long x; // in cm (+ = north) |
long y; // in cm (+ = east) |
long z; // in cm |
long vx; |
long vy; |
long vz; |
//long groundSpeed; |
//long heading; |
uint8_t state; // status of data: 0 = invlid; 1 = valid |
uint8_t noSV; // number of sats |
} gpsInfo_t; |
extern gpsInfo_t lockedPos; // stored position to fly to |
extern gpsInfo_t actualPos; // measured position (last gps record) |
extern void GPSscanData (void); |
extern void GPSupdate(void); |
extern void GPSsaveTarget (uint8_t mode); |
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 |