/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/Flight-Ctrl_MEGA644_V0_67g.hex |
---|
112,17 → 112,17 |
:1006F00003C203C803CE03D303D803DD03E203E63A |
:1007000003EA03ED03F003F303F603F803FA03FC33 |
:1007100003FE03FF03FF03000400040011241FBEB7 |
:10072000CFEFD0E1DEBFCDBF13E0A0E0B1E0E8E362 |
:10073000FAE702C005900D92A23AB107D9F717E087 |
:10072000CFEFD0E1DEBFCDBF13E0A0E0B1E0EAE261 |
:10073000F9E702C005900D92A23AB107D9F717E088 |
:10074000A2EAB3E001C01D92A13CB107E1F70E940B |
:10075000EB030C941B3D0C94000022E030E0D90127 |
:100760000E94FD3C802D863028F082E0D901082EC1 |
:100770000E940A3D99270895FB01863008F085E024 |
:10075000EB030C94943C0C94000022E030E0D901AF |
:100760000E94763C802D863028F082E0D901082E48 |
:100770000E94833C99270895FB01863008F085E0AC |
:10078000282F2150842F9927A6E42A9FD0011124D5 |
:10079000A65FBF4F019724F001900E940A3DFACF57 |
:1007A000A2E0B0E0022E0E940A3D0895FB01282F2E |
:10079000A65FBF4F019724F001900E94833CFACFDF |
:1007A000A2E0B0E0022E0E94833C0895FB01282FB6 |
:1007B000863008F025E0842F99272150A6E42A9F4F |
:1007C000D0011124A65FBF4F019724F00E94FD3C89 |
:1007C000D0011124A65FBF4F019724F00E94763C10 |
:1007D0000192FACF08951F93CF93DF9314B815B801 |
:1007E000189B02C08BE001C08AE08093000181E881 |
:1007F00087B98FEF88B98BE184B981E085B98EE341 |
132,14 → 132,14 |
:1008300010920A0710920907109252041092510464 |
:100840001092500410924F04809100018A3011F4EC |
:10085000289801C0289A0E947C0C0E9423080E94BC |
:10086000F8150E94F40D0E9431150E94A939789460 |
:10086000F8150E94F40D0E9431150E9422397894E7 |
:100870001092080683E48093090687E080930A06B5 |
:100880002091000187E690E09F938F9383E490E0AE |
:100890009F938F931F921F92822F6AE00E94503C79 |
:1008A000892F99279F938F93822F0E94503C9927DD |
:100890009F938F931F921F92822F6AE00E94C93B01 |
:1008A000892F99279F938F93822F0E94C93B992765 |
:1008B0009F938F938DEB91E09F938F931F920E9454 |
:1008C000030A8CE991E09F938F931F920E94030A81 |
:1008D000299AA1E0B0E00E94FD3C802D2DB73EB7E3 |
:1008D000299AA1E0B0E00E94763C802D2DB73EB76A |
:1008E000205F3F4F2DBF843409F43FC08DE691E077 |
:1008F0009F938F931F920E94030A0E942F2310E060 |
:100900000F900F900F90123049F40E949D2246E400 |
147,14 → 147,14 |
:100920000E940C2246E461E377E083E00E94BC036E |
:1009300014E002C0143010F00E949D2246E461E3EE |
:1009400077E0812F0E94BC031F5F1630E0F283E046 |
:1009500022E030E0D901082E0E940A3D84E42150B3 |
:100960003040D901082E0E940A3DC4E0D0E0DE01EB |
:100970000E94FD3C802D853050F084E591E09F93EE |
:1009500022E030E0D901082E0E94833C84E421503B |
:100960003040D901082E0E94833CC4E0D0E0DE0173 |
:100970000E94763C802D853050F084E591E09F9375 |
:100980008F931F920E94030A0F900F900F9022974F |
:10099000DE010E94FD3C802D863028F082E0DE01E1 |
:1009A000082E0E940A3D46E461E377E00E94D603E8 |
:1009B000DE010E94FD3C802D863028F082E0DE01C1 |
:1009C000082E0E940A3D99279F938F9389E391E017 |
:10099000DE010E94763C802D863028F082E0DE0168 |
:1009A000082E0E94833C46E461E377E00E94D60370 |
:1009B000DE010E94763C802D863028F082E0DE0148 |
:1009C000082E0E94833C99279F938F9389E391E09F |
:1009D0009F938F931F920E94030A84EF91E00E94DD |
:1009E0009A0CEC010F900F900F900F900F90CE018A |
:1009F0000E94A30C8823D9F3E0913307FF27EE0F61 |
161,7 → 161,7 |
:100A0000FF1FEB5FF84F8081918185369105C4F01F |
:100A1000E0913407FF27EE0FFF1FEB5FF84F808157 |
:100A200091818536910564F084E291E09F938F93E4 |
:100A30001F920E94030A0E94DD380F900F900F90C2 |
:100A30001F920E94030A0E9456380F900F900F9049 |
:100A40008091390780FF20C087E091E09F938F93CA |
:100A50001F920E94030A88EE93E00E949A0CEC0118 |
:100A60000E9460100F900F900F90CE010E94A30C77 |
245,7 → 245,7 |
:100F40008E2F8295869586958370842B835C8A8309 |
:100F5000EF73E35CEB830C5F1F4F1496772309F06C |
:100F6000B7CFC8010E942507E6E0CDB7DEB70C94E5 |
:100F7000E83C1F93CF93DF93EC0170E0A22FBB27D7 |
:100F7000613C1F93CF93DF93EC0170E0A22FBB275E |
:100F8000129748C0E42FFF27EE5EF94F30814F5F84 |
:100F9000E42FFF27EE5EF94F50814F5FE42FFF27CC |
:100FA000EE5EF94F10814F5FE42FFF27EE5EF94FA1 |
280,10 → 280,10 |
:101170008F5C0E9453078091A503882371F08091B2 |
:101180000101882351F02AE048E056E06091CE0446 |
:1011900086E50E9453071092A5030895A2E0B0E0EF |
:1011A000E4EDF8E00C94CF3C8091A703882309F488 |
:1011A000E4EDF8E00C94483C8091A703882309F40F |
:1011B000CDC08FEF80930301809114069927AA2751 |
:1011C000BB27FC01E156F040E631F10508F0BCC058 |
:1011D000E85CFF4F0C94F73C2091AA0343E062E0E7 |
:1011D000E85CFF4F0C94703C2091AA0343E062E06E |
:1011E000CE0101960E94B907898180930201ACC0AB |
:1011F0002091AA0343E06BE08DEF95E00E94B907D0 |
:101200008091E6039091FF05892B8093E60381E0AE |
301,13 → 301,13 |
:1012C00057E0612F855B0E9453073EC02091AA031F |
:1012D00043E066E481E397E00E94B9078091140639 |
:1012E00046E461E377E08B560E94BC0380911406CC |
:1012F0008B56A2E0B0E0082E0E940A3D60915C0788 |
:1012F0008B56A2E0B0E0082E0E94833C60915C0710 |
:1013000077278827992724EC39E040E050E00E94B5 |
:10131000313C609387037093880380938903909393 |
:101320008A0360915D077727882799270E94313CBF |
:10131000AA3B60938703709388038093890390931B |
:101320008A0360915D077727882799270E94AA3B47 |
:1013300060938B0370938C0380938D0390938E0343 |
:101340000E94AD030E94F7211092A703E3E0CE5F55 |
:101350000C94EB3C982F8091EA06813069F48091DF |
:101350000C94643C982F8091EA06813069F4809166 |
:10136000E503E82FFF27E65EFC4F90838F5F8093B5 |
:10137000E50321E030E005C0892F0E941108282FE5 |
:101380003327C90108951F93182F04C080E30E94DA |
319,7 → 319,7 |
:1013E0001F93CF93DF938C01EB0106C0F80181912D |
:1013F0008F010E94AA0921972097C1F7DF91CF9111 |
:101400001F910F910895A3E3B0E0E9E0FAE00C9496 |
:10141000C03C29968FAD29978093EA06CE01855B63 |
:10141000393C29968FAD29978093EA06CE01855BEA |
:101420009F4F9D838C832B968EAD9FAD2B979FA74F |
:101430008EA722243324210102C0130124010EA50A |
:101440001FA502C00F5F1F4FF801F490FF2019F095 |
365,7 → 365,7 |
:1016C000D10489F488E28E838EE68F8385E788874C |
:1016D0008CE689878A8789E28B871C8666E0C62E1E |
:1016E000D12CCC0EDD1EF9A9F7FD13C04F2F5527C5 |
:1016F00047FD509560E070E0C6010E94BC3A00973B |
:1016F00047FD509560E070E0C6010E94353A0097C2 |
:1017000011F419A90DC08C1919A981174CF4182FBF |
:1017100007C0F60101900020E9F731971E2F1C1930 |
:1017200019824201310140E094C085E5B81631F0DC |
378,10 → 378,10 |
:1017900061F4E9A9EE2349F46624772443015EE26B |
:1017A000C52ED12CCC0EDD1E3EC04EE2C42ED12C57 |
:1017B000CC0EDD1EF8A9EF2EFF2400271127C20151 |
:1017C000B101A80197010E94833C6A3020F430E304 |
:1017C000B101A80197010E94FC3B6A3020F430E38C |
:1017D000A32EA60E08C027E5A22EA60E88E5B816F1 |
:1017E00011F49FEDA922F601A2926F01C201B1018D |
:1017F000A80197010E94833C39014A012E143F043D |
:1017F000A80197010E94FC3B39014A012E143F04C5 |
:101800004006510618F019012A01D9CFF8A9F8307D |
:1018100051F48BA983FF07C090E3A91621F080E360 |
:10182000F60182936F01CE018C19182F125D49A920 |
397,7 → 397,7 |
:1018C0004F16510421F48AA98A190E94C309802F56 |
:1018D0000E94C309612F772767FD7095C6010E949A |
:1018E000EF09E4FEAACD8AA98A190E94CE09A5CDE6 |
:1018F000E2E1CD5C0C94DC3C82E085BD83EA84BDF2 |
:1018F000E2E1CD5C0C94553C82E085BD83EA84BD79 |
:1019000017BC88E788BD96E096BD83EC8093B00055 |
:101910009093B100E0E7F0E0808182608083EEE6A2 |
:10192000F0E08081816080838AE08093B300109230 |
412,11 → 412,11 |
:1019B000C20380916607E0905307209101043091A3 |
:1019C0000204409103045091040480FF18C0FF24D6 |
:1019D00000271127CA01B90120E830E040E050E0BB |
:1019E0000E94A53CC801B7010E94313C20E032E0D2 |
:1019F00040E050E00E94A53CC20FD31F17C0FF2457 |
:1019E0000E941E3CC801B7010E94AA3B20E032E0E1 |
:1019F00040E050E00E941E3CC20FD31F17C0FF24DE |
:101A000000271127CA01B90120E830E040E050E08A |
:101A10000E94A53CC801B7010E94313C20E032E0A1 |
:101A200040E050E00E94A53CC21BD30BD093C303FF |
:101A10000E941E3CC801B7010E94AA3B20E032E0B0 |
:101A200040E050E00E941E3CC21BD30BD093C30386 |
:101A3000C093C2032091C2033091C3038091540725 |
:101A400099272817390734F080915507992782176D |
:101A5000930724F49093C3038093C2038091C2033D |
436,7 → 436,7 |
:101B300082239323892BD1F406C08FEF9FEF9093DC |
:101B4000050380930403809100018A3039F404C0B6 |
:101B50005A9A05C0479A03C05A9801C04798809185 |
:101B6000390783FF08C00E94AB3805C0809100018F |
:101B6000390783FF08C00E94243805C08091000116 |
:101B70008A3081F7EDCFFF91EF91BF91AF919F91A7 |
:101B80008F917F916F915F914F913F912F910F9026 |
:101B90000FBE0F901F9018952091BD033091BE038A |
450,7 → 450,7 |
:101C10006F937F938F939F93AF93BF93CF93DF93F4 |
:101C2000EF93FF9310927A008091E103D82ED39422 |
:101C3000D092E103E82FFF27EB30F10508F022C234 |
:101C4000E25BFF4F0C94F73C809178009091790013 |
:101C4000E25BFF4F0C94703C80917800909179009A |
:101C50009093E0038093DF0381E08093E20380911F |
:101C6000D9039091DA0301969093DA038093D90314 |
:101C7000FFC180917800909179009093DE0380936A |
457,7 → 457,7 |
:101C8000DD0390C080917800909179009093DC03FF |
:101C90008093DB0384E070C14091080350910903F5 |
:101CA00080917800909179009A01220F331F240FC0 |
:101CB000351F63E070E00E945C3C260F371F3695AD |
:101CB000351F63E070E00E94D53B260F371F369535 |
:101CC000279536952795309309032093080386E0DE |
:101CD00053C18091FB039091FC03209178003091D7 |
:101CE0007900821B930B9093EC068093EB06809116 |
478,28 → 478,28 |
:101DD0007900820F931F9093C6038093C50385E01B |
:101DE000CBC06091780070917900E090FD03F09095 |
:101DF000FE030091FF0310910004882777FD809572 |
:101E0000982F0E946F3BA80197010E94C93A0E9437 |
:101E1000523B7093D0036093CF032091CF03309156 |
:101E0000982F0E94E83AA80197010E94423A0E9446 |
:101E1000CB3A7093D0036093CF032091CF033091DE |
:101E2000D003E091EB06F091EC068091F6069091DC |
:101E3000F70697FF03C0909581959F4F64E070E08F |
:101E40000E94703CEB01CF01F7FF03C09095819594 |
:101E50009F4F64E070E00E94703C260F371F2C0FEC |
:101E40000E94E93BEB01CF01F7FF03C0909581951C |
:101E50009F4F64E070E00E94E93B260F371F2C0F74 |
:101E60003D1F3093D0032093CF038091CF039091F7 |
:101E7000D003029704F16091FD037091FE038091FD |
:101E8000FF039091000420E030E048E454E40E9415 |
:101E9000793B88230CF03CC06091FD037091FE03F8 |
:101E9000F23A88230CF03CC06091FD037091FE0380 |
:101EA0008091FF03909100042AE037ED43EA5CE360 |
:101EB0000E94CA3A25C08091CF039091D0038F5FD2 |
:101EB0000E94433A25C08091CF039091D0038F5F59 |
:101EC0009F4F34F56091FD037091FE038091FF03F5 |
:101ED0009091000420E030E046E154E40E947C3B15 |
:101ED0009091000420E030E046E154E40E94F53A9D |
:101EE0001816B4F46091FD037091FE038091FF0316 |
:101EF000909100042AE037ED43EA5CE30E94C93A7E |
:101EF000909100042AE037ED43EA5CE30E94423A05 |
:101F00006093FD037093FE038093FF03909300049E |
:101F100081E08093D603809178009091790090932E |
:101F2000EE068093ED06E090CF03F090D0030027FB |
:101F3000F7FC0095102F8091390490913A04A091FC |
:101F40003B04B0913C04E80EF91E0A1F1B1FC80198 |
:101F5000B70120E034E040E050E00E94A53CE21AE6 |
:101F5000B70120E034E040E050E00E941E3CE21A6D |
:101F6000F30A040B150BE0923904F0923A04009343 |
:101F70003B0410933C0483E08093E20379C080919A |
:101F8000FB069091FC062091780030917900820F39 |
513,7 → 513,7 |
:102000000D03882777FD8095982FA8019701220F4F |
:10201000331F441F551F2E0D3F1D401F511F620FC0 |
:10202000731F841F951F24E030E040E050E00E94C1 |
:10203000A53C20930A0330930B0340930C03509369 |
:102030001E3C20930A0330930B0340930C035093F0 |
:102040000D032091EF063091F00680910A039091E4 |
:102050000B03A0910C03B0910D03281B390B309397 |
:102060005704209356041092FC061092FB060AC0F7 |
522,7 → 522,7 |
:10209000FF91EF91DF91CF91BF91AF919F918F9180 |
:1020A0007F916F915F914F913F912F911F910F9170 |
:1020B000FF90EF90DF900F900FBE0F901F9018953C |
:1020C000CF93DF93A3E0B0E00E94FD3C802DC82FAA |
:1020C000CF93DF93A3E0B0E00E94763C802DC82F31 |
:1020D000DD27C531D10508F02A97C7BD84E690E019 |
:1020E0000E94CC0D80910E0390910F038255934076 |
:1020F000D0F4C0E0D0E017C0C7BD82E390E00E94FA |
529,7 → 529,7 |
:10210000CC0D81EF91E09F938F931F920E94030A61 |
:1021100080910E0390910F030F900F900F908458B1 |
:10212000934020F02196CA3FD10530F3A3E0B0E000 |
:102130000C2E0E940A3DC093F8068CE291E00E94AA |
:102130000C2E0E94833CC093F8068CE291E00E9432 |
:10214000CC0DDF91CF910895EAE1F3E080E2819335 |
:1021500093E0EA36F907D9F708951F938091E603D3 |
:10216000282F3327C90181709070682F8823A9F028 |
543,11 → 543,11 |
:1021E00086E095E09F938F9381E08F930E94030A8E |
:1021F0008091E7030F900F900F900F900F90E82FB2 |
:10220000FF27ED30F10508F023C4E75AFF4F0C9487 |
:10221000F73C1092E50384EF94E09F938F9311E0D5 |
:10221000703C1092E50384EF94E09F938F9311E05C |
:102220001F930E94030A84E18093E503209100013B |
:1022300087E690E09F938F9383E490E09F938F9342 |
:102240001F921F92822F6AE00E94503C892F99278B |
:102250009F938F93822F0E94503C99279F938F9337 |
:102240001F921F92822F6AE00E94C93B892F992713 |
:102250009F938F93822F0E94C93B99279F938F93BF |
:102260008FED94E09F938F931F930E94030A88E25F |
:102270008093E5030E94AD0399279F938F9382ED8E |
:1022800094E09F938F931F930E94030A8CE38093A3 |
567,11 → 567,11 |
:102360000696E5CF1092E50387E694E09F938F935E |
:1023700011E01F930E94030A84E18093E5036091BA |
:10238000010470910204809103049091040420E000 |
:1023900034E040E050E00E94A53C5F934F933F93B0 |
:1023900034E040E050E00E941E3C5F934F933F9337 |
:1023A0002F9388E594E09F938F931F930E94030AD5 |
:1023B00088E28093E5036091090470910A0480919A |
:1023C0000B0490910C0420E034E040E050E00E94C7 |
:1023D000A53C5F934F933F932F9389E494E09F93A1 |
:1023D0001E3C5F934F933F932F9389E494E09F9328 |
:1023E0008F931F930E94030A8CE38093E5038091EF |
:1023F0003D0490913E049F938F938AE394E09F93D2 |
:102400008F931F930E94030A8DB79EB746968FCF76 |
613,14 → 613,14 |
:10264000030A8CE38093E5038091F3039091F403F4 |
:102650009F938F938091A0079091A1079F938F9351 |
:102660008FE793E04BC084E18093E5032091C5039D |
:102670003091C603CF0162E070E00E94703C7F930E |
:102670003091C603CF0162E070E00E94E93B7F9396 |
:102680006F932E1B3F0B3F932F9380E793E09F9315 |
:102690008F931F930E94030A88E28093E503E091E1 |
:1026A000F103F091F2032091C7033091C803CF01E9 |
:1026B00062E070E00E94703C7F936F932E1B3F0B93 |
:1026B00062E070E00E94E93B7F936F932E1B3F0B1B |
:1026C0003F932F9381E693E09F938F931F930E94F4 |
:1026D000030A8CE38093E5038091F3039091F40364 |
:1026E00062E070E00E94703C7F936F938091A0073E |
:1026E00062E070E00E94E93B7F936F938091A007C6 |
:1026F0009091A1079F938F9382E593E09F938F938F |
:102700001F930E94030A8DB79EB7459610CE109274 |
:10271000E50385E493E09F938F9311E01F930E945C |
631,7 → 631,7 |
:102760003091CC039F938F933F932F9387E293E015 |
:102770009F938F931F930E94030A8CE38093E5033A |
:102780006091FD037091FE038091FF03909100041E |
:102790000E94523B7F936F938091880790918907A5 |
:102790000E94CB3A7F936F9380918807909189072D |
:1027A0009F938F9388E193E09F938F931F930E9451 |
:1027B000030A8DB79EB74896BACD84E18093E503AE |
:1027C00080910803909109039F938F9389E093E090 |
682,7 → 682,7 |
:102A900080E090E008951F920F920FB60F921124DC |
:102AA0008F939F93EF93FF938091E8038F5F8093C1 |
:102AB000E8038150E82FFF27E830F10508F064C0F3 |
:102AC000EA59FF4F0C94F73C8091E903880F8E5A26 |
:102AC000EA59FF4F0C94703C8091E903880F8E5AAD |
:102AD00009C08091E9038F5F8093E903815027C08B |
:102AE00080917B071092B9008093BB0085E88093AA |
:102AF000BC004AC084E98093BC008091E903843023 |
718,7 → 718,7 |
:102CD0004CF480914E04883C28F480914E04865F29 |
:102CE00080934E04FE01EE0FFF1F8F010B5F184F04 |
:102CF000D8012D913C91C901880F991F820F931F14 |
:102D0000840F951F64E070E00E94703CD8018D91A3 |
:102D0000840F951F64E070E00E94E93BD8018D912B |
:102D10009C9111979B01281B390BE55EF84F31837D |
:102D2000208311967C936E93FE013196F093EC0311 |
:102D3000E093EB03E530F10511F45D9A05C05D9871 |
725,7 → 725,7 |
:102D4000369711F45C9A01C05C98FF91EF91DF9186 |
:102D5000CF91BF91AF919F918F917F916F915F9133 |
:102D60004F913F912F911F910F910F900FBE0F9098 |
:102D70001F901895A2E1B0E0E0ECF6E10C94C03CA5 |
:102D70001F901895A2E1B0E0E0ECF6E10C94393C2C |
:102D80008091C9039091CA034090F3035090F403DB |
:102D9000481A590A5092A1074092A0078091C70390 |
:102DA0009091C803988B8F87A091F103B091F203A3 |
733,17 → 733,17 |
:102DC0008091EF039091F0039C878B876091CD03F6 |
:102DD0007091CE03E0909D07F0909E070027F7FCCE |
:102DE0000095102F882777FD8095982F2CE030E0F4 |
:102DF00040E050E00E94313CE60EF71E081F191F0C |
:102E0000C801B70122E030E040E050E00E94A53C5C |
:102DF00040E050E00E94AA3BE60EF71E081F191F94 |
:102E0000C801B70122E030E040E050E00E941E3CE3 |
:102E100030939E0720939D076091CB037091CC0364 |
:102E2000E090A707F090A8070027F7FC0095102F67 |
:102E3000882777FD8095982F2CE030E040E050E027 |
:102E40000E94313CE60EF71E081F191FC801B7018A |
:102E500022E030E040E050E00E94A53C3093A8071B |
:102E40000E94AA3BE60EF71E081F191FC801B70112 |
:102E500022E030E040E050E00E941E3C3093A807A2 |
:102E60002093A7072091CF033091D003609188076A |
:102E700070918907882777FD8095982F442737FD23 |
:102E80004095542F620F731F841F951F22E030E07E |
:102E900040E050E00E94A53C3093890720938807CA |
:102E900040E050E00E941E3C309389072093880751 |
:102EA0002091CD033091CE03C901880F991F820F65 |
:102EB000931F880F991F880F991FAA2797FDA09528 |
:102EC000BA2F2091110430911204409113045091B3 |
755,10 → 755,10 |
:102F20004A1F5B1F20931504309316044093170427 |
:102F300050931804E090ED06F090EE06A090FD038B |
:102F4000B090FE03C090FF03D0900004609119047C |
:102F500070911A0480911B0490911C040E946F3B95 |
:102F500070911A0480911B0490911C040E94E83A1D |
:102F60003B014C010027F7FC0095102FC801B70169 |
:102F70000E946F3BA60195010E94C93A9B01AC01DA |
:102F8000C401B3010E94CA3A0E94523B60931904E3 |
:102F70000E94E83AA60195010E94423A9B01AC01E9 |
:102F8000C401B3010E94433A0E94CB3A60931904F2 |
:102F900070931A0480931B0490931C045201CC2458 |
:102FA000B7FCC094DC2C60903104709032048090A7 |
:102FB0003304909034046A0C7B1C8C1C9D1C609222 |
769,14 → 769,14 |
:103000005FC080915F04882309F05AC0809139071E |
:1030100086FF56C0E0906C04FF24002711276091C2 |
:10302000210470912204809123049091240420E0D3 |
:1030300030E140E050E00E94A53CCA01B901A8017E |
:1030400097010E94313C9B01AC01C601B5010E9471 |
:10305000313C20E038E040E050E00E94A53C209365 |
:1030300030E140E050E00E941E3CCA01B901A80105 |
:1030400097010E94AA3B9B01AC01C601B5010E94F9 |
:10305000AA3B20E038E040E050E00E941E3C209374 |
:10306000B5043093B6044093B7045093B80460910C |
:10307000290470912A0480912B0490912C0420E063 |
:1030800030E140E050E00E94A53CCA01B901A8012E |
:1030900097010E94313C9B01AC01C601B5010E9421 |
:1030A000313C20E038E040E050E00E94A53C209315 |
:1030800030E140E050E00E941E3CCA01B901A801B5 |
:1030900097010E94AA3B9B01AC01C601B5010E94A9 |
:1030A000AA3B20E038E040E050E00E941E3C209324 |
:1030B000B1043093B2044093B3045093B40410C0ED |
:1030C0001092B1041092B2041092B3041092B4049E |
:1030D0001092B5041092B6041092B7041092B8047E |
785,8 → 785,8 |
:10310000A091B304B091B4048A839B83AC83BD8344 |
:1031100080916D04282E332444245524EF84F888AC |
:10312000A989BA89EA1AFB0AEE81FF81EE0EFF1E19 |
:103130006A817B818C819D81A20191010E94313C39 |
:1031400020E032E040E050E00E94A53CE20EF31E99 |
:103130006A817B818C819D81A20191010E94AA3BC1 |
:1031400020E032E040E050E00E941E3CE20EF31E20 |
:10315000F0927A07E09279079701442737FD40956E |
:10316000542F80912D0490912E04A0912F04B091A2 |
:103170003004820F931FA41FB51F80932D049093DA |
815,8 → 815,8 |
:1032E00079078091C7039091C803835F974034F0BA |
:1032F00080ED97E090937A0780937907ED84FE84C0 |
:103300008B859C85E81AF90AAA81BB81EA1AFB0A17 |
:103310006E817F8188859985A20191010E94313C4F |
:1033200020E032E040E050E00E94A53CE21AF30ABF |
:103310006E817F8188859985A20191010E94AA3BD7 |
:1033200020E032E040E050E00E941E3CE21AF30A46 |
:10333000F0928207E09281079701442737FD40957C |
:10334000542F8091250490912604A0912704B091D8 |
:103350002804820F931FA41FB51F80932504909308 |
891,13 → 891,13 |
:1037A0004A0480914C0490914D0497FF05C01092FB |
:1037B0004D0410924C040AC08F3F910539F034F04B |
:1037C0008FEF90E090934D0480934C04E2E1CE5E45 |
:1037D0000C94DC3C10927A008091C5039091C60352 |
:1037D0000C94553C10927A008091C5039091C603D9 |
:1037E00090938207809381078091C7039091C803CB |
:1037F00090937A07809379078091C9039091CA03C7 |
:103800009093A1078093A0076091CD037091CE03A0 |
:10381000882777FD8095982F2CE030E040E050E03D |
:103820000E94313C70939E0760939D076091CB038B |
:103830007091CC03882777FD8095982F0E94313CAA |
:103820000E94AA3B70939E0760939D076091CB0313 |
:103830007091CC03882777FD8095982F0E94AA3B32 |
:103840007093A8076093A7078091CF039091D0034E |
:1038500090938907809388078FEE80937A00209158 |
:1038600046043091470480913507E82FFF27EE0F7B |
930,7 → 930,7 |
:103A100090914D0497FF05C010924D0410924C04F4 |
:103A20000AC08F3F910539F034F08FEF90E090930A |
:103A30004D0480934C0460915C0777278827992771 |
:103A400024EC39E040E050E00E94313C6093870371 |
:103A400024EC39E040E050E00E94AA3B60938703F9 |
:103A5000709388038093890390938A0360938B0308 |
:103A600070938C0380938D0390938E0308951F931E |
:103A700080913C078B3F98F08B3F19F4809146046E |
1028,9 → 1028,9 |
:1040300019F480914A0404C08E3F21F480914C040D |
:1040400080939E0380919E03882319F410929E030F |
:1040500004C08F3F11F480939E0310919B03612F46 |
:10406000772767FD7095872F972F0E946F3B17FF6B |
:1040700006C020E030E040E853E40E94CA3A27E15D |
:1040800037EB41ED58E30E94E93B60938F03709357 |
:10406000772767FD7095872F972F0E94E83A17FFF3 |
:1040700006C020E030E040E853E40E94433A27E1E4 |
:1040800037EB41ED58E30E94623B60938F037093DE |
:1040900090038093910390939203809144078093BF |
:1040A0009F0780914307809383071F910895809114 |
:1040B0005504882301F51092800710927B07109217 |
1054,20 → 1054,20 |
:1041D0003091C8033093F2032093F1038091C90317 |
:1041E0009091CA039093F4038093F3033093F60302 |
:1041F0002093F5035093F8034093F70344E050E015 |
:10420000DA010E94FD3C802D853038F18091A707AE |
:10420000DA010E94763C802D853038F18091A70735 |
:104210009091A80797FF03C0909581959F4F6CE000 |
:1042200070E00E94703C7093FC036093FB038091EC |
:1042200070E00E94E93B7093FC036093FB03809174 |
:104230009D0790919E0797FF03C0909581959F4F92 |
:104240006CE070E00E94703C7093FA036093F90395 |
:104250006091ED067091EE0639C0DA010E94FD3CD6 |
:10426000802D4F5F5F4FDA010E94FD3C202D992782 |
:104240006CE070E00E94E93B7093FA036093F9031D |
:104250006091ED067091EE0639C0DA010E94763C5D |
:10426000802D4F5F5F4FDA010E94763C202D992709 |
:10427000982F8827820F911D9093FA038093F9035A |
:104280004F5F5F4FDA010E94FD3C802D4F5F5F4F13 |
:10429000DA010E94FD3C202D9927982F8827820F54 |
:104280004F5F5F4FDA010E94763C802D4F5F5F4F9A |
:10429000DA010E94763C202D9927982F8827820FDB |
:1042A000911D9093FC038093FB034F5F5F4FDA01F6 |
:1042B0000E94FD3C602D4F5F5F4FDA010E94FD3C84 |
:1042B0000E94763C602D4F5F5F4FDA010E94763C92 |
:1042C000202D7727762F6627620F711D882777FDAF |
:1042D0008095982F0E946F3B6093FD037093FE03BF |
:1042D0008095982F0E94E83A6093FD037093FE0347 |
:1042E0008093FF0390930004109221041092220403 |
:1042F0001092230410922404109225041092260494 |
:1043000010922704109228041092290410922A0473 |
1081,9 → 1081,9 |
:1043800080913D0490913E049093400480933F04BB |
:104390000E94B13682E390E09093C1038093C00302 |
:1043A00060915C0777278827992724EC39E040E063 |
:1043B00050E00E94313C60938703709388038093A0 |
:1043B00050E00E94AA3B6093870370938803809328 |
:1043C000890390938A0360915D077727882799274F |
:1043D0000E94313C60938B0370938C0380938D0318 |
:1043D0000E94AA3B60938B0370938C0380938D03A0 |
:1043E00090938E031092A00310929F0308951F9341 |
:1043F000182F0EC080915504882361F484E690E064 |
:104400009093C1038093C0038AEF90E00E94E20D75 |
1142,7 → 1142,7 |
:1047500090935A0750935B0790935C0790935D0783 |
:1047600020935E0730935F0790936007ABE6B7E056 |
:10477000EEE7F3E08CE001900D928150E1F70895AF |
:10478000A6E3B0E0E6ECF3E20C94C03C0E94BA165B |
:10478000A6E3B0E0E6ECF3E20C94393C0E94BA16E2 |
:10479000299AE0913307FF27EE0FFF1FEB5FF84FD9 |
:1047A0000190F081E02DE858FF4F80919F079927F5 |
:1047B0004497E817F9070CF4CF019A83898397FF90 |
1191,27 → 1191,27 |
:104A6000771F6B5F784FDB018D919C918A5B9F4F25 |
:104A70005CF4220F331F2B5F384FF9018081918145 |
:104A8000863491050CF445E0A2E0B0E0042E0E94CB |
:104A90000A3D8091390780FF10C080910E039091EC |
:104A9000833C8091390780FF10C080910E03909174 |
:104AA0000F03875B934038F480910E0390910F03BE |
:104AB0008E5E924010F40E9460100E94AD0346E4A6 |
:104AC00061E377E00E94D6030E949E2082C080812D |
:104AD0009181855B9F4F0CF081C0809192048F5F24 |
:104AE00080939204893C08F41CC129988FEF04E05C |
:104AF00010E0D801082E0E940A3D10925504109231 |
:104AF00010E0D801082E0E94833C109255041092B9 |
:104B0000920410928F0410928E040E949E20809135 |
:104B1000F9039091FA0360E071E00E94703CD801C3 |
:104B2000062E0E940A3D8091F9039091FA0360E0FD |
:104B300071E00E94703C0F5F1F4FD801082E0E9449 |
:104B40000A3D8091FB039091FC0360E071E00E94BC |
:104B5000703C0F5F1F4FD801062E0E940A3D8091C6 |
:104B6000FB039091FC0360E071E00E94703C0F5FDA |
:104B70001F4FD801082E0E940A3D6091FD037091DD |
:104B8000FE038091FF03909100040E94523BDC01E0 |
:104B9000CB0160E071E00E94703C0F5F1F4FD801B5 |
:104BA000062E0E940A3D6091FD037091FE038091E4 |
:104BB000FF03909100040E94523BDC01CB0160E0B6 |
:104BC00071E00E94703C0F5F1F4FD801082E0E94B9 |
:104BD0000A3D0E94AD030E94F721A3C010929204E7 |
:104B1000F9039091FA0360E071E00E94E93BD8014B |
:104B2000062E0E94833C8091F9039091FA0360E085 |
:104B300071E00E94E93B0F5F1F4FD801082E0E94D1 |
:104B4000833C8091FB039091FC0360E071E00E9444 |
:104B5000E93B0F5F1F4FD801062E0E94833C8091D6 |
:104B6000FB039091FC0360E071E00E94E93B0F5F62 |
:104B70001F4FD801082E0E94833C6091FD03709165 |
:104B8000FE038091FF03909100040E94CB3ADC0168 |
:104B9000CB0160E071E00E94E93B0F5F1F4FD8013D |
:104BA000062E0E94833C6091FD037091FE0380916C |
:104BB000FF03909100040E94CB3ADC01CB0160E03E |
:104BC00071E00E94E93B0F5F1F4FD801082E0E9441 |
:104BD000833C0E94AD030E94F721A3C0109292046F |
:104BE000A0C0E981FA81B3970CF09BC08091340793 |
:104BF000482F5527FA01EE0FFF1FEB5FF84F80811A |
:104C00009181855B9F4F0CF06DC0809191048F5F07 |
1243,13 → 1243,13 |
:104DA000FC0120803180E0913407AE2FBB27AA0F91 |
:104DB000BB1FAB5FB84F0D90BC91A02DBCA3ABA3A4 |
:104DC00010919803612F772767FD7095872F972F94 |
:104DD0000E946F3B17FF06C020E030E040E853E43C |
:104DE0000E94CA3A20E030E040E251E40E94CA3A10 |
:104DF00020E030E040E85BE30E94E93B3B014C01EE |
:104DD0000E94E83A17FF06C020E030E040E853E4C4 |
:104DE0000E94433A20E030E040E251E40E94433A1E |
:104DF00020E030E040E85BE30E94623B3B014C0175 |
:104E00006093A2077093A3078093A4079093A507CC |
:104E100010919903612F772767FD7095872F972F42 |
:104E20000E946F3B17FF06C020E030E040E853E4EB |
:104E30000E94CA3A20E030EE4BE257E40E940C3B5D |
:104E20000E94E83A17FF06C020E030E040E853E473 |
:104E30000E94433A20E030EE4BE257E40E94853A6C |
:104E400060939407709395078093960790939707C4 |
:104E50002091B303222311F40C94DC358AE090E016 |
:104E60009093C1038093C003E22FFF27E2FF09C0A4 |
1258,13 → 1258,13 |
:104E90009927880F991F880F991F44275527481B6A |
:104EA000590B20916E0430916F04C901F3E0880F13 |
:104EB000991FFA95E1F7821B930B840F951F68E009 |
:104EC00070E00E94703C8B0170936F0460936E04DD |
:104EC00070E00E94E93B8B0170936F0460936E0465 |
:104ED000E4FF09C080916404482F5527440F551FF3 |
:104EE000440F551F0FC0E5FD02C00C94F1358091B1 |
:104EF00064049927880F991F880F991F4427552705 |
:104F0000481B590B2091700430917104C90163E072 |
:104F1000880F991F6A95E1F7821B930B840F951FE9 |
:104F200068E070E00E94703C7EAB6DAB70937104E2 |
:104F200068E070E00E94E93B7EAB6DAB709371046A |
:104F3000609370048091B203282F332723FF03C0AE |
:104F400082E390E004C022FF07C08EEC9FEF9093B5 |
:104F500073048093720404C010927304109272045C |
1273,20 → 1273,20 |
:104F8000A00301979093A00380939F034BA95CA972 |
:104F90004E9D90014F9D300D5E9D300D1124A9A5B1 |
:104FA000BAA5A49DC001A59D900DB49D900D11249E |
:104FB000280F391FC80168E070E00E94703C260F7E |
:104FB000280F391FC80168E070E00E94E93B260F06 |
:104FC000371F3CAB2BAB3093500420934F04EFA121 |
:104FD000F8A5EE9D8001EF9D100DFE9D100D112492 |
:104FE000249CC001259C900D349C900D1124080F29 |
:104FF000191F8DA99EA968E070E00E94703C060F01 |
:104FF000191F8DA99EA968E070E00E94E93B060F89 |
:10500000171F1093520400935104809172049091E1 |
:1050100073042BA13CA1821B930B909354048093A7 |
:1050200053048091390782FF0CC080E090E0A0E03B |
:10503000B0E08093940790939507A0939607B09360 |
:10504000970720E030E040E050E0C401B3010E9447 |
:10505000793B882364F480E090E0A0E0B0E08093A6 |
:10505000F23A882364F480E090E0A0E0B0E080932E |
:10506000A2079093A307A093A407B093A50720E0FD |
:1050700030E040E050E06091940770919507809196 |
:105080009607909197070E94793B882364F480E00B |
:105080009607909197070E94F23A882364F480E093 |
:1050900090E0A0E0B0E08093940790939507A093F0 |
:1050A0009607B093970780916507682F772784E06C |
:1050B000882E912C8622972262FD7FC063FD7DC0E1 |
1370,35 → 1370,35 |
:105590008091D9039091DA038F3F910509F008F4C7 |
:1055A000ADC4992009F02EC480915F04882309F0CE |
:1055B00029C460918C0770918D0780918E0790911E |
:1055C0008F0720E031E040E050E00E94A53C190147 |
:1055C0008F0720E031E040E050E00E941E3C1901CE |
:1055D0002A0120938C0730938D0740938E075093B8 |
:1055E0008F07609190077091910780919207909139 |
:1055F000930720E031E040E050E00E94A53C2F8B73 |
:1055F000930720E031E040E050E00E941E3C2F8BFA |
:10560000388F498F5A8F209390073093910740939A |
:10561000920750939307E0904507FF240027112736 |
:1056200020911104309112044091130450911404FC |
:10563000C801B7010E94313C20E031E040E050E079 |
:105640000E94A53C39014A012093110430931204B1 |
:10563000C801B7010E94AA3B20E031E040E050E001 |
:105640000E941E3C39014A01209311043093120438 |
:1056500040931304509314042091150430911604C0 |
:105660004091170450911804C801B7010E94313CC1 |
:1056700020E031E040E050E00E94A53C59016A0181 |
:105660004091170450911804C801B7010E94AA3B49 |
:1056700020E031E040E050E00E941E3C59016A0108 |
:105680002093150430931604409317045093180484 |
:105690006091190470911A0480911B0490911C046C |
:1056A00020E031E040E050E00E94A53C2093190446 |
:1056A00020E031E040E050E00E941E3C20931904CD |
:1056B00030931A0440931B0450931C04C201B1019F |
:1056C0006619770988099909E0905E07FF24002789 |
:1056D0001127A80197010E94A53C209386043093CE |
:1056D0001127A80197010E941E3C20938604309355 |
:1056E00087044093880450938904CA01B90120E0DB |
:1056F00031E040E050E00E94A53C3E8B2D8B309382 |
:1056F00031E040E050E00E941E3C3E8B2D8B309309 |
:105700005D0420935C046F89788D898D9A8D6A1968 |
:105710007B098C099D09A80197010E94A53C79018C |
:105710007B098C099D09A80197010E941E3C790113 |
:105720008A01CA01B90120E031E040E050E00E9466 |
:10573000A53C3CAB2BAB30935B0420935A046091A7 |
:105730001E3C3CAB2BAB30935B0420935A0460912E |
:10574000840770918507809186079091870720E0F4 |
:1057500031E040E050E00E94A53C20938407309364 |
:1057500031E040E050E00E941E3C209384073093EB |
:105760008507409386075093870760917C07709167 |
:105770007D0780917E0790917F0720E031E040E037 |
:1057800050E00E94A53C20937C0730937D07409316 |
:1057800050E00E941E3C20937C0730937D0740939D |
:105790007E0750937F072F8D38A149A15AA18FA56D |
:1057A00098A9A9A9BAA9281B390B4A0B5B0B298B0D |
:1057B0003A8B4B8B5C8B2093A1043093A2044093D3 |
1414,14 → 1414,14 |
:105850002D0490912E04A0912F04B09130042D8539 |
:105860003E854F855889821B930BA40BB50B809303 |
:105870002D0490932E04A0932F04B0933004C40100 |
:10588000B3012AE130E040E050E00E94A53C3093B3 |
:10588000B3012AE130E040E050E00E941E3C30933A |
:10589000CD062093CC06C601B5012AE130E040E0F8 |
:1058A00050E00E94A53C3093CF062093CE06498954 |
:1058A00050E00E941E3C3093CF062093CE064989DB |
:1058B0005A895093D1064093D0068D859E8590934A |
:1058C000D3068093D206C201B1012AE130E040E064 |
:1058D00050E00E94A53C3093D5062093D4066F89F2 |
:1058D00050E00E941E3C3093D5062093D4066F8979 |
:1058E000788D898D9A8D2AE130E040E050E00E9469 |
:1058F000A53C3093D7062093D606F092E506E092B9 |
:1058F0001E3C3093D7062093D606F092E506E09240 |
:10590000E4068BA99CA9880F991F2BA93CA9F3E059 |
:10591000220F331FFA95E1F7820F931F9093E7064A |
:105920008093E60681E090E0909381048093800468 |
1437,7 → 1437,7 |
:1059C0009341A040B04064F088E893E1A0E0B0E0EB |
:1059D0008093860490938704A0938804B0938904ED |
:1059E0006091860470918704809188049091890465 |
:1059F00020E031E040E050E00E94A53C8D899E8986 |
:1059F00020E031E040E050E00E941E3C8D899E890D |
:105A0000820F931F90935D0480935C0469C081E0D2 |
:105A100080937F0465C010927F0429893A894B895D |
:105A20005C89203080EF38078FEF48078FEF5807E9 |
1445,12 → 1445,12 |
:105A4000C901B095A095909581959F4FAF4FBF4FDD |
:105A50006CE0B595A795979587956A95D1F70196CE |
:105A60009093810480938004CA01B90128E030E05A |
:105A700040E050E00E94A53C2093860430938704C8 |
:105A700040E050E00E941E3C20938604309387044F |
:105A8000409388045093890428573C4E4F4F5F4FF2 |
:105A900064F488E79CEEAFEFBFEF809386049093A9 |
:105AA0008704A0938804B093890460918604709160 |
:105AB0008704809188049091890420E031E040E0DF |
:105AC00050E00E94A53CAD89BE89A20FB31FB093E0 |
:105AC00050E00E941E3CAD89BE89A20FB31FB09367 |
:105AD0005D04A0935C040BC081E080937E0407C04A |
:105AE00010927E0404C01092810410928004809170 |
:105AF0005F07082F11278091800490918104081777 |
1475,7 → 1475,7 |
:105C200088E893E1A0E0B0E080938204909383043D |
:105C3000A0938404B09385046091820470918304DE |
:105C4000809184049091850420E031E040E050E0B0 |
:105C50000E94A53C8BA99CA9820F931F90935B0483 |
:105C50000E941E3C8BA99CA9820F931F90935B040A |
:105C600080935A0469C081E080937D0465C01092DE |
:105C70007D042D853E854F855889203080EF38077B |
:105C80008FEF48078FEF58070CF056C080917C04C7 |
1482,12 → 1482,12 |
:105C9000882309F44DC0DA01C901B095A09590950B |
:105CA00081959F4FAF4FBF4FFCE0B595A795979556 |
:105CB0008795FA95D1F7019690938104809380049B |
:105CC000CA01B90128E030E040E050E00E94A53C64 |
:105CC000CA01B90128E030E040E050E00E941E3CEB |
:105CD000209382043093830440938404509385047A |
:105CE00028573C4E4F4F5F4F64F488E79CEEAFEF70 |
:105CF000BFEF8093820490938304A0938404B093B5 |
:105D00008504609182047091830480918404909151 |
:105D1000850420E031E040E050E00E94A53CABA9C2 |
:105D1000850420E031E040E050E00E941E3CABA949 |
:105D2000BCA9A20FB31FB0935B04A0935A040BC08D |
:105D300081E080937C0407C010927C0404C0109220 |
:105D40008104109280048091820490918304909346 |
1504,7 → 1504,7 |
:105DF000E1F7880F991F820F931F9093DB06809322 |
:105E0000DA0608C010925B0410925A0410925D04E6 |
:105E100010925C0420E030E040E050E06091940794 |
:105E20007091950780919607909197070E94793B12 |
:105E20007091950780919607909197070E94F23A9A |
:105E3000882341F410925B0410925A0410925D047E |
:105E400010925C0480918C0790918D07A0918E0731 |
:105E5000B0918F078093780490937904A0937A048B |
1522,10 → 1522,10 |
:105F10003909253131053CF08091390784FD03C0F2 |
:105F200081E080938A04E09042075901CC24B7FCB9 |
:105F3000C094DC2CB401882777FD8095982F2E2DF6 |
:105F40003327442755270E94313C9B01AC01C601F1 |
:105F5000B5010E94313C20E032E040E050E00E9478 |
:105F6000A53C89019A01FF24E89CC001E99C900DA1 |
:105F7000F89C900D112464E070E00E94703C600F6A |
:105F40003327442755270E94AA3B9B01AC01C60179 |
:105F5000B5010E94AA3B20E032E040E050E00E9400 |
:105F60001E3C89019A01FF24E89CC001E99C900D28 |
:105F7000F89C900D112464E070E00E94E93B600FF2 |
:105F8000711F882777FD8095982F6093A5047093E3 |
:105F9000A6048093A7049093A80420913104309123 |
:105FA00032044091330450913404261B370B480BC4 |
1537,20 → 1537,20 |
:10600000390783FF9AC080914304815080934304F1 |
:106010008F3FD9F40E94293790933E0480933D042A |
:1060200020913F0430914004821B930B845E9D4F6E |
:1060300068E671E00E94703C845B9040909342045B |
:1060300068E671E00E94E93B845B904090934204E3 |
:106040008093410482E38093430460910104709142 |
:106050000204809103049091040420E032E040E0C7 |
:1060600050E00E94A53C890137FF03C010950195BF |
:1060600050E00E941E3C890137FF03C01095019546 |
:106070001F4F6091090470910A0480910B04909164 |
:106080000C0420E032E040E050E00E94A53CB90161 |
:106080000C0420E032E040E050E00E941E3CB901E8 |
:1060900037FF03C0709561957F4F601771070CF44F |
:1060A000B8016332710574F480918A04882351F039 |
:1060B00080913D0490913E049093400480933F046E |
:1060C00010928A04209197033327629FC001639F37 |
:1060D000900D729F900D112460E470E00E94703C5E |
:1060D000900D729F900D112460E470E00E94E93BE6 |
:1060E000261B370B1216130644F58091410490913C |
:1060F0004204FC012E9FC0012F9F900D3E9F900DEA |
:10610000112460E270E00E94703C882777FD809542 |
:10610000112460E270E00E94E93B882777FD8095CA |
:10611000982F2091310430913204409133045091F2 |
:106120003404260F371F481F591F20933104309322 |
:106130003204409333045093340480918B04815093 |
1557,50 → 1557,50 |
:1061400080938B048F3F09F079C088E180938B04A2 |
:10615000E0904507FF24002711276091010470910A |
:1061600002048091030490910404A80197010E9405 |
:10617000A53C3093AB062093AA0660910904709168 |
:106170001E3C3093AB062093AA06609109047091EF |
:106180000A0480910B0490910C04A80197010E94CD |
:10619000A53C3093AD062093AC0680919D0790916D |
:106190001E3C3093AD062093AC0680919D079091F4 |
:1061A0009E079093AF068093AE068091A7079091CB |
:1061B000A8079093B1068093B0068091A0079091B4 |
:1061C000A1079093B3068093B206809156049091F4 |
:1061D00057049093B5068093B4066091390470918A |
:1061E0003A0480913B0490913C0420E032E040E08E |
:1061F00050E00E94A53C3093B7062093B6068091EC |
:1061F00050E00E941E3C3093B7062093B606809173 |
:106200003D0490913E049093BB068093BA06809122 |
:106210000803909109039093BD068093BC0680917A |
:106220004E0499279093BF068093BE0680918807FD |
:10623000909189079093CB068093CA0680915E0463 |
:10624000C0908107D0908207882391F0B6018827FB |
:1062500077FD8095982F0E946F3B2091A207309187 |
:10626000A3074091A4075091A5070E94E93B2DC0C8 |
:1062500077FD8095982F0E94E83A2091A20730910F |
:10626000A3074091A4075091A5070E94623B2DC04F |
:1062700060910104709102048091030490910404E0 |
:106280000E946F3B209194073091950740919607AB |
:10629000509197070E94E93B7B018C01B60188274A |
:1062A00077FD8095982F0E946F3B2091A207309137 |
:1062B000A3074091A4075091A5070E94E93B9B01C9 |
:1062C000AC01C801B7010E94CA3A0E94523B7093C8 |
:106280000E94E83A20919407309195074091960733 |
:10629000509197070E94623B7B018C01B6018827D1 |
:1062A00077FD8095982F0E94E83A2091A2073091BF |
:1062B000A3074091A4075091A5070E94623B9B0150 |
:1062C000AC01C801B7010E94433A0E94CB3A7093D7 |
:1062D00082076093810780915F04C0907907D09016 |
:1062E0007A07882391F0B601882777FD8095982F4B |
:1062F0000E946F3B2091A2073091A3074091A40711 |
:106300005091A5070E94E93B2DC06091090470914E |
:106310000A0480910B0490910C040E946F3B209121 |
:1062F0000E94E83A2091A2073091A3074091A40799 |
:106300005091A5070E94623B2DC0609109047091D5 |
:106310000A0480910B0490910C040E94E83A2091A9 |
:1063200094073091950740919607509197070E94E6 |
:10633000E93B7B018C01B601882777FD8095982F7A |
:106340000E946F3B2091A2073091A3074091A407C0 |
:106350005091A5070E94E93B9B01AC01C801B70120 |
:106360000E94CA3A0E94523B70937A076093790761 |
:10633000623B7B018C01B601882777FD8095982F01 |
:106340000E94E83A2091A2073091A3074091A40748 |
:106350005091A5070E94623B9B01AC01C801B701A7 |
:106360000E94433A0E94CB3A70937A076093790770 |
:10637000209094073090950740909607509097078B |
:106380006091A0077091A107882777FD8095982FCD |
:106390000E946F3B2091A2073091A3074091A40770 |
:1063A0005091A5070E94E93B7B018C0160911D047F |
:1063B00070911E0480911F04909120040E946F3BF5 |
:1063C000A20191010E94E93B20E030E040E05FE360 |
:1063D0000E94E93B9B01AC01C801B7010E94CA3A87 |
:1063E0000E94523B8B017093A1076093A007E0903D |
:106390000E94E83A2091A2073091A3074091A407F8 |
:1063A0005091A5070E94623B7B018C0160911D0406 |
:1063B00070911E0480911F04909120040E94E83A7D |
:1063C000A20191010E94623B20E030E040E05FE3E7 |
:1063D0000E94623B9B01AC01C801B7010E94433A95 |
:1063E0000E94CB3A8B017093A1076093A007E090C5 |
:1063F0007907F0907A07F092E306E092E206609166 |
:10640000090470910A0480910B0490910C040E947D |
:106410006F3BA20191010E94E93B69877A878B87D4 |
:106420009C870E94523B7093DD066093DC062091AE |
:10641000E83AA20191010E94623B69877A878B87E3 |
:106420009C870E94CB3A7093DD066093DC06209136 |
:106430005104309152043EA32DA33093E9062093DA |
:10644000E806809181079091820738E081309307B8 |
:106450001CF080E098E005C08050984F34F480E054 |
1620,17 → 1620,17 |
:10653000421753070CF09AC080914504882309F450 |
:1065400095C0241B350B809195039927AC01249F9E |
:10655000C001259F900D349F900D112460E170E0E3 |
:106560000E94703C09811A81061B170B2091D703EA |
:106560000E94E93B09811A81061B170B2091D70372 |
:106570003091D803809193039927DC012A9FC001B1 |
:106580002B9F900D3A9F900D112468E070E00E94BF |
:10659000703C061B170B6091390470913A0480918E |
:10659000E93B061B170B6091390470913A04809116 |
:1065A0003B0490913C0420E032E040E050E00E9447 |
:1065B000A53CCA01B90120919603332744275527EA |
:1065C0000E94313C20E230E040E050E00E94A53CD7 |
:1065B0001E3CCA01B9012091960333274427552771 |
:1065C0000E94AA3B20E230E040E050E00E941E3CE6 |
:1065D000BFEF2E3C3B0714F42EEC3FEF80918C0470 |
:1065E00090918D04AC0164E0440F551F6A95E1F76A |
:1065F000481B590B2333310514F022E330E0021B12 |
:10660000130BCA01800F911F60E170E00E94703C83 |
:10660000130BCA01800F911F60E170E00E94E93B0B |
:1066100070938D0460938C0480913A0799276817D2 |
:1066200079078CF4E981FA81E817F9072CF0909347 |
:106630008D0480938C0407C029813A8130938D04A6 |
1640,7 → 1640,7 |
:10667000B093B906A093B806E090A007F090A107E8 |
:106680000091A5041091A6042091A7043091A804BC |
:1066900080919F07882E992454971CF41C821B829A |
:1066A00029C089819A8162E070E00E94703C970164 |
:1066A00029C089819A8162E070E00E94E93B9701EC |
:1066B000201B310BCB01261737070CF4C90170954D |
:1066C00061957F4F681779070CF4BC01C401E9811B |
:1066D000FA818E1B9F0B681779070CF4CB01298177 |
1648,14 → 1648,14 |
:1066F0009C838B8360904F04709050048091B90408 |
:106700009091BA04681A790A809181079091820762 |
:106710008619970990938B0780938A0720E030E0D1 |
:1067200040E050E0C201B1010E94793B8823D1F1E1 |
:1067200040E050E0C201B1010E94F23A8823D1F169 |
:106730006091AD047091AE048091AF049091B0046B |
:106740000E946F3B5B016C01609101047091020437 |
:1067500080910304909104040E946F3BA201910177 |
:106760000E94E93B7B018C01B301882777FD80956E |
:10677000982F0E946F3B9B01AC01C801B7010E949A |
:10678000C93A9B01AC01C601B5010E94CA3A0E94F8 |
:10679000523B6093AD047093AE048093AF0490932A |
:106740000E94E83A5B016C016091010470910204BF |
:1067500080910304909104040E94E83AA2019101FF |
:106760000E94623B7B018C01B301882777FD8095F5 |
:10677000982F0E94E83A9B01AC01C801B7010E9422 |
:10678000423A9B01AC01C601B5010E94433A0E9406 |
:10679000CB3A6093AD047093AE048093AF049093B2 |
:1067A000B0041CC020918A0730918B07442737FD25 |
:1067B0004095542F8091AD049091AE04A091AF0408 |
:1067C000B091B004820F931FA41FB51F8093AD0436 |
1670,16 → 1670,16 |
:106850008093AD049093AE04A093AF04B093B004C2 |
:1068600060918A0770918B0780918F0390919003BC |
:10687000A0919103B09192038D839E83AF83B887DB |
:10688000882777FD8095982F0E946F3B7B018C01B4 |
:10688000882777FD8095982F0E94E83A7B018C013C |
:106890006091AD047091AE048091AF049091B0040A |
:1068A0000E946F3B9B01AC016D817E818F81988539 |
:1068B0000E94E93B9B01AC01C801B7010E94CA3AA2 |
:1068C0000E94523B5B016C017CAB6BAB80919E03E1 |
:1068A0000E94E83A9B01AC016D817E818F819885C1 |
:1068B0000E94623B9B01AC01C801B7010E94433AB0 |
:1068C0000E94CB3A5B016C017CAB6BAB80919E0369 |
:1068D000E82EFF24002711278B819C8197FF03C09E |
:1068E000909581959F4F62E070E00E94703C9B0103 |
:1068E000909581959F4F62E070E00E94E93B9B018B |
:1068F000A981BA812A0F3B1F442737FD4095542FA9 |
:10690000C801B7010E94313C20E430E040E050E093 |
:106910000E94A53C3901EBA9FCA9E217F3070CF48E |
:10690000C801B7010E94AA3B20E430E040E050E01B |
:106910000E941E3C3901EBA9FCA9E217F3070CF415 |
:106920009501AA24BB24A618B708A501A216B30690 |
:106930000CF4A90189819A812B813C81820F931FDC |
:10694000840F951F97FF03C020E030E005C094013D |
1691,12 → 1691,12 |
:1069A0008091BB049091BC04ADA1BEA1A81BB90B02 |
:1069B000BCABABAB8091790790917A078A1B9B0B9C |
:1069C000909378078093770720E030E040E050E034 |
:1069D000C201B1010E94793B882371F16091A90441 |
:1069E0007091AA048091AB049091AC040E946F3B1B |
:1069D000C201B1010E94F23A882371F16091A904C9 |
:1069E0007091AA048091AB049091AC040E94E83AA3 |
:1069F0007B018C01EBA9FCA9BF01882777FD80955D |
:106A0000982F0E946F3B9B01AC0169857A858B852D |
:106A10009C850E94C93A9B01AC01C801B7010E9444 |
:106A2000CA3A0E94523B6093A9047093AA048093CF |
:106A0000982F0E94E83A9B01AC0169857A858B85B5 |
:106A10009C850E94423A9B01AC01C801B7010E94CB |
:106A2000433A0E94CB3A6093A9047093AA048093DE |
:106A3000AB049093AC041CC0209177073091780789 |
:106A4000442737FD4095542F8091A9049091AA04C2 |
:106A5000A091AB04B091AC04820F931FA41FB51F8B |
1710,10 → 1710,10 |
:106AD00009C08058914CAF4FBF4F64F480E891ECEF |
:106AE000AFEFBFEF8093A9049093AA04A093AB04E7 |
:106AF000B093AC046091770770917807882777FD91 |
:106B00008095982F0E946F3B7B018C016091A904B6 |
:106B10007091AA048091AB049091AC040E946F3BE9 |
:106B20009B01AC016D817E818F8198850E94E93B3C |
:106B30009B01AC01C801B7010E94CA3A0E94523BB6 |
:106B00008095982F0E94E83A7B018C016091A9043E |
:106B10007091AA048091AB049091AC040E94E83A71 |
:106B20009B01AC016D817E818F8198850E94623BC3 |
:106B30009B01AC01C801B7010E94433A0E94CB3AC5 |
:106B40009301661577050CF49B01C501A216B306E7 |
:106B50000CF4C90149815A81480F591FAB81BC818E |
:106B60004A1B5B0B57FF03C020E030E005C09401D7 |
1723,17 → 1723,17 |
:106BA000A401281539050CF4A901C601C416D5069F |
:106BB0000CF0D1C0CA01CFC020916E0430916F0497 |
:106BC000C90113E0880F991F1A95E1F7821B930BF7 |
:106BD00068E070E00E94703C8B0170936F046093DA |
:106BD00068E070E00E94E93B8B0170936F04609362 |
:106BE0006E0440E050E00C94822780915E0488237C |
:106BF00011F40C94B1290C94A729E0904507FF24C7 |
:106C0000002711276FA578A989A99AA9A80197013A |
:106C10000E94A53C80919D0790919E07AA2797FD11 |
:106C10000E941E3C80919D0790919E07AA2797FD98 |
:106C2000A095BA2F281B390B4A0B5B0BCA01B9017F |
:106C300020E130E040E050E00E94A53C59016A01AB |
:106C40006BA57CA58DA59EA5A80197010E94A53CDA |
:106C300020E130E040E050E00E941E3C59016A0132 |
:106C40006BA57CA58DA59EA5A80197010E941E3C61 |
:106C50008091A7079091A807AA2797FDA095BA2F22 |
:106C6000281B390B4A0B5B0BCA01B90120E130E04C |
:106C700040E050E00E94A53C79018A01F1E2AF16A4 |
:106C700040E050E00E941E3C79018A01F1E2AF162B |
:106C8000B104C104D10414F40C94772AB0E2AB2E01 |
:106C9000B12CC12CD12C0C94882A10921104109282 |
:106CA00012041092130410921404109215041092FE |
1748,7 → 1748,7 |
:106D30002E04A0932F04B09330041092DA03109223 |
:106D4000D90310925D0410925C0410925B041092BF |
:106D50005A040C94C82A80939807E2E1CA5C0C9408 |
:106D6000DC3C8091BD049091BE04A091BF04B09121 |
:106D6000553C8091BD049091BE04A091BF04B091A8 |
:106D7000C0048093C5049093C604A093C704B09345 |
:106D8000C8048091C1049091C204A091C304B09141 |
:106D9000C4048093C9049093CA04A093CB04B09315 |
1763,238 → 1763,221 |
:106E20003093BE072093BD0787E005C03093C007AD |
:106E30002093BF0785E08093BA071092B7079F9110 |
:106E40008F914F913F912F910F900FBE0F901F90F8 |
:106E50001895AEE0B0E0EFE2F7E30C94C03CA090F0 |
:106E50001895AAE0B0E0EFE2F7E30C94393CA0907B |
:106E60005007BB2433E0AA0CBB1C3A95E1F7CC24B5 |
:106E7000DD246091010470910204809103049091DB |
:106E80000404A60195010E94A53C79018A01FF2412 |
:106E9000E7FCF094C7010E94713A9C878B87C70179 |
:106EA0000E94B43A2C016091090470910A04809107 |
:106EB0000B0490910C04A60195010E94A53C790158 |
:106EC0008A01FF24E7FCF094C7010E94713A1C017B |
:106ED000C7010E94B43A9A8789872091BB073091F5 |
:106EE000BC078091AE07992787FD9095281B390B29 |
:106EF0004901AA2497FCA094BA2C2091BD07309197 |
:106F0000BE078091AF07992787FD9095281B390B05 |
:106F1000C901AA2797FDA095BA2F8D839E83AF83C1 |
:106F2000B8872091BF073091C0078091B00799279B |
:106F300087FD9095281B390BC901AA2797FDA095BD |
:106F4000BA2F89839A83AB83BC83A091B107B09198 |
:106F5000B207BE87AD87C090B307D090B407CA16FA |
:106F6000DB06E0F46090B5077090B6076A167B0602 |
:106F7000A8F47D01002711276D817E818F8198857E |
:106F8000A80197010E94313C9601442755270E9491 |
:106F9000A53C2D833E834F8358871EC0ED85FE851B |
:106FA000EC15FD0558F56090B5077090B6076C14A8 |
:106FB0007D0420F5760100271127C501B401A80141 |
:106FC00097010E94313CAD85BE859D014427552720 |
:106FD0000E94A53C49015A0169817A818B819C817B |
:106FE000A80197010E94313C9301442755270E9434 |
:106FF000A53C29833A834B835C8326C0E090B50788 |
:10700000F090B60700271127C501B401A801970128 |
:107010000E94313CED85FE859F01442755270E9443 |
:10702000A53C49015A016D817E818F819885A80117 |
:1070300097010E94313C9601442755270E94A53CA8 |
:107040002D833E834F8358879201442737FD409517 |
:10705000542FC501B4010E94313C5B016C014424F2 |
:1070600037FC4094542C8B859C853C01882477FC0C |
:107070008094982C6D817E818F819885A2019101E9 |
:107080000E94313CA40193010E94313C20E034E095 |
:1070900040E050E00E94A53CA20EB31EC41ED51EC7 |
:1070A000A985BA857D010027F7FC0095102F69811D |
:1070B0007A818B819C81A80197010E94313CA401B7 |
:1070C00093010E94313C20E034E040E050E00E9417 |
:1070D000A53CA21AB30AC40AD50A6D817E818F81AC |
:1070E0009885A80197010E94313C7B018C01698140 |
:1070F0007A818B819C81A20191010E94313CE60E34 |
:10710000F71E081F191FC801B70120E034E040E056 |
:1071100050E00E94A53C79018A01C601B50120E03A |
:1071200034E040E050E00E94A53CCA01B901A8014A |
:1071300097010E94C5399C0197FF05C088279927B0 |
:10714000821B930B04C088E691E0821B930BE2E163 |
:10715000C25F0C94DC3C8091B707813041F08130F4 |
:1071600018F0823049F51CC02A9A81E016C02A988E |
:107170008091BA07853011F481E305C0863011F49F |
:1071800082E301C083E38EBD88E090E00E949A0C08 |
:107190009093B9078093B80782E08093B70708956A |
:1071A0008091B8079091B9070E94A30C882321F021 |
:1071B0001EBC83E08093B7070895A0E0B0E0E3EE43 |
:1071C000F8E30C94C23C299A809100018A3011F4B2 |
:1071D000289801C0289AAA24BB2400E010E0882443 |
:1071E0009924EE24FF2466247724CC24DD2462E352 |
:1071F000462E55248091BB079091BC0708171907AC |
:107200002CF40091BB071091BC070BC08091BB0709 |
:107210009091BC078A159B0524F4A090BB07B09001 |
:10722000BC078091BD079091BE07E816F9062CF4C3 |
:10723000E090BD07F090BE070BC08091BD07909114 |
:10724000BE078815990524F48090BD079090BE076D |
:107250008091BF079091C007C816D9062CF4C09042 |
:10726000BF07D090C0070BC08091BF079091C007A7 |
:107270008615970524F46090BF077090C0075520CD |
:1072800081F485B191E0892785B985B192E089279C |
:1072900085B982E390E09093C1038093C00352E3E9 |
:1072A000552E8AE090E00E949A0CEC01CE010E94DB |
:1072B000A30C8823D9F3E0913307FF27EE0FFF1FBC |
:1072C000EB5FF84F80819181843691050CF44A94EC |
:1072D000442011F05A948ECFC8018A199B099093CB |
:1072E000B2078093B107C701881999099093B40731 |
:1072F0008093B307C601861997099093B6078093C8 |
:10730000B507EEEAF7E0C8018A0D9B1D62E070E068 |
:107310000E94703C6093AE07C701880D991D62E022 |
:1073200070E00E94703C6093AF07C601860D971D08 |
:1073300062E070E00E94703C6093B00789E0A8E6CC |
:10734000B1E0182E0E94163DE0E1CDB7DEB70C94F7 |
:10735000DE3C83ED8CBD84B1846A84B980910001E8 |
:107360008A3019F4539A5B9802C03E9A469885E099 |
:107370008093BA071092B70789E0EEEAF7E0A8E633 |
:10738000B1E0182E0E94053D0895DF92EF92FF9222 |
:107390000F931F937B018C01611571058105910588 |
:1073A00041F4211531054105510519F480E090E0C3 |
:1073B00092C057FD03C061E0D62E02C09FEFD92EC8 |
:1073C000E114F1040105110531F48AE52D2D28029F |
:1073D000C001112480C086E0220F331F441F551FB7 |
:1073E0008A95D1F7CA01B901A80197010E94A53C6D |
:1073F000F90137FF03C0F095E195FF4F41E0EA3511 |
:10740000F40734F4E55FFA4F8491282F332747C0FF |
:107410005CE1E73AF5071CF02AE530E040C089E07E |
:10742000ED38F8071CF029E530E039C025E0EA3BEB |
:10743000F2071CF028E530E032C044E0E731F40701 |
:107440001CF027E530E02BC053E0EE32F5071CF0CE |
:1074500026E530E024C082E0E939F8071CF025E594 |
:1074600030E01DC022E0E233F2071CF024E530E0FA |
:1074700016C041E0E73EF4071CF023E530E00FC002 |
:1074800051E0ED3AF5071CF022E530E008C0EF5777 |
:10749000F1401CF021E530E002C020E530E01E1490 |
:1074A0001F04100611066CF48D2D992787FD909509 |
:1074B000AC01249FC001259F900D349F900D112495 |
:1074C0000AC01D142CF484EB90E0821B930B03C0C4 |
:1074D000C901845B90401F910F91FF90EF90DF9066 |
:1074E0000895FC0197FD03C041E050E005C0F09510 |
:1074F000E195FF4F4FEF5FEFEB35F1055CF0CF010A |
:107500008B5590408A35910540F484EB90E08E1BBA |
:107510009F0BFC0121E030E010C0CF01855B904063 |
:107520008A35910518F4E45BF04005C088E691E0E7 |
:107530008E1B9F0BFC012FEF3FEFEE0FFF1FEB5950 |
:10754000F94F85919491BC01629FC001639F900D9A |
:10755000729F900D11249C01429FC001439F900D8A |
:10756000529F900D112408952AE530E0281B390B15 |
:10757000C9010E94713A0895FC014150504030F019 |
:1075800001900616D1F73197CF01089588279927E2 |
:1075900008955058192EEFD001D0D2C0BA17620703 |
:1075A000730784079507B1F188F40EF410940B2E3D |
:1075B000BA2FA02D062E622F202D072E732F302DCF |
:1075C000082E842F402D092E952F502DFF2755234F |
:1075D000B9F0591B49F0573E98F0469537952795D5 |
:1075E000A795F0405395C9F776F0BA0F621F731F45 |
:1075F000841F30F4879577956795B795F0409395FC |
:1076000017FA0F2E0895BF1BBB27BA0B620B730B23 |
:10761000840BF6CFDEF6DBC0AED001D091C055238F |
:1076200059F0992369F09F575F57951B33F442F443 |
:10763000903811F4915805C09BC091589F3F09F4B0 |
:10764000C6C0BB27112462177307840730F4660F86 |
:10765000771F881FBB1F915098F311D00F920FD046 |
:107660000F920DD0A0E82617370748071B0609F030 |
:10767000A048BA2F602D7F918F9100240895A0E833 |
:107680000024621773078407B10528F0621B730B8F |
:10769000840BB1090A2A660F771F881FBB1FA695A6 |
:1076A00081F7089597FB73D09F3738F0FEE9F91BF7 |
:1076B000982F872F762F6B2F05C086C096958795BC |
:1076C00077956795F150D0F73EF490958095709539 |
:1076D00061957F4F8F4F9F4F0895E89403C097FBAC |
:1076E0000EF4F3DFB62F672F782F892F9EE9002441 |
:1076F00027C00ED05EF004C00BD026F001C008D029 |
:1077000019F020F48FEF089580E0089581E0089546 |
:1077100097FB092E052600F8689430D0E89407FC02 |
:1077200007C0621773078407950721F008F40094D7 |
:107730000794989408959A95BB0F661F771F881F2A |
:1077400011249923A1F08823B2F79F3F59F0BB0F72 |
:1077500048F421F4002011F460FF04C06F5F7F4FF4 |
:107760008F4F9F4F881F9795879597F908952CC045 |
:107770009FEF80EC0895052E092607FA440F551F48 |
:107780005F3F79F0AA27A51708F051E04795880FC9 |
:10779000991F9F3F31F0BB27B91708F091E08795FB |
:1077A00008959F919F911124E3CF97FB880F991F14 |
:1077B0009F3F31F0BB27B91708F091E087950895F6 |
:1077C0009F919F911124D4CF6627772788279927E7 |
:1077D0000895D1DF01D0B4CF992339F0552329F092 |
:1077E0009F575F57950F13F49AF1F1CF91589F3F30 |
:1077F000E1F3629FA12D0F92BB27639FA00DB11DE6 |
:10780000EE27729FA00DB11DEE1FAF93AA27649FB4 |
:10781000B00DE11D739FB00DE11DAA1F6627829F69 |
:10782000B00DE11DA61F5527749FE00DA11D551F2A |
:10783000839FE00DA11D561F849FA00D511D852F14 |
:107840007A2F6E2F1F900F9088231AF4939539F496 |
:107850008FCF000C111CBB1F661F771F881F0128CC |
:107860000895629FD001739FF001829FE00DF11D8A |
:10787000649FE00DF11D929FF00D839FF00D749FAA |
:10788000F00D659FF00D9927729FB00DE11DF91F56 |
:10789000639FB00DE11DF91FBD01CF0111240895B3 |
:1078A000991B79E004C0991F961708F0961B881F52 |
:1078B0007A95C9F780950895AA1BBB1B51E107C0B3 |
:1078C000AA1FBB1FA617B70710F0A61BB70B881F70 |
:1078D000991F5A95A9F780959095BC01CD010895FF |
:1078E00097FB092E07260AD077FD04D0E5DF06D0E6 |
:1078F00000201AF4709561957F4F0895F6F79095E2 |
:1079000081959F4F0895A1E21A2EAA1BBB1BFD0172 |
:107910000DC0AA1FBB1FEE1FFF1FA217B307E4076E |
:10792000F50720F0A21BB30BE40BF50B661F771FC6 |
:10793000881F991F1A9469F76095709580959095A6 |
:107940009B01AC01BD01CF01089597FB092E0526CF |
:107950000ED057FD04D0D7DF0AD0001C38F4509564 |
:107960004095309521953F4F4F4F5F4F0895F6F763 |
:1079700090958095709561957F4F8F4F9F4F08959B |
:107980002F923F924F925F926F927F928F929F922F |
:10799000AF92BF92CF92DF92EF92FF920F931F931D |
:1079A000CF93DF93CDB7DEB7CA1BDB0B0FB6F894CE |
:1079B000DEBF0FBECDBF09942A88398848885F840E |
:1079C0006E847D848C849B84AA84B984C884DF807F |
:1079D000EE80FD800C811B81AA81B981CE0FD11D63 |
:1079E0000FB6F894DEBF0FBECDBFED010895EE0FC8 |
:1079F000FF1F0590F491E02D0994F999FECFB2BDD7 |
:107A0000A1BDF89A119600B40895F7DF01921A9477 |
:107A1000E1F70895F999FECFB2BDA1BD00BC119662 |
:107A20000FB6F894FA9AF99A0FBE08950190F2DF12 |
:087A30001A94E1F70895FFCF5D |
:107A38000A01FF64496E74656772616C4E69636B15 |
:107A480020202020496E74656772616C526F6C6CDF |
:107A5800202020204163634E69636B202020202072 |
:107A680020202020416363526F6C6C20202020204E |
:107A7800202020204779726F4769657220202020D6 |
:107A880020202020486F6568656E57657274202035 |
:107A9800202020204163635A2020202020202020FD |
:107AA8002020202047617320202020202020202013 |
:107AB800202020204B6F6D7061737356616C756563 |
:107AC800202020205370616E6E756E672020202064 |
:107AD80020202020456D7066616E672020202020C0 |
:107AE80020202020416E616C6F67313120202020DA |
:107AF800202020204D6F746F725F566F726E652064 |
:107B0800202020204D6F746F725F48696E74656E17 |
:107B1800202020204D6F746F725F4C696E6B73204C |
:107B2800202020204D6F746F725F526563687473F4 |
:107B3800202020204163635F5A202020202020201D |
:107B4800202020204D697474656C4163634E69631D |
:107B58006B2020204D697474656C416363526F6CAF |
:107B68006C202020496E74656772616C4572724E94 |
:107B780069636B20496E74656772616C45727252F5 |
:107B88006F6C6C204D697474656C496E744E6963D2 |
:107B98006B2020204D697474656C496E74526F6C4B |
:107BA8006C0920004E65757472616C4E69636B20B8 |
:107BB80020202020526F6C6C4F66667365742020FD |
:107BC80020202020496E74526F6C6C2A46616B74B9 |
:107BD8006F722020416E616C6F6732362020202042 |
:107BE80020202020446972656B74417573676C525C |
:107BF8006F6C6C204D65737377657274526F6C6C23 |
:107C080020202020417573676C65696368526F6C2A |
:107C18006C202020492D4C616765526F6C6C2020C8 |
:107C280020202020537469636B526F6C6C202020D5 |
:107C380020202020FFFF0A016400007D0000FF03D0 |
:107C48000102030405060708090A48616C6C6F20E5 |
:107C580057656C7400000000000000000000000080 |
:107C6800000000000000000000000000000000000C |
:107C780000000000000000000000000000000000FC |
:107C880000000000000000000000000000000000EC |
:107C9800000000000000000000000C014265676958 |
:107CA8006E6E657200004E6F726D616C00005370ED |
:107CB8006F72740000640090D0030090D003001726 |
:107CC800B7D13830FB103A409696020A644664EC05 |
:027CD800FF00AB |
:106E80000404A60195010E941E3C79018A01FF2499 |
:106E9000E7FCF094C7010E94EA392C01C7010E9467 |
:106EA0002D3A3C016091090470910A0480910B0411 |
:106EB00090910C04A60195010E941E3C79018A0163 |
:106EC000FF24E7FCF094C7010E94EA399A8789877A |
:106ED000C7010E942D3A1C016091BB077091BC074D |
:106EE000E090BD07F090BE072091AF07332727FD44 |
:106EF0003095E21AF30A0027F7FC0095102FA090B6 |
:106F0000BF07B090C0072091B007332727FD309509 |
:106F1000A21AB30ACC24B7FCC094DC2C2091AE0793 |
:106F2000332727FD3095621B730B882777FD8095EB |
:106F3000982F882477FC8094982CA40193010E94B8 |
:106F4000AA3B3B014C0189859A85AA2797FDA0950C |
:106F5000BA2F8D839E83AF83B887C201AA2797FD7E |
:106F6000A095BA2F89839A83AB83BC83C801B701EC |
:106F70002D813E814F8158850E94AA3B29813A810B |
:106F80004B815C810E94AA3B20E034E040E050E06D |
:106F90000E941E3C620E731E841E951E442437FC04 |
:106FA0004094542CC601B501A20191010E94AA3B54 |
:106FB00029813A814B815C810E94AA3B20E034E028 |
:106FC00040E050E00E941E3C621A730A840A950A4F |
:106FD000C801B701A20191010E94AA3B7B018C016B |
:106FE000C601B5012D813E814F8158850E94AA3B83 |
:106FF000E60EF71E081F191FC801B70120E034E094 |
:1070000040E050E00E941E3C79018A01C401B301B6 |
:1070100020E034E040E050E00E941E3CCA01B9018B |
:10702000A80197010E943E399C0197FF05C088275F |
:107030009927821B930B04C088E691E0821B930B77 |
:10704000E2E1C65F0C94553C8091B707813041F076 |
:10705000813018F0823049F51CC02A9A81E016C0B0 |
:107060002A988091BA07853011F481E305C08630F3 |
:1070700011F482E301C083E38EBD88E090E00E94BA |
:107080009A0C9093B9078093B80782E08093B70772 |
:1070900008958091B8079091B9070E94A30C8823A6 |
:1070A00021F01EBC83E08093B7070895A0E0B0E014 |
:1070B000ECE5F8E30C943B3C299A809100018A307E |
:1070C00011F4289801C0289AAA24BB2400E010E0FB |
:1070D00088249924EE24FF2466247724CC24DD24FC |
:1070E00062E3462E55248091BB079091BC07081798 |
:1070F00019072CF40091BB071091BC070BC08091BD |
:10710000BB079091BC078A159B0524F4A090BB0790 |
:10711000B090BC078091BD079091BE07E816F906B4 |
:107120002CF4E090BD07F090BE070BC08091BD0726 |
:107130009091BE078815990524F48090BD07909022 |
:10714000BE078091BF079091C007C816D9062CF4DE |
:10715000C090BF07D090C0070BC08091BF0790912F |
:10716000C0078615970524F46090BF077090C0078C |
:10717000552081F485B191E0892785B985B192E0E8 |
:10718000892785B982E390E09093C1038093C0037F |
:1071900052E3552E8AE090E00E949A0CEC01CE0159 |
:1071A0000E94A30C8823D9F3E0913307FF27EE0F49 |
:1071B000FF1FEB5FF84F80819181843691050CF4BD |
:1071C0004A94442011F05A948ECFC8018A199B0921 |
:1071D0009093B2078093B107C701881999099093DA |
:1071E000B4078093B307C601861997099093B60731 |
:1071F0008093B507EEEAF7E0C8018A0D9B1D62E0B7 |
:1072000070E00E94E93B6093AE07C701880D991DAD |
:1072100062E070E00E94E93B6093AF07C601860D13 |
:10722000971D62E070E00E94E93B6093B00789E03F |
:10723000A8E6B1E0182E0E948F3CE0E1CDB7DEB7A2 |
:107240000C94573C83ED8CBD84B1846A84B98091E1 |
:1072500000018A3019F4539A5B9802C03E9A46980E |
:1072600085E08093BA071092B70789E0EEEAF7E06D |
:10727000A8E6B1E0182E0E947E3C0895DF92EF92BE |
:10728000FF920F931F937B018C016115710581059E |
:10729000910541F4211531054105510519F480E0AE |
:1072A00090E092C057FD03C061E0D62E02C09FEF70 |
:1072B000D92EE114F1040105110531F48AE52D2DD3 |
:1072C0002802C001112480C086E0220F331F441F12 |
:1072D000551F8A95D1F7CA01B901A80197010E94EB |
:1072E0001E3CF90137FF03C0F095E195FF4F41E0E7 |
:1072F000EA35F40734F4E55FFA4F8491282F3327F9 |
:1073000047C05CE1E73AF5071CF02AE530E040C0F1 |
:1073100089E0ED38F8071CF029E530E039C025E0B8 |
:10732000EA3BF2071CF028E530E032C044E0E731E8 |
:10733000F4071CF027E530E02BC053E0EE32F507F0 |
:107340001CF026E530E024C082E0E939F8071CF0A3 |
:1073500025E530E01DC022E0E233F2071CF024E511 |
:1073600030E016C041E0E73EF4071CF023E530E0D2 |
:107370000FC051E0ED3AF5071CF022E530E008C0FF |
:10738000EF57F1401CF021E530E002C020E530E08D |
:107390001E141F04100611066CF48D2D992787FD0D |
:1073A0009095AC01249FC001259F900D349F900DB6 |
:1073B00011240AC01D142CF484EB90E0821B930B63 |
:1073C00003C0C901845B90401F910F91FF90EF9023 |
:1073D000DF900895FC0197FD03C041E050E005C037 |
:1073E000F095E195FF4F4FEF5FEFEB35F1055CF066 |
:1073F000CF018B5590408A35910540F484EB90E0A5 |
:107400008E1B9F0BFC0121E030E010C0CF01855B9B |
:1074100090408A35910518F4E45BF04005C088E699 |
:1074200091E08E1B9F0BFC012FEF3FEFEE0FFF1F34 |
:10743000EB59F94F85919491BC01629FC001639F04 |
:10744000900D729F900D11249C01429FC001439F9B |
:10745000900D529F900D112408952AE530E0281BCD |
:10746000390BC9010E94EA390895FC01415050408E |
:1074700030F001900616D1F73197CF010895882793 |
:10748000992708955058192EEFD001D0D2C0BA17BD |
:107490006207730784079507B1F188F40EF410941E |
:1074A0000B2EBA2FA02D062E622F202D072E732F04 |
:1074B000302D082E842F402D092E952F502DFF277B |
:1074C0005523B9F0591B49F0573E98F0469537952A |
:1074D0002795A795F0405395C9F776F0BA0F621F2C |
:1074E000731F841F30F4879577956795B795F040A3 |
:1074F000939517FA0F2E0895BF1BBB27BA0B620B8B |
:10750000730B840BF6CFDEF6DBC0AED001D091C09A |
:10751000552359F0992369F09F575F57951B33F412 |
:1075200042F4903811F4915805C09BC091589F3F88 |
:1075300009F4C6C0BB27112462177307840730F40F |
:10754000660F771F881FBB1F915098F311D00F92C1 |
:107550000FD00F920DD0A0E82617370748071B065B |
:1075600009F0A048BA2F602D7F918F9100240895D3 |
:10757000A0E80024621773078407B10528F0621B96 |
:10758000730B840BB1090A2A660F771F881FBB1F74 |
:10759000A69581F7089597FB73D09F3738F0FEE9E1 |
:1075A000F91B982F872F762F6B2F05C086C09695D5 |
:1075B000879577956795F150D0F73EF49095809533 |
:1075C000709561957F4F8F4F9F4F0895E89403C04A |
:1075D00097FB0EF4F3DFB62F672F782F892F9EE9E4 |
:1075E000002427C00ED05EF004C00BD026F001C0EE |
:1075F00008D019F020F48FEF089580E0089581E01D |
:10760000089597FB092E052600F8689430D0E89479 |
:1076100007FC07C0621773078407950721F008F479 |
:1076200000940794989408959A95BB0F661F771F4E |
:10763000881F11249923A1F08823B2F79F3F59F0A6 |
:10764000BB0F48F421F4002011F460FF04C06F5F09 |
:107650007F4F8F4F9F4F881F9795879597F9089574 |
:107660002CC09FEF80EC0895052E092607FA440FE1 |
:10767000551F5F3F79F0AA27A51708F051E04795FD |
:10768000880F991F9F3F31F0BB27B91708F091E091 |
:10769000879508959F919F911124E3CF97FB880FC1 |
:1076A000991F9F3F31F0BB27B91708F091E08795EC |
:1076B00008959F919F911124D4CF6627772788271B |
:1076C00099270895D1DF01D0B4CF992339F05523FC |
:1076D00029F09F575F57950F13F49AF1F1CF915806 |
:1076E0009F3FE1F3629FA12D0F92BB27639FA00DE7 |
:1076F000B11DEE27729FA00DB11DEE1FAF93AA27FB |
:10770000649FB00DE11D739FB00DE11DAA1F662798 |
:10771000829FB00DE11DA61F5527749FE00DA11D8E |
:10772000551F839FE00DA11D561F849FA00D511D65 |
:10773000852F7A2F6E2F1F900F9088231AF4939520 |
:1077400039F48FCF000C111CBB1F661F771F881FD9 |
:1077500001280895629FD001739FF001829FE00D80 |
:10776000F11D649FE00DF11D929FF00D839FF00DC0 |
:10777000749FF00D659FF00D9927729FB00DE11D6C |
:10778000F91F639FB00DE11DF91FBD01CF01112449 |
:107790000895991B79E004C0991F961708F0961B6D |
:1077A000881F7A95C9F780950895AA1BBB1B51E1E4 |
:1077B00007C0AA1FBB1FA617B70710F0A61BB70B61 |
:1077C000881F991F5A95A9F780959095BC01CD0106 |
:1077D000089597FB092E07260AD077FD04D0E5DF30 |
:1077E00006D000201AF4709561957F4F0895F6F742 |
:1077F000909581959F4F0895A1E21A2EAA1BBB1B5D |
:10780000FD010DC0AA1FBB1FEE1FFF1FA217B3076C |
:10781000E407F50720F0A21BB30BE40BF50B661F82 |
:10782000771F881F991F1A9469F760957095809546 |
:1078300090959B01AC01BD01CF01089597FB092EE6 |
:1078400005260ED057FD04D0D7DF0AD0001C38F42F |
:1078500050954095309521953F4F4F4F5F4F08957C |
:10786000F6F790958095709561957F4F8F4F9F4F5C |
:1078700008952F923F924F925F926F927F928F92D4 |
:107880009F92AF92BF92CF92DF92EF92FF920F93AF |
:107890001F93CF93DF93CDB7DEB7CA1BDB0B0FB6B9 |
:1078A000F894DEBF0FBECDBF09942A883988488876 |
:1078B0005F846E847D848C849B84AA84B984C8840C |
:1078C000DF80EE80FD800C811B81AA81B981CE0F03 |
:1078D000D11D0FB6F894DEBF0FBECDBFED010895E8 |
:1078E000EE0FFF1F0590F491E02D0994F999FECF5A |
:1078F000B2BDA1BDF89A119600B40895F7DF0192C8 |
:107900001A94E1F70895F999FECFB2BDA1BD00BC6C |
:1079100011960FB6F894FA9AF99A0FBE089501904D |
:0A792000F2DF1A94E1F70895FFCF9B |
:10792A000A01FF64496E74656772616C4E69636B24 |
:10793A0020202020496E74656772616C526F6C6CEE |
:10794A00202020204163634E69636B202020202081 |
:10795A0020202020416363526F6C6C20202020205D |
:10796A00202020204779726F4769657220202020E5 |
:10797A0020202020486F6568656E57657274202044 |
:10798A00202020204163635A20202020202020200C |
:10799A002020202047617320202020202020202022 |
:1079AA00202020204B6F6D7061737356616C756572 |
:1079BA00202020205370616E6E756E672020202073 |
:1079CA0020202020456D7066616E672020202020CF |
:1079DA0020202020416E616C6F67313120202020E9 |
:1079EA00202020204D6F746F725F566F726E652073 |
:1079FA00202020204D6F746F725F48696E74656E27 |
:107A0A00202020204D6F746F725F4C696E6B73205B |
:107A1A00202020204D6F746F725F52656368747303 |
:107A2A00202020204163635F5A202020202020202C |
:107A3A00202020204D697474656C4163634E69632C |
:107A4A006B2020204D697474656C416363526F6CBE |
:107A5A006C202020496E74656772616C4572724EA3 |
:107A6A0069636B20496E74656772616C4572725204 |
:107A7A006F6C6C204D697474656C496E744E6963E1 |
:107A8A006B2020204D697474656C496E74526F6C5A |
:107A9A006C0920004E65757472616C4E69636B20C7 |
:107AAA0020202020526F6C6C4F666673657420200C |
:107ABA0020202020496E74526F6C6C2A46616B74C8 |
:107ACA006F722020416E616C6F6732362020202051 |
:107ADA0020202020446972656B74417573676C526B |
:107AEA006F6C6C204D65737377657274526F6C6C32 |
:107AFA0020202020417573676C65696368526F6C3A |
:107B0A006C202020492D4C616765526F6C6C2020D7 |
:107B1A0020202020537469636B526F6C6C202020E4 |
:107B2A0020202020FFFF0A016400007D0000FF03DF |
:107B3A000102030405060708090A48616C6C6F20F4 |
:107B4A0057656C740000000000000000000000008F |
:107B5A00000000000000000000000000000000001B |
:107B6A00000000000000000000000000000000000B |
:107B7A0000000000000000000000000000000000FB |
:107B8A00000000000000000000000C014265676967 |
:107B9A006E6E657200004E6F726D616C00005370FC |
:107BAA006F72740000640090D0030090D003001735 |
:107BBA00B7D13830FB103A409696020A644664EC14 |
:027BCA00FF00BA |
:00000001FF |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/COPYING |
---|
0,0 → 1,674 |
GNU GENERAL PUBLIC LICENSE |
Version 3, 29 June 2007 |
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> |
Everyone is permitted to copy and distribute verbatim copies |
of this license document, but changing it is not allowed. |
Preamble |
The GNU General Public License is a free, copyleft license for |
software and other kinds of works. |
The licenses for most software and other practical works are designed |
to take away your freedom to share and change the works. By contrast, |
the GNU General Public License is intended to guarantee your freedom to |
share and change all versions of a program--to make sure it remains free |
software for all its users. We, the Free Software Foundation, use the |
GNU General Public License for most of our software; it applies also to |
any other work released this way by its authors. You can apply it to |
your programs, too. |
When we speak of free software, we are referring to freedom, not |
price. Our General Public Licenses are designed to make sure that you |
have the freedom to distribute copies of free software (and charge for |
them if you wish), that you receive source code or can get it if you |
want it, that you can change the software or use pieces of it in new |
free programs, and that you know you can do these things. |
To protect your rights, we need to prevent others from denying you |
these rights or asking you to surrender the rights. Therefore, you have |
certain responsibilities if you distribute copies of the software, or if |
you modify it: responsibilities to respect the freedom of others. |
For example, if you distribute copies of such a program, whether |
gratis or for a fee, you must pass on to the recipients the same |
freedoms that you received. You must make sure that they, too, receive |
or can get the source code. And you must show them these terms so they |
know their rights. |
Developers that use the GNU GPL protect your rights with two steps: |
(1) assert copyright on the software, and (2) offer you this License |
giving you legal permission to copy, distribute and/or modify it. |
For the developers' and authors' protection, the GPL clearly explains |
that there is no warranty for this free software. For both users' and |
authors' sake, the GPL requires that modified versions be marked as |
changed, so that their problems will not be attributed erroneously to |
authors of previous versions. |
Some devices are designed to deny users access to install or run |
modified versions of the software inside them, although the manufacturer |
can do so. This is fundamentally incompatible with the aim of |
protecting users' freedom to change the software. The systematic |
pattern of such abuse occurs in the area of products for individuals to |
use, which is precisely where it is most unacceptable. Therefore, we |
have designed this version of the GPL to prohibit the practice for those |
products. If such problems arise substantially in other domains, we |
stand ready to extend this provision to those domains in future versions |
of the GPL, as needed to protect the freedom of users. |
Finally, every program is threatened constantly by software patents. |
States should not allow patents to restrict development and use of |
software on general-purpose computers, but in those that do, we wish to |
avoid the special danger that patents applied to a free program could |
make it effectively proprietary. To prevent this, the GPL assures that |
patents cannot be used to render the program non-free. |
The precise terms and conditions for copying, distribution and |
modification follow. |
TERMS AND CONDITIONS |
0. Definitions. |
"This License" refers to version 3 of the GNU General Public License. |
"Copyright" also means copyright-like laws that apply to other kinds of |
works, such as semiconductor masks. |
"The Program" refers to any copyrightable work licensed under this |
License. Each licensee is addressed as "you". "Licensees" and |
"recipients" may be individuals or organizations. |
To "modify" a work means to copy from or adapt all or part of the work |
in a fashion requiring copyright permission, other than the making of an |
exact copy. The resulting work is called a "modified version" of the |
earlier work or a work "based on" the earlier work. |
A "covered work" means either the unmodified Program or a work based |
on the Program. |
To "propagate" a work means to do anything with it that, without |
permission, would make you directly or secondarily liable for |
infringement under applicable copyright law, except executing it on a |
computer or modifying a private copy. Propagation includes copying, |
distribution (with or without modification), making available to the |
public, and in some countries other activities as well. |
To "convey" a work means any kind of propagation that enables other |
parties to make or receive copies. Mere interaction with a user through |
a computer network, with no transfer of a copy, is not conveying. |
An interactive user interface displays "Appropriate Legal Notices" |
to the extent that it includes a convenient and prominently visible |
feature that (1) displays an appropriate copyright notice, and (2) |
tells the user that there is no warranty for the work (except to the |
extent that warranties are provided), that licensees may convey the |
work under this License, and how to view a copy of this License. If |
the interface presents a list of user commands or options, such as a |
menu, a prominent item in the list meets this criterion. |
1. Source Code. |
The "source code" for a work means the preferred form of the work |
for making modifications to it. "Object code" means any non-source |
form of a work. |
A "Standard Interface" means an interface that either is an official |
standard defined by a recognized standards body, or, in the case of |
interfaces specified for a particular programming language, one that |
is widely used among developers working in that language. |
The "System Libraries" of an executable work include anything, other |
than the work as a whole, that (a) is included in the normal form of |
packaging a Major Component, but which is not part of that Major |
Component, and (b) serves only to enable use of the work with that |
Major Component, or to implement a Standard Interface for which an |
implementation is available to the public in source code form. A |
"Major Component", in this context, means a major essential component |
(kernel, window system, and so on) of the specific operating system |
(if any) on which the executable work runs, or a compiler used to |
produce the work, or an object code interpreter used to run it. |
The "Corresponding Source" for a work in object code form means all |
the source code needed to generate, install, and (for an executable |
work) run the object code and to modify the work, including scripts to |
control those activities. However, it does not include the work's |
System Libraries, or general-purpose tools or generally available free |
programs which are used unmodified in performing those activities but |
which are not part of the work. For example, Corresponding Source |
includes interface definition files associated with source files for |
the work, and the source code for shared libraries and dynamically |
linked subprograms that the work is specifically designed to require, |
such as by intimate data communication or control flow between those |
subprograms and other parts of the work. |
The Corresponding Source need not include anything that users |
can regenerate automatically from other parts of the Corresponding |
Source. |
The Corresponding Source for a work in source code form is that |
same work. |
2. Basic Permissions. |
All rights granted under this License are granted for the term of |
copyright on the Program, and are irrevocable provided the stated |
conditions are met. This License explicitly affirms your unlimited |
permission to run the unmodified Program. The output from running a |
covered work is covered by this License only if the output, given its |
content, constitutes a covered work. This License acknowledges your |
rights of fair use or other equivalent, as provided by copyright law. |
You may make, run and propagate covered works that you do not |
convey, without conditions so long as your license otherwise remains |
in force. You may convey covered works to others for the sole purpose |
of having them make modifications exclusively for you, or provide you |
with facilities for running those works, provided that you comply with |
the terms of this License in conveying all material for which you do |
not control copyright. Those thus making or running the covered works |
for you must do so exclusively on your behalf, under your direction |
and control, on terms that prohibit them from making any copies of |
your copyrighted material outside their relationship with you. |
Conveying under any other circumstances is permitted solely under |
the conditions stated below. Sublicensing is not allowed; section 10 |
makes it unnecessary. |
3. Protecting Users' Legal Rights From Anti-Circumvention Law. |
No covered work shall be deemed part of an effective technological |
measure under any applicable law fulfilling obligations under article |
11 of the WIPO copyright treaty adopted on 20 December 1996, or |
similar laws prohibiting or restricting circumvention of such |
measures. |
When you convey a covered work, you waive any legal power to forbid |
circumvention of technological measures to the extent such circumvention |
is effected by exercising rights under this License with respect to |
the covered work, and you disclaim any intention to limit operation or |
modification of the work as a means of enforcing, against the work's |
users, your or third parties' legal rights to forbid circumvention of |
technological measures. |
4. Conveying Verbatim Copies. |
You may convey verbatim copies of the Program's source code as you |
receive it, in any medium, provided that you conspicuously and |
appropriately publish on each copy an appropriate copyright notice; |
keep intact all notices stating that this License and any |
non-permissive terms added in accord with section 7 apply to the code; |
keep intact all notices of the absence of any warranty; and give all |
recipients a copy of this License along with the Program. |
You may charge any price or no price for each copy that you convey, |
and you may offer support or warranty protection for a fee. |
5. Conveying Modified Source Versions. |
You may convey a work based on the Program, or the modifications to |
produce it from the Program, in the form of source code under the |
terms of section 4, provided that you also meet all of these conditions: |
a) The work must carry prominent notices stating that you modified |
it, and giving a relevant date. |
b) The work must carry prominent notices stating that it is |
released under this License and any conditions added under section |
7. This requirement modifies the requirement in section 4 to |
"keep intact all notices". |
c) You must license the entire work, as a whole, under this |
License to anyone who comes into possession of a copy. This |
License will therefore apply, along with any applicable section 7 |
additional terms, to the whole of the work, and all its parts, |
regardless of how they are packaged. This License gives no |
permission to license the work in any other way, but it does not |
invalidate such permission if you have separately received it. |
d) If the work has interactive user interfaces, each must display |
Appropriate Legal Notices; however, if the Program has interactive |
interfaces that do not display Appropriate Legal Notices, your |
work need not make them do so. |
A compilation of a covered work with other separate and independent |
works, which are not by their nature extensions of the covered work, |
and which are not combined with it such as to form a larger program, |
in or on a volume of a storage or distribution medium, is called an |
"aggregate" if the compilation and its resulting copyright are not |
used to limit the access or legal rights of the compilation's users |
beyond what the individual works permit. Inclusion of a covered work |
in an aggregate does not cause this License to apply to the other |
parts of the aggregate. |
6. Conveying Non-Source Forms. |
You may convey a covered work in object code form under the terms |
of sections 4 and 5, provided that you also convey the |
machine-readable Corresponding Source under the terms of this License, |
in one of these ways: |
a) Convey the object code in, or embodied in, a physical product |
(including a physical distribution medium), accompanied by the |
Corresponding Source fixed on a durable physical medium |
customarily used for software interchange. |
b) Convey the object code in, or embodied in, a physical product |
(including a physical distribution medium), accompanied by a |
written offer, valid for at least three years and valid for as |
long as you offer spare parts or customer support for that product |
model, to give anyone who possesses the object code either (1) a |
copy of the Corresponding Source for all the software in the |
product that is covered by this License, on a durable physical |
medium customarily used for software interchange, for a price no |
more than your reasonable cost of physically performing this |
conveying of source, or (2) access to copy the |
Corresponding Source from a network server at no charge. |
c) Convey individual copies of the object code with a copy of the |
written offer to provide the Corresponding Source. This |
alternative is allowed only occasionally and noncommercially, and |
only if you received the object code with such an offer, in accord |
with subsection 6b. |
d) Convey the object code by offering access from a designated |
place (gratis or for a charge), and offer equivalent access to the |
Corresponding Source in the same way through the same place at no |
further charge. You need not require recipients to copy the |
Corresponding Source along with the object code. If the place to |
copy the object code is a network server, the Corresponding Source |
may be on a different server (operated by you or a third party) |
that supports equivalent copying facilities, provided you maintain |
clear directions next to the object code saying where to find the |
Corresponding Source. Regardless of what server hosts the |
Corresponding Source, you remain obligated to ensure that it is |
available for as long as needed to satisfy these requirements. |
e) Convey the object code using peer-to-peer transmission, provided |
you inform other peers where the object code and Corresponding |
Source of the work are being offered to the general public at no |
charge under subsection 6d. |
A separable portion of the object code, whose source code is excluded |
from the Corresponding Source as a System Library, need not be |
included in conveying the object code work. |
A "User Product" is either (1) a "consumer product", which means any |
tangible personal property which is normally used for personal, family, |
or household purposes, or (2) anything designed or sold for incorporation |
into a dwelling. In determining whether a product is a consumer product, |
doubtful cases shall be resolved in favor of coverage. For a particular |
product received by a particular user, "normally used" refers to a |
typical or common use of that class of product, regardless of the status |
of the particular user or of the way in which the particular user |
actually uses, or expects or is expected to use, the product. A product |
is a consumer product regardless of whether the product has substantial |
commercial, industrial or non-consumer uses, unless such uses represent |
the only significant mode of use of the product. |
"Installation Information" for a User Product means any methods, |
procedures, authorization keys, or other information required to install |
and execute modified versions of a covered work in that User Product from |
a modified version of its Corresponding Source. The information must |
suffice to ensure that the continued functioning of the modified object |
code is in no case prevented or interfered with solely because |
modification has been made. |
If you convey an object code work under this section in, or with, or |
specifically for use in, a User Product, and the conveying occurs as |
part of a transaction in which the right of possession and use of the |
User Product is transferred to the recipient in perpetuity or for a |
fixed term (regardless of how the transaction is characterized), the |
Corresponding Source conveyed under this section must be accompanied |
by the Installation Information. But this requirement does not apply |
if neither you nor any third party retains the ability to install |
modified object code on the User Product (for example, the work has |
been installed in ROM). |
The requirement to provide Installation Information does not include a |
requirement to continue to provide support service, warranty, or updates |
for a work that has been modified or installed by the recipient, or for |
the User Product in which it has been modified or installed. Access to a |
network may be denied when the modification itself materially and |
adversely affects the operation of the network or violates the rules and |
protocols for communication across the network. |
Corresponding Source conveyed, and Installation Information provided, |
in accord with this section must be in a format that is publicly |
documented (and with an implementation available to the public in |
source code form), and must require no special password or key for |
unpacking, reading or copying. |
7. Additional Terms. |
"Additional permissions" are terms that supplement the terms of this |
License by making exceptions from one or more of its conditions. |
Additional permissions that are applicable to the entire Program shall |
be treated as though they were included in this License, to the extent |
that they are valid under applicable law. If additional permissions |
apply only to part of the Program, that part may be used separately |
under those permissions, but the entire Program remains governed by |
this License without regard to the additional permissions. |
When you convey a copy of a covered work, you may at your option |
remove any additional permissions from that copy, or from any part of |
it. (Additional permissions may be written to require their own |
removal in certain cases when you modify the work.) You may place |
additional permissions on material, added by you to a covered work, |
for which you have or can give appropriate copyright permission. |
Notwithstanding any other provision of this License, for material you |
add to a covered work, you may (if authorized by the copyright holders of |
that material) supplement the terms of this License with terms: |
a) Disclaiming warranty or limiting liability differently from the |
terms of sections 15 and 16 of this License; or |
b) Requiring preservation of specified reasonable legal notices or |
author attributions in that material or in the Appropriate Legal |
Notices displayed by works containing it; or |
c) Prohibiting misrepresentation of the origin of that material, or |
requiring that modified versions of such material be marked in |
reasonable ways as different from the original version; or |
d) Limiting the use for publicity purposes of names of licensors or |
authors of the material; or |
e) Declining to grant rights under trademark law for use of some |
trade names, trademarks, or service marks; or |
f) Requiring indemnification of licensors and authors of that |
material by anyone who conveys the material (or modified versions of |
it) with contractual assumptions of liability to the recipient, for |
any liability that these contractual assumptions directly impose on |
those licensors and authors. |
All other non-permissive additional terms are considered "further |
restrictions" within the meaning of section 10. If the Program as you |
received it, or any part of it, contains a notice stating that it is |
governed by this License along with a term that is a further |
restriction, you may remove that term. If a license document contains |
a further restriction but permits relicensing or conveying under this |
License, you may add to a covered work material governed by the terms |
of that license document, provided that the further restriction does |
not survive such relicensing or conveying. |
If you add terms to a covered work in accord with this section, you |
must place, in the relevant source files, a statement of the |
additional terms that apply to those files, or a notice indicating |
where to find the applicable terms. |
Additional terms, permissive or non-permissive, may be stated in the |
form of a separately written license, or stated as exceptions; |
the above requirements apply either way. |
8. Termination. |
You may not propagate or modify a covered work except as expressly |
provided under this License. Any attempt otherwise to propagate or |
modify it is void, and will automatically terminate your rights under |
this License (including any patent licenses granted under the third |
paragraph of section 11). |
However, if you cease all violation of this License, then your |
license from a particular copyright holder is reinstated (a) |
provisionally, unless and until the copyright holder explicitly and |
finally terminates your license, and (b) permanently, if the copyright |
holder fails to notify you of the violation by some reasonable means |
prior to 60 days after the cessation. |
Moreover, your license from a particular copyright holder is |
reinstated permanently if the copyright holder notifies you of the |
violation by some reasonable means, this is the first time you have |
received notice of violation of this License (for any work) from that |
copyright holder, and you cure the violation prior to 30 days after |
your receipt of the notice. |
Termination of your rights under this section does not terminate the |
licenses of parties who have received copies or rights from you under |
this License. If your rights have been terminated and not permanently |
reinstated, you do not qualify to receive new licenses for the same |
material under section 10. |
9. Acceptance Not Required for Having Copies. |
You are not required to accept this License in order to receive or |
run a copy of the Program. Ancillary propagation of a covered work |
occurring solely as a consequence of using peer-to-peer transmission |
to receive a copy likewise does not require acceptance. However, |
nothing other than this License grants you permission to propagate or |
modify any covered work. These actions infringe copyright if you do |
not accept this License. Therefore, by modifying or propagating a |
covered work, you indicate your acceptance of this License to do so. |
10. Automatic Licensing of Downstream Recipients. |
Each time you convey a covered work, the recipient automatically |
receives a license from the original licensors, to run, modify and |
propagate that work, subject to this License. You are not responsible |
for enforcing compliance by third parties with this License. |
An "entity transaction" is a transaction transferring control of an |
organization, or substantially all assets of one, or subdividing an |
organization, or merging organizations. If propagation of a covered |
work results from an entity transaction, each party to that |
transaction who receives a copy of the work also receives whatever |
licenses to the work the party's predecessor in interest had or could |
give under the previous paragraph, plus a right to possession of the |
Corresponding Source of the work from the predecessor in interest, if |
the predecessor has it or can get it with reasonable efforts. |
You may not impose any further restrictions on the exercise of the |
rights granted or affirmed under this License. For example, you may |
not impose a license fee, royalty, or other charge for exercise of |
rights granted under this License, and you may not initiate litigation |
(including a cross-claim or counterclaim in a lawsuit) alleging that |
any patent claim is infringed by making, using, selling, offering for |
sale, or importing the Program or any portion of it. |
11. Patents. |
A "contributor" is a copyright holder who authorizes use under this |
License of the Program or a work on which the Program is based. The |
work thus licensed is called the contributor's "contributor version". |
A contributor's "essential patent claims" are all patent claims |
owned or controlled by the contributor, whether already acquired or |
hereafter acquired, that would be infringed by some manner, permitted |
by this License, of making, using, or selling its contributor version, |
but do not include claims that would be infringed only as a |
consequence of further modification of the contributor version. For |
purposes of this definition, "control" includes the right to grant |
patent sublicenses in a manner consistent with the requirements of |
this License. |
Each contributor grants you a non-exclusive, worldwide, royalty-free |
patent license under the contributor's essential patent claims, to |
make, use, sell, offer for sale, import and otherwise run, modify and |
propagate the contents of its contributor version. |
In the following three paragraphs, a "patent license" is any express |
agreement or commitment, however denominated, not to enforce a patent |
(such as an express permission to practice a patent or covenant not to |
sue for patent infringement). To "grant" such a patent license to a |
party means to make such an agreement or commitment not to enforce a |
patent against the party. |
If you convey a covered work, knowingly relying on a patent license, |
and the Corresponding Source of the work is not available for anyone |
to copy, free of charge and under the terms of this License, through a |
publicly available network server or other readily accessible means, |
then you must either (1) cause the Corresponding Source to be so |
available, or (2) arrange to deprive yourself of the benefit of the |
patent license for this particular work, or (3) arrange, in a manner |
consistent with the requirements of this License, to extend the patent |
license to downstream recipients. "Knowingly relying" means you have |
actual knowledge that, but for the patent license, your conveying the |
covered work in a country, or your recipient's use of the covered work |
in a country, would infringe one or more identifiable patents in that |
country that you have reason to believe are valid. |
If, pursuant to or in connection with a single transaction or |
arrangement, you convey, or propagate by procuring conveyance of, a |
covered work, and grant a patent license to some of the parties |
receiving the covered work authorizing them to use, propagate, modify |
or convey a specific copy of the covered work, then the patent license |
you grant is automatically extended to all recipients of the covered |
work and works based on it. |
A patent license is "discriminatory" if it does not include within |
the scope of its coverage, prohibits the exercise of, or is |
conditioned on the non-exercise of one or more of the rights that are |
specifically granted under this License. You may not convey a covered |
work if you are a party to an arrangement with a third party that is |
in the business of distributing software, under which you make payment |
to the third party based on the extent of your activity of conveying |
the work, and under which the third party grants, to any of the |
parties who would receive the covered work from you, a discriminatory |
patent license (a) in connection with copies of the covered work |
conveyed by you (or copies made from those copies), or (b) primarily |
for and in connection with specific products or compilations that |
contain the covered work, unless you entered into that arrangement, |
or that patent license was granted, prior to 28 March 2007. |
Nothing in this License shall be construed as excluding or limiting |
any implied license or other defenses to infringement that may |
otherwise be available to you under applicable patent law. |
12. No Surrender of Others' Freedom. |
If conditions are imposed on you (whether by court order, agreement or |
otherwise) that contradict the conditions of this License, they do not |
excuse you from the conditions of this License. If you cannot convey a |
covered work so as to satisfy simultaneously your obligations under this |
License and any other pertinent obligations, then as a consequence you may |
not convey it at all. For example, if you agree to terms that obligate you |
to collect a royalty for further conveying from those to whom you convey |
the Program, the only way you could satisfy both those terms and this |
License would be to refrain entirely from conveying the Program. |
13. Use with the GNU Affero General Public License. |
Notwithstanding any other provision of this License, you have |
permission to link or combine any covered work with a work licensed |
under version 3 of the GNU Affero General Public License into a single |
combined work, and to convey the resulting work. The terms of this |
License will continue to apply to the part which is the covered work, |
but the special requirements of the GNU Affero General Public License, |
section 13, concerning interaction through a network will apply to the |
combination as such. |
14. Revised Versions of this License. |
The Free Software Foundation may publish revised and/or new versions of |
the GNU General Public License from time to time. Such new versions will |
be similar in spirit to the present version, but may differ in detail to |
address new problems or concerns. |
Each version is given a distinguishing version number. If the |
Program specifies that a certain numbered version of the GNU General |
Public License "or any later version" applies to it, you have the |
option of following the terms and conditions either of that numbered |
version or of any later version published by the Free Software |
Foundation. If the Program does not specify a version number of the |
GNU General Public License, you may choose any version ever published |
by the Free Software Foundation. |
If the Program specifies that a proxy can decide which future |
versions of the GNU General Public License can be used, that proxy's |
public statement of acceptance of a version permanently authorizes you |
to choose that version for the Program. |
Later license versions may give you additional or different |
permissions. However, no additional obligations are imposed on any |
author or copyright holder as a result of your choosing to follow a |
later version. |
15. Disclaimer of Warranty. |
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY |
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT |
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY |
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, |
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM |
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF |
ALL NECESSARY SERVICING, REPAIR OR CORRECTION. |
16. Limitation of Liability. |
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING |
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS |
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY |
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE |
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF |
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD |
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), |
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF |
SUCH DAMAGES. |
17. Interpretation of Sections 15 and 16. |
If the disclaimer of warranty and limitation of liability provided |
above cannot be given local legal effect according to their terms, |
reviewing courts shall apply local law that most closely approximates |
an absolute waiver of all civil liability in connection with the |
Program, unless a warranty or assumption of liability accompanies a |
copy of the Program in return for a fee. |
END OF TERMS AND CONDITIONS |
How to Apply These Terms to Your New Programs |
If you develop a new program, and you want it to be of the greatest |
possible use to the public, the best way to achieve this is to make it |
free software which everyone can redistribute and change under these terms. |
To do so, attach the following notices to the program. It is safest |
to attach them to the start of each source file to most effectively |
state the exclusion of warranty; and each file should have at least |
the "copyright" line and a pointer to where the full notice is found. |
<one line to give the program's name and a brief idea of what it does.> |
Copyright (C) <year> <name of author> |
This program 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 3 of the License, or |
(at your option) any later version. |
This program 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 program. If not, see <http://www.gnu.org/licenses/>. |
Also add information on how to contact you by electronic and paper mail. |
If the program does terminal interaction, make it output a short |
notice like this when it starts in an interactive mode: |
<program> Copyright (C) <year> <name of author> |
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. |
This is free software, and you are welcome to redistribute it |
under certain conditions; type `show c' for details. |
The hypothetical commands `show w' and `show c' should show the appropriate |
parts of the General Public License. Of course, your program's commands |
might be different; for a GUI interface, you would use an "about box". |
You should also get your employer (if you work as a programmer) or school, |
if any, to sign a "copyright disclaimer" for the program, if necessary. |
For more information on this, and how to apply and follow the GNU GPL, see |
<http://www.gnu.org/licenses/>. |
The GNU General Public License does not permit incorporating your program |
into proprietary programs. If your program is a subroutine library, you |
may consider it more useful to permit linking proprietary applications with |
the library. If this is what you want to do, use the GNU Lesser General |
Public License instead of this License. But first, please read |
<http://www.gnu.org/philosophy/why-not-lgpl.html>. |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/COPYING.LESSER |
---|
0,0 → 1,165 |
GNU LESSER GENERAL PUBLIC LICENSE |
Version 3, 29 June 2007 |
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> |
Everyone is permitted to copy and distribute verbatim copies |
of this license document, but changing it is not allowed. |
This version of the GNU Lesser General Public License incorporates |
the terms and conditions of version 3 of the GNU General Public |
License, supplemented by the additional permissions listed below. |
0. Additional Definitions. |
As used herein, "this License" refers to version 3 of the GNU Lesser |
General Public License, and the "GNU GPL" refers to version 3 of the GNU |
General Public License. |
"The Library" refers to a covered work governed by this License, |
other than an Application or a Combined Work as defined below. |
An "Application" is any work that makes use of an interface provided |
by the Library, but which is not otherwise based on the Library. |
Defining a subclass of a class defined by the Library is deemed a mode |
of using an interface provided by the Library. |
A "Combined Work" is a work produced by combining or linking an |
Application with the Library. The particular version of the Library |
with which the Combined Work was made is also called the "Linked |
Version". |
The "Minimal Corresponding Source" for a Combined Work means the |
Corresponding Source for the Combined Work, excluding any source code |
for portions of the Combined Work that, considered in isolation, are |
based on the Application, and not on the Linked Version. |
The "Corresponding Application Code" for a Combined Work means the |
object code and/or source code for the Application, including any data |
and utility programs needed for reproducing the Combined Work from the |
Application, but excluding the System Libraries of the Combined Work. |
1. Exception to Section 3 of the GNU GPL. |
You may convey a covered work under sections 3 and 4 of this License |
without being bound by section 3 of the GNU GPL. |
2. Conveying Modified Versions. |
If you modify a copy of the Library, and, in your modifications, a |
facility refers to a function or data to be supplied by an Application |
that uses the facility (other than as an argument passed when the |
facility is invoked), then you may convey a copy of the modified |
version: |
a) under this License, provided that you make a good faith effort to |
ensure that, in the event an Application does not supply the |
function or data, the facility still operates, and performs |
whatever part of its purpose remains meaningful, or |
b) under the GNU GPL, with none of the additional permissions of |
this License applicable to that copy. |
3. Object Code Incorporating Material from Library Header Files. |
The object code form of an Application may incorporate material from |
a header file that is part of the Library. You may convey such object |
code under terms of your choice, provided that, if the incorporated |
material is not limited to numerical parameters, data structure |
layouts and accessors, or small macros, inline functions and templates |
(ten or fewer lines in length), you do both of the following: |
a) Give prominent notice with each copy of the object code that the |
Library is used in it and that the Library and its use are |
covered by this License. |
b) Accompany the object code with a copy of the GNU GPL and this license |
document. |
4. Combined Works. |
You may convey a Combined Work under terms of your choice that, |
taken together, effectively do not restrict modification of the |
portions of the Library contained in the Combined Work and reverse |
engineering for debugging such modifications, if you also do each of |
the following: |
a) Give prominent notice with each copy of the Combined Work that |
the Library is used in it and that the Library and its use are |
covered by this License. |
b) Accompany the Combined Work with a copy of the GNU GPL and this license |
document. |
c) For a Combined Work that displays copyright notices during |
execution, include the copyright notice for the Library among |
these notices, as well as a reference directing the user to the |
copies of the GNU GPL and this license document. |
d) Do one of the following: |
0) Convey the Minimal Corresponding Source under the terms of this |
License, and the Corresponding Application Code in a form |
suitable for, and under terms that permit, the user to |
recombine or relink the Application with a modified version of |
the Linked Version to produce a modified Combined Work, in the |
manner specified by section 6 of the GNU GPL for conveying |
Corresponding Source. |
1) Use a suitable shared library mechanism for linking with the |
Library. A suitable mechanism is one that (a) uses at run time |
a copy of the Library already present on the user's computer |
system, and (b) will operate properly with a modified version |
of the Library that is interface-compatible with the Linked |
Version. |
e) Provide Installation Information, but only if you would otherwise |
be required to provide such information under section 6 of the |
GNU GPL, and only to the extent that such information is |
necessary to install and execute a modified version of the |
Combined Work produced by recombining or relinking the |
Application with a modified version of the Linked Version. (If |
you use option 4d0, the Installation Information must accompany |
the Minimal Corresponding Source and Corresponding Application |
Code. If you use option 4d1, you must provide the Installation |
Information in the manner specified by section 6 of the GNU GPL |
for conveying Corresponding Source.) |
5. Combined Libraries. |
You may place library facilities that are a work based on the |
Library side by side in a single library together with other library |
facilities that are not Applications and are not covered by this |
License, and convey such a combined library under terms of your |
choice, if you do both of the following: |
a) Accompany the combined library with a copy of the same work based |
on the Library, uncombined with any other library facilities, |
conveyed under the terms of this License. |
b) Give prominent notice with the combined library that part of it |
is a work based on the Library, and explaining where to find the |
accompanying uncombined form of the same work. |
6. Revised Versions of the GNU Lesser General Public License. |
The Free Software Foundation may publish revised and/or new versions |
of the GNU Lesser General Public License from time to time. Such new |
versions will be similar in spirit to the present version, but may |
differ in detail to address new problems or concerns. |
Each version is given a distinguishing version number. If the |
Library as you received it specifies that a certain numbered version |
of the GNU Lesser General Public License "or any later version" |
applies to it, you have the option of following the terms and |
conditions either of that published version or of any later version |
published by the Free Software Foundation. If the Library as you |
received it does not specify a version number of the GNU Lesser |
General Public License, you may choose any version of the GNU Lesser |
General Public License ever published by the Free Software Foundation. |
If the Library as you received it specifies that a proxy can decide |
whether future versions of the GNU Lesser General Public License shall |
apply, that proxy's public statement of acceptance of any version is |
permanent authorization for you to choose that version for the |
Library. |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/Flight-Ctrl_MEGA644_V0_67g.hex |
---|
0,0 → 1,1957 |
:100000000C9486030C94A3030C94A3030C94A303F5 |
:100010000C94A3030C94A3030C94A3030C94A303C8 |
:100020000C94A3030C946D0C0C94A3030C94A303E5 |
:100030000C94CC150C94A3030C94A3030C94A3036D |
:100040000C94A3030C94A3030C94100D0C940B3686 |
:100050000C9460060C94A3030C942A060C94A3033E |
:100060000C94B80D0C94A3030C940B150C94A303DF |
:10007000AA086209B608620962096209F808C90893 |
:1000800062096209EB0824092409240924092409C6 |
:10009000FC0862096209E4086209F408E20DF70D40 |
:1000A000000E0A0E270E3F0E580E750E920EAF0E62 |
:1000B0007D0FC7100F117011C6111A129E12451331 |
:1000C0009B13BF13F51331146F14A8140A0A0D0003 |
:1000D0004E65757472616C0048656164696E67484D |
:1000E0006F6C64000A0D537465756572756E673ABE |
:1000F00020004F4B0A0D000A0D4162676C65696371 |
:1001000068204C756674647275636B73656E736F8B |
:10011000722E2E000A0D4B616C6962726965726500 |
:10012000204E65757472616C6C616765000A0D4BD9 |
:10013000616C69627269657265204B6F6D70617385 |
:1001400073000A0D42656E75747A652050617261A4 |
:100150006D657465727361747A202564000A0D49B7 |
:100160006E69742E20454550524F4D3A2047656EBA |
:100170006572696572652044656661756C742D50A1 |
:100180006172616D657465722E2E2E000A0D3D3D03 |
:100190003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D8F |
:1001A0003D3D3D3D3D3D3D3D3D3D3D3D000A0D4616 |
:1001B0006C69676874436F6E74726F6C0A0D486186 |
:1001C0007264776172653A25642E25640A0D536F57 |
:1001D0006674776172653A5625642E25642563201E |
:1001E000002E005A5F52616E67653A2020253469FF |
:1001F00000595F52616E67653A20202534690058C6 |
:100200005F52616E67653A2020253469004D4D3399 |
:100210002052616E6765005A5F4F66667365743A77 |
:10022000202025336900595F4F66667365743A2054 |
:100230002025336900585F4F66667365743A202045 |
:10024000253369004D4D33204F66660052616E675D |
:10025000653A2533692D253369005374656C6C75D7 |
:100260006E673A2025336900536574706F696E7448 |
:10027000202025336900536572766F202000506F6F |
:100280007469343A202025336900506F7469333A19 |
:10029000202025336900506F7469323A20202533BD |
:1002A0006900506F7469313A202025336900537416 |
:1002B0006172743A2020202020253569004D657335 |
:1002C00073776572743A2020253569005269636836 |
:1002D00074756E673A2020253569004B6F6D70612B |
:1002E00073732020202020202000456D70662E5042 |
:1002F0006567656C3A253569005370616E6E756E81 |
:10030000673A202025356900486F636820253469E5 |
:1003100020282533692900526F6C6C202534692010 |
:100320002825336929004E69636B2025346920280C |
:100330002533692900414343202D2053656E736F97 |
:1003400072004769657220253469202825336929A0 |
:1003500000526F6C6C2025346920282533692900F0 |
:100360004E69636B202534692028253369290047AD |
:100370006965722025346920282533692900526F68 |
:100380006C6C20253469202825336929004E696367 |
:100390006B20253469202825336929004779726F3D |
:1003A000202D2053656E736F720050333A253469E7 |
:1003B000202050343A253469200050313A253469E0 |
:1003C000202050323A253469200047733A25346999 |
:1003D000202047693A25346920004E693A2534695E |
:1003E0002020526F3A25346920004B373A25346972 |
:1003F00020204B383A25346920004B353A253469A2 |
:1004000020204B363A25346920004B333A25346995 |
:1004100020204B343A25346920004B313A25346989 |
:1004200020204B323A25346920004B6F6D70617388 |
:10043000733A20202025356900526F6C6C3A2020D9 |
:1004400020202020253569004E69636B3A2020204A |
:1004500020202025356900616B742E204C61676572 |
:100460000048F668656E726567656C756E67004B6F |
:1004700065696E6520004F66662020202020203AA6 |
:1004800020253569004C756674647275636B3A207B |
:1004900025356900536F6C6C486F6568653A202597 |
:1004A000356900486F6568653A2020202020253591 |
:1004B000690028632920486F6C6765722042757354 |
:1004C000730053657474696E673A20256420004890 |
:1004D000573A5625642E25642053573A25642E2515 |
:1004E000642563002B2B204D696B726F4B6F70740A |
:1004F0006572202B2B005B25695D0000010203045F |
:100500000405060708090A0B0B0C0D0E0F1011113C |
:10051000121314151516171818191A1B1B1C1D1D5C |
:100520001E1F1F202121222323242425252627279F |
:10053000282829292A2A2B2B2C2C2D2D2D2E2E2F05 |
:100540002F3030303131323232333333343434358A |
:100550003535363636373737373838383939393927 |
:100560003A3A3A3A3B3B3B3B3C3C3C3C3C3D3D3DD4 |
:100570003D3E3E3E3E3E3F3F3F3F3F3F404040408E |
:100580004040414141414141424242424242424354 |
:10059000434343434343444444444444444445451F |
:1005A00045454545454545464646464646464646F2 |
:1005B00047474747474747474747474848484848C6 |
:1005C00048484848484849494949494949494949A1 |
:1005D000494949494A4A4A4A4A4A4A4A4A4A4A4A7F |
:1005E0004A4A4B4B4B4B4B4B4B4B4B4B4B4B4B4B5D |
:1005F0004B4B4B4C4C4C4C4C4C4C4C4C4C4C4C4C3E |
:100600004C4C4C4C4C4C4D4D4D4D4D4D4D4D4D4D20 |
:100610004D4D4D4D4D4D4D4D4D4D4D4D4E4E4E4E06 |
:100620004E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4EEA |
:100630004E4E4E4E4E4E4F4F4F4F4F4F4F4F4F4FD0 |
:100640004F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4FBA |
:100650004F4F4F4F4F000012002400360047005903 |
:10066000006B007D008F00A000B200C300D500E643 |
:1006700000F80009011A012B013C014D015E016FD8 |
:100680000180019001A001B101C101D101E101F09E |
:100690000100020F021F022E023D024B025A0268A5 |
:1006A00002760284029202A002AD02BA02C702D40C |
:1006B00002E102ED02F902050310031C03270332D5 |
:1006C000033C03470351035B0364036E037703801A |
:1006D00003880390039803A003A703AF03B503BCEB |
:1006E00003C203C803CE03D303D803DD03E203E64A |
:1006F00003EA03ED03F003F303F603F803FA03FC44 |
:1007000003FE03FF03FF03000400040011241FBEC7 |
:10071000CFEFD0E1DEBFCDBF13E0A0E0B1E0EAE86B |
:10072000F7E702C005900D92A23AB107D9F717E09A |
:10073000A2EAB3E001C01D92AD3BB107E1F70E9410 |
:10074000E3030C94C43B0C94000022E030E0D90198 |
:100750000E94A63B802D863028F082E0D901082E29 |
:100760000E94B33B99270895FB01863008F085E08D |
:10077000282F2150842F9927A6E42A9FD0011124E5 |
:10078000A65FBF4F019724F001900E94B33BFACFC0 |
:10079000A2E0B0E0022E0E94B33B0895FB01282F97 |
:1007A000863008F025E0842F99272150A6E42A9F5F |
:1007B000D0011124A65FBF4F019724F00E94A63BF1 |
:1007C0000192FACF08951F93CF93DF9314B815B811 |
:1007D000189B02C08BE001C08AE08093000181E891 |
:1007E00087B98FEF88B98BE184B981E085B98EE351 |
:1007F0008AB9579A87EF8BB984B7877F84BF809176 |
:1008000060008861809360001092600080ED97E046 |
:100810009093BD038093BC03109248041092470448 |
:100820001092FE061092FD061092460410924504A6 |
:100830001092440410924304809100018A3011F414 |
:10084000289801C0289A0E943A0C0E94E1070E9451 |
:10085000B7150E94B20D0E94EF140E94523878948E |
:100860001092FC0583E48093FD0587E08093FE05EC |
:100870002091000187E690E09F938F9383E490E0BE |
:100880009F938F931F921F92822F6AE00E94F93AE2 |
:10089000892F99279F938F93822F0E94F93A992746 |
:1008A0009F938F938DEA91E09F938F931F920E9465 |
:1008B000C1098CE891E09F938F931F920E94C10918 |
:1008C000299AA1E0B0E00E94A63B802D2DB73EB74B |
:1008D000205F3F4F2DBF843409F441C08DE591E086 |
:1008E0009F938F931F920E94C1090E94503510E080 |
:1008F0000F900F900F90123049F40E94BE3446E4DE |
:1009000065E277E082E00E94B40302C0133051F444 |
:100910000E942D3446E465E277E083E00E94B40350 |
:1009200014E002C0143010F00E94BE3446E465E2C8 |
:1009300077E0812F0E94B4031F5F1630E0F283E05E |
:1009400022E030E0D901082E0E94B33B84E421501C |
:100950003040D901082E0E94B33B0E944821C2E0DA |
:10096000D0E0DE010E94A63B802D863028F082E098 |
:10097000DE01082E0E94B33B46E465E277E00E9468 |
:10098000CE03DE010E94A63B802D863028F082E057 |
:10099000DE01082E0E94B33B99279F938F9382E438 |
:1009A00091E09F938F931F920E94C10984EF91E081 |
:1009B0000E94580CEC010F900F900F900F900F9029 |
:1009C000CE010E94610C8823D9F3E0912707FF270D |
:1009D000EE0FFF1FE750F94F808191818536910519 |
:1009E000C4F0E0912807FF27EE0FFF1FE750F94FF3 |
:1009F000808191818536910564F08DE291E09F932D |
:100A00008F931F920E94C1090E9486370F900F900A |
:100A10000F90E0912707FF27EE0FFF1FE750F94FD8 |
:100A20008081918185369105C4F0E0912807FF27E8 |
:100A3000EE0FFF1FE750F94F808191818C599F4F36 |
:100A400064F484E191E09F938F931F920E94C10907 |
:100A50000E9448210F900F900F9080912D0780FFEA |
:100A600020C087EF90E09F938F931F920E94C1094F |
:100A700088EE93E00E94580CEC010E941E100F902B |
:100A80000F900F90CE010E94610C8823D9F382EF62 |
:100A900090E09F938F931F920E94C1090F900F9037 |
:100AA0000F900E945D20809100018A3011F42898F7 |
:100AB00001C0289A80ED97E09093BD038093BC031A |
:100AC00088EE93E09093F7058093F60585E5809393 |
:100AD000F10584EE90E09F938F931F920E94C109CD |
:100AE00080912D070F900F900F9082FF03C088ED2B |
:100AF00090E002C080ED90E09F938F931F920E9440 |
:100B0000C1090F900F900F908CEC90E09F938F9302 |
:100B10001F920E94C1090E94621088E893E190939D |
:100B20008603809385030F900F900F908091BB03F5 |
:100B3000882309F462C01092BB030E94BB210E946B |
:100B40001620209100012A3011F4289801C0289A1B |
:100B500080910301882321F081508093030110C00C |
:100B60001092B1031092B2031092630410926204C7 |
:100B70001092650410926404109267041092660447 |
:100B800080914204882329F080914204815080930F |
:100B900042048091850390918603892B01F585E0BD |
:100BA00090E090938603809385030E948F15809137 |
:100BB0000403909105038F5F9F4FF9F480914904DE |
:100BC0008823D9F080E197E29093BD038093BC0322 |
:100BD00080E890E090930503809304030EC0809119 |
:100BE00085039091860301979093860380938503F4 |
:100BF0002A3011F4289801C0289A0E94FC070E940C |
:100C00008C08CE010E94610C882309F48FCF2091BB |
:100C100008033091090380913D0799272817390768 |
:100C20009CF480910403909105038F5F9F4F61F4C2 |
:100C300080E797E19093BD038093BC0380E093E04D |
:100C4000909305038093040384E690E00E94580C7F |
:100C5000EC016CCF1F920F920FB60F9211248F935D |
:100C60009F93EF93FF93809101018823E1F480919A |
:100C7000B7039091B80301969093B8038093B7039C |
:100C8000FC01ED53FB4FE081ED3019F08639910501 |
:100C900039F41092B8031092B70381E080930101F8 |
:100CA000E093C60004C01092B8031092B703FF91FE |
:100CB000EF919F918F910F900FBE0F901F901895FD |
:100CC0001F920F920FB60F9211242F933F934F93C1 |
:100CD0005F936F937F938F939F93EF93FF936091B5 |
:100CE000C6003091B403332371F4633239F4809138 |
:100CF000A603882319F481E08093B4036093060669 |
:100D0000862F992713C0363908F053C0E32FFF27E9 |
:100D10008091B5039091B6036D3069F0EA5FF94FA9 |
:100D200060833F5F3093B403860F911D9093B603A9 |
:100D30008093B50340C0EA5FF94F32972081329625 |
:100D400072913196AC01421B5109471B51095F70EA |
:100D50005093B6034093B503CA0156E09695879524 |
:100D60005A95E1F7835C8217F9F4842F8F73835CC3 |
:100D70008717D1F48091A6038823D9F481E080936A |
:100D8000A6033093A903608380910806823589F415 |
:100D900088E190E02CE00FB6F894A895809360006D |
:100DA0000FBE2093600005C08091A8038F5F8093E1 |
:100DB000A8031092B403FF91EF919F918F917F91BF |
:100DC0006F915F914F913F912F910F900FBE0F90B8 |
:100DD0001F901895AC0120E030E060E070E0E3EC9B |
:100DE000F4E005C08191280F311D6F5F7F4F6417BC |
:100DF0007507C1F73F70FA01ED53FB4FC90166E07B |
:100E0000969587956A95E1F7835C8083FA01EC53A8 |
:100E1000FB4F2F73235C20838DE0818310920101AF |
:100E20008091C3048093C60008950F931F93CF93BE |
:100E3000DF938A01722F93E29093C3046093C404FA |
:100E40008093C50460E0A6ECB4E044C0F801E60F6E |
:100E5000F11D90816F5F715019F4E0E040E00FC028 |
:100E6000F801E60FF11D40816F5F715011F4E0E071 |
:100E700006C0F801E60FF11DE0816F5F7150892F08 |
:100E800086958695835C8C935527892F9927837047 |
:100E9000907024E0880F991F2A95E1F79A0194E059 |
:100EA000369527959A95E1F7822B835CED0189832E |
:100EB0004F705070440F551F440F551F8E2F829551 |
:100EC000869586958370842B835C8A83EF73E35CBD |
:100ED000EB831496772309F0B9CFCD01835C94405E |
:100EE0000E94EA06DF91CF911F910F9108951F9301 |
:100EF000CF93DF93EC0170E0A22FBB27129748C07D |
:100F0000E42FFF27EA5FF94F30814F5FE42FFF277F |
:100F1000EA5FF94F50814F5FE42FFF27EA5FF94FF7 |
:100F200010814F5FE42FFF27EA5FF94F20814F5F69 |
:100F3000842F9927A817B90774F15D53FE01E70FB5 |
:100F4000F11D3D53330F330F852F82958F70382B52 |
:100F50003083613001F1912F9D537F5FFE01E70FD8 |
:100F6000F11D71505295507F892F86958695582B8B |
:100F7000508363506F3F79F07E5FFE01E70FF11DF4 |
:100F80009295990F990F907C2D53922B90837F5FB0 |
:100F9000662309F0B5CFDF91CF911F9108951F937C |
:100FA000182F8A3019F48DE00E94CF078091C0007D |
:100FB00085FFFCCF1093C60080E090E01F9108955C |
:100FC0000895E1ECF0E088E18083A0ECB0E08C9142 |
:100FD00082608C938081806880838081806480833C |
:100FE0008AE28093C40088EC90E00E94580C9093B1 |
:100FF000F0058093EF05089580910101882309F49D |
:101000008AC08091A203882371F080910101882316 |
:1010100051F02BE041EF55E06091C20487E40E945B |
:1010200015071092A2038091EF059091F0050E94A0 |
:10103000610C882321F48091A4038823B1F080916E |
:101040000101882391F022E44CE956E06091C2044A |
:1010500084E40E9415071092A40384EF91E00E949B |
:10106000580C9093F0058093EF05609102016F3F5B |
:1010700089F0462F552734E0440F551F3A95E1F784 |
:101080004C5F5E4F605D20E181E40E9415078FEFA9 |
:10109000809302018091A303882359F1809101017B |
:1010A000882339F10E946B101092A3033091AB0397 |
:1010B000932F9F5F9093AB03943021F08091AC030A |
:1010C000882359F026E149EF56E060E084E30E946E |
:1010D00015078FEF8093AB030CC044E1949FA001F0 |
:1010E0001124465E5C4F24E160E0832F8F5C0E94F8 |
:1010F00015078091A503882371F080910101882351 |
:1011000051F02AE04CEF55E06091C20486E50E9460 |
:1011100015071092A5030895A2E0B0E0E2E9F8E017 |
:101120000C94783B8091A603882309F4CDC08FEFFF |
:1011300080930301809108069927AA27BB27FC0109 |
:10114000E156F040E631F10508F0BCC0E85CFF4F25 |
:101150000C94A03B2091A90343E062E0CE010196EC |
:101160000E947707898180930201ACC02091A90376 |
:1011700043E06BE081EF95E00E9477078091E20306 |
:101180009091F305892B8093E20381E08093A4037F |
:1011900099C02091A90343E062E0CE0101960E942C |
:1011A00077078091E2039981892B8093E2038A81FA |
:1011B0008F3F21F481E08093AC0302C01092AC0316 |
:1011C00081E08093A3037EC02091A90343E064E003 |
:1011D0008DEA93E006C02091A90343E063E081EB30 |
:1011E00093E00E9477076EC081E08093A5036AC0F8 |
:1011F00081E08093A20366C02091A90343E062E0EE |
:10120000CE0101960E94770789818F3F89F0863051 |
:1012100010F085E0898346E465E277E089810E94E9 |
:10122000CE03898126E445E257E06091C20408C0FC |
:101230001091C2040E94A50326E445E257E0612F05 |
:10124000855B0E9415073EC02091A90343E066E438 |
:1012500085E297E00E9477078091080646E465E200 |
:1012600077E08B560E94B403809108068B56A2E06B |
:10127000B0E0082E0E94B33B609150077727882783 |
:10128000992724EC39E040E050E00E94DA3A60937C |
:101290008703709388038093890390938A036091F6 |
:1012A00051077727882799270E94DA3A60938B03A2 |
:1012B00070938C0380938D0390938E030E94A503FB |
:1012C0000E94A6211092A603E3E0CE5F0C94943B0B |
:1012D000982F8091DE06813069F48091E103E82F38 |
:1012E000FF27E65EFC4F90838F5F8093E10321E050 |
:1012F00030E005C0892F0E94CF07282F3327C9016E |
:1013000008951F93182F04C080E30E9468091150AC |
:101310001116D4F31F9108951F93182F04C080E273 |
:101320000E94680911501116D4F31F9108950F936C |
:101330001F93CF93DF938C01EB0108C0F8010F5F7F |
:101340001F4FE4918E2F0E94680921972097B1F7D3 |
:10135000DF91CF911F910F9108950F931F93CF931A |
:10136000DF938C01EB0106C0F80181918F010E948F |
:10137000680921972097C1F7DF91CF911F910F91B5 |
:101380000895A3E3B0E0E7ECF9E00C94693B2996FB |
:101390008FAD29978093DE06CE01855B9F4F9D839D |
:1013A0008C832B968EAD9FAD2B979FA78EA7222463 |
:1013B0003324210102C0130124010EA51FA502C080 |
:1013C0000F5F1F4FF801F490FF2019F0F5E2FF16B0 |
:1013D000B9F7B8018EA59FA5681B790B11F00E9483 |
:1013E0009709FF2009F442C20F5F1F4F1FA70EA7E6 |
:1013F0001982AC81BD811BAA1AAA9FEF99ABEEA5F9 |
:10140000FFA5CF0101969FA78EA7B49095E7B916C7 |
:1014100021F08B2D8062883789F4EBA9E0FF07C0AB |
:101420002D903D904D905C901397149607C08D9130 |
:101430009C9111971C01442455241296F0E2BF168A |
:1014400021F489818823D9F685C083E2B81609F48E |
:1014500083C09AE2B91621F0EDE2BE1669F408C025 |
:10146000FD011296E081EAABE7FFC9CFE195EAAB57 |
:10147000FBA9F061FF7D72C08BE2B81609F46AC067 |
:101480009EE2B916B1F52EA53FA52F5F3F4FEEA501 |
:10149000FFA584918A3221F0B82E20E030E01BC0F5 |
:1014A000FD0112964081518157FF02C04FEF5FEF5F |
:1014B00049AB3FA72EA7A3CFC90103E0880F991F0F |
:1014C0000A95E1F7220F331F280F391F2B0D311D0D |
:1014D00020533040B49031968B2D80538A3060F386 |
:1014E000FFA7EEA7A90137FF02C04FEF5FEF49AB9F |
:1014F0008DCFF0E3BF1631F48BA984FD80CF8062DD |
:101500008BAB7DCF8B2D81538930E8F420E030E028 |
:10151000C901F3E0880F991FFA95E1F7220F331FF5 |
:10152000280F391F2B0D311D20533040EEA5FFA58C |
:10153000CF0101969FA78EA7B4908B2D80538A3040 |
:1015400038F32AAB63CF98E6B91651F4EBA9E460FF |
:10155000EBAB55CFB98253CFFBA9F860FBAB4FCFB4 |
:101560008CE6B81621F49BA991609BAB48CFBD8354 |
:10157000AC83E3E6BE1639F41296BD83AC831297B2 |
:101580008C918E8318C1F4E4BF1639F084E6B81646 |
:1015900039F099E6B91659F503C0EBA9E160EBAB58 |
:1015A000FBA9F0FF08C01496BD83AC835E904E90FB |
:1015B0003E902E900AC01296BD83AC839E918E9170 |
:1015C0001C01442437FC4094542C57FC03C08AE08F |
:1015D00088AB92C05094409430942094211C311CCC |
:1015E000411C511C8DE289839AE098AB85C0EFE4E1 |
:1015F000BE1629F0FFE6BF1639F488E061C09BA94A |
:1016000091609BABE8E056C0F0E7BF1671F412960C |
:10161000BD83AC839E918E911C01442455248BA9DB |
:1016200080648BAB78E7B72E5EC0E3E7BE16D9F5D2 |
:101630001296BD83AC83DE90CE90C114D10489F4A0 |
:1016400088E28E838EE68F8385E788878CE689879C |
:101650008A8789E28B871C8666E0C62ED12CCC0E49 |
:10166000DD1EF9A9F7FD13C04F2F552747FD5095F3 |
:1016700060E070E0C6010E946539009711F419A975 |
:101680000DC08C1919A981174CF4182F07C0F60149 |
:1016900001900020E9F731971E2F1C191982420191 |
:1016A000310140E094C085E5B81631F095E7B916F0 |
:1016B00049F4EAE0E8AB1FC0FBA9F160FBAB8AE0AC |
:1016C00088AB19C098E5B91621F0E8E7BE1609F015 |
:1016D0006EC0FBA9F3FD02C080E1F2CF21143104FA |
:1016E0004104510419F490E198AB05C0EBA9E06402 |
:1016F000EBABF0E1F8AB198289A987FD03C09BA988 |
:101700009F7D9BAB211431044104510461F4E9A98C |
:10171000EE2349F46624772443015EE2C52ED12CE2 |
:10172000CC0EDD1E3EC04EE2C42ED12CCC0EDD1EF2 |
:10173000F8A9EF2EFF2400271127C201B101A8014B |
:1017400097010E942C3B6A3020F430E3A32EA60EB2 |
:1017500008C027E5A22EA60E88E5B81611F49FED65 |
:10176000A922F601A2926F01C201B101A80197015D |
:101770000E942C3B39014A012E143F0440065106B9 |
:1017800018F019012A01D9CFF8A9F83051F48BA922 |
:1017900083FF07C090E3A91621F080E3F60182934E |
:1017A0006F01CE018C19182F125D49A910C0BB2002 |
:1017B00009F45CC0BE8219824201310100E096E06A |
:1017C000C92ED12CCC0EDD1E11E021E005C0212F49 |
:1017D000042F011B07FD00E08981882319F0812F68 |
:1017E0008F5F07C09BA996FD02C0812F02C0822F88 |
:1017F0008E5FA82EA00EEBA9EE2EFF2480E3482ECC |
:10180000512C4E205F204114510421F48AA98A19D9 |
:101810000E948C098981882329F061E070E0CE0163 |
:10182000019609C0E6FE09C080E38A83BB8262E0BC |
:1018300070E0CE0102960E94AD09F0E24F1651040D |
:1018400021F48AA98A190E948109802F0E948109A6 |
:10185000612F772767FD7095C6010E94AD09E4FEF0 |
:10186000AACD8AA98A190E948C09A5CDE2E1CD5C96 |
:101870000C94853B82E085BD83EA84BD17BC88E774 |
:1018800088BD96E096BD83EC8093B0009093B10044 |
:10189000E0E7F0E0808182608083EEE6F0E0808126 |
:1018A000816080838AE08093B3001092B200089533 |
:1018B0002091B9033091BA032F5F3F4F820F931FDE |
:1018C00008952091B9033091BA03821B930B892F9D |
:1018D000992786958074992708951F920F920FB6C5 |
:1018E0000F921124EF92FF920F931F932F933F9328 |
:1018F0004F935F936F937F938F939F93AF93BF9318 |
:10190000CF93DF93EF93FF938091060381508093F1 |
:1019100006038F3F09F069C083E88093B00080918F |
:101920009C03C82FDD27D093BF03C093BE038091D3 |
:101930005A07E09047072091F5033091F603409154 |
:10194000F7035091F80380FF18C0FF2400271127E8 |
:10195000CA01B90120E830E040E050E00E944E3B6F |
:10196000C801B7010E94DA3A20E032E040E050E0DE |
:101970000E944E3BC20FD31F17C0FF240027112720 |
:10198000CA01B90120E830E040E050E00E944E3B3F |
:10199000C801B7010E94DA3A20E032E040E050E0AE |
:1019A0000E944E3BC21BD30BD093BF03C093BE0318 |
:1019B0002091BE033091BF038091480799272817D3 |
:1019C000390734F08091490799278217930724F447 |
:1019D0009093BF038093BE038091BE038093B300B6 |
:1019E00080914A078093060304C083E08093B0008F |
:1019F0005F98FF91EF91DF91CF91BF91AF919F9150 |
:101A00008F917F916F915F914F913F912F911F9196 |
:101A10000F91FF90EF900F900FBE0F901F901895B1 |
:101A20001F920F920FB60F9211242F933F934F9353 |
:101A30005F936F937F938F939F93AF93BF93EF9336 |
:101A4000FF938091C00381508093C0038F3FB9F40E |
:101A50008AE08093C003809107038F5F8170809339 |
:101A60000703882319F481E08093BB038091B903B5 |
:101A70009091BA0301969093BA038093B903809131 |
:101A8000BC039091BD030297B0F08091BC0390918C |
:101A9000BD0301979093BD038093BC038091BC0369 |
:101AA0009091BD0320910403309105038223932379 |
:101AB000892BD1F406C08FEF9FEF9093050380939D |
:101AC0000403809100018A3039F404C05A9A05C099 |
:101AD000479A03C05A9801C0479880912D0783FF09 |
:101AE00008C00E94543705C0809100018A3081F7F8 |
:101AF000EDCFFF91EF91BF91AF919F918F917F912A |
:101B00006F915F914F913F912F910F900FBE0F906A |
:101B10001F9018952091B9033091BA032F5F3F4F62 |
:101B2000280F391F4FEE02C040937A008091B9030D |
:101B30009091BA03B901681B790B77FFF5CF08952F |
:101B40002091B9033091BA032F5F3F4F280F391FFF |
:101B50008091B9039091BA03A901481B590B57FF13 |
:101B6000F7CF089510927C008FEE80937A0008954D |
:101B70001F920F920FB60F921124DF92EF92FF92F5 |
:101B80000F931F932F933F934F935F936F937F9385 |
:101B90008F939F93AF93BF93CF93DF93EF93FF9375 |
:101BA00010927A008091DD03D82ED394D092DD0379 |
:101BB000E82FFF27EB30F10508F022C2E25BFF4F70 |
:101BC0000C94A03B80917800909179009093DC0375 |
:101BD0008093DB0381E08093DE038091D5039091B5 |
:101BE000D60301969093D6038093D503FFC18091CD |
:101BF0007800909179009093DA038093D90390C094 |
:101C000080917800909179009093D8038093D703C6 |
:101C100084E070C1409108035091090380917800DD |
:101C2000909179009A01220F331F240F351F63E032 |
:101C300070E00E94053B260F371F36952795369595 |
:101C40002795309309032093080386E053C18091C0 |
:101C50009007909191072091780030917900821B34 |
:101C6000930B9093E0068093DF068091DF069091BE |
:101C7000E0069093C8038093C70387E03BC180913F |
:101C800078009091790020918E0730918F07821B08 |
:101C9000930B9093EB068093EA068091EA0690916D |
:101CA000EB069093CA038093C9031092DE039EC192 |
:101CB000809100012091DB033091DC038A3049F4EC |
:101CC0008091780090917900820F931F9695879567 |
:101CD00006C08091780090917900820F931F9093B5 |
:101CE000C6038093C50381E005C180910001209166 |
:101CF000D9033091DA038A3049F4809178009091C9 |
:101D00007900820F931F9695879506C08091780081 |
:101D100090917900820F931F9093C4038093C30323 |
:101D200082E0E8C0809100012091D7033091D80370 |
:101D30008A3049F48091780090917900820F931F46 |
:101D40009695879506C08091780090917900820FD2 |
:101D5000931F9093C2038093C10385E0CBC0609131 |
:101D6000780070917900E0909207F09093070091CD |
:101D7000940710919507882777FD8095982F0E94EA |
:101D8000183AA80197010E9472390E94FB3970939A |
:101D9000CC036093CB032091CB033091CC03E09133 |
:101DA000DF06F091E0068091EA069091EB0697FF3E |
:101DB00003C0909581959F4F64E070E00E94193BAD |
:101DC000EB01CF01F7FF03C0909581959F4F64E031 |
:101DD00070E00E94193B260F371F2C0F3D1F3093D8 |
:101DE000CC032093CB038091CB039091CC0302973B |
:101DF00004F16091920770919307809194079091FC |
:101E0000950720E030E048E454E40E94223A882319 |
:101E10000CF03CC0609192077091930780919407F9 |
:101E2000909195072AE037ED43EA5CE30E9473390D |
:101E300025C08091CB039091CC038F5F9F4F34F5E9 |
:101E40006091920770919307809194079091950704 |
:101E500020E030E046E154E40E94253A1816B4F43C |
:101E600060919207709193078091940790919507E4 |
:101E70002AE037ED43EA5CE30E94723960939207EF |
:101E800070939307809394079093950781E08093D4 |
:101E9000D20380917800909179009093E20680932C |
:101EA000E106E090CB03F090CC030027F7FC00950F |
:101EB000102F80912D0490912E04A0912F04B091A9 |
:101EC0003004E80EF91E0A1F1B1FC801B70120E0ED |
:101ED00034E040E050E00E944E3BE21AF30A040B6B |
:101EE000150BE0922D04F0922E0400932F04109312 |
:101EF000300483E08093DE0379C08091EF069091F7 |
:101F0000F0062091780030917900820F931F909312 |
:101F1000F0068093EF068091E7068F5F8093E706D7 |
:101F20008091E706853008F46BC08091780090912D |
:101F3000790090930F0380930E031092E70680912F |
:101F4000E3069091E4062091EF063091F006821BA3 |
:101F5000930B20914A0430914B04821B930B909376 |
:101F6000D4038093D3036091EF067091F006E09064 |
:101F70000A03F0900B0300910C0310910D038827C6 |
:101F800077FD8095982FA8019701220F331F441FDA |
:101F9000551F2E0D3F1D401F511F620F731F841FC1 |
:101FA000951F24E030E040E050E00E944E3B20933B |
:101FB0000A0330930B0340930C0350930D032091BD |
:101FC000E3063091E40680910A0390910B03A091FF |
:101FD0000C03B0910D03281B390B30934B04209355 |
:101FE0004A041092F0061092EF060AC08091DE03B8 |
:101FF00080937C00DD2051F08FEE80937A0006C044 |
:102000001092DE031092DD0310927C00FF91EF919D |
:10201000DF91CF91BF91AF919F918F917F916F9100 |
:102020005F914F913F912F911F910F91FF90EF90F2 |
:10203000DF900F900FBE0F901F901895CF93DF93F6 |
:10204000A3E0B0E00E94A63B802DC82FDD27C5315C |
:10205000D10508F02A97C7BD84E690E00E948A0D5A |
:1020600080910E0390910F0382559340D0F4C0E00D |
:10207000D0E017C0C7BD82E390E00E948A0D81EED8 |
:1020800091E09F938F931F920E94C10980910E034C |
:1020900090910F030F900F900F908458934020F071 |
:1020A0002196CA3FD10530F3A3E0B0E00C2E0E9488 |
:1020B000B33BC093EC068CE291E00E948A0DDF9165 |
:1020C000CF910895EAE1F3E080E2819393E0EA366C |
:1020D000F907D9F708951F938091E203282F33273A |
:1020E000C90181709070682F8823A9F08091E30363 |
:1020F000882311F0815002C080916A038093E3032A |
:10210000EAE1F3E080E2819393E0EA36F907D9F758 |
:102110008FEF8093AB03A9014270507021FF10C074 |
:102120008091E3038F5F8093E303EAE1F3E080E2D1 |
:10213000819393E0EA36F907D9F78FEF8093AB03E9 |
:10214000662321F0452B11F01092E30381E1809387 |
:10215000E1038091E30399279F938F9386EF94E0A7 |
:102160009F938F9381E08F930E94C1098091E30335 |
:102170000F900F900F900F900F90E82FFF27ED30EA |
:10218000F10508F023C4E75AFF4F0C94A03B1092CE |
:10219000E10384EE94E09F938F9311E01F930E94DC |
:1021A000C10984E18093E1032091000187E690E07A |
:1021B0009F938F9383E490E09F938F931F921F923E |
:1021C000822F6AE00E94F93A892F99279F938F9373 |
:1021D000822F0E94F93A99279F938F938FEC94E076 |
:1021E0009F938F931F930E94C10988E28093E1031C |
:1021F0000E94A50399279F938F9382EC94E09F936D |
:102200008F931F930E94C1098CE38093E10382EBBB |
:1022100094E09F938F931F930E94C10988C280917D |
:102220002D0780FF44C01092E10380914A049091F1 |
:102230004B049F938F9383EA94E09F938F9311E0D5 |
:102240001F930E94C10984E18093E10380914C04B3 |
:1022500090914D049F938F9384E994E09F938F9383 |
:102260001F930E94C10988E28093E10380910E03CD |
:1022700090910F039F938F9385E894E09F938F93A2 |
:102280001F930E94C1098CE38093E1038091EC06C7 |
:1022900099279F938F9386E794E09F938F931F9343 |
:1022A0000E94C1098DB79EB744968DBF94C384E147 |
:1022B0008093E1038FE694E09F938F9311E01F9347 |
:1022C0000E94C10988E28093E10381E694E09F9334 |
:1022D0008F931F930E94C1098DB79EB70696E5CFD5 |
:1022E0001092E10387E594E09F938F9311E01F9391 |
:1022F0000E94C10984E18093E1036091F50370912C |
:10230000F6038091F7039091F80320E034E040E079 |
:1023100050E00E944E3B5F934F933F932F9388E48E |
:1023200094E09F938F931F930E94C10988E280934A |
:10233000E1036091FD037091FE038091FF03909192 |
:10234000000420E034E040E050E00E944E3B5F9308 |
:102350004F933F932F9389E394E09F938F931F9321 |
:102360000E94C1098CE38093E10380913104909134 |
:1023700032049F938F938AE294E09F938F931F93ED |
:102380000E94C1098DB79EB746968FCF1092E10388 |
:102390008091FD069091FE062091FB063091FC068F |
:1023A0009F938F933F932F938AE194E09F938F9312 |
:1023B00011E01F930E94C10984E18093E1038091A1 |
:1023C0000107909102072091FF06309100079F932B |
:1023D0008F933F932F938AE094E09F938F931F9363 |
:1023E0000E94C10988E28093E103809105079091E2 |
:1023F000060720910307309104079F938F933F9323 |
:102400002F938AEF93E09F938F931F930E94C109AC |
:102410008CE38093E1038091090790910A07209152 |
:102420000707309108079F938F933F932F938AEE6E |
:1024300093E07BC01092E103E0912607FF27EE0FA7 |
:10244000FF1FE750F94F20813181E0912507FF27D9 |
:10245000EE0FFF1FE750F94F808191813F932F933B |
:102460009F938F938AED93E09F938F9311E01F9337 |
:102470000E94C10984E18093E103E0912807FF27CE |
:10248000EE0FFF1FE750F94F20813181E0912707C0 |
:10249000FF27EE0FFF1FE750F94F808191813F9397 |
:1024A0002F939F938F938AEC93E09F938F931F9327 |
:1024B0000E94C10988E28093E103E0912A07FF2787 |
:1024C000EE0FFF1FE750F94F20813181E09129077E |
:1024D000FF27EE0FFF1FE750F94F808191813F9357 |
:1024E0002F939F938F938AEB93E09F938F931F93E8 |
:1024F0000E94C1098CE38093E103E0912C07FF2740 |
:10250000EE0FFF1FE750F94F20813181E0912B073B |
:10251000FF27EE0FFF1FE750F94F808191813F9316 |
:102520002F939F938F938AEA93E09F938F931F93A8 |
:102530000E94C1098DB79EB74C96B7CE1092E103A9 |
:102540008CE993E09F938F9311E01F930E94C10940 |
:102550000F900F900F9080910001E091EB03F091AC |
:10256000EC038A30F1F584E18093E1038091C103AB |
:102570009091C203FF93EF938E1B9F0B9F938F93BA |
:102580008DE893E09F938F931F930E94C10988E287 |
:102590008093E1032091ED033091EE038091C3031A |
:1025A0009091C4033F932F93821B930B9F938F9320 |
:1025B0008EE793E09F938F931F930E94C1098CE352 |
:1025C0008093E1038091EF039091F0039F938F93A9 |
:1025D00080919C0790919D079F938F938FE693E046 |
:1025E0004BC084E18093E1032091C1033091C20389 |
:1025F000CF0162E070E00E94193B7F936F932E1B26 |
:102600003F0B3F932F9380E693E09F938F931F930D |
:102610000E94C10988E28093E103E091ED03F0910B |
:10262000EE032091C3033091C403CF0162E070E058 |
:102630000E94193B7F936F932E1B3F0B3F932F9369 |
:1026400081E593E09F938F931F930E94C1098CE3D0 |
:102650008093E1038091EF039091F00362E070E0DA |
:102660000E94193B7F936F9380919C0790919D07E7 |
:102670009F938F9382E493E09F938F931F930E9485 |
:10268000C1098DB79EB7459610CE1092E10385E340 |
:1026900093E09F938F9311E01F930E94C10984E1FF |
:1026A0008093E10380918E0790918F072091C90359 |
:1026B0003091CA039F938F933F932F9386E293E0C9 |
:1026C0009F938F931F930E94C10988E28093E10337 |
:1026D00080919007909191072091C7033091C80392 |
:1026E0009F938F933F932F9387E193E09F938F93D3 |
:1026F0001F930E94C1098CE38093E10360919207CC |
:102700007091930780919407909195070E94FB39EF |
:102710007F936F9380917C0790917D079F938F9318 |
:1027200088E093E09F938F931F930E94C1098DB718 |
:102730009EB74896BACD84E18093E1038091080367 |
:10274000909109039F938F9389EF92E09F938F93CA |
:1027500011E01F930E94C10988E28093E1038091F8 |
:10276000420499279F938F938AEE92E09F938F93D1 |
:102770001F930E94C1098DB79EB70A9696CD1092FD |
:10278000E1038BED92E09F938F9311E01F930E94E2 |
:10279000C10984E18093E10380913504909136046E |
:1027A0009F938F938CEC92E09F938F931F930E9443 |
:1027B000C10988E28093E103809131049091320451 |
:1027C0009F938F938DEB92E09F938F931F930E9423 |
:1027D000C1098CE38093E103809133049091340428 |
:1027E0009F938F938EEA92E0E8C01092E10380916C |
:1027F0003A0490913B049F938F9382EA92E09F93D7 |
:102800008F9311E01F930E94C10984E18093E1033B |
:1028100080913C0490913D049F938F9386E992E0D0 |
:102820009F938F931F930E94C10988E28093E103D5 |
:1028300080913E0490913F049F938F938AE892E0A9 |
:102840009F938F931F930E94C1098CE38093E103B0 |
:1028500080914004909141049F938F938EE792E082 |
:102860001CCD1092E10386E792E09F938F9311E0D5 |
:102870001F930E94C10984E18093E10380919C032E |
:1028800099279F938F9388E692E09F938F931F934E |
:102890000E94C10988E28093E1038091BE03909178 |
:1028A000BF039F938F938AE592E09F938F931F932B |
:1028B0000E94C1098CE38093E10380914907992725 |
:1028C0009F938F938091480799279F938F938CE4D0 |
:1028D00092E09F938F931F930E94C109E3CC1092C3 |
:1028E000E10384E492E09F938F9311E01F930E9491 |
:1028F000C10984E18093E1038091AA07992787FDAC |
:1029000090959F938F9385E392E09F938F931F936E |
:102910000E94C10988E28093E1038091AB07992767 |
:1029200087FD90959F938F9386E292E09F938F937C |
:102930001F930E94C1098CE38093E1038091AC074F |
:10294000992787FD90959F938F9387E192E035C0FB |
:102950001092E1038DE092E09F938F9311E01F931B |
:102960000E94C10984E18093E1038091AD079091B9 |
:10297000AE079F938F938FEF91E09F938F931F9359 |
:102980000E94C10988E28093E1038091AF07909192 |
:10299000B0079F938F9381EF91E09F938F931F9345 |
:1029A0000E94C1098CE38093E1038091B10790916B |
:1029B000B2079F938F9383EE91E09F938F931F9322 |
:1029C0000E94C1098DB79EB742966FCC815080930B |
:1029D0006A031092E3031092E2031F91089510928C |
:1029E000B9008AE28093B800089585EA8093BC001C |
:1029F000089584E98093BC0008958093BB0085E826 |
:102A00008093BC00089585EC8093BC00089585E810 |
:102A10008093BC0008951F920F920FB60F9211245D |
:102A20008F939F93EF93FF938091E4038F5F809345 |
:102A3000E40381508330E9F1843028F4813081F05F |
:102A4000823078F508C08530D9F18530B8F186300C |
:102A500009F04FC03EC08091E503880F8E5A12C026 |
:102A60008091E5038F5F8093E5038150813081F091 |
:102A7000813030F0823079F0833009F047C00EC0E9 |
:102A800080916F078093BB0085E88093BC003EC0B7 |
:102A900080917407F7CF80918C07F4CF80919607CF |
:102AA000F1CF8091E503843010F41092E40385EABD |
:102AB000ECCF8091E603880F8D5AE4CF85ECE5CF0B |
:102AC0008091BB00E091E603FF27EF50F94F808330 |
:102AD000DBCF8091E6039091BB00E82FFF27EF50FA |
:102AE000F94F94838F5F8093E603843010F0109247 |
:102AF000E60384E98093BC001092E4038AE090E04E |
:102B000090938603809385031092E503FF91EF91E4 |
:102B10009F918F910F900FBE0F901F9018954CEBC7 |
:102B200050E084E9FA0180831092E4032BEB30E05B |
:102B3000F90180811092E50380E8FA018083109208 |
:102B4000BD001092BA00F9011082E9EBF0E01082AA |
:102B5000A8EBB0E01C9210828AE28C9385EAFA011D |
:102B60008083F901108285E8FA018083089583EC5F |
:102B700080938100EFE6F0E0808180628083109294 |
:102B8000F0031092EF031092EE031092ED031092F7 |
:102B9000EC031092EB0308951F920F920FB60F9261 |
:102BA00011240F931F932F933F934F935F936F9332 |
:102BB0007F938F939F93AF93BF93CF93DF93EF93C5 |
:102BC000FF9320918600309187008091E9039091D6 |
:102BD000EA03281B390B809186009091870090931F |
:102BE000EA038093E903C9018D549440C091E7033F |
:102BF000D091E803835F9A4158F4249714F010921F |
:102C00006B0381E090E09093E8038093E7035CC05E |
:102C1000CA30D1050CF058C0C9018B5F9040845B6D |
:102C2000914008F040C0A901425D5140FE01EE0F05 |
:102C3000FF1FE750F94F80819181FA01E81BF90BE2 |
:102C4000CF01F7FF03C0909581959F4F06974CF4F5 |
:102C500080914204883C28F480914204865F8093EE |
:102C60004204FE01EE0FFF1F8F010750194FD801DC |
:102C70002D913C91C901880F991F820F931F840FDA |
:102C8000951F64E070E00E94193BD8018D919C91E2 |
:102C900011979B01281B390BE15FF84F318320838B |
:102CA00011967C936E93FE013196F093E803E093C6 |
:102CB000E703E530F10511F45D9A05C05D9836979C |
:102CC00011F45C9A01C05C98FF91EF91DF91CF9174 |
:102CD000BF91AF919F918F917F916F915F914F9134 |
:102CE0003F912F911F910F910F900FBE0F901F904A |
:102CF0001895A2E1B0E0EFE7F6E10C94693B809112 |
:102D0000C5039091C6034090EF035090F003481A1A |
:102D1000590A50929D0740929C078091C30390915D |
:102D2000C403988B8F87A091ED03B091EE03BA8B0B |
:102D3000A98BE091C103F091C203FE87ED878091DA |
:102D4000EB039091EC039C878B876091C903709192 |
:102D5000CA03E0909907F0909A070027F7FC0095C6 |
:102D6000102F882777FD8095982F2CE030E040E0E9 |
:102D700050E00E94DA3AE60EF71E081F191FC8013C |
:102D8000B70122E030E040E050E00E944E3B30933B |
:102D90009A07209399076091C7037091C803E09048 |
:102DA000A307F090A4070027F7FC0095102F8827B1 |
:102DB00077FD8095982F2CE030E040E050E00E94B5 |
:102DC000DA3AE60EF71E081F191FC801B70122E004 |
:102DD00030E040E050E00E944E3B3093A407209347 |
:102DE000A3072091CB033091CC0360917C077091B5 |
:102DF0007D07882777FD8095982F442737FD4095DC |
:102E0000542F620F731F841F951F22E030E040E0B3 |
:102E100050E00E944E3B30937D0720937C07209129 |
:102E2000C9033091CA03C901880F991F820F931FEC |
:102E3000880F991F880F991FAA2797FDA095BA2F71 |
:102E40002091050430910604409107045091080434 |
:102E5000280F391F4A1F5B1F209305043093060477 |
:102E600040930704509308042091C7033091C8038E |
:102E7000C901880F991F820F931F880F991F880F10 |
:102E8000991FAA2797FDA095BA2F20910904309188 |
:102E90000A0440910B0450910C04280F391F4A1F5B |
:102EA0005B1F2093090430930A0440930B04509352 |
:102EB0000C04E090E106F090E206A0909207B0903A |
:102EC0009307C0909407D090950760910D0470917E |
:102ED0000E0480910F04909110040E94183A3B0157 |
:102EE0004C010027F7FC0095102FC801B7010E9484 |
:102EF000183AA60195010E9472399B01AC01C401E8 |
:102F0000B3010E9473390E94FB3960930D047093E2 |
:102F10000E0480930F04909310045201CC24B7FC4C |
:102F2000C094DC2C609025047090260480902704C7 |
:102F3000909028046A0C7B1C8C1C9D1C60922504BC |
:102F4000709226048092270490922804809129048C |
:102F500090912A04A0912B04B0912C048A0D9B1D02 |
:102F6000AC1DBD1D8093290490932A04A0932B04CB |
:102F7000B0932C04909152049A87992309F05FC072 |
:102F800080915304882309F05AC080912D0786FF51 |
:102F900056C0E0906004FF240027112760911504BB |
:102FA00070911604809117049091180420E030E18C |
:102FB00040E050E00E944E3BCA01B901A8019701D0 |
:102FC0000E94DA3A9B01AC01C601B5010E94DA3ACF |
:102FD00020E038E040E050E00E944E3B2093A904FE |
:102FE0003093AA044093AB045093AC0460911D0449 |
:102FF00070911E0480911F049091200420E030E124 |
:1030000040E050E00E944E3BCA01B901A80197017F |
:103010000E94DA3A9B01AC01C601B5010E94DA3A7E |
:1030200020E038E040E050E00E944E3B2093A504B1 |
:103030003093A6044093A7045093A80410C01092A4 |
:10304000A5041092A6041092A7041092A80410924E |
:10305000A9041092AA041092AB041092AC048091BF |
:10306000A9049091AA04A091AB04B091AC048E8302 |
:103070009F83A887B9878091A5049091A604A09109 |
:10308000A704B091A8048A839B83AC83BD838091FD |
:103090006104282E332444245524EF84F888A98918 |
:1030A000BA89EA1AFB0AEE81FF81EE0EFF1E6A81E1 |
:1030B0007B818C819D81A20191010E94DA3A20E0FE |
:1030C00032E040E050E00E944E3BE20EF31EF092F0 |
:1030D0006E07E0926D079701442737FD4095542F06 |
:1030E0008091210490912204A0912304B0912404A2 |
:1030F000820F931FA41FB51F809321049093220475 |
:10310000A0932304B093240480914E0490914F0423 |
:10311000E81AF90A0027F7FC0095102F80911D048A |
:1031200090911E04A0911F04B0912004E80EF91E96 |
:103130000A1F1B1FE0921D04F0921E0400931F043F |
:1031400010932004A0908B03B0908C03C0908D034B |
:10315000D0908E03AE14BF04C006D106C4F480E143 |
:1031600097E2A0E0B0E08A199B09AC09BD09809301 |
:103170001D0490931E04A0931F04B0932004809319 |
:10318000210490932204A0932304B09324042227C3 |
:103190003327A9012A193B094C095D0980911D04B7 |
:1031A00090911E04A0911F04B091200482179307F0 |
:1031B000A407B507B4F4D601C50180519742A040D9 |
:1031C000B04080931D0490931E04A0931F04B093FD |
:1031D00020048093210490932204A0932304B093AD |
:1031E00024048091C3039091C4030F9734F488E1C1 |
:1031F0009CEF90936E0780936D078091C30390912D |
:10320000C403079734F480E398EF90936E0780939C |
:103210006D07F0910001F983FA30A9F48091C3039E |
:103220009091C403835F934034F088EE93E09093D1 |
:103230006E0780936D078091C3039091C4038A5FEA |
:103240009340DCF014C08091C3039091C403855E69 |
:10325000974034F088EE93E090936E0780936D076B |
:103260008091C3039091C403835F974034F080ED55 |
:1032700097E090936E0780936D07ED84FE848B85B5 |
:103280009C85E81AF90AAA81BB81EA1AFB0A6E81B9 |
:103290007F8188859985A20191010E94DA3A20E018 |
:1032A00032E040E050E00E944E3BE21AF30AF09216 |
:1032B0007607E09275079701442737FD4095542F14 |
:1032C0008091190490911A04A0911B04B0911C04E0 |
:1032D000820F931FA41FB51F8093190490931A04A3 |
:1032E000A0931B04B0931C0480915004909151044E |
:1032F000E81AF90A0027F7FC0095102F80911504B1 |
:1033000090911604A0911704B0911804E80EF91ECC |
:103310000A1F1B1FE0921504F09216040093170475 |
:1033200010931804A0908703B0908803C09089037D |
:10333000D0908A03AE14BF04C006D106C4F480E165 |
:1033400097E2A0E0B0E08A199B09AC09BD0980931F |
:10335000150490931604A0931704B0931804809357 |
:10336000190490931A04A0931B04B0931C04222701 |
:103370003327A9012A193B094C095D0980911504DD |
:1033800090911604A0911704B09118048217930726 |
:10339000A407B507B4F4D601C50180519742A040F7 |
:1033A000B0408093150490931604A0931704B09333 |
:1033B00018048093190490931A04A0931B04B093EB |
:1033C0001C048091C1039091C2030F9734F488E1EB |
:1033D0009CEF90937607809375078091C10390913D |
:1033E000C203079734F480E398EF909376078093B5 |
:1033F0007507B981BA30A9F48091C1039091C203D5 |
:10340000835F934034F088EE93E090937607809347 |
:1034100075078091C1039091C2038A5F9340DCF0ED |
:1034200014C08091C1039091C203855E974034F02F |
:1034300088EE93E090937607809375078091C1039F |
:103440009091C203835F974034F080ED97E09093B2 |
:103450007607809375078FEE80937A00609211044F |
:1034600070921204809213049092140480911504B7 |
:1034700090911604A0911704B09118048093F5035D |
:103480009093F603A093F703B093F80380911D0483 |
:1034900090911E04A0911F04B09120048093FD031D |
:1034A0009093FE03A093FF03B0930004809119044E |
:1034B00090911A04A0911B04B0911C048093F9030D |
:1034C0009093FA03A093FB03B093FC038091210433 |
:1034D00090912204A0912304B091240480930104CC |
:1034E00090930204A0930304B093040480912D07E9 |
:1034F00087FF3FC0BA85BB23E1F580915304882341 |
:10350000C1F52091750730917607293C310524F0EB |
:10351000C9018052934007C0EFEF28333E076CF497 |
:10352000C901805E9C4F220F331F220F331F280FCB |
:10353000391F309376072093750720916D073091DE |
:103540006E07293C310524F0C9018052934007C021 |
:10355000FFEF28333F076CF4C901805E9C4F220FB8 |
:10356000331F220F331F280F391F30936E0720930C |
:103570006D0720913A0430913B0480912907E82F90 |
:10358000FF27EE0FFF1FE750F94F8081918182598D |
:103590009F4F281739071CF42F5F3F4F0CC08081C5 |
:1035A000918182599F4F821793074CF42115310561 |
:1035B00031F02150304030933B0420933A04209165 |
:1035C0003C0430913D0480912A07E82FFF27EE0F3D |
:1035D000FF1FE750F94F8081918182599F4F281733 |
:1035E00039071CF42F5F3F4F0CC0808191818259B5 |
:1035F0009F4F821793074CF42115310531F021506C |
:10360000304030933D0420933C0420913E0430919F |
:103610003F0480912B07E82FFF27EE0FFF1FE75095 |
:10362000F94F8081918182599F4F281739071CF4E7 |
:103630002F5F3F4F0CC08081918182599F4F82172D |
:1036400093074CF42115310531F02150304030936F |
:103650003F0420933E042091400430914104809126 |
:103660002C07E82FFF27EE0FFF1FE750F94F80814F |
:10367000918182599F4F281739071CF42F5F3F4FC4 |
:103680000CC08081918182599F4F821793074CF41F |
:103690002115310531F02150304030934104209301 |
:1036A000400480913A0490913B0497FF05C010922A |
:1036B0003B0410923A040AC08F3F910539F034F070 |
:1036C0008FEF90E090933B0480933A0480913C0408 |
:1036D00090913D0497FF05C010923D0410923C0468 |
:1036E0000AC08F3F910539F034F08FEF90E090934E |
:1036F0003D0480933C0480913E0490913F0497FFE9 |
:1037000005C010923F0410923E040AC08F3F9105FD |
:1037100039F034F08FEF90E090933F0480933E04B3 |
:10372000809140049091410497FF05C0109241049C |
:10373000109240040AC08F3F910539F034F08FEFAA |
:1037400090E09093410480934004E2E1CE5E0C94BB |
:10375000853B10927A008091C1039091C2039093AF |
:103760007607809375078091C3039091C40390936B |
:103770006E0780936D078091C5039091C603909367 |
:103780009D0780939C076091C9037091CA038827A5 |
:1037900077FD8095982F2CE030E040E050E00E94CB |
:1037A000DA3A70939A07609399076091C703709112 |
:1037B000C803882777FD8095982F0E94DA3A709386 |
:1037C000A4076093A3078091CB039091CC039093BF |
:1037D0007D0780937C078FEE80937A0020913A04D6 |
:1037E00030913B0480912907E82FFF27EE0FFF1F40 |
:1037F000E750F94F8081918182599F4F28173907EF |
:103800001CF42F5F3F4F0CC08081918182599F4FE4 |
:10381000821793074CF42115310531F021503040C7 |
:1038200030933B0420933A0420913C0430913D04B2 |
:1038300080912A07E82FFF27EE0FFF1FE750F94F6F |
:103840008081918182599F4F281739071CF42F5F7F |
:103850003F4F0CC08081918182599F4F82179307FF |
:103860004CF42115310531F02150304030933D04A6 |
:1038700020933C0420913E0430913F0480912B071B |
:10388000E82FFF27EE0FFF1FE750F94F808191814E |
:1038900082599F4F281739071CF42F5F3F4F0CC0E8 |
:1038A0008081918182599F4F821793074CF4211593 |
:1038B000310531F02150304030933F0420933E04D5 |
:1038C000209140043091410480912C07E82FFF277C |
:1038D000EE0FFF1FE750F94F8081918182599F4F72 |
:1038E000281739071CF42F5F3F4F0CC0808191814E |
:1038F00082599F4F821793074CF42115310531F0FF |
:1039000021503040309341042093400480913A0488 |
:1039100090913B0497FF05C010923B0410923A042B |
:103920000AC08F3F910539F034F08FEF90E090930B |
:103930003B0480933A0480913C0490913D0497FFAE |
:1039400005C010923D0410923C040AC08F3F9105BF |
:1039500039F034F08FEF90E090933D0480933C0475 |
:1039600080913E0490913F0497FF05C010923F0460 |
:1039700010923E040AC08F3F910539F034F08FEF6A |
:1039800090E090933F0480933E0480914004909196 |
:10399000410497FF05C010924104109240040AC0F0 |
:1039A0008F3F910539F034F08FEF90E09093410410 |
:1039B000809340046091500777278827992724EC4B |
:1039C00039E040E050E00E94DA3A60938703709358 |
:1039D00088038093890390938A0360938B03709389 |
:1039E0008C0380938D0390938E0308951F93809191 |
:1039F00030078B3F98F08B3F19F480913A040EC04A |
:103A00008C3F19F480913C0409C08D3F19F48091DA |
:103A10003E0404C08E3F21F48091400480939403BF |
:103A200080919403882319F41092940304C08F3F6B |
:103A300011F48093940380912F078B3F98F08B3F74 |
:103A400019F480913A040EC08C3F19F480913C0423 |
:103A500009C08D3F19F480913E0404C08E3F21F4CB |
:103A6000809140048093930380919303882319F4F9 |
:103A70001092930305C0843618F084E68093930374 |
:103A8000809131078B3F98F08B3F19F480913A0475 |
:103A90000EC08C3F19F480913C0409C08D3F19F48D |
:103AA00080913E0404C08E3F21F4809140048093B5 |
:103AB000950380919503882319F41092950305C00E |
:103AC000843618F084E680939503809133078B3F0A |
:103AD00098F08B3F19F480913A040EC08C3F19F492 |
:103AE00080913C0409C08D3F19F480913E0404C0CC |
:103AF0008E3F21F480914004809396038091960339 |
:103B0000882319F41092960304C08F3F11F4809318 |
:103B1000960380913A078B3F98F08B3F19F4809180 |
:103B20003A040EC08C3F19F480913C0409C08D3FCB |
:103B300019F480913E0404C08E3F21F4809140042A |
:103B40008093970380919703882319F41092970329 |
:103B500004C08F3F11F48093970380913B078B3F04 |
:103B600098F08B3F19F480913A040EC08C3F19F401 |
:103B700080913C0409C08D3F19F480913E0404C03B |
:103B80008E3F21F4809140048093980380919803A4 |
:103B90008B3010F48AE002C08F3F11F480939803B9 |
:103BA00080913C078B3F98F08B3F19F480913A0449 |
:103BB0000EC08C3F19F480913C0409C08D3F19F46C |
:103BC00080913E0404C08E3F21F480914004809394 |
:103BD000990380919903882319F41092990304C0E2 |
:103BE0008F3F11F480939903809141078B3F98F0A8 |
:103BF0008B3F19F480913A040EC08C3F19F48091E8 |
:103C00003C0409C08D3F19F480913E0404C08E3FEE |
:103C100021F48091400480939B0380919B0388232F |
:103C200019F410929B0304C08F3F11F480939B03FF |
:103C3000809142078B3F98F08B3F19F480913A04B2 |
:103C40000EC08C3F19F480913C0409C08D3F19F4DB |
:103C500080913E0404C08E3F21F480914004809303 |
:103C6000580480915804882319F41092580404C011 |
:103C70008F3F11F480935804809143078B3F98F055 |
:103C80008B3F19F480913A040EC08C3F19F4809157 |
:103C90003C0409C08D3F19F480913E0404C08E3F5E |
:103CA00021F4809140048093590480915904882321 |
:103CB00019F41092590404C08F3F11F480935904F1 |
:103CC000809144078B3F98F08B3F19F480913A0420 |
:103CD0000EC08C3F19F480913C0409C08D3F19F44B |
:103CE00080913E0404C08E3F21F480914004809373 |
:103CF0005A0480915A04882319F410925A0404C07B |
:103D00008F3F11F480935A04809145078B3F98F0C0 |
:103D10008B3F19F480913A040EC08C3F19F48091C6 |
:103D20003C0409C08D3F19F480913E0404C08E3FCD |
:103D300021F48091400480935B0480915B0488238C |
:103D400019F410925B0404C08F3F11F480935B045C |
:103D5000809155078B3F98F08B3F19F480913A047E |
:103D60000EC08C3F19F480913C0409C08D3F19F4BA |
:103D700080913E0404C08E3F21F4809140048093E2 |
:103D80005C0480915C04882319F410925C0404C0E4 |
:103D90008F3F11F480935C04809156078B3F98F01D |
:103DA0008B3F19F480913A040EC08C3F19F4809136 |
:103DB0003C0409C08D3F19F480913E0404C08E3F3D |
:103DC00021F48091400480935D0480915D048823F8 |
:103DD00019F410925D0404C08F3F11F480935D04C8 |
:103DE000809157078B3F98F08B3F19F480913A04EC |
:103DF0000EC08C3F19F480913C0409C08D3F19F42A |
:103E000080913E0404C08E3F21F480914004809351 |
:103E10005E0480915E04882319F410925E0404C04D |
:103E20008F3F11F480935E04809158078B3F98F088 |
:103E30008B3F19F480913A040EC08C3F19F48091A5 |
:103E40003C0409C08D3F19F480913E0404C08E3FAC |
:103E500021F48091400480935F0480915F04882363 |
:103E600019F410925F0404C08F3F11F480935F0433 |
:103E7000809146078B3F98F08B3F19F480913A046C |
:103E80000EC08C3F19F480913C0409C08D3F19F499 |
:103E900080913E0404C08E3F21F4809140048093C1 |
:103EA0009C0380919C03882319F410929C0304C006 |
:103EB0008F3F11F480939C0380914B078B3F98F0C8 |
:103EC0008B3F19F480913A040EC08C3F19F4809115 |
:103ED0003C0409C08D3F19F480913E0404C08E3F1C |
:103EE00021F48091400480939D0380919D03882359 |
:103EF00019F410929D0304C08F3F11F480939D0329 |
:103F000080914E078B3F98F08B3F19F480913A04D3 |
:103F10000EC08C3F19F480913C0409C08D3F19F408 |
:103F200080913E0404C08E3F21F480914004809330 |
:103F3000600480916004882319F41092600404C026 |
:103F40008F3F11F48093600480914F078B3F98F06E |
:103F50008B3F19F480913A040EC08C3F19F4809184 |
:103F60003C0409C08D3F19F480913E0404C08E3F8B |
:103F700021F480914004809361048091610488233E |
:103F800019F41092610404C08F3F11F4809361040E |
:103F9000809154078B3F98F08B3F19F480913A043D |
:103FA0000EC08C3F19F480913C0409C08D3F19F478 |
:103FB00080913E0404C08E3F21F4809140048093A0 |
:103FC0009E0380919E03882319F410929E0304C0DF |
:103FD0008F3F11F480939E0310919B03612F7727ED |
:103FE00067FD7095872F972F0E94183A17FF06C01C |
:103FF00020E030E040E853E40E94733927E137EBDA |
:1040000041ED58E30E94923A60938F0370939003BE |
:1040100080939103909392038091380780939B073C |
:1040200080913707809377071F9108958091490405 |
:10403000882301F51092740710926F0710928C0775 |
:10404000109296078091AD03882311F080936F073B |
:104050008091AE03882311F0809374078091AF03A1 |
:10406000882311F0809396078091B003882311F084 |
:1040700080938C0780916F0799279093B706809360 |
:10408000B6068091740799279093B9068093B80675 |
:104090008091960799279093BB068093BA068091EA |
:1040A0008C0799279093BD068093BC061092E40379 |
:1040B0001092E5030E94F514089510928F07109254 |
:1040C0008E07109291071092900780E090E0A0E098 |
:1040D000B0E08093920790939307A0939407B093D6 |
:1040E00095071092EC031092EB031092EE031092DE |
:1040F000ED031092F0031092EF03109260041092FF |
:1041000061040E94A91B84E690E00E948A0D0E942F |
:10411000A91B80912D0780FF10C080910E03909104 |
:104120000F03875B934038F480910E0390910F0347 |
:104130008E5E924010F40E941E104091C103509177 |
:10414000C2035093EC034093EB032091C3033091DF |
:10415000C4033093EE032093ED038091C503909147 |
:10416000C6039093F0038093EF033093F203209300 |
:10417000F1035093F4034093F30388E0EEE8F7E093 |
:10418000A8E6B1E0182E0E94AE3B109215041092E2 |
:104190001604109217041092180410921904109229 |
:1041A0001A0410921B0410921C0410921D04109209 |
:1041B0001E0410921F0410922004109221041092E9 |
:1041C00022041092230410922404109225041092C9 |
:1041D0002604109227041092280410927607109259 |
:1041E000750710926E0710926D0710929D0710923E |
:1041F0009C0780910A0390910B03A0910C03B0914E |
:104200000D039093E4068093E3061092D40310927A |
:10421000D30310922D0410922E0410922F041092AA |
:10422000300480913104909132049093340480934F |
:1042300033040E94E13582E390E09093BD038093C4 |
:10424000BC036091500777278827992724EC39E031 |
:1042500040E050E00E94DA3A60938703709388034D |
:104260008093890390938A03609151077727882769 |
:1042700099270E94DA3A60938B0370938C038093A2 |
:104280008D0390938E031092A00310929F030895C4 |
:10429000CF93DF93CEE8D7E010928F0710928E076E |
:1042A000109291071092900780E090E0A0E0B0E0BB |
:1042B0008093920790939307A0939407B0939507E8 |
:1042C0000E94A91B84E690E00E948A0D0E94A91B0F |
:1042D0008091990790919A0797FF03C090958195D7 |
:1042E0009F4F6CE070E00E94193B70938F076093C2 |
:1042F0008E078091A3079091A40797FF03C0909524 |
:1043000081959F4F6CE070E00E94193B709391077C |
:10431000609390076091E1067091E206882777FD2F |
:104320008095982F0E94183A609392077093930794 |
:10433000809394079093950788E0A8E6B1E0FE018A |
:10434000182E0E94BF3BDF91CF9108951F93182F25 |
:104350000EC080914904882361F484E690E0909334 |
:10436000BD038093BC038AEF90E00E94A00D115022 |
:1043700080F71F910895A6E3B0E0E1ECF1E20C9420 |
:10438000693B0E947916299AE0912707FF27EE0FD3 |
:10439000FF1FE750F94F0190F081E02DE858FF4FE3 |
:1043A00080919B0799274497E817F9070CF4CF01F0 |
:1043B0009A83898397FF02C01A82198280914204EE |
:1043C000843608F05DC080910301882399F48091C0 |
:1043D0000403909105038F5F9F4F61F488E99AE38E |
:1043E0009093BD038093BC0380E09CE09093050311 |
:1043F000809304038091870490918804009731F0A2 |
:104400000197909388048093870404C01092490414 |
:1044100010923804809100018A3011F4289A01C06A |
:1044200028988091820490918304815D974028F1BF |
:1044300080913E07482F55275A83498381E0809316 |
:104440003804E0912507FF27EE0FFF1FE750F94FD3 |
:1044500011821082E0912607FF27EE0FFF1FE75021 |
:10446000F94F11821082E0912807FF27EE0FFF1FFE |
:10447000E750F94F11821082CCC110924904C9C192 |
:10448000809142048D3808F4C4C1109238048091A0 |
:104490003F0722E3829FC0011124909388048093F8 |
:1044A000870489819A8189976CF080918204909128 |
:1044B0008304AFEF8F3F9A0781F1019690938304B5 |
:1044C000809382048091820490918304883C9105BA |
:1044D00020F0E981FA81B89704F51092A1041092B6 |
:1044E000A2041092A3041092A40410929D041092AE |
:1044F0009E0410929F041092A00410922504109222 |
:104500002604109227041092280410922904109275 |
:104510002A0410922B0410922C0429813A81293C00 |
:1045200031050CF4D5C080914904882309F071C18C |
:10453000E0912807FF27EE0FFF1FE750F94F80811A |
:1045400091818C3491050CF4C0C0809186048F5FFA |
:1045500080938604893C08F45CC129981092490430 |
:104560001092860410928304109282048091250791 |
:10457000282F3327F901EE0FFF1FE750F94F8081F5 |
:104580009181873491059CF4E0912607FF27EE0F77 |
:10459000FF1FE750F94F0190F081E02DF7FF03C0B6 |
:1045A000F095E195FF4FE734F1050CF46CC0809174 |
:1045B0002607682F7727DB01AA0FBB1FA750B94F2B |
:1045C0008D919C911197873491053CF0F901EE0F84 |
:1045D000FF1FE750F94F808191818D919C91873425 |
:1045E000910564F0F901EE0FFF1FE750F94F80814C |
:1045F00091818734910514F042E001C041E0FB0154 |
:10460000EE0FFF1FE750F94F8081918186349105AD |
:104610005CF4F901EE0FFF1FE750F94F80819181A3 |
:10462000873491050CF043E0FB01EE0FFF1FE750CC |
:10463000F94F808191818A5B9F4F5CF4F901EE0F05 |
:10464000FF1FE750F94F80819181873491050CF06D |
:1046500044E0660F771F6750794FDB018D919C9185 |
:104660008A5B9F4F5CF4220F331F2750394FF901AB |
:1046700080819181863491050CF445E0A2E0B0E0A0 |
:10468000042E0E94B33B80912D0780FF10C08091C3 |
:104690000E0390910F03875B934038F480910E03D3 |
:1046A00090910F038E5E924010F40E941E100E94A3 |
:1046B000A50346E465E277E00E94CE030E945D20F8 |
:1046C0000E94A5030E94A621A4C010928604A1C046 |
:1046D00049815A81433251050CF09BC080912807D3 |
:1046E000482F5527FA01EE0FFF1FE750F94F808141 |
:1046F0009181855B9F4F0CF06DC0809185048F5F29 |
:1047000080938504893C08F467C088EC8093850415 |
:1047100081E090E0909383048093820481E0809311 |
:1047200049041092990410929A0410929B041092DA |
:104730009C041092250410922604109227041092D3 |
:1047400028041092290410922A0410922B0410922B |
:104750002C04109215041092160410921704109253 |
:10476000180410921D0410921E0410921F0410923F |
:1047700020048091F5039091F603A091F703B09186 |
:10478000F8038093190490931A04A0931B04B09328 |
:104790001C048091FD039091FE03A091FF03B09152 |
:1047A00000048093210490932204A0932304B093E7 |
:1047B00024041092A1041092A2041092A304109257 |
:1047C000A40410929D0410929E0410929F041092D3 |
:1047D000A00402C010928504440F551F4750594F42 |
:1047E000FA01808191818C3491058CF08091840450 |
:1047F0008F5F80938404893C60F01092490488ECB8 |
:1048000080938404109283041092820402C0109258 |
:10481000840480916B03815080936B0380916B03C0 |
:104820008F3F29F080913804882309F400C30E9447 |
:10483000F61C80912507A82EBB24D501AA0FBB1F0B |
:10484000FD01E750F94F0190F081E02DFCABEBAB9F |
:1048500080913407E82EFF24A15FB84F0D90BC91E2 |
:10486000A02DBAA7A9A780913507482E552480917D |
:104870002607C82EDD24C601880F991FDC01A7502A |
:10488000B94F0D90BC91A02DB8A7AFA3815F984FF1 |
:10489000DC012D903C90E0912807AE2FBB27AA0F9A |
:1048A000BB1FA750B94F0D90BC91A02DBCA3ABA3CB |
:1048B00010919803612F772767FD7095872F972FA9 |
:1048C0000E94183A17FF06C020E030E040E853E4A9 |
:1048D0000E94733920E030E040E251E40E947339D5 |
:1048E00020E030E040E85BE30E94923A3B014C015B |
:1048F00060939E0770939F078093A0079093A107F2 |
:1049000010919903612F772767FD7095872F972F57 |
:104910000E94183A17FF06C020E030E040E853E458 |
:104920000E94733920E030EE4BE257E40E94B53923 |
:10493000609388077093890780938A0790938B0709 |
:104940002091B203222311F40C9458338AE090E0B2 |
:104950009093BD038093BC03E22FFF27E2FF09C0C1 |
:1049600080915804482F5527440F551F440F551F59 |
:1049700010C0E3FD03C040E050E00BC0809158043C |
:104980009927880F991F880F991F44275527481B7F |
:10499000590B2091620430916304C901F3E0880F40 |
:1049A000991FFA95E1F7821B930B840F951F68E01E |
:1049B00070E00E94193B8B01709363046093620462 |
:1049C000E4FF09C080915804482F5527440F551F14 |
:1049D000440F551F0FC0E5FD02C00C946D3380914C |
:1049E00058049927880F991F880F991F4427552726 |
:1049F000481B590B2091640430916504C90163E0A0 |
:104A0000880F991F6A95E1F7821B930B840F951FFE |
:104A100068E070E00E94193B7EAB6DAB709365045B |
:104A2000609364048091B103282F332723FF03C0D0 |
:104A300082E390E004C022FF07C08EEC9FEF9093CA |
:104A400067048093660404C01092670410926604A1 |
:104A500021FF09C080919F039091A003019690933C |
:104A6000A00380939F0324FF09C080919F0390912E |
:104A7000A00301979093A00380939F032BA93CA9C7 |
:104A80002E9DF0012F9DF00D3E9DF00D112449A5A6 |
:104A90005AA5449DC001459D900D549D900D112433 |
:104AA000E80FF91FC80168E070E00E94193BE60FAB |
:104AB000F71FFCABEBABF0934404E09343048FA1EE |
:104AC00098A58E9D80018F9D100D9E9D100D112427 |
:104AD000249CC001259C900D349C900D1124080F3E |
:104AE000191F8DA99EA968E070E00E94193B060F6E |
:104AF000171F10934604009345048091660490911B |
:104B00006704ABA1BCA18A1B9B0B909348048093C4 |
:104B1000470480912D0782FF0CC080E090E0A0E068 |
:104B2000B0E08093880790938907A0938A07B09399 |
:104B30008B0720E030E040E050E0C401B3010E9468 |
:104B4000223A882364F480E090E0A0E0B0E0809313 |
:104B50009E0790939F07A093A007B093A10720E022 |
:104B600030E040E050E060918807709189078091C3 |
:104B70008A0790918B070E94223A882364F480E090 |
:104B800090E0A0E0B0E08093880790938907A0931D |
:104B90008A07B0938B0780915907682F772784E0A5 |
:104BA000882E912C8622972262FD83C063FD81C0EE |
:104BB0002091F5033091F6034091F7035091F803EB |
:104BC0002136BAEE3B07B0E04B07B0E05B0704F1DB |
:104BD000C701B3E0880F991FBA95E1F7EBA9FCA9CB |
:104BE000E81BF90BF0934404E09343042158384345 |
:104BF0004140504004F1C701A4E0880F991FAA95D5 |
:104C0000E1F7E81BF90BF0934404E093430413C06D |
:104C1000205A35414F4F5F4F74F4C701F3E0880FBE |
:104C2000991FFA95E1F7ABA9BCA9A80FB91FB093DA |
:104C30004404A09343042091FD033091FE0340916E |
:104C4000FF03509100042136BAEE3B07B0E04B075A |
:104C5000B0E05B07F4F0C701E3E0880F991FEA9525 |
:104C6000E1F7D801A81BB90BB0934604A093450403 |
:104C70002158384341405040E4F074E0EE0CFF1CF2 |
:104C80007A95E1F7AE19BF09B0934604A0934504A5 |
:104C900010C0205A35414F4F5F4F5CF453E0EE0C8B |
:104CA000FF1C5A95E1F70E0D1F1D1093460400934B |
:104CB0004504F601EE0FFF1FE750F94F20813181C7 |
:104CC00080914C07482F55274217530734F4892801 |
:104CD00021F081E08093540411C0F601EE0FFF1F14 |
:104CE000E750F94F2081318180914D07DA01A81BEF |
:104CF000B1092A173B0714F410925404F601EE0F81 |
:104D0000FF1FE750F94F80819181AA27BB27A41B81 |
:104D1000B50B8A179B0734F463FF04C081E08093CE |
:104D2000550417C080915504882399F0CC0CDD1CE4 |
:104D3000E9EFF6E0CE0EDF1EF60120813181809191 |
:104D40004D079927841B950B8217930714F4109233 |
:104D50005504F501EE0FFF1FE750F94F8081918157 |
:104D60004817590734F460FF04C081E0809357046A |
:104D700015C080915704882389F0F501EE0FFF1FBD |
:104D8000E750F94F2081318180914D07FA01E81BEE |
:104D9000F1092E173F0714F410925704F501EE0F96 |
:104DA000FF1FE750F94F808191818A179B0734F4E8 |
:104DB00061FF04C081E08093560417C080915604BF |
:104DC000882399F0AA0CBB1C29EF36E0A20EB31E73 |
:104DD000D5012D913C9180914D079927841B950B0E |
:104DE0008217930714F41092560480915404882378 |
:104DF00021F480915504882321F081E080935304AD |
:104E000002C01092530480915704882321F48091AA |
:104E10005604882351F081E0809352041092530489 |
:104E200010925404109255040EC0109252048091B6 |
:104E30005304882311F40C94713384E690E090932A |
:104E4000BD038093BC0380914B079927E981FA81C8 |
:104E50008E179F0714F49A838983809138048823DE |
:104E600041F11092480410924704109244041092A9 |
:104E7000430410924604109245048DEC9CECACEC7B |
:104E8000BDE380939E0790939F07A093A007B093E4 |
:104E9000A1078AE097EDA3EABBE38093880790938C |
:104EA0008907A0938A07B0938B071092530410923E |
:104EB00052042091F5033091F6034091F70350918D |
:104EC000F8032FA738AB49AB5AAB8091800790917C |
:104ED0008107A0918207B0918307820F931FA41FBF |
:104EE000B51F8093800790938107A0938207B093AA |
:104EF00083078091FD039091FE03A091FF03B09181 |
:104F000000048BA79CA7ADA7BEA7809184079091B2 |
:104F10008507A0918607B09187072BA53CA54DA5D5 |
:104F20005EA5820F931FA41FB51F809384079093E3 |
:104F30008507A0938607B09387078091F903909126 |
:104F4000FA03A091FB03B091FC038F8F98A3A9A350 |
:104F5000BAA38091780790917907A0917A07B091D0 |
:104F60007B072F8D38A149A15AA1820F931FA41F3F |
:104F7000B51F8093780790937907A0937A07B09331 |
:104F80007B078091010490910204A0910304B091E9 |
:104F900004048B8F9C8FAD8FBE8F80917007909192 |
:104FA0007107A0917207B09173072B8D3C8D4D8DC9 |
:104FB0005E8D820F931FA41FB51F8093700790937F |
:104FC0007107A0937207B0937307909052049920D1 |
:104FD00011F00C94C93380915304882311F00C9480 |
:104FE000C9330C94793380EEA8168FEFB8068FEF93 |
:104FF000C8068FEFD80644F4E0EEAE2EEFEFBE2EDB |
:10500000EFEFCE2EEFEFDE2E2132310541055105B7 |
:1050100034F070E2E72EF12C012D112D0DC0205E31 |
:105020003F4F4F4F5F4F44F460EEE62E6FEFF62E8A |
:105030006FEF062F6FEF162F8091150490911604D5 |
:10504000A0911704B09118048A199B09AC09BD09F5 |
:105050008093150490931604A0931704B09318043A |
:1050600080911D0490911E04A0911F04B091200412 |
:105070008E199F09A00BB10B80931D0490931E0401 |
:10508000A0931F04B09320048091D5039091D60380 |
:105090008F3F910509F008F4ADC4992009F02EC4A2 |
:1050A00080915304882309F029C46091800770918E |
:1050B0008107809182079091830720E031E040E0F2 |
:1050C00050E00E944E3B19012A0120938007309343 |
:1050D0008107409382075093830760918407709102 |
:1050E0008507809186079091870720E031E040E0B6 |
:1050F00050E00E944E3B2F8B388F498F5A8F209360 |
:105100008407309385074093860750938707E09084 |
:105110003907FF2400271127209105043091060448 |
:105120004091070450910804C801B7010E94DA3A7F |
:1051300020E031E040E050E00E944E3B39014A015E |
:105140002093050430930604409307045093080409 |
:105150002091090430910A0440910B0450910C04F1 |
:10516000C801B7010E94DA3A20E031E040E050E0A7 |
:105170000E944E3B59016A012093090430930A04AE |
:1051800040930B0450930C0460910D0470910E0435 |
:1051900080910F049091100420E031E040E050E055 |
:1051A0000E944E3B20930D0430930E0440930F0455 |
:1051B00050931004C201B101661977098809990951 |
:1051C000E0905207FF2400271127A80197010E94B1 |
:1051D0004E3B20937A0430937B0440937C0450939D |
:1051E0007D04CA01B90120E031E040E050E00E94B6 |
:1051F0004E3B3E8B2D8B30935104209350046F898E |
:10520000788D898D9A8D6A197B098C099D09A80171 |
:1052100097010E944E3B79018A01CA01B90120E041 |
:1052200031E040E050E00E944E3B3CAB2BAB309372 |
:105230004F0420934E046091780770917907809114 |
:105240007A0790917B0720E031E040E050E00E9437 |
:105250004E3B209378073093790740937A07509319 |
:105260007B07609170077091710780917207909130 |
:10527000730720E031E040E050E00E944E3B209375 |
:1052800070073093710740937207509373072F8D07 |
:1052900038A149A15AA18FA598A9A9A9BAA9281BE3 |
:1052A000390B4A0B5B0B298B3A8B4B8B5C8B209316 |
:1052B00095043093960440939704509398042B8D53 |
:1052C0003C8D4D8D5E8D8BA59CA5ADA5BEA5281BE7 |
:1052D000390B4A0B5B0B2D873E874F87588B2093EA |
:1052E0009104309392044093930450939404298939 |
:1052F0003A894B895C8920938D0430938E044093C6 |
:105300008F04509390048D859E85AF85B8898093D6 |
:10531000890490938A04A0938B04B0938C048091A9 |
:10532000190490911A04A0911B04B0911C04821BD3 |
:10533000930BA40BB50B8093190490931A04A093BC |
:105340001B04B0931C048091210490912204A0912D |
:105350002304B09124042D853E854F855889821BF6 |
:10536000930BA40BB50B8093210490932204A0937C |
:105370002304B0932404C401B3012AE130E040E0E7 |
:1053800050E00E944E3B3093C1062093C006C601F8 |
:10539000B5012AE130E040E050E00E944E3B3093FE |
:1053A000C3062093C20649895A895093C506409383 |
:1053B000C4068D859E859093C7068093C606C2015C |
:1053C000B1012AE130E040E050E00E944E3B3093D2 |
:1053D000C9062093C8066F89788D898D9A8D2AE138 |
:1053E00030E040E050E00E944E3B3093CB062093EB |
:1053F000CA06F092D906E092D8068BA99CA9880F1C |
:10540000991F2BA93CA943E0220F331F4A95E1F7CE |
:10541000820F931F9093DB068093DA0681E090E081 |
:10542000909375048093740480916C0490916D0442 |
:10543000A0916E04B0916F0482199309A409B50973 |
:10544000815E914BAF4FBF4F8F539C49A040B040FE |
:1054500008F0C5C029893A894B895C89213080E1EF |
:10546000380780E0480780E058070CF450C080916E |
:105470007304882309F447C0DA01C9010CE0B5952B |
:10548000A795979587950A95D1F7019690937504FE |
:1054900080937404DA01C90113E0B595A795979537 |
:1054A00087951A95D1F780937A0490937B04A09303 |
:1054B0007C04B0937D0489589341A040B04064F0CF |
:1054C00088E893E1A0E0B0E080937A0490937B04B5 |
:1054D000A0937C04B0937D0460917A0470917B0466 |
:1054E00080917C0490917D0420E031E040E050E028 |
:1054F0000E944E3B8D899E89820F931F9093510489 |
:105500008093500469C081E08093730465C0109259 |
:10551000730429893A894B895C89203080EF3807E8 |
:105520008FEF48078FEF58070CF056C08091720438 |
:10553000882309F44DC0DA01C901B095A095909572 |
:1055400081959F4FAF4FBF4FFCE0B595A7959795BD |
:105550008795FA95D1F7019690937504809374041A |
:10556000CA01B90128E030E040E050E00E944E3B23 |
:1055700020937A0430937B0440937C0450937D0401 |
:1055800028573C4E4F4F5F4F64F488E79CEEAFEFD7 |
:10559000BFEF80937A0490937B04A0937C04B09334 |
:1055A0007D0460917A0470917B0480917C049091D9 |
:1055B0007D0420E031E040E050E00E944E3BAD89A8 |
:1055C000BE89A20FB31FB0935104A09350040BC027 |
:1055D00081E08093720407C01092720404C010929C |
:1055E00075041092740480915307082F112780913D |
:1055F0007404909175040817190724F41093750426 |
:105600000093740429893A894B895C89215034407C |
:10561000404050405CF08091EB039091EC0320916E |
:10562000740430917504820F931F13C029893A893D |
:105630004B895C8920503C4F4F4F5F4F74F48091F1 |
:10564000EB039091EC032091740430917504821B5C |
:10565000930B9093EC038093EB0381E090E09093A5 |
:10566000750480937404109276041092770410925B |
:105670007804109279048091680490916904A09153 |
:105680006A04B0916B042F89388D498D5A8D821B25 |
:10569000930BA40BB50B815E914BAF4FBF4F8F5354 |
:1056A0009C49A040B04008F0C6C08D859E85AF855E |
:1056B000B88981509041A040B0400CF454C0809112 |
:1056C0007104882309F44BC08D859E85AF85B88908 |
:1056D000ECE0B595A79597958795EA95D1F7019652 |
:1056E00090937504809374048D859E85AF85B889E9 |
:1056F00073E0B595A795979587957A95D1F780939F |
:10570000760490937704A0937804B0937904895831 |
:105710009341A040B04064F088E893E1A0E0B0E09D |
:105720008093760490937704A0937804B0937904DF |
:105730006091760470917704809178049091790457 |
:1057400020E031E040E050E00E944E3B8BA99CA954 |
:10575000820F931F90934F0480934E0469C081E0A1 |
:105760008093710465C0109271042D853E854F852C |
:105770005889203080EF38078FEF48078FEF5807A0 |
:105780000CF056C080917004882309F44DC0DA01F2 |
:10579000C901B095A095909581959F4FAF4FBF4F90 |
:1057A0006CE0B595A795979587956A95D1F7019681 |
:1057B0009093750480937404CA01B90128E030E025 |
:1057C00040E050E00E944E3B2093760430937704F3 |
:1057D000409378045093790428573C4E4F4F5F4FC5 |
:1057E00064F488E79CEEAFEFBFEF8093760490936C |
:1057F0007704A0937804B093790460917604709153 |
:105800007704809178049091790420E031E040E0C1 |
:1058100050E00E944E3BABA9BCA9A20FB31FB093AE |
:105820004F04A0934E040BC081E08093700407C026 |
:105830001092700404C01092750410927404809148 |
:105840007604909177049093D5068093D406809146 |
:105850007404909175040817190724F410937504C3 |
:10586000009374042D853E854F855889215034401E |
:10587000404050405CF08091ED039091EE03209108 |
:10588000740430917504820F931F13C02D853E85DB |
:105890004F85588920503C4F4F4F5F4F74F4809193 |
:1058A000ED039091EE032091740430917504821BF6 |
:1058B000930B9093EE038093ED038091EB03909113 |
:1058C000EC039093CD068093CC068091ED039091EC |
:1058D000EE032091F1033091F203821B930B9C01A4 |
:1058E000A3E0220F331FAA95E1F7880F991F820FBB |
:1058F000931F9093CF068093CE0608C010924F045A |
:1059000010924E04109251041092500420E030E0A6 |
:1059100040E050E0609188077091890780918A0784 |
:1059200090918B070E94223A882341F410924F04F1 |
:1059300010924E04109251041092500480918007EE |
:1059400090918107A0918207B091830780936C04A6 |
:1059500090936D04A0936E04B0936F0480918407BC |
:1059600090918507A0918607B0918707809368047E |
:1059700090936904A0936A04B0936B041092050499 |
:105980001092060410920704109208041092090461 |
:1059900010920A0410920B0410920C0410920D0441 |
:1059A00010920E0410920F041092100410928007AF |
:1059B0001092810710928207109283071092840739 |
:1059C0001092850710928607109287071092780729 |
:1059D0001092790710927A0710927B071092700745 |
:1059E0001092710710927207109273071092D603EB |
:1059F0001092D5038090470490904804940197FE3C |
:105A000004C02227332728193909253131053CF0F4 |
:105A100080912D0784FD03C081E080937E04E09097 |
:105A200036075901CC24B7FCC094DC2CB40188277C |
:105A300077FD8095982F2E2D3327442755270E94D8 |
:105A4000DA3A9B01AC01C601B5010E94DA3A20E0C6 |
:105A500032E040E050E00E944E3B89019A01FF2471 |
:105A6000E89CC001E99C900DF89C900D112464E025 |
:105A700070E00E94193B600F711F882777FD8095A9 |
:105A8000982F6093990470939A0480939B04909349 |
:105A90009C042091250430912604409127045091C4 |
:105AA0002804261B370B480B590B209325043093F1 |
:105AB00026044093270450932804213593EC39079A |
:105AC00090E0490790E059072CF080E593ECA0E0C6 |
:105AD000B0E009C0205B3C434F4F5F4F64F480EB64 |
:105AE0009CE3AFEFBFEF8093250490932604A0932F |
:105AF0002704B093280480912D0783FF9AC08091DA |
:105B000037048150809337048F3FD9F40E9459366F |
:105B10009093320480933104209133043091340403 |
:105B2000821B930B845E9D4F68E671E00E94193BD7 |
:105B3000845B9040909336048093350482E3809395 |
:105B400037046091F5037091F6038091F70390910B |
:105B5000F80320E032E040E050E00E944E3B890133 |
:105B600037FF03C0109501951F4F6091FD037091A1 |
:105B7000FE038091FF039091000420E032E040E0BA |
:105B800050E00E944E3BB90137FF03C0709561950C |
:105B90007F4F601771070CF4B8016332710574F41C |
:105BA00080917E04882351F08091310490913204D9 |
:105BB000909334048093330410927E0420919703D1 |
:105BC0003327629FC001639F900D729F900D112437 |
:105BD00060E470E00E94193B261B370B1216130677 |
:105BE00044F58091350490913604FC012E9FC0014C |
:105BF0002F9F900D3E9F900D112460E270E00E9457 |
:105C0000193B882777FD8095982F209125043091A6 |
:105C100026044091270450912804260F371F481F5F |
:105C2000591F209325043093260440932704509352 |
:105C3000280480917F04815080937F048F3F09F076 |
:105C400079C088E180937F04E0903907FF24002722 |
:105C500011276091F5037091F6038091F7039091FD |
:105C6000F803A80197010E944E3B30939F062093B2 |
:105C70009E066091FD037091FE038091FF03909159 |
:105C80000004A80197010E944E3B3093A106209387 |
:105C9000A0068091990790919A079093A30680930C |
:105CA000A2068091A3079091A4079093A5068093E4 |
:105CB000A40680919C0790919D079093A7068093DE |
:105CC000A60680914A0490914B049093A906809374 |
:105CD000A80660912D0470912E0480912F0490915C |
:105CE000300420E032E040E050E00E944E3B309330 |
:105CF000AB062093AA0680913104909132049093D0 |
:105D0000AF068093AE0680910803909109039093AB |
:105D1000B1068093B0068091420499279093B30610 |
:105D20008093B20680917C0790917D079093BF0687 |
:105D30008093BE0680915204C0907507D09076077C |
:105D4000882391F0B601882777FD8095982F0E94CF |
:105D5000183A20919E0730919F074091A0075091DB |
:105D6000A1070E94923A2DC06091F5037091F6034D |
:105D70008091F7039091F8030E94183A20918807C8 |
:105D80003091890740918A0750918B070E94923A7F |
:105D90007B018C01B601882777FD8095982F0E94A2 |
:105DA000183A20919E0730919F074091A00750918B |
:105DB000A1070E94923A9B01AC01C801B7010E9461 |
:105DC00073390E94FB397093760760937507809151 |
:105DD0005304C0906D07D0906E07882391F0B601F0 |
:105DE000882777FD8095982F0E94183A20919E076A |
:105DF00030919F074091A0075091A1070E94923ACD |
:105E00002DC06091FD037091FE038091FF0390917E |
:105E100000040E94183A2091880730918907409128 |
:105E20008A0750918B070E94923A7B018C01B60140 |
:105E3000882777FD8095982F0E94183A20919E0719 |
:105E400030919F074091A0075091A1070E94923A7C |
:105E50009B01AC01C801B7010E9473390E94FB3954 |
:105E600070936E0760936D072090880730908907C4 |
:105E700040908A0750908B0760919C0770919D0716 |
:105E8000882777FD8095982F0E94183A20919E07C9 |
:105E900030919F074091A0075091A1070E94923A2C |
:105EA0007B018C01609111047091120480911304A4 |
:105EB000909114040E94183AA20191010E94923A12 |
:105EC00020E030E040E05FE30E94923A9B01AC01A9 |
:105ED000C801B7010E9473390E94FB398B0170938E |
:105EE0009D0760939C07E0906D07F0906E07F0921D |
:105EF000D706E092D6066091FD037091FE03809173 |
:105F0000FF03909100040E94183AA20191010E949F |
:105F1000923A69877A878B879C870E94FB397093B6 |
:105F2000D1066093D00620914504309146043EA3EB |
:105F30002DA33093DD062093DC06809175079091A8 |
:105F4000760738E0813093071CF080E098E005C0C8 |
:105F50008050984F34F480E098EF909376078093C8 |
:105F6000750751E0E51658E0F5061CF080E098E072 |
:105F700007C080E0E81688EFF80634F480E098EF78 |
:105F800090936E0780936D0798E0013019071CF01D |
:105F900080E098E005C00050184F34F480E098EF9E |
:105FA00090939D0780939C0780912D07992780FFF0 |
:105FB000D9C04091940381FF0EC0423310F5809107 |
:105FC0004A0490914B04449790934D0480934C0461 |
:105FD0001092390419C020919F033091A003240F1F |
:105FE000311D809132079927FC012E9FC0012F9F00 |
:105FF000900D3E9F900D1124449790934D048093F3 |
:106000004C0481E08093390480913804882321F086 |
:1060100010924D0410924C0420914A0430914B048C |
:1060200040914C0450914D04421753070CF09AC014 |
:1060300080913904882309F495C0241B350B809185 |
:1060400095039927AC01249FC001259F900D349F93 |
:10605000900D112460E170E00E94193B09811A81C2 |
:10606000061B170B2091D3033091D4038091930327 |
:106070009927DC012A9FC0012B9F900D3A9F900D1C |
:10608000112468E070E00E94193B061B170B609119 |
:106090002D0470912E0480912F049091300420E003 |
:1060A00032E040E050E00E944E3BCA01B90120912D |
:1060B00096033327442755270E94DA3A20E230E03E |
:1060C00040E050E00E944E3BBFEF2E3C3B0714F4F3 |
:1060D0002EEC3FEF8091800490918104AC01E4E0CC |
:1060E000440F551FEA95E1F7481B590B233331053F |
:1060F00014F022E330E0021B130BCA01800F911F42 |
:1061000060E170E00E94193B709381046093800409 |
:1061100080912E079927681779078CF4E981FA8115 |
:10612000E817F9072CF0909381048093800407C04E |
:1061300029813A8130938104209380040DC080919D |
:1061400080049091810449815A814817590724F4A9 |
:106150005093810440938004809180049091810445 |
:106160009A838983A981BA81B093AD06A093AC06C6 |
:10617000E0909C07F0909D070091990410919A047B |
:1061800020919B0430919C0480919B07882E992438 |
:1061900054971CF41C821B8229C089819A8162E079 |
:1061A00070E00E94193B9701201B310BCB01261791 |
:1061B00037070CF4C901709561957F4F681779070F |
:1061C0000CF4BC01C401E981FA818E1B9F0B681796 |
:1061D00079070CF4CB0129813A81281939093C83CC |
:1061E0002B832817390714F49C838B836090430416 |
:1061F000709044048091AD049091AE04681A790ABD |
:1062000080917507909176078619970990937F077B |
:1062100080937E0720E030E040E050E0C201B10111 |
:106220000E94223A8823D1F16091A1047091A204C6 |
:106230008091A3049091A4040E94183A5B016C0120 |
:106240006091F5037091F6038091F7039091F80344 |
:106250000E94183AA20191010E94923A7B018C019E |
:10626000B301882777FD8095982F0E94183A9B01EB |
:10627000AC01C801B7010E9472399B01AC01C60193 |
:10628000B5010E9473390E94FB396093A104709399 |
:10629000A2048093A3049093A4041CC020917E07C1 |
:1062A00030917F07442737FD4095542F8091A104FA |
:1062B0009091A204A091A304B091A404820F931F13 |
:1062C000A41FB51F8093A1049093A204A093A304DC |
:1062D000B093A4048091A1049091A204A091A3047E |
:1062E000B091A404181619061A061B0624F4029786 |
:1062F000A109B10903C00296A11DB11D8093A1049B |
:106300009093A204A093A304B093A4048091A10449 |
:106310009091A204A091A304B091A40481383EE31B |
:10632000930730E0A30730E0B3072CF080E89EE34A |
:10633000A0E0B0E009C08058914CAF4FBF4F64F46B |
:1063400080E891ECAFEFBFEF8093A1049093A2049B |
:10635000A093A304B093A40460917E0770917F077B |
:1063600080918F0390919003A0919103B09192033B |
:106370008D839E83AF83B887882777FD8095982F7C |
:106380000E94183A7B018C016091A1047091A204D3 |
:106390008091A3049091A4040E94183A9B01AC013F |
:1063A0006D817E818F8198850E94923A9B01AC011C |
:1063B000C801B7010E9473390E94FB395B016C016F |
:1063C0007CAB6BAB80919E03E82EFF240027112746 |
:1063D0008B819C8197FF03C0909581959F4F62E0D0 |
:1063E00070E00E94193B9B01A981BA812A0F3B1FD3 |
:1063F000442737FD4095542FC801B7010E94DA3A6F |
:1064000020E430E040E050E00E944E3B3901EBA92F |
:10641000FCA9E217F3070CF49501AA24BB24A618E3 |
:10642000B708A501A216B3060CF4A90189819A81C7 |
:106430002B813C81820F931F840F951F97FF03C010 |
:1064400020E030E005C09401881599050CF49C010A |
:1064500080917707C82EDD24C601C216D3060CF43E |
:10646000C90180936F0789819A81841B950B4B81A9 |
:106470005C81840F951F97FF03C020E030E005C0CA |
:106480009401881599050CF49C01C601C216D30627 |
:106490000CF4C901809374078091AF049091B0040B |
:1064A000ADA1BEA1A81BB90BBCABABAB80916D0776 |
:1064B00090916E078A1B9B0B90936C0780936B07E0 |
:1064C00020E030E040E050E0C201B1010E94223AF9 |
:1064D000882371F160919D0470919E0480919F04C6 |
:1064E0009091A0040E94183A7B018C01EBA9FCA9B1 |
:1064F000BF01882777FD8095982F0E94183A9B014D |
:10650000AC0169857A858B859C850E9472399B01D7 |
:10651000AC01C801B7010E9473390E94FB39609336 |
:106520009D0470939E0480939F049093A0041CC0CC |
:1065300020916B0730916C07442737FD4095542F0D |
:1065400080919D0490919E04A0919F04B091A0041D |
:10655000820F931FA41FB51F80939D0490939E04E8 |
:10656000A0939F04B093A00480919D0490919E04F9 |
:10657000A0919F04B091A004181619061A061B06D4 |
:1065800024F40297A109B10903C00296A11DB11D0F |
:1065900080939D0490939E04A0939F04B093A004C5 |
:1065A00080919D0490919E04A0919F04B091A004BD |
:1065B0008138FEE39F07F0E0AF07F0E0BF072CF063 |
:1065C00080E89EE3A0E0B0E009C08058914CAF4F56 |
:1065D000BF4F64F480E891ECAFEFBFEF80939D0470 |
:1065E00090939E04A0939F04B093A00460916B07C6 |
:1065F00070916C07882777FD8095982F0E94183A34 |
:106600007B018C0160919D0470919E0480919F0498 |
:106610009091A0040E94183A9B01AC016D817E818B |
:106620008F8198850E94923A9B01AC01C801B70105 |
:106630000E9473390E94FB399301661577050CF4AB |
:106640009B01C501A216B3060CF4C90149815A8108 |
:10665000480F591FAB81BC814A1B5B0B57FF03C01E |
:1066600020E030E005C09401481559050CF49A016A |
:10667000A601C216D3060CF4A901409396072981FE |
:106680003A81281B390BEB81FC812E1B3F0B37FF16 |
:1066900003C040E050E005C0A401281539050CF402 |
:1066A000A901C601C416D5060CF0D1C0CA01CFC0DD |
:1066B0002091620430916304C90173E0880F991F2F |
:1066C0007A95E1F7821B930B68E070E00E94193B1A |
:1066D0008B01709363046093620440E050E00C947B |
:1066E000FA2480915204882311F40C942D270C94E1 |
:1066F0002327E0903907FF24002711276FA578A9E9 |
:1067000089A99AA9A80197010E944E3B80919907F7 |
:1067100090919A07AA2797FDA095BA2F281B390BAD |
:106720004A0B5B0BCA01B90120E130E040E050E0C8 |
:106730000E944E3B59016A016BA57CA58DA59EA5C3 |
:10674000A80197010E944E3B8091A3079091A40756 |
:10675000AA2797FDA095BA2F281B390B4A0B5B0B74 |
:10676000CA01B90120E130E040E050E00E944E3B18 |
:1067700079018A01F1E2AF16B104C104D10414F425 |
:106780000C94F32760E2A62EB12CC12CD12C0C94D2 |
:106790000428109205041092060410920704109227 |
:1067A00008041092090410920A0410920B0410922B |
:1067B0000C041092800710928107109282071092A9 |
:1067C0008307109284071092850710928607109213 |
:1067D0008707109278071092790710927A07109223 |
:1067E0007B07109270071092710710927207109237 |
:1067F00073078091150490911604A0911704B0912D |
:1068000018048093190490931A04A0931B04B09366 |
:106810001C0480911D0490911E04A0911F04B0914E |
:1068200020048093210490932204A0932304B09326 |
:1068300024041092D6031092D503109251041092A2 |
:10684000500410924F0410924E040C9444288093EC |
:106850008C07E2E1CA5C0C94853B81E080932507BC |
:1068600052E05093260743E04093270774E070936B |
:10687000280765E06093290786E080932A0787E070 |
:1068800080932B0798E090932C0780EC80932D0742 |
:106890008EE180932E078BEF809330073AE03093A0 |
:1068A000310722E320932F072093330750933207B9 |
:1068B0004093340710923507909336078FE080930A |
:1068C00037078AEF809338078AE18093390780E899 |
:1068D00080933A0788EC80933B078FEA80933C07CC |
:1068E0008EE580933D0783E280933E0784E18093A9 |
:1068F0003F07109240073093410780E5809342079D |
:1069000010924307109244071092450710925507C2 |
:1069100010925607109257071092580794E69093DA |
:10692000460788E28093470710925A07209348074A |
:1069300086E98093490760934A0720934B078AE5CD |
:1069400080934C0720934D071092590790934E0760 |
:1069500030934F07909350079093510790935207AD |
:106960007093530720935407AFE5B7E0ECE6F3E0EC |
:106970008CE001900D928150E1F7089581E08093C1 |
:10698000250792E09093260783E08093270744E051 |
:106990004093280755E05093290786E080932A0703 |
:1069A00087E080932B0788E080932C0780E4809316 |
:1069B0002D078EE180932E078BEF809330073AE00E |
:1069C0003093310722E320932F07209333079093CE |
:1069D00032074093340710923507309336078FE023 |
:1069E000809337078AEF809338078AE180933907CD |
:1069F00080E880933A078FEA80933B0780933C07B7 |
:106A00008EE580933D0783E280933E0784E1809387 |
:106A10003F071092400780E28093410780E5809312 |
:106A200042071092430710924407109245071092B4 |
:106A3000550710925607109257071092580794E680 |
:106A40009093460788E28093470710925A07209355 |
:106A5000480786E98093490750934A0720934B07DC |
:106A60008AE580934C0720934D0710925907909325 |
:106A70004E0730934F079093500790935107909390 |
:106A80005207409353078BE480935407AFE5B7E078 |
:106A9000E6E7F3E08CE001900D928150E1F7089574 |
:106AA00081E08093250782E08093260783E080932E |
:106AB000270734E03093280765E06093290786E0D4 |
:106AC00080932A0787E080932B0798E090932C0708 |
:106AD00080E480932D078EE180932E078BEF8093C7 |
:106AE00030075AE05093310722E320932F07209379 |
:106AF00033073093320730933407909335078EE095 |
:106B0000809336078FE0809337078AEF80933807AA |
:106B10008AE18093390790E890933A0788E7809359 |
:106B20003B0746E940933C078EE580933D0783E2AF |
:106B300080933E0784E180933F071092400780E2F4 |
:106B400080934107909342071092430710924407A5 |
:106B5000109245071092550710925607109257074A |
:106B60001092580794E69093460788E2809347076F |
:106B700010925A07209348074093490760934A07A9 |
:106B800020934B078AE580934C0720934D07109282 |
:106B9000590790934E0750934F0790935007909347 |
:106BA0005107209352073093530790935407AFE552 |
:106BB000B7E0EEE7F3E08CE001900D928150E1F751 |
:106BC00008958091B1049091B204A091B304B09162 |
:106BD000B4048093B9049093BA04A093BB04B09317 |
:106BE000BC048091B5049091B604A091B704B09113 |
:106BF000B8048093BD049093BE04A093BF04B093E7 |
:106C0000C00408951092AE041092AD041092B00426 |
:106C10001092AF0408951F920F920FB60F92112495 |
:106C20002F933F934F938F939F938091B30783301C |
:106C300019F08430A1F508C08EB58093C1041EBC44 |
:106C400084E08093B3072BC08091C1049927382F2B |
:106C500022278EB59927282B392BC9018D509E4F9D |
:106C6000875E9340D0F48091B607853019F0863066 |
:106C700069F406C03093B8072093B70786E00BC0CD |
:106C80003093BA072093B90787E005C03093BC075B |
:106C90002093BB0785E08093B6071092B3079F91BE |
:106CA0008F914F913F912F910F900FBE0F901F909A |
:106CB0001895AAE0B0E0EFE5F6E30C94693BA090EC |
:106CC0004407BB2433E0AA0CBB1C3A95E1F7CC2463 |
:106CD000DD246091F5037091F6038091F7039091A4 |
:106CE000F803A60195010E944E3B79018A01FF2419 |
:106CF000E7FCF094C7010E941A392C01C7010E94D9 |
:106D00005D393C016091FD037091FE038091FF03AA |
:106D100090910004A60195010E944E3B79018A01E1 |
:106D2000FF24E7FCF094C7010E941A399A878987EB |
:106D3000C7010E945D391C016091B7077091B807C7 |
:106D4000E090B907F090BA072091AB07332727FDF1 |
:106D50003095E21AF30A0027F7FC0095102FA09057 |
:106D6000BB07B090BC072091AC07332727FD3095B7 |
:106D7000A21AB30ACC24B7FCC094DC2C2091AA0739 |
:106D8000332727FD3095621B730B882777FD80958D |
:106D9000982F882477FC8094982CA40193010E945A |
:106DA000DA3A3B014C0189859A85AA2797FDA0957F |
:106DB000BA2F8D839E83AF83B887C201AA2797FD20 |
:106DC000A095BA2F89839A83AB83BC83C801B7018E |
:106DD0002D813E814F8158850E94DA3A29813A817E |
:106DE0004B815C810E94DA3A20E034E040E050E0E0 |
:106DF0000E944E3B620E731E841E951E442437FC77 |
:106E00004094542CC601B501A20191010E94DA3AC6 |
:106E100029813A814B815C810E94DA3A20E034E09A |
:106E200040E050E00E944E3B621A730A840A950AC1 |
:106E3000C801B701A20191010E94DA3A7B018C01DD |
:106E4000C601B5012D813E814F8158850E94DA3AF5 |
:106E5000E60EF71E081F191FC801B70120E034E035 |
:106E600040E050E00E944E3B79018A01C401B30129 |
:106E700020E034E040E050E00E944E3BCA01B901FE |
:106E8000A80197010E946E389C0197FF05C08827D2 |
:106E90009927821B930B04C088E691E0821B930B19 |
:106EA000E2E1C65F0C94853B8091B307813041F0ED |
:106EB000813018F0823049F51CC02A9A81E016C052 |
:106EC0002A988091B607853011F481E305C0863099 |
:106ED00011F482E301C083E38EBD88E090E00E945C |
:106EE000580C9093B5078093B40782E08093B30762 |
:106EF00008958091B4079091B5070E94610C882392 |
:106F000021F01EBC83E08093B3070895A0E0B0E0B9 |
:106F1000ECE8F7E30C946B3B299A809100018A30EE |
:106F200011F4289801C0289AAA24BB2400E010E09C |
:106F300088249924EE24FF2466247724CC24DD249D |
:106F400062E3462E55248091B7079091B807081741 |
:106F500019072CF40091B7071091B8070BC0809166 |
:106F6000B7079091B8078A159B0524F4A090B7073E |
:106F7000B090B8078091B9079091BA07E816F90662 |
:106F80002CF4E090B907F090BA070BC08091B907D4 |
:106F90009091BA078815990524F48090B9079090CC |
:106FA000BA078091BB079091BC07C816D9062CF48C |
:106FB000C090BB07D090BC070BC08091BB079091DD |
:106FC000BC078615970524F46090BB077090BC073A |
:106FD000552081F485B191E0892785B985B192E08A |
:106FE000892785B982E390E09093BD038093BC0329 |
:106FF00052E3552E8AE090E00E94580CEC01CE013D |
:107000000E94610C8823D9F3E0912707FF27EE0F38 |
:10701000FF1FE750F94F80819181843691050CF470 |
:107020004A94442011F05A948ECFC8018A199B09C2 |
:107030009093AE078093AD07C70188199909909383 |
:10704000B0078093AF07C601861997099093B207DE |
:107050008093B107EAEAF7E0C8018A0D9B1D62E060 |
:1070600070E00E94193B6093AA07C701880D991D23 |
:1070700062E070E00E94193B6093AB07C601860D89 |
:10708000971D62E070E00E94193B6093AC0789E0B5 |
:10709000A0E7B1E0182E0E94BF3BE0E1CDB7DEB71C |
:1070A0000C94873B83ED8CBD84B1846A84B9809154 |
:1070B00000018A3019F4539A5B9802C03E9A4698B0 |
:1070C00085E08093B6071092B30789E0EAEAF7E01B |
:1070D000A0E7B1E0182E0E94AE3B0895DF92EF9238 |
:1070E000FF920F931F937B018C0161157105810540 |
:1070F000910541F4211531054105510519F480E050 |
:1071000090E092C057FD03C061E0D62E02C09FEF11 |
:10711000D92EE114F1040105110531F48AE52D2D74 |
:107120002802C001112480C086E0220F331F441FB3 |
:10713000551F8A95D1F7CA01B901A80197010E948C |
:107140004E3BF90137FF03C0F095E195FF4F41E059 |
:10715000EA35F40734F4E550FB4F8491282F3327A8 |
:1071600047C05CE1E73AF5071CF02AE530E040C093 |
:1071700089E0ED38F8071CF029E530E039C025E05A |
:10718000EA3BF2071CF028E530E032C044E0E7318A |
:10719000F4071CF027E530E02BC053E0EE32F50792 |
:1071A0001CF026E530E024C082E0E939F8071CF045 |
:1071B00025E530E01DC022E0E233F2071CF024E5B3 |
:1071C00030E016C041E0E73EF4071CF023E530E074 |
:1071D0000FC051E0ED3AF5071CF022E530E008C0A1 |
:1071E000EF57F1401CF021E530E002C020E530E02F |
:1071F0001E141F04100611066CF48D2D992787FDAF |
:107200009095AC01249FC001259F900D349F900D57 |
:1072100011240AC01D142CF484EB90E0821B930B04 |
:1072200003C0C901845B90401F910F91FF90EF90C4 |
:10723000DF900895FC0197FD03C041E050E005C0D8 |
:10724000F095E195FF4F4FEF5FEFEB35F1055CF007 |
:10725000CF018B5590408A35910540F484EB90E046 |
:107260008E1B9F0BFC0121E030E010C0CF01855B3D |
:1072700090408A35910518F4E45BF04005C088E63B |
:1072800091E08E1B9F0BFC012FEF3FEFEE0FFF1FD6 |
:10729000EB5AF94F85919491BC01629FC001639FA5 |
:1072A000900D729F900D11249C01429FC001439F3D |
:1072B000900D529F900D112408952AE530E0281B6F |
:1072C000390BC9010E941A390895FC014150504000 |
:1072D00030F001900616D1F73197CF010895882735 |
:1072E000992708955058192EEFD001D0D2C0BA175F |
:1072F0006207730784079507B1F188F40EF41094C0 |
:107300000B2EBA2FA02D062E622F202D072E732FA5 |
:10731000302D082E842F402D092E952F502DFF271C |
:107320005523B9F0591B49F0573E98F046953795CB |
:107330002795A795F0405395C9F776F0BA0F621FCD |
:10734000731F841F30F4879577956795B795F04044 |
:10735000939517FA0F2E0895BF1BBB27BA0B620B2C |
:10736000730B840BF6CFDEF6DBC0AED001D091C03C |
:10737000552359F0992369F09F575F57951B33F4B4 |
:1073800042F4903811F4915805C09BC091589F3F2A |
:1073900009F4C6C0BB27112462177307840730F4B1 |
:1073A000660F771F881FBB1F915098F311D00F9263 |
:1073B0000FD00F920DD0A0E82617370748071B06FD |
:1073C00009F0A048BA2F602D7F918F910024089575 |
:1073D000A0E80024621773078407B10528F0621B38 |
:1073E000730B840BB1090A2A660F771F881FBB1F16 |
:1073F000A69581F7089597FB73D09F3738F0FEE983 |
:10740000F91B982F872F762F6B2F05C086C0969576 |
:10741000879577956795F150D0F73EF490958095D4 |
:10742000709561957F4F8F4F9F4F0895E89403C0EB |
:1074300097FB0EF4F3DFB62F672F782F892F9EE985 |
:10744000002427C00ED05EF004C00BD026F001C08F |
:1074500008D019F020F48FEF089580E0089581E0BE |
:10746000089597FB092E052600F8689430D0E8941B |
:1074700007FC07C0621773078407950721F008F41B |
:1074800000940794989408959A95BB0F661F771FF0 |
:10749000881F11249923A1F08823B2F79F3F59F048 |
:1074A000BB0F48F421F4002011F460FF04C06F5FAB |
:1074B0007F4F8F4F9F4F881F9795879597F9089516 |
:1074C0002CC09FEF80EC0895052E092607FA440F83 |
:1074D000551F5F3F79F0AA27A51708F051E047959F |
:1074E000880F991F9F3F31F0BB27B91708F091E033 |
:1074F000879508959F919F911124E3CF97FB880F63 |
:10750000991F9F3F31F0BB27B91708F091E087958D |
:1075100008959F919F911124D4CF662777278827BC |
:1075200099270895D1DF01D0B4CF992339F055239D |
:1075300029F09F575F57950F13F49AF1F1CF9158A7 |
:107540009F3FE1F3629FA12D0F92BB27639FA00D88 |
:10755000B11DEE27729FA00DB11DEE1FAF93AA279C |
:10756000649FB00DE11D739FB00DE11DAA1F66273A |
:10757000829FB00DE11DA61F5527749FE00DA11D30 |
:10758000551F839FE00DA11D561F849FA00D511D07 |
:10759000852F7A2F6E2F1F900F9088231AF49395C2 |
:1075A00039F48FCF000C111CBB1F661F771F881F7B |
:1075B00001280895629FD001739FF001829FE00D22 |
:1075C000F11D649FE00DF11D929FF00D839FF00D62 |
:1075D000749FF00D659FF00D9927729FB00DE11D0E |
:1075E000F91F639FB00DE11DF91FBD01CF011124EB |
:1075F0000895991B79E004C0991F961708F0961B0F |
:10760000881F7A95C9F780950895AA1BBB1B51E185 |
:1076100007C0AA1FBB1FA617B70710F0A61BB70B02 |
:10762000881F991F5A95A9F780959095BC01CD01A7 |
:10763000089597FB092E07260AD077FD04D0E5DFD1 |
:1076400006D000201AF4709561957F4F0895F6F7E3 |
:10765000909581959F4F0895A1E21A2EAA1BBB1BFE |
:10766000FD010DC0AA1FBB1FEE1FFF1FA217B3070E |
:10767000E407F50720F0A21BB30BE40BF50B661F24 |
:10768000771F881F991F1A9469F7609570958095E8 |
:1076900090959B01AC01BD01CF01089597FB092E88 |
:1076A00005260ED057FD04D0D7DF0AD0001C38F4D1 |
:1076B00050954095309521953F4F4F4F5F4F08951E |
:1076C000F6F790958095709561957F4F8F4F9F4FFE |
:1076D00008952F923F924F925F926F927F928F9276 |
:1076E0009F92AF92BF92CF92DF92EF92FF920F9351 |
:1076F0001F93CF93DF93CDB7DEB7CA1BDB0B0FB65B |
:10770000F894DEBF0FBECDBF09942A883988488817 |
:107710005F846E847D848C849B84AA84B984C884AD |
:10772000DF80EE80FD800C811B81AA81B981CE0FA4 |
:10773000D11D0FB6F894DEBF0FBECDBFED01089589 |
:10774000EE0FFF1F0590F491E02D0994F999FECFFB |
:10775000B2BDA1BDF89A119600B40895F7DF019269 |
:107760001A94E1F70895F999FECFB2BDA1BD00BC0E |
:1077700011960FB6F894FA9AF99A0FBE08950190EF |
:0A778000F2DF1A94E1F70895FFCF3D |
:10778A000A01FF64496E74656772616C4E69636BC6 |
:10779A0020202020496E74656772616C526F6C6C90 |
:1077AA00202020204163634E69636B202020202023 |
:1077BA0020202020416363526F6C6C2020202020FF |
:1077CA00202020204779726F476965722020202087 |
:1077DA0020202020486F6568656E576572742020E6 |
:1077EA00202020204163635A2020202020202020AE |
:1077FA0020202020476173202020202020202020C4 |
:10780A00202020204B6F6D7061737356616C756513 |
:10781A00202020205370616E6E756E672020202014 |
:10782A0020202020456D7066616E67202020202070 |
:10783A0020202020416E616C6F673131202020208A |
:10784A00202020204D6F746F725F566F726E652014 |
:10785A00202020204D6F746F725F48696E74656EC8 |
:10786A00202020204D6F746F725F4C696E6B7320FD |
:10787A00202020204D6F746F725F526563687473A5 |
:10788A00202020204163635F5A20202020202020CE |
:10789A00202020204D697474656C4163634E6963CE |
:1078AA006B2020204D697474656C416363526F6C60 |
:1078BA006C202020496E74656772616C4572724E45 |
:1078CA0069636B20496E74656772616C45727252A6 |
:1078DA006F6C6C204D697474656C496E744E696383 |
:1078EA006B2020204D697474656C496E74526F6CFC |
:1078FA006C0920004E65757472616C4E69636B2069 |
:10790A0020202020526F6C6C4F66667365742020AD |
:10791A0020202020496E74526F6C6C2A46616B7469 |
:10792A006F722020416E616C6F67323620202020F2 |
:10793A0020202020446972656B74417573676C520C |
:10794A006F6C6C204D65737377657274526F6C6CD3 |
:10795A0020202020417573676C65696368526F6CDB |
:10796A006C202020492D4C616765526F6C6C202079 |
:10797A0020202020537469636B526F6C6C20202086 |
:10798A0020202020FFFF0A016400007D0000FF0381 |
:10799A000102030405060708090A48616C6C6F2096 |
:1079AA0057656C7400000000000000000000000031 |
:1079BA0000000000000000000000000000000000BD |
:1079CA0000000000000000000000000000000000AD |
:1079DA00000000000000000000000000000000009D |
:1079EA00000000000000000000000C014265676909 |
:1079FA006E6E657200004E6F726D616C000053709E |
:107A0A006F72740000640090D0030090D0030017D6 |
:107A1A00B7D13830FB103A409696020A644664ECB5 |
:027A2A00FF005B |
:00000001FF |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/FlightCtrl.aps |
---|
0,0 → 1,0 |
<AVRStudio><MANAGEMENT><ProjectName>FlightCtrl</ProjectName><Created>15-May-2007 11:20:41</Created><LastEdit>11-Oct-2007 22:58:54</LastEdit><ICON>241</ICON><ProjectType>0</ProjectType><Created>15-May-2007 11:20:41</Created><Version>4</Version><Build>4, 13, 0, 528</Build><ProjectTypeName>AVR GCC</ProjectTypeName></MANAGEMENT><CODE_CREATION><ObjectFile>default\Flight-Ctrl.elf</ObjectFile><EntryFile></EntryFile><SaveFolder>F:\SVN\MikroKopter\FlightCtrl\branches\V0.64_ZeroWarnings\</SaveFolder></CODE_CREATION><DEBUG_TARGET><CURRENT_TARGET>AVR Simulator</CURRENT_TARGET><CURRENT_PART>ATmega644.xml</CURRENT_PART><BREAKPOINTS></BREAKPOINTS><IO_EXPAND><HIDE>false</HIDE></IO_EXPAND><REGISTERNAMES><Register>R00</Register><Register>R01</Register><Register>R02</Register><Register>R03</Register><Register>R04</Register><Register>R05</Register><Register>R06</Register><Register>R07</Register><Register>R08</Register><Register>R09</Register><Register>R10</Register><Register>R11</Register><Register>R12</Register><Register>R13</Register><Register>R14</Register><Register>R15</Register><Register>R16</Register><Register>R17</Register><Register>R18</Register><Register>R19</Register><Register>R20</Register><Register>R21</Register><Register>R22</Register><Register>R23</Register><Register>R24</Register><Register>R25</Register><Register>R26</Register><Register>R27</Register><Register>R28</Register><Register>R29</Register><Register>R30</Register><Register>R31</Register></REGISTERNAMES><COM>Auto</COM><COMType>0</COMType><WATCHNUM>0</WATCHNUM><WATCHNAMES><Pane0></Pane0><Pane1></Pane1><Pane2></Pane2><Pane3></Pane3></WATCHNAMES><BreakOnTrcaeFull>0</BreakOnTrcaeFull></DEBUG_TARGET><Debugger><Triggers></Triggers></Debugger><AVRGCCPLUGIN><FILES><SOURCEFILE>uart.c</SOURCEFILE><SOURCEFILE>analog.c</SOURCEFILE><SOURCEFILE>eeprom.c</SOURCEFILE><SOURCEFILE>fc.c</SOURCEFILE><SOURCEFILE>GPS.c</SOURCEFILE><SOURCEFILE>main.c</SOURCEFILE><SOURCEFILE>menu.c</SOURCEFILE><SOURCEFILE>printf_P.c</SOURCEFILE><SOURCEFILE>rc.c</SOURCEFILE><SOURCEFILE>timer0.c</SOURCEFILE><SOURCEFILE>twimaster.c</SOURCEFILE><HEADERFILE>uart.h</HEADERFILE><HEADERFILE>_Settings.h</HEADERFILE><HEADERFILE>analog.h</HEADERFILE><HEADERFILE>fc.h</HEADERFILE><HEADERFILE>gps.h</HEADERFILE><HEADERFILE>main.h</HEADERFILE><HEADERFILE>menu.h</HEADERFILE><HEADERFILE>old_macros.h</HEADERFILE><HEADERFILE>printf_P.h</HEADERFILE><HEADERFILE>rc.h</HEADERFILE><HEADERFILE>Settings.h</HEADERFILE><HEADERFILE>timer0.h</HEADERFILE><HEADERFILE>twimaster.h</HEADERFILE></FILES><CONFIGS><CONFIG><NAME>default</NAME><USESEXTERNALMAKEFILE>NO</USESEXTERNALMAKEFILE><EXTERNALMAKEFILE></EXTERNALMAKEFILE><PART>atmega644</PART><HEX>1</HEX><LIST>1</LIST><MAP>1</MAP><OUTPUTFILENAME>Flight-Ctrl.elf</OUTPUTFILENAME><OUTPUTDIR>default\</OUTPUTDIR><ISDIRTY>1</ISDIRTY><OPTIONS><OPTION><FILE>GPS.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>analog.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>eeprom.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>fc.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>main.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>menu.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>printf_P.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>rc.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>timer0.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>twimaster.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>uart.c</FILE><OPTIONLIST></OPTIONLIST></OPTION></OPTIONS><INCDIRS/><LIBDIRS/><LIBS><LIB>libc.a</LIB><LIB>libm.a</LIB></LIBS><LINKOBJECTS/><OPTIONSFORALL>-Wall -gdwarf-2 -Wstrict-prototypes -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -DVERSION_HAUPTVERSION=0 -DVERSION_NEBENVERSION=64 -DVERSION_KOMPATIBEL=5</OPTIONSFORALL><LINKEROPTIONS></LINKEROPTIONS><SEGMENTS/></CONFIG></CONFIGS><LASTCONFIG>default</LASTCONFIG><USES_WINAVR>1</USES_WINAVR><GCC_LOC>C:\Program Files\WinAVR\bin\avr-gcc.exe</GCC_LOC><MAKE_LOC>C:\Program Files\WinAVR\utils\bin\make.exe</MAKE_LOC></AVRGCCPLUGIN><IOView><usergroups/></IOView><Files><File00000><FileId>00000</FileId><FileName>main.c</FileName><Status>1</Status></File00000><File00001><FileId>00001</FileId><FileName>uart.c</FileName><Status>1</Status></File00001><File00002><FileId>00002</FileId><FileName>menu.c</FileName><Status>1</Status></File00002><File00003><FileId>00003</FileId><FileName>timer0.c</FileName><Status>1</Status></File00003><File00004><FileId>00004</FileId><FileName>fc.c</FileName><Status>1</Status></File00004><File00005><FileId>00005</FileId><FileName>fc.h</FileName><Status>1</Status></File00005><File00006><FileId>00006</FileId><FileName>menu.h</FileName><Status>1</Status></File00006><File00007><FileId>00007</FileId><FileName>TWIMASTER.C</FileName><Status>1</Status></File00007><File00008><FileId>00008</FileId><FileName>twimaster.h</FileName><Status>1</Status></File00008><File00009><FileId>00009</FileId><FileName>uart.h</FileName><Status>1</Status></File00009><File00010><FileId>00010</FileId><FileName>_Settings.h</FileName><Status>1</Status></File00010><File00011><FileId>00011</FileId><FileName>analog.h</FileName><Status>1</Status></File00011><File00012><FileId>00012</FileId><FileName>gps.h</FileName><Status>1</Status></File00012><File00013><FileId>00013</FileId><FileName>main.h</FileName><Status>1</Status></File00013><File00014><FileId>00014</FileId><FileName>old_macros.h</FileName><Status>1</Status></File00014><File00015><FileId>00015</FileId><FileName>printf_P.h</FileName><Status>1</Status></File00015><File00016><FileId>00016</FileId><FileName>rc.h</FileName><Status>1</Status></File00016><File00017><FileId>00017</FileId><FileName>Settings.h</FileName><Status>1</Status></File00017><File00018><FileId>00018</FileId><FileName>timer0.h</FileName><Status>1</Status></File00018></Files><Events><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio> |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/GPS.c |
---|
0,0 → 1,30 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
signed int GPS_Nick = 0; |
signed int GPS_Roll = 0; |
long GpsAktuell_X = 0; |
long GpsAktuell_Y = 0; |
long GpsZiel_X = 0; |
long GpsZiel_Y = 0; |
void GPS_Neutral(void) |
{ |
GpsZiel_X = GpsAktuell_X; |
GpsZiel_Y = GpsAktuell_Y; |
} |
void GPS_BerechneZielrichtung(void) |
{ |
GPS_Nick = 0; |
GPS_Roll = 0; |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/License.txt |
---|
0,0 → 1,52 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + Nur für den privaten Gebrauch |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten und nichtkommerziellen Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt und genannt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-profit use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet, our webpage (http://www.MikroKopter.de) must be |
// + clearly linked and named as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/Readme.pdf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/Settings.h |
---|
--- trunc/_Settings.h (nonexistent) |
+++ trunc/_Settings.h (revision 584) |
@@ -0,0 +1,50 @@ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Testmodi |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define MOTOR_OFF 0 |
+#define MOTOR_TEST 0 |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Abstimmung |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define ACC_AMPLIFY 12 |
+#define FAKTOR_P 1 |
+#define FAKTOR_I 0.0001 |
+ |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Debug-Interface |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define SIO_DEBUG 1 // Soll der Debugger aktiviert sein? |
+#define MIN_DEBUG_INTERVALL 500 // in diesem Intervall werden Degugdaten ohne Aufforderung gesendet |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Sender |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ #define K_NICK 0 |
+ #define K_ROLL 1 |
+ #define K_GAS 2 |
+ #define K_GIER 3 |
+ #define K_POTI1 4 |
+ #define K_POTI2 5 |
+ #define K_POTI3 6 |
+ #define K_POTI4 7 |
+// +++++++++++++++++++++++++++++++ |
+// + Getestete Settings: |
+// +++++++++++++++++++++++++++++++ |
+// Setting: Kamera |
+// Stick_P:3 |
+// Stick_D:0 |
+// Gyro_P: 175 |
+// Gyro_I: 175 |
+// Ki_Anteil: 10 |
+// +++++++++++++++++++++++++++++++ |
+// + Getestete Settings: |
+// +++++++++++++++++++++++++++++++ |
+// Setting: Normal |
+// Stick_P:2 |
+// Stick_D:8 |
+// Gyro_P: 80 |
+// Gyro_I: 150 |
+// Ki_Anteil: 5 |
+ |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/analog.c |
---|
0,0 → 1,147 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az, UBat = 100; |
volatile int AdWertNick = 0, AdWertRoll = 0, AdWertGier = 0; |
volatile int AdWertAccRoll = 0,AdWertAccNick = 0,AdWertAccHoch = 0; |
volatile char MessanzahlNick = 0, MessanzahlRoll = 0, MessanzahlGier = 0; |
volatile char messanzahl_AccNick = 0, messanzahl_AccRoll = 0, messanzahl_AccHoch = 0; |
volatile long Luftdruck = 32000; |
volatile int StartLuftdruck; |
volatile unsigned int MessLuftdruck = 1023; |
unsigned char DruckOffsetSetting; |
volatile int HoeheD = 0; |
volatile char messanzahl_Druck; |
volatile int tmpLuftdruck; |
volatile unsigned int ZaehlMessungen = 0; |
//####################################################################################### |
// |
void ADC_Init(void) |
//####################################################################################### |
{ |
ADMUX = 0;//Referenz ist extern |
ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE); |
//Free Running Mode, Division Factor 128, Interrupt on |
} |
void SucheLuftruckOffset(void) |
{ |
unsigned int off; |
off = eeprom_read_byte(&EEPromArray[EEPROM_ADR_LAST_OFFSET]); |
if(off > 20) off -= 10; |
OCR0A = off; |
Delay_ms_Mess(100); |
if(MessLuftdruck < 850) off = 0; |
for(; off < 250;off++) |
{ |
OCR0A = off; |
Delay_ms_Mess(50); |
printf("."); |
if(MessLuftdruck < 900) break; |
} |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_LAST_OFFSET], off); |
DruckOffsetSetting = off; |
Delay_ms_Mess(300); |
} |
//####################################################################################### |
// |
SIGNAL(SIG_ADC) |
//####################################################################################### |
{ |
static unsigned char kanal=0,state = 0; |
static unsigned int gier1, roll1, nick1; |
ANALOG_OFF; |
switch(state++) |
{ |
case 0: |
gier1 = ADC; |
kanal = 1; |
ZaehlMessungen++; |
break; |
case 1: |
roll1 = ADC; |
kanal = 2; |
break; |
case 2: |
nick1 = ADC; |
kanal = 4; |
break; |
case 3: |
UBat = (3 * UBat + ADC / 3) / 4;//(UBat + ((ADC * 39) / 256) + 19) / 2; |
kanal = 6; |
break; |
case 4: |
Aktuell_ay = acc_neutral.Y - ADC; |
AdWertAccRoll = Aktuell_ay; |
kanal = 7; |
break; |
case 5: |
Aktuell_ax = ADC - acc_neutral.X; |
AdWertAccNick = Aktuell_ax; |
kanal = 0; |
break; |
case 6: |
if(PlatinenVersion == 10) AdWertGier = (ADC + gier1) / 2; |
else AdWertGier = ADC + gier1; |
kanal = 1; |
break; |
case 7: |
if(PlatinenVersion == 10) AdWertRoll = (ADC + roll1) / 2; |
else AdWertRoll = ADC + roll1; |
kanal = 2; |
break; |
case 8: |
if(PlatinenVersion == 10) AdWertNick = (ADC + nick1) / 2; |
else AdWertNick = ADC + nick1; |
//AdWertNick = 0; |
//AdWertNick += Poti2; |
kanal = 5; |
break; |
case 9: |
AdWertAccHoch = (signed int) ADC - acc_neutral.Z; |
AdWertAccHoch += abs(Aktuell_ay) / 4 + abs(Aktuell_ax) / 4; |
if(AdWertAccHoch > 1) |
{ |
if(acc_neutral.Z < 800) acc_neutral.Z+= 0.02; |
} |
else if(AdWertAccHoch < -1) |
{ |
if(acc_neutral.Z > 600) acc_neutral.Z-= 0.02; |
} |
messanzahl_AccHoch = 1; |
Aktuell_az = ADC; |
Mess_Integral_Hoch += AdWertAccHoch; // Integrieren |
Mess_Integral_Hoch -= Mess_Integral_Hoch / 1024; // dämfen |
kanal = 3; |
break; |
case 10: |
tmpLuftdruck += ADC; |
if(++messanzahl_Druck >= 5) |
{ |
MessLuftdruck = ADC; |
messanzahl_Druck = 0; |
HoeheD = (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; |
if(state != 0) ANALOG_ON; |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/analog.h |
---|
0,0 → 1,24 |
/*####################################################################################### |
#######################################################################################*/ |
extern volatile int UBat; |
extern volatile int AdWertNick, AdWertRoll, AdWertGier; |
extern volatile int AdWertAccRoll,AdWertAccNick,AdWertAccHoch; |
extern volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az; |
extern volatile long Luftdruck; |
extern volatile char messanzahl_Druck; |
extern volatile unsigned int ZaehlMessungen; |
extern unsigned char DruckOffsetSetting; |
extern volatile int HoeheD; |
extern volatile unsigned int MessLuftdruck; |
extern volatile int StartLuftdruck; |
extern volatile char MessanzahlNick; |
unsigned int ReadADC(unsigned char adc_input); |
void ADC_Init(void); |
void SucheLuftruckOffset(void); |
#define ANALOG_OFF ADCSRA=0 |
#define ANALOG_ON ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE) |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/compass.c |
---|
0,0 → 1,243 |
/* |
Copyright 2007, Niklas Nold |
This program (files compass.c and compass.h) is free software; you can redistribute it and/or modify |
it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; |
either version 3 of the License, or (at your option) any later version. |
This program 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
Please note: All the other files for the project "Mikrokopter" by H. Buss are under the license (license_buss.txt) published by www.mikrokopter.de |
*/ |
#include "main.h" |
struct MM3_calib_struct ee_calib EEMEM; // Reservierung im EEPROM |
struct MM3_working_struct MM3; |
struct MM3_calib_struct MM3_calib; |
//############################################################################ |
// Initialisierung |
void init_MM3(void) |
//############################################################################ |
{ |
// SPI-Schnittstelle initialisieren |
SPCR = (1<<SPIE)|(1<<SPE)|(1<<MSTR)|(1<<SPR1)|(1<<SPR0); // Interrupt an, Master, 156 kHz Oszillator |
DDRB |= (1<<PB7)|(1<<PB5)|(1<<PB2); // J8, MOSI, SCK Ausgang |
if(PlatinenVersion == 10) |
{ |
DDRD |= (1<<PD3); // PD3 als Ausgang |
PORTD &= ~(1<<PD3); // J5 permanent auf Low |
} |
else |
{ |
DDRC |= (1<<PC6); // PC6 als Ausgang |
PORTC &= ~(1<<PC6); // J9 permanent auf Low |
} |
// Init Statemachine |
MM3.AXIS = MM3_X; |
MM3.STATE = MM3_RESET; |
// Kalibrierung aus dem EEprom lesen |
eeprom_read_block(&MM3_calib,&ee_calib,sizeof(struct MM3_calib_struct)); |
} |
//############################################################################ |
// Wird in der SIGNAL (SIG_OVERFLOW0) aufgerufen |
void timer0_MM3(void) |
//############################################################################ |
{ |
switch (MM3.STATE) |
{ |
case MM3_RESET: |
PORTB |= (1<<PB2); // J8 auf High, MM3 Reset |
MM3.STATE = MM3_START_TRANSFER; |
return; |
case MM3_START_TRANSFER: |
PORTB &= ~(1<<PB2); // J8 auf Low (war ~125 µs auf High) |
if (MM3.AXIS == MM3_X) SPDR = 0x31; // Schreiben ins SPDR löst automatisch SPI-Übertragung (MOSI und MISO) aus |
else if (MM3.AXIS == MM3_Y) SPDR = 0x32; // Micromag Period Select ist auf 256 (0x30) |
else SPDR = 0x33; //if (MM3.AXIS == MM3_Z) // 1: x-Achse, 2: Y-Achse, 3: Z-Achse |
MM3.DRDY = SetDelay(8); // Laut Datenblatt max. Zeit bis Messung fertig (bei PS 256 eigentlich 4 ms) |
MM3.STATE = MM3_WAIT_DRDY; |
return; |
case MM3_WAIT_DRDY: |
if (CheckDelay(MM3.DRDY)) {SPDR = 0x00;MM3.STATE = MM3_DRDY;} // Irgendwas ins SPDR, damit Übertragung ausgelöst wird, wenn Wartezeit vorbei |
return; // Jetzt gehts weiter in SIGNAL (SIG_SPI) |
} |
} |
//############################################################################ |
// SPI byte ready |
SIGNAL (SIG_SPI) |
//############################################################################ |
{ |
static char tmp; |
int wert; |
switch (MM3.STATE) |
{ |
case MM3_DRDY: // 1. Byte ist da, zwischenspeichern |
tmp = SPDR; |
SPDR = 0x00; // Übertragung von 2. Byte auslösen |
MM3.STATE = MM3_BYTE2; |
return; |
case MM3_BYTE2: // 2. Byte der entsprechenden Achse ist da |
wert = tmp; |
wert <<= 8; // 1. Byte an MSB-Stelle rücken |
wert |= SPDR; // 2. Byte dranpappen |
if(abs(wert) < Max_Axis_Value) // Spikes filtern. Zuweisung nur, wenn Max-Wert nicht überschritten |
switch (MM3.AXIS) |
{ |
case MM3_X: |
MM3.x_axis = wert; |
MM3.AXIS = MM3_Y; |
break; |
case MM3_Y: |
MM3.y_axis = wert; |
MM3.AXIS = MM3_Z; |
break; |
default: //case MM3_Z: |
MM3.z_axis = wert; |
MM3.AXIS = MM3_X; |
} |
MM3.STATE = MM3_RESET; |
} |
} |
//############################################################################ |
// Kompass kalibrieren |
void calib_MM3(void) |
//############################################################################ |
{ |
signed int x_min=0,x_max=0,y_min=0,y_max=0,z_min=0,z_max=0; |
uint8_t measurement=50,beeper=0; |
unsigned int timer; |
GRN_ON; |
ROT_OFF; |
while (measurement) |
{ |
//H_earth = MM3.x_axis*MM3.x_axis + MM3.y_axis*MM3.y_axis + MM3.z_axis*MM3.z_axis; |
if (MM3.x_axis > x_max) x_max = MM3.x_axis; |
else if (MM3.x_axis < x_min) x_min = MM3.x_axis; |
if (MM3.y_axis > y_max) y_max = MM3.y_axis; |
else if (MM3.y_axis < y_min) y_min = MM3.y_axis; |
if (MM3.z_axis > z_max) z_max = MM3.z_axis; |
else if (MM3.z_axis < z_min) z_min = MM3.z_axis; |
if (!beeper) |
{ |
ROT_FLASH; |
GRN_FLASH; |
beeptime = 50; |
beeper = 50; |
} |
beeper--; |
// Schleife mit 100 Hz |
timer = SetDelay(10); |
while(!CheckDelay(timer)); |
// Wenn Gas zurück genommen wird, Kalibrierung mit 1/2 Sekunde Verzögerung beenden |
if (PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] < 100) measurement--; |
} |
// Wertebereich der Achsen |
MM3_calib.X_range = (x_max - x_min); |
MM3_calib.Y_range = (y_max - y_min); |
MM3_calib.Z_range = (z_max - z_min); |
// Offset der Achsen |
MM3_calib.X_off = (x_max + x_min) / 2; |
MM3_calib.Y_off = (y_max + y_min) / 2; |
MM3_calib.Z_off = (z_max + z_min) / 2; |
// und im EEProm abspeichern |
eeprom_write_block(&MM3_calib,&ee_calib,sizeof(struct MM3_calib_struct)); |
} |
//############################################################################ |
// Neigungskompensierung und Berechnung der Ausrichtung |
int heading_MM3(void) |
//############################################################################ |
{ |
signed int sin_nick, cos_nick, sin_roll, cos_roll; |
long x_axis, y_axis, z_axis; |
long x_corr, y_corr; |
signed int heading; |
int8_t nicktilt,rolltilt; |
unsigned int div_faktor; |
div_faktor = (uint16_t)EE_Parameter.UserParam3 * 8; |
// Berechung von sinus und cosinus |
nicktilt = (IntegralNick/div_faktor); |
sin_nick = sin_i(nicktilt); |
cos_nick = cos_i(nicktilt); |
rolltilt = (IntegralRoll/div_faktor); |
sin_roll = sin_i(rolltilt); |
cos_roll = cos_i(rolltilt); |
// Offset |
x_axis = (MM3.x_axis - MM3_calib.X_off); |
y_axis = (MM3.y_axis - MM3_calib.Y_off); |
z_axis = (MM3.z_axis - MM3_calib.Z_off); |
/* |
// Normierung Wertebereich |
if ((MM3_calib.X_range > MM3_calib.Y_range) && (MM3_calib.X_range > MM3_calib.Z_range)) |
{ |
y_axis = (y_axis * MM3_calib.X_range) / MM3_calib.Y_range; |
z_axis = (z_axis * MM3_calib.X_range) / MM3_calib.Z_range; |
} |
else if ((MM3_calib.Y_range > MM3_calib.X_range) && (MM3_calib.Y_range > MM3_calib.Z_range)) |
{ |
x_axis = (x_axis * MM3_calib.Y_range) / MM3_calib.X_range; |
z_axis = (z_axis * MM3_calib.Y_range) / MM3_calib.Z_range; |
} |
else //if ((MM3_calib.Z_range > MM3_calib.X_range) && (MM3_calib.Z_range > MM3_calib.Y_range)) |
{ |
x_axis = (x_axis * MM3_calib.Z_range) / MM3_calib.X_range; |
y_axis = (y_axis * MM3_calib.Z_range) / MM3_calib.Y_range; |
} |
*/ |
// Neigungskompensierung |
x_corr = x_axis * cos_nick; |
x_corr += (y_axis * sin_roll * sin_nick) /1024; |
x_corr -= (z_axis * cos_roll * sin_nick) /1024; |
x_corr /= 1024; |
y_corr = y_axis * cos_roll; |
y_corr += z_axis * sin_roll; |
y_corr /= 1024; |
// Winkelberechnung |
heading = atan2_i(x_corr, y_corr); |
if (heading < 0) heading = -heading; |
else heading = 360 - heading; |
return (heading); |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/compass.h |
---|
0,0 → 1,44 |
struct MM3_working_struct |
{ |
uint8_t STATE; |
unsigned int DRDY; |
uint8_t AXIS; |
volatile signed int x_axis; |
volatile signed int y_axis; |
volatile signed int z_axis; |
}; |
struct MM3_calib_struct |
{ |
int8_t X_off; |
int8_t Y_off; |
int8_t Z_off; |
uint16_t X_range; |
uint16_t Y_range; |
uint16_t Z_range; |
}; |
extern struct MM3_working_struct MM3; |
extern struct MM3_calib_struct MM3_calib; |
void init_MM3(void); |
void timer0_MM3(void); |
void calib_MM3(void); |
int heading_MM3(void); |
#define Max_Axis_Value 500 |
// Die Werte der Statemachine |
#define MM3_RESET 0 |
#define MM3_START_TRANSFER 1 |
#define MM3_WAIT_DRDY 2 |
#define MM3_DRDY 3 |
#define MM3_BYTE2 4 |
#define MM3_X 5 |
#define MM3_Y 6 |
#define MM3_Z 7 |
#define MM3_TILT 8 |
#define MM3_IDLE 9 |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/eeprom.c |
---|
0,0 → 1,182 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Konstanten |
// + 0-250 -> normale Werte |
// + 251 -> Poti1 |
// + 252 -> Poti2 |
// + 253 -> Poti3 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
void DefaultKonstanten1(void) |
{ |
EE_Parameter.Kanalbelegung[K_NICK] = 1; |
EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
EE_Parameter.Kanalbelegung[K_GAS] = 3; |
EE_Parameter.Kanalbelegung[K_GIER] = 4; |
EE_Parameter.Kanalbelegung[K_POTI1] = 5; |
EE_Parameter.Kanalbelegung[K_POTI2] = 6; |
EE_Parameter.Kanalbelegung[K_POTI3] = 7; |
EE_Parameter.Kanalbelegung[K_POTI4] = 8; |
EE_Parameter.GlobalConfig = CFG_ACHSENKOPPLUNG_AKTIV;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV | CFG_KOMPASS_FIX;//0x01; |
EE_Parameter.Hoehe_MinGas = 30; |
EE_Parameter.MaxHoehe = 251; // Wert : 0-250 251 -> Poti1 |
EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
EE_Parameter.Luftdruck_D = 50; // Wert : 0-250 |
EE_Parameter.Hoehe_ACC_Wirkung = 50; // Wert : 0-250 |
EE_Parameter.Hoehe_Verstaerkung = 4; // Wert : 0-50 |
EE_Parameter.Stick_P = 4; //2 // Wert : 1-6 |
EE_Parameter.Stick_D = 8; //8 // Wert : 0-64 |
EE_Parameter.Gier_P = 14; // Wert : 1-20 |
EE_Parameter.Gas_Min = 15; // Wert : 0-32 |
EE_Parameter.Gas_Max = 250; // Wert : 33-250 |
EE_Parameter.GyroAccFaktor = 26; // Wert : 1-64 |
EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
EE_Parameter.Gyro_P = 120; //80 // Wert : 0-250 |
EE_Parameter.Gyro_I = 150; // Wert : 0-250 |
EE_Parameter.UnterspannungsWarnung = 94; // Wert : 0-250 |
EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
EE_Parameter.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
EE_Parameter.I_Faktor = 32; |
EE_Parameter.UserParam1 = 32 * 4; //zur freien Verwendung |
EE_Parameter.UserParam2 = 0; //zur freien Verwendung |
EE_Parameter.UserParam3 = 0; //zur freien Verwendung |
EE_Parameter.UserParam4 = 0; //zur freien Verwendung |
EE_Parameter.UserParam5 = 0; // zur freien Verwendung |
EE_Parameter.UserParam6 = 0; // zur freien Verwendung |
EE_Parameter.UserParam7 = 0; // zur freien Verwendung |
EE_Parameter.UserParam8 = 0; // zur freien Verwendung |
EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickRefresh = 5; |
EE_Parameter.LoopGasLimit = 50; |
EE_Parameter.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag |
EE_Parameter.LoopHysterese = 50; |
EE_Parameter.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
EE_Parameter.AchsKopplung1 = 100; |
EE_Parameter.AchsGegenKopplung1 = 10; |
EE_Parameter.WinkelUmschlagNick = 100; |
EE_Parameter.WinkelUmschlagRoll = 100; |
EE_Parameter.GyroAccAbgleich = 50; // 1/k |
EE_Parameter.Driftkomp = 4; |
EE_Parameter.DynamicStability = 100; |
memcpy(EE_Parameter.Name, "Sport\0", 12); |
} |
void DefaultKonstanten2(void) |
{ |
EE_Parameter.Kanalbelegung[K_NICK] = 1; |
EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
EE_Parameter.Kanalbelegung[K_GAS] = 3; |
EE_Parameter.Kanalbelegung[K_GIER] = 4; |
EE_Parameter.Kanalbelegung[K_POTI1] = 5; |
EE_Parameter.Kanalbelegung[K_POTI2] = 6; |
EE_Parameter.Kanalbelegung[K_POTI3] = 7; |
EE_Parameter.Kanalbelegung[K_POTI4] = 8; |
EE_Parameter.GlobalConfig = CFG_ACHSENKOPPLUNG_AKTIV;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV;//0x01; |
EE_Parameter.Hoehe_MinGas = 30; |
EE_Parameter.MaxHoehe = 251; // Wert : 0-250 251 -> Poti1 |
EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
EE_Parameter.Luftdruck_D = 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 = 10; // Wert : 1-20 |
EE_Parameter.Gas_Min = 15; // Wert : 0-32 |
EE_Parameter.Gas_Max = 250; // Wert : 33-250 |
EE_Parameter.GyroAccFaktor = 26; // Wert : 1-64 |
EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
EE_Parameter.Gyro_P = 175; //80 // Wert : 0-250 |
EE_Parameter.Gyro_I = 175; // Wert : 0-250 |
EE_Parameter.UnterspannungsWarnung = 94; // Wert : 0-250 |
EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
EE_Parameter.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
EE_Parameter.I_Faktor = 32; |
EE_Parameter.UserParam1 = 20 * 4; // zur freien Verwendung |
EE_Parameter.UserParam2 = 0; // zur freien Verwendung |
EE_Parameter.UserParam3 = 0; // zur freien Verwendung |
EE_Parameter.UserParam4 = 0; // zur freien Verwendung |
EE_Parameter.UserParam5 = 0; // zur freien Verwendung |
EE_Parameter.UserParam6 = 0; // zur freien Verwendung |
EE_Parameter.UserParam7 = 0; // zur freien Verwendung |
EE_Parameter.UserParam8 = 0; // zur freien Verwendung |
EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickRefresh = 5; |
EE_Parameter.LoopGasLimit = 50; |
EE_Parameter.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag |
EE_Parameter.LoopHysterese = 50; |
EE_Parameter.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts |
EE_Parameter.AchsKopplung1 = 100; // Faktor, mit dem Gier die Achsen Roll und Nick verkoppelt |
EE_Parameter.AchsGegenKopplung1 = 10; |
EE_Parameter.WinkelUmschlagNick = 100; |
EE_Parameter.WinkelUmschlagRoll = 100; |
EE_Parameter.GyroAccAbgleich = 100; // 1/k |
EE_Parameter.Driftkomp = 4; |
EE_Parameter.DynamicStability = 75; |
memcpy(EE_Parameter.Name, "Normal\0", 12); |
} |
void DefaultKonstanten3(void) |
{ |
EE_Parameter.Kanalbelegung[K_NICK] = 1; |
EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
EE_Parameter.Kanalbelegung[K_GAS] = 3; |
EE_Parameter.Kanalbelegung[K_GIER] = 4; |
EE_Parameter.Kanalbelegung[K_POTI1] = 5; |
EE_Parameter.Kanalbelegung[K_POTI2] = 6; |
EE_Parameter.Kanalbelegung[K_POTI3] = 7; |
EE_Parameter.Kanalbelegung[K_POTI4] = 8; |
EE_Parameter.GlobalConfig = CFG_DREHRATEN_BEGRENZER | CFG_ACHSENKOPPLUNG_AKTIV;///*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV;//0x01; |
EE_Parameter.Hoehe_MinGas = 30; |
EE_Parameter.MaxHoehe = 251; // Wert : 0-250 251 -> Poti1 |
EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
EE_Parameter.Luftdruck_D = 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 = 3; //2 // Wert : 1-6 |
EE_Parameter.Stick_D = 0; //8 // Wert : 0-64 |
EE_Parameter.Gier_P = 8; // 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 = 200; //80 // Wert : 0-250 |
EE_Parameter.Gyro_I = 175; // Wert : 0-250 |
EE_Parameter.UnterspannungsWarnung = 94; // Wert : 0-250 |
EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
EE_Parameter.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
EE_Parameter.I_Faktor = 10; |
EE_Parameter.UserParam1 = 20 * 4; // zur freien Verwendung |
EE_Parameter.UserParam2 = 0; // zur freien Verwendung |
EE_Parameter.UserParam3 = 0; // zur freien Verwendung |
EE_Parameter.UserParam4 = 0; // zur freien Verwendung |
EE_Parameter.UserParam5 = 0; // zur freien Verwendung |
EE_Parameter.UserParam6 = 0; // zur freien Verwendung |
EE_Parameter.UserParam7 = 0; // zur freien Verwendung |
EE_Parameter.UserParam8 = 0; // zur freien Verwendung |
EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickRefresh = 5; |
EE_Parameter.LoopGasLimit = 50; |
EE_Parameter.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag |
EE_Parameter.LoopHysterese = 50; |
EE_Parameter.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts |
EE_Parameter.AchsKopplung1 = 100; // Faktor, mit dem Gier die Achsen Roll und Nick verkoppelt |
EE_Parameter.AchsGegenKopplung1 = 10; |
EE_Parameter.WinkelUmschlagNick = 100; |
EE_Parameter.WinkelUmschlagRoll = 100; |
EE_Parameter.GyroAccAbgleich = 100; // 1/k |
EE_Parameter.Driftkomp = 4; |
EE_Parameter.DynamicStability = 50; |
memcpy(EE_Parameter.Name, "Beginner\0", 12); |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/fc.c |
---|
0,0 → 1,1117 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + Nur für den privaten Gebrauch |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "eeprom.c" |
unsigned char h,m,s; |
volatile unsigned int I2CTimeout = 100; |
int MesswertNick,MesswertRoll,MesswertGier; |
int AdNeutralNick = 0,AdNeutralRoll = 0,AdNeutralGier = 0,StartNeutralRoll = 0,StartNeutralNick = 0; |
int Mittelwert_AccNick, Mittelwert_AccRoll,Mittelwert_AccHoch; |
long IntegralNick = 0,IntegralNick2 = 0; |
long IntegralRoll = 0,IntegralRoll2 = 0; |
long IntegralAccNick = 0,IntegralAccRoll = 0,IntegralAccZ = 0; |
long Integral_Gier = 0; |
long Mess_IntegralNick = 0,Mess_IntegralNick2 = 0; |
long Mess_IntegralRoll = 0,Mess_IntegralRoll2 = 0; |
long Mess_Integral_Gier = 0,Mess_Integral_Gier2 = 0; |
long MittelIntegralNick,MittelIntegralRoll,MittelIntegralNick2,MittelIntegralRoll2; |
long Mess_Integral_Hoch = 0; |
int KompassValue = 0; |
int KompassStartwert = 0; |
int KompassRichtung = 0; |
uint8_t updKompass = 0; |
unsigned char MAX_GAS,MIN_GAS; |
unsigned char Notlandung = 0; |
unsigned char HoehenReglerAktiv = 0; |
long Umschlag180Nick = 250000L, Umschlag180Roll = 250000L; |
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; |
int LageKorrekturRoll = 0,LageKorrekturNick = 0; |
float Ki = FAKTOR_I; |
unsigned char Looping_Nick = 0,Looping_Roll = 0; |
unsigned char Looping_Links = 0, Looping_Rechts = 0, Looping_Unten = 0, Looping_Oben = 0; |
unsigned char Parameter_Luftdruck_D = 48; // Wert : 0-250 |
unsigned char Parameter_MaxHoehe = 251; // Wert : 0-250 |
unsigned char Parameter_Hoehe_P = 16; // Wert : 0-32 |
unsigned char Parameter_Hoehe_ACC_Wirkung = 58; // Wert : 0-250 |
unsigned char Parameter_KompassWirkung = 64; // Wert : 0-250 |
unsigned char Parameter_Gyro_P = 150; // Wert : 10-250 |
unsigned char Parameter_Gyro_I = 150; // Wert : 0-250 |
unsigned char Parameter_Gier_P = 2; // Wert : 1-20 |
unsigned char Parameter_I_Faktor = 10; // Wert : 1-20 |
unsigned char Parameter_UserParam1 = 0; |
unsigned char Parameter_UserParam2 = 0; |
unsigned char Parameter_UserParam3 = 0; |
unsigned char Parameter_UserParam4 = 0; |
unsigned char Parameter_UserParam5 = 0; |
unsigned char Parameter_UserParam6 = 0; |
unsigned char Parameter_UserParam7 = 0; |
unsigned char Parameter_UserParam8 = 0; |
unsigned char Parameter_ServoNickControl = 100; |
unsigned char Parameter_LoopGasLimit = 70; |
unsigned char Parameter_AchsKopplung1 = 0; |
unsigned char Parameter_AchsGegenKopplung1 = 0; |
unsigned char Parameter_DynamicStability = 100; |
struct mk_param_struct EE_Parameter; |
struct acc_neutral_struct ee_acc_neutral EEMEM; // Reservierung im EEPROM |
struct acc_neutral_struct acc_neutral; |
signed int ExternStickNick = 0,ExternStickRoll = 0,ExternStickGier = 0, ExternHoehenValue = -20; |
void Piep(unsigned char Anzahl) |
{ |
while(Anzahl--) |
{ |
if(MotorenEin) return; //auf keinen Fall im Flug! |
beeptime = 100; |
Delay_ms(250); |
} |
} |
//############################################################################ |
// Neutrallage kalibrieren und im EEPROM abspeichern |
void calib_acc(void) |
//############################################################################ |
{ |
acc_neutral.X = 0; |
acc_neutral.Y = 0; |
acc_neutral.Z = 0; |
CalibrierMittelwert(); |
Delay_ms_Mess(100); |
CalibrierMittelwert(); |
acc_neutral.X = abs(Mittelwert_AccNick) / ACC_AMPLIFY; |
acc_neutral.Y = abs(Mittelwert_AccRoll) / ACC_AMPLIFY; |
acc_neutral.Z = Aktuell_az; |
eeprom_write_block(&acc_neutral,&ee_acc_neutral,sizeof(struct acc_neutral_struct)); |
} |
//############################################################################ |
// Nullwerte ermitteln |
void SetNeutral(void) |
//############################################################################ |
{ |
acc_neutral.X = 0; |
acc_neutral.Y = 0; |
acc_neutral.Z = 0; |
AdNeutralNick = 0; |
AdNeutralRoll = 0; |
AdNeutralGier = 0; |
Parameter_AchsKopplung1 = 0; |
Parameter_AchsGegenKopplung1 = 0; |
CalibrierMittelwert(); |
Delay_ms_Mess(100); |
CalibrierMittelwert(); |
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
{ |
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
} |
AdNeutralNick= AdWertNick; |
AdNeutralRoll= AdWertRoll; |
AdNeutralGier= AdWertGier; |
StartNeutralRoll = AdNeutralRoll; |
StartNeutralNick = AdNeutralNick; |
eeprom_read_block(&acc_neutral,&ee_acc_neutral,sizeof(struct acc_neutral_struct)); |
Mess_IntegralNick = 0; |
Mess_IntegralNick2 = 0; |
Mess_IntegralRoll = 0; |
Mess_IntegralRoll2 = 0; |
Mess_Integral_Gier = 0; |
MesswertNick = 0; |
MesswertRoll = 0; |
MesswertGier = 0; |
StartLuftdruck = Luftdruck; |
HoeheD = 0; |
Mess_Integral_Hoch = 0; |
KompassStartwert = KompassValue; |
GPS_Neutral(); |
beeptime = 50; |
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L; |
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L; |
ExternHoehenValue = 0; |
} |
//############################################################################ |
// Bearbeitet die Messwerte |
void Mittelwert(void) |
//############################################################################ |
{ |
static signed long tmpl,tmpl2; |
MesswertGier = (signed int) AdNeutralGier - AdWertGier; |
MesswertRoll = (signed int) AdWertRoll - AdNeutralRoll; |
MesswertNick = (signed int) AdWertNick - AdNeutralNick; |
// Beschleunigungssensor ++++++++++++++++++++++++++++++++++++++++++++++++ |
Mittelwert_AccNick = ((long)Mittelwert_AccNick * 1 + ((ACC_AMPLIFY * (long)AdWertAccNick))) / 2L; |
Mittelwert_AccRoll = ((long)Mittelwert_AccRoll * 1 + ((ACC_AMPLIFY * (long)AdWertAccRoll))) / 2L; |
Mittelwert_AccHoch = ((long)Mittelwert_AccHoch * 1 + ((long)AdWertAccHoch)) / 2L; |
IntegralAccNick += ACC_AMPLIFY * AdWertAccNick; |
IntegralAccRoll += ACC_AMPLIFY * AdWertAccRoll; |
IntegralAccZ += Aktuell_az - acc_neutral.Z; |
// Gier ++++++++++++++++++++++++++++++++++++++++++++++++ |
Mess_Integral_Gier += MesswertGier; |
Mess_Integral_Gier2 += MesswertGier; |
// Kopplungsanteil +++++++++++++++++++++++++++++++++++++ |
if(!Looping_Nick && !Looping_Roll && (EE_Parameter.GlobalConfig & CFG_ACHSENKOPPLUNG_AKTIV)) |
{ |
tmpl = Mess_IntegralNick / 4096L; |
tmpl *= MesswertGier; |
tmpl *= Parameter_AchsKopplung1; //125 |
tmpl /= 2048L; |
tmpl2 = Mess_IntegralRoll / 4096L; |
tmpl2 *= MesswertGier; |
tmpl2 *= Parameter_AchsKopplung1; |
tmpl2 /= 2048L; |
} |
else tmpl = tmpl2 = 0; |
// Roll ++++++++++++++++++++++++++++++++++++++++++++++++ |
MesswertRoll += tmpl; |
MesswertRoll += (tmpl2*Parameter_AchsGegenKopplung1)/512L; //109 |
Mess_IntegralRoll2 += MesswertRoll; |
Mess_IntegralRoll += MesswertRoll - LageKorrekturRoll; |
if(Mess_IntegralRoll > Umschlag180Roll) |
{ |
Mess_IntegralRoll = -(Umschlag180Roll - 10000L); |
Mess_IntegralRoll2 = Mess_IntegralRoll; |
} |
if(Mess_IntegralRoll <-Umschlag180Roll) |
{ |
Mess_IntegralRoll = (Umschlag180Roll - 10000L); |
Mess_IntegralRoll2 = Mess_IntegralRoll; |
} |
if(AdWertRoll < 15) MesswertRoll = -1000; |
if(AdWertRoll < 7) MesswertRoll = -2000; |
if(PlatinenVersion == 10) |
{ |
if(AdWertRoll > 1010) MesswertRoll = +1000; |
if(AdWertRoll > 1017) MesswertRoll = +2000; |
} |
else |
{ |
if(AdWertRoll > 2020) MesswertRoll = +1000; |
if(AdWertRoll > 2034) MesswertRoll = +2000; |
} |
// Nick ++++++++++++++++++++++++++++++++++++++++++++++++ |
MesswertNick -= tmpl2; |
MesswertNick -= (tmpl*Parameter_AchsGegenKopplung1)/512L; |
Mess_IntegralNick2 += MesswertNick; |
Mess_IntegralNick += MesswertNick - LageKorrekturNick; |
if(Mess_IntegralNick > Umschlag180Nick) |
{ |
Mess_IntegralNick = -(Umschlag180Nick - 10000L); |
Mess_IntegralNick2 = Mess_IntegralNick; |
} |
if(Mess_IntegralNick <-Umschlag180Nick) |
{ |
Mess_IntegralNick = (Umschlag180Nick - 10000L); |
Mess_IntegralNick2 = Mess_IntegralNick; |
} |
if(AdWertNick < 15) MesswertNick = -1000; |
if(AdWertNick < 7) MesswertNick = -2000; |
if(PlatinenVersion == 10) |
{ |
if(AdWertNick > 1010) MesswertNick = +1000; |
if(AdWertNick > 1017) MesswertNick = +2000; |
} |
else |
{ |
if(AdWertNick > 2020) MesswertNick = +1000; |
if(AdWertNick > 2034) MesswertNick = +2000; |
} |
//++++++++++++++++++++++++++++++++++++++++++++++++ |
// ADC einschalten |
ANALOG_ON; |
//++++++++++++++++++++++++++++++++++++++++++++++++ |
Integral_Gier = Mess_Integral_Gier; |
IntegralNick = Mess_IntegralNick; |
IntegralRoll = Mess_IntegralRoll; |
IntegralNick2 = Mess_IntegralNick2; |
IntegralRoll2 = Mess_IntegralRoll2; |
if(EE_Parameter.GlobalConfig & CFG_DREHRATEN_BEGRENZER && !Looping_Nick && !Looping_Roll) |
{ |
if(MesswertNick > 200) MesswertNick += 4 * (MesswertNick - 200); |
else if(MesswertNick < -200) MesswertNick += 4 * (MesswertNick + 200); |
if(MesswertRoll > 200) MesswertRoll += 4 * (MesswertRoll - 200); |
else if(MesswertRoll < -200) MesswertRoll += 4 * (MesswertRoll + 200); |
} |
if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--; |
if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--; |
if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--; |
if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--; |
if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255; |
if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255; |
if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255; |
if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255; |
} |
//############################################################################ |
// Messwerte beim Ermitteln der Nullage |
void CalibrierMittelwert(void) |
//############################################################################ |
{ |
// ADC auschalten, damit die Werte sich nicht während der Berechnung ändern |
ANALOG_OFF; |
MesswertNick = AdWertNick; |
MesswertRoll = AdWertRoll; |
MesswertGier = AdWertGier; |
Mittelwert_AccNick = ACC_AMPLIFY * (long)AdWertAccNick; |
Mittelwert_AccRoll = ACC_AMPLIFY * (long)AdWertAccRoll; |
Mittelwert_AccHoch = AdWertAccHoch; |
// ADC einschalten |
ANALOG_ON; |
if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--; |
if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--; |
if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--; |
if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--; |
if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255; |
if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255; |
if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255; |
if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255; |
Umschlag180Nick = (long)EE_Parameter.WinkelUmschlagNick * 2500L; |
Umschlag180Roll = (long)EE_Parameter.WinkelUmschlagNick * 2500L; |
} |
//############################################################################ |
// 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(); |
} |
//############################################################################ |
// Trägt ggf. das Poti als Parameter ein |
void ParameterZuordnung(void) |
//############################################################################ |
{ |
#define CHK_POTI(b,a,min,max) { if(a > 250) { if(a == 251) b = Poti1; else if(a == 252) b = Poti2; else if(a == 253) b = Poti3; else if(a == 254) b = Poti4;} else b = a; if(b <= min) b = min; else if(b >= max) b = max;} |
CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe,0,255); |
CHK_POTI(Parameter_Luftdruck_D,EE_Parameter.Luftdruck_D,0,100); |
CHK_POTI(Parameter_Hoehe_P,EE_Parameter.Hoehe_P,0,100); |
CHK_POTI(Parameter_Hoehe_ACC_Wirkung,EE_Parameter.Hoehe_ACC_Wirkung,0,255); |
CHK_POTI(Parameter_KompassWirkung,EE_Parameter.KompassWirkung,0,255); |
CHK_POTI(Parameter_Gyro_P,EE_Parameter.Gyro_P,10,255); |
CHK_POTI(Parameter_Gyro_I,EE_Parameter.Gyro_I,0,255); |
CHK_POTI(Parameter_I_Faktor,EE_Parameter.I_Faktor,0,255); |
CHK_POTI(Parameter_UserParam1,EE_Parameter.UserParam1,0,255); |
CHK_POTI(Parameter_UserParam2,EE_Parameter.UserParam2,0,255); |
CHK_POTI(Parameter_UserParam3,EE_Parameter.UserParam3,0,255); |
CHK_POTI(Parameter_UserParam4,EE_Parameter.UserParam4,0,255); |
CHK_POTI(Parameter_UserParam5,EE_Parameter.UserParam5,0,255); |
CHK_POTI(Parameter_UserParam6,EE_Parameter.UserParam6,0,255); |
CHK_POTI(Parameter_UserParam7,EE_Parameter.UserParam7,0,255); |
CHK_POTI(Parameter_UserParam8,EE_Parameter.UserParam8,0,255); |
CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
CHK_POTI(Parameter_LoopGasLimit,EE_Parameter.LoopGasLimit,0,255); |
CHK_POTI(Parameter_AchsKopplung1, EE_Parameter.AchsKopplung1,0,255); |
CHK_POTI(Parameter_AchsGegenKopplung1,EE_Parameter.AchsGegenKopplung1,0,255); |
CHK_POTI(Parameter_DynamicStability,EE_Parameter.DynamicStability,0,255); |
Ki = (float) Parameter_I_Faktor * 0.0001; |
MAX_GAS = EE_Parameter.Gas_Max; |
MIN_GAS = EE_Parameter.Gas_Min; |
} |
//############################################################################ |
// |
void MotorRegler(void) |
//############################################################################ |
{ |
int motorwert,pd_ergebnis,h,tmp_int; |
int GierMischanteil,GasMischanteil; |
static long SummeNick=0,SummeRoll=0; |
static long sollGier = 0,tmp_long,tmp_long2; |
static long IntegralFehlerNick = 0; |
static long IntegralFehlerRoll = 0; |
static unsigned int RcLostTimer; |
static unsigned char delay_neutral = 0; |
static unsigned char delay_einschalten = 0,delay_ausschalten = 0; |
static unsigned int modell_fliegt = 0; |
static int hoehenregler = 0; |
static char TimerWerteausgabe = 0; |
static char NeueKompassRichtungMerken = 0; |
static long ausgleichNick, ausgleichRoll; |
Mittelwert(); |
GRN_ON; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gaswert ermitteln |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
GasMischanteil = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 120; |
if(GasMischanteil > MAX_GAS - 20) GasMischanteil = MAX_GAS - 20; |
if(GasMischanteil < 0) GasMischanteil = 0; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Emfang schlecht |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(SenderOkay < 100) |
{ |
if(!PcZugriff) |
{ |
if(BeepMuster == 0xffff) |
{ |
beeptime = 15000; |
BeepMuster = 0x0c00; |
} |
} |
if(RcLostTimer) RcLostTimer--; |
else |
{ |
MotorenEin = 0; |
Notlandung = 0; |
} |
ROT_ON; |
if(modell_fliegt > 2000) // wahrscheinlich in der Luft --> langsam absenken |
{ |
GasMischanteil = EE_Parameter.NotGas; |
Notlandung = 1; |
PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] = 0; |
PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] = 0; |
PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] = 0; |
} |
else MotorenEin = 0; |
} |
else |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Emfang gut |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(SenderOkay > 140) |
{ |
Notlandung = 0; |
RcLostTimer = EE_Parameter.NotGasZeit * 50; |
if(GasMischanteil > 40) |
{ |
if(modell_fliegt < 0xffff) modell_fliegt++; |
} |
if((modell_fliegt < 200) || (GasMischanteil < 40)) |
{ |
SummeNick = 0; |
SummeRoll = 0; |
Mess_Integral_Gier = 0; |
Mess_Integral_Gier2 = 0; |
} |
if((GasMischanteil > 200) && MotorenEin == 0) |
{ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// auf Nullwerte kalibrieren |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) // Neutralwerte |
{ |
if(++delay_neutral > 200) // nicht sofort |
{ |
GRN_OFF; |
MotorenEin = 0; |
delay_neutral = 0; |
modell_fliegt = 0; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70 || abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) > 70) |
{ |
unsigned char setting=1; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 1; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 2; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5; |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], setting); // aktiven Datensatz merken |
} |
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
{ |
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
} |
ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], sizeof(struct mk_param_struct)); |
SetNeutral(); |
Piep(GetActiveParamSetNumber()); |
} |
} |
else delay_neutral = 0; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gas ist unten |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(GasMischanteil < 35) |
{ |
// Starten |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75) |
{ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Einschalten |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(++delay_einschalten > 200) |
{ |
delay_einschalten = 200; |
modell_fliegt = 1; |
MotorenEin = 1; |
sollGier = 0; |
Mess_Integral_Gier = 0; |
Mess_Integral_Gier2 = 0; |
Mess_IntegralNick = 0; |
Mess_IntegralRoll = 0; |
Mess_IntegralNick2 = IntegralNick; |
Mess_IntegralRoll2 = IntegralRoll; |
SummeNick = 0; |
SummeRoll = 0; |
} |
} |
else delay_einschalten = 0; |
//Auf Neutralwerte setzen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Auschalten |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) |
{ |
if(++delay_ausschalten > 200) // nicht sofort |
{ |
MotorenEin = 0; |
delay_ausschalten = 200; |
modell_fliegt = 0; |
} |
} |
else delay_ausschalten = 0; |
} |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// neue Werte von der Funke |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!NewPpmData-- || Notlandung) |
{ |
int tmp_int; |
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; |
#define KEY_VALUE (Parameter_UserParam1 * 4) //(Poti3 * 8) |
if(DubWiseKeys[1]) beeptime = 10; |
if(DubWiseKeys[1] & DUB_KEY_UP) tmp_int = KEY_VALUE; else |
if(DubWiseKeys[1] & DUB_KEY_DOWN) tmp_int = -KEY_VALUE; else tmp_int = 0; |
ExternStickNick = (ExternStickNick * 7 + tmp_int) / 8; |
if(DubWiseKeys[1] & DUB_KEY_LEFT) tmp_int = KEY_VALUE; else |
if(DubWiseKeys[1] & DUB_KEY_RIGHT) tmp_int = -KEY_VALUE; else tmp_int = 0; |
ExternStickRoll = (ExternStickRoll * 7 + tmp_int) / 8; |
if(DubWiseKeys[0] & 8) ExternStickGier = 50;else |
if(DubWiseKeys[0] & 4) ExternStickGier =-50;else ExternStickGier = 0; |
if(DubWiseKeys[0] & 2) ExternHoehenValue++; |
if(DubWiseKeys[0] & 16) ExternHoehenValue--; |
StickNick += ExternStickNick / 8; |
StickRoll += ExternStickRoll / 8; |
StickGier += ExternStickGier; |
if(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor = 0; |
if(GyroFaktor < 0) GyroFaktor = 0; |
if(IntegralFaktor < 0) IntegralFaktor = 0; |
// greift in den Stick ein, um ungewolltes überschlagen zu verhindern |
if(!(EE_Parameter.LoopConfig & CFG_LOOP_LINKS) && !(EE_Parameter.LoopConfig & CFG_LOOP_RECHTS)) |
{ |
if(IntegralNick > 60000) |
{ |
StickNick -= 8 * EE_Parameter.Stick_P; |
if(IntegralNick > 80000) StickNick -= 16 * EE_Parameter.Stick_P; |
} |
else |
if(IntegralNick < -60000) |
{ |
StickNick += 8 * EE_Parameter.Stick_P; |
if(IntegralNick > 80000) StickNick -= 16 * EE_Parameter.Stick_P; |
} |
if(IntegralRoll > 60000) |
{ |
StickRoll -= 8 * EE_Parameter.Stick_P; |
if(IntegralRoll > 80000) StickRoll -= 16 * EE_Parameter.Stick_P; |
} |
else |
if(IntegralRoll < -60000) |
{ |
StickRoll += 8 * EE_Parameter.Stick_P; |
if(IntegralRoll > 80000) StickRoll -= 16 * EE_Parameter.Stick_P; |
} |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Looping? |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_LINKS) Looping_Links = 1; |
else |
{ |
{ |
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < (EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese))) Looping_Links = 0; |
} |
} |
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < -EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_RECHTS) Looping_Rechts = 1; |
else |
{ |
if(Looping_Rechts) // Hysterese |
{ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > -(EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese)) Looping_Rechts = 0; |
} |
} |
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_OBEN) Looping_Oben = 1; |
else |
{ |
if(Looping_Oben) // Hysterese |
{ |
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < (EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese))) Looping_Oben = 0; |
} |
} |
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_UNTEN) Looping_Unten = 1; |
else |
{ |
if(Looping_Unten) // Hysterese |
{ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > -(EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese)) Looping_Unten = 0; |
} |
} |
if(Looping_Links || Looping_Rechts) Looping_Roll = 1; else Looping_Roll = 0; |
if(Looping_Oben || Looping_Unten) {Looping_Nick = 1; Looping_Roll = 0; Looping_Links = 0; Looping_Rechts = 0;} else Looping_Nick = 0; |
} // Ende neue Funken-Werte |
if(Looping_Roll) beeptime = 100; |
if(Looping_Roll || Looping_Nick) |
{ |
if(GasMischanteil > EE_Parameter.LoopGasLimit) GasMischanteil = EE_Parameter.LoopGasLimit; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Bei Empfangsausfall im Flug |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Notlandung) |
{ |
StickGier = 0; |
StickNick = 0; |
StickRoll = 0; |
GyroFaktor = 0.1; |
IntegralFaktor = 0.005; |
Looping_Roll = 0; |
Looping_Nick = 0; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Integrale auf ACC-Signal abgleichen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define ABGLEICH_ANZAHL 256L |
MittelIntegralNick += IntegralNick; // Für die Mittelwertbildung aufsummieren |
MittelIntegralRoll += IntegralRoll; |
MittelIntegralNick2 += IntegralNick2; |
MittelIntegralRoll2 += IntegralRoll2; |
if(Looping_Nick || Looping_Roll) |
{ |
IntegralAccNick = 0; |
IntegralAccRoll = 0; |
MittelIntegralNick = 0; |
MittelIntegralRoll = 0; |
MittelIntegralNick2 = 0; |
MittelIntegralRoll2 = 0; |
Mess_IntegralNick2 = Mess_IntegralNick; |
Mess_IntegralRoll2 = Mess_IntegralRoll; |
ZaehlMessungen = 0; |
LageKorrekturNick = 0; |
LageKorrekturRoll = 0; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!Looping_Nick && !Looping_Roll) |
{ |
long tmp_long, tmp_long2; |
tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick); |
tmp_long /= 16; |
tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll); |
tmp_long2 /= 16; |
#define AUSGLEICH 32 //(Parameter_UserParam1 / 2) |
if(tmp_long > AUSGLEICH) tmp_long = AUSGLEICH; |
if(tmp_long < -AUSGLEICH) tmp_long =-AUSGLEICH; |
if(tmp_long2 > AUSGLEICH) tmp_long2 = AUSGLEICH; |
if(tmp_long2 <-AUSGLEICH) tmp_long2 =-AUSGLEICH; |
Mess_IntegralNick -= tmp_long; |
Mess_IntegralRoll -= tmp_long2; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(ZaehlMessungen >= ABGLEICH_ANZAHL) |
{ |
static int cnt = 0; |
static char last_n_p,last_n_n,last_r_p,last_r_n; |
static long MittelIntegralNick_Alt,MittelIntegralRoll_Alt; |
if(!Looping_Nick && !Looping_Roll) |
{ |
MittelIntegralNick /= ABGLEICH_ANZAHL; |
MittelIntegralRoll /= ABGLEICH_ANZAHL; |
IntegralAccNick = (EE_Parameter.GyroAccFaktor * IntegralAccNick) / ABGLEICH_ANZAHL; |
IntegralAccRoll = (EE_Parameter.GyroAccFaktor * IntegralAccRoll) / ABGLEICH_ANZAHL; |
IntegralAccZ = IntegralAccZ / ABGLEICH_ANZAHL; |
#define MAX_I 0//(Poti2/10) |
// Nick ++++++++++++++++++++++++++++++++++++++++++++++++ |
IntegralFehlerNick = (long)(MittelIntegralNick - (long)IntegralAccNick); |
ausgleichNick = IntegralFehlerNick / EE_Parameter.GyroAccAbgleich; |
LageKorrekturNick = ausgleichNick / ABGLEICH_ANZAHL; |
// Roll ++++++++++++++++++++++++++++++++++++++++++++++++ |
IntegralFehlerRoll = (long)(MittelIntegralRoll - (long)IntegralAccRoll); |
ausgleichRoll = IntegralFehlerRoll / EE_Parameter.GyroAccAbgleich; |
LageKorrekturRoll = ausgleichRoll / ABGLEICH_ANZAHL; |
// Mess_IntegralNick -= ausgleichNick; |
// Mess_IntegralRoll -= ausgleichRoll; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gyro-Drift ermitteln |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
MittelIntegralNick2 /= ABGLEICH_ANZAHL; |
MittelIntegralRoll2 /= ABGLEICH_ANZAHL; |
// tmp_long = (long)(MittelIntegralNick2 - (long)IntegralAccNick); |
// tmp_long2 = (long)(MittelIntegralRoll2 - (long)IntegralAccRoll); |
tmp_long = IntegralNick2 - IntegralNick; |
tmp_long2 = IntegralRoll2 - IntegralRoll; |
//DebugOut.Analog[25] = MittelIntegralRoll2 / 26; |
IntegralFehlerNick = tmp_long; |
IntegralFehlerRoll = tmp_long2; |
Mess_IntegralNick2 -= IntegralFehlerNick; |
Mess_IntegralRoll2 -= IntegralFehlerRoll; |
// IntegralFehlerNick = (IntegralFehlerNick * 1 + tmp_long) / 2; |
// IntegralFehlerRoll = (IntegralFehlerRoll * 1 + tmp_long2) / 2; |
DebugOut.Analog[17] = IntegralAccNick / 26; |
DebugOut.Analog[18] = IntegralAccRoll / 26; |
DebugOut.Analog[19] = IntegralFehlerNick;// / 26; |
DebugOut.Analog[20] = IntegralFehlerRoll;// / 26; |
DebugOut.Analog[21] = MittelIntegralNick / 26; |
DebugOut.Analog[22] = MittelIntegralRoll / 26; |
//DebugOut.Analog[28] = ausgleichNick; |
DebugOut.Analog[29] = ausgleichRoll; |
DebugOut.Analog[30] = LageKorrekturRoll * 10; |
#define FEHLER_LIMIT (ABGLEICH_ANZAHL * 4) |
#define FEHLER_LIMIT2 (ABGLEICH_ANZAHL * 16) |
#define BEWEGUNGS_LIMIT 20000 |
// Nick +++++++++++++++++++++++++++++++++++++++++++++++++ |
cnt = 1;// + labs(IntegralFehlerNick) / 4096; |
if(labs(MittelIntegralNick_Alt - MittelIntegralNick) < BEWEGUNGS_LIMIT) |
{ |
if(IntegralFehlerNick > FEHLER_LIMIT2) |
{ |
if(last_n_p) |
{ |
cnt += labs(IntegralFehlerNick) / FEHLER_LIMIT2; |
ausgleichNick = IntegralFehlerNick / 8; |
if(ausgleichNick > 5000) ausgleichNick = 5000; |
LageKorrekturNick += ausgleichNick / ABGLEICH_ANZAHL; |
} |
else last_n_p = 1; |
} else last_n_p = 0; |
if(IntegralFehlerNick < -FEHLER_LIMIT2) |
{ |
if(last_n_n) |
{ |
cnt += labs(IntegralFehlerNick) / FEHLER_LIMIT2; |
ausgleichNick = IntegralFehlerNick / 8; |
if(ausgleichNick < -5000) ausgleichNick = -5000; |
LageKorrekturNick += ausgleichNick / ABGLEICH_ANZAHL; |
} |
else last_n_n = 1; |
} else last_n_n = 0; |
} else cnt = 0; |
if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp; |
if(IntegralFehlerNick > FEHLER_LIMIT) AdNeutralNick += cnt; |
if(IntegralFehlerNick < -FEHLER_LIMIT) AdNeutralNick -= cnt; |
// Roll +++++++++++++++++++++++++++++++++++++++++++++++++ |
cnt = 1;// + labs(IntegralFehlerNick) / 4096; |
ausgleichRoll = 0; |
if(labs(MittelIntegralRoll_Alt - MittelIntegralRoll) < BEWEGUNGS_LIMIT) |
{ |
if(IntegralFehlerRoll > FEHLER_LIMIT2) |
{ |
if(last_r_p) |
{ |
cnt += labs(IntegralFehlerRoll) / FEHLER_LIMIT2; |
ausgleichRoll = IntegralFehlerRoll / 8; |
if(ausgleichRoll > 5000) ausgleichRoll = 5000; |
LageKorrekturRoll += ausgleichRoll / ABGLEICH_ANZAHL; |
} |
else last_r_p = 1; |
} else last_r_p = 0; |
if(IntegralFehlerRoll < -FEHLER_LIMIT2) |
{ |
if(last_r_n) |
{ |
cnt += labs(IntegralFehlerRoll) / FEHLER_LIMIT2; |
ausgleichRoll = IntegralFehlerRoll / 8; |
if(ausgleichRoll < -5000) ausgleichRoll = -5000; |
LageKorrekturRoll += ausgleichRoll / ABGLEICH_ANZAHL; |
} |
else last_r_n = 1; |
} else last_r_n = 0; |
} else |
{ |
cnt = 0; |
} |
DebugOut.Analog[27] = ausgleichRoll; |
if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp; |
//if(cnt > 1) beeptime = 50; |
if(IntegralFehlerRoll > FEHLER_LIMIT) AdNeutralRoll += cnt; |
if(IntegralFehlerRoll < -FEHLER_LIMIT) AdNeutralRoll -= cnt; |
DebugOut.Analog[23] = AdNeutralNick;//10*(AdNeutralNick - StartNeutralNick); |
DebugOut.Analog[24] = 10*(AdNeutralRoll - StartNeutralRoll); |
} |
else |
{ |
LageKorrekturRoll = 0; |
LageKorrekturNick = 0; |
} |
if(!IntegralFaktor) { LageKorrekturRoll = 0; LageKorrekturNick = 0;} // z.B. bei HH |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++ |
MittelIntegralNick_Alt = MittelIntegralNick; |
MittelIntegralRoll_Alt = MittelIntegralRoll; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++ |
IntegralAccNick = 0; |
IntegralAccRoll = 0; |
IntegralAccZ = 0; |
MittelIntegralNick = 0; |
MittelIntegralRoll = 0; |
MittelIntegralNick2 = 0; |
MittelIntegralRoll2 = 0; |
ZaehlMessungen = 0; |
} |
//DebugOut.Analog[31] = StickRoll / (26*IntegralFaktor); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gieren |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(abs(StickGier) > 20) // war 35 |
{ |
if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX)) NeueKompassRichtungMerken = 1; |
} |
tmp_int = (long) EE_Parameter.Gier_P * ((long)StickGier * abs(StickGier)) / 512L; // expo y = ax + bx² |
tmp_int += (EE_Parameter.Gier_P * StickGier) / 4; |
sollGier = tmp_int; |
Mess_Integral_Gier -= tmp_int; |
if(Mess_Integral_Gier > 50000) Mess_Integral_Gier = 50000; // begrenzen |
if(Mess_Integral_Gier <-50000) Mess_Integral_Gier =-50000; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Kompass |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV) |
{ |
int w,v; |
if (!updKompass--) // Aufruf mit ~10 Hz |
{ |
KompassValue = heading_MM3(); |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
updKompass = 50; |
} |
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 < 35 && NeueKompassRichtungMerken) |
{ |
KompassStartwert = KompassValue; |
NeueKompassRichtungMerken = 0; |
} |
w = (w * Parameter_KompassWirkung) / 64; // auf die Wirkung normieren |
w = Parameter_KompassWirkung - w; // Wirkung ggf drosseln |
if(w > 0) |
{ |
Mess_Integral_Gier += (KompassRichtung * w) / 32; // nach Kompass ausrichten |
} |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Debugwerte zuordnen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!TimerWerteausgabe--) |
{ |
TimerWerteausgabe = 24; |
DebugOut.Analog[0] = IntegralNick / EE_Parameter.GyroAccFaktor; |
DebugOut.Analog[1] = IntegralRoll / EE_Parameter.GyroAccFaktor; |
DebugOut.Analog[2] = Mittelwert_AccNick; |
DebugOut.Analog[3] = Mittelwert_AccRoll; |
DebugOut.Analog[4] = MesswertGier; |
DebugOut.Analog[5] = HoehenWert; |
DebugOut.Analog[6] =(Mess_Integral_Hoch / 512); |
DebugOut.Analog[8] = KompassValue; |
DebugOut.Analog[9] = UBat; |
DebugOut.Analog[10] = SenderOkay; |
DebugOut.Analog[16] = Mittelwert_AccHoch; |
/* DebugOut.Analog[16] = motor_rx[0]; |
DebugOut.Analog[17] = motor_rx[1]; |
DebugOut.Analog[18] = motor_rx[2]; |
DebugOut.Analog[19] = motor_rx[3]; |
DebugOut.Analog[20] = motor_rx[0] + motor_rx[1] + motor_rx[2] + motor_rx[3]; |
DebugOut.Analog[20] /= 14; |
DebugOut.Analog[21] = motor_rx[4]; |
DebugOut.Analog[22] = motor_rx[5]; |
DebugOut.Analog[23] = motor_rx[6]; |
DebugOut.Analog[24] = motor_rx[7]; |
DebugOut.Analog[25] = motor_rx[4] + motor_rx[5] + motor_rx[6] + motor_rx[7]; |
*/ |
// DebugOut.Analog[9] = MesswertNick; |
// DebugOut.Analog[9] = SollHoehe; |
// DebugOut.Analog[10] = Mess_Integral_Gier / 128; |
// DebugOut.Analog[11] = KompassStartwert; |
// DebugOut.Analog[10] = Parameter_Gyro_I; |
// DebugOut.Analog[10] = EE_Parameter.Gyro_I; |
// DebugOut.Analog[9] = KompassRichtung; |
// DebugOut.Analog[10] = GasMischanteil; |
// DebugOut.Analog[3] = HoeheD * 32; |
// DebugOut.Analog[4] = hoehenregler; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Drehgeschwindigkeit und -winkel zu einem Istwert zusammenfassen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Looping_Nick) MesswertNick = MesswertNick * GyroFaktor; |
else MesswertNick = IntegralNick * IntegralFaktor + MesswertNick * GyroFaktor; |
if(Looping_Roll) MesswertRoll = MesswertRoll * GyroFaktor; |
else MesswertRoll = IntegralRoll * IntegralFaktor + MesswertRoll * GyroFaktor; |
// MesswertGier = MesswertGier * (GyroFaktor/2) + Integral_Gier * IntegralFaktor; |
MesswertGier = MesswertGier * (GyroFaktor) + Integral_Gier * IntegralFaktor/2; |
DebugOut.Analog[28] = MesswertRoll; |
DebugOut.Analog[25] = IntegralRoll * IntegralFaktor; |
DebugOut.Analog[31] = StickRoll;// / (26*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 = ((int) ExternHoehenValue + (int) Parameter_MaxHoehe) * (int)EE_Parameter.Hoehe_Verstaerkung - 20; |
HoehenReglerAktiv = 1; |
} |
if(Notlandung) SollHoehe = 0; |
h = HoehenWert; |
if((h > SollHoehe) && HoehenReglerAktiv) // zu hoch --> drosseln |
{ h = ((h - SollHoehe) * (int) Parameter_Hoehe_P) / 16; // Differenz bestimmen --> P-Anteil |
h = GasMischanteil - h; // vom Gas abziehen |
h -= (HoeheD * Parameter_Luftdruck_D)/8; // D-Anteil |
tmp_int = ((Mess_Integral_Hoch / 512) * (signed long) Parameter_Hoehe_ACC_Wirkung) / 32; |
if(tmp_int > 50) tmp_int = 50; |
else if(tmp_int < -50) tmp_int = -50; |
h -= tmp_int; |
hoehenregler = (hoehenregler*15 + h) / 16; |
if(hoehenregler < EE_Parameter.Hoehe_MinGas) // nicht unter MIN |
{ |
if(GasMischanteil >= EE_Parameter.Hoehe_MinGas) hoehenregler = EE_Parameter.Hoehe_MinGas; |
if(GasMischanteil < EE_Parameter.Hoehe_MinGas) hoehenregler = GasMischanteil; |
} |
if(hoehenregler > GasMischanteil) hoehenregler = GasMischanteil; // nicht mehr als Gas |
GasMischanteil = hoehenregler; |
} |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Mischer und PI-Regler |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
DebugOut.Analog[7] = GasMischanteil; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gier-Anteil |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define MUL_G 1.0 |
GierMischanteil = MesswertGier - sollGier; // Regler für Gier |
//GierMischanteil = 0; |
if(GierMischanteil > (GasMischanteil / 2)) GierMischanteil = GasMischanteil / 2; |
if(GierMischanteil < -(GasMischanteil / 2)) GierMischanteil = -(GasMischanteil / 2); |
if(GierMischanteil > ((MAX_GAS - GasMischanteil))) GierMischanteil = ((MAX_GAS - GasMischanteil)); |
if(GierMischanteil < -((MAX_GAS - GasMischanteil))) GierMischanteil = -((MAX_GAS - GasMischanteil)); |
if(GasMischanteil < 20) GierMischanteil = 0; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Nick-Achse |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
DiffNick = MesswertNick - (StickNick - GPS_Nick); // Differenz bestimmen |
if(IntegralFaktor) SummeNick += IntegralNick * IntegralFaktor - (StickNick - GPS_Nick); // I-Anteil bei Winkelregelung |
else SummeNick += DiffNick; // I-Anteil bei HH |
if(SummeNick > 0) SummeNick-= 2 ; else SummeNick += 2 ; |
if(SummeNick > 16000) SummeNick = 16000; |
if(SummeNick < -16000) SummeNick = -16000; |
pd_ergebnis = DiffNick + Ki * SummeNick; // PI-Regler für Nick |
// Motor Vorn |
tmp_int = ((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64; |
if(pd_ergebnis > tmp_int) pd_ergebnis = tmp_int; |
if(pd_ergebnis < -tmp_int) pd_ergebnis = -tmp_int; |
motorwert = GasMischanteil + pd_ergebnis + GierMischanteil; // Mischer |
if ((motorwert < 0)) motorwert = 0; |
else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
Motor_Vorne = motorwert; |
// Motor Heck |
motorwert = GasMischanteil - pd_ergebnis + GierMischanteil; |
if ((motorwert < 0)) motorwert = 0; |
else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
Motor_Hinten = motorwert; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Roll-Achse |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
DiffRoll = MesswertRoll - (StickRoll - GPS_Roll); // Differenz bestimmen |
if(IntegralFaktor) SummeRoll += IntegralRoll * IntegralFaktor - (StickRoll - GPS_Roll);// I-Anteil bei Winkelregelung |
else SummeRoll += DiffRoll; // I-Anteil bei HH |
if(SummeRoll > 0) SummeRoll-= 2 ; else SummeRoll += 2 ; |
if(SummeRoll > 16000) SummeRoll = 16000; |
if(SummeRoll < -16000) SummeRoll = -16000; |
pd_ergebnis = DiffRoll + Ki * SummeRoll; // PI-Regler für Roll |
tmp_int = ((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64; |
if(pd_ergebnis > tmp_int) pd_ergebnis = tmp_int; |
if(pd_ergebnis < -tmp_int) pd_ergebnis = -tmp_int; |
// Motor Links |
motorwert = GasMischanteil + pd_ergebnis - GierMischanteil; |
if ((motorwert < 0)) motorwert = 0; |
else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
Motor_Links = motorwert; |
// Motor Rechts |
motorwert = GasMischanteil - pd_ergebnis - GierMischanteil; |
if ((motorwert < 0)) motorwert = 0; |
else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
Motor_Rechts = motorwert; |
// +++++++++++++++++++++++++++++++++++++++++++++++ |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/fc.h |
---|
0,0 → 1,153 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
#ifndef _FC_H |
#define _FC_H |
extern volatile unsigned int I2CTimeout; |
extern unsigned char Sekunde,Minute; |
extern long Mess_IntegralNick,Mess_IntegralNick2; |
extern long Mess_IntegralRoll,Mess_IntegralRoll2; |
extern long Mess_Integral_Hoch; |
extern long Mess_Integral_Gier,Mess_Integral_Gier2; |
extern int KompassValue; |
extern int KompassStartwert; |
extern int KompassRichtung; |
extern long IntegralNick,IntegralNick2; |
extern long IntegralRoll,IntegralRoll2; |
extern long IntegralAccNick,IntegralAccRoll,IntegralAccZ; |
extern long Integral_Gier; |
extern int HoehenWert; |
extern int SollHoehe; |
extern int MesswertNick,MesswertRoll,MesswertGier; |
extern int AdNeutralNick,AdNeutralRoll,AdNeutralGier, Mittelwert_AccNick, Mittelwert_AccRoll,Mittelwert_AccHoch; |
extern long Umschlag180Nick, Umschlag180Roll; |
extern signed int ExternStickNick,ExternStickRoll,ExternStickGier; |
extern unsigned char Parameter_UserParam1,Parameter_UserParam2,Parameter_UserParam3,Parameter_UserParam4,Parameter_UserParam5,Parameter_UserParam6,Parameter_UserParam7,Parameter_UserParam8; |
void MotorRegler(void); |
void SendMotorData(void); |
void CalibrierMittelwert(void); |
void Mittelwert(void); |
void SetNeutral(void); |
void Piep(unsigned char Anzahl); |
extern void DefaultKonstanten(void); |
void DefaultKonstanten1(void); |
void DefaultKonstanten2(void); |
extern unsigned char h,m,s; |
extern volatile unsigned char Timeout ; |
extern volatile int DiffNick,DiffRoll; |
extern int Poti1, Poti2, Poti3, Poti4; |
extern volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count; |
extern unsigned char MotorWert[5]; |
extern volatile unsigned char SenderOkay; |
extern int StickNick,StickRoll,StickGier; |
extern char MotorenEin; |
extern void DefaultKonstanten1(void); |
extern void DefaultKonstanten2(void); |
extern void DefaultKonstanten3(void); |
struct acc_neutral_struct |
{ |
volatile int X; |
volatile int Y; |
volatile float Z; |
}; |
extern struct acc_neutral_struct acc_neutral; |
extern void calib_acc(void); |
struct mk_param_struct |
{ |
unsigned char Kanalbelegung[8]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3 |
unsigned char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv |
unsigned char Hoehe_MinGas; // Wert : 0-100 |
unsigned char Luftdruck_D; // Wert : 0-250 |
unsigned char MaxHoehe; // Wert : 0-32 |
unsigned char Hoehe_P; // Wert : 0-32 |
unsigned char Hoehe_Verstaerkung; // Wert : 0-50 |
unsigned char Hoehe_ACC_Wirkung; // Wert : 0-250 |
unsigned char Stick_P; // Wert : 1-6 |
unsigned char Stick_D; // Wert : 0-64 |
unsigned char Gier_P; // Wert : 1-20 |
unsigned char Gas_Min; // Wert : 0-32 |
unsigned char Gas_Max; // Wert : 33-250 |
unsigned char GyroAccFaktor; // Wert : 1-64 |
unsigned char KompassWirkung; // Wert : 0-32 |
unsigned char Gyro_P; // Wert : 10-250 |
unsigned char Gyro_I; // Wert : 0-250 |
unsigned char UnterspannungsWarnung; // Wert : 0-250 |
unsigned char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust |
unsigned char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen |
unsigned char UfoAusrichtung; // X oder + Formation |
unsigned char I_Faktor; // Wert : 0-250 |
unsigned char UserParam1; // Wert : 0-250 |
unsigned char UserParam2; // Wert : 0-250 |
unsigned char UserParam3; // Wert : 0-250 |
unsigned char UserParam4; // Wert : 0-250 |
unsigned char ServoNickControl; // Wert : 0-250 // Stellung des Servos |
unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
unsigned char ServoNickMin; // Wert : 0-250 // Anschlag |
unsigned char ServoNickMax; // Wert : 0-250 // Anschlag |
unsigned char ServoNickRefresh; // |
unsigned char LoopGasLimit; // Wert: 0-250 max. Gas während Looping |
unsigned char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag |
unsigned char LoopHysterese; // Wert: 0-250 Hysterese für Stickausschlag |
unsigned char AchsKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick koppelt (NickRollMitkopplung) |
unsigned char AchsGegenKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick Gegenkoppelt (NickRollGegenkopplung) |
unsigned char WinkelUmschlagNick; // Wert: 0-250 180°-Punkt |
unsigned char WinkelUmschlagRoll; // Wert: 0-250 180°-Punkt |
unsigned char GyroAccAbgleich; // 1/k (Koppel_ACC_Wirkung) |
unsigned char Driftkomp; |
unsigned char DynamicStability; |
unsigned char UserParam5; // Wert : 0-250 |
unsigned char UserParam6; // Wert : 0-250 |
unsigned char UserParam7; // Wert : 0-250 |
unsigned char UserParam8; // Wert : 0-250 |
//------------------------------------------------ |
unsigned char LoopConfig; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
unsigned char ServoNickCompInvert; // Wert : 0-250 0 oder 1 // WICHTIG!!! am Ende lassen |
unsigned char Reserved[4]; |
char Name[12]; |
}; |
/* |
unsigned char ServoNickMax; // Wert : 0-250 |
unsigned char ServoNickRefresh; // |
unsigned char LoopGasLimit; // Wert: 0-250 max. Gas während Looping |
unsigned char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag |
//------------------------------------------------ |
unsigned char LoopConfig; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
unsigned char ServoNickCompInvert; // Wert : 0-250 0 oder 1 // WICHTIG!!! am Ende lassen |
unsigned char Reserved[4]; |
char Name[12]; |
*/ |
extern struct mk_param_struct EE_Parameter; |
extern unsigned char Parameter_Luftdruck_D; |
extern unsigned char Parameter_MaxHoehe; |
extern unsigned char Parameter_Hoehe_P; |
extern unsigned char Parameter_Hoehe_ACC_Wirkung; |
extern unsigned char Parameter_KompassWirkung; |
extern unsigned char Parameter_Gyro_P; |
extern unsigned char Parameter_Gyro_I; |
extern unsigned char Parameter_Gier_P; |
extern unsigned char Parameter_ServoNickControl; |
extern unsigned char Parameter_AchsKopplung1; |
extern unsigned char Parameter_AchsGegenKopplung1; |
#endif //_FC_H |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/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><File path="eeprom.c"></File><File path="compass.c"></File><File path="compass.h"></File><File path="mymath.c"></File><File path="mymath.h"></File></Project> |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/flight.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="Flight-Ctrl" x="true"></e></ViewState></pd> |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/gps.h |
---|
0,0 → 1,14 |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Roll; |
void GPS_Neutral(void); |
void GPS_BerechneZielrichtung(void); |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/main.c |
---|
0,0 → 1,267 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + 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" |
// Reservierung im EEPROM |
unsigned char EEPromArray[10] EEMEM; |
struct mk_param_struct EEParameterArray[5] EEMEM; |
unsigned char PlatinenVersion = 10; |
// -- Parametersatz aus EEPROM lesen --- |
// number [0..5] |
void ReadParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if (number > 5) number = 5; |
number--; // Auf Index 0 bis 4 anpassen |
eeprom_read_block(buffer, &EEParameterArray[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; |
number--; // Auf Index 0 bis 4 anpassen |
eeprom_write_block(buffer, &EEParameterArray[number], length); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], number); // diesen Parametersatz als aktuell merken |
} |
unsigned char GetActiveParamSetNumber(void) |
{ |
unsigned char set; |
set = eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET]); |
if(set > 5) |
{ |
set = 2; |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], set); // diesen Parametersatz als aktuell merken |
} |
return(set); |
} |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
unsigned int timer; |
//unsigned int timer2 = 0; |
DDRB = 0x00; |
PORTB = 0x00; |
for(timer = 0; timer < 1000; timer++); // verzögern |
if(PINB & 0x01) PlatinenVersion = 11; else PlatinenVersion = 10; |
DDRC = 0x81; // SCL |
PORTC = 0xff; // Pullup SDA |
DDRB = 0x1B; // LEDs und Druckoffset |
PORTB = 0x01; // LED_Rot |
DDRD = 0x3E; // Speaker & TXD & J3 J4 J5 |
DDRD |=0x80; // J7 |
PORTD = 0xF7; // LED |
MCUSR &=~(1<<WDRF); |
WDTCSR |= (1<<WDCE)|(1<<WDE); |
WDTCSR = 0; |
beeptime = 2000; |
StickGier = 0; PPM_in[K_GAS] = 0;StickRoll = 0; StickNick = 0; |
ROT_OFF; |
Timer_Init(); |
UART_Init(); |
rc_sum_init(); |
ADC_Init(); |
i2c_init(); |
init_MM3(); |
sei(); |
VersionInfo.Hauptversion = VERSION_HAUPTVERSION; |
VersionInfo.Nebenversion = VERSION_NEBENVERSION; |
VersionInfo.PCKompatibel = VERSION_KOMPATIBEL; |
printf("\n\rFlightControl\n\rHardware:%d.%d\n\rSoftware:V%d.%d%c ",PlatinenVersion/10,PlatinenVersion%10, VERSION_HAUPTVERSION, VERSION_NEBENVERSION,VERSION_INDEX + 'a'); |
printf("\n\r=============================="); |
GRN_ON; |
#define EE_DATENREVISION 68 // wird angepasst, wenn sich die EEPROM-Daten geändert haben |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != EE_DATENREVISION) |
{ |
printf("\n\rInit. EEPROM: Generiere Default-Parameter..."); |
DefaultKonstanten1(); |
for (unsigned char i=0;i<6;i++) |
{ |
if(i==2) DefaultKonstanten2(); // Kamera |
if(i==3) DefaultKonstanten3(); // Beginner |
if(i>3) DefaultKonstanten2(); // Kamera |
WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], sizeof(struct mk_param_struct)); |
} |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], 3); // default-Setting |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], EE_DATENREVISION); |
calib_acc(); |
} |
ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], sizeof(struct mk_param_struct)); |
printf("\n\rBenutze Parametersatz %d", GetActiveParamSetNumber()); |
//kurze Wartezeit (sonst reagiert die "Kompass kalibrieren?"-Abfrage nicht |
timer = SetDelay(500); |
while(!CheckDelay(timer)); |
//Kompass kalibrieren? |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] > 100 && PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 100) |
{ |
printf("\n\rKalibriere Kompass"); |
calib_MM3(); |
} |
//Neutrallage kalibrieren? |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] > 100 && PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -100) |
{ |
printf("\n\rKalibriere Neutrallage"); |
calib_acc(); |
} |
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
printf("\n\rAbgleich Luftdrucksensor.."); |
timer = SetDelay(1000); |
SucheLuftruckOffset(); |
while (!CheckDelay(timer)); |
printf("OK\n\r"); |
} |
SetNeutral(); |
ROT_OFF; |
beeptime = 2000; |
DebugIn.Analog[1] = 1000; |
DebugIn.Digital[0] = 0x55; |
printf("\n\rSteuerung: "); |
if (EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) printf("HeadingHold"); |
else printf("Neutral"); |
printf("\n\n\r"); |
LcdClear(); |
I2CTimeout = 5000; |
while (1) |
{ |
if (UpdateMotor) // ReglerIntervall |
{ |
// SPI_TransmitByte(); |
UpdateMotor=0; |
//PORTD |= 0x08; |
MotorRegler(); |
//PORTD &= ~0x08; |
SendMotorData(); |
ROT_OFF; |
if(PcZugriff) PcZugriff--; |
else |
{ |
DubWiseKeys[0] = 0; |
DubWiseKeys[1] = 0; |
ExternStickNick = 0; |
ExternStickRoll = 0; |
ExternStickGier = 0; |
} |
if(SenderOkay) SenderOkay--; |
if(!I2CTimeout) |
{ |
I2CTimeout = 5; |
i2c_reset(); |
if((BeepMuster == 0xffff) && MotorenEin) |
{ |
beeptime = 10000; |
BeepMuster = 0x0080; |
} |
} |
else |
{ |
I2CTimeout--; |
ROT_OFF; |
} |
} |
if(SIO_DEBUG) |
{ |
DatenUebertragung(); |
BearbeiteRxDaten(); |
} |
else BearbeiteRxDaten(); |
if(CheckDelay(timer)) |
{ |
if(UBat < EE_Parameter.UnterspannungsWarnung) |
{ |
if(BeepMuster == 0xffff) |
{ |
beeptime = 6000; |
BeepMuster = 0x0300; |
} |
} |
// SPI_StartTransmitPacket(); |
timer = SetDelay(100); |
} |
} |
return (1); |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/main.h |
---|
0,0 → 1,96 |
#ifndef _MAIN_H |
#define _MAIN_H |
//Hier die Quarz Frequenz einstellen |
#if defined (__AVR_ATmega32__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
#endif |
#if defined (__AVR_ATmega644__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
//#define SYSCLK 16000000L //Quarz Frequenz in Hz |
#endif |
// neue Hardware |
#define ROT_OFF {if(PlatinenVersion == 10) PORTB &=~0x01; else PORTB |= 0x01;} |
#define ROT_ON {if(PlatinenVersion == 10) PORTB |= 0x01; else PORTB &=~0x01;} |
#define ROT_FLASH PORTB ^= 0x01 |
#define GRN_OFF PORTB &=~0x02 |
#define GRN_ON PORTB |= 0x02 |
#define GRN_FLASH PORTB ^= 0x02 |
#define F_CPU SYSCLK |
//#ifndef F_CPU |
//#error ################## F_CPU nicht definiert oder ungültig ############# |
//#endif |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define EEPROM_ADR_VALID 1 |
#define EEPROM_ADR_ACTIVE_SET 2 |
#define EEPROM_ADR_LAST_OFFSET 3 |
#define CFG_HOEHENREGELUNG 0x01 |
#define CFG_HOEHEN_SCHALTER 0x02 |
#define CFG_HEADING_HOLD 0x04 |
#define CFG_KOMPASS_AKTIV 0x08 |
#define CFG_KOMPASS_FIX 0x10 |
#define CFG_GPS_AKTIV 0x20 |
#define CFG_ACHSENKOPPLUNG_AKTIV 0x40 |
#define CFG_DREHRATEN_BEGRENZER 0x80 |
#define CFG_LOOP_OBEN 0x01 |
#define CFG_LOOP_UNTEN 0x02 |
#define CFG_LOOP_LINKS 0x04 |
#define CFG_LOOP_RECHTS 0x08 |
//#define SYSCLK |
//extern unsigned long SYSCLK; |
extern volatile unsigned char SenderOkay; |
extern unsigned char PlatinenVersion; |
void ReadParameterSet (unsigned char number, unsigned char *buffer, unsigned char length); |
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length); |
extern unsigned char GetActiveParamSetNumber(void); |
extern unsigned char EEPromArray[]; |
#include <stdlib.h> |
#include <string.h> |
#include <avr/io.h> |
#include <avr/pgmspace.h> |
#include <avr/interrupt.h> |
#include <avr/eeprom.h> |
#include <avr/boot.h> |
#include <avr/wdt.h> |
#include "old_macros.h" |
#include "_Settings.h" |
#include "printf_P.h" |
#include "timer0.h" |
#include "uart.h" |
#include "analog.h" |
#include "twimaster.h" |
#include "menu.h" |
#include "rc.h" |
#include "fc.h" |
#include "gps.h" |
#include "compass.h" |
#include "mymath.h" |
#ifndef EEMEM |
#define EEMEM __attribute__ ((section (".eeprom"))) |
#endif |
#define DEBUG_DISPLAY_INTERVALL 123 // in ms |
#define DELAY_US(x) ((unsigned int)( (x) * 1e-6 * F_CPU )) |
#endif //_MAIN_H |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/makefile |
---|
0,0 → 1,419 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega644 |
F_CPU = 20000000 |
#------------------------------------------------------------------- |
HAUPT_VERSION = 0 |
NEBEN_VERSION = 67 |
VERSION_INDEX = 6 |
VERSION_KOMPATIBEL = 7 # 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). |
ifeq ($(VERSION_INDEX), 0) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)a |
endif |
ifeq ($(VERSION_INDEX), 1) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)b |
endif |
ifeq ($(VERSION_INDEX), 2) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)c |
endif |
ifeq ($(VERSION_INDEX), 3) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)d |
endif |
ifeq ($(VERSION_INDEX), 4) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)e |
endif |
ifeq ($(VERSION_INDEX), 5) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)f |
endif |
ifeq ($(VERSION_INDEX), 6) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)g |
endif |
ifeq ($(VERSION_INDEX), 7) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)h |
endif |
# 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 |
SRC += compass.c mymath.c |
#spi.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 \ |
-mtiny-stack -mcall-prologues \ |
-Wall -Wstrict-prototypes \ |
-Wa,-adhlns=$(<:.c=.lst) \ |
$(patsubst %,-I%,$(EXTRAINCDIRS)) |
# Set a "language standard" compiler flag. |
# Unremark just one line below to set the language standard to use. |
# gnu99 = C99 + GNU extensions. See GCC manual for more information. |
#CFLAGS += -std=c89 |
#CFLAGS += -std=gnu89 |
#CFLAGS += -std=c99 |
CFLAGS += -std=gnu99 |
CFLAGS += -DVERSION_HAUPTVERSION=$(HAUPT_VERSION) -DVERSION_NEBENVERSION=$(NEBEN_VERSION) -DVERSION_KOMPATIBEL=$(VERSION_KOMPATIBEL) -DVERSION_INDEX=$(VERSION_INDEX) |
# Optional assembler flags. |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create listing |
# -gstabs: have the assembler create line number information; note that |
# for use in COFF files, additional information about filenames |
# and function names needs to be present in the assembler source |
# files -- see avr-libc docs [FIXME: not yet described there] |
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs |
# Optional linker flags. |
# -Wl,...: tell GCC to pass this to linker. |
# -Map: create map file |
# --cref: add cross reference to map file |
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref |
# Additional libraries |
# Minimalistic printf version |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min |
# Floating point printf version (requires -lm below) |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt |
# -lm = math library |
LDFLAGS += -lm |
##LDFLAGS += -T./linkerfile/avr5.x |
# Programming support using avrdude. Settings and variables. |
# Programming hardware: alf avr910 avrisp bascom bsd |
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 |
# |
# Type: avrdude -c ? |
# to get a full listing. |
# |
#AVRDUDE_PROGRAMMER = stk200 |
AVRDUDE_PROGRAMMER = dt006 |
#AVRDUDE_PROGRAMMER = ponyser |
#falls Ponyser ausgewählt wird, muss sich unsere avrdude-Configdatei im Bin-Verzeichnis des Compilers befinden |
#AVRDUDE_PORT = com1 # programmer connected to serial device |
AVRDUDE_PORT = lpt1 # programmer connected to parallel port |
#AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex |
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex $(FUSE_SETTINGS) |
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep |
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) |
# Uncomment the following if you want avrdude's erase cycle counter. |
# Note that this counter needs to be initialized first using -Yn, |
# see avrdude manual. |
#AVRDUDE_ERASE += -y |
# Uncomment the following if you do /not/ wish a verification to be |
# performed after programming the device. |
AVRDUDE_FLAGS += -V |
# Increase verbosity level. Please use this when submitting bug |
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> |
# to submit bug reports. |
#AVRDUDE_FLAGS += -v -v |
# --------------------------------------------------------------------------- |
# Define directories, if needed. |
DIRAVR = c:/winavr |
DIRAVRBIN = $(DIRAVR)/bin |
DIRAVRUTILS = $(DIRAVR)/utils/bin |
DIRINC = . |
DIRLIB = $(DIRAVR)/avr/lib |
# Define programs and commands. |
SHELL = sh |
CC = avr-gcc |
OBJCOPY = avr-objcopy |
OBJDUMP = avr-objdump |
SIZE = avr-size |
# Programming support using avrdude. |
AVRDUDE = avrdude |
REMOVE = rm -f |
COPY = cp |
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
ELFSIZE = $(SIZE) -A $(TARGET).elf |
# Define Messages |
# English |
MSG_ERRORS_NONE = Errors: none |
MSG_BEGIN = -------- begin -------- |
MSG_END = -------- end -------- |
MSG_SIZE_BEFORE = Size before: |
MSG_SIZE_AFTER = Size after: |
MSG_COFF = Converting to AVR COFF: |
MSG_EXTENDED_COFF = Converting to AVR Extended COFF: |
MSG_FLASH = Creating load file for Flash: |
MSG_EEPROM = Creating load file for EEPROM: |
MSG_EXTENDED_LISTING = Creating Extended Listing: |
MSG_SYMBOL_TABLE = Creating Symbol Table: |
MSG_LINKING = Linking: |
MSG_COMPILING = Compiling: |
MSG_ASSEMBLING = Assembling: |
MSG_CLEANING = Cleaning project: |
# Define all object files. |
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) |
# Define all listing files. |
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) |
# Combine all necessary flags and optional flags. |
# Add target processor to flags. |
#ALL_CFLAGS = -mmcu=$(MCU) -DF_CPU=$(F_CPU) -I. $(CFLAGS) |
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) |
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) |
# Default target. |
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
$(TARGET).lss $(TARGET).sym sizeafter finished end |
# Eye candy. |
# AVR Studio 3.x does not check make's exit code but relies on |
# the following magic strings to be generated by the compile job. |
begin: |
@echo |
@echo $(MSG_BEGIN) |
finished: |
@echo $(MSG_ERRORS_NONE) |
end: |
@echo $(MSG_END) |
@echo |
# Display size of file. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi |
# Display compiler version information. |
gccversion : |
@$(CC) --version |
# Convert ELF to COFF for use in debugging / simulating in |
# AVR Studio or VMLAB. |
COFFCONVERT=$(OBJCOPY) --debugging \ |
--change-section-address .data-0x800000 \ |
--change-section-address .bss-0x800000 \ |
--change-section-address .noinit-0x800000 \ |
--change-section-address .eeprom-0x810000 |
coff: $(TARGET).elf |
@echo |
@echo $(MSG_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof |
extcoff: $(TARGET).elf |
@echo |
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof |
# Program the device. |
program: $(TARGET).hex $(TARGET).eep |
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
# Create final output files (.hex, .eep) from ELF output file. |
%.hex: %.elf |
@echo |
@echo $(MSG_FLASH) $@ |
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ |
%.eep: %.elf |
@echo |
@echo $(MSG_EEPROM) $@ |
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ |
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@ |
# Create extended listing file from ELF output file. |
%.lss: %.elf |
@echo |
@echo $(MSG_EXTENDED_LISTING) $@ |
$(OBJDUMP) -h -S $< > $@ |
# Create a symbol table from ELF output file. |
%.sym: %.elf |
@echo |
@echo $(MSG_SYMBOL_TABLE) $@ |
avr-nm -n $< > $@ |
# Link: create ELF output file from object files. |
.SECONDARY : $(TARGET).elf |
.PRECIOUS : $(OBJ) |
%.elf: $(OBJ) |
@echo |
@echo $(MSG_LINKING) $@ |
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) |
# Compile: create object files from C source files. |
%.o : %.c |
@echo |
@echo $(MSG_COMPILING) $< |
$(CC) -c $(ALL_CFLAGS) $< -o $@ |
# Compile: create assembler files from C source files. |
%.s : %.c |
$(CC) -S $(ALL_CFLAGS) $< -o $@ |
# Assemble: create object files from assembler source files. |
%.o : %.S |
@echo |
@echo $(MSG_ASSEMBLING) $< |
$(CC) -c $(ALL_ASFLAGS) $< -o $@ |
# Target: clean project. |
clean: begin clean_list finished end |
clean_list : |
@echo |
@echo $(MSG_CLEANING) |
# $(REMOVE) $(TARGET).hex |
$(REMOVE) $(TARGET).eep |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).cof |
$(REMOVE) $(TARGET).elf |
$(REMOVE) $(TARGET).map |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).a90 |
$(REMOVE) $(TARGET).sym |
$(REMOVE) $(TARGET).lnk |
$(REMOVE) $(TARGET).lss |
$(REMOVE) $(OBJ) |
$(REMOVE) $(LST) |
$(REMOVE) $(SRC:.c=.s) |
$(REMOVE) $(SRC:.c=.d) |
# Automatically generate C source code dependencies. |
# (Code originally taken from the GNU make user manual and modified |
# (See README.txt Credits).) |
# |
# Note that this will work with sh (bash) and sed that is shipped with WinAVR |
# (see the SHELL variable defined above). |
# This may not work with other shells or other seds. |
# |
%.d: %.c |
set -e; $(CC) -MM $(ALL_CFLAGS) $< \ |
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ |
[ -s $@ ] || rm -f $@ |
# Remove the '-' if you want to see the dependency files generated. |
-include $(SRC:.c=.d) |
# Listing of phony targets. |
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \ |
clean clean_list program |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/menu.c |
---|
0,0 → 1,139 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + 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 = 12,MenuePunkt=0; |
if(RemoteTasten & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue; LcdClear(); RemotePollDisplayLine = -1; } |
if(RemoteTasten & KEY2) { MenuePunkt++; LcdClear(); RemotePollDisplayLine = -1;} |
if((RemoteTasten & KEY1) && (RemoteTasten & KEY2)) MenuePunkt = 0; |
LCD_printfxy(17,0,"[%i]",MenuePunkt); |
switch(MenuePunkt) |
{ |
case 0: |
LCD_printfxy(0,0,"++ MikroKopter ++"); |
LCD_printfxy(0,1,"HW:V%d.%d SW:%d.%d%c",PlatinenVersion/10,PlatinenVersion%10,VERSION_HAUPTVERSION, VERSION_NEBENVERSION,VERSION_INDEX+'a'); |
LCD_printfxy(0,2,"Setting: %d ",GetActiveParamSetNumber()); |
LCD_printfxy(0,3,"(c) Holger Buss"); |
// if(RemoteTasten & KEY3) TestInt--; |
// if(RemoteTasten & KEY4) TestInt++; |
break; |
case 1: |
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
LCD_printfxy(0,0,"Hoehe: %5i",HoehenWert); |
LCD_printfxy(0,1,"SollHoehe: %5i",SollHoehe); |
LCD_printfxy(0,2,"Luftdruck: %5i",MessLuftdruck); |
LCD_printfxy(0,3,"Off : %5i",DruckOffsetSetting); |
} |
else |
{ |
LCD_printfxy(0,1,"Keine "); |
LCD_printfxy(0,2,"Höhenregelung"); |
} |
break; |
case 2: |
LCD_printfxy(0,0,"akt. Lage"); |
LCD_printfxy(0,1,"Nick: %5i",IntegralNick/1024); |
LCD_printfxy(0,2,"Roll: %5i",IntegralRoll/1024); |
LCD_printfxy(0,3,"Kompass: %5i",KompassValue); |
break; |
case 3: |
LCD_printfxy(0,0,"K1:%4i K2:%4i ",PPM_in[1],PPM_in[2]); |
LCD_printfxy(0,1,"K3:%4i K4:%4i ",PPM_in[3],PPM_in[4]); |
LCD_printfxy(0,2,"K5:%4i K6:%4i ",PPM_in[5],PPM_in[6]); |
LCD_printfxy(0,3,"K7:%4i K8:%4i ",PPM_in[7],PPM_in[8]); |
break; |
case 4: |
LCD_printfxy(0,0,"Ni:%4i Ro:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_NICK]],PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]); |
LCD_printfxy(0,1,"Gs:%4i Gi:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_GAS]],PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]); |
LCD_printfxy(0,2,"P1:%4i P2:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]],PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]]); |
LCD_printfxy(0,3,"P3:%4i P4:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]],PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]]); |
break; |
case 5: |
LCD_printfxy(0,0,"Gyro - Sensor"); |
if(PlatinenVersion == 10) |
{ |
LCD_printfxy(0,1,"Nick %4i (%3i)",AdWertNick - AdNeutralNick, AdNeutralNick); |
LCD_printfxy(0,2,"Roll %4i (%3i)",AdWertRoll - AdNeutralRoll, AdNeutralRoll); |
LCD_printfxy(0,3,"Gier %4i (%3i)",MesswertGier, AdNeutralGier); |
} |
else |
{ |
LCD_printfxy(0,1,"Nick %4i (%3i)",AdWertNick - AdNeutralNick, AdNeutralNick/2); |
LCD_printfxy(0,2,"Roll %4i (%3i)",AdWertRoll - AdNeutralRoll, AdNeutralRoll/2); |
LCD_printfxy(0,3,"Gier %4i (%3i)",MesswertGier, AdNeutralGier/2); |
} |
break; |
case 6: |
LCD_printfxy(0,0,"ACC - Sensor"); |
LCD_printfxy(0,1,"Nick %4i (%3i)",AdWertAccNick,acc_neutral.X); |
LCD_printfxy(0,2,"Roll %4i (%3i)",AdWertAccRoll,acc_neutral.Y); |
LCD_printfxy(0,3,"Hoch %4i (%3i)",Mittelwert_AccHoch/*accumulate_AccHoch / messanzahl_AccHoch*/,(int)acc_neutral.Z); |
break; |
case 7: |
LCD_printfxy(0,1,"Spannung: %5i",UBat); |
LCD_printfxy(0,2,"Empf.Pegel:%5i",SenderOkay); |
break; |
case 8: |
LCD_printfxy(0,0,"Kompass "); |
LCD_printfxy(0,1,"Richtung: %5i",KompassRichtung); |
LCD_printfxy(0,2,"Messwert: %5i",KompassValue); |
LCD_printfxy(0,3,"Start: %5i",KompassStartwert); |
break; |
case 9: |
LCD_printfxy(0,0,"Poti1: %3i",Poti1); |
LCD_printfxy(0,1,"Poti2: %3i",Poti2); |
LCD_printfxy(0,2,"Poti3: %3i",Poti3); |
LCD_printfxy(0,3,"Poti4: %3i",Poti4); |
break; |
case 10: |
LCD_printfxy(0,0,"Servo " ); |
LCD_printfxy(0,1,"Setpoint %3i",Parameter_ServoNickControl); |
LCD_printfxy(0,2,"Stellung: %3i",ServoValue); |
LCD_printfxy(0,3,"Range:%3i-%3i",EE_Parameter.ServoNickMin,EE_Parameter.ServoNickMax); |
break; |
case 11: |
LCD_printfxy(0,0,"MM3 Off"); |
LCD_printfxy(0,1,"X_Offset: %3i",MM3_calib.X_off); |
LCD_printfxy(0,2,"Y_Offset: %3i",MM3_calib.Y_off); |
LCD_printfxy(0,3,"Z_Offset: %3i",MM3_calib.Z_off); |
break; |
case 12: |
LCD_printfxy(0,0,"MM3 Range"); |
LCD_printfxy(0,1,"X_Range: %4i",MM3_calib.X_range); |
LCD_printfxy(0,2,"Y_Range: %4i",MM3_calib.Y_range); |
LCD_printfxy(0,3,"Z_Range: %4i",MM3_calib.Z_range); |
break; |
default: MaxMenue = MenuePunkt - 1; |
MenuePunkt = 0; |
break; |
} |
RemoteTasten = 0; |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/menu.h |
---|
0,0 → 1,6 |
extern void Menu(void); |
extern void LcdClear(void); |
extern char DisplayBuff[80]; |
extern unsigned char DispPtr; |
extern unsigned char RemoteTasten; |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/mymath.c |
---|
0,0 → 1,110 |
/* |
Copyright 2007, Niklas Nold |
This program (files math.c and math.h) is free software; you can redistribute it and/or modify |
it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; |
either version 3 of the License, or (at your option) any later version. |
This program 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
Please note: All the other files for the project "Mikrokopter" by H. Buss are under the license (license_buss.txt) published by www.mikrokopter.de |
*/ |
#include "main.h" |
const uint8_t pgm_atan[346] PROGMEM = {0,1,2,3,4,4,5,6,7,8,9,10,11,11,12,13,14,15,16,17,17,18,19,20,21,21,22,23,24,24,25,26,27,27,28,29,29,30,31,31,32,33,33,34,35,35,36,36,37,37,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,45,46,46,47,47,48,48,48,49,49,50,50,50,51,51,51,52,52,52,53,53,53,54,54,54,55,55,55,55,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,60,61,61,61,61,62,62,62,62,62,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,66,67,67,67,67,67,67,67,68,68,68,68,68,68,68,68,69,69,69,69,69,69,69,69,69,70,70,70,70,70,70,70,70,70,71,71,71,71,71,71,71,71,71,71,71,72,72,72,72,72,72,72,72,72,72,72,73,73,73,73,73,73,73,73,73,73,73,73,73,73,74,74,74,74,74,74,74,74,74,74,74,74,74,74,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79}; |
//############################################################################ |
// Arkustangens2 im Gradmaß |
signed int atan2_i(long x, long y) |
//############################################################################ |
{ |
int i,angle; |
int8_t m; |
if (!x && !y) return 0; //atan2 = 0 für x und y = 0 |
if (y < 0) m=-1; |
else m=1; |
if (!x) return (90*m); // atan2 = 90° für x = 0 |
i = abs((y*64) / x); // Berechne i für die Lookup table (Schrittweite atan(x) ist 0,015625 -> y *64) |
if (i<346) angle = pgm_read_byte(&pgm_atan[i]); // Lookup für 1° bis 79° |
else if (i>7334) angle = 90; // Grenzwert ist 90° |
else if (i>2444) angle = 89; // 89° bis 80° über Wertebereiche |
else if (i>1465) angle = 88; |
else if (i>1046) angle = 87; |
else if (i>813) angle = 86; |
else if (i>664) angle = 85; |
else if (i>561) angle = 84; |
else if (i>486) angle = 83; |
else if (i>428) angle = 82; |
else if (i>382) angle = 81; |
else angle = 80; // (i>345) |
if (x > 0) return (angle*m); // Quadrant I und IV |
else if ((x < 0) && (m > 0)) return (-angle + 180); // Quadrant II |
else return (angle - 180); // x < 0 && y < 0 Quadrant III |
} |
const uint16_t pgm_sinus_i[91] PROGMEM = {0,18,36,54,71,89,107,125,143,160,178,195,213,230,248,265,282,299,316,333,350,367,384,400,416,433,449,465,481,496,512,527,543,558,573,587,602,616,630,644,658,672,685,698,711,724,737,749,761,773,784,796,807,818,828,839,849,859,868,878,887,896,904,912,920,928,935,943,949,956,962,968,974,979,984,989,994,998,1002,1005,1008,1011,1014,1016,1018,1020,1022,1023,1023,1024,1024}; |
//############################################################################ |
// Kosinusfunktion im Gradmaß |
signed int cos_i(signed int winkel) |
//############################################################################ |
{ |
return (sin_i(90-winkel)); |
} |
//############################################################################ |
// Sinusfunktion im Gradmaß |
signed int sin_i(signed int winkel) |
//############################################################################ |
{ |
short int m,n; |
signed int sinus; |
if (winkel < 0) |
{ |
m = -1; |
winkel = abs(winkel); |
} |
else m = +1; |
// Quadranten auswerten |
if (winkel <= 90) n=1; |
else if ((winkel > 90) && (winkel <= 180)) {winkel = 180 - winkel; n = 1;} |
else if ((winkel > 180) && (winkel <= 270)) {winkel = winkel - 180; n = -1;} |
else {winkel = 360 - winkel; n = -1;} //if ((winkel > 270) && (winkel <= 360)) |
sinus = pgm_read_word(&pgm_sinus_i[winkel]); |
return (sinus*m*n); |
} |
/* |
const uint8_t pgm_asin[201] PROGMEM = {0,0,1,1,1,1,2,2,2,3,3,3,3,4,4,4,5,5,5,5,6,6,6,7,7,7,7,8,8,8,9,9,9,9,10,10,10,11,11,11,12,12,12,12,13,13,13,14,14,14,14,15,15,15,16,16,16,17,17,17,17,18,18,18,19,19,19,20,20,20,20,21,21,21,22,22,22,23,23,23,24,24,24,25,25,25,25,26,26,26,27,27,27,28,28,28,29,29,29,30,30,30,31,31,31,32,32,32,33,33,33,34,34,34,35,35,35,36,36,37,37,37,38,38,38,39,39,39,40,40,41,41,41,42,42,42,43,43,44,44,44,45,45,46,46,46,47,47,48,48,49,49,49,50,50,51,51,52,52,53,53,54,54,55,55,56,56,57,57,58,58,59,59,60,60,61,62,62,63,64,64,65,66,66,67,68,68,69,70,71,72,73,74,75,76,77,79,80,82,84,90}; |
//############################################################################ |
// Akurssinusfunktion im Gradmaß |
int8_t asin_i(signed int i) |
//############################################################################ |
{ |
signed char m; |
if (i < 0) {m=-1;i=abs(i);} |
else m=1; |
i %= 200; |
return (pgm_read_byte(&pgm_asin[i]) * m); |
} |
*/ |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/mymath.h |
---|
0,0 → 1,8 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
extern int atan2_i(long x, long y); |
extern signed int cos_i(signed int winkel); |
extern signed int sin_i(signed int winkel); |
//extern int8_t asin_i(signed int i); |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/old_macros.h |
---|
0,0 → 1,47 |
/* |
For backwards compatibility only. |
Ingo Busker ingo@mikrocontroller.com |
*/ |
#ifndef cbi |
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) |
#endif |
#ifndef sbi |
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) |
#endif |
#ifndef inb |
#define inb(sfr) _SFR_BYTE(sfr) |
#endif |
#ifndef outb |
#define outb(sfr, val) (_SFR_BYTE(sfr) = (val)) |
#endif |
#ifndef inw |
#define inw(sfr) _SFR_WORD(sfr) |
#endif |
#ifndef outw |
#define outw(sfr, val) (_SFR_WORD(sfr) = (val)) |
#endif |
#ifndef outp |
#define outp(val, sfr) outb(sfr, val) |
#endif |
#ifndef inp |
#define inp(sfr) inb(sfr) |
#endif |
#ifndef BV |
#define BV(bit) _BV(bit) |
#endif |
#ifndef PRG_RDB |
#define PRG_RDB pgm_read_byte |
#endif |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/printf_P.c |
---|
0,0 → 1,480 |
// Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist nicht von der Lizenz für den MikroKopter-Teil unterstellt |
/* |
Copyright (C) 1993 Free Software Foundation |
This file is part of the GNU IO Library. This library is free |
software; you can redistribute it and/or modify it under the |
terms of the GNU General Public License as published by the |
Free Software Foundation; either version 2, or (at your option) |
any later version. |
This library is distributed in the hope that it will be useful, |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
GNU General Public License for more details. |
You should have received a copy of the GNU General Public License |
along with this library; see the file COPYING. If not, write to the Free |
Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
As a special exception, if you link this library with files |
compiled with a GNU compiler to produce an executable, this does not cause |
the resulting executable to be covered by the GNU General Public License. |
This exception does not however invalidate any other reasons why |
the executable file might be covered by the GNU General Public License. */ |
/* |
* Copyright (c) 1990 Regents of the University of California. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. [rescinded 22 July 1999] |
* 4. Neither the name of the University nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
/****************************************************************************** |
This file is a patched version of printf called _printf_P |
It is made to work with avr-gcc for Atmel AVR MCUs. |
There are some differences from standard printf: |
1. There is no floating point support (with fp the code is about 8K!) |
2. Return type is void |
3. Format string must be in program memory (by using macro printf this is |
done automaticaly) |
4. %n is not implemented (just remove the comment around it if you need it) |
5. If LIGHTPRINTF is defined, the code is about 550 bytes smaller and the |
folowing specifiers are disabled : |
space # * . - + p s o O |
6. A function void uart_sendchar(char c) is used for output. The UART must |
be initialized before using printf. |
Alexander Popov |
sasho@vip.orbitel.bg |
******************************************************************************/ |
/* |
* Actual printf innards. |
* |
* This code is large and complicated... |
*/ |
#include <string.h> |
#ifdef __STDC__ |
#include <stdarg.h> |
#else |
#include <varargs.h> |
#endif |
#include "main.h" |
//#define LIGHTPRINTF |
char PrintZiel; |
char Putchar(char zeichen) |
{ |
if(PrintZiel == OUT_LCD) { DisplayBuff[DispPtr++] = zeichen; return(1);} |
else return(uart_putchar(zeichen)); |
} |
void PRINT(const char * ptr, unsigned int len) |
{ |
for(;len;len--) Putchar(*ptr++); |
} |
void PRINTP(const char * ptr, unsigned int len) |
{ |
for(;len;len--) Putchar(pgm_read_byte(ptr++)); |
} |
void PAD_SP(signed char howmany) |
{ |
for(;howmany>0;howmany--) Putchar(' '); |
} |
void PAD_0(signed char howmany) |
{ |
for(;howmany>0;howmany--) Putchar('0'); |
} |
#define BUF 40 |
/* |
* Macros for converting digits to letters and vice versa |
*/ |
#define to_digit(c) ((c) - '0') |
#define is_digit(c) ((c)<='9' && (c)>='0') |
#define to_char(n) ((n) + '0') |
/* |
* Flags used during conversion. |
*/ |
#define LONGINT 0x01 /* long integer */ |
#define LONGDBL 0x02 /* long double; unimplemented */ |
#define SHORTINT 0x04 /* short integer */ |
#define ALT 0x08 /* alternate form */ |
#define LADJUST 0x10 /* left adjustment */ |
#define ZEROPAD 0x20 /* zero (as opposed to blank) pad */ |
#define HEXPREFIX 0x40 /* add 0x or 0X prefix */ |
void _printf_P (char ziel,char const *fmt0, ...) /* Works with string from FLASH */ |
{ |
va_list ap; |
register const char *fmt; /* format string */ |
register char ch; /* character from fmt */ |
register int n; /* handy integer (short term usage) */ |
register char *cp; /* handy char pointer (short term usage) */ |
const char *fmark; /* for remembering a place in fmt */ |
register unsigned char flags; /* flags as above */ |
signed char width; /* width from format (%8d), or 0 */ |
signed char prec; /* precision from format (%.3d), or -1 */ |
char sign; /* sign prefix (' ', '+', '-', or \0) */ |
unsigned long _ulong=0; /* integer arguments %[diouxX] */ |
#define OCT 8 |
#define DEC 10 |
#define HEX 16 |
unsigned char base; /* base for [diouxX] conversion */ |
signed char dprec; /* a copy of prec if [diouxX], 0 otherwise */ |
signed char dpad; /* extra 0 padding needed for integers */ |
signed char fieldsz; /* field size expanded by sign, dpad etc */ |
/* The initialization of 'size' is to suppress a warning that |
'size' might be used unitialized. It seems gcc can't |
quite grok this spaghetti code ... */ |
signed char size = 0; /* size of converted field or string */ |
char buf[BUF]; /* space for %c, %[diouxX], %[eEfgG] */ |
char ox[2]; /* space for 0x hex-prefix */ |
PrintZiel = ziel; // bestimmt, LCD oder UART |
va_start(ap, fmt0); |
fmt = fmt0; |
/* |
* Scan the format for conversions (`%' character). |
*/ |
for (;;) { |
for (fmark = fmt; (ch = pgm_read_byte(fmt)) != '\0' && ch != '%'; fmt++) |
/* void */; |
if ((n = fmt - fmark) != 0) { |
PRINTP(fmark, n); |
} |
if (ch == '\0') |
goto done; |
fmt++; /* skip over '%' */ |
flags = 0; |
dprec = 0; |
width = 0; |
prec = -1; |
sign = '\0'; |
rflag: ch = PRG_RDB(fmt++); |
reswitch: |
#ifdef LIGHTPRINTF |
if (ch=='o' || ch=='u' || (ch|0x20)=='x') { |
#else |
if (ch=='u' || (ch|0x20)=='x') { |
#endif |
if (flags&LONGINT) { |
_ulong=va_arg(ap, unsigned long); |
} else { |
register unsigned int _d; |
_d=va_arg(ap, unsigned int); |
_ulong = flags&SHORTINT ? (unsigned long)(unsigned short)_d : (unsigned long)_d; |
} |
} |
#ifndef LIGHTPRINTF |
if(ch==' ') { |
/* |
* ``If the space and + flags both appear, the space |
* flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
if (!sign) |
sign = ' '; |
goto rflag; |
} else if (ch=='#') { |
flags |= ALT; |
goto rflag; |
} else if (ch=='*'||ch=='-') { |
if (ch=='*') { |
/* |
* ``A negative field width argument is taken as a |
* - flag followed by a positive field width.'' |
* -- ANSI X3J11 |
* They don't exclude field widths read from args. |
*/ |
if ((width = va_arg(ap, int)) >= 0) |
goto rflag; |
width = -width; |
} |
flags |= LADJUST; |
flags &= ~ZEROPAD; /* '-' disables '0' */ |
goto rflag; |
} else if (ch=='+') { |
sign = '+'; |
goto rflag; |
} else if (ch=='.') { |
if ((ch = PRG_RDB(fmt++)) == '*') { |
n = va_arg(ap, int); |
prec = n < 0 ? -1 : n; |
goto rflag; |
} |
n = 0; |
while (is_digit(ch)) { |
n = n*10 + to_digit(ch); |
ch = PRG_RDB(fmt++); |
} |
prec = n < 0 ? -1 : n; |
goto reswitch; |
} else |
#endif /* LIGHTPRINTF */ |
if (ch=='0') { |
/* |
* ``Note that 0 is taken as a flag, not as the |
* beginning of a field width.'' |
* -- ANSI X3J11 |
*/ |
if (!(flags & LADJUST)) |
flags |= ZEROPAD; /* '-' disables '0' */ |
goto rflag; |
} else if (ch>='1' && ch<='9') { |
n = 0; |
do { |
n = 10 * n + to_digit(ch); |
ch = PRG_RDB(fmt++); |
} while (is_digit(ch)); |
width = n; |
goto reswitch; |
} else if (ch=='h') { |
flags |= SHORTINT; |
goto rflag; |
} else if (ch=='l') { |
flags |= LONGINT; |
goto rflag; |
} else if (ch=='c') { |
*(cp = buf) = va_arg(ap, int); |
size = 1; |
sign = '\0'; |
} else if (ch=='D'||ch=='d'||ch=='i') { |
if(ch=='D') |
flags |= LONGINT; |
if (flags&LONGINT) { |
_ulong=va_arg(ap, long); |
} else { |
register int _d; |
_d=va_arg(ap, int); |
_ulong = flags&SHORTINT ? (long)(short)_d : (long)_d; |
} |
if ((long)_ulong < 0) { |
_ulong = -_ulong; |
sign = '-'; |
} |
base = DEC; |
goto number; |
} else |
/* |
if (ch=='n') { |
if (flags & LONGINT) |
*va_arg(ap, long *) = ret; |
else if (flags & SHORTINT) |
*va_arg(ap, short *) = ret; |
else |
*va_arg(ap, int *) = ret; |
continue; // no output |
} else |
*/ |
#ifndef LIGHTPRINTF |
if (ch=='O'||ch=='o') { |
if (ch=='O') |
flags |= LONGINT; |
base = OCT; |
goto nosign; |
} else if (ch=='p') { |
/* |
* ``The argument shall be a pointer to void. The |
* value of the pointer is converted to a sequence |
* of printable characters, in an implementation- |
* defined manner.'' |
* -- ANSI X3J11 |
*/ |
/* NOSTRICT */ |
_ulong = (unsigned int)va_arg(ap, void *); |
base = HEX; |
flags |= HEXPREFIX; |
ch = 'x'; |
goto nosign; |
} else if (ch=='s') { // print a string from RAM |
if ((cp = va_arg(ap, char *)) == NULL) { |
cp=buf; |
cp[0] = '('; |
cp[1] = 'n'; |
cp[2] = 'u'; |
cp[4] = cp[3] = 'l'; |
cp[5] = ')'; |
cp[6] = '\0'; |
} |
if (prec >= 0) { |
/* |
* can't use strlen; can only look for the |
* NUL in the first `prec' characters, and |
* strlen() will go further. |
*/ |
char *p = (char*)memchr(cp, 0, prec); |
if (p != NULL) { |
size = p - cp; |
if (size > prec) |
size = prec; |
} else |
size = prec; |
} else |
size = strlen(cp); |
sign = '\0'; |
} else |
#endif /* LIGHTPRINTF */ |
if(ch=='U'||ch=='u') { |
if (ch=='U') |
flags |= LONGINT; |
base = DEC; |
goto nosign; |
} else if (ch=='X'||ch=='x') { |
base = HEX; |
/* leading 0x/X only if non-zero */ |
if (flags & ALT && _ulong != 0) |
flags |= HEXPREFIX; |
/* unsigned conversions */ |
nosign: sign = '\0'; |
/* |
* ``... diouXx conversions ... if a precision is |
* specified, the 0 flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
number: if ((dprec = prec) >= 0) |
flags &= ~ZEROPAD; |
/* |
* ``The result of converting a zero value with an |
* explicit precision of zero is no characters.'' |
* -- ANSI X3J11 |
*/ |
cp = buf + BUF; |
if (_ulong != 0 || prec != 0) { |
register unsigned char _d,notlastdigit; |
do { |
notlastdigit=(_ulong>=base); |
_d = _ulong % base; |
if (_d<10) { |
_d+='0'; |
} else { |
_d+='a'-10; |
if (ch=='X') _d&=~0x20; |
} |
*--cp=_d; |
_ulong /= base; |
} while (notlastdigit); |
#ifndef LIGHTPRINTF |
// handle octal leading 0 |
if (base==OCT && flags & ALT && *cp != '0') |
*--cp = '0'; |
#endif |
} |
size = buf + BUF - cp; |
} else { //default |
/* "%?" prints ?, unless ? is NUL */ |
if (ch == '\0') |
goto done; |
/* pretend it was %c with argument ch */ |
cp = buf; |
*cp = ch; |
size = 1; |
sign = '\0'; |
} |
/* |
* All reasonable formats wind up here. At this point, |
* `cp' points to a string which (if not flags&LADJUST) |
* should be padded out to `width' places. If |
* flags&ZEROPAD, it should first be prefixed by any |
* sign or other prefix; otherwise, it should be blank |
* padded before the prefix is emitted. After any |
* left-hand padding and prefixing, emit zeroes |
* required by a decimal [diouxX] precision, then print |
* the string proper, then emit zeroes required by any |
* leftover floating precision; finally, if LADJUST, |
* pad with blanks. |
*/ |
/* |
* compute actual size, so we know how much to pad. |
*/ |
fieldsz = size; |
dpad = dprec - size; |
if (dpad < 0) |
dpad = 0; |
if (sign) |
fieldsz++; |
else if (flags & HEXPREFIX) |
fieldsz += 2; |
fieldsz += dpad; |
/* right-adjusting blank padding */ |
if ((flags & (LADJUST|ZEROPAD)) == 0) |
PAD_SP(width - fieldsz); |
/* prefix */ |
if (sign) { |
PRINT(&sign, 1); |
} else if (flags & HEXPREFIX) { |
ox[0] = '0'; |
ox[1] = ch; |
PRINT(ox, 2); |
} |
/* right-adjusting zero padding */ |
if ((flags & (LADJUST|ZEROPAD)) == ZEROPAD) |
PAD_0(width - fieldsz); |
/* leading zeroes from decimal precision */ |
PAD_0(dpad); |
/* the string or number proper */ |
PRINT(cp, size); |
/* left-adjusting padding (always blank) */ |
if (flags & LADJUST) |
PAD_SP(width - fieldsz); |
} |
done: |
va_end(ap); |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/printf_P.h |
---|
0,0 → 1,19 |
#ifndef _PRINTF_P_H_ |
#define _PRINTF_P_H_ |
#include <avr/pgmspace.h> |
#define OUT_V24 0 |
#define OUT_LCD 1 |
void _printf_P (char, char const *fmt0, ...); |
extern char PrintZiel; |
#define printf_P(format, args...) _printf_P(OUT_V24,format , ## args) |
#define printf(format, args...) _printf_P(OUT_V24,PSTR(format) , ## args) |
#define LCD_printfxy(x,y,format, args...) { DispPtr = y * 20 + x; _printf_P(OUT_LCD,PSTR(format) , ## args);} |
#define LCD_printf(format, args...) { _printf_P(OUT_LCD,PSTR(format) , ## args);} |
#endif |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/rc.c |
---|
0,0 → 1,84 |
/*####################################################################################### |
Decodieren eines RC Summen Signals |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "rc.h" |
#include "main.h" |
volatile int PPM_in[11]; |
volatile int PPM_diff[11]; // das diffenzierte Stick-Signal |
volatile unsigned char NewPpmData = 1; |
//############################################################################ |
//zum decodieren des PPM-Signals wird Timer1 mit seiner Input |
//Capture Funktion benutzt: |
void rc_sum_init (void) |
//############################################################################ |
{ |
TCCR1B=(1<<CS11)|(1<<CS10)|(1<<ICES1)|(1<<ICNC1);//|(1 << WGM12); //timer1 prescale 64 |
// PWM |
//TCCR1A = (1 << COM1B1) | (1 << WGM11) | (1 << WGM10); |
//TCCR1B |= (1 << WGM12); |
//OCR1B = 55; |
TIMSK1 |= _BV(ICIE1); |
AdNeutralGier = 0; |
AdNeutralRoll = 0; |
AdNeutralNick = 0; |
return; |
} |
//############################################################################ |
//Diese Routine startet und inizialisiert den Timer für RC |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int AltICR=0; |
signed int signal = 0,tmp; |
static int index; |
signal = (unsigned int) ICR1 - AltICR; |
AltICR = ICR1; |
//Syncronisationspause? |
// if((signal > (int) Parameter_UserParam2 * 10) && (signal < 8000)) |
if((signal > 1100) && (signal < 8000)) |
{ |
if(index >= 4) NewPpmData = 0; // Null bedeutet: Neue Daten |
index = 1; |
} |
else |
{ |
if(index < 10) |
{ |
if((signal > 250) && (signal < 687)) |
{ |
signal -= 466; |
// Stabiles Signal |
if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10;} |
tmp = (3 * (PPM_in[index]) + signal) / 4; |
// if(tmp > signal+1) tmp--; else |
// if(tmp < signal-1) tmp++; |
PPM_diff[index] = tmp - PPM_in[index]; |
PPM_in[index] = tmp; |
} |
index++; |
if(index == 5) PORTD |= 0x20; else PORTD &= ~0x20; // Servosignal an J3 anlegen |
if(index == 6) PORTD |= 0x10; else PORTD &= ~0x10; // Servosignal an J4 anlegen |
//if(index == 7) PORTD |= 0x08; else PORTD &= ~0x08; // Servosignal an J5 anlegen |
} |
} |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/rc.h |
---|
0,0 → 1,29 |
/*####################################################################################### |
Derkodieren eines RC Summen Signals |
#######################################################################################*/ |
#ifndef _RC_H |
#define _RC_H |
#if defined (__AVR_ATmega32__) |
#define TIMER_TEILER CK64 |
#define TIMER_RELOAD_VALUE 250 |
#endif |
#if defined (__AVR_ATmega644__) |
//#define TIMER_TEILER CK64 |
#define TIMER_RELOAD_VALUE 250 |
//#define TIMER_TEILER CK256 // bei 20MHz |
//#define TIMER_RELOAD_VALUE -78 // bei 20MHz |
#endif |
#define GAS PPM_in[2] |
extern void rc_sum_init (void); |
extern volatile int PPM_in[11]; |
extern volatile int PPM_diff[11]; // das diffenzierte Stick-Signal |
extern volatile unsigned char NewPpmData; |
#endif //_RC_H |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/timer0.c |
---|
0,0 → 1,145 |
#include "main.h" |
volatile unsigned int CountMilliseconds = 0; |
volatile unsigned char UpdateMotor = 0; |
volatile unsigned int beeptime = 0; |
unsigned int BeepMuster = 0xffff; |
int ServoValue = 0; |
enum { |
STOP = 0, |
CK = 1, |
CK8 = 2, |
CK64 = 3, |
CK256 = 4, |
CK1024 = 5, |
T0_FALLING_EDGE = 6, |
T0_RISING_EDGE = 7 |
}; |
SIGNAL (SIG_OVERFLOW0) // 9,8kHz |
{ |
static unsigned char cnt_1ms = 1,cnt = 0; |
unsigned char pieper_ein = 0; |
// TCNT0 -= 250;//TIMER_RELOAD_VALUE; |
if(!cnt--) |
{ |
cnt = 10; |
cnt_1ms++; |
cnt_1ms %= 2; |
if(!cnt_1ms) UpdateMotor = 1; |
CountMilliseconds++; |
} |
if(beeptime > 1) |
{ |
beeptime--; |
if(beeptime & BeepMuster) |
{ |
pieper_ein = 1; |
} |
else pieper_ein = 0; |
} |
else |
{ |
pieper_ein = 0; |
BeepMuster = 0xffff; |
} |
if(pieper_ein) |
{ |
if(PlatinenVersion == 10) PORTD |= (1<<2); // Speaker an PORTD.2 |
else PORTC |= (1<<7); // Speaker an PORTC.7 |
} |
else |
{ |
if(PlatinenVersion == 10) PORTD &= ~(1<<2); |
else PORTC &= ~(1<<7); |
} |
if(EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV) timer0_MM3(); // Kompass auslesen |
} |
void Timer_Init(void) |
{ |
TCCR0B = CK8; |
TCCR0A = (1<<COM0A1)|(1<<COM0B1)|3;//fast PWM |
OCR0A = 0; |
OCR0B = 120; |
TCNT0 = (unsigned char)-TIMER_RELOAD_VALUE; // reload |
//OCR1 = 0x00; |
TCCR2A=(1<<COM2A1)|(1<<COM2A0)|3; |
TCCR2B=(0<<CS20)|(1<<CS21)|(1<<CS22); |
// 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)); |
} |
void Delay_ms_Mess(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)) ANALOG_ON; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Servo ansteuern |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(SIG_OUTPUT_COMPARE2A) |
{ |
static unsigned char timer = 10; |
if(!timer--) |
{ |
TCCR2A=(1<<COM2A1)|(0<<COM2A0)|3; |
ServoValue = Parameter_ServoNickControl; |
if(EE_Parameter.ServoNickCompInvert & 0x01) ServoValue += ((long) EE_Parameter.ServoNickComp * (IntegralNick / 128)) / 512; |
else ServoValue -= ((long) EE_Parameter.ServoNickComp * (IntegralNick / 128)) / 512; |
if(ServoValue < EE_Parameter.ServoNickMin) ServoValue = EE_Parameter.ServoNickMin; |
else if(ServoValue > EE_Parameter.ServoNickMax) ServoValue = EE_Parameter.ServoNickMax; |
OCR2A = ServoValue;// + 75; |
timer = EE_Parameter.ServoNickRefresh; |
} |
else |
{ |
TCCR2A =3; |
PORTD&=~0x80; |
} |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/timer0.h |
---|
0,0 → 1,15 |
#define TIMER_TEILER CK8 |
#define TIMER_RELOAD_VALUE 250 |
void Timer_Init(void); |
void Delay_ms(unsigned int); |
void Delay_ms_Mess(unsigned int); |
unsigned int SetDelay (unsigned int t); |
char CheckDelay (unsigned int t); |
extern volatile unsigned int CountMilliseconds; |
extern volatile unsigned char UpdateMotor; |
extern volatile unsigned int beeptime; |
extern int ServoValue; |
extern unsigned int BeepMuster; |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/twimaster.c |
---|
0,0 → 1,134 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
unsigned char twi_state = 0; |
unsigned char motor = 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 |
void i2c_start(void) |
//############################################################################ |
{ |
TWCR = (1<<TWSTA) | (1<<TWEN) | (1<<TWINT) | (1<<TWIE); |
} |
//############################################################################ |
//Stop I2C |
void i2c_stop(void) |
//############################################################################ |
{ |
TWCR = (1<<TWEN) | (1<<TWSTO) | (1<<TWINT); |
} |
void i2c_reset(void) |
//############################################################################ |
{ |
i2c_stop(); |
twi_state = 0; |
motor = TWDR; |
motor = 0; |
TWCR = 0x80; |
TWAMR = 0; |
TWAR = 0; |
TWDR = 0; |
TWSR = 0; |
TWBR = 0; |
i2c_init(); |
i2c_start(); |
i2c_write_byte(0); |
} |
//############################################################################ |
//Write to I2C |
void i2c_write_byte(char byte) |
//############################################################################ |
{ |
TWDR = byte; |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE); |
} |
//############################################################################ |
// I2C receive byte and send ACK |
void i2c_receive_byte(void) |
//############################################################################ |
{ |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE) | (1<<TWEA); |
} |
//############################################################################ |
// I2C receive last byte and send NOT ACK |
void i2c_receive_last_byte(void) |
//############################################################################ |
{ |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE); |
} |
//############################################################################ |
//Start I2C |
SIGNAL (TWI_vect) |
//############################################################################ |
{ |
static unsigned char motorread = 0; |
switch (twi_state++) // First i2c_start from SendMotorData() |
{ |
// Master Transmit |
case 0: // Address Slave SL+W |
i2c_write_byte(0x52+(motor*2)); |
break; |
case 1: // Send Data |
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: // Repeat case 0+1 for all Slaves |
if (motor < 4) twi_state = 0; |
i2c_start(); // Repeated start -> switch salve or switch Master Transmit -> Master Receive |
break; |
// Master Receive |
case 3: // Address Slave SL+R |
i2c_write_byte(0x53+(motorread*2)); |
break; |
case 4: //1. Byte vom Motor übertragen |
i2c_receive_byte(); |
break; |
case 5: // 1. Byte lesen und 2. Byte übertragen |
motor_rx[motorread] = TWDR; |
i2c_receive_last_byte(); |
break; |
case 6: //2. Byte lesen |
motor_rx[motorread+4] = TWDR; |
motorread++; |
if (motorread > 3) motorread=0; |
default: |
i2c_stop(); |
twi_state = 0; |
I2CTimeout = 10; |
motor = 0; |
} |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/twimaster.h |
---|
0,0 → 1,33 |
/*############################################################################ |
############################################################################*/ |
#ifndef _I2C_MASTER_H |
#define _I2C_MASTER_H |
//############################################################################ |
// I2C Konstanten |
#define SCL_CLOCK 200000L |
#define I2C_TIMEOUT 30000 |
#define I2C_START 0x08 |
#define I2C_REPEATED_START 0x10 |
#define I2C_TX_SLA_ACK 0x18 |
#define I2C_TX_DATA_ACK 0x28 |
#define I2C_RX_SLA_ACK 0x40 |
#define I2C_RX_DATA_ACK 0x50 |
//############################################################################ |
extern unsigned char twi_state; |
extern unsigned char motor; |
extern unsigned char motorread; |
extern unsigned char motor_rx[8]; |
void i2c_reset(void); |
extern void i2c_init (void); // I2C initialisieren |
extern void i2c_start (void); // Start I2C |
extern void i2c_stop (void); // Stop I2C |
extern void i2c_write_byte (char byte); // 1 Byte schreiben |
extern void i2c_reset(void); |
#endif |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/uart.c |
---|
0,0 → 1,392 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "uart.h" |
unsigned char DebugGetAnforderung = 0,DebugDisplayAnforderung = 0,DebugDataAnforderung = 0,GetVersionAnforderung = 0; |
//unsigned volatile char SioTmp = 0; |
unsigned char SendeBuffer[MAX_SENDE_BUFF]; |
unsigned char RxdBuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NMEABuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NeuerDatensatzEmpfangen = 0; |
unsigned volatile char NeueKoordinateEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned volatile char CntCrcError = 0; |
unsigned volatile char AnzahlEmpfangsBytes = 0; |
unsigned volatile char PC_DebugTimeout = 0; |
unsigned char RemotePollDisplayLine = 0; |
unsigned char NurKanalAnforderung = 0; |
unsigned char DebugTextAnforderung = 255; |
unsigned char PcZugriff = 100; |
unsigned char MotorTest[4] = {0,0,0,0}; |
unsigned char DubWiseKeys[3] = {0,0,0}; |
unsigned char MeineSlaveAdresse; |
struct str_DebugOut DebugOut; |
struct str_Debug DebugIn; |
struct str_VersionInfo VersionInfo; |
int Debug_Timer; |
const unsigned char ANALOG_TEXT[32][16] = |
{ |
//1234567890123456 |
"IntegralNick ", //0 |
"IntegralRoll ", |
"AccNick ", |
"AccRoll ", |
"GyroGier ", |
"HoehenWert ", //5 |
"AccZ ", |
"Gas ", |
"KompassValue ", |
"Spannung ", |
"Empfang ", //10 |
"Analog11 ", |
"Motor_Vorne ", |
"Motor_Hinten ", |
"Motor_Links ", |
"Motor_Rechts ", //15 |
"Acc_Z ", |
"MittelAccNick ", |
"MittelAccRoll ", |
"IntegralErrNick ", |
"IntegralErrRoll ", //20 |
"MittelIntNick ", |
"MittelIntRoll ", |
"NeutralNick ", |
"RollOffset ", |
"IntRoll*Faktor ", //25 |
"Analog26 ", |
"DirektAusglRoll ", |
"MesswertRoll ", |
"AusgleichRoll ", |
"I-LageRoll ", //30 |
"StickRoll " |
}; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Sende-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_TX) |
{ |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!UebertragungAbgeschlossen) |
{ |
ptr++; // die [0] wurde schon gesendet |
tmp_tx = SendeBuffer[ptr]; |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
{ |
ptr = 0; |
UebertragungAbgeschlossen = 1; |
} |
UDR = tmp_tx; |
} |
else ptr = 0; |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung, incl. CRC-Auswertung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
static unsigned int crc; |
unsigned char crc1,crc2; |
static unsigned char buf_ptr = 0; |
//unsigned char CrcOkay /*= 0 Initialisierung nicht notwendig */; |
unsigned char SioTmp /* = 0 Initialisierung nicht notwendig */; |
SioTmp = UDR; |
if(buf_ptr == 0) |
{ |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) buf_ptr = 1; // Startzeichen und Daten schon verarbeitet |
RxdBuffer[0] = SioTmp; |
crc = SioTmp; |
} |
#if 0 |
else if ((buf_ptr == 1) // Adresse auswerten |
{ |
RxdBuffer[buf_ptr++] = SioTmp; |
crc += SioTmp; |
} |
#endif |
else if (/*(buf_ptr > 0) && */(buf_ptr < MAX_EMPFANGS_BUFF)) |
{ // Eingangsdaten sammeln |
if(SioTmp != '\r') |
{ |
RxdBuffer[buf_ptr++] = SioTmp; |
crc += SioTmp; |
} |
else |
{ |
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])) |
{ |
if(!NeuerDatensatzEmpfangen) // Datensatz schon verarbeitet |
{ |
NeuerDatensatzEmpfangen = 1; |
AnzahlEmpfangsBytes = buf_ptr; |
RxdBuffer[buf_ptr] = '\r'; |
if(RxdBuffer[2] == 'R') wdt_enable(WDTO_250MS); // Reset-Commando |
} |
} |
else {CntCrcError++;} |
buf_ptr = 0; |
} |
} |
else |
{ |
buf_ptr = 0; |
} |
} |
// -------------------------------------------------------------------------- |
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 'a':// Texte der Analogwerte |
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes); |
DebugTextAnforderung = tmp_char_arr2[0]; |
break; |
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]; |
if(tmp_char_arr2[1] == 255) NurKanalAnforderung = 1; else NurKanalAnforderung = 0; // keine Displaydaten |
DebugDisplayAnforderung = 1; |
break; |
case 't':// Motortest |
Decode64((unsigned char *) &MotorTest[0],sizeof(MotorTest),3,AnzahlEmpfangsBytes); |
break; |
case 'k':// Keys von DubWise |
Decode64((unsigned char *) &DubWiseKeys[0],sizeof(DubWiseKeys),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], sizeof(struct mk_param_struct)); |
SendOutData('L' + tmp_char_arr2[0] -1,MeineSlaveAdresse,(unsigned char *) &EE_Parameter.Kanalbelegung[0],sizeof(struct mk_param_struct)); |
} |
else |
SendOutData('L' + GetActiveParamSetNumber()-1,MeineSlaveAdresse,(unsigned char *) &EE_Parameter.Kanalbelegung[0],sizeof(struct mk_param_struct)); |
break; |
case 'l': |
case 'm': |
case 'n': |
case 'o': |
case 'p': // Parametersatz speichern |
Decode64((unsigned char *) &EE_Parameter.Kanalbelegung[0],sizeof(struct mk_param_struct),3,AnzahlEmpfangsBytes); |
WriteParameterSet(RxdBuffer[2] - 'l' + 1, (unsigned char *) &EE_Parameter.Kanalbelegung[0], sizeof(struct mk_param_struct)); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], RxdBuffer[2] - 'l' + 1); // aktiven Datensatz merken |
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L; |
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L; |
Piep(GetActiveParamSetNumber()); |
break; |
} |
// DebugOut.AnzahlZyklen = Debug_Timer_Intervall; |
NeuerDatensatzEmpfangen = 0; |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
if (c == '\n') |
uart_putchar('\r'); |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
//Ausgabe des Zeichens |
UDR = c; |
return (0); |
} |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
//if (ProgramLocation == IN_RAM) Buffer[pos] = wert; |
// else eeprom_write_byte(&EE_Buffer[pos], wert); |
// Buffer[pos] = wert; |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); |
// TX-Interrupt Freigabe |
UCSRB |= (1<<TXCIE); |
//Teiler wird gesetzt |
UBRR=(SYSCLK / (BAUD_RATE * 8L) - 1); |
//UBRR = 33; |
//öffnet einen Kanal für printf (STDOUT) |
//fdevopen (uart_putchar, 0); |
//sbi(PORTD,4); |
Debug_Timer = SetDelay(200); |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
if(!UebertragungAbgeschlossen) return; |
if(DebugGetAnforderung && UebertragungAbgeschlossen) // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
{ |
SendOutData('G',MeineSlaveAdresse,(unsigned char *) &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(DebugTextAnforderung != 255) // Texte für die Analogdaten |
{ |
SendOutData('A',DebugTextAnforderung + '0',(unsigned char *) ANALOG_TEXT[DebugTextAnforderung],16); |
DebugTextAnforderung = 255; |
} |
if(DebugDisplayAnforderung && UebertragungAbgeschlossen) |
{ |
Menu(); |
DebugDisplayAnforderung = 0; |
if(++RemotePollDisplayLine == 4 || NurKanalAnforderung) |
{ |
SendOutData('4',0,(unsigned char *)&PPM_in,sizeof(PPM_in)); // DisplayZeile übertragen |
RemotePollDisplayLine = -1; |
} |
else SendOutData('0' + RemotePollDisplayLine,0,(unsigned char *)&DisplayBuff[20 * RemotePollDisplayLine],20); // DisplayZeile übertragen |
} |
if(GetVersionAnforderung && UebertragungAbgeschlossen) |
{ |
SendOutData('V',MeineSlaveAdresse,(unsigned char *) &VersionInfo,sizeof(VersionInfo)); |
GetVersionAnforderung = 0; |
} |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/uart.h |
---|
0,0 → 1,101 |
#ifndef _UART_H |
#define _UART_H |
#define MAX_SENDE_BUFF 150 |
#define MAX_EMPFANGS_BUFF 150 |
#define DUB_KEY_UP 4 |
#define DUB_KEY_DOWN 8 |
#define DUB_KEY_RIGHT 32 |
#define DUB_KEY_LEFT 16 |
#define DUB_KEY_FIRE 64 |
void BearbeiteRxDaten(void); |
extern unsigned char DebugGetAnforderung; |
extern unsigned char SendeBuffer[MAX_SENDE_BUFF]; |
extern unsigned char RxdBuffer[MAX_EMPFANGS_BUFF]; |
extern unsigned volatile char UebertragungAbgeschlossen; |
extern unsigned volatile char PC_DebugTimeout; |
extern unsigned volatile char NeueKoordinateEmpfangen; |
extern unsigned char MeineSlaveAdresse; |
extern unsigned char PcZugriff; |
extern unsigned char RemotePollDisplayLine; |
extern int Debug_Timer; |
extern void UART_Init (void); |
extern int uart_putchar (char c); |
extern void boot_program_page (uint32_t page, uint8_t *buf); |
extern void DatenUebertragung(void); |
extern void DecodeNMEA(void); |
extern void BearbeiteRxDaten(void); |
extern unsigned char MotorTest[4]; |
extern unsigned char DubWiseKeys[3]; |
struct str_DebugOut |
{ |
unsigned char Digital[2]; |
unsigned int Analog[32]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
struct str_Debug |
{ |
unsigned char Digital[2]; |
unsigned char RemoteTasten; |
unsigned int Analog[4]; |
}; |
extern struct str_Debug DebugIn; |
struct str_VersionInfo |
{ |
unsigned char Hauptversion; |
unsigned char Nebenversion; |
unsigned char PCKompatibel; |
unsigned char Rserved[7]; |
}; |
extern struct str_VersionInfo VersionInfo; |
//Die Baud_Rate der Seriellen Schnittstelle ist 9600 Baud |
//#define BAUD_RATE 9600 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 14400 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 28800 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 38400 //Baud Rate für die Serielle Schnittstelle |
#define BAUD_RATE 57600 //Baud Rate für die Serielle Schnittstelle |
//Anpassen der seriellen Schnittstellen Register wenn ein ATMega128 benutzt wird |
#if defined (__AVR_ATmega128__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICRB |
#endif |
#if defined (__AVR_ATmega32__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega644__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICR0B |
# define TXEN TXEN0 |
# define RXEN RXEN0 |
# define RXCIE RXCIE0 |
# define TXCIE TXCIE0 |
# define U2X U2X0 |
# define UCSRB UCSR0B |
# define UDRE UDRE0 |
# define INT_VEC_RX SIG_USART_RECV |
# define INT_VEC_TX SIG_USART_TRANS |
#endif |
#endif //_UART_H |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/trunc/version.txt |
---|
0,0 → 1,107 |
------- |
V0.53 27.04.2007 H.Buss |
- erste öffentliche Version |
V0.53b 29.04.2007 H.Buss |
- der FAKTOR_I war versehentlich auf Null, dann liegt der MikroKopter nicht so hart in der Luft |
V0.53c 29.04.2007 H.Buss |
- es gib ein Menü, in dem die Werte der Kanäle nach Nick, Roll, Gas,... sortiert sind. |
Die angezeigten Werte waren nicht die Werte der Funke |
V0.54 01.05.2007 H.Buss |
- die Paramtersätze können jetzt vor dem Start ausgewählt werden |
Dazu wird beim Kalibrieren der Messwerte (Gashebel oben links) der Nick-Rollhebel abgefragt: |
2 3 4 |
1 x 5 |
- - - |
Bedeutet: Nick-Rollhebel Links Mitte = Setting:1 Links Oben = Setting:2 usw. |
- der Faktor_I für den Hauptregler ist hinzugekommen. Im Heading-Hold-Modus sollte er vergössert werden, was Stabilität bringt |
V0.55 14.05.2007 H.Buss |
- es können nun Servos an J3,J4,J5 mit den Kanälen 5-7 gesteuert werden |
V0.56 14.05.2007 H.Buss |
- es gab Probleme mit Funken, die mehr als 8 Kanäle haben, wenn mehrere Kanäle dann auf Null waren |
- Funken, die nicht bis +-120 aussteuern können, sollten jetzt auch gehen |
V0.57 24.05.2007 H.Buss |
- Der Höhenregler kann nun auch mittels Schalter bedient werden |
- Bug im Gier-Algorithmus behoben; Schnelles Gieren fürhrte dazu, dass der MK zu weit gedreht hat |
- Kompass-Einfluss dämpfen bei Neigung |
- Man kann zwischen Kompass FIX (Richtung beim Kalibrieren) und Variabel (einstellbar per Gier) wählen |
- Der Motortest vom Kopter-Tool geht jetzt |
- Man kann den Parametersätzen einen Namen geben |
- Das Kamerasetting ist unter Setting 2 defaultmässig integriert |
V0.58 30.05.2007 H.Buss |
- Der Höhenregler-Algorithmus wird nun umgangen, wenn der Höhenreglerschalter aus ist |
V0.60 17.08.2007 H.Buss |
- "Schwindel-Bug" behoben |
- Die Poti-Werte werden jetzt auf Unterlauf (<0) überprüft |
- Poti4 zugefügt |
- Es werden jetzt 8 Kanäle ausgewertet |
- Kamera-Servo (an J7) |
- Die Settings müssen überschrieben werden |
V0.61 - V0.63 H.Buss 27.09.2007 |
- Poti 4 und Kanal 8 werden im Menü angezeigt |
- ein paar Kleinigkeiten bei den DefaultKonstanten2 bereinigt |
- Analog.c: Aktuell_ax korrigiert |
- auf 32 Debug-Kanäle erweitert |
- Loopings sind jetzt möglich und einzeln im KopterTool freischaltbar |
- leichte Anpassungen im Gier - Geschwindigkeit und Drift |
- die Hardwareversion V1.1 wird erkannt und das Programm stellt sich auf die geänderte Gyroverstärkung und die geänderten Portpins ein |
- die Software startet nach dem Einschalten schneller, weil der Luftdruckoffset schneller gefunden wird |
- die PPM-Ausgänge liegen wieder an den Pins an |
- Details an der Sensordatenverarbeitung -> es fliegt sich geringfügig anders |
- der MK ist bei wenig Gas nicht mehr so giftig -> soll das Landen vereinfachen |
- I2C-Bus läuft jetzt sicher nach einer Störung wieder an |
- Sticksignale werden präziser ausgewertet |
- Stick-Kanäle werden ans Kopter-Tool übertragen |
- Es muss die Version V1.47 des Kopter-Tool verwendet werden |
- Die Settings werden auf Default zurückgesetzt |
- am Piepen kann man die Fehlerart unterscheiden |
1. einzelnes Piepen beim Einschalten und Kalibrieren |
2. langsames Intervall mindestens 1 Sek -> Empfangsausfall |
3. schnelleres Intervall mindestens 1 Sek -> Akku |
4. sehr schnelles Intervall mindestens 1 Sek -> Kommunikation zu den Reglern gestört |
V0.64 H.Buss 30.09.2007 |
- beim Gieren wurden die Achsen nicht hart genug geregelt |
V0.65a H.Buss 15.10.2007 |
- Integral im Mischer wieder integriert |
- Feinabstimmung im ACC/Gyro Abgleich -> 1/32 & 100 |
- ACC/Gyro Abgleich auch bei HH |
V0.66a H.Buss 3.11.2007 |
- Messwertverarbeitung aus dem Analog-Interrupt entfernt |
- Analogmessung hängt jetzt am FC-Timing |
- Looping-Stick-Hysterese eingebaut |
- Looping-180°-Umschlag einstellbar |
- Achsenkopplung: Gierbewegung verkoppelt Nick und Roll |
- Lageregelung nach ACC-Sensor verbessert |
- zusätzlicher I-Anteil in der Lageregelung verbessert die Neutrallage |
- Gyrodriftkompensation überarbeitet |
- Bug in der Gier-Stick-Berechnung behoben |
- Gyro-Messung auf 1kHz beschleunigt |
V0.67a H.Buss 16.11.2007 |
- der Hauptregler-I-Anteil wirkt jetzt nur noch auf den Winkel (ausser im HH-Mode) |
- Gyro-Acc-Abgleich jetzt wieder in jedem Zyklus |
- Feinabstimmung |
- Beim HH-Modus gab es noch Bugs |
V0.67e H.Buss 29.11.2007 |
- Parameter: Dynamic Stability und Driftfaktor eingeführt |
- Die Namen der Analogwerte werden jetzt zum Koptertool übertragen |
- Kompatibilität zum Koptertool erhöht |
V0.67f H.Buss 04.12.2007 |
- Giersteuerwert im Mischer auf Gas/2 begrenzt |
- Die Analogwerte des ACC-Sensors können dauerhaft im EEPROM gespeichert werden |
- Das Integral des Hauptreglers wird jetzt linear entladen und nicht mehr proportional |