/branches/BL-Ctrl/BLMC.c |
---|
0,0 → 1,196 |
/*############################################################################ |
+ Regler für Brushless-Motoren |
+ ATMEGA8 mit 8MHz |
+ (c) 01.2007 Holger Buss |
+ Nur für den privaten Gebrauch |
+ Keine Garantie auf Fehlerfreiheit |
+ Kommerzielle Nutzung nur mit meiner Zustimmung |
+ Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
+ www.mikrocontroller.com |
############################################################################*/ |
#include "main.h" |
volatile unsigned char Phase = 0,ShadowTCCR1A = 0; |
volatile unsigned char CompFreigabeTimer = 100; |
volatile unsigned char CompInterruptFreigabe = 0; |
//############################################################################ |
// |
SIGNAL(SIG_OVERFLOW2) |
//############################################################################ |
{ |
} |
//############################################################################ |
// + Interruptroutine |
// + Wird durch den Analogkomperator ausgelöst |
// + Dadurch wird das Kommutieren erzeugt |
SIGNAL(SIG_COMPARATOR) |
//############################################################################ |
{ |
unsigned char sense = 0; |
do |
{ |
if(SENSE_H) sense = 1; else sense = 0; |
switch(Phase) |
{ |
case 0: |
STEUER_A_H; |
if(sense) |
{ |
STEUER_C_L; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_FALLING_INT; |
SENSE_B; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_L; |
} |
break; |
case 1: |
STEUER_C_L; |
if(!sense) |
{ |
STEUER_B_H; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_A; |
SENSE_RISING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_A_H; |
} |
break; |
case 2: |
STEUER_B_H; |
if(sense) |
{ |
STEUER_A_L; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_C; |
SENSE_FALLING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_C_L; |
} |
break; |
case 3: |
STEUER_A_L; |
if(!sense) |
{ |
STEUER_C_H; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_B; |
SENSE_RISING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_H; |
} |
break; |
case 4: |
STEUER_C_H; |
if(sense) |
{ |
STEUER_B_L; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_A; |
SENSE_FALLING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_A_L; |
} |
break; |
case 5: |
STEUER_B_L; |
if(!sense) |
{ |
STEUER_A_H; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_C; |
SENSE_RISING_INT; |
Phase = 0; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_C_H; |
} |
break; |
} |
} |
while((SENSE_L && sense) || (SENSE_H && !sense)); |
ZeitZumAdWandeln = 0; |
} |
//############################################################################ |
// |
void Manuell(void) |
//############################################################################ |
{ |
switch(Phase) |
{ |
case 0: |
STEUER_A_H; |
STEUER_B_L; |
SENSE_C; |
SENSE_RISING_INT; |
break; |
case 1: |
STEUER_A_H; |
STEUER_C_L; |
SENSE_B; |
SENSE_FALLING_INT; |
break; |
case 2: |
STEUER_B_H; |
STEUER_C_L; |
SENSE_A; |
SENSE_RISING_INT; |
break; |
case 3: |
STEUER_B_H; |
STEUER_A_L; |
SENSE_C; |
SENSE_FALLING_INT; |
break; |
case 4: |
STEUER_C_H; |
STEUER_A_L; |
SENSE_B; |
SENSE_RISING_INT; |
break; |
case 5: |
STEUER_C_H; |
STEUER_B_L; |
SENSE_A; |
SENSE_FALLING_INT; |
break; |
} |
} |
/branches/BL-Ctrl/BLMC.h |
---|
0,0 → 1,55 |
/*############################################################################ |
############################################################################*/ |
#ifndef BLMC_H_ |
#define BLMC_H_ |
extern volatile unsigned char Phase; |
extern volatile unsigned char ShadowTCCR1A; |
extern volatile unsigned char CompInterruptFreigabe; |
void Blc(void); |
void Manuell(void); |
#ifdef _32KHZ |
#define PWM_C_ON {TCCR1A = 0xA1; TCCR2 = 0x49; DDRB = 0x0A;} |
#define PWM_B_ON {TCCR1A = 0xA1; TCCR2 = 0x49; DDRB = 0x0C;} |
#define PWM_A_ON {TCCR1A = 0xA1; TCCR2 = 0x69; DDRB = 0x08;} |
#define PWM_OFF {TCCR1A = 0x01; TCCR2 = 0x49; PORTC &= ~0x0E;} |
#endif |
#ifdef _16KHZ |
#define PWM_C_ON {TCCR1A = 0xA2; TCCR2 = 0x41; DDRB = 0x0A;} |
#define PWM_B_ON {TCCR1A = 0xA2; TCCR2 = 0x41; DDRB = 0x0C;} |
#define PWM_A_ON {TCCR1A = 0xA2; TCCR2 = 0x61; DDRB = 0x08;} |
#define PWM_OFF {TCCR1A = 0x02; TCCR2 = 0x41; PORTC &= ~0x0E;} |
#endif |
#define STEUER_A_H {PWM_A_ON} |
#define STEUER_B_H {PWM_B_ON} |
#define STEUER_C_H {PWM_C_ON} |
#define STEUER_A_L {PORTD &= ~0x30; PORTD |= 0x08;} |
#define STEUER_B_L {PORTD &= ~0x28; PORTD |= 0x10;} |
#define STEUER_C_L {PORTD &= ~0x18; PORTD |= 0x20;} |
#define STEUER_OFF {PORTD &= ~0x38; PWM_OFF;} |
#define SENSE_A ADMUX = 0; |
#define SENSE_B ADMUX = 1; |
#define SENSE_C ADMUX = 2; |
#define ClrSENSE ACSR |= 0x10 |
#define SENSE ((ACSR & 0x10)) |
#define SENSE_L (!(ACSR & 0x20)) |
#define SENSE_H ((ACSR & 0x20)) |
#define ENABLE_SENSE_INT {CompInterruptFreigabe = 1;ACSR |= 0x0A; } |
#define DISABLE_SENSE_INT {CompInterruptFreigabe = 0; ACSR &= ~0x08; } |
#define SENSE_FALLING_INT ACSR &= ~0x01 |
#define SENSE_RISING_INT ACSR |= 0x03 |
#define SENSE_TOGGLE_INT ACSR &= ~0x03 |
#endif //BLMC_H_ |
/branches/BL-Ctrl/BL_Ctrl.pnproj |
---|
0,0 → 1,0 |
<Project name="avr_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="timer0.c"></File><File path="timer0.h"></File><File path="analog.h"></File><File path="analog.c"></File><File path="PPM_Decode.c"></File><File path="PPM_Decode.h"></File><File path="twislave.c"></File><File path="twislave.h"></File><File path="BLMC.c"></File><File path="BLMC.h"></File></Project> |
/branches/BL-Ctrl/BL_Ctrl.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="avr_ctrl" x="true"></e></ViewState></pd> |
/branches/BL-Ctrl/BrushLess-Ctrl_8kHz_PWM_V0_31_1.hex |
---|
0,0 → 1,292 |
:1000000012C073C52BC02AC0D5C5D9C427C026C00D |
:10001000C5C402C423C005C321C0D2C21FC01EC0B4 |
:1000200036C677C51BC011241FBECFE5D4E0DEBFA6 |
:10003000CDBF10E0A0E6B0E0EEE1F2E102C0059035 |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92A339B107E1F73CD1E0C8D1CF20917F |
:10006000700080916400821710F4AB9A282F809161 |
:100070007200909173008338910560F01BBC1ABC2C |
:1000800019BC18BC13BCAB9A019790937300809372 |
:1000900072000895822F9927880F991F9BBD8ABDF2 |
:1000A00099BD88BD23BD089582E08FBD81E485BDE3 |
:1000B00085B3817F85BB89E08EBD089592B7980F87 |
:1000C00082B7891B87FDFCCF0895809178009091BD |
:1000D0007900892B09F04EC080917A00882371F055 |
:1000E000909186008FEF989FC001112468EC70E01A |
:1000F00044D8709385006093840044C0809191003F |
:10010000882359F120918E0030918F0041E02D32EB |
:10011000340730F4293C310540F42B30310538F4F4 |
:1001200010928500109284002CC028EC30E08CEFF7 |
:1001300090E0AC01249FC001259F900D349F900D4D |
:100140001124885D994064EB70E017D86D5F7F4F94 |
:10015000709385006093840014C080918400909116 |
:100160008500009729F00197909385008093840083 |
:10017000AB9A08C08091880399279093850080935B |
:100180008400AB9880918400909185008F3F910509 |
:1001900039F030F08FEF90E09093850080938400E9 |
:1001A0008091840099270895809172009091730046 |
:1001B00090937803809377038091750099279093AB |
:1001C0007A038093790380918200909183009093C9 |
:1001D0007C0380937B0380918E0090918F0090939D |
:1001E0007E0380937D030895AF92BF92CF92DF92FA |
:1001F000EF92FF920F931F93CF93DF93182F1092DC |
:100200009900439885E090E090937100809370008E |
:1002100026DFDAD488EC90E05FD3C12FDD27D093BE |
:100220007100C09370004CE2A42E41E0B42EC12CAA |
:10023000D12CEE24FF2487010EC080916600882314 |
:1002400011F4C8D101C0B9D284E638DF0894E11CAA |
:10025000F11C011D111DEA14FB040C051D0569F7B5 |
:10026000C601B5012FE030E040E050E09AD7A21A75 |
:10027000B30AC40AD50A0894A108B108C108D10874 |
:1002800089E1A816B104C104D104C0F09DD48091C5 |
:1002900097008F5F809397008091970066E061D709 |
:1002A0009093970034D3D0937100C0937000D7DE41 |
:1002B000449BBFCF82B3805882BBBBCFDF91CF912D |
:1002C0001F910F91FF90EF90DF90CF90BF90AF9074 |
:1002D0000895AF92BF92CF92DF92EF92FF920F9369 |
:1002E0001F93CF93DF9388E084BB85BB8AEB81BBF0 |
:1002F00080E882BB8EE087BB81E388BB78D2CFD217 |
:10030000789486E990E0E8D297988AEF90E0E4D27A |
:10031000C0E0D0E02196C130D10549F4979A86E932 |
:1003200090E0DAD297988AEF90E0D6D2F3CF86E9C0 |
:1003300090E0D2D297988AEF90E0CED2CE0101968B |
:10034000059744F384EF91E0C7D251D2ADDE80E54A |
:10035000DBD317D385E690E0ABD286E690E0A8D257 |
:1003600087E690E0A5D2EC018EEF90E0A1D25C018F |
:100370008DEE93E09DD28C018EEE93E099D26C01CC |
:10038000CE019FD28823E1F3979A109271001092C8 |
:10039000700065DE88E080BF81E087B98AE090E088 |
:1003A00087D2EC0181E090E090937A038093790307 |
:1003B00010928F0010928E00EE2487DE9927909382 |
:1003C000710080937000809197008E1551F010920B |
:1003D00063001092620082E390E06AD2EC01E09048 |
:1003E00097008091700090917100892BC9F4109250 |
:1003F0007F0010926200C80164D28823D9F0109265 |
:100400009900439881E08093630082B3877C82BB2C |
:1004100082E08FBD81E485BD85B3817F85BB0EC041 |
:1004200080916300882319F081E080937F008CED38 |
:1004300095E03ED280916300882321F010927100F4 |
:10044000109270000CDE809162008F5F80936200DA |
:10045000813009F0B2CF809163008111979AC50174 |
:1004600030D2882339F182E390E022D25C0180917E |
:100470007500482F55272091720030917300421764 |
:10048000530710F48F5F04C02417350718F4815008 |
:10049000809375008091750090916400823428F0FB |
:1004A000915090936400AB9A05C09F3F19F09F5FF5 |
:1004B00090936400C80105D2882309F18AE090E096 |
:1004C000F7D18C012091800030918100C901880F03 |
:1004D000991F820F931F880F991F66E070E04DD619 |
:1004E00070938300609382001092810010928000CC |
:1004F00080919100882319F481E080936500C60102 |
:10050000E0D1882321F08CED95E0D2D16C01CE01B1 |
:10051000D8D1882331F08091820090918300892B7B |
:1005200029F080917F00882309F447CF61E0F62EFF |
:10053000F092630010929900439884E690E0B8D15D |
:10054000EC0180917F00882309F437CFAB9810929B |
:100550007F008AE049DE979A1092630080919700AD |
:1005600081508093970081E090E090937100809398 |
:10057000700075DD88B18C7F88B9F092990088B1E0 |
:100580008A6088B984E690E093D1EC01CE0199D1DC |
:100590008823E1F38AE090E09093710080937000EB |
:1005A0005EDD88EC90E084D1EC01CE018AD1882315 |
:1005B000E1F388EE93E07CD1EC0157E0E52EFDCE2F |
:1005C0001F920F920FB60F9211240F900FBE0F9033 |
:1005D0001F9018955E9B24C0809166008823E1F4EB |
:1005E0008091890090918A00019690938A0080936F |
:1005F0008900FC01E556FD4FE081ED3019F08436AD |
:10060000910539F410928A001092890081E080935C |
:100610006600589AECB9089510928A0010928900E9 |
:1006200008951F920F920FB60F9211248F938CB1E1 |
:100630008093870080918700853F19F410926700AE |
:1006400014C0809167008F5F80936700813041F410 |
:10065000809187008093860088EC80937A0005C0A3 |
:10066000853618F084E6809367008F910F900FBE57 |
:100670000F901F901895DC0120E030E040E050E042 |
:10068000EBE9F2E005C08191280F311D4F5F5F4F0C |
:100690004A175B07C1F73F70C90136E09695879509 |
:1006A0003A95E1F7835CFD01E556FD4F8083119695 |
:1006B0002F73235CFD01E556FD4F2083A456BD4FEB |
:1006C0008DE08C931092660080919B028CB9089506 |
:1006D000EF92FF920F931F93CF93DF937A01722FC4 |
:1006E00093E290939B0260939C0280939D0203E0AF |
:1006F00010E060E0AEE9B2E046C0F701E60FF11DA0 |
:1007000090816F5F715019F4E0E040E00FC0F70195 |
:10071000E60FF11D40816F5F715011F4E0E006C0FB |
:10072000F701E60FF11DE0816F5F7150892F86950B |
:100730008695835C8C935527892F992783709070B9 |
:1007400024E0880F991F2A95E1F79A0194E03695E5 |
:1007500027959A95E1F7822B835CED0189834F7091 |
:100760005070440F551F440F551F8E2F829586954C |
:1007700086958370842B835C8A83EF73E35CEB83C1 |
:100780000C5F1F4F1496772309F0B7CFC80173DFB2 |
:10079000DF91CF911F910F91FF90EF9008951F93DC |
:1007A000182F8A3011F48DE0FADF5D9BFECF1CB963 |
:1007B00080E090E01F91089508958091FF0290914C |
:1007C00000037FD0882391F080916600882371F028 |
:1007D00022E245E653E060919A0284E479DF82E305 |
:1007E00090E066D0909300038093FF02089588E123 |
:1007F0008AB9599A579A8CE089B960E070E08FEC19 |
:1008000093E049D388EC90E053D090930003809319 |
:10081000FF028AE28CB908951F920F920FB60F92D1 |
:1008200011248F939F9380E882BF809187038F5F0D |
:100830008093870380918D00815080938D008F3F3E |
:1008400039F583E080938D0080918B0090918C002E |
:10085000019690938C0080938B008091780090910A |
:100860007900009729F001979093790080937800A0 |
:1008700080919100882329F080919100815080938C |
:10088000910080917A00882319F0815080937A003A |
:100890009F918F910F900FBE0F901F90189582E03F |
:1008A00083BF89B7816089BF89B7806489BF089594 |
:1008B00020918B0030918C00280F391FC9010197BE |
:1008C000089520918B0030918C00821B930B892F0F |
:1008D000992780789927089520918B0030918C007A |
:1008E000280F391F2150304080918B0090918C004F |
:1008F000A901481B590BCA01892F992787FFF4CFFB |
:10090000089585EA86B987E087B9369A089527B1B0 |
:1009100096E097B910BE82ED86B9349A97B9369AA7 |
:10092000349BFECF27B944B155B1440F551F440F36 |
:10093000551F493C510510F048EC50E08091720081 |
:10094000909173009C0163E0220F331F6A95E1F7D9 |
:10095000281B390B240F351F83E0369527958A9580 |
:10096000E1F730937300209372008091740099270F |
:100970008217930710F42093740016B888E080BFA4 |
:1009800008958EB5806C8EBD8EB580648EBD89B79E |
:10099000806289BF89B7846089BF08951F920F92D2 |
:1009A0000FB60F9211248F93809190008F5F8093E8 |
:1009B00090008F910F900FBE0F901F9018951F926F |
:1009C0000F920FB60F9211242F933F934F935F9383 |
:1009D0008F939F930EB406FE0FC01092900086B5C1 |
:1009E00097B590939500809394008EB58F7B8EBDC4 |
:1009F00084E6809391006EC08EB580648EBD46B54E |
:100A000057B5809190002091940030919500421B41 |
:100A1000530B9927982F8827990F480F591F5295E4 |
:100A200042954F7045275F70452750939300409340 |
:100A3000920081E04831580758F4109293001092C8 |
:100A4000920080918E0090918F0040E050E013C0A2 |
:100A500048515140509393004093920080918E00F2 |
:100A600090918F008417950730F480918E009091BB |
:100A70008F0001960CC080918E0090918F004817D6 |
:100A8000590748F480918E0090918F0001979093C0 |
:100A90008F0080938E0080918E0090918F009C013A |
:100AA000220F331F220F331F220F331F281B390B36 |
:100AB000240F351F83E0369527958A95E1F730930B |
:100AC00093002093920030938F0020938E0081E05A |
:100AD000809365009F918F915F914F913F912F91EE |
:100AE0000F900FBE0F901F9018951F920F920FB688 |
:100AF0000F9211248F938AB78F7B8ABF8F910F90AB |
:100B00000FBE0F901F9018958E5F82B985EC86BF3F |
:100B100008951F920F920FB60F9211248F939F93F7 |
:100B200081B19927887F907080389105C9F081380C |
:100B3000910534F4009791F18036910591F50AC042 |
:100B4000883B9105B9F0883F910529F1883A9105D4 |
:100B500041F510C086B7806886BF1092960023C00A |
:100B600083B18093880384EF91E090937900809320 |
:100B700078000EC080919600882339F4809175002A |
:100B800083B981E08093960003C08091640083B9AB |
:100B900086B7806807C086B7806986BF86B78069D8 |
:100BA00086BF85EC86BF9F918F910F900FBE0F90EF |
:100BB0001F9018951F920F920FB60F9211240F904D |
:100BC0000FBE0F901F90189590919700923041F1B1 |
:100BD000933030F4992361F0913009F057C014C07C |
:100BE0009430C1F1943040F1953009F04FC042C0CB |
:100BF00082EA8FBD81E685BD88E087BB82B3877DB1 |
:100C000082BB949A82E031C082EA8FBD81E685BDC5 |
:100C100088E087BB82B3877E82BB959A97B918C05C |
:100C200082EA8FBD81E485BD8CE087BB82B3877E7D |
:100C300082BB959A17B81AC082EA8FBD81E485BD40 |
:100C40008CE087BB82B38F7C82BB939A82E087B9AA |
:100C50004098089582EA8FBD81E485BD8AE087BB14 |
:100C600082B38F7C82BB939A81E087B988B183601D |
:100C700088B9089582EA8FBD81E485BD8AE087BB8B |
:100C800082B3877D82BB949A17B8409808951F92CB |
:100C90000F920FB60F9211240F931F932F933F9330 |
:100CA0004F935F936F937F938F939F93AF93BF9374 |
:100CB000EF93FF9388B19927689414F896958795D8 |
:100CC0001694E1F7082F017010919700123009F483 |
:100CD00056C0133030F4112371F0113009F0BCC04C |
:100CE00024C0143009F47EC0143008F461C01530FB |
:100CF00009F0B2C091C082EA8FBD81E685BD88E06F |
:100D000087BB002369F082B3877E82BB959A11E08E |
:100D100014BD809165008111FADD409817B91AC0A1 |
:100D200082B3877D82BB949A97C082B3877E82BB51 |
:100D3000959A0023F1F482EA8FBD81E485BD8CE0B1 |
:100D400087BB14BD809165008111E1DD17B888B1C2 |
:100D5000836088B9809197008F5F8093970080911E |
:100D60008000909181000196909381008093800093 |
:100D700073C082EA8FBD81E685BD88E06CC082EADF |
:100D80008FBD81E485BD8CE087BB002361F082B319 |
:100D90008F7C82BB939A81E084BD80916500811134 |
:100DA000B6DD17B932C082B3877E82BB959A54C034 |
:100DB00082B38F7C82BB939A002371F482EA8FBD49 |
:100DC00081E485BD8AE087BB11E014BD8091650098 |
:100DD00081119DDD17B9BBCF82EA8FBD81E485BD4E |
:100DE0008CE039C082EA8FBD81E485BD8AE087BB93 |
:100DF000002369F082B3877D82BB949A81E084BD31 |
:100E000080916500811183DD17B84098A3CF82B32C |
:100E10008F7C82BB939A20C082B3877D82BB949AD9 |
:100E20000023A1F482EA8FBD81E685BD88E087BBFF |
:100E300081E084BD80916500811169DD82E087B920 |
:100E400088B1836088B91092970089CF82EA8FBDFC |
:100E500081E485BD8AE087BB459903C0002309F082 |
:100E600029CF459B03C0002309F424CF10926500CD |
:100E7000FF91EF91BF91AF919F918F917F916F9172 |
:100E80005F914F913F912F911F910F910F900FBE46 |
:100E90000F901F901895EF92FF920F931F93CF938F |
:100EA000DF938C017B01892B11F4672BC9F16EE074 |
:100EB00070E081E090E03BD0FC01009789F1DC011B |
:100EC00080E88383E114F10471F0F386E28681E81F |
:100ED00083838091890390918A03892B21F4F09375 |
:100EE0008A03E093890301151105E1F0118700875A |
:100EF00083818260838380918B0390918C03892B03 |
:100F000089F4F0938C03E0938B0380918D0390918F |
:100F10008E03892B39F4F0938E03E0938D0302C086 |
:100F2000A0E0B0E0CD01E6E0CDB7DEB768C10F9339 |
:100F30001F93CF93DF93869F8001879F100D969F0D |
:100F4000100D1124C8010DD0EC01009721F0A8016B |
:100F500060E070E0FFD0CE01DF91CF911F910F9143 |
:100F60000895CF93DF93AC01029710F442E050E074 |
:100F7000A0919103B0919203FD01C0E0D0E020E088 |
:100F800030E020C0808191818417950769F48281C7 |
:100F90009381209719F09B838A8304C090939203D6 |
:100FA00080939103CF0132C04817590738F42115B7 |
:100FB000310519F08217930708F49C01EF010280B4 |
:100FC000F381E02D3097F1F62115310589F1C90142 |
:100FD000841B950B049708F4A901E0E0F0E026C01B |
:100FE0008D919C91119782179307E9F4481759073F |
:100FF00079F4ED018A819B81309719F09383828384 |
:1010000004C09093920380939103CD01029649C04E |
:10101000841B950BFD01E80FF91F41935193029733 |
:101020008D939C933AC0FD01A281B3811097C1F6C4 |
:1010300080918F0390919003892B41F480916B00F4 |
:1010400090916C009093900380938F0320916D009A |
:1010500030916E002115310541F42DB73EB78091D6 |
:10106000690090916A00281B390BE0918F03F09181 |
:1010700090032E1B3F0B2417350788F0CA010296F8 |
:101080002817390760F0CF01840F951F02969093BF |
:10109000900380938F0341935193CF0102C080E06E |
:1010A00090E0DF91CF910895CF93DF93009709F4FB |
:1010B0004EC0EC0122971B821A82A0919103B0913D |
:1010C0009203109711F140E050E001C0DC01AC1731 |
:1010D000BD0700F1BB83AA83FE0121913191E20F8C |
:1010E000F31FEA17FB0771F42E5F3F4F8D919C9120 |
:1010F0001197820F931F99838883FD0182819381C9 |
:101100009B838A834115510559F4D0939203C09370 |
:1011100091031DC0FD0182819381AD010097B1F65D |
:10112000FA01D383C28321913191E20FF31FEC17AF |
:10113000FD0769F42E5F3F4F88819981820F931FCD |
:10114000FA01918380838A819B8193838283DF91DB |
:10115000CF910895DC0101C06D9341505040E0F7FC |
:101160000895991B79E004C0991F961708F0961B03 |
:10117000881F7A95C9F780950895AA1BBB1B51E17A |
:1011800007C0AA1FBB1FA617B70710F0A61BB70BF7 |
:10119000881F991F5A95A9F780959095BC01CD019C |
:1011A0000895A1E21A2EAA1BBB1BFD010DC0AA1FA8 |
:1011B000BB1FEE1FFF1FA217B307E407F50720F0C0 |
:1011C000A21BB30BE40BF50B661F771F881F991F3B |
:1011D0001A9469F760957095809590959B01AC0184 |
:1011E000BD01CF0108952A88398848885F846E84BC |
:1011F0007D848C849B84AA84B984C884DF80EE803B |
:10120000FD800C811B81AA81B981CE0FD11D0FB643 |
:0E121000F894DEBF0FBECDBFED010895FFCFF5 |
:10121E000A000101FF010164642000930300000035 |
:00000001FF |
/branches/BL-Ctrl/BrushLess-Ctrl_8kHz_PWM_V0_31_2.hex |
---|
0,0 → 1,292 |
:1000000012C073C52BC02AC0D5C5D9C427C026C00D |
:10001000C5C402C423C005C321C0D2C21FC01EC0B4 |
:1000200036C677C51BC011241FBECFE5D4E0DEBFA6 |
:10003000CDBF10E0A0E6B0E0EEE1F2E102C0059035 |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92A339B107E1F73CD1E0C8D1CF20917F |
:10006000700080916400821710F4AB9A282F809161 |
:100070007200909173008338910560F01BBC1ABC2C |
:1000800019BC18BC13BCAB9A019790937300809372 |
:1000900072000895822F9927880F991F9BBD8ABDF2 |
:1000A00099BD88BD23BD089582E08FBD81E485BDE3 |
:1000B00085B3817F85BB89E08EBD089592B7980F87 |
:1000C00082B7891B87FDFCCF0895809178009091BD |
:1000D0007900892B09F04EC080917A00882371F055 |
:1000E000909186008FEF989FC001112468EC70E01A |
:1000F00044D8709385006093840044C0809191003F |
:10010000882359F120918E0030918F0041E02D32EB |
:10011000340730F4293C310540F42B30310538F4F4 |
:1001200010928500109284002CC028EC30E08CEFF7 |
:1001300090E0AC01249FC001259F900D349F900D4D |
:100140001124885D994064EB70E017D86D5F7F4F94 |
:10015000709385006093840014C080918400909116 |
:100160008500009729F00197909385008093840083 |
:10017000AB9A08C08091880399279093850080935B |
:100180008400AB9880918400909185008F3F910509 |
:1001900039F030F08FEF90E09093850080938400E9 |
:1001A0008091840099270895809172009091730046 |
:1001B00090937803809377038091750099279093AB |
:1001C0007A038093790380918200909183009093C9 |
:1001D0007C0380937B0380918E0090918F0090939D |
:1001E0007E0380937D030895AF92BF92CF92DF92FA |
:1001F000EF92FF920F931F93CF93DF93182F1092DC |
:100200009900439885E090E090937100809370008E |
:1002100026DFDAD488EC90E05FD3C12FDD27D093BE |
:100220007100C09370004CE2A42E41E0B42EC12CAA |
:10023000D12CEE24FF2487010EC080916600882314 |
:1002400011F4C8D101C0B9D284E638DF0894E11CAA |
:10025000F11C011D111DEA14FB040C051D0569F7B5 |
:10026000C601B5012FE030E040E050E09AD7A21A75 |
:10027000B30AC40AD50A0894A108B108C108D10874 |
:1002800089E1A816B104C104D104C0F09DD48091C5 |
:1002900097008F5F809397008091970066E061D709 |
:1002A0009093970034D3D0937100C0937000D7DE41 |
:1002B000449BBFCF82B3805882BBBBCFDF91CF912D |
:1002C0001F910F91FF90EF90DF90CF90BF90AF9074 |
:1002D0000895AF92BF92CF92DF92EF92FF920F9369 |
:1002E0001F93CF93DF9388E084BB85BB8AEB81BBF0 |
:1002F00080E882BB8EE087BB81E388BB78D2CFD217 |
:10030000789486E990E0E8D297988AEF90E0E4D27A |
:10031000C0E0D0E02196C230D10549F4979A86E931 |
:1003200090E0DAD297988AEF90E0D6D2F3CF86E9C0 |
:1003300090E0D2D297988AEF90E0CED2CE0101968B |
:10034000059744F384EF91E0C7D251D2ADDE80E54A |
:10035000DBD317D385E690E0ABD286E690E0A8D257 |
:1003600087E690E0A5D2EC018EEF90E0A1D25C018F |
:100370008DEE93E09DD28C018EEE93E099D26C01CC |
:10038000CE019FD28823E1F3979A109271001092C8 |
:10039000700065DE88E080BF81E087B98AE090E088 |
:1003A00087D2EC0181E090E090937A038093790307 |
:1003B00010928F0010928E00EE2487DE9927909382 |
:1003C000710080937000809197008E1551F010920B |
:1003D00063001092620082E390E06AD2EC01E09048 |
:1003E00097008091700090917100892BC9F4109250 |
:1003F0007F0010926200C80164D28823D9F0109265 |
:100400009900439881E08093630082B3877C82BB2C |
:1004100082E08FBD81E485BD85B3817F85BB0EC041 |
:1004200080916300882319F081E080937F008CED38 |
:1004300095E03ED280916300882321F010927100F4 |
:10044000109270000CDE809162008F5F80936200DA |
:10045000813009F0B2CF809163008111979AC50174 |
:1004600030D2882339F182E390E022D25C0180917E |
:100470007500482F55272091720030917300421764 |
:10048000530710F48F5F04C02417350718F4815008 |
:10049000809375008091750090916400823428F0FB |
:1004A000915090936400AB9A05C09F3F19F09F5FF5 |
:1004B00090936400C80105D2882309F18AE090E096 |
:1004C000F7D18C012091800030918100C901880F03 |
:1004D000991F820F931F880F991F66E070E04DD619 |
:1004E00070938300609382001092810010928000CC |
:1004F00080919100882319F481E080936500C60102 |
:10050000E0D1882321F08CED95E0D2D16C01CE01B1 |
:10051000D8D1882331F08091820090918300892B7B |
:1005200029F080917F00882309F447CF61E0F62EFF |
:10053000F092630010929900439884E690E0B8D15D |
:10054000EC0180917F00882309F437CFAB9810929B |
:100550007F008AE049DE979A1092630080919700AD |
:1005600081508093970081E090E090937100809398 |
:10057000700075DD88B18C7F88B9F092990088B1E0 |
:100580008A6088B984E690E093D1EC01CE0199D1DC |
:100590008823E1F38AE090E09093710080937000EB |
:1005A0005EDD88EC90E084D1EC01CE018AD1882315 |
:1005B000E1F388EE93E07CD1EC0157E0E52EFDCE2F |
:1005C0001F920F920FB60F9211240F900FBE0F9033 |
:1005D0001F9018955E9B24C0809166008823E1F4EB |
:1005E0008091890090918A00019690938A0080936F |
:1005F0008900FC01E556FD4FE081ED3019F08436AD |
:10060000910539F410928A001092890081E080935C |
:100610006600589AECB9089510928A0010928900E9 |
:1006200008951F920F920FB60F9211248F938CB1E1 |
:100630008093870080918700853F19F410926700AE |
:1006400014C0809167008F5F80936700823041F40F |
:10065000809187008093860088EC80937A0005C0A3 |
:10066000853618F084E6809367008F910F900FBE57 |
:100670000F901F901895DC0120E030E040E050E042 |
:10068000EBE9F2E005C08191280F311D4F5F5F4F0C |
:100690004A175B07C1F73F70C90136E09695879509 |
:1006A0003A95E1F7835CFD01E556FD4F8083119695 |
:1006B0002F73235CFD01E556FD4F2083A456BD4FEB |
:1006C0008DE08C931092660080919B028CB9089506 |
:1006D000EF92FF920F931F93CF93DF937A01722FC4 |
:1006E00093E290939B0260939C0280939D0203E0AF |
:1006F00010E060E0AEE9B2E046C0F701E60FF11DA0 |
:1007000090816F5F715019F4E0E040E00FC0F70195 |
:10071000E60FF11D40816F5F715011F4E0E006C0FB |
:10072000F701E60FF11DE0816F5F7150892F86950B |
:100730008695835C8C935527892F992783709070B9 |
:1007400024E0880F991F2A95E1F79A0194E03695E5 |
:1007500027959A95E1F7822B835CED0189834F7091 |
:100760005070440F551F440F551F8E2F829586954C |
:1007700086958370842B835C8A83EF73E35CEB83C1 |
:100780000C5F1F4F1496772309F0B7CFC80173DFB2 |
:10079000DF91CF911F910F91FF90EF9008951F93DC |
:1007A000182F8A3011F48DE0FADF5D9BFECF1CB963 |
:1007B00080E090E01F91089508958091FF0290914C |
:1007C00000037FD0882391F080916600882371F028 |
:1007D00022E245E653E060919A0284E479DF82E305 |
:1007E00090E066D0909300038093FF02089588E123 |
:1007F0008AB9599A579A8CE089B960E070E08FEC19 |
:1008000093E049D388EC90E053D090930003809319 |
:10081000FF028AE28CB908951F920F920FB60F92D1 |
:1008200011248F939F9380E882BF809187038F5F0D |
:100830008093870380918D00815080938D008F3F3E |
:1008400039F583E080938D0080918B0090918C002E |
:10085000019690938C0080938B008091780090910A |
:100860007900009729F001979093790080937800A0 |
:1008700080919100882329F080919100815080938C |
:10088000910080917A00882319F0815080937A003A |
:100890009F918F910F900FBE0F901F90189582E03F |
:1008A00083BF89B7816089BF89B7806489BF089594 |
:1008B00020918B0030918C00280F391FC9010197BE |
:1008C000089520918B0030918C00821B930B892F0F |
:1008D000992780789927089520918B0030918C007A |
:1008E000280F391F2150304080918B0090918C004F |
:1008F000A901481B590BCA01892F992787FFF4CFFB |
:10090000089585EA86B987E087B9369A089527B1B0 |
:1009100096E097B910BE82ED86B9349A97B9369AA7 |
:10092000349BFECF27B944B155B1440F551F440F36 |
:10093000551F493C510510F048EC50E08091720081 |
:10094000909173009C0163E0220F331F6A95E1F7D9 |
:10095000281B390B240F351F83E0369527958A9580 |
:10096000E1F730937300209372008091740099270F |
:100970008217930710F42093740016B888E080BFA4 |
:1009800008958EB5806C8EBD8EB580648EBD89B79E |
:10099000806289BF89B7846089BF08951F920F92D2 |
:1009A0000FB60F9211248F93809190008F5F8093E8 |
:1009B00090008F910F900FBE0F901F9018951F926F |
:1009C0000F920FB60F9211242F933F934F935F9383 |
:1009D0008F939F930EB406FE0FC01092900086B5C1 |
:1009E00097B590939500809394008EB58F7B8EBDC4 |
:1009F00084E6809391006EC08EB580648EBD46B54E |
:100A000057B5809190002091940030919500421B41 |
:100A1000530B9927982F8827990F480F591F5295E4 |
:100A200042954F7045275F70452750939300409340 |
:100A3000920081E04831580758F4109293001092C8 |
:100A4000920080918E0090918F0040E050E013C0A2 |
:100A500048515140509393004093920080918E00F2 |
:100A600090918F008417950730F480918E009091BB |
:100A70008F0001960CC080918E0090918F004817D6 |
:100A8000590748F480918E0090918F0001979093C0 |
:100A90008F0080938E0080918E0090918F009C013A |
:100AA000220F331F220F331F220F331F281B390B36 |
:100AB000240F351F83E0369527958A95E1F730930B |
:100AC00093002093920030938F0020938E0081E05A |
:100AD000809365009F918F915F914F913F912F91EE |
:100AE0000F900FBE0F901F9018951F920F920FB688 |
:100AF0000F9211248F938AB78F7B8ABF8F910F90AB |
:100B00000FBE0F901F9018958C5F82B985EC86BF41 |
:100B100008951F920F920FB60F9211248F939F93F7 |
:100B200081B19927887F907080389105C9F081380C |
:100B3000910534F4009791F18036910591F50AC042 |
:100B4000883B9105B9F0883F910529F1883A9105D4 |
:100B500041F510C086B7806886BF1092960023C00A |
:100B600083B18093880384EF91E090937900809320 |
:100B700078000EC080919600882339F4809175002A |
:100B800083B981E08093960003C08091640083B9AB |
:100B900086B7806807C086B7806986BF86B78069D8 |
:100BA00086BF85EC86BF9F918F910F900FBE0F90EF |
:100BB0001F9018951F920F920FB60F9211240F904D |
:100BC0000FBE0F901F90189590919700923041F1B1 |
:100BD000933030F4992361F0913009F057C014C07C |
:100BE0009430C1F1943040F1953009F04FC042C0CB |
:100BF00082EA8FBD81E685BD88E087BB82B3877DB1 |
:100C000082BB949A82E031C082EA8FBD81E685BDC5 |
:100C100088E087BB82B3877E82BB959A97B918C05C |
:100C200082EA8FBD81E485BD8CE087BB82B3877E7D |
:100C300082BB959A17B81AC082EA8FBD81E485BD40 |
:100C40008CE087BB82B38F7C82BB939A82E087B9AA |
:100C50004098089582EA8FBD81E485BD8AE087BB14 |
:100C600082B38F7C82BB939A81E087B988B183601D |
:100C700088B9089582EA8FBD81E485BD8AE087BB8B |
:100C800082B3877D82BB949A17B8409808951F92CB |
:100C90000F920FB60F9211240F931F932F933F9330 |
:100CA0004F935F936F937F938F939F93AF93BF9374 |
:100CB000EF93FF9388B19927689414F896958795D8 |
:100CC0001694E1F7082F017010919700123009F483 |
:100CD00056C0133030F4112371F0113009F0BCC04C |
:100CE00024C0143009F47EC0143008F461C01530FB |
:100CF00009F0B2C091C082EA8FBD81E685BD88E06F |
:100D000087BB002369F082B3877E82BB959A11E08E |
:100D100014BD809165008111FADD409817B91AC0A1 |
:100D200082B3877D82BB949A97C082B3877E82BB51 |
:100D3000959A0023F1F482EA8FBD81E485BD8CE0B1 |
:100D400087BB14BD809165008111E1DD17B888B1C2 |
:100D5000836088B9809197008F5F8093970080911E |
:100D60008000909181000196909381008093800093 |
:100D700073C082EA8FBD81E685BD88E06CC082EADF |
:100D80008FBD81E485BD8CE087BB002361F082B319 |
:100D90008F7C82BB939A81E084BD80916500811134 |
:100DA000B6DD17B932C082B3877E82BB959A54C034 |
:100DB00082B38F7C82BB939A002371F482EA8FBD49 |
:100DC00081E485BD8AE087BB11E014BD8091650098 |
:100DD00081119DDD17B9BBCF82EA8FBD81E485BD4E |
:100DE0008CE039C082EA8FBD81E485BD8AE087BB93 |
:100DF000002369F082B3877D82BB949A81E084BD31 |
:100E000080916500811183DD17B84098A3CF82B32C |
:100E10008F7C82BB939A20C082B3877D82BB949AD9 |
:100E20000023A1F482EA8FBD81E685BD88E087BBFF |
:100E300081E084BD80916500811169DD82E087B920 |
:100E400088B1836088B91092970089CF82EA8FBDFC |
:100E500081E485BD8AE087BB459903C0002309F082 |
:100E600029CF459B03C0002309F424CF10926500CD |
:100E7000FF91EF91BF91AF919F918F917F916F9172 |
:100E80005F914F913F912F911F910F910F900FBE46 |
:100E90000F901F901895EF92FF920F931F93CF938F |
:100EA000DF938C017B01892B11F4672BC9F16EE074 |
:100EB00070E081E090E03BD0FC01009789F1DC011B |
:100EC00080E88383E114F10471F0F386E28681E81F |
:100ED00083838091890390918A03892B21F4F09375 |
:100EE0008A03E093890301151105E1F0118700875A |
:100EF00083818260838380918B0390918C03892B03 |
:100F000089F4F0938C03E0938B0380918D0390918F |
:100F10008E03892B39F4F0938E03E0938D0302C086 |
:100F2000A0E0B0E0CD01E6E0CDB7DEB768C10F9339 |
:100F30001F93CF93DF93869F8001879F100D969F0D |
:100F4000100D1124C8010DD0EC01009721F0A8016B |
:100F500060E070E0FFD0CE01DF91CF911F910F9143 |
:100F60000895CF93DF93AC01029710F442E050E074 |
:100F7000A0919103B0919203FD01C0E0D0E020E088 |
:100F800030E020C0808191818417950769F48281C7 |
:100F90009381209719F09B838A8304C090939203D6 |
:100FA00080939103CF0132C04817590738F42115B7 |
:100FB000310519F08217930708F49C01EF010280B4 |
:100FC000F381E02D3097F1F62115310589F1C90142 |
:100FD000841B950B049708F4A901E0E0F0E026C01B |
:100FE0008D919C91119782179307E9F4481759073F |
:100FF00079F4ED018A819B81309719F09383828384 |
:1010000004C09093920380939103CD01029649C04E |
:10101000841B950BFD01E80FF91F41935193029733 |
:101020008D939C933AC0FD01A281B3811097C1F6C4 |
:1010300080918F0390919003892B41F480916B00F4 |
:1010400090916C009093900380938F0320916D009A |
:1010500030916E002115310541F42DB73EB78091D6 |
:10106000690090916A00281B390BE0918F03F09181 |
:1010700090032E1B3F0B2417350788F0CA010296F8 |
:101080002817390760F0CF01840F951F02969093BF |
:10109000900380938F0341935193CF0102C080E06E |
:1010A00090E0DF91CF910895CF93DF93009709F4FB |
:1010B0004EC0EC0122971B821A82A0919103B0913D |
:1010C0009203109711F140E050E001C0DC01AC1731 |
:1010D000BD0700F1BB83AA83FE0121913191E20F8C |
:1010E000F31FEA17FB0771F42E5F3F4F8D919C9120 |
:1010F0001197820F931F99838883FD0182819381C9 |
:101100009B838A834115510559F4D0939203C09370 |
:1011100091031DC0FD0182819381AD010097B1F65D |
:10112000FA01D383C28321913191E20FF31FEC17AF |
:10113000FD0769F42E5F3F4F88819981820F931FCD |
:10114000FA01918380838A819B8193838283DF91DB |
:10115000CF910895DC0101C06D9341505040E0F7FC |
:101160000895991B79E004C0991F961708F0961B03 |
:10117000881F7A95C9F780950895AA1BBB1B51E17A |
:1011800007C0AA1FBB1FA617B70710F0A61BB70BF7 |
:10119000881F991F5A95A9F780959095BC01CD019C |
:1011A0000895A1E21A2EAA1BBB1BFD010DC0AA1FA8 |
:1011B000BB1FEE1FFF1FA217B307E407F50720F0C0 |
:1011C000A21BB30BE40BF50B661F771F881F991F3B |
:1011D0001A9469F760957095809590959B01AC0184 |
:1011E000BD01CF0108952A88398848885F846E84BC |
:1011F0007D848C849B84AA84B984C884DF80EE803B |
:10120000FD800C811B81AA81B981CE0FD11D0FB643 |
:0E121000F894DEBF0FBECDBFED010895FFCFF5 |
:10121E000A000101FF010164642000930300000035 |
:00000001FF |
/branches/BL-Ctrl/BrushLess-Ctrl_8kHz_PWM_V0_31_3.hex |
---|
0,0 → 1,292 |
:1000000012C073C52BC02AC0D5C5D9C427C026C00D |
:10001000C5C402C423C005C321C0D2C21FC01EC0B4 |
:1000200036C677C51BC011241FBECFE5D4E0DEBFA6 |
:10003000CDBF10E0A0E6B0E0EEE1F2E102C0059035 |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92A339B107E1F73CD1E0C8D1CF20917F |
:10006000700080916400821710F4AB9A282F809161 |
:100070007200909173008338910560F01BBC1ABC2C |
:1000800019BC18BC13BCAB9A019790937300809372 |
:1000900072000895822F9927880F991F9BBD8ABDF2 |
:1000A00099BD88BD23BD089582E08FBD81E485BDE3 |
:1000B00085B3817F85BB89E08EBD089592B7980F87 |
:1000C00082B7891B87FDFCCF0895809178009091BD |
:1000D0007900892B09F04EC080917A00882371F055 |
:1000E000909186008FEF989FC001112468EC70E01A |
:1000F00044D8709385006093840044C0809191003F |
:10010000882359F120918E0030918F0041E02D32EB |
:10011000340730F4293C310540F42B30310538F4F4 |
:1001200010928500109284002CC028EC30E08CEFF7 |
:1001300090E0AC01249FC001259F900D349F900D4D |
:100140001124885D994064EB70E017D86D5F7F4F94 |
:10015000709385006093840014C080918400909116 |
:100160008500009729F00197909385008093840083 |
:10017000AB9A08C08091880399279093850080935B |
:100180008400AB9880918400909185008F3F910509 |
:1001900039F030F08FEF90E09093850080938400E9 |
:1001A0008091840099270895809172009091730046 |
:1001B00090937803809377038091750099279093AB |
:1001C0007A038093790380918200909183009093C9 |
:1001D0007C0380937B0380918E0090918F0090939D |
:1001E0007E0380937D030895AF92BF92CF92DF92FA |
:1001F000EF92FF920F931F93CF93DF93182F1092DC |
:100200009900439885E090E090937100809370008E |
:1002100026DFDAD488EC90E05FD3C12FDD27D093BE |
:100220007100C09370004CE2A42E41E0B42EC12CAA |
:10023000D12CEE24FF2487010EC080916600882314 |
:1002400011F4C8D101C0B9D284E638DF0894E11CAA |
:10025000F11C011D111DEA14FB040C051D0569F7B5 |
:10026000C601B5012FE030E040E050E09AD7A21A75 |
:10027000B30AC40AD50A0894A108B108C108D10874 |
:1002800089E1A816B104C104D104C0F09DD48091C5 |
:1002900097008F5F809397008091970066E061D709 |
:1002A0009093970034D3D0937100C0937000D7DE41 |
:1002B000449BBFCF82B3805882BBBBCFDF91CF912D |
:1002C0001F910F91FF90EF90DF90CF90BF90AF9074 |
:1002D0000895AF92BF92CF92DF92EF92FF920F9369 |
:1002E0001F93CF93DF9388E084BB85BB8AEB81BBF0 |
:1002F00080E882BB8EE087BB81E388BB78D2CFD217 |
:10030000789486E990E0E8D297988AEF90E0E4D27A |
:10031000C0E0D0E02196C330D10549F4979A86E930 |
:1003200090E0DAD297988AEF90E0D6D2F3CF86E9C0 |
:1003300090E0D2D297988AEF90E0CED2CE0101968B |
:10034000059744F384EF91E0C7D251D2ADDE80E54A |
:10035000DBD317D385E690E0ABD286E690E0A8D257 |
:1003600087E690E0A5D2EC018EEF90E0A1D25C018F |
:100370008DEE93E09DD28C018EEE93E099D26C01CC |
:10038000CE019FD28823E1F3979A109271001092C8 |
:10039000700065DE88E080BF81E087B98AE090E088 |
:1003A00087D2EC0181E090E090937A038093790307 |
:1003B00010928F0010928E00EE2487DE9927909382 |
:1003C000710080937000809197008E1551F010920B |
:1003D00063001092620082E390E06AD2EC01E09048 |
:1003E00097008091700090917100892BC9F4109250 |
:1003F0007F0010926200C80164D28823D9F0109265 |
:100400009900439881E08093630082B3877C82BB2C |
:1004100082E08FBD81E485BD85B3817F85BB0EC041 |
:1004200080916300882319F081E080937F008CED38 |
:1004300095E03ED280916300882321F010927100F4 |
:10044000109270000CDE809162008F5F80936200DA |
:10045000813009F0B2CF809163008111979AC50174 |
:1004600030D2882339F182E390E022D25C0180917E |
:100470007500482F55272091720030917300421764 |
:10048000530710F48F5F04C02417350718F4815008 |
:10049000809375008091750090916400823428F0FB |
:1004A000915090936400AB9A05C09F3F19F09F5FF5 |
:1004B00090936400C80105D2882309F18AE090E096 |
:1004C000F7D18C012091800030918100C901880F03 |
:1004D000991F820F931F880F991F66E070E04DD619 |
:1004E00070938300609382001092810010928000CC |
:1004F00080919100882319F481E080936500C60102 |
:10050000E0D1882321F08CED95E0D2D16C01CE01B1 |
:10051000D8D1882331F08091820090918300892B7B |
:1005200029F080917F00882309F447CF61E0F62EFF |
:10053000F092630010929900439884E690E0B8D15D |
:10054000EC0180917F00882309F437CFAB9810929B |
:100550007F008AE049DE979A1092630080919700AD |
:1005600081508093970081E090E090937100809398 |
:10057000700075DD88B18C7F88B9F092990088B1E0 |
:100580008A6088B984E690E093D1EC01CE0199D1DC |
:100590008823E1F38AE090E09093710080937000EB |
:1005A0005EDD88EC90E084D1EC01CE018AD1882315 |
:1005B000E1F388EE93E07CD1EC0157E0E52EFDCE2F |
:1005C0001F920F920FB60F9211240F900FBE0F9033 |
:1005D0001F9018955E9B24C0809166008823E1F4EB |
:1005E0008091890090918A00019690938A0080936F |
:1005F0008900FC01E556FD4FE081ED3019F08436AD |
:10060000910539F410928A001092890081E080935C |
:100610006600589AECB9089510928A0010928900E9 |
:1006200008951F920F920FB60F9211248F938CB1E1 |
:100630008093870080918700853F19F410926700AE |
:1006400014C0809167008F5F80936700833041F40E |
:10065000809187008093860088EC80937A0005C0A3 |
:10066000853618F084E6809367008F910F900FBE57 |
:100670000F901F901895DC0120E030E040E050E042 |
:10068000EBE9F2E005C08191280F311D4F5F5F4F0C |
:100690004A175B07C1F73F70C90136E09695879509 |
:1006A0003A95E1F7835CFD01E556FD4F8083119695 |
:1006B0002F73235CFD01E556FD4F2083A456BD4FEB |
:1006C0008DE08C931092660080919B028CB9089506 |
:1006D000EF92FF920F931F93CF93DF937A01722FC4 |
:1006E00093E290939B0260939C0280939D0203E0AF |
:1006F00010E060E0AEE9B2E046C0F701E60FF11DA0 |
:1007000090816F5F715019F4E0E040E00FC0F70195 |
:10071000E60FF11D40816F5F715011F4E0E006C0FB |
:10072000F701E60FF11DE0816F5F7150892F86950B |
:100730008695835C8C935527892F992783709070B9 |
:1007400024E0880F991F2A95E1F79A0194E03695E5 |
:1007500027959A95E1F7822B835CED0189834F7091 |
:100760005070440F551F440F551F8E2F829586954C |
:1007700086958370842B835C8A83EF73E35CEB83C1 |
:100780000C5F1F4F1496772309F0B7CFC80173DFB2 |
:10079000DF91CF911F910F91FF90EF9008951F93DC |
:1007A000182F8A3011F48DE0FADF5D9BFECF1CB963 |
:1007B00080E090E01F91089508958091FF0290914C |
:1007C00000037FD0882391F080916600882371F028 |
:1007D00022E245E653E060919A0284E479DF82E305 |
:1007E00090E066D0909300038093FF02089588E123 |
:1007F0008AB9599A579A8CE089B960E070E08FEC19 |
:1008000093E049D388EC90E053D090930003809319 |
:10081000FF028AE28CB908951F920F920FB60F92D1 |
:1008200011248F939F9380E882BF809187038F5F0D |
:100830008093870380918D00815080938D008F3F3E |
:1008400039F583E080938D0080918B0090918C002E |
:10085000019690938C0080938B008091780090910A |
:100860007900009729F001979093790080937800A0 |
:1008700080919100882329F080919100815080938C |
:10088000910080917A00882319F0815080937A003A |
:100890009F918F910F900FBE0F901F90189582E03F |
:1008A00083BF89B7816089BF89B7806489BF089594 |
:1008B00020918B0030918C00280F391FC9010197BE |
:1008C000089520918B0030918C00821B930B892F0F |
:1008D000992780789927089520918B0030918C007A |
:1008E000280F391F2150304080918B0090918C004F |
:1008F000A901481B590BCA01892F992787FFF4CFFB |
:10090000089585EA86B987E087B9369A089527B1B0 |
:1009100096E097B910BE82ED86B9349A97B9369AA7 |
:10092000349BFECF27B944B155B1440F551F440F36 |
:10093000551F493C510510F048EC50E08091720081 |
:10094000909173009C0163E0220F331F6A95E1F7D9 |
:10095000281B390B240F351F83E0369527958A9580 |
:10096000E1F730937300209372008091740099270F |
:100970008217930710F42093740016B888E080BFA4 |
:1009800008958EB5806C8EBD8EB580648EBD89B79E |
:10099000806289BF89B7846089BF08951F920F92D2 |
:1009A0000FB60F9211248F93809190008F5F8093E8 |
:1009B00090008F910F900FBE0F901F9018951F926F |
:1009C0000F920FB60F9211242F933F934F935F9383 |
:1009D0008F939F930EB406FE0FC01092900086B5C1 |
:1009E00097B590939500809394008EB58F7B8EBDC4 |
:1009F00084E6809391006EC08EB580648EBD46B54E |
:100A000057B5809190002091940030919500421B41 |
:100A1000530B9927982F8827990F480F591F5295E4 |
:100A200042954F7045275F70452750939300409340 |
:100A3000920081E04831580758F4109293001092C8 |
:100A4000920080918E0090918F0040E050E013C0A2 |
:100A500048515140509393004093920080918E00F2 |
:100A600090918F008417950730F480918E009091BB |
:100A70008F0001960CC080918E0090918F004817D6 |
:100A8000590748F480918E0090918F0001979093C0 |
:100A90008F0080938E0080918E0090918F009C013A |
:100AA000220F331F220F331F220F331F281B390B36 |
:100AB000240F351F83E0369527958A95E1F730930B |
:100AC00093002093920030938F0020938E0081E05A |
:100AD000809365009F918F915F914F913F912F91EE |
:100AE0000F900FBE0F901F9018951F920F920FB688 |
:100AF0000F9211248F938AB78F7B8ABF8F910F90AB |
:100B00000FBE0F901F9018958A5F82B985EC86BF43 |
:100B100008951F920F920FB60F9211248F939F93F7 |
:100B200081B19927887F907080389105C9F081380C |
:100B3000910534F4009791F18036910591F50AC042 |
:100B4000883B9105B9F0883F910529F1883A9105D4 |
:100B500041F510C086B7806886BF1092960023C00A |
:100B600083B18093880384EF91E090937900809320 |
:100B700078000EC080919600882339F4809175002A |
:100B800083B981E08093960003C08091640083B9AB |
:100B900086B7806807C086B7806986BF86B78069D8 |
:100BA00086BF85EC86BF9F918F910F900FBE0F90EF |
:100BB0001F9018951F920F920FB60F9211240F904D |
:100BC0000FBE0F901F90189590919700923041F1B1 |
:100BD000933030F4992361F0913009F057C014C07C |
:100BE0009430C1F1943040F1953009F04FC042C0CB |
:100BF00082EA8FBD81E685BD88E087BB82B3877DB1 |
:100C000082BB949A82E031C082EA8FBD81E685BDC5 |
:100C100088E087BB82B3877E82BB959A97B918C05C |
:100C200082EA8FBD81E485BD8CE087BB82B3877E7D |
:100C300082BB959A17B81AC082EA8FBD81E485BD40 |
:100C40008CE087BB82B38F7C82BB939A82E087B9AA |
:100C50004098089582EA8FBD81E485BD8AE087BB14 |
:100C600082B38F7C82BB939A81E087B988B183601D |
:100C700088B9089582EA8FBD81E485BD8AE087BB8B |
:100C800082B3877D82BB949A17B8409808951F92CB |
:100C90000F920FB60F9211240F931F932F933F9330 |
:100CA0004F935F936F937F938F939F93AF93BF9374 |
:100CB000EF93FF9388B19927689414F896958795D8 |
:100CC0001694E1F7082F017010919700123009F483 |
:100CD00056C0133030F4112371F0113009F0BCC04C |
:100CE00024C0143009F47EC0143008F461C01530FB |
:100CF00009F0B2C091C082EA8FBD81E685BD88E06F |
:100D000087BB002369F082B3877E82BB959A11E08E |
:100D100014BD809165008111FADD409817B91AC0A1 |
:100D200082B3877D82BB949A97C082B3877E82BB51 |
:100D3000959A0023F1F482EA8FBD81E485BD8CE0B1 |
:100D400087BB14BD809165008111E1DD17B888B1C2 |
:100D5000836088B9809197008F5F8093970080911E |
:100D60008000909181000196909381008093800093 |
:100D700073C082EA8FBD81E685BD88E06CC082EADF |
:100D80008FBD81E485BD8CE087BB002361F082B319 |
:100D90008F7C82BB939A81E084BD80916500811134 |
:100DA000B6DD17B932C082B3877E82BB959A54C034 |
:100DB00082B38F7C82BB939A002371F482EA8FBD49 |
:100DC00081E485BD8AE087BB11E014BD8091650098 |
:100DD00081119DDD17B9BBCF82EA8FBD81E485BD4E |
:100DE0008CE039C082EA8FBD81E485BD8AE087BB93 |
:100DF000002369F082B3877D82BB949A81E084BD31 |
:100E000080916500811183DD17B84098A3CF82B32C |
:100E10008F7C82BB939A20C082B3877D82BB949AD9 |
:100E20000023A1F482EA8FBD81E685BD88E087BBFF |
:100E300081E084BD80916500811169DD82E087B920 |
:100E400088B1836088B91092970089CF82EA8FBDFC |
:100E500081E485BD8AE087BB459903C0002309F082 |
:100E600029CF459B03C0002309F424CF10926500CD |
:100E7000FF91EF91BF91AF919F918F917F916F9172 |
:100E80005F914F913F912F911F910F910F900FBE46 |
:100E90000F901F901895EF92FF920F931F93CF938F |
:100EA000DF938C017B01892B11F4672BC9F16EE074 |
:100EB00070E081E090E03BD0FC01009789F1DC011B |
:100EC00080E88383E114F10471F0F386E28681E81F |
:100ED00083838091890390918A03892B21F4F09375 |
:100EE0008A03E093890301151105E1F0118700875A |
:100EF00083818260838380918B0390918C03892B03 |
:100F000089F4F0938C03E0938B0380918D0390918F |
:100F10008E03892B39F4F0938E03E0938D0302C086 |
:100F2000A0E0B0E0CD01E6E0CDB7DEB768C10F9339 |
:100F30001F93CF93DF93869F8001879F100D969F0D |
:100F4000100D1124C8010DD0EC01009721F0A8016B |
:100F500060E070E0FFD0CE01DF91CF911F910F9143 |
:100F60000895CF93DF93AC01029710F442E050E074 |
:100F7000A0919103B0919203FD01C0E0D0E020E088 |
:100F800030E020C0808191818417950769F48281C7 |
:100F90009381209719F09B838A8304C090939203D6 |
:100FA00080939103CF0132C04817590738F42115B7 |
:100FB000310519F08217930708F49C01EF010280B4 |
:100FC000F381E02D3097F1F62115310589F1C90142 |
:100FD000841B950B049708F4A901E0E0F0E026C01B |
:100FE0008D919C91119782179307E9F4481759073F |
:100FF00079F4ED018A819B81309719F09383828384 |
:1010000004C09093920380939103CD01029649C04E |
:10101000841B950BFD01E80FF91F41935193029733 |
:101020008D939C933AC0FD01A281B3811097C1F6C4 |
:1010300080918F0390919003892B41F480916B00F4 |
:1010400090916C009093900380938F0320916D009A |
:1010500030916E002115310541F42DB73EB78091D6 |
:10106000690090916A00281B390BE0918F03F09181 |
:1010700090032E1B3F0B2417350788F0CA010296F8 |
:101080002817390760F0CF01840F951F02969093BF |
:10109000900380938F0341935193CF0102C080E06E |
:1010A00090E0DF91CF910895CF93DF93009709F4FB |
:1010B0004EC0EC0122971B821A82A0919103B0913D |
:1010C0009203109711F140E050E001C0DC01AC1731 |
:1010D000BD0700F1BB83AA83FE0121913191E20F8C |
:1010E000F31FEA17FB0771F42E5F3F4F8D919C9120 |
:1010F0001197820F931F99838883FD0182819381C9 |
:101100009B838A834115510559F4D0939203C09370 |
:1011100091031DC0FD0182819381AD010097B1F65D |
:10112000FA01D383C28321913191E20FF31FEC17AF |
:10113000FD0769F42E5F3F4F88819981820F931FCD |
:10114000FA01918380838A819B8193838283DF91DB |
:10115000CF910895DC0101C06D9341505040E0F7FC |
:101160000895991B79E004C0991F961708F0961B03 |
:10117000881F7A95C9F780950895AA1BBB1B51E17A |
:1011800007C0AA1FBB1FA617B70710F0A61BB70BF7 |
:10119000881F991F5A95A9F780959095BC01CD019C |
:1011A0000895A1E21A2EAA1BBB1BFD010DC0AA1FA8 |
:1011B000BB1FEE1FFF1FA217B307E407F50720F0C0 |
:1011C000A21BB30BE40BF50B661F771F881F991F3B |
:1011D0001A9469F760957095809590959B01AC0184 |
:1011E000BD01CF0108952A88398848885F846E84BC |
:1011F0007D848C849B84AA84B984C884DF80EE803B |
:10120000FD800C811B81AA81B981CE0FD11D0FB643 |
:0E121000F894DEBF0FBECDBFED010895FFCFF5 |
:10121E000A000101FF010164642000930300000035 |
:00000001FF |
/branches/BL-Ctrl/BrushLess-Ctrl_8kHz_PWM_V0_31_4.hex |
---|
0,0 → 1,292 |
:1000000012C072C52BC02AC0D4C5D8C427C026C010 |
:10001000C4C401C423C004C321C0D1C21FC01EC0B8 |
:1000200035C676C51BC011241FBECFE5D4E0DEBFA8 |
:10003000CDBF10E0A0E6B0E0ECE1F2E102C0059037 |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92A339B107E1F73CD1DFC8D1CF209180 |
:10006000700080916400821710F4AB9A282F809161 |
:100070007200909173008338910560F01BBC1ABC2C |
:1000800019BC18BC13BCAB9A019790937300809372 |
:1000900072000895822F9927880F991F9BBD8ABDF2 |
:1000A00099BD88BD23BD089582E08FBD81E485BDE3 |
:1000B00085B3817F85BB89E08EBD089592B7980F87 |
:1000C00082B7891B87FDFCCF0895809178009091BD |
:1000D0007900892B09F04EC080917A00882371F055 |
:1000E000909186008FEF989FC001112468EC70E01A |
:1000F00043D8709385006093840044C08091910040 |
:10010000882359F120918E0030918F0041E02D32EB |
:10011000340730F4293C310540F42B30310538F4F4 |
:1001200010928500109284002CC028EC30E08CEFF7 |
:1001300090E0AC01249FC001259F900D349F900D4D |
:100140001124885D994064EB70E016D86D5F7F4F95 |
:10015000709385006093840014C080918400909116 |
:100160008500009729F00197909385008093840083 |
:10017000AB9A08C08091880399279093850080935B |
:100180008400AB9880918400909185008F3F910509 |
:1001900039F030F08FEF90E09093850080938400E9 |
:1001A0008091840099270895809172009091730046 |
:1001B00090937803809377038091750099279093AB |
:1001C0007A038093790380918200909183009093C9 |
:1001D0007C0380937B0380918E0090918F0090939D |
:1001E0007E0380937D030895AF92BF92CF92DF92FA |
:1001F000EF92FF920F931F93CF93DF93182F1092DC |
:100200009900439885E090E090937100809370008E |
:1002100026DFD9D488EC90E05ED3C12FDD27D093C0 |
:100220007100C09370004CE2A42E41E0B42EC12CAA |
:10023000D12CEE24FF2487010EC080916600882314 |
:1002400011F4C7D101C0B8D284E638DF0894E11CAC |
:10025000F11C011D111DEA14FB040C051D0569F7B5 |
:10026000C601B5012FE030E040E050E099D7A21A76 |
:10027000B30AC40AD50A0894A108B108C108D10874 |
:1002800089E1A816B104C104D104C0F09CD48091C6 |
:1002900097008F5F809397008091970066E060D70A |
:1002A0009093970033D3D0937100C0937000D7DE42 |
:1002B000449BBFCF82B3805882BBBBCFDF91CF912D |
:1002C0001F910F91FF90EF90DF90CF90BF90AF9074 |
:1002D0000895AF92BF92CF92DF92EF92FF920F9369 |
:1002E0001F93CF93DF9388E084BB85BB8AEB81BBF0 |
:1002F00080E882BB8EE087BB81E388BB77D2CED219 |
:10030000789486E990E0E7D297988AEF90E0E3D27C |
:10031000C1E0D0E0C430D10549F4979A86E990E075 |
:10032000DAD297988AEF90E0D6D20BC086E990E0B7 |
:10033000D2D297988AEF90E0CED22196C530D105DF |
:1003400049F784EF91E0C7D251D2AEDE80E5DBD32E |
:1003500017D385E690E0ABD286E690E0A8D287E698 |
:1003600090E0A5D2EC018EEF90E0A1D25C018DEE81 |
:1003700093E09DD28C018EEE93E099D26C01CE0178 |
:100380009FD28823E1F3979A109271001092700027 |
:1003900066DE88E080BF81E087B98AE090E087D29E |
:1003A000EC0181E090E090937A03809379031092BE |
:1003B0008F0010928E00EE2488DE992790937100B2 |
:1003C00080937000809197008E1551F01092630019 |
:1003D0001092620082E390E06AD2EC01E090970014 |
:1003E0008091700090917100892BC9F410927F0068 |
:1003F00010926200C80164D28823D9F0109299004B |
:10040000439881E08093630082B3877C82BB82E063 |
:100410008FBD81E485BD85B3817F85BB0EC0809192 |
:100420006300882319F081E080937F008CED95E0D4 |
:100430003ED280916300882321F0109271001092C7 |
:1004400070000DDE809162008F5F809362008130CA |
:1004500009F0B2CF809163008111979AC50130D223 |
:10046000882339F182E390E022D25C01809175000B |
:10047000482F55272091720030917300421753077F |
:1004800010F48F5F04C02417350718F4815080934F |
:1004900075008091750090916400823428F091502D |
:1004A00090936400AB9A05C09F3F19F09F5F9093B3 |
:1004B0006400C80105D2882309F18AE090E0F7D1F1 |
:1004C0008C012091800030918100C901880F991F13 |
:1004D000820F931F880F991F66E070E04DD67093CE |
:1004E00083006093820010928100109280008091BE |
:1004F0009100882319F481E080936500C601E0D162 |
:10050000882321F08CED95E0D2D16C01CE01D8D1B9 |
:10051000882331F08091820090918300892B29F00B |
:1005200080917F00882309F447CF61E0F62EF09296 |
:10053000630010929900439884E690E0B8D1EC01F2 |
:1005400080917F00882309F437CFAB9810927F0009 |
:100550008AE04ADE979A109263008091970081505A |
:100560008093970081E090E09093710080937000F9 |
:1005700076DD88B18C7F88B9F092990088B18A6065 |
:1005800088B984E690E093D1EC01CE0199D188231B |
:10059000E1F38AE090E090937100809370005FDD5A |
:1005A00088EC90E084D1EC01CE018AD18823E1F37C |
:1005B00088EE93E07CD1EC0157E0E52EFDCE1F9252 |
:1005C0000F920FB60F9211240F900FBE0F901F9035 |
:1005D00018955E9B24C0809166008823E1F4809189 |
:1005E000890090918A00019690938A0080938900F7 |
:1005F000FC01E556FD4FE081ED3019F084369105A0 |
:1006000039F410928A001092890081E0809366008C |
:10061000589AECB9089510928A00109289000895B2 |
:100620001F920F920FB60F9211248F938CB180936B |
:10063000870080918700853F19F41092670014C0ED |
:10064000809167008F5F80936700843041F48091D0 |
:1006500087008093860088EC80937A0005C08536F9 |
:1006600018F084E6809367008F910F900FBE0F9073 |
:100670001F901895DC0120E030E040E050E0EBE90D |
:10068000F2E005C08191280F311D4F5F5F4F4A177F |
:100690005B07C1F73F70C90136E0969587953A959B |
:1006A000E1F7835CFD01E556FD4F808311962F73C2 |
:1006B000235CFD01E556FD4F2083A456BD4F8DE020 |
:1006C0008C931092660080919B028CB90895EF92F2 |
:1006D000FF920F931F93CF93DF937A01722F93E2D0 |
:1006E00090939B0260939C0280939D0203E010E034 |
:1006F00060E0AEE9B2E046C0F701E60FF11D90817F |
:100700006F5F715019F4E0E040E00FC0F701E60FB1 |
:10071000F11D40816F5F715011F4E0E006C0F701F8 |
:10072000E60FF11DE0816F5F7150892F86958695E8 |
:10073000835C8C935527892F99278370907024E0D0 |
:10074000880F991F2A95E1F79A0194E0369527952D |
:100750009A95E1F7822B835CED0189834F7050708D |
:10076000440F551F440F551F8E2F829586958695F1 |
:100770008370842B835C8A83EF73E35CEB830C5F71 |
:100780001F4F1496772309F0B7CFC80173DFDF91AD |
:10079000CF911F910F91FF90EF9008951F93182F05 |
:1007A0008A3011F48DE0FADF5D9BFECF1CB980E04A |
:1007B00090E01F91089508958091FF0290910003A9 |
:1007C0007FD0882391F080916600882371F022E227 |
:1007D00045E653E060919A0284E479DF82E390E099 |
:1007E00066D0909300038093FF02089588E18AB950 |
:1007F000599A579A8CE089B960E070E08EEC93E0EA |
:1008000049D388EC90E053D0909300038093FF028B |
:100810008AE28CB908951F920F920FB60F9211249D |
:100820008F939F9380E882BF809187038F5F80932F |
:10083000870380918D00815080938D008F3F39F523 |
:1008400083E080938D0080918B0090918C000196C5 |
:1008500090938C0080938B00809178009091790028 |
:10086000009729F001979093790080937800809108 |
:100870009100882329F0809191008150809391000C |
:1008800080917A00882319F0815080937A009F919B |
:100890008F910F900FBE0F901F90189582E083BF2D |
:1008A00089B7816089BF89B7806489BF0895209125 |
:1008B0008B0030918C00280F391FC90101970895D2 |
:1008C00020918B0030918C00821B930B892F9927EC |
:1008D00080789927089520918B0030918C00280F03 |
:1008E000391F2150304080918B0090918C00A901DC |
:1008F000481B590BCA01892F992787FFF4CF089508 |
:1009000085EA86B987E087B9369A089527B196E0D7 |
:1009100097B910BE82ED86B9349A97B9369A349B4E |
:10092000FECF27B944B155B1440F551F440F551F91 |
:10093000493C510510F048EC50E0809172009091D4 |
:1009400073009C0163E0220F331F6A95E1F7281BB7 |
:10095000390B240F351F83E0369527958A95E1F7EB |
:10096000309373002093720080917400992782174E |
:10097000930710F42093740016B888E080BF0895A0 |
:100980008EB5806C8EBD8EB580648EBD89B7806259 |
:1009900089BF89B7846089BF08951F920F920FB6EF |
:1009A0000F9211248F93809190008F5F809390001D |
:1009B0008F910F900FBE0F901F9018951F920F925E |
:1009C0000FB60F9211242F933F934F935F938F9302 |
:1009D0009F930EB406FE0FC01092900086B597B597 |
:1009E00090939500809394008EB58F7B8EBD84E6A6 |
:1009F000809391006EC08EB580648EBD46B557B5AC |
:100A0000809190002091940030919500421B530BEF |
:100A10009927982F8827990F480F591F529542956B |
:100A20004F7045275F704527509393004093920085 |
:100A300081E04831580758F41092930010929200C8 |
:100A400080918E0090918F0040E050E013C048519B |
:100A50005140509393004093920080918E0090916A |
:100A60008F008417950730F480918E0090918F004D |
:100A700001960CC080918E0090918F004817590705 |
:100A800048F480918E0090918F00019790938F0091 |
:100A900080938E0080918E0090918F009C01220F98 |
:100AA000331F220F331F220F331F281B390B240F34 |
:100AB000351F83E0369527958A95E1F730939300AB |
:100AC0002093920030938F0020938E0081E08093DA |
:100AD00065009F918F915F914F913F912F910F9062 |
:100AE0000FBE0F901F9018951F920F920FB60F9286 |
:100AF00011248F938AB78F7B8ABF8F910F900FBE7F |
:100B00000F901F901895885F82B985EC86BF089575 |
:100B10001F920F920FB60F9211248F939F9381B162 |
:100B20009927887F907080389105C9F081389105A8 |
:100B300034F4009791F18036910591F50AC0883B15 |
:100B40009105B9F0883F910529F1883A910541F561 |
:100B500010C086B7806886BF1092960023C083B10C |
:100B60008093880384EF91E09093790080937800DC |
:100B70000EC080919600882339F48091750083B966 |
:100B800081E08093960003C08091640083B986B7AA |
:100B9000806807C086B7806986BF86B7806986BFD0 |
:100BA00085EC86BF9F918F910F900FBE0F901F9085 |
:100BB00018951F920F920FB60F9211240F900FBE2F |
:100BC0000F901F90189590919700923041F19330BB |
:100BD00030F4992361F0913009F057C014C094307B |
:100BE000C1F1943040F1953009F04FC042C082EA23 |
:100BF0008FBD81E685BD88E087BB82B3877D82BBE0 |
:100C0000949A82E031C082EA8FBD81E685BD88E09A |
:100C100087BB82B3877E82BB959A97B918C082EA58 |
:100C20008FBD81E485BD8CE087BB82B3877E82BBAC |
:100C3000959A17B81AC082EA8FBD81E485BD8CE011 |
:100C400087BB82B38F7C82BB939A82E087B940983E |
:100C5000089582EA8FBD81E485BD8AE087BB82B3B7 |
:100C60008F7C82BB939A81E087B988B1836088B911 |
:100C7000089582EA8FBD81E485BD8AE087BB82B397 |
:100C8000877D82BB949A17B8409808951F920F925F |
:100C90000FB60F9211240F931F932F933F934F93EF |
:100CA0005F936F937F938F939F93AF93BF93EF93D4 |
:100CB000FF9388B19927689414F8969587951694B0 |
:100CC000E1F7082F017010919700123009F456C017 |
:100CD000133030F4112371F0113009F0BCC024C07E |
:100CE000143009F47EC0143008F461C0153009F0E6 |
:100CF000B2C091C082EA8FBD81E685BD88E087BB26 |
:100D0000002369F082B3877E82BB959A11E014BDFF |
:100D1000809165008111FADD409817B91AC082B33D |
:100D2000877D82BB949A97C082B3877E82BB959A57 |
:100D30000023F1F482EA8FBD81E485BD8CE087BB9E |
:100D400014BD809165008111E1DD17B888B1836021 |
:100D500088B9809197008F5F809397008091800081 |
:100D6000909181000196909381008093800073C0E0 |
:100D700082EA8FBD81E685BD88E06CC082EA8FBDC6 |
:100D800081E485BD8CE087BB002361F082B38F7C5A |
:100D900082BB939A81E084BD809165008111B6DDAC |
:100DA00017B932C082B3877E82BB959A54C082B392 |
:100DB0008F7C82BB939A002371F482EA8FBD81E419 |
:100DC00085BD8AE087BB11E014BD8091650081116B |
:100DD0009DDD17B9BBCF82EA8FBD81E485BD8CE074 |
:100DE00039C082EA8FBD81E485BD8AE087BB0023DC |
:100DF00069F082B3877D82BB949A81E084BD809143 |
:100E00006500811183DD17B84098A3CF82B38F7C32 |
:100E100082BB939A20C082B3877D82BB949A0023C1 |
:100E2000A1F482EA8FBD81E685BD88E087BB81E0C1 |
:100E300084BD80916500811169DD82E087B988B148 |
:100E4000836088B91092970089CF82EA8FBD81E4D0 |
:100E500085BD8AE087BB459903C0002309F029CFEF |
:100E6000459B03C0002309F424CF10926500FF9135 |
:100E7000EF91BF91AF919F918F917F916F915F9112 |
:100E80004F913F912F911F910F910F900FBE0F9097 |
:100E90001F901895EF92FF920F931F93CF93DF93BC |
:100EA0008C017B01892B11F4672BC9F16EE070E096 |
:100EB00081E090E03BD0FC01009789F1DC0180E803 |
:100EC0008383E114F10471F0F386E28681E8838381 |
:100ED0008091890390918A03892B21F4F0938A03EE |
:100EE000E093890301151105E1F0118700878381E3 |
:100EF0008260838380918B0390918C03892B89F48A |
:100F0000F0938C03E0938B0380918D0390918E037B |
:100F1000892B39F4F0938E03E0938D0302C0A0E097 |
:100F2000B0E0CD01E6E0CDB7DEB768C10F931F9307 |
:100F3000CF93DF93869F8001879F100D969F100DA2 |
:100F40001124C8010DD0EC01009721F0A80160E048 |
:100F500070E0FFD0CE01DF91CF911F910F910895E6 |
:100F6000CF93DF93AC01029710F442E050E0A091E0 |
:100F70009103B0919203FD01C0E0D0E020E030E0A9 |
:100F800020C0808191818417950769F482819381C3 |
:100F9000209719F09B838A8304C0909392038093D7 |
:100FA0009103CF0132C04817590738F42115310594 |
:100FB00019F08217930708F49C01EF010280F38176 |
:100FC000E02D3097F1F62115310589F1C901841B17 |
:100FD000950B049708F4A901E0E0F0E026C08D919C |
:100FE0009C91119782179307E9F44817590779F4F0 |
:100FF000ED018A819B81309719F09383828304C02D |
:101000009093920380939103CD01029649C0841B73 |
:10101000950BFD01E80FF91F4193519302978D93B2 |
:101020009C933AC0FD01A281B3811097C1F68091D3 |
:101030008F0390919003892B41F480916B009091E4 |
:101040006C009093900380938F0320916D003091FA |
:101050006E002115310541F42DB73EB7809169002E |
:1010600090916A00281B390BE0918F03F091900357 |
:101070002E1B3F0B2417350788F0CA01029628174C |
:10108000390760F0CF01840F951F0296909390036B |
:1010900080938F0341935193CF0102C080E090E091 |
:1010A000DF91CF910895CF93DF93009709F44EC05D |
:1010B000EC0122971B821A82A0919103B0919203B6 |
:1010C000109711F140E050E001C0DC01AC17BD0702 |
:1010D00000F1BB83AA83FE0121913191E20FF31F3E |
:1010E000EA17FB0771F42E5F3F4F8D919C9111978A |
:1010F000820F931F99838883FD01828193819B8353 |
:101100008A834115510559F4D0939203C0939103FA |
:101110001DC0FD0182819381AD010097B1F6FA01F6 |
:10112000D383C28321913191E20FF31FEC17FD07A6 |
:1011300069F42E5F3F4F88819981820F931FFA01D6 |
:10114000918380838A819B8193838283DF91CF9176 |
:101150000895DC0101C06D9341505040E0F70895BF |
:10116000991B79E004C0991F961708F0961B881FF9 |
:101170007A95C9F780950895AA1BBB1B51E107C05A |
:10118000AA1FBB1FA617B70710F0A61BB70B881F17 |
:10119000991F5A95A9F780959095BC01CD010895A6 |
:1011A000A1E21A2EAA1BBB1BFD010DC0AA1FBB1F6B |
:1011B000EE1FFF1FA217B307E407F50720F0A21BDD |
:1011C000B30BE40BF50B661F771F881F991F1A944A |
:1011D00069F760957095809590959B01AC01BD0174 |
:1011E000CF0108952A88398848885F846E847D8479 |
:1011F0008C849B84AA84B984C884DF80EE80FD80BF |
:101200000C811B81AA81B981CE0FD11D0FB6F89434 |
:0C121000DEBF0FBECDBFED010895FFCF83 |
:10121C000A000101FF010164642000930300000037 |
:00000001FF |
/branches/BL-Ctrl/PPM_Decode.c |
---|
0,0 → 1,76 |
/*############################################################################ |
+ Regler für Brushless-Motoren |
+ ATMEGA8 mit 8MHz |
+ (c) 01.2007 Holger Buss |
+ Nur für den privaten Gebrauch |
+ Keine Garantie auf Fehlerfreiheit |
+ Kommerzielle Nutzung nur mit meiner Zustimmung |
+ Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
+ www.mikrocontroller.com |
############################################################################*/ |
#include "main.h" |
volatile unsigned int PPM_Signal = 0; |
volatile unsigned char Timer1Overflow = 0; |
volatile unsigned char PPM_Timeout = 0; // Ungültig, wenn Null |
//############################################################################ |
// |
void InitPPM(void) |
//############################################################################ |
{ |
TCCR1B |= (1<<ICES1)|(1<<ICNC1); |
ICP_POS_FLANKE; |
ICP_INT_ENABLE; |
TIMER1_INT_ENABLE; |
} |
//############################################################################ |
// |
SIGNAL(SIG_OVERFLOW1) |
//############################################################################ |
{ |
Timer1Overflow++; |
} |
//############################################################################ |
// |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int tim_alt; |
static unsigned int ppm; |
if(TCCR1B & (1<<ICES1)) // Positive Flanke |
{ |
Timer1Overflow = 0; |
tim_alt = ICR1; |
ICP_NEG_FLANKE; |
PPM_Timeout = 100; |
} |
else // Negative Flanke |
{ |
ICP_POS_FLANKE; |
#ifdef _32KHZ |
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 256) / 16; |
#endif |
#ifdef _16KHZ |
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 512) / 16; |
#endif |
if(ppm < 280) ppm = 280; |
ppm -= 280; |
if(PPM_Signal < ppm) PPM_Signal++; |
else if(PPM_Signal > ppm) PPM_Signal--; |
if(FILTER_PPM) ppm = (PPM_Signal * FILTER_PPM + ppm) / (FILTER_PPM + 1); // Filtern |
PPM_Signal = ppm; |
ZeitZumAdWandeln = 1; |
} |
} |
//############################################################################ |
// |
SIGNAL(SIG_INTERRUPT0) |
//############################################################################ |
{ |
CLR_INT0_FLAG; // IntFlag Loeschen |
} |
/branches/BL-Ctrl/PPM_Decode.h |
---|
0,0 → 1,27 |
/*############################################################################ |
############################################################################*/ |
extern volatile unsigned int PPM_Signal; |
extern volatile unsigned char PPM_Timeout; |
void InitPPM(void); |
#define INT0_ENABLE GIMSK |= 0x40 |
#define INT0_DISABLE GIMSK &= ~0x40 |
#define TIM0_START TIMSK |= 0x01 |
#define TIM0_STOPP TIMSK &= ~0x01 |
#define ICP_INT_ENABLE TIMSK |= 0x20 |
#define ICP_INT_DISABLE TIMSK &= ~0x20 |
#define TIMER1_INT_ENABLE TIMSK |= 0x04 |
#define TIMER1_INT_DISABLE TIMSK &= ~0x04 |
#define TIMER2_INT_ENABLE TIMSK |= 0x40 |
#define TIMER2_INT_DISABLE TIMSK &= ~0x40 |
#define INT0_POS_FLANKE MCUCR |= 0x01 |
#define INT0_ANY_FLANKE MCUCR |= 0x01 |
#define INT0_NEG_FLANKE MCUCR &= ~0x01 |
#define CLR_INT0_FLAG GIFR &= ~0x40 |
#define INIT_INT0_FLANKE MCUCR &= ~0x03; MCUCR |= 0x02; |
#define TIMER0_PRESCALER TCCR0 |
#define ICP_POS_FLANKE TCCR1B |= (1<<ICES1) |
#define ICP_NEG_FLANKE TCCR1B &= ~(1<<ICES1) |
/branches/BL-Ctrl/README.TXT |
---|
0,0 → 1,10 |
Nicht vergessen: |
ATmega8 auf 4 MHz stellen: |
Fusebits: |
CKSEL3: on |
CKSEL2: on |
CKSEL1: off |
CKSEL0: off |
/branches/BL-Ctrl/analog.c |
---|
0,0 → 1,39 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
//############################################################################ |
//Init ADC |
void ADC_Init(void) |
//############################################################################ |
{ |
ADCSRA = 0xA5; // Free Run, 125 kHZ |
ADMUX = 7; // Kanal 7 |
ADCSRA |= 0x40; // Start |
} |
//############################################################################ |
//Strom Analogwerte lesen |
void AdConvert(void) |
//############################################################################ |
{ |
unsigned int i=0; |
unsigned char sense; |
sense = ADMUX; // Sense-Kanal merken |
ADMUX = 0x06; // Kanal 6 |
SFIOR = 0x00; // Analog Comperator aus |
ADCSRA = 0xD2; // Converter ein, single, 1 MHz |
ADCSRA |= 0x10; // Ready löschen |
ADMUX = 0x06; // Kanal 6 |
ADCSRA |= 0x40; // Start |
while (((ADCSRA & 0x10) == 0)); |
ADMUX = sense; // zurück auf den Sense-Kanal |
i = ADCW * 4; |
if(i > 200) i = 200; |
Strom = (i + Strom * 7) / 8; |
if (Strom_max < Strom) Strom_max = Strom; |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
} |
/branches/BL-Ctrl/analog.h |
---|
0,0 → 1,5 |
extern void ADC_Init(void); |
extern void GetAnalogWerte(void); |
extern void AdConvert(void); |
/branches/BL-Ctrl/avr.pjt |
---|
0,0 → 1,199 |
;Codewright Project File (do not remove or modify this line) |
[ProjInit] |
ConfigSetExtMode=2 |
ProjSetConfigFlags=0x04110940 |
[State] |
SysSetCwd='C:\WinAVR\Projects\Flug\Flight-Ctrl_V0_22' |
SrchSetFlags=0x0005600a |
SrchSetAgainFlags=0x04056004,0 |
SrchSetAgainFlags=0x02056008,1 |
SrchSetAttrElements= |
SrchSetAgainAttrElements= |
FileSortMode=0x0 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\PPM_Decode.c',81,81,1058,605,-1,-1,29,16,2,1,12,'',0x00100008,0,80,0,0,'',0,12 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\main.c',135,135,1058,605,-1,-1,276,8,254,1,3,'',0x00100008,0,80,0,0,'',0,3 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\BLMC.c',0,0,1165,490,-1,-1,1,1,1,1,5,'',0x00100008,0,80,0,0,'',0,5 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\BLMC.h',27,27,1165,490,-1,-1,46,1,26,1,9,'',0x00100008,0,80,0,0,'',0,9 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\timer0.c',135,135,1058,605,-1,-1,30,31,1,1,7,'',0x00100008,0,80,0,0,'',0,7 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\twislave.c',162,162,1058,605,-1,-1,117,1,104,1,8,'',0x00100008,0,80,0,0,'',0,8 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\uart.h',189,189,1058,605,-1,-1,30,5,1,1,2,'',0x00100008,0,80,0,0,'',0,2 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\analog.h',216,216,1058,605,-1,-1,2,1,1,1,14,'',0x00100008,0,80,0,0,'',0,14 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\main.h',243,243,1058,605,-1,-1,30,30,1,1,1,'',0x00100018,0,80,0,0,'',0,1 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\old_macros.h',270,270,1058,605,-1,-1,1,1,1,1,15,'',0x00100008,0,80,0,0,'',0,15 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\PPM_Decode.h',0,0,1058,605,-1,-1,13,9,1,1,10,'',0x00100008,0,80,0,0,'',0,10 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\timer0.h',54,54,1058,605,-1,-1,10,4,1,1,11,'',0x00100008,0,80,0,0,'',0,11 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\twislave.h',81,81,1058,605,-1,-1,1,1,1,1,16,'',0x00100008,0,80,0,0,'',0,16 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\makefile',108,108,1058,605,-1,-1,6,1,1,1,6,'',0x00100008,0,80,0,0,'',0,6 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\uart.c',0,0,1058,605,-1,-1,161,1,139,1,4,'',0x00100008,0,80,0,0,'',0,4 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\analog.c',27,27,1058,605,-1,-1,30,48,1,1,13,'',0x00100008,0,80,0,0,'',0,13 |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\PPM_Decode.c',0x0400048e,29,16,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\main.c',0x0400048e,276,8,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\BLMC.c',0x0000048e,1,1,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\BLMC.h',0x0400048e,46,1,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\timer0.c',0x0400048e,30,31,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\twislave.c',0x0400048e,117,1,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\uart.h',0x0400048e,30,5,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\analog.h',0x0400048e,2,1,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\main.h',0x0c00048e,30,30,25,'5 9','',0x0,'',1,72,1,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\old_macros.h',0x0000048e,1,1,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\PPM_Decode.h',0x0400048e,13,9,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\timer0.h',0x0c00048e,10,4,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\twislave.h',0x0000048e,1,1,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\makefile',0x0400048e,6,1,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\uart.c',0x0400048e,161,1,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\analog.c',0x0c00048e,30,48,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateHistory=FILELIST,'C:\WinAVR\Projects\Flug\BL_MC_0_27\old_macros.h','C:\WinAVR\Projects\Flug\BL_MC_0_27\PPM_Decode.h','C:\WinAVR\Projects\Flug\BL_MC_0_27\printf_P.h','C:\WinAVR\Projects\Flug\BL_MC_0_27\timer0.h','C:\WinAVR\Projects\Flug\BL_MC_0_27\twislave.h','C:\WinAVR\Projects\Flug\BL_MC_0_27\makefile','C:\WinAVR\Projects\Flug\BL_MC_0_27\main.c','C:\WinAVR\Projects\Flug\BL_MC_0_27\BLMC.c','C:\WinAVR\Projects\Flug\BL_MC_0_27\BLMC.h' |
_StateHistory=SEARCH,'ClrSENSE()','GRUEN','MANUELL_PWM','ENABLE_SENSE_INT','ACSR','GRUE','MotorGestoppt','MotorAnwerfen','SIO_DEBUG','X3D_SIO' |
_StateHistory=REPLACE,'DebugDisplayZeilenAnforderung','SollPeriodendauer','TestschubTimer','SENSE_h','SENSE_L','SENSE_H','SENSE__FALLING_INT','SENSE_RISING_INT','SENSE_FALLING_INT' |
_StateHistory=EDITFILE,'C:\WinAVR\Projects\Flug\BL_MC_0_27\PPM_Decode.h','C:\WinAVR\Projects\Flug\BL_MC_0_27\printf_P.h','C:\WinAVR\Projects\Flug\BL_MC_0_27\timer0.h','C:\WinAVR\Projects\Flug\BL_MC_0_27\twislave.h','C:\WinAVR\Projects\Flug\BL_MC_0_27\main.c','C:\WinAVR\Projects\Flug\BL_MC_0_27\makefile','C:\WinAVR\Projects\Flug\Flight-Ctrl_V0_05\AVR.pjt','C:\WinAVR\Projects\Flug\Flight-Ctrl_V0_06\Main.psp','C:\compiler\M16C\UniversalGateway\UN_DP_V1_25\m16C.psp','C:\WinAVR\Projects\Flug\Flight-Ctrl_V0_22\Main.psp' |
_StateHistory=DOCUMENTVISIT,'14 18 C:\WinAVR\Projects\Flug\BL_MC_0_27\main.h','276 8 C:\WinAVR\Projects\Flug\BL_MC_0_27\main.c','15 16 C:\WinAVR\Projects\Flug\BL_MC_0_27\main.h','161 1 C:\WinAVR\Projects\Flug\BL_MC_0_27\uart.c','33 5 C:\WinAVR\Projects\Flug\BL_MC_0_27\uart.h','30 30 C:\WinAVR\Projects\Flug\BL_MC_0_27\main.h','33 5 C:\WinAVR\Projects\Flug\BL_MC_0_27\uart.h','30 30 C:\WinAVR\Projects\Flug\BL_MC_0_27\main.h','276 8 C:\WinAVR\Projects\Flug\BL_MC_0_27\main.c','33 5 C:\WinAVR\Projects\Flug\BL_MC_0_27\uart.h' |
_StateDocumentVisit=10 |
[Editor] |
_RestoreSysFlags=0x43097fca, 0xfffffffc, 0 |
FilterProjDeleteList |
FilterProjAdd='Source Files','*.c;*.cc;*.cpp;*.cxx;*.ic;*.c96;*.fle;*.cmp;*.asm;*.src;*.s;*.a96;*.i;*.pcp',-1 |
FilterProjAdd='Header Files','*.h;*.inc;*.sfr',-1 |
FilterProjAdd='Project Files','*.pjt',-1 |
FilterProjAdd='Resources','*.rc;*.bmp;*.ico;*.cur;*.dlg',-1 |
FilterProjAdd='Other Files','*.*',-1 |
VCSProject='' |
VCSProjectPath='' |
VCSProjectLocalPath='' |
ScrapSetCount=1 |
ClipboardSetCount=1 |
ClipboardEnableSepStr=1 |
ClipboardSetSepStr='\r\n',0 |
ClipboardEnableTermStr=1 |
ClipboardSetTermStr='\r\n',0 |
[Tools] |
ToolDeleteList |
ToolAddCmd='$_custom_tool_$_1','API Database Editor',1342177312,'cwtedit.exe' |
ToolAddCmd='$_custom_tool_$_2','Paint',1342177713,'make.exe program' |
ToolAddCmd='$_custom_tool_$_3','Build all',1342177680,'make.exe all' |
ToolAddCmd='$_custom_tool_$_4','Bulid Clean',1342177680,'make.exe clean' |
[Compiler] |
CompilerAssign='TASKING src','.src' |
CompilerNewExt=.htm |
CompilerNewExt=.v |
CompilerNewExt=.awk |
CompilerNewExt=.bas |
CompilerAssign='TASKING c','.c' |
CompilerNewExt=.adb |
CompilerNewExt=.cfml |
CompilerNewExt=.jsp |
CompilerNewExt=.pl |
CompilerNewExt=.vhd |
CompilerNewExt=.pas |
CompilerNewExt=.tk |
CompilerNewExt=.asp |
CompilerNewExt=.rul |
CompilerNewExt=.cob |
CompilerNewExt=.js |
CompilerNewExt=.php |
CompilerNewExt=.rc |
CompilerNewExt=.tcl |
CompilerAssign='TASKING cc','.cc' |
CompilerAssign='TASKING fle','.fle' |
CompilerNewExt=.ini |
CompilerAssign='TASKING ic','.ic' |
CompilerNewExt=.cs |
CompilerNewExt=.bat |
CompilerNewExt=.html |
CompilerAssign='TASKING cpp','.cpp' |
CompilerAssign='TASKING cxx','.cxx' |
CompilerAssign='TASKING asm','.asm' |
CompilerNewExt=.txt |
CompilerNewExt=.nrx |
CompilerNewExt=.java |
CompilerNewExt=.sqlj |
CompilerNewExt=.xml |
TagSetCmd='"${HOME}${WTAGS}" -oc -d -t"${TAGFILE}.tag" -p"${TAGFILE}.ptg"',0x8000060 |
BrowseSetFile='C:\Cw32_M16\tagfile.ptg' |
TagSetFile='C:\Cw32_M16\tagfile.tag' |
[VersionControl:PVCS] |
VCSSetCmd=VCS_CHECKIN_ID,'put -n -T@"%Q" -M@"%Q" "%b%e"',0x8000040 |
VCSSetCmd=VCS_CHECKINLOCK_ID,'put -n -T@"%Q" -M@"%Q" -l "%b%e"',0x8000040 |
VCSSetCmd=VCS_CHECKOUT_ID,'get -y "%b%e"',0x8000040 |
VCSSetCmd=VCS_CHECKOUTLOCK_ID,'get -y -l "%b%e"',0x8000040 |
VCSSetCmd=VCS_CHECKLOCK_ID,'vcs -y -l "%b%e"',0x8000040 |
VCSSetCmd=VCS_CHECKUNLOCK_ID,'vcs -y -u "%b%e"',0x8000040 |
VCSSetCmd=VCS_CHECKLABEL_ID,'vcs -y -v"${VCSLABEL}" "%b%e"',0x8000040 |
VCSSetCmd=VCS_CHECKLOG_ID,'vlog "%b%e"',0x8000040 |
VCSSetCmd=VCS_CHECKPROP_ID,'vlog -b "%b%e"',0x8000040 |
VCSSetCmd=VCS_CHECKDIFF_ID,'vdiff -r "%b%e"',0x8000040 |
VCSSetCmd=VCS_CHECKMENU_ID,'pvcsvmwn',0x8000000 |
VCSSetCmd=VCS_ADD_ID,'vcs -i -t@"%Q" "%b%e"',0x8000040 |
VCSSetCmd=VCS_REMOVE_ID,'del /f "%b%{??v|___}e"',0x8000040 |
[Project] |
ConfigSetUserMakefile='' |
ConfigSetUserMakefileParser='' |
ConfigSetUserMakefileTimeStamp=0 |
ConfigSetUserMakefileAutoSync=0 |
ConfigSetLinkDBFilename='C:\Cw32\cwright.ldb' |
ConfigSetMarkDBFilename='C:\Cw32\cwright.mrk' |
ConfigSetSymbolDBFilename='C:\WinAVR\Projects\Flug\BL_MC_0_01\avr.sbl' |
EditSetPath='' |
[Files] |
.\uart.c |
.\analog.c |
.\interrupt4.c |
.\main.c |
.\PPM_Decode.c |
.\printf_P.c |
.\timer0.c |
.\twislave.c |
.\uart.h |
.\analog.h |
.\main.h |
.\old_macros.h |
.\PPM_Decode.h |
.\printf_P.h |
.\timer0.h |
.\twislave.h |
.\makefile |
[Ede] |
Toolchain=c:\c166\etc\c166.dol |
ToolchainName=TASKING C for C166/ST10 v6.0 r4 |
ProjectDir=C:\WinAVR\Projects\Flug\BL_MC_0_27 |
UserMode=Expert |
EdeVersion=2.7r5 (094) |
CodeWrightVersion=7.0 |
DefBuildSettings=True |
SaveFiles=True |
ScanDependencies=False |
StopAfterError=True |
KeepTmpFiles=False |
ExtMakefile=False |
ExtMakefileName= |
UseMakeOptions=False |
MakeOptions= |
ShowOptions=False |
ExtDebugger=False |
ExtDebuggerName= |
UseDOSShell=False |
SaveOptionMethod=0 |
SaveOptionFileName= |
LoadOptionFileName= |
LoadOptionStartup=False |
GroupList= |
[Directories] |
Executables=c:\c166\bin |
Includes=c:\c166\include |
Libraries=c:\c166\lib |
[DefaultOptions] |
CpuRwdc=CpuRwdcDelay |
OptionList=CpuRwdc |
[Options] |
FileList= |
/branches/BL-Ctrl/main.c |
---|
0,0 → 1,349 |
/*############################################################################ |
+ Regler für Brushless-Motoren |
+ ATMEGA8 mit 8MHz |
+ (c) 01.2007 Holger Buss |
+ Nur für den privaten Gebrauch |
+ Keine Garantie auf Fehlerfreiheit |
+ Kommerzielle Nutzung nur mit meiner Zustimmung |
+ Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
+ www.mikrocontroller.com |
/############################################################################*/ |
#include "main.h" |
unsigned int PWM = 0; |
unsigned int Strom = 0; //ca. in 0,1A |
unsigned char Strom_max = 0; |
unsigned char Mittelstrom = 0; |
unsigned int Drehzahl = 0; // in 100UPM 60 = 6000 |
unsigned int KommutierDelay = 10; |
unsigned int I2C_Timeout = 0; |
unsigned char SIO_Timeout = 0; |
unsigned int SollDrehzahl = 0; |
unsigned int IstDrehzahl = 0; |
unsigned int DrehZahlTabelle[256];//vorberechnete Werte zur Drehzahlerfassung |
unsigned char ZeitFuerBerechnungen = 1; |
unsigned char MotorAnwerfen = 0; |
unsigned char MotorGestoppt = 1; |
unsigned char MaxPWM = MAX_PWM; |
unsigned int CntKommutierungen = 0; |
unsigned int SIO_Drehzahl = 0; |
unsigned char ZeitZumAdWandeln = 1; |
//############################################################################ |
// |
void SetPWM(void) |
//############################################################################ |
{ |
unsigned char tmp_pwm; |
tmp_pwm = PWM; |
if(tmp_pwm > MaxPWM) // Strombegrenzung |
{ |
tmp_pwm = MaxPWM; |
PORTC |= ROT; |
} |
if(Strom > MAX_STROM) // Strombegrenzung |
{ |
OCR1A = 0; OCR1B = 0; OCR2 = 0; |
PORTC |= ROT; |
Strom--; |
} |
else |
{ |
#ifdef _32KHZ |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
#endif |
#ifdef _16KHZ |
OCR1A = 2 * (int)tmp_pwm; OCR1B = 2 * (int)tmp_pwm; OCR2 = tmp_pwm; |
#endif |
} |
} |
//############################################################################ |
// |
void PWM_Init(void) |
//############################################################################ |
{ |
PWM_OFF; |
TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (1 << WGM12) | |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
} |
//############################################################################ |
// |
void Wait(unsigned char dauer) |
//############################################################################ |
{ |
dauer = (unsigned char)TCNT0 + dauer; |
while((TCNT0 - dauer) & 0x80); |
} |
//############################################################################ |
// |
void Anwerfen(unsigned char pwm) |
//############################################################################ |
{ |
unsigned long timer = 300,i; |
DISABLE_SENSE_INT; |
PWM = 5; |
SetPWM(); |
Manuell(); |
Delay_ms(200); |
PWM = pwm; |
while(1) |
{ |
for(i=0;i<timer; i++) |
{ |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
Wait(100); // warten |
} |
timer-= timer/15+1; |
if(timer < 25) { if(TEST_MANUELL) timer = 25; else return; } |
Manuell(); |
Phase++; |
Phase %= 6; |
AdConvert(); |
PWM = pwm; |
SetPWM(); |
if(SENSE) |
{ |
PORTD ^= GRUEN; |
} |
} |
} |
//############################################################################ |
// |
unsigned char SollwertErmittlung(void) |
//############################################################################ |
{ |
static unsigned int sollwert = 0; |
unsigned int ppm; |
if(!I2C_Timeout) // bei Erreichen von 0 ist der Wert ungültig |
{ |
if(SIO_Timeout) // es gibt gültige SIO-Daten |
{ |
sollwert = (MAX_PWM * (unsigned int) SIO_Sollwert) / 200; // skalieren auf 0-200 = 0-255 |
} |
else |
if(PPM_Timeout) // es gibt gültige PPM-Daten |
{ |
ppm = PPM_Signal; |
if(ppm > 300) ppm = 0; // ungültiges Signal |
if(ppm > 200) ppm = 200; |
if(ppm <= MIN_PPM) sollwert = 0; |
else |
{ |
sollwert = (int) MIN_PWM + ((MAX_PWM - MIN_PWM) * (ppm - MIN_PPM)) / (190 - MIN_PPM); |
} |
PORTC &= ~ROT; |
} |
else // Kein gültiger Sollwert |
{ |
if(!TEST_SCHUB) { if(sollwert) sollwert--; } |
PORTC |= ROT; |
} |
} |
else // I2C-Daten sind gültig |
{ |
sollwert = I2C_RXBuffer; |
PORTC &= ~ROT; |
} |
if(sollwert > MAX_PWM) sollwert = MAX_PWM; |
return(sollwert); |
} |
void DebugAusgaben(void) |
{ |
DebugOut.Analog[0] = Strom; |
DebugOut.Analog[1] = Mittelstrom; |
DebugOut.Analog[2] = SIO_Drehzahl; |
DebugOut.Analog[3] = PPM_Signal; |
} |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
char altPhase = 0; |
int test = 0; |
unsigned int MinUpmPulse,Blink,TestschubTimer; |
unsigned int Blink2,MittelstromTimer,DrehzahlMessTimer,MotorGestopptTimer; |
DDRC = 0x08; |
PORTC = 0x08; |
DDRD = 0xBA; |
PORTD = 0x80; |
DDRB = 0x0E; |
PORTB = 0x31; |
UART_Init(); |
Timer0_Init(); |
sei ();//Globale Interrupts Einschalten |
// Am Blinken erkennt man die richtige Motoradresse |
for(test=0;test<5;test++) |
{ |
if(test == MOTORADRESSE) PORTD |= GRUEN; |
Delay_ms(150); |
PORTD &= ~GRUEN; |
Delay_ms(250); |
} |
Delay_ms(500); |
UART_Init(); |
PWM_Init(); |
InitIC2_Slave(0x50); |
InitPPM(); |
Blink = SetDelay(101); |
Blink2 = SetDelay(102); |
MinUpmPulse = SetDelay(103); |
MittelstromTimer = SetDelay(254); |
DrehzahlMessTimer = SetDelay(1005); |
TestschubTimer = SetDelay(1006); |
while(!CheckDelay(MinUpmPulse)); |
PORTD |= GRUEN; |
PWM = 0; |
SetPWM(); |
SFIOR = 0x08; // Analog Comperator ein |
ADMUX = 1; |
MinUpmPulse = SetDelay(10); |
DebugOut.Analog[1] = 1; |
PPM_Signal = 0; |
// zum Test der Hardware; Motor dreht mit konstanter Drehzahl ohne Regelung |
if(TEST_MANUELL) Anwerfen(TEST_MANUELL); // kommt von dort nicht wieder |
while (1) |
{ |
if(!TEST_SCHUB) PWM = SollwertErmittlung(); |
//I2C_TXBuffer = PWM; // Antwort über I2C-Bus |
if(MANUELL_PWM) PWM = MANUELL_PWM; |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Phase != altPhase) // es gab eine Kommutierung im Interrupt |
{ |
MotorGestoppt = 0; |
ZeitFuerBerechnungen = 0; // direkt nach einer Kommutierung ist Zeit |
MinUpmPulse = SetDelay(50); // Timeout, falls ein Motor stehen bleibt |
altPhase = Phase; |
} |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!PWM) // Sollwert == 0 |
{ |
MotorAnwerfen = 0; // kein Startversuch |
ZeitFuerBerechnungen = 0; |
// nach 1,5 Sekunden den Motor als gestoppt betrachten |
if(CheckDelay(DrehzahlMessTimer)) |
{ |
DISABLE_SENSE_INT; |
MotorGestoppt = 1; |
STEUER_OFF; |
} |
} |
else |
{ |
if(MotorGestoppt) MotorAnwerfen = 1; // Startversuch |
MotorGestopptTimer = SetDelay(1500); |
} |
if(MotorGestoppt && !TEST_SCHUB) PWM = 0; |
SetPWM(); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!ZeitFuerBerechnungen++) |
{ |
if(MotorGestoppt) PORTD |= GRUEN; //else PORTD &= ~GRUEN; |
if(SIO_DEBUG) |
{ |
DebugAusgaben(); // welche Werte sollen angezeigt werden? |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
} |
// Berechnen des Mittleren Stroms zur (langsamen) Strombegrenzung |
if(CheckDelay(MittelstromTimer)) |
{ |
MittelstromTimer = SetDelay(50); // alle 50ms |
if(Mittelstrom < Strom) Mittelstrom++;// Mittelwert des Stroms bilden |
else if(Mittelstrom > Strom) Mittelstrom--; |
if(Mittelstrom > LIMIT_STROM)// Strom am Limit? |
{ |
MaxPWM--;// dann die Maximale PWM herunterfahren |
PORTC |= ROT; |
} |
else |
{ |
if(MaxPWM < MAX_PWM) MaxPWM++; |
} |
} |
if(CheckDelay(DrehzahlMessTimer)) // Ist-Drehzahl bestimmen |
{ |
DrehzahlMessTimer = SetDelay(10); |
SIO_Drehzahl = (6 * CntKommutierungen) / (POLANZAHL / 2); |
CntKommutierungen = 0; |
if(PPM_Timeout == 0) // keine PPM-Signale |
ZeitZumAdWandeln = 1; |
} |
if(CheckDelay(TestschubTimer)) |
{ |
TestschubTimer = SetDelay(1500); |
if(TEST_SCHUB) |
{ |
switch(test) |
{ |
case 0: PWM = 50; test++; break; |
case 1: PWM = 60; test++; break; |
case 2: PWM = 128; test++; break; |
case 3: PWM = 200; test++; break; |
case 4: PWM = 255; test = 0; break; |
default: test = 0; |
} |
} |
} |
// Motor Stehen geblieben |
if((CheckDelay(MinUpmPulse) && SIO_Drehzahl == 0) || MotorAnwerfen) |
{ |
MotorGestoppt = 1; |
DISABLE_SENSE_INT; |
MinUpmPulse = SetDelay(100); |
if(MotorAnwerfen) |
{ |
PORTC &= ~ROT; |
MotorAnwerfen = 0; |
Anwerfen(10); |
PORTD |= GRUEN; |
MotorGestoppt = 0; |
Phase--; |
PWM = 1; |
SetPWM(); |
SENSE_TOGGLE_INT; |
ENABLE_SENSE_INT; |
MinUpmPulse = SetDelay(100); |
while(!CheckDelay(MinUpmPulse)); // kurz Synchronisieren |
PWM = 10; |
SetPWM(); |
MinUpmPulse = SetDelay(200); |
while(!CheckDelay(MinUpmPulse)); // kurz Durchstarten |
MinUpmPulse = SetDelay(1000); |
altPhase = 7; |
} |
} |
} // ZeitFuerBerechnungen |
} // while(1) - Hauptschleife |
} |
/branches/BL-Ctrl/main.h |
---|
0,0 → 1,126 |
#ifndef _MAIN_H |
#define _MAIN_H |
#define MOTORADRESSE 4 // Adresse (1-4) |
#define MANUELL_PWM 0 // zur manuellen Vorgabe der PWM Werte: 0-255 |
#define TEST_MANUELL 0 // zum Testen der Hardware ohne Kommutierungsdetektion Werte: 0-255 (PWM) |
#define TEST_SCHUB 0 // Erzeugt ein Schubmuster Werte: 0 = normal 1 = Test |
#define POLANZAHL 12 // Anzahl der Pole (Magnete) Wird nur zur Drehzahlausgabe über Debug gebraucht |
#define MAX_PWM 255 |
#define MIN_PWM 3 |
#define MIN_PPM 10 // ab hier (PPM-Signal) schaltet der Regler erst ein |
#define FILTER_PPM 7 // wie stark soll das PPM-Signal gefiltert werden (Werte: 0-30)? |
#define SIO_DEBUG 0 // Testwertausgaben auf der seriellen Schnittstelle |
#define X3D_SIO 1 // serielles Protokoll des X3D (38400Bd) Achtung: dann muss SIO_DEBUG = 0 sein |
#define _16KHZ // Schaltfrequenz -- die gewünschte einkommentieren |
//#define _32KHZ // Schaltfrequenz -- die gewünschte einkommentieren |
#ifdef _16KHZ |
#define MAX_STROM 130 // ab ca. 13A PWM ausschalten |
#define LIMIT_STROM 65 // ab ca. 6,5A PWM begrenzen |
#endif |
#ifdef _32KHZ |
#define MAX_STROM 130 // ab ca. 13A PWM ausschalten |
#define LIMIT_STROM 50 // ab ca. 5,0A PWM begrenzen |
#endif |
#define SYSCLK 4000000L //Quarz Frequenz in Hz |
//Robbe Roxxy 2824-34 mit Todd 10x4,5 bei 16kHz |
//PWM Strom Schub |
//10 0,18A 21g |
//20 0,30A 38g |
//30 0,40A 49g |
//40 0,54A 60g |
//50 0,70A 83g |
//60 0,95A 102g |
//70 1,25A 128g |
//80 1,50A 151g |
//90 1,83A 175g |
//100 2,25A 206g |
//110 2,66A 228g |
//120 3,10A 257g |
//130 3,55A 278g |
//140 4,00A 305g |
//150 4,50A 330g |
//160 5,30A 355g |
//170 5,85A 387g |
//180 6,40A 400g |
//190 7,10A 425g |
//200 7,60A 460g |
//0,5A 63g 14% |
//1,0A 110g 24% |
//1,5A 170g 32% |
//2,0A 195g 37% |
//2,5A 230g 41% |
//3,0A 260g 46% |
//3,5A 290g 50% |
//4,0A 310g 53% |
//4,5A 340g 58% |
//5,0A 360g 63% |
//5,5A 380g 67% |
//6,0A 400g 68% |
//6,5A 420g 70% |
//7,0A 450g 75% |
//7,5A 460g 78% |
//8,0A 475g 82% |
//9,0A 550g 86% |
//11 A 600g 100% |
#include <stdio.h> |
#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 "twislave.h" |
#include "old_macros.h" |
#include "analog.h" |
#include "uart.h" |
#include "timer0.h" |
#include "BLMC.h" |
#include "PPM_Decode.h" |
extern unsigned int I2C_Timeout; |
extern unsigned char SIO_Timeout; |
extern unsigned int PWM; |
extern unsigned int Strom; //ca. in 0,1A |
extern unsigned char Strom_max; |
extern unsigned char Mittelstrom; |
extern unsigned int CntKommutierungen; |
extern unsigned char MotorAnwerfen; |
extern unsigned char MotorGestoppt; |
extern unsigned char ZeitZumAdWandeln; |
extern unsigned char MaxPWM; |
#define ROT 0x08 |
#define GRUEN 0x80 |
#if defined(__AVR_ATmega8__) |
# define OC1 PB1 |
# define DDROC DDRB |
# define OCR OCR1A |
# define PWM10 WGM10 |
# define PWM11 WGM11 |
#endif |
#endif //_MAIN_H |
/branches/BL-Ctrl/makefile |
---|
0,0 → 1,386 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega8 |
#------------------------------------------------------------------- |
HAUPT_VERSION = 0 |
NEBEN_VERSION = 31 |
#------------------------------------------------------------------- |
# Output format. (can be srec, ihex, binary) |
FORMAT = ihex |
# Target file name (without extension). |
TARGET = BrushLess-Ctrl_8kHz_PWM_V$(HAUPT_VERSION)_$(NEBEN_VERSION) |
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
OPT = s |
########################################################################################################## |
# List C source files here. (C dependencies are automatically generated.) |
SRC = main.c uart.c timer0.c analog.c PPM_Decode.c twislave.c BLMC.c |
#printf_P.c |
########################################################################################################## |
# If there is more than one source file, append them above, or modify and |
# uncomment the following: |
#SRC += foo.c bar.c |
# You can also wrap lines by appending a backslash to the end of the line: |
#SRC += baz.c \ |
#xyzzy.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 = -g -O$(OPT) \ |
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \ |
-Wall -Wstrict-prototypes \ |
-Wa,-adhlns=$(<:.c=.lst) \ |
$(patsubst %,-I%,$(EXTRAINCDIRS)) |
# Set a "language standard" compiler flag. |
# Unremark just one line below to set the language standard to use. |
# gnu99 = C99 + GNU extensions. See GCC manual for more information. |
#CFLAGS += -std=c89 |
#CFLAGS += -std=gnu89 |
#CFLAGS += -std=c99 |
CFLAGS += -std=gnu99 |
CFLAGS += -DVERSION_HAUPTVERSION=$(HAUPT_VERSION) -DVERSION_NEBENVERSION=$(NEBEN_VERSION) |
ifeq ($(AVR_CTRL_PLATINE), 1) |
CFLAGS += -DAVR_CTRL_PLATINE=$(AVR_CTRL_PLATINE) |
endif |
# 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 |
# Programming support using avrdude. Settings and variables. |
# Programming hardware: alf avr910 avrisp bascom bsd |
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 |
# |
# Type: avrdude -c ? |
# to get a full listing. |
# |
AVRDUDE_PROGRAMMER = dt006 |
#AVRDUDE_PROGRAMMER = stk200 |
#AVRDUDE_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_EEPROM = -U eeprom:w:$(TARGET).eep |
AVRDUDE_FLAGS = -F -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 -E noreset |
# 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) -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/BL-Ctrl/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/BL-Ctrl/timer0.c |
---|
0,0 → 1,60 |
/***************************************************************************** |
*****************************************************************************/ |
#include "main.h" |
volatile unsigned int CountMilliseconds = 0; |
volatile unsigned char Timer0Overflow; |
enum { |
STOP = 0, |
CK = 1, |
CK8 = 2, |
CK64 = 3, |
CK256 = 4, |
CK1024 = 5, |
T0_FALLING_EDGE = 6, |
T0_RISING_EDGE = 7 |
}; |
SIGNAL(SIG_OVERFLOW0) |
{ |
static unsigned char cnt; |
TCNT0 = 0x80; |
Timer0Overflow++; |
if(!cnt--) |
{ |
cnt = 3; |
CountMilliseconds += 1; |
if(I2C_Timeout) I2C_Timeout--; |
if(PPM_Timeout) PPM_Timeout--; |
if(SIO_Timeout) SIO_Timeout--; |
} |
} |
void Timer0_Init(void) |
{ |
TCCR0 = TIMER_TEILER; |
//TCNT0 = -TIMER_RELOAD_VALUE; // reload |
TIM0_START; |
TIMER2_INT_ENABLE; |
} |
unsigned int SetDelay(unsigned int t) |
{ |
return(CountMilliseconds + t - 1); |
} |
char CheckDelay (unsigned int t) |
{ |
return(((t - CountMilliseconds) & 0x8000) >> 8); |
} |
void Delay_ms(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)); |
} |
/branches/BL-Ctrl/timer0.h |
---|
0,0 → 1,15 |
#if defined (__AVR_ATmega8__) |
#define TIMER_TEILER CK8 |
#define TIMER_RELOAD_VALUE 125 |
#endif |
extern volatile unsigned int CountMilliseconds; |
extern volatile unsigned char Timer0Overflow; |
void Timer1_Init(void); |
void Delay_ms(unsigned int); |
unsigned int SetDelay (unsigned int t); |
char CheckDelay (unsigned int t); |
/branches/BL-Ctrl/twislave.c |
---|
0,0 → 1,75 |
/*############################################################################ |
Slaveadr = 0x52 = Vorne, 0x54 = Hinten, 0x56 = Rechts, 0x58 = Links |
############################################################################*/ |
#include <avr/io.h> |
#include <util/twi.h> |
#include "main.h" |
unsigned char I2C_RXBuffer; |
unsigned char Byte_Counter=0; |
//############################################################################ |
//I2C (TWI) Interface Init |
void InitIC2_Slave(uint8_t adr) |
//############################################################################ |
{ |
TWAR = adr + (2*MOTORADRESSE); // Eigene Adresse setzen |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE) | (1<<TWEA); |
} |
//############################################################################ |
//ISR, die bei einem Ereignis auf dem Bus ausgelöst wird. Im Register TWSR befindet |
//sich dann ein Statuscode, anhand dessen die Situation festgestellt werden kann. |
ISR (TWI_vect) |
//############################################################################ |
{ |
switch (TWSR & 0xF8) |
{ |
case SR_SLA_ACK: |
TWCR |= (1<<TWINT); |
Byte_Counter=0; |
return; |
// Daten Empfangen |
case SR_PREV_ACK: |
I2C_RXBuffer = TWDR; |
I2C_Timeout = 500; |
TWCR |= (1<<TWINT); |
return; |
// Daten Senden |
case SW_SLA_ACK: |
if (Byte_Counter==0) |
{ |
TWDR = Mittelstrom; |
Byte_Counter++; |
} |
else |
{ |
TWDR = MaxPWM; |
} |
TWCR |= (1<<TWINT); |
return; |
// Daten Senden |
case SW_DATA_ACK: |
if (Byte_Counter==0) |
{ |
TWDR = Mittelstrom; |
Byte_Counter++; |
} |
else |
{ |
TWDR = MaxPWM; |
} |
TWCR |= (1<<TWINT); |
return; |
// Bus-Fehler zurücksetzen |
case TWI_BUS_ERR_2: |
TWCR |=(1<<TWSTO) | (1<<TWINT); |
// Bus-Fehler zurücksetzen |
case TWI_BUS_ERR_1: |
TWCR |=(1<<TWSTO) | (1<<TWINT); |
} |
TWCR =(1<<TWEA) | (1<<TWINT) | (1<<TWEN) | (1<<TWIE); // TWI Reset |
} |
/branches/BL-Ctrl/twislave.h |
---|
0,0 → 1,32 |
#ifndef _TWI_SLAVE_H_ |
#define _TWI_SLAVE_H_ |
extern unsigned char I2C_RXBuffer; |
extern unsigned char Byte_Counter; |
extern void InitIC2_Slave (uint8_t adr); |
#define TWI_BUS_ERR_1 0x00 |
#define TWI_BUS_ERR_2 0xF8 |
// Status Slave RX Mode |
#define SR_SLA_ACK 0x60 |
#define SR_LOST_ACK 0x68 |
#define SR_GEN_CALL_ACK 0x70 |
#define GEN_LOST_ACK 0x78 |
#define SR_PREV_ACK 0x80 |
#define SR_PREV_NACK 0x88 |
#define GEN_PREV_ACK 0x90 |
#define GEN_PREV_NACK 0x98 |
#define STOP_CONDITION 0xA0 |
#define REPEATED_START 0xA0 |
// Status Slave TX mode |
#define SW_SLA_ACK 0xA8 |
#define SW_LOST_ACK 0xB0 |
#define SW_DATA_ACK 0xB8 |
#define SW_DATA_NACK 0xC0 |
#define SW_LAST_ACK 0xC8 |
#endif |
/branches/BL-Ctrl/uart.c |
---|
0,0 → 1,191 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + (c) 01.2007 Holger Buss |
// + Nur für den privaten Gebrauch |
// + Keine Garantie auf Fehlerfreiheit |
// + Kommerzielle Nutzung nur mit meiner Zustimmung |
// + Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
// + www.mikrocontroller.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "uart.h" |
#define MAX_SENDE_BUFF 100 |
#define MAX_EMPFANGS_BUFF 100 |
unsigned volatile char SIO_Sollwert = 0; |
unsigned volatile char SioTmp = 0; |
unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NeuerDatensatzEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned char MeineSlaveAdresse; |
struct str_DebugOut DebugOut; |
int Debug_Timer; |
SIGNAL(INT_VEC_TX) |
{ |
} |
void SendUart(void) |
{ |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!(UCSRA & 0x40)) return; |
if(!UebertragungAbgeschlossen) |
{ |
ptr++; // die [0] wurde schon gesendet |
tmp_tx = SendeBuffer[ptr]; |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
{ |
ptr = 0; |
UebertragungAbgeschlossen = 1; |
} |
USR |= (1<TXC); |
UDR = tmp_tx; |
} |
else ptr = 0; |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
static unsigned char serPacketCounter = 100; |
SioTmp = UDR; |
#if X3D_SIO == 1 |
if(SioTmp == 0xF5) // Startzeichen |
{ |
serPacketCounter = 0; |
} |
else |
{ |
if(++serPacketCounter == MOTORADRESSE) // (1-4) |
{ |
SIO_Sollwert = SioTmp; |
SIO_Timeout = 200; // werte für 200ms gültig |
} |
else |
{ |
if(serPacketCounter > 100) serPacketCounter = 100; |
} |
} |
#endif |
}; |
// -------------------------------------------------------------------------- |
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); |
} |
//############################################################################ |
//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) |
{ |
} |
//############################################################################ |
//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 |
#if X3D_SIO == 1 |
UCSRB |= (1<<RXCIE); // serieller Empfangsinterrupt |
#endif |
// TX-Interrupt Freigabe |
// UCSRB |= (1<<TXCIE); |
//Teiler wird gesetzt |
//UBRR= (SYSCLK / (BAUD_RATE * 8L) -1 ); |
#if X3D_SIO == 1 |
UBRR = 12; //38400 Baud @ 4 MHz |
#else |
UBRR = 8; //57600 Baud @ 4 MHz |
#endif |
//öffnet einen Kanal für printf (STDOUT) |
fdevopen (uart_putchar, NULL); |
Debug_Timer = SetDelay(200); |
UDR = '*'; |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
if((CheckDelay(Debug_Timer) && UebertragungAbgeschlossen)) // im Singlestep-Betrieb in jedem Schtitt senden |
{ |
SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut)); |
Debug_Timer = SetDelay(50); // Sendeintervall |
} |
} |
/branches/BL-Ctrl/uart.h |
---|
0,0 → 1,81 |
#ifndef _UART_H |
#define _UART_H |
extern unsigned volatile char SIO_Sollwert; |
extern unsigned volatile char UebertragungAbgeschlossen; |
extern unsigned volatile char PC_DebugTimeout; |
extern unsigned char MeineSlaveAdresse; |
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 SendUart(void); |
struct str_DebugOut |
{ |
unsigned char Digital[13]; |
unsigned int AnzahlZyklen; |
unsigned int Zeit; |
unsigned char Sekunden; |
unsigned int Analog[8]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
//Die Baud_Rate der Seriellen Schnittstelle |
//#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 |
#if X3D_SIO == 1 |
#define BAUD_RATE 38400 //Baud Rate für die Serielle Schnittstelle |
#else |
#define BAUD_RATE 57600 //Baud Rate für die Serielle Schnittstelle |
#endif |
//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_ATmega8__) |
# 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_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/Chris_hallo/Flight-Ctrl_MEGA644_V0_60.hex |
---|
0,0 → 1,1457 |
:100000000C94D9010C94F6010C94F6010C94F601B1 |
:100010000C94F6010C94F6010C94F6010C94F60184 |
:100020000C94F6010C94100C0C94F6010C94F6014F |
:100030000C94E1140C94F6010C94F6010C94F60166 |
:100040000C94F6010C94F6010C94670B0C94F601D9 |
:100050000C9443040C94F6010C9492030C94F60156 |
:100060000C94FC0C0C94F6010C942E140C94F601D8 |
:100070000A0A0D004E65757472616C004865616412 |
:10008000696E67486F6C64000A0D5374657565721C |
:10009000756E673A20004F4B0A0D000A0D416267EA |
:1000A0006C65696368204C756674647275636B7304 |
:1000B000656E736F722E2E000A0D42656E75747A2E |
:1000C0006520506172616D657465727361747A2028 |
:1000D0002564000A0D496E69742E20454550524F23 |
:1000E0004D3A2047656E65726965726520446566A4 |
:1000F00061756C742D506172616D657465722E2E20 |
:100100002E000A0D3D3D3D3D3D3D3D3D3D3D3D3DCE |
:100110003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D0F |
:100120003D3D000A0D466C69676874436F6E7472DA |
:100130006F6C205625642E256420002E0052616EBF |
:1001400067653A2533692D253369005374656C6CF6 |
:10015000756E673A2025336900536574706F696E58 |
:1001600074202025336900536572766F202000507B |
:100170006F7469343A202025336900506F746933F5 |
:100180003A202025336900506F7469323A202025C7 |
:10019000336900506F7469313A2020253369005368 |
:1001A000746172743A2020202020253569004D6545 |
:1001B0007373776572743A2020253569005269633C |
:1001C0006874756E673A2020253569004B6F6D7035 |
:1001D0006173732020202020202000456D70662E42 |
:1001E000506567656C3A253569005370616E6E75B0 |
:1001F0006E673A202025356900486F6368202534F2 |
:100200006920282533692900526F6C6C20253469D8 |
:10021000202825336929004E69636B202534692025 |
:10022000282533692900414343202D2053656E73EF |
:100230006F7200476965722025346920282533696B |
:100240002900526F6C6C20253469202825336929D8 |
:10025000004E69636B202534692028253369290005 |
:100260004779726F202D2053656E736F7200503383 |
:100270003A25346920204B616EE46C6520005031D2 |
:100280003A253469202050323A25346920004773DA |
:100290003A253469202047693A25346920004E699F |
:1002A0003A2534692020526F3A25346920004B37B3 |
:1002B0003A25346920204B616EE46C6520004B3593 |
:1002C0003A25346920204B363A25346920004B33D7 |
:1002D0003A25346920204B343A25346920004B31CB |
:1002E0003A25346920204B323A25346920004B6F7F |
:1002F0006D706173733A20202025356900526F6C50 |
:100300006C3A202020202020253569004E69636B3F |
:100310003A20202020202025356900616B742E2092 |
:100320004C6167650048F668656E726567656C7557 |
:100330006E67004B65696E6520004F666620202061 |
:100340002020203A20253569004C7566746472754A |
:10035000636B3A2025356900536F6C6C486F656894 |
:10036000653A2025356900486F6568653A20202088 |
:1003700020202535690028632920486F6C67657245 |
:1003800020427573730053657474696E673A202553 |
:100390006420005625642E2564002B2B204D696BAC |
:1003A000726F4B6F70746572202B2B005B25695D3B |
:1003B000000011241FBECFEFD0E1DEBFCDBF11E0A2 |
:1003C000A0E0B1E0E0E7FAE502C005900D92AE389A |
:1003D000B107D9F715E0AEE8B1E001C01D92AD3B21 |
:1003E000B107E1F70E942D020C94372D0C94000008 |
:1003F000A2E0B0E00E94232D802D99270895FB01F3 |
:10040000282F863008F025E0842F9927429FD001BD |
:100410001124AC59BF4F019724F001900E942B2D5D |
:10042000FACFA2E0B0E0022E0E942B2D0895CF93C8 |
:10043000DF93FB01C42FDD27863008F085E0489F5D |
:10044000D0011124AC59BF4F219724F00E94232DD5 |
:100450000192FACFDF91CF9108950F931F93CF931D |
:10046000DF9391E097B98FEF88B98BE184B995B9A3 |
:100470008EE38AB9579A87EF8BB984B7877F84BF99 |
:10048000809160008861809360001092600080ED30 |
:1004900097E09093AC018093AB0110922D021092E3 |
:1004A0002C02109246051092450510922B021092D4 |
:1004B0002A02109229021092280228980E94BD0C4C |
:1004C0000E942D070E94CC140E94F60C0E94141466 |
:1004D0007894109200048CE38093010484E080936C |
:1004E00002048CE390E09F938F931F921F9283E20C |
:1004F00091E09F938F931F920E94C30882E091E046 |
:100500009F938F931F920E94C308299AA1E0B0E0A5 |
:100510000E94232D802D2DB73EB7265F3F4F0FB68B |
:10052000F8943EBF0FBE2DBF8B33A9F183ED90E051 |
:100530009F938F931F920E94C3080E94971C4AE3C7 |
:100540006DE675E080E00E94FF0101E00F900F90E2 |
:100550000F90023049F40E942A1C4AE36DE675E0D0 |
:1005600082E00E94FF0103E04AE36DE675E0802F20 |
:100570000E94FF010F5F063060F381E022E030E06F |
:10058000D901082E0E942B2D8BE321503040D90138 |
:10059000082E0E942B2D02E010E0D8010E94232D8E |
:1005A000802D4AE36DE675E00E941702D8010E9493 |
:1005B000232D802D99279F938F9388EB90E09F9315 |
:1005C0008F931F920E94C308809175050F900F9022 |
:1005D0000F900F900F9080FF20C08BE990E09F93C9 |
:1005E0008F931F920E94C30884EC99E00E94FB0B3A |
:1005F000EC010E9420100F900F900F90CE010E94EE |
:10060000040C8823D9F386E990E09F938F931F927F |
:100610000E94C3080F900F900F900E944F1D2898C2 |
:1006200080ED97E09093AC018093AB0188EE93E06E |
:100630009093FB038093FA0385E58093F50388E8A4 |
:1006400090E09F938F931F920E94C308809175053D |
:100650000F900F900F9082FF03C08CE790E002C0D4 |
:1006600084E790E09F938F931F920E94C3080F909E |
:100670000F900F9080E790E09F938F931F920E94BE |
:10068000C3080E9447100F900F900F908091A8010F |
:10069000882379F11092A8010E94601E0E94081D13 |
:1006A000289880910101882319F0815080930101DD |
:1006B00080912702882329F080912702815080931E |
:1006C0002702209104013091050180918505992729 |
:1006D0002817390734F480ED97E09093AC018093AC |
:1006E000AB018091D601882319F40E94141401C033 |
:1006F00028980E944A070E94B80780E090E00E9474 |
:10070000040C882319F280912E02882329F088B1E5 |
:1007100090E1892788B901C0449884EF91E00E9454 |
:10072000FB0BB4CF1F920F920FB60F9211248F9331 |
:100730009F93EF93FF93809100018823E1F48091D0 |
:10074000A3019091A40101969093A4018093A30129 |
:10075000FC01EB54FD4FE081ED3019F08639910535 |
:1007600039F41092A4011092A30181E0809300015A |
:10077000E093C60004C01092A4011092A301FF915F |
:10078000EF919F918F910F900FBE0F901F90189532 |
:100790008091D704813091F58091C7049091C8046D |
:1007A000A091C904B091CA0480930A0590930B05E7 |
:1007B000A0930C05B0930D058091CB049091CC04CF |
:1007C000A091CD04B091CE0480930E0590930F05B7 |
:1007D000A0931005B09311058091CF049091D0049F |
:1007E000A091D104B091D204809312059093130587 |
:1007F000A0931405B09315051092D7048091F403CB |
:10080000813031F48091E803809322051092F40343 |
:1008100080912404813091F5809114049091150405 |
:10082000A0911604B09117048093160590931705B4 |
:10083000A0931805B093190580911804909119049C |
:10084000A0911A04B0911B0480931A0590931B0584 |
:10085000A0931C05B0931D0580911C0490911D046C |
:10086000A0911E04B0911F0480931E0590931F0554 |
:10087000A0932005B09321051092240480912205B5 |
:100880008111289A08951F920F920FB60F9211248A |
:100890002F933F934F935F936F937F938F939F9388 |
:1008A000AF93BF93CF93DF93EF93FF938091C600F5 |
:1008B000809392018091C00040919201887109F06B |
:1008C00005C18091A501843009F48AC0853050F4B7 |
:1008D0008130D1F0813098F0823001F1833009F01D |
:1008E000F2C021C0863009F4ABC0863008F48CC059 |
:1008F000873009F4D6C0883009F0E5C0D8C0453B40 |
:1009000009F0E8C081E003C0423621F482E0809320 |
:10091000A501E0C0453B09F4DDC0D5C0413009F078 |
:10092000D2C083E0F4CF409324054F5F4093B402DC |
:100930008091B4028F5F8093E30384E08093A501EC |
:1009400080912405833031F0813161F1813009F0EB |
:100950003FC014C084EE93E090930F0480930E0484 |
:1009600025E035E03093B2022093B1024096909397 |
:10097000BC048093BB048091F40327C083EC94E013 |
:1009800090930F0480930E042CE736E03093B2026C |
:100990002093B10244969093BC048093BB04809151 |
:1009A000D70413C080E194E090930F0480930E0469 |
:1009B00029EC35E03093B2022093B1024496909333 |
:1009C000BC048093BB04809124048093250582C0DD |
:1009D00081E0809325051092BC041092BB047AC07C |
:1009E000842F99279093BE048093BD048091B40214 |
:1009F000840F8093B4028091E3039091B402890F35 |
:100A00008093E30385E083CF2091BD043091BE0441 |
:100A1000842F9927982F8827280F391F3093BE04D9 |
:100A20002093BD048091B402840F8093B40280911E |
:100A3000E3039091B402890F8093E30386E067CFCC |
:100A40008091B402840F8093B4028091E30390916B |
:100A5000B402890F8093E30380912505882381F4F4 |
:100A6000E0910E04F0910F048091B1029091B202D6 |
:100A7000E817F90728F44193F0930F04E0930E046C |
:100A80008091BD049091BE0401979093BE04809321 |
:100A9000BD048091BD049091BE04892BD9F487E0F8 |
:100AA00036CF8091B402481771F488E030CF80913E |
:100AB000E303481741F4E091BB04F091BC04309784 |
:100AC00011F081E080831092A50104C01092A5016D |
:100AD0000E94C8030E94C80340919E01463910F04D |
:100AE00010929D01809192018D3009F05CC080913F |
:100AF0009D01823009F057C010929D01A42FBB27A1 |
:100B0000FD01ED5DFB4F3081ED01CC5DDB4F2881B8 |
:100B10008091A1019091A201831B9109821B9109EF |
:100B20009F709093A2018093A1019C0196E036955D |
:100B300027959A95E1F7235C2093A001982F9F7346 |
:100B4000935C90939F018081281729F488819817DE |
:100B500011F491E006C0809195018F5F809395011B |
:100B600090E080919301882309F064C0992309F4EF |
:100B700061C081E08093930140939601AB5DBB4FD0 |
:100B80008DE08C9380912704823509F053C088E171 |
:100B900090E02CE00FB6F894A895809360000FBE0B |
:100BA0002093600047C080919D018130D9F0813051 |
:100BB00018F08230E9F530C080919201833239F427 |
:100BC00080919301882319F481E080939D018091A5 |
:100BD00092018093250481E080939E01809192018F |
:100BE000992715C082E080939D01E42FFF27809113 |
:100BF0009201EB5DFB4F80834F5F40939E012091FC |
:100C000092018091A1019091A201820F911D909378 |
:100C1000A2018093A1010EC0E42FFF2780919201D1 |
:100C2000EB5DFB4F8083463938F310929D01E7CF8F |
:100C300010929D01FF91EF91DF91CF91BF91AF9104 |
:100C40009F918F917F916F915F914F913F912F91E4 |
:100C50000F900FBE0F901F901895DC0120E030E040 |
:100C600040E050E0E5EBF2E005C08191280F311D36 |
:100C70004F5F5F4F4A175B07C1F73F70C90166E0DE |
:100C8000969587956A95E1F7835CFD01EB54FD4FDE |
:100C9000808311962F73235CFD01EB54FD4F20835D |
:100CA000AA54BD4F8DE08C93109200018091B50243 |
:100CB0008093C6000895EF92FF920F931F93CF93F6 |
:100CC000DF937A01722F93E29093B5026093B6029C |
:100CD0008093B70203E010E060E0A8EBB2E046C00A |
:100CE000F701E60FF11D90816F5F715019F4E0E09C |
:100CF00040E00FC0F701E60FF11D40816F5F7150BA |
:100D000011F4E0E006C0F701E60FF11DE0816F5F2E |
:100D10007150892F86958695835C8C935527892FF2 |
:100D200099278370907024E0880F991F2A95E1F726 |
:100D30009A0194E0369527959A95E1F7822B835C8A |
:100D4000ED0189834F705070440F551F440F551F9C |
:100D50008E2F8295869586958370842B835C8A83FB |
:100D6000EF73E35CEB830C5F1F4F1496772309F05E |
:100D7000B7CFC8010E942D06DF91CF911F910F912F |
:100D8000FF90EF9008951F93CF93DF93EC0170E0F5 |
:100D9000A22FBB27129748C0E42FFF27EB5DFB4F24 |
:100DA00030814F5FE42FFF27EB5DFB4F50814F5F9A |
:100DB000E42FFF27EB5DFB4F10814F5FE42FFF27F0 |
:100DC000EB5DFB4F20814F5F842F9927A817B90750 |
:100DD00074F15D53FE01E70FF11D3D53330F330FE7 |
:100DE000852F82958F70382B3083613001F1912FE0 |
:100DF0009D537F5FFE01E70FF11D71505295507FAB |
:100E0000892F86958695582B508363506F3F79F0D4 |
:100E10007E5FFE01E70FF11D9295990F990F907C6F |
:100E20002D53922B90837F5F662309F0B5CFDF911E |
:100E3000CF911F9108951F93182F8A3019F48DE0D8 |
:100E40000E941B078091C00085FFFCCF1093C60055 |
:100E500080E090E01F9108950895E1ECF0E088E1D2 |
:100E60008083A0ECB0E08C9182608C93808180685C |
:100E700080838081806480838AE28093C40088ECD0 |
:100E800090E00E94FB0B9093E2038093E1031092A9 |
:100E9000A501089580910001882309F468C080911C |
:100EA0008E01882371F080910001882351F02BE09E |
:100EB00045EF53E06091B30287E40E945B06109215 |
:100EC0008E018091E1039091E2030E94040C88233B |
:100ED00021F4809190018823B1F080910001882352 |
:100EE00091F022E348ED54E06091B30284E40E9463 |
:100EF0005B06109290018AEF90E00E94FB0B9093AA |
:100F0000E2038093E10380918F018823F1F08091C7 |
:100F100000018823D1F00E94501010928F0180911F |
:100F20009C018F5F80939C01843011F410929C018E |
:100F300080919C0144E1849FA00111244A5E5E4F90 |
:100F400024E160E0805D0E945B068091910188232E |
:100F500071F080910001882351F02AE040E054E0D4 |
:100F60006091B30286E50E945B061092910108959C |
:100F70001F93CF93DF93CDB7DEB722970FB6F894C8 |
:100F8000DEBF0FBECDBF80919301882309F498C0C6 |
:100F90008FEF8093010180912704813760F48C36B4 |
:100FA00008F06FC0873609F440C08836F9F0833600 |
:100FB00009F084C008C0843759F1863791F1813730 |
:100FC00009F07CC036C02091960143E06BE085EFCC |
:100FD00093E00E94C3068091CD019091F703892B85 |
:100FE0008093CD0181E08093900168C020919601AB |
:100FF00043E062E0CE0101960E94C3068091CD01DC |
:101000009981892B8093CD0181E080938F0156C017 |
:101010002091960143E064E088E991E00E94C306D4 |
:101020004DC081E08093910149C081E080938E01A1 |
:1010300045C02091960143E062E0CE0101960E94F6 |
:10104000C30689818F3F89F0863010F085E089835F |
:101050004AE36DE675E089810E94170289812AE3DF |
:101060004DE655E06091B30208C01091B3020E94B2 |
:10107000F8012AE34DE655E0612F855B0E945B068F |
:101080001DC02091960143E06AE38DE695E00E9441 |
:10109000C306809127044AE36DE675E08B560E94F3 |
:1010A000FF01809127048B56A2E0B0E0082E0E9439 |
:1010B0002B2D0E94F80199270E944B1E109293013C |
:1010C00022960FB6F894DEBF0FBECDBFDF91CF9151 |
:1010D0001F910895982F80912605813069F48091A1 |
:1010E000CC01E82FFF27EA5EFE4F90838F5F80934D |
:1010F000CC0121E030E005C0892F0E941B07282F7A |
:101100003327C90108951F93182F04C080E30E945C |
:101110006A0811501116D4F31F9108951F93182FC8 |
:1011200004C080E20E946A0811501116D4F31F9186 |
:1011300008950F931F93CF93DF938C01EB0108C0A9 |
:10114000F8010F5F1F4FE4918E2F0E946A082197CC |
:101150002097B1F7DF91CF911F910F9108950F93D1 |
:101160001F93CF93DF938C01EB0106C0F8018191AF |
:101170008F010E946A0821972097C1F7DF91CF91D4 |
:101180001F910F9108952F923F924F925F926F920D |
:101190007F928F929F92AF92BF92CF92DF92EF9207 |
:1011A000FF920F931F93CF93DF93CDB7DEB7E397F3 |
:1011B0000FB6F894DEBF0FBECDBF29968FAD29972D |
:1011C00080932605CE01855B9F4F9D838C832B9654 |
:1011D0008EAD9FAD2B979FA78EA72224332421018C |
:1011E00002C0130124010EA51FA502C00F5F1F4FEF |
:1011F000F801F490FF2019F0F5E2FF16B9F7B801F5 |
:101200008EA59FA5681B790B11F00E949908FF20FD |
:1012100009F444C20F5F1F4F1FA70EA71982AC81AC |
:10122000BD811BAA1AAA9FEF99ABEEA5FFA5CF011E |
:1012300001969FA78EA7B49095E7B91621F08B2D44 |
:101240008062883789F4EBA9E0FF07C02D903D90BC |
:101250004D905C901397149607C08D919C911197B7 |
:101260001C01442455241296F0E2BF1621F4898112 |
:101270008823D9F685C083E2B81609F483C09AE2C0 |
:10128000B91621F0EDE2BE1669F408C0FD01129610 |
:10129000E081EAABE7FFC9CFE195EAABFBA9F061DA |
:1012A000FF7D72C08BE2B81609F46AC09EE2B916DF |
:1012B000B1F52EA53FA52F5F3F4FEEA5FFA5849169 |
:1012C0008A3221F0B82E20E030E01BC0FD011296DA |
:1012D0004081518157FF02C04FEF5FEF49AB3FA7FD |
:1012E0002EA7A3CFC90103E0880F991F0A95E1F744 |
:1012F000220F331F280F391F2B0D311D2053304073 |
:10130000B49031968B2D80538A3060F3FFA7EEA7FF |
:10131000A90137FF02C04FEF5FEF49AB8DCFF0E37C |
:10132000BF1631F48BA984FD80CF80628BAB7DCF5B |
:101330008B2D81538930E8F420E030E0C901F3E0DF |
:10134000880F991FFA95E1F7220F331F280F391FD5 |
:101350002B0D311D20533040EEA5FFA5CF01019686 |
:101360009FA78EA7B4908B2D80538A3038F32AAB79 |
:1013700063CF98E6B91651F4EBA9E460EBAB55CF17 |
:10138000B98253CFFBA9F860FBAB4FCF8CE6B81600 |
:1013900021F49BA991609BAB48CFBD83AC83E3E66E |
:1013A000BE1639F41296BD83AC8312978C918E834E |
:1013B0001AC1F4E4BF1639F084E6B81639F099E69C |
:1013C000B91659F503C0EBA9E160EBABFBA9F0FF3F |
:1013D00008C01496BD83AC835E904E903E902E90D4 |
:1013E0000AC01296BD83AC839E918E911C01442449 |
:1013F00037FC4094542C57FC03C08AE088AB94C05F |
:101400005094409430942094211C311C411C511C58 |
:101410008DE289839AE098AB87C0EFE4BE1629F08D |
:10142000FFE6BF1639F488E063C09BA991609BABCF |
:10143000E8E058C0F0E7BF1681F41296BD83AC8394 |
:101440009E918E911C01442455248BA980648BAB02 |
:1014500090E198AB78E7B72E66C0E3E7BE16D9F502 |
:101460001296BD83AC83DE90CE90C114D10489F472 |
:1014700088E28E838EE68F8385E788878CE689876E |
:101480008A8789E28B871C8666E0C62ED12CCC0E1B |
:10149000DD1EF9A9F7FD13C04F2F552747FD5095C5 |
:1014A00060E070E0C6010E94D12A009711F419A9EA |
:1014B0000DC08C1919A981174CF4182F07C0F6011B |
:1014C00001900020E9F731971E2F1C191982420163 |
:1014D000310140E094C085E5B81631F095E7B916C2 |
:1014E00049F4EAE0E8AB1FC0FBA9F160FBAB8AE07E |
:1014F00088AB19C098E5B91621F0E8E7BE1609F0E7 |
:101500006EC0FBA9F3FD02C080E1F2CF21143104CB |
:101510004104510419F490E198AB05C0EBA9E064D3 |
:10152000EBABF0E1F8AB198289A987FD03C09BA959 |
:101530009F7D9BAB211431044104510461F4E9A95E |
:10154000EE2349F46624772443015EE2C52ED12CB4 |
:10155000CC0EDD1E3EC04EE2C42ED12CCC0EDD1EC4 |
:10156000F8A9EF2EFF2400271127C201B101A8011D |
:1015700097010E94E62C6A3020F430E3A32EA60ED9 |
:1015800008C027E5A22EA60E88E5B81611F49FED37 |
:10159000A922F601A2926F01C201B101A80197012F |
:1015A0000E94E62C39014A012E143F0440065106E0 |
:1015B00018F019012A01D9CFF8A9F83051F48BA9F4 |
:1015C00083FF07C090E3A91621F080E3F601829320 |
:1015D0006F01CE018C19182F125D49A910C0BB20D4 |
:1015E00009F45CC0BE8219824201310100E011E0C1 |
:1015F00096E0C92ED12CCC0EDD1E21E005C0212F96 |
:10160000042F011B07FD00E08981882319F0812F39 |
:101610008F5F07C09BA996FD02C0812F02C0822F59 |
:101620008E5FA82EA00EEBA9EE2EFF2480E3482E9D |
:10163000512C4E205F204114510421F48AA98A19AB |
:101640000E948E088981882329F061E070E0CE0134 |
:10165000019609C0E6FE09C080E38A83BB8262E08E |
:1016600070E0CE0102960E94AF08F0E24F165104DE |
:1016700021F48AA98A190E948308802F0E94830876 |
:10168000612F772767FD7095C6010E94AF08E4FEC1 |
:10169000A8CD8AA98A190E948E08A3CDE3960FB619 |
:1016A000F894DEBF0FBECDBFDF91CF911F910F9198 |
:1016B000FF90EF90DF90CF90BF90AF909F908F9072 |
:1016C0007F906F905F904F903F902F9008951F9262 |
:1016D0000F920FB60F9211242F933F935F936F9346 |
:1016E0007F938F939F93AF93BF938091AF0181506E |
:1016F0008093AF018F3F01F589E08093AF01809126 |
:1017000003018F5F817080930301882319F481E0C6 |
:101710008093A8018091A6019091A70101969093D2 |
:10172000A7018093A6018091D601882329F080919A |
:10173000D60181508093D6018091AB019091AC018C |
:10174000029758F08091AB019091AC010197909372 |
:10175000AC018093AB015A9A01C05A9880917505EB |
:1017600083FF3BC0349B0AC08091A9019091AA01DC |
:1017700001969093AA018093A9012FC08091A9019D |
:101780009091AA01892B79F08091A9019091AA01E9 |
:10179000805A9F4040F48091A9019091AA019093B2 |
:1017A00018028093170280911702909118022091DD |
:1017B000190230911A02821B930B845E9D4F68E6DA |
:1017C00071E00E94D32C845B904090931C02809324 |
:1017D0001B021092AA011092A901BF91AF919F9193 |
:1017E0008F917F916F915F913F912F910F900FBEDD |
:1017F0000F901F9018952091A6013091A7012F5F9F |
:101800003F4F820F931F08952091A6013091A701A9 |
:10181000821B930B892F99278695807499270895A9 |
:101820001F920F920FB60F921124EF92FF920F9317 |
:101830001F932F933F934F935F936F937F938F9358 |
:101840009F93AF93BF93CF93DF93EF93FF938091D9 |
:1018500002018150809302018F3F09F073C083E839 |
:101860008093B00080918901C82FDD27D093AE010D |
:10187000C093AD0180919305E0908F0580FF1EC05D |
:101880006091E7017091E8018091E9019091EA018E |
:10189000FF240027112720E830E040E050E00E94BC |
:1018A000082DC801B7010E94A02C20E032E040E0E2 |
:1018B00050E00E94082DC20FD31F1DC06091E701A8 |
:1018C0007091E8018091E9019091EA01FF240027DD |
:1018D000112720E830E040E050E00E94082DC801C8 |
:1018E000B7010E94A02C20E032E040E050E00E94CE |
:1018F000082DC21BD30BD093AE01C093AD01209134 |
:10190000AD013091AE0180919005992728173907D4 |
:1019100034F08091910599278217930724F49093CE |
:10192000AE018093AD018091AD019091AE01909395 |
:10193000FF048093FE048093B3008091920580930E |
:10194000020104C083E08093B0005F98FF91EF91A3 |
:10195000DF91CF91BF91AF919F918F917F916F91C7 |
:101960005F914F913F912F911F910F91FF90EF90B9 |
:101970000F900FBE0F901F9018958091A601909127 |
:10198000A7010B969093B1018093B00182E085BDD1 |
:1019900083EA84BD17BC88E788BD96E096BD83ECDA |
:1019A0008093B0009093B100E0E7F0E08081826026 |
:1019B0008083EEE6F0E08081816080838AE080931E |
:1019C000B3001092B20008952091A6013091A701B2 |
:1019D0002F5F3F4F280F391F8091A6019091A701DB |
:1019E000A901481B590B57FFF7CF089510927C00AF |
:1019F0008FEE80937A0008951F920F920FB60F9288 |
:101A00001124EF92FF920F931F932F933F934F93C5 |
:101A10005F936F937F938F939F93AF93BF93CF9376 |
:101A2000DF93EF93FF9310927A004091C8014F5FCC |
:101A30004093C8014150433009F41CC1443038F48C |
:101A4000413009F463C0423008F0B9C00DC04530E0 |
:101A500009F450C1453008F42AC1463009F46FC179 |
:101A6000473009F0CBC252C22091DB013091DC013A |
:101A70008091780090917900281B390B8091B601F4 |
:101A80009091B701820F931F9093B7018093B60195 |
:101A90008091C0018F5F8093C00180910B02909173 |
:101AA0000C02A0910D02B0910E02442737FD409523 |
:101AB000542F820F931FA41FB51F80930B02909386 |
:101AC0000C02A0930D02B0930E0280910F02909130 |
:101AD0001002A0911102B0911202820F931FA41F55 |
:101AE000B51F80930F0290931002A0931102B09340 |
:101AF000120281E08093C9018091C6019091C701D3 |
:101B000001969093C7018093C6017CC260917800D2 |
:101B1000709179008091D9019091DA01681B790B5D |
:101B20008091030290910402A0910502B0910602F7 |
:101B30009B01442737FD4095542F820F931FA41F0C |
:101B4000B51F8093030290930402A0930502B09303 |
:101B500006028091070290910802A0910902B091BB |
:101B60000A02820F931FA41FB51F80930702909350 |
:101B70000802A0930902B0930A0280917800909124 |
:101B800079000A9710F464E47DEF809178009091D9 |
:101B90007900895E934010F06CEB72E08091B401A3 |
:101BA0009091B501860F971F9093B5018093B40172 |
:101BB0008091BF018F5F8093BF0182E058C0609128 |
:101BC0007800709179008091D7019091D801681BBD |
:101BD000790B8091FB019091FC01A091FD01B091E6 |
:101BE000FE019B01442737FD4095542F820F931F20 |
:101BF000A41FB51F8093FB019093FC01A093FD01EE |
:101C0000B093FE018091FF0190910002A09101022A |
:101C1000B0910202820F931FA41FB51F8093FF0192 |
:101C200090930002A0930102B09302028091780089 |
:101C3000909179000A9710F464E47DEF8091780028 |
:101C400090917900895E934010F06CEB72E0809186 |
:101C5000B2019091B301860F971F9093B3018093C7 |
:101C6000B2018091BE018F5F8093BE0184E08093BA |
:101C7000C901C8C1409104015091050180917800CB |
:101C8000909179009A01220F331F240F351F63E0D2 |
:101C900070E00E94BF2C260F371F3695279536958A |
:101CA0002795309305012093040186E0E0CF8091D1 |
:101CB000DF019091E0012091780030917900821B42 |
:101CC000930B90932805809327058091B8019091FC |
:101CD000B9012091270530912805820F931F909319 |
:101CE000B9018093B8018091C2018F5F8093C201D6 |
:101CF00087E0BDCF80917800909179002091DD013F |
:101D00003091DE01821B930B909328058093270569 |
:101D10008091BA019091BB0120912705309128054F |
:101D2000820F931F9093BB018093BA018091C101F0 |
:101D30008F5F8093C1014093C90186E0E4C0609148 |
:101D4000780070917900E090E101F090E20100915B |
:101D5000E3011091E401882777FD8095982F0E9478 |
:101D6000842BA80197010E94DE2A0E94672B7093A2 |
:101D7000BD016093BC012091BC013091BD01E09197 |
:101D80002705F0912805809132059091330597FF42 |
:101D900003C0909581959F4F64E070E00E94D32C22 |
:101DA000EB01CF01F7FF03C0909581959F4F64E051 |
:101DB00070E00E94D32C260F371F2C0F3D1F30934D |
:101DC000BD012093BC018091BC019091BD0102979F |
:101DD00004F16091E1017091E2018091E301909141 |
:101DE000E40120E030E048E454E40E948E2B882394 |
:101DF0000CF03CC06091E1017091E2018091E3013F |
:101E00009091E4012AE037ED43EA5CE30E94DF2A87 |
:101E100025C08091BC019091BD018F5F9F4F34F52B |
:101E20006091E1017091E2018091E3019091E40100 |
:101E300020E030E046E154E40E94912B1816B4F4FF |
:101E40006091E1017091E2018091E3019091E401E0 |
:101E50002AE037ED43EA5CE30E94DE2A6093E10169 |
:101E60007093E2018093E3019093E40181E0809319 |
:101E7000C301809178009091790090932A05809316 |
:101E800029052091130230911402409115025091BE |
:101E900016028091BC019091BD01AA2797FDA095E3 |
:101EA000BA2F280F391F4A1F5B1F2093130230934C |
:101EB00014024093150250931602E0901302F09022 |
:101EC0001402009115021091160260911302709194 |
:101ED0001402809115029091160220E034E040E057 |
:101EE00050E00E94082DE21AF30A040B150BE09251 |
:101EF0001302F0921402009315021093160283E06D |
:101F00008093C90187E08093C8017CC08091370528 |
:101F1000909138052091780030917900820F931FBD |
:101F2000909338058093370580912F058F5F8093BC |
:101F30002F0580912F05853008F460C080917800CE |
:101F40009091790090930B0180930A0110922F05D4 |
:101F500080912B0590912C05209137053091380503 |
:101F6000821B930B20912F0230913002821B930B26 |
:101F70009093C5018093C401609137057091380535 |
:101F8000E0900601F090070100910801109109010D |
:101F9000882777FD8095982FA8019701220F331F7E |
:101FA000441F551F2E0D3F1D401F511F620F731FF1 |
:101FB000841F951F24E030E040E050E00E94082D8F |
:101FC00020930601309307014093080150930901C3 |
:101FD00020912B0530912C058091060190910701ED |
:101FE000A0910801B0910901281B390B30933002F0 |
:101FF00020932F0210923805109237051092C901D4 |
:102000001092C8018091C90180937C008FEE80936B |
:102010007A00FF91EF91DF91CF91BF91AF919F91A6 |
:102020008F917F916F915F914F913F912F911F9170 |
:102030000F91FF90EF900F900FBE0F901F9018958B |
:10204000CF93DF93C0E0D0E0C7BD82E390E00E9471 |
:10205000E40C8BE391E09F938F931F920E94C3083F |
:1020600080910A0190910B010F900F900F9084586E |
:10207000934020F02196CA3FD10531F7C093340533 |
:1020800088EC90E00E94E40CDF91CF910895E6E1A6 |
:10209000F1E080E2819391E0E636F907D9F70895FF |
:1020A000FF920F931F938091CD01282F3327C901F1 |
:1020B00081709070682F882391F08091CE018823E1 |
:1020C00011F0815002C0809166018093CE01E6E15B |
:1020D000F1E080E2819391E0E636F907D9F7A901B2 |
:1020E0004270507021FF0DC08091CE018F5F8093B0 |
:1020F000CE01E6E1F1E080E2819391E0E636F90776 |
:10210000D9F7662321F0452B11F01092CE0181E121 |
:102110008093CC018091CE0199279F938F938CEA75 |
:1021200093E09F938F93E1E0FE2EFF920E94C308FD |
:102130000091CE010F900F900F900F900F900530EF |
:1021400009F4D7C1063090F4023009F4B8C0033066 |
:1021500030F40023F1F0013009F05BC34DC00330CF |
:1021600009F402C1043009F054C34BC1083009F42A |
:1021700098C2093038F4063009F411C2073009F06A |
:1021800048C36CC2093009F4C9C20A3009F041C31E |
:1021900003C31092CC018AE993E09F938F93FF923F |
:1021A0000E94C30884E18093CC018CE390E09F936C |
:1021B0008F931F921F9283E993E09F938F93FF92D7 |
:1021C0000E94C30888E28093CC010E94F8019927FD |
:1021D0009F938F9386E893E09F938F93FF920E9443 |
:1021E000C3088CE38093CC0186E793E09F938F93A1 |
:1021F000FF920E94C3088EC28091750580FF47C080 |
:102200001092CC0180912F02909130029F938F9376 |
:1022100087E693E09F938F930F930E94C30884E116 |
:102220008093CC0180913102909132029F938F93E1 |
:1022300088E593E09F938F930F930E94C30888E2F1 |
:102240008093CC0180910A0190910B019F938F9311 |
:1022500089E493E09F938F930F930E94C3088CE3CC |
:102260008093CC018091340599279F938F938AE3C3 |
:1022700093E09F938F930F930E94C3088DB79EB7EF |
:1022800044960FB6F8949EBF0FBE8DBFC7C284E1BF |
:102290008093CC0183E393E09F938F930F930E94ED |
:1022A000C30888E28093CC0185E293E09F938F93EB |
:1022B0000F930E94C3088DB79EB70696E2CF109287 |
:1022C000CC018BE193E09F938F93FF920E94C30810 |
:1022D00084E18093CC016091E7017091E8018091E5 |
:1022E000E9019091EA0120E034E040E050E00E94F2 |
:1022F000082D5F934F933F932F938CE093E09F9330 |
:102300008F93FF920E94C30888E28093CC01609172 |
:10231000EF017091F0018091F1019091F20120E0C4 |
:1023200034E040E050E00E94082D5F934F933F93CC |
:102330002F938DEF92E09F938F93FF920E94C3089B |
:102340008CE38093CC0180911702909118029F93A7 |
:102350008F938EEE92E09F938F93FF920E94C3081B |
:102360008DB79EB746968DCF1092CC0180914505D2 |
:102370009091460520914305309144059F938F939A |
:102380003F932F938EED92E09F938F93FF920E9445 |
:10239000C30884E18093CC018091490590914A055E |
:1023A00020914705309148059F938F933F932F933A |
:1023B0008EEC92E09F938F93FF920E94C30888E275 |
:1023C0008093CC0180914D0590914E0520914B0555 |
:1023D00030914C059F938F933F932F938EEB92E018 |
:1023E0009F938F93FF920E94C3088CE38093CC014C |
:1023F00080914F05909150059F938F938EEA92E0C4 |
:102400006FC01092CC01E0916E05FF27EE0FFF1F09 |
:10241000EF5BFA4F20813181E0916D05FF27EE0FD0 |
:10242000FF1FEF5BFA4F808191813F932F939F9322 |
:102430008F938EE992E09F938F93FF920E94C3083F |
:1024400084E18093CC01E0917005FF27EE0FFF1F20 |
:10245000EF5BFA4F20813181E0916F05FF27EE0F8E |
:10246000FF1FEF5BFA4F808191813F932F939F93E2 |
:102470008F938EE892E09F938F93FF920E94C30800 |
:1024800088E28093CC01E0917205FF27EE0FFF1FD9 |
:10249000EF5BFA4F20813181E0917105FF27EE0F4C |
:1024A000FF1FEF5BFA4F808191813F932F939F93A2 |
:1024B0008F938EE792E09F938F93FF920E94C308C1 |
:1024C0008CE38093CC01E0917305FF27EE0FFF1F93 |
:1024D000EF5BFA4F808191819F938F938EE692E01C |
:1024E0009F938F93FF920E94C3088DB79EB74A9621 |
:1024F000C8CE1092CC0180E692E09F938F93FF921A |
:102500000E94C30884E18093CC012091D7013091CF |
:10251000D8018091B2019091B3016091BE013F93C7 |
:102520002F9377270E94D32C7F936F9381E592E0BE |
:102530009F938F93FF920E94C30888E28093CC01FF |
:102540002091D9013091DA018091B4019091B501C7 |
:102550006091BF013F932F9377270E94D32C7F93E5 |
:102560006F9382E492E09F938F93FF920E94C3083F |
:102570008CE38093CC012091DB013091DC018091D0 |
:10258000B6019091B7016091C0013F932F937727D7 |
:102590000E94D32C7F936F9383E392E056C01092F6 |
:1025A000CC0186E292E09F938F93FF920E94C30832 |
:1025B00084E18093CC012091DD013091DE01809196 |
:1025C000BA019091BB016091C1013F932F9377278E |
:1025D0000E94D32C7F936F9387E192E09F938F9318 |
:1025E000FF920E94C30888E28093CC012091DF0112 |
:1025F0003091E0018091B8019091B9016091C201E0 |
:102600003F932F9377270E94D32C7F936F9388E07B |
:1026100092E09F938F93FF920E94C3088CE3809374 |
:10262000CC016091E1017091E2018091E301909110 |
:10263000E4010091290510912A050E94672B7F93E0 |
:102640006F931F930F9389EF91E09F938F93FF9266 |
:102650000E94C3088DB79EB7489613CE84E180933D |
:10266000CC0180910401909105019F938F938AEE94 |
:1026700091E09F938F93FF920E94C30888E280931A |
:10268000CC018091270299279F938F938BED91E046 |
:102690009F938F93FF920E94C3088DB79EB70A96AF |
:1026A000F0CD1092CC018CEC91E09F938F93FF9230 |
:1026B0000E94C30884E18093CC0180911B02909119 |
:1026C0001C029F938F938DEB91E09F938F93FF92CA |
:1026D0000E94C30888E28093CC01809117029091F8 |
:1026E00018029F938F938EEA91E09F938F93FF92AE |
:1026F0000E94C3088CE38093CC01809119029091D1 |
:102700001A029F938F938FE991E09F938F93FF928B |
:102710000E94C3088DB79EB74296B3CD1092CC01EC |
:1027200080911F02909120029F938F9383E991E003 |
:102730009F938F93FF920E94C30884E18093CC0102 |
:1027400080912102909122029F938F9387E891E0DC |
:102750009F938F93FF920E94C30888E28093CC01DD |
:1027600080912302909124029F938F938BE791E0B5 |
:102770009F938F93FF920E94C3088CE38093CC01B8 |
:1027800080912502909126029F938F938FE691E08E |
:102790009F938F93FF9270CD1092CC0187E691E0CA |
:1027A0009F938F93FF920E94C30884E18093CC0192 |
:1027B0008091890199279F938F9389E591E09F9359 |
:1027C0008F93FF920E94C30888E28093CC0180918E |
:1027D000AD019091AE019F938F938BE491E09F9315 |
:1027E0008F93FF920E94C3088CE38093CC01809169 |
:1027F000910599279F938F938091900599279F9397 |
:102800008F938DE391E09F938F93FF920E94C30873 |
:1028100035CD0150009366011092CE011092CD018A |
:102820001F910F91FF9008951092B9008AE2809352 |
:10283000B800089585EA8093BC0080E090E0089598 |
:1028400084E98093BC0008951092B9008093BB0086 |
:1028500085E88093BC0080E090E008951F920F927D |
:102860000FB60F9211248F939F93EF93FF93809154 |
:10287000CF018F5F8093CF018150833009F442C034 |
:10288000843028F48130A1F0823070F50CC085309E |
:1028900009F448C08530D8F1863009F44BC0873040 |
:1028A00009F071C05BC08091D001880F8E5A14C0AE |
:1028B0008091D0018F5F8093D0018150813009F4E5 |
:1028C00044C0813038F0823009F442C0833009F0CE |
:1028D0005AC041C0809196021092B9008093BB000B |
:1028E00085E88093BC004FC084E98093BC00809150 |
:1028F000D001843018F41092CF0102C01092D001A0 |
:1029000085EAEFCF8091D101880F8D5AE5CF809174 |
:10291000D1018130D1F08130E8F28230C9F08330CA |
:1029200091F519C08091BB00E091D101FF27E75CD0 |
:10293000FA4F80838091D101813039F0813050F29B |
:10294000823031F08330F9F406C080919702C4CF11 |
:1029500080919A02C1CF8091A602BECF8091D10111 |
:102960009091BB00E82FFF27E75CFA4F94838F5FBD |
:102970008093D101843010F01092D10184E98093CA |
:10298000BC001092CF01FF91EF919F918F910F901A |
:102990000FBE0F901F90189583EC80938100EFE697 |
:1029A000F0E08081806280831092DC011092DB0174 |
:1029B0001092DA011092D9011092D8011092D70129 |
:1029C00008951F920F920FB60F9211240F931F9329 |
:1029D0002F933F934F935F936F937F938F939F9327 |
:1029E000AF93BF93CF93DF93EF93FF932091860034 |
:1029F000309187008091D4019091D501281B390B2B |
:102A000080918600909187009093D5018093D401A6 |
:102A1000C9018D5D95408356994148F481E090E06D |
:102A20009093D3018093D2011092670154C0C0915A |
:102A3000D201D091D301CA30D1050CF04CC0C901EC |
:102A40008B5F9040845B914008F040C0A901425DDB |
:102A50005140FE01EE0FFF1FEF5BFA4F8081918125 |
:102A6000FA01E81BF90BCF01F7FF03C090958195A0 |
:102A70009F4F06974CF480912702883C28F4809160 |
:102A80002702865F80932702FE01EE0FFF1F8F0152 |
:102A90000F5B1A4FD8012D913C91C901880F991FE6 |
:102AA000820F931F840F951F64E070E00E94D32C67 |
:102AB000D8018D919C9111979B01281B390BE95AE4 |
:102AC000FA4F3183208311967C936E932196D09395 |
:102AD000D301C093D201FF91EF91DF91CF91BF91CC |
:102AE000AF919F918F917F916F915F914F913F91A6 |
:102AF0002F911F910F910F900FBE0F901F9018955F |
:102B0000AF92BF92CF92DF92EF92FF920F931F93FB |
:102B100010927A008091BE01882369F08091B20101 |
:102B20009091B3016091BE0177270E94D32C7093DE |
:102B3000AA056093A9058091BF01882369F080915F |
:102B4000B4019091B5016091BF0177270E94D32C09 |
:102B50007093A8056093A7058091C001882369F050 |
:102B60008091B6019091B7016091C00177270E94D2 |
:102B7000D32C7093B6056093B5058091C10188236D |
:102B8000D9F1E090B205F090B3056091BA0170916F |
:102B9000BB012091C1010027F7FC0095102F5701C0 |
:102BA000680143E0AA0CBB1CCC1CDD1C4A95D1F784 |
:102BB000AE18BF08C00AD10A882777FD8095982FE4 |
:102BC00034E0660F771F881F991F3A95D1F7332796 |
:102BD000442755270E94082DA20EB31EC41ED51EE1 |
:102BE000C601B50128E030E040E050E00E94082D29 |
:102BF0003093B3052093B2058091C2018823D9F1A7 |
:102C0000E090BB05F090BC056091B8017091B901EE |
:102C10002091C2010027F7FC0095102F5701680191 |
:102C200083E0AA0CBB1CCC1CDD1C8A95D1F7AE1826 |
:102C3000BF08C00AD10A882777FD8095982FB4E095 |
:102C4000660F771F881F991FBA95D1F7332744273E |
:102C500055270E94082DA20EB31EC41ED51EC60104 |
:102C6000B50128E030E040E050E00E94082D3093AC |
:102C7000BC052093BB058091C3018823A1F1E0909E |
:102C8000AC05F090AD056091BC017091BD01209143 |
:102C9000C3010027F7FC0095102F57016801A3E03E |
:102CA000AA0CBB1CCC1CDD1CAA95D1F7AE18BF0822 |
:102CB000C00AD10A882777FD8095982F33274427AB |
:102CC00055270E94082DA20EB31EC41ED51EC60194 |
:102CD000B50128E030E040E050E00E94082D30933C |
:102CE000AD052093AC051092B3011092B201109281 |
:102CF000BE011092B5011092B4011092BF01109262 |
:102D0000B7011092B6011092C0011092B901109251 |
:102D1000B8011092C2011092BB011092BA01109238 |
:102D2000C1011092BD011092BC011092C3018091AB |
:102D30000B0290910C02A0910D02B0910E028093B3 |
:102D4000F7019093F801A093F901B093FA018091F3 |
:102D5000FB019091FC01A091FD01B091FE018093D7 |
:102D6000E7019093E801A093E901B093EA01809113 |
:102D7000030290910402A0910502B0910602809393 |
:102D8000EF019093F001A093F101B093F2018091D3 |
:102D9000FF0190910002A0910102B0910202809384 |
:102DA000EB019093EC01A093ED01B093EE018091C3 |
:102DB000070290910802A0910902B0910A02809343 |
:102DC000F3019093F401A093F501B093F6018FEE17 |
:102DD00080937A008091A9059091AA05893C91057C |
:102DE0007CF02091A9053091AA058091A9059091C8 |
:102DF000AA05880F991F880F991F2052334015C0CC |
:102E00008091A9059091AA0588539F4FA4F4209121 |
:102E1000A9053091AA058091A9059091AA05880F6E |
:102E2000991F880F991F205E3C4F820F931F90932C |
:102E3000AA058093A9058091A7059091A805893CD2 |
:102E400091057CF02091A7053091A8058091A705F8 |
:102E50009091A805880F991F880F991F2052334021 |
:102E600015C08091A7059091A80588539F4FA4F4A1 |
:102E70002091A7053091A8058091A7059091A805FC |
:102E8000880F991F880F991F205E3C4F820F931F58 |
:102E90009093A8058093A70520911F0230912002EE |
:102EA00080917105E82FFF27EE0FFF1FEF5BFA4FB0 |
:102EB0008081918182599F4F281739071CF42F5F19 |
:102EC0003F4F0CC08081918182599F4F8217930799 |
:102ED0004CF42115310531F021503040309320025F |
:102EE00020931F02209121023091220280917205CD |
:102EF000E82FFF27EE0FFF1FEF5BFA4F80819181D4 |
:102F000082599F4F281739071CF42F5F3F4F0CC081 |
:102F10008081918182599F4F821793074CF421152C |
:102F2000310531F0215030403093220220932102AC |
:102F3000209123023091240280917305E82FFF270E |
:102F4000EE0FFF1FEF5BFA4F8081918182599F4FF7 |
:102F5000281739071CF42F5F3F4F0CC080819181E7 |
:102F600082599F4F821793074CF42115310531F098 |
:102F700021503040309324022093230220912502D7 |
:102F80003091260280917405E82FFF27EE0FFF1F76 |
:102F9000EF5BFA4F8081918182599F4F2817390743 |
:102FA0001CF42F5F3F4F0CC08081918182599F4F4D |
:102FB000821793074CF42115310531F02150304030 |
:102FC000309326022093250280911F0290912002C7 |
:102FD00097FF05C01092200210921F020AC08F3F77 |
:102FE000910539F034F08FEF90E0909320028093B8 |
:102FF0001F02809121029091220297FF05C010923A |
:103000002202109221020AC08F3F910539F034F05C |
:103010008FEF90E09093220280932102809123020F |
:103020009091240297FF05C010922402109223026F |
:103030000AC08F3F910539F034F08FEF90E0909304 |
:10304000240280932302809125029091260297FF0B |
:1030500005C010922602109225020AC08F3F9105EA |
:1030600039F034F08FEF90E09093260280932502A0 |
:103070001F910F91FF90EF90DF90CF90BF90AF9096 |
:10308000089510927A008091BE01882369F08091A2 |
:10309000B2019091B3016091BE0177270E94D32CB9 |
:1030A0007093AA056093A9058091BF01882369F0F8 |
:1030B0008091B4019091B5016091BF0177270E9482 |
:1030C000D32C7093A8056093A7058091C001882335 |
:1030D00069F08091B6019091B7016091C0017727A6 |
:1030E0000E94D32C7093B6056093B5058091C10101 |
:1030F0008823D1F06091BA017091BB012091C10188 |
:10310000882777FD8095982F34E0660F771F881FFA |
:10311000991F3A95D1F73327442755270E94082D48 |
:103120003093B3052093B2058091C2018823D1F07A |
:103130006091B8017091B9012091C201882777FD93 |
:103140008095982FB4E0660F771F881F991FBA9556 |
:10315000D1F73327442755270E94082D3093BC050B |
:103160002093BB058091C301882399F06091BC0135 |
:103170007091BD012091C301882777FD8095982F1C |
:103180003327442755270E94082D3093AD052093FF |
:10319000AC051092B3011092B2011092BE011092D0 |
:1031A000B5011092B4011092BF011092B7011092B4 |
:1031B000B6011092C0011092B9011092B80110929C |
:1031C000C2011092BB011092BA011092C10110927B |
:1031D000BD011092BC011092C3018FEE80937A0062 |
:1031E00020911F023091200280917105E82FFF2766 |
:1031F000EE0FFF1FEF5BFA4F8081918182599F4F45 |
:10320000281739071CF42F5F3F4F0CC08081918134 |
:1032100082599F4F821793074CF42115310531F0E5 |
:10322000215030403093200220931F022091210230 |
:103230003091220280917205E82FFF27EE0FFF1FC9 |
:10324000EF5BFA4F8081918182599F4F2817390790 |
:103250001CF42F5F3F4F0CC08081918182599F4F9A |
:10326000821793074CF42115310531F0215030407D |
:1032700030932202209321022091230230912402D4 |
:1032800080917305E82FFF27EE0FFF1FEF5BFA4FCA |
:103290008081918182599F4F281739071CF42F5F35 |
:1032A0003F4F0CC08081918182599F4F82179307B5 |
:1032B0004CF42115310531F0215030403093240277 |
:1032C00020932302209125023091260280917405DB |
:1032D000E82FFF27EE0FFF1FEF5BFA4F80819181F0 |
:1032E00082599F4F281739071CF42F5F3F4F0CC09E |
:1032F0008081918182599F4F821793074CF4211549 |
:10330000310531F0215030403093260220932502C0 |
:1033100080911F029091200297FF05C01092200219 |
:1033200010921F020AC08F3F910539F034F08FEFE1 |
:1033300090E09093200280931F028091210290914F |
:10334000220297FF05C010922202109221020AC0A9 |
:103350008F3F910539F034F08FEF90E09093220287 |
:1033600080932102809123029091240297FF05C04F |
:1033700010922402109223020AC08F3F910539F067 |
:1033800034F08FEF90E09093240280932302809199 |
:1033900025029091260297FF05C0109226021092F6 |
:1033A000250208958F3F910539F034F08FEF90E0BA |
:1033B000909326028093250208951F9380917805AB |
:1033C0008B3F98F08B3F19F480911F020EC08C3F09 |
:1033D00019F48091210209C08D3F19F480912302D4 |
:1033E00004C08E3F21F48091250280938101809159 |
:1033F0008101882319F41092810104C08F3F11F4D8 |
:1034000080938101809177058B3F98F08B3F19F471 |
:1034100080911F020EC08C3F19F48091210209C0D7 |
:103420008D3F19F48091230204C08E3F21F48091D6 |
:1034300025028093800180918001882319F41092E5 |
:10344000800105C0843618F084E680938001809165 |
:1034500079058B3F98F08B3F19F480911F020EC0C5 |
:103460008C3F19F48091210209C08D3F19F480919D |
:10347000230204C08E3F21F48091250280938201B3 |
:1034800080918201882319F41092820105C084364C |
:1034900018F084E68093820180917B058B3F98F041 |
:1034A0008B3F19F480911F020EC08C3F19F480915C |
:1034B000210209C08D3F19F48091230204C08E3F80 |
:1034C00021F48091250280938301809183018823D8 |
:1034D00019F41092830104C08F3F11F4809383018B |
:1034E000809182058B3F98F08B3F19F480911F02E9 |
:1034F0000EC08C3F19F48091210209C08D3F19F450 |
:103500008091230204C08E3F21F480912502809394 |
:10351000840180918401882319F41092840104C0ED |
:103520008F3F11F480938401809183058B3F98F045 |
:103530008B3F19F480911F020EC08C3F19F48091CB |
:10354000210209C08D3F19F48091230204C08E3FEF |
:1035500021F48091250280938501809185018B3033 |
:1035600010F48AE002C08F3F11F4809385018091AE |
:1035700084058B3F98F08B3F19F480911F020EC099 |
:103580008C3F19F48091210209C08D3F19F480917C |
:10359000230204C08E3F21F480912502809386018E |
:1035A00080918601882319F41092860104C08F3F10 |
:1035B00011F480938601809189058B3F98F08B3FB1 |
:1035C00019F480911F020EC08C3F19F480912102E2 |
:1035D00009C08D3F19F48091230204C08E3F21F46D |
:1035E000809125028093880180918801882319F4B5 |
:1035F0001092880104C08F3F11F48093880180915C |
:103600008A058B3F98F08B3F19F480911F020EC002 |
:103610008C3F19F48091210209C08D3F19F48091EB |
:10362000230204C08E3F21F480912502809333024F |
:1036300080913302882319F41092330204C08F3F23 |
:1036400011F48093330280918B058B3F98F08B3F70 |
:1036500019F480911F020EC08C3F19F48091210251 |
:1036600009C08D3F19F48091230204C08E3F21F4DC |
:10367000809125028093340280913402882319F4CA |
:103680001092340204C08F3F11F480933402809171 |
:103690008C058B3F98F08B3F19F480911F020EC070 |
:1036A0008C3F19F48091210209C08D3F19F480915B |
:1036B000230204C08E3F21F48091250280933502BD |
:1036C00080913502882319F41092350204C08F3F8F |
:1036D00011F48093350280918D058B3F98F08B3FDC |
:1036E00019F480911F020EC08C3F19F480912102C1 |
:1036F00009C08D3F19F48091230204C08E3F21F44C |
:10370000809125028093360280913602882319F435 |
:103710001092360204C08F3F11F4809336029091CC |
:103720008E059B3FB0F09B3F19F480911F0204C0AF |
:103730009C3F29F480912102809389010CC09D3F18 |
:1037400019F480912302F8CF9E3F29F4809125023D |
:10375000F3CF9093890180918901882319F4109205 |
:10376000890104C08F3F11F4809389019B3FB0F021 |
:103770009B3F19F480911F0204C09C3F29F4809163 |
:103780002102809389010CC09D3F19F4809123028E |
:10379000F8CF9E3F29F480912502F3CF90938901C1 |
:1037A00080918901882319F41092890104C08F3F08 |
:1037B00011F4809389019B3FB0F09B3F19F48091F5 |
:1037C0001F0204C09C3F29F480912102809389014B |
:1037D0000CC09D3F19F480912302F8CF9E3F29F43D |
:1037E00080912502F3CF90938901809189018823EC |
:1037F00019F41092890104C08F3F11F4809389015C |
:1038000010918801612F772767FD7095872F972F7B |
:103810000E94842B17FF06C020E030E040E853E40C |
:103820000E94DF2A27E137EB41ED58E30E94FE2B8F |
:1038300060937C0170937D0180937E0190937F0162 |
:10384000809180058093B40580917F058093AB05BE |
:103850001F91089581E080936D0542E040936E05CD |
:1038600083E080936F0524E02093700535E030936A |
:10387000710586E08093720587E08093730510924E |
:1038800075058EE1809376058BEF809378058AE04D |
:103890008093790592E39093770590937B0540930D |
:1038A0007A0520937C0510927D0580E180937E054A |
:1038B0008FE080937F058AEF809380058AE1809373 |
:1038C000810580E8809382058FEA80938305809349 |
:1038D00084058AE58093850583E28093860584E1EB |
:1038E00080938705109288053093890510928A0588 |
:1038F00010928B0510928C0510928D0584E68093B2 |
:103900008E0588E280938F05109293059093900521 |
:1039100086E98093910530939205ABE9B5E0E8E63E |
:10392000F1E08CE001900D928150E1F7089581E083 |
:1039300080936D0552E050936E0583E080936F0590 |
:1039400044E04093700535E03093710586E0809344 |
:10395000720587E08093730528E020937405109228 |
:1039600075059EE1909376058BEF809378058AE04C |
:103970008093790586E48093770590937B05509337 |
:103980007A0540937C0520937D0580E180937E0538 |
:103990008FE080937F058AEF809380058AE1809392 |
:1039A000810580E88093820588E78093830596E906 |
:1039B000909384058AE58093850583E2809386054C |
:1039C00084E18093870510928805309389051092D1 |
:1039D0008A0510928B0510928C0510928D0584E655 |
:1039E00080938E0588E280938F051092930582E381 |
:1039F000809390059093910530939205ABE9B5E0E3 |
:103A0000E0E7F1E08CE001900D928150E1F708953C |
:103A100080912E02882301F510929702109296024F |
:103A200010929A021092A60280919801882311F0B8 |
:103A30008093960280919901882311F080939702D8 |
:103A400080919A01882311F08093A60280919B01B6 |
:103A5000882311F080939A0280919602992790937F |
:103A6000030580930205809197029927909305059D |
:103A7000809304058091A60299279093070580936F |
:103A8000060580919A02992790930905809308056D |
:103A90001092CF011092D0010E941A140895CF9372 |
:103AA000DF931092DE011092DD011092E00110927E |
:103AB000DF0180E090E0A0E0B0E08093E10190932E |
:103AC000E201A093E301B093E4011092D8011092B7 |
:103AD000D7011092DA011092D9011092DC011092F4 |
:103AE000DB010E94411885E090E00E94FB0BEC0195 |
:103AF000CE010E94040C8823D9F30E9441188091C2 |
:103B0000750580FF10C080910A0190910B01875BC1 |
:103B1000934038F480910A0190910B018E5E92409F |
:103B200010F40E9420108091A9059091AA0597FF9A |
:103B300003C0909581959F4F9093D8018093D701B2 |
:103B40008091A7059091A80597FF03C09095819556 |
:103B50009F4F9093DA018093D9018091B5059091A0 |
:103B6000B60597FF03C0909581959F4F9093DC0118 |
:103B70008093DB018091BB059091BC0597FF03C04A |
:103B8000909581959F4F60E170E00E94D32C7093D7 |
:103B9000E0016093DF018091B2059091B30597FF3A |
:103BA00003C0909581959F4F60E170E00E94D32CF7 |
:103BB0007093DE016093DD016091290570912A0503 |
:103BC000882777FD8095982F0E94842B6093E101D0 |
:103BD0007093E2018093E3019093E4011092FB0162 |
:103BE0001092FC011092FD011092FE011092FF0153 |
:103BF000109200021092010210920202109203022F |
:103C0000109204021092050210920602109207020E |
:103C1000109208021092090210920A0210920B02EE |
:103C200010920C0210920D0210920E021092AA0530 |
:103C30001092A9051092A8051092A7051092B6053A |
:103C40001092B5058091060190910701A09108019D |
:103C5000B091090190932C0580932B051092C5011A |
:103C60001092C401109213021092140210921502C5 |
:103C700010921602809117029091180290931A02E6 |
:103C80008093190282E390E09093AC018093AB01A2 |
:103C9000DF91CF9108951F93182F0EC080912E02AF |
:103CA000882361F484E690E09093AC018093AB01AB |
:103CB0008AEF90E00E94E40C115080F71F91089564 |
:103CC0002F923F924F925F926F927F928F929F922C |
:103CD000AF92BF92CF92DF92EF92FF920F931F931A |
:103CE000CF93DF93CDB7DEB724970FB6F894DEBF3E |
:103CF0000FBECDBF0E948015299AE0916F05AE2FAF |
:103D0000BB27AA0FBB1FAF5BBA4F0D90BC91A02D74 |
:103D10009D0128583F4F3A83298337FF02C01A82FA |
:103D2000198280912702843608F04AC080910101EF |
:103D3000882331F484EF91E09093AC018093AB0140 |
:103D40008091420290914302009731F00197909345 |
:103D500043028093420204C010922E0210921D0270 |
:103D6000289A80913D0290913E02815D974028F112 |
:103D700080918605482F55275A83498381E0809397 |
:103D80001D02E0916D05FF27EE0FFF1FEF5BFA4F5D |
:103D900011821082E0916E05FF27EE0FFF1FEF5B8F |
:103DA000FA4F11821082E0917005FF27EE0FFF1F7E |
:103DB000EF5BFA4F11821082CEC110922E02CBC15E |
:103DC000809127028D3808F4C6C110921D0280919F |
:103DD000870522E3829FC0011124909343028093C0 |
:103DE000420269817A81693271056CF080913D02ED |
:103DF00090913E027FEF8F3F970781F1019690935C |
:103E00003E0280933D0280913D0290913E02883CAB |
:103E1000910520F089819A81889704F510925802C3 |
:103E20001092590210925A0210925B0210925402A0 |
:103E300010925502109256021092570210920B02E5 |
:103E400010920C0210920D0210920E0210920F02AC |
:103E5000109210021092110210921202E981FA815E |
:103E6000E93CF1050CF4D6C080912E02882309F0BC |
:103E700072C1E0917005FF27EE0FFF1FEF5BFA4F55 |
:103E8000808191818C3491050CF4C1C080914102F4 |
:103E90008F5F80934102893C08F45DC129980E949C |
:103EA0004F1D10922E021092410210923E0210926B |
:103EB0003D0280916D05282F3327F901EE0FFF1F7A |
:103EC000EF5BFA4F80819181873491059CF4E091FA |
:103ED0006E05FF27EE0FFF1FEF5BFA4F0190F08199 |
:103EE000E02DF7FF03C0F095E195FF4FE734F105B2 |
:103EF0000CF46CC080916E05682F7727DB01AA0F48 |
:103F0000BB1FAF5BBA4F8D919C9111978734910580 |
:103F10003CF0F901EE0FFF1FEF5BFA4F80819181BA |
:103F20008D919C918734910564F0F901EE0FFF1F8C |
:103F3000EF5BFA4F808191818734910514F042E064 |
:103F400001C041E0FB01EE0FFF1FEF5BFA4F8081E4 |
:103F50009181863491055CF4F901EE0FFF1FEF5B50 |
:103F6000FA4F80819181873491050CF043E0FB0189 |
:103F7000EE0FFF1FEF5BFA4F808191818A5B9F4FAD |
:103F80005CF4F901EE0FFF1FEF5BFA4F8081918126 |
:103F9000873491050CF044E0660F771F6F5B7A4F12 |
:103FA000FB01808191818A5B9F4F5CF4220F331F5C |
:103FB0002F5B3A4FF90180819181863491050CF491 |
:103FC00045E0A2E0B0E0042E0E942B2D0E94F801F3 |
:103FD0004AE36DE675E00E9417020E94F8010E9414 |
:103FE0004B1E8091750580FFB6C080910A019091AB |
:103FF0000B01875B934040F480910A0190910B0183 |
:104000008E5E924008F0A7C00E942010A4C01092BB |
:104010004102A1C049815A81433251050CF09BC035 |
:1040200080917005482F5527FA01EE0FFF1FEF5BB7 |
:10403000FA4F80819181855B9F4F0CF06DC080911C |
:1040400040028F5F80934002893C08F467C088EC8F |
:104050008093400281E090E090933E0280933D0285 |
:1040600081E080932E021092500210925102109221 |
:1040700052021092530210920B0210920C021092F4 |
:104080000D0210920E0210920F0210921002109266 |
:104090001102109212021092FB011092FC01109278 |
:1040A000FD011092FE011092030210920402109280 |
:1040B0000502109206028091E7019091E801A0911B |
:1040C000E901B091EA018093FF0190930002A0936F |
:1040D0000102B09302028091EF019091F001A09152 |
:1040E000F101B091F2018093070290930802A0932E |
:1040F0000902B0930A0210925802109259021092CB |
:104100005A0210925B0210925402109255021092C1 |
:1041100056021092570202C010924002440F551FDF |
:104120004F5B5A4FFA01808191818C3491058CF05C |
:1041300080913F028F5F80933F02893C60F0109234 |
:104140002E0288EC80933F0210923E0210923D02B4 |
:1041500002C010923F0280916701815080936701F5 |
:10416000809167018F3F29F080911D02882309F417 |
:1041700012C10E94DD19E0916D05FF27EE0FFF1FB0 |
:10418000DF01AF5BBA4F8D919C9160917C057727E1 |
:10419000E95AFA4F2081318140917D055527FC0174 |
:1041A000E69FC001E79F900DF69F900D1124F90145 |
:1041B000E49F9001E59F300DF49F300D1124820F94 |
:1041C000931F9093290280932802E0916E05FF27A8 |
:1041D000EE0FFF1FDF01AF5BBA4F8D919C91E95A43 |
:1041E000FA4F20813181FC01E69FC001E79F900DCD |
:1041F000F69F900D1124B901649F9001659F300DC9 |
:10420000749F300D1124820F931F90932B02809383 |
:104210002A02E0917005FF27EE0FFF1FEF5BFA4FB8 |
:1042200080819181909581959F4F90932D028093ED |
:104230002C0210918501612F772767FD7095872FDC |
:10424000972F0E94842B17FF06C020E030E040E843 |
:1042500053E40E94DF2A20E030E040E251E40E9473 |
:10426000DF2A20E030E040E85BE30E94FE2B5B01A8 |
:104270006C016093B7057093B8058093B90590936E |
:10428000BA0510918601612F772767FD7095872FFA |
:10429000972F0E94842B17FF06C020E030E040E8F3 |
:1042A00053E40E94DF2A20E030EE4BE257E40E9404 |
:1042B000212B6093AE057093AF058093B00590936A |
:1042C000B1058091750582FF0CC080E090E0A0E010 |
:1042D000B0E08093AE059093AF05A093B005B09386 |
:1042E000B10520E030E040E050E0C601B5010E9499 |
:1042F0008E2B882364F480E090E0A0E0B0E080930F |
:10430000B7059093B805A093B905B093BA0520E01E |
:1043100030E040E050E06091AE057091AF058091D3 |
:10432000B0059091B1050E948E2B882364F480E043 |
:1043300090E0A0E0B0E08093AE059093AF05A0932D |
:10434000B005B093B10580911D02882321F1109230 |
:104350002D0210922C021092290210922802109223 |
:104360002B0210922A028DEC9CECACECBDE3809306 |
:10437000B7059093B805A093B905B093BA058AE044 |
:1043800097EDA3EABBE38093AE059093AF05A093AE |
:10439000B005B093B1058091C6019091C7018D54CD |
:1043A000914008F4BCC02091EB013091EC014091A8 |
:1043B000ED015091EE018091E7019091E801A0910B |
:1043C000E901B091EA01B901681B790B70934702CA |
:1043D000609346022091F3013091F4014091F50180 |
:1043E0005091F6018091EF019091F001A091F101BF |
:1043F000B091F201281B390B3093450220934402FF |
:104400001092C7011092C601673A710534F080918D |
:10441000D7019091D801019608C06A557F4F4CF49E |
:104420008091D7019091D80101979093D801809302 |
:10443000D701273A310534F08091D9019091DA0102 |
:10444000019608C02A553F4F4CF48091D9019091B4 |
:10445000DA0101979093DA018093D90180910F02DC |
:1044600090911002A0911102B0911202873A910529 |
:10447000A105B1054CF08091DB019091DC01019721 |
:104480009093DC018093DB0180910F0290911002E8 |
:10449000A0911102B09112028A559F4FAF4FBF4FAA |
:1044A0004CF48091DB019091DC0101969093DC014A |
:1044B0008093DB0110927A008091E7019091E801EE |
:1044C000A091E901B091EA018093FF01909300026D |
:1044D000A0930102B09302028091EF019091F0014C |
:1044E000A091F101B091F20180930702909308022C |
:1044F000A0930902B0930A028091F7019091F8010C |
:10450000A091F901B091FA0180930F0290931002EB |
:10451000A0931102B09312028FEE80937A00609103 |
:10452000E7017091E8018091E9019091EA01A09082 |
:104530008105BB24CC24DD24E090B205F090B305C6 |
:10454000A60195010E94082D0027F7FC0095102F69 |
:104550002E193F09400B510BCA01B90120E130E08F |
:1045600040E050E00E94082D39014A0120934C029E |
:1045700030934D0240934E0250934F026091EF01F1 |
:104580007091F0018091F1019091F201E090BB05F2 |
:10459000F090BC05A60195010E94082D0027F7FCAC |
:1045A0000095102F2E193F09400B510BCA01B9017C |
:1045B00020E130E040E050E00E94082D20934802C6 |
:1045C0003093490240934A0250934B02F5EF6F1625 |
:1045D000F1E07F06F0E08F06F0E09F062CF084EF1C |
:1045E00091E0A0E0B0E00DC06CE066166EEF7606DC |
:1045F0006FEF86066FEF960664F48CE09EEFAFEFE8 |
:10460000BFEF80934C0290934D02A0934E02B09363 |
:104610004F02253F71E0370770E0470770E057070A |
:104620002CF084EF91E0A0E0B0E009C02C503E4FA8 |
:104630004F4F5F4F64F48CE09EEFAFEFBFEF80937E |
:10464000480290934902A0934A02B0934B02109201 |
:104650007A008091FB019091FC01A091FD01B09145 |
:10466000FE0120914C0230914D0240914E0250913A |
:104670004F02821B930BA40BB50B8093FB0190930D |
:10468000FC01A093FD01B093FE0180910302909183 |
:104690000402A0910502B0910602209148023091D7 |
:1046A000490240914A0250914B02821B930BA40B8A |
:1046B000B50B8093030290930402A0930502B0937C |
:1046C000060280912C0290912D025C01CC24B7FC53 |
:1046D000C094DC2CA0925002B0925102C0925202BF |
:1046E000D092530297FF03C0909581959F4F849776 |
:1046F0003CF08091750584FD03C081E08093390210 |
:1047000060900B0270900C0280900D0290900E024F |
:10471000C501B7FE03C0909581959F4F7C0100278E |
:10472000F7FC0095102F20917E053327442755274D |
:10473000C601B5010E94A02C9B01AC01C801B701C4 |
:104740000E94A02C20E031E040E050E00E94082DC3 |
:10475000442737FD4095542F621A730A840A950A3C |
:1047600060920B0270920C0280920D0290920E02E7 |
:1047700080910B0290910C02A0910D02B0910E025B |
:1047800081539547A040B04064F080E395E7A0E0F6 |
:10479000B0E080930B0290930C02A0930D02B093B3 |
:1047A0000E0280910B0290910C02A0910D02B0912B |
:1047B0000E02805D9A48AF4FBF4F64F480ED9AE8D7 |
:1047C000AFEFBFEF80930B0290930C02A0930D020A |
:1047D000B0930E028FEE80937A0080911702909131 |
:1047E0001802892B09F4A1C08091750583FF9DC033 |
:1047F0006091E7017091E8018091E9019091EA01EF |
:1048000020E032E040E050E00E94082D890137FFAF |
:1048100003C0109501951F4F6091EF017091F00159 |
:104820008091F1019091F20120E032E040E050E00F |
:104830000E94082DB90137FF03C0709561957F4F25 |
:10484000601771070CF4B80169317105A4F4809107 |
:104850003902882381F08091370290913802892BA8 |
:1048600051F4809117029091180290931A0280934C |
:10487000190210923902209184013327629FC001EE |
:10488000639F900D729F900D112460E470E00E9470 |
:10489000D32CA901461B570B141615060CF03FC06C |
:1048A00010927A002091370230913802211531059B |
:1048B00061F500910B0210910C0220910D023091D4 |
:1048C0000E0280911B0290911C02BC01649FC001EA |
:1048D000659F900D749F900D112460E270E00E941E |
:1048E000D32C882777FD8095982F060F171F281F38 |
:1048F000391F00930B0210930C0220930D0230938A |
:104900000E028FEE80937A0010C08FEE80937A00B3 |
:1049100021503040309338022093370206C084EF94 |
:1049200091E090933802809337028091750585FF5E |
:1049300011C08091330299279093A3028093A20221 |
:104940008091340299279093A5028093A4020E943B |
:104950002A2908C010928D0210928C0210928F02A8 |
:1049600010928E028091E9048F5F8093E904809118 |
:104970003A02815080933A028F3F09F068C081E388 |
:1049800080933A026091E7017091E8018091E9011A |
:104990009091EA01E0908105FF2400271127A801EA |
:1049A00097010E94082D3093EB042093EA04609154 |
:1049B000EF017091F0018091F1019091F201A80155 |
:1049C00097010E94082D3093ED042093EC04809110 |
:1049D000B2059091B3059093EF048093EE0480911B |
:1049E000BB059091BC059093F1048093F0048091F5 |
:1049F000B5059091B6059093F3048093F2048091ED |
:104A00002F02909130029093F5048093F40460910A |
:104A1000130270911402809115029091160220E009 |
:104A200032E040E050E00E94082D3093F7042093DC |
:104A3000F60489819A819093F9048093F804809117 |
:104A40001702909118029093FB048093FA046091EE |
:104A5000E7017091E8018091E9019091EA012090CD |
:104A6000AE053090AF054090B0055090B105E09094 |
:104A7000A905F090AA056090B7057090B8058090E0 |
:104A8000B9059090BA050E94842BA20191010E9461 |
:104A9000FE2B5B016C010027F7FC0095102FC8016D |
:104AA000B7010E94842BA40193010E94FE2B9B015D |
:104AB000AC01C601B5010E94DF2A0E94672B7093EA |
:104AC000AA056093A9056091EF017091F0018091B2 |
:104AD000F1019091F201E090A705F090A8050E94E5 |
:104AE000842BA20191010E94FE2B5B016C01002727 |
:104AF000F7FC0095102FC801B7010E94842BA40178 |
:104B000093010E94FE2B9B01AC01C601B5010E94DE |
:104B1000DF2A0E94672B7093A8056093A705609118 |
:104B2000B5057091B605A090F701B090F801C0905E |
:104B3000F901D090FA01882777FD8095982F0E947F |
:104B4000842B7B018C0120E030E040E05FE3C40176 |
:104B5000B3010E94FE2B9B01AC01C801B7010E946A |
:104B6000FE2B7B018C01C601B5010E94842BA201A2 |
:104B700091010E94FE2B9B01AC01C801B7010E946C |
:104B8000DF2A0E94672B7093B6056093B50580916C |
:104B9000A9059091AA058150984034F080E098E0F2 |
:104BA0009093AA058093A9058091A9059091AA05E3 |
:104BB0008050984F34F480E098EF9093AA0580934A |
:104BC000A9058091A7059091A8058150984034F0DF |
:104BD00080E098E09093A8058093A7058091A705B1 |
:104BE0009091A8058050984F34F480E098EF90930E |
:104BF000A8058093A7058091B5059091B6058150D1 |
:104C0000984034F080E098E09093B6058093B50525 |
:104C10008091B5059091B6058050984F34F480E0AE |
:104C200098EF9093B6058093B50580917505992707 |
:104C300080FFCDC02091810181FF0EC02233B0F4EE |
:104C400080912F029091300244979093320280938A |
:104C5000310210921E020DC080917A05289FC0017A |
:104C600011244497909332028093310281E0809323 |
:104C70001E0280911D02882321F0109232021092B0 |
:104C8000310220912F023091300240913102509137 |
:104C90003202421753070CF09AC080911E028823FB |
:104CA00009F495C0241B350B809182019927BC0122 |
:104CB000269FC001279F900D369F900D112460E123 |
:104CC00070E00E94D32C09811A81061B170B2091DA |
:104CD000C4013091C501809180019927FC012E9F6C |
:104CE000C0012F9F900D3E9F900D112468E070E051 |
:104CF0000E94D32C061B170B6091130270911402B3 |
:104D0000809115029091160220E032E040E050E0E0 |
:104D10000E94082DCA01B90120918301332744273D |
:104D200055270E94A02C20E230E040E050E00E9495 |
:104D3000082DFFEF2E3C3F0714F42EEC3FEF80913F |
:104D40003B0290913C02AC0174E0440F551F7A95F0 |
:104D5000E1F7481B590B2333310514F022E330E00F |
:104D6000021B130BCA01800F911F60E170E00E94CB |
:104D7000D32C70933C0260933B0280917605992777 |
:104D8000681779078CF429813A81281739072CF0A4 |
:104D900090933C0280933B0207C049815A81509313 |
:104DA0003C0240933B020DC080913B0290913C023B |
:104DB00069817A816817790724F470933C026093C3 |
:104DC0003B0280913B0290913C029A838983C09080 |
:104DD000B505D090B6058091500290915102C81A45 |
:104DE000D90A95E6C916D10424F064E6C62ED12C62 |
:104DF00009C0ECE9CE16EFEFDE0624F45CE9C52E1F |
:104E00005FEFD52E409078015090790160907A0143 |
:104E100070907B016091A9057091AA0520912802EC |
:104E20003091290240918C0250918D02241B350B48 |
:104E3000621B730B882777FD8095982F0E94842B27 |
:104E40009B01AC01C301B2010E94FE2B0E94672BA3 |
:104E500070939902609398028091980290919902C0 |
:104E60008C01222717FD2095322F809158029091B6 |
:104E70005902A0915A02B0915B02080F191F2A1F14 |
:104E80003B1F009358021093590220935A0230930B |
:104E90005B021016110612061306ACF4C80117FFC8 |
:104EA00003C0909581959F4F60E071E00E94D32CE4 |
:104EB0006F5F7F4F882777FD8095982F061B170B14 |
:104EC000280B390B14C0C80117FF03C090958195BA |
:104ED0009F4F60E071E00E94D32C6F5F7F4F882767 |
:104EE00077FD8095982F060F171F281F391F0093F5 |
:104EF00058021093590220935A0230935B0280911A |
:104F0000580290915902A0915A02B0915B028138E7 |
:104F1000FEE39F07F0E0AF07F0E0BF072CF080E86A |
:104F20009EE3A0E0B0E009C08058914CAF4FBF4F66 |
:104F300064F480E891ECAFEFBFEF80935802909358 |
:104F40005902A0935A02B0935B026091980270914B |
:104F5000990280907C0190907D01A0907E01B0909C |
:104F60007F01882777FD8095982F0E94842B7B01F5 |
:104F70008C01609158027091590280915A0290916F |
:104F80005B020E94842B9B01AC01C501B4010E940D |
:104F9000FE2B9B01AC01C801B7010E94DF2A0E94D1 |
:104FA000672B9601260F371F49815A81240F351F21 |
:104FB00022244A30510514F441E0242E37FD02C06A |
:104FC000222019F040E050E008C08091B405482F3D |
:104FD0005527241735070CF4A9018091AB05E82F5C |
:104FE000FF27FC83EB839F01E417F5070CF49A017C |
:104FF0002093960229813A81261B370BB9016C0D4B |
:105000007D1D77FD02C0222019F080E090E007C0EE |
:105010008091B4059927681779070CF4CB012B818F |
:105020003C81281739070CF49C012093970260916A |
:10503000A7057091A80520912A0230912B0240917A |
:105040008E0250918F02241B350B621B730B882735 |
:1050500077FD8095982F0E94842B9B01AC01C301A2 |
:10506000B2010E94FE2B0E94672B70939502609301 |
:10507000940280919402909195028C01222717FD51 |
:105080002095322F8091540290915502A0915602A2 |
:10509000B0915702080F191F2A1F3B1F009354029B |
:1050A00010935502209356023093570210161106A2 |
:1050B00012061306ACF4C80117FF03C09095819542 |
:1050C0009F4F60E071E00E94D32C6F5F7F4F882775 |
:1050D00077FD8095982F061B170B280B390B14C0F2 |
:1050E000C80117FF03C0909581959F4F60E071E064 |
:1050F0000E94D32C6F5F7F4F882777FD8095982F74 |
:10510000060F171F281F391F0093540210935502D2 |
:105110002093560230935702809154029091550289 |
:10512000A0915602B091570281383EE3930730E0D8 |
:10513000A30730E0B3072CF080E89EE3A0E0B0E0E6 |
:1051400009C08058914CAF4FBF4F64F480E891EC98 |
:10515000AFEFBFEF8093540290935502A093560295 |
:10516000B09357026091940270919502882777FD61 |
:105170008095982F0E94842B7B018C0160915402B2 |
:105180007091550280915602909157020E94842B93 |
:105190009B01AC01C501B4010E94FE2B9B01AC0137 |
:1051A000C801B7010E94DF2A0E94672B29813A813A |
:1051B000260F371F2C193D0937FD02C0222019F098 |
:1051C00040E050E008C08091B405482F55272417CF |
:1051D00035070CF4A9012B813C81241735070CF409 |
:1051E0009A012093A60289819A81861B970BBC01A4 |
:1051F0006C197D0977FD02C0222019F020E030E013 |
:1052000008C08091B405282F3327621773070CF468 |
:105210009B018B819C81821793070CF4C9018093B9 |
:105220009A0224960FB6F894DEBF0FBECDBFDF9171 |
:10523000CF911F910F91FF90EF90DF90CF90BF9093 |
:10524000AF909F908F907F906F905F904F903F9026 |
:105250002F9008956F927F928F929F92AF92BF92FC |
:10526000CF92DF92EF92FF920F931F9380911F02D4 |
:1052700090912002181619060CF078C18091220531 |
:10528000882309F473C180918A0190918B01892B45 |
:10529000D1F180910A0590910B05A0910C05B09178 |
:1052A0000D0580935C0290935D02A0935E02B09323 |
:1052B0005F0280910E0590910F05A0911005B091AD |
:1052C00011058093600290936102A0936202B093F3 |
:1052D00063028091120590911305A0911405B0917D |
:1052E00015058093640290936502A0936602B093C3 |
:1052F000670282E390E09093AC018093AB0110923F |
:105300008B0110928A01A090A202B090A30260913A |
:1053100064027091650280916602909167026E5FEF |
:105320007F4F8F4F9F4F20915C0230915D024091E3 |
:105330005E0250915F02E2E0EE2EF12C012D112D64 |
:105340002E253F254027512762277327842795273D |
:105350000E94842B0E94462C3B014C016091120557 |
:105360007091130580911405909115056E5F7F4F24 |
:105370008F4F9F4F20910A0530910B0540910C05EE |
:1053800050910D052E253F25402751276227732771 |
:10539000842795270E94842B0E94462C9B01AC01F8 |
:1053A000C401B3010E94DE2A7B018C01CC24B7FC2E |
:1053B000C094DC2CC601B5010E94842B9B01AC017A |
:1053C000C801B7010E94FE2B20E030E040E251E42A |
:1053D0000E94212B0E94672B3B014C0160936A02C3 |
:1053E00070936B0280936C0290936D022091A202E5 |
:1053F0003091A3026091600270916102809162021B |
:1054000090916302E0900E05F0900F050091100559 |
:10541000109111056E197F09800B910B442737FD00 |
:105420004095542F0E94A02C2AE030E040E050E04C |
:105430000E94082D59016A0120936E0230936F0279 |
:1054400040937002509371026091A4027091A50282 |
:10545000882777FD8095982F2091160530911705A4 |
:1054600040911805509119050E94A02C2DEF3FEF97 |
:105470004FEF5FEF0E94082D79018A0120937A0295 |
:1054800030937B0240937C0250937D026091A40292 |
:105490007091A502882777FD8095982F20911A0595 |
:1054A00030911B0540911C0550911D050E94A02CB8 |
:1054B0002DEF3FEF4FEF5FEF0E94082D20937E020C |
:1054C00030937F024093800250938102B3016E0DAE |
:1054D0007F1D70938D0260938C022A0D3B1D3093CB |
:1054E0008F0220938E0280918C0190918D018617FE |
:1054F00097072CF480918C0190918D0111C08091BF |
:105500008C0190918D01909581959F4F6817790737 |
:105510005CF480918C0190918D01909581959F4FC5 |
:1055200090938D0280938C0280918C0190918D01DB |
:10553000821793072CF480918C0190918D0111C0FA |
:1055400080918C0190918D01909581959F4F2817A6 |
:105550003907D4F480918C0190918D0190958195BB |
:105560009F4F90938F0280938E020EC085E090E053 |
:1055700090938B0180938A0110928D0210928C027D |
:1055800010928F0210928E021F910F91FF90EF9058 |
:10559000DF90CF90BF90AF909F908F907F906F9053 |
:1055A0000895FC014150504030F001900616D1F7AB |
:1055B0003197CF0108958827992708955058192EBB |
:1055C000EFD001D0D2C0BA176207730784079507DE |
:1055D000B1F188F40EF410940B2EBA2FA02D062EE4 |
:1055E000622F202D072E732F302D082E842F402D53 |
:1055F000092E952F502DFF275523B9F0591B49F03F |
:10560000573E98F0469537952795A795F0405395C6 |
:10561000C9F776F0BA0F621F731F841F30F48795A5 |
:1056200077956795B795F040939517FA0F2E0895E3 |
:10563000BF1BBB27BA0B620B730B840BF6CFDEF6D6 |
:10564000DBC0AED001D091C0552359F0992369F049 |
:105650009F575F57951B33F442F4903811F49158DB |
:1056600005C09BC091589F3F09F4C6C0BB271124B9 |
:1056700062177307840730F4660F771F881FBB1FFC |
:10568000915098F311D00F920FD00F920DD0A0E847 |
:105690002617370748071B0609F0A048BA2F602DC8 |
:1056A0007F918F9100240895A0E80024621773076A |
:1056B0008407B10528F0621B730B840BB1090A2A19 |
:1056C000660F771F881FBB1FA69581F7089597FB6C |
:1056D00073D09F3738F0FEE9F91B982F872F762F6C |
:1056E0006B2F05C086C09695879577956795F15085 |
:1056F000D0F73EF490958095709561957F4F8F4FD0 |
:105700009F4F0895E89403C097FB0EF4F3DFB62F84 |
:10571000672F782F892F9EE9002427C00ED05EF0D6 |
:1057200004C00BD026F001C008D019F020F48FEF90 |
:10573000089580E0089581E0089597FB092E0526DD |
:1057400000F8689430D0E89407FC07C0621773072C |
:105750008407950721F008F400940794989408951D |
:105760009A95BB0F661F771F881F11249923A1F0FC |
:105770008823B2F79F3F59F0BB0F48F421F4002073 |
:1057800011F460FF04C06F5F7F4F8F4F9F4F881FE2 |
:105790009795879597F908952CC09FEF80EC089511 |
:1057A000052E092607FA440F551F5F3F79F0AA27F7 |
:1057B000A51708F051E04795880F991F9F3F31F0DA |
:1057C000BB27B91708F091E0879508959F919F91A5 |
:1057D0001124E3CF97FB880F991F9F3F31F0BB2720 |
:1057E000B91708F091E0879508959F919F91112432 |
:1057F000D4CF66277727882799270895D1DF01D04E |
:10580000B4CF992339F0552329F09F575F57950F4F |
:1058100013F49AF1F1CF91589F3FE1F3629FA12DCC |
:105820000F92BB27639FA00DB11DEE27729FA00DA5 |
:10583000B11DEE1FAF93AA27649FB00DE11D739FAA |
:10584000B00DE11DAA1F6627829FB00DE11DA61FA6 |
:105850005527749FE00DA11D551F839FE00DA11DCD |
:10586000561F849FA00D511D852F7A2F6E2F1F90DC |
:105870000F9088231AF4939539F48FCF000C111CE4 |
:10588000BB1F661F771F881F0128089597FD85CFCE |
:10589000992309F40895482F9DDFF92FFF57F595B7 |
:1058A0009F1B9F1BFF9361DFFF92EF92DF92CF92CE |
:1058B000BF92AF929F928F926B017C0140584795A7 |
:1058C0003327222740685FE3B601C70149015A0127 |
:1058D0000E94212B9401A5010E94DF2A4FEF5FEF68 |
:1058E00013D09B01AC0182169306A406B50661F79E |
:1058F0008F909F90AF90BF90CF90DF90EF90FF90F0 |
:105900005F9168DF950F31CF65DF992359F0AA27A2 |
:10591000940FA51F43F032F04FEF50E09417A50706 |
:1059200014F423CF66CF0EF006C000C09FEF80E8CE |
:1059300070E060E008959FE780E870E060E008951F |
:10594000629FD001739FF001829FE00DF11D649F63 |
:10595000E00DF11D929FF00D839FF00D749FF00DEF |
:10596000659FF00D9927729FB00DE11DF91F639F90 |
:10597000B00DE11DF91FBD01CF0111240895AA1B2F |
:10598000BB1B51E107C0AA1FBB1FA617B70710F02A |
:10599000A61BB70B881F991F5A95A9F7809590955C |
:1059A000BC01CD01089597FB092E07260AD077FD8B |
:1059B00004D0E5DF06D000201AF4709561957F4F82 |
:1059C0000895F6F7909581959F4F0895A1E21A2EBC |
:1059D000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1F93 |
:1059E000A217B307E407F50720F0A21BB30BE40BE3 |
:1059F000F50B661F771F881F991F1A9469F760952A |
:105A00007095809590959B01AC01BD01CF010895E3 |
:105A100097FB092E05260ED057FD04D0D7DF0AD0FC |
:105A2000001C38F450954095309521953F4F4F4FCD |
:105A30005F4F0895F6F790958095709561957F4F2B |
:105A40008F4F9F4F0895F999FECFB2BDA1BDF89A2F |
:105A5000119600B40895F999FECFB2BDA1BD00BC66 |
:105A600011960FB6F894FA9AF99A0FBE0895FFCFDF |
:105A700001640A016400007D0000FF0301020304C9 |
:105A800005060708090A48616C6C6F2057656C743D |
:105A90000000000000000000000000000000000006 |
:105AA00000000000000000000000000000000000F6 |
:105AB00000000000000000000000000000000000E6 |
:105AC00000000000000000000000000000000000D6 |
:105AD0000000000000000A014B616D65726100006A |
:105AE0004E6F726D616C00000000803F17B7D138B7 |
:0E5AF00030FB103A403296020A640500230093 |
:00000001FF |
/branches/Chris_hallo/GPS.c |
---|
0,0 → 1,89 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 08.2007 by Christopher Hartmann / Daniel Schmitz |
// + |
// + Bitte die read_me Datei beachten! Es handelt sich hierbei um eine erste Probeversion! |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "math.h" |
// GPS feste Variablen++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//volatile int loop = 0; |
//long gps_northing = 0, gps_easting = 0, gps_altitude = 0; |
long target_x = 0, target_y = 0, target_z = 0; |
volatile int alpha = 0; |
long zwn = 0, zwe = 0, zwn1 = 0, zwe1 = 0, zwn2 = 0, zwe2 = 0; |
volatile int gps_getpos = 5; |
long gps_home_x = 0; |
long gps_home_y = 0; |
// GPS Einstellungen +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
volatile int komp_dreh = 0; // verdrehten Kompasseinbau kompensieren (+/-Grad) |
volatile int gpsmax = 35; //maximal zulässiger "GPS-Steuerausschlag" |
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
signed int GPS_Nick = 0; |
signed int GPS_Roll = 0; |
void gps_main(void) |
{ |
/* |
if (MotorenEin = 1 && gps_gethome == 0 && actualPos.state != 0){ //speichert GPS-Home-Position |
gps_home_x = actualPos.x; |
gps_home_y = actualPos.y; |
beeptime = 80; |
gps_gethome = 1; |
}*/ |
if (Poti1>0 && actualPos.state != 0){ //Beginn GPS-Position-Hold |
if (gps_getpos != 0){ //Postion mit Schalter loggen |
target_x = actualPos.x; |
target_y = actualPos.y; |
target_z = actualPos.z; |
beeptime = 50; |
gps_getpos = 0;} |
//Regler ########################################################################################################################## |
//P-Regler |
zwn = ((sqrt(target_x^2+target_z^2)-sqrt(actualPos.x^2+actualPos.z^2))*gps_p)/10; //8 |
zwe = ((target_y-actualPos.y)*gps_p)/10; |
//D-Regler |
zwn2= (gps_d*actualPos.vx)/-3; //-2 |
zwe2= (gps_d*actualPos.vy)/-3; |
GPS_Nick = (zwn+zwn2); // skal; |
GPS_Roll = (zwe+zwe2); // skal; |
//GPS-Mixer######################################################################################################################## |
if (GPS_Nick>gpsmax){GPS_Nick=gpsmax;} else if (GPS_Nick<(-1*gpsmax)){GPS_Nick=(-1*gpsmax);} //min-max Wert überprüfen |
if (GPS_Roll>gpsmax){GPS_Roll=gpsmax;} else if (GPS_Roll<(-1*gpsmax)){GPS_Roll=(-1*gpsmax);} |
/* |
//Rotationsmatrix################################################################################################################## |
//Kompass ++++++++++++++++++++++++++++ |
alpha=0; |
alpha = komp_dreh+KompassValue; |
if (KompassValue>300) {beeptime=50;} |
if (alpha>359) {alpha=alpha-360;} |
GPS_Nick=(sin(alpha)*GPS_Roll+cos(alpha)*GPS_Nick); |
GPS_Roll=(cos(alpha)*GPS_Roll-sin(alpha)*GPS_Nick); |
*/ |
}else { |
gps_getpos=5; |
GPS_Nick=0; |
GPS_Roll=0; |
} |
} |
/branches/Chris_hallo/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/Chris_hallo/V0.71_Beta_HEX/Flight-Ctrl_MEGA644_V0_71.hex |
---|
0,0 → 1,1556 |
:100000000C94EC010C9409020C9409020C94090262 |
:100010000C9409020C9409020C9409020C94090234 |
:100020000C9409020C942D0C0C9409020C940902F6 |
:100030000C94FE140C9409020C9409020C9409020D |
:100040000C9409020C9409020C94840B0C94090280 |
:100050000C945D040C9409020C94A5030C94090201 |
:100060000C94190D0C9409020C944B140C94090275 |
:100070000829573F9F2D49CBA5310F76C73493F2FE |
:100080007E37D00D013AB60B613D2AAAAB3F000086 |
:10009000003F800000000A0A0D004E657574726111 |
:1000A0006C0048656164696E67486F6C64000A0D96 |
:1000B000537465756572756E673A20004F4B0A0D73 |
:1000C000000A0D4162676C65696368204C7566744F |
:1000D000647275636B73656E736F722E2E000A0DFA |
:1000E00042656E75747A6520506172616D657465E4 |
:1000F000727361747A202564000A0D496E69742E4A |
:1001000020454550524F4D3A2047656E65726965EE |
:1001100072652044656661756C742D506172616D05 |
:10012000657465722E2E2E000A0D3D3D3D3D3D3D10 |
:100130003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DEF |
:100140003D3D3D3D3D3D3D3D000A0D466C696768C6 |
:1001500074436F6E74726F6C205625642E25642074 |
:10016000002E0052616E67653A2533692D2533698B |
:10017000005374656C6C756E673A202533690053C3 |
:100180006574706F696E7420202533690053657241 |
:10019000766F202000506F7469343A20202533692F |
:1001A00000506F7469333A202025336900506F7412 |
:1001B00069323A202025336900506F7469313A2042 |
:1001C000202533690053746172743A202020202066 |
:1001D000253569004D657373776572743A20202563 |
:1001E0003569005269636874756E673A2020253559 |
:1001F00069004B6F6D7061737320202020202020D8 |
:1002000000456D70662E506567656C3A253569004E |
:100210005370616E6E756E673A202025356900480F |
:100220006F63682025346920282533692900526FBF |
:100230006C6C20253469202825336929004E6963B8 |
:100240006B20253469202825336929004143432048 |
:100250002D2053656E736F720047696572202534D7 |
:100260006920282533692900526F6C6C2025346978 |
:10027000202825336929004E69636B2025346920C5 |
:100280002825336929004779726F202D2053656E28 |
:10029000736F720050333A25346920204B616EE44D |
:1002A0006C65200050313A253469202050323A25BF |
:1002B0003469200047733A253469202047693A257C |
:1002C000346920004E693A2534692020526F3A255E |
:1002D000346920004B373A25346920204B616EE4A5 |
:1002E0006C6520004B353A25346920204B363A2581 |
:1002F000346920004B333A25346920204B343A25A9 |
:10030000346920004B313A25346920204B323A259C |
:10031000346920004B6F6D706173733A2020202583 |
:10032000356900526F6C6C3A202020202020253542 |
:1003300069004E69636B3A20202020202025356912 |
:1003400000616B742E204C6167650048F668656E2D |
:10035000726567656C756E67004B65696E65200038 |
:100360004F66662020202020203A20253569004C49 |
:10037000756674647275636B3A2025356900536F36 |
:100380006C6C486F6568653A2025356900486F6573 |
:1003900068653A202020202025356900286329201F |
:1003A000486F6C676572204275737300536574748F |
:1003B000696E673A20256420005625642E25640066 |
:1003C0002B2B204D696B726F4B6F70746572202BF5 |
:1003D0002B005B25695D000011241FBECFEFD0E12B |
:1003E000DEBFCDBF11E0A0E0B1E0E8E9F0E602C079 |
:1003F00005900D92AA38B107D9F716E0AAE8B1E046 |
:1004000001C01D92AB30B107E1F70E9440020C948D |
:100410004B300C940000A2E0B0E00E943730802DF9 |
:1004200099270895FB01282F863008F025E0842FB6 |
:100430009927429FD0011124AC59BF4F019724F056 |
:1004400001900E943F30FACFA2E0B0E0022E0E945D |
:100450003F300895CF93DF93FB01C42FDD27863013 |
:1004600008F085E0489FD0011124AC59BF4F219777 |
:1004700024F00E9437300192FACFDF91CF91089596 |
:100480000F931F93CF93DF9391E097B98FEF88B9C4 |
:100490008BE184B995B98EE38AB9579A87EF8BB906 |
:1004A00084B7877F84BF80916000886180936000FB |
:1004B0001092600080ED97E09093A8018093A701CF |
:1004C000109233021092320210929405109293050A |
:1004D000109231021092300210922F0210922E02CE |
:1004E00028980E94DA0C0E944C070E94E9140E948E |
:1004F000130D0E943114789410924E048CE3809373 |
:100500004F0484E0809350048CE390E09F938F939A |
:100510001F921F9289E491E09F938F931F920E94F4 |
:10052000E20888E291E09F938F931F920E94E20875 |
:10053000299AA1E0B0E00E943730802D2DB73EB758 |
:10054000265F3F4F0FB6F8943EBF0FBE2DBF8B33D3 |
:10055000A9F189EF90E09F938F931F920E94E20888 |
:100560000E94B41C4AE36BEB75E080E00E9412022B |
:1005700001E00F900F900F90023049F40E94471C49 |
:100580004AE36BEB75E082E00E94120203E04AE36B |
:100590006BEB75E0802F0E9412020F5F063060F354 |
:1005A00081E022E030E0D901082E0E943F308BE349 |
:1005B00021503040D901082E0E943F3002E010E067 |
:1005C000D8010E943730802D4AE36BEB75E00E9422 |
:1005D0002A02D8010E943730802D99279F938F934C |
:1005E0008EED90E09F938F931F920E94E20880917E |
:1005F000C3050F900F900F900F900F9080FF20C0B9 |
:1006000081EC90E09F938F931F920E94E20884EC0C |
:1006100099E00E94180CEC010E943D100F900F9081 |
:100620000F90CE010E94210C8823D9F38CEB90E02F |
:100630009F938F931F920E94E2080F900F900F904C |
:100640000E946C1D289880ED97E09093A8018093FC |
:10065000A70188EE93E0909349048093480485E5D0 |
:10066000809343048EEA90E09F938F931F920E94A1 |
:10067000E2088091C3050F900F900F9082FF03C096 |
:1006800082EA90E002C08AE990E09F938F931F92E4 |
:100690000E94E2080F900F900F9086E990E09F93E0 |
:1006A0008F931F920E94E2080E9464100F900F9097 |
:1006B0000F908091A401882379F11092A4010E94E7 |
:1006C0007D1E0E94251D289880910101882319F024 |
:1006D00081508093010180912D02882329F080911F |
:1006E0002D02815080932D0220910401309105014B |
:1006F0008091D30599272817390734F480ED97E0C6 |
:100700009093A8018093A7018091D201882319F4C6 |
:100710000E94311401C028980E9469070E94D707DF |
:1007200080E090E00E94210C882319F2809134022D |
:10073000882329F088B190E1892788B901C04498BD |
:1007400084EF91E00E94180CB4CF1F920F920FB665 |
:100750000F9211248F939F93EF93FF938091000149 |
:100760008823E1F480919F019091A00101969093DC |
:10077000A00180939F01FC01ED5FFC4FE081ED3013 |
:1007800019F08639910539F41092A00110929F0159 |
:1007900081E080930001E093C60004C01092A001A4 |
:1007A00010929F01FF91EF919F918F910F900FBE3B |
:1007B0000F901F90189580912505813091F58091BB |
:1007C000150590911605A0911705B0911805809315 |
:1007D000580590935905A0935A05B0935B058091F5 |
:1007E000190590911A05A0911B05B0911C058093E5 |
:1007F0005C0590935D05A0935E05B0935F058091C5 |
:100800001D0590911E05A0911F05B09120058093B4 |
:10081000600590936105A0936205B0936305109203 |
:10082000250580914204813031F480913604809313 |
:1008300070051092420480917204813091F580918C |
:10084000620490916304A0916404B0916504809364 |
:10085000640590936505A0936605B0936705809144 |
:10086000660490916704A0916804B0916904809334 |
:10087000680590936905A0936A05B0936B05809114 |
:100880006A0490916B04A0916C04B0916D04809304 |
:100890006C0590936D05A0936E05B0936F05109253 |
:1008A000720480917005882339F0289A81E090E0E5 |
:1008B0009093D5028093D40208951F920F920FB6A1 |
:1008C0000F9211242F933F934F935F936F937F93D6 |
:1008D0008F939F93AF93BF93CF93DF93EF93FF9348 |
:1008E0008091C60080938E018091C00040918E015E |
:1008F000887109F005C18091A101843009F48AC092 |
:10090000853050F48130D1F0813098F0823001F19F |
:10091000833009F0F2C021C0863009F4ABC08630C4 |
:1009200008F48CC0873009F4D6C0883009F0E5C0DF |
:10093000D8C0453B09F0E8C081E003C0423621F44D |
:1009400082E08093A101E0C0453B09F4DDC0D5C041 |
:10095000413009F0D2C083E0F4CF409372054F5F7D |
:1009600040930203809102038F5F8093310484E0FF |
:100970008093A10180917205833031F0813161F162 |
:10098000813009F03FC014C082E394E090935D048D |
:1009900080935C0423E535E0309300032093FF024D |
:1009A000409690930A05809309058091420427C0E0 |
:1009B00081E195E090935D0480935C042AEC36E03D |
:1009C000309300032093FF02449690930A0580938E |
:1009D00009058091250513C08EE594E090935D0490 |
:1009E00080935C0427E136E0309300032093FF02FC |
:1009F000449690930A058093090580917204809330 |
:100A0000730582C081E08093730510920A051092ED |
:100A100009057AC0842F992790930C0580930B05C4 |
:100A200080910203840F809302038091310490919E |
:100A30000203890F8093310485E083CF20910B0559 |
:100A400030910C05842F9927982F8827280F391F5C |
:100A500030930C0520930B0580910203840F809343 |
:100A600002038091310490910203890F8093310435 |
:100A700086E067CF80910203840F80930203809108 |
:100A8000310490910203890F8093310480917305A2 |
:100A9000882381F4E0915C04F0915D048091FF0271 |
:100AA00090910003E817F90728F44193F0935D044F |
:100AB000E0935C0480910B0590910C050197909355 |
:100AC0000C0580930B0580910B0590910C05892BEB |
:100AD000D9F487E036CF80910203481771F488E09B |
:100AE00030CF80913104481741F4E0910905F0912D |
:100AF0000A05309711F081E080831092A10104C0B3 |
:100B00001092A1010E94DB030E94DB0340919A0135 |
:100B1000463910F01092990180918E018D3009F0C4 |
:100B20005CC080919901823009F057C01092990100 |
:100B3000A42FBB27FD01EF58FB4F3081ED01CE58AC |
:100B4000DB4F288180919D0190919E01831B91092B |
:100B5000821B91099F7090939E0180939D019C013F |
:100B600096E0369527959A95E1F7235C20939C01B2 |
:100B7000982F9F73935C90939B018081281729F491 |
:100B80008881981711F491E006C0809191018F5FE0 |
:100B90008093910190E080918F01882309F064C0D7 |
:100BA000992309F461C081E080938F014093920101 |
:100BB000AD58BB4F8DE08C9380917504823509F060 |
:100BC00053C088E190E02CE00FB6F894A89580938C |
:100BD00060000FBE2093600047C080919901813072 |
:100BE000D9F0813018F08230E9F530C080918E0163 |
:100BF000833239F480918F01882319F481E0809346 |
:100C0000990180918E018093730481E080939A0111 |
:100C100080918E01992715C082E080939901E42F7D |
:100C2000FF2780918E01ED58FB4F80834F5F4093EB |
:100C30009A0120918E0180919D0190919E01820FD9 |
:100C4000911D90939E0180939D010EC0E42FFF277C |
:100C500080918E01ED58FB4F8083463938F3109216 |
:100C60009901E7CF10929901FF91EF91DF91CF9118 |
:100C7000BF91AF919F918F917F916F915F914F91B4 |
:100C80003F912F910F900FBE0F901F901895DC0190 |
:100C900020E030E040E050E0E3E0F3E005C0819187 |
:100CA000280F311D4F5F5F4F4A175B07C1F73F7039 |
:100CB000C90166E0969587956A95E1F7835CFD0129 |
:100CC000ED5FFC4F808311962F73235CFD01ED5F78 |
:100CD000FC4F2083AC5FBC4F8DE08C9310920001E1 |
:100CE000809103038093C6000895EF92FF920F93C3 |
:100CF0001F93CF93DF937A01722F93E290930303B4 |
:100D0000609304038093050303E010E060E0A6E035 |
:100D1000B3E046C0F701E60FF11D90816F5F71509F |
:100D200019F4E0E040E00FC0F701E60FF11D40814B |
:100D30006F5F715011F4E0E006C0F701E60FF11D9E |
:100D4000E0816F5F7150892F86958695835C8C93C7 |
:100D50005527892F99278370907024E0880F991F59 |
:100D60002A95E1F79A0194E0369527959A95E1F74F |
:100D7000822B835CED0189834F705070440F551FA7 |
:100D8000440F551F8E2F8295869586958370842BF0 |
:100D9000835C8A83EF73E35CEB830C5F1F4F1496D5 |
:100DA000772309F0B7CFC8010E944706DF91CF91A2 |
:100DB0001F910F91FF90EF9008950F931F93CF9382 |
:100DC000DF93EC01062F70E0A22FBB2712974AC0D9 |
:100DD000E42FFF27ED58FB4F30814F5FE42FFF27B3 |
:100DE000ED58FB4F50814F5FE42FFF27ED58FB4F2D |
:100DF00010814F5FE42FFF27ED58FB4F20814F5F9D |
:100E0000842F9927A817B90784F1701771F15D53E2 |
:100E1000FE01E70FF11D3D53330F330F852F8295F0 |
:100E20008F70382B3083613001F1912F9D537F5F9C |
:100E3000FE01E70FF11D71505295507F892F869565 |
:100E40008695582B508363506F3F79F07E5FFE018B |
:100E5000E70FF11D9295990F990F907C2D53922BCE |
:100E600090837F5F662309F0B3CFDF91CF911F910D |
:100E70000F9108951F93182F8A3019F48DE00E9466 |
:100E80003A078091C00085FFFCCF1093C60080E038 |
:100E900090E01F9108950895E1ECF0E088E18083EF |
:100EA000A0ECB0E08C9182608C938081806880831C |
:100EB0008081806480838AE28093C40088EC90E023 |
:100EC0000E94180C9093300480932F041092A1017B |
:100ED000089580910001882309F468C080918A01F7 |
:100EE000882371F080910001882351F02BE043E4C6 |
:100EF00054E06091010387E40E94750610928A0114 |
:100F000080912F04909130040E94210C882321F4B9 |
:100F100080918C018823B1F080910001882391F0A9 |
:100F200022E346E255E06091010384E40E947506E5 |
:100F300010928C018AEF90E00E94180C909330047C |
:100F400080932F0480918B018823F1F08091000120 |
:100F50008823D1F00E946D1010928B01809198012E |
:100F60008F5F80939801843011F4109298018091E2 |
:100F7000980144E1849FA00111244A5E5E4F24E160 |
:100F800060E0805D0E94750680918D01882371F07C |
:100F900080910001882351F02AE04EE454E06091F2 |
:100FA000010386E50E94750610928D0108951F9336 |
:100FB000CF93DF93CDB7DEB722970FB6F894DEBF9D |
:100FC0000FBECDBF80918F01882309F498C08FEFA9 |
:100FD0008093010180917504813760F48C3608F0AC |
:100FE0006FC0873609F440C08836F9F0833609F0BF |
:100FF00084C008C0843759F1863791F1813709F0F0 |
:101000007CC036C02091920143E06BE083E494E021 |
:101010000E94DD068091C90190914504892B80933F |
:10102000C90181E080938C0168C02091920143E066 |
:1010300062E0CE0101960E94DD068091C90199818E |
:10104000892B8093C90181E080938B0156C0209148 |
:10105000920143E064E084E991E00E94DD064DC026 |
:1010600081E080938D0149C081E080938A0145C071 |
:101070002091920143E062E0CE0101960E94DD06DC |
:1010800089818F3F89F0863010F085E089834AE3BB |
:101090006BEB75E089810E942A0289812AE34BEB80 |
:1010A00055E06091010308C0109101030E940B02FA |
:1010B0002AE34BEB55E0612F855B0E9475061DC04E |
:1010C0002091920143E06AE38BEB95E00E94DD06FC |
:1010D000809175044AE36BEB75E08B560E94120217 |
:1010E000809175048B56A2E0B0E0082E0E943F303C |
:1010F0000E940B0299270E94681E10928F0122966F |
:101100000FB6F894DEBF0FBECDBFDF91CF911F9118 |
:101110000895982F80917405813069F48091C801F9 |
:10112000E82FFF27EA5EFE4F90838F5F8093C80110 |
:1011300021E030E005C0892F0E943A07282F33278D |
:10114000C90108951F93182F04C080E30E948908E5 |
:1011500011501116D4F31F9108951F93182F04C036 |
:1011600080E20E94890811501116D4F31F9108954E |
:101170000F931F93CF93DF938C01EB0108C0F8010D |
:101180000F5F1F4FE4918E2F0E94890821972097AF |
:10119000B1F7DF91CF911F910F9108950F931F9396 |
:1011A000CF93DF938C01EB0106C0F80181918F0191 |
:1011B0000E94890821972097C1F7DF91CF911F9155 |
:1011C0000F9108952F923F924F925F926F927F926C |
:1011D0008F929F92AF92BF92CF92DF92EF92FF9247 |
:1011E0000F931F93CF93DF93CDB7DEB7E3970FB67F |
:1011F000F894DEBF0FBECDBF29968FAD299780939F |
:101200007405CE01855B9F4F9D838C832B968EAD9D |
:101210009FAD2B979FA78EA722243324210102C0C4 |
:10122000130124010EA51FA502C00F5F1F4FF80177 |
:10123000F490FF2019F0F5E2FF16B9F7B8018EA57A |
:101240009FA5681B790B11F00E94B808FF2009F4D4 |
:1012500042C20F5F1F4F1FA70EA71982AC81BD812D |
:101260001BAA1AAA9FEF99ABEEA5FFA5CF01019685 |
:101270009FA78EA7B49095E7B91621F08B2D8062B9 |
:10128000883789F4EBA9E0FF07C02D903D904D9081 |
:101290005C901397149607C08D919C9111971C0137 |
:1012A000442455241296F0E2BF1621F48981882344 |
:1012B000D9F685C083E2B81609F483C09AE2B9165C |
:1012C00021F0EDE2BE1669F408C0FD011296E0813E |
:1012D000EAABE7FFC9CFE195EAABFBA9F061FF7D7F |
:1012E00072C08BE2B81609F46AC09EE2B916B1F575 |
:1012F0002EA53FA52F5F3F4FEEA5FFA584918A3213 |
:1013000021F0B82E20E030E01BC0FD011296408194 |
:10131000518157FF02C04FEF5FEF49AB3FA72EA7A8 |
:10132000A3CFC90103E0880F991F0A95E1F7220FA7 |
:10133000331F280F391F2B0D311D20533040B4901F |
:1013400031968B2D80538A3060F3FFA7EEA7A90159 |
:1013500037FF02C04FEF5FEF49AB8DCFF0E3BF1611 |
:1013600031F48BA984FD80CF80628BAB7DCF8B2D38 |
:1013700081538930E8F420E030E0C901F3E0880FC0 |
:10138000991FFA95E1F7220F331F280F391F2B0DF4 |
:10139000311D20533040EEA5FFA5CF0101969FA738 |
:1013A0008EA7B4908B2D80538A3038F32AAB63CF4D |
:1013B00098E6B91651F4EBA9E460EBAB55CFB982CE |
:1013C00053CFFBA9F860FBAB4FCF8CE6B81621F4E6 |
:1013D0009BA991609BAB48CFBD83AC83E3E6BE166F |
:1013E00039F41296BD83AC8312978C918E8318C109 |
:1013F000F4E4BF1639F084E6B81639F099E6B91668 |
:1014000059F503C0EBA9E160EBABFBA9F0FF08C005 |
:101410001496BD83AC835E904E903E902E900AC091 |
:101420001296BD83AC839E918E911C01442437FC9F |
:101430004094542C57FC03C08AE088AB92C050946F |
:10144000409430942094211C311C411C511C8DE28D |
:1014500089839AE098AB85C0EFE4BE1629F0FFE6D9 |
:10146000BF1639F488E061C09BA991609BABE8E0AE |
:1014700056C0F0E7BF1671F41296BD83AC839E91FF |
:101480008E911C01442455248BA980648BAB78E792 |
:10149000B72E5EC0E3E7BE16D9F51296BD83AC83C6 |
:1014A000DE90CE90C114D10489F488E28E838EE65A |
:1014B0008F8385E788878CE689878A8789E28B878F |
:1014C0001C8666E0C62ED12CCC0EDD1EF9A9F7FDD8 |
:1014D00013C04F2F552747FD509560E070E0C601BF |
:1014E0000E94702D009711F419A90DC08C1919A92B |
:1014F00081174CF4182F07C0F60101900020E9F77E |
:1015000031971E2F1C1919824201310140E094C00D |
:1015100085E5B81631F095E7B91649F4EAE0E8AB8D |
:101520001FC0FBA9F160FBAB8AE088AB19C098E54E |
:10153000B91621F0E8E7BE1609F06EC0FBA9F3FD6D |
:1015400002C080E1F2CF211431044104510419F4A6 |
:1015500090E198AB05C0EBA9E064EBABF0E1F8AB30 |
:10156000198289A987FD03C09BA99F7D9BAB21148C |
:1015700031044104510461F4E9A9EE2349F46624DD |
:10158000772443015EE2C52ED12CCC0EDD1E3EC079 |
:101590004EE2C42ED12CCC0EDD1EF8A9EF2EFF2476 |
:1015A00000271127C201B101A80197010E94FA2F5B |
:1015B0006A3020F430E3A32EA60E08C027E5A22E41 |
:1015C000A60E88E5B81611F49FEDA922F601A292A5 |
:1015D0006F01C201B101A80197010E94FA2F3901E0 |
:1015E0004A012E143F044006510618F019012A0141 |
:1015F000D9CFF8A9F83051F48BA983FF07C090E345 |
:10160000A91621F080E3F60182936F01CE018C19B7 |
:10161000182F125D49A910C0BB2009F45CC0BE821E |
:1016200019824201310100E096E0C92ED12CCC0E86 |
:10163000DD1E11E021E005C0212F042F011B07FD55 |
:1016400000E08981882319F0812F8F5F07C09BA953 |
:1016500096FD02C0812F02C0822F8E5FA82EA00EA1 |
:10166000EBA9EE2EFF2480E3482E512C4E205F2064 |
:101670004114510421F48AA98A190E94AD08898174 |
:10168000882329F061E070E0CE01019609C0E6FEF2 |
:1016900009C080E38A83BB8262E070E0CE010296DB |
:1016A0000E94CE08F0E24F16510421F48AA98A194B |
:1016B0000E94A208802F0E94A208612F772767FD51 |
:1016C0007095C6010E94CE08E4FEAACD8AA98A19A7 |
:1016D0000E94AD08A5CDE3960FB6F894DEBF0FBE0D |
:1016E000CDBFDF91CF911F910F91FF90EF90DF90D1 |
:1016F000CF90BF90AF909F908F907F906F905F90B2 |
:101700004F903F902F9008951F920F920FB60F9217 |
:1017100011242F933F935F936F937F938F939F93A6 |
:10172000AF93BF938091AB0181508093AB018F3F0A |
:1017300001F589E08093AB01809103018F5F817097 |
:1017400080930301882319F481E08093A4018091A0 |
:10175000A2019091A30101969093A3018093A2010D |
:101760008091D201882329F08091D2018150809309 |
:10177000D2018091A7019091A801029758F0809121 |
:10178000A7019091A80101979093A8018093A701C8 |
:101790005A9A01C05A988091C30583FF3BC0349B7D |
:1017A0000AC08091A5019091A60101969093A6018F |
:1017B0008093A5012FC08091A5019091A601892B4E |
:1017C00079F08091A5019091A601805A9F4040F444 |
:1017D0008091A5019091A60190931E0280931D0215 |
:1017E00080911D0290911E0220911F0230912002D3 |
:1017F000821B930B845E9D4F68E671E00E94E72F89 |
:10180000845B904090932202809321021092A60163 |
:101810001092A501BF91AF919F918F917F916F9190 |
:101820005F913F912F910F900FBE0F901F901895D1 |
:101830002091A2013091A3012F5F3F4F820F931F90 |
:1018400008952091A2013091A301821B930B892F4F |
:10185000992786958074992708951F920F920FB645 |
:101860000F921124EF92FF920F931F932F933F93A8 |
:101870004F935F936F937F938F939F93AF93BF9398 |
:10188000CF93DF93EF93FF93809102018150809378 |
:1018900002018F3F09F073C083E88093B00080910C |
:1018A0008901C82FDD27D093AA01C093A901809197 |
:1018B000E105E090DD0580FF1EC06091ED017091B3 |
:1018C000EE018091EF019091F001FF240027112794 |
:1018D00020E830E040E050E00E941C30C801B70131 |
:1018E0000E94B42F20E032E040E050E00E941C3023 |
:1018F000C20FD31F1DC06091ED017091EE01809168 |
:10190000EF019091F001FF240027112720E830E03B |
:1019100040E050E00E941C30C801B7010E94B42F83 |
:1019200020E032E040E050E00E941C30C21BD30BAC |
:10193000D093AA01C093A9012091A9013091AA01D5 |
:101940008091DE0599272817390734F08091DF054B |
:1019500099278217930724F49093AA018093A901F1 |
:101960008091A9019091AA0190934D0580934C0517 |
:101970008093B3008091E0058093020104C083E06E |
:101980008093B0005F98FF91EF91DF91CF91BF916D |
:10199000AF919F918F917F916F915F914F913F9107 |
:1019A0002F911F910F91FF90EF900F900FBE0F900E |
:1019B0001F9018958091A2019091A3010B9690938E |
:1019C000AD018093AC0182E085BD83EA84BD17BC84 |
:1019D00088E788BD96E096BD83EC8093B000909335 |
:1019E000B100E0E7F0E0808182608083EEE6F0E025 |
:1019F0008081816080838AE08093B3001092B2007E |
:101A000008952091A2013091A3012F5F3F4F280F2D |
:101A1000391F8091A2019091A301A901481B590B84 |
:101A200057FFF7CF089510927C008FEE80937A00D5 |
:101A300008951F920F920FB60F921124EF92FF920A |
:101A40000F931F932F933F934F935F936F937F93C6 |
:101A50008F939F93AF93BF93CF93DF93EF93FF93B6 |
:101A600010927A004091C4014F5F4093C4014150ED |
:101A7000433009F41CC1443038F4413009F463C0E8 |
:101A8000423008F0B9C00DC0453009F450C14530AE |
:101A900008F42AC1463009F46FC1473009F0CBC2BF |
:101AA00052C22091D7013091D80180917800909155 |
:101AB0007900281B390B8091B2019091B301820FFC |
:101AC000931F9093B3018093B2018091BC018F5F0B |
:101AD0008093BC018091110290911202A091130297 |
:101AE000B0911402442737FD4095542F820F931F65 |
:101AF000A41FB51F8093110290931202A0931302AA |
:101B0000B09314028091150290911602A0911702D1 |
:101B1000B0911802820F931FA41FB51F8093150266 |
:101B200090931602A0931702B093180281E080935D |
:101B3000C5018091C2019091C30101969093C301A8 |
:101B40008093C2017CC2609178007091790080918D |
:101B5000D5019091D601681B790B80910902909173 |
:101B60000A02A0910B02B0910C029B01442737FDA1 |
:101B70004095542F820F931FA41FB51F8093090215 |
:101B800090930A02A0930B02B0930C0280910D0275 |
:101B900090910E02A0910F02B0911002820F931F3C |
:101BA000A41FB51F80930D0290930E02A0930F0205 |
:101BB000B093100280917800909179000A9710F408 |
:101BC00064E47DEF8091780090917900895E934084 |
:101BD00010F06CEB72E08091B0019091B101860F32 |
:101BE000971F9093B1018093B0018091BB018F5FEB |
:101BF0008093BB0182E058C06091780070917900B9 |
:101C00008091D3019091D401681B790B80910102DE |
:101C100090910202A0910302B09104029B0144271B |
:101C200037FD4095542F820F931FA41FB51F80933B |
:101C3000010290930202A0930302B09304028091E8 |
:101C4000050290910602A0910702B0910802820F4E |
:101C5000931FA41FB51F8093050290930602A093C3 |
:101C60000702B093080280917800909179000A975A |
:101C700010F464E47DEF8091780090917900895EA2 |
:101C8000934010F06CEB72E08091AE019091AF0147 |
:101C9000860F971F9093AF018093AE018091BA0198 |
:101CA0008F5F8093BA0184E08093C501C8C14091E1 |
:101CB00004015091050180917800909179009A017A |
:101CC000220F331F240F351F63E070E00E94D32FD3 |
:101CD000260F371F369527953695279530930501A2 |
:101CE0002093040186E0E0CF8091DB019091DC013C |
:101CF0002091780030917900821B930B90937605A8 |
:101D0000809375058091B4019091B501209175057E |
:101D100030917605820F931F9093B5018093B401A3 |
:101D20008091BE018F5F8093BE0187E0BDCF80911F |
:101D30007800909179002091D9013091DA01821BCD |
:101D4000930B90937605809375058091B6019091E1 |
:101D5000B7012091750530917605820F931F9093FE |
:101D6000B7018093B6018091BD018F5F8093BD0163 |
:101D70004093C50186E0E4C06091780070917900DD |
:101D8000E090E701F090E8010091E9011091EA018B |
:101D9000882777FD8095982F0E94292EA80197010A |
:101DA0000E947D2D0E940C2E7093B9016093B801A2 |
:101DB0002091B8013091B901E0917505F091760557 |
:101DC000809180059091810597FF03C09095819542 |
:101DD0009F4F64E070E00E94E72FEB01CF01F7FF17 |
:101DE00003C0909581959F4F64E070E00E94E72FBB |
:101DF000260F371F2C0F3D1F3093B9012093B801D8 |
:101E00008091B8019091B901029704F16091E701C6 |
:101E10007091E8018091E9019091EA0120E030E0C1 |
:101E200048E454E40E945F2E88230CF03CC060918B |
:101E3000E7017091E8018091E9019091EA012AE0BF |
:101E400037ED43EA5CE30E947E2D25C08091B80106 |
:101E50009091B9018F5F9F4F34F56091E7017091C8 |
:101E6000E8018091E9019091EA0120E030E046E14B |
:101E700054E40E94622E1816B4F46091E701709148 |
:101E8000E8018091E9019091EA012AE037ED43EA07 |
:101E90005CE30E947D2D6093E7017093E8018093DD |
:101EA000E9019093EA0181E08093BF01809178007D |
:101EB000909179009093780580937705209119028D |
:101EC00030911A0240911B0250911C028091B8017E |
:101ED0009091B901AA2797FDA095BA2F280F391F15 |
:101EE0004A1F5B1F2093190230931A0240931B0272 |
:101EF00050931C02E0901902F0901A0200911B020C |
:101F000010911C026091190270911A0280911B02BB |
:101F100090911C0220E034E040E050E00E941C3030 |
:101F2000E21AF30A040B150BE0921902F0921A025E |
:101F300000931B0210931C0283E08093C50187E08D |
:101F40008093C4017CC08091850590918605209185 |
:101F5000780030917900820F931F909386058093CB |
:101F6000850580917D058F5F80937D0580917D053E |
:101F7000853008F460C0809178009091790090934A |
:101F80000B0180930A0110927D0580917905909153 |
:101F90007A052091850530918605821B930B20914F |
:101FA000350230913602821B930B9093C1018093CE |
:101FB000C0016091850570918605E0900601F09062 |
:101FC00007010091080110910901882777FD80958C |
:101FD000982FA8019701220F331F441F551F2E0D64 |
:101FE0003F1D401F511F620F731F841F951F24E068 |
:101FF00030E040E050E00E941C3020930601309316 |
:10200000070140930801509309012091790530910F |
:102010007A058091060190910701A0910801B09185 |
:102020000901281B390B3093360220933502109298 |
:102030008605109285051092C5011092C401809109 |
:10204000C50180937C008FEE80937A00FF91EF9121 |
:10205000DF91CF91BF91AF919F918F917F916F91C0 |
:102060005F914F913F912F911F910F91FF90EF90B2 |
:102070000F900FBE0F901F901895CF93DF93C0E085 |
:10208000D0E0C7BD82E390E00E94010D81E691E0BF |
:102090009F938F931F920E94E20880910A01909172 |
:1020A0000B010F900F900F908458934020F02196D1 |
:1020B000CA3FD10531F7C093820588EC90E00E94B9 |
:1020C000010DDF91CF910895E6E1F1E080E2819387 |
:1020D00091E0E636F907D9F70895FF920F931F9321 |
:1020E0008091C901282F3327C90181709070682F12 |
:1020F000882391F08091CA01882311F0815002C099 |
:10210000809166018093CA01E6E1F1E080E281936B |
:1021100091E0E636F907D9F7A9014270507021FF26 |
:102120000DC08091CA018F5F8093CA01E6E1F1E0A2 |
:1021300080E2819391E0E636F907D9F7662321F032 |
:10214000452B11F01092CA0181E18093C801809162 |
:10215000CA0199279F938F9382ED93E09F938F936A |
:10216000E1E0FE2EFF920E94E2080091CA010F906A |
:102170000F900F900F900F90053009F4D7C10630E3 |
:1021800090F4023009F4B8C0033030F40023F1F0C9 |
:10219000013009F05BC34DC0033009F402C10430C3 |
:1021A00009F054C34BC1083009F498C2093038F41F |
:1021B000063009F411C2073009F048C36CC2093077 |
:1021C00009F4C9C20A3009F041C303C31092C8011F |
:1021D00080EC93E09F938F93FF920E94E20884E14A |
:1021E0008093C8018CE390E09F938F931F921F927E |
:1021F00089EB93E09F938F93FF920E94E20888E21D |
:102200008093C8010E940B0299279F938F938CEAB9 |
:1022100093E09F938F93FF920E94E2088CE3809358 |
:10222000C8018CE993E09F938F93FF920E94E2088C |
:102230008EC28091C30580FF47C01092C801809173 |
:102240003502909136029F938F938DE893E09F9390 |
:102250008F930F930E94E20884E18093C8018091DC |
:102260003702909138029F938F938EE793E09F936C |
:102270008F930F930E94E20888E28093C8018091B7 |
:102280000A0190910B019F938F938FE693E09F93A8 |
:102290008F930F930E94E2088CE38093C801809192 |
:1022A000820599279F938F9380E693E09F938F9366 |
:1022B0000F930E94E2088DB79EB744960FB6F8942C |
:1022C0009EBF0FBE8DBFC7C284E18093C80189E560 |
:1022D00093E09F938F930F930E94E20888E280938C |
:1022E000C8018BE493E09F938F930F930E94E208C1 |
:1022F0008DB79EB70696E2CF1092C80181E493E0B5 |
:102300009F938F93FF920E94E20884E18093C8011B |
:102310006091ED017091EE018091EF019091F001DB |
:1023200020E034E040E050E00E941C305F934F9387 |
:102330003F932F9382E393E09F938F93FF920E94AA |
:10234000E20888E28093C8016091F5017091F6017E |
:102350008091F7019091F80120E034E040E050E0F6 |
:102360000E941C305F934F933F932F9383E293E03F |
:102370009F938F93FF920E94E2088CE38093C801A1 |
:1023800080911D0290911E029F938F9384E193E0B0 |
:102390009F938F93FF920E94E2088DB79EB7469657 |
:1023A0008DCF1092C8018091930590919405209152 |
:1023B0009105309192059F938F933F932F9384E0E3 |
:1023C00093E09F938F93FF920E94E20884E18093B1 |
:1023D000C8018091970590919805209195053091BD |
:1023E00096059F938F933F932F9384EF92E09F9353 |
:1023F0008F93FF920E94E20888E28093C801809147 |
:102400009B0590919C052091990530919A059F9389 |
:102410008F933F932F9384EE92E09F938F93FF923D |
:102420000E94E2088CE38093C80180919D05909101 |
:102430009E059F938F9384ED92E06FC01092C80128 |
:10244000E091BC05FF27EE0FFF1FE157FA4F2081F7 |
:102450003181E091BB05FF27EE0FFF1FE157FA4FD7 |
:10246000808191813F932F939F938F9384EC92E08F |
:102470009F938F93FF920E94E20884E18093C801AA |
:10248000E091BE05FF27EE0FFF1FE157FA4F2081B5 |
:102490003181E091BD05FF27EE0FFF1FE157FA4F95 |
:1024A000808191813F932F939F938F9384EB92E050 |
:1024B0009F938F93FF920E94E20888E28093C80165 |
:1024C000E091C005FF27EE0FFF1FE157FA4F208173 |
:1024D0003181E091BF05FF27EE0FFF1FE157FA4F53 |
:1024E000808191813F932F939F938F9384EA92E011 |
:1024F0009F938F93FF920E94E2088CE38093C80120 |
:10250000E091C105FF27EE0FFF1FE157FA4F8081D1 |
:1025100091819F938F9384E992E09F938F93FF9291 |
:102520000E94E2088DB79EB74A96C8CE1092C801A5 |
:1025300086E892E09F938F93FF920E94E20884E1E5 |
:102540008093C8012091D3013091D4018091AE01D4 |
:102550009091AF016091BA013F932F9377270E942A |
:10256000E72F7F936F9387E792E09F938F93FF927C |
:102570000E94E20888E28093C8012091D501309141 |
:10258000D6018091B0019091B1016091BB013F9360 |
:102590002F9377270E94E72F7F936F9388E692E02F |
:1025A0009F938F93FF920E94E2088CE38093C8016F |
:1025B0002091D7013091D8018091B2019091B3015F |
:1025C0006091BC013F932F9377270E94E72F7F9361 |
:1025D0006F9389E592E056C01092C8018CE492E0B6 |
:1025E0009F938F93FF920E94E20884E18093C80139 |
:1025F0002091D9013091DA018091B6019091B70113 |
:102600006091BD013F932F9377270E94E72F7F931F |
:102610006F938DE392E09F938F93FF920E94E20865 |
:1026200088E28093C8012091DB013091DC01809128 |
:10263000B4019091B5016091BE013F932F9377272C |
:102640000E94E72F7F936F938EE292E09F938F9388 |
:10265000FF920E94E2088CE38093C8016091E70139 |
:102660007091E8018091E9019091EA01009177056C |
:10267000109178050E940C2E7F936F931F930F93F8 |
:102680008FE192E09F938F93FF920E94E2088DB7B3 |
:102690009EB7489613CE84E18093C80180910401CF |
:1026A000909105019F938F9380E192E09F938F9388 |
:1026B000FF920E94E20888E28093C80180912D0277 |
:1026C00099279F938F9381E092E09F938F93FF923E |
:1026D0000E94E2088DB79EB70A96F0CD1092C8010D |
:1026E00082EF91E09F938F93FF920E94E20884E132 |
:1026F0008093C80180912102909122029F938F9331 |
:1027000083EE91E09F938F93FF920E94E20888E20C |
:102710008093C80180911D0290911E029F938F9318 |
:1027200084ED91E09F938F93FF920E94E2088CE3E7 |
:102730008093C80180911F02909120029F938F93F4 |
:1027400085EC91E09F938F93FF920E94E2088DB7F2 |
:102750009EB74296B3CD1092C80180912502909108 |
:1027600026029F938F9389EB91E09F938F93FF9223 |
:102770000E94E20884E18093C80180912702909131 |
:1027800028029F938F938DEA91E09F938F93FF92FE |
:102790000E94E20888E28093C8018091290290910A |
:1027A0002A029F938F9381EA91E09F938F93FF92E8 |
:1027B0000E94E2088CE38093C80180912B029091E3 |
:1027C0002C029F938F9385E991E09F938F93FF92C3 |
:1027D00070CD1092C8018DE891E09F938F93FF9286 |
:1027E0000E94E20884E18093C801809189019927C1 |
:1027F0009F938F938FE791E09F938F93FF920E9417 |
:10280000E20888E28093C8018091A9019091AA0111 |
:102810009F938F9381E791E09F938F93FF920E9404 |
:10282000E2088CE38093C8018091DF0599279F938C |
:102830008F938091DE0599279F938F9383E691E094 |
:102840009F938F93FF920E94E20835CD0150009331 |
:1028500066011092CA011092C9011F910F91FF9059 |
:1028600008951092B9008AE28093B800089585EA2D |
:102870008093BC0080E090E0089584E98093BC00E0 |
:1028800008951092B9008093BB0085E88093BC0046 |
:1028900080E090E008951F920F920FB60F921124DE |
:1028A0008F939F93EF93FF938091CB018F5F8093E2 |
:1028B000CB018150833009F442C0843028F4813048 |
:1028C000A1F0823070F50CC0853009F448C0853025 |
:1028D000D8F1863009F44BC0873009F071C05BC075 |
:1028E0008091CC01880F8E5A14C08091CC018F5FEB |
:1028F0008093CC018150813009F444C0813038F09C |
:10290000823009F442C0833009F05AC041C080913E |
:10291000C4021092B9008093BB0085E88093BC008C |
:102920004FC084E98093BC008091CC01843018F4BE |
:102930001092CB0102C01092CC0185EAEFCF8091BA |
:10294000CD01880F8D5AE5CF8091CD018130D1F036 |
:102950008130E8F28230C9F0833091F519C080915E |
:10296000BB00E091CD01FF27E957FA4F80838091AA |
:10297000CD01813039F0813050F2823031F0833036 |
:10298000F9F406C08091C502C4CF8091D602C1CFB0 |
:102990008091EC02BECF8091CD019091BB00E82FD9 |
:1029A000FF27E957FA4F94838F5F8093CD018430DE |
:1029B00010F01092CD0184E98093BC001092CB01FD |
:1029C000FF91EF919F918F910F900FBE0F901F90ED |
:1029D000189583EC80938100EFE6F0E080818062BF |
:1029E00080831092D8011092D7011092D6011092D4 |
:1029F000D5011092D4011092D30108951F920F9225 |
:102A00000FB60F9211240F931F932F933F934F9361 |
:102A10005F936F937F938F939F93AF93BF93CF9366 |
:102A2000DF93EF93FF932091860030918700809190 |
:102A3000D0019091D101281B390B80918600909193 |
:102A400087009093D1018093D001C9018D5D95409D |
:102A50008356994148F481E090E09093CF018093B0 |
:102A6000CE011092670154C0C091CE01D091CF0128 |
:102A7000CA30D1050CF04CC0C9018B5F9040845B1B |
:102A8000914008F040C0A901425D5140FE01EE0FA7 |
:102A9000FF1FE157FA4F80819181FA01E81BF90B82 |
:102AA000CF01F7FF03C0909581959F4F06974CF497 |
:102AB00080912D02883C28F480912D02865F8093BE |
:102AC0002D02FE01EE0FFF1F8F0101571A4FD80193 |
:102AD0002D913C91C901880F991F820F931F840F7C |
:102AE000951F64E070E00E94E72FD8018D919C91C2 |
:102AF00011979B01281B390BEB55FA4F318320832B |
:102B000011967C936E932196D093CF01C093CE0102 |
:102B1000FF91EF91DF91CF91BF91AF919F918F91F5 |
:102B20007F916F915F914F913F912F911F910F91E5 |
:102B30000F900FBE0F901F901895AF92BF92CF923B |
:102B4000DF92EF92FF920F931F9310927A00809181 |
:102B5000BA01882369F08091AE019091AF01609134 |
:102B6000BA0177270E94E72F7093F8056093F70565 |
:102B70008091BB01882369F08091B0019091B101EF |
:102B80006091BB0177270E94E72F7093F605609351 |
:102B9000F5058091BC01882369F08091B201909184 |
:102BA000B3016091BC0177270E94E72F7093040660 |
:102BB000609303068091BD018823D9F1E09000065F |
:102BC000F09001066091B6017091B7012091BD01AE |
:102BD0000027F7FC0095102F5701680143E0AA0C6D |
:102BE000BB1CCC1CDD1C4A95D1F7AE18BF08C00A2F |
:102BF000D10A882777FD8095982F34E0660F771FDC |
:102C0000881F991F3A95D1F73327442755270E94EB |
:102C10001C30A20EB31EC41ED51EC601B50128E08D |
:102C200030E040E050E00E941C30309301062093D9 |
:102C300000068091BE018823D9F1E0900906F0904A |
:102C40000A066091B4017091B5012091BE01002780 |
:102C5000F7FC0095102F5701680183E0AA0CBB1CFC |
:102C6000CC1CDD1C8A95D1F7AE18BF08C00AD10A6A |
:102C7000882777FD8095982FB4E0660F771F881F0F |
:102C8000991FBA95D1F73327442755270E941C3046 |
:102C9000A20EB31EC41ED51EC601B50128E030E049 |
:102CA00040E050E00E941C3030930A062093090651 |
:102CB0008091BF018823A1F1E090FA05F090FB0517 |
:102CC0006091B8017091B9012091BF010027F7FC14 |
:102CD0000095102F57016801A3E0AA0CBB1CCC1C67 |
:102CE000DD1CAA95D1F7AE18BF08C00AD10A882703 |
:102CF00077FD8095982F3327442755270E941C3055 |
:102D0000A20EB31EC41ED51EC601B50128E030E0D8 |
:102D100040E050E00E941C303093FB052093FA0500 |
:102D20001092AF011092AE011092BA011092B1014F |
:102D30001092B0011092BB011092B3011092B20137 |
:102D40001092BC011092B5011092B4011092BE0114 |
:102D50001092B7011092B6011092BD011092B90104 |
:102D60001092B8011092BF0180911102909112024D |
:102D7000A0911302B09114028093FD019093FE0183 |
:102D8000A093FF01B0930002809101029091020292 |
:102D9000A0910302B09104028093ED019093EE01A3 |
:102DA000A093EF01B093F0018091090290910A0283 |
:102DB000A0910B02B0910C028093F5019093F60163 |
:102DC000A093F701B093F80180910502909106025B |
:102DD000A0910702B09108028093F1019093F20153 |
:102DE000A093F301B093F40180910D0290910E0233 |
:102DF000A0910F02B09110028093F9019093FA0113 |
:102E0000A093FB01B093FC018FEE80937A00809138 |
:102E1000F7059091F805893C91057CF02091F70524 |
:102E20003091F8058091F7059091F805880F991F6A |
:102E3000880F991F2052334015C08091F70590915B |
:102E4000F80588539F4FA4F42091F7053091F805B9 |
:102E50008091F7059091F805880F991F880F991FA9 |
:102E6000205E3C4F820F931F9093F8058093F705E7 |
:102E70008091F5059091F605893C91057CF02091B3 |
:102E8000F5053091F6058091F5059091F605880FCE |
:102E9000991F880F991F2052334015C08091F50566 |
:102EA0009091F60588539F4FA4F42091F505309139 |
:102EB000F6058091F5059091F605880F991F880F0A |
:102EC000991F205E3C4F820F931F9093F6058093CD |
:102ED000F50520912502309126028091BF05E82F4B |
:102EE000FF27EE0FFF1FE157FA4F80819181825932 |
:102EF0009F4F281739071CF42F5F3F4F0CC080816C |
:102F0000918182599F4F821793074CF42115310507 |
:102F100031F0215030403093260220932502209139 |
:102F20002702309128028091C005E82FFF27EE0F7D |
:102F3000FF1FE157FA4F8081918182599F4F2817D7 |
:102F400039071CF42F5F3F4F0CC08081918182595B |
:102F50009F4F821793074CF42115310531F0215012 |
:102F6000304030932802209327022091290230918B |
:102F70002A028091C105E82FFF27EE0FFF1FE157BE |
:102F8000FA4F8081918182599F4F281739071CF48D |
:102F90002F5F3F4F0CC08081918182599F4F8217D4 |
:102FA00093074CF42115310531F021503040309316 |
:102FB0002A022093290220912B0230912C02809129 |
:102FC000C205E82FFF27EE0FFF1FE157FA4F808160 |
:102FD000918182599F4F281739071CF42F5F3F4F6B |
:102FE0000CC08081918182599F4F821793074CF4C6 |
:102FF0002115310531F02150304030932C022093BF |
:103000002B02809125029091260297FF05C0109215 |
:103010002602109225020AC08F3F910539F034F044 |
:103020008FEF90E0909326028093250280912702F3 |
:103030009091280297FF05C0109228021092270253 |
:103040000AC08F3F910539F034F08FEF90E09093F4 |
:103050002802809327028091290290912A0297FFEB |
:1030600005C010922A02109229020AC08F3F9105D2 |
:1030700039F034F08FEF90E090932A028093290288 |
:1030800080912B0290912C0297FF05C010922C0288 |
:1030900010922B020AC08F3F910539F034F08FEF68 |
:1030A00090E090932C0280932B021F910F91FF9040 |
:1030B000EF90DF90CF90BF90AF90089510927A007C |
:1030C0008091BA01882369F08091AE019091AF019F |
:1030D0006091BA0177270E94E72F7093F8056093FB |
:1030E000F7058091BB01882369F08091B001909130 |
:1030F000B1016091BB0177270E94E72F7093F6051D |
:103100006093F5058091BC01882369F08091B2013C |
:103110009091B3016091BC0177270E94E72F7093D3 |
:103120000406609303068091BD018823D1F060916D |
:10313000B6017091B7012091BD01882777FD809578 |
:10314000982F34E0660F771F881F991F3A95D1F7A3 |
:103150003327442755270E941C30309301062093C3 |
:1031600000068091BE018823D1F06091B401709176 |
:10317000B5012091BE01882777FD8095982FB4E096 |
:10318000660F771F881F991FBA95D1F733274427F9 |
:1031900055270E941C3030930A062093090680911F |
:1031A000BF01882399F06091B8017091B901209115 |
:1031B000BF01882777FD8095982F3327442755270F |
:1031C0000E941C303093FB052093FA051092AF014A |
:1031D0001092AE011092BA011092B1011092B0019A |
:1031E0001092BB011092B3011092B2011092BC0177 |
:1031F0001092B5011092B4011092BE011092B70165 |
:103200001092B6011092BD011092B9011092B8014E |
:103210001092BF018FEE80937A00209125023091A9 |
:1032200026028091BF05E82FFF27EE0FFF1FE15711 |
:10323000FA4F8081918182599F4F281739071CF4DA |
:103240002F5F3F4F0CC08081918182599F4F821721 |
:1032500093074CF42115310531F021503040309363 |
:103260002602209325022091270230912802809186 |
:10327000C005E82FFF27EE0FFF1FE157FA4F8081AF |
:10328000918182599F4F281739071CF42F5F3F4FB8 |
:103290000CC08081918182599F4F821793074CF413 |
:1032A0002115310531F02150304030932802209310 |
:1032B00027022091290230912A028091C105E82F2E |
:1032C000FF27EE0FFF1FE157FA4F8081918182594E |
:1032D0009F4F281739071CF42F5F3F4F0CC0808188 |
:1032E000918182599F4F821793074CF42115310524 |
:1032F00031F02150304030932A022093290220914E |
:103300002B0230912C028091C205E82FFF27EE0F8F |
:10331000FF1FE157FA4F8081918182599F4F2817F3 |
:1033200039071CF42F5F3F4F0CC080819181825977 |
:103330009F4F821793074CF42115310531F021502E |
:10334000304030932C0220932B02809125029091E3 |
:10335000260297FF05C010922602109225020AC08D |
:103360008F3F910539F034F08FEF90E09093260273 |
:1033700080932502809127029091280297FF05C033 |
:1033800010922802109227020AC08F3F910539F04F |
:1033900034F08FEF90E09093280280932702809181 |
:1033A000290290912A0297FF05C010922A021092DA |
:1033B00029020AC08F3F910539F034F08FEF90E079 |
:1033C00090932A028093290280912B0290912C02E3 |
:1033D00097FF05C010922C0210922B0208958F3F88 |
:1033E000910539F034F08FEF90E090932C028093A8 |
:1033F0002B0208951F938091C6058B3F98F08B3F59 |
:1034000019F4809125020EC08C3F19F48091270297 |
:1034100009C08D3F19F48091290204C08E3F21F428 |
:1034200080912B028093810180918101882319F47E |
:103430001092810104C08F3F11F48093810180912B |
:10344000C5058B3F98F08B3F19F4809125020EC083 |
:103450008C3F19F48091270209C08D3F19F48091A7 |
:10346000290204C08E3F21F480912B0280938001B9 |
:1034700080918001882319F41092800105C0843660 |
:1034800018F084E6809380018091C7058B3F98F007 |
:103490008B3F19F4809125020EC08C3F19F4809166 |
:1034A000270209C08D3F19F48091290204C08E3F84 |
:1034B00021F480912B0280938201809182018823E4 |
:1034C00019F41092820105C0843618F084E68093C6 |
:1034D00082018091C9058B3F98F08B3F19F4809150 |
:1034E00025020EC08C3F19F48091270209C08D3F40 |
:1034F00019F48091290204C08E3F21F480912B029F |
:103500008093830180918301882319F410928301B1 |
:1035100004C08F3F11F4809383018091D0058B3FCD |
:1035200098F08B3F19F4809125020EC08C3F19F45E |
:103530008091270209C08D3F19F48091290204C0AF |
:103540008E3F21F480912B0280938401809184012D |
:10355000882319F41092840104C08F3F11F48093E2 |
:1035600084018091D1058B3F98F08B3F19F48091B5 |
:1035700025020EC08C3F19F48091270209C08D3FAF |
:1035800019F48091290204C08E3F21F480912B020E |
:1035900080938501809185018B3010F48AE002C010 |
:1035A0008F3F11F4809385018091D2058B3F98F075 |
:1035B0008B3F19F4809125020EC08C3F19F4809145 |
:1035C000270209C08D3F19F48091290204C08E3F63 |
:1035D00021F480912B0280938601809186018823BB |
:1035E00019F41092860104C08F3F11F48093860174 |
:1035F0008091D7058B3F98F08B3F19F4809125027D |
:103600000EC08C3F19F48091270209C08D3F19F438 |
:103610008091290204C08E3F21F480912B02809377 |
:10362000880180918801882319F41092880104C0D0 |
:103630008F3F11F4809388018091D8058B3F98F0DB |
:103640008B3F19F4809125020EC08C3F19F48091B4 |
:10365000270209C08D3F19F48091290204C08E3FD2 |
:1036600021F480912B0280933902809139028823C2 |
:1036700019F41092390204C08F3F11F4809339027B |
:103680008091D9058B3F98F08B3F19F480912502EA |
:103690000EC08C3F19F48091270209C08D3F19F4A8 |
:1036A0008091290204C08E3F21F480912B028093E7 |
:1036B0003A0280913A02882319F410923A0204C027 |
:1036C0008F3F11F480933A028091DA058B3F98F096 |
:1036D0008B3F19F4809125020EC08C3F19F4809124 |
:1036E000270209C08D3F19F48091290204C08E3F42 |
:1036F00021F480912B0280933B0280913B0288232E |
:1037000019F410923B0204C08F3F11F480933B02E6 |
:103710008091DB058B3F98F08B3F19F48091250257 |
:103720000EC08C3F19F48091270209C08D3F19F417 |
:103730008091290204C08E3F21F480912B02809356 |
:103740003C0280913C02882319F410923C0204C090 |
:103750008F3F11F480933C029091DC059B3FB0F0C9 |
:103760009B3F19F48091250204C09C3F29F480916D |
:103770002702809389010CC09D3F19F48091290292 |
:10378000F8CF9E3F29F480912B02F3CF90938901CB |
:1037900080918901882319F41092890104C08F3F18 |
:1037A00011F4809389019B3FB0F09B3F19F4809105 |
:1037B000250204C09C3F29F480912702809389014F |
:1037C0000CC09D3F19F480912902F8CF9E3F29F447 |
:1037D00080912B02F3CF90938901809189018823F6 |
:1037E00019F41092890104C08F3F11F4809389016C |
:1037F0009B3FB0F09B3F19F48091250204C09C3F91 |
:1038000029F480912702809389010CC09D3F19F40F |
:1038100080912902F8CF9E3F29F480912B02F3CFAB |
:103820009093890180918901882319F4109289016C |
:1038300004C08F3F11F48093890110918801612F9A |
:10384000772767FD7095872F972F0E94292E17FFE6 |
:1038500006C020E030E040E853E40E947E2D27E1DE |
:1038600037EB41ED58E30E94502F60937C01709339 |
:103870007D0180937E0190937F018091CE0580939E |
:1038800002068091CD058093F9051F91089581E08E |
:103890008093BB0542E04093BC0583E08093BD0567 |
:1038A00024E02093BE0535E03093BF0586E0809389 |
:1038B000C00587E08093C1051092C3058EE1809317 |
:1038C000C4058BEF8093C6058AE08093C70592E319 |
:1038D0009093C5059093C9054093C8052093CA05E8 |
:1038E0001092CB0580E18093CC058FE08093CD05CD |
:1038F0008AEF8093CE058AE18093CF0580E880939C |
:10390000D0058FEA8093D1058093D2058AE5809314 |
:10391000D30583E28093D40584E18093D50510928A |
:10392000D6053093D7051092D8051092D90510927C |
:10393000DA051092DB0584E68093DC0588E280934B |
:10394000DD051092E1059093DE0586E98093DF05A1 |
:103950003093E005A9EEB5E0E8E6F1E08CE00190F7 |
:103960000D928150E1F7089581E08093BB0552E00C |
:103970005093BC0583E08093BD0544E04093BE05B1 |
:1039800035E03093BF0586E08093C00587E08093E3 |
:10399000C10528E02093C2051092C3059EE19093D3 |
:1039A000C4058BEF8093C6058AE08093C70586E443 |
:1039B0008093C5059093C9055093C8054093CA05E7 |
:1039C0002093CB0580E18093CC058FE08093CD05DB |
:1039D0008AEF8093CE058AE18093CF0580E88093BB |
:1039E000D00588E78093D10596E99093D2058AE5C2 |
:1039F0008093D30583E28093D40584E18093D50539 |
:103A00001092D6053093D7051092D8051092D9059B |
:103A10001092DA051092DB0584E68093DC0588E2DB |
:103A20008093DD051092E10582E38093DE0590939B |
:103A3000DF053093E005A9EEB5E0E0E7F1E08CE0CA |
:103A400001900D928150E1F708958091340288230E |
:103A500001F51092C5021092C4021092D602109283 |
:103A6000EC0280919401882311F08093C40280912C |
:103A70009501882311F08093C502809196018823D7 |
:103A800011F08093EC0280919701882311F08093CC |
:103A9000D6028091C40299279093510580935005D6 |
:103AA0008091C50299279093530580935205809188 |
:103AB000EC02992790935505809354058091D60286 |
:103AC000992790935705809356051092CB01109239 |
:103AD000CC010E9437140895CF93DF931092DA013E |
:103AE0001092D9011092DC011092DB0180E090E08D |
:103AF000A0E0B0E08093E7019093E801A093E90192 |
:103B0000B093EA011092D4011092D3011092D60121 |
:103B10001092D5011092D8011092D7010E945E1820 |
:103B200085E090E00E94180CEC01CE010E94210C6F |
:103B30008823D9F30E945E188091C30580FF10C0CE |
:103B400080910A0190910B01875B934038F480913A |
:103B50000A0190910B018E5E924010F40E943D107C |
:103B60008091F7059091F80597FF03C09095819596 |
:103B70009F4F9093D4018093D3018091F50590914C |
:103B8000F60597FF03C0909581959F4F9093D601BE |
:103B90008093D501809103069091040697FF03C09E |
:103BA000909581959F4F9093D8018093D7018091F4 |
:103BB000090690910A0697FF03C0909581959F4F43 |
:103BC00060E170E00E94E72F7093DC016093DB01FD |
:103BD000809100069091010697FF03C09095819512 |
:103BE0009F4F60E170E00E94E72F7093DA016093CD |
:103BF000D9016091770570917805882777FD8095C8 |
:103C0000982F0E94292E6093E7017093E80180931A |
:103C1000E9019093EA0110920102109202021092BF |
:103C200003021092040210920502109206021092F2 |
:103C30000702109208021092090210920A021092D2 |
:103C40000B0210920C0210920D0210920E021092B2 |
:103C50000F02109210021092110210921202109292 |
:103C60001302109214021092F8051092F7051092A8 |
:103C7000F6051092F5051092040610920306809145 |
:103C8000060190910701A0910801B091090190935C |
:103C90007A05809379051092C1011092C0011092AB |
:103CA000190210921A0210921B0210921C028091AB |
:103CB0001D0290911E029093200280931F0282E3C6 |
:103CC00090E09093A8018093A701DF91CF91089590 |
:103CD0001F93182F0EC080913402882361F484E66C |
:103CE00090E09093A8018093A7018AEF90E00E9452 |
:103CF000010D115080F71F9108952F923F924F921E |
:103D00005F926F927F928F929F92AF92BF92CF926B |
:103D1000DF92EF92FF920F931F93CF93DF93CDB774 |
:103D2000DEB724970FB6F894DEBF0FBECDBF0E945A |
:103D30009D15299AE091BD05AE2FBB27AA0FBB1F89 |
:103D4000A157BA4F0D90BC91A02D9D0128583F4F0F |
:103D50003A83298337FF02C01A82198280912D028B |
:103D6000843608F04AC080910101882331F484EF41 |
:103D700091E09093A8018093A701809148029091CF |
:103D80004902009731F001979093490280934802CD |
:103D900004C01092340210922302289A80914302A8 |
:103DA00090914402815D974028F18091D405482F7D |
:103DB00055275A83498381E080932302E091BB0514 |
:103DC000FF27EE0FFF1FE157FA4F11821082E0919B |
:103DD000BC05FF27EE0FFF1FE157FA4F118210823B |
:103DE000E091BE05FF27EE0FFF1FE157FA4F11824A |
:103DF0001082CEC110923402CBC180912D028D3839 |
:103E000008F4C6C1109223028091D50522E3829F57 |
:103E1000C0011124909349028093480269817A81FC |
:103E2000693271056CF080914302909144027FEFFA |
:103E30008F3F970781F1019690934402809343024C |
:103E40008091430290914402883C910520F0898141 |
:103E50009A81889704F510925E0210925F02109288 |
:103E600060021092610210925A0210925B0210924C |
:103E70005C0210925D0210921102109212021092D6 |
:103E80001302109214021092150210921602109250 |
:103E9000170210921802E981FA81E93CF1050CF44D |
:103EA000D6C080913402882309F072C1E091BE052A |
:103EB000FF27EE0FFF1FE157FA4F808191818C346D |
:103EC00091050CF4C1C0809147028F5F8093470237 |
:103ED000893C08F45DC129980E946C1D109234023F |
:103EE0001092470210924402109243028091BB0547 |
:103EF000282F3327F901EE0FFF1FE157FA4F80817A |
:103F00009181873491059CF4E091BC05FF27EE0F69 |
:103F1000FF1FE157FA4F0190F081E02DF7FF03C03A |
:103F2000F095E195FF4FE734F1050CF46CC08091FA |
:103F3000BC05682F7727DB01AA0FBB1FA157BA4F1B |
:103F40008D919C911197873491053CF0F901EE0F0A |
:103F5000FF1FE157FA4F808191818D919C918734A9 |
:103F6000910564F0F901EE0FFF1FE157FA4F8081D0 |
:103F700091818734910514F042E001C041E0FB01DA |
:103F8000EE0FFF1FE157FA4F808191818634910532 |
:103F90005CF4F901EE0FFF1FE157FA4F8081918128 |
:103FA000873491050CF043E0FB01EE0FFF1FE15752 |
:103FB000FA4F808191818A5B9F4F5CF4F901EE0F8B |
:103FC000FF1FE157FA4F80819181873491050CF0F2 |
:103FD00044E0660F771F61577A4FFB018081918122 |
:103FE0008A5B9F4F5CF4220F331F21573A4FF90130 |
:103FF00080819181863491050CF445E0A2E0B0E027 |
:10400000042E0E943F300E940B024AE36BEB75E0E6 |
:104010000E942A020E940B020E94681E8091C30522 |
:1040200080FFB6C080910A0190910B01875B93409D |
:1040300040F480910A0190910B018E5E924008F04D |
:10404000A7C00E943D10A4C010924702A1C04981A0 |
:104050005A81433251050CF09BC08091BE05482F18 |
:104060005527FA01EE0FFF1FE157FA4F808191812A |
:10407000855B9F4F0CF06DC0809146028F5F8093EF |
:104080004602893C08F467C088EC8093460281E0D0 |
:1040900090E0909344028093430281E08093340245 |
:1040A0001092560210925702109258021092590222 |
:1040B0001092110210921202109213021092140226 |
:1040C0001092150210921602109217021092180206 |
:1040D0001092010210920202109203021092040246 |
:1040E0001092090210920A0210920B0210920C0216 |
:1040F0008091ED019091EE01A091EF01B091F0015E |
:104100008093050290930602A0930702B0930802E1 |
:104110008091F5019091F601A091F701B091F8011D |
:1041200080930D0290930E02A0930F02B0931002A1 |
:1041300010925E0210925F02109260021092610271 |
:1041400010925A0210925B0210925C0210925D0271 |
:1041500002C010924602440F551F41575A4FFA01B0 |
:10416000808191818C3491058CF0809145028F5F24 |
:1041700080934502893C60F01092340288EC809371 |
:104180004502109244021092430202C0109245026E |
:1041900080916701815080936701809167018F3F13 |
:1041A00029F080912302882309F412C10E94FA1990 |
:1041B000E091BB05FF27EE0FFF1FDF01A157BA4FAC |
:1041C0008D919C916091CA057727EB55FA4F20811C |
:1041D00031814091CB055527FC01E69FC001E79F47 |
:1041E000900DF69F900D1124F901E49F9001E59F39 |
:1041F000300DF49F300D1124820F931F90932F02E6 |
:1042000080932E02E091BC05FF27EE0FFF1FDF0118 |
:10421000A157BA4F8D919C91EB55FA4F2081318176 |
:10422000FC01E69FC001E79F900DF69F900D1124C1 |
:10423000B901649F9001659F300D749F300D11246A |
:10424000820F931F9093310280933002E091BE055C |
:10425000FF27EE0FFF1FE157FA4F80819181909564 |
:1042600081959F4F90933302809332021091850184 |
:10427000612F772767FD7095872F972F0E94292E32 |
:1042800017FF06C020E030E040E853E40E947E2D96 |
:1042900020E030E040E251E40E947E2D20E030E05A |
:1042A00040E85BE30E94502F5B016C0160930506C0 |
:1042B0007093060680930706909308061091860176 |
:1042C000612F772767FD7095872F972F0E94292EE2 |
:1042D00017FF06C020E030E040E853E40E947E2D46 |
:1042E00020E030EE4BE257E40E94C62D6093FC05BF |
:1042F0007093FD058093FE059093FF058091C305A3 |
:1043000082FF0CC080E090E0A0E0B0E08093FC056C |
:104310009093FD05A093FE05B093FF0520E030E0EB |
:1043200040E050E0C601B5010E945F2E882364F48E |
:1043300080E090E0A0E0B0E0809305069093060650 |
:10434000A0930706B093080620E030E040E050E07C |
:104350006091FC057091FD058091FE059091FF052F |
:104360000E945F2E882364F480E090E0A0E0B0E03B |
:104370008093FC059093FD05A093FE05B093FF0587 |
:1043800080912302882321F110923302109232028D |
:1043900010922F0210922E021092310210923002CF |
:1043A0008DEC9CECACECBDE3809305069093060687 |
:1043B000A0930706B09308068AE097EDA3EABBE353 |
:1043C0008093FC059093FD05A093FE05B093FF0537 |
:1043D0008091C2019091C3018D54914008F4BCC0FA |
:1043E0002091F1013091F2014091F3015091F401DB |
:1043F0008091ED019091EE01A091EF01B091F0015B |
:10440000B901681B790B70934D0260934C022091A7 |
:10441000F9013091FA014091FB015091FC0180912A |
:10442000F5019091F601A091F701B091F801281BD8 |
:10443000390B30934B0220934A021092C301109221 |
:10444000C201673A710534F08091D3019091D40193 |
:10445000019608C06A557F4F4CF48091D30190912A |
:10446000D40101979093D4018093D301273A310569 |
:1044700034F08091D5019091D601019608C02A555B |
:104480003F4F4CF48091D5019091D60101979093C4 |
:10449000D6018093D5018091150290911602A091CA |
:1044A0001702B0911802873A9105A105B1054CF0A9 |
:1044B0008091D7019091D80101979093D801809372 |
:1044C000D7018091150290911602A0911702B09128 |
:1044D00018028A559F4FAF4FBF4F4CF48091D701C0 |
:1044E0009091D80101969093D8018093D7011092B2 |
:1044F0007A008091ED019091EE01A091EF01B091D1 |
:10450000F0018093050290930602A0930702B093F6 |
:1045100008028091F5019091F601A091F701B09108 |
:10452000F80180930D0290930E02A0930F02B093B6 |
:1045300010028091FD019091FE01A091FF01B091C8 |
:1045400000028093150290931602A0931702B09375 |
:1045500018028FEE80937A006091ED017091EE0168 |
:104560008091EF019091F001A090CF05BB24CC2465 |
:10457000DD24E0900006F0900106A60195010E945E |
:104580001C300027F7FC0095102F2E193F09400B17 |
:10459000510BCA01B90120E130E040E050E00E9437 |
:1045A0001C3039014A012093520230935302409348 |
:1045B0005402509355026091F5017091F60180917B |
:1045C000F7019091F801E0900906F0900A06A60123 |
:1045D00095010E941C300027F7FC0095102F2E1922 |
:1045E0003F09400B510BCA01B90120E130E040E026 |
:1045F00050E00E941C3020934E0230934F024093B3 |
:10460000500250935102F5EF6F16F1E07F06F0E093 |
:104610008F06F0E09F062CF084EF91E0A0E0B0E080 |
:104620000DC06CE066166EEF76066FEF86066FEFD4 |
:10463000960664F48CE09EEFAFEFBFEF80935202DA |
:1046400090935302A0935402B0935502253F71E01A |
:10465000370770E0470770E057072CF084EF91E0D0 |
:10466000A0E0B0E009C02C503E4F4F4F5F4F64F4C4 |
:104670008CE09EEFAFEFBFEF80934E0290934F021E |
:10468000A0935002B093510210927A0080910102DF |
:1046900090910202A0910302B09104022091520273 |
:1046A000309153024091540250915502821B930B5A |
:1046B000A40BB50B8093010290930202A093030216 |
:1046C000B09304028091090290910A02A0910B021A |
:1046D000B0910C0220914E0230914F024091500255 |
:1046E00050915102821B930BA40BB50B80930902CE |
:1046F00090930A02A0930B02B0930C0280913202B5 |
:10470000909133025C01CC24B7FCC094DC2CA092C5 |
:104710005602B0925702C0925802D092590297FFA7 |
:1047200003C0909581959F4F84973CF08091C3057D |
:1047300084FD03C081E080933F026090110270907D |
:1047400012028090130290901402C501B7FE03C0BC |
:10475000909581959F4F7C010027F7FC0095102FC5 |
:104760002091CC05332744275527C601B5010E9467 |
:10477000B42F9B01AC01C801B7010E94B42F20E007 |
:1047800031E040E050E00E941C30442737FD409566 |
:10479000542F621A730A840A950A60921102709269 |
:1047A0001202809213029092140280911102909151 |
:1047B0001202A0911302B091140281539547A040B8 |
:1047C000B04064F080E395E7A0E0B0E08093110290 |
:1047D00090931202A0931302B093140280911102DD |
:1047E00090911202A0911302B0911402805D9A4838 |
:1047F000AF4FBF4F64F480ED9AE8AFEFBFEF809307 |
:10480000110290931202A0931302B09314028FEE40 |
:1048100080937A0080911D0290911E02892B09F4E9 |
:10482000A1C08091C30583FF9DC06091ED0170918F |
:10483000EE018091EF019091F00120E032E040E044 |
:1048400050E00E941C30890137FF03C0109501958C |
:104850001F4F6091F5017091F6018091F7019091E1 |
:10486000F80120E032E040E050E00E941C30B90145 |
:1048700037FF03C0709561957F4F601771070CF487 |
:10488000B80169317105A4F480913F02882381F059 |
:1048900080913D0290913E02892B51F480911D023E |
:1048A00090911E029093200280931F0210923F026B |
:1048B000209184013327629FC001639F900D729FF6 |
:1048C000900D112460E470E00E94E72FA901461BBF |
:1048D000570B141615060CF03FC010927A00209169 |
:1048E0003D0230913E022115310561F50091110222 |
:1048F0001091120220911302309114028091210232 |
:1049000090912202BC01649FC001659F900D749F2D |
:10491000900D112460E270E00E94E72F882777FD58 |
:104920008095982F060F171F281F391F009311021B |
:104930001093120220931302309314028FEE80938F |
:104940007A0010C08FEE80937A002150304030936F |
:104950003E0220933D0206C084EF91E090933E0218 |
:1049600080933D028091390299279093E7028093CA |
:10497000E60280913A0299279093E9028093E80237 |
:1049800080913B0299279093E3028093E202809109 |
:104990003C0299279093E5028093E40289E190E03C |
:1049A0009093D3028093D2028091250290912602A7 |
:1049B0001816190614F40E94792980912502909105 |
:1049C0002602892B71F485E090E09093DD028093BC |
:1049D000DC021092BF021092BE021092C10210922D |
:1049E000C002809137058F5F809337058091400228 |
:1049F0008150809340028F3F09F078C081E380931B |
:104A000040026091ED017091EE018091EF01909173 |
:104A1000F001E090CF05FF2400271127A80197019E |
:104A20000E941C3030933905209338056091F501C0 |
:104A30007091F6018091F7019091F801A80197011A |
:104A40000E941C3030933B0520933A05809100066C |
:104A50009091010690933D0580933C058091090655 |
:104A600090910A0690933F0580933E05809103063E |
:104A70009091040690934105809340058091350202 |
:104A800090913602909343058093420560911902FC |
:104A900070911A0280911B0290911C0220E032E07A |
:104AA00040E050E00E941C303093450520934405BF |
:104AB00089819A81909347058093460580911D02D4 |
:104AC00090911E02909349058093480580911D02A4 |
:104AD00090911E0290934B0580934A0580911D0290 |
:104AE00090911E0290934D0580934C056091ED01CD |
:104AF0007091EE018091EF019091F0012090FC0502 |
:104B00003090FD054090FE055090FF05E090F705C0 |
:104B1000F090F805609005067090060680900706F4 |
:104B2000909008060E94292EA20191010E94502F08 |
:104B30005B016C010027F7FC0095102FC801B7013D |
:104B40000E94292EA40193010E94502F9B01AC01C9 |
:104B5000C601B5010E947E2D0E940C2E7093F805AF |
:104B60006093F7056091F5017091F6018091F7016E |
:104B70009091F801E090F505F090F6050E94292E3D |
:104B8000A20191010E94502F5B016C010027F7FCEC |
:104B90000095102FC801B7010E94292EA40193018E |
:104BA0000E94502F9B01AC01C601B5010E947E2DD1 |
:104BB0000E940C2E7093F6056093F5056091030634 |
:104BC00070910406A090FD01B090FE01C090FF011D |
:104BD000D0900002882777FD8095982F0E94292E7B |
:104BE0007B018C0120E030E040E05FE3C401B301D1 |
:104BF0000E94502F9B01AC01C801B7010E94502FA9 |
:104C00007B018C01C601B5010E94292EA2019101F0 |
:104C10000E94502F9B01AC01C801B7010E947E2D5C |
:104C20000E940C2E70930406609303068091F70592 |
:104C30009091F8058150984034F080E098E090938E |
:104C4000F8058093F7058091F7059091F80580505D |
:104C5000984F34F480E098EF9093F8058093F7052F |
:104C60008091F5059091F6058150984034F080E0F0 |
:104C700098E09093F6058093F5058091F505909165 |
:104C8000F6058050984F34F480E098EF9093F60545 |
:104C90008093F50580910306909104068150984019 |
:104CA00034F080E098E090930406809303068091AE |
:104CB0000306909104068050984F34F480E098EFFA |
:104CC00090930406809303068091C305992780FF83 |
:104CD000CDC02091810181FF0EC02233B0F48091BC |
:104CE00035029091360244979093380280933702B0 |
:104CF000109224020DC08091C805289FC001112484 |
:104D00004497909338028093370281E08093240285 |
:104D100080912302882321F01092380210923702EA |
:104D2000209135023091360240913702509138027D |
:104D3000421753070CF09AC080912402882309F48B |
:104D400095C0241B350B809182019927BC01269FB9 |
:104D5000C001279F900D369F900D112460E170E0F7 |
:104D60000E94E72F09811A81061B170B2091C001B1 |
:104D70003091C101809180019927FC012E9FC001D3 |
:104D80002F9F900D3E9F900D112468E070E00E94CF |
:104D9000E72F061B170B6091190270911A02809180 |
:104DA0001B0290911C0220E032E040E050E00E94A3 |
:104DB0001C30CA01B90120918301332744275527AC |
:104DC0000E94B42F20E230E040E050E00E941C300E |
:104DD000FFEF2E3C3F0714F42EEC3FEF8091410291 |
:104DE00090914202AC0174E0440F551F7A95E1F7AF |
:104DF000481B590B2333310514F022E330E0021B2A |
:104E0000130BCA01800F911F60E170E00E94E72F31 |
:104E100070934202609341028091C40599276817FC |
:104E200079078CF429813A81281739072CF090935F |
:104E300042028093410207C049815A815093420245 |
:104E4000409341020DC080914102909142026981DC |
:104E50007A816817790724F47093420260934102C3 |
:104E600080914102909142029A838983C090030607 |
:104E7000D09004068091560290915702C81AD90A20 |
:104E800095E6C916D10424F064E6C62ED12C09C0DB |
:104E9000ECE9CE16EFEFDE0624F45CE9C52E5FEFF9 |
:104EA000D52E409078015090790160907A017090F1 |
:104EB0007B016091F7057091F80520912E023091E9 |
:104EC0002F024091BE025091BF02241B350B621B82 |
:104ED000730B882777FD8095982F0E94292E9B01C0 |
:104EE000AC01C301B2010E94502F0E940C2E70939E |
:104EF000D1026093D0028091D0029091D1028C01B6 |
:104F0000222717FD2095322F80915E0290915F023B |
:104F1000A0916002B0916102080F191F2A1F3B1F68 |
:104F200000935E0210935F0220936002309361024F |
:104F30001016110612061306ACF4C80117FF03C0C1 |
:104F4000909581959F4F60E071E00E94E72F6F5F21 |
:104F50007F4F882777FD8095982F061B170B280B0E |
:104F6000390B14C0C80117FF03C0909581959F4F5E |
:104F700060E071E00E94E72F6F5F7F4F882777FD29 |
:104F80008095982F060F171F281F391F00935E0268 |
:104F900010935F02209360023093610280915E0261 |
:104FA00090915F02A0916002B09161028138FEE3AE |
:104FB0009F07F0E0AF07F0E0BF072CF080E89EE32A |
:104FC000A0E0B0E009C08058914CAF4FBF4F64F4EF |
:104FD00080E891ECAFEFBFEF80935E0290935F02A9 |
:104FE000A0936002B09361026091D0027091D102EF |
:104FF00080907C0190907D01A0907E01B0907F0117 |
:10500000882777FD8095982F0E94292E7B018C019F |
:1050100060915E0270915F028091600290916102E6 |
:105020000E94292E9B01AC01C501B4010E94502FA2 |
:105030009B01AC01C801B7010E947E2D0E940C2E7D |
:105040009601260F371F49815A81240F351F2224CC |
:105050004A30510514F441E0242E37FD02C02220CD |
:1050600019F040E050E008C080910206482F552713 |
:10507000241735070CF4A9018091F905E82FFF27C3 |
:10508000FC83EB839F01E417F5070CF49A0120934E |
:10509000C40229813A81261B370BB9016C0D7D1D95 |
:1050A00077FD02C0222019F080E090E007C08091D7 |
:1050B00002069927681779070CF4CB012B813C81F4 |
:1050C000281739070CF49C012093C5026091F5055F |
:1050D0007091F60520913002309131024091C0026A |
:1050E0005091C102241B350B621B730B882777FD7F |
:1050F0008095982F0E94292E9B01AC01C301B2011B |
:105100000E94502F0E940C2E7093C3026093C20223 |
:105110008091C2029091C3028C01222717FD209535 |
:10512000322F80915A0290915B02A0915C02B09163 |
:105130005D02080F191F2A1F3B1F00935A0210938C |
:105140005B0220935C0230935D021016110612067A |
:105150001306ACF4C80117FF03C0909581959F4FCB |
:1051600060E071E00E94E72F6F5F7F4F882777FD37 |
:105170008095982F061B170B280B390B14C0C801FC |
:1051800017FF03C0909581959F4F60E071E00E94EA |
:10519000E72F6F5F7F4F882777FD8095982F060F49 |
:1051A000171F281F391F00935A0210935B02209388 |
:1051B0005C0230935D0280915A0290915B02A09153 |
:1051C0005C02B0915D0281383EE3930730E0A307B3 |
:1051D00030E0B3072CF080E89EE3A0E0B0E009C027 |
:1051E0008058914CAF4FBF4F64F480E891ECAFEF23 |
:1051F000BFEF80935A0290935B02A0935C02B0933E |
:105200005D026091C2027091C302882777FD80958C |
:10521000982F0E94292E7B018C0160915A02709177 |
:105220005B0280915C0290915D020E94292E9B019D |
:10523000AC01C501B4010E94502F9B01AC01C80113 |
:10524000B7010E947E2D0E940C2E29813A81260FE3 |
:10525000371F2C193D0937FD02C0222019F040E00C |
:1052600050E008C080910206482F552724173507C3 |
:105270000CF4A9012B813C81241735070CF49A0109 |
:105280002093EC0289819A81861B970BBC016C19D3 |
:105290007D0977FD02C0222019F020E030E008C02F |
:1052A00080910206282F3327621773070CF49B01A5 |
:1052B0008B819C81821793070CF4C9018093D602DD |
:1052C00024960FB6F894DEBF0FBECDBFDF91CF910D |
:1052D0001F910F91FF90EF90DF90CF90BF90AF9014 |
:1052E0009F908F907F906F905F904F903F902F9006 |
:1052F00008952F923F924F925F926F927F928F927A |
:105300009F92AF92BF92CF92DF92EF92FF920F9354 |
:105310001F93CF93DF93CDB7DEB764970FB6F894A2 |
:10532000DEBF0FBECDBF80917005882309F4BFC3D7 |
:105330008091BC029091BD0201969093BD02809332 |
:10534000BC028230910581F18330910524F40197EC |
:1053500009F090C008C08330910509F446C0049755 |
:1053600009F088C063C08091580590915905A091BB |
:105370005A05B0915B058093900290939102A0939F |
:105380009202B093930280915C0590915D05A0918B |
:105390005E05B0915F058093A0029093A102A09357 |
:1053A000A202B093A30266C080915805909159055E |
:1053B000A0915A05B0915B05809394029093950259 |
:1053C000A0939602B093970280915C0590915D0541 |
:1053D000A0915E05B0915F058093A4029093A50211 |
:1053E000A093A602B093A70245C080915805909162 |
:1053F0005905A0915A05B0915B058093980290934E |
:105400009902A0939A02B0939B0280915C059091BF |
:105410005D05A0915E05B0915F058093A802909311 |
:10542000A902A093AA02B093AB0224C080915805B0 |
:1054300090915905A0915A05B0915B0580939C020B |
:1054400090939D02A0939E02B0939F0280915C0571 |
:1054500090915D05A0915E05B0915F058093AC02CF |
:105460009093AD02A093AE02B093AF021092BD0232 |
:105470001092BC0260919002709191028091920210 |
:10548000909193022091940230919502409196025E |
:1054900050919702620F731F841F951F20919C02E9 |
:1054A00030919D0240919E0250919F02E09098029F |
:1054B000F090990200919A0210919B022E0D3F1DCF |
:1054C000401F511F620F731F841F951F24E030E09F |
:1054D00040E050E00E941C30CA01B9010E94292E10 |
:1054E0000E94332E0E940C2E5B016C016093C80257 |
:1054F0007093C9028093CA029093CB026091A0027C |
:105500007091A1028091A2029091A3022091A40225 |
:105510003091A5024091A6025091A702620F731F1D |
:10552000841F951F2091AC023091AD024091AE02D4 |
:105530005091AF02E090A802F090A9020091AA0257 |
:105540001091AB022E0D3F1D401F511F620F731FA4 |
:10555000841F951F24E030E040E050E00E941C30A2 |
:10556000CA01B9010E94292E0E94332E0E940C2EDE |
:105570007B018C016093F1027093F2028093F3023D |
:105580009093F4028091D4029091D502019709F092 |
:105590008EC28091250290912602181619060CF0F1 |
:1055A00086C28091DC029091DD02892B51F18091BD |
:1055B000580590915905A0915A05B0915B058093CB |
:1055C000CC029093CD02A093CE02B093CF028091F3 |
:1055D0005C0590915D05A0915E05B0915F0580939B |
:1055E000DE029093DF02A093E002B093E10282E337 |
:1055F00090E09093A8018093A7011092DD02109291 |
:10560000DC028091CC029091CD02A091CE02B091AB |
:10561000CF028A199B09AC09BD09898B9A8BAB8B88 |
:10562000BC8B2091E6023091E702442737FD40957C |
:10563000542FBC01CD010E94B42F5B016C0160931B |
:105640006402709365028093660290936702809172 |
:10565000DE029091DF02A091E002B091E1028E198A |
:105660009F09A00BB10B8D879E87AF87B88B2091C8 |
:10567000E6023091E702442737FD4095542FBC01E4 |
:10568000CD010E94B42F1B012C016093680270931E |
:10569000690280936A0290936B02809164059091F5 |
:1056A0006505A0916605B091670589879A87AB87E4 |
:1056B000BC872091E8023091E902309521953F4F57 |
:1056C000442737FD4095542FBC01CD010E94B42FD3 |
:1056D0003B014C01609374027093750280937602D3 |
:1056E000909377028091680590916905A0916A0571 |
:1056F000B0916B058D839E83AF83B8872091E802BC |
:105700003091E902309521953F4F442737FD409570 |
:10571000542FBC01CD010E94B42F69837A838B83FF |
:105720009C83609378027093790280937A029093BD |
:105730007B02E090E202F090E302A60CB71CC81CCA |
:10574000D91CC601B5010E94292E0E94332E5B018F |
:105750006C010027F7FC0095102FC801B7010E94CB |
:10576000292E9B01AC01C601B5010E94C62D0E94E5 |
:105770000C2E4B017093BF026093BE02E090E202D8 |
:10578000F090E30289819A81AB81BC81280E391E99 |
:105790004A1E5B1EC201B1010E94292E0E94332EB7 |
:1057A0005B016C010027F7FC0095102FC801B701C1 |
:1057B0000E94292E9B01AC01C601B5010E94C62D95 |
:1057C0000E940C2E9B017093C1026093C0028091D5 |
:1057D000D2029091D302881599052CF48091D202BF |
:1057E0009091D30211C08091D2029091D3029095F2 |
:1057F00081959F4F881699065CF48091D202909112 |
:10580000D302909581959F4F9093BF028093BE02E3 |
:105810008091D2029091D302821793072CF4809149 |
:10582000D2029091D30211C08091D2029091D30202 |
:10583000909581959F4F281739075CF48091D2028B |
:105840009091D302909581959F4F9093C102809340 |
:10585000C00289899A89AB89BC8980937C02909324 |
:105860007D02A0937E02B0937F028D859E85AF85D9 |
:10587000B8898093800290938102A0938202B093B2 |
:1058800083028091C30583FFACC08091E4029091B4 |
:10589000E50220911D0230911E02820F931F90930A |
:1058A0006302809362028091620290916302885643 |
:1058B000914054F080916202909163028856914029 |
:1058C0009093630280936202E0906202F090630220 |
:1058D0006091C0027091C102882777FD8095982F52 |
:1058E0000E94292E1B012C01A0906202B09063023D |
:1058F0000027F7FC0095102FC801B7010E94292E40 |
:105900000E94982FA20191010E94502F3B014C014F |
:10591000CC24B7FCC094DC2CC601B5010E94292E12 |
:105920000E94C02D7B018C016091BE027091BF026C |
:10593000882777FD8095982F0E94292E9B01AC0126 |
:10594000C801B7010E94502F9B01AC01C401B301F3 |
:105950000E947E2D0E94332E0E940C2E5B017093BC |
:10596000BF026093BE026091620270916302E09098 |
:105970006202F0906302882777FD8095982F0E943D |
:10598000292E0E94C02DA20191010E94502F3B019F |
:105990004C010027F7FC0095102FC801B7010E94A9 |
:1059A000292E0E94982F7B018C01CC24B7FCC09437 |
:1059B000DC2CC601B5010E94292E9B01AC01C80157 |
:1059C000B7010E94502F9B01AC01C401B3010E949A |
:1059D0007D2D0E94332E0E940C2E7093C102609385 |
:1059E000C0028091BE029091BF021816190694F46D |
:1059F00089859A85AB85BC854A97A105B10514F1C7 |
:105A000089899A89AB89BC898D599F4FAF4FBF4F08 |
:105A1000ACF418C0892BB1F089859A85AB85BC851B |
:105A2000875E9F4FAF4FBF4F6CF489899A89AB89CE |
:105A3000BC8984369105A105B10524F41092BF02FA |
:105A40001092BE028091C0029091C10218161906F0 |
:105A500094F48D819E81AF81B8854A97A105B105E7 |
:105A600014F18D859E85AF85B8898D599F4FAF4FB5 |
:105A7000BF4FACF418C0892BB1F08D819E81AF81EE |
:105A8000B885875E9F4FAF4FBF4F6CF48D859E8565 |
:105A9000AF85B88984369105A105B10524F410922B |
:105AA000C1021092C0021092D5021092D4026496E4 |
:105AB0000FB6F894DEBF0FBECDBFDF91CF911F911F |
:105AC0000F91FF90EF90DF90CF90BF90AF909F909D |
:105AD0008F907F906F905F904F903F902F900895A0 |
:105AE000FC014150504030F001900616D1F731973B |
:105AF000CF0108958827992708955058192E72D1FB |
:105B000001D022C1BA176207730784079507B1F164 |
:105B100088F40EF410940B2EBA2FA02D062E622FAF |
:105B2000202D072E732F302D082E842F402D092E67 |
:105B3000952F502DFF275523B9F0591B49F0573E9B |
:105B400098F0469537952795A795F0405395C9F756 |
:105B500076F0BA0F621F731F841F30F48795779514 |
:105B60006795B795F040939517FA0F2E0895BF1BD0 |
:105B7000BB27BA0B620B730B840BF6CFDEF65EC14C |
:105B800050E449EC3FE02BED87D0BBC02BD101D0D6 |
:105B9000DBC0552359F0992369F09F575F57951B38 |
:105BA00033F442F4903811F4915805C0E5C091588F |
:105BB0009F3F09F443C1BB27112462177307840771 |
:105BC00030F4660F771F881FBB1F915098F311D0D8 |
:105BD0000F920FD00F920DD0A0E826173707480775 |
:105BE0001B0609F0A048BA2F602D7F918F910024E9 |
:105BF0000895A0E80024621773078407B10528F010 |
:105C0000621B730B840BB1090A2A660F771F881F6A |
:105C1000BB1FA69581F7089597FBF0D09F3738F00A |
:105C2000FEE9F91B982F872F762F6B2F05C003C134 |
:105C30009695879577956795F150D0F73EF49095B6 |
:105C40008095709561957F4F8F4F9F4F0895E89491 |
:105C500003C097FB0EF4F3DFB62F672F782F892F41 |
:105C60009EE9002471C0D8D09F3760F40EF0E3C0E5 |
:105C70009FEB80E877276627089586957795679547 |
:105C8000B11D93959639C8F32EF4BB2319F06F5FBD |
:105C90007F4F8F4FBB2758C05F77552319F444239C |
:105CA0000AF06AC02F933F934F935F936FDF55279E |
:105CB0004427C6D05F914F913F912F91F1C00ED0F4 |
:105CC0005EF004C00BD026F001C008D019F020F41B |
:105CD0008FEF089580E0089581E0089597FB092EE5 |
:105CE000052600F8689481D0E89407FC07C0621785 |
:105CF00073078407950721F008F40094079498949B |
:105D000008951F939F7750EC49E43FE02BEDF6DEBA |
:105D100010E89F775FE349EC3FE02BED62177307D4 |
:105D20008407950720F050EC49E4E8DE112713D1F1 |
:105D30009068E0E7F0E023D091271F9108959A95AD |
:105D4000BB0F661F771F881F11249923A1F088239A |
:105D5000B2F79F3F59F0BB0F48F421F4002011F433 |
:105D600060FF04C06F5F7F4F8F4F9F4F881F9795D5 |
:105D7000879597F908955FC09FEF80EC0895FF9293 |
:105D8000EF92DF92CF92BF926B017C01B59016D05B |
:105D9000B590BB2069F09F938F937F936F93B6016B |
:105DA000C7010CD02F913F914F915F910E94C62D5A |
:105DB000BF90CF90DF90EF90FF900895D0D002C0B9 |
:105DC0009601A701EF93FF930E94502FFF91EF914F |
:105DD000C6D0EF93FF930E947E2DFF91EF91BA946E |
:105DE00079F70895052E092607FA440F551F5F3FDE |
:105DF00079F0AA27A51708F051E04795880F991F59 |
:105E00009F3F31F0BB27B91708F091E087950895BF |
:105E10009F919F911124B0CF97FB880F991F9F3FAF |
:105E200031F0BB27B91708F091E0879508959F914D |
:105E30009F911124A1CF6627772788279927089556 |
:105E4000EBDFCF93DF93D52FC42F5527442733277C |
:105E500022279923D9F09F37C8F0F92F75DF592FE2 |
:105E6000482F372F262FF63968F4D6DEF2DEC03001 |
:105E7000CD0721F069937993899399939058DF9195 |
:105E8000CF913CCE9927882777276627C030CD074A |
:105E900021F02993399349935993DF91CF9154CFAE |
:105EA000A1DF01D051CF992339F0552329F09F5715 |
:105EB0005F57950F13F49AF1C1CF91589F3FE1F3CB |
:105EC000629FA12D0F92BB27639FA00DB11DEE27EE |
:105ED000729FA00DB11DEE1FAF93AA27649FB00D56 |
:105EE000E11D739FB00DE11DAA1F6627829FB00DB3 |
:105EF000E11DA61F5527749FE00DA11D551F839F0F |
:105F0000E00DA11D561F849FA00D511D852F7A2FD6 |
:105F10006E2F1F900F9088231AF4939539F42CCF8D |
:105F2000000C111CBB1F661F771F881F01280895D6 |
:105F30009F939F77993358F050E449EC3FE02BED65 |
:105F4000ABDE5FEB49EC3FE02BEDD8DDDADE5F91B5 |
:105F50005078952708959B01AC010C94502F5591D2 |
:105F60004591359125910895629FD001739FF0016D |
:105F7000829FE00DF11D649FE00DF11D929FF00DD9 |
:105F8000839FF00D749FF00D659FF00D9927729F10 |
:105F9000B00DE11DF91F639FB00DE11DF91FBD019B |
:105FA000CF0111240895AA1BBB1B51E107C0AA1FF2 |
:105FB000BB1FA617B70710F0A61BB70B881F991FAA |
:105FC0005A95A9F780959095BC01CD01089597FB4E |
:105FD000092E07260AD077FD04D0E5DF06D0002081 |
:105FE0001AF4709561957F4F0895F6F79095819515 |
:105FF0009F4F0895A1E21A2EAA1BBB1BFD010DC0E5 |
:10600000AA1FBB1FEE1FFF1FA217B307E407F50768 |
:1060100020F0A21BB30BE40BF50B661F771F881F44 |
:10602000991F1A9469F760957095809590959B01DA |
:10603000AC01BD01CF01089597FB092E05260ED0B6 |
:1060400057FD04D0D7DF0AD0001C38F45095409596 |
:10605000309521953F4F4F4F5F4F0895F6F790953C |
:106060008095709561957F4F8F4F9F4F0895F99957 |
:10607000FECFB2BDA1BDF89A119600B40895F9996A |
:10608000FECFB2BDA1BD00BC11960FB6F894FA9A2E |
:08609000F99A0FBE0895FFCF3D |
:1060980001640A016400007D0000FF03010203049B |
:1060A80005060708090A48616C6C6F2057656C740F |
:1060B80000000000000000000000000000000000D8 |
:1060C80000000000000000000000000000000000C8 |
:1060D80000000000000000000000000000000000B8 |
:1060E80000000000000000000000000000000000A8 |
:1060F8000000000000000A014B616D65726100003C |
:106108004E6F726D616C00000000803F17B7D13888 |
:0A61180030FB103A403296020A6490 |
:00000001FF |
/branches/Chris_hallo/V0.71_Beta_HEX/readme.txt |
---|
0,0 → 1,80 |
GPS-Modifikation auf Basis der Original V0.6 by Holger Buss & Ingo Busker |
----- BETA V0.71----- |
Copyright by Christopher Hartmann und Daniel Schmitz. |
-Disclaimer- |
Wir übernehmen keinerlei Garantie für die Funktionstüchtigkeit dieser Software |
jegliche Änderung geschehen auf Eigene Gefahr |
für eventuelle Schäden übernehmen wir keinerlei Haftung |
!!!!!!!!!!!!!! WICHTIG !!!!!!!!!!!!! |
------------------------------------------------------------------------------------ |
DER HALBAUTONOME SCHWEBEFLUG MUSS VOM PILOTEN STEHTS ÜBERWACHT WERDEN! |
DER PILOT MUSS IN JEDER SITUATION IN DER LAGE SEIN, BEI FEHLFUNKTIONEN EINZUGREIFEN! |
------------------------------------------------------------------------------------ |
Parametrierung über Koptertool (getestet für MK mit 54cm Achsstand): |
--------------------------------------------------------------------- |
- ggf. aktivieren des Höhenreglers über Schalter |
- aktivieren der Option GPS |
- anpassen des ACC Wertes unter dem Reiter "Gyro" von 26 auf 50 |
- Userpara1. -> 5 |
- Userpara2. -> 23 |
- Userpara3. -> zwischen 42 und 46 |
ACHTUNG: |
Kompass arbeitet noch nicht richtig. Daher Kompass im MK Tool NICHT aktivieren! |
Der MK muss von Hand nach Norden ausgerichtet bleiben! |
___________________________________________________________________________________________________________________________________ |
Features: |
-Auslesen der GPS Daten im UBX Protokoll (modifizierte Version, - Original von Pitschu (Peter Schulten) ) |
- integrierter PD Regler - Parametrierung des P-, D-Anteils und Skalierungsanteils |
User Parameter 1: P-Regler, 2:D-Regler; 3: Skalierung |
- Rotationsmatrix für Kompass (funktioniert noch nicht richtig) |
- Postiton Hold (Aktivierung über Poti 1 ( 0=Aus , >0 =aktiviert) |
- kurzes Piepsen bestätigt Aktivierung des PositionHold (PH) |
- rote LED der Flight-Ctrl für Statusanzeige: (blinkend : GPS Aktiv) |
- Aktivierung des Postiton-Hold ohne Empfang von GPS unterbunden |
- Einbinden des GPS-Empfängers bitte Erklärung von PITSCHU aus XUFO-Forum entnehmen (http://forum.xufo.net/bb/viewtopic.php?t=5980) |
----- BAUDRATE jedoch einstellen auf 57600 ------ |
----- unter Messages muss statt: |
-NAV-POSLLH |
-NAV-POSUTM |
-NAV-VELNED |
für für Target1 folgendes aktiviert werden (siehe Pitschu Anleitung): |
-NAV-POSECEF |
-NAV-VELECEF |
____________________________________________________________________________________________________________________________________ |
in Planung: (TWI: teilweise Integriert, siehe Quelltext -- UNGETESTET -- ) |
- Kompass (TWI) |
-"Home Postition" (TWI) |
- Waypoint fliegen |
- Auslagerung auf externen Prozessor |
. |
/branches/Chris_hallo/V0.74_Beta_HEX/Flight-Ctrl_MEGA644_GPSV0_74.hex |
---|
0,0 → 1,1515 |
:100000000C94EC010C9409020C9409020C94090262 |
:100010000C9409020C9409020C9409020C94090234 |
:100020000C9409020C94260C0C9409020C940902FD |
:100030000C94F7140C9409020C9409020C94090214 |
:100040000C9409020C9409020C947D0B0C94090287 |
:100050000C945D040C9409020C94A5030C94090201 |
:100060000C94120D0C9409020C9444140C94090283 |
:100070000829573F9F2D49CBA5310F76C73493F2FE |
:100080007E37D00D013AB60B613D2AAAAB3F000086 |
:10009000003F800000000A0A0D004E657574726111 |
:1000A0006C0048656164696E67486F6C64000A0D96 |
:1000B000537465756572756E673A20004F4B0A0D73 |
:1000C000000A0D4162676C65696368204C7566744F |
:1000D000647275636B73656E736F722E2E000A0DFA |
:1000E00042656E75747A6520506172616D657465E4 |
:1000F000727361747A202564000A0D496E69742E4A |
:1001000020454550524F4D3A2047656E65726965EE |
:1001100072652044656661756C742D506172616D05 |
:10012000657465722E2E2E000A0D3D3D3D3D3D3D10 |
:100130003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DEF |
:100140003D3D3D3D3D3D3D3D000A0D466C696768C6 |
:1001500074436F6E74726F6C205625642E25642074 |
:10016000002E0052616E67653A2533692D2533698B |
:10017000005374656C6C756E673A202533690053C3 |
:100180006574706F696E7420202533690053657241 |
:10019000766F202000506F7469343A20202533692F |
:1001A00000506F7469333A202025336900506F7412 |
:1001B00069323A202025336900506F7469313A2042 |
:1001C000202533690053746172743A202020202066 |
:1001D000253569004D657373776572743A20202563 |
:1001E0003569005269636874756E673A2020253559 |
:1001F00069004B6F6D7061737320202020202020D8 |
:1002000000456D70662E506567656C3A253569004E |
:100210005370616E6E756E673A202025356900480F |
:100220006F63682025346920282533692900526FBF |
:100230006C6C20253469202825336929004E6963B8 |
:100240006B20253469202825336929004143432048 |
:100250002D2053656E736F720047696572202534D7 |
:100260006920282533692900526F6C6C2025346978 |
:10027000202825336929004E69636B2025346920C5 |
:100280002825336929004779726F202D2053656E28 |
:10029000736F720050333A25346920204B616EE44D |
:1002A0006C65200050313A253469202050323A25BF |
:1002B0003469200047733A253469202047693A257C |
:1002C000346920004E693A2534692020526F3A255E |
:1002D000346920004B373A25346920204B616EE4A5 |
:1002E0006C6520004B353A25346920204B363A2581 |
:1002F000346920004B333A25346920204B343A25A9 |
:10030000346920004B313A25346920204B323A259C |
:10031000346920004B6F6D706173733A2020202583 |
:10032000356900526F6C6C3A202020202020253542 |
:1003300069004E69636B3A20202020202025356912 |
:1003400000616B742E204C6167650048F668656E2D |
:10035000726567656C756E67004B65696E65200038 |
:100360004F66662020202020203A20253569004C49 |
:10037000756674647275636B3A2025356900536F36 |
:100380006C6C486F6568653A2025356900486F6573 |
:1003900068653A202020202025356900286329201F |
:1003A000486F6C676572204275737300536574748F |
:1003B000696E673A20256420005625642E25640066 |
:1003C0002B2B204D696B726F4B6F70746572202BF5 |
:1003D0002B005B25695D000011241FBECFEFD0E12B |
:1003E000DEBFCDBF11E0A0E0B1E0E0E1FEE502C07C |
:1003F00005900D92AE38B107D9F716E0AEE8B1E03E |
:1004000001C01D92A535B107E1F70E9440020C948E |
:10041000072F0C940000A2E0B0E00E94F32E802D84 |
:1004200099270895FB01282F863008F025E0842FB6 |
:100430009927429FD0011124AC59BF4F019724F056 |
:1004400001900E94FB2EFACFA2E0B0E0022E0E94A3 |
:10045000FB2E0895CF93DF93FB01C42FDD27863059 |
:1004600008F085E0489FD0011124AC59BF4F219777 |
:1004700024F00E94F32E0192FACFDF91CF910895DC |
:100480000F931F93CF93DF9391E097B98FEF88B9C4 |
:100490008BE184B995B98EE38AB9579A87EF8BB906 |
:1004A00084B7877F84BF80916000886180936000FB |
:1004B0001092600080ED97E09093AC018093AB01C7 |
:1004C00010923702109236021092DE051092DD056E |
:1004D00010923502109234021092330210923202BE |
:1004E00028980E94D30C0E9445070E94E2140E94A3 |
:1004F0000C0D0E942A14789410928A048CE3809345 |
:100500008B0484E080938C048CE390E09F938F9322 |
:100510001F921F9289E491E09F938F931F920E94F4 |
:10052000DB0888E291E09F938F931F920E94DB0883 |
:10053000299AA1E0B0E00E94F32E802D2DB73EB79E |
:10054000265F3F4F0FB6F8943EBF0FBE2DBF8B33D3 |
:10055000A9F189EF90E09F938F931F920E94DB088F |
:100560000E94AD1C4AE365E076E080E00E94120242 |
:1005700001E00F900F900F90023049F40E94401C50 |
:100580004AE365E076E082E00E94120203E04AE37B |
:1005900065E076E0802F0E9412020F5F063060F364 |
:1005A00081E022E030E0D901082E0E94FB2E8BE38F |
:1005B00021503040D901082E0E94FB2E02E010E0AD |
:1005C000D8010E94F32E802D4AE365E076E00E9478 |
:1005D0002A02D8010E94F32E802D99279F938F9392 |
:1005E0008EED90E09F938F931F920E94DB08809185 |
:1005F0000D060F900F900F900F900F9080FF20C06E |
:1006000081EC90E09F938F931F920E94DB0884EC13 |
:1006100099E00E94110CEC010E9436100F900F908F |
:100620000F90CE010E941A0C8823D9F38CEB90E036 |
:100630009F938F931F920E94DB080F900F900F9053 |
:100640000E94651D289880ED97E09093AC018093FF |
:10065000AB0188EE93E0909385048093840485E554 |
:1006600080937F048EEA90E09F938F931F920E9465 |
:10067000DB0880910D060F900F900F9082FF03C052 |
:1006800082EA90E002C08AE990E09F938F931F92E4 |
:100690000E94DB080F900F900F9086E990E09F93E7 |
:1006A0008F931F920E94DB080E945D100F900F90A5 |
:1006B0000F908091A801882379F11092A8010E94DF |
:1006C000761E0E941E1D289880910101882319F032 |
:1006D00081508093010180913102882329F080911B |
:1006E0003102815080933102209104013091050143 |
:1006F00080911D0699272817390734F480ED97E07B |
:100700009093AC018093AB018091D601882319F4BA |
:100710000E942A1401C028980E9462070E94D007F4 |
:1007200080E090E00E941A0C882319F28091380230 |
:10073000882329F088B190E1892788B901C04498BD |
:1007400084EF91E00E94110CB4CF1F920F920FB66C |
:100750000F9211248F939F93EF93FF938091000149 |
:100760008823E1F48091A3019091A40101969093D4 |
:10077000A4018093A301FC01E15CFC4FE081ED301A |
:1007800019F08639910539F41092A4011092A30151 |
:1007900081E080930001E093C60004C01092A401A0 |
:1007A0001092A301FF91EF919F918F910F900FBE37 |
:1007B0000F901F90189580917E04813031F48091C4 |
:1007C00072048093950510927E04809142058130D9 |
:1007D00091F58091380590913905A0913A05B09135 |
:1007E0003B0580937D0590937E05A0937F05B09394 |
:1007F00080058091340590913505A0913605B09122 |
:1008000037058093810590938205A0938305B0936B |
:10081000840580913C0590913D05A0913E05B091E5 |
:100820003F058093850590938605A0938705B09337 |
:100830008805109242058091BD05813091F5809127 |
:100840009D0590919E05A0919F05B091A005809374 |
:10085000890590938A05A0938B05B0938C058091B0 |
:10086000A1059091A205A091A305B091A405809344 |
:100870008D0590938E05A0938F05B0939005809180 |
:10088000A5059091A605A091A705B091A805809314 |
:10089000910590939205A0939305B09394051092BF |
:1008A000BD0580919505882339F0289A81E090E074 |
:1008B000909307038093060308951F920F920FB63B |
:1008C0000F9211242F933F934F935F936F937F93D6 |
:1008D0008F939F93AF93BF93CF93DF93EF93FF9348 |
:1008E0008091C600809392018091C0004091920156 |
:1008F000887109F003C18091A501843009F488C092 |
:10090000853050F48130D1F0813098F0823001F19F |
:10091000833009F0F0C021C0863009F4A9C08630C8 |
:1009200008F48AC0873009F4D4C0883009F0E3C0E5 |
:10093000D6C0453B09F0E6C081E003C0423621F451 |
:1009400082E08093A501DEC0453B09F4DBC0D3C043 |
:10095000413009F0D0C083E0F4CF409397054F5F5A |
:1009600040933E0380913E038F5F80936D0484E04B |
:100970008093A501809197058830C1F0823151F1B3 |
:100980008330F1F58EE694E0909399048093980477 |
:100990002FE835E030933C0320933B03409690933F |
:1009A00044058093430580917E0427C080E395E051 |
:1009B000909399048093980429E936E030933C039E |
:1009C00020933B0342969093440580934305809186 |
:1009D000420513C089E995E09093990480939804A7 |
:1009E00022EF3AE030933C0320933B0384969093AC |
:1009F0004405809343058091BD058093980582C08E |
:100A000081E08093980510924405109243057AC0C6 |
:100A1000842F9927909346058093450580913E0346 |
:100A2000840F80933E0380916D0490913E03890F63 |
:100A300080936D0485E085CF209145053091460572 |
:100A4000842F9927982F8827280F391F3093460520 |
:100A50002093450580913E03840F80933E0380914F |
:100A60006D0490913E03890F80936D0486E069CFF9 |
:100A700080913E03840F80933E0380916D0490919A |
:100A80003E03890F80936D0480919805882381F43B |
:100A9000E0919804F091990480913B0390913C037C |
:100AA000E817F90728F44193F0939904E093980428 |
:100AB0008091450590914605019790934605809356 |
:100AC00045058091450590914605892BD9F487E02D |
:100AD00038CF80913E03481771F488E032CF80917F |
:100AE0006D04481741F4E0914305F09144053097B7 |
:100AF00011F081E080831092A50104C01092A5013D |
:100B00000E94DB030E94DB0340919E01463910F0F6 |
:100B100010929D01809192018D3009F05CC080910E |
:100B20009D01823009F057C010929D01A42FBB2770 |
:100B3000FD01E856FB4F3081ED01C756DB4F2881A0 |
:100B40008091A1019091A201831B9109821B9109BF |
:100B50009F709093A2018093A1019C0196E036952D |
:100B600027959A95E1F7235C2093A001982F9F7316 |
:100B7000935C90939F018081281729F488819817AE |
:100B800011F491E006C0809195018F5F80939501EB |
:100B900090E080919301882309F064C0992309F4BF |
:100BA00061C081E08093930140939601A656BB4FAC |
:100BB0008DE08C9380919C04823509F053C088E1CC |
:100BC00090E02CE00FB6F894A895809360000FBEDB |
:100BD0002093600047C080919D018130D9F0813021 |
:100BE00018F08230E9F530C080919201833239F4F7 |
:100BF00080919301882319F481E080939D01809175 |
:100C0000920180939A0481E080939E0180919201E9 |
:100C1000992715C082E080939D01E42FFF278091E2 |
:100C20009201E656FB4F80834F5F40939E012091D7 |
:100C300092018091A1019091A201820F911D909348 |
:100C4000A2018093A1010EC0E42FFF2780919201A1 |
:100C5000E656FB4F8083463938F310929D01E7CF6B |
:100C600010929D01FF91EF91DF91CF91BF91AF91D4 |
:100C70009F918F917F916F915F914F913F912F91B4 |
:100C80000F900FBE0F901F901895DC0120E030E010 |
:100C900040E050E0EFE3F3E005C08191280F311D03 |
:100CA0004F5F5F4F4A175B07C1F73F70C90166E0AE |
:100CB000969587956A95E1F7835CFD01E15CFC4FB1 |
:100CC000808311962F73235CFD01E15CFC4F208330 |
:100CD000A05CBC4F8DE08C931092000180913F038B |
:100CE0008093C6000895EF92FF920F931F93CF93C6 |
:100CF000DF937A01722F93E290933F036093400356 |
:100D00008093410303E010E060E0A2E4B3E046C05A |
:100D1000F701E60FF11D90816F5F715019F4E0E06B |
:100D200040E00FC0F701E60FF11D40816F5F715089 |
:100D300011F4E0E006C0F701E60FF11DE0816F5FFE |
:100D40007150892F86958695835C8C935527892FC2 |
:100D500099278370907024E0880F991F2A95E1F7F6 |
:100D60009A0194E0369527959A95E1F7822B835C5A |
:100D7000ED0189834F705070440F551F440F551F6C |
:100D80008E2F8295869586958370842B835C8A83CB |
:100D9000EF73E35CEB830C5F1F4F1496772309F02E |
:100DA000B7CFC8010E944506DF91CF911F910F91E7 |
:100DB000FF90EF9008951F93CF93DF93EC0170E0C5 |
:100DC000A22FBB27129748C0E42FFF27E656FB4F00 |
:100DD00030814F5FE42FFF27E656FB4F50814F5F76 |
:100DE000E42FFF27E656FB4F10814F5FE42FFF27CC |
:100DF000E656FB4F20814F5F842F9927A817B9072C |
:100E000074F15D53FE01E70FF11D3D53330F330FB6 |
:100E1000852F82958F70382B3083613001F1912FAF |
:100E20009D537F5FFE01E70FF11D71505295507F7A |
:100E3000892F86958695582B508363506F3F79F0A4 |
:100E40007E5FFE01E70FF11D9295990F990F907C3F |
:100E50002D53922B90837F5F662309F0B5CFDF91EE |
:100E6000CF911F9108951F93182F8A3019F48DE0A8 |
:100E70000E9433078091C00085FFFCCF1093C6000D |
:100E800080E090E01F9108950895E1ECF0E088E1A2 |
:100E90008083A0ECB0E08C9182608C93808180682C |
:100EA00080838081806480838AE28093C40088ECA0 |
:100EB00090E00E94110C90936C0480936B0410924C |
:100EC000A501089580910001882309F468C08091EC |
:100ED0008E01882371F080910001882351F02BE06E |
:100EE0004FE754E060913D0387E40E94730610923F |
:100EF0008E0180916B0490916C040E941A0C8823DF |
:100F000021F4809190018823B1F080910001882321 |
:100F100091F022E34BE455E060913D0384E40E94AC |
:100F20007306109290018AEF90E00E94110C90934A |
:100F30006C0480936B0480918F018823F1F0809181 |
:100F400000018823D1F00E94661010928F018091D9 |
:100F50009C018F5F80939C01843011F410929C015E |
:100F600080919C0144E1849FA00111244A5E5E4F60 |
:100F700024E160E0805D0E947306809191018823E6 |
:100F800071F080910001882351F02AE04AE854E092 |
:100F900060913D0386E50E947306109291010895C9 |
:100FA0001F93CF93DF93CDB7DEB722970FB6F89498 |
:100FB000DEBF0FBECDBF80919301882309F498C096 |
:100FC0008FEF8093010180919C04813760F48C360F |
:100FD00008F06FC0873609F440C08836F9F08336D0 |
:100FE00009F084C008C0843759F1863791F1813700 |
:100FF00009F07CC036C02091960143E06BE08FE79A |
:1010000094E00E94DB068091CD0190918104892BB0 |
:101010008093CD0181E08093900168C0209196017A |
:1010200043E062E0CE0101960E94DB068091CD0193 |
:101030009981892B8093CD0181E080938F0156C0E7 |
:101040002091960143E064E088E991E00E94DB068C |
:101050004DC081E08093910149C081E080938E0171 |
:1010600045C02091960143E062E0CE0101960E94C6 |
:10107000DB0689818F3F89F0863010F085E0898317 |
:101080004AE365E076E089810E942A0289812AE3A9 |
:1010900045E056E060913D0308C010913D030E9479 |
:1010A0000B022AE345E056E0612F855B0E94730640 |
:1010B0001DC02091960143E06AE385E096E00E941E |
:1010C000DB0680919C044AE365E076E08B560E9443 |
:1010D000120280919C048B56A2E0B0E0082E0E9480 |
:1010E000FB2E0E940B0299270E94611E1092930111 |
:1010F00022960FB6F894DEBF0FBECDBFDF91CF9121 |
:101100001F910895982F8091BE05813069F48091D8 |
:10111000CC01E82FFF27EA5EFE4F90838F5F80931C |
:10112000CC0121E030E005C0892F0E943307282F31 |
:101130003327C90108951F93182F04C080E30E942C |
:10114000820811501116D4F31F9108951F93182F80 |
:1011500004C080E20E94820811501116D4F31F913E |
:1011600008950F931F93CF93DF938C01EB0108C079 |
:10117000F8010F5F1F4FE4918E2F0E948208219784 |
:101180002097B1F7DF91CF911F910F9108950F93A1 |
:101190001F93CF93DF938C01EB0106C0F80181917F |
:1011A0008F010E94820821972097C1F7DF91CF918C |
:1011B0001F910F9108952F923F924F925F926F92DD |
:1011C0007F928F929F92AF92BF92CF92DF92EF92D7 |
:1011D000FF920F931F93CF93DF93CDB7DEB7E397C3 |
:1011E0000FB6F894DEBF0FBECDBF29968FAD2997FD |
:1011F0008093BE05CE01855B9F4F9D838C832B968C |
:101200008EAD9FAD2B979FA78EA72224332421015B |
:1012100002C0130124010EA51FA502C00F5F1F4FBE |
:10122000F801F490FF2019F0F5E2FF16B9F7B801C4 |
:101230008EA59FA5681B790B11F00E94B108FF20B5 |
:1012400009F442C20F5F1F4F1FA70EA71982AC817E |
:10125000BD811BAA1AAA9FEF99ABEEA5FFA5CF01EE |
:1012600001969FA78EA7B49095E7B91621F08B2D14 |
:101270008062883789F4EBA9E0FF07C02D903D908C |
:101280004D905C901397149607C08D919C91119787 |
:101290001C01442455241296F0E2BF1621F48981E2 |
:1012A0008823D9F685C083E2B81609F483C09AE290 |
:1012B000B91621F0EDE2BE1669F408C0FD011296E0 |
:1012C000E081EAABE7FFC9CFE195EAABFBA9F061AA |
:1012D000FF7D72C08BE2B81609F46AC09EE2B916AF |
:1012E000B1F52EA53FA52F5F3F4FEEA5FFA5849139 |
:1012F0008A3221F0B82E20E030E01BC0FD011296AA |
:101300004081518157FF02C04FEF5FEF49AB3FA7CC |
:101310002EA7A3CFC90103E0880F991F0A95E1F713 |
:10132000220F331F280F391F2B0D311D2053304042 |
:10133000B49031968B2D80538A3060F3FFA7EEA7CF |
:10134000A90137FF02C04FEF5FEF49AB8DCFF0E34C |
:10135000BF1631F48BA984FD80CF80628BAB7DCF2B |
:101360008B2D81538930E8F420E030E0C901F3E0AF |
:10137000880F991FFA95E1F7220F331F280F391FA5 |
:101380002B0D311D20533040EEA5FFA5CF01019656 |
:101390009FA78EA7B4908B2D80538A3038F32AAB49 |
:1013A00063CF98E6B91651F4EBA9E460EBAB55CFE7 |
:1013B000B98253CFFBA9F860FBAB4FCF8CE6B816D0 |
:1013C00021F49BA991609BAB48CFBD83AC83E3E63E |
:1013D000BE1639F41296BD83AC8312978C918E831E |
:1013E00018C1F4E4BF1639F084E6B81639F099E66E |
:1013F000B91659F503C0EBA9E160EBABFBA9F0FF0F |
:1014000008C01496BD83AC835E904E903E902E90A3 |
:101410000AC01296BD83AC839E918E911C01442418 |
:1014200037FC4094542C57FC03C08AE088AB92C030 |
:101430005094409430942094211C311C411C511C28 |
:101440008DE289839AE098AB85C0EFE4BE1629F05F |
:10145000FFE6BF1639F488E061C09BA991609BABA1 |
:10146000E8E056C0F0E7BF1671F41296BD83AC8376 |
:101470009E918E911C01442455248BA980648BABD2 |
:1014800078E7B72E5EC0E3E7BE16D9F51296BD83A6 |
:10149000AC83DE90CE90C114D10489F488E28E83AF |
:1014A0008EE68F8385E788878CE689878A8789E23D |
:1014B0008B871C8666E0C62ED12CCC0EDD1EF9A9CA |
:1014C000F7FD13C04F2F552747FD509560E070E0A2 |
:1014D000C6010E942C2C009711F419A90DC08C197B |
:1014E00019A981174CF4182F07C0F60101900020AC |
:1014F000E9F731971E2F1C1919824201310140E092 |
:1015000094C085E5B81631F095E7B91649F4EAE0DC |
:10151000E8AB1FC0FBA9F160FBAB8AE088AB19C048 |
:1015200098E5B91621F0E8E7BE1609F06EC0FBA9F0 |
:10153000F3FD02C080E1F2CF2114310441045104D3 |
:1015400019F490E198AB05C0EBA9E064EBABF0E1D6 |
:10155000F8AB198289A987FD03C09BA99F7D9BAB2E |
:10156000211431044104510461F4E9A9EE2349F442 |
:101570006624772443015EE2C52ED12CCC0EDD1EFD |
:101580003EC04EE2C42ED12CCC0EDD1EF8A9EF2EAB |
:10159000FF2400271127C201B101A80197010E9471 |
:1015A000B62E6A3020F430E3A32EA60E08C027E53D |
:1015B000A22EA60E88E5B81611F49FEDA922F60119 |
:1015C000A2926F01C201B101A80197010E94B62E3B |
:1015D00039014A012E143F044006510618F0190142 |
:1015E0002A01D9CFF8A9F83051F48BA983FF07C09D |
:1015F00090E3A91621F080E3F60182936F01CE01FA |
:101600008C19182F125D49A910C0BB2009F45CC0C9 |
:10161000BE8219824201310100E096E0C92ED12C30 |
:10162000CC0EDD1E11E021E005C0212F042F011B8F |
:1016300007FD00E08981882319F0812F8F5F07C0A3 |
:101640009BA996FD02C0812F02C0822F8E5FA82E1B |
:10165000A00EEBA9EE2EFF2480E3482E512C4E2045 |
:101660005F204114510421F48AA98A190E94A60816 |
:101670008981882329F061E070E0CE01019609C0DC |
:10168000E6FE09C080E38A83BB8262E070E0CE019F |
:1016900002960E94C708F0E24F16510421F48AA96D |
:1016A0008A190E949B08802F0E949B08612F772730 |
:1016B00067FD7095C6010E94C708E4FEAACD8AA9FD |
:1016C0008A190E94A608A5CDE3960FB6F894DEBF4E |
:1016D0000FBECDBFDF91CF911F910F91FF90EF9083 |
:1016E000DF90CF90BF90AF909F908F907F906F9042 |
:1016F0005F904F903F902F9008951F920F920FB6DA |
:101700000F9211242F933F935F936F937F938F9347 |
:101710009F93AF93BF938091AF0181508093AF01AE |
:101720008F3F01F589E08093AF01809103018F5FC6 |
:10173000817080930301882319F481E08093A801CC |
:101740008091A6019091A70101969093A7018093A3 |
:10175000A6018091D601882329F08091D60181507D |
:101760008093D6018091AB019091AC01029758F023 |
:101770008091AB019091AC0101979093AC01809363 |
:10178000AB015A9A01C05A9880910D0683FF3BC065 |
:10179000349B0AC08091A9019091AA01019690936F |
:1017A000AA018093A9012FC08091A9019091AA015B |
:1017B000892B79F08091A9019091AA01805A9F40CC |
:1017C00040F48091A9019091AA0190932202809304 |
:1017D00021028091210290912202209123023091D6 |
:1017E0002402821B930B845E9D4F68E671E00E9489 |
:1017F000A32E845B90409093260280932502109242 |
:10180000AA011092A901BF91AF919F918F917F91F1 |
:101810006F915F913F912F910F900FBE0F901F908E |
:1018200018952091A6013091A7012F5F3F4F820F9D |
:10183000931F08952091A6013091A701821B930B5D |
:10184000892F992786958074992708951F920F9262 |
:101850000FB60F921124EF92FF920F931F932F93C5 |
:101860003F934F935F936F937F938F939F93AF9328 |
:10187000BF93CF93DF93EF93FF9380910201815049 |
:10188000809302018F3F09F073C083E88093B0001A |
:1018900080918901C82FDD27D093AE01C093AD019F |
:1018A00080912B06E090270680FF1EC06091F10119 |
:1018B0007091F2018091F3019091F401FF240027CF |
:1018C000112720E830E040E050E00E94D82EC80107 |
:1018D000B7010E94702E20E032E040E050E00E940C |
:1018E000D82EC20FD31F1DC06091F1017091F2017B |
:1018F0008091F3019091F401FF240027112720E843 |
:1019000030E040E050E00E94D82EC801B7010E94AC |
:10191000702E20E032E040E050E00E94D82EC21B42 |
:10192000D30BD093AE01C093AD012091AD013091A6 |
:10193000AE018091280699272817390734F0809145 |
:10194000290699278217930724F49093AE01809378 |
:10195000AD018091AD019091AE019093720580939D |
:1019600071058093B30080912A068093020104C020 |
:1019700083E08093B0005F98FF91EF91DF91CF916A |
:10198000BF91AF919F918F917F916F915F914F9197 |
:101990003F912F911F910F91FF90EF900F900FBEED |
:1019A0000F901F9018958091A6019091A7010B961A |
:1019B0009093B1018093B00182E085BD83EA84BD3C |
:1019C00017BC88E788BD96E096BD83EC8093B00095 |
:1019D0009093B100E0E7F0E0808182608083EEE6E2 |
:1019E000F0E08081816080838AE08093B300109270 |
:1019F000B20008952091A6013091A7012F5F3F4FBB |
:101A0000280F391F8091A6019091A701A901481BB9 |
:101A1000590B57FFF7CF089510927C008FEE8093FB |
:101A20007A0008951F920F920FB60F921124EF9231 |
:101A3000FF920F931F932F933F934F935F936F9357 |
:101A40007F938F939F93AF93BF93CF93DF93EF9346 |
:101A5000FF9310927A004091C8014F5F4093C801F4 |
:101A60004150433009F41CC1443038F4413009F48A |
:101A700063C0423008F0B9C00DC0453009F450C110 |
:101A8000453008F42AC1463009F46FC1473009F0E7 |
:101A9000CBC252C22091DB013091DC0180917800F1 |
:101AA00090917900281B390B8091B6019091B70174 |
:101AB000820F931F9093B7018093B6018091C0016C |
:101AC0008F5F8093C0018091150290911602A091C2 |
:101AD0001702B0911802442737FD4095542F820F0A |
:101AE000931FA41FB51F8093150290931602A09315 |
:101AF0001702B09318028091190290911A02A091D6 |
:101B00001B02B0911C02820F931FA41FB51F80936C |
:101B1000190290931A02A0931B02B0931C0281E059 |
:101B20008093C9018091C6019091C701019690935D |
:101B3000C7018093C6017CC26091780070917900E2 |
:101B40008091D9019091DA01681B790B80910D0287 |
:101B500090910E02A0910F02B09110029B014427B8 |
:101B600037FD4095542F820F931FA41FB51F8093FC |
:101B70000D0290930E02A0930F02B0931002809179 |
:101B8000110290911202A0911302B0911402820FDF |
:101B9000931FA41FB51F8093110290931202A0936C |
:101BA0001302B093140280917800909179000A9703 |
:101BB00010F464E47DEF8091780090917900895E63 |
:101BC000934010F06CEB72E08091B4019091B501FC |
:101BD000860F971F9093B5018093B4018091BF0148 |
:101BE0008F5F8093BF0182E058C060917800709150 |
:101BF00079008091D7019091D801681B790B809171 |
:101C0000050290910602A0910702B09108029B0183 |
:101C1000442737FD4095542F820F931FA41FB51FF3 |
:101C20008093050290930602A0930702B0930802E6 |
:101C30008091090290910A02A0910B02B0910C02CE |
:101C4000820F931FA41FB51F8093090290930A026D |
:101C5000A0930B02B0930C028091780090917900D0 |
:101C60000A9710F464E47DEF8091780090917900F8 |
:101C7000895E934010F06CEB72E08091B20190911C |
:101C8000B301860F971F9093B3018093B2018091A7 |
:101C9000BE018F5F8093BE0184E08093C901C8C1FB |
:101CA0004091040150910501809178009091790054 |
:101CB0009A01220F331F240F351F63E070E00E944A |
:101CC0008F2E260F371F36952795369527953093FB |
:101CD00005012093040186E0E0CF8091DF0190911F |
:101CE000E0012091780030917900821B930B909352 |
:101CF000C0058093BF058091B8019091B9012091F2 |
:101D0000BF053091C005820F931F9093B901809356 |
:101D1000B8018091C2018F5F8093C20187E0BDCF7F |
:101D200080917800909179002091DD013091DE0161 |
:101D3000821B930B9093C0058093BF058091BA01DD |
:101D40009091BB012091BF053091C005820F931F78 |
:101D50009093BB018093BA018091C1018F5F809302 |
:101D6000C1014093C90186E0E4C0609178007091A0 |
:101D70007900E090EB01F090EC010091ED01109101 |
:101D8000EE01882777FD8095982F0E94E52CA80109 |
:101D900097010E94392C0E94C82C7093BD0160935A |
:101DA000BC012091BC013091BD01E091BF05F091D3 |
:101DB000C0058091CA059091CB0597FF03C090950F |
:101DC00081959F4F64E070E00E94A32EEB01CF014C |
:101DD000F7FF03C0909581959F4F64E070E00E94EB |
:101DE000A32E260F371F2C0F3D1F3093BD012093CC |
:101DF000BC018091BC019091BD01029704F16091FA |
:101E0000EB017091EC018091ED019091EE0120E0E9 |
:101E100030E048E454E40E941B2D88230CF03CC0C1 |
:101E20006091EB017091EC018091ED019091EE01D8 |
:101E30002AE037ED43EA5CE30E943A2C25C080910A |
:101E4000BC019091BD018F5F9F4F34F56091EB0114 |
:101E50007091EC018091ED019091EE0120E030E075 |
:101E600046E154E40E941E2D1816B4F46091EB0173 |
:101E70007091EC018091ED019091EE012AE037ED37 |
:101E800043EA5CE30E94392C6093EB017093EC0110 |
:101E90008093ED019093EE0181E08093C3018091E6 |
:101EA0007800909179009093C2058093C1052091AC |
:101EB0001D0230911E0240911F025091200280911C |
:101EC000BC019091BD01AA2797FDA095BA2F280FBC |
:101ED000391F4A1F5B1F20931D0230931E0240933F |
:101EE0001F0250932002E0901D02F0901E0200910C |
:101EF0001F021091200260911D0270911E028091BC |
:101F00001F029091200220E034E040E050E00E9467 |
:101F1000D82EE21AF30A040B150BE0921D02F09280 |
:101F20001E0200931F021093200283E08093C901D8 |
:101F300087E08093C8017CC08091CF059091D00547 |
:101F40002091780030917900820F931F9093D005F3 |
:101F50008093CF058091C7058F5F8093C7058091DF |
:101F6000C705853008F460C08091780090917900B1 |
:101F700090930B0180930A011092C7058091C305CD |
:101F80009091C4052091CF053091D005821B930B11 |
:101F90002091390230913A02821B930B9093C50134 |
:101FA0008093C4016091CF057091D005E090060147 |
:101FB000F09007010091080110910901882777FD31 |
:101FC0008095982FA8019701220F331F441F551F9A |
:101FD0002E0D3F1D401F511F620F731F841F951F41 |
:101FE00024E030E040E050E00E94D82E209306012B |
:101FF0003093070140930801509309012091C305D4 |
:102000003091C4058091060190910701A0910801CB |
:10201000B0910901281B390B30933A022093390201 |
:102020001092D0051092CF051092C9011092C801EC |
:102030008091C90180937C008FEE80937A00FF919C |
:10204000EF91DF91CF91BF91AF919F918F917F9150 |
:102050006F915F914F913F912F911F910F91FF9041 |
:10206000EF900F900FBE0F901F901895CF93DF93B6 |
:10207000C0E0D0E0C7BD82E390E00E94FA0C81E6A8 |
:1020800091E09F938F931F920E94DB0880910A0139 |
:1020900090910B010F900F900F908458934020F077 |
:1020A0002196CA3FD10531F7C093CC0588EC90E06A |
:1020B0000E94FA0CDF91CF910895E6E1F1E080E211 |
:1020C000819391E0E636F907D9F70895FF920F93CF |
:1020D0001F938091CD01282F3327C9018170907003 |
:1020E000682F882391F08091CE01882311F08150D0 |
:1020F00002C0809166018093CE01E6E1F1E080E2CA |
:10210000819391E0E636F907D9F7A9014270507042 |
:1021100021FF0DC08091CE018F5F8093CE01E6E15B |
:10212000F1E080E2819391E0E636F907D9F7662382 |
:1021300021F0452B11F01092CE0181E18093CC016A |
:102140008091CE0199279F938F9382ED93E09F9387 |
:102150008F93E1E0FE2EFF920E94DB080091CE01FA |
:102160000F900F900F900F900F90053009F4D7C18A |
:10217000063090F4023009F4B8C0033030F4002384 |
:10218000F1F0013009F05BC34DC0033009F402C126 |
:10219000043009F054C34BC1083009F498C2093027 |
:1021A00038F4063009F411C2073009F048C36CC294 |
:1021B000093009F4C9C20A3009F041C303C31092BF |
:1021C000CC0180EC93E09F938F93FF920E94DB08F9 |
:1021D00084E18093CC018CE390E09F938F931F92D6 |
:1021E0001F9289EB93E09F938F93FF920E94DB08ED |
:1021F00088E28093CC010E940B0299279F938F93D2 |
:102200008CEA93E09F938F93FF920E94DB088CE30C |
:102210008093CC018CE993E09F938F93FF920E946F |
:10222000DB088EC280910D0680FF47C01092CC0162 |
:102230008091390290913A029F938F938DE893E0B9 |
:102240009F938F930F930E94DB0884E18093CC01CE |
:1022500080913B0290913C029F938F938EE793E095 |
:102260009F938F930F930E94DB0888E28093CC01A9 |
:1022700080910A0190910B019F938F938FE693E0D9 |
:102280009F938F930F930E94DB088CE38093CC0184 |
:102290008091CC0599279F938F9380E693E09F933D |
:1022A0008F930F930E94DB088DB79EB744960FB6AD |
:1022B000F8949EBF0FBE8DBFC7C284E18093CC014E |
:1022C00089E593E09F938F930F930E94DB0888E248 |
:1022D0008093CC018BE493E09F938F930F930E94A4 |
:1022E000DB088DB79EB70696E2CF1092CC0181E451 |
:1022F00093E09F938F93FF920E94DB0884E1809389 |
:10230000CC016091F1017091F2018091F301909103 |
:10231000F40120E034E040E050E00E94D82E5F93CA |
:102320004F933F932F9382E393E09F938F93FF927A |
:102330000E94DB0888E28093CC016091F9017091E2 |
:10234000FA018091FB019091FC0120E034E040E033 |
:1023500050E00E94D82E5F934F933F932F9383E2D8 |
:1023600093E09F938F93FF920E94DB088CE380930E |
:10237000CC0180912102909122029F938F9384E15E |
:1023800093E09F938F93FF920E94DB088DB79EB7D7 |
:1023900046968DCF1092CC018091DD059091DE059F |
:1023A0002091DB053091DC059F938F933F932F9312 |
:1023B00084E093E09F938F93FF920E94DB0884E177 |
:1023C0008093CC018091E1059091E2052091DF0599 |
:1023D0003091E0059F938F933F932F9384EF92E08A |
:1023E0009F938F93FF920E94DB0888E28093CC0139 |
:1023F0008091E5059091E6052091E3053091E40593 |
:102400009F938F933F932F9384EE92E09F938F93AC |
:10241000FF920E94DB088CE38093CC018091E7055A |
:102420009091E8059F938F9384ED92E06FC0109296 |
:10243000CC01E0910606FF27EE0FFF1FE752FA4F8F |
:1024400020813181E0910506FF27EE0FFF1FE75243 |
:10245000FA4F808191813F932F939F938F9384ECC8 |
:1024600092E09F938F93FF920E94DB0884E1809318 |
:10247000CC01E0910806FF27EE0FFF1FE752FA4F4D |
:1024800020813181E0910706FF27EE0FFF1FE75201 |
:10249000FA4F808191813F932F939F938F9384EB89 |
:1024A00092E09F938F93FF920E94DB0888E28093D3 |
:1024B000CC01E0910A06FF27EE0FFF1FE752FA4F0B |
:1024C00020813181E0910906FF27EE0FFF1FE752BF |
:1024D000FA4F808191813F932F939F938F9384EA4A |
:1024E00092E09F938F93FF920E94DB088CE380938E |
:1024F000CC01E0910B06FF27EE0FFF1FE752FA4FCA |
:10250000808191819F938F9384E992E09F938F9331 |
:10251000FF920E94DB088DB79EB74A96C8CE1092F4 |
:10252000CC0186E892E09F938F93FF920E94DB0894 |
:1025300084E18093CC012091D7013091D801809122 |
:10254000B2019091B3016091BE013F932F93772721 |
:102550000E94A32E7F936F9387E792E09F938F93C0 |
:10256000FF920E94DB0888E28093CC012091D90180 |
:102570003091DA018091B4019091B5016091BF0171 |
:102580003F932F9377270E94A32E7F936F9388E624 |
:1025900092E09F938F93FF920E94DB088CE38093DD |
:1025A000CC012091DB013091DC018091B60190914A |
:1025B000B7016091C0013F932F9377270E94A32E0C |
:1025C0007F936F9389E592E056C01092CC018CE422 |
:1025D00092E09F938F93FF920E94DB0884E18093A7 |
:1025E000CC012091DD013091DE018091BA01909102 |
:1025F000BB016091C1013F932F9377270E94A32EC7 |
:102600007F936F938DE392E09F938F93FF920E944D |
:10261000DB0888E28093CC012091DF013091E0015A |
:102620008091B8019091B9016091C2013F932F93BD |
:1026300077270E94A32E7F936F938EE292E09F9361 |
:102640008F93FF920E94DB088CE38093CC01609112 |
:10265000EB017091EC018091ED019091EE01009100 |
:10266000C1051091C2050E94C82C7F936F931F93E0 |
:102670000F938FE192E09F938F93FF920E94DB086C |
:102680008DB79EB7489613CE84E18093CC0180919C |
:102690000401909105019F938F9380E192E09F93B5 |
:1026A0008F93FF920E94DB0888E28093CC01809197 |
:1026B000310299279F938F9381E092E09F938F93AC |
:1026C000FF920E94DB088DB79EB70A96F0CD10925C |
:1026D000CC0182EF91E09F938F93FF920E94DB08E1 |
:1026E00084E18093CC0180912502909126029F93F2 |
:1026F0008F9383EE91E09F938F93FF920E94DB086C |
:1027000088E28093CC0180912102909122029F93D4 |
:102710008F9384ED91E09F938F93FF920E94DB084B |
:102720008CE38093CC0180912302909124029F93AB |
:102730008F9385EC91E09F938F93FF920E94DB082B |
:102740008DB79EB74296B3CD1092CC0180912902ED |
:1027500090912A029F938F9389EB91E09F938F939F |
:10276000FF920E94DB0884E18093CC0180912B02D0 |
:1027700090912C029F938F938DEA91E09F938F937A |
:10278000FF920E94DB0888E28093CC0180912D02A9 |
:1027900090912E029F938F9381EA91E09F938F9364 |
:1027A000FF920E94DB088CE38093CC0180912F0282 |
:1027B000909130029F938F9385E991E09F938F933F |
:1027C000FF9270CD1092CC018DE891E09F938F9392 |
:1027D000FF920E94DB0884E18093CC018091890103 |
:1027E00099279F938F938FE791E09F938F93FF9209 |
:1027F0000E94DB0888E28093CC018091AD0190912A |
:10280000AE019F938F9381E791E09F938F93FF9207 |
:102810000E94DB088CE38093CC01809129069927E4 |
:102820009F938F938091280699279F938F9383E698 |
:1028300091E09F938F93FF920E94DB0835CD01506A |
:10284000009366011092CE011092CD011F910F915D |
:10285000FF9008951092B9008AE28093B80008951D |
:1028600085EA8093BC0080E090E0089584E980933D |
:10287000BC0008951092B9008093BB0085E8809356 |
:10288000BC0080E090E008951F920F920FB60F9267 |
:1028900011248F939F93EF93FF938091CF018F5FCC |
:1028A0008093CF018150833009F442C0843028F4F2 |
:1028B0008130A1F0823070F50CC0853009F448C039 |
:1028C0008530D8F1863009F44BC0873009F071C0EB |
:1028D0005BC08091D001880F8E5A14C08091D001C6 |
:1028E0008F5F8093D0018150813009F444C08130E2 |
:1028F00038F0823009F442C0833009F05AC041C038 |
:102900008091EC021092B9008093BB0085E880931F |
:10291000BC004FC084E98093BC008091D00184301A |
:1029200018F41092CF0102C01092D00185EAEFCFC7 |
:102930008091D101880F8D5AE5CF8091D1018130EE |
:10294000D1F08130E8F28230C9F0833091F519C0BE |
:102950008091BB00E091D101FF27EF52FA4F8083B5 |
:102960008091D101813039F0813050F2823031F0E4 |
:102970008330F9F406C08091ED02C4CF8091080342 |
:10298000C1CF80912003BECF8091D1019091BB0037 |
:10299000E82FFF27EF52FA4F94838F5F8093D10186 |
:1029A000843010F01092D10184E98093BC00109221 |
:1029B000CF01FF91EF919F918F910F900FBE0F90DC |
:1029C0001F90189583EC80938100EFE6F0E0808102 |
:1029D000806280831092DC011092DB011092DA0198 |
:1029E0001092D9011092D8011092D70108951F9228 |
:1029F0000F920FB60F9211240F931F932F933F93B3 |
:102A00004F935F936F937F938F939F93AF93BF93F6 |
:102A1000CF93DF93EF93FF9320918600309187004F |
:102A20008091D4019091D501281B390B80918600AB |
:102A3000909187009093D5018093D401C9018D5D59 |
:102A400095408356994148F481E090E09093D301FA |
:102A50008093D2011092670154C0C091D201D091ED |
:102A6000D301CA30D1050CF04CC0C9018B5F904036 |
:102A7000845B914008F040C0A901425D5140FE01D5 |
:102A8000EE0FFF1FE752FA4F80819181FA01E81B98 |
:102A9000F90BCF01F7FF03C0909581959F4F0697E3 |
:102AA0004CF480913102883C28F480913102865F99 |
:102AB00080933102FE01EE0FFF1F8F0107521A4F64 |
:102AC000D8012D913C91C901880F991F820F931F46 |
:102AD000840F951F64E070E00E94A32ED8018D91B1 |
:102AE0009C9111979B01281B390BE151FA4F3183BF |
:102AF000208311967C936E932196D093D301C0933B |
:102B0000D201FF91EF91DF91CF91BF91AF919F9152 |
:102B10008F917F916F915F914F913F912F911F9175 |
:102B20000F910F900FBE0F901F901895AF92BF920C |
:102B3000CF92DF92EF92FF920F931F9310927A0041 |
:102B40008091BE01882369F08091B2019091B30118 |
:102B50006091BE0177270E94A32E70934206609376 |
:102B600041068091BF01882369F08091B401909162 |
:102B7000B5016091BF0177270E94A32E7093400694 |
:102B800060933F068091C001882369F08091B6016F |
:102B90009091B7016091C00177270E94A32E709396 |
:102BA0004E0660934D068091C1018823D9F1E090D3 |
:102BB0004A06F0904B066091BA017091BB012091DA |
:102BC000C1010027F7FC0095102F5701680143E071 |
:102BD000AA0CBB1CCC1CDD1C4A95D1F7AE18BF0853 |
:102BE000C00AD10A882777FD8095982F34E0660FB8 |
:102BF000771F881F991F3A95D1F733274427552708 |
:102C00000E94D82EA20EB31EC41ED51EC601B50149 |
:102C100028E030E040E050E00E94D82E30934B0690 |
:102C200020934A068091C2018823D9F1E09053068F |
:102C3000F09054066091B8017091B9012091C201E1 |
:102C40000027F7FC0095102F5701680183E0AA0CBC |
:102C5000BB1CCC1CDD1C8A95D1F7AE18BF08C00A7E |
:102C6000D10A882777FD8095982FB4E0660F771FEB |
:102C7000881F991FBA95D1F73327442755270E94FB |
:102C8000D82EA20EB31EC41ED51EC601B50128E063 |
:102C900030E040E050E00E94D82E3093540620935C |
:102CA00053068091C3018823A1F1E0904406F0907F |
:102CB00045066091BC017091BD012091C3010027C0 |
:102CC000F7FC0095102F57016801A3E0AA0CBB1C6C |
:102CD000CC1CDD1CAA95D1F7AE18BF08C00AD10ADA |
:102CE000882777FD8095982F3327442755270E9402 |
:102CF000D82EA20EB31EC41ED51EC601B50128E0F3 |
:102D000030E040E050E00E94D82E309345062093FA |
:102D100044061092B3011092B2011092BE011092BB |
:102D2000B5011092B4011092BF011092B701109238 |
:102D3000B6011092C0011092B9011092B801109220 |
:102D4000C2011092BB011092BA011092C1011092FF |
:102D5000BD011092BC011092C301809115029091A7 |
:102D60001602A0911702B09118028093010290936D |
:102D70000202A0930302B093040280910502909195 |
:102D80000602A0910702B09108028093F10190938E |
:102D9000F201A093F301B093F40180910D029091A0 |
:102DA0000E02A0910F02B09110028093F90190934E |
:102DB000FA01A093FB01B093FC018091090290916C |
:102DC0000A02A0910B02B0910C028093F50190933E |
:102DD000F601A093F701B093F80180911102909150 |
:102DE0001202A0911302B09114028093FD019093FE |
:102DF000FE01A093FF01B09300028FEE80937A0052 |
:102E00008091410690914206893C91057CF0209189 |
:102E10004106309142068091410690914206880F0A |
:102E2000991F880F991F2052334015C08091410689 |
:102E30009091420688539F4FA4F42091410630910F |
:102E400042068091410690914206880F991F880F93 |
:102E5000991F205E3C4F820F931F909342068093F0 |
:102E6000410680913F0690914006893C91057CF097 |
:102E700020913F063091400680913F069091400698 |
:102E8000880F991F880F991F2052334015C08091D9 |
:102E90003F069091400688539F4FA4F420913F062F |
:102EA0003091400680913F0690914006880F991F0F |
:102EB000880F991F205E3C4F820F931F909340060E |
:102EC00080933F062091290230912A0280910906C1 |
:102ED000E82FFF27EE0FFF1FE752FA4F8081918105 |
:102EE00082599F4F281739071CF42F5F3F4F0CC0A2 |
:102EF0008081918182599F4F821793074CF421154D |
:102F0000310531F02150304030932A0220932902BC |
:102F100020912B0230912C0280910A06E82FFF2786 |
:102F2000EE0FFF1FE752FA4F8081918182599F4F28 |
:102F3000281739071CF42F5F3F4F0CC08081918107 |
:102F400082599F4F821793074CF42115310531F0B8 |
:102F50002150304030932C0220932B0220912D02DF |
:102F600030912E0280910B06E82FFF27EE0FFF1FF6 |
:102F7000E752FA4F8081918182599F4F2817390774 |
:102F80001CF42F5F3F4F0CC08081918182599F4F6D |
:102F9000821793074CF42115310531F02150304050 |
:102FA00030932E0220932D0220912F023091300277 |
:102FB00080910C06E82FFF27EE0FFF1FE752FA4F14 |
:102FC0008081918182599F4F281739071CF42F5F08 |
:102FD0003F4F0CC08081918182599F4F8217930788 |
:102FE0004CF42115310531F021503040309330023E |
:102FF00020932F028091290290912A0297FF05C009 |
:1030000010922A02109229020AC08F3F910539F0CE |
:1030100034F08FEF90E090932A0280932902809100 |
:103020002B0290912C0297FF05C010922C02109257 |
:103030002B020AC08F3F910539F034F08FEF90E0FA |
:1030400090932C0280932B0280912D0290912E025E |
:1030500097FF05C010922E0210922D020AC08F3FDA |
:10306000910539F034F08FEF90E090932E02809329 |
:103070002D0280912F029091300297FF05C010928F |
:10308000300210922F020AC08F3F910539F034F0C0 |
:103090008FEF90E09093300280932F021F910F9159 |
:1030A000FF90EF90DF90CF90BF90AF900895109277 |
:1030B0007A008091BE01882369F08091B2019091DD |
:1030C000B3016091BE0177270E94A32E7093420640 |
:1030D000609341068091BF01882369F08091B4011B |
:1030E0009091B5016091BF0177270E94A32E709344 |
:1030F000400660933F068091C001882369F080916B |
:10310000B6019091B7016091C00177270E94A32E6C |
:1031100070934E0660934D068091C1018823D1F0D3 |
:103120006091BA017091BB012091C101882777FDA0 |
:103130008095982F34E0660F771F881F991F3A9566 |
:10314000D1F73327442755270E94D82E30934B06BA |
:1031500020934A068091C2018823D1F06091B80182 |
:103160007091B9012091C201882777FD8095982F31 |
:10317000B4E0660F771F881F991FBA95D1F73327E0 |
:10318000442755270E94D82E309354062093530687 |
:103190008091C301882399F06091BC017091BD01B9 |
:1031A0002091C301882777FD8095982F33274427E6 |
:1031B00055270E94D82E309345062093440610923E |
:1031C000B3011092B2011092BE011092B50110929B |
:1031D000B4011092BF011092B7011092B601109283 |
:1031E000C0011092B9011092B8011092C201109260 |
:1031F000BB011092BA011092C1011092BD01109250 |
:10320000BC011092C3018FEE80937A0020912902B5 |
:1032100030912A0280910906E82FFF27EE0FFF1F49 |
:10322000E752FA4F8081918182599F4F28173907C1 |
:103230001CF42F5F3F4F0CC08081918182599F4FBA |
:10324000821793074CF42115310531F0215030409D |
:1032500030932A022093290220912B0230912C02D4 |
:1032600080910A06E82FFF27EE0FFF1FE752FA4F63 |
:103270008081918182599F4F281739071CF42F5F55 |
:103280003F4F0CC08081918182599F4F82179307D5 |
:103290004CF42115310531F02150304030932C028F |
:1032A00020932B0220912D0230912E0280910B064B |
:1032B000E82FFF27EE0FFF1FE752FA4F8081918121 |
:1032C00082599F4F281739071CF42F5F3F4F0CC0BE |
:1032D0008081918182599F4F821793074CF4211569 |
:1032E000310531F02150304030932E0220932D02D1 |
:1032F00020912F023091300280910C06E82FFF2799 |
:10330000EE0FFF1FE752FA4F8081918182599F4F44 |
:10331000281739071CF42F5F3F4F0CC08081918123 |
:1033200082599F4F821793074CF42115310531F0D4 |
:10333000215030403093300220932F028091290297 |
:1033400090912A0297FF05C010922A02109229023A |
:103350000AC08F3F910539F034F08FEF90E09093E1 |
:103360002A028093290280912B0290912C0297FFD0 |
:1033700005C010922C0210922B020AC08F3F9105BB |
:1033800039F034F08FEF90E090932C0280932B0271 |
:1033900080912D0290912E0297FF05C010922E026F |
:1033A00010922D020AC08F3F910539F034F08FEF53 |
:1033B00090E090932E0280932D0280912F029091A5 |
:1033C000300297FF05C01092300210922F0208952C |
:1033D0008F3F910539F034F08FEF90E090933002F9 |
:1033E00080932F0208951F93809110068B3F98F0D1 |
:1033F0008B3F19F4809129020EC08C3F19F4809103 |
:103400002B0209C08D3F19F480912D0204C08E3F1C |
:1034100021F480912F028093810180918101882382 |
:1034200019F41092810104C08F3F11F4809381013F |
:1034300080910F068B3F98F08B3F19F48091290201 |
:103440000EC08C3F19F480912B0209C08D3F19F4F6 |
:1034500080912D0204C08E3F21F480912F02809331 |
:10346000800180918001882319F41092800105C0A9 |
:10347000843618F084E680938001809111068B3F9A |
:1034800098F08B3F19F4809129020EC08C3F19F4FB |
:1034900080912B0209C08D3F19F480912D0204C048 |
:1034A0008E3F21F480912F028093820180918201CE |
:1034B000882319F41092820105C0843618F084E63E |
:1034C00080938201809113068B3F98F08B3F19F413 |
:1034D000809129020EC08C3F19F480912B0209C003 |
:1034E0008D3F19F480912D0204C08E3F21F480910C |
:1034F0002F028093830180918301882319F4109215 |
:10350000830104C08F3F11F48093830180911A06D8 |
:103510008B3F98F08B3F19F4809129020EC08C3FAD |
:1035200019F480912B0209C08D3F19F480912D026E |
:1035300004C08E3F21F480912F02809384018091FA |
:103540008401882319F41092840104C08F3F11F480 |
:103550008093840180911B068B3F98F08B3F19F478 |
:10356000809129020EC08C3F19F480912B0209C072 |
:103570008D3F19F480912D0204C08E3F21F480917B |
:103580002F0280938501809185018B3010F48AE0B1 |
:1035900002C08F3F11F48093850180911C068B3F00 |
:1035A00098F08B3F19F4809129020EC08C3F19F4DA |
:1035B00080912B0209C08D3F19F480912D0204C027 |
:1035C0008E3F21F480912F028093860180918601A5 |
:1035D000882319F41092860104C08F3F11F4809360 |
:1035E0008601809121068B3F98F08B3F19F48091E2 |
:1035F00029020EC08C3F19F480912B0209C08D3F27 |
:1036000019F480912D0204C08E3F21F480912F0285 |
:103610008093880180918801882319F41092880191 |
:1036200004C08F3F11F480938801809122068B3F64 |
:1036300098F08B3F19F4809129020EC08C3F19F449 |
:1036400080912B0209C08D3F19F480912D0204C096 |
:103650008E3F21F480912F0280933D0280913D02A4 |
:10366000882319F410923D0204C08F3F11F4809317 |
:103670003D02809123068B3F98F08B3F19F4809197 |
:1036800029020EC08C3F19F480912B0209C08D3F96 |
:1036900019F480912D0204C08E3F21F480912F02F5 |
:1036A00080933E0280913E02882319F410923E02DC |
:1036B00004C08F3F11F480933E02809124068B3F1B |
:1036C00098F08B3F19F4809129020EC08C3F19F4B9 |
:1036D00080912B0209C08D3F19F480912D0204C006 |
:1036E0008E3F21F480912F0280933F0280913F0210 |
:1036F000882319F410923F0204C08F3F11F4809385 |
:103700003F02809125068B3F98F08B3F19F4809102 |
:1037100029020EC08C3F19F480912B0209C08D3F05 |
:1037200019F480912D0204C08E3F21F480912F0264 |
:103730008093400280914002882319F41092400245 |
:1037400004C08F3F11F480934002909126069B3F66 |
:10375000B0F09B3F19F48091290204C09C3F29F4EA |
:1037600080912B02809389010CC09D3F19F48091B8 |
:103770002D02F8CF9E3F29F480912F02F3CF909332 |
:10378000890180918901882319F41092890104C06C |
:103790008F3F11F4809389019B3FB0F09B3F19F458 |
:1037A0008091290204C09C3F29F480912B028093D0 |
:1037B00089010CC09D3F19F480912D02F8CF9E3FE6 |
:1037C00029F480912F02F3CF909389018091890190 |
:1037D000882319F41092890104C08F3F11F480935B |
:1037E00089019B3FB0F09B3F19F48091290204C0EE |
:1037F0009C3F29F480912B02809389010CC09D3F4E |
:1038000019F480912D02F8CF9E3F29F480912F0268 |
:10381000F3CF9093890180918901882319F4109244 |
:10382000890104C08F3F11F48093890110918801B0 |
:10383000612F772767FD7095872F972F0E94E52CC2 |
:1038400017FF06C020E030E040E853E40E943A2C25 |
:1038500027E137EB41ED58E30E940C2E60937C0189 |
:1038600070937D0180937E0190937F018091180673 |
:1038700080934C0680911706809343061F9108950C |
:1038800081E08093050642E04093060683E0809342 |
:10389000070624E02093080635E03093090686E009 |
:1038A00080930A0687E080930B0610920D068EE146 |
:1038B00080930E068BEF809310068AE080931106AA |
:1038C00092E390930F069093130640931206209371 |
:1038D00014061092150680E1809316068FE08093FF |
:1038E00017068AEF809318068AE18093190680E80C |
:1038F00080931A068FEA80931B0680931C068AE544 |
:1039000080931D0683E280931E0684E180931F0648 |
:103910001092200630932106109222061092230660 |
:10392000109224061092250684E68093260688E2EB |
:103930008093270610922B069093280686E98093A1 |
:10394000290630932A06A3E3B6E0E8E6F1E08CE02E |
:1039500001900D928150E1F7089581E08093050672 |
:1039600052E05093060683E08093070644E04093BC |
:10397000080635E03093090686E080930A0687E062 |
:1039800080930B0628E020930C0610920D069EE112 |
:1039900090930E068BEF809310068AE080931106B9 |
:1039A00086E480930F06909313065093120640937B |
:1039B00014062093150680E1809316068FE080930D |
:1039C00017068AEF809318068AE18093190680E82B |
:1039D00080931A0688E780931B0696E990931C064D |
:1039E0008AE580931D0683E280931E0684E180931E |
:1039F0001F06109220063093210610922206109284 |
:103A00002306109224061092250684E6809326064B |
:103A100088E28093270610922B0682E38093280683 |
:103A20009093290630932A06A3E3B6E0E0E7F1E09D |
:103A30008CE001900D928150E1F708958091380259 |
:103A4000882301F51092ED021092EC021092080307 |
:103A50001092200380919801882311F08093EC024A |
:103A600080919901882311F08093ED0280919A0151 |
:103A7000882311F08093200380919B01882311F00B |
:103A8000809308038091EC029927909376058093A8 |
:103A900075058091ED0299279093780580937705BD |
:103AA00080912003992790937A05809379058091DE |
:103AB0000803992790937C0580937B051092CF0192 |
:103AC0001092D0010E9430140895CF93DF9310928A |
:103AD000DE011092DD011092E0011092DF0180E022 |
:103AE00090E0A0E0B0E08093EB019093EC01A09314 |
:103AF000ED01B093EE011092D8011092D70110920F |
:103B0000DA011092D9011092DC011092DB010E94BF |
:103B1000571885E090E00E94110CEC01CE010E9444 |
:103B20001A0C8823D9F30E94571880910D0680FF44 |
:103B300010C080910A0190910B01875B934038F48B |
:103B400080910A0190910B018E5E924010F40E94C8 |
:103B50003610809141069091420697FF03C09095E0 |
:103B600081959F4F9093D8018093D70180913F0614 |
:103B70009091400697FF03C0909581959F4F909339 |
:103B8000DA018093D90180914D0690914E0697FFFE |
:103B900003C0909581959F4F9093DC018093DB014A |
:103BA000809153069091540697FF03C0909581959C |
:103BB0009F4F60E170E00E94A32E7093E00160933C |
:103BC000DF0180914A0690914B0697FF03C09095C4 |
:103BD00081959F4F60E170E00E94A32E7093DE01FB |
:103BE0006093DD016091C1057091C205882777FD62 |
:103BF0008095982F0E94E52C6093EB017093EC0167 |
:103C00008093ED019093EE0110920502109206024E |
:103C100010920702109208021092090210920A02F2 |
:103C200010920B0210920C0210920D0210920E02D2 |
:103C300010920F02109210021092110210921202B2 |
:103C40001092130210921402109215021092160292 |
:103C5000109217021092180210924206109241061A |
:103C60001092400610923F0610924E0610924D069A |
:103C70008091060190910701A0910801B09109017E |
:103C80009093C4058093C3051092C5011092C4019E |
:103C900010921D0210921E0210921F02109220021A |
:103CA000809121029091220290932402809323021A |
:103CB00082E390E09093AC018093AB01DF91CF91D0 |
:103CC00008951F93182F0EC080913802882361F445 |
:103CD00084E690E09093AC018093AB018AEF90E092 |
:103CE0000E94FA0C115080F71F9108952F923F9275 |
:103CF0004F925F926F927F928F929F92AF92BF92FC |
:103D0000CF92DF92EF92FF920F931F93CF93DF93A7 |
:103D1000CDB7DEB724970FB6F894DEBF0FBECDBF88 |
:103D20000E949615299AE0910706AE2FBB27AA0F8D |
:103D3000BB1FA752BA4F0D90BC91A02D9D012858D2 |
:103D40003F4F3A83298337FF02C01A82198280913C |
:103D50003102843608F04AC080910101882331F491 |
:103D600084EF91E09093AC018093AB0180914C0281 |
:103D700090914D02009731F0019790934D028093FE |
:103D80004C0204C01092380210922702289A8091A7 |
:103D9000470290914802815D974028F180911E066C |
:103DA000482F55275A83498381E080932702E09169 |
:103DB0000506FF27EE0FFF1FE752FA4F1182108210 |
:103DC000E0910606FF27EE0FFF1FE752FA4F118220 |
:103DD0001082E0910806FF27EE0FFF1FE752FA4F0F |
:103DE00011821082CEC110923802CBC18091310273 |
:103DF0008D3808F4C6C11092270280911F0622E375 |
:103E0000829FC001112490934D0280934C026981DE |
:103E10007A81693271056CF0809147029091480275 |
:103E20007FEF8F3F970781F101969093480280932F |
:103E300047028091470290914802883C910520F00A |
:103E400089819A81889704F5109262021092630228 |
:103E5000109264021092650210925E0210925F024C |
:103E600010926002109261021092150210921602D6 |
:103E700010921702109218021092190210921A0250 |
:103E800010921B0210921C02E981FA81E93CF105B3 |
:103E90000CF4D6C080913802882309F072C1E091F9 |
:103EA0000806FF27EE0FFF1FE752FA4F808191812E |
:103EB0008C3491050CF4C1C080914B028F5F8093CC |
:103EC0004B02893C08F45DC129980E94651D10923F |
:103ED000380210924B0210924802109247028091D1 |
:103EE0000506282F3327F901EE0FFF1FE752FA4F7F |
:103EF00080819181873491059CF4E0910606FF272B |
:103F0000EE0FFF1FE752FA4F0190F081E02DF7FF0F |
:103F100003C0F095E195FF4FE734F1050CF46CC058 |
:103F200080910606682F7727DB01AA0FBB1FA752D7 |
:103F3000BA4F8D919C911197873491053CF0F9010E |
:103F4000EE0FFF1FE752FA4F808191818D919C9176 |
:103F50008734910564F0F901EE0FFF1FE752FA4F25 |
:103F6000808191818734910514F042E001C041E0E5 |
:103F7000FB01EE0FFF1FE752FA4F808191818634DB |
:103F800091055CF4F901EE0FFF1FE752FA4F8081B3 |
:103F90009181873491050CF043E0FB01EE0FFF1F88 |
:103FA000E752FA4F808191818A5B9F4F5CF4F9015F |
:103FB000EE0FFF1FE752FA4F808191818734910500 |
:103FC0000CF044E0660F771F67527A4FFB01808147 |
:103FD00091818A5B9F4F5CF4220F331F27523A4F27 |
:103FE000F90180819181863491050CF445E0A2E0CD |
:103FF000B0E0042E0E94FB2E0E940B024AE365E013 |
:1040000076E00E942A020E940B020E94611E8091AB |
:104010000D0680FFB6C080910A0190910B01875B6D |
:10402000934040F480910A0190910B018E5E924082 |
:1040300008F0A7C00E943610A4C010924B02A1C085 |
:1040400049815A81433251050CF09BC0809108068A |
:10405000482F5527FA01EE0FFF1FE752FA4F8081D4 |
:104060009181855B9F4F0CF06DC080914A028F5FFC |
:1040700080934A02893C08F467C088EC80934A0226 |
:1040800081E090E0909348028093470281E0809322 |
:10409000380210925A0210925B0210925C02109247 |
:1040A0005D021092150210921602109217021092E1 |
:1040B00018021092190210921A0210921B0210920A |
:1040C0001C02109205021092060210920702109232 |
:1040D000080210920D0210920E0210920F0210921E |
:1040E00010028091F1019091F201A091F301B09141 |
:1040F000F4018093090290930A02A0930B02B093FB |
:104100000C028091F9019091FA01A091FB01B0910C |
:10411000FC018093110290931202A0931302B093BA |
:1041200014021092620210926302109264021092C2 |
:10413000650210925E0210925F021092600210926D |
:10414000610202C010924A02440F551F47525A4F53 |
:10415000FA01808191818C3491058CF08091490223 |
:104160008F5F80934902893C60F01092380288EC9E |
:1041700080934902109248021092470202C01092A6 |
:1041800049028091670181508093670180916701A6 |
:104190008F3F29F080912702882309F412C10E94E1 |
:1041A000F319E0910506FF27EE0FFF1FDF01A7526D |
:1041B000BA4F8D919C91609114067727E151FA4F87 |
:1041C00020813181409115065527FC01E69FC001F1 |
:1041D000E79F900DF69F900D1124F901E49F900147 |
:1041E000E59F300DF49F300D1124820F931F9093A3 |
:1041F000330280933202E0910606FF27EE0FFF1F85 |
:10420000DF01A752BA4F8D919C91E151FA4F208165 |
:104210003181FC01E69FC001E79F900DF69F900D54 |
:104220001124B901649F9001659F300D749F300D7A |
:104230001124820F931F9093350280933402E091F2 |
:104240000806FF27EE0FFF1FE752FA4F808191818A |
:10425000909581959F4F90933702809336021091ED |
:104260008501612F772767FD7095872F972F0E9413 |
:10427000E52C17FF06C020E030E040E853E40E9440 |
:104280003A2C20E030E040E251E40E943A2C20E059 |
:1042900030E040E85BE30E940C2E5B016C01609310 |
:1042A0004F067093500680935106909352061091DA |
:1042B0008601612F772767FD7095872F972F0E94C2 |
:1042C000E52C17FF06C020E030E040E853E40E94F0 |
:1042D0003A2C20E030EE4BE257E40E94822C6093AF |
:1042E000460670934706809348069093490680914E |
:1042F0000D0682FF0CC080E090E0A0E0B0E080936B |
:10430000460690934706A0934806B093490620E0DE |
:1043100030E040E050E0C601B5010E941B2D88232B |
:1043200064F480E090E0A0E0B0E080934F069093CA |
:104330005006A0935106B093520620E030E040E0D2 |
:1043400050E0609146067091470680914806909132 |
:1043500049060E941B2D882364F480E090E0A0E0D1 |
:10436000B0E08093460690934706A0934806B0932A |
:10437000490680912702882321F11092370210927A |
:1043800036021092330210923202109235021092CD |
:1043900034028DEC9CECACECBDE380934F06909323 |
:1043A0005006A0935106B09352068AE097EDA3EA17 |
:1043B000BBE38093460690934706A0934806B093CC |
:1043C00049068091C6019091C7018D54914008F42F |
:1043D000BCC02091F5013091F6014091F701509158 |
:1043E000F8018091F1019091F201A091F301B09157 |
:1043F000F401B901681B790B70935102609350026C |
:104400002091FD013091FE014091FF015091000289 |
:104410008091F9019091FA01A091FB01B091FC010A |
:10442000281B390B30934F0220934E021092C70184 |
:104430001092C601673A710534F08091D7019091CE |
:10444000D801019608C06A557F4F4CF48091D7017E |
:104450009091D80101979093D8018093D701273A82 |
:10446000310534F08091D9019091DA01019608C0AC |
:104470002A553F4F4CF48091D9019091DA01019770 |
:104480009093DA018093D9018091190290911A02D8 |
:10449000A0911B02B0911C02873A9105A105B105BC |
:1044A0004CF08091DB019091DC0101979093DC014D |
:1044B0008093DB018091190290911A02A0911B0256 |
:1044C000B0911C028A559F4FAF4FBF4F4CF4809163 |
:1044D000DB019091DC0101969093DC018093DB017C |
:1044E00010927A008091F1019091F201A091F30174 |
:1044F000B091F4018093090290930A02A0930B02F9 |
:10450000B0930C028091F9019091FA01A091FB0106 |
:10451000B091FC018093110290931202A0931302B8 |
:10452000B09314028091010290910202A0910302C3 |
:10453000B09104028093190290931A02A0931B0277 |
:10454000B0931C028FEE80937A006091F10170911C |
:10455000F2018091F3019091F401A0901906BB241F |
:10456000CC24DD24E0904A06F0904B06A60195018C |
:104570000E94D82E0027F7FC0095102F2E193F0916 |
:10458000400B510BCA01B90120E130E040E050E09E |
:104590000E94D82E39014A012093560230935702C7 |
:1045A00040935802509359026091F9017091FA01B9 |
:1045B0008091FB019091FC01E0905306F09054062D |
:1045C000A60195010E94D82E0027F7FC0095102F18 |
:1045D0002E193F09400B510BCA01B90120E130E00F |
:1045E00040E050E00E94D82E2093520230935302B4 |
:1045F0004093540250935502F5EF6F16F1E07F0699 |
:10460000F0E08F06F0E09F062CF084EF91E0A0E050 |
:10461000B0E00DC06CE066166EEF76066FEF8606B2 |
:104620006FEF960664F48CE09EEFAFEFBFEF8093E0 |
:10463000560290935702A0935802B0935902253F17 |
:1046400071E0370770E0470770E057072CF084EF00 |
:1046500091E0A0E0B0E009C02C503E4F4F4F5F4FBB |
:1046600064F48CE09EEFAFEFBFEF80935202909323 |
:104670005302A0935402B093550210927A00809195 |
:10468000050290910602A0910702B09108022091C4 |
:104690005602309157024091580250915902821BA4 |
:1046A000930BA40BB50B8093050290930602A09385 |
:1046B0000702B093080280910D0290910E02A09122 |
:1046C0000F02B0911002209152023091530240919A |
:1046D000540250915502821B930BA40BB50B80938F |
:1046E0000D0290930E02A0930F02B09310028091DE |
:1046F0003602909137025C01CC24B7FCC094DC2CCC |
:10470000A0925A02B0925B02C0925C02D0925D020B |
:1047100097FF03C0909581959F4F84973CF08091BF |
:104720000D0684FD03C081E0809343026090150272 |
:10473000709016028090170290901802C501B7FE83 |
:1047400003C0909581959F4F7C010027F7FC009551 |
:10475000102F20911606332744275527C601B5018F |
:104760000E94702E9B01AC01C801B7010E94702EFF |
:1047700020E031E040E050E00E94D82E442737FD91 |
:104780004095542F621A730A840A950A60921502A2 |
:104790007092160280921702909218028091150270 |
:1047A00090911602A0911702B0911802815395477B |
:1047B000A040B04064F080E395E7A0E0B0E08093D3 |
:1047C000150290931602A0931702B09318028091DD |
:1047D000150290911602A0911702B0911802805D07 |
:1047E0009A48AF4FBF4F64F480ED9AE8AFEFBFEF48 |
:1047F0008093150290931602A0931702B0931802AB |
:104800008FEE80937A008091210290912202892B71 |
:1048100009F4A1C080910D0683FF9DC06091F10154 |
:104820007091F2018091F3019091F40120E032E067 |
:1048300040E050E00E94D82E890137FF03C0109558 |
:1048400001951F4F6091F9017091FA018091FB0170 |
:104850009091FC0120E032E040E050E00E94D82E30 |
:10486000B90137FF03C0709561957F4F60177107DD |
:104870000CF4B80169317105A4F4809143028823D6 |
:1048800081F08091410290914202892B51F48091F4 |
:10489000210290912202909324028093230210928D |
:1048A0004302209184013327629FC001639F900DD2 |
:1048B000729F900D112460E470E00E94A32EA90164 |
:1048C000461B570B141615060CF03FC010927A00C9 |
:1048D00020914102309142022115310561F500918C |
:1048E0001502109116022091170230911802809142 |
:1048F000250290912602BC01649FC001659F900D26 |
:10490000749F900D112460E270E00E94A32E88270E |
:1049100077FD8095982F060F171F281F391F0093CA |
:1049200015021093160220931702309318028FEE8F |
:1049300080937A0010C08FEE80937A00215030402F |
:10494000309342022093410206C084EF91E090939D |
:1049500042028093410280913D02992790931B036C |
:1049600080931A0380913E02992790931D038093B0 |
:104970001C0380913F02992790931703809316039D |
:10498000809140022DE2829FC0011124909319036F |
:104990008093180380910D0685FF23C089E190E084 |
:1049A00090930503809304038091290290912A0239 |
:1049B0001816190614F40E94792980912902909101 |
:1049C0002A02892B71F485E090E090931103809383 |
:1049D00010031092CB021092CA021092CD021092D4 |
:1049E000CC0280915C058F5F80935C0580914402CE |
:1049F0008150809344028F3F09F078C081E3809317 |
:104A000044026091F1017091F2018091F301909163 |
:104A1000F401E0901906FF2400271127A80197014F |
:104A20000E94D82E30935E0520935D056091F901B8 |
:104A30007091FA018091FB019091FC01A80197010E |
:104A40000E94D82E3093600520935F0580914A061E |
:104A500090914B0690936205809361058091530677 |
:104A600090915406909364058093630580914D0660 |
:104A700090914E069093660580936505809139026A |
:104A800090913A02909368058093670560911D02AA |
:104A900070911E0280911F029091200220E032E06E |
:104AA00040E050E00E94D82E30936A0520936905BB |
:104AB00089819A8190936C0580936B058091210286 |
:104AC0009091220290936E0580936D058091210252 |
:104AD000909122029093700580936F05809121023E |
:104AE0009091220290937205809371056091F1017B |
:104AF0007091F2018091F3019091F40120904606AB |
:104B0000309047064090480650904906E090410694 |
:104B1000F090420660904F067090500680905106CB |
:104B2000909052060E94E52CA20191010E940C2E49 |
:104B30005B016C010027F7FC0095102FC801B7013D |
:104B40000E94E52CA40193010E940C2E9B01AC0154 |
:104B5000C601B5010E943A2C0E94C82C70934206EF |
:104B6000609341066091F9017091FA018091FB0117 |
:104B70009091FC01E0903F06F09040060E94E52CE9 |
:104B8000A20191010E940C2E5B016C010027F7FC31 |
:104B90000095102FC801B7010E94E52CA4019301D4 |
:104BA0000E940C2E9B01AC01C601B5010E943A2C5B |
:104BB0000E94C82C7093400660933F0660914D069A |
:104BC00070914E06A0900102B0900202C0900302C4 |
:104BD000D0900402882777FD8095982F0E94E52CBD |
:104BE0007B018C0120E030E040E05FE3C401B301D1 |
:104BF0000E940C2E9B01AC01C801B7010E940C2E33 |
:104C00007B018C01C601B5010E94E52CA201910136 |
:104C10000E940C2E9B01AC01C801B7010E943A2CE6 |
:104C20000E94C82C70934E0660934D0680914106F9 |
:104C3000909142068150984034F080E098E0909343 |
:104C40004206809341068091410690914206805031 |
:104C5000984F34F480E098EF909342068093410699 |
:104C600080913F06909140068150984034F080E05A |
:104C700098E09093400680933F0680913F06909184 |
:104C800040068050984F34F480E098EF90934006AF |
:104C900080933F0680914D0690914E06815098403A |
:104CA00034F080E098E090934E0680934D0680911A |
:104CB0004D0690914E068050984F34F480E098EF66 |
:104CC00090934E0680934D0680910D06992780FFA4 |
:104CD000CDC02091810181FF0EC02233B0F48091BC |
:104CE000390290913A02449790933C0280933B02A0 |
:104CF000109228020DC080911206289FC001112435 |
:104D0000449790933C0280933B0281E08093280279 |
:104D100080912702882321F010923C0210923B02DE |
:104D20002091390230913A0240913B0250913C026D |
:104D3000421753070CF09AC080912802882309F487 |
:104D400095C0241B350B809182019927BC01269FB9 |
:104D5000C001279F900D369F900D112460E170E0F7 |
:104D60000E94A32E09811A81061B170B2091C401F2 |
:104D70003091C501809180019927FC012E9FC001CF |
:104D80002F9F900D3E9F900D112468E070E00E94CF |
:104D9000A32E061B170B60911D0270911E028091BD |
:104DA0001F029091200220E032E040E050E00E949B |
:104DB000D82ECA01B90120918301332744275527F2 |
:104DC0000E94702E20E230E040E050E00E94D82E99 |
:104DD000FFEF2E3C3F0714F42EEC3FEF809145028D |
:104DE00090914602AC0174E0440F551F7A95E1F7AB |
:104DF000481B590B2333310514F022E330E0021B2A |
:104E0000130BCA01800F911F60E170E00E94A32E76 |
:104E1000709346026093450280910E0699276817A9 |
:104E200079078CF429813A81281739072CF090935F |
:104E300046028093450207C049815A815093460239 |
:104E4000409345020DC080914502909146026981D0 |
:104E50007A816817790724F47093460260934502BB |
:104E600080914502909146029A838983C0904D06B5 |
:104E7000D0904E0680915A0290915B02C81AD90ACE |
:104E800095E6C916D10424F064E6C62ED12C09C0DB |
:104E9000ECE9CE16EFEFDE0624F45CE9C52E5FEFF9 |
:104EA000D52E409078015090790160907A017090F1 |
:104EB0007B0160914106709142062091320230914F |
:104EC00033024091CA025091CB02241B350B621B66 |
:104ED000730B882777FD8095982F0E94E52C9B0106 |
:104EE000AC01C301B2010E940C2E0E94C82C709329 |
:104EF00003036093020380910203909103038C01EA |
:104F0000222717FD2095322F809162029091630233 |
:104F1000A0916402B0916502080F191F2A1F3B1F60 |
:104F2000009362021093630220936402309365023F |
:104F30001016110612061306ACF4C80117FF03C0C1 |
:104F4000909581959F4F60E071E00E94A32E6F5F66 |
:104F50007F4F882777FD8095982F061B170B280B0E |
:104F6000390B14C0C80117FF03C0909581959F4F5E |
:104F700060E071E00E94A32E6F5F7F4F882777FD6E |
:104F80008095982F060F171F281F391F0093620264 |
:104F90001093630220936402309365028091620251 |
:104FA00090916302A0916402B09165028138FEE3A2 |
:104FB0009F07F0E0AF07F0E0BF072CF080E89EE32A |
:104FC000A0E0B0E009C08058914CAF4FBF4F64F4EF |
:104FD00080E891ECAFEFBFEF8093620290936302A1 |
:104FE000A0936402B0936502609102037091030381 |
:104FF00080907C0190907D01A0907E01B0907F0117 |
:10500000882777FD8095982F0E94E52C7B018C01E5 |
:1050100060916202709163028091640290916502D6 |
:105020000E94E52C9B01AC01C501B4010E940C2E2D |
:105030009B01AC01C801B7010E943A2C0E94C82C08 |
:105040009601260F371F49815A81240F351F2224CC |
:105050004A30510514F441E0242E37FD02C02220CD |
:1050600019F040E050E008C080914C06482F5527C9 |
:10507000241735070CF4A90180914306E82FFF2778 |
:10508000FC83EB839F01E417F5070CF49A0120934E |
:10509000EC0229813A81261B370BB9016C0D7D1D6D |
:1050A00077FD02C0222019F080E090E007C08091D7 |
:1050B0004C069927681779070CF4CB012B813C81AA |
:1050C000281739070CF49C012093ED0260913F06EC |
:1050D0007091400620913402309135024091CC020B |
:1050E0005091CD02241B350B621B730B882777FD73 |
:1050F0008095982F0E94E52C9B01AC01C301B20161 |
:105100000E940C2E0E94C82C7093E9026093E80262 |
:105110008091E8029091E9028C01222717FD2095E9 |
:10512000322F80915E0290915F02A0916002B09157 |
:105130006102080F191F2A1F3B1F00935E02109384 |
:105140005F0220936002309361021016110612066E |
:105150001306ACF4C80117FF03C0909581959F4FCB |
:1051600060E071E00E94A32E6F5F7F4F882777FD7C |
:105170008095982F061B170B280B390B14C0C801FC |
:1051800017FF03C0909581959F4F60E071E00E94EA |
:10519000A32E6F5F7F4F882777FD8095982F060F8E |
:1051A000171F281F391F00935E0210935F02209380 |
:1051B00060023093610280915E0290915F02A09143 |
:1051C0006002B091610281383EE3930730E0A307AB |
:1051D00030E0B3072CF080E89EE3A0E0B0E009C027 |
:1051E0008058914CAF4FBF4F64F480E891ECAFEF23 |
:1051F000BFEF80935E0290935F02A0936002B09332 |
:1052000061026091E8027091E902882777FD80953C |
:10521000982F0E94E52C7B018C0160915E027091B9 |
:105220005F0280916002909161020E94E52C9B01D7 |
:10523000AC01C501B4010E940C2E9B01AC01C80158 |
:10524000B7010E943A2C0E94C82C29813A81260F6E |
:10525000371F2C193D0937FD02C0222019F040E00C |
:1052600050E008C080914C06482F55272417350779 |
:105270000CF4A9012B813C81241735070CF49A0109 |
:105280002093200389819A81861B970BBC016C199E |
:105290007D0977FD02C0222019F020E030E008C02F |
:1052A00080914C06282F3327621773070CF49B015B |
:1052B0008B819C81821793070CF4C90180930803AA |
:1052C00024960FB6F894DEBF0FBECDBFDF91CF910D |
:1052D0001F910F91FF90EF90DF90CF90BF90AF9014 |
:1052E0009F908F907F906F905F904F903F902F9006 |
:1052F00008952F923F924F925F926F927F928F927A |
:105300009F92AF92BF92CF92DF92EF92FF920F9354 |
:105310001F93CF93DF93CDB7DEB724970FB6F894E2 |
:10532000DEBF0FBECDBF80919505882309F47BC2F7 |
:105330008091060390910703019709F074C2809150 |
:10534000290290912A02181619060CF06CC280915D |
:10535000100390911103892B51F180917D0590915B |
:105360007E05A0917F05B09180058093F602909311 |
:10537000F702A093F802B093F90280918105909111 |
:105380008205A0918305B0918405809312039093C8 |
:105390001303A0931403B093150382E390E090935A |
:1053A000AC018093AB011092110310921003209175 |
:1053B0001A0330911B036091F6027091F7028091FD |
:1053C000F8029091F902E0907D05F0907E05009141 |
:1053D0007F05109180056E197F09800B910B442782 |
:1053E00037FD4095542F0E94702E3B014C01609375 |
:1053F00068027093690280936A0290936B02209115 |
:105400001A0330911B036091120370911303809172 |
:10541000140390911503E0908105F09082050091AE |
:105420008305109184056E197F09800B910B442729 |
:1054300037FD4095542F0E94702E1B012C01609364 |
:105440006C0270936D0280936E0290936F02609174 |
:105450001C0370911D03709561957F4F882777FD20 |
:105460008095982F2091890530918A0540918B0570 |
:1054700050918C050E94702E7B018C016093780204 |
:105480007093790280937A0290937B0260911C035F |
:1054900070911D03709561957F4F882777FD8095EA |
:1054A000982F20918D0530918E0540918F05509158 |
:1054B00090050E94702E5B016C0160937C027093DA |
:1054C0007D0280937E0290937F0280910D0683FF80 |
:1054D0002CC18091180390911903209123023091DF |
:1054E0002402820F931F909367028093660280913B |
:1054F0006602909167028856914054F0809166024E |
:10550000909167028856914090936702809366025B |
:105510008091660290916702AA2797FDA095BA2F05 |
:1055200020918A0130918B0140918C0150918D0125 |
:1055300082179307A407B50709F46CC0609166024F |
:1055400070916702882777FD8095982F0E94E52C3F |
:105550002BED3FE049E450E40E940C2E20E030E0C7 |
:1055600044E353E40E94822C0E94542E20E030E059 |
:1055700048EC52E40E940C2E0E94EF2C20E030E018 |
:1055800048EC52E40E94822C6093C2027093C302E2 |
:105590008093C4029093C502609166027091670285 |
:1055A000882777FD8095982F0E94E52C2BED3FE012 |
:1055B00049E450E40E940C2E20E030E044E353E440 |
:1055C0000E94822C0E947C2C20E030E048EC52E4C7 |
:1055D0000E940C2E0E94EF2C20E030E048EC52E4B8 |
:1055E0000E94822C6093C6027093C7028093C80207 |
:1055F0009093C9028091660290916702AA2797FD55 |
:10560000A095BA2F80938A0190938B01A0938C016F |
:10561000B0938D012091160330911703C401B3019B |
:105620006E0D7F1D801F911F442737FD4095542F1D |
:105630000E94D82E79018A012093CE023093CF02A6 |
:105640004093D0025093D10220911603309117035A |
:10565000C201B1016A0D7B1D8C1D9D1D442737FDC4 |
:105660004095542F0E94D82E2093D2023093D3021B |
:105670004093D4025093D5028091C2029091C3020C |
:10568000A091C402B091C50289839A83AB83BC8385 |
:10569000CA01B9010E94E52C5B016C016090C60251 |
:1056A0007090C7028090C8029090C902C801B701EB |
:1056B0000E94E52C1B012C01A601950169817A81CC |
:1056C0008B819C810E940C2E7B018C01A201910197 |
:1056D000C401B3010E940C2E9B01AC01C801B701AB |
:1056E0000E943A2C0E94C82C7093CB026093CA028D |
:1056F000A6019501C401B3010E940C2E7B018C010F |
:10570000A201910169817A818B819C810E940C2E7A |
:105710009B01AC01C801B7010E94392C0E94C82C22 |
:105720007093CD026093CC0228C020911603309173 |
:105730001703C401B3016E0D7F1D801F911F442705 |
:1057400037FD4095542F0E94D82E3093CB022093E2 |
:10575000CA022091160330911703C201B1016A0DEC |
:105760007B1D8C1D9D1D442737FD4095542F0E94A5 |
:10577000D82E3093CD022093CC028091CA02909112 |
:10578000CB0222273327281B390B3093CB022093DF |
:10579000CA028091040390910503821793072CF4A9 |
:1057A000809104039091050311C0809104039091AE |
:1057B0000503909581959F4F281739075CF48091D8 |
:1057C000040390910503909581959F4F9093CB0290 |
:1057D0008093CA022091CC023091CD0280910403C3 |
:1057E00090910503821793072CF480910403909104 |
:1057F000050311C080910403909105039095819554 |
:105800009F4F281739075CF480910403909105039A |
:10581000909581959F4F9093CD028093CC021092EA |
:1058200007031092060324960FB6F894DEBF0FBE4E |
:10583000CDBFDF91CF911F910F91FF90EF90DF903F |
:10584000CF90BF90AF909F908F907F906F905F9020 |
:105850004F903F902F900895FC014150504030F000 |
:1058600001900616D1F73197CF010895882799271F |
:1058700008955058192E72D101D022C1BA1762076B |
:10588000730784079507B1F188F40EF410940B2E7A |
:10589000BA2FA02D062E622F202D072E732F302D0C |
:1058A000082E842F402D092E952F502DFF2755238C |
:1058B000B9F0591B49F0573E98F046953795279512 |
:1058C000A795F0405395C9F776F0BA0F621F731F82 |
:1058D000841F30F4879577956795B795F040939539 |
:1058E00017FA0F2E0895BF1BBB27BA0B620B730B61 |
:1058F000840BF6CFDEF65EC150E449EC3FE02BEDC1 |
:1059000087D0BBC02BD101D0DBC0552359F09923E0 |
:1059100069F09F575F57951B33F442F4903811F4A8 |
:10592000915805C0E5C091589F3F09F443C1BB277A |
:10593000112462177307840730F4660F771F881FDE |
:10594000BB1F915098F311D00F920FD00F920DD032 |
:10595000A0E82617370748071B0609F0A048BA2F0A |
:10596000602D7F918F9100240895A0E80024621794 |
:1059700073078407B10528F0621B730B840BB10910 |
:105980000A2A660F771F881FBB1FA69581F7089507 |
:1059900097FBF0D09F3738F0FEE9F91B982F872F3F |
:1059A000762F6B2F05C003C19695879577956795E0 |
:1059B000F150D0F73EF490958095709561957F4FAA |
:1059C0008F4F9F4F0895E89403C097FB0EF4F3DFC9 |
:1059D000B62F672F782F892F9EE9002471C0D8D069 |
:1059E0009F3760F40EF0E3C09FEB80E877276627CF |
:1059F0000895869577956795B11D93959639C8F367 |
:105A00002EF4BB2319F06F5F7F4F8F4FBB2758C019 |
:105A10005F77552319F444230AF06AC02F933F930C |
:105A20004F935F936FDF55274427C6D05F914F9107 |
:105A30003F912F91F1C00ED05EF004C00BD026F044 |
:105A400001C008D019F020F48FEF089580E0089588 |
:105A500081E0089597FB092E052600F8689481D00F |
:105A6000E89407FC07C0621773078407950721F0C5 |
:105A700008F400940794989408951F939F7750EC2E |
:105A800049E43FE02BEDF6DE10E89F775FE349EC59 |
:105A90003FE02BED621773078407950720F050EC69 |
:105AA00049E4E8DE112713D19068E0E7F0E023D065 |
:105AB00091271F9108959A95BB0F661F771F881F26 |
:105AC00011249923A1F08823B2F79F3F59F0BB0F0F |
:105AD00048F421F4002011F460FF04C06F5F7F4F91 |
:105AE0008F4F9F4F881F9795879597F908955FC0AF |
:105AF0009FEF80EC0895FF92EF92DF92CF92BF92DA |
:105B00006B017C01B59016D0B590BB2069F09F93D6 |
:105B10008F937F936F93B601C7010CD02F913F9164 |
:105B20004F915F910E94822CBF90CF90DF90EF90B9 |
:105B3000FF900895D0D002C09601A701EF93FF9384 |
:105B40000E940C2EFF91EF91C6D0EF93FF930E941D |
:105B50003A2CFF91EF91BA9479F70895052E092612 |
:105B600007FA440F551F5F3F79F0AA27A51708F0E1 |
:105B700051E04795880F991F9F3F31F0BB27B91718 |
:105B800008F091E0879508959F919F911124B0CFDF |
:105B900097FB880F991F9F3F31F0BB27B91708F07B |
:105BA00091E0879508959F919F911124A1CF662739 |
:105BB0007727882799270895EBDFCF93DF93D52F99 |
:105BC000C42F55274427332722279923D9F09F37FD |
:105BD000C8F0F92F75DF592F482F372F262FF639A8 |
:105BE00068F4D6DEF2DEC030CD0721F069937993F8 |
:105BF000899399939058DF91CF913CCE992788272C |
:105C000077276627C030CD0721F029933993499330 |
:105C10005993DF91CF9154CFA1DF01D051CF992378 |
:105C200039F0552329F09F575F57950F13F49AF1D8 |
:105C3000C1CF91589F3FE1F3629FA12D0F92BB27E7 |
:105C4000639FA00DB11DEE27729FA00DB11DEE1F29 |
:105C5000AF93AA27649FB00DE11D739FB00DE11DA6 |
:105C6000AA1F6627829FB00DE11DA61F5527749FAE |
:105C7000E00DA11D551F839FE00DA11D561F849FA0 |
:105C8000A00D511D852F7A2F6E2F1F900F90882306 |
:105C90001AF4939539F42CCF000C111CBB1F661F0E |
:105CA000771F881F012808959F939F77993358F095 |
:105CB00050E449EC3FE02BEDABDE5FEB49EC3FE01D |
:105CC0002BEDD8DDDADE5F915078952708959B01A2 |
:105CD000AC010C940C2E5591459135912591089568 |
:105CE000629FD001739FF001829FE00DF11D649FC0 |
:105CF000E00DF11D929FF00D839FF00D749FF00D4C |
:105D0000659FF00D9927729FB00DE11DF91F639FEC |
:105D1000B00DE11DF91FBD01CF0111240895AA1B8B |
:105D2000BB1B51E107C0AA1FBB1FA617B70710F086 |
:105D3000A61BB70B881F991F5A95A9F780959095B8 |
:105D4000BC01CD01089597FB092E07260AD077FDE7 |
:105D500004D0E5DF06D000201AF4709561957F4FDE |
:105D60000895F6F7909581959F4F0895A1E21A2E18 |
:105D7000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1FEF |
:105D8000A217B307E407F50720F0A21BB30BE40B3F |
:105D9000F50B661F771F881F991F1A9469F7609586 |
:105DA0007095809590959B01AC01BD01CF01089540 |
:105DB00097FB092E05260ED057FD04D0D7DF0AD059 |
:105DC000001C38F450954095309521953F4F4F4F2A |
:105DD0005F4F0895F6F790958095709561957F4F88 |
:105DE0008F4F9F4F0895F999FECFB2BDA1BDF89A8C |
:105DF000119600B40895F999FECFB2BDA1BD00BCC3 |
:105E000011960FB6F894FA9AF99A0FBE0895FFCF3B |
:105E100001640A016400007D0000FF030102030425 |
:105E200005060708090A48616C6C6F2057656C7499 |
:105E30000000000000000000000000000000000062 |
:105E40000000000000000000000000000000000052 |
:105E50000000000000000000000000000000000042 |
:105E60000000000000000000000000000000000032 |
:105E70000000000000000A014B616D6572610000C6 |
:105E80004E6F726D616C00000000803F17B7D13813 |
:0E5E900030FB103A403296020A648403000090 |
:00000001FF |
/branches/Chris_hallo/_Settings.h |
---|
0,0 → 1,50 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Testmodi |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define MOTOR_OFF 0 |
#define MOTOR_TEST 0 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Abstimmung |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define ACC_AMPLIFY 16 |
#define FAKTOR_P 1 |
#define FAKTOR_I 0.0001 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Debug-Interface |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define SIO_DEBUG 1 // Soll der Debugger aktiviert sein? |
#define MIN_DEBUG_INTERVALL 250 // in diesem Intervall werden Degugdaten ohne Aufforderung gesendet |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Sender |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define K_NICK 0 |
#define K_ROLL 1 |
#define K_GAS 2 |
#define K_GIER 3 |
#define K_POTI1 4 |
#define K_POTI2 5 |
#define K_POTI3 6 |
#define K_POTI4 7 |
// +++++++++++++++++++++++++++++++ |
// + Getestete Settings: |
// +++++++++++++++++++++++++++++++ |
// Setting: Kamera |
// Stick_P:3 |
// Stick_D:0 |
// Gyro_P: 175 |
// Gyro_I: 175 |
// Ki_Anteil: 10 |
// +++++++++++++++++++++++++++++++ |
// + Getestete Settings: |
// +++++++++++++++++++++++++++++++ |
// Setting: Normal |
// Stick_P:2 |
// Stick_D:8 |
// Gyro_P: 80 |
// Gyro_I: 150 |
// Ki_Anteil: 5 |
/branches/Chris_hallo/analog.c |
---|
0,0 → 1,155 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az, UBat = 100; |
volatile int AccumulateNick = 0, AccumulateRoll = 0, AccumulateGier = 0; |
volatile int accumulate_AccRoll = 0,accumulate_AccNick = 0,accumulate_AccHoch = 0; |
volatile char MessanzahlNick = 0, MessanzahlRoll = 0, MessanzahlGier = 0; |
volatile char messanzahl_AccNick = 0, messanzahl_AccRoll = 0, messanzahl_AccHoch = 0; |
volatile long Luftdruck = 32000; |
volatile int StartLuftdruck; |
volatile unsigned int MessLuftdruck = 1023; |
unsigned char DruckOffsetSetting; |
volatile int HoeheD = 0; |
volatile char messanzahl_Druck; |
volatile int tmpLuftdruck; |
volatile unsigned int ZaehlMessungen = 0; |
//####################################################################################### |
// |
void ADC_Init(void) |
//####################################################################################### |
{ |
ADMUX = 0;//Referenz ist extern |
ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE); |
//Free Running Mode, Division Factor 128, Interrupt on |
} |
void SucheLuftruckOffset(void) |
{ |
unsigned int off; |
for(off=0; off < 250;off++) |
{ |
OCR0A = off; |
Delay_ms(50); |
printf("."); |
if(MessLuftdruck < 900) break; |
} |
DruckOffsetSetting = off; |
Delay_ms(200); |
} |
//####################################################################################### |
// |
SIGNAL(SIG_ADC) |
//####################################################################################### |
{ |
static unsigned char kanal=0,state = 0; |
signed int wert; |
ANALOG_OFF; |
switch(state++) |
{ |
case 0: |
wert = (signed int) AdNeutralGier - ADC; |
AccumulateGier += wert; // |
MessanzahlGier++; |
Mess_Integral_Gier += wert;// / 16; |
Mess_Integral_Gier2 += wert; |
kanal = 1; |
ZaehlMessungen++; |
break; |
case 1: |
wert = (signed int) ADC - AdNeutralRoll; |
Mess_IntegralRoll += wert; |
Mess_IntegralRoll2 += wert; |
if(ADC < 10) wert = -700; |
if(ADC > 1000) wert = +700; |
AccumulateRoll += wert; |
MessanzahlRoll++; |
kanal = 2; |
break; |
case 2: |
wert = (signed int) ADC - AdNeutralNick; |
Mess_IntegralNick += wert; |
Mess_IntegralNick2 += wert; |
if(ADC < 10) wert = -700; |
if(ADC > 1000) wert = +700; |
AccumulateNick += wert; |
MessanzahlNick++; |
kanal = 4; |
break; |
case 3: |
UBat = (3 * UBat + ADC / 3) / 4;//(UBat + ((ADC * 39) / 256) + 19) / 2; |
kanal = 6; |
break; |
case 4: |
Aktuell_ay = NeutralAccY - ADC; |
accumulate_AccRoll += Aktuell_ay; |
messanzahl_AccRoll++; |
kanal = 7; |
break; |
case 5: |
Aktuell_ay = ADC - NeutralAccX; |
accumulate_AccNick += Aktuell_ay; |
messanzahl_AccNick++; |
kanal = 5; |
state = 6; |
break; |
case 6: |
accumulate_AccHoch = (signed int) ADC - NeutralAccZ; |
accumulate_AccHoch += abs(Aktuell_ay) / 4 + abs(Aktuell_ax) / 4; |
if(accumulate_AccHoch > 1) |
{ |
if(NeutralAccZ < 800) NeutralAccZ+= 0.02; |
} |
else if(accumulate_AccHoch < -1) |
{ |
if(NeutralAccZ > 600) NeutralAccZ-= 0.02; |
} |
messanzahl_AccHoch = 1; |
Aktuell_az = ADC; |
Mess_Integral_Hoch += accumulate_AccHoch; // Integrieren |
Mess_Integral_Hoch -= Mess_Integral_Hoch / 1024; // dämfen |
// Mess_Integral_Hoch -= Mess_Integral_Hoch / 512; // dämfen |
/* if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
kanal = 3; |
state = 7; |
} |
else |
{ |
kanal = 0; |
state = 0; |
}*/ |
kanal = 3; |
state = 7; |
break; |
case 7: |
tmpLuftdruck += ADC; |
if(++messanzahl_Druck >= 5) |
{ |
MessLuftdruck = ADC; |
messanzahl_Druck = 0; |
HoeheD = (int)(StartLuftdruck - tmpLuftdruck - HoehenWert); // D-Anteil = neuerWert - AlterWert |
Luftdruck = (tmpLuftdruck + 3 * Luftdruck) / 4; |
HoehenWert = StartLuftdruck - Luftdruck; |
tmpLuftdruck = 0; |
} |
kanal = 0; |
state = 0; |
break; |
default: |
kanal = 0; |
state = 0; |
break; |
} |
ADMUX = kanal; |
ANALOG_ON; |
} |
/branches/Chris_hallo/analog.h |
---|
0,0 → 1,23 |
/*####################################################################################### |
#######################################################################################*/ |
extern volatile int UBat; |
extern volatile int AccumulateNick, AccumulateRoll, AccumulateGier,accumulate_AccRoll,accumulate_AccNick,accumulate_AccHoch; |
extern volatile char MessanzahlNick, MessanzahlRoll, MessanzahlGier,messanzahl_AccNick, messanzahl_AccRoll,messanzahl_AccHoch; |
extern volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az; |
extern volatile long Luftdruck; |
extern volatile char messanzahl_Druck; |
extern volatile unsigned int ZaehlMessungen; |
extern unsigned char DruckOffsetSetting; |
extern volatile int HoeheD; |
extern volatile unsigned int MessLuftdruck; |
extern volatile int StartLuftdruck; |
extern unsigned int ReadADC(unsigned char adc_input); |
extern void ADC_Init(void); |
extern void SucheLuftruckOffset(void); |
#define ANALOG_OFF ADCSRA=0 |
#define ANALOG_ON ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE) |
/branches/Chris_hallo/eeprom.c |
---|
--- Chris_hallo/fc.c (nonexistent) |
+++ Chris_hallo/fc.c (revision 171) |
@@ -0,0 +1,828 @@ |
+/*####################################################################################### |
+Flight Control |
+#######################################################################################*/ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Copyright (c) 04.2007 Holger Buss |
+// + Nur für den privaten Gebrauch |
+// + www.MikroKopter.com |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
+// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
+// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
+// + bzgl. der Nutzungsbedingungen aufzunehmen. |
+// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
+// + Verkauf von Luftbildaufnahmen, usw. |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
+// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
+// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
+// + eindeutig als Ursprung verlinkt werden |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
+// + Benutzung auf eigene Gefahr |
+// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
+// + mit unserer Zustimmung zulässig |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
+// + this list of conditions and the following disclaimer. |
+// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
+// + from this software without specific prior written permission. |
+// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
+// + for non-commercial use (directly or indirectly) |
+// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
+// + with our written permission |
+// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
+// + clearly linked as origin |
+// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
+// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
+// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
+// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
+// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
+// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
+// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
+// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
+// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
+// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
+// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
+// + POSSIBILITY OF SUCH DAMAGE. |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+#include "main.h" |
+ |
+unsigned char h,m,s; |
+volatile unsigned char Timeout = 0; |
+volatile int MesswertNick,MesswertRoll,MesswertGier; |
+volatile int AdNeutralNick = 0,AdNeutralRoll = 0,AdNeutralGier = 0; |
+volatile int Mittelwert_AccNick, Mittelwert_AccRoll,Mittelwert_AccHoch, NeutralAccX=0, NeutralAccY=0; |
+volatile float NeutralAccZ = 0; |
+unsigned char CosinusNickWinkel = 0, CosinusRollWinkel = 0; |
+volatile long IntegralNick = 0,IntegralNick2 = 0; |
+volatile long IntegralRoll = 0,IntegralRoll2 = 0; |
+volatile long Integral_Gier = 0; |
+volatile long Mess_IntegralNick = 0,Mess_IntegralNick2 = 0; |
+volatile long Mess_IntegralRoll = 0,Mess_IntegralRoll2 = 0; |
+volatile long Mess_Integral_Gier = 0,Mess_Integral_Gier2 = 0; |
+volatile long Mess_Integral_Hoch = 0; |
+volatile int KompassValue = 0; |
+volatile int KompassStartwert = 0; |
+volatile int KompassRichtung = 0; |
+unsigned char MAX_GAS,MIN_GAS; |
+unsigned char Notlandung = 0; |
+unsigned char HoehenReglerAktiv = 0; |
+ |
+float GyroFaktor; |
+float IntegralFaktor; |
+ |
+volatile int DiffNick,DiffRoll; |
+int Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0; |
+volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count; |
+unsigned char MotorWert[5]; |
+volatile unsigned char SenderOkay = 0; |
+int StickNick = 0,StickRoll = 0,StickGier = 0; |
+char MotorenEin = 0; |
+int HoehenWert = 0; |
+int SollHoehe = 0; |
+ |
+float Kp = FAKTOR_P; |
+float Ki = FAKTOR_I; |
+ |
+unsigned char Parameter_Luftdruck_D = 48; // Wert : 0-250 |
+unsigned char Parameter_MaxHoehe = 251; // Wert : 0-250 |
+unsigned char Parameter_Hoehe_P = 16; // Wert : 0-32 |
+unsigned char Parameter_Hoehe_ACC_Wirkung = 58; // Wert : 0-250 |
+unsigned char Parameter_KompassWirkung = 64; // Wert : 0-250 |
+unsigned char Parameter_Gyro_P = 50; // Wert : 10-250 |
+unsigned char Parameter_Gyro_I = 150; // Wert : 0-250 |
+unsigned char Parameter_Gier_P = 2; // Wert : 1-20 |
+unsigned char Parameter_I_Faktor = 10; // Wert : 1-20 |
+unsigned char Parameter_UserParam1 = 0; |
+unsigned char Parameter_UserParam2 = 0; |
+unsigned char Parameter_UserParam3 = 0; |
+unsigned char Parameter_UserParam4 = 0; |
+unsigned char Parameter_ServoNickControl = 100; |
+struct mk_param_struct EE_Parameter; |
+ |
+void Piep(unsigned char Anzahl) |
+{ |
+ while(Anzahl--) |
+ { |
+ if(MotorenEin) return; //auf keinen Fall im Flug! |
+ beeptime = 100; |
+ Delay_ms(250); |
+ } |
+} |
+ |
+//############################################################################ |
+// Nullwerte ermitteln |
+void SetNeutral(void) |
+//############################################################################ |
+{ |
+ unsigned int timer; |
+ NeutralAccX = 0; |
+ NeutralAccY = 0; |
+ NeutralAccZ = 0; |
+ AdNeutralNick = 0; |
+ AdNeutralRoll = 0; |
+ AdNeutralGier = 0; |
+ CalibrierMittelwert(); |
+ timer = SetDelay(5); |
+ while (!CheckDelay(timer)); |
+ CalibrierMittelwert(); |
+ if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
+ { |
+ if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
+ } |
+ AdNeutralNick= abs(MesswertNick); |
+ AdNeutralRoll= abs(MesswertRoll); |
+ AdNeutralGier= abs(MesswertGier); |
+ NeutralAccY = abs(Mittelwert_AccRoll) / ACC_AMPLIFY; |
+ NeutralAccX = abs(Mittelwert_AccNick) / ACC_AMPLIFY; |
+ NeutralAccZ = Aktuell_az; |
+ |
+ Mess_IntegralNick = 0; |
+ Mess_IntegralNick2 = 0; |
+ Mess_IntegralRoll = 0; |
+ Mess_IntegralRoll2 = 0; |
+ Mess_Integral_Gier = 0; |
+ MesswertNick = 0; |
+ MesswertRoll = 0; |
+ MesswertGier = 0; |
+ StartLuftdruck = Luftdruck; |
+ HoeheD = 0; |
+ Mess_Integral_Hoch = 0; |
+ KompassStartwert = KompassValue; |
+ beeptime = 50; |
+} |
+ |
+//############################################################################ |
+// Bildet den Mittelwert aus den Messwerten |
+void Mittelwert(void) |
+//############################################################################ |
+{ |
+ // ADC auschalten, damit die Werte sich nicht während der Berechnung ändern |
+ ANALOG_OFF; |
+ if(MessanzahlNick) (MesswertNick = AccumulateNick / MessanzahlNick); |
+ if(MessanzahlRoll) (MesswertRoll = AccumulateRoll / MessanzahlRoll); |
+ if(MessanzahlGier) (MesswertGier = AccumulateGier / MessanzahlGier); |
+ if(messanzahl_AccNick) Mittelwert_AccNick = ((long)Mittelwert_AccNick * 7 + ((ACC_AMPLIFY * (long)accumulate_AccNick) / messanzahl_AccNick)) / 8L; |
+ if(messanzahl_AccRoll) Mittelwert_AccRoll = ((long)Mittelwert_AccRoll * 7 + ((ACC_AMPLIFY * (long)accumulate_AccRoll) / messanzahl_AccRoll)) / 8L; |
+ if(messanzahl_AccHoch) Mittelwert_AccHoch = ((long)Mittelwert_AccHoch * 7 + ((long)accumulate_AccHoch) / messanzahl_AccHoch) / 8L; |
+ AccumulateNick = 0; MessanzahlNick = 0; |
+ AccumulateRoll = 0; MessanzahlRoll = 0; |
+ AccumulateGier = 0; MessanzahlGier = 0; |
+ accumulate_AccRoll = 0;messanzahl_AccRoll = 0; |
+ accumulate_AccNick = 0;messanzahl_AccNick = 0; |
+ accumulate_AccHoch = 0;messanzahl_AccHoch = 0; |
+ Integral_Gier = Mess_Integral_Gier; |
+// Integral_Gier2 = Mess_Integral_Gier2; |
+ IntegralNick = Mess_IntegralNick; |
+ IntegralRoll = Mess_IntegralRoll; |
+ IntegralNick2 = Mess_IntegralNick2; |
+ IntegralRoll2 = Mess_IntegralRoll2; |
+ // ADC einschalten |
+ ANALOG_ON; |
+ |
+//------------------------------------------------------------------------------ |
+ if(MesswertNick > 200) MesswertNick += 4 * (MesswertNick - 200); |
+ else |
+ if(MesswertNick < -200) MesswertNick += 4 * (MesswertNick + 200); |
+ |
+ if(MesswertRoll > 200) MesswertRoll += 4 * (MesswertRoll - 200); |
+ else |
+ if(MesswertRoll < -200) MesswertRoll += 4 * (MesswertRoll + 200); |
+//------------------------------------------------------------------------------ |
+ if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--; |
+ if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--; |
+ if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--; |
+ if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--; |
+ if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255; |
+ if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255; |
+ if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255; |
+ if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255; |
+} |
+ |
+//############################################################################ |
+// Messwerte beim Ermitteln der Nullage |
+void CalibrierMittelwert(void) |
+//############################################################################ |
+{ |
+ // ADC auschalten, damit die Werte sich nicht während der Berechnung ändern |
+ ANALOG_OFF; |
+ if(MessanzahlNick) (MesswertNick = AccumulateNick / MessanzahlNick); |
+ if(MessanzahlRoll) (MesswertRoll = AccumulateRoll / MessanzahlRoll); |
+ if(MessanzahlGier) (MesswertGier = AccumulateGier / MessanzahlGier); |
+ if(messanzahl_AccNick) Mittelwert_AccNick = ((ACC_AMPLIFY * (long)accumulate_AccNick) / messanzahl_AccNick); |
+ if(messanzahl_AccRoll) Mittelwert_AccRoll = (ACC_AMPLIFY * (long)accumulate_AccRoll) / messanzahl_AccRoll; |
+ if(messanzahl_AccHoch) Mittelwert_AccHoch = ((long)accumulate_AccHoch) / messanzahl_AccHoch; |
+ AccumulateNick = 0; MessanzahlNick = 0; |
+ AccumulateRoll = 0; MessanzahlRoll = 0; |
+ AccumulateGier = 0; MessanzahlGier = 0; |
+ accumulate_AccRoll = 0;messanzahl_AccRoll = 0; |
+ accumulate_AccNick = 0;messanzahl_AccNick = 0; |
+ accumulate_AccHoch = 0;messanzahl_AccHoch = 0; |
+ // ADC einschalten |
+ ANALOG_ON; |
+ if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--; |
+ if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--; |
+ if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--; |
+ if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--; |
+ if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255; |
+ if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255; |
+ if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255; |
+ if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255; |
+} |
+ |
+//############################################################################ |
+// Senden der Motorwerte per I2C-Bus |
+void SendMotorData(void) |
+//############################################################################ |
+{ |
+ if(MOTOR_OFF || !MotorenEin) |
+ { |
+ Motor_Hinten = 0; |
+ Motor_Vorne = 0; |
+ Motor_Rechts = 0; |
+ Motor_Links = 0; |
+ if(MotorTest[0]) Motor_Vorne = MotorTest[0]; |
+ if(MotorTest[1]) Motor_Hinten = MotorTest[1]; |
+ if(MotorTest[2]) Motor_Links = MotorTest[2]; |
+ if(MotorTest[3]) Motor_Rechts = MotorTest[3]; |
+ } |
+ |
+ DebugOut.Analog[12] = Motor_Vorne; |
+ DebugOut.Analog[13] = Motor_Hinten; |
+ DebugOut.Analog[14] = Motor_Links; |
+ DebugOut.Analog[15] = Motor_Rechts; |
+ |
+ //Start I2C Interrupt Mode |
+ twi_state = 0; |
+ motor = 0; |
+ i2c_start(); |
+} |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Konstanten |
+// + 0-250 -> normale Werte |
+// + 251 -> Poti1 |
+// + 252 -> Poti2 |
+// + 253 -> Poti3 |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+void DefaultKonstanten1(void) |
+{ |
+ EE_Parameter.Kanalbelegung[K_NICK] = 1; |
+ EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
+ EE_Parameter.Kanalbelegung[K_GAS] = 3; |
+ EE_Parameter.Kanalbelegung[K_GIER] = 4; |
+ EE_Parameter.Kanalbelegung[K_POTI1] = 5; |
+ EE_Parameter.Kanalbelegung[K_POTI2] = 6; |
+ EE_Parameter.Kanalbelegung[K_POTI3] = 7; |
+ EE_Parameter.Kanalbelegung[K_POTI4] = 8; |
+ EE_Parameter.GlobalConfig = 0;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV | CFG_KOMPASS_FIX;//0x01; |
+ EE_Parameter.Hoehe_MinGas = 30; |
+ EE_Parameter.MaxHoehe = 251; // Wert : 0-32 251 -> Poti1 |
+ EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
+ EE_Parameter.Luftdruck_D = 70; // Wert : 0-250 |
+ EE_Parameter.Hoehe_ACC_Wirkung = 30; // Wert : 0-250 |
+ EE_Parameter.Hoehe_Verstaerkung = 2; // Wert : 0-50 |
+ EE_Parameter.Stick_P = 4; //2 // Wert : 1-6 |
+ EE_Parameter.Stick_D = 8; //8 // Wert : 0-64 |
+ EE_Parameter.Gier_P = 16; // Wert : 1-20 |
+ EE_Parameter.Gas_Min = 15; // Wert : 0-32 |
+ EE_Parameter.Gas_Max = 250; // Wert : 33-250 |
+ EE_Parameter.GyroAccFaktor = 26; // Wert : 1-64 |
+ EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
+ EE_Parameter.Gyro_P = 120; //80 // Wert : 0-250 |
+ EE_Parameter.Gyro_I = 150; // Wert : 0-250 |
+ EE_Parameter.UnterspannungsWarnung = 90; // Wert : 0-250 |
+ EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
+ EE_Parameter.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
+ EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
+ EE_Parameter.I_Faktor = 5; |
+ EE_Parameter.UserParam1 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam2 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam3 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam4 = 0; //zur freien Verwendung |
+ EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
+ EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
+ EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
+ EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
+ EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
+ EE_Parameter.ServoNickRefresh = 5; |
+ memcpy(EE_Parameter.Name, "Normal\0", 12); |
+} |
+ |
+void DefaultKonstanten2(void) |
+{ |
+ EE_Parameter.Kanalbelegung[K_NICK] = 1; |
+ EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
+ EE_Parameter.Kanalbelegung[K_GAS] = 3; |
+ EE_Parameter.Kanalbelegung[K_GIER] = 4; |
+ EE_Parameter.Kanalbelegung[K_POTI1] = 5; |
+ EE_Parameter.Kanalbelegung[K_POTI2] = 6; |
+ EE_Parameter.Kanalbelegung[K_POTI3] = 7; |
+ EE_Parameter.GlobalConfig = 0;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV;//0x01; |
+ EE_Parameter.Hoehe_MinGas = 30; |
+ EE_Parameter.MaxHoehe = 251; // Wert : 0-32 251 -> Poti1 |
+ EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
+ EE_Parameter.Luftdruck_D = 50; // Wert : 0-250 |
+ EE_Parameter.Hoehe_ACC_Wirkung = 50; // Wert : 0-250 |
+ EE_Parameter.Hoehe_Verstaerkung = 2; // Wert : 0-50 |
+ EE_Parameter.Stick_P = 4; //2 // Wert : 1-6 |
+ EE_Parameter.Stick_D = 0; //8 // Wert : 0-64 |
+ EE_Parameter.Gier_P = 16; // Wert : 1-20 |
+ EE_Parameter.Gas_Min = 15; // Wert : 0-32 |
+ EE_Parameter.Gas_Max = 250; // Wert : 33-250 |
+ EE_Parameter.GyroAccFaktor = 26; // Wert : 1-64 |
+ EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
+ EE_Parameter.Gyro_P = 175; //80 // Wert : 0-250 |
+ EE_Parameter.Gyro_I = 175; // Wert : 0-250 |
+ EE_Parameter.UnterspannungsWarnung = 90; // Wert : 0-250 |
+ EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
+ EE_Parameter.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
+ EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
+ EE_Parameter.I_Faktor = 5; |
+ EE_Parameter.UserParam1 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam2 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam3 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam4 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam3 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam4 = 0; //zur freien Verwendung |
+ EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
+ EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
+ EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
+ EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
+ EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
+ EE_Parameter.ServoNickRefresh = 5; |
+ memcpy(EE_Parameter.Name, "Kamera\0", 12); |
+} |
+ |
+ |
+//############################################################################ |
+// Trägt ggf. das Poti als Parameter ein |
+void ParameterZuordnung(void) |
+//############################################################################ |
+{ |
+ |
+ #define CHK_POTI(b,a,min,max) { if(a > 250) { if(a == 251) b = Poti1; else if(a == 252) b = Poti2; else if(a == 253) b = Poti3; else if(a == 254) b = Poti4;} else b = a; if(b <= min) b = min; else if(b >= max) b = max;} |
+ CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe,0,255); |
+ CHK_POTI(Parameter_Luftdruck_D,EE_Parameter.Luftdruck_D,0,100); |
+ CHK_POTI(Parameter_Hoehe_P,EE_Parameter.Hoehe_P,0,100); |
+ CHK_POTI(Parameter_Hoehe_ACC_Wirkung,EE_Parameter.Hoehe_ACC_Wirkung,0,255); |
+ CHK_POTI(Parameter_KompassWirkung,EE_Parameter.KompassWirkung,0,255); |
+ CHK_POTI(Parameter_Gyro_P,EE_Parameter.Gyro_P,10,255); |
+ CHK_POTI(Parameter_Gyro_I,EE_Parameter.Gyro_I,0,255); |
+ CHK_POTI(Parameter_I_Faktor,EE_Parameter.I_Faktor,0,255); |
+ CHK_POTI(Parameter_UserParam1,EE_Parameter.UserParam1,0,255); |
+ CHK_POTI(Parameter_UserParam2,EE_Parameter.UserParam2,0,255); |
+ CHK_POTI(Parameter_UserParam3,EE_Parameter.UserParam3,0,255); |
+ CHK_POTI(Parameter_UserParam4,EE_Parameter.UserParam4,0,255); |
+ |
+ unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
+ unsigned char ServoNickCompInvert; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
+ unsigned char ServoNickMin; // Wert : 0-250 // Anschlag |
+ unsigned char ServoNickMax; // Wert : 0-250 // Anschlag |
+ |
+ |
+ CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
+ CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
+ CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
+ |
+ Ki = (float) Parameter_I_Faktor * 0.0001; |
+ MAX_GAS = EE_Parameter.Gas_Max; |
+ MIN_GAS = EE_Parameter.Gas_Min; |
+} |
+ |
+ |
+//############################################################################ |
+// |
+void MotorRegler(void) |
+//############################################################################ |
+{ |
+ int motorwert,pd_ergebnis,h,tmp_int; |
+ int GierMischanteil,GasMischanteil; |
+ static long SummeNick=0,SummeRoll=0; |
+ static long sollGier = 0,tmp_long,tmp_long2; |
+ static int IntegralFehlerNick = 0; |
+ static int IntegralFehlerRoll = 0; |
+ static unsigned int RcLostTimer; |
+ static unsigned char delay_neutral = 0; |
+ static unsigned char delay_einschalten = 0,delay_ausschalten = 0; |
+ static unsigned int modell_fliegt = 0; |
+ static int hoehenregler = 0; |
+ static char TimerWerteausgabe = 0; |
+ static char NeueKompassRichtungMerken = 0; |
+ Mittelwert(); |
+ |
+ GRN_ON; |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gaswert ermitteln |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ GasMischanteil = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 120; |
+ if(GasMischanteil < 0) GasMischanteil = 0; |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Emfang schlecht |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(SenderOkay < 100) |
+ { |
+ if(!PcZugriff) beeptime = 500; |
+ if(RcLostTimer) RcLostTimer--; |
+ else |
+ { |
+ MotorenEin = 0; |
+ Notlandung = 0; |
+ } |
+ ROT_ON; |
+ if(modell_fliegt > 2000) // wahrscheinlich in der Luft --> langsam absenken |
+ { |
+ GasMischanteil = EE_Parameter.NotGas; |
+ Notlandung = 1; |
+ PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] = 0; |
+ PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] = 0; |
+ PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] = 0; |
+/* Poti1 = 65; |
+ Poti2 = 48; |
+ Poti3 = 0; |
+*/ } |
+ else MotorenEin = 0; |
+ } |
+ else |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Emfang gut |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(SenderOkay > 140) |
+ { |
+ Notlandung = 0; |
+ RcLostTimer = EE_Parameter.NotGasZeit * 50; |
+ if(GasMischanteil > 40) |
+ { |
+ if(modell_fliegt < 0xffff) modell_fliegt++; |
+ } |
+ if((modell_fliegt < 200) || (GasMischanteil < 40)) |
+ { |
+ SummeNick = 0; |
+ SummeRoll = 0; |
+ Mess_Integral_Gier = 0; |
+ Mess_Integral_Gier2 = 0; |
+ } |
+ if((GasMischanteil > 200) && MotorenEin == 0) |
+ { |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// auf Nullwerte kalibrieren |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) // Neutralwerte |
+ { |
+ unsigned char setting; |
+ if(++delay_neutral > 200) // nicht sofort |
+ { |
+ GRN_OFF; |
+ SetNeutral(); |
+ MotorenEin = 0; |
+ delay_neutral = 0; |
+ modell_fliegt = 0; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70 || abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) > 70) |
+ { |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 1; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 2; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5; |
+ eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], setting); // aktiven Datensatz merken |
+ } |
+ ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
+ Piep(GetActiveParamSetNumber()); |
+ if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
+ { |
+ if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
+ } |
+ } |
+ } |
+ else delay_neutral = 0; |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gas ist unten |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(GasMischanteil < 35) |
+ { |
+ // Starten |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75) |
+ { |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Einschalten |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(++delay_einschalten > 200) |
+ { |
+ delay_einschalten = 200; |
+ modell_fliegt = 1; |
+ MotorenEin = 1; |
+ sollGier = 0; |
+ Mess_Integral_Gier = 0; |
+ Mess_Integral_Gier2 = 0; |
+ Mess_IntegralNick = 0; |
+ Mess_IntegralRoll = 0; |
+ Mess_IntegralNick2 = IntegralNick; |
+ Mess_IntegralRoll2 = IntegralRoll; |
+ SummeNick = 0; |
+ SummeRoll = 0; |
+ } |
+ } |
+ else delay_einschalten = 0; |
+ //Auf Neutralwerte setzen |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Auschalten |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) |
+ { |
+ if(++delay_ausschalten > 200) // nicht sofort |
+ { |
+ MotorenEin = 0; |
+ delay_ausschalten = 200; |
+ modell_fliegt = 0; |
+ } |
+ } |
+ else delay_ausschalten = 0; |
+ } |
+ } |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// neue Werte von der Funke |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(!NewPpmData-- || Notlandung) |
+ { |
+ ParameterZuordnung(); |
+ StickNick = PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P; |
+ StickNick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D; |
+ StickRoll = PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P; |
+ StickRoll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D; |
+ StickGier = -PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]; |
+ |
+ GyroFaktor = ((float)Parameter_Gyro_P + 10.0) / 256.0; |
+ IntegralFaktor = ((float) Parameter_Gyro_I) / 44000; |
+ |
+ if(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor = 0; |
+ if(GyroFaktor < 0) GyroFaktor = 0; |
+ if(IntegralFaktor < 0) IntegralFaktor = 0; |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Bei Empfangsausfall im Flug |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(Notlandung) |
+ { |
+ StickGier = 0; |
+ StickNick = 0; |
+ StickRoll = 0; |
+ GyroFaktor = 0.1; |
+ IntegralFaktor = 0.005; |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gyro-Drift kompensieren |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define DRIFT_FAKTOR 3 |
+ if(ZaehlMessungen >= 1000 / DRIFT_FAKTOR) |
+ { |
+ IntegralFehlerNick = IntegralNick2 - IntegralNick; |
+ IntegralFehlerRoll = IntegralRoll2 - IntegralRoll; |
+ ZaehlMessungen = 0; |
+ if(IntegralFehlerNick > 500/DRIFT_FAKTOR) AdNeutralNick++; |
+ if(IntegralFehlerNick < -500/DRIFT_FAKTOR) AdNeutralNick--; |
+ if(IntegralFehlerRoll > 500/DRIFT_FAKTOR) AdNeutralRoll++; |
+ if(IntegralFehlerRoll < -500/DRIFT_FAKTOR) AdNeutralRoll--; |
+ if(Mess_Integral_Gier2 > 500/DRIFT_FAKTOR) AdNeutralGier--; |
+ if(Mess_Integral_Gier2 <-500/DRIFT_FAKTOR) AdNeutralGier++; |
+ ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
+ Mess_IntegralNick2 = IntegralNick; |
+ Mess_IntegralRoll2 = IntegralRoll; |
+ Mess_Integral_Gier2 = Integral_Gier; |
+ ANALOG_ON; // ADC einschalten |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Integrale auf ACC-Signal abgleichen |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick) / 16; |
+ tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll) / 16; |
+#define AUSGLEICH 500 |
+ if(tmp_long > AUSGLEICH) tmp_long = AUSGLEICH; |
+ if(tmp_long < -AUSGLEICH) tmp_long =-AUSGLEICH; |
+ if(tmp_long2 > AUSGLEICH) tmp_long2 = AUSGLEICH; |
+ if(tmp_long2 <-AUSGLEICH) tmp_long2 =-AUSGLEICH; |
+ ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
+ Mess_IntegralNick -= tmp_long; |
+ Mess_IntegralRoll -= tmp_long2; |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gieren |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ sollGier = StickGier; |
+ if(abs(StickGier) > 35) |
+ { |
+ if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX)) NeueKompassRichtungMerken = 1; |
+ } |
+ tmp_int = EE_Parameter.Gier_P * (sollGier * abs(sollGier)) / 256; // expo |
+ Mess_Integral_Gier -= tmp_int; |
+ if(Mess_Integral_Gier > 30000) Mess_Integral_Gier = 30000; // begrenzen |
+ if(Mess_Integral_Gier <-30000) Mess_Integral_Gier =-30000; |
+ |
+ ANALOG_ON; // ADC einschalten |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Kompass |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ //KompassValue = 12; |
+ if(KompassValue && (EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV)) |
+ { |
+ int w,v; |
+ static int SignalSchlecht = 0; |
+ w = abs(IntegralNick /512); // mit zunehmender Neigung den Einfluss drosseln |
+ v = abs(IntegralRoll /512); |
+ if(v > w) w = v; // grösste Neigung ermitteln |
+ if(w < 25 && NeueKompassRichtungMerken && !SignalSchlecht) |
+ { |
+ KompassStartwert = KompassValue; |
+ NeueKompassRichtungMerken = 0; |
+ } |
+ w = (w * Parameter_KompassWirkung) / 64; // auf die Wirkung normieren |
+ w = Parameter_KompassWirkung - w; // Wirkung ggf drosseln |
+ if(w > 0) |
+ { |
+ ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
+ if(!SignalSchlecht) Mess_Integral_Gier += (KompassRichtung * w) / 32; // nach Kompass ausrichten |
+ ANALOG_ON; // ADC einschalten |
+ if(SignalSchlecht) SignalSchlecht--; |
+ } |
+ else SignalSchlecht = 500; // so lange das Signal taub stellen --> ca. 1 sek |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// GPS |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+if(EE_Parameter.GlobalConfig & CFG_GPS_AKTIV) |
+{ |
+ gps_p = Parameter_UserParam1; |
+ gps_d = Parameter_UserParam2; |
+ |
+ gps_main(); |
+} |
+else |
+{ |
+ GPS_Nick = 0; |
+ GPS_Roll = 0; |
+} |
+ |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Debugwerte zuordnen |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+DebugOut.Sekunden++; |
+ if(!TimerWerteausgabe--) |
+ { |
+ TimerWerteausgabe = 49; |
+// DebugOut.Analog[0] = MesswertNick; |
+// DebugOut.Analog[1] = MesswertRoll; |
+// DebugOut.Analog[2] = MesswertGier; |
+ DebugOut.Analog[0] = IntegralNick / EE_Parameter.GyroAccFaktor; |
+ DebugOut.Analog[1] = IntegralRoll / EE_Parameter.GyroAccFaktor; |
+ DebugOut.Analog[2] = Mittelwert_AccNick; |
+ DebugOut.Analog[3] = Mittelwert_AccRoll; |
+ DebugOut.Analog[4] = MesswertGier; |
+ DebugOut.Analog[5] = HoehenWert; |
+ DebugOut.Analog[6] = (Mess_Integral_Hoch / 512); |
+ DebugOut.Analog[7] = GasMischanteil; |
+ DebugOut.Analog[8] = KompassValue; |
+// DebugOut.Analog[9] = SollHoehe; |
+// DebugOut.Analog[10] = Mess_Integral_Gier / 128; |
+// DebugOut.Analog[11] = KompassStartwert; |
+// DebugOut.Analog[10] = Parameter_Gyro_I; |
+// DebugOut.Analog[10] = EE_Parameter.Gyro_I; |
+// DebugOut.Analog[9] = KompassRichtung; |
+// DebugOut.Analog[10] = GasMischanteil; |
+// DebugOut.Analog[3] = HoeheD * 32; |
+// DebugOut.Analog[4] = hoehenregler; |
+ } |
+ |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Drehgeschwindigkeit und -winkel zu einem Istwert zusammenfassen |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ MesswertNick = IntegralNick * IntegralFaktor + MesswertNick * GyroFaktor; |
+ MesswertRoll = IntegralRoll * IntegralFaktor + MesswertRoll * GyroFaktor; |
+ MesswertGier = MesswertGier * (GyroFaktor/2) + Integral_Gier * IntegralFaktor; |
+ |
+ // Maximalwerte abfangen |
+ #define MAX_SENSOR 2048 |
+ if(MesswertNick > MAX_SENSOR) MesswertNick = MAX_SENSOR; |
+ if(MesswertNick < -MAX_SENSOR) MesswertNick = -MAX_SENSOR; |
+ if(MesswertRoll > MAX_SENSOR) MesswertRoll = MAX_SENSOR; |
+ if(MesswertRoll < -MAX_SENSOR) MesswertRoll = -MAX_SENSOR; |
+ if(MesswertGier > MAX_SENSOR) MesswertGier = MAX_SENSOR; |
+ if(MesswertGier < -MAX_SENSOR) MesswertGier = -MAX_SENSOR; |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Höhenregelung |
+// Die Höhenregelung schwächt lediglich das Gas ab, erhöht es allerdings nicht |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+//OCR0B = 180 - (Poti1 + 120) / 4; |
+//DruckOffsetSetting = OCR0B; |
+ if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung |
+ { |
+ int tmp_int; |
+ if(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER) // Regler wird über Schalter gesteuert |
+ { |
+ if(Parameter_MaxHoehe < 50) |
+ { |
+ SollHoehe = HoehenWert - 20; // Parameter_MaxHoehe ist der PPM-Wert des Schalters |
+ HoehenReglerAktiv = 0; |
+ } |
+ else |
+ HoehenReglerAktiv = 1; |
+ } |
+ else |
+ { |
+ SollHoehe = Parameter_MaxHoehe * EE_Parameter.Hoehe_Verstaerkung - 20; |
+ HoehenReglerAktiv = 1; |
+ } |
+ |
+ if(Notlandung) SollHoehe = 0; |
+ h = HoehenWert; |
+ if((h > SollHoehe) && HoehenReglerAktiv) // zu hoch --> drosseln |
+ { h = ((h - SollHoehe) * (int) Parameter_Hoehe_P) / 16; // Differenz bestimmen --> P-Anteil |
+ h = GasMischanteil - h; // vom Gas abziehen |
+ h -= (HoeheD * Parameter_Luftdruck_D)/8; // D-Anteil |
+ tmp_int = ((Mess_Integral_Hoch / 512) * (signed long) Parameter_Hoehe_ACC_Wirkung) / 32; |
+ if(tmp_int > 50) tmp_int = 50; |
+ else if(tmp_int < -50) tmp_int = -50; |
+ h -= tmp_int; |
+ hoehenregler = (hoehenregler*15 + h) / 16; |
+ if(hoehenregler < EE_Parameter.Hoehe_MinGas) // nicht unter MIN |
+ { |
+ if(GasMischanteil >= EE_Parameter.Hoehe_MinGas) hoehenregler = EE_Parameter.Hoehe_MinGas; |
+ if(GasMischanteil < EE_Parameter.Hoehe_MinGas) hoehenregler = GasMischanteil; |
+ } |
+ if(hoehenregler > GasMischanteil) hoehenregler = GasMischanteil; // nicht mehr als Gas |
+ GasMischanteil = hoehenregler; |
+ } |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Mischer und PI-Regler |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gier-Anteil |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ GierMischanteil = MesswertGier - sollGier; // Regler für Gier |
+ if(GierMischanteil > 100) GierMischanteil = 100; |
+ if(GierMischanteil < -100) GierMischanteil = -100; |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Nick-Achse |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ DiffNick = Kp * (MesswertNick - (StickNick - GPS_Nick)); // Differenz bestimmen |
+ SummeNick += DiffNick; // I-Anteil |
+ if(SummeNick > 0) SummeNick-= (abs(SummeNick)/256 + 1); else SummeNick += abs(SummeNick)/256 + 1; |
+ if(SummeNick > 16000) SummeNick = 16000; |
+ if(SummeNick < -16000) SummeNick = -16000; |
+ pd_ergebnis = DiffNick + Ki * SummeNick; // PI-Regler für Nick |
+ // Motor Vorn |
+ motorwert = GasMischanteil + pd_ergebnis + GierMischanteil; // Mischer |
+ if ((motorwert < 0) | (GasMischanteil < 10)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Vorne = motorwert; |
+ // Motor Heck |
+ motorwert = GasMischanteil - pd_ergebnis + GierMischanteil; |
+ if ((motorwert < 0) | (GasMischanteil < 10)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Hinten = motorwert; |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Roll-Achse |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ DiffRoll = Kp * (MesswertRoll - (StickRoll - GPS_Roll)); // Differenz bestimmen |
+ SummeRoll += DiffRoll; // I-Anteil |
+ if(SummeRoll > 0) SummeRoll-= (abs(SummeRoll)/256 + 1); else SummeRoll += abs(SummeRoll)/256 + 1; |
+ if(SummeRoll > 16000) SummeRoll = 16000; |
+ if(SummeRoll < -16000) SummeRoll = -16000; |
+ pd_ergebnis = DiffRoll + Ki * SummeRoll; // PI-Regler für Roll |
+ // Motor Links |
+ motorwert = GasMischanteil + pd_ergebnis - GierMischanteil; |
+ if ((motorwert < 0) | (GasMischanteil < 10)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Links = motorwert; |
+ // Motor Rechts |
+ motorwert = GasMischanteil - pd_ergebnis - GierMischanteil; |
+ if ((motorwert < 0) | (GasMischanteil < 10)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Rechts = motorwert; |
+ // +++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+} |
+ |
/branches/Chris_hallo/fc.h |
---|
0,0 → 1,106 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
#ifndef _FC_H |
#define _FC_H |
extern volatile unsigned char Timeout; |
extern unsigned char Sekunde,Minute; |
extern volatile long IntegralNick,IntegralNick2; |
extern volatile long IntegralRoll,IntegralRoll2; |
extern volatile long Mess_IntegralNick,Mess_IntegralNick2; |
extern volatile long Mess_IntegralRoll,Mess_IntegralRoll2; |
extern volatile long Mess_Integral_Hoch; |
extern volatile long Integral_Gier,Mess_Integral_Gier,Mess_Integral_Gier2; |
extern volatile int KompassValue; |
extern volatile int KompassStartwert; |
extern volatile int KompassRichtung; |
extern int HoehenWert; |
extern int SollHoehe; |
extern volatile int MesswertNick,MesswertRoll,MesswertGier; |
extern volatile int AdNeutralNick,AdNeutralRoll,AdNeutralGier, Mittelwert_AccNick, Mittelwert_AccRoll; |
extern volatile int NeutralAccX, NeutralAccY,Mittelwert_AccHoch; |
extern volatile float NeutralAccZ; |
void MotorRegler(void); |
void SendMotorData(void); |
void CalibrierMittelwert(void); |
void Mittelwert(void); |
void SetNeutral(void); |
unsigned char h,m,s; |
volatile unsigned char Timeout ; |
unsigned char CosinusNickWinkel, CosinusRollWinkel; |
volatile long IntegralNick,IntegralNick2; |
volatile long IntegralRoll,IntegralRoll2; |
volatile long Integral_Gier; |
volatile long Mess_IntegralNick,Mess_IntegralNick2; |
volatile long Mess_IntegralRoll,Mess_IntegralRoll2; |
volatile long Mess_Integral_Gier; |
volatile int DiffNick,DiffRoll; |
extern int Poti1, Poti2, Poti3, Poti4; |
volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count; |
unsigned char MotorWert[5]; |
volatile unsigned char SenderOkay; |
int StickNick,StickRoll,StickGier; |
char MotorenEin; |
extern void DefaultKonstanten(void); |
#define STRUCT_PARAM_LAENGE 58 |
struct mk_param_struct |
{ |
unsigned char Kanalbelegung[8]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3 |
unsigned char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv |
unsigned char Hoehe_MinGas; // Wert : 0-100 |
unsigned char Luftdruck_D; // Wert : 0-250 |
unsigned char MaxHoehe; // Wert : 0-32 |
unsigned char Hoehe_P; // Wert : 0-32 |
unsigned char Hoehe_Verstaerkung; // Wert : 0-50 |
unsigned char Hoehe_ACC_Wirkung; // Wert : 0-250 |
unsigned char Stick_P; // Wert : 1-6 |
unsigned char Stick_D; // Wert : 0-64 |
unsigned char Gier_P; // Wert : 1-20 |
unsigned char Gas_Min; // Wert : 0-32 |
unsigned char Gas_Max; // Wert : 33-250 |
unsigned char GyroAccFaktor; // Wert : 1-64 |
unsigned char KompassWirkung; // Wert : 0-32 |
unsigned char Gyro_P; // Wert : 10-250 |
unsigned char Gyro_I; // Wert : 0-250 |
unsigned char UnterspannungsWarnung; // Wert : 0-250 |
unsigned char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust |
unsigned char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen |
unsigned char UfoAusrichtung; // X oder + Formation |
unsigned char I_Faktor; // Wert : 0-250 |
unsigned char UserParam1; // Wert : 0-250 |
unsigned char UserParam2; // Wert : 0-250 |
unsigned char UserParam3; // Wert : 0-250 |
unsigned char UserParam4; // Wert : 0-250 |
unsigned char ServoNickControl; // Wert : 0-250 // Stellung des Servos |
unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
unsigned char ServoNickMin; // Wert : 0-250 // Anschlag |
unsigned char ServoNickMax; // Wert : 0-250 // Anschlag |
unsigned char ServoNickRefresh; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
unsigned char ServoNickCompInvert; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
unsigned char Reserved[7]; |
char Name[12]; |
}; |
extern struct mk_param_struct EE_Parameter; |
extern unsigned char Parameter_Luftdruck_D; |
extern unsigned char Parameter_MaxHoehe; |
extern unsigned char Parameter_Hoehe_P; |
extern unsigned char Parameter_Hoehe_ACC_Wirkung; |
extern unsigned char Parameter_KompassWirkung; |
extern unsigned char Parameter_Gyro_P; |
extern unsigned char Parameter_Gyro_I; |
extern unsigned char Parameter_Gier_P; |
extern unsigned char Parameter_ServoNickControl; |
#endif //_FC_H |
/branches/Chris_hallo/flight.pnproj |
---|
0,0 → 1,0 |
<Project name="Flight-Ctrl"><File path="uart.h"></File><File path="main.c"></File><File path="main.h"></File><File path="makefile"></File><File path="uart.c"></File><File path="printf_P.h"></File><File path="printf_P.c"></File><File path="timer0.c"></File><File path="timer0.h"></File><File path="old_macros.h"></File><File path="twimaster.c"></File><File path="version.txt"></File><File path="twimaster.h"></File><File path="rc.c"></File><File path="rc.h"></File><File path="fc.h"></File><File path="fc.c"></File><File path="menu.h"></File><File path="menu.c"></File><File path="_Settings.h"></File><File path="analog.c"></File><File path="analog.h"></File><File path="GPS.c"></File><File path="gps.h"></File><File path="License.txt"></File></Project> |
/branches/Chris_hallo/flight.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="Flight-Ctrl" x="true"></e></ViewState></pd> |
/branches/Chris_hallo/format |
---|
0,0 → 1,0 |
5 |
/branches/Chris_hallo/gps.h |
---|
0,0 → 1,4 |
extern signed int GPS_Nick; |
extern signed int GPS_Roll; |
extern void GPS_Neutral(void); |
extern void GPS_BerechneZielrichtung(void); |
/branches/Chris_hallo/main.c |
---|
0,0 → 1,210 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + Nur für den privaten Gebrauch |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten und nicht-kommerziellen Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt und genannt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned char EEPromArray[E2END+1] EEMEM; |
// -- Parametersatz aus EEPROM lesen --- |
// number [0..5] |
void ReadParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if (number > 5) number = 5; |
eeprom_read_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length); |
} |
// -- Parametersatz ins EEPROM schreiben --- |
// number [0..5] |
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if (number > 5) number = 5; |
eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], number); // diesen Parametersatz als aktuell merken |
} |
unsigned char GetActiveParamSetNumber(void) |
{ |
return(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET])); |
} |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
unsigned int timer; |
unsigned int timer2 = 0; |
DDRC = 0x01; // SCL |
PORTC = 0xff; // Pullup SDA |
DDRB = 0x1B; // LEDs und Druckoffset |
PORTB = 0x01; // LED_Rot |
DDRD = 0x3E; // Speaker & TXD & J3 J4 J5 |
DDRD |=0x80; // J7 |
PORTD = 0xF7; // LED |
MCUSR &=~(1<<WDRF); |
WDTCSR |= (1<<WDCE)|(1<<WDE); |
WDTCSR = 0; |
beeptime = 2000; |
StickGier = 0; PPM_in[K_GAS] = 0;StickRoll = 0; StickNick = 0; |
ROT_OFF; |
Timer_Init(); |
UART_Init(); |
rc_sum_init(); |
ADC_Init(); |
i2c_init(); |
sei(); |
VersionInfo.Hauptversion = VERSION_HAUPTVERSION; |
VersionInfo.Nebenversion = VERSION_NEBENVERSION; |
VersionInfo.PCKompatibel = VERSION_KOMPATIBEL; |
printf("\n\rFlightControl V%d.%d ", VERSION_HAUPTVERSION, VERSION_NEBENVERSION); |
printf("\n\r=============================="); |
GRN_ON; |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != 59) // seit V 0.60 |
{ |
printf("\n\rInit. EEPROM: Generiere Default-Parameter..."); |
DefaultKonstanten1(); |
for (unsigned char i=0;i<6;i++) |
{ |
if(i==2) DefaultKonstanten2(); |
WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
} |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], 1); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], 59); |
} |
ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
printf("\n\rBenutze Parametersatz %d", GetActiveParamSetNumber()); |
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
printf("\n\rAbgleich Luftdrucksensor.."); |
timer = SetDelay(2500); |
SucheLuftruckOffset(); |
while (!CheckDelay(timer)); |
printf("OK\n\r"); |
} |
SetNeutral(); |
ROT_OFF; |
beeptime = 2000; |
DebugIn.Analog[1] = 1000; |
DebugIn.Digital[0] = 0x55; |
printf("\n\rSteuerung: "); |
if (EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) printf("HeadingHold"); |
else printf("Neutral"); |
printf("\n\n\r"); |
LcdClear(); |
while (1) |
{ |
if (UpdateMotor) // ReglerIntervall |
{ |
UpdateMotor=0; |
MotorRegler(); |
SendMotorData(); |
ROT_OFF; |
if(PcZugriff) PcZugriff--; |
if(SenderOkay) SenderOkay--; |
if (UBat < EE_Parameter.UnterspannungsWarnung) |
{ |
beeptime = 2000; |
} |
if(!Timeout) |
{ |
i2c_init(); |
} |
else |
{ |
ROT_OFF; |
} |
} |
if(SIO_DEBUG) |
{ |
DatenUebertragung(); |
BearbeiteRxDaten(); |
} |
else BearbeiteRxDaten(); |
if(CheckDelay(timer2)) |
{ |
if(MotorenEin) PORTC ^= 0x10; else PORTC &= ~0x10; |
timer = SetDelay(500); |
} |
} |
return (1); |
} |
/branches/Chris_hallo/main.h |
---|
0,0 → 1,101 |
#ifndef _MAIN_H |
#define _MAIN_H |
//Hier die Quarz Frequenz einstellen |
#if defined (__AVR_ATmega32__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
#endif |
#if defined (__AVR_ATmega644__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
//#define SYSCLK 16000000L //Quarz Frequenz in Hz |
#endif |
// neue Hardware |
#define ROT_OFF PORTB &=~0x01 |
#define ROT_ON PORTB |= 0x01 |
#define ROT_FLASH PORTB ^= 0x01 |
#define GRN_OFF PORTB &=~0x02 |
#define GRN_ON PORTB |= 0x02 |
#define GRN_FLASH PORTD ^= 0x02 |
//#ifndef F_CPU |
//#error ################## F_CPU nicht definiert oder ungültig ############# |
//#endif |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//#define ANZ_MITTELWERT 4 |
#define EEPROM_ADR_VALID 1 |
#define EEPROM_ADR_ACTIVE_SET 2 |
#define EEPROM_ADR_PARAM_BEGIN 100 |
#define CFG_HOEHENREGELUNG 0x01 |
#define CFG_HOEHEN_SCHALTER 0x02 |
#define CFG_HEADING_HOLD 0x04 |
#define CFG_KOMPASS_AKTIV 0x08 |
#define CFG_KOMPASS_FIX 0x10 |
#define CFG_GPS_AKTIV 0x20 |
//#define SYSCLK |
//extern unsigned long SYSCLK; |
extern volatile int i_Nick[20],i_Roll[20],DiffNick,DiffRoll; |
extern volatile unsigned char SenderOkay; |
extern unsigned char CosinusNickWinkel, CosinusRollWinkel; |
extern void ReadParameterSet (unsigned char number, unsigned char *buffer, unsigned char length); |
extern void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length); |
extern unsigned char GetActiveParamSetNumber(void); |
extern unsigned char EEPromArray[]; |
long durchschnitt_northing; |
long durchschnitt_easting; |
volatile int gps_p; //P-Anteil (10) |
volatile int gps_d; //D-Anteil (4) |
volatile int skal; //Skalierungsfaktor der Regelung (alter Wert: 10) (20) |
volatile int gps_gethome; |
#include <stdlib.h> |
#include <string.h> |
#include <avr/io.h> |
#include <avr/pgmspace.h> |
#include <avr/interrupt.h> |
#include <avr/eeprom.h> |
#include <avr/boot.h> |
#include <avr/wdt.h> |
#include "old_macros.h" |
#include "_Settings.h" |
#include "printf_P.h" |
#include "timer0.h" |
#include "uart.h" |
#include "analog.h" |
#include "twimaster.h" |
#include "menu.h" |
#include "rc.h" |
#include "fc.h" |
#include "gps.h" |
#ifndef EEMEM |
#define EEMEM __attribute__ ((section (".eeprom"))) |
#endif |
#define DEBUG_DISPLAY_INTERVALL 123 // in ms |
#define DELAY_US(x) ((unsigned int)( (x) * 1e-6 * F_CPU )) |
#endif //_MAIN_H |
/branches/Chris_hallo/makefile |
---|
0,0 → 1,391 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega644 |
F_CPU = 20000000 |
#------------------------------------------------------------------- |
HAUPT_VERSION = 0 |
NEBEN_VERSION = 60 |
VERSION_KOMPATIBEL = 4 # PC-Kompatibilität |
#------------------------------------------------------------------- |
ifeq ($(MCU), atmega32) |
# FUSE_SETTINGS= -u -U lfuse:w:0xff:m -U hfuse:w:0xcf:m |
HEX_NAME = MEGA32 |
endif |
ifeq ($(MCU), atmega644) |
FUSE_SETTINGS = -u -U lfuse:w:0xff:m -U hfuse:w:0xdf:m |
#FUSE_SETTINGS = -U lfuse:w:0xff:m -U hfuse:w:0xdf:m |
# -u bei neuen Controllern wieder einspielen |
HEX_NAME = MEGA644 |
endif |
ifeq ($(F_CPU), 16000000) |
QUARZ = 16MHZ |
endif |
ifeq ($(F_CPU), 20000000) |
QUARZ = 20MHZ |
endif |
# Output format. (can be srec, ihex, binary) |
FORMAT = ihex |
# Target file name (without extension). |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION) |
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
OPT = s |
########################################################################################################## |
# List C source files here. (C dependencies are automatically generated.) |
SRC = main.c uart.c printf_P.c timer0.c analog.c menu.c |
SRC += twimaster.c rc.c fc.c GPS.c |
########################################################################################################## |
# List Assembler source files here. |
# Make them always end in a capital .S. Files ending in a lowercase .s |
# will not be considered source files but generated files (assembler |
# output from the compiler), and will be deleted upon "make clean"! |
# Even though the DOS/Win* filesystem matches both .s and .S the same, |
# it will preserve the spelling of the filenames, and gcc itself does |
# care about how the name is spelled on its command-line. |
ASRC = |
# List any extra directories to look for include files here. |
# Each directory must be seperated by a space. |
EXTRAINCDIRS = |
# Optional compiler flags. |
# -g: generate debugging information (for GDB, or for COFF conversion) |
# -O*: optimization level |
# -f...: tuning, see gcc manual and avr-libc documentation |
# -Wall...: warning level |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create assembler listing |
CFLAGS = -O$(OPT) \ |
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \ |
-Wall -Wstrict-prototypes \ |
-Wa,-adhlns=$(<:.c=.lst) \ |
$(patsubst %,-I%,$(EXTRAINCDIRS)) |
# Set a "language standard" compiler flag. |
# Unremark just one line below to set the language standard to use. |
# gnu99 = C99 + GNU extensions. See GCC manual for more information. |
#CFLAGS += -std=c89 |
#CFLAGS += -std=gnu89 |
#CFLAGS += -std=c99 |
CFLAGS += -std=gnu99 |
CFLAGS += -DVERSION_HAUPTVERSION=$(HAUPT_VERSION) -DVERSION_NEBENVERSION=$(NEBEN_VERSION) -DVERSION_KOMPATIBEL=$(VERSION_KOMPATIBEL) |
# Optional assembler flags. |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create listing |
# -gstabs: have the assembler create line number information; note that |
# for use in COFF files, additional information about filenames |
# and function names needs to be present in the assembler source |
# files -- see avr-libc docs [FIXME: not yet described there] |
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs |
# Optional linker flags. |
# -Wl,...: tell GCC to pass this to linker. |
# -Map: create map file |
# --cref: add cross reference to map file |
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref |
# Additional libraries |
# Minimalistic printf version |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min |
# Floating point printf version (requires -lm below) |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt |
# -lm = math library |
LDFLAGS += -lm |
##LDFLAGS += -T./linkerfile/avr5.x |
# Programming support using avrdude. Settings and variables. |
# Programming hardware: alf avr910 avrisp bascom bsd |
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 |
# |
# Type: avrdude -c ? |
# to get a full listing. |
# |
#AVRDUDE_PROGRAMMER = stk200 |
AVRDUDE_PROGRAMMER = dt006 |
#AVRDUDE_PROGRAMMER = ponyser |
#falls Ponyser ausgewählt wird, muss sich unsere avrdude-Configdatei im Bin-Verzeichnis des Compilers befinden |
#AVRDUDE_PORT = com1 # programmer connected to serial device |
AVRDUDE_PORT = lpt1 # programmer connected to parallel port |
#AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex |
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex $(FUSE_SETTINGS) |
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep |
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) |
# Uncomment the following if you want avrdude's erase cycle counter. |
# Note that this counter needs to be initialized first using -Yn, |
# see avrdude manual. |
#AVRDUDE_ERASE += -y |
# Uncomment the following if you do /not/ wish a verification to be |
# performed after programming the device. |
AVRDUDE_FLAGS += -V |
# Increase verbosity level. Please use this when submitting bug |
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> |
# to submit bug reports. |
#AVRDUDE_FLAGS += -v -v |
# --------------------------------------------------------------------------- |
# Define directories, if needed. |
DIRAVR = c:/winavr |
DIRAVRBIN = $(DIRAVR)/bin |
DIRAVRUTILS = $(DIRAVR)/utils/bin |
DIRINC = . |
DIRLIB = $(DIRAVR)/avr/lib |
# Define programs and commands. |
SHELL = sh |
CC = avr-gcc |
OBJCOPY = avr-objcopy |
OBJDUMP = avr-objdump |
SIZE = avr-size |
# Programming support using avrdude. |
AVRDUDE = avrdude |
REMOVE = rm -f |
COPY = cp |
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
ELFSIZE = $(SIZE) -A $(TARGET).elf |
# Define Messages |
# English |
MSG_ERRORS_NONE = Errors: none |
MSG_BEGIN = -------- begin -------- |
MSG_END = -------- end -------- |
MSG_SIZE_BEFORE = Size before: |
MSG_SIZE_AFTER = Size after: |
MSG_COFF = Converting to AVR COFF: |
MSG_EXTENDED_COFF = Converting to AVR Extended COFF: |
MSG_FLASH = Creating load file for Flash: |
MSG_EEPROM = Creating load file for EEPROM: |
MSG_EXTENDED_LISTING = Creating Extended Listing: |
MSG_SYMBOL_TABLE = Creating Symbol Table: |
MSG_LINKING = Linking: |
MSG_COMPILING = Compiling: |
MSG_ASSEMBLING = Assembling: |
MSG_CLEANING = Cleaning project: |
# Define all object files. |
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) |
# Define all listing files. |
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) |
# Combine all necessary flags and optional flags. |
# Add target processor to flags. |
#ALL_CFLAGS = -mmcu=$(MCU) -DF_CPU=$(F_CPU) -I. $(CFLAGS) |
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) |
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) |
# Default target. |
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
$(TARGET).lss $(TARGET).sym sizeafter finished end |
# Eye candy. |
# AVR Studio 3.x does not check make's exit code but relies on |
# the following magic strings to be generated by the compile job. |
begin: |
@echo |
@echo $(MSG_BEGIN) |
finished: |
@echo $(MSG_ERRORS_NONE) |
end: |
@echo $(MSG_END) |
@echo |
# Display size of file. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi |
# Display compiler version information. |
gccversion : |
@$(CC) --version |
# Convert ELF to COFF for use in debugging / simulating in |
# AVR Studio or VMLAB. |
COFFCONVERT=$(OBJCOPY) --debugging \ |
--change-section-address .data-0x800000 \ |
--change-section-address .bss-0x800000 \ |
--change-section-address .noinit-0x800000 \ |
--change-section-address .eeprom-0x810000 |
coff: $(TARGET).elf |
@echo |
@echo $(MSG_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof |
extcoff: $(TARGET).elf |
@echo |
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof |
# Program the device. |
program: $(TARGET).hex $(TARGET).eep |
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
# Create final output files (.hex, .eep) from ELF output file. |
%.hex: %.elf |
@echo |
@echo $(MSG_FLASH) $@ |
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ |
%.eep: %.elf |
@echo |
@echo $(MSG_EEPROM) $@ |
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ |
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@ |
# Create extended listing file from ELF output file. |
%.lss: %.elf |
@echo |
@echo $(MSG_EXTENDED_LISTING) $@ |
$(OBJDUMP) -h -S $< > $@ |
# Create a symbol table from ELF output file. |
%.sym: %.elf |
@echo |
@echo $(MSG_SYMBOL_TABLE) $@ |
avr-nm -n $< > $@ |
# Link: create ELF output file from object files. |
.SECONDARY : $(TARGET).elf |
.PRECIOUS : $(OBJ) |
%.elf: $(OBJ) |
@echo |
@echo $(MSG_LINKING) $@ |
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) |
# Compile: create object files from C source files. |
%.o : %.c |
@echo |
@echo $(MSG_COMPILING) $< |
$(CC) -c $(ALL_CFLAGS) $< -o $@ |
# Compile: create assembler files from C source files. |
%.s : %.c |
$(CC) -S $(ALL_CFLAGS) $< -o $@ |
# Assemble: create object files from assembler source files. |
%.o : %.S |
@echo |
@echo $(MSG_ASSEMBLING) $< |
$(CC) -c $(ALL_ASFLAGS) $< -o $@ |
# Target: clean project. |
clean: begin clean_list finished end |
clean_list : |
@echo |
@echo $(MSG_CLEANING) |
# $(REMOVE) $(TARGET).hex |
$(REMOVE) $(TARGET).eep |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).cof |
$(REMOVE) $(TARGET).elf |
$(REMOVE) $(TARGET).map |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).a90 |
$(REMOVE) $(TARGET).sym |
$(REMOVE) $(TARGET).lnk |
$(REMOVE) $(TARGET).lss |
$(REMOVE) $(OBJ) |
$(REMOVE) $(LST) |
$(REMOVE) $(SRC:.c=.s) |
$(REMOVE) $(SRC:.c=.d) |
# Automatically generate C source code dependencies. |
# (Code originally taken from the GNU make user manual and modified |
# (See README.txt Credits).) |
# |
# Note that this will work with sh (bash) and sed that is shipped with WinAVR |
# (see the SHELL variable defined above). |
# This may not work with other shells or other seds. |
# |
%.d: %.c |
set -e; $(CC) -MM $(ALL_CFLAGS) $< \ |
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ |
[ -s $@ ] || rm -f $@ |
# Remove the '-' if you want to see the dependency files generated. |
-include $(SRC:.c=.d) |
# Listing of phony targets. |
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \ |
clean clean_list program |
/branches/Chris_hallo/menu.c |
---|
0,0 → 1,118 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned int TestInt = 0; |
#define ARRAYGROESSE 10 |
unsigned char Array[ARRAYGROESSE] = {1,2,3,4,5,6,7,8,9,10}; |
char DisplayBuff[80] = "Hallo Welt"; |
unsigned char DispPtr = 0; |
unsigned char RemoteTasten = 0; |
#define KEY1 0x01 |
#define KEY2 0x02 |
#define KEY3 0x04 |
#define KEY4 0x08 |
#define KEY5 0x10 |
void LcdClear(void) |
{ |
unsigned char i; |
for(i=0;i<80;i++) DisplayBuff[i] = ' '; |
} |
void Menu(void) |
{ |
static unsigned char MaxMenue = 10,MenuePunkt=0; |
if(RemoteTasten & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue; LcdClear(); } |
if(RemoteTasten & KEY2) { MenuePunkt++; LcdClear(); } |
if((RemoteTasten & KEY1) && (RemoteTasten & KEY2)) MenuePunkt = 0; |
LCD_printfxy(17,0,"[%i]",MenuePunkt); |
switch(MenuePunkt) |
{ |
case 0: |
LCD_printfxy(0,0,"++ MikroKopter ++"); |
LCD_printfxy(0,1,"V%d.%d",VERSION_HAUPTVERSION, VERSION_NEBENVERSION); |
LCD_printfxy(0,2,"Setting: %d ",GetActiveParamSetNumber()); |
LCD_printfxy(0,3,"(c) Holger Buss"); |
// if(RemoteTasten & KEY3) TestInt--; |
// if(RemoteTasten & KEY4) TestInt++; |
break; |
case 1: |
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
LCD_printfxy(0,0,"Hoehe: %5i",HoehenWert); |
LCD_printfxy(0,1,"SollHoehe: %5i",SollHoehe); |
LCD_printfxy(0,2,"Luftdruck: %5i",MessLuftdruck); |
LCD_printfxy(0,3,"Off : %5i",DruckOffsetSetting); |
} |
else |
{ |
LCD_printfxy(0,1,"Keine "); |
LCD_printfxy(0,2,"Höhenregelung"); |
} |
break; |
case 2: |
LCD_printfxy(0,0,"akt. Lage"); |
LCD_printfxy(0,1,"Nick: %5i",IntegralNick/1024); |
LCD_printfxy(0,2,"Roll: %5i",IntegralRoll/1024); |
LCD_printfxy(0,3,"Kompass: %5i",KompassValue); |
break; |
case 3: |
LCD_printfxy(0,0,"K1:%4i K2:%4i ",PPM_in[1],PPM_in[2]); |
LCD_printfxy(0,1,"K3:%4i K4:%4i ",PPM_in[3],PPM_in[4]); |
LCD_printfxy(0,2,"K5:%4i K6:%4i ",PPM_in[5],PPM_in[6]); |
LCD_printfxy(0,3,"K7:%4i Kanäle ",PPM_in[7]); |
break; |
case 4: |
LCD_printfxy(0,0,"Ni:%4i Ro:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_NICK]],PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]); |
LCD_printfxy(0,1,"Gs:%4i Gi:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_GAS]],PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]); |
LCD_printfxy(0,2,"P1:%4i P2:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]],PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]]); |
LCD_printfxy(0,3,"P3:%4i Kanäle ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]]); |
break; |
case 5: |
LCD_printfxy(0,0,"Gyro - Sensor"); |
LCD_printfxy(0,1,"Nick %4i (%3i)",AccumulateNick / MessanzahlNick, AdNeutralNick); |
LCD_printfxy(0,2,"Roll %4i (%3i)",AccumulateRoll / MessanzahlRoll, AdNeutralRoll); |
LCD_printfxy(0,3,"Gier %4i (%3i)",AccumulateGier / MessanzahlGier, AdNeutralGier); |
break; |
case 6: |
LCD_printfxy(0,0,"ACC - Sensor"); |
LCD_printfxy(0,1,"Nick %4i (%3i)",accumulate_AccNick / messanzahl_AccNick,NeutralAccX); |
LCD_printfxy(0,2,"Roll %4i (%3i)",accumulate_AccRoll / messanzahl_AccRoll,NeutralAccY); |
LCD_printfxy(0,3,"Hoch %4i (%3i)",Aktuell_az/*accumulate_AccHoch / messanzahl_AccHoch*/,(int)NeutralAccZ); |
break; |
case 7: |
LCD_printfxy(0,1,"Spannung: %5i",UBat); |
LCD_printfxy(0,2,"Empf.Pegel:%5i",SenderOkay); |
break; |
case 8: |
LCD_printfxy(0,0,"Kompass "); |
LCD_printfxy(0,1,"Richtung: %5i",KompassRichtung); |
LCD_printfxy(0,2,"Messwert: %5i",KompassValue); |
LCD_printfxy(0,3,"Start: %5i",KompassStartwert); |
break; |
case 9: |
LCD_printfxy(0,0,"Poti1: %3i",Poti1); |
LCD_printfxy(0,1,"Poti2: %3i",Poti2); |
LCD_printfxy(0,2,"Poti3: %3i",Poti3); |
LCD_printfxy(0,3,"Poti4: %3i",Poti4); |
break; |
case 10: |
LCD_printfxy(0,0,"Servo " ); |
LCD_printfxy(0,1,"Setpoint %3i",Parameter_ServoNickControl); |
LCD_printfxy(0,2,"Stellung: %3i",ServoValue); |
LCD_printfxy(0,3,"Range:%3i-%3i",EE_Parameter.ServoNickMin,EE_Parameter.ServoNickMax); |
break; |
default: MaxMenue = MenuePunkt - 1; |
MenuePunkt = 0; |
break; |
} |
RemoteTasten = 0; |
} |
/branches/Chris_hallo/menu.h |
---|
0,0 → 1,5 |
extern void Menu(void); |
extern char DisplayBuff[80]; |
extern unsigned char DispPtr; |
unsigned char RemoteTasten; |
/branches/Chris_hallo/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/Chris_hallo/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/Chris_hallo/printf_P.h |
---|
0,0 → 1,19 |
#ifndef _PRINTF_P_H_ |
#define _PRINTF_P_H_ |
#include <avr/pgmspace.h> |
#define OUT_V24 0 |
#define OUT_LCD 1 |
extern void _printf_P (char, char const *fmt0, ...); |
extern char PrintZiel; |
#define printf_P(format, args...) _printf_P(OUT_V24,format , ## args) |
#define printf(format, args...) _printf_P(OUT_V24,PSTR(format) , ## args) |
#define LCD_printfxy(x,y,format, args...) { DispPtr = y * 20 + x; _printf_P(OUT_LCD,PSTR(format) , ## args);} |
#define LCD_printf(format, args...) { _printf_P(OUT_LCD,PSTR(format) , ## args);} |
#endif |
/branches/Chris_hallo/rc.c |
---|
0,0 → 1,85 |
/*####################################################################################### |
Decodieren eines RC Summen Signals |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "rc.h" |
#include "main.h" |
volatile int PPM_in[11]; |
volatile int PPM_diff[11]; // das diffenzierte Stick-Signal |
volatile unsigned char NewPpmData = 1; |
//############################################################################ |
//zum decodieren des PPM-Signals wird Timer1 mit seiner Input |
//Capture Funktion benutzt: |
void rc_sum_init (void) |
//############################################################################ |
{ |
TCCR1B=(1<<CS11)|(1<<CS10)|(1<<ICES1)|(1<<ICNC1);//|(1 << WGM12); //timer1 prescale 64 |
// PWM |
//TCCR1A = (1 << COM1B1) | (1 << WGM11) | (1 << WGM10); |
//TCCR1B |= (1 << WGM12); |
//OCR1B = 55; |
TIMSK1 |= _BV(ICIE1); |
AdNeutralGier = 0; |
AdNeutralRoll = 0; |
AdNeutralNick = 0; |
return; |
} |
//############################################################################ |
//Diese Routine startet und inizialisiert den Timer für RC |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int AltICR=0; |
signed int signal = 0; |
static int index; |
signal = (unsigned int) ICR1 - AltICR; |
AltICR = ICR1; |
//Syncronisationspause? |
if ((signal > 1500) && (signal < 8000)) |
{ |
index = 1; |
NewPpmData = 0; // Null bedeutet: Neue Daten |
// OCR2A = Poti2/2 + 80; |
} |
else |
{ |
if(index < 10) |
{ |
if((signal > 250) && (signal < 687)) |
{ |
signal -= 466; |
// Stabiles Signal |
if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10;} |
signal = (3 * (PPM_in[index]) + signal) / 4; |
//373 entspricht ca. 1.5ms also Mittelstellung |
PPM_diff[index] = signal - PPM_in[index]; |
PPM_in[index] = signal; |
} |
index++; |
/* if(index == 5) PORTD |= 0x20; else PORTD &= ~0x20; // Servosignal an J3 anlegen |
if(index == 6) PORTD |= 0x10; else PORTD &= ~0x10; // Servosignal an J4 anlegen |
if(index == 7) PORTD |= 0x08; else PORTD &= ~0x08; // Servosignal an J5 anlegen */ |
} |
} |
} |
/branches/Chris_hallo/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/Chris_hallo/readme.txt |
---|
0,0 → 1,84 |
GPS-Modifikation auf Basis der Original V0.6 by Holger Buss & Ingo Busker |
----- BETA V0.2----- |
Copyright by Christopher Hartmann und Daniel Schmitz. |
-Disclaimer- |
Wir übernehmen keinerlei Garantie für die Funktionstüchtigkeit dieser Software |
jegliche Änderung geschehen auf Eigene Gefahr |
für eventuelle Schäden übernehmen wir keinerlei Haftung |
______ |
Parametrierung ist noch nicht abgeschlossen !!!! |
Kompass nicht integriert !!!! -> Ufo muss nach Norden ausgerichtet sein !!!!!! |
Im Koptertool nicht vergessen GPS zu aktivieren ! |
Testparamter : P:2 / D:2 |
________ ***************ÄNDERUNGEN**************************** |
folgende Änderungen am GPS-Empfänger vornehmen (siehe auch Pitschu Anleitung für Details) |
folgende Einstellungen werden nicht mehr benötigt (muss nicht zwingend deaktiviert werden) |
unter Messages: |
-NAV-POSLLH |
-NAV-POSUTM |
-NAV-VELNED |
folgende Einstellungen müssen aktiviert werden: (für Target1) |
unter Messages: |
-NAV-POSECEF |
-NAV-VELECEF |
_________****************************************************** |
features: |
-Auslesen der GPS Daten im UBX Protokoll (modifizierte Version, - Original von Pitschu (Peter Schulten) ) |
- integrierter PD Regler - Parametrierung des P-, D-Anteils (der D-Anteil sollte ggf. durch Änderung im Quelltext weiter verkleinert werden) |
User Parameter 1: P-Regler, 2:D-Regler |
- Rotationsmatrix für Kompass |
- Postiton Hold (Aktivierung über Poti 1 ( 0=Aus , >0 =aktiviert) |
- kruzes Piepsen bestätigt Aktivierung des PH |
- rote LED der Flight-Ctrl für Statusanzeige: (blinkend : GPS Aktiv) |
- Aktivierung des Postiton-Hold ohne Empfang von GPS unterbunden |
- Einbinden des GPS-Empfängers bitte Erklärung von PITSCHU aus XUFO-Forum entnehmen (http://forum.xufo.net/bb/viewtopic.php?t=5980) |
----- BAUDRATE einstellen auf 57600 ------ |
_____ |
in Planung: (TWI: teilweise Integriert, siehe Quelltext -- UNGETESTET -- ) |
- Kompass (TWI) |
- dynamische Parametrierung anhand der mittleren Abweichung der GPS Daten (höhrere Genauigkeit im PH) |
-"Home Postition" (TWI) |
- Eingangsdatenfilterung (Kompensation von Ungenauigkeit) |
- Auslagerung auf externen Prozessor |
. |
/branches/Chris_hallo/timer0.c |
---|
0,0 → 1,139 |
#include "main.h" |
volatile unsigned int CountMilliseconds = 0; |
volatile static unsigned int tim_main; |
volatile unsigned char UpdateMotor = 0; |
volatile unsigned int cntKompass = 0; |
volatile unsigned int beeptime = 0; |
int ServoValue = 0; |
enum { |
STOP = 0, |
CK = 1, |
CK8 = 2, |
CK64 = 3, |
CK256 = 4, |
CK1024 = 5, |
T0_FALLING_EDGE = 6, |
T0_RISING_EDGE = 7 |
}; |
SIGNAL (SIG_OVERFLOW0) // 8kHz |
{ |
static unsigned char cnt_1ms = 1,cnt = 0; |
// TCNT0 -= 250;//TIMER_RELOAD_VALUE; |
if(!cnt--) |
{ |
cnt = 9; |
cnt_1ms++; |
cnt_1ms %= 2; |
if(!cnt_1ms) UpdateMotor = 1; |
CountMilliseconds++; |
if(Timeout) Timeout--; |
} |
if(beeptime > 1) |
{ |
beeptime--; |
PORTD |= (1<<2); |
} |
else |
PORTD &= ~(1<<2); |
if(EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV) |
{ |
if(PINC & 0x10) |
{ |
cntKompass++; |
} |
else |
{ |
if((cntKompass) && (cntKompass < 4000)) |
{ |
KompassValue = cntKompass; |
} |
// if(cntKompass < 10) cntKompass = 10; |
// KompassValue = (unsigned long)((unsigned long)(cntKompass-10)*720L + 1L) / 703L; |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
cntKompass = 0; |
} |
} |
} |
void Timer_Init(void) |
{ |
tim_main = SetDelay(10); |
TCCR0B = CK8; |
TCCR0A = (1<<COM0A1)|(1<<COM0B1)|3;//fast PWM |
OCR0A = 0; |
OCR0B = 120; |
TCNT0 = -TIMER_RELOAD_VALUE; // reload |
//OCR1 = 0x00; |
TCCR2A=(1<<COM2A1)|(1<<COM2A0)|3; |
TCCR2B=(0<<CS20)|(1<<CS21)|(1<<CS22); |
// TIMSK2 |= _BV(TOIE2); |
TIMSK2 |= _BV(OCIE2A); |
TIMSK0 |= _BV(TOIE0); |
OCR2A = 10; |
TCNT2 = 0; |
} |
// ----------------------------------------------------------------------- |
unsigned int SetDelay (unsigned int t) |
{ |
// TIMSK0 &= ~_BV(TOIE0); |
return(CountMilliseconds + t + 1); |
// TIMSK0 |= _BV(TOIE0); |
} |
// ----------------------------------------------------------------------- |
char CheckDelay(unsigned int t) |
{ |
// TIMSK0 &= ~_BV(TOIE0); |
return(((t - CountMilliseconds) & 0x8000) >> 9); |
// TIMSK0 |= _BV(TOIE0); |
} |
// ----------------------------------------------------------------------- |
void Delay_ms(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)); |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Servo ansteuern |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(SIG_OUTPUT_COMPARE2A) |
{ |
static unsigned char timer = 10; |
if(!timer--) |
{ |
TCCR2A=(1<<COM2A1)|(0<<COM2A0)|3; |
ServoValue = Parameter_ServoNickControl; |
if(EE_Parameter.ServoNickCompInvert & 0x01) ServoValue += ((long) EE_Parameter.ServoNickComp * (IntegralNick / 128)) / 512; |
else ServoValue -= ((long) EE_Parameter.ServoNickComp * (IntegralNick / 128)) / 512; |
if(ServoValue < EE_Parameter.ServoNickMin) ServoValue = EE_Parameter.ServoNickMin; |
else if(ServoValue > EE_Parameter.ServoNickMax) ServoValue = EE_Parameter.ServoNickMax; |
DebugOut.Analog[10] = ServoValue; |
OCR2A = ServoValue;// + 75; |
timer = EE_Parameter.ServoNickRefresh; |
} |
else |
{ |
TCCR2A =3; |
PORTD&=~0x80; |
} |
} |
/branches/Chris_hallo/timer0.h |
---|
0,0 → 1,14 |
#define TIMER_TEILER CK8 |
#define TIMER_RELOAD_VALUE 250 |
void Timer_Init(void); |
void Delay_ms(unsigned int); |
unsigned int SetDelay (unsigned int t); |
char CheckDelay (unsigned int t); |
extern volatile unsigned int CountMilliseconds; |
extern volatile unsigned char UpdateMotor; |
extern volatile unsigned int beeptime; |
extern volatile unsigned int cntKompass; |
extern int ServoValue; |
/branches/Chris_hallo/twimaster.c |
---|
0,0 → 1,131 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
unsigned char twi_state = 0; |
unsigned char motor = 0; |
unsigned char motorread = 0; |
unsigned char motor_rx[8]; |
//############################################################################ |
//Initzialisieren der I2C (TWI) Schnittstelle |
void i2c_init(void) |
//############################################################################ |
{ |
TWSR = 0; |
TWBR = ((SYSCLK/SCL_CLOCK)-16)/2; |
} |
//############################################################################ |
//Start I2C |
char i2c_start(void) |
//############################################################################ |
{ |
TWCR = (1<<TWSTA) | (1<<TWEN) | (1<<TWINT) | (1<<TWIE); |
return(0); |
} |
//############################################################################ |
//Start I2C |
void i2c_stop(void) |
//############################################################################ |
{ |
TWCR = (1<<TWEN) | (1<<TWSTO) | (1<<TWINT); |
} |
//############################################################################ |
//Start I2C |
char i2c_write_byte(char byte) |
//############################################################################ |
{ |
TWSR = 0x00; |
TWDR = byte; |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE); |
return(0); |
} |
//############################################################################ |
//Start I2C |
SIGNAL (TWI_vect) |
//############################################################################ |
{ |
switch (twi_state++) |
{ |
case 0: |
i2c_write_byte(0x52+(motor*2)); |
break; |
case 1: |
switch(motor++) |
{ |
case 0: |
i2c_write_byte(Motor_Vorne); |
break; |
case 1: |
i2c_write_byte(Motor_Hinten); |
break; |
case 2: |
i2c_write_byte(Motor_Rechts); |
break; |
case 3: |
i2c_write_byte(Motor_Links); |
break; |
} |
break; |
case 2: |
i2c_stop(); |
if (motor<4) twi_state = 0; |
else motor = 0; |
i2c_start(); |
break; |
//Liest Daten von Motor |
case 3: |
i2c_write_byte(0x53+(motorread*2)); |
break; |
case 4: |
switch(motorread) |
{ |
case 0: |
i2c_write_byte(Motor_Vorne); |
break; |
case 1: |
i2c_write_byte(Motor_Hinten); |
break; |
case 2: |
i2c_write_byte(Motor_Rechts); |
break; |
case 3: |
i2c_write_byte(Motor_Links); |
break; |
} |
break; |
case 5: //1 Byte vom Motor lesen |
motor_rx[motorread] = TWDR; |
case 6: |
switch(motorread) |
{ |
case 0: |
i2c_write_byte(Motor_Vorne); |
break; |
case 1: |
i2c_write_byte(Motor_Hinten); |
break; |
case 2: |
i2c_write_byte(Motor_Rechts); |
break; |
case 3: |
i2c_write_byte(Motor_Links); |
break; |
} |
break; |
case 7: //2 Byte vom Motor lesen |
motor_rx[motorread+4] = TWDR; |
motorread++; |
if (motorread>3) motorread=0; |
i2c_stop(); |
twi_state = 0; |
} |
} |
/branches/Chris_hallo/twimaster.h |
---|
0,0 → 1,32 |
/*############################################################################ |
############################################################################*/ |
#ifndef _I2C_MASTER_H |
#define _I2C_MASTER_H |
//############################################################################ |
// I2C Konstanten |
#define SCL_CLOCK 200000L |
#define I2C_TIMEOUT 30000 |
#define I2C_START 0x08 |
#define I2C_REPEATED_START 0x10 |
#define I2C_TX_SLA_ACK 0x18 |
#define I2C_TX_DATA_ACK 0x28 |
#define I2C_RX_SLA_ACK 0x40 |
#define I2C_RX_DATA_ACK 0x50 |
//############################################################################ |
extern unsigned char twi_state; |
extern unsigned char motor; |
extern unsigned char motorread; |
extern unsigned char motor_rx[8]; |
void i2c_init (void); // I2C initialisieren |
char i2c_start (void); // Start I2C |
void i2c_stop (void); // Stop I2C |
char i2c_write_byte (char byte); // 1 Byte schreiben |
#endif |
/branches/Chris_hallo/uart.c |
---|
0,0 → 1,656 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// + |
// + GPS read out: |
// + modified Version of the Pitschu Brushless Ufo - (c) Peter Schulten, Mülheim, Germany |
// + only for non-profit use |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "uart.h" |
unsigned char DebugGetAnforderung = 0,DebugDisplayAnforderung = 0,DebugDataAnforderung = 0,GetVersionAnforderung = 0; |
unsigned volatile char SioTmp = 0; |
unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NMEABuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NeuerDatensatzEmpfangen = 0; |
unsigned volatile char NeueKoordinateEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned volatile char CntCrcError = 0; |
unsigned volatile char AnzahlEmpfangsBytes = 0; |
unsigned volatile char PC_DebugTimeout = 0; |
unsigned char PcZugriff = 100; |
unsigned char MotorTest[4] = {0,0,0,0}; |
unsigned char MeineSlaveAdresse; |
struct str_DebugOut DebugOut; |
struct str_Debug DebugIn; |
struct str_VersionInfo VersionInfo; |
int Debug_Timer; |
static uint8_t gpsState; |
#define GPS_EMPTY 0 |
#define GPS_SYNC1 1 |
#define GPS_SYNC2 2 |
#define GPS_CLASS 3 |
#define GPS_LEN1 4 |
#define GPS_LEN2 5 |
#define GPS_FILLING 6 |
#define GPS_CKA 7 |
#define GPS_CKB 8 |
//gpsInfo_t gpsPoints[5]; // stored position to fly to (currently only 1 target supported) |
//gpsInfo_t *gpsTarget; // points to one of the targets |
gpsInfo_t actualPos; // measured position (last gps record) |
#define SYNC_CHAR1 0xb5 |
#define SYNC_CHAR2 0x62 |
#define CLASS_NAV 0x01 |
#define MSGID_POSECEF 0x01 |
#define MSGID_STATUS 0x03 |
//#define MSGID_POSLLH 0x02 |
#define MSGID_VELECEF 0x11 |
//#define MSGID_POSUTM 0x08 |
//#define MSGID_VELNED 0x12 |
typedef struct { |
unsigned long ITOW; // time of week |
uint8_t GPSfix; // GPSfix Type, range 0..6 |
uint8_t Flags; // Navigation Status Flags |
uint8_t DiffS; // Differential Status |
uint8_t res; // reserved |
unsigned long TTFF; // Time to first fix (millisecond time tag) |
unsigned long MSSS; // Milliseconds since Startup / Reset |
uint8_t packetStatus; |
} NAV_STATUS_t; |
/* |
typedef struct { |
unsigned long ITOW; // time of week |
long LON; // longitude in 1e-07 deg |
long LAT; // lattitude |
long HEIGHT; // height in mm |
long HMSL; // height above mean sea level im mm |
unsigned long Hacc; // horizontal accuracy in mm |
unsigned long Vacc; // vertical accuracy in mm |
uint8_t packetStatus; |
} NAV_POSLLH_t; |
typedef struct { |
unsigned long ITOW; // time of week |
long EAST; // cm UTM Easting |
long NORTH; // cm UTM Nording |
long ALT; // cm altitude |
uint8_t ZONE; // UTM zone number |
uint8_t HEM; // Hemisphere Indicator (0=North, 1=South) |
uint8_t packetStatus; |
} NAV_POSUTM_t; |
typedef struct { |
unsigned long ITOW; // ms GPS Millisecond Time of Week |
long VEL_N; // cm/s NED north velocity |
long VEL_E; // cm/s NED east velocity |
long VEL_D; // cm/s NED down velocity |
unsigned long Speed; // cm/s Speed (3-D) |
unsigned long GSpeed; // cm/s Ground Speed (2-D) |
long Heading; // deg (1e-05) Heading 2-D |
unsigned long SAcc; // cm/s Speed Accuracy Estimate |
unsigned long CAcc; // deg Course / Heading Accuracy Estimate |
uint8_t packetStatus; |
} NAV_VELNED_t; |
*/ |
typedef struct { |
unsigned long ITOW; // ms GPS Millisecond Time of Week |
long ECEF_X; // ecef x / cm |
long ECEF_Y; // ecef y / cm |
long ECEF_Z; // ecef z / cm |
unsigned long Pacc; // Abweichung |
uint8_t packetStatus; |
} NAV_POSECEF_t ; |
typedef struct { |
unsigned long ITOW; // ms GPS Millisecond Time of Week |
long ECEFVX; // ecef x velocity cm/s |
long ECEFVY; // ecef y velocity cm/s |
long ECEFVZ; // ecef z velocity cm/s |
unsigned long SAcc; // Abweichung |
uint8_t packetStatus; |
} NAV_VELECEF_t; |
NAV_STATUS_t navStatus; |
NAV_POSECEF_t navPosECEF; |
NAV_VELECEF_t navVelECEF; |
//NAV_POSLLH_t navPosLlh; |
//NAV_POSUTM_t navPosUtm; |
//NAV_VELECEF avVelNed; |
volatile char *ubxP, *ubxEp, *ubxSp; // pointers to packet currently transfered |
volatile uint8_t CK_A, CK_B; // UBX checksum bytes |
volatile unsigned short msgLen; |
volatile uint8_t msgID; |
volatile uint8_t ignorePacket; // true when previous packet was not processed |
// distance to target position |
long rollOffset; // in 10cm |
long nickOffset; |
#define GPS_INTCYCLES 100 |
#define GPS_I_LIMIT (long)(40 * MAINLOOPS_PER_SEC) |
#ifdef GPS_DEBUG // if set then the GPS data is transfered to display |
extern volatile uint8_t v24state; |
char buf[200]; |
char *bp; |
char *ep; |
#endif |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Sende-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_TX) |
{ |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!UebertragungAbgeschlossen) |
{ |
ptr++; // die [0] wurde schon gesendet |
tmp_tx = SendeBuffer[ptr]; |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
{ |
ptr = 0; |
UebertragungAbgeschlossen = 1; |
} |
UDR = tmp_tx; |
} |
else ptr = 0; |
} |
void GPSscanData (void) |
{ |
if (navPosECEF.packetStatus == 1) // valid packet |
{ |
actualPos.x = navPosECEF.ECEF_X; //ECEF X in cm |
actualPos.y = navPosECEF.ECEF_Y; //ECEF Y in cm |
actualPos.z = navPosECEF.ECEF_Z; //ECEF Z in cm |
navPosECEF.packetStatus = 0; |
} |
if (navStatus.packetStatus == 1) // valid packet |
{ |
actualPos.state = navStatus.GPSfix; |
navStatus.packetStatus = 0; |
} |
if (navVelECEF.packetStatus == 1) // valid packet |
{ |
actualPos.vx = navVelECEF.ECEFVX; //ECEF VEL X in cm/s |
actualPos.vy = navVelECEF.ECEFVY; //ECEF VEL Y in cm/s |
actualPos.vz = navVelECEF.ECEFVZ; //ECEF VEL Z in cm/s |
navVelECEF.packetStatus = 0; |
} |
/* |
if (navPosUtm.packetStatus == 1) // valid packet |
{ |
actualPos.northing = navPosUtm.NORTH; ///10; // in 10cm; |
actualPos.easting = navPosUtm.EAST; //10; |
actualPos.altitude = navPosUtm.ALT; //10; |
navPosUtm.packetStatus = 0; |
} |
if (navPosLlh.packetStatus == 1) |
navPosLlh.packetStatus = 0; |
if (navVelNed.packetStatus == 1){ |
actualPos.velNorth = navVelNed.VEL_N; |
actualPos.velEast = navVelNed.VEL_E; |
navVelNed.packetStatus = 0;} |
navPosLlh and navVelNed currently not used |
*/ |
if (actualPos.state != 0){ROT_ON;} //-> Rot blinkt mit 4Hz wenn GPS Signal brauchbar |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung, incl. CRC-Auswertung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
SioTmp = UDR; |
uint8_t c; |
uint8_t re; |
re = (UCSR0A & (_B1(FE0) | _B1(DOR0))); // any error occured ? |
c = SioTmp; |
#ifdef GPS_DEBUG |
*bp++ = c; |
if (bp >= (buf+200)) bp = buf; |
if (v24state == 0) |
{ |
v24state = 1; |
UDR0 = *ep++; |
if (ep >= buf+200) |
ep = buf; |
UCSR0B |= _B1(UDRIE0); //enable further irqs |
} |
#endif |
if (re == 0) |
{ |
switch (gpsState) |
{ |
case GPS_EMPTY: |
if (c == SYNC_CHAR1) |
gpsState = GPS_SYNC1; |
break; |
case GPS_SYNC1: |
if (c == SYNC_CHAR2) |
gpsState = GPS_SYNC2; |
else if (c != SYNC_CHAR1) |
gpsState = GPS_EMPTY; |
break; |
case GPS_SYNC2: |
if (c == CLASS_NAV) |
gpsState = GPS_CLASS; |
else |
gpsState = GPS_EMPTY; |
break; |
case GPS_CLASS: // msg ID seen: init packed receive |
msgID = c; |
CK_A = CLASS_NAV + c; |
CK_B = CLASS_NAV + CK_A; |
gpsState = GPS_LEN1; |
switch (msgID) |
{ |
case MSGID_STATUS: |
ubxP = (char*)&navStatus; |
ubxEp = (char*)(&navStatus + sizeof(NAV_STATUS_t)); |
ubxSp = (char*)&navStatus.packetStatus; |
ignorePacket = navStatus.packetStatus; |
break; |
case MSGID_POSECEF: |
ubxP = (char*)&navPosECEF; |
ubxEp = (char*)(&navPosECEF + sizeof(NAV_POSECEF_t)); |
ubxSp = (char*)&navPosECEF.packetStatus; |
ignorePacket = navPosECEF.packetStatus; |
break; |
case MSGID_VELECEF: |
ubxP = (char*)&navVelECEF; |
ubxEp = (char*)(&navVelECEF + sizeof(NAV_VELECEF_t)); |
ubxSp = (char*)&navVelECEF.packetStatus; |
ignorePacket = navVelECEF.packetStatus; |
break; |
/* |
case MSGID_POSLLH: |
ubxP = (char*)&navPosLlh; |
ubxEp = (char*)(&navPosLlh + sizeof(NAV_POSLLH_t)); |
ubxSp = (char*)&navPosLlh.packetStatus; |
ignorePacket = navPosLlh.packetStatus; |
break; |
case MSGID_POSUTM: |
ubxP = (char*)&navPosUtm; |
ubxEp = (char*)(&navPosUtm + sizeof(NAV_POSUTM_t)); |
ubxSp = (char*)&navPosUtm.packetStatus; |
ignorePacket = navPosUtm.packetStatus; |
break; |
case MSGID_VELNED: |
ubxP = (char*)&navVelNed; |
ubxEp = (char*)(&navVelNed + sizeof(NAV_VELNED_t)); |
ubxSp = (char*)&navVelNed.packetStatus; |
ignorePacket = navVelNed.packetStatus; |
break; |
*/ |
default: |
ignorePacket = 1; |
ubxSp = (char*)0; |
} |
break; |
case GPS_LEN1: // first len byte |
msgLen = c; |
CK_A += c; |
CK_B += CK_A; |
gpsState = GPS_LEN2; |
break; |
case GPS_LEN2: // second len byte |
msgLen = msgLen + (c * 256); |
CK_A += c; |
CK_B += CK_A; |
gpsState = GPS_FILLING; // next data will be stored in packet struct |
break; |
case GPS_FILLING: |
CK_A += c; |
CK_B += CK_A; |
if ( !ignorePacket && ubxP < ubxEp) |
*ubxP++ = c; |
if (--msgLen == 0) |
gpsState = GPS_CKA; |
break; |
case GPS_CKA: |
if (c == CK_A) |
gpsState = GPS_CKB; |
else |
gpsState = GPS_EMPTY; |
break; |
case GPS_CKB: |
if (c == CK_B && ubxSp) // No error -> packet received successfully |
*ubxSp = 1; // set packetStatus in struct |
gpsState = GPS_EMPTY; // ready for next packet |
break; |
default: |
gpsState = GPS_EMPTY; // ready for next packet |
} |
} |
else // discard any data if error occured |
{ |
gpsState = GPS_EMPTY; |
GPSscanData (); //Test kann ggf. wieder gelöscht werden! |
} |
GPSscanData (); |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
if(SioTmp == '\r' && UartState == 2) |
{ |
UartState = 0; |
crc -= RxdBuffer[buf_ptr-2]; |
crc -= RxdBuffer[buf_ptr-1]; |
crc %= 4096; |
crc1 = '=' + crc / 64; |
crc2 = '=' + crc % 64; |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; CntCrcError++;}; |
if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet |
{ |
NeuerDatensatzEmpfangen = 1; |
AnzahlEmpfangsBytes = buf_ptr; |
RxdBuffer[buf_ptr] = '\r'; |
if(/*(RxdBuffer[1] == MeineSlaveAdresse || (RxdBuffer[1] == 'a')) && */(RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando |
} |
} |
else |
switch(UartState) |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc = SioTmp; |
break; |
case 1: // Adresse auswerten |
UartState++; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
else UartState = 0; |
crc += SioTmp; |
break; |
default: |
UartState = 0; |
break; |
} |
} |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
{ |
tmpCRC += SendeBuffer[i]; |
} |
tmpCRC %= 4096; |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
SendeBuffer[i++] = '\r'; |
UebertragungAbgeschlossen = 0; |
UDR = SendeBuffer[0]; |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
SendeBuffer[pt++] = '#'; // Startzeichen |
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...) |
SendeBuffer[pt++] = cmd; // Commando |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
} |
AddCRC(pt); |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
} |
} |
// -------------------------------------------------------------------------- |
void BearbeiteRxDaten(void) |
{ |
if(!NeuerDatensatzEmpfangen) return; |
unsigned int tmp_int_arr1[1]; |
unsigned int tmp_int_arr2[2]; |
unsigned int tmp_int_arr3[3]; |
unsigned char tmp_char_arr2[2]; |
unsigned char tmp_char_arr3[3]; |
unsigned char tmp_char_arr4[4]; |
//if(!MotorenEin) |
PcZugriff = 255; |
switch(RxdBuffer[2]) |
{ |
case 'c':// Debugdaten incl. Externe IOs usw |
Decode64((unsigned char *) &DebugIn,sizeof(DebugIn),3,AnzahlEmpfangsBytes); |
/* for(unsigned char i=0; i<4;i++) |
{ |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2], DebugIn.Analog[i]); |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2 + 1], DebugIn.Analog[i] >> 8); |
}*/ |
RemoteTasten |= DebugIn.RemoteTasten; |
DebugDataAnforderung = 1; |
break; |
case 'h':// x-1 Displayzeilen |
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes); |
RemoteTasten |= tmp_char_arr2[0]; |
DebugDisplayAnforderung = 1; |
break; |
case 't':// Motortest |
Decode64((unsigned char *) &MotorTest[0],sizeof(MotorTest),3,AnzahlEmpfangsBytes); |
break; |
case 'v': // Version-Anforderung und Ausbaustufe |
GetVersionAnforderung = 1; |
break; |
case 'g':// "Get"-Anforderung für Debug-Daten |
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
DebugGetAnforderung = 1; |
break; |
case 'q':// "Get"-Anforderung für Settings |
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes); |
if(tmp_char_arr2[0] != 0xff) |
{ |
if(tmp_char_arr2[0] > 5) tmp_char_arr2[0] = 5; |
ReadParameterSet(tmp_char_arr2[0], (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
SendOutData('L' + tmp_char_arr2[0] -1,MeineSlaveAdresse,(unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE); |
} |
else |
SendOutData('L' + GetActiveParamSetNumber()-1,MeineSlaveAdresse,(unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE); |
break; |
case 'l': |
case 'm': |
case 'n': |
case 'o': |
case 'p': // Parametersatz speichern |
Decode64((unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE,3,AnzahlEmpfangsBytes); |
WriteParameterSet(RxdBuffer[2] - 'l' + 1, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], RxdBuffer[2] - 'l' + 1); // aktiven Datensatz merken |
Piep(GetActiveParamSetNumber()); |
break; |
} |
// DebugOut.AnzahlZyklen = Debug_Timer_Intervall; |
NeuerDatensatzEmpfangen = 0; |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
if (c == '\n') |
uart_putchar('\r'); |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
//Ausgabe des Zeichens |
UDR = c; |
return (0); |
} |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
//if (ProgramLocation == IN_RAM) Buffer[pos] = wert; |
// else eeprom_write_byte(&EE_Buffer[pos], wert); |
// Buffer[pos] = wert; |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); |
// TX-Interrupt Freigabe |
UCSRB |= (1<<TXCIE); |
//Teiler wird gesetzt |
UBRR=(SYSCLK / (BAUD_RATE * 8L) - 1); |
//UBRR = 33; |
//öffnet einen Kanal für printf (STDOUT) |
//fdevopen (uart_putchar, 0); |
//sbi(PORTD,4); |
Debug_Timer = SetDelay(200); |
gpsState = GPS_EMPTY; |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
static char dis_zeile = 0; |
if(!UebertragungAbgeschlossen) return; |
if(DebugGetAnforderung && UebertragungAbgeschlossen) // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
{ |
SendOutData('G',MeineSlaveAdresse,(unsigned char *) &DebugIn,sizeof(DebugIn)); |
DebugGetAnforderung = 0; |
} |
if((CheckDelay(Debug_Timer) || DebugDataAnforderung) && UebertragungAbgeschlossen) |
{ |
SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut)); |
DebugDataAnforderung = 0; |
Debug_Timer = SetDelay(MIN_DEBUG_INTERVALL); |
} |
if(DebugDisplayAnforderung && UebertragungAbgeschlossen) |
{ |
Menu(); |
DebugDisplayAnforderung = 0; |
if(++dis_zeile == 4) dis_zeile = 0; |
SendOutData('0' + dis_zeile,0,&DisplayBuff[20 * dis_zeile],20); // DisplayZeile übertragen |
} |
if(GetVersionAnforderung && UebertragungAbgeschlossen) |
{ |
SendOutData('V',MeineSlaveAdresse,(unsigned char *) &VersionInfo,sizeof(VersionInfo)); |
GetVersionAnforderung = 0; |
} |
} |
/branches/Chris_hallo/uart.h |
---|
0,0 → 1,118 |
#ifndef _UART_H |
#define _UART_H |
#define MAX_SENDE_BUFF 150 |
#define MAX_EMPFANGS_BUFF 150 |
extern unsigned char DebugGetAnforderung; |
extern unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
extern unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
extern unsigned volatile char UebertragungAbgeschlossen; |
extern unsigned volatile char PC_DebugTimeout; |
extern unsigned volatile char NeueKoordinateEmpfangen; |
extern unsigned char MeineSlaveAdresse; |
extern unsigned char PcZugriff; |
extern int Debug_Timer; |
extern void UART_Init (void); |
extern int uart_putchar (char c); |
extern void boot_program_page (uint32_t page, uint8_t *buf); |
extern void DatenUebertragung(void); |
extern void DecodeNMEA(void); |
extern unsigned char MotorTest[4]; |
struct str_DebugOut |
{ |
unsigned char Digital[13]; |
unsigned int AnzahlZyklen; |
unsigned int Zeit; |
unsigned char Sekunden; |
unsigned int Analog[16]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
#define _B1(bit) (1 << (bit)) |
#define _B0(bit) (0 << (bit)) |
typedef struct { |
long x; // in cm (+ = north) |
long y; // in cm (+ = east) |
long z; // in cm |
long vx; |
long vy; |
long vz; |
//long groundSpeed; |
//long heading; |
uint8_t state; // status of data: 0 = invlid; 1 = valid |
uint8_t noSV; // number of sats |
} gpsInfo_t; |
extern gpsInfo_t lockedPos; // stored position to fly to |
extern gpsInfo_t actualPos; // measured position (last gps record) |
extern void GPSscanData (void); |
extern void GPSupdate(void); |
extern void GPSsaveTarget (uint8_t mode); |
struct str_Debug |
{ |
unsigned char Digital[2]; |
unsigned char RemoteTasten; |
unsigned int Analog[4]; |
}; |
extern struct str_Debug DebugIn; |
struct str_VersionInfo |
{ |
unsigned char Hauptversion; |
unsigned char Nebenversion; |
unsigned char PCKompatibel; |
unsigned char Rserved[7]; |
}; |
extern struct str_VersionInfo VersionInfo; |
//Die Baud_Rate der Seriellen Schnittstelle ist 9600 Baud |
//#define BAUD_RATE 9600 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 14400 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 28800 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 38400 //Baud Rate für die Serielle Schnittstelle |
#define BAUD_RATE 57600 //Baud Rate für die Serielle Schnittstelle |
//Anpassen der seriellen Schnittstellen Register wenn ein ATMega128 benutzt wird |
#if defined (__AVR_ATmega128__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICRB |
#endif |
#if defined (__AVR_ATmega32__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega644__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICR0B |
# define TXEN TXEN0 |
# define RXEN RXEN0 |
# define RXCIE RXCIE0 |
# define TXCIE TXCIE0 |
# define U2X U2X0 |
# define UCSRB UCSR0B |
# define UDRE UDRE0 |
# define INT_VEC_RX SIG_USART_RECV |
# define INT_VEC_TX SIG_USART_TRANS |
#endif |
#endif //_UART_H |
/branches/FLightCtrl/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/FLightCtrl/Hex-Files/BootLoader_MEGA644_20MHZ_V0_1.hex |
---|
0,0 → 1,64 |
:10F8000011241FBECFEFD0E1DEBFCDBF11E0A0E0DD |
:10F81000B1E0E0EEFBEF02C005900D92A030B10721 |
:10F82000D9F712E0A0E0B1E001C01D92A230B1070B |
:10F83000E1F70C943B7C0C941D7C0895982F8091EB |
:10F84000C00085FFFCCF9093C60008958091C00052 |
:10F850008823E4F78091C600992708958DE40E94DB |
:10F860001E7C8BE40E941E7C82E40E941E7C8CE441 |
:10F870000E941E7C0895CFEFD0E1DEBFCDBFE0E057 |
:10F88000F0E014915F01772474BE98E10FB6F8940C |
:10F8900090936000109260000FBE7092C5008AE2E3 |
:10F8A0008093C4008091C00082608093C0009093D8 |
:10F8B000C10086E08093C200EF01072D8091C00057 |
:10F8C00087FF0DC0013031F48091C6008A3AB1F152 |
:10F8D00000E005C08091C6008B3109F401E0CE0143 |
:10F8E00021968436910528F11F3F41F0112331F014 |
:10F8F000E0910001F091010109951BC01092C50033 |
:10F900008AE28093C4008AE00E941E7C8DE00E94FF |
:10F910001E7C86E50E941E7C80E30E941E7C8EE297 |
:10F920000E941E7C81E30E941E7C8AE30E941E7C52 |
:10F9300005C080E593EC0197F1F7C0CF0E942E7CC3 |
:10F940000E94267C813611F489E547C1813471F427 |
:10F950000E94267CA82EBB24BA2CAA240E94267CB6 |
:10F960009927A82AB92AB694A79406C1823629F401 |
:10F9700089E50E941E7C81E00BC1823409F083C0BE |
:10F980000E94267C9927D82FCC270E94267C992775 |
:10F99000C82BD92B0E94267C082F12E0812E11E063 |
:10F9A000912EEE24FF2464010894811C911CEC1616 |
:10F9B000FD0618F40E94267C01C08FEFD6018C93BF |
:10F9C0000894E11CF11CBFEFEB16F10461F358F34E |
:10F9D000E4E77E1609F0DEC0063409F03DC0FFEF13 |
:10F9E000AF16F7EFBF0608F033C0DE01A5016627AA |
:10F9F0007727440F551F661F771F6A017B01C2E0FE |
:10FA0000D1E001E08991992729913327322F2227CC |
:10FA1000822B932B0C01FA0100935700E8951124D7 |
:10FA20004E5F5F4F6F4F7F4F129761F785E0F60192 |
:10FA300080935700E89507B600FCFDCF81E18093E5 |
:10FA40005700E89576956795579547955A0194C064 |
:10FA500080E00E941E7C90C0053409F08DC0F50145 |
:10FA60009E01A2E0B1E0E1BD8F2F992782BD8D916B |
:10FA700080BD3196FA9AF99AF999FECF215030401B |
:10FA800091F75F0179C0873609F047C00E94267C54 |
:10FA90009927D82ECC240E94267C9927C82AD92AB7 |
:10FAA0000E94267C863411F5E6016501EE24FF24D0 |
:10FAB000CC0CDD1CEE1CFF1CF60105911491802F6F |
:10FAC0000E941E7C812F99270E941E7C82E090E07C |
:10FAD000A0E0B0E0C80ED91EEA1EFB1E229761F717 |
:10FAE000F694E794D794C79456012ACF853409F049 |
:10FAF00027CF7501E1BC8F2D992782BDF89A089414 |
:10FB0000E11CF11C80B50E941E7C0894C108D1083C |
:10FB1000C114D10479F7570113CF853601F594E765 |
:10FB2000791651F580E090E0A0E0B0E023E0FC0120 |
:10FB300020935700E89507B600FCFDCF80509F4FFB |
:10FB4000AF4FBF4F8F3FE7EF9E07E0E0AE07E0E02B |
:10FB5000BE0768F381E180935700E8950DC08534B6 |
:10FB600069F488E190E02CE00FB6F894A8958093B2 |
:10FB700060000FBE209360008DE02FC08035E1F360 |
:10FB80008C34D1F3803711F483E527C0843721F416 |
:10FB90000E941E7C80E021C0843521F40E94267CD6 |
:10FBA000782EEACF8B3109F4C9CE8A3A09F4C6CE51 |
:10FBB000863529F480E30E941E7C81E30EC08337E2 |
:10FBC00041F489E00E941E7C86E90E941E7C8EE141 |
:10FBD00004C08B3109F4B4CE8FE30E941E7CB0CEFA |
:040000030000F80001 |
:00000001FF |
/branches/FLightCtrl/Hex-Files/BrushLess-Ctrl_16kHz_ADR1_V0_31.hex |
---|
0,0 → 1,286 |
:1000000012C05DC52AC029C0C3C5C5C426C025C04D |
:10001000B1C4F8C322C0EFC220C0BCC21EC01DC004 |
:10002000C1C561C51AC011241FBECFE5D4E0DEBF33 |
:10003000CDBF10E0A0E6B0E0E8EBF1E102C0059032 |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92A339B107E1F73AC1D2CF20918200B6 |
:1000600080916100821710F4282FAB9A8091800054 |
:10007000909181008338910560F01BBC1ABC19BCBB |
:1000800018BC13BCAB9A01979093810080938000B9 |
:100090000895822F9927880F991F9BBD8ABD99BD0E |
:1000A00088BD23BD089582E08FBD81E485BD85B301 |
:1000B000817F85BB89E08EBD089592B7980F82B786 |
:1000C000891B87FDFCCF0895AF92BF92CF92DF923C |
:1000D000EF92FF920F931F93CF93DF93182F8CE231 |
:1000E000A82E81E0B82EC12CD12C109297004398F5 |
:1000F00085E090E09093830080938200AFDF57D635 |
:1001000088EC90E0DDD3C12FDD27D0938300C0932E |
:100110008200EE24FF248701EA14FB040C051D0570 |
:1001200078F480916600882311F43ED201C050D348 |
:1001300084E6C3DF0894E11CF11C011D111DECCF06 |
:10014000C601B5012FE030E040E050E013D8A21A1C |
:10015000B30AC40AD50A0894A108B108C108D10895 |
:1001600089E1A816B104C104D104C8F020D6809159 |
:1001700099008F5F809399008091990066E0DAD7AB |
:1001800090939900AED3D0938300C093820066DF32 |
:10019000449BBFCF82B390E8892782BBBACFDF915F |
:1001A000CF911F910F91FF90EF90DF90CF90BF9074 |
:1001B000AF90089540917A0050917B004115510510 |
:1001C00009F04BC080917900882371F090918800EC |
:1001D0008FEF989FC001112468EC70E0B7D770933F |
:1001E00085006093840041C080918E00882341F196 |
:1001F000209190003091910081E02D32380708F075 |
:100200009A01293C310510F028EC30E02B30310503 |
:1002100028F4509385004093840026C08CEF90E032 |
:10022000289FA001299F500D389F500D1124CA010D |
:10023000885D994064EB70E089D7CB01039610C0CC |
:100240008091840090918500009729F00197909308 |
:10025000850080938400AB9A08C080918803992719 |
:100260009093850080938400AB9880918400909156 |
:1002700085008F3F910539F030F08FEF90E090933B |
:10028000850080938400809184009927089580914F |
:100290008000909181009093780380937703809100 |
:1002A0007E00992790937A03809379038091700060 |
:1002B0009091710090937C0380937B0380919000D8 |
:1002C0009091910090937E0380937D030895CFE5F4 |
:1002D000D4E0DEBFCDBFEE2488E084BB85BB8AEBD3 |
:1002E00081BB80E882BB8EE087BB81E388BB5BD2A9 |
:1002F000CAD27894C0E0D0E0C130D10509F4979A11 |
:1003000086E990E0DDD297988AEF90E0D9D22196E5 |
:10031000C530D1058CF384EF91E0D2D244D2C3DE54 |
:1003200080E5DCD31AD385E690E0B6D286E690E08D |
:10033000B3D287E690E0B0D2EC018EEF90E0ACD281 |
:100340005C018DEE93E0A8D28C018EEE93E0A4D2F6 |
:100350006C01CE01AAD28823E1F3979A1092830010 |
:10036000109282007BDE88E080BF81E087B98AE05E |
:1003700090E092D2EC0181E090E090937A03809338 |
:100380007903109291001092900014DF99279093B6 |
:10039000830080938200809199008E1551F0109215 |
:1003A00062001092630082E390E076D2EC01E0906C |
:1003B00099008091820090918300892BC9F410925A |
:1003C000740010926300C80170D28823D9F0109293 |
:1003D0009700439881E08093620082B3877C82BB60 |
:1003E00082E08FBD81E485BD85B3817F85BB0AC076 |
:1003F00080916200882319F081E0809374008CED75 |
:1004000095E04AD280916200882321F01092830007 |
:100410001092820023DE809163008F5F80936300DF |
:10042000813009F0B2CF809162008111979AC501A5 |
:100430003CD2882339F182E390E02ED25C01809196 |
:100440007E00482F5527209180003091810042176F |
:10045000530710F48F5F04C02417350718F4815038 |
:1004600080937E0080917E0090916100823428F01C |
:10047000915090936100AB9A05C09F3F19F09F5F28 |
:1004800090936100C80111D2882319F18AE090E0AD |
:1004900003D28C012091720030917300C901880F42 |
:1004A000991F880F991F820F931F820F931F66E079 |
:1004B00070E04CD6709371006093700010927300DE |
:1004C0001092720080918E00882319F481E080934D |
:1004D0006000C601EAD1882321F08CED95E0DCD1E3 |
:1004E0006C01CE01E2D1882331F0809170009091AF |
:1004F0007100892B29F080917400882309F445CF7D |
:1005000021E0F22EF092620010929700439884E668 |
:1005100090E0C2D1EC0180917400882309F435CFBA |
:10052000AB98109274008AE0CFDD979A1092620027 |
:100530008091990081508093990081E090E09093A0 |
:100540008300809382008ADD88B18C7F88B9F09225 |
:10055000970088B18A6088B984E690E09DD1EC016B |
:10056000CE01A3D18823E1F38AE090E09093830049 |
:100570008093820073DD88EC90E08ED1EC01CE0197 |
:1005800094D18823E1F388EE93E086D1EC0197E0E3 |
:10059000E92EFBCE1F920F920FB60F9211240F90EF |
:1005A0000FBE0F901F9018955E9B24C0809166002F |
:1005B0008823E1F48091890090918A0001969093BC |
:1005C0008A0080938900FC01E556FD4FE081ED3003 |
:1005D00019F08436910539F410928A00109289003E |
:1005E00081E080936600589AECB9089510928A00D1 |
:1005F0001092890008951F920F920FB60F92112446 |
:100600008F938CB18093870080918700853F19F488 |
:100610001092670014C0809167008F5F809367001D |
:10062000813041F4809187008093880088EC80932A |
:10063000790005C0853618F084E6809367008F91B5 |
:100640000F900FBE0F901F901895AC01A0E0B0E086 |
:100650009D01A817B90748F4EBE9F2E08191280F52 |
:10066000311D1196A417B507C8F33F70FD01E5567B |
:10067000FD4FC90146E0969587954A95E1F7835C61 |
:1006800080831196FD01E556FD4F2F733070822F48 |
:10069000835C8083A456BD4F8DE08C9310926600DE |
:1006A00080919B028CB908951F93CF93DF93382FCD |
:1006B000EA01722F10E083E280939B0260939C0218 |
:1006C00030939D02A3E0B0E0772309F458C077236C |
:1006D00011F4972F07C0FE01E10FF11D1F5F9081FC |
:1006E000715011F4472F0EC0FE01E10FF11D1F5F85 |
:1006F0004081715039F0FE01E10FF11D1F5F6081F3 |
:10070000715001C0672FFD01E556FD4F892F869579 |
:100710008695835C80831196FD01E556FD4F892FF8 |
:1007200099278370907024E0880F991F2A95E1F72C |
:1007300055279A0194E0369527959A95E1F7822BF3 |
:10074000835C80831196FD01E556FD4F4F7050701C |
:10075000440F551F440F551F862F992756E0969535 |
:1007600087955A95E1F7842B835C80831196FD0170 |
:10077000E556FD4F6F73635C60831196A5CFCD0185 |
:1007800064DFDF91CF911F910895CF93C82F8A30F6 |
:1007900011F48DE0FADF5D9BFECFCCB980E090E0F4 |
:1007A000CF910895089588E18AB9599A579A89E1B5 |
:1007B00089B960E070E085EC93E05FD388EC90E06D |
:1007C0006BD0909300038093FF028AE28CB9089566 |
:1007D0008091FF029091000368D0882391F080916E |
:1007E0006600882371F022E245E653E060919A02A8 |
:1007F00084E45ADF82E390E04FD09093000380932B |
:10080000FF0208951F920F920FB60F9211248F933B |
:100810009F93809187038F5F8093870380918D00E2 |
:10082000815080938D008F3F39F583E080938D0058 |
:1008300080918B0090918C00019690938C00809316 |
:100840008B0080917A0090917B00009729F00197AE |
:1008500090937B0080937A0080918E00882329F00A |
:1008600080918E00815080938E0080917900882342 |
:1008700019F08150809379009F918F910F900FBE56 |
:100880000F901F90189582E083BF89B7816089BF60 |
:1008900089B7806489BF089520918B0030918C00C6 |
:1008A000280F391FC9010197089520918B003091BD |
:1008B0008C00821B930B892F9927807899270895A4 |
:1008C000CF93DF93E9DFEC01CE01EFDF8823E1F383 |
:1008D000DF91CF91089586EA86B987E087B9369A85 |
:1008E000089527B196E097B910BE83ED86B9349A82 |
:1008F00097B9369A349BFECF27B944B155B1440F0E |
:10090000551F440F551F493C510510F048EC50E06D |
:100910002091800030918100C90163E0880F991F08 |
:100920006A95E1F7821B930B840F951F23E0969540 |
:1009300087952A95E1F7909381008093800020911C |
:100940007F0033272817390720F480918000809397 |
:100950007F0016B888E080BF08958EB5806C8EBD8C |
:100960008EB580648EBD89B7806289BF89B7846087 |
:1009700089BF08951F920F920FB60F9211248F9383 |
:1009800080918F008F5F80938F008F910F900FBEAB |
:100990000F901F9018951F920F920FB60F9211246F |
:1009A0002F933F938F939F930EB406FE0FC0109228 |
:1009B0008F0086B597B590939300809392008EB583 |
:1009C0008F7B8EBD84E680938E0070C08EB5806470 |
:1009D0008EBD26B537B58091920090919300281B6B |
:1009E000390B80918F009927982F8827990F280F0E |
:1009F000391F689414F8369527951694E1F73093CB |
:100A00009500209394002851314030F488E191E022 |
:100A100090939500809394002091940030919500DC |
:100A2000285131403093950020939400809190009C |
:100A3000909191008217930730F4809190009091EB |
:100A4000910001960CC08091900090919100281720 |
:100A5000390748F48091900090919100019790930C |
:100A60009100809390002091900030919100C901F5 |
:100A7000880F991F880F991F880F991F821B930B4E |
:100A80002091940030919500820F931F23E096955A |
:100A900087952A95E1F79093950080939400909321 |
:100AA00091008093900081E0809360009F918F91EE |
:100AB0003F912F910F900FBE0F901F9018951F928E |
:100AC0000F920FB60F9211248F938AB78F7B8ABF34 |
:100AD0008F910F900FBE0F901F9018958E5F82B967 |
:100AE00085EC86BF08951F920F920FB60F921124C6 |
:100AF0008F939F9381B19927887F9070803891055B |
:100B0000E9F08138910534F40097B1F18036910510 |
:100B100079F035C0883B9105D9F0893B910524F4E3 |
:100B2000883A9105A9F02BC0883F910511F127C0A3 |
:100B300086B7806886BF1092960023C083B18093E9 |
:100B4000880384EF91E090937B0080937A000EC03D |
:100B500090919600992339F480917E0083B99F5F2C |
:100B60009093960003C08091610083B986B7806836 |
:100B700007C086B7806986BF86B7806986BF85EC67 |
:100B800086BF9F918F910F900FBE0F901F90189569 |
:100B90001F920F920FB60F9211240F900FBE0F905D |
:100BA0001F9018951F920F920FB60F9211241F934A |
:100BB0002F933F934F935F936F937F938F939F9365 |
:100BC000AF93BF93CF93EF93FF93459B02C011E088 |
:100BD00001C010E08091990099278230910509F4B5 |
:100BE00050C0833091052CF4009779F0019739F1CA |
:100BF000BFC08430910509F478C0843091050CF4AD |
:100C00005AC0059709F48BC0B3C082EA8FBD81E654 |
:100C100085BD88E087BB112369F082B3877E82BBE4 |
:100C2000959AC1E0C4BD8091600081115ADE409860 |
:100C3000C7B91BC082B3877D82BB949A99C082B327 |
:100C4000877E82BB959A1123B1F482EA8FBD81E43D |
:100C500085BD8CE087BB81E084BD809160008111FF |
:100C600040DE17B988B1836088B9809199008F5FA1 |
:100C7000809399006DC082EA8FBD81E685BD88E0D2 |
:100C800076C082EA8FBD81E485BD8CE087BB1123ED |
:100C900069F082B38F7C82BB939A81E084BD80919E |
:100CA000600081111EDE82E087B932C082B3877E88 |
:100CB00082BB959A5DC082B38F7C82BB939A1123CD |
:100CC00071F482EA8FBD81E485BD8AE087BBC1E013 |
:100CD000C4BD80916000811104DEC7B9C3CF82EA30 |
:100CE0008FBD81E485BD8CE042C082EA8FBD81E486 |
:100CF00085BD8AE087BB112369F082B3877D82BB03 |
:100D0000949A81E084BD809160008111EADD17B87A |
:100D10004098ABCF82B38F7C82BB939A29C082B3B9 |
:100D2000877D82BB949A1123E9F482EA8FBD81E624 |
:100D300085BD88E087BB81E084BD80916000811122 |
:100D4000D0DD82E087B988B1836088B910939900BB |
:100D5000809172009091730001969093730080933C |
:100D6000720006C082EA8FBD81E485BD8AE087BB40 |
:100D7000459903C0112309F028CF459B03C01123D7 |
:100D800009F423CF10926000FF91EF91CF91BF91B2 |
:100D9000AF919F918F917F916F915F914F913F9113 |
:100DA0002F911F910F900FBE0F901F90189580915B |
:100DB000990099278230910551F1833091052CF4E7 |
:100DC000009769F00197B9F0089584309105E1F139 |
:100DD000843091055CF1059709F443C0089582EAD7 |
:100DE0008FBD81E685BD88E087BB82B3877D82BBEE |
:100DF000949A82E034C082EA8FBD81E685BD88E0A6 |
:100E000087BB82B3877E82BB959A81E01AC082EA53 |
:100E10008FBD81E485BD8CE087BB82B3877E82BBBA |
:100E2000959A17B888B1836088B9089582EA8FBD12 |
:100E300081E485BD8CE087BB82B38F7C82BB939AB3 |
:100E400082E087B94098089582EA8FBD81E485BD2C |
:100E50008AE087BB82B38F7C82BB939A81E087B99B |
:100E6000E1CF82EA8FBD81E485BD8AE087BB82B392 |
:100E7000877D82BB949A17B8E5CF0F931F93CF93CA |
:100E8000DF938C01EB01009711F4672BB9F16EE051 |
:100E900070E081E090E037D0FC01892B71F180E8AF |
:100EA0008383209771F0D387C28781E88383809101 |
:100EB000890390918A03892B21F4F0938A03E093AC |
:100EC000890301151105C9F01187008783818260AC |
:100ED000838380918B0390918C03892B71F4F09321 |
:100EE0008C03E0938B0380918D0390918E03892B6B |
:100EF00021F4F0938E03E0938D03CF01DF91CF9126 |
:100F00001F910F9108950F931F93CF93DF93869FA7 |
:100F10008001879F100D969F100D1124C8010DD0E0 |
:100F2000EC01009721F0A80160E070E0FCD0CE0158 |
:100F3000DF91CF911F910F910895CF93DF93AC0173 |
:100F4000029710F442E050E020E030E0A0919103DD |
:100F5000B0919203BD01F901109709F44CC08D9135 |
:100F60009C9111978417950731F14817590738F468 |
:100F70002115310519F08217930708F49C01FD0132 |
:100F8000A281B381109759F721153105A1F1C9014B |
:100F9000841B950B049708F4A901DB01E0E0F0E065 |
:100FA000109749F18D919C91119782179307F9F44D |
:100FB0004217530779F4ED018A819B81309719F02C |
:100FC0009383828304C09093920380939103CD0115 |
:100FD00002964AC0241B350BFD01E20FF31F41931B |
:100FE0005193225030402D933C93CF013DC0FD01E1 |
:100FF000A281B381D5CF80918F0390919003892BEB |
:1010000041F480916B0090916C00909390038093D9 |
:101010008F03E0916900F0916A00309741F4EDB7D9 |
:10102000FEB780916D0090916E00E81BF90BA091C6 |
:101030008F03B09190039F012A1B3B0B24173507A8 |
:1010400088F0CA0102962817390760F0CD01840F95 |
:10105000951F02969093900380938F034D935D9319 |
:10106000CD0102C080E090E0DF91CF910895CF9351 |
:10107000DF93009709F454C0DC011297ED011B8245 |
:101080001A828091910390919203009721F1FC01C3 |
:1010900040E050E0EA17FB0718F1ED01FB83EA831B |
:1010A0002D913C911197C20FD31FCE0102968E173E |
:1010B0009F0771F48A819B81280F391F2E5F3F4F54 |
:1010C00011963C932E9382819381FD0193838283B9 |
:1010D0004115510559F4B0939203A093910320C098 |
:1010E000AF010280F381E02D3097A1F6EA01BB83C6 |
:1010F000AA83CA01029628813981820F931F8A1719 |
:101100009B0771F48D919C911197280F391F2E5FC9 |
:101110003F4F39832883FD01828193819B838A839A |
:10112000DF91CF910895DC0101C06D934150504093 |
:10113000E0F70895991B79E004C0991F961708F00D |
:10114000961B881F7A95C9F780950895AA1BBB1B2B |
:1011500051E107C0AA1FBB1FA617B70710F0A61BB7 |
:10116000B70B881F991F5A95A9F780959095BC01D8 |
:10117000CD010895A1E21A2EAA1BBB1BFD010DC0D3 |
:10118000AA1FBB1FEE1FFF1FA217B307E407F50737 |
:1011900020F0A21BB30BE40BF50B661F771F881F13 |
:1011A000991F1A9469F760957095809590959B01A9 |
:0811B000AC01BD01CF0108955F |
:1011B80001FF01010A00016464000093032000009C |
:00000001FF |
/branches/FLightCtrl/Hex-Files/BrushLess-Ctrl_16kHz_ADR2_V0_31.hex |
---|
0,0 → 1,286 |
:1000000012C05DC52AC029C0C3C5C5C426C025C04D |
:10001000B1C4F8C322C0EFC220C0BCC21EC01DC004 |
:10002000C1C561C51AC011241FBECFE5D4E0DEBF33 |
:10003000CDBF10E0A0E6B0E0E8EBF1E102C0059032 |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92A339B107E1F73AC1D2CF20918200B6 |
:1000600080916100821710F4282FAB9A8091800054 |
:10007000909181008338910560F01BBC1ABC19BCBB |
:1000800018BC13BCAB9A01979093810080938000B9 |
:100090000895822F9927880F991F9BBD8ABD99BD0E |
:1000A00088BD23BD089582E08FBD81E485BD85B301 |
:1000B000817F85BB89E08EBD089592B7980F82B786 |
:1000C000891B87FDFCCF0895AF92BF92CF92DF923C |
:1000D000EF92FF920F931F93CF93DF93182F8CE231 |
:1000E000A82E81E0B82EC12CD12C109297004398F5 |
:1000F00085E090E09093830080938200AFDF57D635 |
:1001000088EC90E0DDD3C12FDD27D0938300C0932E |
:100110008200EE24FF248701EA14FB040C051D0570 |
:1001200078F480916600882311F43ED201C050D348 |
:1001300084E6C3DF0894E11CF11C011D111DECCF06 |
:10014000C601B5012FE030E040E050E013D8A21A1C |
:10015000B30AC40AD50A0894A108B108C108D10895 |
:1001600089E1A816B104C104D104C8F020D6809159 |
:1001700099008F5F809399008091990066E0DAD7AB |
:1001800090939900AED3D0938300C093820066DF32 |
:10019000449BBFCF82B390E8892782BBBACFDF915F |
:1001A000CF911F910F91FF90EF90DF90CF90BF9074 |
:1001B000AF90089540917A0050917B004115510510 |
:1001C00009F04BC080917900882371F090918800EC |
:1001D0008FEF989FC001112468EC70E0B7D770933F |
:1001E00085006093840041C080918E00882341F196 |
:1001F000209190003091910081E02D32380708F075 |
:100200009A01293C310510F028EC30E02B30310503 |
:1002100028F4509385004093840026C08CEF90E032 |
:10022000289FA001299F500D389F500D1124CA010D |
:10023000885D994064EB70E089D7CB01039610C0CC |
:100240008091840090918500009729F00197909308 |
:10025000850080938400AB9A08C080918803992719 |
:100260009093850080938400AB9880918400909156 |
:1002700085008F3F910539F030F08FEF90E090933B |
:10028000850080938400809184009927089580914F |
:100290008000909181009093780380937703809100 |
:1002A0007E00992790937A03809379038091700060 |
:1002B0009091710090937C0380937B0380919000D8 |
:1002C0009091910090937E0380937D030895CFE5F4 |
:1002D000D4E0DEBFCDBFEE2488E084BB85BB8AEBD3 |
:1002E00081BB80E882BB8EE087BB81E388BB5BD2A9 |
:1002F000CAD27894C0E0D0E0C230D10509F4979A10 |
:1003000086E990E0DDD297988AEF90E0D9D22196E5 |
:10031000C530D1058CF384EF91E0D2D244D2C3DE54 |
:1003200080E5DCD31AD385E690E0B6D286E690E08D |
:10033000B3D287E690E0B0D2EC018EEF90E0ACD281 |
:100340005C018DEE93E0A8D28C018EEE93E0A4D2F6 |
:100350006C01CE01AAD28823E1F3979A1092830010 |
:10036000109282007BDE88E080BF81E087B98AE05E |
:1003700090E092D2EC0181E090E090937A03809338 |
:100380007903109291001092900014DF99279093B6 |
:10039000830080938200809199008E1551F0109215 |
:1003A00062001092630082E390E076D2EC01E0906C |
:1003B00099008091820090918300892BC9F410925A |
:1003C000740010926300C80170D28823D9F0109293 |
:1003D0009700439881E08093620082B3877C82BB60 |
:1003E00082E08FBD81E485BD85B3817F85BB0AC076 |
:1003F00080916200882319F081E0809374008CED75 |
:1004000095E04AD280916200882321F01092830007 |
:100410001092820023DE809163008F5F80936300DF |
:10042000813009F0B2CF809162008111979AC501A5 |
:100430003CD2882339F182E390E02ED25C01809196 |
:100440007E00482F5527209180003091810042176F |
:10045000530710F48F5F04C02417350718F4815038 |
:1004600080937E0080917E0090916100823428F01C |
:10047000915090936100AB9A05C09F3F19F09F5F28 |
:1004800090936100C80111D2882319F18AE090E0AD |
:1004900003D28C012091720030917300C901880F42 |
:1004A000991F880F991F820F931F820F931F66E079 |
:1004B00070E04CD6709371006093700010927300DE |
:1004C0001092720080918E00882319F481E080934D |
:1004D0006000C601EAD1882321F08CED95E0DCD1E3 |
:1004E0006C01CE01E2D1882331F0809170009091AF |
:1004F0007100892B29F080917400882309F445CF7D |
:1005000021E0F22EF092620010929700439884E668 |
:1005100090E0C2D1EC0180917400882309F435CFBA |
:10052000AB98109274008AE0CFDD979A1092620027 |
:100530008091990081508093990081E090E09093A0 |
:100540008300809382008ADD88B18C7F88B9F09225 |
:10055000970088B18A6088B984E690E09DD1EC016B |
:10056000CE01A3D18823E1F38AE090E09093830049 |
:100570008093820073DD88EC90E08ED1EC01CE0197 |
:1005800094D18823E1F388EE93E086D1EC0197E0E3 |
:10059000E92EFBCE1F920F920FB60F9211240F90EF |
:1005A0000FBE0F901F9018955E9B24C0809166002F |
:1005B0008823E1F48091890090918A0001969093BC |
:1005C0008A0080938900FC01E556FD4FE081ED3003 |
:1005D00019F08436910539F410928A00109289003E |
:1005E00081E080936600589AECB9089510928A00D1 |
:1005F0001092890008951F920F920FB60F92112446 |
:100600008F938CB18093870080918700853F19F488 |
:100610001092670014C0809167008F5F809367001D |
:10062000823041F4809187008093880088EC809329 |
:10063000790005C0853618F084E6809367008F91B5 |
:100640000F900FBE0F901F901895AC01A0E0B0E086 |
:100650009D01A817B90748F4EBE9F2E08191280F52 |
:10066000311D1196A417B507C8F33F70FD01E5567B |
:10067000FD4FC90146E0969587954A95E1F7835C61 |
:1006800080831196FD01E556FD4F2F733070822F48 |
:10069000835C8083A456BD4F8DE08C9310926600DE |
:1006A00080919B028CB908951F93CF93DF93382FCD |
:1006B000EA01722F10E083E280939B0260939C0218 |
:1006C00030939D02A3E0B0E0772309F458C077236C |
:1006D00011F4972F07C0FE01E10FF11D1F5F9081FC |
:1006E000715011F4472F0EC0FE01E10FF11D1F5F85 |
:1006F0004081715039F0FE01E10FF11D1F5F6081F3 |
:10070000715001C0672FFD01E556FD4F892F869579 |
:100710008695835C80831196FD01E556FD4F892FF8 |
:1007200099278370907024E0880F991F2A95E1F72C |
:1007300055279A0194E0369527959A95E1F7822BF3 |
:10074000835C80831196FD01E556FD4F4F7050701C |
:10075000440F551F440F551F862F992756E0969535 |
:1007600087955A95E1F7842B835C80831196FD0170 |
:10077000E556FD4F6F73635C60831196A5CFCD0185 |
:1007800064DFDF91CF911F910895CF93C82F8A30F6 |
:1007900011F48DE0FADF5D9BFECFCCB980E090E0F4 |
:1007A000CF910895089588E18AB9599A579A89E1B5 |
:1007B00089B960E070E085EC93E05FD388EC90E06D |
:1007C0006BD0909300038093FF028AE28CB9089566 |
:1007D0008091FF029091000368D0882391F080916E |
:1007E0006600882371F022E245E653E060919A02A8 |
:1007F00084E45ADF82E390E04FD09093000380932B |
:10080000FF0208951F920F920FB60F9211248F933B |
:100810009F93809187038F5F8093870380918D00E2 |
:10082000815080938D008F3F39F583E080938D0058 |
:1008300080918B0090918C00019690938C00809316 |
:100840008B0080917A0090917B00009729F00197AE |
:1008500090937B0080937A0080918E00882329F00A |
:1008600080918E00815080938E0080917900882342 |
:1008700019F08150809379009F918F910F900FBE56 |
:100880000F901F90189582E083BF89B7816089BF60 |
:1008900089B7806489BF089520918B0030918C00C6 |
:1008A000280F391FC9010197089520918B003091BD |
:1008B0008C00821B930B892F9927807899270895A4 |
:1008C000CF93DF93E9DFEC01CE01EFDF8823E1F383 |
:1008D000DF91CF91089586EA86B987E087B9369A85 |
:1008E000089527B196E097B910BE83ED86B9349A82 |
:1008F00097B9369A349BFECF27B944B155B1440F0E |
:10090000551F440F551F493C510510F048EC50E06D |
:100910002091800030918100C90163E0880F991F08 |
:100920006A95E1F7821B930B840F951F23E0969540 |
:1009300087952A95E1F7909381008093800020911C |
:100940007F0033272817390720F480918000809397 |
:100950007F0016B888E080BF08958EB5806C8EBD8C |
:100960008EB580648EBD89B7806289BF89B7846087 |
:1009700089BF08951F920F920FB60F9211248F9383 |
:1009800080918F008F5F80938F008F910F900FBEAB |
:100990000F901F9018951F920F920FB60F9211246F |
:1009A0002F933F938F939F930EB406FE0FC0109228 |
:1009B0008F0086B597B590939300809392008EB583 |
:1009C0008F7B8EBD84E680938E0070C08EB5806470 |
:1009D0008EBD26B537B58091920090919300281B6B |
:1009E000390B80918F009927982F8827990F280F0E |
:1009F000391F689414F8369527951694E1F73093CB |
:100A00009500209394002851314030F488E191E022 |
:100A100090939500809394002091940030919500DC |
:100A2000285131403093950020939400809190009C |
:100A3000909191008217930730F4809190009091EB |
:100A4000910001960CC08091900090919100281720 |
:100A5000390748F48091900090919100019790930C |
:100A60009100809390002091900030919100C901F5 |
:100A7000880F991F880F991F880F991F821B930B4E |
:100A80002091940030919500820F931F23E096955A |
:100A900087952A95E1F79093950080939400909321 |
:100AA00091008093900081E0809360009F918F91EE |
:100AB0003F912F910F900FBE0F901F9018951F928E |
:100AC0000F920FB60F9211248F938AB78F7B8ABF34 |
:100AD0008F910F900FBE0F901F9018958C5F82B969 |
:100AE00085EC86BF08951F920F920FB60F921124C6 |
:100AF0008F939F9381B19927887F9070803891055B |
:100B0000E9F08138910534F40097B1F18036910510 |
:100B100079F035C0883B9105D9F0893B910524F4E3 |
:100B2000883A9105A9F02BC0883F910511F127C0A3 |
:100B300086B7806886BF1092960023C083B18093E9 |
:100B4000880384EF91E090937B0080937A000EC03D |
:100B500090919600992339F480917E0083B99F5F2C |
:100B60009093960003C08091610083B986B7806836 |
:100B700007C086B7806986BF86B7806986BF85EC67 |
:100B800086BF9F918F910F900FBE0F901F90189569 |
:100B90001F920F920FB60F9211240F900FBE0F905D |
:100BA0001F9018951F920F920FB60F9211241F934A |
:100BB0002F933F934F935F936F937F938F939F9365 |
:100BC000AF93BF93CF93EF93FF93459B02C011E088 |
:100BD00001C010E08091990099278230910509F4B5 |
:100BE00050C0833091052CF4009779F0019739F1CA |
:100BF000BFC08430910509F478C0843091050CF4AD |
:100C00005AC0059709F48BC0B3C082EA8FBD81E654 |
:100C100085BD88E087BB112369F082B3877E82BBE4 |
:100C2000959AC1E0C4BD8091600081115ADE409860 |
:100C3000C7B91BC082B3877D82BB949A99C082B327 |
:100C4000877E82BB959A1123B1F482EA8FBD81E43D |
:100C500085BD8CE087BB81E084BD809160008111FF |
:100C600040DE17B988B1836088B9809199008F5FA1 |
:100C7000809399006DC082EA8FBD81E685BD88E0D2 |
:100C800076C082EA8FBD81E485BD8CE087BB1123ED |
:100C900069F082B38F7C82BB939A81E084BD80919E |
:100CA000600081111EDE82E087B932C082B3877E88 |
:100CB00082BB959A5DC082B38F7C82BB939A1123CD |
:100CC00071F482EA8FBD81E485BD8AE087BBC1E013 |
:100CD000C4BD80916000811104DEC7B9C3CF82EA30 |
:100CE0008FBD81E485BD8CE042C082EA8FBD81E486 |
:100CF00085BD8AE087BB112369F082B3877D82BB03 |
:100D0000949A81E084BD809160008111EADD17B87A |
:100D10004098ABCF82B38F7C82BB939A29C082B3B9 |
:100D2000877D82BB949A1123E9F482EA8FBD81E624 |
:100D300085BD88E087BB81E084BD80916000811122 |
:100D4000D0DD82E087B988B1836088B910939900BB |
:100D5000809172009091730001969093730080933C |
:100D6000720006C082EA8FBD81E485BD8AE087BB40 |
:100D7000459903C0112309F028CF459B03C01123D7 |
:100D800009F423CF10926000FF91EF91CF91BF91B2 |
:100D9000AF919F918F917F916F915F914F913F9113 |
:100DA0002F911F910F900FBE0F901F90189580915B |
:100DB000990099278230910551F1833091052CF4E7 |
:100DC000009769F00197B9F0089584309105E1F139 |
:100DD000843091055CF1059709F443C0089582EAD7 |
:100DE0008FBD81E685BD88E087BB82B3877D82BBEE |
:100DF000949A82E034C082EA8FBD81E685BD88E0A6 |
:100E000087BB82B3877E82BB959A81E01AC082EA53 |
:100E10008FBD81E485BD8CE087BB82B3877E82BBBA |
:100E2000959A17B888B1836088B9089582EA8FBD12 |
:100E300081E485BD8CE087BB82B38F7C82BB939AB3 |
:100E400082E087B94098089582EA8FBD81E485BD2C |
:100E50008AE087BB82B38F7C82BB939A81E087B99B |
:100E6000E1CF82EA8FBD81E485BD8AE087BB82B392 |
:100E7000877D82BB949A17B8E5CF0F931F93CF93CA |
:100E8000DF938C01EB01009711F4672BB9F16EE051 |
:100E900070E081E090E037D0FC01892B71F180E8AF |
:100EA0008383209771F0D387C28781E88383809101 |
:100EB000890390918A03892B21F4F0938A03E093AC |
:100EC000890301151105C9F01187008783818260AC |
:100ED000838380918B0390918C03892B71F4F09321 |
:100EE0008C03E0938B0380918D0390918E03892B6B |
:100EF00021F4F0938E03E0938D03CF01DF91CF9126 |
:100F00001F910F9108950F931F93CF93DF93869FA7 |
:100F10008001879F100D969F100D1124C8010DD0E0 |
:100F2000EC01009721F0A80160E070E0FCD0CE0158 |
:100F3000DF91CF911F910F910895CF93DF93AC0173 |
:100F4000029710F442E050E020E030E0A0919103DD |
:100F5000B0919203BD01F901109709F44CC08D9135 |
:100F60009C9111978417950731F14817590738F468 |
:100F70002115310519F08217930708F49C01FD0132 |
:100F8000A281B381109759F721153105A1F1C9014B |
:100F9000841B950B049708F4A901DB01E0E0F0E065 |
:100FA000109749F18D919C91119782179307F9F44D |
:100FB0004217530779F4ED018A819B81309719F02C |
:100FC0009383828304C09093920380939103CD0115 |
:100FD00002964AC0241B350BFD01E20FF31F41931B |
:100FE0005193225030402D933C93CF013DC0FD01E1 |
:100FF000A281B381D5CF80918F0390919003892BEB |
:1010000041F480916B0090916C00909390038093D9 |
:101010008F03E0916900F0916A00309741F4EDB7D9 |
:10102000FEB780916D0090916E00E81BF90BA091C6 |
:101030008F03B09190039F012A1B3B0B24173507A8 |
:1010400088F0CA0102962817390760F0CD01840F95 |
:10105000951F02969093900380938F034D935D9319 |
:10106000CD0102C080E090E0DF91CF910895CF9351 |
:10107000DF93009709F454C0DC011297ED011B8245 |
:101080001A828091910390919203009721F1FC01C3 |
:1010900040E050E0EA17FB0718F1ED01FB83EA831B |
:1010A0002D913C911197C20FD31FCE0102968E173E |
:1010B0009F0771F48A819B81280F391F2E5F3F4F54 |
:1010C00011963C932E9382819381FD0193838283B9 |
:1010D0004115510559F4B0939203A093910320C098 |
:1010E000AF010280F381E02D3097A1F6EA01BB83C6 |
:1010F000AA83CA01029628813981820F931F8A1719 |
:101100009B0771F48D919C911197280F391F2E5FC9 |
:101110003F4F39832883FD01828193819B838A839A |
:10112000DF91CF910895DC0101C06D934150504093 |
:10113000E0F70895991B79E004C0991F961708F00D |
:10114000961B881F7A95C9F780950895AA1BBB1B2B |
:1011500051E107C0AA1FBB1FA617B70710F0A61BB7 |
:10116000B70B881F991F5A95A9F780959095BC01D8 |
:10117000CD010895A1E21A2EAA1BBB1BFD010DC0D3 |
:10118000AA1FBB1FEE1FFF1FA217B307E407F50737 |
:1011900020F0A21BB30BE40BF50B661F771F881F13 |
:1011A000991F1A9469F760957095809590959B01A9 |
:0811B000AC01BD01CF0108955F |
:1011B80001FF01010A00016464000093032000009C |
:00000001FF |
/branches/FLightCtrl/Hex-Files/BrushLess-Ctrl_16kHz_ADR3_V0_31.hex |
---|
0,0 → 1,286 |
:1000000012C05DC52AC029C0C3C5C5C426C025C04D |
:10001000B1C4F8C322C0EFC220C0BCC21EC01DC004 |
:10002000C1C561C51AC011241FBECFE5D4E0DEBF33 |
:10003000CDBF10E0A0E6B0E0E8EBF1E102C0059032 |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92A339B107E1F73AC1D2CF20918200B6 |
:1000600080916100821710F4282FAB9A8091800054 |
:10007000909181008338910560F01BBC1ABC19BCBB |
:1000800018BC13BCAB9A01979093810080938000B9 |
:100090000895822F9927880F991F9BBD8ABD99BD0E |
:1000A00088BD23BD089582E08FBD81E485BD85B301 |
:1000B000817F85BB89E08EBD089592B7980F82B786 |
:1000C000891B87FDFCCF0895AF92BF92CF92DF923C |
:1000D000EF92FF920F931F93CF93DF93182F8CE231 |
:1000E000A82E81E0B82EC12CD12C109297004398F5 |
:1000F00085E090E09093830080938200AFDF57D635 |
:1001000088EC90E0DDD3C12FDD27D0938300C0932E |
:100110008200EE24FF248701EA14FB040C051D0570 |
:1001200078F480916600882311F43ED201C050D348 |
:1001300084E6C3DF0894E11CF11C011D111DECCF06 |
:10014000C601B5012FE030E040E050E013D8A21A1C |
:10015000B30AC40AD50A0894A108B108C108D10895 |
:1001600089E1A816B104C104D104C8F020D6809159 |
:1001700099008F5F809399008091990066E0DAD7AB |
:1001800090939900AED3D0938300C093820066DF32 |
:10019000449BBFCF82B390E8892782BBBACFDF915F |
:1001A000CF911F910F91FF90EF90DF90CF90BF9074 |
:1001B000AF90089540917A0050917B004115510510 |
:1001C00009F04BC080917900882371F090918800EC |
:1001D0008FEF989FC001112468EC70E0B7D770933F |
:1001E00085006093840041C080918E00882341F196 |
:1001F000209190003091910081E02D32380708F075 |
:100200009A01293C310510F028EC30E02B30310503 |
:1002100028F4509385004093840026C08CEF90E032 |
:10022000289FA001299F500D389F500D1124CA010D |
:10023000885D994064EB70E089D7CB01039610C0CC |
:100240008091840090918500009729F00197909308 |
:10025000850080938400AB9A08C080918803992719 |
:100260009093850080938400AB9880918400909156 |
:1002700085008F3F910539F030F08FEF90E090933B |
:10028000850080938400809184009927089580914F |
:100290008000909181009093780380937703809100 |
:1002A0007E00992790937A03809379038091700060 |
:1002B0009091710090937C0380937B0380919000D8 |
:1002C0009091910090937E0380937D030895CFE5F4 |
:1002D000D4E0DEBFCDBFEE2488E084BB85BB8AEBD3 |
:1002E00081BB80E882BB8EE087BB81E388BB5BD2A9 |
:1002F000CAD27894C0E0D0E0C330D10509F4979A0F |
:1003000086E990E0DDD297988AEF90E0D9D22196E5 |
:10031000C530D1058CF384EF91E0D2D244D2C3DE54 |
:1003200080E5DCD31AD385E690E0B6D286E690E08D |
:10033000B3D287E690E0B0D2EC018EEF90E0ACD281 |
:100340005C018DEE93E0A8D28C018EEE93E0A4D2F6 |
:100350006C01CE01AAD28823E1F3979A1092830010 |
:10036000109282007BDE88E080BF81E087B98AE05E |
:1003700090E092D2EC0181E090E090937A03809338 |
:100380007903109291001092900014DF99279093B6 |
:10039000830080938200809199008E1551F0109215 |
:1003A00062001092630082E390E076D2EC01E0906C |
:1003B00099008091820090918300892BC9F410925A |
:1003C000740010926300C80170D28823D9F0109293 |
:1003D0009700439881E08093620082B3877C82BB60 |
:1003E00082E08FBD81E485BD85B3817F85BB0AC076 |
:1003F00080916200882319F081E0809374008CED75 |
:1004000095E04AD280916200882321F01092830007 |
:100410001092820023DE809163008F5F80936300DF |
:10042000813009F0B2CF809162008111979AC501A5 |
:100430003CD2882339F182E390E02ED25C01809196 |
:100440007E00482F5527209180003091810042176F |
:10045000530710F48F5F04C02417350718F4815038 |
:1004600080937E0080917E0090916100823428F01C |
:10047000915090936100AB9A05C09F3F19F09F5F28 |
:1004800090936100C80111D2882319F18AE090E0AD |
:1004900003D28C012091720030917300C901880F42 |
:1004A000991F880F991F820F931F820F931F66E079 |
:1004B00070E04CD6709371006093700010927300DE |
:1004C0001092720080918E00882319F481E080934D |
:1004D0006000C601EAD1882321F08CED95E0DCD1E3 |
:1004E0006C01CE01E2D1882331F0809170009091AF |
:1004F0007100892B29F080917400882309F445CF7D |
:1005000021E0F22EF092620010929700439884E668 |
:1005100090E0C2D1EC0180917400882309F435CFBA |
:10052000AB98109274008AE0CFDD979A1092620027 |
:100530008091990081508093990081E090E09093A0 |
:100540008300809382008ADD88B18C7F88B9F09225 |
:10055000970088B18A6088B984E690E09DD1EC016B |
:10056000CE01A3D18823E1F38AE090E09093830049 |
:100570008093820073DD88EC90E08ED1EC01CE0197 |
:1005800094D18823E1F388EE93E086D1EC0197E0E3 |
:10059000E92EFBCE1F920F920FB60F9211240F90EF |
:1005A0000FBE0F901F9018955E9B24C0809166002F |
:1005B0008823E1F48091890090918A0001969093BC |
:1005C0008A0080938900FC01E556FD4FE081ED3003 |
:1005D00019F08436910539F410928A00109289003E |
:1005E00081E080936600589AECB9089510928A00D1 |
:1005F0001092890008951F920F920FB60F92112446 |
:100600008F938CB18093870080918700853F19F488 |
:100610001092670014C0809167008F5F809367001D |
:10062000833041F4809187008093880088EC809328 |
:10063000790005C0853618F084E6809367008F91B5 |
:100640000F900FBE0F901F901895AC01A0E0B0E086 |
:100650009D01A817B90748F4EBE9F2E08191280F52 |
:10066000311D1196A417B507C8F33F70FD01E5567B |
:10067000FD4FC90146E0969587954A95E1F7835C61 |
:1006800080831196FD01E556FD4F2F733070822F48 |
:10069000835C8083A456BD4F8DE08C9310926600DE |
:1006A00080919B028CB908951F93CF93DF93382FCD |
:1006B000EA01722F10E083E280939B0260939C0218 |
:1006C00030939D02A3E0B0E0772309F458C077236C |
:1006D00011F4972F07C0FE01E10FF11D1F5F9081FC |
:1006E000715011F4472F0EC0FE01E10FF11D1F5F85 |
:1006F0004081715039F0FE01E10FF11D1F5F6081F3 |
:10070000715001C0672FFD01E556FD4F892F869579 |
:100710008695835C80831196FD01E556FD4F892FF8 |
:1007200099278370907024E0880F991F2A95E1F72C |
:1007300055279A0194E0369527959A95E1F7822BF3 |
:10074000835C80831196FD01E556FD4F4F7050701C |
:10075000440F551F440F551F862F992756E0969535 |
:1007600087955A95E1F7842B835C80831196FD0170 |
:10077000E556FD4F6F73635C60831196A5CFCD0185 |
:1007800064DFDF91CF911F910895CF93C82F8A30F6 |
:1007900011F48DE0FADF5D9BFECFCCB980E090E0F4 |
:1007A000CF910895089588E18AB9599A579A89E1B5 |
:1007B00089B960E070E085EC93E05FD388EC90E06D |
:1007C0006BD0909300038093FF028AE28CB9089566 |
:1007D0008091FF029091000368D0882391F080916E |
:1007E0006600882371F022E245E653E060919A02A8 |
:1007F00084E45ADF82E390E04FD09093000380932B |
:10080000FF0208951F920F920FB60F9211248F933B |
:100810009F93809187038F5F8093870380918D00E2 |
:10082000815080938D008F3F39F583E080938D0058 |
:1008300080918B0090918C00019690938C00809316 |
:100840008B0080917A0090917B00009729F00197AE |
:1008500090937B0080937A0080918E00882329F00A |
:1008600080918E00815080938E0080917900882342 |
:1008700019F08150809379009F918F910F900FBE56 |
:100880000F901F90189582E083BF89B7816089BF60 |
:1008900089B7806489BF089520918B0030918C00C6 |
:1008A000280F391FC9010197089520918B003091BD |
:1008B0008C00821B930B892F9927807899270895A4 |
:1008C000CF93DF93E9DFEC01CE01EFDF8823E1F383 |
:1008D000DF91CF91089586EA86B987E087B9369A85 |
:1008E000089527B196E097B910BE83ED86B9349A82 |
:1008F00097B9369A349BFECF27B944B155B1440F0E |
:10090000551F440F551F493C510510F048EC50E06D |
:100910002091800030918100C90163E0880F991F08 |
:100920006A95E1F7821B930B840F951F23E0969540 |
:1009300087952A95E1F7909381008093800020911C |
:100940007F0033272817390720F480918000809397 |
:100950007F0016B888E080BF08958EB5806C8EBD8C |
:100960008EB580648EBD89B7806289BF89B7846087 |
:1009700089BF08951F920F920FB60F9211248F9383 |
:1009800080918F008F5F80938F008F910F900FBEAB |
:100990000F901F9018951F920F920FB60F9211246F |
:1009A0002F933F938F939F930EB406FE0FC0109228 |
:1009B0008F0086B597B590939300809392008EB583 |
:1009C0008F7B8EBD84E680938E0070C08EB5806470 |
:1009D0008EBD26B537B58091920090919300281B6B |
:1009E000390B80918F009927982F8827990F280F0E |
:1009F000391F689414F8369527951694E1F73093CB |
:100A00009500209394002851314030F488E191E022 |
:100A100090939500809394002091940030919500DC |
:100A2000285131403093950020939400809190009C |
:100A3000909191008217930730F4809190009091EB |
:100A4000910001960CC08091900090919100281720 |
:100A5000390748F48091900090919100019790930C |
:100A60009100809390002091900030919100C901F5 |
:100A7000880F991F880F991F880F991F821B930B4E |
:100A80002091940030919500820F931F23E096955A |
:100A900087952A95E1F79093950080939400909321 |
:100AA00091008093900081E0809360009F918F91EE |
:100AB0003F912F910F900FBE0F901F9018951F928E |
:100AC0000F920FB60F9211248F938AB78F7B8ABF34 |
:100AD0008F910F900FBE0F901F9018958A5F82B96B |
:100AE00085EC86BF08951F920F920FB60F921124C6 |
:100AF0008F939F9381B19927887F9070803891055B |
:100B0000E9F08138910534F40097B1F18036910510 |
:100B100079F035C0883B9105D9F0893B910524F4E3 |
:100B2000883A9105A9F02BC0883F910511F127C0A3 |
:100B300086B7806886BF1092960023C083B18093E9 |
:100B4000880384EF91E090937B0080937A000EC03D |
:100B500090919600992339F480917E0083B99F5F2C |
:100B60009093960003C08091610083B986B7806836 |
:100B700007C086B7806986BF86B7806986BF85EC67 |
:100B800086BF9F918F910F900FBE0F901F90189569 |
:100B90001F920F920FB60F9211240F900FBE0F905D |
:100BA0001F9018951F920F920FB60F9211241F934A |
:100BB0002F933F934F935F936F937F938F939F9365 |
:100BC000AF93BF93CF93EF93FF93459B02C011E088 |
:100BD00001C010E08091990099278230910509F4B5 |
:100BE00050C0833091052CF4009779F0019739F1CA |
:100BF000BFC08430910509F478C0843091050CF4AD |
:100C00005AC0059709F48BC0B3C082EA8FBD81E654 |
:100C100085BD88E087BB112369F082B3877E82BBE4 |
:100C2000959AC1E0C4BD8091600081115ADE409860 |
:100C3000C7B91BC082B3877D82BB949A99C082B327 |
:100C4000877E82BB959A1123B1F482EA8FBD81E43D |
:100C500085BD8CE087BB81E084BD809160008111FF |
:100C600040DE17B988B1836088B9809199008F5FA1 |
:100C7000809399006DC082EA8FBD81E685BD88E0D2 |
:100C800076C082EA8FBD81E485BD8CE087BB1123ED |
:100C900069F082B38F7C82BB939A81E084BD80919E |
:100CA000600081111EDE82E087B932C082B3877E88 |
:100CB00082BB959A5DC082B38F7C82BB939A1123CD |
:100CC00071F482EA8FBD81E485BD8AE087BBC1E013 |
:100CD000C4BD80916000811104DEC7B9C3CF82EA30 |
:100CE0008FBD81E485BD8CE042C082EA8FBD81E486 |
:100CF00085BD8AE087BB112369F082B3877D82BB03 |
:100D0000949A81E084BD809160008111EADD17B87A |
:100D10004098ABCF82B38F7C82BB939A29C082B3B9 |
:100D2000877D82BB949A1123E9F482EA8FBD81E624 |
:100D300085BD88E087BB81E084BD80916000811122 |
:100D4000D0DD82E087B988B1836088B910939900BB |
:100D5000809172009091730001969093730080933C |
:100D6000720006C082EA8FBD81E485BD8AE087BB40 |
:100D7000459903C0112309F028CF459B03C01123D7 |
:100D800009F423CF10926000FF91EF91CF91BF91B2 |
:100D9000AF919F918F917F916F915F914F913F9113 |
:100DA0002F911F910F900FBE0F901F90189580915B |
:100DB000990099278230910551F1833091052CF4E7 |
:100DC000009769F00197B9F0089584309105E1F139 |
:100DD000843091055CF1059709F443C0089582EAD7 |
:100DE0008FBD81E685BD88E087BB82B3877D82BBEE |
:100DF000949A82E034C082EA8FBD81E685BD88E0A6 |
:100E000087BB82B3877E82BB959A81E01AC082EA53 |
:100E10008FBD81E485BD8CE087BB82B3877E82BBBA |
:100E2000959A17B888B1836088B9089582EA8FBD12 |
:100E300081E485BD8CE087BB82B38F7C82BB939AB3 |
:100E400082E087B94098089582EA8FBD81E485BD2C |
:100E50008AE087BB82B38F7C82BB939A81E087B99B |
:100E6000E1CF82EA8FBD81E485BD8AE087BB82B392 |
:100E7000877D82BB949A17B8E5CF0F931F93CF93CA |
:100E8000DF938C01EB01009711F4672BB9F16EE051 |
:100E900070E081E090E037D0FC01892B71F180E8AF |
:100EA0008383209771F0D387C28781E88383809101 |
:100EB000890390918A03892B21F4F0938A03E093AC |
:100EC000890301151105C9F01187008783818260AC |
:100ED000838380918B0390918C03892B71F4F09321 |
:100EE0008C03E0938B0380918D0390918E03892B6B |
:100EF00021F4F0938E03E0938D03CF01DF91CF9126 |
:100F00001F910F9108950F931F93CF93DF93869FA7 |
:100F10008001879F100D969F100D1124C8010DD0E0 |
:100F2000EC01009721F0A80160E070E0FCD0CE0158 |
:100F3000DF91CF911F910F910895CF93DF93AC0173 |
:100F4000029710F442E050E020E030E0A0919103DD |
:100F5000B0919203BD01F901109709F44CC08D9135 |
:100F60009C9111978417950731F14817590738F468 |
:100F70002115310519F08217930708F49C01FD0132 |
:100F8000A281B381109759F721153105A1F1C9014B |
:100F9000841B950B049708F4A901DB01E0E0F0E065 |
:100FA000109749F18D919C91119782179307F9F44D |
:100FB0004217530779F4ED018A819B81309719F02C |
:100FC0009383828304C09093920380939103CD0115 |
:100FD00002964AC0241B350BFD01E20FF31F41931B |
:100FE0005193225030402D933C93CF013DC0FD01E1 |
:100FF000A281B381D5CF80918F0390919003892BEB |
:1010000041F480916B0090916C00909390038093D9 |
:101010008F03E0916900F0916A00309741F4EDB7D9 |
:10102000FEB780916D0090916E00E81BF90BA091C6 |
:101030008F03B09190039F012A1B3B0B24173507A8 |
:1010400088F0CA0102962817390760F0CD01840F95 |
:10105000951F02969093900380938F034D935D9319 |
:10106000CD0102C080E090E0DF91CF910895CF9351 |
:10107000DF93009709F454C0DC011297ED011B8245 |
:101080001A828091910390919203009721F1FC01C3 |
:1010900040E050E0EA17FB0718F1ED01FB83EA831B |
:1010A0002D913C911197C20FD31FCE0102968E173E |
:1010B0009F0771F48A819B81280F391F2E5F3F4F54 |
:1010C00011963C932E9382819381FD0193838283B9 |
:1010D0004115510559F4B0939203A093910320C098 |
:1010E000AF010280F381E02D3097A1F6EA01BB83C6 |
:1010F000AA83CA01029628813981820F931F8A1719 |
:101100009B0771F48D919C911197280F391F2E5FC9 |
:101110003F4F39832883FD01828193819B838A839A |
:10112000DF91CF910895DC0101C06D934150504093 |
:10113000E0F70895991B79E004C0991F961708F00D |
:10114000961B881F7A95C9F780950895AA1BBB1B2B |
:1011500051E107C0AA1FBB1FA617B70710F0A61BB7 |
:10116000B70B881F991F5A95A9F780959095BC01D8 |
:10117000CD010895A1E21A2EAA1BBB1BFD010DC0D3 |
:10118000AA1FBB1FEE1FFF1FA217B307E407F50737 |
:1011900020F0A21BB30BE40BF50B661F771F881F13 |
:1011A000991F1A9469F760957095809590959B01A9 |
:0811B000AC01BD01CF0108955F |
:1011B80001FF01010A00016464000093032000009C |
:00000001FF |
/branches/FLightCtrl/Hex-Files/BrushLess-Ctrl_16kHz_ADR4_V0_31.hex |
---|
0,0 → 1,286 |
:1000000012C05DC52AC029C0C3C5C5C426C025C04D |
:10001000B1C4F8C322C0EFC220C0BCC21EC01DC004 |
:10002000C1C561C51AC011241FBECFE5D4E0DEBF33 |
:10003000CDBF10E0A0E6B0E0E8EBF1E102C0059032 |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92A339B107E1F73AC1D2CF20918200B6 |
:1000600080916100821710F4282FAB9A8091800054 |
:10007000909181008338910560F01BBC1ABC19BCBB |
:1000800018BC13BCAB9A01979093810080938000B9 |
:100090000895822F9927880F991F9BBD8ABD99BD0E |
:1000A00088BD23BD089582E08FBD81E485BD85B301 |
:1000B000817F85BB89E08EBD089592B7980F82B786 |
:1000C000891B87FDFCCF0895AF92BF92CF92DF923C |
:1000D000EF92FF920F931F93CF93DF93182F8CE231 |
:1000E000A82E81E0B82EC12CD12C109297004398F5 |
:1000F00085E090E09093830080938200AFDF57D635 |
:1001000088EC90E0DDD3C12FDD27D0938300C0932E |
:100110008200EE24FF248701EA14FB040C051D0570 |
:1001200078F480916600882311F43ED201C050D348 |
:1001300084E6C3DF0894E11CF11C011D111DECCF06 |
:10014000C601B5012FE030E040E050E013D8A21A1C |
:10015000B30AC40AD50A0894A108B108C108D10895 |
:1001600089E1A816B104C104D104C8F020D6809159 |
:1001700099008F5F809399008091990066E0DAD7AB |
:1001800090939900AED3D0938300C093820066DF32 |
:10019000449BBFCF82B390E8892782BBBACFDF915F |
:1001A000CF911F910F91FF90EF90DF90CF90BF9074 |
:1001B000AF90089540917A0050917B004115510510 |
:1001C00009F04BC080917900882371F090918800EC |
:1001D0008FEF989FC001112468EC70E0B7D770933F |
:1001E00085006093840041C080918E00882341F196 |
:1001F000209190003091910081E02D32380708F075 |
:100200009A01293C310510F028EC30E02B30310503 |
:1002100028F4509385004093840026C08CEF90E032 |
:10022000289FA001299F500D389F500D1124CA010D |
:10023000885D994064EB70E089D7CB01039610C0CC |
:100240008091840090918500009729F00197909308 |
:10025000850080938400AB9A08C080918803992719 |
:100260009093850080938400AB9880918400909156 |
:1002700085008F3F910539F030F08FEF90E090933B |
:10028000850080938400809184009927089580914F |
:100290008000909181009093780380937703809100 |
:1002A0007E00992790937A03809379038091700060 |
:1002B0009091710090937C0380937B0380919000D8 |
:1002C0009091910090937E0380937D030895CFE5F4 |
:1002D000D4E0DEBFCDBFEE2488E084BB85BB8AEBD3 |
:1002E00081BB80E882BB8EE087BB81E388BB5BD2A9 |
:1002F000CAD27894C0E0D0E0C430D10509F4979A0E |
:1003000086E990E0DDD297988AEF90E0D9D22196E5 |
:10031000C530D1058CF384EF91E0D2D244D2C3DE54 |
:1003200080E5DCD31AD385E690E0B6D286E690E08D |
:10033000B3D287E690E0B0D2EC018EEF90E0ACD281 |
:100340005C018DEE93E0A8D28C018EEE93E0A4D2F6 |
:100350006C01CE01AAD28823E1F3979A1092830010 |
:10036000109282007BDE88E080BF81E087B98AE05E |
:1003700090E092D2EC0181E090E090937A03809338 |
:100380007903109291001092900014DF99279093B6 |
:10039000830080938200809199008E1551F0109215 |
:1003A00062001092630082E390E076D2EC01E0906C |
:1003B00099008091820090918300892BC9F410925A |
:1003C000740010926300C80170D28823D9F0109293 |
:1003D0009700439881E08093620082B3877C82BB60 |
:1003E00082E08FBD81E485BD85B3817F85BB0AC076 |
:1003F00080916200882319F081E0809374008CED75 |
:1004000095E04AD280916200882321F01092830007 |
:100410001092820023DE809163008F5F80936300DF |
:10042000813009F0B2CF809162008111979AC501A5 |
:100430003CD2882339F182E390E02ED25C01809196 |
:100440007E00482F5527209180003091810042176F |
:10045000530710F48F5F04C02417350718F4815038 |
:1004600080937E0080917E0090916100823428F01C |
:10047000915090936100AB9A05C09F3F19F09F5F28 |
:1004800090936100C80111D2882319F18AE090E0AD |
:1004900003D28C012091720030917300C901880F42 |
:1004A000991F880F991F820F931F820F931F66E079 |
:1004B00070E04CD6709371006093700010927300DE |
:1004C0001092720080918E00882319F481E080934D |
:1004D0006000C601EAD1882321F08CED95E0DCD1E3 |
:1004E0006C01CE01E2D1882331F0809170009091AF |
:1004F0007100892B29F080917400882309F445CF7D |
:1005000021E0F22EF092620010929700439884E668 |
:1005100090E0C2D1EC0180917400882309F435CFBA |
:10052000AB98109274008AE0CFDD979A1092620027 |
:100530008091990081508093990081E090E09093A0 |
:100540008300809382008ADD88B18C7F88B9F09225 |
:10055000970088B18A6088B984E690E09DD1EC016B |
:10056000CE01A3D18823E1F38AE090E09093830049 |
:100570008093820073DD88EC90E08ED1EC01CE0197 |
:1005800094D18823E1F388EE93E086D1EC0197E0E3 |
:10059000E92EFBCE1F920F920FB60F9211240F90EF |
:1005A0000FBE0F901F9018955E9B24C0809166002F |
:1005B0008823E1F48091890090918A0001969093BC |
:1005C0008A0080938900FC01E556FD4FE081ED3003 |
:1005D00019F08436910539F410928A00109289003E |
:1005E00081E080936600589AECB9089510928A00D1 |
:1005F0001092890008951F920F920FB60F92112446 |
:100600008F938CB18093870080918700853F19F488 |
:100610001092670014C0809167008F5F809367001D |
:10062000843041F4809187008093880088EC809327 |
:10063000790005C0853618F084E6809367008F91B5 |
:100640000F900FBE0F901F901895AC01A0E0B0E086 |
:100650009D01A817B90748F4EBE9F2E08191280F52 |
:10066000311D1196A417B507C8F33F70FD01E5567B |
:10067000FD4FC90146E0969587954A95E1F7835C61 |
:1006800080831196FD01E556FD4F2F733070822F48 |
:10069000835C8083A456BD4F8DE08C9310926600DE |
:1006A00080919B028CB908951F93CF93DF93382FCD |
:1006B000EA01722F10E083E280939B0260939C0218 |
:1006C00030939D02A3E0B0E0772309F458C077236C |
:1006D00011F4972F07C0FE01E10FF11D1F5F9081FC |
:1006E000715011F4472F0EC0FE01E10FF11D1F5F85 |
:1006F0004081715039F0FE01E10FF11D1F5F6081F3 |
:10070000715001C0672FFD01E556FD4F892F869579 |
:100710008695835C80831196FD01E556FD4F892FF8 |
:1007200099278370907024E0880F991F2A95E1F72C |
:1007300055279A0194E0369527959A95E1F7822BF3 |
:10074000835C80831196FD01E556FD4F4F7050701C |
:10075000440F551F440F551F862F992756E0969535 |
:1007600087955A95E1F7842B835C80831196FD0170 |
:10077000E556FD4F6F73635C60831196A5CFCD0185 |
:1007800064DFDF91CF911F910895CF93C82F8A30F6 |
:1007900011F48DE0FADF5D9BFECFCCB980E090E0F4 |
:1007A000CF910895089588E18AB9599A579A89E1B5 |
:1007B00089B960E070E085EC93E05FD388EC90E06D |
:1007C0006BD0909300038093FF028AE28CB9089566 |
:1007D0008091FF029091000368D0882391F080916E |
:1007E0006600882371F022E245E653E060919A02A8 |
:1007F00084E45ADF82E390E04FD09093000380932B |
:10080000FF0208951F920F920FB60F9211248F933B |
:100810009F93809187038F5F8093870380918D00E2 |
:10082000815080938D008F3F39F583E080938D0058 |
:1008300080918B0090918C00019690938C00809316 |
:100840008B0080917A0090917B00009729F00197AE |
:1008500090937B0080937A0080918E00882329F00A |
:1008600080918E00815080938E0080917900882342 |
:1008700019F08150809379009F918F910F900FBE56 |
:100880000F901F90189582E083BF89B7816089BF60 |
:1008900089B7806489BF089520918B0030918C00C6 |
:1008A000280F391FC9010197089520918B003091BD |
:1008B0008C00821B930B892F9927807899270895A4 |
:1008C000CF93DF93E9DFEC01CE01EFDF8823E1F383 |
:1008D000DF91CF91089586EA86B987E087B9369A85 |
:1008E000089527B196E097B910BE83ED86B9349A82 |
:1008F00097B9369A349BFECF27B944B155B1440F0E |
:10090000551F440F551F493C510510F048EC50E06D |
:100910002091800030918100C90163E0880F991F08 |
:100920006A95E1F7821B930B840F951F23E0969540 |
:1009300087952A95E1F7909381008093800020911C |
:100940007F0033272817390720F480918000809397 |
:100950007F0016B888E080BF08958EB5806C8EBD8C |
:100960008EB580648EBD89B7806289BF89B7846087 |
:1009700089BF08951F920F920FB60F9211248F9383 |
:1009800080918F008F5F80938F008F910F900FBEAB |
:100990000F901F9018951F920F920FB60F9211246F |
:1009A0002F933F938F939F930EB406FE0FC0109228 |
:1009B0008F0086B597B590939300809392008EB583 |
:1009C0008F7B8EBD84E680938E0070C08EB5806470 |
:1009D0008EBD26B537B58091920090919300281B6B |
:1009E000390B80918F009927982F8827990F280F0E |
:1009F000391F689414F8369527951694E1F73093CB |
:100A00009500209394002851314030F488E191E022 |
:100A100090939500809394002091940030919500DC |
:100A2000285131403093950020939400809190009C |
:100A3000909191008217930730F4809190009091EB |
:100A4000910001960CC08091900090919100281720 |
:100A5000390748F48091900090919100019790930C |
:100A60009100809390002091900030919100C901F5 |
:100A7000880F991F880F991F880F991F821B930B4E |
:100A80002091940030919500820F931F23E096955A |
:100A900087952A95E1F79093950080939400909321 |
:100AA00091008093900081E0809360009F918F91EE |
:100AB0003F912F910F900FBE0F901F9018951F928E |
:100AC0000F920FB60F9211248F938AB78F7B8ABF34 |
:100AD0008F910F900FBE0F901F901895885F82B96D |
:100AE00085EC86BF08951F920F920FB60F921124C6 |
:100AF0008F939F9381B19927887F9070803891055B |
:100B0000E9F08138910534F40097B1F18036910510 |
:100B100079F035C0883B9105D9F0893B910524F4E3 |
:100B2000883A9105A9F02BC0883F910511F127C0A3 |
:100B300086B7806886BF1092960023C083B18093E9 |
:100B4000880384EF91E090937B0080937A000EC03D |
:100B500090919600992339F480917E0083B99F5F2C |
:100B60009093960003C08091610083B986B7806836 |
:100B700007C086B7806986BF86B7806986BF85EC67 |
:100B800086BF9F918F910F900FBE0F901F90189569 |
:100B90001F920F920FB60F9211240F900FBE0F905D |
:100BA0001F9018951F920F920FB60F9211241F934A |
:100BB0002F933F934F935F936F937F938F939F9365 |
:100BC000AF93BF93CF93EF93FF93459B02C011E088 |
:100BD00001C010E08091990099278230910509F4B5 |
:100BE00050C0833091052CF4009779F0019739F1CA |
:100BF000BFC08430910509F478C0843091050CF4AD |
:100C00005AC0059709F48BC0B3C082EA8FBD81E654 |
:100C100085BD88E087BB112369F082B3877E82BBE4 |
:100C2000959AC1E0C4BD8091600081115ADE409860 |
:100C3000C7B91BC082B3877D82BB949A99C082B327 |
:100C4000877E82BB959A1123B1F482EA8FBD81E43D |
:100C500085BD8CE087BB81E084BD809160008111FF |
:100C600040DE17B988B1836088B9809199008F5FA1 |
:100C7000809399006DC082EA8FBD81E685BD88E0D2 |
:100C800076C082EA8FBD81E485BD8CE087BB1123ED |
:100C900069F082B38F7C82BB939A81E084BD80919E |
:100CA000600081111EDE82E087B932C082B3877E88 |
:100CB00082BB959A5DC082B38F7C82BB939A1123CD |
:100CC00071F482EA8FBD81E485BD8AE087BBC1E013 |
:100CD000C4BD80916000811104DEC7B9C3CF82EA30 |
:100CE0008FBD81E485BD8CE042C082EA8FBD81E486 |
:100CF00085BD8AE087BB112369F082B3877D82BB03 |
:100D0000949A81E084BD809160008111EADD17B87A |
:100D10004098ABCF82B38F7C82BB939A29C082B3B9 |
:100D2000877D82BB949A1123E9F482EA8FBD81E624 |
:100D300085BD88E087BB81E084BD80916000811122 |
:100D4000D0DD82E087B988B1836088B910939900BB |
:100D5000809172009091730001969093730080933C |
:100D6000720006C082EA8FBD81E485BD8AE087BB40 |
:100D7000459903C0112309F028CF459B03C01123D7 |
:100D800009F423CF10926000FF91EF91CF91BF91B2 |
:100D9000AF919F918F917F916F915F914F913F9113 |
:100DA0002F911F910F900FBE0F901F90189580915B |
:100DB000990099278230910551F1833091052CF4E7 |
:100DC000009769F00197B9F0089584309105E1F139 |
:100DD000843091055CF1059709F443C0089582EAD7 |
:100DE0008FBD81E685BD88E087BB82B3877D82BBEE |
:100DF000949A82E034C082EA8FBD81E685BD88E0A6 |
:100E000087BB82B3877E82BB959A81E01AC082EA53 |
:100E10008FBD81E485BD8CE087BB82B3877E82BBBA |
:100E2000959A17B888B1836088B9089582EA8FBD12 |
:100E300081E485BD8CE087BB82B38F7C82BB939AB3 |
:100E400082E087B94098089582EA8FBD81E485BD2C |
:100E50008AE087BB82B38F7C82BB939A81E087B99B |
:100E6000E1CF82EA8FBD81E485BD8AE087BB82B392 |
:100E7000877D82BB949A17B8E5CF0F931F93CF93CA |
:100E8000DF938C01EB01009711F4672BB9F16EE051 |
:100E900070E081E090E037D0FC01892B71F180E8AF |
:100EA0008383209771F0D387C28781E88383809101 |
:100EB000890390918A03892B21F4F0938A03E093AC |
:100EC000890301151105C9F01187008783818260AC |
:100ED000838380918B0390918C03892B71F4F09321 |
:100EE0008C03E0938B0380918D0390918E03892B6B |
:100EF00021F4F0938E03E0938D03CF01DF91CF9126 |
:100F00001F910F9108950F931F93CF93DF93869FA7 |
:100F10008001879F100D969F100D1124C8010DD0E0 |
:100F2000EC01009721F0A80160E070E0FCD0CE0158 |
:100F3000DF91CF911F910F910895CF93DF93AC0173 |
:100F4000029710F442E050E020E030E0A0919103DD |
:100F5000B0919203BD01F901109709F44CC08D9135 |
:100F60009C9111978417950731F14817590738F468 |
:100F70002115310519F08217930708F49C01FD0132 |
:100F8000A281B381109759F721153105A1F1C9014B |
:100F9000841B950B049708F4A901DB01E0E0F0E065 |
:100FA000109749F18D919C91119782179307F9F44D |
:100FB0004217530779F4ED018A819B81309719F02C |
:100FC0009383828304C09093920380939103CD0115 |
:100FD00002964AC0241B350BFD01E20FF31F41931B |
:100FE0005193225030402D933C93CF013DC0FD01E1 |
:100FF000A281B381D5CF80918F0390919003892BEB |
:1010000041F480916B0090916C00909390038093D9 |
:101010008F03E0916900F0916A00309741F4EDB7D9 |
:10102000FEB780916D0090916E00E81BF90BA091C6 |
:101030008F03B09190039F012A1B3B0B24173507A8 |
:1010400088F0CA0102962817390760F0CD01840F95 |
:10105000951F02969093900380938F034D935D9319 |
:10106000CD0102C080E090E0DF91CF910895CF9351 |
:10107000DF93009709F454C0DC011297ED011B8245 |
:101080001A828091910390919203009721F1FC01C3 |
:1010900040E050E0EA17FB0718F1ED01FB83EA831B |
:1010A0002D913C911197C20FD31FCE0102968E173E |
:1010B0009F0771F48A819B81280F391F2E5F3F4F54 |
:1010C00011963C932E9382819381FD0193838283B9 |
:1010D0004115510559F4B0939203A093910320C098 |
:1010E000AF010280F381E02D3097A1F6EA01BB83C6 |
:1010F000AA83CA01029628813981820F931F8A1719 |
:101100009B0771F48D919C911197280F391F2E5FC9 |
:101110003F4F39832883FD01828193819B838A839A |
:10112000DF91CF910895DC0101C06D934150504093 |
:10113000E0F70895991B79E004C0991F961708F00D |
:10114000961B881F7A95C9F780950895AA1BBB1B2B |
:1011500051E107C0AA1FBB1FA617B70710F0A61BB7 |
:10116000B70B881F991F5A95A9F780959095BC01D8 |
:10117000CD010895A1E21A2EAA1BBB1BFD010DC0D3 |
:10118000AA1FBB1FEE1FFF1FA217B307E407F50737 |
:1011900020F0A21BB30BE40BF50B661F771F881F13 |
:1011A000991F1A9469F760957095809590959B01A9 |
:0811B000AC01BD01CF0108955F |
:1011B80001FF01010A00016464000093032000009C |
:00000001FF |
/branches/FLightCtrl/Hex-Files/Flight-Ctrl_MEGA644_V0_60.hex |
---|
0,0 → 1,1430 |
:100000000C94D9010C94F4010C94F4010C94F401B7 |
:100010000C94F4010C94F4010C94F4010C94F4018C |
:100020000C94F4010C94B20A0C94F4010C94F401B5 |
:100030000C9474140C94F4010C94F4010C94F401D9 |
:100040000C94F4010C94F4010C94D6090C94F40172 |
:100050000C94B0030C94F4010C947A030C94F40106 |
:100060000C949E0B0C94F4010C9493130C94F401D7 |
:100070000A0D466C69676874436F6E74726F6C200A |
:100080005625642E256420000A0D3D3D3D3D3D3D35 |
:100090003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D90 |
:1000A0003D3D3D3D3D3D3D3D000A0D496E69742E8F |
:1000B00020454550524F4D3A2047656E657269653F |
:1000C00072652044656661756C742D506172616D56 |
:1000D000657465722E2E2E000A0D42656E75747A57 |
:1000E0006520506172616D657465727361747A2008 |
:1000F0002564000A0D4162676C65696368204C7570 |
:100100006674647275636B73656E736F722E2E0006 |
:100110004F4B0A0D000A0D537465756572756E6755 |
:100120003A200048656164696E67486F6C64004EF0 |
:1001300065757472616C000A0A0D002E005B2569FA |
:100140005D002B2B204D696B726F4B6F7074657265 |
:10015000202B2B005625642E25640053657474698A |
:100160006E673A202564200028632920486F6C6759 |
:100170006572204275737300486F6568653A202088 |
:1001800020202025356900536F6C6C486F656865C9 |
:100190003A20253569004C756674647275636B3A54 |
:1001A00020253569004F66662020202020203A2037 |
:1001B000253569004B65696E65200048F668656EF7 |
:1001C000726567656C756E6700616B742E204C619B |
:1001D0006765004E69636B3A20202020202025357A |
:1001E0006900526F6C6C3A20202020202025356950 |
:1001F000004B6F6D706173733A20202025356900C4 |
:100200004B313A25346920204B323A25346920009D |
:100210004B333A25346920204B343A253469200089 |
:100220004B353A25346920204B363A253469200075 |
:100230004B373A25346920204B616EE46C65200011 |
:100240004E693A2534692020526F3A2534692000DE |
:1002500047733A253469202047693A2534692000DC |
:1002600050313A253469202050323A253469200033 |
:1002700050333A25346920204B616EE46C652000D0 |
:100280004779726F202D2053656E736F72004E692F |
:10029000636B2025346920282533692900526F6C4F |
:1002A0006C20253469202825336929004769657247 |
:1002B0002025346920282533692900414343202D16 |
:1002C0002053656E736F72004E69636B202534692D |
:1002D00020282533692900526F6C6C202534692051 |
:1002E000282533692900486F636820253469202850 |
:1002F00025336929005370616E6E756E673A202050 |
:1003000025356900456D70662E506567656C3A2528 |
:100310003569004B6F6D70617373202020202020A1 |
:1003200020005269636874756E673A20202535692C |
:10033000004D657373776572743A20202535690026 |
:1003400053746172743A20202020202535690050B2 |
:100350006F7469313A202025336900506F74693217 |
:100360003A202025336900506F7469333A202025E4 |
:10037000336900506F7469343A2020253369005383 |
:100380006572766F202000536574706F696E7420FB |
:1003900020253369005374656C6C756E673A2025AF |
:1003A00033690052616E67653A2533692D253369DB |
:1003B000000011241FBECFEFD0E1DEBFCDBF11E0A2 |
:1003C000A0E0B1E0E0ECF8E502C005900D92AA389B |
:1003D000B107D9F715E0AAE8B1E001C01D92AF312D |
:1003E000B107E1F70C9427020C940000FB01863062 |
:1003F00008F085E0489FD0011124AC59BF4F842FED |
:100400009927019724F00E944C2C0192FACF08956D |
:10041000282FFB01863008F025E0429FD0011124EF |
:10042000AC59BF4F842F9927019724F001900E9467 |
:10043000542CFACFA2E0B0E0022E0E94542C089572 |
:10044000A2E0B0E00E944C2C802D99270895CFEFB8 |
:10045000D0E1DEBFCDBF91E097B98FEF88B98BE1D6 |
:1004600084B995B98EE38AB9579A87EF8BB984B767 |
:10047000877F84BF809160008861809360001092C4 |
:10048000600080ED97E09093A4018093A301109207 |
:10049000DB011092DA011092A8041092A7041092C6 |
:1004A000DD011092DC011092DF011092DE0128982C |
:1004B0000E94730A0E9465060E945F140E94710BDD |
:1004C0000E94791378941092B6038CE38093B7035B |
:1004D00084E08093B8038CE390E09F938F931F9206 |
:1004E0001F9280E790E09F938F931F920E944C078A |
:1004F0008DB79EB707960FB6F8949EBF0FBE8DBFFF |
:1005000088E890E09F938F931F920E944C07299A4E |
:100510000F900F900F90C1E0D0E0DE010E944C2CB4 |
:10052000802D8B3329F189EA90E09F938F931F925E |
:100530000E944C070E941B1B10E00F900F900F9021 |
:10054000123011F40E948C1B4AE36FEC74E0812F8F |
:100550000E9408021F5F163098F3A2E0B0E081E02D |
:10056000082E0E94542C8BE3DE01082E0E94542C8E |
:100570000E9420024AE36FEC74E00E94F6010E94A0 |
:10058000200299279F938F9388ED90E09F938F93FC |
:100590001F920E944C078091D7040F900F900F90EC |
:1005A0000F900F9080FF20C083EF90E09F938F9378 |
:1005B0001F920E944C0784EC99E00E946A0AEC01A9 |
:1005C0000E94770B0F900F900F90CE010E94990A16 |
:1005D0008823D9F380E191E09F938F931F920E942B |
:1005E0004C070F900F900F900E94D116289880ED25 |
:1005F00097E09093A4018093A30188EE93E09093F9 |
:10060000B1038093B00385E58093AB0385E191E06E |
:100610009F938F931F920E944C078091D7040F9055 |
:100620000F900F9082FF03C083E291E002C08FE23F |
:1006300091E09F938F931F920E944C070F900F9011 |
:100640000F9087E391E09F938F931F920E944C0736 |
:100650000E94010F0F900F900F908091A7018823A7 |
:1006600081F11092A7010E94201E0E94D41A28989E |
:1006700080910001882319F08150809300018091BE |
:10068000E001882329F08091E00181508093E0010E |
:100690008091E704282F332780910A0190910B0164 |
:1006A0008217930734F480ED97E09093A401809330 |
:1006B000A30180913102882319F40E94791301C0AB |
:1006C00028980E9483060E949A0580E090E00E948C |
:1006D000990A882311F28091D901882329F088B1E1 |
:1006E00090E1892788B901C0449884EF91E00E9485 |
:1006F0006A0AB3CF1F920F920FB60F9211248F93F5 |
:100700009F93EF93FF93809101018823E1F48091FF |
:100710009801909199010196909399018093980185 |
:10072000FC01E358FD4FE081ED3019F08639910569 |
:1007300039F4109299011092980181E0809301019F |
:10074000E093C60004C01092990110929801FF91A5 |
:10075000EF919F918F910F900FBE0F901F90189562 |
:100760001F920F920FB60F9211242F933F934F9326 |
:100770005F938F939F93AF93BF93EF93FF9390E01B |
:100780008091C6008093930150919E01563910F0DC |
:1007900090939F01809193018D3009F05FC080910B |
:1007A0009F01823009F05AC090939F01852F9927AD |
:1007B00080549C4FFC013297408120919A013091E6 |
:1007C0009B01241B3109DC0111978C91281B3109F5 |
:1007D000C9019F7090939B0180939A0146E0969582 |
:1007E00087954A95E1F7982F935C90939C012F731E |
:1007F0003070235C20939D018081981729F48C919F |
:10080000281711F491E006C090E0809190018F5F6D |
:100810008093900180919201882309F06EC0992302 |
:1008200009F46BC081E08093920150938F01E52F12 |
:10083000FF27E054FC4F8DE080838091C203823516 |
:1008400009F05BC088E190E02CE00FB6F894A89521 |
:10085000809360000FBE209360004FC020919F01E5 |
:10086000822F992781309105F9F0823091051CF48F |
:10087000892B21F040C0029711F13DC08091930176 |
:10088000833239F480919201882319F481E08093B6 |
:100890009F01809193018093C00381E080939E012A |
:1008A00080919301992722C02F5F20939F01E52F0C |
:1008B000FF27E054FC4F80919301808309C0E52F0E |
:1008C000FF27E054FC4F809193018083563920F438 |
:1008D0005F5F50939E0102C010929F01209193018F |
:1008E00080919A0190919B01820F911D90939B01A1 |
:1008F00080939A0102C010929F01FF91EF91BF91E6 |
:10090000AF919F918F915F914F913F912F910F9058 |
:100910000FBE0F901F901895AC01A0E0B0E09D01B4 |
:10092000A817B90748F4EDE7F2E08191280F311DCF |
:100930001196A417B507C8F33F70FD01E358FD4FAA |
:10094000C90156E0969587955A95E1F7835C8083B7 |
:100950001196FD01E358FD4F2F733070822F835C99 |
:100960008083A258BD4F8DE08C931092010180913D |
:100970007D028093C60008951F93CF93DF93382F95 |
:10098000EA01722F10E083E280937D0260937E0281 |
:1009900030937F02A3E0B0E0772309F458C07723B7 |
:1009A00011F4972F07C0FE01E10FF11D1F5F908129 |
:1009B000715011F4472F0EC0FE01E10FF11D1F5FB2 |
:1009C0004081715039F0FE01E10FF11D1F5F608120 |
:1009D000715001C0672FFD01E358FD4F892F8695A7 |
:1009E0008695835C80831196FD01E358FD4F892F26 |
:1009F00099278370907024E0880F991F2A95E1F75A |
:100A000055279A0194E0369527959A95E1F7822B20 |
:100A1000835C80831196FD01E358FD4F4F70507049 |
:100A2000440F551F440F551F862F992726E0969592 |
:100A300087952A95E1F7842B835C80831196FD01CD |
:100A4000E358FD4F6F73635C60831196A5CFCD01B2 |
:100A50000E948C04DF91CF911F9108951F93CF9333 |
:100A6000DF93EC0110E0662309F460C0A22FBB27DE |
:100A70001297E42FFF27E054FC4F30813D534F5F26 |
:100A8000E42FFF27E054FC4F50815D534F5FE42F6C |
:100A9000FF27E054FC4F70817D534F5FE42FFF2709 |
:100AA000E054FC4FE081ED534F5F842F9927A81746 |
:100AB000B907E4F1832F9927880F991F880F991F91 |
:100AC000352F32953F70382B852F99278F70907076 |
:100AD000F4E0880F991FFA95E1F7572F5695569530 |
:100AE000582B872F99278370907076E0880F991F75 |
:100AF0007A95E1F78E2B61506F3FC1F0FE01E10F57 |
:100B0000F11D30831F5F61506F3F81F0FE01E10FE7 |
:100B1000F11D50831F5F61506F3F41F0FE01E10FF7 |
:100B2000F11D80831F5F662309F0A3CFDF91CF9172 |
:100B30001F910895CF93DF93CDB7DEB72B970FB6F4 |
:100B4000F894DEBF0FBECDBF80919201882309F4D7 |
:100B5000A1C08FEF809300018091C2039927813754 |
:100B600091059CF48C3691050CF075C08736910583 |
:100B700009F44BC08836910524F48336910599F029 |
:100B800087C08836910511F183C08437910581F1C2 |
:100B90008537910524F481379105D9F179C08637DD |
:100BA000910579F175C020918F0143E06BE08BEAEC |
:100BB00093E00E942E058091C5019091AD03892B91 |
:100BC0008093C50181E08093950162C020918F01DF |
:100BD00043E062E0CE010A960E942E058091C50195 |
:100BE0009A85892B8093C50181E08093960150C03E |
:100BF00020918F0143E064E08AE891E00E942E0595 |
:100C000047C081E08093940143C081E080939701C5 |
:100C10003FC020918F0143E062E0CE010A960E941E |
:100C20002E058A858F3F61F0863010F085E08A8737 |
:100C30004AE36FEC74E08A850E94F6018A8502C05F |
:100C40000E9420022AE34FEC54E060917C02855B15 |
:100C50000E94BC041DC020918F0143E06AE38FEC29 |
:100C600094E00E942E058091C2034AE36FEC74E089 |
:100C70008B560E940802A2E0B0E08091C2038B561E |
:100C8000082E0E94542C0E94200299270E941215BF |
:100C9000109292012B960FB6F894DEBF0FBECDBF17 |
:100CA000DF91CF910895CF93C82F8A3019F48DE04A |
:100CB0000E9453068091C00085FFFCCFC093C60000 |
:100CC00080E090E0CF910895089588E18093C1007D |
:100CD0008091C00082608093C0008091C1008068D4 |
:100CE0008093C1008091C10080648093C1008AE23A |
:100CF0008093C40088EC90E00E946A0A9093AA0353 |
:100D00008093A903089580910101882309F469C0A3 |
:100D100080919701882371F080910101882351F01F |
:100D20002BE04BEA53E060917C0287E40E94BC0414 |
:100D3000109297018091A9039091AA030E94990AA9 |
:100D4000882321F4809195018823B1F080910101DD |
:100D5000882391F022E346E554E060917C0284E42C |
:100D60000E94BC04109295018AEF90E00E946A0AEA |
:100D70009093AA038093A903809196018823F9F0A8 |
:100D8000809101018823D9F00E940A0F10929601E8 |
:100D90008091A0018F5F8093A001843011F41092A4 |
:100DA000A0013091A00124E1329FC0011124845F91 |
:100DB0009E4FAC0160E0832F805D0E94BC04809157 |
:100DC0009401882371F080910101882351F02AE079 |
:100DD00046EB53E060917C0286E50E94BC041092D1 |
:100DE00094010895982F80918804813069F480914E |
:100DF000C601E82FFF27E45FFE4F90838F5F80934B |
:100E0000C60121E030E005C0892F0E945306282F3B |
:100E10003327C90108950F931F93CF93DF938C015C |
:100E2000EB01672B39F0F80181918F010E94F206E6 |
:100E30002197C9F7DF91CF911F910F9108950F93DB |
:100E40001F93CF93DF938C01EB01672B41F0F801E7 |
:100E50000F5F1F4F84910E94F2062197C1F7DF9127 |
:100E6000CF911F910F910895CF93C82F181634F486 |
:100E700080E20E94F206C1501C16D4F3CF9108956F |
:100E8000CF93C82F181634F480E30E94F206C150A5 |
:100E90001C16D4F3CF9108952F923F924F925F92F8 |
:100EA0006F927F928F929F92AF92BF92CF92DF927A |
:100EB000EF92FF920F931F93CF93DF93CDB7DEB7DF |
:100EC000E0970FB6F894DEBF0FBECDBF26968FAD6C |
:100ED00026972896EEADFFAD28971CA61DA61EA648 |
:100EE0001FA680938804A8E46A2E712C6C0E7D1EC8 |
:100EF0005F01C50105C0053239F00894A11CB11C81 |
:100F0000F50104910023B9F7B501681B790B11F0C5 |
:100F10000E941F07002309F430C20894A11CB11CD1 |
:100F2000552458AA252C1FEF59A6F5010894A11C99 |
:100F3000B11C0491053721F0802F80628837F1F4CD |
:100F400050FE0EC0F30124E030E0620E731E80817B |
:100F50009181A281B3818CA79DA7AEA7BFA70EC028 |
:100F6000F301A2E0B0E06A0E7B1E808191819C01BA |
:100F7000442755272CA73DA74EA75FA7003221F491 |
:100F800089A5882391F61BC0033211F438E081C093 |
:100F90000A3211F00D3289F40A3251F4F30142E0C1 |
:100FA00050E0640E751E208022200CF0BECF2194EC |
:100FB00050E1552A8FED5822B8CF0B3211F409A712 |
:100FC000B4CF0E32C1F5F5010894A11CB11C0491F7 |
:100FD0000A3279F4F301A2E0B0E06A0E7B1E608170 |
:100FE0007181BFEF6F3F7B0714F46FEF7FEF162F18 |
:100FF0009CCF60E070E0802F80538A30A0F4CB015A |
:10100000F3E0880F991FFA95E1F7860F971F680F95 |
:10101000791F600F711D60537040F5010894A11C89 |
:10102000B11C0491E8CFEFEF6F3F7E0714F46FEF30 |
:101030007FEF162F7FCF003329F454FC76CFF0E2F8 |
:101040005F2A73CF802F81538930D8F460E070E03D |
:10105000CB01E3E0880F991FEA95E1F7860F971F10 |
:10106000680F791F600F711D60537040F50108947F |
:10107000A11CB11C0491802F80538A3048F3262E86 |
:1010800059CF083619F424E0522A4FCF0C3619F400 |
:1010900031E0532A4ACF033661F44E010894811C93 |
:1010A000911CF30142E050E0640E751E808189833B |
:1010B0001BC1043421F0043611F00936B1F50434B3 |
:1010C00011F451E0552A50FE0AC0F30184E090E08B |
:1010D000680E791E20813181428153810CC0F30159 |
:1010E00042E050E0640E751E808191819C0144278E |
:1010F00037FD4095542F2CA73DA74EA75FA78CA581 |
:101100009DA5AEA5BFA5B7FF0DC0B095A0959095C4 |
:1011100081959F4FAF4FBF4F8CA79DA7AEA7BFA78D |
:101120008DE289A77AE0472E7BC00F3411F00F368D |
:1011300039F40F3411F491E0592A68E0462E6FC05B |
:101140000037A1F4F301A2E0B0E06A0E7B1E8081BB |
:1011500091819C01442755272CA73DA74EA75FA747 |
:1011600050E1452E30E4532A08E759C00337C1F552 |
:10117000F30142E050E0640E751E8080918081147E |
:10118000910489F44E010894811C911C88E28983A2 |
:101190008EE6F401818385E78B838CE68C838D83D7 |
:1011A00089E28E831F8217FD13C0812F992787FD47 |
:1011B0009095AC0160E070E0C4010E94542A009751 |
:1011C00029F0D82ED8181D150CF090C0D12E8EC045 |
:1011D000F40101900020E9F73197DE2ED81886C07F |
:1011E000053511F0053739F4053511F4F1E05F2AC2 |
:1011F0004AE0442E14C0083519F0083709F06CC0D5 |
:1012000030E1432E53FE0BC02CA53DA54EA55FA596 |
:10121000211531054105510511F030E4532A19A675 |
:1012200018AB17FD02C04FED542229E2822E912CFB |
:101230008C0E9D1E8CA59DA5AEA5BFA50097A105F2 |
:10124000B10521F498A9992309F43FC0C42CDD24E9 |
:10125000EE24FF2433242CA53DA54EA55FA52C1517 |
:101260003D054E055F0510F091E0392E6CA57DA57A |
:101270008EA59FA5A70196010E940F2CDC01CB0132 |
:10128000182F8A3010F4105D04C0195A083509F47B |
:101290001F7DD4011E934D016CA57DA58EA59FA534 |
:1012A000A70196010E940F2C2CA73DA74EA75FA770 |
:1012B000332081F6B8E04B1641F453FE06C01033DC |
:1012C00021F080E3F40182934F01CE010196D82EE4 |
:1012D000D818F8E2DF0E0BC0002309F44EC04E010F |
:1012E0000894811C911C098381E0D82E19A61D2D1C |
:1012F000C8A8CD18C7FCCC2489A5882311F01F5F8E |
:1013000002C056FC1E5F1C0DE52CFF24C701807334 |
:101310009070892B21F4822D811B0E94340789A5AE |
:10132000882329F061E070E0CE01899609C0E6FECD |
:1013300009C080E38AA70BA762E070E0CE018A961D |
:101340000E940B07C70180739070809721F4822D53 |
:10135000811B0E9440078C2D0E9440078D2D9927EC |
:1013600087FD9095BC01C4010E940B07E4FEC1CD2E |
:10137000822D811B0E943407BCCDE0960FB6F894F5 |
:10138000DEBF0FBECDBFDF91CF911F910F91FF90B8 |
:10139000EF90DF90CF90BF90AF909F908F907F9015 |
:1013A0006F905F904F903F902F9008951F920F92F3 |
:1013B0000FB60F9211242F933F935F936F937F93F8 |
:1013C0008F939F93AF93BF938091AA018150809395 |
:1013D000AA018F3F01F589E08093AA018091020163 |
:1013E0008F5F817080930201882319F481E08093DC |
:1013F000A7018091A8019091A90101969093A9015C |
:101400008093A80180913102882329F080913102D4 |
:101410008150809331028091A3019091A4010297A1 |
:1014200058F08091A3019091A40101979093A40199 |
:101430008093A3015A9A01C05A988091D70483FFE0 |
:101440003BC0349B0AC08091A5019091A6010196F2 |
:101450009093A6018093A5012FC08091A501909142 |
:10146000A601892B79F08091A5019091A601805A5F |
:101470009F4040F48091A5019091A6019093F001C6 |
:101480008093EF018091EF019091F0012091ED01A7 |
:101490003091EE01821B930B845E9D4F68E671E0F4 |
:1014A0000E94FC2B845B90409093EC018093EB01B5 |
:1014B0001092A6011092A501BF91AF919F918F91BB |
:1014C0007F916F915F913F912F910F900FBE0F9081 |
:1014D0001F9018952091A8013091A901280F391F5C |
:1014E000C901019608958AE090E00E946A0A9093EB |
:1014F000AC018093AB0182E085BD83EA84BD17BC5B |
:1015000088E788BD96E096BD83EC8093B000909309 |
:10151000B1008091700082608093700080916E00B5 |
:10152000816080936E008AE08093B3001092B200D5 |
:1015300008952091A8013091A901821B930B892F56 |
:1015400099278695807490700895CF93DF930E94B9 |
:101550006A0AEC01CE010E94990A8823D9F3DF912F |
:10156000CF9108951F920F920FB60F9211242F93CF |
:101570003F934F935F936F937F938F939F93AF931B |
:10158000BF93CF93DF93EF93FF938091030181503B |
:10159000809303018F3F09F08DC083E88093B000F2 |
:1015A00080916801C82FDD27D093A201C093A101CB |
:1015B0008091F5046091F10480FF2AC07727882785 |
:1015C000992720911D0230911E0240911F025091D7 |
:1015D000200257FF04C021583F4F4F4F5F4FA7E0F5 |
:1015E0005595479537952795AA95D1F70E94C92B10 |
:1015F00097FF04C061507E4F8F4F9F4FF9E0959544 |
:10160000879577956795FA95D1F7C60FD71F29C0AB |
:1016100077278827992720911D0230911E0240913B |
:101620001F025091200257FF04C021583F4F4F4FD7 |
:101630005F4FE7E05595479537952795EA95D1F7A0 |
:101640000E94C92B97FF04C061507E4F8F4F9F4F60 |
:1016500039E095958795779567953A95D1F7C61BAB |
:10166000D70BD093A201C093A1018091F2049927D6 |
:101670002091A1013091A2012817390734F08091FF |
:10168000F30499278217930724F49093A20180937F |
:10169000A1018091A1019091A20190937D0480937A |
:1016A0007C048091A1018093B3008091F404809325 |
:1016B000030104C083E08093B0005F98FF91EF9135 |
:1016C000DF91CF91BF91AF919F918F917F916F915A |
:1016D0005F914F913F912F910F900FBE0F901F90F0 |
:1016E000189510927C008FEE80937A000895CF9326 |
:1016F000DF93C0E0D0E0C7BD82E390E00E94A50A7E |
:101700008BE391E09F938F931F920E944C078091EF |
:101710000401909105010F900F900F908458934011 |
:1017200020F02196CA3FD10530F3C093960488EC8F |
:1017300090E00E94A50ADF91CF9108951F920F9229 |
:101740000FB60F921124EF92FF920F931F932F93D6 |
:101750003F934F935F936F937F938F939F93AF9339 |
:10176000BF93CF93DF93EF93FF9310927A00809112 |
:10177000C401682F77278F5F8093C40163307105A0 |
:1017800009F424C1643071055CF46130710509F419 |
:101790006BC0623071050CF0C0C0672B91F00FC3B5 |
:1017A0006530710509F452C1653071050CF429C129 |
:1017B0006630710509F470C16730710509F47FC2A4 |
:1017C000FEC260912B0270912C0280917800909162 |
:1017D0007900681B790B8091BD019091BE01860F45 |
:1017E000971F9093BE018093BD018091B4018F5FDC |
:1017F0008093B4019B01442737FD4095542F80917D |
:10180000F9019091FA01A091FB01B091FC01820FC6 |
:10181000931FA41FB51F8093F9019093FA01A09321 |
:10182000FB01B093FC018091F5019091F601A0912C |
:10183000F701B091F801820F931FA41FB51F809389 |
:10184000F5019093F601A093F701B093F80181E0C0 |
:101850008093C3018091AD019091AE010196909368 |
:10186000AE018093AD01AFC26091780070917900B4 |
:1018700080912D0290912E02681B790B9B014427C9 |
:1018800037FD4095542F8091010290910202A09162 |
:101890000302B0910402820F931FA41FB51F80930F |
:1018A000010290930202A0930302B093040280917C |
:1018B000FD019091FE01A091FF01B0910002820F05 |
:1018C000931FA41FB51F8093FD019093FE01A09369 |
:1018D000FF01B093000280917800909179000A97FF |
:1018E00010F464E47DEF8091780090917900895E36 |
:1018F000934010F06CEB72E08091BF019091C001B9 |
:10190000860F971F9093C0018093BF018091B5010E |
:101910008F5F8093B50182E096C0609178007091EE |
:10192000790080912F0290913002681B790B9B0106 |
:10193000442737FD4095542F8091090290910A0267 |
:10194000A0910B02B0910C02820F931FA41FB51F30 |
:101950008093090290930A02A0930B02B0930C02A9 |
:101960008091050290910602A0910702B0910802B1 |
:10197000820F931FA41FB51F809305029093060248 |
:10198000A0930702B09308028091780090917900AB |
:101990000A9710F464E47DEF8091780090917900CB |
:1019A000895E934010F06CEB72E08091C1019091E0 |
:1019B000C201860F971F9093C2018093C10180914D |
:1019C000B6018F5F8093B60184E03DC080910A012B |
:1019D00090910B019C01220F331F280F391F80911A |
:1019E0007800909179000E94E82B260F371F3695DA |
:1019F00027953695279530930B0120930A0186E0B1 |
:101A000022C0809127029091280220917800309185 |
:101A10007900821B930B90938A04809389048091B0 |
:101A2000BB019091BC012091890430918A04820FFE |
:101A3000931F9093BC018093BB018091B2018F5F93 |
:101A40008093B20187E08093C301BDC1809178008B |
:101A5000909179002091290230912A02821B930BE8 |
:101A600090938A04809389048091B9019091BA017E |
:101A70002091890430918A04820F931F9093BA01B8 |
:101A80008093B9018091B3018F5F8093B30185E0AA |
:101A90008093C30186E010C1809178009091790015 |
:101AA000AA2797FDA095BA2FBC01CD010E94072B54 |
:101AB0007B018C018091230290912402A091250248 |
:101AC000B09126029C01AD01C801B7010E94612AB4 |
:101AD000DC01CB01BC01CD010E94EA2ADC01CB0173 |
:101AE0009093B8018093B7018091890490918A0402 |
:101AF0008091890490918A0497FF03C09095819505 |
:101B00009F4F97FD0396AC01559547955595479581 |
:101B100080919404909195048091940490919504FF |
:101B200097FF03C0909581959F4F9C0197FF02C03E |
:101B30002D5F3F4F3595279535952795240F351FF8 |
:101B40008091B7019091B801820F931F9093B801D3 |
:101B50008093B7018091B7019091B801029724F169 |
:101B60008091230290912402A0912502B091260237 |
:101B700020E030E048E454E4BC01CD010E94112B88 |
:101B800088230CF044C08091230290912402A091FC |
:101B90002502B09126022AE037ED43EA5CE3BC015E |
:101BA000CD010E94622A29C08091B7019091B801AD |
:101BB0008F5F9F4F64F58091230290912402A09142 |
:101BC0002502B091260220E030E046E154E4BC0159 |
:101BD000CD010E94142B1816D4F480912302909109 |
:101BE0002402A0912502B09126022AE037ED43EAB3 |
:101BF0005CE3BC01CD010E94612ADC01CB01809332 |
:101C0000230290932402A0932502B093260281E040 |
:101C10008093B101809178009091790090938C0429 |
:101C200080938B048091B7019091B8019C01442767 |
:101C300037FD4095542F8091F1019091F201A091D0 |
:101C4000F301B091F401820F931FA41FB51F80937D |
:101C5000F1019093F201A093F301B093F40120916C |
:101C6000F1013091F2014091F3015091F40157FFDD |
:101C700004C021503C4F4F4F5F4F7AE05595479538 |
:101C8000379527957A95D1F78091F1019091F201DE |
:101C9000A091F301B091F401821B930BA40BB50B3F |
:101CA0008093F1019093F201A093F301B093F401BA |
:101CB00083E08093C30187E08093C40184C0809156 |
:101CC000990490919A042091780030917900820FC4 |
:101CD000931F90939A0480939904809191048F5F4D |
:101CE0008093910480919104853008F468C08091BC |
:101CF00078009091790090930501809304011092EF |
:101D0000910480918D0490918E04209199043091DA |
:101D10009A04821B930B2091D7013091D801821B2A |
:101D2000930B9093B0018093AF01809199049091AF |
:101D30009A04EC01EE27D7FDE095FE2F20910601D5 |
:101D4000309107014091080150910901DA01C90160 |
:101D5000880F991FAA1FBB1F820F931FA41FB51FB7 |
:101D6000C80FD91FEA1FFB1FF7FF03C02396E11D11 |
:101D7000F11D82E0F595E795D795C7958A95D1F73E |
:101D8000C0930601D0930701E0930801F093090185 |
:101D90008091060190910701A0910801B09109017D |
:101DA0009C0180918D0490918E04821B930B9093E3 |
:101DB000D8018093D70110929A041092990410923E |
:101DC000C3011092C4018091C30180937C008FEE07 |
:101DD00080937A00FF91EF91DF91CF91BF91AF9106 |
:101DE0009F918F917F916F915F914F913F912F9133 |
:101DF0001F910F91FF90EF900F900FBE0F901F90CB |
:101E0000189590E2ECE0F1E08FE49193815087FF28 |
:101E1000FCCF08951F93CF93DF938091C50180FF7E |
:101E20000CC08091C901882311F0815002C08091BB |
:101E300066018093C9010E94010F8091C50181FF55 |
:101E400007C08091C9018F5F8093C9010E94010F73 |
:101E50008091C501992780FF04C081FF02C01092C4 |
:101E6000C90181E18093C6018091C90199279F939F |
:101E70008F938DE391E09F938F9311E01F930E94C6 |
:101E80004C070F900F900F900F900F908091C90109 |
:101E9000C82FDD27C530D10509F437C2C630D105BA |
:101EA000ACF4C230D10509F4CEC0C330D10534F44E |
:101EB000209719F1219709F45EC010C4C330D105F1 |
:101EC00009F42FC1249709F491C108C4C830D10581 |
:101ED00009F41CC3C930D10544F4C630D10509F456 |
:101EE00083C2279709F4F2C2F9C3C930D10509F4B6 |
:101EF0004FC32A9709F4A0C3F1C31092C60182E42C |
:101F000091E09F938F931F930E944C0784E18093ED |
:101F1000C6010F900F900F908CE390E09F938F93EA |
:101F2000DF93CF9384E591E09F938F931F930E945B |
:101F30004C0788E28093C6018DB79EB707960FB60F |
:101F4000F8949EBF0FBE8DBF0E94200299279F93D9 |
:101F50008F938BE591E09F938F931F930E944C0783 |
:101F60008CE38093C6010F900F900F900F900F900D |
:101F700088E691E05FC08091D70480FF49C010924D |
:101F8000C6018091D7019091D8019F938F9388E7E4 |
:101F900091E09F938F931F930E944C0784E180935D |
:101FA000C6010F900F900F900F900F908091D50168 |
:101FB0009091D6019F938F9387E891E09F938F93A1 |
:101FC0001F930E944C0788E28093C6010F900F90E8 |
:101FD0000F900F900F9080910401909105019F93B5 |
:101FE0008F9386E991E09F938F931F930E944C07F4 |
:101FF0008CE38093C6010F900F900F900F900F907D |
:102000008091960499279F938F9385EA91E009C365 |
:1020100084E18093C60184EB91E09F938F931F939B |
:102020000E944C0788E28093C6010F900F900F909A |
:102030008BEB91E09F938F931F930E944C070F901F |
:102040000F900F9050C31092C60189EC91E09F93BE |
:102050008F931F930E944C0784E18093C6010F90D9 |
:102060000F900F9080911D0290911E02A0911F026F |
:10207000B0912002B7FF04C081509C4FAF4FBF4FBB |
:102080003AE0B595A795979587953A95D1F7BF937F |
:10209000AF939F938F9383ED91E09F938F931F93C3 |
:1020A0000E944C0788E28093C6018DB79EB70796C1 |
:1020B0000FB6F8949EBF0FBE8DBF80911502909110 |
:1020C0001602A0911702B0911802B7FF04C0815008 |
:1020D0009C4FAF4FBF4F2AE0B595A7959795879531 |
:1020E0002A95D1F7BF93AF939F938F9382EE91E0A0 |
:1020F0009F938F931F930E944C078CE38093C6019C |
:102100008DB79EB707960FB6F8949EBF0FBE8DBFD2 |
:102110008091EF019091F0019F938F9381EF91E077 |
:1021200080C21092C6018091A7049091A8049F9349 |
:102130008F938091A5049091A6049F938F9380E044 |
:1021400092E09F938F931F930E944C0784E18093AA |
:10215000C6018DB79EB707960FB6F8949EBF0FBE07 |
:102160008DBF8091AB049091AC049F938F9380912D |
:10217000A9049091AA049F938F9380E192E09F938A |
:102180008F931F930E944C0788E28093C6018DB7FE |
:102190009EB707960FB6F8949EBF0FBE8DBF809175 |
:1021A000AF049091B0049F938F938091AD04909170 |
:1021B000AE049F938F9380E292E09F938F931F933F |
:1021C0000E944C078CE38093C6018DB79EB707969B |
:1021D0000FB6F8949EBF0FBE8DBF8091B104909151 |
:1021E000B2049F938F9380E392E01BC21092C601CA |
:1021F0008091D004E82FFF27EE0FFF1FED55FB4F16 |
:10220000808191819F938F938091CF04E82FFF2746 |
:10221000EE0FFF1FED55FB4F808191819F938F93B0 |
:1022200080E492E09F938F931F930E944C0784E178 |
:102230008093C6018DB79EB707960FB6F8949EBFE0 |
:102240000FBE8DBF8091D204E82FFF27EE0FFF1F36 |
:10225000ED55FB4F808191819F938F938091D104A5 |
:10226000E82FFF27EE0FFF1FED55FB4F8081918177 |
:102270009F938F9380E592E09F938F931F930E948B |
:102280004C0788E28093C6018DB79EB707960FB6BC |
:10229000F8949EBF0FBE8DBF8091D404E82FFF2716 |
:1022A000EE0FFF1FED55FB4F808191819F938F9320 |
:1022B0008091D304E82FFF27EE0FFF1FED55FB4F52 |
:1022C000808191819F938F9380E692E09F938F937B |
:1022D0001F930E944C078CE38093C6018DB79EB775 |
:1022E00007960FB6F8949EBF0FBE8DBF8091D504A0 |
:1022F000E82FFF27EE0FFF1FED55FB4F80819181E7 |
:102300009F938F9380E792E08CC11092C60180E882 |
:1023100092E09F938F931F930E944C0784E18093D8 |
:10232000C6010F900F900F9080912F029091300274 |
:102330009F938F938091B601282F33278091C101FD |
:102340009091C201B9010E94FC2B7F936F938EE89C |
:1023500092E09F938F931F930E944C0788E2809393 |
:10236000C6018DB79EB707960FB6F8949EBF0FBEF5 |
:102370008DBF80912D0290912E029F938F9380911B |
:10238000B501282F33278091BF019091C001B90179 |
:102390000E94FC2B7F936F938DE992E09F938F9324 |
:1023A0001F930E944C078CE38093C6018DB79EB7A4 |
:1023B00007960FB6F8949EBF0FBE8DBF80912B027B |
:1023C00090912C029F938F938091B401282F3327F3 |
:1023D0008091BD019091BE01B9010E94FC2B7F93B9 |
:1023E0006F938CEA92E06CC11092C6018BEB92E085 |
:1023F0009F938F931F930E944C0784E18093C601A3 |
:102400000F900F900F908091290290912A029F9334 |
:102410008F938091B301282F33278091B901909138 |
:10242000BA01B9010E94FC2B7F936F9388EC92E074 |
:102430009F938F931F930E944C0788E28093C6015D |
:102440008DB79EB707960FB6F8949EBF0FBE8DBF8F |
:1024500080912702909128029F938F938091B201DF |
:10246000282F33278091BB019091BC01B9010E94B4 |
:10247000FC2B7F936F9387ED92E09F938F931F9335 |
:102480000E944C078CE38093C6018DB79EB70796D8 |
:102490000FB6F8949EBF0FBE8DBF8091230290911E |
:1024A0002402A0912502B0912602BC01CD010E9418 |
:1024B000EA2ADC01CB019F938F9380918B0490914A |
:1024C0008C049F938F9386EE92E0FAC084E1809310 |
:1024D000C60180910A0190910B019F938F9385EF24 |
:1024E00092E09F938F931F930E944C0788E2809302 |
:1024F000C6010F900F900F900F900F908091E00108 |
:1025000099279F938F9384E093E08BC01092C6012C |
:1025100083E193E09F938F931F930E944C0784E184 |
:102520008093C6010F900F900F908091EB019091D6 |
:10253000EC019F938F9382E293E09F938F931F937D |
:102540000E944C0788E28093C6010F900F900F9075 |
:102550000F900F908091EF019091F0019F938F93D6 |
:1025600081E393E09F938F931F930E944C078CE32A |
:102570008093C6010F900F900F900F900F90809155 |
:10258000ED019091EE019F938F9380E493E049C019 |
:102590001092C6018091E7019091E8019F938F937B |
:1025A0008FE493E09F938F931F930E944C0784E1E5 |
:1025B0008093C6010F900F900F900F900F90809115 |
:1025C000E5019091E6019F938F938BE593E09F93B4 |
:1025D0008F931F930E944C0788E28093C6010F904F |
:1025E0000F900F900F900F908091E3019091E40174 |
:1025F0009F938F9387E693E09F938F931F930E94FF |
:102600004C078CE38093C6010F900F900F900F90B2 |
:102610000F908091E1019091E2019F938F9383E766 |
:1026200093E09F938F931F930E944C070F900F90FE |
:102630000F900F900F9057C01092C6018FE793E054 |
:102640009F938F931F930E944C0784E18093C60150 |
:102650000F900F900F908091680199279F938F930F |
:1026600087E893E09F938F931F930E944C0788E223 |
:102670008093C6010F900F900F900F900F90809154 |
:10268000A1019091A2019F938F9385E993E09F937D |
:102690008F931F930E944C078CE38093C6010F9089 |
:1026A0000F900F900F900F908091F30499279F93B4 |
:1026B0008F938091F20499279F938F9383EA93E0FD |
:1026C0009F938F931F930E944C078DB79EB70796D9 |
:1026D0000FB6F8949EBF0FBE8DBF05C0815080938A |
:1026E00066011092C9011092C501DF91CF911F912F |
:1026F00008951092B9008AE28093B800089585EA9F |
:102700008093BC0080E090E0089584E98093BC0051 |
:1027100008951092B9008093BB0085E88093BC00B7 |
:1027200080E090E008951F920F920FB60F9211244F |
:102730002F933F934F935F936F937F938F939F93C9 |
:10274000AF93BF93EF93FF938091CC01282F332752 |
:102750008F5F8093CC012330310509F44AC02430C7 |
:1027600031054CF421303105D9F0223031059CF58A |
:10277000232B89F093C02530310509F451C0253051 |
:102780003105E4F12630310509F453C02730310515 |
:1027900009F46FC083C08091CB01880F8E5A66C048 |
:1027A0008091CB01282F33278F5F8093CB0121307D |
:1027B000310509F453C02230310524F4232B09F4E8 |
:1027C0004AC06CC02230310509F44BC023303105BA |
:1027D00009F44AC063C00E9485138091CB01843004 |
:1027E00018F41092CC0102C01092CB010E947F130A |
:1027F00055C08091CA01880F8D5A38C08091CA0196 |
:1028000099278130910551F1823091051CF4892B73 |
:1028100011F144C08230910521F1039729F13EC0A6 |
:102820008091CA01E82FFF27E556FB4F8091BB003E |
:1028300080838091CA0199278130910579F0823097 |
:1028400091051CF4892B39F029C08230910549F09B |
:10285000039751F023C080916D0208C080916E02F1 |
:1028600005C08091710202C0809173020E94891399 |
:1028700015C09091CA01E92FFF27E556FB4F8091C3 |
:10288000BB008483892F8F5F8093CA01843010F04E |
:102890001092CA010E9485131092CC01FF91EF9112 |
:1028A000BF91AF919F918F917F916F915F914F9168 |
:1028B0003F912F910F900FBE0F901F90189583ECB2 |
:1028C0008093810080916F00806280936F001092EE |
:1028D0002C0210922B0210922E0210922D021092B6 |
:1028E000300210922F0208951F920F920FB60F928E |
:1028F00011242F933F934F935F936F937F938F9305 |
:102900009F93AF93BF93EF93FF93409186005091B5 |
:1029100087008091CD019091CE01481B590B809189 |
:102920008600909187009093CE018093CD01CA01DB |
:102930008D5D95408356994148F481E090E09093F5 |
:10294000D0018093CF01109267015BC02091CF012D |
:102950003091D0012A3031050CF053C0CA018B5F91 |
:102960009040845B914008F043C0425D5140F901C2 |
:10297000E20FF31FED55FB4F80819181BA01681B77 |
:10298000790BCB0177FF03C0909581959F4F0697F8 |
:102990004CF48091E001883C28F48091E001865F4E |
:1029A0008093E001F901E20FF31FDF01AD55BB4F4A |
:1029B0008D919C9111979C01220F331F280F391F75 |
:1029C000240F351F37FF02C02D5F3F4FA9015595DA |
:1029D000479555954795E754FB4F8D919C911197DD |
:1029E0009A01281B390B3183208311965C934E93F7 |
:1029F0008091CF019091D00101969093D001809366 |
:102A0000CF01FF91EF91BF91AF919F918F917F91F6 |
:102A10006F915F914F913F912F910F900FBE0F904B |
:102A20001F901895CF93C82FC150CF3F81F0809150 |
:102A3000D901882361F484E690E09093A401809307 |
:102A4000A3018AEF90E00E94A50AC15080F7CF91C0 |
:102A5000089510927A008091B601882379F08091D0 |
:102A6000B601282F33278091C1019091C201B9018D |
:102A70000E94FC2B70930C0560930B058091B501AF |
:102A8000882379F08091B501282F33278091BF01E9 |
:102A90009091C001B9010E94FC2B70930A056093CC |
:102AA00009058091B401882379F08091B401282F21 |
:102AB00033278091BD019091BE01B9010E94FC2B8A |
:102AC00070931805609317058091B3018823E1F096 |
:102AD0008091B9019091BA01AA2797FDA095BA2FCC |
:102AE00034E0880F991FAA1FBB1F3A95D1F7209198 |
:102AF000B301332744275527BC01CD010E94312C57 |
:102B000030931505209314058091B2018823E1F0DC |
:102B10008091BB019091BC01AA2797FDA095BA2F87 |
:102B200024E0880F991FAA1FBB1F2A95D1F7209177 |
:102B3000B201332744275527BC01CD010E94312C17 |
:102B400030931E0520931D058091B1018823A9F0C3 |
:102B50008091B7019091B801AA2797FDA095BA2F4F |
:102B60002091B101332744275527BC01CD010E9494 |
:102B7000312C30930F0520930E051092C201109254 |
:102B8000C1011092B6011092C0011092BF011092C3 |
:102B9000B5011092BE011092BD011092B4011092C5 |
:102BA000BC011092BB011092B2011092BA011092B6 |
:102BB000B9011092B3011092B8011092B7011092AE |
:102BC000B1018FEE80937A008091D304E82FFF2724 |
:102BD000EE0FFF1FED55FB4F8081918182599F4F72 |
:102BE0002091E7013091E801281739071CF42F5F85 |
:102BF0003F4F0CC08081918182599F4F821793076C |
:102C00004CF42115310531F0215030403093E8016A |
:102C10002093E7018091D404E82FFF27EE0FFF1FD8 |
:102C2000ED55FB4F8081918182599F4F2091E501A5 |
:102C30003091E601281739071CF42F5F3F4F0CC075 |
:102C40008081918182599F4F821793074CF42115FF |
:102C5000310531F0215030403093E6012093E501F9 |
:102C60008091D504E82FFF27EE0FFF1FED55FB4F96 |
:102C70008081918182599F4F2091E3013091E4013D |
:102C8000281739071CF42F5F3F4F0CC080819181BA |
:102C900082599F4F821793074CF42115310531F06B |
:102CA000215030403093E4012093E3018091D60419 |
:102CB000E82FFF27EE0FFF1FED55FB4F808191811D |
:102CC00082599F4F2091E1013091E2012817390785 |
:102CD0001CF42F5F3F4F0CC08081918182599F4F20 |
:102CE000821793074CF42115310531F02150304003 |
:102CF0003093E2012093E1018091E7019091E80196 |
:102D000097FF05C01092E8011092E7010AC08F3FBB |
:102D1000910539F034F08FEF90E09093E8018093C3 |
:102D2000E7018091E5019091E60197FF05C01092BF |
:102D3000E6011092E5010AC08F3F910539F034F0A9 |
:102D40008FEF90E09093E6018093E5018091E3019D |
:102D50009091E40197FF05C01092E4011092E30105 |
:102D60000AC08F3F910539F034F08FEF90E09093D7 |
:102D7000E4018093E3018091E1019091E20197FFEA |
:102D800005C01092E2011092E10108958F3F910574 |
:102D900039F034F08FEF90E09093E2018093E101FD |
:102DA0000895CF93DF9310922A0210922902109275 |
:102DB00028021092270280E090E0A0E0B0E080932B |
:102DC000230290932402A0932502B093260210922E |
:102DD000300210922F0210922E0210922D021092A9 |
:102DE0002C0210922B020E94291585E090E00E948F |
:102DF0006A0AEC01CE010E94990A8823D9F30E9445 |
:102E000029158091D70480FF10C080910401909112 |
:102E10000501875B934038F480910401909105018E |
:102E20008E5E924010F40E94770B80910B0590917A |
:102E30000C0580910B0590910C0597FF03C09095B0 |
:102E400081959F4F9093300280932F0280910905C6 |
:102E500090910A058091090590910A0597FF03C09A |
:102E6000909581959F4F90932E0280932D02809193 |
:102E7000170590911805809117059091180597FFF7 |
:102E800003C0909581959F4F90932C0280932B02C5 |
:102E900080911D0590911E0580911D0590911E0544 |
:102EA00097FF03C0909581959F4F97FD0F9654E033 |
:102EB000959587955A95E1F790932802809327027C |
:102EC0008091140590911505809114059091150538 |
:102ED00097FF03C0909581959F4F97FD0F9644E013 |
:102EE000959587954A95E1F790932A028093290258 |
:102EF00080918B0490918C04AA2797FDA095BA2FFE |
:102F0000BC01CD010E94072BDC01CB018093230281 |
:102F100090932402A0932502B093260210920902F6 |
:102F200010920A0210920B0210920C0210920502EB |
:102F300010920602109207021092080210920102EB |
:102F40001092020210920302109204021092FD01EC |
:102F50001092FE011092FF01109200021092F901EE |
:102F60001092FA011092FB011092FC0110920C05D4 |
:102F700010920B0510920A0510920905109218057F |
:102F8000109217058091060190910701A091080108 |
:102F9000B091090190938E0480938D041092B0013A |
:102FA0001092AF011092F1011092F2011092F30110 |
:102FB0001092F4018091EF019091F0019093EE0155 |
:102FC0008093ED010E942A2A82E390E09093A4016D |
:102FD0008093A301DF91CF910895EF92FF920F9319 |
:102FE0001F9310927A008091B601882379F0809126 |
:102FF000B601282F33278091C1019091C201B901F8 |
:103000000E94FC2B70930C0560930B058091B50119 |
:10301000882379F08091B501282F33278091BF0153 |
:103020009091C001B9010E94FC2B70930A05609336 |
:1030300009058091B401882379F08091B401282F8B |
:1030400033278091BD019091BE01B9010E94FC2BF4 |
:1030500070931805609317058091B301882309F4D4 |
:1030600046C08091140590911505AA2797FDA0955B |
:10307000BA2F7C018D01E3E0EE0CFF1C001F111F35 |
:10308000EA95D1F7E81AF90A0A0B1B0B8091B901EE |
:103090009091BA01AA2797FDA095BA2F74E0880FE6 |
:1030A000991FAA1FBB1F7A95D1F72091B30133272F |
:1030B00044275527BC01CD010E94312CE20EF31E9E |
:1030C000041F151F17FF08C087E090E0A0E0B0E0E4 |
:1030D000E80EF91E0A1F1B1F63E015950795F7946C |
:1030E000E7946A95D1F7F0921505E0921405809166 |
:1030F000B201882309F446C080911D0590911E05F8 |
:10310000AA2797FDA095BA2F7C018D0153E0EE0C04 |
:10311000FF1C001F111F5A95D1F7E81AF90A0A0B74 |
:103120001B0B8091BB019091BC01AA2797FDA09534 |
:10313000BA2F44E0880F991FAA1FBB1F4A95D1F7E9 |
:103140002091B201332744275527BC01CD010E94AD |
:10315000312CE20EF31E041F151F17FF08C087E075 |
:1031600090E0A0E0B0E0E80EF91E0A1F1B1F33E05C |
:1031700015950795F794E7943A95D1F7F0921E05C7 |
:10318000E0921D058091B101882309F43FC0809130 |
:103190000E0590910F05AA2797FDA095BA2F7C01E7 |
:1031A0008D0123E0EE0CFF1C001F111F2A95D1F7A3 |
:1031B000E81AF90A0A0B1B0B8091B7019091B8012C |
:1031C000AA2797FDA095BA2F2091B1013327442754 |
:1031D0005527BC01CD010E94312CE20EF31E041FC5 |
:1031E000151F17FF08C087E090E0A0E0B0E0E80EF0 |
:1031F000F91E0A1F1B1FA3E015950795F794E79486 |
:10320000AA95D1F7F0920F05E0920E051092C20137 |
:103210001092C1011092B6011092C0011092BF012C |
:103220001092B5011092BE011092BD011092B4012E |
:103230001092BC011092BB011092B2011092BA011F |
:103240001092B9011092B3011092B8011092B70117 |
:103250001092B1018091F9019091FA01A091FB01C6 |
:10326000B091FC0180930D0290930E02A0930F0287 |
:10327000B09310028091090290910A02A0910B0272 |
:10328000B0910C0280931D0290931E02A0931F0226 |
:10329000B09320028091010290910202A09103025A |
:1032A000B09104028093150290931602A093170226 |
:1032B000B09318028091050290910602A091070236 |
:1032C000B09108028093190290931A02A0931B02F6 |
:1032D000B0931C028091FD019091FE01A091FF012D |
:1032E000B09100028093110290931202A0931302F6 |
:1032F000B09314028FEE80937A0080910B05909129 |
:103300000C05893C91058CF020910B0530910C0542 |
:10331000220F331F220F331F80910B0590910C0554 |
:10332000820F931F8052934017C080910B0590919C |
:103330000C0588539F4FA4F420910B0530910C0588 |
:10334000220F331F220F331F80910B0590910C0524 |
:10335000820F931F805E9C4F90930C0580930B050A |
:103360008091090590910A05893C91058CF0209186 |
:10337000090530910A05220F331F220F331F809158 |
:10338000090590910A05820F931F8052934017C040 |
:103390008091090590910A0588539F4FA4F42091CC |
:1033A000090530910A05220F331F220F331F809128 |
:1033B000090590910A05820F931F805E9C4F9093A0 |
:1033C0000A05809309058091D304E82FFF27EE0FAB |
:1033D000FF1FED55FB4F8081918182599F4F2091B6 |
:1033E000E7013091E801281739071CF42F5F3F4FA0 |
:1033F0000CC08081918182599F4F821793074CF4B2 |
:103400002115310531F0215030403093E8012093EF |
:10341000E7018091D404E82FFF27EE0FFF1FED5541 |
:10342000FB4F8081918182599F4F2091E50130911E |
:10343000E601281739071CF42F5F3F4F0CC080812D |
:10344000918182599F4F821793074CF421153105C2 |
:1034500031F0215030403093E6012093E501809116 |
:10346000D504E82FFF27EE0FFF1FED55FB4F80819E |
:10347000918182599F4F2091E3013091E4012817F7 |
:1034800039071CF42F5F3F4F0CC080819181825916 |
:103490009F4F821793074CF42115310531F02150CD |
:1034A00030403093E4012093E3018091D604E82F6B |
:1034B000FF27EE0FFF1FED55FB4F80819181825951 |
:1034C0009F4F2091E1013091E201281739071CF448 |
:1034D0002F5F3F4F0CC08081918182599F4F82178F |
:1034E00093074CF42115310531F0215030403093D1 |
:1034F000E2012093E1018091E7019091E80197FFBB |
:1035000005C01092E8011092E7010AC08F3F9105B3 |
:1035100039F034F08FEF90E09093E8018093E70169 |
:103520008091E5019091E60197FF05C01092E601B8 |
:103530001092E5010AC08F3F910539F034F08FEF0A |
:1035400090E09093E6018093E5018091E3019091F2 |
:10355000E40197FF05C01092E4011092E3010AC054 |
:103560008F3F910539F034F08FEF90E09093E401B4 |
:103570008093E3018091E1019091E20197FF05C002 |
:103580001092E2011092E1010AC08F3F910539F0DB |
:1035900034F08FEF90E09093E2018093E1011F916E |
:1035A0000F91FF90EF9008958091D901882301F544 |
:1035B00080936E0280936D028093710280937302F8 |
:1035C00080918A01882311F080936D0280918B0194 |
:1035D000882311F080936E0280918C01882311F072 |
:1035E0008093730280918D01882311F08093710282 |
:1035F00080916D029927909381048093800480913B |
:103600006E029927909383048093820480917302C1 |
:10361000992790938504809384048091710299275F |
:1036200090938704809386041092CC011092CB0172 |
:103630000E947F13089581E08093CF0452E050935D |
:10364000D00483E08093D10444E04093D20435E079 |
:103650003093D30486E08093D40487E08093D5042C |
:1036600028E02093D6041092D7049EE19093D804CA |
:103670008BEF8093DA048AE08093DB0486E4809306 |
:10368000D9049093DD045093DC044093DE0420932E |
:10369000DF0480E18093E0048FE08093E1048AEF0F |
:1036A0008093E2048AE18093E30480E88093E40459 |
:1036B00088E78093E50496E99093E6048AE5809391 |
:1036C000E70483E28093E80484E18093E9041092A4 |
:1036D000EA043093EB041092EC041092ED04109283 |
:1036E000EE041092EF0484E68093F00488E2809365 |
:1036F000F1041092F50482E38093F2049093F304B2 |
:103700003093F404ADEFB4E0EAE7F1E08CE001902F |
:103710000D928150E1F7089581E08093CF0442E05B |
:103720004093D00483E08093D10424E02093D2041A |
:1037300035E03093D30486E08093D40487E080930F |
:10374000D5041092D7048EE18093D8048BEF809338 |
:10375000DA048AE08093DB0492E39093D904909397 |
:10376000DD044093DC042093DE041092DF0480E14A |
:103770008093E0048FE08093E1048AEF8093E20479 |
:103780008AE18093E30480E88093E4048FEA8093E5 |
:10379000E5048093E6048AE58093E70483E280935E |
:1037A000E80484E18093E9041092EA043093EB0486 |
:1037B0001092EC041092ED041092EE041092EF04BB |
:1037C00084E68093F00488E28093F1041092F5047B |
:1037D0009093F20486E98093F3043093F404ADEF00 |
:1037E000B4E0E2E8F1E08CE001900D928150E1F765 |
:1037F00008951F938091DA048B3F98F08B3F19F462 |
:103800008091E7010EC08C3F19F48091E50109C059 |
:103810008D3F19F48091E30104C08E3F21F4809123 |
:10382000E1018093700180917001882321F08F3F26 |
:1038300011F4809370018091D9048B3F98F08B3FF5 |
:1038400019F48091E7010EC08C3F19F48091E501D5 |
:1038500009C08D3F19F48091E30104C08E3F21F42B |
:103860008091E1018093710180917101882329F099 |
:10387000843618F084E6809371018091DB048B3FDD |
:1038800098F08B3F19F48091E7010EC08C3F19F43A |
:103890008091E50109C08D3F19F48091E30104C0D6 |
:1038A0008E3F21F48091E10180936F0180916F013F |
:1038B000882329F0843618F084E680936F01809184 |
:1038C000DD048B3F98F08B3F19F48091E7010EC027 |
:1038D0008C3F19F48091E50109C08D3F19F4809166 |
:1038E000E30104C08E3F21F48091E10180936E01D9 |
:1038F00080916E01882321F08F3F11F480936E0137 |
:103900008091E4048B3F98F08B3F19F48091E7019C |
:103910000EC08C3F19F48091E50109C08D3F19F468 |
:103920008091E30104C08E3F21F48091E1018093F6 |
:103930006D0180916D01882321F08F3F11F48093F8 |
:103940006D018091E5048B3F98F08B3F19F48091D5 |
:10395000E7010EC08C3F19F48091E50109C08D3F4D |
:1039600019F48091E30104C08E3F21F48091E101BC |
:1039700080936C0180916C018B3010F48AE002C05E |
:103980008F3F11F480936C018091E6048B3F98F097 |
:103990008B3F19F48091E7010EC08C3F19F48091A0 |
:1039A000E50109C08D3F19F48091E30104C08E3F09 |
:1039B00021F48091E10180936B0180916B01882358 |
:1039C00021F08F3F11F480936B018091EB048B3FCA |
:1039D00098F08B3F19F48091E7010EC08C3F19F4E9 |
:1039E0008091E50109C08D3F19F48091E30104C085 |
:1039F0008E3F21F48091E1018093690180916901FA |
:103A0000882321F08F3F11F4809369018091EC04A9 |
:103A10008B3F98F08B3F19F48091E7010EC08C3FEB |
:103A200019F48091E50109C08D3F19F48091E301FB |
:103A300004C08E3F21F48091E1018093D4018091F4 |
:103A4000D401882321F08F3F11F48093D401809119 |
:103A5000ED048B3F98F08B3F19F48091E7010EC085 |
:103A60008C3F19F48091E50109C08D3F19F48091D4 |
:103A7000E30104C08E3F21F48091E1018093D301E2 |
:103A80008091D301882321F08F3F11F48093D301DB |
:103A90008091EE048B3F98F08B3F19F48091E70101 |
:103AA0000EC08C3F19F48091E50109C08D3F19F4D7 |
:103AB0008091E30104C08E3F21F48091E101809365 |
:103AC000D2018091D201882321F08F3F11F480939D |
:103AD000D2018091EF048B3F98F08B3F19F48091D5 |
:103AE000E7010EC08C3F19F48091E50109C08D3FBC |
:103AF00019F48091E30104C08E3F21F48091E1012B |
:103B00008093D1018091D101882321F08F3F11F45E |
:103B10008093D1019091F0049B3FB0F09B3F19F44A |
:103B20008091E7010EC09C3F19F48091E50109C026 |
:103B30009D3F19F48091E30104C09E3F39F48091C8 |
:103B4000E1018093680102C090936801809168014F |
:103B5000882321F08F3F11F4809368019B3FB0F0E0 |
:103B60009B3F19F48091E7010EC09C3F19F48091AE |
:103B7000E50109C09D3F19F48091E30104C09E3F17 |
:103B800039F48091E1018093680102C0909368014B |
:103B900080916801882321F08F3F11F480936801A0 |
:103BA0009B3FB0F09B3F19F48091E7010EC09C3F12 |
:103BB00019F48091E50109C09D3F19F48091E3015A |
:103BC00004C09E3F39F48091E1018093680102C0F6 |
:103BD0009093680180916801882321F08F3F11F450 |
:103BE0008093680110916901812F992787FD909535 |
:103BF000A92FB92FBC01CD010E94072B17FF06C0CA |
:103C000020E030E040E853E40E94622A27E137EBED |
:103C100041ED58E30E94812BDC01CB0180937201BE |
:103C200090937301A0937401B09375018091E204A5 |
:103C3000809316058091E10480930D051F910895EE |
:103C40002F923F924F925F926F927F928F929F92AC |
:103C5000AF92BF92CF92DF92EF92FF920F931F939A |
:103C6000CF93DF93CDB7DEB723970FB6F894DEBFBF |
:103C70000FBECDBF0E94ED17299A8091D104E82F85 |
:103C8000FF27EE0FFF1FED55FB4F4080518028E7C7 |
:103C900030E0420E531E57FE02C04424552480914A |
:103CA000E001843608F04BC080910001882331F494 |
:103CB00084EF91E09093A4018093A30180914A0244 |
:103CC00090914B02009731F0019790934B028093B3 |
:103CD0004A0204C01092D9011092EA01289A8091F8 |
:103CE0004F0290915002815D974030F18091E8043D |
:103CF000482E552481E08093EA018091CF04E82F7B |
:103D0000FF27EE0FFF1FED55FB4F118210828091B0 |
:103D1000D004E82FFF27EE0FFF1FED55FB4F118258 |
:103D200010828091D204E82FFF27EE0FFF1FED5580 |
:103D3000FB4F11821082E2C11092D901DFC1809144 |
:103D4000E0018D3808F4DAC11092EA019091E9049B |
:103D500082E3989FC001112490934B0280934A0202 |
:103D600049E2441651046CF080914F029091500248 |
:103D70005FEF8F3F950729F0019690935002809353 |
:103D80004F0280914F0290915002883C910520F0A3 |
:103D900068E24616510404F5109232021092330282 |
:103DA00010923402109235021092360210923702AD |
:103DB00010923802109239021092F9011092FA0111 |
:103DC0001092FB011092FC011092F5011092F60185 |
:103DD0001092F7011092F80179EC471651040CF497 |
:103DE000EDC00091D901002309F0E8C08091D20410 |
:103DF000E82FFF27EE0FFF1FED55FB4F80819181CC |
:103E00008C3491050CF4D8C080914C028F5F809364 |
:103E10004C02893C08F4D2C029980E94D116009324 |
:103E2000D90100934C021092500210924F0230912F |
:103E3000CF04E32FFF27EE0FFF1FED55FB4F8081CF |
:103E4000918187349105B4F48091D004E82FFF2745 |
:103E5000EE0FFF1FED55FB4F808191810190F081A6 |
:103E6000E02DF7FF03C0F095E195FF4FE734F10532 |
:103E70000CF482C02091D004E22FFF27EE0FFF1F29 |
:103E8000ED55FB4F808191818734910564F0E32FDC |
:103E9000FF27EE0FFF1FED55FB4F80819181863488 |
:103EA00091050CF411E0E22FFF27EE0FFF1FED55F7 |
:103EB000FB4F808191818734910574F08091CF040C |
:103EC000E82FFF27EE0FFF1FED55FB4F80819181FB |
:103ED000873491050CF012E0E22FFF27EE0FFF1F51 |
:103EE000ED55FB4F808191818634910574F480916A |
:103EF000CF04E82FFF27EE0FFF1FED55FB4F80810A |
:103F00009181873491050CF013E0E22FFF27EE0F2B |
:103F1000FF1FED55FB4F808191818A5B9F4F74F4A9 |
:103F20008091CF04E82FFF27EE0FFF1FED55FB4FC9 |
:103F300080819181873491050CF014E0E22FFF27F6 |
:103F4000EE0FFF1FED55FB4F808191818A5B9F4FE4 |
:103F500074F48091CF04E82FFF27EE0FFF1FED557B |
:103F6000FB4F80819181863491050CF415E0A2E02D |
:103F7000B0E0012E0E94542C0E9420024AE36FEC14 |
:103F800074E00E94F6010E9420020E9412158091A6 |
:103F9000D70480FF13C08091040190910501875BD5 |
:103FA000934038F480910401909105018E5E924017 |
:103FB00028F40E94770B02C000934C0223E24216C1 |
:103FC00051040CF09BC02091D204E22FFF27EE0F8A |
:103FD000FF1FED55FB4F80819181855B9F4F0CF05A |
:103FE0006DC080914D028F5F80934D02893C08F433 |
:103FF00067C088EC80934D0281E090E0909350027E |
:1040000080934F0281E08093D90110923A0210927E |
:104010003B0210923C0210923D021092F901109264 |
:10402000FA011092FB011092FC011092F50110921E |
:10403000F6011092F7011092F80110920902109205 |
:104040000A0210920B0210920C02109201021092BE |
:104050000202109203021092040280911D029091BC |
:104060001E02A0911F02B09120028093050290933E |
:104070000602A0930702B093080280911502909166 |
:104080001602A0911702B09118028093FD0190933F |
:10409000FE01A093FF01B093000210923202109231 |
:1040A00033021092340210923502109236021092AE |
:1040B0003702109238021092390202C010924D025B |
:1040C000E22FFF27EE0FFF1FED55FB4F80819181FF |
:1040D0008C3491058CF080914E028F5F80934E025C |
:1040E000893C60F01092D90188EC80934E021092C6 |
:1040F000500210924F0202C010924E02809167014E |
:10410000815080936701809167018F3F29F08091F2 |
:10411000EA01882309F4F7C00E94F91B8091CF04BB |
:10412000E82FFF27EE0FFF1FDF01AD55BB4F80913A |
:10413000DE04682F77278D919C91869F9001879F41 |
:10414000300D969F300D1124E754FB4F8091DF0412 |
:10415000482F552780819181849FD001859FB00D84 |
:10416000949FB00D11242A0F3B1F3093DF01209341 |
:10417000DE018091D004E82FFF27EE0FFF1FDF0143 |
:10418000AD55BB4F8D919C91869F9001879F300DBF |
:10419000969F300D1124E754FB4F80819181849FBD |
:1041A000F001859FF00D949FF00D11242E0F3F1FFD |
:1041B0003093DD012093DC018091D204E82FFF27AA |
:1041C000EE0FFF1FED55FB4F8081918190958195FA |
:1041D0009F4F9093DB018093DA0110916C01812F46 |
:1041E000992787FD9095A92FB92FBC01CD010E9479 |
:1041F000072B17FF06C020E030E040E853E40E94A0 |
:10420000622A20E030E040E251E40E94622ADC01B0 |
:10421000CB0120E030E040E85BE3BC01CD010E942F |
:10422000812B6B017C016093190570931A058093B3 |
:104230001B0590931C0510916B01812F992787FD19 |
:104240009095A92FB92FBC01CD010E94072B17FF14 |
:1042500006C020E030E040E853E40E94622A20E0FB |
:1042600030EE4BE257E40E94A42ADC01CB0180939C |
:10427000100590931105A0931205B093130580913A |
:10428000D70482FF0CC080E090E0A0E0B0E0809313 |
:10429000100590931105A0931205B093130520E02B |
:1042A00030E040E050E0C701B6010E94112B8823A6 |
:1042B00064F480E090E0A0E0B0E080931905909372 |
:1042C0001A05A0931B05B0931C05809110059091D1 |
:1042D0001105A0911205B091130520E030E040E0F7 |
:1042E00050E0BC01CD010E94112B882364F480E0D2 |
:1042F00090E0A0E0B0E08093100590931105A093AA |
:104300001205B0931305F091EA01F983FF2321F11F |
:104310001092DB011092DA011092DF011092DE019F |
:104320001092DD011092DC018DEC9CECACECBDE355 |
:104330008093190590931A05A0931B05B0931C0553 |
:104340008AE097EDA3EABBE38093100590931105F3 |
:10435000A0931205B09313058091AD019091AE0129 |
:104360008D54914008F4C3C08091190290911A02B3 |
:10437000A0911B02B0911C029C0180911D029091A2 |
:104380001E02A0911F02B0912002281B390B30930E |
:104390004702209346028091110290911202A0914F |
:1043A0001302B0911402AC01809115029091160293 |
:1043B000A0911702B0911802481B590B5093490263 |
:1043C000409348021092AE011092AD01273A310598 |
:1043D0004CF080912F029091300201969093300220 |
:1043E00080932F022A553F4F4CF480912F029091D9 |
:1043F000300201979093300280932F02473A510583 |
:104400004CF080912D0290912E02019690932E02F5 |
:1044100080932D024A555F4F4CF480912D0290916C |
:104420002E02019790932E0280932D028091F50128 |
:104430009091F601A091F701B091F801873A9105AA |
:10444000A105B1054CF080912B0290912C020197AF |
:1044500090932C0280932B028091F5019091F601AC |
:10446000A091F701B091F8018A559F4FAF4FBF4F10 |
:104470004CF480912B0290912C02019690932C0287 |
:1044800080932B0210927A0080911D0290911E025F |
:10449000A0911F02B0912002809305029093060222 |
:1044A000A0930702B0930802809115029091160222 |
:1044B000A0911702B09118028093FD019093FE0124 |
:1044C000A093FF01B093000280910D0290910E0223 |
:1044D000A0910F02B09110028093F5019093F60124 |
:1044E000A093F701B093F8018FEE80937A0090903B |
:1044F000E304A92CBB24CC24DD2480911D029091DF |
:104500001E02A0911F02B0912002BC01CD01A601A4 |
:1045100095010E94312C8091140590911505AA27D0 |
:1045200097FDA095BA2F281B390B4A0B5B0B57FF41 |
:1045300004C0215F3F4F4F4F5F4F79018A01B4E0C4 |
:1045400015950795F794E794BA95D1F7E0923E0256 |
:10455000F0923F02009340021093410280911502B5 |
:1045600090911602A0911702B0911802BC01CD01E2 |
:10457000A60195010E94312C80911D0590911E0588 |
:10458000AA2797FDA095BA2F281B390B4A0B5B0B66 |
:1045900057FF04C0215F3F4F4F4F5F4FA4E0559539 |
:1045A000479537952795AA95D1F7209342023093E6 |
:1045B00043024093440250934502F5EFEF16F1E0B9 |
:1045C000FF06F0E00F07F0E01F0764F084EF91E0D2 |
:1045D000A0E0B0E080933E0290933F02A09340029F |
:1045E000B093410280913E0290913F02A09140021F |
:1045F000B09141028C509E4FAF4FBF4F64F48CE09E |
:104600009EEFAFEFBFEF80933E0290933F02A093E7 |
:104610004002B0934102255F31404040504064F079 |
:1046200084EF91E0A0E0B0E08093420290934302D7 |
:10463000A0934402B09345028091420290914302BC |
:10464000A0914402B09145028C509E4FAF4FBF4F96 |
:1046500064F48CE09EEFAFEFBFEF80934202909343 |
:104660004302A0934402B093450210927A008091D5 |
:10467000090290910A02A0910B02B0910C022091C4 |
:104680003E0230913F024091400250914102821B14 |
:10469000930BA40BB50B8093090290930A02A0938D |
:1046A0000B02B0930C028091010290910202A09142 |
:1046B0000302B091040220914202309143024091E2 |
:1046C000440250914502821B930BA40BB50B8093BF |
:1046D000010290930202A0930302B093040220917E |
:1046E000DA013091DB01C901AA2797FDA095BA2F05 |
:1046F00080933A0290933B02A0933C02B0933D0218 |
:1047000037FF03C0309521953F4F243231053CF0EF |
:104710008091D70484FD03C081E08093540280918E |
:10472000E004A82EBB24CC24DD2420903A02309053 |
:104730003B02910137FE04C0222733272219330997 |
:10474000442737FD4095542F80913A0290913B02C7 |
:10475000A0913C02B0913D02BC01CD010E94C92B49 |
:104760009B01AC01C601B5010E94C92B97FF04C093 |
:1047700061507F4F8F4F9F4FBB2797FDBA95A92F51 |
:10478000982F872F9C01442737FD4095542F809107 |
:10479000F9019091FA01A091FB01B091FC01821BFB |
:1047A000930BA40BB50B8093F9019093FA01A0939E |
:1047B000FB01B093FC018091F9019091FA01A09165 |
:1047C000FB01B091FC0181539547A040B04064F0DB |
:1047D00080E395E7A0E0B0E08093F9019093FA01BF |
:1047E000A093FB01B093FC018091F9019091FA0133 |
:1047F000A091FB01B091FC01805D9A48AF4FBF4F83 |
:1048000064F480ED9AE8AFEFBFEF8093F9019093E5 |
:10481000FA01A093FB01B093FC018FEE80937A0024 |
:104820008091EF019091F001892B09F4B8C080913B |
:10483000D70483FFB4C080911D0290911E02A09105 |
:104840001F02B0912002B7FF04C081509E4FAF4FAE |
:10485000BF4FE9E0B595A79597958795EA95D1F76C |
:104860009C0197FF03C0309521953F4F8091150221 |
:1048700090911602A0911702B0911802B7FF04C0E0 |
:1048800081509E4FAF4FBF4F79E0B595A795979553 |
:1048900087957A95D1F7BC0197FF03C07095619514 |
:1048A0007F4F261737070CF49B0129313105A4F4FB |
:1048B00080915402882381F0809155029091560294 |
:1048C000892B51F48091EF019091F0019093EE01CA |
:1048D0008093ED011092540280916D01482F55276D |
:1048E000249FC001259F900D349F900D112497FDAA |
:1048F000CF969C0166E0359527956A95E1F7421BB6 |
:10490000530B9A01141615060CF043C010927A004E |
:1049100060915502709156026115710569F580919B |
:10492000EB019091EC01829FA001839F500D929F1B |
:10493000500D11249A0157FF02C0215E3F4F55E0F0 |
:10494000359527955A95E1F7442737FD4095542F23 |
:104950008091F9019091FA01A091FB01B091FC01C5 |
:10496000820F931FA41FB51F8093F9019093FA0142 |
:10497000A093FB01B093FC018FEE80937A00611548 |
:10498000710569F061507040709356026093550252 |
:1049900006C084EF91E09093560280935502809177 |
:1049A00067048F5F809367048091530281508093E6 |
:1049B00053028F3F09F070C081E380935302E92CCA |
:1049C000FF240027112780911D0290911E02A091C3 |
:1049D0001F02B0912002BC01CD01A80197010E94E5 |
:1049E000312C3093690420936804809115029091D2 |
:1049F0001602A0911702B0911802BC01CD01A801C6 |
:104A000097010E94312C30936B0420936A048091AB |
:104A100014059091150590936D0480936C0480911A |
:104A20001D0590911E0590936F0480936E048091F4 |
:104A300017059091180590937104809370048091EC |
:104A4000D7019091D8019093730480937204809160 |
:104A5000F1019091F201A091F301B091F401B7FF3F |
:104A600004C081509E4FAF4FBF4F49E0B595A79509 |
:104A7000979587954A95D1F7909375048093740420 |
:104A800050927704409276048091EF019091F0016A |
:104A9000909379048093780480911D0290911E0276 |
:104AA000A0911F02B0912002BC01CD010E94072BF2 |
:104AB000DC01CB016090100570901105809012050B |
:104AC00090901305A4019301BC01CD010E94812B9C |
:104AD0007B018C0180910B0590910C05AA2797FD15 |
:104AE000A095BA2FBC01CD010E94072BDC01CB01A0 |
:104AF000A0901905B0901A05C0901B05D0901C0518 |
:104B0000A6019501BC01CD010E94812BDC01CB01E6 |
:104B10009C01AD01C801B7010E94622ADC01CB01F2 |
:104B2000BC01CD010E94EA2ADC01CB0190930C0567 |
:104B300080930B058091150290911602A0911702A7 |
:104B4000B0911802BC01CD010E94072BDC01CB0102 |
:104B5000A4019301BC01CD010E94812B7B018C013A |
:104B60008091090590910A05AA2797FDA095BA2F73 |
:104B7000BC01CD010E94072BDC01CB01A6019501F0 |
:104B8000BC01CD010E94812BDC01CB019C01AD0158 |
:104B9000C801B7010E94622ADC01CB01BC01CD0132 |
:104BA0000E94EA2ADC01CB0190930A058093090553 |
:104BB0008091170590911805AA2797FDA095BA2F07 |
:104BC000BC01CD010E94072B7B018C0120E030E06D |
:104BD00040E05FE3C601B5010E94812BDC01CB01FF |
:104BE0009C01AD01C801B7010E94812B7B018C01A2 |
:104BF00080910D0290910E02A0910F02B0911002CF |
:104C0000BC01CD010E94072BDC01CB01A401930163 |
:104C1000BC01CD010E94812BDC01CB019C01AD01C7 |
:104C2000C801B7010E94622ADC01CB01BC01CD01A1 |
:104C30000E94EA2ADC01CB019093180580931705A6 |
:104C400080910B0590910C058150984034F080E0E4 |
:104C500098E090930C0580930B0580910B05909143 |
:104C60000C058050984F34F480E098EF90930C0539 |
:104C700080930B058091090590910A058150984019 |
:104C800034F080E098E090930A05809309058091C4 |
:104C9000090590910A058050984F34F480E098EF10 |
:104CA00090930A0580930905809117059091180546 |
:104CB0008150984034F080E098E0909318058093FC |
:104CC000170580911705909118058050984F34F47E |
:104CD00080E098EF90931805809317058091D70492 |
:104CE000992780FFE6C02091700181FF0EC022331A |
:104CF000B0F48091D7019091D80144979093D60158 |
:104D00008093D5011092E9010DC08091DC04289FA9 |
:104D1000C001112444979093D6018093D50181E07E |
:104D20008093E901F981FF2321F01092D6011092BE |
:104D3000D5010091D7011091D8012091D501309172 |
:104D4000D601201731070CF0B4C08091E901882307 |
:104D500009F4AFC0021B130B80916F019927089FC4 |
:104D60009001099F300D189F300D1124C90137FDA6 |
:104D70000F968C0134E0159507953A95E1F7A2015D |
:104D8000401B510B8A0180917101282F332780919C |
:104D9000AF019091B001829FB001839F700D929FEF |
:104DA000700D1124CB0177FD079623E0959587952B |
:104DB0002A95E1F7081B190BC090F101D090F20180 |
:104DC000E090F301F090F401F7FE08C08FEF91E05E |
:104DD000A0E0B0E0C80ED91EEA1EFB1EB9E0F594B3 |
:104DE000E794D794C794BA95D1F780916E01282F94 |
:104DF000332744275527C701B6010E94C92B97FFC7 |
:104E000004C0615E7F4F8F4F9F4FA5E095958795BA |
:104E100077956795AA95D1F7633371051CF062E326 |
:104E200070E006C09FEF6E3C790714F46EEC7FEFE4 |
:104E3000061B170B80915102909152029C01F4E0E5 |
:104E4000220F331FFA95E1F7281B390B200F311F72 |
:104E500037FF02C0215F3F4FE4E035952795EA9583 |
:104E6000E1F730935202209351028091D804482FE9 |
:104E700055272417350774F44416550624F050932B |
:104E80005202409351024416550624F450925202A5 |
:104E90004092510280915102909152024816590657 |
:104EA00024F450925202409251024090510250908C |
:104EB0005202A0911705B0911805A219B309BB833E |
:104EC000AA83A536B10524F0E4E6F0E0FB83EA838B |
:104ED0002A813B812C593F4F24F46CE97FEF7B837F |
:104EE0006A832091DE013091DF0180916902909107 |
:104EF0006A02281B390B80910B0590910C05821BCF |
:104F0000930BAA2797FDA095BA2FBC01CD010E9453 |
:104F1000072BDC01CB0160907601709077018090C7 |
:104F20007801909079019C01AD01C401B3010E9408 |
:104F3000812BDC01CB01BC01CD010E94EA2ADC01FE |
:104F4000CB019093700280936F0280916F029091D9 |
:104F50007002AA2797FDA095BA2F209132023091B6 |
:104F600033024091340250913502280F391F4A1FF5 |
:104F70005B1F2093320230933302409334025093EC |
:104F80003502609132027091330212161306140634 |
:104F90001506C4F4CB0177FF04C088279927861B28 |
:104FA000970B97FF02C081509F4F892F990F990B44 |
:104FB0000196AA2797FDA095BA2F281B390B4A0BFB |
:104FC0005B0B16C0CB0177FF03C0909581959F4F77 |
:104FD00097FF02C081509F4F892F990F990B01961F |
:104FE000AA2797FDA095BA2F280F391F4A1F5B1FCC |
:104FF00020933202309333024093340250933502AF |
:105000008091320290913302A0913402B091350226 |
:1050100081589E43A040B04064F080E89EE3A0E049 |
:10502000B0E08093320290933302A0933402B093A5 |
:1050300035028091320290913302A0913402B091F6 |
:1050400035028058914CAF4FBF4F64F480E891EC2B |
:10505000AFEFBFEF8093320290933302A0933402FC |
:10506000B093350280916F0290917002AA2797FD4C |
:10507000A095BA2FBC01CD010E94072B7B018C01AA |
:105080008091320290913302A0913402B0913502A6 |
:10509000BC01CD010E94072BDC01CB01A090720165 |
:1050A000B0907301C0907401D09075019C01AD0166 |
:1050B000C601B5010E94812BDC01CB019C01AD0131 |
:1050C000C801B7010E94622ADC01CB01BC01CD01FD |
:1050D0000E94EA2ADC01CB01FC019201280F391F52 |
:1050E0004A815B81240F351F432F552747FD50957B |
:1050F0004427550F441F552760E070E08AE04816AA |
:10510000510414F461E070E0462B572B452B19F045 |
:1051100020E030E008C080911605482F552742173F |
:1051200053070CF49A0130900D05432D5527241791 |
:1051300035070CF49A0120936D0292012E1B3F0B50 |
:10514000AA81BB812A0F3B1F832F992787FD90954A |
:105150008827990F881F992740E050E0BAE04B1646 |
:10516000510414F441E050E0842B952B892B19F065 |
:1051700020E030E007C08091160599278217930739 |
:105180000CF49C01832D9927281739070CF49C01F6 |
:1051900020936E022091DC013091DD018091670245 |
:1051A00090916802281B390B8091090590910A059E |
:1051B000821B930BAA2797FDA095BA2FBC01CD01A6 |
:1051C0000E94072BDC01CB019C01AD01C401B3019E |
:1051D0000E94812BDC01CB01BC01CD010E94EA2A97 |
:1051E000DC01CB0190936C0280936B0280916B0287 |
:1051F00090916C02AA2797FDA095BA2F20913602B4 |
:10520000309137024091380250913902280F391FEE |
:105210004A1F5B1F209336023093370240933802B7 |
:1052200050933902609136027091370212161306BC |
:1052300014061506C4F4CB0177FF04C0882799270C |
:10524000861B970B97FF02C081509F4F892F990FA4 |
:10525000990B0196AA2797FDA095BA2F281B390B09 |
:105260004A0B5B0B16C0CB0177FF03C0909581956D |
:105270009F4F97FF02C081509F4F892F990F990B25 |
:105280000196AA2797FDA095BA2F280F391F4A1F0C |
:105290005B1F2093360230933702409338025093BD |
:1052A00039028091360290913702A0913802B09174 |
:1052B000390281589E43A040B04064F080E89EE3EC |
:1052C000A0E0B0E08093360290933702A0933802BA |
:1052D000B09339028091360290913702A091380242 |
:1052E000B09139028058914CAF4FBF4F64F480E8C1 |
:1052F00091ECAFEFBFEF8093360290933702A0930B |
:105300003802B093390280916B0290916C02AA2707 |
:1053100097FDA095BA2FBC01CD010E94072B7B0100 |
:105320008C018091360290913702A0913802B091A1 |
:105330003902BC01CD010E94072BDC01CB019C018D |
:10534000AD01C601B5010E94812BDC01CB019C019E |
:10535000AD01C801B7010E94622ADC01CB01BC018A |
:10536000CD010E94EA2ADC01CB01FC019201280F49 |
:10537000391F4A815B81241B350B432F552747FD7D |
:1053800050954427550F441F552760E070E08AE090 |
:105390004816510414F461E070E0462B572B452B5E |
:1053A00019F020E030E008C080911605482F5527FD |
:1053B000421753070CF49A01432D5527241735073C |
:1053C0000CF49A012093730292012E1B3F0BAA81C9 |
:1053D000BB812A1B3B0B832F992787FD909588273C |
:1053E000990F881F992740E050E0BAE04B1651040E |
:1053F00014F441E050E0842B952B892B19F020E028 |
:1054000030E007C0809116059927821793070CF4A6 |
:105410009C01832D9927281739070CF49C012093B0 |
:10542000710223960FB6F894DEBF0FBECDBFDF9199 |
:10543000CF911F910F91FF90EF90DF90CF90BF9091 |
:10544000AF909F908F907F906F905F904F903F9024 |
:105450002F9008958091630290916402A09165025B |
:10546000B091660280935B0290935C02A0935D0210 |
:10547000B0935E0280915F0290916002A091610200 |
:10548000B09162028093570290935802A093590200 |
:10549000B0935A02089510926A0210926902109213 |
:1054A0006802109267020895FC014150504030F0AC |
:1054B00001900616D1F73197CF01089588279927D3 |
:1054C00008955058192EEFD001D0D2C0BA176207F4 |
:1054D000730784079507B1F188F40EF410940B2E2E |
:1054E000BA2FA02D062E622F202D072E732F302DC0 |
:1054F000082E842F402D092E952F502DFF27552340 |
:10550000B9F0591B49F0573E98F0469537952795C5 |
:10551000A795F0405395C9F776F0BA0F621F731F35 |
:10552000841F30F4879577956795B795F0409395EC |
:1055300017FA0F2E0895BF1BBB27BA0B620B730B14 |
:10554000840BF6CFDEF6DBC0AED001D091C0552380 |
:1055500059F0992369F09F575F57951B33F442F434 |
:10556000903811F4915805C09BC091589F3F09F4A1 |
:10557000C6C0BB27112462177307840730F4660F77 |
:10558000771F881FBB1F915098F311D00F920FD037 |
:105590000F920DD0A0E82617370748071B0609F021 |
:1055A000A048BA2F602D7F918F9100240895A0E824 |
:1055B0000024621773078407B10528F0621B730B80 |
:1055C000840BB1090A2A660F771F881FBB1FA69597 |
:1055D00081F7089597FB73D09F3738F0FEE9F91BE8 |
:1055E000982F872F762F6B2F05C086C096958795AD |
:1055F00077956795F150D0F73EF49095809570952A |
:1056000061957F4F8F4F9F4F0895E89403C097FB9C |
:105610000EF4F3DFB62F672F782F892F9EE9002431 |
:1056200027C00ED05EF004C00BD026F001C008D019 |
:1056300019F020F48FEF089580E0089581E0089537 |
:1056400097FB092E052600F8689430D0E89407FCF3 |
:1056500007C0621773078407950721F008F40094C8 |
:105660000794989408959A95BB0F661F771F881F1B |
:1056700011249923A1F08823B2F79F3F59F0BB0F63 |
:1056800048F421F4002011F460FF04C06F5F7F4FE5 |
:105690008F4F9F4F881F9795879597F908952CC036 |
:1056A0009FEF80EC0895052E092607FA440F551F39 |
:1056B0005F3F79F0AA27A51708F051E04795880FBA |
:1056C000991F9F3F31F0BB27B91708F091E08795EC |
:1056D00008959F919F911124E3CF97FB880F991F05 |
:1056E0009F3F31F0BB27B91708F091E087950895E7 |
:1056F0009F919F911124D4CF6627772788279927D8 |
:105700000895D1DF01D0B4CF992339F0552329F082 |
:105710009F575F57950F13F49AF1F1CF91589F3F20 |
:10572000E1F3629FA12D0F92BB27639FA00DB11DD6 |
:10573000EE27729FA00DB11DEE1FAF93AA27649FA5 |
:10574000B00DE11D739FB00DE11DAA1F6627829F5A |
:10575000B00DE11DA61F5527749FE00DA11D551F1B |
:10576000839FE00DA11D561F849FA00D511D852F05 |
:105770007A2F6E2F1F900F9088231AF4939539F487 |
:105780008FCF000C111CBB1F661F771F881F0128BD |
:105790000895629FD001739FF001829FE00DF11D7B |
:1057A000649FE00DF11D929FF00D839FF00D749F9B |
:1057B000F00D659FF00D9927729FB00DE11DF91F47 |
:1057C000639FB00DE11DF91FBD01CF0111240895A4 |
:1057D000AA1BBB1B51E107C0AA1FBB1FA617B70717 |
:1057E00010F0A61BB70B881F991F5A95A9F7809533 |
:1057F0009095BC01CD01089597FB092E07260AD08C |
:1058000077FD04D0E5DF06D000201AF4709561958D |
:105810007F4F0895F6F7909581959F4F0895A1E2E7 |
:105820001A2EAA1BBB1BFD010DC0AA1FBB1FEE1F1A |
:10583000FF1FA217B307E407F50720F0A21BB30B65 |
:10584000E40BF50B661F771F881F991F1A9469F7E1 |
:1058500060957095809590959B01AC01BD01CF013D |
:10586000089597FB092E05260ED057FD04D0D7DFEB |
:105870000AD0001C38F450954095309521953F4F43 |
:105880004F4F5F4F0895F6F790958095709561950D |
:105890007F4F8F4F9F4F0895F999FECFB2BDA1BDA5 |
:1058A000F89A119600B40895F999FECFB2BDA1BD42 |
:1058B00000BC11960FB6F894FA9AF99A0FBE0895A3 |
:1058C0006401010AFF03007D0000640048616C6C04 |
:1058D0006F2057656C74000000000000000000009D |
:1058E00000000000000000000000000000000000B8 |
:1058F00000000000000000000000000000000000A8 |
:105900000000000000000000000000000000000097 |
:10591000000000000000000000000000010203047D |
:1059200005060708090A0A01640A029632403A107D |
:10593000FB3017B7D1380000803F4E6F726D616C3D |
:0A59400000004B616D65726100000C |
:00000001FF |
/branches/FLightCtrl/Hex-Files/WasIstWas.txt |
---|
0,0 → 1,22 |
+++++++++++++++++++++++++ |
+ Flight-Ctrl: |
+++++++++++++++++++++++++ |
BootLoader_MEGA644_20MHZ_V0_1.hex |
Der Bootloader wird per ISP eingespielt |
Der Bootloader nur dann eingespielt werden, wenn noch nie ein Bootloader eingespielt wurde! |
Danach können Softwareupdates seriell eingespielt werden. |
Flight-Ctrl_MEGA644_Vx_yy.hex |
Aktuelle Firmware |
Wird per serielle Schnittstelle (durch den Bootloader) eingespielt |
Flight-Ctrl SW > 0.60 benötigt das Kopter-Tool >1.45 |
+++++++++++++++++++++++++ |
+ BL-Ctrl: |
+++++++++++++++++++++++++ |
BrushLess-Ctrl_16kHz_ADRq_Vx_yy.hex |
Firmware für den BL-Regler |
Jeder Regler benötigt die Software mit seiner eigenen Adresse |
/branches/FLightCtrl/Hex-Files/___Hex-Files_komplett__.zip |
---|
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/FLightCtrl/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/FLightCtrl/Settings.h |
---|
--- FLightCtrl/_Settings.h (nonexistent) |
+++ FLightCtrl/_Settings.h (revision 171) |
@@ -0,0 +1,50 @@ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Testmodi |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define MOTOR_OFF 0 |
+#define MOTOR_TEST 0 |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Abstimmung |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define ACC_AMPLIFY 16 |
+#define FAKTOR_P 1 |
+#define FAKTOR_I 0.0001 |
+ |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Debug-Interface |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define SIO_DEBUG 1 // Soll der Debugger aktiviert sein? |
+#define MIN_DEBUG_INTERVALL 250 // in diesem Intervall werden Degugdaten ohne Aufforderung gesendet |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Sender |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ #define K_NICK 0 |
+ #define K_ROLL 1 |
+ #define K_GAS 2 |
+ #define K_GIER 3 |
+ #define K_POTI1 4 |
+ #define K_POTI2 5 |
+ #define K_POTI3 6 |
+ #define K_POTI4 7 |
+// +++++++++++++++++++++++++++++++ |
+// + Getestete Settings: |
+// +++++++++++++++++++++++++++++++ |
+// Setting: Kamera |
+// Stick_P:3 |
+// Stick_D:0 |
+// Gyro_P: 175 |
+// Gyro_I: 175 |
+// Ki_Anteil: 10 |
+// +++++++++++++++++++++++++++++++ |
+// + Getestete Settings: |
+// +++++++++++++++++++++++++++++++ |
+// Setting: Normal |
+// Stick_P:2 |
+// Stick_D:8 |
+// Gyro_P: 80 |
+// Gyro_I: 150 |
+// Ki_Anteil: 5 |
+ |
/branches/FLightCtrl/analog.c |
---|
0,0 → 1,155 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az, UBat = 100; |
volatile int AccumulateNick = 0, AccumulateRoll = 0, AccumulateGier = 0; |
volatile int accumulate_AccRoll = 0,accumulate_AccNick = 0,accumulate_AccHoch = 0; |
volatile char MessanzahlNick = 0, MessanzahlRoll = 0, MessanzahlGier = 0; |
volatile char messanzahl_AccNick = 0, messanzahl_AccRoll = 0, messanzahl_AccHoch = 0; |
volatile long Luftdruck = 32000; |
volatile int StartLuftdruck; |
volatile unsigned int MessLuftdruck = 1023; |
unsigned char DruckOffsetSetting; |
volatile int HoeheD = 0; |
volatile char messanzahl_Druck; |
volatile int tmpLuftdruck; |
volatile unsigned int ZaehlMessungen = 0; |
//####################################################################################### |
// |
void ADC_Init(void) |
//####################################################################################### |
{ |
ADMUX = 0;//Referenz ist extern |
ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE); |
//Free Running Mode, Division Factor 128, Interrupt on |
} |
void SucheLuftruckOffset(void) |
{ |
unsigned int off; |
for(off=0; off < 250;off++) |
{ |
OCR0A = off; |
Delay_ms(50); |
printf("."); |
if(MessLuftdruck < 900) break; |
} |
DruckOffsetSetting = off; |
Delay_ms(200); |
} |
//####################################################################################### |
// |
SIGNAL(SIG_ADC) |
//####################################################################################### |
{ |
static unsigned char kanal=0,state = 0; |
signed int wert; |
ANALOG_OFF; |
switch(state++) |
{ |
case 0: |
wert = (signed int) AdNeutralGier - ADC; |
AccumulateGier += wert; // |
MessanzahlGier++; |
Mess_Integral_Gier += wert;// / 16; |
Mess_Integral_Gier2 += wert; |
kanal = 1; |
ZaehlMessungen++; |
break; |
case 1: |
wert = (signed int) ADC - AdNeutralRoll; |
Mess_IntegralRoll += wert; |
Mess_IntegralRoll2 += wert; |
if(ADC < 10) wert = -700; |
if(ADC > 1000) wert = +700; |
AccumulateRoll += wert; |
MessanzahlRoll++; |
kanal = 2; |
break; |
case 2: |
wert = (signed int) ADC - AdNeutralNick; |
Mess_IntegralNick += wert; |
Mess_IntegralNick2 += wert; |
if(ADC < 10) wert = -700; |
if(ADC > 1000) wert = +700; |
AccumulateNick += wert; |
MessanzahlNick++; |
kanal = 4; |
break; |
case 3: |
UBat = (3 * UBat + ADC / 3) / 4;//(UBat + ((ADC * 39) / 256) + 19) / 2; |
kanal = 6; |
break; |
case 4: |
Aktuell_ay = NeutralAccY - ADC; |
accumulate_AccRoll += Aktuell_ay; |
messanzahl_AccRoll++; |
kanal = 7; |
break; |
case 5: |
Aktuell_ay = ADC - NeutralAccX; |
accumulate_AccNick += Aktuell_ay; |
messanzahl_AccNick++; |
kanal = 5; |
state = 6; |
break; |
case 6: |
accumulate_AccHoch = (signed int) ADC - NeutralAccZ; |
accumulate_AccHoch += abs(Aktuell_ay) / 4 + abs(Aktuell_ax) / 4; |
if(accumulate_AccHoch > 1) |
{ |
if(NeutralAccZ < 800) NeutralAccZ+= 0.02; |
} |
else if(accumulate_AccHoch < -1) |
{ |
if(NeutralAccZ > 600) NeutralAccZ-= 0.02; |
} |
messanzahl_AccHoch = 1; |
Aktuell_az = ADC; |
Mess_Integral_Hoch += accumulate_AccHoch; // Integrieren |
Mess_Integral_Hoch -= Mess_Integral_Hoch / 1024; // dämfen |
// Mess_Integral_Hoch -= Mess_Integral_Hoch / 512; // dämfen |
/* if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
kanal = 3; |
state = 7; |
} |
else |
{ |
kanal = 0; |
state = 0; |
}*/ |
kanal = 3; |
state = 7; |
break; |
case 7: |
tmpLuftdruck += ADC; |
if(++messanzahl_Druck >= 5) |
{ |
MessLuftdruck = ADC; |
messanzahl_Druck = 0; |
HoeheD = (int)(StartLuftdruck - tmpLuftdruck - HoehenWert); // D-Anteil = neuerWert - AlterWert |
Luftdruck = (tmpLuftdruck + 3 * Luftdruck) / 4; |
HoehenWert = StartLuftdruck - Luftdruck; |
tmpLuftdruck = 0; |
} |
kanal = 0; |
state = 0; |
break; |
default: |
kanal = 0; |
state = 0; |
break; |
} |
ADMUX = kanal; |
ANALOG_ON; |
} |
/branches/FLightCtrl/analog.h |
---|
0,0 → 1,23 |
/*####################################################################################### |
#######################################################################################*/ |
extern volatile int UBat; |
extern volatile int AccumulateNick, AccumulateRoll, AccumulateGier,accumulate_AccRoll,accumulate_AccNick,accumulate_AccHoch; |
extern volatile char MessanzahlNick, MessanzahlRoll, MessanzahlGier,messanzahl_AccNick, messanzahl_AccRoll,messanzahl_AccHoch; |
extern volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az; |
extern volatile long Luftdruck; |
extern volatile char messanzahl_Druck; |
extern volatile unsigned int ZaehlMessungen; |
extern unsigned char DruckOffsetSetting; |
extern volatile int HoeheD; |
extern volatile unsigned int MessLuftdruck; |
extern volatile int StartLuftdruck; |
extern unsigned int ReadADC(unsigned char adc_input); |
extern void ADC_Init(void); |
extern void SucheLuftruckOffset(void); |
#define ANALOG_OFF ADCSRA=0 |
#define ANALOG_ON ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE) |
/branches/FLightCtrl/eeprom.c |
---|
--- FLightCtrl/fc.c (nonexistent) |
+++ FLightCtrl/fc.c (revision 171) |
@@ -0,0 +1,812 @@ |
+/*####################################################################################### |
+Flight Control |
+#######################################################################################*/ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Copyright (c) 04.2007 Holger Buss |
+// + Nur für den privaten Gebrauch |
+// + www.MikroKopter.com |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
+// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
+// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
+// + bzgl. der Nutzungsbedingungen aufzunehmen. |
+// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
+// + Verkauf von Luftbildaufnahmen, usw. |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
+// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
+// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
+// + eindeutig als Ursprung verlinkt werden |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
+// + Benutzung auf eigene Gefahr |
+// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
+// + mit unserer Zustimmung zulässig |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
+// + this list of conditions and the following disclaimer. |
+// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
+// + from this software without specific prior written permission. |
+// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
+// + for non-commercial use (directly or indirectly) |
+// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
+// + with our written permission |
+// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
+// + clearly linked as origin |
+// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
+// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
+// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
+// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
+// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
+// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
+// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
+// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
+// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
+// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
+// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
+// + POSSIBILITY OF SUCH DAMAGE. |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+#include "main.h" |
+ |
+unsigned char h,m,s; |
+volatile unsigned char Timeout = 0; |
+volatile int MesswertNick,MesswertRoll,MesswertGier; |
+volatile int AdNeutralNick = 0,AdNeutralRoll = 0,AdNeutralGier = 0; |
+volatile int Mittelwert_AccNick, Mittelwert_AccRoll,Mittelwert_AccHoch, NeutralAccX=0, NeutralAccY=0; |
+volatile float NeutralAccZ = 0; |
+unsigned char CosinusNickWinkel = 0, CosinusRollWinkel = 0; |
+volatile long IntegralNick = 0,IntegralNick2 = 0; |
+volatile long IntegralRoll = 0,IntegralRoll2 = 0; |
+volatile long Integral_Gier = 0; |
+volatile long Mess_IntegralNick = 0,Mess_IntegralNick2 = 0; |
+volatile long Mess_IntegralRoll = 0,Mess_IntegralRoll2 = 0; |
+volatile long Mess_Integral_Gier = 0,Mess_Integral_Gier2 = 0; |
+volatile long Mess_Integral_Hoch = 0; |
+volatile int KompassValue = 0; |
+volatile int KompassStartwert = 0; |
+volatile int KompassRichtung = 0; |
+unsigned char MAX_GAS,MIN_GAS; |
+unsigned char Notlandung = 0; |
+unsigned char HoehenReglerAktiv = 0; |
+ |
+float GyroFaktor; |
+float IntegralFaktor; |
+ |
+volatile int DiffNick,DiffRoll; |
+int Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0; |
+volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count; |
+unsigned char MotorWert[5]; |
+volatile unsigned char SenderOkay = 0; |
+int StickNick = 0,StickRoll = 0,StickGier = 0; |
+char MotorenEin = 0; |
+int HoehenWert = 0; |
+int SollHoehe = 0; |
+ |
+float Kp = FAKTOR_P; |
+float Ki = FAKTOR_I; |
+ |
+unsigned char Parameter_Luftdruck_D = 48; // Wert : 0-250 |
+unsigned char Parameter_MaxHoehe = 251; // Wert : 0-250 |
+unsigned char Parameter_Hoehe_P = 16; // Wert : 0-32 |
+unsigned char Parameter_Hoehe_ACC_Wirkung = 58; // Wert : 0-250 |
+unsigned char Parameter_KompassWirkung = 64; // Wert : 0-250 |
+unsigned char Parameter_Gyro_P = 50; // Wert : 10-250 |
+unsigned char Parameter_Gyro_I = 150; // Wert : 0-250 |
+unsigned char Parameter_Gier_P = 2; // Wert : 1-20 |
+unsigned char Parameter_I_Faktor = 10; // Wert : 1-20 |
+unsigned char Parameter_UserParam1 = 0; |
+unsigned char Parameter_UserParam2 = 0; |
+unsigned char Parameter_UserParam3 = 0; |
+unsigned char Parameter_UserParam4 = 0; |
+unsigned char Parameter_ServoNickControl = 100; |
+struct mk_param_struct EE_Parameter; |
+ |
+void Piep(unsigned char Anzahl) |
+{ |
+ while(Anzahl--) |
+ { |
+ if(MotorenEin) return; //auf keinen Fall im Flug! |
+ beeptime = 100; |
+ Delay_ms(250); |
+ } |
+} |
+ |
+//############################################################################ |
+// Nullwerte ermitteln |
+void SetNeutral(void) |
+//############################################################################ |
+{ |
+ unsigned int timer; |
+ NeutralAccX = 0; |
+ NeutralAccY = 0; |
+ NeutralAccZ = 0; |
+ AdNeutralNick = 0; |
+ AdNeutralRoll = 0; |
+ AdNeutralGier = 0; |
+ CalibrierMittelwert(); |
+ timer = SetDelay(5); |
+ while (!CheckDelay(timer)); |
+ CalibrierMittelwert(); |
+ if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
+ { |
+ if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
+ } |
+ AdNeutralNick= abs(MesswertNick); |
+ AdNeutralRoll= abs(MesswertRoll); |
+ AdNeutralGier= abs(MesswertGier); |
+ NeutralAccY = abs(Mittelwert_AccRoll) / ACC_AMPLIFY; |
+ NeutralAccX = abs(Mittelwert_AccNick) / ACC_AMPLIFY; |
+ NeutralAccZ = Aktuell_az; |
+ |
+ Mess_IntegralNick = 0; |
+ Mess_IntegralNick2 = 0; |
+ Mess_IntegralRoll = 0; |
+ Mess_IntegralRoll2 = 0; |
+ Mess_Integral_Gier = 0; |
+ MesswertNick = 0; |
+ MesswertRoll = 0; |
+ MesswertGier = 0; |
+ StartLuftdruck = Luftdruck; |
+ HoeheD = 0; |
+ Mess_Integral_Hoch = 0; |
+ KompassStartwert = KompassValue; |
+ GPS_Neutral(); |
+ beeptime = 50; |
+} |
+ |
+//############################################################################ |
+// Bildet den Mittelwert aus den Messwerten |
+void Mittelwert(void) |
+//############################################################################ |
+{ |
+ // ADC auschalten, damit die Werte sich nicht während der Berechnung ändern |
+ ANALOG_OFF; |
+ if(MessanzahlNick) (MesswertNick = AccumulateNick / MessanzahlNick); |
+ if(MessanzahlRoll) (MesswertRoll = AccumulateRoll / MessanzahlRoll); |
+ if(MessanzahlGier) (MesswertGier = AccumulateGier / MessanzahlGier); |
+ if(messanzahl_AccNick) Mittelwert_AccNick = ((long)Mittelwert_AccNick * 7 + ((ACC_AMPLIFY * (long)accumulate_AccNick) / messanzahl_AccNick)) / 8L; |
+ if(messanzahl_AccRoll) Mittelwert_AccRoll = ((long)Mittelwert_AccRoll * 7 + ((ACC_AMPLIFY * (long)accumulate_AccRoll) / messanzahl_AccRoll)) / 8L; |
+ if(messanzahl_AccHoch) Mittelwert_AccHoch = ((long)Mittelwert_AccHoch * 7 + ((long)accumulate_AccHoch) / messanzahl_AccHoch) / 8L; |
+ AccumulateNick = 0; MessanzahlNick = 0; |
+ AccumulateRoll = 0; MessanzahlRoll = 0; |
+ AccumulateGier = 0; MessanzahlGier = 0; |
+ accumulate_AccRoll = 0;messanzahl_AccRoll = 0; |
+ accumulate_AccNick = 0;messanzahl_AccNick = 0; |
+ accumulate_AccHoch = 0;messanzahl_AccHoch = 0; |
+ Integral_Gier = Mess_Integral_Gier; |
+// Integral_Gier2 = Mess_Integral_Gier2; |
+ IntegralNick = Mess_IntegralNick; |
+ IntegralRoll = Mess_IntegralRoll; |
+ IntegralNick2 = Mess_IntegralNick2; |
+ IntegralRoll2 = Mess_IntegralRoll2; |
+ // ADC einschalten |
+ ANALOG_ON; |
+ |
+//------------------------------------------------------------------------------ |
+ if(MesswertNick > 200) MesswertNick += 4 * (MesswertNick - 200); |
+ else |
+ if(MesswertNick < -200) MesswertNick += 4 * (MesswertNick + 200); |
+ |
+ if(MesswertRoll > 200) MesswertRoll += 4 * (MesswertRoll - 200); |
+ else |
+ if(MesswertRoll < -200) MesswertRoll += 4 * (MesswertRoll + 200); |
+//------------------------------------------------------------------------------ |
+ if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--; |
+ if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--; |
+ if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--; |
+ if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--; |
+ if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255; |
+ if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255; |
+ if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255; |
+ if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255; |
+} |
+ |
+//############################################################################ |
+// Messwerte beim Ermitteln der Nullage |
+void CalibrierMittelwert(void) |
+//############################################################################ |
+{ |
+ // ADC auschalten, damit die Werte sich nicht während der Berechnung ändern |
+ ANALOG_OFF; |
+ if(MessanzahlNick) (MesswertNick = AccumulateNick / MessanzahlNick); |
+ if(MessanzahlRoll) (MesswertRoll = AccumulateRoll / MessanzahlRoll); |
+ if(MessanzahlGier) (MesswertGier = AccumulateGier / MessanzahlGier); |
+ if(messanzahl_AccNick) Mittelwert_AccNick = ((ACC_AMPLIFY * (long)accumulate_AccNick) / messanzahl_AccNick); |
+ if(messanzahl_AccRoll) Mittelwert_AccRoll = (ACC_AMPLIFY * (long)accumulate_AccRoll) / messanzahl_AccRoll; |
+ if(messanzahl_AccHoch) Mittelwert_AccHoch = ((long)accumulate_AccHoch) / messanzahl_AccHoch; |
+ AccumulateNick = 0; MessanzahlNick = 0; |
+ AccumulateRoll = 0; MessanzahlRoll = 0; |
+ AccumulateGier = 0; MessanzahlGier = 0; |
+ accumulate_AccRoll = 0;messanzahl_AccRoll = 0; |
+ accumulate_AccNick = 0;messanzahl_AccNick = 0; |
+ accumulate_AccHoch = 0;messanzahl_AccHoch = 0; |
+ // ADC einschalten |
+ ANALOG_ON; |
+ if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--; |
+ if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--; |
+ if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--; |
+ if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--; |
+ if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255; |
+ if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255; |
+ if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255; |
+ if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255; |
+} |
+ |
+//############################################################################ |
+// Senden der Motorwerte per I2C-Bus |
+void SendMotorData(void) |
+//############################################################################ |
+{ |
+ if(MOTOR_OFF || !MotorenEin) |
+ { |
+ Motor_Hinten = 0; |
+ Motor_Vorne = 0; |
+ Motor_Rechts = 0; |
+ Motor_Links = 0; |
+ if(MotorTest[0]) Motor_Vorne = MotorTest[0]; |
+ if(MotorTest[1]) Motor_Hinten = MotorTest[1]; |
+ if(MotorTest[2]) Motor_Links = MotorTest[2]; |
+ if(MotorTest[3]) Motor_Rechts = MotorTest[3]; |
+ } |
+ |
+ DebugOut.Analog[12] = Motor_Vorne; |
+ DebugOut.Analog[13] = Motor_Hinten; |
+ DebugOut.Analog[14] = Motor_Links; |
+ DebugOut.Analog[15] = Motor_Rechts; |
+ |
+ //Start I2C Interrupt Mode |
+ twi_state = 0; |
+ motor = 0; |
+ i2c_start(); |
+} |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Konstanten |
+// + 0-250 -> normale Werte |
+// + 251 -> Poti1 |
+// + 252 -> Poti2 |
+// + 253 -> Poti3 |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+void DefaultKonstanten1(void) |
+{ |
+ EE_Parameter.Kanalbelegung[K_NICK] = 1; |
+ EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
+ EE_Parameter.Kanalbelegung[K_GAS] = 3; |
+ EE_Parameter.Kanalbelegung[K_GIER] = 4; |
+ EE_Parameter.Kanalbelegung[K_POTI1] = 5; |
+ EE_Parameter.Kanalbelegung[K_POTI2] = 6; |
+ EE_Parameter.Kanalbelegung[K_POTI3] = 7; |
+ EE_Parameter.Kanalbelegung[K_POTI4] = 8; |
+ EE_Parameter.GlobalConfig = 0;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV | CFG_KOMPASS_FIX;//0x01; |
+ EE_Parameter.Hoehe_MinGas = 30; |
+ EE_Parameter.MaxHoehe = 251; // Wert : 0-32 251 -> Poti1 |
+ EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
+ EE_Parameter.Luftdruck_D = 70; // Wert : 0-250 |
+ EE_Parameter.Hoehe_ACC_Wirkung = 30; // Wert : 0-250 |
+ EE_Parameter.Hoehe_Verstaerkung = 2; // Wert : 0-50 |
+ EE_Parameter.Stick_P = 4; //2 // Wert : 1-6 |
+ EE_Parameter.Stick_D = 8; //8 // Wert : 0-64 |
+ EE_Parameter.Gier_P = 16; // Wert : 1-20 |
+ EE_Parameter.Gas_Min = 15; // Wert : 0-32 |
+ EE_Parameter.Gas_Max = 250; // Wert : 33-250 |
+ EE_Parameter.GyroAccFaktor = 26; // Wert : 1-64 |
+ EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
+ EE_Parameter.Gyro_P = 120; //80 // Wert : 0-250 |
+ EE_Parameter.Gyro_I = 150; // Wert : 0-250 |
+ EE_Parameter.UnterspannungsWarnung = 90; // Wert : 0-250 |
+ EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
+ EE_Parameter.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
+ EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
+ EE_Parameter.I_Faktor = 5; |
+ EE_Parameter.UserParam1 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam2 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam3 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam4 = 0; //zur freien Verwendung |
+ EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
+ EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
+ EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
+ EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
+ EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
+ EE_Parameter.ServoNickRefresh = 5; |
+ memcpy(EE_Parameter.Name, "Normal\0", 12); |
+} |
+ |
+void DefaultKonstanten2(void) |
+{ |
+ EE_Parameter.Kanalbelegung[K_NICK] = 1; |
+ EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
+ EE_Parameter.Kanalbelegung[K_GAS] = 3; |
+ EE_Parameter.Kanalbelegung[K_GIER] = 4; |
+ EE_Parameter.Kanalbelegung[K_POTI1] = 5; |
+ EE_Parameter.Kanalbelegung[K_POTI2] = 6; |
+ EE_Parameter.Kanalbelegung[K_POTI3] = 7; |
+ EE_Parameter.GlobalConfig = 0;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV;//0x01; |
+ EE_Parameter.Hoehe_MinGas = 30; |
+ EE_Parameter.MaxHoehe = 251; // Wert : 0-32 251 -> Poti1 |
+ EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
+ EE_Parameter.Luftdruck_D = 50; // Wert : 0-250 |
+ EE_Parameter.Hoehe_ACC_Wirkung = 50; // Wert : 0-250 |
+ EE_Parameter.Hoehe_Verstaerkung = 2; // Wert : 0-50 |
+ EE_Parameter.Stick_P = 4; //2 // Wert : 1-6 |
+ EE_Parameter.Stick_D = 0; //8 // Wert : 0-64 |
+ EE_Parameter.Gier_P = 16; // Wert : 1-20 |
+ EE_Parameter.Gas_Min = 15; // Wert : 0-32 |
+ EE_Parameter.Gas_Max = 250; // Wert : 33-250 |
+ EE_Parameter.GyroAccFaktor = 26; // Wert : 1-64 |
+ EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
+ EE_Parameter.Gyro_P = 175; //80 // Wert : 0-250 |
+ EE_Parameter.Gyro_I = 175; // Wert : 0-250 |
+ EE_Parameter.UnterspannungsWarnung = 90; // Wert : 0-250 |
+ EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
+ EE_Parameter.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
+ EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
+ EE_Parameter.I_Faktor = 5; |
+ EE_Parameter.UserParam1 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam2 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam3 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam4 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam3 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam4 = 0; //zur freien Verwendung |
+ EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
+ EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
+ EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
+ EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
+ EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
+ EE_Parameter.ServoNickRefresh = 5; |
+ memcpy(EE_Parameter.Name, "Kamera\0", 12); |
+} |
+ |
+ |
+//############################################################################ |
+// Trägt ggf. das Poti als Parameter ein |
+void ParameterZuordnung(void) |
+//############################################################################ |
+{ |
+ |
+ #define CHK_POTI(b,a,min,max) { if(a > 250) { if(a == 251) b = Poti1; else if(a == 252) b = Poti2; else if(a == 253) b = Poti3; else if(a == 254) b = Poti4;} else b = a; if(b <= min) b = min; else if(b >= max) b = max;} |
+ CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe,0,255); |
+ CHK_POTI(Parameter_Luftdruck_D,EE_Parameter.Luftdruck_D,0,100); |
+ CHK_POTI(Parameter_Hoehe_P,EE_Parameter.Hoehe_P,0,100); |
+ CHK_POTI(Parameter_Hoehe_ACC_Wirkung,EE_Parameter.Hoehe_ACC_Wirkung,0,255); |
+ CHK_POTI(Parameter_KompassWirkung,EE_Parameter.KompassWirkung,0,255); |
+ CHK_POTI(Parameter_Gyro_P,EE_Parameter.Gyro_P,10,255); |
+ CHK_POTI(Parameter_Gyro_I,EE_Parameter.Gyro_I,0,255); |
+ CHK_POTI(Parameter_I_Faktor,EE_Parameter.I_Faktor,0,255); |
+ CHK_POTI(Parameter_UserParam1,EE_Parameter.UserParam1,0,255); |
+ CHK_POTI(Parameter_UserParam2,EE_Parameter.UserParam2,0,255); |
+ CHK_POTI(Parameter_UserParam3,EE_Parameter.UserParam3,0,255); |
+ CHK_POTI(Parameter_UserParam4,EE_Parameter.UserParam4,0,255); |
+ |
+ unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
+ unsigned char ServoNickCompInvert; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
+ unsigned char ServoNickMin; // Wert : 0-250 // Anschlag |
+ unsigned char ServoNickMax; // Wert : 0-250 // Anschlag |
+ |
+ |
+ CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
+ CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
+ CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
+ |
+ Ki = (float) Parameter_I_Faktor * 0.0001; |
+ MAX_GAS = EE_Parameter.Gas_Max; |
+ MIN_GAS = EE_Parameter.Gas_Min; |
+} |
+ |
+ |
+//############################################################################ |
+// |
+void MotorRegler(void) |
+//############################################################################ |
+{ |
+ int motorwert,pd_ergebnis,h,tmp_int; |
+ int GierMischanteil,GasMischanteil; |
+ static long SummeNick=0,SummeRoll=0; |
+ static long sollGier = 0,tmp_long,tmp_long2; |
+ static int IntegralFehlerNick = 0; |
+ static int IntegralFehlerRoll = 0; |
+ static unsigned int RcLostTimer; |
+ static unsigned char delay_neutral = 0; |
+ static unsigned char delay_einschalten = 0,delay_ausschalten = 0; |
+ static unsigned int modell_fliegt = 0; |
+ static int hoehenregler = 0; |
+ static char TimerWerteausgabe = 0; |
+ static char NeueKompassRichtungMerken = 0; |
+ Mittelwert(); |
+ |
+ GRN_ON; |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gaswert ermitteln |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ GasMischanteil = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 120; |
+ if(GasMischanteil < 0) GasMischanteil = 0; |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Emfang schlecht |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(SenderOkay < 100) |
+ { |
+ if(!PcZugriff) beeptime = 500; |
+ if(RcLostTimer) RcLostTimer--; |
+ else |
+ { |
+ MotorenEin = 0; |
+ Notlandung = 0; |
+ } |
+ ROT_ON; |
+ if(modell_fliegt > 2000) // wahrscheinlich in der Luft --> langsam absenken |
+ { |
+ GasMischanteil = EE_Parameter.NotGas; |
+ Notlandung = 1; |
+ PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] = 0; |
+ PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] = 0; |
+ PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] = 0; |
+/* Poti1 = 65; |
+ Poti2 = 48; |
+ Poti3 = 0; |
+*/ } |
+ else MotorenEin = 0; |
+ } |
+ else |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Emfang gut |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(SenderOkay > 140) |
+ { |
+ Notlandung = 0; |
+ RcLostTimer = EE_Parameter.NotGasZeit * 50; |
+ if(GasMischanteil > 40) |
+ { |
+ if(modell_fliegt < 0xffff) modell_fliegt++; |
+ } |
+ if((modell_fliegt < 200) || (GasMischanteil < 40)) |
+ { |
+ SummeNick = 0; |
+ SummeRoll = 0; |
+ Mess_Integral_Gier = 0; |
+ Mess_Integral_Gier2 = 0; |
+ } |
+ if((GasMischanteil > 200) && MotorenEin == 0) |
+ { |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// auf Nullwerte kalibrieren |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) // Neutralwerte |
+ { |
+ unsigned char setting; |
+ if(++delay_neutral > 200) // nicht sofort |
+ { |
+ GRN_OFF; |
+ SetNeutral(); |
+ MotorenEin = 0; |
+ delay_neutral = 0; |
+ modell_fliegt = 0; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70 || abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) > 70) |
+ { |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 1; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 2; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5; |
+ eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], setting); // aktiven Datensatz merken |
+ } |
+ ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
+ Piep(GetActiveParamSetNumber()); |
+ if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
+ { |
+ if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
+ } |
+ } |
+ } |
+ else delay_neutral = 0; |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gas ist unten |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(GasMischanteil < 35) |
+ { |
+ // Starten |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75) |
+ { |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Einschalten |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(++delay_einschalten > 200) |
+ { |
+ delay_einschalten = 200; |
+ modell_fliegt = 1; |
+ MotorenEin = 1; |
+ sollGier = 0; |
+ Mess_Integral_Gier = 0; |
+ Mess_Integral_Gier2 = 0; |
+ Mess_IntegralNick = 0; |
+ Mess_IntegralRoll = 0; |
+ Mess_IntegralNick2 = IntegralNick; |
+ Mess_IntegralRoll2 = IntegralRoll; |
+ SummeNick = 0; |
+ SummeRoll = 0; |
+ } |
+ } |
+ else delay_einschalten = 0; |
+ //Auf Neutralwerte setzen |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Auschalten |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) |
+ { |
+ if(++delay_ausschalten > 200) // nicht sofort |
+ { |
+ MotorenEin = 0; |
+ delay_ausschalten = 200; |
+ modell_fliegt = 0; |
+ } |
+ } |
+ else delay_ausschalten = 0; |
+ } |
+ } |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// neue Werte von der Funke |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(!NewPpmData-- || Notlandung) |
+ { |
+ ParameterZuordnung(); |
+ StickNick = PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P; |
+ StickNick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D; |
+ StickRoll = PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P; |
+ StickRoll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D; |
+ StickGier = -PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]; |
+ |
+ GyroFaktor = ((float)Parameter_Gyro_P + 10.0) / 256.0; |
+ IntegralFaktor = ((float) Parameter_Gyro_I) / 44000; |
+ |
+ if(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor = 0; |
+ if(GyroFaktor < 0) GyroFaktor = 0; |
+ if(IntegralFaktor < 0) IntegralFaktor = 0; |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Bei Empfangsausfall im Flug |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(Notlandung) |
+ { |
+ StickGier = 0; |
+ StickNick = 0; |
+ StickRoll = 0; |
+ GyroFaktor = 0.1; |
+ IntegralFaktor = 0.005; |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gyro-Drift kompensieren |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define DRIFT_FAKTOR 3 |
+ if(ZaehlMessungen >= 1000 / DRIFT_FAKTOR) |
+ { |
+ IntegralFehlerNick = IntegralNick2 - IntegralNick; |
+ IntegralFehlerRoll = IntegralRoll2 - IntegralRoll; |
+ ZaehlMessungen = 0; |
+ if(IntegralFehlerNick > 500/DRIFT_FAKTOR) AdNeutralNick++; |
+ if(IntegralFehlerNick < -500/DRIFT_FAKTOR) AdNeutralNick--; |
+ if(IntegralFehlerRoll > 500/DRIFT_FAKTOR) AdNeutralRoll++; |
+ if(IntegralFehlerRoll < -500/DRIFT_FAKTOR) AdNeutralRoll--; |
+ if(Mess_Integral_Gier2 > 500/DRIFT_FAKTOR) AdNeutralGier--; |
+ if(Mess_Integral_Gier2 <-500/DRIFT_FAKTOR) AdNeutralGier++; |
+ ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
+ Mess_IntegralNick2 = IntegralNick; |
+ Mess_IntegralRoll2 = IntegralRoll; |
+ Mess_Integral_Gier2 = Integral_Gier; |
+ ANALOG_ON; // ADC einschalten |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Integrale auf ACC-Signal abgleichen |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick) / 16; |
+ tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll) / 16; |
+#define AUSGLEICH 500 |
+ if(tmp_long > AUSGLEICH) tmp_long = AUSGLEICH; |
+ if(tmp_long < -AUSGLEICH) tmp_long =-AUSGLEICH; |
+ if(tmp_long2 > AUSGLEICH) tmp_long2 = AUSGLEICH; |
+ if(tmp_long2 <-AUSGLEICH) tmp_long2 =-AUSGLEICH; |
+ ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
+ Mess_IntegralNick -= tmp_long; |
+ Mess_IntegralRoll -= tmp_long2; |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gieren |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ sollGier = StickGier; |
+ if(abs(StickGier) > 35) |
+ { |
+ if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX)) NeueKompassRichtungMerken = 1; |
+ } |
+ tmp_int = EE_Parameter.Gier_P * (sollGier * abs(sollGier)) / 256; // expo |
+ Mess_Integral_Gier -= tmp_int; |
+ if(Mess_Integral_Gier > 30000) Mess_Integral_Gier = 30000; // begrenzen |
+ if(Mess_Integral_Gier <-30000) Mess_Integral_Gier =-30000; |
+ |
+ ANALOG_ON; // ADC einschalten |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Kompass |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ //KompassValue = 12; |
+ if(KompassValue && (EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV)) |
+ { |
+ int w,v; |
+ static int SignalSchlecht = 0; |
+ w = abs(IntegralNick /512); // mit zunehmender Neigung den Einfluss drosseln |
+ v = abs(IntegralRoll /512); |
+ if(v > w) w = v; // grösste Neigung ermitteln |
+ if(w < 25 && NeueKompassRichtungMerken && !SignalSchlecht) |
+ { |
+ KompassStartwert = KompassValue; |
+ NeueKompassRichtungMerken = 0; |
+ } |
+ w = (w * Parameter_KompassWirkung) / 64; // auf die Wirkung normieren |
+ w = Parameter_KompassWirkung - w; // Wirkung ggf drosseln |
+ if(w > 0) |
+ { |
+ ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
+ if(!SignalSchlecht) Mess_Integral_Gier += (KompassRichtung * w) / 32; // nach Kompass ausrichten |
+ ANALOG_ON; // ADC einschalten |
+ if(SignalSchlecht) SignalSchlecht--; |
+ } |
+ else SignalSchlecht = 500; // so lange das Signal taub stellen --> ca. 1 sek |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Debugwerte zuordnen |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+DebugOut.Sekunden++; |
+ if(!TimerWerteausgabe--) |
+ { |
+ TimerWerteausgabe = 49; |
+// DebugOut.Analog[0] = MesswertNick; |
+// DebugOut.Analog[1] = MesswertRoll; |
+// DebugOut.Analog[2] = MesswertGier; |
+ DebugOut.Analog[0] = IntegralNick / EE_Parameter.GyroAccFaktor; |
+ DebugOut.Analog[1] = IntegralRoll / EE_Parameter.GyroAccFaktor; |
+ DebugOut.Analog[2] = Mittelwert_AccNick; |
+ DebugOut.Analog[3] = Mittelwert_AccRoll; |
+ DebugOut.Analog[4] = MesswertGier; |
+ DebugOut.Analog[5] = HoehenWert; |
+ DebugOut.Analog[6] = (Mess_Integral_Hoch / 512); |
+ DebugOut.Analog[7] = GasMischanteil; |
+ DebugOut.Analog[8] = KompassValue; |
+// DebugOut.Analog[9] = SollHoehe; |
+// DebugOut.Analog[10] = Mess_Integral_Gier / 128; |
+// DebugOut.Analog[11] = KompassStartwert; |
+// DebugOut.Analog[10] = Parameter_Gyro_I; |
+// DebugOut.Analog[10] = EE_Parameter.Gyro_I; |
+// DebugOut.Analog[9] = KompassRichtung; |
+// DebugOut.Analog[10] = GasMischanteil; |
+// DebugOut.Analog[3] = HoeheD * 32; |
+// DebugOut.Analog[4] = hoehenregler; |
+ } |
+ |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Drehgeschwindigkeit und -winkel zu einem Istwert zusammenfassen |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ MesswertNick = IntegralNick * IntegralFaktor + MesswertNick * GyroFaktor; |
+ MesswertRoll = IntegralRoll * IntegralFaktor + MesswertRoll * GyroFaktor; |
+ MesswertGier = MesswertGier * (GyroFaktor/2) + Integral_Gier * IntegralFaktor; |
+ |
+ // Maximalwerte abfangen |
+ #define MAX_SENSOR 2048 |
+ if(MesswertNick > MAX_SENSOR) MesswertNick = MAX_SENSOR; |
+ if(MesswertNick < -MAX_SENSOR) MesswertNick = -MAX_SENSOR; |
+ if(MesswertRoll > MAX_SENSOR) MesswertRoll = MAX_SENSOR; |
+ if(MesswertRoll < -MAX_SENSOR) MesswertRoll = -MAX_SENSOR; |
+ if(MesswertGier > MAX_SENSOR) MesswertGier = MAX_SENSOR; |
+ if(MesswertGier < -MAX_SENSOR) MesswertGier = -MAX_SENSOR; |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Höhenregelung |
+// Die Höhenregelung schwächt lediglich das Gas ab, erhöht es allerdings nicht |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+//OCR0B = 180 - (Poti1 + 120) / 4; |
+//DruckOffsetSetting = OCR0B; |
+ if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung |
+ { |
+ int tmp_int; |
+ if(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER) // Regler wird über Schalter gesteuert |
+ { |
+ if(Parameter_MaxHoehe < 50) |
+ { |
+ SollHoehe = HoehenWert - 20; // Parameter_MaxHoehe ist der PPM-Wert des Schalters |
+ HoehenReglerAktiv = 0; |
+ } |
+ else |
+ HoehenReglerAktiv = 1; |
+ } |
+ else |
+ { |
+ SollHoehe = Parameter_MaxHoehe * EE_Parameter.Hoehe_Verstaerkung - 20; |
+ HoehenReglerAktiv = 1; |
+ } |
+ |
+ if(Notlandung) SollHoehe = 0; |
+ h = HoehenWert; |
+ if((h > SollHoehe) && HoehenReglerAktiv) // zu hoch --> drosseln |
+ { h = ((h - SollHoehe) * (int) Parameter_Hoehe_P) / 16; // Differenz bestimmen --> P-Anteil |
+ h = GasMischanteil - h; // vom Gas abziehen |
+ h -= (HoeheD * Parameter_Luftdruck_D)/8; // D-Anteil |
+ tmp_int = ((Mess_Integral_Hoch / 512) * (signed long) Parameter_Hoehe_ACC_Wirkung) / 32; |
+ if(tmp_int > 50) tmp_int = 50; |
+ else if(tmp_int < -50) tmp_int = -50; |
+ h -= tmp_int; |
+ hoehenregler = (hoehenregler*15 + h) / 16; |
+ if(hoehenregler < EE_Parameter.Hoehe_MinGas) // nicht unter MIN |
+ { |
+ if(GasMischanteil >= EE_Parameter.Hoehe_MinGas) hoehenregler = EE_Parameter.Hoehe_MinGas; |
+ if(GasMischanteil < EE_Parameter.Hoehe_MinGas) hoehenregler = GasMischanteil; |
+ } |
+ if(hoehenregler > GasMischanteil) hoehenregler = GasMischanteil; // nicht mehr als Gas |
+ GasMischanteil = hoehenregler; |
+ } |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Mischer und PI-Regler |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gier-Anteil |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ GierMischanteil = MesswertGier - sollGier; // Regler für Gier |
+ if(GierMischanteil > 100) GierMischanteil = 100; |
+ if(GierMischanteil < -100) GierMischanteil = -100; |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Nick-Achse |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ DiffNick = Kp * (MesswertNick - (StickNick - GPS_Nick)); // Differenz bestimmen |
+ SummeNick += DiffNick; // I-Anteil |
+ if(SummeNick > 0) SummeNick-= (abs(SummeNick)/256 + 1); else SummeNick += abs(SummeNick)/256 + 1; |
+ if(SummeNick > 16000) SummeNick = 16000; |
+ if(SummeNick < -16000) SummeNick = -16000; |
+ pd_ergebnis = DiffNick + Ki * SummeNick; // PI-Regler für Nick |
+ // Motor Vorn |
+ motorwert = GasMischanteil + pd_ergebnis + GierMischanteil; // Mischer |
+ if ((motorwert < 0) | (GasMischanteil < 10)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Vorne = motorwert; |
+ // Motor Heck |
+ motorwert = GasMischanteil - pd_ergebnis + GierMischanteil; |
+ if ((motorwert < 0) | (GasMischanteil < 10)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Hinten = motorwert; |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Roll-Achse |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ DiffRoll = Kp * (MesswertRoll - (StickRoll - GPS_Roll)); // Differenz bestimmen |
+ SummeRoll += DiffRoll; // I-Anteil |
+ if(SummeRoll > 0) SummeRoll-= (abs(SummeRoll)/256 + 1); else SummeRoll += abs(SummeRoll)/256 + 1; |
+ if(SummeRoll > 16000) SummeRoll = 16000; |
+ if(SummeRoll < -16000) SummeRoll = -16000; |
+ pd_ergebnis = DiffRoll + Ki * SummeRoll; // PI-Regler für Roll |
+ // Motor Links |
+ motorwert = GasMischanteil + pd_ergebnis - GierMischanteil; |
+ if ((motorwert < 0) | (GasMischanteil < 10)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Links = motorwert; |
+ // Motor Rechts |
+ motorwert = GasMischanteil - pd_ergebnis - GierMischanteil; |
+ if ((motorwert < 0) | (GasMischanteil < 10)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Rechts = motorwert; |
+ // +++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+} |
+ |
/branches/FLightCtrl/fc.h |
---|
0,0 → 1,106 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
#ifndef _FC_H |
#define _FC_H |
extern volatile unsigned char Timeout; |
extern unsigned char Sekunde,Minute; |
extern volatile long IntegralNick,IntegralNick2; |
extern volatile long IntegralRoll,IntegralRoll2; |
extern volatile long Mess_IntegralNick,Mess_IntegralNick2; |
extern volatile long Mess_IntegralRoll,Mess_IntegralRoll2; |
extern volatile long Mess_Integral_Hoch; |
extern volatile long Integral_Gier,Mess_Integral_Gier,Mess_Integral_Gier2; |
extern volatile int KompassValue; |
extern volatile int KompassStartwert; |
extern volatile int KompassRichtung; |
extern int HoehenWert; |
extern int SollHoehe; |
extern volatile int MesswertNick,MesswertRoll,MesswertGier; |
extern volatile int AdNeutralNick,AdNeutralRoll,AdNeutralGier, Mittelwert_AccNick, Mittelwert_AccRoll; |
extern volatile int NeutralAccX, NeutralAccY,Mittelwert_AccHoch; |
extern volatile float NeutralAccZ; |
void MotorRegler(void); |
void SendMotorData(void); |
void CalibrierMittelwert(void); |
void Mittelwert(void); |
void SetNeutral(void); |
unsigned char h,m,s; |
volatile unsigned char Timeout ; |
unsigned char CosinusNickWinkel, CosinusRollWinkel; |
volatile long IntegralNick,IntegralNick2; |
volatile long IntegralRoll,IntegralRoll2; |
volatile long Integral_Gier; |
volatile long Mess_IntegralNick,Mess_IntegralNick2; |
volatile long Mess_IntegralRoll,Mess_IntegralRoll2; |
volatile long Mess_Integral_Gier; |
volatile int DiffNick,DiffRoll; |
extern int Poti1, Poti2, Poti3, Poti4; |
volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count; |
unsigned char MotorWert[5]; |
volatile unsigned char SenderOkay; |
int StickNick,StickRoll,StickGier; |
char MotorenEin; |
extern void DefaultKonstanten(void); |
#define STRUCT_PARAM_LAENGE 58 |
struct mk_param_struct |
{ |
unsigned char Kanalbelegung[8]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3 |
unsigned char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv |
unsigned char Hoehe_MinGas; // Wert : 0-100 |
unsigned char Luftdruck_D; // Wert : 0-250 |
unsigned char MaxHoehe; // Wert : 0-32 |
unsigned char Hoehe_P; // Wert : 0-32 |
unsigned char Hoehe_Verstaerkung; // Wert : 0-50 |
unsigned char Hoehe_ACC_Wirkung; // Wert : 0-250 |
unsigned char Stick_P; // Wert : 1-6 |
unsigned char Stick_D; // Wert : 0-64 |
unsigned char Gier_P; // Wert : 1-20 |
unsigned char Gas_Min; // Wert : 0-32 |
unsigned char Gas_Max; // Wert : 33-250 |
unsigned char GyroAccFaktor; // Wert : 1-64 |
unsigned char KompassWirkung; // Wert : 0-32 |
unsigned char Gyro_P; // Wert : 10-250 |
unsigned char Gyro_I; // Wert : 0-250 |
unsigned char UnterspannungsWarnung; // Wert : 0-250 |
unsigned char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust |
unsigned char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen |
unsigned char UfoAusrichtung; // X oder + Formation |
unsigned char I_Faktor; // Wert : 0-250 |
unsigned char UserParam1; // Wert : 0-250 |
unsigned char UserParam2; // Wert : 0-250 |
unsigned char UserParam3; // Wert : 0-250 |
unsigned char UserParam4; // Wert : 0-250 |
unsigned char ServoNickControl; // Wert : 0-250 // Stellung des Servos |
unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
unsigned char ServoNickMin; // Wert : 0-250 // Anschlag |
unsigned char ServoNickMax; // Wert : 0-250 // Anschlag |
unsigned char ServoNickRefresh; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
unsigned char ServoNickCompInvert; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
unsigned char Reserved[7]; |
char Name[12]; |
}; |
extern struct mk_param_struct EE_Parameter; |
extern unsigned char Parameter_Luftdruck_D; |
extern unsigned char Parameter_MaxHoehe; |
extern unsigned char Parameter_Hoehe_P; |
extern unsigned char Parameter_Hoehe_ACC_Wirkung; |
extern unsigned char Parameter_KompassWirkung; |
extern unsigned char Parameter_Gyro_P; |
extern unsigned char Parameter_Gyro_I; |
extern unsigned char Parameter_Gier_P; |
extern unsigned char Parameter_ServoNickControl; |
#endif //_FC_H |
/branches/FLightCtrl/flight.pnproj |
---|
0,0 → 1,0 |
<Project name="Flight-Ctrl"><File path="uart.h"></File><File path="main.c"></File><File path="main.h"></File><File path="makefile"></File><File path="uart.c"></File><File path="printf_P.h"></File><File path="printf_P.c"></File><File path="timer0.c"></File><File path="timer0.h"></File><File path="old_macros.h"></File><File path="twimaster.c"></File><File path="version.txt"></File><File path="twimaster.h"></File><File path="rc.c"></File><File path="rc.h"></File><File path="fc.h"></File><File path="fc.c"></File><File path="menu.h"></File><File path="menu.c"></File><File path="_Settings.h"></File><File path="analog.c"></File><File path="analog.h"></File><File path="GPS.c"></File><File path="gps.h"></File><File path="License.txt"></File></Project> |
/branches/FLightCtrl/flight.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="Flight-Ctrl" x="true"></e></ViewState></pd> |
/branches/FLightCtrl/gps.h |
---|
0,0 → 1,4 |
extern signed int GPS_Nick; |
extern signed int GPS_Roll; |
extern void GPS_Neutral(void); |
extern void GPS_BerechneZielrichtung(void); |
/branches/FLightCtrl/main.c |
---|
0,0 → 1,210 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + Nur für den privaten Gebrauch |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten und nicht-kommerziellen Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt und genannt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned char EEPromArray[E2END+1] EEMEM; |
// -- Parametersatz aus EEPROM lesen --- |
// number [0..5] |
void ReadParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if (number > 5) number = 5; |
eeprom_read_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length); |
} |
// -- Parametersatz ins EEPROM schreiben --- |
// number [0..5] |
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if (number > 5) number = 5; |
eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], number); // diesen Parametersatz als aktuell merken |
} |
unsigned char GetActiveParamSetNumber(void) |
{ |
return(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET])); |
} |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
unsigned int timer; |
unsigned int timer2 = 0; |
DDRC = 0x01; // SCL |
PORTC = 0xff; // Pullup SDA |
DDRB = 0x1B; // LEDs und Druckoffset |
PORTB = 0x01; // LED_Rot |
DDRD = 0x3E; // Speaker & TXD & J3 J4 J5 |
DDRD |=0x80; // J7 |
PORTD = 0xF7; // LED |
MCUSR &=~(1<<WDRF); |
WDTCSR |= (1<<WDCE)|(1<<WDE); |
WDTCSR = 0; |
beeptime = 2000; |
StickGier = 0; PPM_in[K_GAS] = 0;StickRoll = 0; StickNick = 0; |
ROT_OFF; |
Timer_Init(); |
UART_Init(); |
rc_sum_init(); |
ADC_Init(); |
i2c_init(); |
sei(); |
VersionInfo.Hauptversion = VERSION_HAUPTVERSION; |
VersionInfo.Nebenversion = VERSION_NEBENVERSION; |
VersionInfo.PCKompatibel = VERSION_KOMPATIBEL; |
printf("\n\rFlightControl V%d.%d ", VERSION_HAUPTVERSION, VERSION_NEBENVERSION); |
printf("\n\r=============================="); |
GRN_ON; |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != 59) // seit V 0.60 |
{ |
printf("\n\rInit. EEPROM: Generiere Default-Parameter..."); |
DefaultKonstanten1(); |
for (unsigned char i=0;i<6;i++) |
{ |
if(i==2) DefaultKonstanten2(); |
WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
} |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], 1); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], 59); |
} |
ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
printf("\n\rBenutze Parametersatz %d", GetActiveParamSetNumber()); |
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
printf("\n\rAbgleich Luftdrucksensor.."); |
timer = SetDelay(2500); |
SucheLuftruckOffset(); |
while (!CheckDelay(timer)); |
printf("OK\n\r"); |
} |
SetNeutral(); |
ROT_OFF; |
beeptime = 2000; |
DebugIn.Analog[1] = 1000; |
DebugIn.Digital[0] = 0x55; |
printf("\n\rSteuerung: "); |
if (EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) printf("HeadingHold"); |
else printf("Neutral"); |
printf("\n\n\r"); |
LcdClear(); |
while (1) |
{ |
if (UpdateMotor) // ReglerIntervall |
{ |
UpdateMotor=0; |
MotorRegler(); |
SendMotorData(); |
ROT_OFF; |
if(PcZugriff) PcZugriff--; |
if(SenderOkay) SenderOkay--; |
if (UBat < EE_Parameter.UnterspannungsWarnung) |
{ |
beeptime = 2000; |
} |
if(!Timeout) |
{ |
i2c_init(); |
} |
else |
{ |
ROT_OFF; |
} |
} |
if(SIO_DEBUG) |
{ |
DatenUebertragung(); |
BearbeiteRxDaten(); |
} |
else BearbeiteRxDaten(); |
if(CheckDelay(timer2)) |
{ |
if(MotorenEin) PORTC ^= 0x10; else PORTC &= ~0x10; |
timer = SetDelay(500); |
} |
} |
return (1); |
} |
/branches/FLightCtrl/main.h |
---|
0,0 → 1,92 |
#ifndef _MAIN_H |
#define _MAIN_H |
//Hier die Quarz Frequenz einstellen |
#if defined (__AVR_ATmega32__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
#endif |
#if defined (__AVR_ATmega644__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
//#define SYSCLK 16000000L //Quarz Frequenz in Hz |
#endif |
// neue Hardware |
#define ROT_OFF PORTB &=~0x01 |
#define ROT_ON PORTB |= 0x01 |
#define ROT_FLASH PORTB ^= 0x01 |
#define GRN_OFF PORTB &=~0x02 |
#define GRN_ON PORTB |= 0x02 |
#define GRN_FLASH PORTD ^= 0x02 |
//#ifndef F_CPU |
//#error ################## F_CPU nicht definiert oder ungültig ############# |
//#endif |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//#define ANZ_MITTELWERT 4 |
#define EEPROM_ADR_VALID 1 |
#define EEPROM_ADR_ACTIVE_SET 2 |
#define EEPROM_ADR_PARAM_BEGIN 100 |
#define CFG_HOEHENREGELUNG 0x01 |
#define CFG_HOEHEN_SCHALTER 0x02 |
#define CFG_HEADING_HOLD 0x04 |
#define CFG_KOMPASS_AKTIV 0x08 |
#define CFG_KOMPASS_FIX 0x10 |
#define CFG_GPS_AKTIV 0x20 |
//#define SYSCLK |
//extern unsigned long SYSCLK; |
extern volatile int i_Nick[20],i_Roll[20],DiffNick,DiffRoll; |
extern volatile unsigned char SenderOkay; |
extern unsigned char CosinusNickWinkel, CosinusRollWinkel; |
extern void ReadParameterSet (unsigned char number, unsigned char *buffer, unsigned char length); |
extern void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length); |
extern unsigned char GetActiveParamSetNumber(void); |
extern unsigned char EEPromArray[]; |
#include <stdlib.h> |
#include <string.h> |
#include <avr/io.h> |
#include <avr/pgmspace.h> |
#include <avr/interrupt.h> |
#include <avr/eeprom.h> |
#include <avr/boot.h> |
#include <avr/wdt.h> |
#include "old_macros.h" |
#include "_settings.h" |
#include "printf_P.h" |
#include "timer0.h" |
#include "uart.h" |
#include "analog.h" |
#include "twimaster.h" |
#include "menu.h" |
#include "rc.h" |
#include "fc.h" |
#include "gps.h" |
#ifndef EEMEM |
#define EEMEM __attribute__ ((section (".eeprom"))) |
#endif |
#define DEBUG_DISPLAY_INTERVALL 123 // in ms |
#define DELAY_US(x) ((unsigned int)( (x) * 1e-6 * F_CPU )) |
#endif //_MAIN_H |
/branches/FLightCtrl/makefile |
---|
0,0 → 1,391 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega644 |
F_CPU = 20000000 |
#------------------------------------------------------------------- |
HAUPT_VERSION = 0 |
NEBEN_VERSION = 60 |
VERSION_KOMPATIBEL = 4 # PC-Kompatibilität |
#------------------------------------------------------------------- |
ifeq ($(MCU), atmega32) |
# FUSE_SETTINGS= -u -U lfuse:w:0xff:m -U hfuse:w:0xcf:m |
HEX_NAME = MEGA32 |
endif |
ifeq ($(MCU), atmega644) |
FUSE_SETTINGS = -u -U lfuse:w:0xff:m -U hfuse:w:0xdf:m |
#FUSE_SETTINGS = -U lfuse:w:0xff:m -U hfuse:w:0xdf:m |
# -u bei neuen Controllern wieder einspielen |
HEX_NAME = MEGA644 |
endif |
ifeq ($(F_CPU), 16000000) |
QUARZ = 16MHZ |
endif |
ifeq ($(F_CPU), 20000000) |
QUARZ = 20MHZ |
endif |
# Output format. (can be srec, ihex, binary) |
FORMAT = ihex |
# Target file name (without extension). |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION) |
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
OPT = s |
########################################################################################################## |
# List C source files here. (C dependencies are automatically generated.) |
SRC = main.c uart.c printf_P.c timer0.c analog.c menu.c |
SRC += twimaster.c rc.c fc.c GPS.c |
########################################################################################################## |
# List Assembler source files here. |
# Make them always end in a capital .S. Files ending in a lowercase .s |
# will not be considered source files but generated files (assembler |
# output from the compiler), and will be deleted upon "make clean"! |
# Even though the DOS/Win* filesystem matches both .s and .S the same, |
# it will preserve the spelling of the filenames, and gcc itself does |
# care about how the name is spelled on its command-line. |
ASRC = |
# List any extra directories to look for include files here. |
# Each directory must be seperated by a space. |
EXTRAINCDIRS = |
# Optional compiler flags. |
# -g: generate debugging information (for GDB, or for COFF conversion) |
# -O*: optimization level |
# -f...: tuning, see gcc manual and avr-libc documentation |
# -Wall...: warning level |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create assembler listing |
CFLAGS = -O$(OPT) \ |
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \ |
-Wall -Wstrict-prototypes \ |
-Wa,-adhlns=$(<:.c=.lst) \ |
$(patsubst %,-I%,$(EXTRAINCDIRS)) |
# Set a "language standard" compiler flag. |
# Unremark just one line below to set the language standard to use. |
# gnu99 = C99 + GNU extensions. See GCC manual for more information. |
#CFLAGS += -std=c89 |
#CFLAGS += -std=gnu89 |
#CFLAGS += -std=c99 |
CFLAGS += -std=gnu99 |
CFLAGS += -DVERSION_HAUPTVERSION=$(HAUPT_VERSION) -DVERSION_NEBENVERSION=$(NEBEN_VERSION) -DVERSION_KOMPATIBEL=$(VERSION_KOMPATIBEL) |
# Optional assembler flags. |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create listing |
# -gstabs: have the assembler create line number information; note that |
# for use in COFF files, additional information about filenames |
# and function names needs to be present in the assembler source |
# files -- see avr-libc docs [FIXME: not yet described there] |
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs |
# Optional linker flags. |
# -Wl,...: tell GCC to pass this to linker. |
# -Map: create map file |
# --cref: add cross reference to map file |
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref |
# Additional libraries |
# Minimalistic printf version |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min |
# Floating point printf version (requires -lm below) |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt |
# -lm = math library |
LDFLAGS += -lm |
##LDFLAGS += -T./linkerfile/avr5.x |
# Programming support using avrdude. Settings and variables. |
# Programming hardware: alf avr910 avrisp bascom bsd |
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 |
# |
# Type: avrdude -c ? |
# to get a full listing. |
# |
#AVRDUDE_PROGRAMMER = stk200 |
AVRDUDE_PROGRAMMER = dt006 |
#AVRDUDE_PROGRAMMER = ponyser |
#falls Ponyser ausgewählt wird, muss sich unsere avrdude-Configdatei im Bin-Verzeichnis des Compilers befinden |
#AVRDUDE_PORT = com1 # programmer connected to serial device |
AVRDUDE_PORT = lpt1 # programmer connected to parallel port |
#AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex |
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex $(FUSE_SETTINGS) |
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep |
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) |
# Uncomment the following if you want avrdude's erase cycle counter. |
# Note that this counter needs to be initialized first using -Yn, |
# see avrdude manual. |
#AVRDUDE_ERASE += -y |
# Uncomment the following if you do /not/ wish a verification to be |
# performed after programming the device. |
AVRDUDE_FLAGS += -V |
# Increase verbosity level. Please use this when submitting bug |
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> |
# to submit bug reports. |
#AVRDUDE_FLAGS += -v -v |
# --------------------------------------------------------------------------- |
# Define directories, if needed. |
DIRAVR = c:/winavr |
DIRAVRBIN = $(DIRAVR)/bin |
DIRAVRUTILS = $(DIRAVR)/utils/bin |
DIRINC = . |
DIRLIB = $(DIRAVR)/avr/lib |
# Define programs and commands. |
SHELL = sh |
CC = avr-gcc |
OBJCOPY = avr-objcopy |
OBJDUMP = avr-objdump |
SIZE = avr-size |
# Programming support using avrdude. |
AVRDUDE = avrdude |
REMOVE = rm -f |
COPY = cp |
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
ELFSIZE = $(SIZE) -A $(TARGET).elf |
# Define Messages |
# English |
MSG_ERRORS_NONE = Errors: none |
MSG_BEGIN = -------- begin -------- |
MSG_END = -------- end -------- |
MSG_SIZE_BEFORE = Size before: |
MSG_SIZE_AFTER = Size after: |
MSG_COFF = Converting to AVR COFF: |
MSG_EXTENDED_COFF = Converting to AVR Extended COFF: |
MSG_FLASH = Creating load file for Flash: |
MSG_EEPROM = Creating load file for EEPROM: |
MSG_EXTENDED_LISTING = Creating Extended Listing: |
MSG_SYMBOL_TABLE = Creating Symbol Table: |
MSG_LINKING = Linking: |
MSG_COMPILING = Compiling: |
MSG_ASSEMBLING = Assembling: |
MSG_CLEANING = Cleaning project: |
# Define all object files. |
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) |
# Define all listing files. |
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) |
# Combine all necessary flags and optional flags. |
# Add target processor to flags. |
#ALL_CFLAGS = -mmcu=$(MCU) -DF_CPU=$(F_CPU) -I. $(CFLAGS) |
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) |
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) |
# Default target. |
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
$(TARGET).lss $(TARGET).sym sizeafter finished end |
# Eye candy. |
# AVR Studio 3.x does not check make's exit code but relies on |
# the following magic strings to be generated by the compile job. |
begin: |
@echo |
@echo $(MSG_BEGIN) |
finished: |
@echo $(MSG_ERRORS_NONE) |
end: |
@echo $(MSG_END) |
@echo |
# Display size of file. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi |
# Display compiler version information. |
gccversion : |
@$(CC) --version |
# Convert ELF to COFF for use in debugging / simulating in |
# AVR Studio or VMLAB. |
COFFCONVERT=$(OBJCOPY) --debugging \ |
--change-section-address .data-0x800000 \ |
--change-section-address .bss-0x800000 \ |
--change-section-address .noinit-0x800000 \ |
--change-section-address .eeprom-0x810000 |
coff: $(TARGET).elf |
@echo |
@echo $(MSG_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof |
extcoff: $(TARGET).elf |
@echo |
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof |
# Program the device. |
program: $(TARGET).hex $(TARGET).eep |
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
# Create final output files (.hex, .eep) from ELF output file. |
%.hex: %.elf |
@echo |
@echo $(MSG_FLASH) $@ |
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ |
%.eep: %.elf |
@echo |
@echo $(MSG_EEPROM) $@ |
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ |
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@ |
# Create extended listing file from ELF output file. |
%.lss: %.elf |
@echo |
@echo $(MSG_EXTENDED_LISTING) $@ |
$(OBJDUMP) -h -S $< > $@ |
# Create a symbol table from ELF output file. |
%.sym: %.elf |
@echo |
@echo $(MSG_SYMBOL_TABLE) $@ |
avr-nm -n $< > $@ |
# Link: create ELF output file from object files. |
.SECONDARY : $(TARGET).elf |
.PRECIOUS : $(OBJ) |
%.elf: $(OBJ) |
@echo |
@echo $(MSG_LINKING) $@ |
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) |
# Compile: create object files from C source files. |
%.o : %.c |
@echo |
@echo $(MSG_COMPILING) $< |
$(CC) -c $(ALL_CFLAGS) $< -o $@ |
# Compile: create assembler files from C source files. |
%.s : %.c |
$(CC) -S $(ALL_CFLAGS) $< -o $@ |
# Assemble: create object files from assembler source files. |
%.o : %.S |
@echo |
@echo $(MSG_ASSEMBLING) $< |
$(CC) -c $(ALL_ASFLAGS) $< -o $@ |
# Target: clean project. |
clean: begin clean_list finished end |
clean_list : |
@echo |
@echo $(MSG_CLEANING) |
# $(REMOVE) $(TARGET).hex |
$(REMOVE) $(TARGET).eep |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).cof |
$(REMOVE) $(TARGET).elf |
$(REMOVE) $(TARGET).map |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).a90 |
$(REMOVE) $(TARGET).sym |
$(REMOVE) $(TARGET).lnk |
$(REMOVE) $(TARGET).lss |
$(REMOVE) $(OBJ) |
$(REMOVE) $(LST) |
$(REMOVE) $(SRC:.c=.s) |
$(REMOVE) $(SRC:.c=.d) |
# Automatically generate C source code dependencies. |
# (Code originally taken from the GNU make user manual and modified |
# (See README.txt Credits).) |
# |
# Note that this will work with sh (bash) and sed that is shipped with WinAVR |
# (see the SHELL variable defined above). |
# This may not work with other shells or other seds. |
# |
%.d: %.c |
set -e; $(CC) -MM $(ALL_CFLAGS) $< \ |
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ |
[ -s $@ ] || rm -f $@ |
# Remove the '-' if you want to see the dependency files generated. |
-include $(SRC:.c=.d) |
# Listing of phony targets. |
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \ |
clean clean_list program |
/branches/FLightCtrl/menu.c |
---|
0,0 → 1,118 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned int TestInt = 0; |
#define ARRAYGROESSE 10 |
unsigned char Array[ARRAYGROESSE] = {1,2,3,4,5,6,7,8,9,10}; |
char DisplayBuff[80] = "Hallo Welt"; |
unsigned char DispPtr = 0; |
unsigned char RemoteTasten = 0; |
#define KEY1 0x01 |
#define KEY2 0x02 |
#define KEY3 0x04 |
#define KEY4 0x08 |
#define KEY5 0x10 |
void LcdClear(void) |
{ |
unsigned char i; |
for(i=0;i<80;i++) DisplayBuff[i] = ' '; |
} |
void Menu(void) |
{ |
static unsigned char MaxMenue = 10,MenuePunkt=0; |
if(RemoteTasten & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue; LcdClear(); } |
if(RemoteTasten & KEY2) { MenuePunkt++; LcdClear(); } |
if((RemoteTasten & KEY1) && (RemoteTasten & KEY2)) MenuePunkt = 0; |
LCD_printfxy(17,0,"[%i]",MenuePunkt); |
switch(MenuePunkt) |
{ |
case 0: |
LCD_printfxy(0,0,"++ MikroKopter ++"); |
LCD_printfxy(0,1,"V%d.%d",VERSION_HAUPTVERSION, VERSION_NEBENVERSION); |
LCD_printfxy(0,2,"Setting: %d ",GetActiveParamSetNumber()); |
LCD_printfxy(0,3,"(c) Holger Buss"); |
// if(RemoteTasten & KEY3) TestInt--; |
// if(RemoteTasten & KEY4) TestInt++; |
break; |
case 1: |
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
LCD_printfxy(0,0,"Hoehe: %5i",HoehenWert); |
LCD_printfxy(0,1,"SollHoehe: %5i",SollHoehe); |
LCD_printfxy(0,2,"Luftdruck: %5i",MessLuftdruck); |
LCD_printfxy(0,3,"Off : %5i",DruckOffsetSetting); |
} |
else |
{ |
LCD_printfxy(0,1,"Keine "); |
LCD_printfxy(0,2,"Höhenregelung"); |
} |
break; |
case 2: |
LCD_printfxy(0,0,"akt. Lage"); |
LCD_printfxy(0,1,"Nick: %5i",IntegralNick/1024); |
LCD_printfxy(0,2,"Roll: %5i",IntegralRoll/1024); |
LCD_printfxy(0,3,"Kompass: %5i",KompassValue); |
break; |
case 3: |
LCD_printfxy(0,0,"K1:%4i K2:%4i ",PPM_in[1],PPM_in[2]); |
LCD_printfxy(0,1,"K3:%4i K4:%4i ",PPM_in[3],PPM_in[4]); |
LCD_printfxy(0,2,"K5:%4i K6:%4i ",PPM_in[5],PPM_in[6]); |
LCD_printfxy(0,3,"K7:%4i Kanäle ",PPM_in[7]); |
break; |
case 4: |
LCD_printfxy(0,0,"Ni:%4i Ro:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_NICK]],PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]); |
LCD_printfxy(0,1,"Gs:%4i Gi:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_GAS]],PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]); |
LCD_printfxy(0,2,"P1:%4i P2:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]],PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]]); |
LCD_printfxy(0,3,"P3:%4i Kanäle ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]]); |
break; |
case 5: |
LCD_printfxy(0,0,"Gyro - Sensor"); |
LCD_printfxy(0,1,"Nick %4i (%3i)",AccumulateNick / MessanzahlNick, AdNeutralNick); |
LCD_printfxy(0,2,"Roll %4i (%3i)",AccumulateRoll / MessanzahlRoll, AdNeutralRoll); |
LCD_printfxy(0,3,"Gier %4i (%3i)",AccumulateGier / MessanzahlGier, AdNeutralGier); |
break; |
case 6: |
LCD_printfxy(0,0,"ACC - Sensor"); |
LCD_printfxy(0,1,"Nick %4i (%3i)",accumulate_AccNick / messanzahl_AccNick,NeutralAccX); |
LCD_printfxy(0,2,"Roll %4i (%3i)",accumulate_AccRoll / messanzahl_AccRoll,NeutralAccY); |
LCD_printfxy(0,3,"Hoch %4i (%3i)",Aktuell_az/*accumulate_AccHoch / messanzahl_AccHoch*/,(int)NeutralAccZ); |
break; |
case 7: |
LCD_printfxy(0,1,"Spannung: %5i",UBat); |
LCD_printfxy(0,2,"Empf.Pegel:%5i",SenderOkay); |
break; |
case 8: |
LCD_printfxy(0,0,"Kompass "); |
LCD_printfxy(0,1,"Richtung: %5i",KompassRichtung); |
LCD_printfxy(0,2,"Messwert: %5i",KompassValue); |
LCD_printfxy(0,3,"Start: %5i",KompassStartwert); |
break; |
case 9: |
LCD_printfxy(0,0,"Poti1: %3i",Poti1); |
LCD_printfxy(0,1,"Poti2: %3i",Poti2); |
LCD_printfxy(0,2,"Poti3: %3i",Poti3); |
LCD_printfxy(0,3,"Poti4: %3i",Poti4); |
break; |
case 10: |
LCD_printfxy(0,0,"Servo " ); |
LCD_printfxy(0,1,"Setpoint %3i",Parameter_ServoNickControl); |
LCD_printfxy(0,2,"Stellung: %3i",ServoValue); |
LCD_printfxy(0,3,"Range:%3i-%3i",EE_Parameter.ServoNickMin,EE_Parameter.ServoNickMax); |
break; |
default: MaxMenue = MenuePunkt - 1; |
MenuePunkt = 0; |
break; |
} |
RemoteTasten = 0; |
} |
/branches/FLightCtrl/menu.h |
---|
0,0 → 1,5 |
extern void Menu(void); |
extern char DisplayBuff[80]; |
extern unsigned char DispPtr; |
unsigned char RemoteTasten; |
/branches/FLightCtrl/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/FLightCtrl/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/FLightCtrl/printf_P.h |
---|
0,0 → 1,19 |
#ifndef _PRINTF_P_H_ |
#define _PRINTF_P_H_ |
#include <avr/pgmspace.h> |
#define OUT_V24 0 |
#define OUT_LCD 1 |
extern void _printf_P (char, char const *fmt0, ...); |
extern char PrintZiel; |
#define printf_P(format, args...) _printf_P(OUT_V24,format , ## args) |
#define printf(format, args...) _printf_P(OUT_V24,PSTR(format) , ## args) |
#define LCD_printfxy(x,y,format, args...) { DispPtr = y * 20 + x; _printf_P(OUT_LCD,PSTR(format) , ## args);} |
#define LCD_printf(format, args...) { _printf_P(OUT_LCD,PSTR(format) , ## args);} |
#endif |
/branches/FLightCtrl/rc.c |
---|
0,0 → 1,85 |
/*####################################################################################### |
Decodieren eines RC Summen Signals |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "rc.h" |
#include "main.h" |
volatile int PPM_in[11]; |
volatile int PPM_diff[11]; // das diffenzierte Stick-Signal |
volatile unsigned char NewPpmData = 1; |
//############################################################################ |
//zum decodieren des PPM-Signals wird Timer1 mit seiner Input |
//Capture Funktion benutzt: |
void rc_sum_init (void) |
//############################################################################ |
{ |
TCCR1B=(1<<CS11)|(1<<CS10)|(1<<ICES1)|(1<<ICNC1);//|(1 << WGM12); //timer1 prescale 64 |
// PWM |
//TCCR1A = (1 << COM1B1) | (1 << WGM11) | (1 << WGM10); |
//TCCR1B |= (1 << WGM12); |
//OCR1B = 55; |
TIMSK1 |= _BV(ICIE1); |
AdNeutralGier = 0; |
AdNeutralRoll = 0; |
AdNeutralNick = 0; |
return; |
} |
//############################################################################ |
//Diese Routine startet und inizialisiert den Timer für RC |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int AltICR=0; |
signed int signal = 0; |
static int index; |
signal = (unsigned int) ICR1 - AltICR; |
AltICR = ICR1; |
//Syncronisationspause? |
if ((signal > 1500) && (signal < 8000)) |
{ |
index = 1; |
NewPpmData = 0; // Null bedeutet: Neue Daten |
// OCR2A = Poti2/2 + 80; |
} |
else |
{ |
if(index < 10) |
{ |
if((signal > 250) && (signal < 687)) |
{ |
signal -= 466; |
// Stabiles Signal |
if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10;} |
signal = (3 * (PPM_in[index]) + signal) / 4; |
//373 entspricht ca. 1.5ms also Mittelstellung |
PPM_diff[index] = signal - PPM_in[index]; |
PPM_in[index] = signal; |
} |
index++; |
/* if(index == 5) PORTD |= 0x20; else PORTD &= ~0x20; // Servosignal an J3 anlegen |
if(index == 6) PORTD |= 0x10; else PORTD &= ~0x10; // Servosignal an J4 anlegen |
if(index == 7) PORTD |= 0x08; else PORTD &= ~0x08; // Servosignal an J5 anlegen */ |
} |
} |
} |
/branches/FLightCtrl/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/FLightCtrl/timer0.c |
---|
0,0 → 1,139 |
#include "main.h" |
volatile unsigned int CountMilliseconds = 0; |
volatile static unsigned int tim_main; |
volatile unsigned char UpdateMotor = 0; |
volatile unsigned int cntKompass = 0; |
volatile unsigned int beeptime = 0; |
int ServoValue = 0; |
enum { |
STOP = 0, |
CK = 1, |
CK8 = 2, |
CK64 = 3, |
CK256 = 4, |
CK1024 = 5, |
T0_FALLING_EDGE = 6, |
T0_RISING_EDGE = 7 |
}; |
SIGNAL (SIG_OVERFLOW0) // 8kHz |
{ |
static unsigned char cnt_1ms = 1,cnt = 0; |
// TCNT0 -= 250;//TIMER_RELOAD_VALUE; |
if(!cnt--) |
{ |
cnt = 9; |
cnt_1ms++; |
cnt_1ms %= 2; |
if(!cnt_1ms) UpdateMotor = 1; |
CountMilliseconds++; |
if(Timeout) Timeout--; |
} |
if(beeptime > 1) |
{ |
beeptime--; |
PORTD |= (1<<2); |
} |
else |
PORTD &= ~(1<<2); |
if(EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV) |
{ |
if(PINC & 0x10) |
{ |
cntKompass++; |
} |
else |
{ |
if((cntKompass) && (cntKompass < 4000)) |
{ |
KompassValue = cntKompass; |
} |
// if(cntKompass < 10) cntKompass = 10; |
// KompassValue = (unsigned long)((unsigned long)(cntKompass-10)*720L + 1L) / 703L; |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
cntKompass = 0; |
} |
} |
} |
void Timer_Init(void) |
{ |
tim_main = SetDelay(10); |
TCCR0B = CK8; |
TCCR0A = (1<<COM0A1)|(1<<COM0B1)|3;//fast PWM |
OCR0A = 0; |
OCR0B = 120; |
TCNT0 = -TIMER_RELOAD_VALUE; // reload |
//OCR1 = 0x00; |
TCCR2A=(1<<COM2A1)|(1<<COM2A0)|3; |
TCCR2B=(0<<CS20)|(1<<CS21)|(1<<CS22); |
// TIMSK2 |= _BV(TOIE2); |
TIMSK2 |= _BV(OCIE2A); |
TIMSK0 |= _BV(TOIE0); |
OCR2A = 10; |
TCNT2 = 0; |
} |
// ----------------------------------------------------------------------- |
unsigned int SetDelay (unsigned int t) |
{ |
// TIMSK0 &= ~_BV(TOIE0); |
return(CountMilliseconds + t + 1); |
// TIMSK0 |= _BV(TOIE0); |
} |
// ----------------------------------------------------------------------- |
char CheckDelay(unsigned int t) |
{ |
// TIMSK0 &= ~_BV(TOIE0); |
return(((t - CountMilliseconds) & 0x8000) >> 9); |
// TIMSK0 |= _BV(TOIE0); |
} |
// ----------------------------------------------------------------------- |
void Delay_ms(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)); |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Servo ansteuern |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(SIG_OUTPUT_COMPARE2A) |
{ |
static unsigned char timer = 10; |
if(!timer--) |
{ |
TCCR2A=(1<<COM2A1)|(0<<COM2A0)|3; |
ServoValue = Parameter_ServoNickControl; |
if(EE_Parameter.ServoNickCompInvert & 0x01) ServoValue += ((long) EE_Parameter.ServoNickComp * (IntegralNick / 128)) / 512; |
else ServoValue -= ((long) EE_Parameter.ServoNickComp * (IntegralNick / 128)) / 512; |
if(ServoValue < EE_Parameter.ServoNickMin) ServoValue = EE_Parameter.ServoNickMin; |
else if(ServoValue > EE_Parameter.ServoNickMax) ServoValue = EE_Parameter.ServoNickMax; |
DebugOut.Analog[10] = ServoValue; |
OCR2A = ServoValue;// + 75; |
timer = EE_Parameter.ServoNickRefresh; |
} |
else |
{ |
TCCR2A =3; |
PORTD&=~0x80; |
} |
} |
/branches/FLightCtrl/timer0.h |
---|
0,0 → 1,14 |
#define TIMER_TEILER CK8 |
#define TIMER_RELOAD_VALUE 250 |
void Timer_Init(void); |
void Delay_ms(unsigned int); |
unsigned int SetDelay (unsigned int t); |
char CheckDelay (unsigned int t); |
extern volatile unsigned int CountMilliseconds; |
extern volatile unsigned char UpdateMotor; |
extern volatile unsigned int beeptime; |
extern volatile unsigned int cntKompass; |
extern int ServoValue; |
/branches/FLightCtrl/twimaster.c |
---|
0,0 → 1,131 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
unsigned char twi_state = 0; |
unsigned char motor = 0; |
unsigned char motorread = 0; |
unsigned char motor_rx[8]; |
//############################################################################ |
//Initzialisieren der I2C (TWI) Schnittstelle |
void i2c_init(void) |
//############################################################################ |
{ |
TWSR = 0; |
TWBR = ((SYSCLK/SCL_CLOCK)-16)/2; |
} |
//############################################################################ |
//Start I2C |
char i2c_start(void) |
//############################################################################ |
{ |
TWCR = (1<<TWSTA) | (1<<TWEN) | (1<<TWINT) | (1<<TWIE); |
return(0); |
} |
//############################################################################ |
//Start I2C |
void i2c_stop(void) |
//############################################################################ |
{ |
TWCR = (1<<TWEN) | (1<<TWSTO) | (1<<TWINT); |
} |
//############################################################################ |
//Start I2C |
char i2c_write_byte(char byte) |
//############################################################################ |
{ |
TWSR = 0x00; |
TWDR = byte; |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE); |
return(0); |
} |
//############################################################################ |
//Start I2C |
SIGNAL (TWI_vect) |
//############################################################################ |
{ |
switch (twi_state++) |
{ |
case 0: |
i2c_write_byte(0x52+(motor*2)); |
break; |
case 1: |
switch(motor++) |
{ |
case 0: |
i2c_write_byte(Motor_Vorne); |
break; |
case 1: |
i2c_write_byte(Motor_Hinten); |
break; |
case 2: |
i2c_write_byte(Motor_Rechts); |
break; |
case 3: |
i2c_write_byte(Motor_Links); |
break; |
} |
break; |
case 2: |
i2c_stop(); |
if (motor<4) twi_state = 0; |
else motor = 0; |
i2c_start(); |
break; |
//Liest Daten von Motor |
case 3: |
i2c_write_byte(0x53+(motorread*2)); |
break; |
case 4: |
switch(motorread) |
{ |
case 0: |
i2c_write_byte(Motor_Vorne); |
break; |
case 1: |
i2c_write_byte(Motor_Hinten); |
break; |
case 2: |
i2c_write_byte(Motor_Rechts); |
break; |
case 3: |
i2c_write_byte(Motor_Links); |
break; |
} |
break; |
case 5: //1 Byte vom Motor lesen |
motor_rx[motorread] = TWDR; |
case 6: |
switch(motorread) |
{ |
case 0: |
i2c_write_byte(Motor_Vorne); |
break; |
case 1: |
i2c_write_byte(Motor_Hinten); |
break; |
case 2: |
i2c_write_byte(Motor_Rechts); |
break; |
case 3: |
i2c_write_byte(Motor_Links); |
break; |
} |
break; |
case 7: //2 Byte vom Motor lesen |
motor_rx[motorread+4] = TWDR; |
motorread++; |
if (motorread>3) motorread=0; |
i2c_stop(); |
twi_state = 0; |
} |
} |
/branches/FLightCtrl/twimaster.h |
---|
0,0 → 1,32 |
/*############################################################################ |
############################################################################*/ |
#ifndef _I2C_MASTER_H |
#define _I2C_MASTER_H |
//############################################################################ |
// I2C Konstanten |
#define SCL_CLOCK 200000L |
#define I2C_TIMEOUT 30000 |
#define I2C_START 0x08 |
#define I2C_REPEATED_START 0x10 |
#define I2C_TX_SLA_ACK 0x18 |
#define I2C_TX_DATA_ACK 0x28 |
#define I2C_RX_SLA_ACK 0x40 |
#define I2C_RX_DATA_ACK 0x50 |
//############################################################################ |
extern unsigned char twi_state; |
extern unsigned char motor; |
extern unsigned char motorread; |
extern unsigned char motor_rx[8]; |
void i2c_init (void); // I2C initialisieren |
char i2c_start (void); // Start I2C |
void i2c_stop (void); // Stop I2C |
char i2c_write_byte (char byte); // 1 Byte schreiben |
#endif |
/branches/FLightCtrl/uart.c |
---|
0,0 → 1,328 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "uart.h" |
unsigned char DebugGetAnforderung = 0,DebugDisplayAnforderung = 0,DebugDataAnforderung = 0,GetVersionAnforderung = 0; |
unsigned volatile char SioTmp = 0; |
unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NMEABuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NeuerDatensatzEmpfangen = 0; |
unsigned volatile char NeueKoordinateEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned volatile char CntCrcError = 0; |
unsigned volatile char AnzahlEmpfangsBytes = 0; |
unsigned volatile char PC_DebugTimeout = 0; |
unsigned char PcZugriff = 100; |
unsigned char MotorTest[4] = {0,0,0,0}; |
unsigned char MeineSlaveAdresse; |
struct str_DebugOut DebugOut; |
struct str_Debug DebugIn; |
struct str_VersionInfo VersionInfo; |
int Debug_Timer; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Sende-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_TX) |
{ |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!UebertragungAbgeschlossen) |
{ |
ptr++; // die [0] wurde schon gesendet |
tmp_tx = SendeBuffer[ptr]; |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
{ |
ptr = 0; |
UebertragungAbgeschlossen = 1; |
} |
UDR = tmp_tx; |
} |
else ptr = 0; |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung, incl. CRC-Auswertung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
SioTmp = UDR; |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
if(SioTmp == '\r' && UartState == 2) |
{ |
UartState = 0; |
crc -= RxdBuffer[buf_ptr-2]; |
crc -= RxdBuffer[buf_ptr-1]; |
crc %= 4096; |
crc1 = '=' + crc / 64; |
crc2 = '=' + crc % 64; |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; CntCrcError++;}; |
if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet |
{ |
NeuerDatensatzEmpfangen = 1; |
AnzahlEmpfangsBytes = buf_ptr; |
RxdBuffer[buf_ptr] = '\r'; |
if(/*(RxdBuffer[1] == MeineSlaveAdresse || (RxdBuffer[1] == 'a')) && */(RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando |
} |
} |
else |
switch(UartState) |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc = SioTmp; |
break; |
case 1: // Adresse auswerten |
UartState++; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
else UartState = 0; |
crc += SioTmp; |
break; |
default: |
UartState = 0; |
break; |
} |
} |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
{ |
tmpCRC += SendeBuffer[i]; |
} |
tmpCRC %= 4096; |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
SendeBuffer[i++] = '\r'; |
UebertragungAbgeschlossen = 0; |
UDR = SendeBuffer[0]; |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
SendeBuffer[pt++] = '#'; // Startzeichen |
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...) |
SendeBuffer[pt++] = cmd; // Commando |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
} |
AddCRC(pt); |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
} |
} |
// -------------------------------------------------------------------------- |
void BearbeiteRxDaten(void) |
{ |
if(!NeuerDatensatzEmpfangen) return; |
unsigned int tmp_int_arr1[1]; |
unsigned int tmp_int_arr2[2]; |
unsigned int tmp_int_arr3[3]; |
unsigned char tmp_char_arr2[2]; |
unsigned char tmp_char_arr3[3]; |
unsigned char tmp_char_arr4[4]; |
//if(!MotorenEin) |
PcZugriff = 255; |
switch(RxdBuffer[2]) |
{ |
case 'c':// Debugdaten incl. Externe IOs usw |
Decode64((unsigned char *) &DebugIn,sizeof(DebugIn),3,AnzahlEmpfangsBytes); |
/* for(unsigned char i=0; i<4;i++) |
{ |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2], DebugIn.Analog[i]); |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2 + 1], DebugIn.Analog[i] >> 8); |
}*/ |
RemoteTasten |= DebugIn.RemoteTasten; |
DebugDataAnforderung = 1; |
break; |
case 'h':// x-1 Displayzeilen |
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes); |
RemoteTasten |= tmp_char_arr2[0]; |
DebugDisplayAnforderung = 1; |
break; |
case 't':// Motortest |
Decode64((unsigned char *) &MotorTest[0],sizeof(MotorTest),3,AnzahlEmpfangsBytes); |
break; |
case 'v': // Version-Anforderung und Ausbaustufe |
GetVersionAnforderung = 1; |
break; |
case 'g':// "Get"-Anforderung für Debug-Daten |
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
DebugGetAnforderung = 1; |
break; |
case 'q':// "Get"-Anforderung für Settings |
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes); |
if(tmp_char_arr2[0] != 0xff) |
{ |
if(tmp_char_arr2[0] > 5) tmp_char_arr2[0] = 5; |
ReadParameterSet(tmp_char_arr2[0], (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
SendOutData('L' + tmp_char_arr2[0] -1,MeineSlaveAdresse,(unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE); |
} |
else |
SendOutData('L' + GetActiveParamSetNumber()-1,MeineSlaveAdresse,(unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE); |
break; |
case 'l': |
case 'm': |
case 'n': |
case 'o': |
case 'p': // Parametersatz speichern |
Decode64((unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE,3,AnzahlEmpfangsBytes); |
WriteParameterSet(RxdBuffer[2] - 'l' + 1, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], RxdBuffer[2] - 'l' + 1); // aktiven Datensatz merken |
Piep(GetActiveParamSetNumber()); |
break; |
} |
// DebugOut.AnzahlZyklen = Debug_Timer_Intervall; |
NeuerDatensatzEmpfangen = 0; |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
if (c == '\n') |
uart_putchar('\r'); |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
//Ausgabe des Zeichens |
UDR = c; |
return (0); |
} |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
//if (ProgramLocation == IN_RAM) Buffer[pos] = wert; |
// else eeprom_write_byte(&EE_Buffer[pos], wert); |
// Buffer[pos] = wert; |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); |
// TX-Interrupt Freigabe |
UCSRB |= (1<<TXCIE); |
//Teiler wird gesetzt |
UBRR=(SYSCLK / (BAUD_RATE * 8L) - 1); |
//UBRR = 33; |
//öffnet einen Kanal für printf (STDOUT) |
//fdevopen (uart_putchar, 0); |
//sbi(PORTD,4); |
Debug_Timer = SetDelay(200); |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
static char dis_zeile = 0; |
if(!UebertragungAbgeschlossen) return; |
if(DebugGetAnforderung && UebertragungAbgeschlossen) // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
{ |
SendOutData('G',MeineSlaveAdresse,(unsigned char *) &DebugIn,sizeof(DebugIn)); |
DebugGetAnforderung = 0; |
} |
if((CheckDelay(Debug_Timer) || DebugDataAnforderung) && UebertragungAbgeschlossen) |
{ |
SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut)); |
DebugDataAnforderung = 0; |
Debug_Timer = SetDelay(MIN_DEBUG_INTERVALL); |
} |
if(DebugDisplayAnforderung && UebertragungAbgeschlossen) |
{ |
Menu(); |
DebugDisplayAnforderung = 0; |
if(++dis_zeile == 4) dis_zeile = 0; |
SendOutData('0' + dis_zeile,0,&DisplayBuff[20 * dis_zeile],20); // DisplayZeile übertragen |
} |
if(GetVersionAnforderung && UebertragungAbgeschlossen) |
{ |
SendOutData('V',MeineSlaveAdresse,(unsigned char *) &VersionInfo,sizeof(VersionInfo)); |
GetVersionAnforderung = 0; |
} |
} |
/branches/FLightCtrl/uart.h |
---|
0,0 → 1,93 |
#ifndef _UART_H |
#define _UART_H |
#define MAX_SENDE_BUFF 150 |
#define MAX_EMPFANGS_BUFF 150 |
extern unsigned char DebugGetAnforderung; |
extern unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
extern unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
extern unsigned volatile char UebertragungAbgeschlossen; |
extern unsigned volatile char PC_DebugTimeout; |
extern unsigned volatile char NeueKoordinateEmpfangen; |
extern unsigned char MeineSlaveAdresse; |
extern unsigned char PcZugriff; |
extern int Debug_Timer; |
extern void UART_Init (void); |
extern int uart_putchar (char c); |
extern void boot_program_page (uint32_t page, uint8_t *buf); |
extern void DatenUebertragung(void); |
extern void DecodeNMEA(void); |
extern unsigned char MotorTest[4]; |
struct str_DebugOut |
{ |
unsigned char Digital[13]; |
unsigned int AnzahlZyklen; |
unsigned int Zeit; |
unsigned char Sekunden; |
unsigned int Analog[16]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
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/FLightCtrl/version.txt |
---|
0,0 → 1,49 |
------- |
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 |
/branches/Flight-Ctrl/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/Flight-Ctrl/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/Flight-Ctrl/Settings.h |
---|
--- Flight-Ctrl/_Settings.h (nonexistent) |
+++ Flight-Ctrl/_Settings.h (revision 171) |
@@ -0,0 +1,55 @@ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Testmodi |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define MOTOR_OFF 0 |
+#define MOTOR_TEST 0 |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Abstimmung |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define ACC_AMPLIFY 16 |
+#define FAKTOR_P 1 |
+#define FAKTOR_I 0.0001 |
+ |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Debug-Interface |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define SIO_DEBUG 1 // Soll der Debugger aktiviert sein? |
+#define MIN_DEBUG_INTERVALL 250 // in diesem Intervall werden Degugdaten ohne Aufforderung gesendet |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Sender |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ #define K_NICK 0 |
+ #define K_ROLL 1 |
+ #define K_GAS 2 |
+ #define K_GIER 3 |
+ #define K_POTI1 4 |
+ #define K_POTI2 5 |
+ #define K_POTI3 6 |
+ #define K_POTI4 7 |
+ #define K_POTI5 8 |
+ #define K_POTI6 9 |
+ #define K_POTI7 10 |
+ #define K_POTI8 11 |
+ |
+// +++++++++++++++++++++++++++++++ |
+// + 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/Flight-Ctrl/analog.c |
---|
0,0 → 1,155 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az, UBat = 100; |
volatile int AccumulateNick = 0, AccumulateRoll = 0, AccumulateGier = 0; |
volatile int accumulate_AccRoll = 0,accumulate_AccNick = 0,accumulate_AccHoch = 0; |
volatile char MessanzahlNick = 0, MessanzahlRoll = 0, MessanzahlGier = 0; |
volatile char messanzahl_AccNick = 0, messanzahl_AccRoll = 0, messanzahl_AccHoch = 0; |
volatile long Luftdruck = 32000; |
volatile int StartLuftdruck; |
volatile unsigned int MessLuftdruck = 1023; |
unsigned char DruckOffsetSetting; |
volatile int HoeheD = 0; |
volatile char messanzahl_Druck; |
volatile int tmpLuftdruck; |
volatile unsigned int ZaehlMessungen = 0; |
//####################################################################################### |
// |
void ADC_Init(void) |
//####################################################################################### |
{ |
ADMUX = 0;//Referenz ist extern |
ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE); |
//Free Running Mode, Division Factor 128, Interrupt on |
} |
void SucheLuftruckOffset(void) |
{ |
unsigned int off; |
for(off=0; off < 250;off++) |
{ |
OCR0A = off; |
Delay_ms(50); |
printf("."); |
if(MessLuftdruck < 900) break; |
} |
DruckOffsetSetting = off; |
Delay_ms(200); |
} |
//####################################################################################### |
// |
SIGNAL(SIG_ADC) |
//####################################################################################### |
{ |
static unsigned char kanal=0,state = 0; |
signed int wert; |
ANALOG_OFF; |
switch(state++) |
{ |
case 0: |
wert = (signed int) AdNeutralGier - ADC; |
AccumulateGier += wert; // |
MessanzahlGier++; |
Mess_Integral_Gier += wert;// / 16; |
Mess_Integral_Gier2 += wert; |
kanal = 1; |
ZaehlMessungen++; |
break; |
case 1: |
wert = (signed int) ADC - AdNeutralRoll; |
Mess_IntegralRoll += wert; |
Mess_IntegralRoll2 += wert; |
if(ADC < 10) wert = -700; |
if(ADC > 1000) wert = +700; |
AccumulateRoll += wert; |
MessanzahlRoll++; |
kanal = 2; |
break; |
case 2: |
wert = (signed int) ADC - AdNeutralNick; |
Mess_IntegralNick += wert; |
Mess_IntegralNick2 += wert; |
if(ADC < 10) wert = -700; |
if(ADC > 1000) wert = +700; |
AccumulateNick += wert; |
MessanzahlNick++; |
kanal = 4; |
break; |
case 3: |
UBat = (3 * UBat + ADC / 3) / 4;//(UBat + ((ADC * 39) / 256) + 19) / 2; |
kanal = 6; |
break; |
case 4: |
Aktuell_ay = NeutralAccY - ADC; |
accumulate_AccRoll += Aktuell_ay; |
messanzahl_AccRoll++; |
kanal = 7; |
break; |
case 5: |
Aktuell_ay = ADC - NeutralAccX; |
accumulate_AccNick += Aktuell_ay; |
messanzahl_AccNick++; |
kanal = 5; |
state = 6; |
break; |
case 6: |
accumulate_AccHoch = (signed int) ADC - NeutralAccZ; |
accumulate_AccHoch += abs(Aktuell_ay) / 4 + abs(Aktuell_ax) / 4; |
if(accumulate_AccHoch > 1) |
{ |
if(NeutralAccZ < 800) NeutralAccZ+= 0.02; |
} |
else if(accumulate_AccHoch < -1) |
{ |
if(NeutralAccZ > 600) NeutralAccZ-= 0.02; |
} |
messanzahl_AccHoch = 1; |
Aktuell_az = ADC; |
Mess_Integral_Hoch += accumulate_AccHoch; // Integrieren |
Mess_Integral_Hoch -= Mess_Integral_Hoch / 1024; // dämfen |
// Mess_Integral_Hoch -= Mess_Integral_Hoch / 512; // dämfen |
/* if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
kanal = 3; |
state = 7; |
} |
else |
{ |
kanal = 0; |
state = 0; |
}*/ |
kanal = 3; |
state = 7; |
break; |
case 7: |
tmpLuftdruck += ADC; |
if(++messanzahl_Druck >= 5) |
{ |
MessLuftdruck = ADC; |
messanzahl_Druck = 0; |
HoeheD = (int)(StartLuftdruck - tmpLuftdruck - HoehenWert); // D-Anteil = neuerWert - AlterWert |
Luftdruck = (tmpLuftdruck + 3 * Luftdruck) / 4; |
HoehenWert = StartLuftdruck - Luftdruck; |
tmpLuftdruck = 0; |
} |
kanal = 0; |
state = 0; |
break; |
default: |
kanal = 0; |
state = 0; |
break; |
} |
ADMUX = kanal; |
ANALOG_ON; |
} |
/branches/Flight-Ctrl/analog.h |
---|
0,0 → 1,23 |
/*####################################################################################### |
#######################################################################################*/ |
extern volatile int UBat; |
extern volatile int AccumulateNick, AccumulateRoll, AccumulateGier,accumulate_AccRoll,accumulate_AccNick,accumulate_AccHoch; |
extern volatile char MessanzahlNick, MessanzahlRoll, MessanzahlGier,messanzahl_AccNick, messanzahl_AccRoll,messanzahl_AccHoch; |
extern volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az; |
extern volatile long Luftdruck; |
extern volatile char messanzahl_Druck; |
extern volatile unsigned int ZaehlMessungen; |
extern unsigned char DruckOffsetSetting; |
extern volatile int HoeheD; |
extern volatile unsigned int MessLuftdruck; |
extern volatile int StartLuftdruck; |
extern unsigned int ReadADC(unsigned char adc_input); |
extern void ADC_Init(void); |
extern void SucheLuftruckOffset(void); |
#define ANALOG_OFF ADCSRA=0 |
#define ANALOG_ON ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE) |
/branches/Flight-Ctrl/eeprom.c |
---|
--- Flight-Ctrl/fc.c (nonexistent) |
+++ Flight-Ctrl/fc.c (revision 171) |
@@ -0,0 +1,845 @@ |
+/*####################################################################################### |
+Flight Control |
+#######################################################################################*/ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Copyright (c) 04.2007 Holger Buss |
+// + Nur für den privaten Gebrauch |
+// + www.MikroKopter.com |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
+// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
+// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
+// + bzgl. der Nutzungsbedingungen aufzunehmen. |
+// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
+// + Verkauf von Luftbildaufnahmen, usw. |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
+// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
+// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
+// + eindeutig als Ursprung verlinkt werden |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
+// + Benutzung auf eigene Gefahr |
+// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
+// + mit unserer Zustimmung zulässig |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
+// + this list of conditions and the following disclaimer. |
+// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
+// + from this software without specific prior written permission. |
+// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
+// + for non-commercial use (directly or indirectly) |
+// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
+// + with our written permission |
+// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
+// + clearly linked as origin |
+// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
+// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
+// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
+// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
+// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
+// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
+// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
+// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
+// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
+// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
+// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
+// + POSSIBILITY OF SUCH DAMAGE. |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+#include "main.h" |
+ |
+unsigned char h,m,s; |
+volatile unsigned char Timeout = 0; |
+volatile int MesswertNick,MesswertRoll,MesswertGier; |
+volatile int AdNeutralNick = 0,AdNeutralRoll = 0,AdNeutralGier = 0; |
+volatile int Mittelwert_AccNick, Mittelwert_AccRoll,Mittelwert_AccHoch, NeutralAccX=0, NeutralAccY=0; |
+volatile float NeutralAccZ = 0; |
+unsigned char CosinusNickWinkel = 0, CosinusRollWinkel = 0; |
+volatile long IntegralNick = 0,IntegralNick2 = 0; |
+volatile long IntegralRoll = 0,IntegralRoll2 = 0; |
+volatile long Integral_Gier = 0; |
+volatile long Mess_IntegralNick = 0,Mess_IntegralNick2 = 0; |
+volatile long Mess_IntegralRoll = 0,Mess_IntegralRoll2 = 0; |
+volatile long Mess_Integral_Gier = 0,Mess_Integral_Gier2 = 0; |
+volatile long Mess_Integral_Hoch = 0; |
+volatile int KompassValue = 0; |
+volatile int KompassStartwert = 0; |
+volatile int KompassRichtung = 0; |
+unsigned char MAX_GAS,MIN_GAS; |
+unsigned char Notlandung = 0; |
+unsigned char HoehenReglerAktiv = 0; |
+ |
+float GyroFaktor; |
+float IntegralFaktor; |
+ |
+volatile int DiffNick,DiffRoll; |
+int Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0,Poti5 = 0, Poti6 = 0, Poti7 = 0, Poti8 = 0; |
+volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count; |
+unsigned char MotorWert[5]; |
+volatile unsigned char SenderOkay = 0; |
+int StickNick = 0,StickRoll = 0,StickGier = 0; |
+char MotorenEin = 0; |
+int HoehenWert = 0; |
+int SollHoehe = 0; |
+ |
+float Kp = FAKTOR_P; |
+float Ki = FAKTOR_I; |
+ |
+unsigned char Parameter_Luftdruck_D = 48; // Wert : 0-250 |
+unsigned char Parameter_MaxHoehe = 251; // Wert : 0-250 |
+unsigned char Parameter_Hoehe_P = 16; // Wert : 0-32 |
+unsigned char Parameter_Hoehe_ACC_Wirkung = 58; // Wert : 0-250 |
+unsigned char Parameter_KompassWirkung = 64; // Wert : 0-250 |
+unsigned char Parameter_Gyro_P = 50; // Wert : 10-250 |
+unsigned char Parameter_Gyro_I = 150; // Wert : 0-250 |
+unsigned char Parameter_Gier_P = 2; // Wert : 1-20 |
+unsigned char Parameter_I_Faktor = 10; // Wert : 1-20 |
+unsigned char Parameter_UserParam1 = 0; |
+unsigned char Parameter_UserParam2 = 0; |
+unsigned char Parameter_UserParam3 = 0; |
+unsigned char Parameter_UserParam4 = 0; |
+unsigned char Parameter_ServoNickControl = 100; |
+struct mk_param_struct EE_Parameter; |
+ |
+void Piep(unsigned char Anzahl) |
+{ |
+ while(Anzahl--) |
+ { |
+ if(MotorenEin) return; //auf keinen Fall im Flug! |
+ beeptime = 100; |
+ Delay_ms(250); |
+ } |
+} |
+ |
+//############################################################################ |
+// Nullwerte ermitteln |
+void SetNeutral(void) |
+//############################################################################ |
+{ |
+ unsigned int timer; |
+ NeutralAccX = 0; |
+ NeutralAccY = 0; |
+ NeutralAccZ = 0; |
+ AdNeutralNick = 0; |
+ AdNeutralRoll = 0; |
+ AdNeutralGier = 0; |
+ CalibrierMittelwert(); |
+ timer = SetDelay(5); |
+ while (!CheckDelay(timer)); |
+ CalibrierMittelwert(); |
+ if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
+ { |
+ if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
+ } |
+ AdNeutralNick= abs(MesswertNick); |
+ AdNeutralRoll= abs(MesswertRoll); |
+ AdNeutralGier= abs(MesswertGier); |
+ NeutralAccY = abs(Mittelwert_AccRoll) / ACC_AMPLIFY; |
+ NeutralAccX = abs(Mittelwert_AccNick) / ACC_AMPLIFY; |
+ NeutralAccZ = Aktuell_az; |
+ |
+ Mess_IntegralNick = 0; |
+ Mess_IntegralNick2 = 0; |
+ Mess_IntegralRoll = 0; |
+ Mess_IntegralRoll2 = 0; |
+ Mess_Integral_Gier = 0; |
+ MesswertNick = 0; |
+ MesswertRoll = 0; |
+ MesswertGier = 0; |
+ StartLuftdruck = Luftdruck; |
+ HoeheD = 0; |
+ Mess_Integral_Hoch = 0; |
+ KompassStartwert = KompassValue; |
+ GPS_Neutral(); |
+ beeptime = 50; |
+} |
+ |
+//############################################################################ |
+// Bildet den Mittelwert aus den Messwerten |
+void Mittelwert(void) |
+//############################################################################ |
+{ |
+ // ADC auschalten, damit die Werte sich nicht während der Berechnung ändern |
+ ANALOG_OFF; |
+ if(MessanzahlNick) (MesswertNick = AccumulateNick / MessanzahlNick); |
+ if(MessanzahlRoll) (MesswertRoll = AccumulateRoll / MessanzahlRoll); |
+ if(MessanzahlGier) (MesswertGier = AccumulateGier / MessanzahlGier); |
+ if(messanzahl_AccNick) Mittelwert_AccNick = ((long)Mittelwert_AccNick * 7 + ((ACC_AMPLIFY * (long)accumulate_AccNick) / messanzahl_AccNick)) / 8L; |
+ if(messanzahl_AccRoll) Mittelwert_AccRoll = ((long)Mittelwert_AccRoll * 7 + ((ACC_AMPLIFY * (long)accumulate_AccRoll) / messanzahl_AccRoll)) / 8L; |
+ if(messanzahl_AccHoch) Mittelwert_AccHoch = ((long)Mittelwert_AccHoch * 7 + ((long)accumulate_AccHoch) / messanzahl_AccHoch) / 8L; |
+ AccumulateNick = 0; MessanzahlNick = 0; |
+ AccumulateRoll = 0; MessanzahlRoll = 0; |
+ AccumulateGier = 0; MessanzahlGier = 0; |
+ accumulate_AccRoll = 0;messanzahl_AccRoll = 0; |
+ accumulate_AccNick = 0;messanzahl_AccNick = 0; |
+ accumulate_AccHoch = 0;messanzahl_AccHoch = 0; |
+ Integral_Gier = Mess_Integral_Gier; |
+// Integral_Gier2 = Mess_Integral_Gier2; |
+ IntegralNick = Mess_IntegralNick; |
+ IntegralRoll = Mess_IntegralRoll; |
+ IntegralNick2 = Mess_IntegralNick2; |
+ IntegralRoll2 = Mess_IntegralRoll2; |
+ // ADC einschalten |
+ ANALOG_ON; |
+ |
+//------------------------------------------------------------------------------ |
+ if(MesswertNick > 200) MesswertNick += 4 * (MesswertNick - 200); |
+ else |
+ if(MesswertNick < -200) MesswertNick += 4 * (MesswertNick + 200); |
+ |
+ if(MesswertRoll > 200) MesswertRoll += 4 * (MesswertRoll - 200); |
+ else |
+ if(MesswertRoll < -200) MesswertRoll += 4 * (MesswertRoll + 200); |
+//------------------------------------------------------------------------------ |
+ if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--; |
+ if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--; |
+ if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--; |
+ if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--; |
+ if(Poti5 < PPM_in[9] + 110) Poti5++; else if(Poti5 > PPM_in[9] + 110 && Poti5) Poti5--; |
+ if(Poti6 < PPM_in[10] + 110) Poti6++; else if(Poti6 > PPM_in[10] + 110 && Poti6) Poti6--; |
+ if(Poti7 < PPM_in[11] + 110) Poti7++; else if(Poti7 > PPM_in[11] + 110 && Poti7) Poti7--; |
+ if(Poti8 < PPM_in[12] + 110) Poti8++; else if(Poti8 > PPM_in[12] + 110 && Poti8) Poti8--; |
+ |
+ |
+ 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; |
+ if(Poti5 < 0) Poti5 = 0; else if(Poti5 > 255) Poti5 = 255; |
+ if(Poti6 < 0) Poti6 = 0; else if(Poti6 > 255) Poti6 = 255; |
+ if(Poti7 < 0) Poti7 = 0; else if(Poti7 > 255) Poti7 = 255; |
+ if(Poti8 < 0) Poti8 = 0; else if(Poti8 > 255) Poti8 = 255; |
+} |
+ |
+//############################################################################ |
+// Messwerte beim Ermitteln der Nullage |
+void CalibrierMittelwert(void) |
+//############################################################################ |
+{ |
+ // ADC auschalten, damit die Werte sich nicht während der Berechnung ändern |
+ ANALOG_OFF; |
+ if(MessanzahlNick) (MesswertNick = AccumulateNick / MessanzahlNick); |
+ if(MessanzahlRoll) (MesswertRoll = AccumulateRoll / MessanzahlRoll); |
+ if(MessanzahlGier) (MesswertGier = AccumulateGier / MessanzahlGier); |
+ if(messanzahl_AccNick) Mittelwert_AccNick = ((ACC_AMPLIFY * (long)accumulate_AccNick) / messanzahl_AccNick); |
+ if(messanzahl_AccRoll) Mittelwert_AccRoll = (ACC_AMPLIFY * (long)accumulate_AccRoll) / messanzahl_AccRoll; |
+ if(messanzahl_AccHoch) Mittelwert_AccHoch = ((long)accumulate_AccHoch) / messanzahl_AccHoch; |
+ AccumulateNick = 0; MessanzahlNick = 0; |
+ AccumulateRoll = 0; MessanzahlRoll = 0; |
+ AccumulateGier = 0; MessanzahlGier = 0; |
+ accumulate_AccRoll = 0;messanzahl_AccRoll = 0; |
+ accumulate_AccNick = 0;messanzahl_AccNick = 0; |
+ accumulate_AccHoch = 0;messanzahl_AccHoch = 0; |
+ // ADC einschalten |
+ ANALOG_ON; |
+ if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--; |
+ if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--; |
+ if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--; |
+ if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--; |
+ if(Poti5 < PPM_in[9] + 110) Poti5++; else if(Poti5 > PPM_in[9] + 110 && Poti5) Poti5--; |
+ if(Poti6 < PPM_in[10] + 110) Poti6++; else if(Poti6 > PPM_in[10] + 110 && Poti6) Poti6--; |
+ if(Poti7 < PPM_in[11] + 110) Poti7++; else if(Poti7 > PPM_in[11] + 110 && Poti7) Poti7--; |
+ if(Poti8 < PPM_in[12] + 110) Poti8++; else if(Poti8 > PPM_in[12] + 110 && Poti8) Poti8--; |
+ |
+ |
+ |
+ |
+ 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; |
+ if(Poti5 < 0) Poti5 = 0; else if(Poti5 > 255) Poti5 = 255; |
+ if(Poti6 < 0) Poti6 = 0; else if(Poti6 > 255) Poti6 = 255; |
+ if(Poti7 < 0) Poti7 = 0; else if(Poti7 > 255) Poti7 = 255; |
+ if(Poti8 < 0) Poti8 = 0; else if(Poti8 > 255) Poti8 = 255; |
+} |
+ |
+//############################################################################ |
+// Senden der Motorwerte per I2C-Bus |
+void SendMotorData(void) |
+//############################################################################ |
+{ |
+ if(MOTOR_OFF || !MotorenEin) |
+ { |
+ Motor_Hinten = 0; |
+ Motor_Vorne = 0; |
+ Motor_Rechts = 0; |
+ Motor_Links = 0; |
+ if(MotorTest[0]) Motor_Vorne = MotorTest[0]; |
+ if(MotorTest[1]) Motor_Hinten = MotorTest[1]; |
+ if(MotorTest[2]) Motor_Links = MotorTest[2]; |
+ if(MotorTest[3]) Motor_Rechts = MotorTest[3]; |
+ } |
+ |
+// DebugOut.Analog[12] = Motor_Vorne; |
+// DebugOut.Analog[13] = Motor_Hinten; |
+// DebugOut.Analog[14] = Motor_Links; |
+// DebugOut.Analog[15] = Motor_Rechts; |
+ |
+ //Start I2C Interrupt Mode |
+ twi_state = 0; |
+ motor = 0; |
+ i2c_start(); |
+} |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Konstanten |
+// + 0-250 -> normale Werte |
+// + 251 -> Poti1 |
+// + 252 -> Poti2 |
+// + 253 -> Poti3 |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+void DefaultKonstanten1(void) |
+{ |
+ EE_Parameter.Kanalbelegung[K_NICK] = 1; |
+ EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
+ EE_Parameter.Kanalbelegung[K_GAS] = 3; |
+ EE_Parameter.Kanalbelegung[K_GIER] = 4; |
+ EE_Parameter.Kanalbelegung[K_POTI1] = 5; |
+ EE_Parameter.Kanalbelegung[K_POTI2] = 6; |
+ EE_Parameter.Kanalbelegung[K_POTI3] = 7; |
+ EE_Parameter.Kanalbelegung[K_POTI4] = 8; |
+ EE_Parameter.Kanalbelegung[K_POTI5] = 9; |
+ EE_Parameter.Kanalbelegung[K_POTI6] = 10; |
+ EE_Parameter.Kanalbelegung[K_POTI7] = 11; |
+ EE_Parameter.Kanalbelegung[K_POTI8] = 12; |
+ |
+ EE_Parameter.GlobalConfig = 0;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV | CFG_KOMPASS_FIX;//0x01; |
+ EE_Parameter.Hoehe_MinGas = 30; |
+ EE_Parameter.MaxHoehe = 251; // Wert : 0-32 251 -> Poti1 |
+ EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
+ EE_Parameter.Luftdruck_D = 70; // Wert : 0-250 |
+ EE_Parameter.Hoehe_ACC_Wirkung = 30; // Wert : 0-250 |
+ EE_Parameter.Hoehe_Verstaerkung = 2; // Wert : 0-50 |
+ EE_Parameter.Stick_P = 4; //2 // Wert : 1-6 |
+ EE_Parameter.Stick_D = 8; //8 // Wert : 0-64 |
+ EE_Parameter.Gier_P = 16; // Wert : 1-20 |
+ EE_Parameter.Gas_Min = 15; // Wert : 0-32 |
+ EE_Parameter.Gas_Max = 250; // Wert : 33-250 |
+ EE_Parameter.GyroAccFaktor = 26; // Wert : 1-64 |
+ EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
+ EE_Parameter.Gyro_P = 120; //80 // Wert : 0-250 |
+ EE_Parameter.Gyro_I = 150; // Wert : 0-250 |
+ EE_Parameter.UnterspannungsWarnung = 90; // Wert : 0-250 |
+ EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
+ EE_Parameter.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
+ EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
+ EE_Parameter.I_Faktor = 5; |
+ EE_Parameter.UserParam1 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam2 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam3 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam4 = 0; //zur freien Verwendung |
+ EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
+ EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
+ EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
+ EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
+ EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
+ EE_Parameter.ServoNickRefresh = 5; |
+ memcpy(EE_Parameter.Name, "Normal\0", 12); |
+} |
+ |
+void DefaultKonstanten2(void) |
+{ |
+ EE_Parameter.Kanalbelegung[K_NICK] = 1; |
+ EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
+ EE_Parameter.Kanalbelegung[K_GAS] = 3; |
+ EE_Parameter.Kanalbelegung[K_GIER] = 4; |
+ EE_Parameter.Kanalbelegung[K_POTI1] = 5; |
+ EE_Parameter.Kanalbelegung[K_POTI2] = 6; |
+ EE_Parameter.Kanalbelegung[K_POTI3] = 7; |
+ EE_Parameter.Kanalbelegung[K_POTI4] = 8; |
+ EE_Parameter.Kanalbelegung[K_POTI5] = 9; |
+ EE_Parameter.Kanalbelegung[K_POTI6] = 10; |
+ EE_Parameter.Kanalbelegung[K_POTI7] = 11; |
+ EE_Parameter.Kanalbelegung[K_POTI8] = 12; |
+ |
+ EE_Parameter.GlobalConfig = 0;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV;//0x01; |
+ EE_Parameter.Hoehe_MinGas = 30; |
+ EE_Parameter.MaxHoehe = 251; // Wert : 0-32 251 -> Poti1 |
+ EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
+ EE_Parameter.Luftdruck_D = 50; // Wert : 0-250 |
+ EE_Parameter.Hoehe_ACC_Wirkung = 50; // Wert : 0-250 |
+ EE_Parameter.Hoehe_Verstaerkung = 2; // Wert : 0-50 |
+ EE_Parameter.Stick_P = 4; //2 // Wert : 1-6 |
+ EE_Parameter.Stick_D = 0; //8 // Wert : 0-64 |
+ EE_Parameter.Gier_P = 16; // Wert : 1-20 |
+ EE_Parameter.Gas_Min = 15; // Wert : 0-32 |
+ EE_Parameter.Gas_Max = 250; // Wert : 33-250 |
+ EE_Parameter.GyroAccFaktor = 26; // Wert : 1-64 |
+ EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
+ EE_Parameter.Gyro_P = 175; //80 // Wert : 0-250 |
+ EE_Parameter.Gyro_I = 175; // Wert : 0-250 |
+ EE_Parameter.UnterspannungsWarnung = 90; // Wert : 0-250 |
+ EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
+ EE_Parameter.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
+ EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
+ EE_Parameter.I_Faktor = 5; |
+ EE_Parameter.UserParam1 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam2 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam3 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam4 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam3 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam4 = 0; //zur freien Verwendung |
+ EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
+ EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
+ EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
+ EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
+ EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
+ EE_Parameter.ServoNickRefresh = 5; |
+ memcpy(EE_Parameter.Name, "Kamera\0", 12); |
+} |
+ |
+ |
+//############################################################################ |
+// Trägt ggf. das Poti als Parameter ein |
+void ParameterZuordnung(void) |
+//############################################################################ |
+{ |
+ |
+ #define CHK_POTI(b,a,min,max) { if(a > 250) { if(a == 251) b = Poti1; else if(a == 252) b = Poti2; else if(a == 253) b = Poti3; else if(a == 254) b = Poti4;} else b = a; if(b <= min) b = min; else if(b >= max) b = max;} |
+ CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe,0,255); |
+ CHK_POTI(Parameter_Luftdruck_D,EE_Parameter.Luftdruck_D,0,100); |
+ CHK_POTI(Parameter_Hoehe_P,EE_Parameter.Hoehe_P,0,100); |
+ CHK_POTI(Parameter_Hoehe_ACC_Wirkung,EE_Parameter.Hoehe_ACC_Wirkung,0,255); |
+ CHK_POTI(Parameter_KompassWirkung,EE_Parameter.KompassWirkung,0,255); |
+ CHK_POTI(Parameter_Gyro_P,EE_Parameter.Gyro_P,10,255); |
+ CHK_POTI(Parameter_Gyro_I,EE_Parameter.Gyro_I,0,255); |
+ CHK_POTI(Parameter_I_Faktor,EE_Parameter.I_Faktor,0,255); |
+ CHK_POTI(Parameter_UserParam1,EE_Parameter.UserParam1,0,255); |
+ CHK_POTI(Parameter_UserParam2,EE_Parameter.UserParam2,0,255); |
+ CHK_POTI(Parameter_UserParam3,EE_Parameter.UserParam3,0,255); |
+ CHK_POTI(Parameter_UserParam4,EE_Parameter.UserParam4,0,255); |
+ |
+ unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
+ unsigned char ServoNickCompInvert; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
+ unsigned char ServoNickMin; // Wert : 0-250 // Anschlag |
+ unsigned char ServoNickMax; // Wert : 0-250 // Anschlag |
+ |
+ |
+ CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
+ CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
+ CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
+ |
+ Ki = (float) Parameter_I_Faktor * 0.0001; |
+ MAX_GAS = EE_Parameter.Gas_Max; |
+ MIN_GAS = EE_Parameter.Gas_Min; |
+} |
+ |
+ |
+//############################################################################ |
+// |
+void MotorRegler(void) |
+//############################################################################ |
+{ |
+ int motorwert,pd_ergebnis,h,tmp_int; |
+ int GierMischanteil,GasMischanteil; |
+ static long SummeNick=0,SummeRoll=0; |
+ static long sollGier = 0,tmp_long,tmp_long2; |
+ static int IntegralFehlerNick = 0; |
+ static int IntegralFehlerRoll = 0; |
+ static unsigned int RcLostTimer; |
+ static unsigned char delay_neutral = 0; |
+ static unsigned char delay_einschalten = 0,delay_ausschalten = 0; |
+ static unsigned int modell_fliegt = 0; |
+ static int hoehenregler = 0; |
+ static char TimerWerteausgabe = 0; |
+ static char NeueKompassRichtungMerken = 0; |
+ Mittelwert(); |
+ |
+ GRN_ON; |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gaswert ermitteln |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ GasMischanteil = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 120; |
+ if(GasMischanteil < 0) GasMischanteil = 0; |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Emfang schlecht |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(SenderOkay < 100) |
+ { |
+ if(!PcZugriff) beeptime = 500; |
+ if(RcLostTimer) RcLostTimer--; |
+ else |
+ { |
+ MotorenEin = 0; |
+ Notlandung = 0; |
+ } |
+ ROT_ON; |
+ if(modell_fliegt > 2000) // wahrscheinlich in der Luft --> langsam absenken |
+ { |
+ GasMischanteil = EE_Parameter.NotGas; |
+ Notlandung = 1; |
+ PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] = 0; |
+ PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] = 0; |
+ PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] = 0; |
+/* Poti1 = 65; |
+ Poti2 = 48; |
+ Poti3 = 0; |
+*/ } |
+ else MotorenEin = 0; |
+ } |
+ else |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Emfang gut |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(SenderOkay > 140) |
+ { |
+ Notlandung = 0; |
+ RcLostTimer = EE_Parameter.NotGasZeit * 50; |
+ if(GasMischanteil > 40) |
+ { |
+ if(modell_fliegt < 0xffff) modell_fliegt++; |
+ } |
+ if((modell_fliegt < 200) || (GasMischanteil < 40)) |
+ { |
+ SummeNick = 0; |
+ SummeRoll = 0; |
+ Mess_Integral_Gier = 0; |
+ Mess_Integral_Gier2 = 0; |
+ } |
+ if((GasMischanteil > 200) && MotorenEin == 0) |
+ { |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// auf Nullwerte kalibrieren |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) // Neutralwerte |
+ { |
+ unsigned char setting; |
+ if(++delay_neutral > 200) // nicht sofort |
+ { |
+ GRN_OFF; |
+ SetNeutral(); |
+ MotorenEin = 0; |
+ delay_neutral = 0; |
+ modell_fliegt = 0; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70 || abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) > 70) |
+ { |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 1; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 2; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5; |
+ eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], setting); // aktiven Datensatz merken |
+ } |
+ ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
+ Piep(GetActiveParamSetNumber()); |
+ if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
+ { |
+ if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
+ } |
+ } |
+ } |
+ else delay_neutral = 0; |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gas ist unten |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(GasMischanteil < 35) |
+ { |
+ // Starten |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75) |
+ { |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Einschalten |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(++delay_einschalten > 200) |
+ { |
+ delay_einschalten = 200; |
+ modell_fliegt = 1; |
+ MotorenEin = 1; |
+ sollGier = 0; |
+ Mess_Integral_Gier = 0; |
+ Mess_Integral_Gier2 = 0; |
+ Mess_IntegralNick = 0; |
+ Mess_IntegralRoll = 0; |
+ Mess_IntegralNick2 = IntegralNick; |
+ Mess_IntegralRoll2 = IntegralRoll; |
+ SummeNick = 0; |
+ SummeRoll = 0; |
+ } |
+ } |
+ else delay_einschalten = 0; |
+ //Auf Neutralwerte setzen |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Auschalten |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) |
+ { |
+ if(++delay_ausschalten > 200) // nicht sofort |
+ { |
+ MotorenEin = 0; |
+ delay_ausschalten = 200; |
+ modell_fliegt = 0; |
+ } |
+ } |
+ else delay_ausschalten = 0; |
+ } |
+ } |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// neue Werte von der Funke |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(!NewPpmData-- || Notlandung) |
+ { |
+ ParameterZuordnung(); |
+ StickNick = PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P; |
+ StickNick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D; |
+ StickRoll = PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P; |
+ StickRoll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D; |
+ StickGier = -PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]; |
+ |
+ GyroFaktor = ((float)Parameter_Gyro_P + 10.0) / 256.0; |
+ IntegralFaktor = ((float) Parameter_Gyro_I) / 44000; |
+ |
+ if(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor = 0; |
+ if(GyroFaktor < 0) GyroFaktor = 0; |
+ if(IntegralFaktor < 0) IntegralFaktor = 0; |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Bei Empfangsausfall im Flug |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(Notlandung) |
+ { |
+ StickGier = 0; |
+ StickNick = 0; |
+ StickRoll = 0; |
+ GyroFaktor = 0.1; |
+ IntegralFaktor = 0.005; |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gyro-Drift kompensieren |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define DRIFT_FAKTOR 3 |
+ if(ZaehlMessungen >= 1000 / DRIFT_FAKTOR) |
+ { |
+ IntegralFehlerNick = IntegralNick2 - IntegralNick; |
+ IntegralFehlerRoll = IntegralRoll2 - IntegralRoll; |
+ ZaehlMessungen = 0; |
+ if(IntegralFehlerNick > 500/DRIFT_FAKTOR) AdNeutralNick++; |
+ if(IntegralFehlerNick < -500/DRIFT_FAKTOR) AdNeutralNick--; |
+ if(IntegralFehlerRoll > 500/DRIFT_FAKTOR) AdNeutralRoll++; |
+ if(IntegralFehlerRoll < -500/DRIFT_FAKTOR) AdNeutralRoll--; |
+ if(Mess_Integral_Gier2 > 500/DRIFT_FAKTOR) AdNeutralGier--; |
+ if(Mess_Integral_Gier2 <-500/DRIFT_FAKTOR) AdNeutralGier++; |
+ ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
+ Mess_IntegralNick2 = IntegralNick; |
+ Mess_IntegralRoll2 = IntegralRoll; |
+ Mess_Integral_Gier2 = Integral_Gier; |
+ ANALOG_ON; // ADC einschalten |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Integrale auf ACC-Signal abgleichen |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick) / 16; |
+ tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll) / 16; |
+#define AUSGLEICH 500 |
+ if(tmp_long > AUSGLEICH) tmp_long = AUSGLEICH; |
+ if(tmp_long < -AUSGLEICH) tmp_long =-AUSGLEICH; |
+ if(tmp_long2 > AUSGLEICH) tmp_long2 = AUSGLEICH; |
+ if(tmp_long2 <-AUSGLEICH) tmp_long2 =-AUSGLEICH; |
+ ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
+ Mess_IntegralNick -= tmp_long; |
+ Mess_IntegralRoll -= tmp_long2; |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gieren |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ sollGier = StickGier; |
+ if(abs(StickGier) > 35) |
+ { |
+ if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX)) NeueKompassRichtungMerken = 1; |
+ } |
+ tmp_int = EE_Parameter.Gier_P * (sollGier * abs(sollGier)) / 256; // expo |
+ Mess_Integral_Gier -= tmp_int; |
+ if(Mess_Integral_Gier > 30000) Mess_Integral_Gier = 30000; // begrenzen |
+ if(Mess_Integral_Gier <-30000) Mess_Integral_Gier =-30000; |
+ |
+ ANALOG_ON; // ADC einschalten |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Kompass |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ //KompassValue = 12; |
+ if(KompassValue && (EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV)) |
+ { |
+ int w,v; |
+ static int SignalSchlecht = 0; |
+ w = abs(IntegralNick /512); // mit zunehmender Neigung den Einfluss drosseln |
+ v = abs(IntegralRoll /512); |
+ if(v > w) w = v; // grösste Neigung ermitteln |
+ if(w < 25 && NeueKompassRichtungMerken && !SignalSchlecht) |
+ { |
+ KompassStartwert = KompassValue; |
+ NeueKompassRichtungMerken = 0; |
+ } |
+ w = (w * Parameter_KompassWirkung) / 64; // auf die Wirkung normieren |
+ w = Parameter_KompassWirkung - w; // Wirkung ggf drosseln |
+ if(w > 0) |
+ { |
+ ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
+ if(!SignalSchlecht) Mess_Integral_Gier += (KompassRichtung * w) / 32; // nach Kompass ausrichten |
+ ANALOG_ON; // ADC einschalten |
+ if(SignalSchlecht) SignalSchlecht--; |
+ } |
+ else SignalSchlecht = 500; // so lange das Signal taub stellen --> ca. 1 sek |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Debugwerte zuordnen |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+DebugOut.Sekunden++; |
+ if(!TimerWerteausgabe--) |
+ { |
+ TimerWerteausgabe = 49; |
+// DebugOut.Analog[0] = MesswertNick; |
+// DebugOut.Analog[1] = MesswertRoll; |
+// DebugOut.Analog[2] = MesswertGier; |
+ DebugOut.Analog[0] = Poti1; |
+ DebugOut.Analog[1] = Poti2; |
+ DebugOut.Analog[2] = Poti3; |
+ DebugOut.Analog[3] = Poti4; |
+ DebugOut.Analog[4] = Poti5; |
+ DebugOut.Analog[5] = Poti6; |
+ DebugOut.Analog[6] = Poti7; |
+ DebugOut.Analog[7] = Poti8; |
+ // DebugOut.Analog[8] = PPM_in[12]; |
+ // DebugOut.Analog[9] = PPM_in[13]; |
+ // DebugOut.Analog[10] = EE_Parameter.Kanalbelegung[K_POTI5]; |
+ // DebugOut.Analog[11] = EE_Parameter.Kanalbelegung[K_POTI6]; |
+ // DebugOut.Analog[12] = EE_Parameter.Kanalbelegung[K_POTI7]; |
+ // DebugOut.Analog[13] = EE_Parameter.Kanalbelegung[K_POTI8]; |
+ // DebugOut.Analog[14] = EE_Parameter.Kanalbelegung[K_POTI4]; |
+// DebugOut.Analog[10] = GasMischanteil; |
+// DebugOut.Analog[3] = HoeheD * 32; |
+// DebugOut.Analog[4] = hoehenregler; |
+ } |
+ |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Drehgeschwindigkeit und -winkel zu einem Istwert zusammenfassen |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ MesswertNick = IntegralNick * IntegralFaktor + MesswertNick * GyroFaktor; |
+ MesswertRoll = IntegralRoll * IntegralFaktor + MesswertRoll * GyroFaktor; |
+ MesswertGier = MesswertGier * (GyroFaktor/2) + Integral_Gier * IntegralFaktor; |
+ |
+ // Maximalwerte abfangen |
+ #define MAX_SENSOR 2048 |
+ if(MesswertNick > MAX_SENSOR) MesswertNick = MAX_SENSOR; |
+ if(MesswertNick < -MAX_SENSOR) MesswertNick = -MAX_SENSOR; |
+ if(MesswertRoll > MAX_SENSOR) MesswertRoll = MAX_SENSOR; |
+ if(MesswertRoll < -MAX_SENSOR) MesswertRoll = -MAX_SENSOR; |
+ if(MesswertGier > MAX_SENSOR) MesswertGier = MAX_SENSOR; |
+ if(MesswertGier < -MAX_SENSOR) MesswertGier = -MAX_SENSOR; |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Höhenregelung |
+// Die Höhenregelung schwächt lediglich das Gas ab, erhöht es allerdings nicht |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+//OCR0B = 180 - (Poti1 + 120) / 4; |
+//DruckOffsetSetting = OCR0B; |
+ if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung |
+ { |
+ int tmp_int; |
+ if(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER) // Regler wird über Schalter gesteuert |
+ { |
+ if(Parameter_MaxHoehe < 50) |
+ { |
+ SollHoehe = HoehenWert - 20; // Parameter_MaxHoehe ist der PPM-Wert des Schalters |
+ HoehenReglerAktiv = 0; |
+ } |
+ else |
+ HoehenReglerAktiv = 1; |
+ } |
+ else |
+ { |
+ SollHoehe = Parameter_MaxHoehe * EE_Parameter.Hoehe_Verstaerkung - 20; |
+ HoehenReglerAktiv = 1; |
+ } |
+ |
+ if(Notlandung) SollHoehe = 0; |
+ h = HoehenWert; |
+ if((h > SollHoehe) && HoehenReglerAktiv) // zu hoch --> drosseln |
+ { h = ((h - SollHoehe) * (int) Parameter_Hoehe_P) / 16; // Differenz bestimmen --> P-Anteil |
+ h = GasMischanteil - h; // vom Gas abziehen |
+ h -= (HoeheD * Parameter_Luftdruck_D)/8; // D-Anteil |
+ tmp_int = ((Mess_Integral_Hoch / 512) * (signed long) Parameter_Hoehe_ACC_Wirkung) / 32; |
+ if(tmp_int > 50) tmp_int = 50; |
+ else if(tmp_int < -50) tmp_int = -50; |
+ h -= tmp_int; |
+ hoehenregler = (hoehenregler*15 + h) / 16; |
+ if(hoehenregler < EE_Parameter.Hoehe_MinGas) // nicht unter MIN |
+ { |
+ if(GasMischanteil >= EE_Parameter.Hoehe_MinGas) hoehenregler = EE_Parameter.Hoehe_MinGas; |
+ if(GasMischanteil < EE_Parameter.Hoehe_MinGas) hoehenregler = GasMischanteil; |
+ } |
+ if(hoehenregler > GasMischanteil) hoehenregler = GasMischanteil; // nicht mehr als Gas |
+ GasMischanteil = hoehenregler; |
+ } |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Mischer und PI-Regler |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gier-Anteil |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ GierMischanteil = MesswertGier - sollGier; // Regler für Gier |
+ if(GierMischanteil > 100) GierMischanteil = 100; |
+ if(GierMischanteil < -100) GierMischanteil = -100; |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Nick-Achse |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ DiffNick = Kp * (MesswertNick - (StickNick - GPS_Nick)); // Differenz bestimmen |
+ SummeNick += DiffNick; // I-Anteil |
+ if(SummeNick > 0) SummeNick-= (abs(SummeNick)/256 + 1); else SummeNick += abs(SummeNick)/256 + 1; |
+ if(SummeNick > 16000) SummeNick = 16000; |
+ if(SummeNick < -16000) SummeNick = -16000; |
+ pd_ergebnis = DiffNick + Ki * SummeNick; // PI-Regler für Nick |
+ // Motor Vorn |
+ motorwert = GasMischanteil + pd_ergebnis + GierMischanteil; // Mischer |
+ if ((motorwert < 0) | (GasMischanteil < 10)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Vorne = motorwert; |
+ // Motor Heck |
+ motorwert = GasMischanteil - pd_ergebnis + GierMischanteil; |
+ if ((motorwert < 0) | (GasMischanteil < 10)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Hinten = motorwert; |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Roll-Achse |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ DiffRoll = Kp * (MesswertRoll - (StickRoll - GPS_Roll)); // Differenz bestimmen |
+ SummeRoll += DiffRoll; // I-Anteil |
+ if(SummeRoll > 0) SummeRoll-= (abs(SummeRoll)/256 + 1); else SummeRoll += abs(SummeRoll)/256 + 1; |
+ if(SummeRoll > 16000) SummeRoll = 16000; |
+ if(SummeRoll < -16000) SummeRoll = -16000; |
+ pd_ergebnis = DiffRoll + Ki * SummeRoll; // PI-Regler für Roll |
+ // Motor Links |
+ motorwert = GasMischanteil + pd_ergebnis - GierMischanteil; |
+ if ((motorwert < 0) | (GasMischanteil < 10)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Links = motorwert; |
+ // Motor Rechts |
+ motorwert = GasMischanteil - pd_ergebnis - GierMischanteil; |
+ if ((motorwert < 0) | (GasMischanteil < 10)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Rechts = motorwert; |
+ // +++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+} |
+ |
/branches/Flight-Ctrl/fc.h |
---|
0,0 → 1,106 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
#ifndef _FC_H |
#define _FC_H |
extern volatile unsigned char Timeout; |
extern unsigned char Sekunde,Minute; |
extern volatile long IntegralNick,IntegralNick2; |
extern volatile long IntegralRoll,IntegralRoll2; |
extern volatile long Mess_IntegralNick,Mess_IntegralNick2; |
extern volatile long Mess_IntegralRoll,Mess_IntegralRoll2; |
extern volatile long Mess_Integral_Hoch; |
extern volatile long Integral_Gier,Mess_Integral_Gier,Mess_Integral_Gier2; |
extern volatile int KompassValue; |
extern volatile int KompassStartwert; |
extern volatile int KompassRichtung; |
extern int HoehenWert; |
extern int SollHoehe; |
extern volatile int MesswertNick,MesswertRoll,MesswertGier; |
extern volatile int AdNeutralNick,AdNeutralRoll,AdNeutralGier, Mittelwert_AccNick, Mittelwert_AccRoll; |
extern volatile int NeutralAccX, NeutralAccY,Mittelwert_AccHoch; |
extern volatile float NeutralAccZ; |
void MotorRegler(void); |
void SendMotorData(void); |
void CalibrierMittelwert(void); |
void Mittelwert(void); |
void SetNeutral(void); |
unsigned char h,m,s; |
volatile unsigned char Timeout ; |
unsigned char CosinusNickWinkel, CosinusRollWinkel; |
volatile long IntegralNick,IntegralNick2; |
volatile long IntegralRoll,IntegralRoll2; |
volatile long Integral_Gier; |
volatile long Mess_IntegralNick,Mess_IntegralNick2; |
volatile long Mess_IntegralRoll,Mess_IntegralRoll2; |
volatile long Mess_Integral_Gier; |
volatile int DiffNick,DiffRoll; |
extern int Poti1, Poti2, Poti3, Poti4,Poti5,Poti6,Poti7,Poti8; |
volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count; |
unsigned char MotorWert[5]; |
volatile unsigned char SenderOkay; |
int StickNick,StickRoll,StickGier; |
char MotorenEin; |
extern void DefaultKonstanten(void); |
#define STRUCT_PARAM_LAENGE 58 |
struct mk_param_struct |
{ |
unsigned char Kanalbelegung[12]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3 Poti5 Poti6 Poti7 Poti8 |
unsigned char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv |
unsigned char Hoehe_MinGas; // Wert : 0-100 |
unsigned char Luftdruck_D; // Wert : 0-250 |
unsigned char MaxHoehe; // Wert : 0-32 |
unsigned char Hoehe_P; // Wert : 0-32 |
unsigned char Hoehe_Verstaerkung; // Wert : 0-50 |
unsigned char Hoehe_ACC_Wirkung; // Wert : 0-250 |
unsigned char Stick_P; // Wert : 1-6 |
unsigned char Stick_D; // Wert : 0-64 |
unsigned char Gier_P; // Wert : 1-20 |
unsigned char Gas_Min; // Wert : 0-32 |
unsigned char Gas_Max; // Wert : 33-250 |
unsigned char GyroAccFaktor; // Wert : 1-64 |
unsigned char KompassWirkung; // Wert : 0-32 |
unsigned char Gyro_P; // Wert : 10-250 |
unsigned char Gyro_I; // Wert : 0-250 |
unsigned char UnterspannungsWarnung; // Wert : 0-250 |
unsigned char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust |
unsigned char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen |
unsigned char UfoAusrichtung; // X oder + Formation |
unsigned char I_Faktor; // Wert : 0-250 |
unsigned char UserParam1; // Wert : 0-250 |
unsigned char UserParam2; // Wert : 0-250 |
unsigned char UserParam3; // Wert : 0-250 |
unsigned char UserParam4; // Wert : 0-250 |
unsigned char ServoNickControl; // Wert : 0-250 // Stellung des Servos |
unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
unsigned char ServoNickMin; // Wert : 0-250 // Anschlag |
unsigned char ServoNickMax; // Wert : 0-250 // Anschlag |
unsigned char ServoNickRefresh; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
unsigned char ServoNickCompInvert; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
unsigned char Reserved[7]; |
char Name[12]; |
}; |
extern struct mk_param_struct EE_Parameter; |
extern unsigned char Parameter_Luftdruck_D; |
extern unsigned char Parameter_MaxHoehe; |
extern unsigned char Parameter_Hoehe_P; |
extern unsigned char Parameter_Hoehe_ACC_Wirkung; |
extern unsigned char Parameter_KompassWirkung; |
extern unsigned char Parameter_Gyro_P; |
extern unsigned char Parameter_Gyro_I; |
extern unsigned char Parameter_Gier_P; |
extern unsigned char Parameter_ServoNickControl; |
#endif //_FC_H |
/branches/Flight-Ctrl/flight.aps |
---|
0,0 → 1,0 |
<AVRStudio><MANAGEMENT><ProjectName>flight</ProjectName><Created>18-Aug-2007 15:51:07</Created><LastEdit>20-Aug-2007 22:52:06</LastEdit><ICON>241</ICON><ProjectType>0</ProjectType><Created>18-Aug-2007 15:51:07</Created><Version>4</Version><Build>4, 13, 0, 528</Build><ProjectTypeName>AVR GCC</ProjectTypeName></MANAGEMENT><CODE_CREATION><ObjectFile>default\Flight-Ctrl_MEGA644_V0_60.elf</ObjectFile><EntryFile></EntryFile><SaveFolder>F:\SVN\FlightCtrl\branches\V0.60_CommunityVersion\</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>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><SOURCEFILE>uart.c</SOURCEFILE><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><HEADERFILE>uart.h</HEADERFILE><OTHERFILE>version.txt</OTHERFILE><OTHERFILE>License.txt</OTHERFILE></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_MEGA644_V0_60.elf</OUTPUTFILENAME><OUTPUTDIR>default\</OUTPUTDIR><ISDIRTY>0</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 -DVERSION_KOMPATIBEL=4 -DVERSION_HAUPTVERSION=0 -DVERSION_NEBENVERSION=60 -DF_CPU=20000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums</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><ProjectFiles><Files><Name>F:\SVN\FlightCtrl\branches\V0.60_CommunityVersion\_Settings.h</Name><Name>F:\SVN\FlightCtrl\branches\V0.60_CommunityVersion\analog.h</Name><Name>F:\SVN\FlightCtrl\branches\V0.60_CommunityVersion\fc.h</Name><Name>F:\SVN\FlightCtrl\branches\V0.60_CommunityVersion\gps.h</Name><Name>F:\SVN\FlightCtrl\branches\V0.60_CommunityVersion\main.h</Name><Name>F:\SVN\FlightCtrl\branches\V0.60_CommunityVersion\menu.h</Name><Name>F:\SVN\FlightCtrl\branches\V0.60_CommunityVersion\old_macros.h</Name><Name>F:\SVN\FlightCtrl\branches\V0.60_CommunityVersion\printf_P.h</Name><Name>F:\SVN\FlightCtrl\branches\V0.60_CommunityVersion\rc.h</Name><Name>F:\SVN\FlightCtrl\branches\V0.60_CommunityVersion\Settings.h</Name><Name>F:\SVN\FlightCtrl\branches\V0.60_CommunityVersion\timer0.h</Name><Name>F:\SVN\FlightCtrl\branches\V0.60_CommunityVersion\twimaster.h</Name><Name>F:\SVN\FlightCtrl\branches\V0.60_CommunityVersion\uart.h</Name><Name>F:\SVN\FlightCtrl\branches\V0.60_CommunityVersion\analog.c</Name><Name>F:\SVN\FlightCtrl\branches\V0.60_CommunityVersion\eeprom.c</Name><Name>F:\SVN\FlightCtrl\branches\V0.60_CommunityVersion\fc.c</Name><Name>F:\SVN\FlightCtrl\branches\V0.60_CommunityVersion\GPS.c</Name><Name>F:\SVN\FlightCtrl\branches\V0.60_CommunityVersion\main.c</Name><Name>F:\SVN\FlightCtrl\branches\V0.60_CommunityVersion\menu.c</Name><Name>F:\SVN\FlightCtrl\branches\V0.60_CommunityVersion\printf_P.c</Name><Name>F:\SVN\FlightCtrl\branches\V0.60_CommunityVersion\rc.c</Name><Name>F:\SVN\FlightCtrl\branches\V0.60_CommunityVersion\timer0.c</Name><Name>F:\SVN\FlightCtrl\branches\V0.60_CommunityVersion\twimaster.c</Name><Name>F:\SVN\FlightCtrl\branches\V0.60_CommunityVersion\uart.c</Name></Files></ProjectFiles><IOView><usergroups/></IOView><Files><File00000><FileId>00000</FileId><FileName>_Settings.h</FileName><Status>1</Status></File00000><File00001><FileId>00001</FileId><FileName>analog.h</FileName><Status>1</Status></File00001><File00002><FileId>00002</FileId><FileName>fc.h</FileName><Status>1</Status></File00002><File00003><FileId>00003</FileId><FileName>gps.h</FileName><Status>1</Status></File00003><File00004><FileId>00004</FileId><FileName>main.h</FileName><Status>1</Status></File00004><File00005><FileId>00005</FileId><FileName>menu.h</FileName><Status>1</Status></File00005><File00006><FileId>00006</FileId><FileName>old_macros.h</FileName><Status>1</Status></File00006><File00007><FileId>00007</FileId><FileName>printf_P.h</FileName><Status>1</Status></File00007><File00008><FileId>00008</FileId><FileName>rc.h</FileName><Status>1</Status></File00008><File00009><FileId>00009</FileId><FileName>Settings.h</FileName><Status>1</Status></File00009><File00010><FileId>00010</FileId><FileName>timer0.h</FileName><Status>1</Status></File00010><File00011><FileId>00011</FileId><FileName>twimaster.h</FileName><Status>1</Status></File00011><File00012><FileId>00012</FileId><FileName>uart.h</FileName><Status>1</Status></File00012></Files><Workspace><File00000><Position>266 105 1233 462</Position><LineCol>0 0</LineCol></File00000><File00001><Position>391 230 1304 701</Position><LineCol>18 0</LineCol></File00001><File00002><Position>416 255 1329 726</Position><LineCol>53 33</LineCol></File00002><File00003><Position>466 305 1379 776</Position><LineCol>4 0</LineCol></File00003><File00004><Position>491 330 1404 801</Position><LineCol>0 0</LineCol></File00004><File00005><Position>266 105 1179 576</Position><LineCol>0 0</LineCol></File00005><File00006><Position>291 130 1204 601</Position><LineCol>0 0</LineCol></File00006><File00007><Position>316 155 1229 626</Position><LineCol>0 0</LineCol></File00007><File00008><Position>341 180 1254 651</Position><LineCol>0 0</LineCol></File00008><File00009><Position>366 205 1279 676</Position><LineCol>0 0</LineCol></File00009><File00010><Position>391 230 1304 701</Position><LineCol>0 0</LineCol></File00010><File00011><Position>416 255 1329 726</Position><LineCol>0 0</LineCol></File00011><File00012><Position>257 74 1413 810</Position><LineCol>0 0</LineCol><State>Maximized</State></File00012></Workspace><Events><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio> |
/branches/Flight-Ctrl/flight.pnproj |
---|
0,0 → 1,0 |
<Project name="Flight-Ctrl"><File path="uart.h"></File><File path="main.c"></File><File path="main.h"></File><File path="makefile"></File><File path="uart.c"></File><File path="printf_P.h"></File><File path="printf_P.c"></File><File path="timer0.c"></File><File path="timer0.h"></File><File path="old_macros.h"></File><File path="twimaster.c"></File><File path="version.txt"></File><File path="twimaster.h"></File><File path="rc.c"></File><File path="rc.h"></File><File path="fc.h"></File><File path="fc.c"></File><File path="menu.h"></File><File path="menu.c"></File><File path="_Settings.h"></File><File path="analog.c"></File><File path="analog.h"></File><File path="GPS.c"></File><File path="gps.h"></File><File path="License.txt"></File></Project> |
/branches/Flight-Ctrl/flight.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="Flight-Ctrl" x="true"></e></ViewState></pd> |
/branches/Flight-Ctrl/gps.h |
---|
0,0 → 1,4 |
extern signed int GPS_Nick; |
extern signed int GPS_Roll; |
extern void GPS_Neutral(void); |
extern void GPS_BerechneZielrichtung(void); |
/branches/Flight-Ctrl/main.c |
---|
0,0 → 1,210 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + Nur für den privaten Gebrauch |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten und nicht-kommerziellen Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt und genannt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned char EEPromArray[E2END+1] EEMEM; |
// -- Parametersatz aus EEPROM lesen --- |
// number [0..5] |
void ReadParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if (number > 5) number = 5; |
eeprom_read_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length); |
} |
// -- Parametersatz ins EEPROM schreiben --- |
// number [0..5] |
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if (number > 5) number = 5; |
eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], number); // diesen Parametersatz als aktuell merken |
} |
unsigned char GetActiveParamSetNumber(void) |
{ |
return(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET])); |
} |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
unsigned int timer; |
unsigned int timer2 = 0; |
DDRC = 0x01; // SCL |
PORTC = 0xff; // Pullup SDA |
DDRB = 0x1B; // LEDs und Druckoffset |
PORTB = 0x01; // LED_Rot |
DDRD = 0x3E; // Speaker & TXD & J3 J4 J5 |
DDRD |=0x80; // J7 |
PORTD = 0xF7; // LED |
MCUSR &=~(1<<WDRF); |
WDTCSR |= (1<<WDCE)|(1<<WDE); |
WDTCSR = 0; |
beeptime = 2000; |
StickGier = 0; PPM_in[K_GAS] = 0;StickRoll = 0; StickNick = 0; |
ROT_OFF; |
Timer_Init(); |
UART_Init(); |
rc_sum_init(); |
ADC_Init(); |
i2c_init(); |
sei(); |
VersionInfo.Hauptversion = VERSION_HAUPTVERSION; |
VersionInfo.Nebenversion = VERSION_NEBENVERSION; |
VersionInfo.PCKompatibel = VERSION_KOMPATIBEL; |
printf("\n\rFlightControl V%d.%d ", VERSION_HAUPTVERSION, VERSION_NEBENVERSION); |
printf("\n\r=============================="); |
GRN_ON; |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != 59) // seit V 0.60 |
{ |
printf("\n\rInit. EEPROM: Generiere Default-Parameter..."); |
DefaultKonstanten1(); |
for (unsigned char i=0;i<6;i++) |
{ |
if(i==2) DefaultKonstanten2(); |
WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
} |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], 1); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], 59); |
} |
ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
printf("\n\rBenutze Parametersatz %d", GetActiveParamSetNumber()); |
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
printf("\n\rAbgleich Luftdrucksensor.."); |
timer = SetDelay(2500); |
SucheLuftruckOffset(); |
while (!CheckDelay(timer)); |
printf("OK\n\r"); |
} |
SetNeutral(); |
ROT_OFF; |
beeptime = 2000; |
DebugIn.Analog[1] = 1000; |
DebugIn.Digital[0] = 0x55; |
printf("\n\rSteuerung: "); |
if (EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) printf("HeadingHold"); |
else printf("Neutral"); |
printf("\n\n\r"); |
LcdClear(); |
while (1) |
{ |
if (UpdateMotor) // ReglerIntervall |
{ |
UpdateMotor=0; |
MotorRegler(); |
SendMotorData(); |
ROT_OFF; |
if(PcZugriff) PcZugriff--; |
if(SenderOkay) SenderOkay--; |
if (UBat < EE_Parameter.UnterspannungsWarnung) |
{ |
beeptime = 2000; |
} |
if(!Timeout) |
{ |
i2c_init(); |
} |
else |
{ |
ROT_OFF; |
} |
} |
if(SIO_DEBUG) |
{ |
DatenUebertragung(); |
BearbeiteRxDaten(); |
} |
else BearbeiteRxDaten(); |
if(CheckDelay(timer2)) |
{ |
if(MotorenEin) PORTC ^= 0x10; else PORTC &= ~0x10; |
timer = SetDelay(500); |
} |
} |
return (1); |
} |
/branches/Flight-Ctrl/main.h |
---|
0,0 → 1,92 |
#ifndef _MAIN_H |
#define _MAIN_H |
//Hier die Quarz Frequenz einstellen |
#if defined (__AVR_ATmega32__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
#endif |
#if defined (__AVR_ATmega644__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
//#define SYSCLK 16000000L //Quarz Frequenz in Hz |
#endif |
// neue Hardware |
#define ROT_OFF PORTB &=~0x01 |
#define ROT_ON PORTB |= 0x01 |
#define ROT_FLASH PORTB ^= 0x01 |
#define GRN_OFF PORTB &=~0x02 |
#define GRN_ON PORTB |= 0x02 |
#define GRN_FLASH PORTD ^= 0x02 |
//#ifndef F_CPU |
//#error ################## F_CPU nicht definiert oder ungültig ############# |
//#endif |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//#define ANZ_MITTELWERT 4 |
#define EEPROM_ADR_VALID 1 |
#define EEPROM_ADR_ACTIVE_SET 2 |
#define EEPROM_ADR_PARAM_BEGIN 100 |
#define CFG_HOEHENREGELUNG 0x01 |
#define CFG_HOEHEN_SCHALTER 0x02 |
#define CFG_HEADING_HOLD 0x04 |
#define CFG_KOMPASS_AKTIV 0x08 |
#define CFG_KOMPASS_FIX 0x10 |
#define CFG_GPS_AKTIV 0x20 |
//#define SYSCLK |
//extern unsigned long SYSCLK; |
extern volatile int i_Nick[20],i_Roll[20],DiffNick,DiffRoll; |
extern volatile unsigned char SenderOkay; |
extern unsigned char CosinusNickWinkel, CosinusRollWinkel; |
extern void ReadParameterSet (unsigned char number, unsigned char *buffer, unsigned char length); |
extern void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length); |
extern unsigned char GetActiveParamSetNumber(void); |
extern unsigned char EEPromArray[]; |
#include <stdlib.h> |
#include <string.h> |
#include <avr/io.h> |
#include <avr/pgmspace.h> |
#include <avr/interrupt.h> |
#include <avr/eeprom.h> |
#include <avr/boot.h> |
#include <avr/wdt.h> |
#include "old_macros.h" |
#include "_settings.h" |
#include "printf_P.h" |
#include "timer0.h" |
#include "uart.h" |
#include "analog.h" |
#include "twimaster.h" |
#include "menu.h" |
#include "rc.h" |
#include "fc.h" |
#include "gps.h" |
#ifndef EEMEM |
#define EEMEM __attribute__ ((section (".eeprom"))) |
#endif |
#define DEBUG_DISPLAY_INTERVALL 123 // in ms |
#define DELAY_US(x) ((unsigned int)( (x) * 1e-6 * F_CPU )) |
#endif //_MAIN_H |
/branches/Flight-Ctrl/makefile |
---|
0,0 → 1,391 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega644 |
F_CPU = 20000000 |
#------------------------------------------------------------------- |
HAUPT_VERSION = 0 |
NEBEN_VERSION = 60 |
VERSION_KOMPATIBEL = 4 # PC-Kompatibilität |
#------------------------------------------------------------------- |
ifeq ($(MCU), atmega32) |
# FUSE_SETTINGS= -u -U lfuse:w:0xff:m -U hfuse:w:0xcf:m |
HEX_NAME = MEGA32 |
endif |
ifeq ($(MCU), atmega644) |
FUSE_SETTINGS = -u -U lfuse:w:0xff:m -U hfuse:w:0xdf:m |
#FUSE_SETTINGS = -U lfuse:w:0xff:m -U hfuse:w:0xdf:m |
# -u bei neuen Controllern wieder einspielen |
HEX_NAME = MEGA644 |
endif |
ifeq ($(F_CPU), 16000000) |
QUARZ = 16MHZ |
endif |
ifeq ($(F_CPU), 20000000) |
QUARZ = 20MHZ |
endif |
# Output format. (can be srec, ihex, binary) |
FORMAT = ihex |
# Target file name (without extension). |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION) |
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
OPT = s |
########################################################################################################## |
# List C source files here. (C dependencies are automatically generated.) |
SRC = main.c uart.c printf_P.c timer0.c analog.c menu.c |
SRC += twimaster.c rc.c fc.c GPS.c |
########################################################################################################## |
# List Assembler source files here. |
# Make them always end in a capital .S. Files ending in a lowercase .s |
# will not be considered source files but generated files (assembler |
# output from the compiler), and will be deleted upon "make clean"! |
# Even though the DOS/Win* filesystem matches both .s and .S the same, |
# it will preserve the spelling of the filenames, and gcc itself does |
# care about how the name is spelled on its command-line. |
ASRC = |
# List any extra directories to look for include files here. |
# Each directory must be seperated by a space. |
EXTRAINCDIRS = |
# Optional compiler flags. |
# -g: generate debugging information (for GDB, or for COFF conversion) |
# -O*: optimization level |
# -f...: tuning, see gcc manual and avr-libc documentation |
# -Wall...: warning level |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create assembler listing |
CFLAGS = -O$(OPT) \ |
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \ |
-Wall -Wstrict-prototypes \ |
-Wa,-adhlns=$(<:.c=.lst) \ |
$(patsubst %,-I%,$(EXTRAINCDIRS)) |
# Set a "language standard" compiler flag. |
# Unremark just one line below to set the language standard to use. |
# gnu99 = C99 + GNU extensions. See GCC manual for more information. |
#CFLAGS += -std=c89 |
#CFLAGS += -std=gnu89 |
#CFLAGS += -std=c99 |
CFLAGS += -std=gnu99 |
CFLAGS += -DVERSION_HAUPTVERSION=$(HAUPT_VERSION) -DVERSION_NEBENVERSION=$(NEBEN_VERSION) -DVERSION_KOMPATIBEL=$(VERSION_KOMPATIBEL) |
# Optional assembler flags. |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create listing |
# -gstabs: have the assembler create line number information; note that |
# for use in COFF files, additional information about filenames |
# and function names needs to be present in the assembler source |
# files -- see avr-libc docs [FIXME: not yet described there] |
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs |
# Optional linker flags. |
# -Wl,...: tell GCC to pass this to linker. |
# -Map: create map file |
# --cref: add cross reference to map file |
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref |
# Additional libraries |
# Minimalistic printf version |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min |
# Floating point printf version (requires -lm below) |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt |
# -lm = math library |
LDFLAGS += -lm |
##LDFLAGS += -T./linkerfile/avr5.x |
# Programming support using avrdude. Settings and variables. |
# Programming hardware: alf avr910 avrisp bascom bsd |
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 |
# |
# Type: avrdude -c ? |
# to get a full listing. |
# |
#AVRDUDE_PROGRAMMER = stk200 |
AVRDUDE_PROGRAMMER = dt006 |
#AVRDUDE_PROGRAMMER = ponyser |
#falls Ponyser ausgewählt wird, muss sich unsere avrdude-Configdatei im Bin-Verzeichnis des Compilers befinden |
#AVRDUDE_PORT = com1 # programmer connected to serial device |
AVRDUDE_PORT = lpt1 # programmer connected to parallel port |
#AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex |
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex $(FUSE_SETTINGS) |
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep |
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) |
# Uncomment the following if you want avrdude's erase cycle counter. |
# Note that this counter needs to be initialized first using -Yn, |
# see avrdude manual. |
#AVRDUDE_ERASE += -y |
# Uncomment the following if you do /not/ wish a verification to be |
# performed after programming the device. |
AVRDUDE_FLAGS += -V |
# Increase verbosity level. Please use this when submitting bug |
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> |
# to submit bug reports. |
#AVRDUDE_FLAGS += -v -v |
# --------------------------------------------------------------------------- |
# Define directories, if needed. |
DIRAVR = c:/winavr |
DIRAVRBIN = $(DIRAVR)/bin |
DIRAVRUTILS = $(DIRAVR)/utils/bin |
DIRINC = . |
DIRLIB = $(DIRAVR)/avr/lib |
# Define programs and commands. |
SHELL = sh |
CC = avr-gcc |
OBJCOPY = avr-objcopy |
OBJDUMP = avr-objdump |
SIZE = avr-size |
# Programming support using avrdude. |
AVRDUDE = avrdude |
REMOVE = rm -f |
COPY = cp |
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
ELFSIZE = $(SIZE) -A $(TARGET).elf |
# Define Messages |
# English |
MSG_ERRORS_NONE = Errors: none |
MSG_BEGIN = -------- begin -------- |
MSG_END = -------- end -------- |
MSG_SIZE_BEFORE = Size before: |
MSG_SIZE_AFTER = Size after: |
MSG_COFF = Converting to AVR COFF: |
MSG_EXTENDED_COFF = Converting to AVR Extended COFF: |
MSG_FLASH = Creating load file for Flash: |
MSG_EEPROM = Creating load file for EEPROM: |
MSG_EXTENDED_LISTING = Creating Extended Listing: |
MSG_SYMBOL_TABLE = Creating Symbol Table: |
MSG_LINKING = Linking: |
MSG_COMPILING = Compiling: |
MSG_ASSEMBLING = Assembling: |
MSG_CLEANING = Cleaning project: |
# Define all object files. |
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) |
# Define all listing files. |
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) |
# Combine all necessary flags and optional flags. |
# Add target processor to flags. |
#ALL_CFLAGS = -mmcu=$(MCU) -DF_CPU=$(F_CPU) -I. $(CFLAGS) |
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) |
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) |
# Default target. |
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
$(TARGET).lss $(TARGET).sym sizeafter finished end |
# Eye candy. |
# AVR Studio 3.x does not check make's exit code but relies on |
# the following magic strings to be generated by the compile job. |
begin: |
@echo |
@echo $(MSG_BEGIN) |
finished: |
@echo $(MSG_ERRORS_NONE) |
end: |
@echo $(MSG_END) |
@echo |
# Display size of file. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi |
# Display compiler version information. |
gccversion : |
@$(CC) --version |
# Convert ELF to COFF for use in debugging / simulating in |
# AVR Studio or VMLAB. |
COFFCONVERT=$(OBJCOPY) --debugging \ |
--change-section-address .data-0x800000 \ |
--change-section-address .bss-0x800000 \ |
--change-section-address .noinit-0x800000 \ |
--change-section-address .eeprom-0x810000 |
coff: $(TARGET).elf |
@echo |
@echo $(MSG_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof |
extcoff: $(TARGET).elf |
@echo |
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof |
# Program the device. |
program: $(TARGET).hex $(TARGET).eep |
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
# Create final output files (.hex, .eep) from ELF output file. |
%.hex: %.elf |
@echo |
@echo $(MSG_FLASH) $@ |
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ |
%.eep: %.elf |
@echo |
@echo $(MSG_EEPROM) $@ |
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ |
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@ |
# Create extended listing file from ELF output file. |
%.lss: %.elf |
@echo |
@echo $(MSG_EXTENDED_LISTING) $@ |
$(OBJDUMP) -h -S $< > $@ |
# Create a symbol table from ELF output file. |
%.sym: %.elf |
@echo |
@echo $(MSG_SYMBOL_TABLE) $@ |
avr-nm -n $< > $@ |
# Link: create ELF output file from object files. |
.SECONDARY : $(TARGET).elf |
.PRECIOUS : $(OBJ) |
%.elf: $(OBJ) |
@echo |
@echo $(MSG_LINKING) $@ |
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) |
# Compile: create object files from C source files. |
%.o : %.c |
@echo |
@echo $(MSG_COMPILING) $< |
$(CC) -c $(ALL_CFLAGS) $< -o $@ |
# Compile: create assembler files from C source files. |
%.s : %.c |
$(CC) -S $(ALL_CFLAGS) $< -o $@ |
# Assemble: create object files from assembler source files. |
%.o : %.S |
@echo |
@echo $(MSG_ASSEMBLING) $< |
$(CC) -c $(ALL_ASFLAGS) $< -o $@ |
# Target: clean project. |
clean: begin clean_list finished end |
clean_list : |
@echo |
@echo $(MSG_CLEANING) |
# $(REMOVE) $(TARGET).hex |
$(REMOVE) $(TARGET).eep |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).cof |
$(REMOVE) $(TARGET).elf |
$(REMOVE) $(TARGET).map |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).a90 |
$(REMOVE) $(TARGET).sym |
$(REMOVE) $(TARGET).lnk |
$(REMOVE) $(TARGET).lss |
$(REMOVE) $(OBJ) |
$(REMOVE) $(LST) |
$(REMOVE) $(SRC:.c=.s) |
$(REMOVE) $(SRC:.c=.d) |
# Automatically generate C source code dependencies. |
# (Code originally taken from the GNU make user manual and modified |
# (See README.txt Credits).) |
# |
# Note that this will work with sh (bash) and sed that is shipped with WinAVR |
# (see the SHELL variable defined above). |
# This may not work with other shells or other seds. |
# |
%.d: %.c |
set -e; $(CC) -MM $(ALL_CFLAGS) $< \ |
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ |
[ -s $@ ] || rm -f $@ |
# Remove the '-' if you want to see the dependency files generated. |
-include $(SRC:.c=.d) |
# Listing of phony targets. |
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \ |
clean clean_list program |
/branches/Flight-Ctrl/menu.c |
---|
0,0 → 1,118 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned int TestInt = 0; |
#define ARRAYGROESSE 10 |
unsigned char Array[ARRAYGROESSE] = {1,2,3,4,5,6,7,8,9,10}; |
char DisplayBuff[80] = "Hallo Welt"; |
unsigned char DispPtr = 0; |
unsigned char RemoteTasten = 0; |
#define KEY1 0x01 |
#define KEY2 0x02 |
#define KEY3 0x04 |
#define KEY4 0x08 |
#define KEY5 0x10 |
void LcdClear(void) |
{ |
unsigned char i; |
for(i=0;i<80;i++) DisplayBuff[i] = ' '; |
} |
void Menu(void) |
{ |
static unsigned char MaxMenue = 10,MenuePunkt=0; |
if(RemoteTasten & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue; LcdClear(); } |
if(RemoteTasten & KEY2) { MenuePunkt++; LcdClear(); } |
if((RemoteTasten & KEY1) && (RemoteTasten & KEY2)) MenuePunkt = 0; |
LCD_printfxy(17,0,"[%i]",MenuePunkt); |
switch(MenuePunkt) |
{ |
case 0: |
LCD_printfxy(0,0,"++ MikroKopter ++"); |
LCD_printfxy(0,1,"V%d.%d",VERSION_HAUPTVERSION, VERSION_NEBENVERSION); |
LCD_printfxy(0,2,"Setting: %d ",GetActiveParamSetNumber()); |
LCD_printfxy(0,3,"(c) Holger Buss"); |
// if(RemoteTasten & KEY3) TestInt--; |
// if(RemoteTasten & KEY4) TestInt++; |
break; |
case 1: |
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
LCD_printfxy(0,0,"Hoehe: %5i",HoehenWert); |
LCD_printfxy(0,1,"SollHoehe: %5i",SollHoehe); |
LCD_printfxy(0,2,"Luftdruck: %5i",MessLuftdruck); |
LCD_printfxy(0,3,"Off : %5i",DruckOffsetSetting); |
} |
else |
{ |
LCD_printfxy(0,1,"Keine "); |
LCD_printfxy(0,2,"Höhenregelung"); |
} |
break; |
case 2: |
LCD_printfxy(0,0,"akt. Lage"); |
LCD_printfxy(0,1,"Nick: %5i",IntegralNick/1024); |
LCD_printfxy(0,2,"Roll: %5i",IntegralRoll/1024); |
LCD_printfxy(0,3,"Kompass: %5i",KompassValue); |
break; |
case 3: |
LCD_printfxy(0,0,"K1:%4i K2:%4i ",PPM_in[1],PPM_in[2]); |
LCD_printfxy(0,1,"K3:%4i K4:%4i ",PPM_in[3],PPM_in[4]); |
LCD_printfxy(0,2,"K5:%4i K6:%4i ",PPM_in[5],PPM_in[6]); |
LCD_printfxy(0,3,"K7:%4i Kanäle ",PPM_in[7]); |
break; |
case 4: |
LCD_printfxy(0,0,"Ni:%4i Ro:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_NICK]],PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]); |
LCD_printfxy(0,1,"Gs:%4i Gi:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_GAS]],PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]); |
LCD_printfxy(0,2,"P1:%4i P2:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]],PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]]); |
LCD_printfxy(0,3,"P3:%4i Kanäle ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]]); |
break; |
case 5: |
LCD_printfxy(0,0,"Gyro - Sensor"); |
LCD_printfxy(0,1,"Nick %4i (%3i)",AccumulateNick / MessanzahlNick, AdNeutralNick); |
LCD_printfxy(0,2,"Roll %4i (%3i)",AccumulateRoll / MessanzahlRoll, AdNeutralRoll); |
LCD_printfxy(0,3,"Gier %4i (%3i)",AccumulateGier / MessanzahlGier, AdNeutralGier); |
break; |
case 6: |
LCD_printfxy(0,0,"ACC - Sensor"); |
LCD_printfxy(0,1,"Nick %4i (%3i)",accumulate_AccNick / messanzahl_AccNick,NeutralAccX); |
LCD_printfxy(0,2,"Roll %4i (%3i)",accumulate_AccRoll / messanzahl_AccRoll,NeutralAccY); |
LCD_printfxy(0,3,"Hoch %4i (%3i)",Aktuell_az/*accumulate_AccHoch / messanzahl_AccHoch*/,(int)NeutralAccZ); |
break; |
case 7: |
LCD_printfxy(0,1,"Spannung: %5i",UBat); |
LCD_printfxy(0,2,"Empf.Pegel:%5i",SenderOkay); |
break; |
case 8: |
LCD_printfxy(0,0,"Kompass "); |
LCD_printfxy(0,1,"Richtung: %5i",KompassRichtung); |
LCD_printfxy(0,2,"Messwert: %5i",KompassValue); |
LCD_printfxy(0,3,"Start: %5i",KompassStartwert); |
break; |
case 9: |
LCD_printfxy(0,0,"Po1: %3i Po5: %3i" ,Poti1,Poti5); |
LCD_printfxy(0,1,"Po2: %3i Po6: %3i" ,Poti2,Poti6); |
LCD_printfxy(0,2,"Po3: %3i Po7: %3i" ,Poti3,Poti7); |
LCD_printfxy(0,3,"Po4: %3i Po8: %3i" ,Poti4,Poti8); |
break; |
case 10: |
LCD_printfxy(0,0,"Servo " ); |
LCD_printfxy(0,1,"Setpoint %3i",Parameter_ServoNickControl); |
LCD_printfxy(0,2,"Stellung: %3i",ServoValue); |
LCD_printfxy(0,3,"Range:%3i-%3i",EE_Parameter.ServoNickMin,EE_Parameter.ServoNickMax); |
break; |
default: MaxMenue = MenuePunkt - 1; |
MenuePunkt = 0; |
break; |
} |
RemoteTasten = 0; |
} |
/branches/Flight-Ctrl/menu.h |
---|
0,0 → 1,5 |
extern void Menu(void); |
extern char DisplayBuff[80]; |
extern unsigned char DispPtr; |
unsigned char RemoteTasten; |
/branches/Flight-Ctrl/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/Flight-Ctrl/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/Flight-Ctrl/printf_P.h |
---|
0,0 → 1,19 |
#ifndef _PRINTF_P_H_ |
#define _PRINTF_P_H_ |
#include <avr/pgmspace.h> |
#define OUT_V24 0 |
#define OUT_LCD 1 |
extern void _printf_P (char, char const *fmt0, ...); |
extern char PrintZiel; |
#define printf_P(format, args...) _printf_P(OUT_V24,format , ## args) |
#define printf(format, args...) _printf_P(OUT_V24,PSTR(format) , ## args) |
#define LCD_printfxy(x,y,format, args...) { DispPtr = y * 20 + x; _printf_P(OUT_LCD,PSTR(format) , ## args);} |
#define LCD_printf(format, args...) { _printf_P(OUT_LCD,PSTR(format) , ## args);} |
#endif |
/branches/Flight-Ctrl/rc.c |
---|
0,0 → 1,85 |
/*####################################################################################### |
Decodieren eines RC Summen Signals |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "rc.h" |
#include "main.h" |
volatile int PPM_in[15]; |
volatile int PPM_diff[15]; // das diffenzierte Stick-Signal |
volatile unsigned char NewPpmData = 1; |
//############################################################################ |
//zum decodieren des PPM-Signals wird Timer1 mit seiner Input |
//Capture Funktion benutzt: |
void rc_sum_init (void) |
//############################################################################ |
{ |
TCCR1B=(1<<CS11)|(1<<CS10)|(1<<ICES1)|(1<<ICNC1);//|(1 << WGM12); //timer1 prescale 64 |
// PWM |
//TCCR1A = (1 << COM1B1) | (1 << WGM11) | (1 << WGM10); |
//TCCR1B |= (1 << WGM12); |
//OCR1B = 55; |
TIMSK1 |= _BV(ICIE1); |
AdNeutralGier = 0; |
AdNeutralRoll = 0; |
AdNeutralNick = 0; |
return; |
} |
//############################################################################ |
//Diese Routine startet und inizialisiert den Timer für RC |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int AltICR=0; |
signed int signal = 0; |
static int index; |
signal = (unsigned int) ICR1 - AltICR; |
AltICR = ICR1; |
//Syncronisationspause? |
if ((signal > 1500) && (signal < 8000)) |
{ |
index = 1; |
NewPpmData = 0; // Null bedeutet: Neue Daten |
// OCR2A = Poti2/2 + 80; |
} |
else |
{ |
if(index < 14) |
{ |
if((signal > 250) && (signal < 687) ) |
{ |
signal -= 466; // Stabiles Signal |
if(abs(signal - PPM_in[index]) < 6) |
{ |
if(SenderOkay < 200) SenderOkay += 10; |
} |
signal = (3 * (PPM_in[index]) + signal) / 4; |
//373 entspricht ca. 1.5ms also Mittelstellung |
PPM_diff[index] = signal - PPM_in[index]; |
PPM_in[index] = signal; |
} |
index++; |
} |
} |
} |
/branches/Flight-Ctrl/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[15]; |
extern volatile int PPM_diff[15]; // das diffenzierte Stick-Signal |
extern volatile unsigned char NewPpmData; |
#endif //_RC_H |
/branches/Flight-Ctrl/timer0.c |
---|
0,0 → 1,139 |
#include "main.h" |
volatile unsigned int CountMilliseconds = 0; |
volatile static unsigned int tim_main; |
volatile unsigned char UpdateMotor = 0; |
volatile unsigned int cntKompass = 0; |
volatile unsigned int beeptime = 0; |
int ServoValue = 0; |
enum { |
STOP = 0, |
CK = 1, |
CK8 = 2, |
CK64 = 3, |
CK256 = 4, |
CK1024 = 5, |
T0_FALLING_EDGE = 6, |
T0_RISING_EDGE = 7 |
}; |
SIGNAL (SIG_OVERFLOW0) // 8kHz |
{ |
static unsigned char cnt_1ms = 1,cnt = 0; |
// TCNT0 -= 250;//TIMER_RELOAD_VALUE; |
if(!cnt--) |
{ |
cnt = 9; |
cnt_1ms++; |
cnt_1ms %= 2; |
if(!cnt_1ms) UpdateMotor = 1; |
CountMilliseconds++; |
if(Timeout) Timeout--; |
} |
if(beeptime > 1) |
{ |
beeptime--; |
PORTD |= (1<<2); |
} |
else |
PORTD &= ~(1<<2); |
if(EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV) |
{ |
if(PINC & 0x10) |
{ |
cntKompass++; |
} |
else |
{ |
if((cntKompass) && (cntKompass < 4000)) |
{ |
KompassValue = cntKompass; |
} |
// if(cntKompass < 10) cntKompass = 10; |
// KompassValue = (unsigned long)((unsigned long)(cntKompass-10)*720L + 1L) / 703L; |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
cntKompass = 0; |
} |
} |
} |
void Timer_Init(void) |
{ |
tim_main = SetDelay(10); |
TCCR0B = CK8; |
TCCR0A = (1<<COM0A1)|(1<<COM0B1)|3;//fast PWM |
OCR0A = 0; |
OCR0B = 120; |
TCNT0 = -TIMER_RELOAD_VALUE; // reload |
//OCR1 = 0x00; |
TCCR2A=(1<<COM2A1)|(1<<COM2A0)|3; |
TCCR2B=(0<<CS20)|(1<<CS21)|(1<<CS22); |
// TIMSK2 |= _BV(TOIE2); |
TIMSK2 |= _BV(OCIE2A); |
TIMSK0 |= _BV(TOIE0); |
OCR2A = 10; |
TCNT2 = 0; |
} |
// ----------------------------------------------------------------------- |
unsigned int SetDelay (unsigned int t) |
{ |
// TIMSK0 &= ~_BV(TOIE0); |
return(CountMilliseconds + t + 1); |
// TIMSK0 |= _BV(TOIE0); |
} |
// ----------------------------------------------------------------------- |
char CheckDelay(unsigned int t) |
{ |
// TIMSK0 &= ~_BV(TOIE0); |
return(((t - CountMilliseconds) & 0x8000) >> 9); |
// TIMSK0 |= _BV(TOIE0); |
} |
// ----------------------------------------------------------------------- |
void Delay_ms(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)); |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Servo ansteuern |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(SIG_OUTPUT_COMPARE2A) |
{ |
static unsigned char timer = 10; |
if(!timer--) |
{ |
TCCR2A=(1<<COM2A1)|(0<<COM2A0)|3; |
ServoValue = Parameter_ServoNickControl; |
if(EE_Parameter.ServoNickCompInvert & 0x01) ServoValue += ((long) EE_Parameter.ServoNickComp * (IntegralNick / 128)) / 512; |
else ServoValue -= ((long) EE_Parameter.ServoNickComp * (IntegralNick / 128)) / 512; |
if(ServoValue < EE_Parameter.ServoNickMin) ServoValue = EE_Parameter.ServoNickMin; |
else if(ServoValue > EE_Parameter.ServoNickMax) ServoValue = EE_Parameter.ServoNickMax; |
DebugOut.Analog[10] = ServoValue; |
OCR2A = ServoValue;// + 75; |
timer = EE_Parameter.ServoNickRefresh; |
} |
else |
{ |
TCCR2A =3; |
PORTD&=~0x80; |
} |
} |
/branches/Flight-Ctrl/timer0.h |
---|
0,0 → 1,14 |
#define TIMER_TEILER CK8 |
#define TIMER_RELOAD_VALUE 250 |
void Timer_Init(void); |
void Delay_ms(unsigned int); |
unsigned int SetDelay (unsigned int t); |
char CheckDelay (unsigned int t); |
extern volatile unsigned int CountMilliseconds; |
extern volatile unsigned char UpdateMotor; |
extern volatile unsigned int beeptime; |
extern volatile unsigned int cntKompass; |
extern int ServoValue; |
/branches/Flight-Ctrl/twimaster.c |
---|
0,0 → 1,131 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
unsigned char twi_state = 0; |
unsigned char motor = 0; |
unsigned char motorread = 0; |
unsigned char motor_rx[8]; |
//############################################################################ |
//Initzialisieren der I2C (TWI) Schnittstelle |
void i2c_init(void) |
//############################################################################ |
{ |
TWSR = 0; |
TWBR = ((SYSCLK/SCL_CLOCK)-16)/2; |
} |
//############################################################################ |
//Start I2C |
char i2c_start(void) |
//############################################################################ |
{ |
TWCR = (1<<TWSTA) | (1<<TWEN) | (1<<TWINT) | (1<<TWIE); |
return(0); |
} |
//############################################################################ |
//Start I2C |
void i2c_stop(void) |
//############################################################################ |
{ |
TWCR = (1<<TWEN) | (1<<TWSTO) | (1<<TWINT); |
} |
//############################################################################ |
//Start I2C |
char i2c_write_byte(char byte) |
//############################################################################ |
{ |
TWSR = 0x00; |
TWDR = byte; |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE); |
return(0); |
} |
//############################################################################ |
//Start I2C |
SIGNAL (TWI_vect) |
//############################################################################ |
{ |
switch (twi_state++) |
{ |
case 0: |
i2c_write_byte(0x52+(motor*2)); |
break; |
case 1: |
switch(motor++) |
{ |
case 0: |
i2c_write_byte(Motor_Vorne); |
break; |
case 1: |
i2c_write_byte(Motor_Hinten); |
break; |
case 2: |
i2c_write_byte(Motor_Rechts); |
break; |
case 3: |
i2c_write_byte(Motor_Links); |
break; |
} |
break; |
case 2: |
i2c_stop(); |
if (motor<4) twi_state = 0; |
else motor = 0; |
i2c_start(); |
break; |
//Liest Daten von Motor |
case 3: |
i2c_write_byte(0x53+(motorread*2)); |
break; |
case 4: |
switch(motorread) |
{ |
case 0: |
i2c_write_byte(Motor_Vorne); |
break; |
case 1: |
i2c_write_byte(Motor_Hinten); |
break; |
case 2: |
i2c_write_byte(Motor_Rechts); |
break; |
case 3: |
i2c_write_byte(Motor_Links); |
break; |
} |
break; |
case 5: //1 Byte vom Motor lesen |
motor_rx[motorread] = TWDR; |
case 6: |
switch(motorread) |
{ |
case 0: |
i2c_write_byte(Motor_Vorne); |
break; |
case 1: |
i2c_write_byte(Motor_Hinten); |
break; |
case 2: |
i2c_write_byte(Motor_Rechts); |
break; |
case 3: |
i2c_write_byte(Motor_Links); |
break; |
} |
break; |
case 7: //2 Byte vom Motor lesen |
motor_rx[motorread+4] = TWDR; |
motorread++; |
if (motorread>3) motorread=0; |
i2c_stop(); |
twi_state = 0; |
} |
} |
/branches/Flight-Ctrl/twimaster.h |
---|
0,0 → 1,32 |
/*############################################################################ |
############################################################################*/ |
#ifndef _I2C_MASTER_H |
#define _I2C_MASTER_H |
//############################################################################ |
// I2C Konstanten |
#define SCL_CLOCK 200000L |
#define I2C_TIMEOUT 30000 |
#define I2C_START 0x08 |
#define I2C_REPEATED_START 0x10 |
#define I2C_TX_SLA_ACK 0x18 |
#define I2C_TX_DATA_ACK 0x28 |
#define I2C_RX_SLA_ACK 0x40 |
#define I2C_RX_DATA_ACK 0x50 |
//############################################################################ |
extern unsigned char twi_state; |
extern unsigned char motor; |
extern unsigned char motorread; |
extern unsigned char motor_rx[8]; |
void i2c_init (void); // I2C initialisieren |
char i2c_start (void); // Start I2C |
void i2c_stop (void); // Stop I2C |
char i2c_write_byte (char byte); // 1 Byte schreiben |
#endif |
/branches/Flight-Ctrl/uart.c |
---|
0,0 → 1,328 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "uart.h" |
unsigned char DebugGetAnforderung = 0,DebugDisplayAnforderung = 0,DebugDataAnforderung = 0,GetVersionAnforderung = 0; |
unsigned volatile char SioTmp = 0; |
unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NMEABuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NeuerDatensatzEmpfangen = 0; |
unsigned volatile char NeueKoordinateEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned volatile char CntCrcError = 0; |
unsigned volatile char AnzahlEmpfangsBytes = 0; |
unsigned volatile char PC_DebugTimeout = 0; |
unsigned char PcZugriff = 100; |
unsigned char MotorTest[4] = {0,0,0,0}; |
unsigned char MeineSlaveAdresse; |
struct str_DebugOut DebugOut; |
struct str_Debug DebugIn; |
struct str_VersionInfo VersionInfo; |
int Debug_Timer; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Sende-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_TX) |
{ |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!UebertragungAbgeschlossen) |
{ |
ptr++; // die [0] wurde schon gesendet |
tmp_tx = SendeBuffer[ptr]; |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
{ |
ptr = 0; |
UebertragungAbgeschlossen = 1; |
} |
UDR = tmp_tx; |
} |
else ptr = 0; |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung, incl. CRC-Auswertung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
SioTmp = UDR; |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
if(SioTmp == '\r' && UartState == 2) |
{ |
UartState = 0; |
crc -= RxdBuffer[buf_ptr-2]; |
crc -= RxdBuffer[buf_ptr-1]; |
crc %= 4096; |
crc1 = '=' + crc / 64; |
crc2 = '=' + crc % 64; |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; CntCrcError++;}; |
if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet |
{ |
NeuerDatensatzEmpfangen = 1; |
AnzahlEmpfangsBytes = buf_ptr; |
RxdBuffer[buf_ptr] = '\r'; |
if(/*(RxdBuffer[1] == MeineSlaveAdresse || (RxdBuffer[1] == 'a')) && */(RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando |
} |
} |
else |
switch(UartState) |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc = SioTmp; |
break; |
case 1: // Adresse auswerten |
UartState++; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
else UartState = 0; |
crc += SioTmp; |
break; |
default: |
UartState = 0; |
break; |
} |
} |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
{ |
tmpCRC += SendeBuffer[i]; |
} |
tmpCRC %= 4096; |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
SendeBuffer[i++] = '\r'; |
UebertragungAbgeschlossen = 0; |
UDR = SendeBuffer[0]; |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
SendeBuffer[pt++] = '#'; // Startzeichen |
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...) |
SendeBuffer[pt++] = cmd; // Commando |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
} |
AddCRC(pt); |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
} |
} |
// -------------------------------------------------------------------------- |
void BearbeiteRxDaten(void) |
{ |
if(!NeuerDatensatzEmpfangen) return; |
unsigned int tmp_int_arr1[1]; |
unsigned int tmp_int_arr2[2]; |
unsigned int tmp_int_arr3[3]; |
unsigned char tmp_char_arr2[2]; |
unsigned char tmp_char_arr3[3]; |
unsigned char tmp_char_arr4[4]; |
//if(!MotorenEin) |
PcZugriff = 255; |
switch(RxdBuffer[2]) |
{ |
case 'c':// Debugdaten incl. Externe IOs usw |
Decode64((unsigned char *) &DebugIn,sizeof(DebugIn),3,AnzahlEmpfangsBytes); |
/* for(unsigned char i=0; i<4;i++) |
{ |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2], DebugIn.Analog[i]); |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2 + 1], DebugIn.Analog[i] >> 8); |
}*/ |
RemoteTasten |= DebugIn.RemoteTasten; |
DebugDataAnforderung = 1; |
break; |
case 'h':// x-1 Displayzeilen |
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes); |
RemoteTasten |= tmp_char_arr2[0]; |
DebugDisplayAnforderung = 1; |
break; |
case 't':// Motortest |
Decode64((unsigned char *) &MotorTest[0],sizeof(MotorTest),3,AnzahlEmpfangsBytes); |
break; |
case 'v': // Version-Anforderung und Ausbaustufe |
GetVersionAnforderung = 1; |
break; |
case 'g':// "Get"-Anforderung für Debug-Daten |
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
DebugGetAnforderung = 1; |
break; |
case 'q':// "Get"-Anforderung für Settings |
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes); |
if(tmp_char_arr2[0] != 0xff) |
{ |
if(tmp_char_arr2[0] > 5) tmp_char_arr2[0] = 5; |
ReadParameterSet(tmp_char_arr2[0], (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
SendOutData('L' + tmp_char_arr2[0] -1,MeineSlaveAdresse,(unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE); |
} |
else |
SendOutData('L' + GetActiveParamSetNumber()-1,MeineSlaveAdresse,(unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE); |
break; |
case 'l': |
case 'm': |
case 'n': |
case 'o': |
case 'p': // Parametersatz speichern |
Decode64((unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE,3,AnzahlEmpfangsBytes); |
WriteParameterSet(RxdBuffer[2] - 'l' + 1, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], RxdBuffer[2] - 'l' + 1); // aktiven Datensatz merken |
Piep(GetActiveParamSetNumber()); |
break; |
} |
// DebugOut.AnzahlZyklen = Debug_Timer_Intervall; |
NeuerDatensatzEmpfangen = 0; |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
if (c == '\n') |
uart_putchar('\r'); |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
//Ausgabe des Zeichens |
UDR = c; |
return (0); |
} |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
//if (ProgramLocation == IN_RAM) Buffer[pos] = wert; |
// else eeprom_write_byte(&EE_Buffer[pos], wert); |
// Buffer[pos] = wert; |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); |
// TX-Interrupt Freigabe |
UCSRB |= (1<<TXCIE); |
//Teiler wird gesetzt |
UBRR=(SYSCLK / (BAUD_RATE * 8L) - 1); |
//UBRR = 33; |
//öffnet einen Kanal für printf (STDOUT) |
//fdevopen (uart_putchar, 0); |
//sbi(PORTD,4); |
Debug_Timer = SetDelay(200); |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
static char dis_zeile = 0; |
if(!UebertragungAbgeschlossen) return; |
if(DebugGetAnforderung && UebertragungAbgeschlossen) // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
{ |
SendOutData('G',MeineSlaveAdresse,(unsigned char *) &DebugIn,sizeof(DebugIn)); |
DebugGetAnforderung = 0; |
} |
if((CheckDelay(Debug_Timer) || DebugDataAnforderung) && UebertragungAbgeschlossen) |
{ |
SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut)); |
DebugDataAnforderung = 0; |
Debug_Timer = SetDelay(MIN_DEBUG_INTERVALL); |
} |
if(DebugDisplayAnforderung && UebertragungAbgeschlossen) |
{ |
Menu(); |
DebugDisplayAnforderung = 0; |
if(++dis_zeile == 4) dis_zeile = 0; |
SendOutData('0' + dis_zeile,0,&DisplayBuff[20 * dis_zeile],20); // DisplayZeile übertragen |
} |
if(GetVersionAnforderung && UebertragungAbgeschlossen) |
{ |
SendOutData('V',MeineSlaveAdresse,(unsigned char *) &VersionInfo,sizeof(VersionInfo)); |
GetVersionAnforderung = 0; |
} |
} |
/branches/Flight-Ctrl/uart.h |
---|
0,0 → 1,93 |
#ifndef _UART_H |
#define _UART_H |
#define MAX_SENDE_BUFF 150 |
#define MAX_EMPFANGS_BUFF 150 |
extern unsigned char DebugGetAnforderung; |
extern unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
extern unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
extern unsigned volatile char UebertragungAbgeschlossen; |
extern unsigned volatile char PC_DebugTimeout; |
extern unsigned volatile char NeueKoordinateEmpfangen; |
extern unsigned char MeineSlaveAdresse; |
extern unsigned char PcZugriff; |
extern int Debug_Timer; |
extern void UART_Init (void); |
extern int uart_putchar (char c); |
extern void boot_program_page (uint32_t page, uint8_t *buf); |
extern void DatenUebertragung(void); |
extern void DecodeNMEA(void); |
extern unsigned char MotorTest[4]; |
struct str_DebugOut |
{ |
unsigned char Digital[13]; |
unsigned int AnzahlZyklen; |
unsigned int Zeit; |
unsigned char Sekunden; |
unsigned int Analog[16]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
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/Flight-Ctrl/version.txt |
---|
0,0 → 1,49 |
------- |
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 |
/branches/chris_hallo2/Flight-Ctrl_MEGA644_V0_60.eep |
---|
0,0 → 1,129 |
:1000000000000000000000000000000000000000F0 |
:1000100000000000000000000000000000000000E0 |
:1000200000000000000000000000000000000000D0 |
:1000300000000000000000000000000000000000C0 |
:1000400000000000000000000000000000000000B0 |
:1000500000000000000000000000000000000000A0 |
:100060000000000000000000000000000000000090 |
:100070000000000000000000000000000000000080 |
:100080000000000000000000000000000000000070 |
:100090000000000000000000000000000000000060 |
:1000A0000000000000000000000000000000000050 |
:1000B0000000000000000000000000000000000040 |
:1000C0000000000000000000000000000000000030 |
:1000D0000000000000000000000000000000000020 |
:1000E0000000000000000000000000000000000010 |
:1000F0000000000000000000000000000000000000 |
:1001000000000000000000000000000000000000EF |
:1001100000000000000000000000000000000000DF |
:1001200000000000000000000000000000000000CF |
:1001300000000000000000000000000000000000BF |
:1001400000000000000000000000000000000000AF |
:10015000000000000000000000000000000000009F |
:10016000000000000000000000000000000000008F |
:10017000000000000000000000000000000000007F |
:10018000000000000000000000000000000000006F |
:10019000000000000000000000000000000000005F |
:1001A000000000000000000000000000000000004F |
:1001B000000000000000000000000000000000003F |
:1001C000000000000000000000000000000000002F |
:1001D000000000000000000000000000000000001F |
:1001E000000000000000000000000000000000000F |
:1001F00000000000000000000000000000000000FF |
:1002000000000000000000000000000000000000EE |
:1002100000000000000000000000000000000000DE |
:1002200000000000000000000000000000000000CE |
:1002300000000000000000000000000000000000BE |
:1002400000000000000000000000000000000000AE |
:10025000000000000000000000000000000000009E |
:10026000000000000000000000000000000000008E |
:10027000000000000000000000000000000000007E |
:10028000000000000000000000000000000000006E |
:10029000000000000000000000000000000000005E |
:1002A000000000000000000000000000000000004E |
:1002B000000000000000000000000000000000003E |
:1002C000000000000000000000000000000000002E |
:1002D000000000000000000000000000000000001E |
:1002E000000000000000000000000000000000000E |
:1002F00000000000000000000000000000000000FE |
:1003000000000000000000000000000000000000ED |
:1003100000000000000000000000000000000000DD |
:1003200000000000000000000000000000000000CD |
:1003300000000000000000000000000000000000BD |
:1003400000000000000000000000000000000000AD |
:10035000000000000000000000000000000000009D |
:10036000000000000000000000000000000000008D |
:10037000000000000000000000000000000000007D |
:10038000000000000000000000000000000000006D |
:10039000000000000000000000000000000000005D |
:1003A000000000000000000000000000000000004D |
:1003B000000000000000000000000000000000003D |
:1003C000000000000000000000000000000000002D |
:1003D000000000000000000000000000000000001D |
:1003E000000000000000000000000000000000000D |
:1003F00000000000000000000000000000000000FD |
:1004000000000000000000000000000000000000EC |
:1004100000000000000000000000000000000000DC |
:1004200000000000000000000000000000000000CC |
:1004300000000000000000000000000000000000BC |
:1004400000000000000000000000000000000000AC |
:10045000000000000000000000000000000000009C |
:10046000000000000000000000000000000000008C |
:10047000000000000000000000000000000000007C |
:10048000000000000000000000000000000000006C |
:10049000000000000000000000000000000000005C |
:1004A000000000000000000000000000000000004C |
:1004B000000000000000000000000000000000003C |
:1004C000000000000000000000000000000000002C |
:1004D000000000000000000000000000000000001C |
:1004E000000000000000000000000000000000000C |
:1004F00000000000000000000000000000000000FC |
:1005000000000000000000000000000000000000EB |
:1005100000000000000000000000000000000000DB |
:1005200000000000000000000000000000000000CB |
:1005300000000000000000000000000000000000BB |
:1005400000000000000000000000000000000000AB |
:10055000000000000000000000000000000000009B |
:10056000000000000000000000000000000000008B |
:10057000000000000000000000000000000000007B |
:10058000000000000000000000000000000000006B |
:10059000000000000000000000000000000000005B |
:1005A000000000000000000000000000000000004B |
:1005B000000000000000000000000000000000003B |
:1005C000000000000000000000000000000000002B |
:1005D000000000000000000000000000000000001B |
:1005E000000000000000000000000000000000000B |
:1005F00000000000000000000000000000000000FB |
:1006000000000000000000000000000000000000EA |
:1006100000000000000000000000000000000000DA |
:1006200000000000000000000000000000000000CA |
:1006300000000000000000000000000000000000BA |
:1006400000000000000000000000000000000000AA |
:10065000000000000000000000000000000000009A |
:10066000000000000000000000000000000000008A |
:10067000000000000000000000000000000000007A |
:10068000000000000000000000000000000000006A |
:10069000000000000000000000000000000000005A |
:1006A000000000000000000000000000000000004A |
:1006B000000000000000000000000000000000003A |
:1006C000000000000000000000000000000000002A |
:1006D000000000000000000000000000000000001A |
:1006E000000000000000000000000000000000000A |
:1006F00000000000000000000000000000000000FA |
:1007000000000000000000000000000000000000E9 |
:1007100000000000000000000000000000000000D9 |
:1007200000000000000000000000000000000000C9 |
:1007300000000000000000000000000000000000B9 |
:1007400000000000000000000000000000000000A9 |
:100750000000000000000000000000000000000099 |
:100760000000000000000000000000000000000089 |
:100770000000000000000000000000000000000079 |
:100780000000000000000000000000000000000069 |
:100790000000000000000000000000000000000059 |
:1007A0000000000000000000000000000000000049 |
:1007B0000000000000000000000000000000000039 |
:1007C0000000000000000000000000000000000029 |
:1007D0000000000000000000000000000000000019 |
:1007E0000000000000000000000000000000000009 |
:1007F00000000000000000000000000000000000F9 |
:00000001FF |
/branches/chris_hallo2/Flight-Ctrl_MEGA644_V0_60.elf |
---|
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/chris_hallo2/Flight-Ctrl_MEGA644_V0_60.hex |
---|
0,0 → 1,1457 |
:100000000C94D9010C94F6010C94F6010C94F601B1 |
:100010000C94F6010C94F6010C94F6010C94F60184 |
:100020000C94F6010C94100C0C94F6010C94F6014F |
:100030000C94E1140C94F6010C94F6010C94F60166 |
:100040000C94F6010C94F6010C94670B0C94F601D9 |
:100050000C9443040C94F6010C9492030C94F60156 |
:100060000C94FC0C0C94F6010C942E140C94F601D8 |
:100070000A0A0D004E65757472616C004865616412 |
:10008000696E67486F6C64000A0D5374657565721C |
:10009000756E673A20004F4B0A0D000A0D416267EA |
:1000A0006C65696368204C756674647275636B7304 |
:1000B000656E736F722E2E000A0D42656E75747A2E |
:1000C0006520506172616D657465727361747A2028 |
:1000D0002564000A0D496E69742E20454550524F23 |
:1000E0004D3A2047656E65726965726520446566A4 |
:1000F00061756C742D506172616D657465722E2E20 |
:100100002E000A0D3D3D3D3D3D3D3D3D3D3D3D3DCE |
:100110003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D0F |
:100120003D3D000A0D466C69676874436F6E7472DA |
:100130006F6C205625642E256420002E0052616EBF |
:1001400067653A2533692D253369005374656C6CF6 |
:10015000756E673A2025336900536574706F696E58 |
:1001600074202025336900536572766F202000507B |
:100170006F7469343A202025336900506F746933F5 |
:100180003A202025336900506F7469323A202025C7 |
:10019000336900506F7469313A2020253369005368 |
:1001A000746172743A2020202020253569004D6545 |
:1001B0007373776572743A2020253569005269633C |
:1001C0006874756E673A2020253569004B6F6D7035 |
:1001D0006173732020202020202000456D70662E42 |
:1001E000506567656C3A253569005370616E6E75B0 |
:1001F0006E673A202025356900486F6368202534F2 |
:100200006920282533692900526F6C6C20253469D8 |
:10021000202825336929004E69636B202534692025 |
:10022000282533692900414343202D2053656E73EF |
:100230006F7200476965722025346920282533696B |
:100240002900526F6C6C20253469202825336929D8 |
:10025000004E69636B202534692028253369290005 |
:100260004779726F202D2053656E736F7200503383 |
:100270003A25346920204B616EE46C6520005031D2 |
:100280003A253469202050323A25346920004773DA |
:100290003A253469202047693A25346920004E699F |
:1002A0003A2534692020526F3A25346920004B37B3 |
:1002B0003A25346920204B616EE46C6520004B3593 |
:1002C0003A25346920204B363A25346920004B33D7 |
:1002D0003A25346920204B343A25346920004B31CB |
:1002E0003A25346920204B323A25346920004B6F7F |
:1002F0006D706173733A20202025356900526F6C50 |
:100300006C3A202020202020253569004E69636B3F |
:100310003A20202020202025356900616B742E2092 |
:100320004C6167650048F668656E726567656C7557 |
:100330006E67004B65696E6520004F666620202061 |
:100340002020203A20253569004C7566746472754A |
:10035000636B3A2025356900536F6C6C486F656894 |
:10036000653A2025356900486F6568653A20202088 |
:1003700020202535690028632920486F6C67657245 |
:1003800020427573730053657474696E673A202553 |
:100390006420005625642E2564002B2B204D696BAC |
:1003A000726F4B6F70746572202B2B005B25695D3B |
:1003B000000011241FBECFEFD0E1DEBFCDBF11E0A2 |
:1003C000A0E0B1E0E0E7FAE502C005900D92AE389A |
:1003D000B107D9F715E0AEE8B1E001C01D92AD3B21 |
:1003E000B107E1F70E942D020C94372D0C94000008 |
:1003F000A2E0B0E00E94232D802D99270895FB01F3 |
:10040000282F863008F025E0842F9927429FD001BD |
:100410001124AC59BF4F019724F001900E942B2D5D |
:10042000FACFA2E0B0E0022E0E942B2D0895CF93C8 |
:10043000DF93FB01C42FDD27863008F085E0489F5D |
:10044000D0011124AC59BF4F219724F00E94232DD5 |
:100450000192FACFDF91CF9108950F931F93CF931D |
:10046000DF9391E097B98FEF88B98BE184B995B9A3 |
:100470008EE38AB9579A87EF8BB984B7877F84BF99 |
:10048000809160008861809360001092600080ED30 |
:1004900097E09093AC018093AB0110922D021092E3 |
:1004A0002C02109246051092450510922B021092D4 |
:1004B0002A02109229021092280228980E94BD0C4C |
:1004C0000E942D070E94CC140E94F60C0E94141466 |
:1004D0007894109200048CE38093010484E080936C |
:1004E00002048CE390E09F938F931F921F9283E20C |
:1004F00091E09F938F931F920E94C30882E091E046 |
:100500009F938F931F920E94C308299AA1E0B0E0A5 |
:100510000E94232D802D2DB73EB7265F3F4F0FB68B |
:10052000F8943EBF0FBE2DBF8B33A9F183ED90E051 |
:100530009F938F931F920E94C3080E94971C4AE3C7 |
:100540006DE675E080E00E94FF0101E00F900F90E2 |
:100550000F90023049F40E942A1C4AE36DE675E0D0 |
:1005600082E00E94FF0103E04AE36DE675E0802F20 |
:100570000E94FF010F5F063060F381E022E030E06F |
:10058000D901082E0E942B2D8BE321503040D90138 |
:10059000082E0E942B2D02E010E0D8010E94232D8E |
:1005A000802D4AE36DE675E00E941702D8010E9493 |
:1005B000232D802D99279F938F9388EB90E09F9315 |
:1005C0008F931F920E94C308809175050F900F9022 |
:1005D0000F900F900F9080FF20C08BE990E09F93C9 |
:1005E0008F931F920E94C30884EC99E00E94FB0B3A |
:1005F000EC010E9420100F900F900F90CE010E94EE |
:10060000040C8823D9F386E990E09F938F931F927F |
:100610000E94C3080F900F900F900E944F1D2898C2 |
:1006200080ED97E09093AC018093AB0188EE93E06E |
:100630009093FB038093FA0385E58093F50388E8A4 |
:1006400090E09F938F931F920E94C308809175053D |
:100650000F900F900F9082FF03C08CE790E002C0D4 |
:1006600084E790E09F938F931F920E94C3080F909E |
:100670000F900F9080E790E09F938F931F920E94BE |
:10068000C3080E9447100F900F900F908091A8010F |
:10069000882379F11092A8010E94601E0E94081D13 |
:1006A000289880910101882319F0815080930101DD |
:1006B00080912702882329F080912702815080931E |
:1006C0002702209104013091050180918505992729 |
:1006D0002817390734F480ED97E09093AC018093AC |
:1006E000AB018091D601882319F40E94141401C033 |
:1006F00028980E944A070E94B80780E090E00E9474 |
:10070000040C882319F280912E02882329F088B1E5 |
:1007100090E1892788B901C0449884EF91E00E9454 |
:10072000FB0BB4CF1F920F920FB60F9211248F9331 |
:100730009F93EF93FF93809100018823E1F48091D0 |
:10074000A3019091A40101969093A4018093A30129 |
:10075000FC01EB54FD4FE081ED3019F08639910535 |
:1007600039F41092A4011092A30181E0809300015A |
:10077000E093C60004C01092A4011092A301FF915F |
:10078000EF919F918F910F900FBE0F901F90189532 |
:100790008091D704813091F58091C7049091C8046D |
:1007A000A091C904B091CA0480930A0590930B05E7 |
:1007B000A0930C05B0930D058091CB049091CC04CF |
:1007C000A091CD04B091CE0480930E0590930F05B7 |
:1007D000A0931005B09311058091CF049091D0049F |
:1007E000A091D104B091D204809312059093130587 |
:1007F000A0931405B09315051092D7048091F403CB |
:10080000813031F48091E803809322051092F40343 |
:1008100080912404813091F5809114049091150405 |
:10082000A0911604B09117048093160590931705B4 |
:10083000A0931805B093190580911804909119049C |
:10084000A0911A04B0911B0480931A0590931B0584 |
:10085000A0931C05B0931D0580911C0490911D046C |
:10086000A0911E04B0911F0480931E0590931F0554 |
:10087000A0932005B09321051092240480912205B5 |
:100880008111289A08951F920F920FB60F9211248A |
:100890002F933F934F935F936F937F938F939F9388 |
:1008A000AF93BF93CF93DF93EF93FF938091C600F5 |
:1008B000809392018091C00040919201887109F06B |
:1008C00005C18091A501843009F48AC0853050F4B7 |
:1008D0008130D1F0813098F0823001F1833009F01D |
:1008E000F2C021C0863009F4ABC0863008F48CC059 |
:1008F000873009F4D6C0883009F0E5C0D8C0453B40 |
:1009000009F0E8C081E003C0423621F482E0809320 |
:10091000A501E0C0453B09F4DDC0D5C0413009F078 |
:10092000D2C083E0F4CF409324054F5F4093B402DC |
:100930008091B4028F5F8093E30384E08093A501EC |
:1009400080912405833031F0813161F1813009F0EB |
:100950003FC014C084EE93E090930F0480930E0484 |
:1009600025E035E03093B2022093B1024096909397 |
:10097000BC048093BB048091F40327C083EC94E013 |
:1009800090930F0480930E042CE736E03093B2026C |
:100990002093B10244969093BC048093BB04809151 |
:1009A000D70413C080E194E090930F0480930E0469 |
:1009B00029EC35E03093B2022093B1024496909333 |
:1009C000BC048093BB04809124048093250582C0DD |
:1009D00081E0809325051092BC041092BB047AC07C |
:1009E000842F99279093BE048093BD048091B40214 |
:1009F000840F8093B4028091E3039091B402890F35 |
:100A00008093E30385E083CF2091BD043091BE0441 |
:100A1000842F9927982F8827280F391F3093BE04D9 |
:100A20002093BD048091B402840F8093B40280911E |
:100A3000E3039091B402890F8093E30386E067CFCC |
:100A40008091B402840F8093B4028091E30390916B |
:100A5000B402890F8093E30380912505882381F4F4 |
:100A6000E0910E04F0910F048091B1029091B202D6 |
:100A7000E817F90728F44193F0930F04E0930E046C |
:100A80008091BD049091BE0401979093BE04809321 |
:100A9000BD048091BD049091BE04892BD9F487E0F8 |
:100AA00036CF8091B402481771F488E030CF80913E |
:100AB000E303481741F4E091BB04F091BC04309784 |
:100AC00011F081E080831092A50104C01092A5016D |
:100AD0000E94C8030E94C80340919E01463910F04D |
:100AE00010929D01809192018D3009F05CC080913F |
:100AF0009D01823009F057C010929D01A42FBB27A1 |
:100B0000FD01ED5DFB4F3081ED01CC5DDB4F2881B8 |
:100B10008091A1019091A201831B9109821B9109EF |
:100B20009F709093A2018093A1019C0196E036955D |
:100B300027959A95E1F7235C2093A001982F9F7346 |
:100B4000935C90939F018081281729F488819817DE |
:100B500011F491E006C0809195018F5F809395011B |
:100B600090E080919301882309F064C0992309F4EF |
:100B700061C081E08093930140939601AB5DBB4FD0 |
:100B80008DE08C9380912704823509F053C088E171 |
:100B900090E02CE00FB6F894A895809360000FBE0B |
:100BA0002093600047C080919D018130D9F0813051 |
:100BB00018F08230E9F530C080919201833239F427 |
:100BC00080919301882319F481E080939D018091A5 |
:100BD00092018093250481E080939E01809192018F |
:100BE000992715C082E080939D01E42FFF27809113 |
:100BF0009201EB5DFB4F80834F5F40939E012091FC |
:100C000092018091A1019091A201820F911D909378 |
:100C1000A2018093A1010EC0E42FFF2780919201D1 |
:100C2000EB5DFB4F8083463938F310929D01E7CF8F |
:100C300010929D01FF91EF91DF91CF91BF91AF9104 |
:100C40009F918F917F916F915F914F913F912F91E4 |
:100C50000F900FBE0F901F901895DC0120E030E040 |
:100C600040E050E0E5EBF2E005C08191280F311D36 |
:100C70004F5F5F4F4A175B07C1F73F70C90166E0DE |
:100C8000969587956A95E1F7835CFD01EB54FD4FDE |
:100C9000808311962F73235CFD01EB54FD4F20835D |
:100CA000AA54BD4F8DE08C93109200018091B50243 |
:100CB0008093C6000895EF92FF920F931F93CF93F6 |
:100CC000DF937A01722F93E29093B5026093B6029C |
:100CD0008093B70203E010E060E0A8EBB2E046C00A |
:100CE000F701E60FF11D90816F5F715019F4E0E09C |
:100CF00040E00FC0F701E60FF11D40816F5F7150BA |
:100D000011F4E0E006C0F701E60FF11DE0816F5F2E |
:100D10007150892F86958695835C8C935527892FF2 |
:100D200099278370907024E0880F991F2A95E1F726 |
:100D30009A0194E0369527959A95E1F7822B835C8A |
:100D4000ED0189834F705070440F551F440F551F9C |
:100D50008E2F8295869586958370842B835C8A83FB |
:100D6000EF73E35CEB830C5F1F4F1496772309F05E |
:100D7000B7CFC8010E942D06DF91CF911F910F912F |
:100D8000FF90EF9008951F93CF93DF93EC0170E0F5 |
:100D9000A22FBB27129748C0E42FFF27EB5DFB4F24 |
:100DA00030814F5FE42FFF27EB5DFB4F50814F5F9A |
:100DB000E42FFF27EB5DFB4F10814F5FE42FFF27F0 |
:100DC000EB5DFB4F20814F5F842F9927A817B90750 |
:100DD00074F15D53FE01E70FF11D3D53330F330FE7 |
:100DE000852F82958F70382B3083613001F1912FE0 |
:100DF0009D537F5FFE01E70FF11D71505295507FAB |
:100E0000892F86958695582B508363506F3F79F0D4 |
:100E10007E5FFE01E70FF11D9295990F990F907C6F |
:100E20002D53922B90837F5F662309F0B5CFDF911E |
:100E3000CF911F9108951F93182F8A3019F48DE0D8 |
:100E40000E941B078091C00085FFFCCF1093C60055 |
:100E500080E090E01F9108950895E1ECF0E088E1D2 |
:100E60008083A0ECB0E08C9182608C93808180685C |
:100E700080838081806480838AE28093C40088ECD0 |
:100E800090E00E94FB0B9093E2038093E1031092A9 |
:100E9000A501089580910001882309F468C080911C |
:100EA0008E01882371F080910001882351F02BE09E |
:100EB00045EF53E06091B30287E40E945B06109215 |
:100EC0008E018091E1039091E2030E94040C88233B |
:100ED00021F4809190018823B1F080910001882352 |
:100EE00091F022E348ED54E06091B30284E40E9463 |
:100EF0005B06109290018AEF90E00E94FB0B9093AA |
:100F0000E2038093E10380918F018823F1F08091C7 |
:100F100000018823D1F00E94501010928F0180911F |
:100F20009C018F5F80939C01843011F410929C018E |
:100F300080919C0144E1849FA00111244A5E5E4F90 |
:100F400024E160E0805D0E945B068091910188232E |
:100F500071F080910001882351F02AE040E054E0D4 |
:100F60006091B30286E50E945B061092910108959C |
:100F70001F93CF93DF93CDB7DEB722970FB6F894C8 |
:100F8000DEBF0FBECDBF80919301882309F498C0C6 |
:100F90008FEF8093010180912704813760F48C36B4 |
:100FA00008F06FC0873609F440C08836F9F0833600 |
:100FB00009F084C008C0843759F1863791F1813730 |
:100FC00009F07CC036C02091960143E06BE085EFCC |
:100FD00093E00E94C3068091CD019091F703892B85 |
:100FE0008093CD0181E08093900168C020919601AB |
:100FF00043E062E0CE0101960E94C3068091CD01DC |
:101000009981892B8093CD0181E080938F0156C017 |
:101010002091960143E064E088E991E00E94C306D4 |
:101020004DC081E08093910149C081E080938E01A1 |
:1010300045C02091960143E062E0CE0101960E94F6 |
:10104000C30689818F3F89F0863010F085E089835F |
:101050004AE36DE675E089810E94170289812AE3DF |
:101060004DE655E06091B30208C01091B3020E94B2 |
:10107000F8012AE34DE655E0612F855B0E945B068F |
:101080001DC02091960143E06AE38DE695E00E9441 |
:10109000C306809127044AE36DE675E08B560E94F3 |
:1010A000FF01809127048B56A2E0B0E0082E0E9439 |
:1010B0002B2D0E94F80199270E944B1E109293013C |
:1010C00022960FB6F894DEBF0FBECDBFDF91CF9151 |
:1010D0001F910895982F80912605813069F48091A1 |
:1010E000CC01E82FFF27EA5EFE4F90838F5F80934D |
:1010F000CC0121E030E005C0892F0E941B07282F7A |
:101100003327C90108951F93182F04C080E30E945C |
:101110006A0811501116D4F31F9108951F93182FC8 |
:1011200004C080E20E946A0811501116D4F31F9186 |
:1011300008950F931F93CF93DF938C01EB0108C0A9 |
:10114000F8010F5F1F4FE4918E2F0E946A082197CC |
:101150002097B1F7DF91CF911F910F9108950F93D1 |
:101160001F93CF93DF938C01EB0106C0F8018191AF |
:101170008F010E946A0821972097C1F7DF91CF91D4 |
:101180001F910F9108952F923F924F925F926F920D |
:101190007F928F929F92AF92BF92CF92DF92EF9207 |
:1011A000FF920F931F93CF93DF93CDB7DEB7E397F3 |
:1011B0000FB6F894DEBF0FBECDBF29968FAD29972D |
:1011C00080932605CE01855B9F4F9D838C832B9654 |
:1011D0008EAD9FAD2B979FA78EA72224332421018C |
:1011E00002C0130124010EA51FA502C00F5F1F4FEF |
:1011F000F801F490FF2019F0F5E2FF16B9F7B801F5 |
:101200008EA59FA5681B790B11F00E949908FF20FD |
:1012100009F444C20F5F1F4F1FA70EA71982AC81AC |
:10122000BD811BAA1AAA9FEF99ABEEA5FFA5CF011E |
:1012300001969FA78EA7B49095E7B91621F08B2D44 |
:101240008062883789F4EBA9E0FF07C02D903D90BC |
:101250004D905C901397149607C08D919C911197B7 |
:101260001C01442455241296F0E2BF1621F4898112 |
:101270008823D9F685C083E2B81609F483C09AE2C0 |
:10128000B91621F0EDE2BE1669F408C0FD01129610 |
:10129000E081EAABE7FFC9CFE195EAABFBA9F061DA |
:1012A000FF7D72C08BE2B81609F46AC09EE2B916DF |
:1012B000B1F52EA53FA52F5F3F4FEEA5FFA5849169 |
:1012C0008A3221F0B82E20E030E01BC0FD011296DA |
:1012D0004081518157FF02C04FEF5FEF49AB3FA7FD |
:1012E0002EA7A3CFC90103E0880F991F0A95E1F744 |
:1012F000220F331F280F391F2B0D311D2053304073 |
:10130000B49031968B2D80538A3060F3FFA7EEA7FF |
:10131000A90137FF02C04FEF5FEF49AB8DCFF0E37C |
:10132000BF1631F48BA984FD80CF80628BAB7DCF5B |
:101330008B2D81538930E8F420E030E0C901F3E0DF |
:10134000880F991FFA95E1F7220F331F280F391FD5 |
:101350002B0D311D20533040EEA5FFA5CF01019686 |
:101360009FA78EA7B4908B2D80538A3038F32AAB79 |
:1013700063CF98E6B91651F4EBA9E460EBAB55CF17 |
:10138000B98253CFFBA9F860FBAB4FCF8CE6B81600 |
:1013900021F49BA991609BAB48CFBD83AC83E3E66E |
:1013A000BE1639F41296BD83AC8312978C918E834E |
:1013B0001AC1F4E4BF1639F084E6B81639F099E69C |
:1013C000B91659F503C0EBA9E160EBABFBA9F0FF3F |
:1013D00008C01496BD83AC835E904E903E902E90D4 |
:1013E0000AC01296BD83AC839E918E911C01442449 |
:1013F00037FC4094542C57FC03C08AE088AB94C05F |
:101400005094409430942094211C311C411C511C58 |
:101410008DE289839AE098AB87C0EFE4BE1629F08D |
:10142000FFE6BF1639F488E063C09BA991609BABCF |
:10143000E8E058C0F0E7BF1681F41296BD83AC8394 |
:101440009E918E911C01442455248BA980648BAB02 |
:1014500090E198AB78E7B72E66C0E3E7BE16D9F502 |
:101460001296BD83AC83DE90CE90C114D10489F472 |
:1014700088E28E838EE68F8385E788878CE689876E |
:101480008A8789E28B871C8666E0C62ED12CCC0E1B |
:10149000DD1EF9A9F7FD13C04F2F552747FD5095C5 |
:1014A00060E070E0C6010E94D12A009711F419A9EA |
:1014B0000DC08C1919A981174CF4182F07C0F6011B |
:1014C00001900020E9F731971E2F1C191982420163 |
:1014D000310140E094C085E5B81631F095E7B916C2 |
:1014E00049F4EAE0E8AB1FC0FBA9F160FBAB8AE07E |
:1014F00088AB19C098E5B91621F0E8E7BE1609F0E7 |
:101500006EC0FBA9F3FD02C080E1F2CF21143104CB |
:101510004104510419F490E198AB05C0EBA9E064D3 |
:10152000EBABF0E1F8AB198289A987FD03C09BA959 |
:101530009F7D9BAB211431044104510461F4E9A95E |
:10154000EE2349F46624772443015EE2C52ED12CB4 |
:10155000CC0EDD1E3EC04EE2C42ED12CCC0EDD1EC4 |
:10156000F8A9EF2EFF2400271127C201B101A8011D |
:1015700097010E94E62C6A3020F430E3A32EA60ED9 |
:1015800008C027E5A22EA60E88E5B81611F49FED37 |
:10159000A922F601A2926F01C201B101A80197012F |
:1015A0000E94E62C39014A012E143F0440065106E0 |
:1015B00018F019012A01D9CFF8A9F83051F48BA9F4 |
:1015C00083FF07C090E3A91621F080E3F601829320 |
:1015D0006F01CE018C19182F125D49A910C0BB20D4 |
:1015E00009F45CC0BE8219824201310100E011E0C1 |
:1015F00096E0C92ED12CCC0EDD1E21E005C0212F96 |
:10160000042F011B07FD00E08981882319F0812F39 |
:101610008F5F07C09BA996FD02C0812F02C0822F59 |
:101620008E5FA82EA00EEBA9EE2EFF2480E3482E9D |
:10163000512C4E205F204114510421F48AA98A19AB |
:101640000E948E088981882329F061E070E0CE0134 |
:10165000019609C0E6FE09C080E38A83BB8262E08E |
:1016600070E0CE0102960E94AF08F0E24F165104DE |
:1016700021F48AA98A190E948308802F0E94830876 |
:10168000612F772767FD7095C6010E94AF08E4FEC1 |
:10169000A8CD8AA98A190E948E08A3CDE3960FB619 |
:1016A000F894DEBF0FBECDBFDF91CF911F910F9198 |
:1016B000FF90EF90DF90CF90BF90AF909F908F9072 |
:1016C0007F906F905F904F903F902F9008951F9262 |
:1016D0000F920FB60F9211242F933F935F936F9346 |
:1016E0007F938F939F93AF93BF938091AF0181506E |
:1016F0008093AF018F3F01F589E08093AF01809126 |
:1017000003018F5F817080930301882319F481E0C6 |
:101710008093A8018091A6019091A70101969093D2 |
:10172000A7018093A6018091D601882329F080919A |
:10173000D60181508093D6018091AB019091AC018C |
:10174000029758F08091AB019091AC010197909372 |
:10175000AC018093AB015A9A01C05A9880917505EB |
:1017600083FF3BC0349B0AC08091A9019091AA01DC |
:1017700001969093AA018093A9012FC08091A9019D |
:101780009091AA01892B79F08091A9019091AA01E9 |
:10179000805A9F4040F48091A9019091AA019093B2 |
:1017A00018028093170280911702909118022091DD |
:1017B000190230911A02821B930B845E9D4F68E6DA |
:1017C00071E00E94D32C845B904090931C02809324 |
:1017D0001B021092AA011092A901BF91AF919F9193 |
:1017E0008F917F916F915F913F912F910F900FBEDD |
:1017F0000F901F9018952091A6013091A7012F5F9F |
:101800003F4F820F931F08952091A6013091A701A9 |
:10181000821B930B892F99278695807499270895A9 |
:101820001F920F920FB60F921124EF92FF920F9317 |
:101830001F932F933F934F935F936F937F938F9358 |
:101840009F93AF93BF93CF93DF93EF93FF938091D9 |
:1018500002018150809302018F3F09F073C083E839 |
:101860008093B00080918901C82FDD27D093AE010D |
:10187000C093AD0180919305E0908F0580FF1EC05D |
:101880006091E7017091E8018091E9019091EA018E |
:10189000FF240027112720E830E040E050E00E94BC |
:1018A000082DC801B7010E94A02C20E032E040E0E2 |
:1018B00050E00E94082DC20FD31F1DC06091E701A8 |
:1018C0007091E8018091E9019091EA01FF240027DD |
:1018D000112720E830E040E050E00E94082DC801C8 |
:1018E000B7010E94A02C20E032E040E050E00E94CE |
:1018F000082DC21BD30BD093AE01C093AD01209134 |
:10190000AD013091AE0180919005992728173907D4 |
:1019100034F08091910599278217930724F49093CE |
:10192000AE018093AD018091AD019091AE01909395 |
:10193000FF048093FE048093B3008091920580930E |
:10194000020104C083E08093B0005F98FF91EF91A3 |
:10195000DF91CF91BF91AF919F918F917F916F91C7 |
:101960005F914F913F912F911F910F91FF90EF90B9 |
:101970000F900FBE0F901F9018958091A601909127 |
:10198000A7010B969093B1018093B00182E085BDD1 |
:1019900083EA84BD17BC88E788BD96E096BD83ECDA |
:1019A0008093B0009093B100E0E7F0E08081826026 |
:1019B0008083EEE6F0E08081816080838AE080931E |
:1019C000B3001092B20008952091A6013091A701B2 |
:1019D0002F5F3F4F280F391F8091A6019091A701DB |
:1019E000A901481B590B57FFF7CF089510927C00AF |
:1019F0008FEE80937A0008951F920F920FB60F9288 |
:101A00001124EF92FF920F931F932F933F934F93C5 |
:101A10005F936F937F938F939F93AF93BF93CF9376 |
:101A2000DF93EF93FF9310927A004091C8014F5FCC |
:101A30004093C8014150433009F41CC1443038F48C |
:101A4000413009F463C0423008F0B9C00DC04530E0 |
:101A500009F450C1453008F42AC1463009F46FC179 |
:101A6000473009F0CBC252C22091DB013091DC013A |
:101A70008091780090917900281B390B8091B601F4 |
:101A80009091B701820F931F9093B7018093B60195 |
:101A90008091C0018F5F8093C00180910B02909173 |
:101AA0000C02A0910D02B0910E02442737FD409523 |
:101AB000542F820F931FA41FB51F80930B02909386 |
:101AC0000C02A0930D02B0930E0280910F02909130 |
:101AD0001002A0911102B0911202820F931FA41F55 |
:101AE000B51F80930F0290931002A0931102B09340 |
:101AF000120281E08093C9018091C6019091C701D3 |
:101B000001969093C7018093C6017CC260917800D2 |
:101B1000709179008091D9019091DA01681B790B5D |
:101B20008091030290910402A0910502B0910602F7 |
:101B30009B01442737FD4095542F820F931FA41F0C |
:101B4000B51F8093030290930402A0930502B09303 |
:101B500006028091070290910802A0910902B091BB |
:101B60000A02820F931FA41FB51F80930702909350 |
:101B70000802A0930902B0930A0280917800909124 |
:101B800079000A9710F464E47DEF809178009091D9 |
:101B90007900895E934010F06CEB72E08091B401A3 |
:101BA0009091B501860F971F9093B5018093B40172 |
:101BB0008091BF018F5F8093BF0182E058C0609128 |
:101BC0007800709179008091D7019091D801681BBD |
:101BD000790B8091FB019091FC01A091FD01B091E6 |
:101BE000FE019B01442737FD4095542F820F931F20 |
:101BF000A41FB51F8093FB019093FC01A093FD01EE |
:101C0000B093FE018091FF0190910002A09101022A |
:101C1000B0910202820F931FA41FB51F8093FF0192 |
:101C200090930002A0930102B09302028091780089 |
:101C3000909179000A9710F464E47DEF8091780028 |
:101C400090917900895E934010F06CEB72E0809186 |
:101C5000B2019091B301860F971F9093B3018093C7 |
:101C6000B2018091BE018F5F8093BE0184E08093BA |
:101C7000C901C8C1409104015091050180917800CB |
:101C8000909179009A01220F331F240F351F63E0D2 |
:101C900070E00E94BF2C260F371F3695279536958A |
:101CA0002795309305012093040186E0E0CF8091D1 |
:101CB000DF019091E0012091780030917900821B42 |
:101CC000930B90932805809327058091B8019091FC |
:101CD000B9012091270530912805820F931F909319 |
:101CE000B9018093B8018091C2018F5F8093C201D6 |
:101CF00087E0BDCF80917800909179002091DD013F |
:101D00003091DE01821B930B909328058093270569 |
:101D10008091BA019091BB0120912705309128054F |
:101D2000820F931F9093BB018093BA018091C101F0 |
:101D30008F5F8093C1014093C90186E0E4C0609148 |
:101D4000780070917900E090E101F090E20100915B |
:101D5000E3011091E401882777FD8095982F0E9478 |
:101D6000842BA80197010E94DE2A0E94672B7093A2 |
:101D7000BD016093BC012091BC013091BD01E09197 |
:101D80002705F0912805809132059091330597FF42 |
:101D900003C0909581959F4F64E070E00E94D32C22 |
:101DA000EB01CF01F7FF03C0909581959F4F64E051 |
:101DB00070E00E94D32C260F371F2C0F3D1F30934D |
:101DC000BD012093BC018091BC019091BD0102979F |
:101DD00004F16091E1017091E2018091E301909141 |
:101DE000E40120E030E048E454E40E948E2B882394 |
:101DF0000CF03CC06091E1017091E2018091E3013F |
:101E00009091E4012AE037ED43EA5CE30E94DF2A87 |
:101E100025C08091BC019091BD018F5F9F4F34F52B |
:101E20006091E1017091E2018091E3019091E40100 |
:101E300020E030E046E154E40E94912B1816B4F4FF |
:101E40006091E1017091E2018091E3019091E401E0 |
:101E50002AE037ED43EA5CE30E94DE2A6093E10169 |
:101E60007093E2018093E3019093E40181E0809319 |
:101E7000C301809178009091790090932A05809316 |
:101E800029052091130230911402409115025091BE |
:101E900016028091BC019091BD01AA2797FDA095E3 |
:101EA000BA2F280F391F4A1F5B1F2093130230934C |
:101EB00014024093150250931602E0901302F09022 |
:101EC0001402009115021091160260911302709194 |
:101ED0001402809115029091160220E034E040E057 |
:101EE00050E00E94082DE21AF30A040B150BE09251 |
:101EF0001302F0921402009315021093160283E06D |
:101F00008093C90187E08093C8017CC08091370528 |
:101F1000909138052091780030917900820F931FBD |
:101F2000909338058093370580912F058F5F8093BC |
:101F30002F0580912F05853008F460C080917800CE |
:101F40009091790090930B0180930A0110922F05D4 |
:101F500080912B0590912C05209137053091380503 |
:101F6000821B930B20912F0230913002821B930B26 |
:101F70009093C5018093C401609137057091380535 |
:101F8000E0900601F090070100910801109109010D |
:101F9000882777FD8095982FA8019701220F331F7E |
:101FA000441F551F2E0D3F1D401F511F620F731FF1 |
:101FB000841F951F24E030E040E050E00E94082D8F |
:101FC00020930601309307014093080150930901C3 |
:101FD00020912B0530912C058091060190910701ED |
:101FE000A0910801B0910901281B390B30933002F0 |
:101FF00020932F0210923805109237051092C901D4 |
:102000001092C8018091C90180937C008FEE80936B |
:102010007A00FF91EF91DF91CF91BF91AF919F91A6 |
:102020008F917F916F915F914F913F912F911F9170 |
:102030000F91FF90EF900F900FBE0F901F9018958B |
:10204000CF93DF93C0E0D0E0C7BD82E390E00E9471 |
:10205000E40C8BE391E09F938F931F920E94C3083F |
:1020600080910A0190910B010F900F900F9084586E |
:10207000934020F02196CA3FD10531F7C093340533 |
:1020800088EC90E00E94E40CDF91CF910895E6E1A6 |
:10209000F1E080E2819391E0E636F907D9F70895FF |
:1020A000FF920F931F938091CD01282F3327C901F1 |
:1020B00081709070682F882391F08091CE018823E1 |
:1020C00011F0815002C0809166018093CE01E6E15B |
:1020D000F1E080E2819391E0E636F907D9F7A901B2 |
:1020E0004270507021FF0DC08091CE018F5F8093B0 |
:1020F000CE01E6E1F1E080E2819391E0E636F90776 |
:10210000D9F7662321F0452B11F01092CE0181E121 |
:102110008093CC018091CE0199279F938F938CEA75 |
:1021200093E09F938F93E1E0FE2EFF920E94C308FD |
:102130000091CE010F900F900F900F900F900530EF |
:1021400009F4D7C1063090F4023009F4B8C0033066 |
:1021500030F40023F1F0013009F05BC34DC00330CF |
:1021600009F402C1043009F054C34BC1083009F42A |
:1021700098C2093038F4063009F411C2073009F06A |
:1021800048C36CC2093009F4C9C20A3009F041C31E |
:1021900003C31092CC018AE993E09F938F93FF923F |
:1021A0000E94C30884E18093CC018CE390E09F936C |
:1021B0008F931F921F9283E993E09F938F93FF92D7 |
:1021C0000E94C30888E28093CC010E94F8019927FD |
:1021D0009F938F9386E893E09F938F93FF920E9443 |
:1021E000C3088CE38093CC0186E793E09F938F93A1 |
:1021F000FF920E94C3088EC28091750580FF47C080 |
:102200001092CC0180912F02909130029F938F9376 |
:1022100087E693E09F938F930F930E94C30884E116 |
:102220008093CC0180913102909132029F938F93E1 |
:1022300088E593E09F938F930F930E94C30888E2F1 |
:102240008093CC0180910A0190910B019F938F9311 |
:1022500089E493E09F938F930F930E94C3088CE3CC |
:102260008093CC018091340599279F938F938AE3C3 |
:1022700093E09F938F930F930E94C3088DB79EB7EF |
:1022800044960FB6F8949EBF0FBE8DBFC7C284E1BF |
:102290008093CC0183E393E09F938F930F930E94ED |
:1022A000C30888E28093CC0185E293E09F938F93EB |
:1022B0000F930E94C3088DB79EB70696E2CF109287 |
:1022C000CC018BE193E09F938F93FF920E94C30810 |
:1022D00084E18093CC016091E7017091E8018091E5 |
:1022E000E9019091EA0120E034E040E050E00E94F2 |
:1022F000082D5F934F933F932F938CE093E09F9330 |
:102300008F93FF920E94C30888E28093CC01609172 |
:10231000EF017091F0018091F1019091F20120E0C4 |
:1023200034E040E050E00E94082D5F934F933F93CC |
:102330002F938DEF92E09F938F93FF920E94C3089B |
:102340008CE38093CC0180911702909118029F93A7 |
:102350008F938EEE92E09F938F93FF920E94C3081B |
:102360008DB79EB746968DCF1092CC0180914505D2 |
:102370009091460520914305309144059F938F939A |
:102380003F932F938EED92E09F938F93FF920E9445 |
:10239000C30884E18093CC018091490590914A055E |
:1023A00020914705309148059F938F933F932F933A |
:1023B0008EEC92E09F938F93FF920E94C30888E275 |
:1023C0008093CC0180914D0590914E0520914B0555 |
:1023D00030914C059F938F933F932F938EEB92E018 |
:1023E0009F938F93FF920E94C3088CE38093CC014C |
:1023F00080914F05909150059F938F938EEA92E0C4 |
:102400006FC01092CC01E0916E05FF27EE0FFF1F09 |
:10241000EF5BFA4F20813181E0916D05FF27EE0FD0 |
:10242000FF1FEF5BFA4F808191813F932F939F9322 |
:102430008F938EE992E09F938F93FF920E94C3083F |
:1024400084E18093CC01E0917005FF27EE0FFF1F20 |
:10245000EF5BFA4F20813181E0916F05FF27EE0F8E |
:10246000FF1FEF5BFA4F808191813F932F939F93E2 |
:102470008F938EE892E09F938F93FF920E94C30800 |
:1024800088E28093CC01E0917205FF27EE0FFF1FD9 |
:10249000EF5BFA4F20813181E0917105FF27EE0F4C |
:1024A000FF1FEF5BFA4F808191813F932F939F93A2 |
:1024B0008F938EE792E09F938F93FF920E94C308C1 |
:1024C0008CE38093CC01E0917305FF27EE0FFF1F93 |
:1024D000EF5BFA4F808191819F938F938EE692E01C |
:1024E0009F938F93FF920E94C3088DB79EB74A9621 |
:1024F000C8CE1092CC0180E692E09F938F93FF921A |
:102500000E94C30884E18093CC012091D7013091CF |
:10251000D8018091B2019091B3016091BE013F93C7 |
:102520002F9377270E94D32C7F936F9381E592E0BE |
:102530009F938F93FF920E94C30888E28093CC01FF |
:102540002091D9013091DA018091B4019091B501C7 |
:102550006091BF013F932F9377270E94D32C7F93E5 |
:102560006F9382E492E09F938F93FF920E94C3083F |
:102570008CE38093CC012091DB013091DC018091D0 |
:10258000B6019091B7016091C0013F932F937727D7 |
:102590000E94D32C7F936F9383E392E056C01092F6 |
:1025A000CC0186E292E09F938F93FF920E94C30832 |
:1025B00084E18093CC012091DD013091DE01809196 |
:1025C000BA019091BB016091C1013F932F9377278E |
:1025D0000E94D32C7F936F9387E192E09F938F9318 |
:1025E000FF920E94C30888E28093CC012091DF0112 |
:1025F0003091E0018091B8019091B9016091C201E0 |
:102600003F932F9377270E94D32C7F936F9388E07B |
:1026100092E09F938F93FF920E94C3088CE3809374 |
:10262000CC016091E1017091E2018091E301909110 |
:10263000E4010091290510912A050E94672B7F93E0 |
:102640006F931F930F9389EF91E09F938F93FF9266 |
:102650000E94C3088DB79EB7489613CE84E180933D |
:10266000CC0180910401909105019F938F938AEE94 |
:1026700091E09F938F93FF920E94C30888E280931A |
:10268000CC018091270299279F938F938BED91E046 |
:102690009F938F93FF920E94C3088DB79EB70A96AF |
:1026A000F0CD1092CC018CEC91E09F938F93FF9230 |
:1026B0000E94C30884E18093CC0180911B02909119 |
:1026C0001C029F938F938DEB91E09F938F93FF92CA |
:1026D0000E94C30888E28093CC01809117029091F8 |
:1026E00018029F938F938EEA91E09F938F93FF92AE |
:1026F0000E94C3088CE38093CC01809119029091D1 |
:102700001A029F938F938FE991E09F938F93FF928B |
:102710000E94C3088DB79EB74296B3CD1092CC01EC |
:1027200080911F02909120029F938F9383E991E003 |
:102730009F938F93FF920E94C30884E18093CC0102 |
:1027400080912102909122029F938F9387E891E0DC |
:102750009F938F93FF920E94C30888E28093CC01DD |
:1027600080912302909124029F938F938BE791E0B5 |
:102770009F938F93FF920E94C3088CE38093CC01B8 |
:1027800080912502909126029F938F938FE691E08E |
:102790009F938F93FF9270CD1092CC0187E691E0CA |
:1027A0009F938F93FF920E94C30884E18093CC0192 |
:1027B0008091890199279F938F9389E591E09F9359 |
:1027C0008F93FF920E94C30888E28093CC0180918E |
:1027D000AD019091AE019F938F938BE491E09F9315 |
:1027E0008F93FF920E94C3088CE38093CC01809169 |
:1027F000910599279F938F938091900599279F9397 |
:102800008F938DE391E09F938F93FF920E94C30873 |
:1028100035CD0150009366011092CE011092CD018A |
:102820001F910F91FF9008951092B9008AE2809352 |
:10283000B800089585EA8093BC0080E090E0089598 |
:1028400084E98093BC0008951092B9008093BB0086 |
:1028500085E88093BC0080E090E008951F920F927D |
:102860000FB60F9211248F939F93EF93FF93809154 |
:10287000CF018F5F8093CF018150833009F442C034 |
:10288000843028F48130A1F0823070F50CC085309E |
:1028900009F448C08530D8F1863009F44BC0873040 |
:1028A00009F071C05BC08091D001880F8E5A14C0AE |
:1028B0008091D0018F5F8093D0018150813009F4E5 |
:1028C00044C0813038F0823009F442C0833009F0CE |
:1028D0005AC041C0809196021092B9008093BB000B |
:1028E00085E88093BC004FC084E98093BC00809150 |
:1028F000D001843018F41092CF0102C01092D001A0 |
:1029000085EAEFCF8091D101880F8D5AE5CF809174 |
:10291000D1018130D1F08130E8F28230C9F08330CA |
:1029200091F519C08091BB00E091D101FF27E75CD0 |
:10293000FA4F80838091D101813039F0813050F29B |
:10294000823031F08330F9F406C080919702C4CF11 |
:1029500080919A02C1CF8091A602BECF8091D10111 |
:102960009091BB00E82FFF27E75CFA4F94838F5FBD |
:102970008093D101843010F01092D10184E98093CA |
:10298000BC001092CF01FF91EF919F918F910F901A |
:102990000FBE0F901F90189583EC80938100EFE697 |
:1029A000F0E08081806280831092DC011092DB0174 |
:1029B0001092DA011092D9011092D8011092D70129 |
:1029C00008951F920F920FB60F9211240F931F9329 |
:1029D0002F933F934F935F936F937F938F939F9327 |
:1029E000AF93BF93CF93DF93EF93FF932091860034 |
:1029F000309187008091D4019091D501281B390B2B |
:102A000080918600909187009093D5018093D401A6 |
:102A1000C9018D5D95408356994148F481E090E06D |
:102A20009093D3018093D2011092670154C0C0915A |
:102A3000D201D091D301CA30D1050CF04CC0C901EC |
:102A40008B5F9040845B914008F040C0A901425DDB |
:102A50005140FE01EE0FFF1FEF5BFA4F8081918125 |
:102A6000FA01E81BF90BCF01F7FF03C090958195A0 |
:102A70009F4F06974CF480912702883C28F4809160 |
:102A80002702865F80932702FE01EE0FFF1F8F0152 |
:102A90000F5B1A4FD8012D913C91C901880F991FE6 |
:102AA000820F931F840F951F64E070E00E94D32C67 |
:102AB000D8018D919C9111979B01281B390BE95AE4 |
:102AC000FA4F3183208311967C936E932196D09395 |
:102AD000D301C093D201FF91EF91DF91CF91BF91CC |
:102AE000AF919F918F917F916F915F914F913F91A6 |
:102AF0002F911F910F910F900FBE0F901F9018955F |
:102B0000AF92BF92CF92DF92EF92FF920F931F93FB |
:102B100010927A008091BE01882369F08091B20101 |
:102B20009091B3016091BE0177270E94D32C7093DE |
:102B3000AA056093A9058091BF01882369F080915F |
:102B4000B4019091B5016091BF0177270E94D32C09 |
:102B50007093A8056093A7058091C001882369F050 |
:102B60008091B6019091B7016091C00177270E94D2 |
:102B7000D32C7093B6056093B5058091C10188236D |
:102B8000D9F1E090B205F090B3056091BA0170916F |
:102B9000BB012091C1010027F7FC0095102F5701C0 |
:102BA000680143E0AA0CBB1CCC1CDD1C4A95D1F784 |
:102BB000AE18BF08C00AD10A882777FD8095982FE4 |
:102BC00034E0660F771F881F991F3A95D1F7332796 |
:102BD000442755270E94082DA20EB31EC41ED51EE1 |
:102BE000C601B50128E030E040E050E00E94082D29 |
:102BF0003093B3052093B2058091C2018823D9F1A7 |
:102C0000E090BB05F090BC056091B8017091B901EE |
:102C10002091C2010027F7FC0095102F5701680191 |
:102C200083E0AA0CBB1CCC1CDD1C8A95D1F7AE1826 |
:102C3000BF08C00AD10A882777FD8095982FB4E095 |
:102C4000660F771F881F991FBA95D1F7332744273E |
:102C500055270E94082DA20EB31EC41ED51EC60104 |
:102C6000B50128E030E040E050E00E94082D3093AC |
:102C7000BC052093BB058091C3018823A1F1E0909E |
:102C8000AC05F090AD056091BC017091BD01209143 |
:102C9000C3010027F7FC0095102F57016801A3E03E |
:102CA000AA0CBB1CCC1CDD1CAA95D1F7AE18BF0822 |
:102CB000C00AD10A882777FD8095982F33274427AB |
:102CC00055270E94082DA20EB31EC41ED51EC60194 |
:102CD000B50128E030E040E050E00E94082D30933C |
:102CE000AD052093AC051092B3011092B201109281 |
:102CF000BE011092B5011092B4011092BF01109262 |
:102D0000B7011092B6011092C0011092B901109251 |
:102D1000B8011092C2011092BB011092BA01109238 |
:102D2000C1011092BD011092BC011092C3018091AB |
:102D30000B0290910C02A0910D02B0910E028093B3 |
:102D4000F7019093F801A093F901B093FA018091F3 |
:102D5000FB019091FC01A091FD01B091FE018093D7 |
:102D6000E7019093E801A093E901B093EA01809113 |
:102D7000030290910402A0910502B0910602809393 |
:102D8000EF019093F001A093F101B093F2018091D3 |
:102D9000FF0190910002A0910102B0910202809384 |
:102DA000EB019093EC01A093ED01B093EE018091C3 |
:102DB000070290910802A0910902B0910A02809343 |
:102DC000F3019093F401A093F501B093F6018FEE17 |
:102DD00080937A008091A9059091AA05893C91057C |
:102DE0007CF02091A9053091AA058091A9059091C8 |
:102DF000AA05880F991F880F991F2052334015C0CC |
:102E00008091A9059091AA0588539F4FA4F4209121 |
:102E1000A9053091AA058091A9059091AA05880F6E |
:102E2000991F880F991F205E3C4F820F931F90932C |
:102E3000AA058093A9058091A7059091A805893CD2 |
:102E400091057CF02091A7053091A8058091A705F8 |
:102E50009091A805880F991F880F991F2052334021 |
:102E600015C08091A7059091A80588539F4FA4F4A1 |
:102E70002091A7053091A8058091A7059091A805FC |
:102E8000880F991F880F991F205E3C4F820F931F58 |
:102E90009093A8058093A70520911F0230912002EE |
:102EA00080917105E82FFF27EE0FFF1FEF5BFA4FB0 |
:102EB0008081918182599F4F281739071CF42F5F19 |
:102EC0003F4F0CC08081918182599F4F8217930799 |
:102ED0004CF42115310531F021503040309320025F |
:102EE00020931F02209121023091220280917205CD |
:102EF000E82FFF27EE0FFF1FEF5BFA4F80819181D4 |
:102F000082599F4F281739071CF42F5F3F4F0CC081 |
:102F10008081918182599F4F821793074CF421152C |
:102F2000310531F0215030403093220220932102AC |
:102F3000209123023091240280917305E82FFF270E |
:102F4000EE0FFF1FEF5BFA4F8081918182599F4FF7 |
:102F5000281739071CF42F5F3F4F0CC080819181E7 |
:102F600082599F4F821793074CF42115310531F098 |
:102F700021503040309324022093230220912502D7 |
:102F80003091260280917405E82FFF27EE0FFF1F76 |
:102F9000EF5BFA4F8081918182599F4F2817390743 |
:102FA0001CF42F5F3F4F0CC08081918182599F4F4D |
:102FB000821793074CF42115310531F02150304030 |
:102FC000309326022093250280911F0290912002C7 |
:102FD00097FF05C01092200210921F020AC08F3F77 |
:102FE000910539F034F08FEF90E0909320028093B8 |
:102FF0001F02809121029091220297FF05C010923A |
:103000002202109221020AC08F3F910539F034F05C |
:103010008FEF90E09093220280932102809123020F |
:103020009091240297FF05C010922402109223026F |
:103030000AC08F3F910539F034F08FEF90E0909304 |
:10304000240280932302809125029091260297FF0B |
:1030500005C010922602109225020AC08F3F9105EA |
:1030600039F034F08FEF90E09093260280932502A0 |
:103070001F910F91FF90EF90DF90CF90BF90AF9096 |
:10308000089510927A008091BE01882369F08091A2 |
:10309000B2019091B3016091BE0177270E94D32CB9 |
:1030A0007093AA056093A9058091BF01882369F0F8 |
:1030B0008091B4019091B5016091BF0177270E9482 |
:1030C000D32C7093A8056093A7058091C001882335 |
:1030D00069F08091B6019091B7016091C0017727A6 |
:1030E0000E94D32C7093B6056093B5058091C10101 |
:1030F0008823D1F06091BA017091BB012091C10188 |
:10310000882777FD8095982F34E0660F771F881FFA |
:10311000991F3A95D1F73327442755270E94082D48 |
:103120003093B3052093B2058091C2018823D1F07A |
:103130006091B8017091B9012091C201882777FD93 |
:103140008095982FB4E0660F771F881F991FBA9556 |
:10315000D1F73327442755270E94082D3093BC050B |
:103160002093BB058091C301882399F06091BC0135 |
:103170007091BD012091C301882777FD8095982F1C |
:103180003327442755270E94082D3093AD052093FF |
:10319000AC051092B3011092B2011092BE011092D0 |
:1031A000B5011092B4011092BF011092B7011092B4 |
:1031B000B6011092C0011092B9011092B80110929C |
:1031C000C2011092BB011092BA011092C10110927B |
:1031D000BD011092BC011092C3018FEE80937A0062 |
:1031E00020911F023091200280917105E82FFF2766 |
:1031F000EE0FFF1FEF5BFA4F8081918182599F4F45 |
:10320000281739071CF42F5F3F4F0CC08081918134 |
:1032100082599F4F821793074CF42115310531F0E5 |
:10322000215030403093200220931F022091210230 |
:103230003091220280917205E82FFF27EE0FFF1FC9 |
:10324000EF5BFA4F8081918182599F4F2817390790 |
:103250001CF42F5F3F4F0CC08081918182599F4F9A |
:10326000821793074CF42115310531F0215030407D |
:1032700030932202209321022091230230912402D4 |
:1032800080917305E82FFF27EE0FFF1FEF5BFA4FCA |
:103290008081918182599F4F281739071CF42F5F35 |
:1032A0003F4F0CC08081918182599F4F82179307B5 |
:1032B0004CF42115310531F0215030403093240277 |
:1032C00020932302209125023091260280917405DB |
:1032D000E82FFF27EE0FFF1FEF5BFA4F80819181F0 |
:1032E00082599F4F281739071CF42F5F3F4F0CC09E |
:1032F0008081918182599F4F821793074CF4211549 |
:10330000310531F0215030403093260220932502C0 |
:1033100080911F029091200297FF05C01092200219 |
:1033200010921F020AC08F3F910539F034F08FEFE1 |
:1033300090E09093200280931F028091210290914F |
:10334000220297FF05C010922202109221020AC0A9 |
:103350008F3F910539F034F08FEF90E09093220287 |
:1033600080932102809123029091240297FF05C04F |
:1033700010922402109223020AC08F3F910539F067 |
:1033800034F08FEF90E09093240280932302809199 |
:1033900025029091260297FF05C0109226021092F6 |
:1033A000250208958F3F910539F034F08FEF90E0BA |
:1033B000909326028093250208951F9380917805AB |
:1033C0008B3F98F08B3F19F480911F020EC08C3F09 |
:1033D00019F48091210209C08D3F19F480912302D4 |
:1033E00004C08E3F21F48091250280938101809159 |
:1033F0008101882319F41092810104C08F3F11F4D8 |
:1034000080938101809177058B3F98F08B3F19F471 |
:1034100080911F020EC08C3F19F48091210209C0D7 |
:103420008D3F19F48091230204C08E3F21F48091D6 |
:1034300025028093800180918001882319F41092E5 |
:10344000800105C0843618F084E680938001809165 |
:1034500079058B3F98F08B3F19F480911F020EC0C5 |
:103460008C3F19F48091210209C08D3F19F480919D |
:10347000230204C08E3F21F48091250280938201B3 |
:1034800080918201882319F41092820105C084364C |
:1034900018F084E68093820180917B058B3F98F041 |
:1034A0008B3F19F480911F020EC08C3F19F480915C |
:1034B000210209C08D3F19F48091230204C08E3F80 |
:1034C00021F48091250280938301809183018823D8 |
:1034D00019F41092830104C08F3F11F4809383018B |
:1034E000809182058B3F98F08B3F19F480911F02E9 |
:1034F0000EC08C3F19F48091210209C08D3F19F450 |
:103500008091230204C08E3F21F480912502809394 |
:10351000840180918401882319F41092840104C0ED |
:103520008F3F11F480938401809183058B3F98F045 |
:103530008B3F19F480911F020EC08C3F19F48091CB |
:10354000210209C08D3F19F48091230204C08E3FEF |
:1035500021F48091250280938501809185018B3033 |
:1035600010F48AE002C08F3F11F4809385018091AE |
:1035700084058B3F98F08B3F19F480911F020EC099 |
:103580008C3F19F48091210209C08D3F19F480917C |
:10359000230204C08E3F21F480912502809386018E |
:1035A00080918601882319F41092860104C08F3F10 |
:1035B00011F480938601809189058B3F98F08B3FB1 |
:1035C00019F480911F020EC08C3F19F480912102E2 |
:1035D00009C08D3F19F48091230204C08E3F21F46D |
:1035E000809125028093880180918801882319F4B5 |
:1035F0001092880104C08F3F11F48093880180915C |
:103600008A058B3F98F08B3F19F480911F020EC002 |
:103610008C3F19F48091210209C08D3F19F48091EB |
:10362000230204C08E3F21F480912502809333024F |
:1036300080913302882319F41092330204C08F3F23 |
:1036400011F48093330280918B058B3F98F08B3F70 |
:1036500019F480911F020EC08C3F19F48091210251 |
:1036600009C08D3F19F48091230204C08E3F21F4DC |
:10367000809125028093340280913402882319F4CA |
:103680001092340204C08F3F11F480933402809171 |
:103690008C058B3F98F08B3F19F480911F020EC070 |
:1036A0008C3F19F48091210209C08D3F19F480915B |
:1036B000230204C08E3F21F48091250280933502BD |
:1036C00080913502882319F41092350204C08F3F8F |
:1036D00011F48093350280918D058B3F98F08B3FDC |
:1036E00019F480911F020EC08C3F19F480912102C1 |
:1036F00009C08D3F19F48091230204C08E3F21F44C |
:10370000809125028093360280913602882319F435 |
:103710001092360204C08F3F11F4809336029091CC |
:103720008E059B3FB0F09B3F19F480911F0204C0AF |
:103730009C3F29F480912102809389010CC09D3F18 |
:1037400019F480912302F8CF9E3F29F4809125023D |
:10375000F3CF9093890180918901882319F4109205 |
:10376000890104C08F3F11F4809389019B3FB0F021 |
:103770009B3F19F480911F0204C09C3F29F4809163 |
:103780002102809389010CC09D3F19F4809123028E |
:10379000F8CF9E3F29F480912502F3CF90938901C1 |
:1037A00080918901882319F41092890104C08F3F08 |
:1037B00011F4809389019B3FB0F09B3F19F48091F5 |
:1037C0001F0204C09C3F29F480912102809389014B |
:1037D0000CC09D3F19F480912302F8CF9E3F29F43D |
:1037E00080912502F3CF90938901809189018823EC |
:1037F00019F41092890104C08F3F11F4809389015C |
:1038000010918801612F772767FD7095872F972F7B |
:103810000E94842B17FF06C020E030E040E853E40C |
:103820000E94DF2A27E137EB41ED58E30E94FE2B8F |
:1038300060937C0170937D0180937E0190937F0162 |
:10384000809180058093B40580917F058093AB05BE |
:103850001F91089581E080936D0542E040936E05CD |
:1038600083E080936F0524E02093700535E030936A |
:10387000710586E08093720587E08093730510924E |
:1038800075058EE1809376058BEF809378058AE04D |
:103890008093790592E39093770590937B0540930D |
:1038A0007A0520937C0510927D0580E180937E054A |
:1038B0008FE080937F058AEF809380058AE1809373 |
:1038C000810580E8809382058FEA80938305809349 |
:1038D00084058AE58093850583E28093860584E1EB |
:1038E00080938705109288053093890510928A0588 |
:1038F00010928B0510928C0510928D0584E68093B2 |
:103900008E0588E280938F05109293059093900521 |
:1039100086E98093910530939205ABE9B5E0E8E63E |
:10392000F1E08CE001900D928150E1F7089581E083 |
:1039300080936D0552E050936E0583E080936F0590 |
:1039400044E04093700535E03093710586E0809344 |
:10395000720587E08093730528E020937405109228 |
:1039600075059EE1909376058BEF809378058AE04C |
:103970008093790586E48093770590937B05509337 |
:103980007A0540937C0520937D0580E180937E0538 |
:103990008FE080937F058AEF809380058AE1809392 |
:1039A000810580E88093820588E78093830596E906 |
:1039B000909384058AE58093850583E2809386054C |
:1039C00084E18093870510928805309389051092D1 |
:1039D0008A0510928B0510928C0510928D0584E655 |
:1039E00080938E0588E280938F051092930582E381 |
:1039F000809390059093910530939205ABE9B5E0E3 |
:103A0000E0E7F1E08CE001900D928150E1F708953C |
:103A100080912E02882301F510929702109296024F |
:103A200010929A021092A60280919801882311F0B8 |
:103A30008093960280919901882311F080939702D8 |
:103A400080919A01882311F08093A60280919B01B6 |
:103A5000882311F080939A0280919602992790937F |
:103A6000030580930205809197029927909305059D |
:103A7000809304058091A60299279093070580936F |
:103A8000060580919A02992790930905809308056D |
:103A90001092CF011092D0010E941A140895CF9372 |
:103AA000DF931092DE011092DD011092E00110927E |
:103AB000DF0180E090E0A0E0B0E08093E10190932E |
:103AC000E201A093E301B093E4011092D8011092B7 |
:103AD000D7011092DA011092D9011092DC011092F4 |
:103AE000DB010E94411885E090E00E94FB0BEC0195 |
:103AF000CE010E94040C8823D9F30E9441188091C2 |
:103B0000750580FF10C080910A0190910B01875BC1 |
:103B1000934038F480910A0190910B018E5E92409F |
:103B200010F40E9420108091A9059091AA0597FF9A |
:103B300003C0909581959F4F9093D8018093D701B2 |
:103B40008091A7059091A80597FF03C09095819556 |
:103B50009F4F9093DA018093D9018091B5059091A0 |
:103B6000B60597FF03C0909581959F4F9093DC0118 |
:103B70008093DB018091BB059091BC0597FF03C04A |
:103B8000909581959F4F60E170E00E94D32C7093D7 |
:103B9000E0016093DF018091B2059091B30597FF3A |
:103BA00003C0909581959F4F60E170E00E94D32CF7 |
:103BB0007093DE016093DD016091290570912A0503 |
:103BC000882777FD8095982F0E94842B6093E101D0 |
:103BD0007093E2018093E3019093E4011092FB0162 |
:103BE0001092FC011092FD011092FE011092FF0153 |
:103BF000109200021092010210920202109203022F |
:103C0000109204021092050210920602109207020E |
:103C1000109208021092090210920A0210920B02EE |
:103C200010920C0210920D0210920E021092AA0530 |
:103C30001092A9051092A8051092A7051092B6053A |
:103C40001092B5058091060190910701A09108019D |
:103C5000B091090190932C0580932B051092C5011A |
:103C60001092C401109213021092140210921502C5 |
:103C700010921602809117029091180290931A02E6 |
:103C80008093190282E390E09093AC018093AB01A2 |
:103C9000DF91CF9108951F93182F0EC080912E02AF |
:103CA000882361F484E690E09093AC018093AB01AB |
:103CB0008AEF90E00E94E40C115080F71F91089564 |
:103CC0002F923F924F925F926F927F928F929F922C |
:103CD000AF92BF92CF92DF92EF92FF920F931F931A |
:103CE000CF93DF93CDB7DEB724970FB6F894DEBF3E |
:103CF0000FBECDBF0E948015299AE0916F05AE2FAF |
:103D0000BB27AA0FBB1FAF5BBA4F0D90BC91A02D74 |
:103D10009D0128583F4F3A83298337FF02C01A82FA |
:103D2000198280912702843608F04AC080910101EF |
:103D3000882331F484EF91E09093AC018093AB0140 |
:103D40008091420290914302009731F00197909345 |
:103D500043028093420204C010922E0210921D0270 |
:103D6000289A80913D0290913E02815D974028F112 |
:103D700080918605482F55275A83498381E0809397 |
:103D80001D02E0916D05FF27EE0FFF1FEF5BFA4F5D |
:103D900011821082E0916E05FF27EE0FFF1FEF5B8F |
:103DA000FA4F11821082E0917005FF27EE0FFF1F7E |
:103DB000EF5BFA4F11821082CEC110922E02CBC15E |
:103DC000809127028D3808F4C6C110921D0280919F |
:103DD000870522E3829FC0011124909343028093C0 |
:103DE000420269817A81693271056CF080913D02ED |
:103DF00090913E027FEF8F3F970781F1019690935C |
:103E00003E0280933D0280913D0290913E02883CAB |
:103E1000910520F089819A81889704F510925802C3 |
:103E20001092590210925A0210925B0210925402A0 |
:103E300010925502109256021092570210920B02E5 |
:103E400010920C0210920D0210920E0210920F02AC |
:103E5000109210021092110210921202E981FA815E |
:103E6000E93CF1050CF4D6C080912E02882309F0BC |
:103E700072C1E0917005FF27EE0FFF1FEF5BFA4F55 |
:103E8000808191818C3491050CF4C1C080914102F4 |
:103E90008F5F80934102893C08F45DC129980E949C |
:103EA0004F1D10922E021092410210923E0210926B |
:103EB0003D0280916D05282F3327F901EE0FFF1F7A |
:103EC000EF5BFA4F80819181873491059CF4E091FA |
:103ED0006E05FF27EE0FFF1FEF5BFA4F0190F08199 |
:103EE000E02DF7FF03C0F095E195FF4FE734F105B2 |
:103EF0000CF46CC080916E05682F7727DB01AA0F48 |
:103F0000BB1FAF5BBA4F8D919C9111978734910580 |
:103F10003CF0F901EE0FFF1FEF5BFA4F80819181BA |
:103F20008D919C918734910564F0F901EE0FFF1F8C |
:103F3000EF5BFA4F808191818734910514F042E064 |
:103F400001C041E0FB01EE0FFF1FEF5BFA4F8081E4 |
:103F50009181863491055CF4F901EE0FFF1FEF5B50 |
:103F6000FA4F80819181873491050CF043E0FB0189 |
:103F7000EE0FFF1FEF5BFA4F808191818A5B9F4FAD |
:103F80005CF4F901EE0FFF1FEF5BFA4F8081918126 |
:103F9000873491050CF044E0660F771F6F5B7A4F12 |
:103FA000FB01808191818A5B9F4F5CF4220F331F5C |
:103FB0002F5B3A4FF90180819181863491050CF491 |
:103FC00045E0A2E0B0E0042E0E942B2D0E94F801F3 |
:103FD0004AE36DE675E00E9417020E94F8010E9414 |
:103FE0004B1E8091750580FFB6C080910A019091AB |
:103FF0000B01875B934040F480910A0190910B0183 |
:104000008E5E924008F0A7C00E942010A4C01092BB |
:104010004102A1C049815A81433251050CF09BC035 |
:1040200080917005482F5527FA01EE0FFF1FEF5BB7 |
:10403000FA4F80819181855B9F4F0CF06DC080911C |
:1040400040028F5F80934002893C08F467C088EC8F |
:104050008093400281E090E090933E0280933D0285 |
:1040600081E080932E021092500210925102109221 |
:1040700052021092530210920B0210920C021092F4 |
:104080000D0210920E0210920F0210921002109266 |
:104090001102109212021092FB011092FC01109278 |
:1040A000FD011092FE011092030210920402109280 |
:1040B0000502109206028091E7019091E801A0911B |
:1040C000E901B091EA018093FF0190930002A0936F |
:1040D0000102B09302028091EF019091F001A09152 |
:1040E000F101B091F2018093070290930802A0932E |
:1040F0000902B0930A0210925802109259021092CB |
:104100005A0210925B0210925402109255021092C1 |
:1041100056021092570202C010924002440F551FDF |
:104120004F5B5A4FFA01808191818C3491058CF05C |
:1041300080913F028F5F80933F02893C60F0109234 |
:104140002E0288EC80933F0210923E0210923D02B4 |
:1041500002C010923F0280916701815080936701F5 |
:10416000809167018F3F29F080911D02882309F417 |
:1041700012C10E94DD19E0916D05FF27EE0FFF1FB0 |
:10418000DF01AF5BBA4F8D919C9160917C057727E1 |
:10419000E95AFA4F2081318140917D055527FC0174 |
:1041A000E69FC001E79F900DF69F900D1124F90145 |
:1041B000E49F9001E59F300DF49F300D1124820F94 |
:1041C000931F9093290280932802E0916E05FF27A8 |
:1041D000EE0FFF1FDF01AF5BBA4F8D919C91E95A43 |
:1041E000FA4F20813181FC01E69FC001E79F900DCD |
:1041F000F69F900D1124B901649F9001659F300DC9 |
:10420000749F300D1124820F931F90932B02809383 |
:104210002A02E0917005FF27EE0FFF1FEF5BFA4FB8 |
:1042200080819181909581959F4F90932D028093ED |
:104230002C0210918501612F772767FD7095872FDC |
:10424000972F0E94842B17FF06C020E030E040E843 |
:1042500053E40E94DF2A20E030E040E251E40E9473 |
:10426000DF2A20E030E040E85BE30E94FE2B5B01A8 |
:104270006C016093B7057093B8058093B90590936E |
:10428000BA0510918601612F772767FD7095872FFA |
:10429000972F0E94842B17FF06C020E030E040E8F3 |
:1042A00053E40E94DF2A20E030EE4BE257E40E9404 |
:1042B000212B6093AE057093AF058093B00590936A |
:1042C000B1058091750582FF0CC080E090E0A0E010 |
:1042D000B0E08093AE059093AF05A093B005B09386 |
:1042E000B10520E030E040E050E0C601B5010E9499 |
:1042F0008E2B882364F480E090E0A0E0B0E080930F |
:10430000B7059093B805A093B905B093BA0520E01E |
:1043100030E040E050E06091AE057091AF058091D3 |
:10432000B0059091B1050E948E2B882364F480E043 |
:1043300090E0A0E0B0E08093AE059093AF05A0932D |
:10434000B005B093B10580911D02882321F1109230 |
:104350002D0210922C021092290210922802109223 |
:104360002B0210922A028DEC9CECACECBDE3809306 |
:10437000B7059093B805A093B905B093BA058AE044 |
:1043800097EDA3EABBE38093AE059093AF05A093AE |
:10439000B005B093B1058091C6019091C7018D54CD |
:1043A000914008F4BCC02091EB013091EC014091A8 |
:1043B000ED015091EE018091E7019091E801A0910B |
:1043C000E901B091EA01B901681B790B70934702CA |
:1043D000609346022091F3013091F4014091F50180 |
:1043E0005091F6018091EF019091F001A091F101BF |
:1043F000B091F201281B390B3093450220934402FF |
:104400001092C7011092C601673A710534F080918D |
:10441000D7019091D801019608C06A557F4F4CF49E |
:104420008091D7019091D80101979093D801809302 |
:10443000D701273A310534F08091D9019091DA0102 |
:10444000019608C02A553F4F4CF48091D9019091B4 |
:10445000DA0101979093DA018093D90180910F02DC |
:1044600090911002A0911102B0911202873A910529 |
:10447000A105B1054CF08091DB019091DC01019721 |
:104480009093DC018093DB0180910F0290911002E8 |
:10449000A0911102B09112028A559F4FAF4FBF4FAA |
:1044A0004CF48091DB019091DC0101969093DC014A |
:1044B0008093DB0110927A008091E7019091E801EE |
:1044C000A091E901B091EA018093FF01909300026D |
:1044D000A0930102B09302028091EF019091F0014C |
:1044E000A091F101B091F20180930702909308022C |
:1044F000A0930902B0930A028091F7019091F8010C |
:10450000A091F901B091FA0180930F0290931002EB |
:10451000A0931102B09312028FEE80937A00609103 |
:10452000E7017091E8018091E9019091EA01A09082 |
:104530008105BB24CC24DD24E090B205F090B305C6 |
:10454000A60195010E94082D0027F7FC0095102F69 |
:104550002E193F09400B510BCA01B90120E130E08F |
:1045600040E050E00E94082D39014A0120934C029E |
:1045700030934D0240934E0250934F026091EF01F1 |
:104580007091F0018091F1019091F201E090BB05F2 |
:10459000F090BC05A60195010E94082D0027F7FCAC |
:1045A0000095102F2E193F09400B510BCA01B9017C |
:1045B00020E130E040E050E00E94082D20934802C6 |
:1045C0003093490240934A0250934B02F5EF6F1625 |
:1045D000F1E07F06F0E08F06F0E09F062CF084EF1C |
:1045E00091E0A0E0B0E00DC06CE066166EEF7606DC |
:1045F0006FEF86066FEF960664F48CE09EEFAFEFE8 |
:10460000BFEF80934C0290934D02A0934E02B09363 |
:104610004F02253F71E0370770E0470770E057070A |
:104620002CF084EF91E0A0E0B0E009C02C503E4FA8 |
:104630004F4F5F4F64F48CE09EEFAFEFBFEF80937E |
:10464000480290934902A0934A02B0934B02109201 |
:104650007A008091FB019091FC01A091FD01B09145 |
:10466000FE0120914C0230914D0240914E0250913A |
:104670004F02821B930BA40BB50B8093FB0190930D |
:10468000FC01A093FD01B093FE0180910302909183 |
:104690000402A0910502B0910602209148023091D7 |
:1046A000490240914A0250914B02821B930BA40B8A |
:1046B000B50B8093030290930402A0930502B0937C |
:1046C000060280912C0290912D025C01CC24B7FC53 |
:1046D000C094DC2CA0925002B0925102C0925202BF |
:1046E000D092530297FF03C0909581959F4F849776 |
:1046F0003CF08091750584FD03C081E08093390210 |
:1047000060900B0270900C0280900D0290900E024F |
:10471000C501B7FE03C0909581959F4F7C0100278E |
:10472000F7FC0095102F20917E053327442755274D |
:10473000C601B5010E94A02C9B01AC01C801B701C4 |
:104740000E94A02C20E031E040E050E00E94082DC3 |
:10475000442737FD4095542F621A730A840A950A3C |
:1047600060920B0270920C0280920D0290920E02E7 |
:1047700080910B0290910C02A0910D02B0910E025B |
:1047800081539547A040B04064F080E395E7A0E0F6 |
:10479000B0E080930B0290930C02A0930D02B093B3 |
:1047A0000E0280910B0290910C02A0910D02B0912B |
:1047B0000E02805D9A48AF4FBF4F64F480ED9AE8D7 |
:1047C000AFEFBFEF80930B0290930C02A0930D020A |
:1047D000B0930E028FEE80937A0080911702909131 |
:1047E0001802892B09F4A1C08091750583FF9DC033 |
:1047F0006091E7017091E8018091E9019091EA01EF |
:1048000020E032E040E050E00E94082D890137FFAF |
:1048100003C0109501951F4F6091EF017091F00159 |
:104820008091F1019091F20120E032E040E050E00F |
:104830000E94082DB90137FF03C0709561957F4F25 |
:10484000601771070CF4B80169317105A4F4809107 |
:104850003902882381F08091370290913802892BA8 |
:1048600051F4809117029091180290931A0280934C |
:10487000190210923902209184013327629FC001EE |
:10488000639F900D729F900D112460E470E00E9470 |
:10489000D32CA901461B570B141615060CF03FC06C |
:1048A00010927A002091370230913802211531059B |
:1048B00061F500910B0210910C0220910D023091D4 |
:1048C0000E0280911B0290911C02BC01649FC001EA |
:1048D000659F900D749F900D112460E270E00E941E |
:1048E000D32C882777FD8095982F060F171F281F38 |
:1048F000391F00930B0210930C0220930D0230938A |
:104900000E028FEE80937A0010C08FEE80937A00B3 |
:1049100021503040309338022093370206C084EF94 |
:1049200091E090933802809337028091750585FF5E |
:1049300011C08091330299279093A3028093A20221 |
:104940008091340299279093A5028093A4020E943B |
:104950002A2908C010928D0210928C0210928F02A8 |
:1049600010928E028091E9048F5F8093E904809118 |
:104970003A02815080933A028F3F09F068C081E388 |
:1049800080933A026091E7017091E8018091E9011A |
:104990009091EA01E0908105FF2400271127A801EA |
:1049A00097010E94082D3093EB042093EA04609154 |
:1049B000EF017091F0018091F1019091F201A80155 |
:1049C00097010E94082D3093ED042093EC04809110 |
:1049D000B2059091B3059093EF048093EE0480911B |
:1049E000BB059091BC059093F1048093F0048091F5 |
:1049F000B5059091B6059093F3048093F2048091ED |
:104A00002F02909130029093F5048093F40460910A |
:104A1000130270911402809115029091160220E009 |
:104A200032E040E050E00E94082D3093F7042093DC |
:104A3000F60489819A819093F9048093F804809117 |
:104A40001702909118029093FB048093FA046091EE |
:104A5000E7017091E8018091E9019091EA012090CD |
:104A6000AE053090AF054090B0055090B105E09094 |
:104A7000A905F090AA056090B7057090B8058090E0 |
:104A8000B9059090BA050E94842BA20191010E9461 |
:104A9000FE2B5B016C010027F7FC0095102FC8016D |
:104AA000B7010E94842BA40193010E94FE2B9B015D |
:104AB000AC01C601B5010E94DF2A0E94672B7093EA |
:104AC000AA056093A9056091EF017091F0018091B2 |
:104AD000F1019091F201E090A705F090A8050E94E5 |
:104AE000842BA20191010E94FE2B5B016C01002727 |
:104AF000F7FC0095102FC801B7010E94842BA40178 |
:104B000093010E94FE2B9B01AC01C601B5010E94DE |
:104B1000DF2A0E94672B7093A8056093A705609118 |
:104B2000B5057091B605A090F701B090F801C0905E |
:104B3000F901D090FA01882777FD8095982F0E947F |
:104B4000842B7B018C0120E030E040E05FE3C40176 |
:104B5000B3010E94FE2B9B01AC01C801B7010E946A |
:104B6000FE2B7B018C01C601B5010E94842BA201A2 |
:104B700091010E94FE2B9B01AC01C801B7010E946C |
:104B8000DF2A0E94672B7093B6056093B50580916C |
:104B9000A9059091AA058150984034F080E098E0F2 |
:104BA0009093AA058093A9058091A9059091AA05E3 |
:104BB0008050984F34F480E098EF9093AA0580934A |
:104BC000A9058091A7059091A8058150984034F0DF |
:104BD00080E098E09093A8058093A7058091A705B1 |
:104BE0009091A8058050984F34F480E098EF90930E |
:104BF000A8058093A7058091B5059091B6058150D1 |
:104C0000984034F080E098E09093B6058093B50525 |
:104C10008091B5059091B6058050984F34F480E0AE |
:104C200098EF9093B6058093B50580917505992707 |
:104C300080FFCDC02091810181FF0EC02233B0F4EE |
:104C400080912F029091300244979093320280938A |
:104C5000310210921E020DC080917A05289FC0017A |
:104C600011244497909332028093310281E0809323 |
:104C70001E0280911D02882321F0109232021092B0 |
:104C8000310220912F023091300240913102509137 |
:104C90003202421753070CF09AC080911E028823FB |
:104CA00009F495C0241B350B809182019927BC0122 |
:104CB000269FC001279F900D369F900D112460E123 |
:104CC00070E00E94D32C09811A81061B170B2091DA |
:104CD000C4013091C501809180019927FC012E9F6C |
:104CE000C0012F9F900D3E9F900D112468E070E051 |
:104CF0000E94D32C061B170B6091130270911402B3 |
:104D0000809115029091160220E032E040E050E0E0 |
:104D10000E94082DCA01B90120918301332744273D |
:104D200055270E94A02C20E230E040E050E00E9495 |
:104D3000082DFFEF2E3C3F0714F42EEC3FEF80913F |
:104D40003B0290913C02AC0174E0440F551F7A95F0 |
:104D5000E1F7481B590B2333310514F022E330E00F |
:104D6000021B130BCA01800F911F60E170E00E94CB |
:104D7000D32C70933C0260933B0280917605992777 |
:104D8000681779078CF429813A81281739072CF0A4 |
:104D900090933C0280933B0207C049815A81509313 |
:104DA0003C0240933B020DC080913B0290913C023B |
:104DB00069817A816817790724F470933C026093C3 |
:104DC0003B0280913B0290913C029A838983C09080 |
:104DD000B505D090B6058091500290915102C81A45 |
:104DE000D90A95E6C916D10424F064E6C62ED12C62 |
:104DF00009C0ECE9CE16EFEFDE0624F45CE9C52E1F |
:104E00005FEFD52E409078015090790160907A0143 |
:104E100070907B016091A9057091AA0520912802EC |
:104E20003091290240918C0250918D02241B350B48 |
:104E3000621B730B882777FD8095982F0E94842B27 |
:104E40009B01AC01C301B2010E94FE2B0E94672BA3 |
:104E500070939902609398028091980290919902C0 |
:104E60008C01222717FD2095322F809158029091B6 |
:104E70005902A0915A02B0915B02080F191F2A1F14 |
:104E80003B1F009358021093590220935A0230930B |
:104E90005B021016110612061306ACF4C80117FFC8 |
:104EA00003C0909581959F4F60E071E00E94D32CE4 |
:104EB0006F5F7F4F882777FD8095982F061B170B14 |
:104EC000280B390B14C0C80117FF03C090958195BA |
:104ED0009F4F60E071E00E94D32C6F5F7F4F882767 |
:104EE00077FD8095982F060F171F281F391F0093F5 |
:104EF00058021093590220935A0230935B0280911A |
:104F0000580290915902A0915A02B0915B028138E7 |
:104F1000FEE39F07F0E0AF07F0E0BF072CF080E86A |
:104F20009EE3A0E0B0E009C08058914CAF4FBF4F66 |
:104F300064F480E891ECAFEFBFEF80935802909358 |
:104F40005902A0935A02B0935B026091980270914B |
:104F5000990280907C0190907D01A0907E01B0909C |
:104F60007F01882777FD8095982F0E94842B7B01F5 |
:104F70008C01609158027091590280915A0290916F |
:104F80005B020E94842B9B01AC01C501B4010E940D |
:104F9000FE2B9B01AC01C801B7010E94DF2A0E94D1 |
:104FA000672B9601260F371F49815A81240F351F21 |
:104FB00022244A30510514F441E0242E37FD02C06A |
:104FC000222019F040E050E008C08091B405482F3D |
:104FD0005527241735070CF4A9018091AB05E82F5C |
:104FE000FF27FC83EB839F01E417F5070CF49A017C |
:104FF0002093960229813A81261B370BB9016C0D4B |
:105000007D1D77FD02C0222019F080E090E007C0EE |
:105010008091B4059927681779070CF4CB012B818F |
:105020003C81281739070CF49C012093970260916A |
:10503000A7057091A80520912A0230912B0240917A |
:105040008E0250918F02241B350B621B730B882735 |
:1050500077FD8095982F0E94842B9B01AC01C301A2 |
:10506000B2010E94FE2B0E94672B70939502609301 |
:10507000940280919402909195028C01222717FD51 |
:105080002095322F8091540290915502A0915602A2 |
:10509000B0915702080F191F2A1F3B1F009354029B |
:1050A00010935502209356023093570210161106A2 |
:1050B00012061306ACF4C80117FF03C09095819542 |
:1050C0009F4F60E071E00E94D32C6F5F7F4F882775 |
:1050D00077FD8095982F061B170B280B390B14C0F2 |
:1050E000C80117FF03C0909581959F4F60E071E064 |
:1050F0000E94D32C6F5F7F4F882777FD8095982F74 |
:10510000060F171F281F391F0093540210935502D2 |
:105110002093560230935702809154029091550289 |
:10512000A0915602B091570281383EE3930730E0D8 |
:10513000A30730E0B3072CF080E89EE3A0E0B0E0E6 |
:1051400009C08058914CAF4FBF4F64F480E891EC98 |
:10515000AFEFBFEF8093540290935502A093560295 |
:10516000B09357026091940270919502882777FD61 |
:105170008095982F0E94842B7B018C0160915402B2 |
:105180007091550280915602909157020E94842B93 |
:105190009B01AC01C501B4010E94FE2B9B01AC0137 |
:1051A000C801B7010E94DF2A0E94672B29813A813A |
:1051B000260F371F2C193D0937FD02C0222019F098 |
:1051C00040E050E008C08091B405482F55272417CF |
:1051D00035070CF4A9012B813C81241735070CF409 |
:1051E0009A012093A60289819A81861B970BBC01A4 |
:1051F0006C197D0977FD02C0222019F020E030E013 |
:1052000008C08091B405282F3327621773070CF468 |
:105210009B018B819C81821793070CF4C9018093B9 |
:105220009A0224960FB6F894DEBF0FBECDBFDF9171 |
:10523000CF911F910F91FF90EF90DF90CF90BF9093 |
:10524000AF909F908F907F906F905F904F903F9026 |
:105250002F9008956F927F928F929F92AF92BF92FC |
:10526000CF92DF92EF92FF920F931F9380911F02D4 |
:1052700090912002181619060CF078C18091220531 |
:10528000882309F473C180918A0190918B01892B45 |
:10529000D1F180910A0590910B05A0910C05B09178 |
:1052A0000D0580935C0290935D02A0935E02B09323 |
:1052B0005F0280910E0590910F05A0911005B091AD |
:1052C00011058093600290936102A0936202B093F3 |
:1052D00063028091120590911305A0911405B0917D |
:1052E00015058093640290936502A0936602B093C3 |
:1052F000670282E390E09093AC018093AB0110923F |
:105300008B0110928A01A090A202B090A30260913A |
:1053100064027091650280916602909167026E5FEF |
:105320007F4F8F4F9F4F20915C0230915D024091E3 |
:105330005E0250915F02E2E0EE2EF12C012D112D64 |
:105340002E253F254027512762277327842795273D |
:105350000E94842B0E94462C3B014C016091120557 |
:105360007091130580911405909115056E5F7F4F24 |
:105370008F4F9F4F20910A0530910B0540910C05EE |
:1053800050910D052E253F25402751276227732771 |
:10539000842795270E94842B0E94462C9B01AC01F8 |
:1053A000C401B3010E94DE2A7B018C01CC24B7FC2E |
:1053B000C094DC2CC601B5010E94842B9B01AC017A |
:1053C000C801B7010E94FE2B20E030E040E251E42A |
:1053D0000E94212B0E94672B3B014C0160936A02C3 |
:1053E00070936B0280936C0290936D022091A202E5 |
:1053F0003091A3026091600270916102809162021B |
:1054000090916302E0900E05F0900F050091100559 |
:10541000109111056E197F09800B910B442737FD00 |
:105420004095542F0E94A02C2AE030E040E050E04C |
:105430000E94082D59016A0120936E0230936F0279 |
:1054400040937002509371026091A4027091A50282 |
:10545000882777FD8095982F2091160530911705A4 |
:1054600040911805509119050E94A02C2DEF3FEF97 |
:105470004FEF5FEF0E94082D79018A0120937A0295 |
:1054800030937B0240937C0250937D026091A40292 |
:105490007091A502882777FD8095982F20911A0595 |
:1054A00030911B0540911C0550911D050E94A02CB8 |
:1054B0002DEF3FEF4FEF5FEF0E94082D20937E020C |
:1054C00030937F024093800250938102B3016E0DAE |
:1054D0007F1D70938D0260938C022A0D3B1D3093CB |
:1054E0008F0220938E0280918C0190918D018617FE |
:1054F00097072CF480918C0190918D0111C08091BF |
:105500008C0190918D01909581959F4F6817790737 |
:105510005CF480918C0190918D01909581959F4FC5 |
:1055200090938D0280938C0280918C0190918D01DB |
:10553000821793072CF480918C0190918D0111C0FA |
:1055400080918C0190918D01909581959F4F2817A6 |
:105550003907D4F480918C0190918D0190958195BB |
:105560009F4F90938F0280938E020EC085E090E053 |
:1055700090938B0180938A0110928D0210928C027D |
:1055800010928F0210928E021F910F91FF90EF9058 |
:10559000DF90CF90BF90AF909F908F907F906F9053 |
:1055A0000895FC014150504030F001900616D1F7AB |
:1055B0003197CF0108958827992708955058192EBB |
:1055C000EFD001D0D2C0BA176207730784079507DE |
:1055D000B1F188F40EF410940B2EBA2FA02D062EE4 |
:1055E000622F202D072E732F302D082E842F402D53 |
:1055F000092E952F502DFF275523B9F0591B49F03F |
:10560000573E98F0469537952795A795F0405395C6 |
:10561000C9F776F0BA0F621F731F841F30F48795A5 |
:1056200077956795B795F040939517FA0F2E0895E3 |
:10563000BF1BBB27BA0B620B730B840BF6CFDEF6D6 |
:10564000DBC0AED001D091C0552359F0992369F049 |
:105650009F575F57951B33F442F4903811F49158DB |
:1056600005C09BC091589F3F09F4C6C0BB271124B9 |
:1056700062177307840730F4660F771F881FBB1FFC |
:10568000915098F311D00F920FD00F920DD0A0E847 |
:105690002617370748071B0609F0A048BA2F602DC8 |
:1056A0007F918F9100240895A0E80024621773076A |
:1056B0008407B10528F0621B730B840BB1090A2A19 |
:1056C000660F771F881FBB1FA69581F7089597FB6C |
:1056D00073D09F3738F0FEE9F91B982F872F762F6C |
:1056E0006B2F05C086C09695879577956795F15085 |
:1056F000D0F73EF490958095709561957F4F8F4FD0 |
:105700009F4F0895E89403C097FB0EF4F3DFB62F84 |
:10571000672F782F892F9EE9002427C00ED05EF0D6 |
:1057200004C00BD026F001C008D019F020F48FEF90 |
:10573000089580E0089581E0089597FB092E0526DD |
:1057400000F8689430D0E89407FC07C0621773072C |
:105750008407950721F008F400940794989408951D |
:105760009A95BB0F661F771F881F11249923A1F0FC |
:105770008823B2F79F3F59F0BB0F48F421F4002073 |
:1057800011F460FF04C06F5F7F4F8F4F9F4F881FE2 |
:105790009795879597F908952CC09FEF80EC089511 |
:1057A000052E092607FA440F551F5F3F79F0AA27F7 |
:1057B000A51708F051E04795880F991F9F3F31F0DA |
:1057C000BB27B91708F091E0879508959F919F91A5 |
:1057D0001124E3CF97FB880F991F9F3F31F0BB2720 |
:1057E000B91708F091E0879508959F919F91112432 |
:1057F000D4CF66277727882799270895D1DF01D04E |
:10580000B4CF992339F0552329F09F575F57950F4F |
:1058100013F49AF1F1CF91589F3FE1F3629FA12DCC |
:105820000F92BB27639FA00DB11DEE27729FA00DA5 |
:10583000B11DEE1FAF93AA27649FB00DE11D739FAA |
:10584000B00DE11DAA1F6627829FB00DE11DA61FA6 |
:105850005527749FE00DA11D551F839FE00DA11DCD |
:10586000561F849FA00D511D852F7A2F6E2F1F90DC |
:105870000F9088231AF4939539F48FCF000C111CE4 |
:10588000BB1F661F771F881F0128089597FD85CFCE |
:10589000992309F40895482F9DDFF92FFF57F595B7 |
:1058A0009F1B9F1BFF9361DFFF92EF92DF92CF92CE |
:1058B000BF92AF929F928F926B017C0140584795A7 |
:1058C0003327222740685FE3B601C70149015A0127 |
:1058D0000E94212B9401A5010E94DF2A4FEF5FEF68 |
:1058E00013D09B01AC0182169306A406B50661F79E |
:1058F0008F909F90AF90BF90CF90DF90EF90FF90F0 |
:105900005F9168DF950F31CF65DF992359F0AA27A2 |
:10591000940FA51F43F032F04FEF50E09417A50706 |
:1059200014F423CF66CF0EF006C000C09FEF80E8CE |
:1059300070E060E008959FE780E870E060E008951F |
:10594000629FD001739FF001829FE00DF11D649F63 |
:10595000E00DF11D929FF00D839FF00D749FF00DEF |
:10596000659FF00D9927729FB00DE11DF91F639F90 |
:10597000B00DE11DF91FBD01CF0111240895AA1B2F |
:10598000BB1B51E107C0AA1FBB1FA617B70710F02A |
:10599000A61BB70B881F991F5A95A9F7809590955C |
:1059A000BC01CD01089597FB092E07260AD077FD8B |
:1059B00004D0E5DF06D000201AF4709561957F4F82 |
:1059C0000895F6F7909581959F4F0895A1E21A2EBC |
:1059D000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1F93 |
:1059E000A217B307E407F50720F0A21BB30BE40BE3 |
:1059F000F50B661F771F881F991F1A9469F760952A |
:105A00007095809590959B01AC01BD01CF010895E3 |
:105A100097FB092E05260ED057FD04D0D7DF0AD0FC |
:105A2000001C38F450954095309521953F4F4F4FCD |
:105A30005F4F0895F6F790958095709561957F4F2B |
:105A40008F4F9F4F0895F999FECFB2BDA1BDF89A2F |
:105A5000119600B40895F999FECFB2BDA1BD00BC66 |
:105A600011960FB6F894FA9AF99A0FBE0895FFCFDF |
:105A700001640A016400007D0000FF0301020304C9 |
:105A800005060708090A48616C6C6F2057656C743D |
:105A90000000000000000000000000000000000006 |
:105AA00000000000000000000000000000000000F6 |
:105AB00000000000000000000000000000000000E6 |
:105AC00000000000000000000000000000000000D6 |
:105AD0000000000000000A014B616D65726100006A |
:105AE0004E6F726D616C00000000803F17B7D138B7 |
:0E5AF00030FB103A403296020A640500230093 |
:00000001FF |
/branches/chris_hallo2/Flight-Ctrl_MEGA644_V0_60.lss |
---|
0,0 → 1,9066 |
Flight-Ctrl_MEGA644_V0_60.elf: file format elf32-avr |
Sections: |
Idx Name Size VMA LMA File off Algn |
0 .data 0000008e 00800100 00005a70 00005b24 2**0 |
CONTENTS, ALLOC, LOAD, DATA |
1 .text 00005a70 00000000 00000000 000000b4 2**1 |
CONTENTS, ALLOC, LOAD, READONLY, CODE |
2 .bss 0000042f 0080018e 0080018e 00005bb2 2**0 |
ALLOC |
3 .eeprom 00000800 00810000 00810000 00005bb2 2**0 |
CONTENTS, ALLOC, LOAD, DATA |
4 .stab 00000378 00000000 00000000 000063b4 2**2 |
CONTENTS, READONLY, DEBUGGING |
5 .stabstr 00000071 00000000 00000000 0000672c 2**0 |
CONTENTS, READONLY, DEBUGGING |
Disassembly of section .text: |
00000000 <__vectors>: |
0: 0c 94 d9 01 jmp 0x3b2 ; 0x3b2 <__ctors_end> |
4: 0c 94 f6 01 jmp 0x3ec ; 0x3ec <__bad_interrupt> |
8: 0c 94 f6 01 jmp 0x3ec ; 0x3ec <__bad_interrupt> |
c: 0c 94 f6 01 jmp 0x3ec ; 0x3ec <__bad_interrupt> |
10: 0c 94 f6 01 jmp 0x3ec ; 0x3ec <__bad_interrupt> |
14: 0c 94 f6 01 jmp 0x3ec ; 0x3ec <__bad_interrupt> |
18: 0c 94 f6 01 jmp 0x3ec ; 0x3ec <__bad_interrupt> |
1c: 0c 94 f6 01 jmp 0x3ec ; 0x3ec <__bad_interrupt> |
20: 0c 94 f6 01 jmp 0x3ec ; 0x3ec <__bad_interrupt> |
24: 0c 94 10 0c jmp 0x1820 ; 0x1820 <__vector_9> |
28: 0c 94 f6 01 jmp 0x3ec ; 0x3ec <__bad_interrupt> |
2c: 0c 94 f6 01 jmp 0x3ec ; 0x3ec <__bad_interrupt> |
30: 0c 94 e1 14 jmp 0x29c2 ; 0x29c2 <__vector_12> |
34: 0c 94 f6 01 jmp 0x3ec ; 0x3ec <__bad_interrupt> |
38: 0c 94 f6 01 jmp 0x3ec ; 0x3ec <__bad_interrupt> |
3c: 0c 94 f6 01 jmp 0x3ec ; 0x3ec <__bad_interrupt> |
40: 0c 94 f6 01 jmp 0x3ec ; 0x3ec <__bad_interrupt> |
44: 0c 94 f6 01 jmp 0x3ec ; 0x3ec <__bad_interrupt> |
48: 0c 94 67 0b jmp 0x16ce ; 0x16ce <__vector_18> |
4c: 0c 94 f6 01 jmp 0x3ec ; 0x3ec <__bad_interrupt> |
50: 0c 94 43 04 jmp 0x886 ; 0x886 <__vector_20> |
54: 0c 94 f6 01 jmp 0x3ec ; 0x3ec <__bad_interrupt> |
58: 0c 94 92 03 jmp 0x724 ; 0x724 <__vector_22> |
5c: 0c 94 f6 01 jmp 0x3ec ; 0x3ec <__bad_interrupt> |
60: 0c 94 fc 0c jmp 0x19f8 ; 0x19f8 <__vector_24> |
64: 0c 94 f6 01 jmp 0x3ec ; 0x3ec <__bad_interrupt> |
68: 0c 94 2e 14 jmp 0x285c ; 0x285c <__vector_26> |
6c: 0c 94 f6 01 jmp 0x3ec ; 0x3ec <__bad_interrupt> |
00000070 <__c.2018>: |
70: 0a 0a 0d 00 .... |
00000074 <__c.2016>: |
74: 4e 65 75 74 72 61 6c 00 Neutral. |
0000007c <__c.2014>: |
7c: 48 65 61 64 69 6e 67 48 6f 6c 64 00 HeadingHold. |
00000088 <__c.2012>: |
88: 0a 0d 53 74 65 75 65 72 75 6e 67 3a 20 00 ..Steuerung: . |
00000096 <__c.2010>: |
96: 4f 4b 0a 0d 00 OK... |
0000009b <__c.2005>: |
9b: 0a 0d 41 62 67 6c 65 69 63 68 20 4c 75 66 74 64 ..Abgleich Luftd |
ab: 72 75 63 6b 73 65 6e 73 6f 72 2e 2e 00 rucksensor... |
000000b8 <__c.2003>: |
b8: 0a 0d 42 65 6e 75 74 7a 65 20 50 61 72 61 6d 65 ..Benutze Parame |
c8: 74 65 72 73 61 74 7a 20 25 64 00 tersatz %d. |
000000d3 <__c.1995>: |
d3: 0a 0d 49 6e 69 74 2e 20 45 45 50 52 4f 4d 3a 20 ..Init. EEPROM: |
e3: 47 65 6e 65 72 69 65 72 65 20 44 65 66 61 75 6c Generiere Defaul |
f3: 74 2d 50 61 72 61 6d 65 74 65 72 2e 2e 2e 00 t-Parameter.... |
00000102 <__c.1993>: |
102: 0a 0d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ..============== |
112: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================ |
... |
00000123 <__c.1991>: |
123: 0a 0d 46 6c 69 67 68 74 43 6f 6e 74 72 6f 6c 20 ..FlightControl |
133: 56 25 64 2e 25 64 20 00 V%d.%d . |
0000013b <__c.1990>: |
13b: 2e 00 .. |
0000013d <__c.2072>: |
13d: 52 61 6e 67 65 3a 25 33 69 2d 25 33 69 00 Range:%3i-%3i. |
0000014b <__c.2070>: |
14b: 53 74 65 6c 6c 75 6e 67 3a 20 25 33 69 00 Stellung: %3i. |
00000159 <__c.2068>: |
159: 53 65 74 70 6f 69 6e 74 20 20 25 33 69 00 Setpoint %3i. |
00000167 <__c.2066>: |
167: 53 65 72 76 6f 20 20 00 Servo . |
0000016f <__c.2063>: |
16f: 50 6f 74 69 34 3a 20 20 25 33 69 00 Poti4: %3i. |
0000017b <__c.2061>: |
17b: 50 6f 74 69 33 3a 20 20 25 33 69 00 Poti3: %3i. |
00000187 <__c.2059>: |
187: 50 6f 74 69 32 3a 20 20 25 33 69 00 Poti2: %3i. |
00000193 <__c.2057>: |
193: 50 6f 74 69 31 3a 20 20 25 33 69 00 Poti1: %3i. |
0000019f <__c.2054>: |
19f: 53 74 61 72 74 3a 20 20 20 20 20 25 35 69 00 Start: %5i. |
000001ae <__c.2052>: |
1ae: 4d 65 73 73 77 65 72 74 3a 20 20 25 35 69 00 Messwert: %5i. |
000001bd <__c.2050>: |
1bd: 52 69 63 68 74 75 6e 67 3a 20 20 25 35 69 00 Richtung: %5i. |
000001cc <__c.2048>: |
1cc: 4b 6f 6d 70 61 73 73 20 20 20 20 20 20 20 00 Kompass . |
000001db <__c.2045>: |
1db: 45 6d 70 66 2e 50 65 67 65 6c 3a 25 35 69 00 Empf.Pegel:%5i. |
000001ea <__c.2043>: |
1ea: 53 70 61 6e 6e 75 6e 67 3a 20 20 25 35 69 00 Spannung: %5i. |
000001f9 <__c.2040>: |
1f9: 48 6f 63 68 20 25 34 69 20 28 25 33 69 29 00 Hoch %4i (%3i). |
00000208 <__c.2038>: |
208: 52 6f 6c 6c 20 25 34 69 20 28 25 33 69 29 00 Roll %4i (%3i). |
00000217 <__c.2036>: |
217: 4e 69 63 6b 20 25 34 69 20 28 25 33 69 29 00 Nick %4i (%3i). |
00000226 <__c.2034>: |
226: 41 43 43 20 2d 20 53 65 6e 73 6f 72 00 ACC - Sensor. |
00000233 <__c.2031>: |
233: 47 69 65 72 20 25 34 69 20 28 25 33 69 29 00 Gier %4i (%3i). |
00000242 <__c.2029>: |
242: 52 6f 6c 6c 20 25 34 69 20 28 25 33 69 29 00 Roll %4i (%3i). |
00000251 <__c.2027>: |
251: 4e 69 63 6b 20 25 34 69 20 28 25 33 69 29 00 Nick %4i (%3i). |
00000260 <__c.2025>: |
260: 47 79 72 6f 20 2d 20 53 65 6e 73 6f 72 00 Gyro - Sensor. |
0000026e <__c.2022>: |
26e: 50 33 3a 25 34 69 20 20 4b 61 6e e4 6c 65 20 00 P3:%4i Kan.le . |
0000027e <__c.2020>: |
27e: 50 31 3a 25 34 69 20 20 50 32 3a 25 34 69 20 00 P1:%4i P2:%4i . |
0000028e <__c.2018>: |
28e: 47 73 3a 25 34 69 20 20 47 69 3a 25 34 69 20 00 Gs:%4i Gi:%4i . |
0000029e <__c.2016>: |
29e: 4e 69 3a 25 34 69 20 20 52 6f 3a 25 34 69 20 00 Ni:%4i Ro:%4i . |
000002ae <__c.2013>: |
2ae: 4b 37 3a 25 34 69 20 20 4b 61 6e e4 6c 65 20 00 K7:%4i Kan.le . |
000002be <__c.2011>: |
2be: 4b 35 3a 25 34 69 20 20 4b 36 3a 25 34 69 20 00 K5:%4i K6:%4i . |
000002ce <__c.2009>: |
2ce: 4b 33 3a 25 34 69 20 20 4b 34 3a 25 34 69 20 00 K3:%4i K4:%4i . |
000002de <__c.2007>: |
2de: 4b 31 3a 25 34 69 20 20 4b 32 3a 25 34 69 20 00 K1:%4i K2:%4i . |
000002ee <__c.2004>: |
2ee: 4b 6f 6d 70 61 73 73 3a 20 20 20 25 35 69 00 Kompass: %5i. |
000002fd <__c.2002>: |
2fd: 52 6f 6c 6c 3a 20 20 20 20 20 20 25 35 69 00 Roll: %5i. |
0000030c <__c.2000>: |
30c: 4e 69 63 6b 3a 20 20 20 20 20 20 25 35 69 00 Nick: %5i. |
0000031b <__c.1998>: |
31b: 61 6b 74 2e 20 4c 61 67 65 00 akt. Lage. |
00000325 <__c.1995>: |
325: 48 f6 68 65 6e 72 65 67 65 6c 75 6e 67 00 H.henregelung. |
00000333 <__c.1993>: |
333: 4b 65 69 6e 65 20 00 Keine . |
0000033a <__c.1991>: |
33a: 4f 66 66 20 20 20 20 20 20 3a 20 25 35 69 00 Off : %5i. |
00000349 <__c.1989>: |
349: 4c 75 66 74 64 72 75 63 6b 3a 20 25 35 69 00 Luftdruck: %5i. |
00000358 <__c.1987>: |
358: 53 6f 6c 6c 48 6f 65 68 65 3a 20 25 35 69 00 SollHoehe: %5i. |
00000367 <__c.1985>: |
367: 48 6f 65 68 65 3a 20 20 20 20 20 25 35 69 00 Hoehe: %5i. |
00000376 <__c.1981>: |
376: 28 63 29 20 48 6f 6c 67 65 72 20 42 75 73 73 00 (c) Holger Buss. |
00000386 <__c.1979>: |
386: 53 65 74 74 69 6e 67 3a 20 25 64 20 00 Setting: %d . |
00000393 <__c.1977>: |
393: 56 25 64 2e 25 64 00 V%d.%d. |
0000039a <__c.1975>: |
39a: 2b 2b 20 4d 69 6b 72 6f 4b 6f 70 74 65 72 20 2b ++ MikroKopter + |
3aa: 2b 00 +. |
000003ac <__c.1972>: |
3ac: 5b 25 69 5d 00 00 [%i].. |
000003b2 <__ctors_end>: |
3b2: 11 24 eor r1, r1 |
3b4: 1f be out 0x3f, r1 ; 63 |
3b6: cf ef ldi r28, 0xFF ; 255 |
3b8: d0 e1 ldi r29, 0x10 ; 16 |
3ba: de bf out 0x3e, r29 ; 62 |
3bc: cd bf out 0x3d, r28 ; 61 |
000003be <__do_copy_data>: |
3be: 11 e0 ldi r17, 0x01 ; 1 |
3c0: a0 e0 ldi r26, 0x00 ; 0 |
3c2: b1 e0 ldi r27, 0x01 ; 1 |
3c4: e0 e7 ldi r30, 0x70 ; 112 |
3c6: fa e5 ldi r31, 0x5A ; 90 |
3c8: 02 c0 rjmp .+4 ; 0x3ce <.do_copy_data_start> |
000003ca <.do_copy_data_loop>: |
3ca: 05 90 lpm r0, Z+ |
3cc: 0d 92 st X+, r0 |
000003ce <.do_copy_data_start>: |
3ce: ae 38 cpi r26, 0x8E ; 142 |
3d0: b1 07 cpc r27, r17 |
3d2: d9 f7 brne .-10 ; 0x3ca <.do_copy_data_loop> |
000003d4 <__do_clear_bss>: |
3d4: 15 e0 ldi r17, 0x05 ; 5 |
3d6: ae e8 ldi r26, 0x8E ; 142 |
3d8: b1 e0 ldi r27, 0x01 ; 1 |
3da: 01 c0 rjmp .+2 ; 0x3de <.do_clear_bss_start> |
000003dc <.do_clear_bss_loop>: |
3dc: 1d 92 st X+, r1 |
000003de <.do_clear_bss_start>: |
3de: ad 3b cpi r26, 0xBD ; 189 |
3e0: b1 07 cpc r27, r17 |
3e2: e1 f7 brne .-8 ; 0x3dc <.do_clear_bss_loop> |
3e4: 0e 94 2d 02 call 0x45a ; 0x45a <main> |
3e8: 0c 94 37 2d jmp 0x5a6e ; 0x5a6e <_exit> |
000003ec <__bad_interrupt>: |
3ec: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> |
000003f0 <GetActiveParamSetNumber>: |
3f0: a2 e0 ldi r26, 0x02 ; 2 |
3f2: b0 e0 ldi r27, 0x00 ; 0 |
3f4: 0e 94 23 2d call 0x5a46 ; 0x5a46 <__eeprom_read_byte_1F2021> |
3f8: 80 2d mov r24, r0 |
3fa: 99 27 eor r25, r25 |
3fc: 08 95 ret |
000003fe <WriteParameterSet>: |
3fe: fb 01 movw r30, r22 |
400: 28 2f mov r18, r24 |
402: 86 30 cpi r24, 0x06 ; 6 |
404: 08 f0 brcs .+2 ; 0x408 <WriteParameterSet+0xa> |
406: 25 e0 ldi r18, 0x05 ; 5 |
408: 84 2f mov r24, r20 |
40a: 99 27 eor r25, r25 |
40c: 42 9f mul r20, r18 |
40e: d0 01 movw r26, r0 |
410: 11 24 eor r1, r1 |
412: ac 59 subi r26, 0x9C ; 156 |
414: bf 4f sbci r27, 0xFF ; 255 |
00000416 <.26_start>: |
416: 01 97 sbiw r24, 0x01 ; 1 |
418: 24 f0 brlt .+8 ; 0x422 <.26_finished> |
41a: 01 90 ld r0, Z+ |
41c: 0e 94 2b 2d call 0x5a56 ; 0x5a56 <__eeprom_write_byte_1F2021> |
420: fa cf rjmp .-12 ; 0x416 <.26_start> |
00000422 <.26_finished>: |
422: a2 e0 ldi r26, 0x02 ; 2 |
424: b0 e0 ldi r27, 0x00 ; 0 |
426: 02 2e mov r0, r18 |
428: 0e 94 2b 2d call 0x5a56 ; 0x5a56 <__eeprom_write_byte_1F2021> |
42c: 08 95 ret |
0000042e <ReadParameterSet>: |
42e: cf 93 push r28 |
430: df 93 push r29 |
432: fb 01 movw r30, r22 |
434: c4 2f mov r28, r20 |
436: dd 27 eor r29, r29 |
438: 86 30 cpi r24, 0x06 ; 6 |
43a: 08 f0 brcs .+2 ; 0x43e <ReadParameterSet+0x10> |
43c: 85 e0 ldi r24, 0x05 ; 5 |
43e: 48 9f mul r20, r24 |
440: d0 01 movw r26, r0 |
442: 11 24 eor r1, r1 |
444: ac 59 subi r26, 0x9C ; 156 |
446: bf 4f sbci r27, 0xFF ; 255 |
00000448 <.44_start>: |
448: 21 97 sbiw r28, 0x01 ; 1 |
44a: 24 f0 brlt .+8 ; 0x454 <.44_finished> |
44c: 0e 94 23 2d call 0x5a46 ; 0x5a46 <__eeprom_read_byte_1F2021> |
450: 01 92 st Z+, r0 |
452: fa cf rjmp .-12 ; 0x448 <.44_start> |
00000454 <.44_finished>: |
454: df 91 pop r29 |
456: cf 91 pop r28 |
458: 08 95 ret |
0000045a <main>: |
45a: 0f 93 push r16 |
45c: 1f 93 push r17 |
45e: cf 93 push r28 |
460: df 93 push r29 |
462: 91 e0 ldi r25, 0x01 ; 1 |
464: 97 b9 out 0x07, r25 ; 7 |
466: 8f ef ldi r24, 0xFF ; 255 |
468: 88 b9 out 0x08, r24 ; 8 |
46a: 8b e1 ldi r24, 0x1B ; 27 |
46c: 84 b9 out 0x04, r24 ; 4 |
46e: 95 b9 out 0x05, r25 ; 5 |
470: 8e e3 ldi r24, 0x3E ; 62 |
472: 8a b9 out 0x0a, r24 ; 10 |
474: 57 9a sbi 0x0a, 7 ; 10 |
476: 87 ef ldi r24, 0xF7 ; 247 |
478: 8b b9 out 0x0b, r24 ; 11 |
47a: 84 b7 in r24, 0x34 ; 52 |
47c: 87 7f andi r24, 0xF7 ; 247 |
47e: 84 bf out 0x34, r24 ; 52 |
480: 80 91 60 00 lds r24, 0x0060 |
484: 88 61 ori r24, 0x18 ; 24 |
486: 80 93 60 00 sts 0x0060, r24 |
48a: 10 92 60 00 sts 0x0060, r1 |
48e: 80 ed ldi r24, 0xD0 ; 208 |
490: 97 e0 ldi r25, 0x07 ; 7 |
492: 90 93 ac 01 sts 0x01AC, r25 |
496: 80 93 ab 01 sts 0x01AB, r24 |
49a: 10 92 2d 02 sts 0x022D, r1 |
49e: 10 92 2c 02 sts 0x022C, r1 |
4a2: 10 92 46 05 sts 0x0546, r1 |
4a6: 10 92 45 05 sts 0x0545, r1 |
4aa: 10 92 2b 02 sts 0x022B, r1 |
4ae: 10 92 2a 02 sts 0x022A, r1 |
4b2: 10 92 29 02 sts 0x0229, r1 |
4b6: 10 92 28 02 sts 0x0228, r1 |
4ba: 28 98 cbi 0x05, 0 ; 5 |
4bc: 0e 94 bd 0c call 0x197a ; 0x197a <Timer_Init> |
4c0: 0e 94 2d 07 call 0xe5a ; 0xe5a <UART_Init> |
4c4: 0e 94 cc 14 call 0x2998 ; 0x2998 <rc_sum_init> |
4c8: 0e 94 f6 0c call 0x19ec ; 0x19ec <ADC_Init> |
4cc: 0e 94 14 14 call 0x2828 ; 0x2828 <i2c_init> |
4d0: 78 94 sei |
4d2: 10 92 00 04 sts 0x0400, r1 |
4d6: 8c e3 ldi r24, 0x3C ; 60 |
4d8: 80 93 01 04 sts 0x0401, r24 |
4dc: 84 e0 ldi r24, 0x04 ; 4 |
4de: 80 93 02 04 sts 0x0402, r24 |
4e2: 8c e3 ldi r24, 0x3C ; 60 |
4e4: 90 e0 ldi r25, 0x00 ; 0 |
4e6: 9f 93 push r25 |
4e8: 8f 93 push r24 |
4ea: 1f 92 push r1 |
4ec: 1f 92 push r1 |
4ee: 83 e2 ldi r24, 0x23 ; 35 |
4f0: 91 e0 ldi r25, 0x01 ; 1 |
4f2: 9f 93 push r25 |
4f4: 8f 93 push r24 |
4f6: 1f 92 push r1 |
4f8: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
4fc: 82 e0 ldi r24, 0x02 ; 2 |
4fe: 91 e0 ldi r25, 0x01 ; 1 |
500: 9f 93 push r25 |
502: 8f 93 push r24 |
504: 1f 92 push r1 |
506: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
50a: 29 9a sbi 0x05, 1 ; 5 |
50c: a1 e0 ldi r26, 0x01 ; 1 |
50e: b0 e0 ldi r27, 0x00 ; 0 |
510: 0e 94 23 2d call 0x5a46 ; 0x5a46 <__eeprom_read_byte_1F2021> |
514: 80 2d mov r24, r0 |
516: 2d b7 in r18, 0x3d ; 61 |
518: 3e b7 in r19, 0x3e ; 62 |
51a: 26 5f subi r18, 0xF6 ; 246 |
51c: 3f 4f sbci r19, 0xFF ; 255 |
51e: 0f b6 in r0, 0x3f ; 63 |
520: f8 94 cli |
522: 3e bf out 0x3e, r19 ; 62 |
524: 0f be out 0x3f, r0 ; 63 |
526: 2d bf out 0x3d, r18 ; 61 |
528: 8b 33 cpi r24, 0x3B ; 59 |
52a: a9 f1 breq .+106 ; 0x596 <main+0x13c> |
52c: 83 ed ldi r24, 0xD3 ; 211 |
52e: 90 e0 ldi r25, 0x00 ; 0 |
530: 9f 93 push r25 |
532: 8f 93 push r24 |
534: 1f 92 push r1 |
536: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
53a: 0e 94 97 1c call 0x392e ; 0x392e <DefaultKonstanten1> |
53e: 4a e3 ldi r20, 0x3A ; 58 |
540: 6d e6 ldi r22, 0x6D ; 109 |
542: 75 e0 ldi r23, 0x05 ; 5 |
544: 80 e0 ldi r24, 0x00 ; 0 |
546: 0e 94 ff 01 call 0x3fe ; 0x3fe <WriteParameterSet> |
54a: 01 e0 ldi r16, 0x01 ; 1 |
54c: 0f 90 pop r0 |
54e: 0f 90 pop r0 |
550: 0f 90 pop r0 |
552: 02 30 cpi r16, 0x02 ; 2 |
554: 49 f4 brne .+18 ; 0x568 <main+0x10e> |
556: 0e 94 2a 1c call 0x3854 ; 0x3854 <DefaultKonstanten2> |
55a: 4a e3 ldi r20, 0x3A ; 58 |
55c: 6d e6 ldi r22, 0x6D ; 109 |
55e: 75 e0 ldi r23, 0x05 ; 5 |
560: 82 e0 ldi r24, 0x02 ; 2 |
562: 0e 94 ff 01 call 0x3fe ; 0x3fe <WriteParameterSet> |
566: 03 e0 ldi r16, 0x03 ; 3 |
568: 4a e3 ldi r20, 0x3A ; 58 |
56a: 6d e6 ldi r22, 0x6D ; 109 |
56c: 75 e0 ldi r23, 0x05 ; 5 |
56e: 80 2f mov r24, r16 |
570: 0e 94 ff 01 call 0x3fe ; 0x3fe <WriteParameterSet> |
574: 0f 5f subi r16, 0xFF ; 255 |
576: 06 30 cpi r16, 0x06 ; 6 |
578: 60 f3 brcs .-40 ; 0x552 <main+0xf8> |
57a: 81 e0 ldi r24, 0x01 ; 1 |
57c: 22 e0 ldi r18, 0x02 ; 2 |
57e: 30 e0 ldi r19, 0x00 ; 0 |
580: d9 01 movw r26, r18 |
582: 08 2e mov r0, r24 |
584: 0e 94 2b 2d call 0x5a56 ; 0x5a56 <__eeprom_write_byte_1F2021> |
588: 8b e3 ldi r24, 0x3B ; 59 |
58a: 21 50 subi r18, 0x01 ; 1 |
58c: 30 40 sbci r19, 0x00 ; 0 |
58e: d9 01 movw r26, r18 |
590: 08 2e mov r0, r24 |
592: 0e 94 2b 2d call 0x5a56 ; 0x5a56 <__eeprom_write_byte_1F2021> |
596: 02 e0 ldi r16, 0x02 ; 2 |
598: 10 e0 ldi r17, 0x00 ; 0 |
59a: d8 01 movw r26, r16 |
59c: 0e 94 23 2d call 0x5a46 ; 0x5a46 <__eeprom_read_byte_1F2021> |
5a0: 80 2d mov r24, r0 |
5a2: 4a e3 ldi r20, 0x3A ; 58 |
5a4: 6d e6 ldi r22, 0x6D ; 109 |
5a6: 75 e0 ldi r23, 0x05 ; 5 |
5a8: 0e 94 17 02 call 0x42e ; 0x42e <ReadParameterSet> |
5ac: d8 01 movw r26, r16 |
5ae: 0e 94 23 2d call 0x5a46 ; 0x5a46 <__eeprom_read_byte_1F2021> |
5b2: 80 2d mov r24, r0 |
5b4: 99 27 eor r25, r25 |
5b6: 9f 93 push r25 |
5b8: 8f 93 push r24 |
5ba: 88 eb ldi r24, 0xB8 ; 184 |
5bc: 90 e0 ldi r25, 0x00 ; 0 |
5be: 9f 93 push r25 |
5c0: 8f 93 push r24 |
5c2: 1f 92 push r1 |
5c4: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
5c8: 80 91 75 05 lds r24, 0x0575 |
5cc: 0f 90 pop r0 |
5ce: 0f 90 pop r0 |
5d0: 0f 90 pop r0 |
5d2: 0f 90 pop r0 |
5d4: 0f 90 pop r0 |
5d6: 80 ff sbrs r24, 0 |
5d8: 20 c0 rjmp .+64 ; 0x61a <main+0x1c0> |
5da: 8b e9 ldi r24, 0x9B ; 155 |
5dc: 90 e0 ldi r25, 0x00 ; 0 |
5de: 9f 93 push r25 |
5e0: 8f 93 push r24 |
5e2: 1f 92 push r1 |
5e4: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
5e8: 84 ec ldi r24, 0xC4 ; 196 |
5ea: 99 e0 ldi r25, 0x09 ; 9 |
5ec: 0e 94 fb 0b call 0x17f6 ; 0x17f6 <SetDelay> |
5f0: ec 01 movw r28, r24 |
5f2: 0e 94 20 10 call 0x2040 ; 0x2040 <SucheLuftruckOffset> |
5f6: 0f 90 pop r0 |
5f8: 0f 90 pop r0 |
5fa: 0f 90 pop r0 |
5fc: ce 01 movw r24, r28 |
5fe: 0e 94 04 0c call 0x1808 ; 0x1808 <CheckDelay> |
602: 88 23 and r24, r24 |
604: d9 f3 breq .-10 ; 0x5fc <main+0x1a2> |
606: 86 e9 ldi r24, 0x96 ; 150 |
608: 90 e0 ldi r25, 0x00 ; 0 |
60a: 9f 93 push r25 |
60c: 8f 93 push r24 |
60e: 1f 92 push r1 |
610: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
614: 0f 90 pop r0 |
616: 0f 90 pop r0 |
618: 0f 90 pop r0 |
61a: 0e 94 4f 1d call 0x3a9e ; 0x3a9e <SetNeutral> |
61e: 28 98 cbi 0x05, 0 ; 5 |
620: 80 ed ldi r24, 0xD0 ; 208 |
622: 97 e0 ldi r25, 0x07 ; 7 |
624: 90 93 ac 01 sts 0x01AC, r25 |
628: 80 93 ab 01 sts 0x01AB, r24 |
62c: 88 ee ldi r24, 0xE8 ; 232 |
62e: 93 e0 ldi r25, 0x03 ; 3 |
630: 90 93 fb 03 sts 0x03FB, r25 |
634: 80 93 fa 03 sts 0x03FA, r24 |
638: 85 e5 ldi r24, 0x55 ; 85 |
63a: 80 93 f5 03 sts 0x03F5, r24 |
63e: 88 e8 ldi r24, 0x88 ; 136 |
640: 90 e0 ldi r25, 0x00 ; 0 |
642: 9f 93 push r25 |
644: 8f 93 push r24 |
646: 1f 92 push r1 |
648: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
64c: 80 91 75 05 lds r24, 0x0575 |
650: 0f 90 pop r0 |
652: 0f 90 pop r0 |
654: 0f 90 pop r0 |
656: 82 ff sbrs r24, 2 |
658: 03 c0 rjmp .+6 ; 0x660 <main+0x206> |
65a: 8c e7 ldi r24, 0x7C ; 124 |
65c: 90 e0 ldi r25, 0x00 ; 0 |
65e: 02 c0 rjmp .+4 ; 0x664 <main+0x20a> |
660: 84 e7 ldi r24, 0x74 ; 116 |
662: 90 e0 ldi r25, 0x00 ; 0 |
664: 9f 93 push r25 |
666: 8f 93 push r24 |
668: 1f 92 push r1 |
66a: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
66e: 0f 90 pop r0 |
670: 0f 90 pop r0 |
672: 0f 90 pop r0 |
674: 80 e7 ldi r24, 0x70 ; 112 |
676: 90 e0 ldi r25, 0x00 ; 0 |
678: 9f 93 push r25 |
67a: 8f 93 push r24 |
67c: 1f 92 push r1 |
67e: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
682: 0e 94 47 10 call 0x208e ; 0x208e <LcdClear> |
686: 0f 90 pop r0 |
688: 0f 90 pop r0 |
68a: 0f 90 pop r0 |
68c: 80 91 a8 01 lds r24, 0x01A8 |
690: 88 23 and r24, r24 |
692: 79 f1 breq .+94 ; 0x6f2 <main+0x298> |
694: 10 92 a8 01 sts 0x01A8, r1 |
698: 0e 94 60 1e call 0x3cc0 ; 0x3cc0 <MotorRegler> |
69c: 0e 94 08 1d call 0x3a10 ; 0x3a10 <SendMotorData> |
6a0: 28 98 cbi 0x05, 0 ; 5 |
6a2: 80 91 01 01 lds r24, 0x0101 |
6a6: 88 23 and r24, r24 |
6a8: 19 f0 breq .+6 ; 0x6b0 <main+0x256> |
6aa: 81 50 subi r24, 0x01 ; 1 |
6ac: 80 93 01 01 sts 0x0101, r24 |
6b0: 80 91 27 02 lds r24, 0x0227 |
6b4: 88 23 and r24, r24 |
6b6: 29 f0 breq .+10 ; 0x6c2 <main+0x268> |
6b8: 80 91 27 02 lds r24, 0x0227 |
6bc: 81 50 subi r24, 0x01 ; 1 |
6be: 80 93 27 02 sts 0x0227, r24 |
6c2: 20 91 04 01 lds r18, 0x0104 |
6c6: 30 91 05 01 lds r19, 0x0105 |
6ca: 80 91 85 05 lds r24, 0x0585 |
6ce: 99 27 eor r25, r25 |
6d0: 28 17 cp r18, r24 |
6d2: 39 07 cpc r19, r25 |
6d4: 34 f4 brge .+12 ; 0x6e2 <main+0x288> |
6d6: 80 ed ldi r24, 0xD0 ; 208 |
6d8: 97 e0 ldi r25, 0x07 ; 7 |
6da: 90 93 ac 01 sts 0x01AC, r25 |
6de: 80 93 ab 01 sts 0x01AB, r24 |
6e2: 80 91 d6 01 lds r24, 0x01D6 |
6e6: 88 23 and r24, r24 |
6e8: 19 f4 brne .+6 ; 0x6f0 <main+0x296> |
6ea: 0e 94 14 14 call 0x2828 ; 0x2828 <i2c_init> |
6ee: 01 c0 rjmp .+2 ; 0x6f2 <main+0x298> |
6f0: 28 98 cbi 0x05, 0 ; 5 |
6f2: 0e 94 4a 07 call 0xe94 ; 0xe94 <DatenUebertragung> |
6f6: 0e 94 b8 07 call 0xf70 ; 0xf70 <BearbeiteRxDaten> |
6fa: 80 e0 ldi r24, 0x00 ; 0 |
6fc: 90 e0 ldi r25, 0x00 ; 0 |
6fe: 0e 94 04 0c call 0x1808 ; 0x1808 <CheckDelay> |
702: 88 23 and r24, r24 |
704: 19 f2 breq .-122 ; 0x68c <main+0x232> |
706: 80 91 2e 02 lds r24, 0x022E |
70a: 88 23 and r24, r24 |
70c: 29 f0 breq .+10 ; 0x718 <main+0x2be> |
70e: 88 b1 in r24, 0x08 ; 8 |
710: 90 e1 ldi r25, 0x10 ; 16 |
712: 89 27 eor r24, r25 |
714: 88 b9 out 0x08, r24 ; 8 |
716: 01 c0 rjmp .+2 ; 0x71a <main+0x2c0> |
718: 44 98 cbi 0x08, 4 ; 8 |
71a: 84 ef ldi r24, 0xF4 ; 244 |
71c: 91 e0 ldi r25, 0x01 ; 1 |
71e: 0e 94 fb 0b call 0x17f6 ; 0x17f6 <SetDelay> |
722: b4 cf rjmp .-152 ; 0x68c <main+0x232> |
00000724 <__vector_22>: |
724: 1f 92 push r1 |
726: 0f 92 push r0 |
728: 0f b6 in r0, 0x3f ; 63 |
72a: 0f 92 push r0 |
72c: 11 24 eor r1, r1 |
72e: 8f 93 push r24 |
730: 9f 93 push r25 |
732: ef 93 push r30 |
734: ff 93 push r31 |
736: 80 91 00 01 lds r24, 0x0100 |
73a: 88 23 and r24, r24 |
73c: e1 f4 brne .+56 ; 0x776 <__vector_22+0x52> |
73e: 80 91 a3 01 lds r24, 0x01A3 |
742: 90 91 a4 01 lds r25, 0x01A4 |
746: 01 96 adiw r24, 0x01 ; 1 |
748: 90 93 a4 01 sts 0x01A4, r25 |
74c: 80 93 a3 01 sts 0x01A3, r24 |
750: fc 01 movw r30, r24 |
752: eb 54 subi r30, 0x4B ; 75 |
754: fd 4f sbci r31, 0xFD ; 253 |
756: e0 81 ld r30, Z |
758: ed 30 cpi r30, 0x0D ; 13 |
75a: 19 f0 breq .+6 ; 0x762 <__vector_22+0x3e> |
75c: 86 39 cpi r24, 0x96 ; 150 |
75e: 91 05 cpc r25, r1 |
760: 39 f4 brne .+14 ; 0x770 <__vector_22+0x4c> |
762: 10 92 a4 01 sts 0x01A4, r1 |
766: 10 92 a3 01 sts 0x01A3, r1 |
76a: 81 e0 ldi r24, 0x01 ; 1 |
76c: 80 93 00 01 sts 0x0100, r24 |
770: e0 93 c6 00 sts 0x00C6, r30 |
774: 04 c0 rjmp .+8 ; 0x77e <__vector_22+0x5a> |
776: 10 92 a4 01 sts 0x01A4, r1 |
77a: 10 92 a3 01 sts 0x01A3, r1 |
77e: ff 91 pop r31 |
780: ef 91 pop r30 |
782: 9f 91 pop r25 |
784: 8f 91 pop r24 |
786: 0f 90 pop r0 |
788: 0f be out 0x3f, r0 ; 63 |
78a: 0f 90 pop r0 |
78c: 1f 90 pop r1 |
78e: 18 95 reti |
00000790 <GPSscanData>: |
790: 80 91 d7 04 lds r24, 0x04D7 |
794: 81 30 cpi r24, 0x01 ; 1 |
796: 91 f5 brne .+100 ; 0x7fc <GPSscanData+0x6c> |
798: 80 91 c7 04 lds r24, 0x04C7 |
79c: 90 91 c8 04 lds r25, 0x04C8 |
7a0: a0 91 c9 04 lds r26, 0x04C9 |
7a4: b0 91 ca 04 lds r27, 0x04CA |
7a8: 80 93 0a 05 sts 0x050A, r24 |
7ac: 90 93 0b 05 sts 0x050B, r25 |
7b0: a0 93 0c 05 sts 0x050C, r26 |
7b4: b0 93 0d 05 sts 0x050D, r27 |
7b8: 80 91 cb 04 lds r24, 0x04CB |
7bc: 90 91 cc 04 lds r25, 0x04CC |
7c0: a0 91 cd 04 lds r26, 0x04CD |
7c4: b0 91 ce 04 lds r27, 0x04CE |
7c8: 80 93 0e 05 sts 0x050E, r24 |
7cc: 90 93 0f 05 sts 0x050F, r25 |
7d0: a0 93 10 05 sts 0x0510, r26 |
7d4: b0 93 11 05 sts 0x0511, r27 |
7d8: 80 91 cf 04 lds r24, 0x04CF |
7dc: 90 91 d0 04 lds r25, 0x04D0 |
7e0: a0 91 d1 04 lds r26, 0x04D1 |
7e4: b0 91 d2 04 lds r27, 0x04D2 |
7e8: 80 93 12 05 sts 0x0512, r24 |
7ec: 90 93 13 05 sts 0x0513, r25 |
7f0: a0 93 14 05 sts 0x0514, r26 |
7f4: b0 93 15 05 sts 0x0515, r27 |
7f8: 10 92 d7 04 sts 0x04D7, r1 |
7fc: 80 91 f4 03 lds r24, 0x03F4 |
800: 81 30 cpi r24, 0x01 ; 1 |
802: 31 f4 brne .+12 ; 0x810 <GPSscanData+0x80> |
804: 80 91 e8 03 lds r24, 0x03E8 |
808: 80 93 22 05 sts 0x0522, r24 |
80c: 10 92 f4 03 sts 0x03F4, r1 |
810: 80 91 24 04 lds r24, 0x0424 |
814: 81 30 cpi r24, 0x01 ; 1 |
816: 91 f5 brne .+100 ; 0x87c <GPSscanData+0xec> |
818: 80 91 14 04 lds r24, 0x0414 |
81c: 90 91 15 04 lds r25, 0x0415 |
820: a0 91 16 04 lds r26, 0x0416 |
824: b0 91 17 04 lds r27, 0x0417 |
828: 80 93 16 05 sts 0x0516, r24 |
82c: 90 93 17 05 sts 0x0517, r25 |
830: a0 93 18 05 sts 0x0518, r26 |
834: b0 93 19 05 sts 0x0519, r27 |
838: 80 91 18 04 lds r24, 0x0418 |
83c: 90 91 19 04 lds r25, 0x0419 |
840: a0 91 1a 04 lds r26, 0x041A |
844: b0 91 1b 04 lds r27, 0x041B |
848: 80 93 1a 05 sts 0x051A, r24 |
84c: 90 93 1b 05 sts 0x051B, r25 |
850: a0 93 1c 05 sts 0x051C, r26 |
854: b0 93 1d 05 sts 0x051D, r27 |
858: 80 91 1c 04 lds r24, 0x041C |
85c: 90 91 1d 04 lds r25, 0x041D |
860: a0 91 1e 04 lds r26, 0x041E |
864: b0 91 1f 04 lds r27, 0x041F |
868: 80 93 1e 05 sts 0x051E, r24 |
86c: 90 93 1f 05 sts 0x051F, r25 |
870: a0 93 20 05 sts 0x0520, r26 |
874: b0 93 21 05 sts 0x0521, r27 |
878: 10 92 24 04 sts 0x0424, r1 |
87c: 80 91 22 05 lds r24, 0x0522 |
880: 81 11 cpse r24, r1 |
882: 28 9a sbi 0x05, 0 ; 5 |
884: 08 95 ret |
00000886 <__vector_20>: |
886: 1f 92 push r1 |
888: 0f 92 push r0 |
88a: 0f b6 in r0, 0x3f ; 63 |
88c: 0f 92 push r0 |
88e: 11 24 eor r1, r1 |
890: 2f 93 push r18 |
892: 3f 93 push r19 |
894: 4f 93 push r20 |
896: 5f 93 push r21 |
898: 6f 93 push r22 |
89a: 7f 93 push r23 |
89c: 8f 93 push r24 |
89e: 9f 93 push r25 |
8a0: af 93 push r26 |
8a2: bf 93 push r27 |
8a4: cf 93 push r28 |
8a6: df 93 push r29 |
8a8: ef 93 push r30 |
8aa: ff 93 push r31 |
8ac: 80 91 c6 00 lds r24, 0x00C6 |
8b0: 80 93 92 01 sts 0x0192, r24 |
8b4: 80 91 c0 00 lds r24, 0x00C0 |
8b8: 40 91 92 01 lds r20, 0x0192 |
8bc: 88 71 andi r24, 0x18 ; 24 |
8be: 09 f0 breq .+2 ; 0x8c2 <__vector_20+0x3c> |
8c0: 05 c1 rjmp .+522 ; 0xacc <__vector_20+0x246> |
8c2: 80 91 a5 01 lds r24, 0x01A5 |
8c6: 84 30 cpi r24, 0x04 ; 4 |
8c8: 09 f4 brne .+2 ; 0x8cc <__vector_20+0x46> |
8ca: 8a c0 rjmp .+276 ; 0x9e0 <__vector_20+0x15a> |
8cc: 85 30 cpi r24, 0x05 ; 5 |
8ce: 50 f4 brcc .+20 ; 0x8e4 <__vector_20+0x5e> |
8d0: 81 30 cpi r24, 0x01 ; 1 |
8d2: d1 f0 breq .+52 ; 0x908 <__vector_20+0x82> |
8d4: 81 30 cpi r24, 0x01 ; 1 |
8d6: 98 f0 brcs .+38 ; 0x8fe <__vector_20+0x78> |
8d8: 82 30 cpi r24, 0x02 ; 2 |
8da: 01 f1 breq .+64 ; 0x91c <__vector_20+0x96> |
8dc: 83 30 cpi r24, 0x03 ; 3 |
8de: 09 f0 breq .+2 ; 0x8e2 <__vector_20+0x5c> |
8e0: f2 c0 rjmp .+484 ; 0xac6 <__vector_20+0x240> |
8e2: 21 c0 rjmp .+66 ; 0x926 <__vector_20+0xa0> |
8e4: 86 30 cpi r24, 0x06 ; 6 |
8e6: 09 f4 brne .+2 ; 0x8ea <__vector_20+0x64> |
8e8: ab c0 rjmp .+342 ; 0xa40 <__vector_20+0x1ba> |
8ea: 86 30 cpi r24, 0x06 ; 6 |
8ec: 08 f4 brcc .+2 ; 0x8f0 <__vector_20+0x6a> |
8ee: 8c c0 rjmp .+280 ; 0xa08 <__vector_20+0x182> |
8f0: 87 30 cpi r24, 0x07 ; 7 |
8f2: 09 f4 brne .+2 ; 0x8f6 <__vector_20+0x70> |
8f4: d6 c0 rjmp .+428 ; 0xaa2 <__vector_20+0x21c> |
8f6: 88 30 cpi r24, 0x08 ; 8 |
8f8: 09 f0 breq .+2 ; 0x8fc <__vector_20+0x76> |
8fa: e5 c0 rjmp .+458 ; 0xac6 <__vector_20+0x240> |
8fc: d8 c0 rjmp .+432 ; 0xaae <__vector_20+0x228> |
8fe: 45 3b cpi r20, 0xB5 ; 181 |
900: 09 f0 breq .+2 ; 0x904 <__vector_20+0x7e> |
902: e8 c0 rjmp .+464 ; 0xad4 <__vector_20+0x24e> |
904: 81 e0 ldi r24, 0x01 ; 1 |
906: 03 c0 rjmp .+6 ; 0x90e <__vector_20+0x88> |
908: 42 36 cpi r20, 0x62 ; 98 |
90a: 21 f4 brne .+8 ; 0x914 <__vector_20+0x8e> |
90c: 82 e0 ldi r24, 0x02 ; 2 |
90e: 80 93 a5 01 sts 0x01A5, r24 |
912: e0 c0 rjmp .+448 ; 0xad4 <__vector_20+0x24e> |
914: 45 3b cpi r20, 0xB5 ; 181 |
916: 09 f4 brne .+2 ; 0x91a <__vector_20+0x94> |
918: dd c0 rjmp .+442 ; 0xad4 <__vector_20+0x24e> |
91a: d5 c0 rjmp .+426 ; 0xac6 <__vector_20+0x240> |
91c: 41 30 cpi r20, 0x01 ; 1 |
91e: 09 f0 breq .+2 ; 0x922 <__vector_20+0x9c> |
920: d2 c0 rjmp .+420 ; 0xac6 <__vector_20+0x240> |
922: 83 e0 ldi r24, 0x03 ; 3 |
924: f4 cf rjmp .-24 ; 0x90e <__vector_20+0x88> |
926: 40 93 24 05 sts 0x0524, r20 |
92a: 4f 5f subi r20, 0xFF ; 255 |
92c: 40 93 b4 02 sts 0x02B4, r20 |
930: 80 91 b4 02 lds r24, 0x02B4 |
934: 8f 5f subi r24, 0xFF ; 255 |
936: 80 93 e3 03 sts 0x03E3, r24 |
93a: 84 e0 ldi r24, 0x04 ; 4 |
93c: 80 93 a5 01 sts 0x01A5, r24 |
940: 80 91 24 05 lds r24, 0x0524 |
944: 83 30 cpi r24, 0x03 ; 3 |
946: 31 f0 breq .+12 ; 0x954 <__vector_20+0xce> |
948: 81 31 cpi r24, 0x11 ; 17 |
94a: 61 f1 breq .+88 ; 0x9a4 <__vector_20+0x11e> |
94c: 81 30 cpi r24, 0x01 ; 1 |
94e: 09 f0 breq .+2 ; 0x952 <__vector_20+0xcc> |
950: 3f c0 rjmp .+126 ; 0x9d0 <__vector_20+0x14a> |
952: 14 c0 rjmp .+40 ; 0x97c <__vector_20+0xf6> |
954: 84 ee ldi r24, 0xE4 ; 228 |
956: 93 e0 ldi r25, 0x03 ; 3 |
958: 90 93 0f 04 sts 0x040F, r25 |
95c: 80 93 0e 04 sts 0x040E, r24 |
960: 25 e0 ldi r18, 0x05 ; 5 |
962: 35 e0 ldi r19, 0x05 ; 5 |
964: 30 93 b2 02 sts 0x02B2, r19 |
968: 20 93 b1 02 sts 0x02B1, r18 |
96c: 40 96 adiw r24, 0x10 ; 16 |
96e: 90 93 bc 04 sts 0x04BC, r25 |
972: 80 93 bb 04 sts 0x04BB, r24 |
976: 80 91 f4 03 lds r24, 0x03F4 |
97a: 27 c0 rjmp .+78 ; 0x9ca <__vector_20+0x144> |
97c: 83 ec ldi r24, 0xC3 ; 195 |
97e: 94 e0 ldi r25, 0x04 ; 4 |
980: 90 93 0f 04 sts 0x040F, r25 |
984: 80 93 0e 04 sts 0x040E, r24 |
988: 2c e7 ldi r18, 0x7C ; 124 |
98a: 36 e0 ldi r19, 0x06 ; 6 |
98c: 30 93 b2 02 sts 0x02B2, r19 |
990: 20 93 b1 02 sts 0x02B1, r18 |
994: 44 96 adiw r24, 0x14 ; 20 |
996: 90 93 bc 04 sts 0x04BC, r25 |
99a: 80 93 bb 04 sts 0x04BB, r24 |
99e: 80 91 d7 04 lds r24, 0x04D7 |
9a2: 13 c0 rjmp .+38 ; 0x9ca <__vector_20+0x144> |
9a4: 80 e1 ldi r24, 0x10 ; 16 |
9a6: 94 e0 ldi r25, 0x04 ; 4 |
9a8: 90 93 0f 04 sts 0x040F, r25 |
9ac: 80 93 0e 04 sts 0x040E, r24 |
9b0: 29 ec ldi r18, 0xC9 ; 201 |
9b2: 35 e0 ldi r19, 0x05 ; 5 |
9b4: 30 93 b2 02 sts 0x02B2, r19 |
9b8: 20 93 b1 02 sts 0x02B1, r18 |
9bc: 44 96 adiw r24, 0x14 ; 20 |
9be: 90 93 bc 04 sts 0x04BC, r25 |
9c2: 80 93 bb 04 sts 0x04BB, r24 |
9c6: 80 91 24 04 lds r24, 0x0424 |
9ca: 80 93 25 05 sts 0x0525, r24 |
9ce: 82 c0 rjmp .+260 ; 0xad4 <__vector_20+0x24e> |
9d0: 81 e0 ldi r24, 0x01 ; 1 |
9d2: 80 93 25 05 sts 0x0525, r24 |
9d6: 10 92 bc 04 sts 0x04BC, r1 |
9da: 10 92 bb 04 sts 0x04BB, r1 |
9de: 7a c0 rjmp .+244 ; 0xad4 <__vector_20+0x24e> |
9e0: 84 2f mov r24, r20 |
9e2: 99 27 eor r25, r25 |
9e4: 90 93 be 04 sts 0x04BE, r25 |
9e8: 80 93 bd 04 sts 0x04BD, r24 |
9ec: 80 91 b4 02 lds r24, 0x02B4 |
9f0: 84 0f add r24, r20 |
9f2: 80 93 b4 02 sts 0x02B4, r24 |
9f6: 80 91 e3 03 lds r24, 0x03E3 |
9fa: 90 91 b4 02 lds r25, 0x02B4 |
9fe: 89 0f add r24, r25 |
a00: 80 93 e3 03 sts 0x03E3, r24 |
a04: 85 e0 ldi r24, 0x05 ; 5 |
a06: 83 cf rjmp .-250 ; 0x90e <__vector_20+0x88> |
a08: 20 91 bd 04 lds r18, 0x04BD |
a0c: 30 91 be 04 lds r19, 0x04BE |
a10: 84 2f mov r24, r20 |
a12: 99 27 eor r25, r25 |
a14: 98 2f mov r25, r24 |
a16: 88 27 eor r24, r24 |
a18: 28 0f add r18, r24 |
a1a: 39 1f adc r19, r25 |
a1c: 30 93 be 04 sts 0x04BE, r19 |
a20: 20 93 bd 04 sts 0x04BD, r18 |
a24: 80 91 b4 02 lds r24, 0x02B4 |
a28: 84 0f add r24, r20 |
a2a: 80 93 b4 02 sts 0x02B4, r24 |
a2e: 80 91 e3 03 lds r24, 0x03E3 |
a32: 90 91 b4 02 lds r25, 0x02B4 |
a36: 89 0f add r24, r25 |
a38: 80 93 e3 03 sts 0x03E3, r24 |
a3c: 86 e0 ldi r24, 0x06 ; 6 |
a3e: 67 cf rjmp .-306 ; 0x90e <__vector_20+0x88> |
a40: 80 91 b4 02 lds r24, 0x02B4 |
a44: 84 0f add r24, r20 |
a46: 80 93 b4 02 sts 0x02B4, r24 |
a4a: 80 91 e3 03 lds r24, 0x03E3 |
a4e: 90 91 b4 02 lds r25, 0x02B4 |
a52: 89 0f add r24, r25 |
a54: 80 93 e3 03 sts 0x03E3, r24 |
a58: 80 91 25 05 lds r24, 0x0525 |
a5c: 88 23 and r24, r24 |
a5e: 81 f4 brne .+32 ; 0xa80 <__vector_20+0x1fa> |
a60: e0 91 0e 04 lds r30, 0x040E |
a64: f0 91 0f 04 lds r31, 0x040F |
a68: 80 91 b1 02 lds r24, 0x02B1 |
a6c: 90 91 b2 02 lds r25, 0x02B2 |
a70: e8 17 cp r30, r24 |
a72: f9 07 cpc r31, r25 |
a74: 28 f4 brcc .+10 ; 0xa80 <__vector_20+0x1fa> |
a76: 41 93 st Z+, r20 |
a78: f0 93 0f 04 sts 0x040F, r31 |
a7c: e0 93 0e 04 sts 0x040E, r30 |
a80: 80 91 bd 04 lds r24, 0x04BD |
a84: 90 91 be 04 lds r25, 0x04BE |
a88: 01 97 sbiw r24, 0x01 ; 1 |
a8a: 90 93 be 04 sts 0x04BE, r25 |
a8e: 80 93 bd 04 sts 0x04BD, r24 |
a92: 80 91 bd 04 lds r24, 0x04BD |
a96: 90 91 be 04 lds r25, 0x04BE |
a9a: 89 2b or r24, r25 |
a9c: d9 f4 brne .+54 ; 0xad4 <__vector_20+0x24e> |
a9e: 87 e0 ldi r24, 0x07 ; 7 |
aa0: 36 cf rjmp .-404 ; 0x90e <__vector_20+0x88> |
aa2: 80 91 b4 02 lds r24, 0x02B4 |
aa6: 48 17 cp r20, r24 |
aa8: 71 f4 brne .+28 ; 0xac6 <__vector_20+0x240> |
aaa: 88 e0 ldi r24, 0x08 ; 8 |
aac: 30 cf rjmp .-416 ; 0x90e <__vector_20+0x88> |
aae: 80 91 e3 03 lds r24, 0x03E3 |
ab2: 48 17 cp r20, r24 |
ab4: 41 f4 brne .+16 ; 0xac6 <__vector_20+0x240> |
ab6: e0 91 bb 04 lds r30, 0x04BB |
aba: f0 91 bc 04 lds r31, 0x04BC |
abe: 30 97 sbiw r30, 0x00 ; 0 |
ac0: 11 f0 breq .+4 ; 0xac6 <__vector_20+0x240> |
ac2: 81 e0 ldi r24, 0x01 ; 1 |
ac4: 80 83 st Z, r24 |
ac6: 10 92 a5 01 sts 0x01A5, r1 |
aca: 04 c0 rjmp .+8 ; 0xad4 <__vector_20+0x24e> |
acc: 10 92 a5 01 sts 0x01A5, r1 |
ad0: 0e 94 c8 03 call 0x790 ; 0x790 <GPSscanData> |
ad4: 0e 94 c8 03 call 0x790 ; 0x790 <GPSscanData> |
ad8: 40 91 9e 01 lds r20, 0x019E |
adc: 46 39 cpi r20, 0x96 ; 150 |
ade: 10 f0 brcs .+4 ; 0xae4 <__vector_20+0x25e> |
ae0: 10 92 9d 01 sts 0x019D, r1 |
ae4: 80 91 92 01 lds r24, 0x0192 |
ae8: 8d 30 cpi r24, 0x0D ; 13 |
aea: 09 f0 breq .+2 ; 0xaee <__vector_20+0x268> |
aec: 5c c0 rjmp .+184 ; 0xba6 <__vector_20+0x320> |
aee: 80 91 9d 01 lds r24, 0x019D |
af2: 82 30 cpi r24, 0x02 ; 2 |
af4: 09 f0 breq .+2 ; 0xaf8 <__vector_20+0x272> |
af6: 57 c0 rjmp .+174 ; 0xba6 <__vector_20+0x320> |
af8: 10 92 9d 01 sts 0x019D, r1 |
afc: a4 2f mov r26, r20 |
afe: bb 27 eor r27, r27 |
b00: fd 01 movw r30, r26 |
b02: ed 5d subi r30, 0xDD ; 221 |
b04: fb 4f sbci r31, 0xFB ; 251 |
b06: 30 81 ld r19, Z |
b08: ed 01 movw r28, r26 |
b0a: cc 5d subi r28, 0xDC ; 220 |
b0c: db 4f sbci r29, 0xFB ; 251 |
b0e: 28 81 ld r18, Y |
b10: 80 91 a1 01 lds r24, 0x01A1 |
b14: 90 91 a2 01 lds r25, 0x01A2 |
b18: 83 1b sub r24, r19 |
b1a: 91 09 sbc r25, r1 |
b1c: 82 1b sub r24, r18 |
b1e: 91 09 sbc r25, r1 |
b20: 9f 70 andi r25, 0x0F ; 15 |
b22: 90 93 a2 01 sts 0x01A2, r25 |
b26: 80 93 a1 01 sts 0x01A1, r24 |
b2a: 9c 01 movw r18, r24 |
b2c: 96 e0 ldi r25, 0x06 ; 6 |
b2e: 36 95 lsr r19 |
b30: 27 95 ror r18 |
b32: 9a 95 dec r25 |
b34: e1 f7 brne .-8 ; 0xb2e <__vector_20+0x2a8> |
b36: 23 5c subi r18, 0xC3 ; 195 |
b38: 20 93 a0 01 sts 0x01A0, r18 |
b3c: 98 2f mov r25, r24 |
b3e: 9f 73 andi r25, 0x3F ; 63 |
b40: 93 5c subi r25, 0xC3 ; 195 |
b42: 90 93 9f 01 sts 0x019F, r25 |
b46: 80 81 ld r24, Z |
b48: 28 17 cp r18, r24 |
b4a: 29 f4 brne .+10 ; 0xb56 <__vector_20+0x2d0> |
b4c: 88 81 ld r24, Y |
b4e: 98 17 cp r25, r24 |
b50: 11 f4 brne .+4 ; 0xb56 <__vector_20+0x2d0> |
b52: 91 e0 ldi r25, 0x01 ; 1 |
b54: 06 c0 rjmp .+12 ; 0xb62 <__vector_20+0x2dc> |
b56: 80 91 95 01 lds r24, 0x0195 |
b5a: 8f 5f subi r24, 0xFF ; 255 |
b5c: 80 93 95 01 sts 0x0195, r24 |
b60: 90 e0 ldi r25, 0x00 ; 0 |
b62: 80 91 93 01 lds r24, 0x0193 |
b66: 88 23 and r24, r24 |
b68: 09 f0 breq .+2 ; 0xb6c <__vector_20+0x2e6> |
b6a: 64 c0 rjmp .+200 ; 0xc34 <__vector_20+0x3ae> |
b6c: 99 23 and r25, r25 |
b6e: 09 f4 brne .+2 ; 0xb72 <__vector_20+0x2ec> |
b70: 61 c0 rjmp .+194 ; 0xc34 <__vector_20+0x3ae> |
b72: 81 e0 ldi r24, 0x01 ; 1 |
b74: 80 93 93 01 sts 0x0193, r24 |
b78: 40 93 96 01 sts 0x0196, r20 |
b7c: ab 5d subi r26, 0xDB ; 219 |
b7e: bb 4f sbci r27, 0xFB ; 251 |
b80: 8d e0 ldi r24, 0x0D ; 13 |
b82: 8c 93 st X, r24 |
b84: 80 91 27 04 lds r24, 0x0427 |
b88: 82 35 cpi r24, 0x52 ; 82 |
b8a: 09 f0 breq .+2 ; 0xb8e <__vector_20+0x308> |
b8c: 53 c0 rjmp .+166 ; 0xc34 <__vector_20+0x3ae> |
b8e: 88 e1 ldi r24, 0x18 ; 24 |
b90: 90 e0 ldi r25, 0x00 ; 0 |
b92: 2c e0 ldi r18, 0x0C ; 12 |
b94: 0f b6 in r0, 0x3f ; 63 |
b96: f8 94 cli |
b98: a8 95 wdr |
b9a: 80 93 60 00 sts 0x0060, r24 |
b9e: 0f be out 0x3f, r0 ; 63 |
ba0: 20 93 60 00 sts 0x0060, r18 |
ba4: 47 c0 rjmp .+142 ; 0xc34 <__vector_20+0x3ae> |
ba6: 80 91 9d 01 lds r24, 0x019D |
baa: 81 30 cpi r24, 0x01 ; 1 |
bac: d9 f0 breq .+54 ; 0xbe4 <__vector_20+0x35e> |
bae: 81 30 cpi r24, 0x01 ; 1 |
bb0: 18 f0 brcs .+6 ; 0xbb8 <__vector_20+0x332> |
bb2: 82 30 cpi r24, 0x02 ; 2 |
bb4: e9 f5 brne .+122 ; 0xc30 <__vector_20+0x3aa> |
bb6: 30 c0 rjmp .+96 ; 0xc18 <__vector_20+0x392> |
bb8: 80 91 92 01 lds r24, 0x0192 |
bbc: 83 32 cpi r24, 0x23 ; 35 |
bbe: 39 f4 brne .+14 ; 0xbce <__vector_20+0x348> |
bc0: 80 91 93 01 lds r24, 0x0193 |
bc4: 88 23 and r24, r24 |
bc6: 19 f4 brne .+6 ; 0xbce <__vector_20+0x348> |
bc8: 81 e0 ldi r24, 0x01 ; 1 |
bca: 80 93 9d 01 sts 0x019D, r24 |
bce: 80 91 92 01 lds r24, 0x0192 |
bd2: 80 93 25 04 sts 0x0425, r24 |
bd6: 81 e0 ldi r24, 0x01 ; 1 |
bd8: 80 93 9e 01 sts 0x019E, r24 |
bdc: 80 91 92 01 lds r24, 0x0192 |
be0: 99 27 eor r25, r25 |
be2: 15 c0 rjmp .+42 ; 0xc0e <__vector_20+0x388> |
be4: 82 e0 ldi r24, 0x02 ; 2 |
be6: 80 93 9d 01 sts 0x019D, r24 |
bea: e4 2f mov r30, r20 |
bec: ff 27 eor r31, r31 |
bee: 80 91 92 01 lds r24, 0x0192 |
bf2: eb 5d subi r30, 0xDB ; 219 |
bf4: fb 4f sbci r31, 0xFB ; 251 |
bf6: 80 83 st Z, r24 |
bf8: 4f 5f subi r20, 0xFF ; 255 |
bfa: 40 93 9e 01 sts 0x019E, r20 |
bfe: 20 91 92 01 lds r18, 0x0192 |
c02: 80 91 a1 01 lds r24, 0x01A1 |
c06: 90 91 a2 01 lds r25, 0x01A2 |
c0a: 82 0f add r24, r18 |
c0c: 91 1d adc r25, r1 |
c0e: 90 93 a2 01 sts 0x01A2, r25 |
c12: 80 93 a1 01 sts 0x01A1, r24 |
c16: 0e c0 rjmp .+28 ; 0xc34 <__vector_20+0x3ae> |
c18: e4 2f mov r30, r20 |
c1a: ff 27 eor r31, r31 |
c1c: 80 91 92 01 lds r24, 0x0192 |
c20: eb 5d subi r30, 0xDB ; 219 |
c22: fb 4f sbci r31, 0xFB ; 251 |
c24: 80 83 st Z, r24 |
c26: 46 39 cpi r20, 0x96 ; 150 |
c28: 38 f3 brcs .-50 ; 0xbf8 <__vector_20+0x372> |
c2a: 10 92 9d 01 sts 0x019D, r1 |
c2e: e7 cf rjmp .-50 ; 0xbfe <__vector_20+0x378> |
c30: 10 92 9d 01 sts 0x019D, r1 |
c34: ff 91 pop r31 |
c36: ef 91 pop r30 |
c38: df 91 pop r29 |
c3a: cf 91 pop r28 |
c3c: bf 91 pop r27 |
c3e: af 91 pop r26 |
c40: 9f 91 pop r25 |
c42: 8f 91 pop r24 |
c44: 7f 91 pop r23 |
c46: 6f 91 pop r22 |
c48: 5f 91 pop r21 |
c4a: 4f 91 pop r20 |
c4c: 3f 91 pop r19 |
c4e: 2f 91 pop r18 |
c50: 0f 90 pop r0 |
c52: 0f be out 0x3f, r0 ; 63 |
c54: 0f 90 pop r0 |
c56: 1f 90 pop r1 |
c58: 18 95 reti |
00000c5a <AddCRC>: |
c5a: dc 01 movw r26, r24 |
c5c: 20 e0 ldi r18, 0x00 ; 0 |
c5e: 30 e0 ldi r19, 0x00 ; 0 |
c60: 40 e0 ldi r20, 0x00 ; 0 |
c62: 50 e0 ldi r21, 0x00 ; 0 |
c64: e5 eb ldi r30, 0xB5 ; 181 |
c66: f2 e0 ldi r31, 0x02 ; 2 |
c68: 05 c0 rjmp .+10 ; 0xc74 <AddCRC+0x1a> |
c6a: 81 91 ld r24, Z+ |
c6c: 28 0f add r18, r24 |
c6e: 31 1d adc r19, r1 |
c70: 4f 5f subi r20, 0xFF ; 255 |
c72: 5f 4f sbci r21, 0xFF ; 255 |
c74: 4a 17 cp r20, r26 |
c76: 5b 07 cpc r21, r27 |
c78: c1 f7 brne .-16 ; 0xc6a <AddCRC+0x10> |
c7a: 3f 70 andi r19, 0x0F ; 15 |
c7c: c9 01 movw r24, r18 |
c7e: 66 e0 ldi r22, 0x06 ; 6 |
c80: 96 95 lsr r25 |
c82: 87 95 ror r24 |
c84: 6a 95 dec r22 |
c86: e1 f7 brne .-8 ; 0xc80 <AddCRC+0x26> |
c88: 83 5c subi r24, 0xC3 ; 195 |
c8a: fd 01 movw r30, r26 |
c8c: eb 54 subi r30, 0x4B ; 75 |
c8e: fd 4f sbci r31, 0xFD ; 253 |
c90: 80 83 st Z, r24 |
c92: 11 96 adiw r26, 0x01 ; 1 |
c94: 2f 73 andi r18, 0x3F ; 63 |
c96: 23 5c subi r18, 0xC3 ; 195 |
c98: fd 01 movw r30, r26 |
c9a: eb 54 subi r30, 0x4B ; 75 |
c9c: fd 4f sbci r31, 0xFD ; 253 |
c9e: 20 83 st Z, r18 |
ca0: aa 54 subi r26, 0x4A ; 74 |
ca2: bd 4f sbci r27, 0xFD ; 253 |
ca4: 8d e0 ldi r24, 0x0D ; 13 |
ca6: 8c 93 st X, r24 |
ca8: 10 92 00 01 sts 0x0100, r1 |
cac: 80 91 b5 02 lds r24, 0x02B5 |
cb0: 80 93 c6 00 sts 0x00C6, r24 |
cb4: 08 95 ret |
00000cb6 <SendOutData>: |
cb6: ef 92 push r14 |
cb8: ff 92 push r15 |
cba: 0f 93 push r16 |
cbc: 1f 93 push r17 |
cbe: cf 93 push r28 |
cc0: df 93 push r29 |
cc2: 7a 01 movw r14, r20 |
cc4: 72 2f mov r23, r18 |
cc6: 93 e2 ldi r25, 0x23 ; 35 |
cc8: 90 93 b5 02 sts 0x02B5, r25 |
ccc: 60 93 b6 02 sts 0x02B6, r22 |
cd0: 80 93 b7 02 sts 0x02B7, r24 |
cd4: 03 e0 ldi r16, 0x03 ; 3 |
cd6: 10 e0 ldi r17, 0x00 ; 0 |
cd8: 60 e0 ldi r22, 0x00 ; 0 |
cda: a8 eb ldi r26, 0xB8 ; 184 |
cdc: b2 e0 ldi r27, 0x02 ; 2 |
cde: 46 c0 rjmp .+140 ; 0xd6c <SendOutData+0xb6> |
ce0: f7 01 movw r30, r14 |
ce2: e6 0f add r30, r22 |
ce4: f1 1d adc r31, r1 |
ce6: 90 81 ld r25, Z |
ce8: 6f 5f subi r22, 0xFF ; 255 |
cea: 71 50 subi r23, 0x01 ; 1 |
cec: 19 f4 brne .+6 ; 0xcf4 <SendOutData+0x3e> |
cee: e0 e0 ldi r30, 0x00 ; 0 |
cf0: 40 e0 ldi r20, 0x00 ; 0 |
cf2: 0f c0 rjmp .+30 ; 0xd12 <SendOutData+0x5c> |
cf4: f7 01 movw r30, r14 |
cf6: e6 0f add r30, r22 |
cf8: f1 1d adc r31, r1 |
cfa: 40 81 ld r20, Z |
cfc: 6f 5f subi r22, 0xFF ; 255 |
cfe: 71 50 subi r23, 0x01 ; 1 |
d00: 11 f4 brne .+4 ; 0xd06 <SendOutData+0x50> |
d02: e0 e0 ldi r30, 0x00 ; 0 |
d04: 06 c0 rjmp .+12 ; 0xd12 <SendOutData+0x5c> |
d06: f7 01 movw r30, r14 |
d08: e6 0f add r30, r22 |
d0a: f1 1d adc r31, r1 |
d0c: e0 81 ld r30, Z |
d0e: 6f 5f subi r22, 0xFF ; 255 |
d10: 71 50 subi r23, 0x01 ; 1 |
d12: 89 2f mov r24, r25 |
d14: 86 95 lsr r24 |
d16: 86 95 lsr r24 |
d18: 83 5c subi r24, 0xC3 ; 195 |
d1a: 8c 93 st X, r24 |
d1c: 55 27 eor r21, r21 |
d1e: 89 2f mov r24, r25 |
d20: 99 27 eor r25, r25 |
d22: 83 70 andi r24, 0x03 ; 3 |
d24: 90 70 andi r25, 0x00 ; 0 |
d26: 24 e0 ldi r18, 0x04 ; 4 |
d28: 88 0f add r24, r24 |
d2a: 99 1f adc r25, r25 |
d2c: 2a 95 dec r18 |
d2e: e1 f7 brne .-8 ; 0xd28 <SendOutData+0x72> |
d30: 9a 01 movw r18, r20 |
d32: 94 e0 ldi r25, 0x04 ; 4 |
d34: 36 95 lsr r19 |
d36: 27 95 ror r18 |
d38: 9a 95 dec r25 |
d3a: e1 f7 brne .-8 ; 0xd34 <SendOutData+0x7e> |
d3c: 82 2b or r24, r18 |
d3e: 83 5c subi r24, 0xC3 ; 195 |
d40: ed 01 movw r28, r26 |
d42: 89 83 std Y+1, r24 ; 0x01 |
d44: 4f 70 andi r20, 0x0F ; 15 |
d46: 50 70 andi r21, 0x00 ; 0 |
d48: 44 0f add r20, r20 |
d4a: 55 1f adc r21, r21 |
d4c: 44 0f add r20, r20 |
d4e: 55 1f adc r21, r21 |
d50: 8e 2f mov r24, r30 |
d52: 82 95 swap r24 |
d54: 86 95 lsr r24 |
d56: 86 95 lsr r24 |
d58: 83 70 andi r24, 0x03 ; 3 |
d5a: 84 2b or r24, r20 |
d5c: 83 5c subi r24, 0xC3 ; 195 |
d5e: 8a 83 std Y+2, r24 ; 0x02 |
d60: ef 73 andi r30, 0x3F ; 63 |
d62: e3 5c subi r30, 0xC3 ; 195 |
d64: eb 83 std Y+3, r30 ; 0x03 |
d66: 0c 5f subi r16, 0xFC ; 252 |
d68: 1f 4f sbci r17, 0xFF ; 255 |
d6a: 14 96 adiw r26, 0x04 ; 4 |
d6c: 77 23 and r23, r23 |
d6e: 09 f0 breq .+2 ; 0xd72 <SendOutData+0xbc> |
d70: b7 cf rjmp .-146 ; 0xce0 <SendOutData+0x2a> |
d72: c8 01 movw r24, r16 |
d74: 0e 94 2d 06 call 0xc5a ; 0xc5a <AddCRC> |
d78: df 91 pop r29 |
d7a: cf 91 pop r28 |
d7c: 1f 91 pop r17 |
d7e: 0f 91 pop r16 |
d80: ff 90 pop r15 |
d82: ef 90 pop r14 |
d84: 08 95 ret |
00000d86 <Decode64>: |
d86: 1f 93 push r17 |
d88: cf 93 push r28 |
d8a: df 93 push r29 |
d8c: ec 01 movw r28, r24 |
d8e: 70 e0 ldi r23, 0x00 ; 0 |
d90: a2 2f mov r26, r18 |
d92: bb 27 eor r27, r27 |
d94: 12 97 sbiw r26, 0x02 ; 2 |
d96: 48 c0 rjmp .+144 ; 0xe28 <Decode64+0xa2> |
d98: e4 2f mov r30, r20 |
d9a: ff 27 eor r31, r31 |
d9c: eb 5d subi r30, 0xDB ; 219 |
d9e: fb 4f sbci r31, 0xFB ; 251 |
da0: 30 81 ld r19, Z |
da2: 4f 5f subi r20, 0xFF ; 255 |
da4: e4 2f mov r30, r20 |
da6: ff 27 eor r31, r31 |
da8: eb 5d subi r30, 0xDB ; 219 |
daa: fb 4f sbci r31, 0xFB ; 251 |
dac: 50 81 ld r21, Z |
dae: 4f 5f subi r20, 0xFF ; 255 |
db0: e4 2f mov r30, r20 |
db2: ff 27 eor r31, r31 |
db4: eb 5d subi r30, 0xDB ; 219 |
db6: fb 4f sbci r31, 0xFB ; 251 |
db8: 10 81 ld r17, Z |
dba: 4f 5f subi r20, 0xFF ; 255 |
dbc: e4 2f mov r30, r20 |
dbe: ff 27 eor r31, r31 |
dc0: eb 5d subi r30, 0xDB ; 219 |
dc2: fb 4f sbci r31, 0xFB ; 251 |
dc4: 20 81 ld r18, Z |
dc6: 4f 5f subi r20, 0xFF ; 255 |
dc8: 84 2f mov r24, r20 |
dca: 99 27 eor r25, r25 |
dcc: a8 17 cp r26, r24 |
dce: b9 07 cpc r27, r25 |
dd0: 74 f1 brlt .+92 ; 0xe2e <Decode64+0xa8> |
dd2: 5d 53 subi r21, 0x3D ; 61 |
dd4: fe 01 movw r30, r28 |
dd6: e7 0f add r30, r23 |
dd8: f1 1d adc r31, r1 |
dda: 3d 53 subi r19, 0x3D ; 61 |
ddc: 33 0f add r19, r19 |
dde: 33 0f add r19, r19 |
de0: 85 2f mov r24, r21 |
de2: 82 95 swap r24 |
de4: 8f 70 andi r24, 0x0F ; 15 |
de6: 38 2b or r19, r24 |
de8: 30 83 st Z, r19 |
dea: 61 30 cpi r22, 0x01 ; 1 |
dec: 01 f1 breq .+64 ; 0xe2e <Decode64+0xa8> |
dee: 91 2f mov r25, r17 |
df0: 9d 53 subi r25, 0x3D ; 61 |
df2: 7f 5f subi r23, 0xFF ; 255 |
df4: fe 01 movw r30, r28 |
df6: e7 0f add r30, r23 |
df8: f1 1d adc r31, r1 |
dfa: 71 50 subi r23, 0x01 ; 1 |
dfc: 52 95 swap r21 |
dfe: 50 7f andi r21, 0xF0 ; 240 |
e00: 89 2f mov r24, r25 |
e02: 86 95 lsr r24 |
e04: 86 95 lsr r24 |
e06: 58 2b or r21, r24 |
e08: 50 83 st Z, r21 |
e0a: 63 50 subi r22, 0x03 ; 3 |
e0c: 6f 3f cpi r22, 0xFF ; 255 |
e0e: 79 f0 breq .+30 ; 0xe2e <Decode64+0xa8> |
e10: 7e 5f subi r23, 0xFE ; 254 |
e12: fe 01 movw r30, r28 |
e14: e7 0f add r30, r23 |
e16: f1 1d adc r31, r1 |
e18: 92 95 swap r25 |
e1a: 99 0f add r25, r25 |
e1c: 99 0f add r25, r25 |
e1e: 90 7c andi r25, 0xC0 ; 192 |
e20: 2d 53 subi r18, 0x3D ; 61 |
e22: 92 2b or r25, r18 |
e24: 90 83 st Z, r25 |
e26: 7f 5f subi r23, 0xFF ; 255 |
e28: 66 23 and r22, r22 |
e2a: 09 f0 breq .+2 ; 0xe2e <Decode64+0xa8> |
e2c: b5 cf rjmp .-150 ; 0xd98 <Decode64+0x12> |
e2e: df 91 pop r29 |
e30: cf 91 pop r28 |
e32: 1f 91 pop r17 |
e34: 08 95 ret |
00000e36 <uart_putchar>: |
e36: 1f 93 push r17 |
e38: 18 2f mov r17, r24 |
e3a: 8a 30 cpi r24, 0x0A ; 10 |
e3c: 19 f4 brne .+6 ; 0xe44 <uart_putchar+0xe> |
e3e: 8d e0 ldi r24, 0x0D ; 13 |
e40: 0e 94 1b 07 call 0xe36 ; 0xe36 <uart_putchar> |
e44: 80 91 c0 00 lds r24, 0x00C0 |
e48: 85 ff sbrs r24, 5 |
e4a: fc cf rjmp .-8 ; 0xe44 <uart_putchar+0xe> |
e4c: 10 93 c6 00 sts 0x00C6, r17 |
e50: 80 e0 ldi r24, 0x00 ; 0 |
e52: 90 e0 ldi r25, 0x00 ; 0 |
e54: 1f 91 pop r17 |
e56: 08 95 ret |
00000e58 <WriteProgramData>: |
e58: 08 95 ret |
00000e5a <UART_Init>: |
e5a: e1 ec ldi r30, 0xC1 ; 193 |
e5c: f0 e0 ldi r31, 0x00 ; 0 |
e5e: 88 e1 ldi r24, 0x18 ; 24 |
e60: 80 83 st Z, r24 |
e62: a0 ec ldi r26, 0xC0 ; 192 |
e64: b0 e0 ldi r27, 0x00 ; 0 |
e66: 8c 91 ld r24, X |
e68: 82 60 ori r24, 0x02 ; 2 |
e6a: 8c 93 st X, r24 |
e6c: 80 81 ld r24, Z |
e6e: 80 68 ori r24, 0x80 ; 128 |
e70: 80 83 st Z, r24 |
e72: 80 81 ld r24, Z |
e74: 80 64 ori r24, 0x40 ; 64 |
e76: 80 83 st Z, r24 |
e78: 8a e2 ldi r24, 0x2A ; 42 |
e7a: 80 93 c4 00 sts 0x00C4, r24 |
e7e: 88 ec ldi r24, 0xC8 ; 200 |
e80: 90 e0 ldi r25, 0x00 ; 0 |
e82: 0e 94 fb 0b call 0x17f6 ; 0x17f6 <SetDelay> |
e86: 90 93 e2 03 sts 0x03E2, r25 |
e8a: 80 93 e1 03 sts 0x03E1, r24 |
e8e: 10 92 a5 01 sts 0x01A5, r1 |
e92: 08 95 ret |
00000e94 <DatenUebertragung>: |
e94: 80 91 00 01 lds r24, 0x0100 |
e98: 88 23 and r24, r24 |
e9a: 09 f4 brne .+2 ; 0xe9e <DatenUebertragung+0xa> |
e9c: 68 c0 rjmp .+208 ; 0xf6e <DatenUebertragung+0xda> |
e9e: 80 91 8e 01 lds r24, 0x018E |
ea2: 88 23 and r24, r24 |
ea4: 71 f0 breq .+28 ; 0xec2 <DatenUebertragung+0x2e> |
ea6: 80 91 00 01 lds r24, 0x0100 |
eaa: 88 23 and r24, r24 |
eac: 51 f0 breq .+20 ; 0xec2 <DatenUebertragung+0x2e> |
eae: 2b e0 ldi r18, 0x0B ; 11 |
eb0: 45 ef ldi r20, 0xF5 ; 245 |
eb2: 53 e0 ldi r21, 0x03 ; 3 |
eb4: 60 91 b3 02 lds r22, 0x02B3 |
eb8: 87 e4 ldi r24, 0x47 ; 71 |
eba: 0e 94 5b 06 call 0xcb6 ; 0xcb6 <SendOutData> |
ebe: 10 92 8e 01 sts 0x018E, r1 |
ec2: 80 91 e1 03 lds r24, 0x03E1 |
ec6: 90 91 e2 03 lds r25, 0x03E2 |
eca: 0e 94 04 0c call 0x1808 ; 0x1808 <CheckDelay> |
ece: 88 23 and r24, r24 |
ed0: 21 f4 brne .+8 ; 0xeda <DatenUebertragung+0x46> |
ed2: 80 91 90 01 lds r24, 0x0190 |
ed6: 88 23 and r24, r24 |
ed8: b1 f0 breq .+44 ; 0xf06 <DatenUebertragung+0x72> |
eda: 80 91 00 01 lds r24, 0x0100 |
ede: 88 23 and r24, r24 |
ee0: 91 f0 breq .+36 ; 0xf06 <DatenUebertragung+0x72> |
ee2: 22 e3 ldi r18, 0x32 ; 50 |
ee4: 48 ed ldi r20, 0xD8 ; 216 |
ee6: 54 e0 ldi r21, 0x04 ; 4 |
ee8: 60 91 b3 02 lds r22, 0x02B3 |
eec: 84 e4 ldi r24, 0x44 ; 68 |
eee: 0e 94 5b 06 call 0xcb6 ; 0xcb6 <SendOutData> |
ef2: 10 92 90 01 sts 0x0190, r1 |
ef6: 8a ef ldi r24, 0xFA ; 250 |
ef8: 90 e0 ldi r25, 0x00 ; 0 |
efa: 0e 94 fb 0b call 0x17f6 ; 0x17f6 <SetDelay> |
efe: 90 93 e2 03 sts 0x03E2, r25 |
f02: 80 93 e1 03 sts 0x03E1, r24 |
f06: 80 91 8f 01 lds r24, 0x018F |
f0a: 88 23 and r24, r24 |
f0c: f1 f0 breq .+60 ; 0xf4a <DatenUebertragung+0xb6> |
f0e: 80 91 00 01 lds r24, 0x0100 |
f12: 88 23 and r24, r24 |
f14: d1 f0 breq .+52 ; 0xf4a <DatenUebertragung+0xb6> |
f16: 0e 94 50 10 call 0x20a0 ; 0x20a0 <Menu> |
f1a: 10 92 8f 01 sts 0x018F, r1 |
f1e: 80 91 9c 01 lds r24, 0x019C |
f22: 8f 5f subi r24, 0xFF ; 255 |
f24: 80 93 9c 01 sts 0x019C, r24 |
f28: 84 30 cpi r24, 0x04 ; 4 |
f2a: 11 f4 brne .+4 ; 0xf30 <DatenUebertragung+0x9c> |
f2c: 10 92 9c 01 sts 0x019C, r1 |
f30: 80 91 9c 01 lds r24, 0x019C |
f34: 44 e1 ldi r20, 0x14 ; 20 |
f36: 84 9f mul r24, r20 |
f38: a0 01 movw r20, r0 |
f3a: 11 24 eor r1, r1 |
f3c: 4a 5e subi r20, 0xEA ; 234 |
f3e: 5e 4f sbci r21, 0xFE ; 254 |
f40: 24 e1 ldi r18, 0x14 ; 20 |
f42: 60 e0 ldi r22, 0x00 ; 0 |
f44: 80 5d subi r24, 0xD0 ; 208 |
f46: 0e 94 5b 06 call 0xcb6 ; 0xcb6 <SendOutData> |
f4a: 80 91 91 01 lds r24, 0x0191 |
f4e: 88 23 and r24, r24 |
f50: 71 f0 breq .+28 ; 0xf6e <DatenUebertragung+0xda> |
f52: 80 91 00 01 lds r24, 0x0100 |
f56: 88 23 and r24, r24 |
f58: 51 f0 breq .+20 ; 0xf6e <DatenUebertragung+0xda> |
f5a: 2a e0 ldi r18, 0x0A ; 10 |
f5c: 40 e0 ldi r20, 0x00 ; 0 |
f5e: 54 e0 ldi r21, 0x04 ; 4 |
f60: 60 91 b3 02 lds r22, 0x02B3 |
f64: 86 e5 ldi r24, 0x56 ; 86 |
f66: 0e 94 5b 06 call 0xcb6 ; 0xcb6 <SendOutData> |
f6a: 10 92 91 01 sts 0x0191, r1 |
f6e: 08 95 ret |
00000f70 <BearbeiteRxDaten>: |
f70: 1f 93 push r17 |
f72: cf 93 push r28 |
f74: df 93 push r29 |
f76: cd b7 in r28, 0x3d ; 61 |
f78: de b7 in r29, 0x3e ; 62 |
f7a: 22 97 sbiw r28, 0x02 ; 2 |
f7c: 0f b6 in r0, 0x3f ; 63 |
f7e: f8 94 cli |
f80: de bf out 0x3e, r29 ; 62 |
f82: 0f be out 0x3f, r0 ; 63 |
f84: cd bf out 0x3d, r28 ; 61 |
f86: 80 91 93 01 lds r24, 0x0193 |
f8a: 88 23 and r24, r24 |
f8c: 09 f4 brne .+2 ; 0xf90 <BearbeiteRxDaten+0x20> |
f8e: 98 c0 rjmp .+304 ; 0x10c0 <BearbeiteRxDaten+0x150> |
f90: 8f ef ldi r24, 0xFF ; 255 |
f92: 80 93 01 01 sts 0x0101, r24 |
f96: 80 91 27 04 lds r24, 0x0427 |
f9a: 81 37 cpi r24, 0x71 ; 113 |
f9c: 60 f4 brcc .+24 ; 0xfb6 <BearbeiteRxDaten+0x46> |
f9e: 8c 36 cpi r24, 0x6C ; 108 |
fa0: 08 f0 brcs .+2 ; 0xfa4 <BearbeiteRxDaten+0x34> |
fa2: 6f c0 rjmp .+222 ; 0x1082 <BearbeiteRxDaten+0x112> |
fa4: 87 36 cpi r24, 0x67 ; 103 |
fa6: 09 f4 brne .+2 ; 0xfaa <BearbeiteRxDaten+0x3a> |
fa8: 40 c0 rjmp .+128 ; 0x102a <BearbeiteRxDaten+0xba> |
faa: 88 36 cpi r24, 0x68 ; 104 |
fac: f9 f0 breq .+62 ; 0xfec <BearbeiteRxDaten+0x7c> |
fae: 83 36 cpi r24, 0x63 ; 99 |
fb0: 09 f0 breq .+2 ; 0xfb4 <BearbeiteRxDaten+0x44> |
fb2: 84 c0 rjmp .+264 ; 0x10bc <BearbeiteRxDaten+0x14c> |
fb4: 08 c0 rjmp .+16 ; 0xfc6 <BearbeiteRxDaten+0x56> |
fb6: 84 37 cpi r24, 0x74 ; 116 |
fb8: 59 f1 breq .+86 ; 0x1010 <BearbeiteRxDaten+0xa0> |
fba: 86 37 cpi r24, 0x76 ; 118 |
fbc: 91 f1 breq .+100 ; 0x1022 <BearbeiteRxDaten+0xb2> |
fbe: 81 37 cpi r24, 0x71 ; 113 |
fc0: 09 f0 breq .+2 ; 0xfc4 <BearbeiteRxDaten+0x54> |
fc2: 7c c0 rjmp .+248 ; 0x10bc <BearbeiteRxDaten+0x14c> |
fc4: 36 c0 rjmp .+108 ; 0x1032 <BearbeiteRxDaten+0xc2> |
fc6: 20 91 96 01 lds r18, 0x0196 |
fca: 43 e0 ldi r20, 0x03 ; 3 |
fcc: 6b e0 ldi r22, 0x0B ; 11 |
fce: 85 ef ldi r24, 0xF5 ; 245 |
fd0: 93 e0 ldi r25, 0x03 ; 3 |
fd2: 0e 94 c3 06 call 0xd86 ; 0xd86 <Decode64> |
fd6: 80 91 cd 01 lds r24, 0x01CD |
fda: 90 91 f7 03 lds r25, 0x03F7 |
fde: 89 2b or r24, r25 |
fe0: 80 93 cd 01 sts 0x01CD, r24 |
fe4: 81 e0 ldi r24, 0x01 ; 1 |
fe6: 80 93 90 01 sts 0x0190, r24 |
fea: 68 c0 rjmp .+208 ; 0x10bc <BearbeiteRxDaten+0x14c> |
fec: 20 91 96 01 lds r18, 0x0196 |
ff0: 43 e0 ldi r20, 0x03 ; 3 |
ff2: 62 e0 ldi r22, 0x02 ; 2 |
ff4: ce 01 movw r24, r28 |
ff6: 01 96 adiw r24, 0x01 ; 1 |
ff8: 0e 94 c3 06 call 0xd86 ; 0xd86 <Decode64> |
ffc: 80 91 cd 01 lds r24, 0x01CD |
1000: 99 81 ldd r25, Y+1 ; 0x01 |
1002: 89 2b or r24, r25 |
1004: 80 93 cd 01 sts 0x01CD, r24 |
1008: 81 e0 ldi r24, 0x01 ; 1 |
100a: 80 93 8f 01 sts 0x018F, r24 |
100e: 56 c0 rjmp .+172 ; 0x10bc <BearbeiteRxDaten+0x14c> |
1010: 20 91 96 01 lds r18, 0x0196 |
1014: 43 e0 ldi r20, 0x03 ; 3 |
1016: 64 e0 ldi r22, 0x04 ; 4 |
1018: 88 e9 ldi r24, 0x98 ; 152 |
101a: 91 e0 ldi r25, 0x01 ; 1 |
101c: 0e 94 c3 06 call 0xd86 ; 0xd86 <Decode64> |
1020: 4d c0 rjmp .+154 ; 0x10bc <BearbeiteRxDaten+0x14c> |
1022: 81 e0 ldi r24, 0x01 ; 1 |
1024: 80 93 91 01 sts 0x0191, r24 |
1028: 49 c0 rjmp .+146 ; 0x10bc <BearbeiteRxDaten+0x14c> |
102a: 81 e0 ldi r24, 0x01 ; 1 |
102c: 80 93 8e 01 sts 0x018E, r24 |
1030: 45 c0 rjmp .+138 ; 0x10bc <BearbeiteRxDaten+0x14c> |
1032: 20 91 96 01 lds r18, 0x0196 |
1036: 43 e0 ldi r20, 0x03 ; 3 |
1038: 62 e0 ldi r22, 0x02 ; 2 |
103a: ce 01 movw r24, r28 |
103c: 01 96 adiw r24, 0x01 ; 1 |
103e: 0e 94 c3 06 call 0xd86 ; 0xd86 <Decode64> |
1042: 89 81 ldd r24, Y+1 ; 0x01 |
1044: 8f 3f cpi r24, 0xFF ; 255 |
1046: 89 f0 breq .+34 ; 0x106a <BearbeiteRxDaten+0xfa> |
1048: 86 30 cpi r24, 0x06 ; 6 |
104a: 10 f0 brcs .+4 ; 0x1050 <BearbeiteRxDaten+0xe0> |
104c: 85 e0 ldi r24, 0x05 ; 5 |
104e: 89 83 std Y+1, r24 ; 0x01 |
1050: 4a e3 ldi r20, 0x3A ; 58 |
1052: 6d e6 ldi r22, 0x6D ; 109 |
1054: 75 e0 ldi r23, 0x05 ; 5 |
1056: 89 81 ldd r24, Y+1 ; 0x01 |
1058: 0e 94 17 02 call 0x42e ; 0x42e <ReadParameterSet> |
105c: 89 81 ldd r24, Y+1 ; 0x01 |
105e: 2a e3 ldi r18, 0x3A ; 58 |
1060: 4d e6 ldi r20, 0x6D ; 109 |
1062: 55 e0 ldi r21, 0x05 ; 5 |
1064: 60 91 b3 02 lds r22, 0x02B3 |
1068: 08 c0 rjmp .+16 ; 0x107a <BearbeiteRxDaten+0x10a> |
106a: 10 91 b3 02 lds r17, 0x02B3 |
106e: 0e 94 f8 01 call 0x3f0 ; 0x3f0 <GetActiveParamSetNumber> |
1072: 2a e3 ldi r18, 0x3A ; 58 |
1074: 4d e6 ldi r20, 0x6D ; 109 |
1076: 55 e0 ldi r21, 0x05 ; 5 |
1078: 61 2f mov r22, r17 |
107a: 85 5b subi r24, 0xB5 ; 181 |
107c: 0e 94 5b 06 call 0xcb6 ; 0xcb6 <SendOutData> |
1080: 1d c0 rjmp .+58 ; 0x10bc <BearbeiteRxDaten+0x14c> |
1082: 20 91 96 01 lds r18, 0x0196 |
1086: 43 e0 ldi r20, 0x03 ; 3 |
1088: 6a e3 ldi r22, 0x3A ; 58 |
108a: 8d e6 ldi r24, 0x6D ; 109 |
108c: 95 e0 ldi r25, 0x05 ; 5 |
108e: 0e 94 c3 06 call 0xd86 ; 0xd86 <Decode64> |
1092: 80 91 27 04 lds r24, 0x0427 |
1096: 4a e3 ldi r20, 0x3A ; 58 |
1098: 6d e6 ldi r22, 0x6D ; 109 |
109a: 75 e0 ldi r23, 0x05 ; 5 |
109c: 8b 56 subi r24, 0x6B ; 107 |
109e: 0e 94 ff 01 call 0x3fe ; 0x3fe <WriteParameterSet> |
10a2: 80 91 27 04 lds r24, 0x0427 |
10a6: 8b 56 subi r24, 0x6B ; 107 |
10a8: a2 e0 ldi r26, 0x02 ; 2 |
10aa: b0 e0 ldi r27, 0x00 ; 0 |
10ac: 08 2e mov r0, r24 |
10ae: 0e 94 2b 2d call 0x5a56 ; 0x5a56 <__eeprom_write_byte_1F2021> |
10b2: 0e 94 f8 01 call 0x3f0 ; 0x3f0 <GetActiveParamSetNumber> |
10b6: 99 27 eor r25, r25 |
10b8: 0e 94 4b 1e call 0x3c96 ; 0x3c96 <Piep> |
10bc: 10 92 93 01 sts 0x0193, r1 |
10c0: 22 96 adiw r28, 0x02 ; 2 |
10c2: 0f b6 in r0, 0x3f ; 63 |
10c4: f8 94 cli |
10c6: de bf out 0x3e, r29 ; 62 |
10c8: 0f be out 0x3f, r0 ; 63 |
10ca: cd bf out 0x3d, r28 ; 61 |
10cc: df 91 pop r29 |
10ce: cf 91 pop r28 |
10d0: 1f 91 pop r17 |
10d2: 08 95 ret |
000010d4 <Putchar>: |
10d4: 98 2f mov r25, r24 |
10d6: 80 91 26 05 lds r24, 0x0526 |
10da: 81 30 cpi r24, 0x01 ; 1 |
10dc: 69 f4 brne .+26 ; 0x10f8 <Putchar+0x24> |
10de: 80 91 cc 01 lds r24, 0x01CC |
10e2: e8 2f mov r30, r24 |
10e4: ff 27 eor r31, r31 |
10e6: ea 5e subi r30, 0xEA ; 234 |
10e8: fe 4f sbci r31, 0xFE ; 254 |
10ea: 90 83 st Z, r25 |
10ec: 8f 5f subi r24, 0xFF ; 255 |
10ee: 80 93 cc 01 sts 0x01CC, r24 |
10f2: 21 e0 ldi r18, 0x01 ; 1 |
10f4: 30 e0 ldi r19, 0x00 ; 0 |
10f6: 05 c0 rjmp .+10 ; 0x1102 <__stack+0x3> |
10f8: 89 2f mov r24, r25 |
10fa: 0e 94 1b 07 call 0xe36 ; 0xe36 <uart_putchar> |
10fe: 28 2f mov r18, r24 |
1100: 33 27 eor r19, r19 |
1102: c9 01 movw r24, r18 |
1104: 08 95 ret |
00001106 <PAD_0>: |
1106: 1f 93 push r17 |
1108: 18 2f mov r17, r24 |
110a: 04 c0 rjmp .+8 ; 0x1114 <PAD_0+0xe> |
110c: 80 e3 ldi r24, 0x30 ; 48 |
110e: 0e 94 6a 08 call 0x10d4 ; 0x10d4 <Putchar> |
1112: 11 50 subi r17, 0x01 ; 1 |
1114: 11 16 cp r1, r17 |
1116: d4 f3 brlt .-12 ; 0x110c <PAD_0+0x6> |
1118: 1f 91 pop r17 |
111a: 08 95 ret |
0000111c <PAD_SP>: |
111c: 1f 93 push r17 |
111e: 18 2f mov r17, r24 |
1120: 04 c0 rjmp .+8 ; 0x112a <PAD_SP+0xe> |
1122: 80 e2 ldi r24, 0x20 ; 32 |
1124: 0e 94 6a 08 call 0x10d4 ; 0x10d4 <Putchar> |
1128: 11 50 subi r17, 0x01 ; 1 |
112a: 11 16 cp r1, r17 |
112c: d4 f3 brlt .-12 ; 0x1122 <PAD_SP+0x6> |
112e: 1f 91 pop r17 |
1130: 08 95 ret |
00001132 <PRINTP>: |
1132: 0f 93 push r16 |
1134: 1f 93 push r17 |
1136: cf 93 push r28 |
1138: df 93 push r29 |
113a: 8c 01 movw r16, r24 |
113c: eb 01 movw r28, r22 |
113e: 08 c0 rjmp .+16 ; 0x1150 <PRINTP+0x1e> |
1140: f8 01 movw r30, r16 |
1142: 0f 5f subi r16, 0xFF ; 255 |
1144: 1f 4f sbci r17, 0xFF ; 255 |
1146: e4 91 lpm r30, Z |
1148: 8e 2f mov r24, r30 |
114a: 0e 94 6a 08 call 0x10d4 ; 0x10d4 <Putchar> |
114e: 21 97 sbiw r28, 0x01 ; 1 |
1150: 20 97 sbiw r28, 0x00 ; 0 |
1152: b1 f7 brne .-20 ; 0x1140 <PRINTP+0xe> |
1154: df 91 pop r29 |
1156: cf 91 pop r28 |
1158: 1f 91 pop r17 |
115a: 0f 91 pop r16 |
115c: 08 95 ret |
0000115e <PRINT>: |
115e: 0f 93 push r16 |
1160: 1f 93 push r17 |
1162: cf 93 push r28 |
1164: df 93 push r29 |
1166: 8c 01 movw r16, r24 |
1168: eb 01 movw r28, r22 |
116a: 06 c0 rjmp .+12 ; 0x1178 <PRINT+0x1a> |
116c: f8 01 movw r30, r16 |
116e: 81 91 ld r24, Z+ |
1170: 8f 01 movw r16, r30 |
1172: 0e 94 6a 08 call 0x10d4 ; 0x10d4 <Putchar> |
1176: 21 97 sbiw r28, 0x01 ; 1 |
1178: 20 97 sbiw r28, 0x00 ; 0 |
117a: c1 f7 brne .-16 ; 0x116c <PRINT+0xe> |
117c: df 91 pop r29 |
117e: cf 91 pop r28 |
1180: 1f 91 pop r17 |
1182: 0f 91 pop r16 |
1184: 08 95 ret |
00001186 <_printf_P>: |
1186: 2f 92 push r2 |
1188: 3f 92 push r3 |
118a: 4f 92 push r4 |
118c: 5f 92 push r5 |
118e: 6f 92 push r6 |
1190: 7f 92 push r7 |
1192: 8f 92 push r8 |
1194: 9f 92 push r9 |
1196: af 92 push r10 |
1198: bf 92 push r11 |
119a: cf 92 push r12 |
119c: df 92 push r13 |
119e: ef 92 push r14 |
11a0: ff 92 push r15 |
11a2: 0f 93 push r16 |
11a4: 1f 93 push r17 |
11a6: cf 93 push r28 |
11a8: df 93 push r29 |
11aa: cd b7 in r28, 0x3d ; 61 |
11ac: de b7 in r29, 0x3e ; 62 |
11ae: e3 97 sbiw r28, 0x33 ; 51 |
11b0: 0f b6 in r0, 0x3f ; 63 |
11b2: f8 94 cli |
11b4: de bf out 0x3e, r29 ; 62 |
11b6: 0f be out 0x3f, r0 ; 63 |
11b8: cd bf out 0x3d, r28 ; 61 |
11ba: 29 96 adiw r28, 0x09 ; 9 |
11bc: 8f ad ldd r24, Y+63 ; 0x3f |
11be: 29 97 sbiw r28, 0x09 ; 9 |
11c0: 80 93 26 05 sts 0x0526, r24 |
11c4: ce 01 movw r24, r28 |
11c6: 85 5b subi r24, 0xB5 ; 181 |
11c8: 9f 4f sbci r25, 0xFF ; 255 |
11ca: 9d 83 std Y+5, r25 ; 0x05 |
11cc: 8c 83 std Y+4, r24 ; 0x04 |
11ce: 2b 96 adiw r28, 0x0b ; 11 |
11d0: 8e ad ldd r24, Y+62 ; 0x3e |
11d2: 9f ad ldd r25, Y+63 ; 0x3f |
11d4: 2b 97 sbiw r28, 0x0b ; 11 |
11d6: 9f a7 std Y+47, r25 ; 0x2f |
11d8: 8e a7 std Y+46, r24 ; 0x2e |
11da: 22 24 eor r2, r2 |
11dc: 33 24 eor r3, r3 |
11de: 21 01 movw r4, r2 |
11e0: 02 c0 rjmp .+4 ; 0x11e6 <_printf_P+0x60> |
11e2: 13 01 movw r2, r6 |
11e4: 24 01 movw r4, r8 |
11e6: 0e a5 ldd r16, Y+46 ; 0x2e |
11e8: 1f a5 ldd r17, Y+47 ; 0x2f |
11ea: 02 c0 rjmp .+4 ; 0x11f0 <_printf_P+0x6a> |
11ec: 0f 5f subi r16, 0xFF ; 255 |
11ee: 1f 4f sbci r17, 0xFF ; 255 |
11f0: f8 01 movw r30, r16 |
11f2: f4 90 lpm r15, Z |
11f4: ff 20 and r15, r15 |
11f6: 19 f0 breq .+6 ; 0x11fe <_printf_P+0x78> |
11f8: f5 e2 ldi r31, 0x25 ; 37 |
11fa: ff 16 cp r15, r31 |
11fc: b9 f7 brne .-18 ; 0x11ec <_printf_P+0x66> |
11fe: b8 01 movw r22, r16 |
1200: 8e a5 ldd r24, Y+46 ; 0x2e |
1202: 9f a5 ldd r25, Y+47 ; 0x2f |
1204: 68 1b sub r22, r24 |
1206: 79 0b sbc r23, r25 |
1208: 11 f0 breq .+4 ; 0x120e <_printf_P+0x88> |
120a: 0e 94 99 08 call 0x1132 ; 0x1132 <PRINTP> |
120e: ff 20 and r15, r15 |
1210: 09 f4 brne .+2 ; 0x1214 <_printf_P+0x8e> |
1212: 44 c2 rjmp .+1160 ; 0x169c <_printf_P+0x516> |
1214: 0f 5f subi r16, 0xFF ; 255 |
1216: 1f 4f sbci r17, 0xFF ; 255 |
1218: 1f a7 std Y+47, r17 ; 0x2f |
121a: 0e a7 std Y+46, r16 ; 0x2e |
121c: 19 82 std Y+1, r1 ; 0x01 |
121e: ac 81 ldd r26, Y+4 ; 0x04 |
1220: bd 81 ldd r27, Y+5 ; 0x05 |
1222: 1b aa std Y+51, r1 ; 0x33 |
1224: 1a aa std Y+50, r1 ; 0x32 |
1226: 9f ef ldi r25, 0xFF ; 255 |
1228: 99 ab std Y+49, r25 ; 0x31 |
122a: ee a5 ldd r30, Y+46 ; 0x2e |
122c: ff a5 ldd r31, Y+47 ; 0x2f |
122e: cf 01 movw r24, r30 |
1230: 01 96 adiw r24, 0x01 ; 1 |
1232: 9f a7 std Y+47, r25 ; 0x2f |
1234: 8e a7 std Y+46, r24 ; 0x2e |
1236: b4 90 lpm r11, Z |
1238: 95 e7 ldi r25, 0x75 ; 117 |
123a: b9 16 cp r11, r25 |
123c: 21 f0 breq .+8 ; 0x1246 <_printf_P+0xc0> |
123e: 8b 2d mov r24, r11 |
1240: 80 62 ori r24, 0x20 ; 32 |
1242: 88 37 cpi r24, 0x78 ; 120 |
1244: 89 f4 brne .+34 ; 0x1268 <_printf_P+0xe2> |
1246: eb a9 ldd r30, Y+51 ; 0x33 |
1248: e0 ff sbrs r30, 0 |
124a: 07 c0 rjmp .+14 ; 0x125a <_printf_P+0xd4> |
124c: 2d 90 ld r2, X+ |
124e: 3d 90 ld r3, X+ |
1250: 4d 90 ld r4, X+ |
1252: 5c 90 ld r5, X |
1254: 13 97 sbiw r26, 0x03 ; 3 |
1256: 14 96 adiw r26, 0x04 ; 4 |
1258: 07 c0 rjmp .+14 ; 0x1268 <_printf_P+0xe2> |
125a: 8d 91 ld r24, X+ |
125c: 9c 91 ld r25, X |
125e: 11 97 sbiw r26, 0x01 ; 1 |
1260: 1c 01 movw r2, r24 |
1262: 44 24 eor r4, r4 |
1264: 55 24 eor r5, r5 |
1266: 12 96 adiw r26, 0x02 ; 2 |
1268: f0 e2 ldi r31, 0x20 ; 32 |
126a: bf 16 cp r11, r31 |
126c: 21 f4 brne .+8 ; 0x1276 <_printf_P+0xf0> |
126e: 89 81 ldd r24, Y+1 ; 0x01 |
1270: 88 23 and r24, r24 |
1272: d9 f6 brne .-74 ; 0x122a <_printf_P+0xa4> |
1274: 85 c0 rjmp .+266 ; 0x1380 <_printf_P+0x1fa> |
1276: 83 e2 ldi r24, 0x23 ; 35 |
1278: b8 16 cp r11, r24 |
127a: 09 f4 brne .+2 ; 0x127e <_printf_P+0xf8> |
127c: 83 c0 rjmp .+262 ; 0x1384 <_printf_P+0x1fe> |
127e: 9a e2 ldi r25, 0x2A ; 42 |
1280: b9 16 cp r11, r25 |
1282: 21 f0 breq .+8 ; 0x128c <_printf_P+0x106> |
1284: ed e2 ldi r30, 0x2D ; 45 |
1286: be 16 cp r11, r30 |
1288: 69 f4 brne .+26 ; 0x12a4 <_printf_P+0x11e> |
128a: 08 c0 rjmp .+16 ; 0x129c <_printf_P+0x116> |
128c: fd 01 movw r30, r26 |
128e: 12 96 adiw r26, 0x02 ; 2 |
1290: e0 81 ld r30, Z |
1292: ea ab std Y+50, r30 ; 0x32 |
1294: e7 ff sbrs r30, 7 |
1296: c9 cf rjmp .-110 ; 0x122a <_printf_P+0xa4> |
1298: e1 95 neg r30 |
129a: ea ab std Y+50, r30 ; 0x32 |
129c: fb a9 ldd r31, Y+51 ; 0x33 |
129e: f0 61 ori r31, 0x10 ; 16 |
12a0: ff 7d andi r31, 0xDF ; 223 |
12a2: 72 c0 rjmp .+228 ; 0x1388 <_printf_P+0x202> |
12a4: 8b e2 ldi r24, 0x2B ; 43 |
12a6: b8 16 cp r11, r24 |
12a8: 09 f4 brne .+2 ; 0x12ac <_printf_P+0x126> |
12aa: 6a c0 rjmp .+212 ; 0x1380 <_printf_P+0x1fa> |
12ac: 9e e2 ldi r25, 0x2E ; 46 |
12ae: b9 16 cp r11, r25 |
12b0: b1 f5 brne .+108 ; 0x131e <_printf_P+0x198> |
12b2: 2e a5 ldd r18, Y+46 ; 0x2e |
12b4: 3f a5 ldd r19, Y+47 ; 0x2f |
12b6: 2f 5f subi r18, 0xFF ; 255 |
12b8: 3f 4f sbci r19, 0xFF ; 255 |
12ba: ee a5 ldd r30, Y+46 ; 0x2e |
12bc: ff a5 ldd r31, Y+47 ; 0x2f |
12be: 84 91 lpm r24, Z |
12c0: 8a 32 cpi r24, 0x2A ; 42 |
12c2: 21 f0 breq .+8 ; 0x12cc <_printf_P+0x146> |
12c4: b8 2e mov r11, r24 |
12c6: 20 e0 ldi r18, 0x00 ; 0 |
12c8: 30 e0 ldi r19, 0x00 ; 0 |
12ca: 1b c0 rjmp .+54 ; 0x1302 <_printf_P+0x17c> |
12cc: fd 01 movw r30, r26 |
12ce: 12 96 adiw r26, 0x02 ; 2 |
12d0: 40 81 ld r20, Z |
12d2: 51 81 ldd r21, Z+1 ; 0x01 |
12d4: 57 ff sbrs r21, 7 |
12d6: 02 c0 rjmp .+4 ; 0x12dc <_printf_P+0x156> |
12d8: 4f ef ldi r20, 0xFF ; 255 |
12da: 5f ef ldi r21, 0xFF ; 255 |
12dc: 49 ab std Y+49, r20 ; 0x31 |
12de: 3f a7 std Y+47, r19 ; 0x2f |
12e0: 2e a7 std Y+46, r18 ; 0x2e |
12e2: a3 cf rjmp .-186 ; 0x122a <_printf_P+0xa4> |
12e4: c9 01 movw r24, r18 |
12e6: 03 e0 ldi r16, 0x03 ; 3 |
12e8: 88 0f add r24, r24 |
12ea: 99 1f adc r25, r25 |
12ec: 0a 95 dec r16 |
12ee: e1 f7 brne .-8 ; 0x12e8 <_printf_P+0x162> |
12f0: 22 0f add r18, r18 |
12f2: 33 1f adc r19, r19 |
12f4: 28 0f add r18, r24 |
12f6: 39 1f adc r19, r25 |
12f8: 2b 0d add r18, r11 |
12fa: 31 1d adc r19, r1 |
12fc: 20 53 subi r18, 0x30 ; 48 |
12fe: 30 40 sbci r19, 0x00 ; 0 |
1300: b4 90 lpm r11, Z |
1302: 31 96 adiw r30, 0x01 ; 1 |
1304: 8b 2d mov r24, r11 |
1306: 80 53 subi r24, 0x30 ; 48 |
1308: 8a 30 cpi r24, 0x0A ; 10 |
130a: 60 f3 brcs .-40 ; 0x12e4 <_printf_P+0x15e> |
130c: ff a7 std Y+47, r31 ; 0x2f |
130e: ee a7 std Y+46, r30 ; 0x2e |
1310: a9 01 movw r20, r18 |
1312: 37 ff sbrs r19, 7 |
1314: 02 c0 rjmp .+4 ; 0x131a <_printf_P+0x194> |
1316: 4f ef ldi r20, 0xFF ; 255 |
1318: 5f ef ldi r21, 0xFF ; 255 |
131a: 49 ab std Y+49, r20 ; 0x31 |
131c: 8d cf rjmp .-230 ; 0x1238 <_printf_P+0xb2> |
131e: f0 e3 ldi r31, 0x30 ; 48 |
1320: bf 16 cp r11, r31 |
1322: 31 f4 brne .+12 ; 0x1330 <_printf_P+0x1aa> |
1324: 8b a9 ldd r24, Y+51 ; 0x33 |
1326: 84 fd sbrc r24, 4 |
1328: 80 cf rjmp .-256 ; 0x122a <_printf_P+0xa4> |
132a: 80 62 ori r24, 0x20 ; 32 |
132c: 8b ab std Y+51, r24 ; 0x33 |
132e: 7d cf rjmp .-262 ; 0x122a <_printf_P+0xa4> |
1330: 8b 2d mov r24, r11 |
1332: 81 53 subi r24, 0x31 ; 49 |
1334: 89 30 cpi r24, 0x09 ; 9 |
1336: e8 f4 brcc .+58 ; 0x1372 <_printf_P+0x1ec> |
1338: 20 e0 ldi r18, 0x00 ; 0 |
133a: 30 e0 ldi r19, 0x00 ; 0 |
133c: c9 01 movw r24, r18 |
133e: f3 e0 ldi r31, 0x03 ; 3 |
1340: 88 0f add r24, r24 |
1342: 99 1f adc r25, r25 |
1344: fa 95 dec r31 |
1346: e1 f7 brne .-8 ; 0x1340 <_printf_P+0x1ba> |
1348: 22 0f add r18, r18 |
134a: 33 1f adc r19, r19 |
134c: 28 0f add r18, r24 |
134e: 39 1f adc r19, r25 |
1350: 2b 0d add r18, r11 |
1352: 31 1d adc r19, r1 |
1354: 20 53 subi r18, 0x30 ; 48 |
1356: 30 40 sbci r19, 0x00 ; 0 |
1358: ee a5 ldd r30, Y+46 ; 0x2e |
135a: ff a5 ldd r31, Y+47 ; 0x2f |
135c: cf 01 movw r24, r30 |
135e: 01 96 adiw r24, 0x01 ; 1 |
1360: 9f a7 std Y+47, r25 ; 0x2f |
1362: 8e a7 std Y+46, r24 ; 0x2e |
1364: b4 90 lpm r11, Z |
1366: 8b 2d mov r24, r11 |
1368: 80 53 subi r24, 0x30 ; 48 |
136a: 8a 30 cpi r24, 0x0A ; 10 |
136c: 38 f3 brcs .-50 ; 0x133c <_printf_P+0x1b6> |
136e: 2a ab std Y+50, r18 ; 0x32 |
1370: 63 cf rjmp .-314 ; 0x1238 <_printf_P+0xb2> |
1372: 98 e6 ldi r25, 0x68 ; 104 |
1374: b9 16 cp r11, r25 |
1376: 51 f4 brne .+20 ; 0x138c <_printf_P+0x206> |
1378: eb a9 ldd r30, Y+51 ; 0x33 |
137a: e4 60 ori r30, 0x04 ; 4 |
137c: eb ab std Y+51, r30 ; 0x33 |
137e: 55 cf rjmp .-342 ; 0x122a <_printf_P+0xa4> |
1380: b9 82 std Y+1, r11 ; 0x01 |
1382: 53 cf rjmp .-346 ; 0x122a <_printf_P+0xa4> |
1384: fb a9 ldd r31, Y+51 ; 0x33 |
1386: f8 60 ori r31, 0x08 ; 8 |
1388: fb ab std Y+51, r31 ; 0x33 |
138a: 4f cf rjmp .-354 ; 0x122a <_printf_P+0xa4> |
138c: 8c e6 ldi r24, 0x6C ; 108 |
138e: b8 16 cp r11, r24 |
1390: 21 f4 brne .+8 ; 0x139a <_printf_P+0x214> |
1392: 9b a9 ldd r25, Y+51 ; 0x33 |
1394: 91 60 ori r25, 0x01 ; 1 |
1396: 9b ab std Y+51, r25 ; 0x33 |
1398: 48 cf rjmp .-368 ; 0x122a <_printf_P+0xa4> |
139a: bd 83 std Y+5, r27 ; 0x05 |
139c: ac 83 std Y+4, r26 ; 0x04 |
139e: e3 e6 ldi r30, 0x63 ; 99 |
13a0: be 16 cp r11, r30 |
13a2: 39 f4 brne .+14 ; 0x13b2 <_printf_P+0x22c> |
13a4: 12 96 adiw r26, 0x02 ; 2 |
13a6: bd 83 std Y+5, r27 ; 0x05 |
13a8: ac 83 std Y+4, r26 ; 0x04 |
13aa: 12 97 sbiw r26, 0x02 ; 2 |
13ac: 8c 91 ld r24, X |
13ae: 8e 83 std Y+6, r24 ; 0x06 |
13b0: 1a c1 rjmp .+564 ; 0x15e6 <_printf_P+0x460> |
13b2: f4 e4 ldi r31, 0x44 ; 68 |
13b4: bf 16 cp r11, r31 |
13b6: 39 f0 breq .+14 ; 0x13c6 <_printf_P+0x240> |
13b8: 84 e6 ldi r24, 0x64 ; 100 |
13ba: b8 16 cp r11, r24 |
13bc: 39 f0 breq .+14 ; 0x13cc <_printf_P+0x246> |
13be: 99 e6 ldi r25, 0x69 ; 105 |
13c0: b9 16 cp r11, r25 |
13c2: 59 f5 brne .+86 ; 0x141a <_printf_P+0x294> |
13c4: 03 c0 rjmp .+6 ; 0x13cc <_printf_P+0x246> |
13c6: eb a9 ldd r30, Y+51 ; 0x33 |
13c8: e1 60 ori r30, 0x01 ; 1 |
13ca: eb ab std Y+51, r30 ; 0x33 |
13cc: fb a9 ldd r31, Y+51 ; 0x33 |
13ce: f0 ff sbrs r31, 0 |
13d0: 08 c0 rjmp .+16 ; 0x13e2 <_printf_P+0x25c> |
13d2: 14 96 adiw r26, 0x04 ; 4 |
13d4: bd 83 std Y+5, r27 ; 0x05 |
13d6: ac 83 std Y+4, r26 ; 0x04 |
13d8: 5e 90 ld r5, -X |
13da: 4e 90 ld r4, -X |
13dc: 3e 90 ld r3, -X |
13de: 2e 90 ld r2, -X |
13e0: 0a c0 rjmp .+20 ; 0x13f6 <_printf_P+0x270> |
13e2: 12 96 adiw r26, 0x02 ; 2 |
13e4: bd 83 std Y+5, r27 ; 0x05 |
13e6: ac 83 std Y+4, r26 ; 0x04 |
13e8: 9e 91 ld r25, -X |
13ea: 8e 91 ld r24, -X |
13ec: 1c 01 movw r2, r24 |
13ee: 44 24 eor r4, r4 |
13f0: 37 fc sbrc r3, 7 |
13f2: 40 94 com r4 |
13f4: 54 2c mov r5, r4 |
13f6: 57 fc sbrc r5, 7 |
13f8: 03 c0 rjmp .+6 ; 0x1400 <_printf_P+0x27a> |
13fa: 8a e0 ldi r24, 0x0A ; 10 |
13fc: 88 ab std Y+48, r24 ; 0x30 |
13fe: 94 c0 rjmp .+296 ; 0x1528 <_printf_P+0x3a2> |
1400: 50 94 com r5 |
1402: 40 94 com r4 |
1404: 30 94 com r3 |
1406: 20 94 com r2 |
1408: 21 1c adc r2, r1 |
140a: 31 1c adc r3, r1 |
140c: 41 1c adc r4, r1 |
140e: 51 1c adc r5, r1 |
1410: 8d e2 ldi r24, 0x2D ; 45 |
1412: 89 83 std Y+1, r24 ; 0x01 |
1414: 9a e0 ldi r25, 0x0A ; 10 |
1416: 98 ab std Y+48, r25 ; 0x30 |
1418: 87 c0 rjmp .+270 ; 0x1528 <_printf_P+0x3a2> |
141a: ef e4 ldi r30, 0x4F ; 79 |
141c: be 16 cp r11, r30 |
141e: 29 f0 breq .+10 ; 0x142a <_printf_P+0x2a4> |
1420: ff e6 ldi r31, 0x6F ; 111 |
1422: bf 16 cp r11, r31 |
1424: 39 f4 brne .+14 ; 0x1434 <_printf_P+0x2ae> |
1426: 88 e0 ldi r24, 0x08 ; 8 |
1428: 63 c0 rjmp .+198 ; 0x14f0 <_printf_P+0x36a> |
142a: 9b a9 ldd r25, Y+51 ; 0x33 |
142c: 91 60 ori r25, 0x01 ; 1 |
142e: 9b ab std Y+51, r25 ; 0x33 |
1430: e8 e0 ldi r30, 0x08 ; 8 |
1432: 58 c0 rjmp .+176 ; 0x14e4 <_printf_P+0x35e> |
1434: f0 e7 ldi r31, 0x70 ; 112 |
1436: bf 16 cp r11, r31 |
1438: 81 f4 brne .+32 ; 0x145a <_printf_P+0x2d4> |
143a: 12 96 adiw r26, 0x02 ; 2 |
143c: bd 83 std Y+5, r27 ; 0x05 |
143e: ac 83 std Y+4, r26 ; 0x04 |
1440: 9e 91 ld r25, -X |
1442: 8e 91 ld r24, -X |
1444: 1c 01 movw r2, r24 |
1446: 44 24 eor r4, r4 |
1448: 55 24 eor r5, r5 |
144a: 8b a9 ldd r24, Y+51 ; 0x33 |
144c: 80 64 ori r24, 0x40 ; 64 |
144e: 8b ab std Y+51, r24 ; 0x33 |
1450: 90 e1 ldi r25, 0x10 ; 16 |
1452: 98 ab std Y+48, r25 ; 0x30 |
1454: 78 e7 ldi r23, 0x78 ; 120 |
1456: b7 2e mov r11, r23 |
1458: 66 c0 rjmp .+204 ; 0x1526 <_printf_P+0x3a0> |
145a: e3 e7 ldi r30, 0x73 ; 115 |
145c: be 16 cp r11, r30 |
145e: d9 f5 brne .+118 ; 0x14d6 <_printf_P+0x350> |
1460: 12 96 adiw r26, 0x02 ; 2 |
1462: bd 83 std Y+5, r27 ; 0x05 |
1464: ac 83 std Y+4, r26 ; 0x04 |
1466: de 90 ld r13, -X |
1468: ce 90 ld r12, -X |
146a: c1 14 cp r12, r1 |
146c: d1 04 cpc r13, r1 |
146e: 89 f4 brne .+34 ; 0x1492 <_printf_P+0x30c> |
1470: 88 e2 ldi r24, 0x28 ; 40 |
1472: 8e 83 std Y+6, r24 ; 0x06 |
1474: 8e e6 ldi r24, 0x6E ; 110 |
1476: 8f 83 std Y+7, r24 ; 0x07 |
1478: 85 e7 ldi r24, 0x75 ; 117 |
147a: 88 87 std Y+8, r24 ; 0x08 |
147c: 8c e6 ldi r24, 0x6C ; 108 |
147e: 89 87 std Y+9, r24 ; 0x09 |
1480: 8a 87 std Y+10, r24 ; 0x0a |
1482: 89 e2 ldi r24, 0x29 ; 41 |
1484: 8b 87 std Y+11, r24 ; 0x0b |
1486: 1c 86 std Y+12, r1 ; 0x0c |
1488: 66 e0 ldi r22, 0x06 ; 6 |
148a: c6 2e mov r12, r22 |
148c: d1 2c mov r13, r1 |
148e: cc 0e add r12, r28 |
1490: dd 1e adc r13, r29 |
1492: f9 a9 ldd r31, Y+49 ; 0x31 |
1494: f7 fd sbrc r31, 7 |
1496: 13 c0 rjmp .+38 ; 0x14be <_printf_P+0x338> |
1498: 4f 2f mov r20, r31 |
149a: 55 27 eor r21, r21 |
149c: 47 fd sbrc r20, 7 |
149e: 50 95 com r21 |
14a0: 60 e0 ldi r22, 0x00 ; 0 |
14a2: 70 e0 ldi r23, 0x00 ; 0 |
14a4: c6 01 movw r24, r12 |
14a6: 0e 94 d1 2a call 0x55a2 ; 0x55a2 <memchr> |
14aa: 00 97 sbiw r24, 0x00 ; 0 |
14ac: 11 f4 brne .+4 ; 0x14b2 <_printf_P+0x32c> |
14ae: 19 a9 ldd r17, Y+49 ; 0x31 |
14b0: 0d c0 rjmp .+26 ; 0x14cc <_printf_P+0x346> |
14b2: 8c 19 sub r24, r12 |
14b4: 19 a9 ldd r17, Y+49 ; 0x31 |
14b6: 81 17 cp r24, r17 |
14b8: 4c f4 brge .+18 ; 0x14cc <_printf_P+0x346> |
14ba: 18 2f mov r17, r24 |
14bc: 07 c0 rjmp .+14 ; 0x14cc <_printf_P+0x346> |
14be: f6 01 movw r30, r12 |
14c0: 01 90 ld r0, Z+ |
14c2: 00 20 and r0, r0 |
14c4: e9 f7 brne .-6 ; 0x14c0 <_printf_P+0x33a> |
14c6: 31 97 sbiw r30, 0x01 ; 1 |
14c8: 1e 2f mov r17, r30 |
14ca: 1c 19 sub r17, r12 |
14cc: 19 82 std Y+1, r1 ; 0x01 |
14ce: 42 01 movw r8, r4 |
14d0: 31 01 movw r6, r2 |
14d2: 40 e0 ldi r20, 0x00 ; 0 |
14d4: 94 c0 rjmp .+296 ; 0x15fe <_printf_P+0x478> |
14d6: 85 e5 ldi r24, 0x55 ; 85 |
14d8: b8 16 cp r11, r24 |
14da: 31 f0 breq .+12 ; 0x14e8 <_printf_P+0x362> |
14dc: 95 e7 ldi r25, 0x75 ; 117 |
14de: b9 16 cp r11, r25 |
14e0: 49 f4 brne .+18 ; 0x14f4 <_printf_P+0x36e> |
14e2: ea e0 ldi r30, 0x0A ; 10 |
14e4: e8 ab std Y+48, r30 ; 0x30 |
14e6: 1f c0 rjmp .+62 ; 0x1526 <_printf_P+0x3a0> |
14e8: fb a9 ldd r31, Y+51 ; 0x33 |
14ea: f1 60 ori r31, 0x01 ; 1 |
14ec: fb ab std Y+51, r31 ; 0x33 |
14ee: 8a e0 ldi r24, 0x0A ; 10 |
14f0: 88 ab std Y+48, r24 ; 0x30 |
14f2: 19 c0 rjmp .+50 ; 0x1526 <_printf_P+0x3a0> |
14f4: 98 e5 ldi r25, 0x58 ; 88 |
14f6: b9 16 cp r11, r25 |
14f8: 21 f0 breq .+8 ; 0x1502 <_printf_P+0x37c> |
14fa: e8 e7 ldi r30, 0x78 ; 120 |
14fc: be 16 cp r11, r30 |
14fe: 09 f0 breq .+2 ; 0x1502 <_printf_P+0x37c> |
1500: 6e c0 rjmp .+220 ; 0x15de <_printf_P+0x458> |
1502: fb a9 ldd r31, Y+51 ; 0x33 |
1504: f3 fd sbrc r31, 3 |
1506: 02 c0 rjmp .+4 ; 0x150c <_printf_P+0x386> |
1508: 80 e1 ldi r24, 0x10 ; 16 |
150a: f2 cf rjmp .-28 ; 0x14f0 <_printf_P+0x36a> |
150c: 21 14 cp r2, r1 |
150e: 31 04 cpc r3, r1 |
1510: 41 04 cpc r4, r1 |
1512: 51 04 cpc r5, r1 |
1514: 19 f4 brne .+6 ; 0x151c <_printf_P+0x396> |
1516: 90 e1 ldi r25, 0x10 ; 16 |
1518: 98 ab std Y+48, r25 ; 0x30 |
151a: 05 c0 rjmp .+10 ; 0x1526 <_printf_P+0x3a0> |
151c: eb a9 ldd r30, Y+51 ; 0x33 |
151e: e0 64 ori r30, 0x40 ; 64 |
1520: eb ab std Y+51, r30 ; 0x33 |
1522: f0 e1 ldi r31, 0x10 ; 16 |
1524: f8 ab std Y+48, r31 ; 0x30 |
1526: 19 82 std Y+1, r1 ; 0x01 |
1528: 89 a9 ldd r24, Y+49 ; 0x31 |
152a: 87 fd sbrc r24, 7 |
152c: 03 c0 rjmp .+6 ; 0x1534 <_printf_P+0x3ae> |
152e: 9b a9 ldd r25, Y+51 ; 0x33 |
1530: 9f 7d andi r25, 0xDF ; 223 |
1532: 9b ab std Y+51, r25 ; 0x33 |
1534: 21 14 cp r2, r1 |
1536: 31 04 cpc r3, r1 |
1538: 41 04 cpc r4, r1 |
153a: 51 04 cpc r5, r1 |
153c: 61 f4 brne .+24 ; 0x1556 <_printf_P+0x3d0> |
153e: e9 a9 ldd r30, Y+49 ; 0x31 |
1540: ee 23 and r30, r30 |
1542: 49 f4 brne .+18 ; 0x1556 <_printf_P+0x3d0> |
1544: 66 24 eor r6, r6 |
1546: 77 24 eor r7, r7 |
1548: 43 01 movw r8, r6 |
154a: 5e e2 ldi r21, 0x2E ; 46 |
154c: c5 2e mov r12, r21 |
154e: d1 2c mov r13, r1 |
1550: cc 0e add r12, r28 |
1552: dd 1e adc r13, r29 |
1554: 3e c0 rjmp .+124 ; 0x15d2 <_printf_P+0x44c> |
1556: 4e e2 ldi r20, 0x2E ; 46 |
1558: c4 2e mov r12, r20 |
155a: d1 2c mov r13, r1 |
155c: cc 0e add r12, r28 |
155e: dd 1e adc r13, r29 |
1560: f8 a9 ldd r31, Y+48 ; 0x30 |
1562: ef 2e mov r14, r31 |
1564: ff 24 eor r15, r15 |
1566: 00 27 eor r16, r16 |
1568: 11 27 eor r17, r17 |
156a: c2 01 movw r24, r4 |
156c: b1 01 movw r22, r2 |
156e: a8 01 movw r20, r16 |
1570: 97 01 movw r18, r14 |
1572: 0e 94 e6 2c call 0x59cc ; 0x59cc <__udivmodsi4> |
1576: 6a 30 cpi r22, 0x0A ; 10 |
1578: 20 f4 brcc .+8 ; 0x1582 <_printf_P+0x3fc> |
157a: 30 e3 ldi r19, 0x30 ; 48 |
157c: a3 2e mov r10, r19 |
157e: a6 0e add r10, r22 |
1580: 08 c0 rjmp .+16 ; 0x1592 <_printf_P+0x40c> |
1582: 27 e5 ldi r18, 0x57 ; 87 |
1584: a2 2e mov r10, r18 |
1586: a6 0e add r10, r22 |
1588: 88 e5 ldi r24, 0x58 ; 88 |
158a: b8 16 cp r11, r24 |
158c: 11 f4 brne .+4 ; 0x1592 <_printf_P+0x40c> |
158e: 9f ed ldi r25, 0xDF ; 223 |
1590: a9 22 and r10, r25 |
1592: f6 01 movw r30, r12 |
1594: a2 92 st -Z, r10 |
1596: 6f 01 movw r12, r30 |
1598: c2 01 movw r24, r4 |
159a: b1 01 movw r22, r2 |
159c: a8 01 movw r20, r16 |
159e: 97 01 movw r18, r14 |
15a0: 0e 94 e6 2c call 0x59cc ; 0x59cc <__udivmodsi4> |
15a4: 39 01 movw r6, r18 |
15a6: 4a 01 movw r8, r20 |
15a8: 2e 14 cp r2, r14 |
15aa: 3f 04 cpc r3, r15 |
15ac: 40 06 cpc r4, r16 |
15ae: 51 06 cpc r5, r17 |
15b0: 18 f0 brcs .+6 ; 0x15b8 <_printf_P+0x432> |
15b2: 19 01 movw r2, r18 |
15b4: 2a 01 movw r4, r20 |
15b6: d9 cf rjmp .-78 ; 0x156a <_printf_P+0x3e4> |
15b8: f8 a9 ldd r31, Y+48 ; 0x30 |
15ba: f8 30 cpi r31, 0x08 ; 8 |
15bc: 51 f4 brne .+20 ; 0x15d2 <_printf_P+0x44c> |
15be: 8b a9 ldd r24, Y+51 ; 0x33 |
15c0: 83 ff sbrs r24, 3 |
15c2: 07 c0 rjmp .+14 ; 0x15d2 <_printf_P+0x44c> |
15c4: 90 e3 ldi r25, 0x30 ; 48 |
15c6: a9 16 cp r10, r25 |
15c8: 21 f0 breq .+8 ; 0x15d2 <_printf_P+0x44c> |
15ca: 80 e3 ldi r24, 0x30 ; 48 |
15cc: f6 01 movw r30, r12 |
15ce: 82 93 st -Z, r24 |
15d0: 6f 01 movw r12, r30 |
15d2: ce 01 movw r24, r28 |
15d4: 8c 19 sub r24, r12 |
15d6: 18 2f mov r17, r24 |
15d8: 12 5d subi r17, 0xD2 ; 210 |
15da: 49 a9 ldd r20, Y+49 ; 0x31 |
15dc: 10 c0 rjmp .+32 ; 0x15fe <_printf_P+0x478> |
15de: bb 20 and r11, r11 |
15e0: 09 f4 brne .+2 ; 0x15e4 <_printf_P+0x45e> |
15e2: 5c c0 rjmp .+184 ; 0x169c <_printf_P+0x516> |
15e4: be 82 std Y+6, r11 ; 0x06 |
15e6: 19 82 std Y+1, r1 ; 0x01 |
15e8: 42 01 movw r8, r4 |
15ea: 31 01 movw r6, r2 |
15ec: 00 e0 ldi r16, 0x00 ; 0 |
15ee: 11 e0 ldi r17, 0x01 ; 1 |
15f0: 96 e0 ldi r25, 0x06 ; 6 |
15f2: c9 2e mov r12, r25 |
15f4: d1 2c mov r13, r1 |
15f6: cc 0e add r12, r28 |
15f8: dd 1e adc r13, r29 |
15fa: 21 e0 ldi r18, 0x01 ; 1 |
15fc: 05 c0 rjmp .+10 ; 0x1608 <_printf_P+0x482> |
15fe: 21 2f mov r18, r17 |
1600: 04 2f mov r16, r20 |
1602: 01 1b sub r16, r17 |
1604: 07 fd sbrc r16, 7 |
1606: 00 e0 ldi r16, 0x00 ; 0 |
1608: 89 81 ldd r24, Y+1 ; 0x01 |
160a: 88 23 and r24, r24 |
160c: 19 f0 breq .+6 ; 0x1614 <_printf_P+0x48e> |
160e: 81 2f mov r24, r17 |
1610: 8f 5f subi r24, 0xFF ; 255 |
1612: 07 c0 rjmp .+14 ; 0x1622 <_printf_P+0x49c> |
1614: 9b a9 ldd r25, Y+51 ; 0x33 |
1616: 96 fd sbrc r25, 6 |
1618: 02 c0 rjmp .+4 ; 0x161e <_printf_P+0x498> |
161a: 81 2f mov r24, r17 |
161c: 02 c0 rjmp .+4 ; 0x1622 <_printf_P+0x49c> |
161e: 82 2f mov r24, r18 |
1620: 8e 5f subi r24, 0xFE ; 254 |
1622: a8 2e mov r10, r24 |
1624: a0 0e add r10, r16 |
1626: eb a9 ldd r30, Y+51 ; 0x33 |
1628: ee 2e mov r14, r30 |
162a: ff 24 eor r15, r15 |
162c: 80 e3 ldi r24, 0x30 ; 48 |
162e: 48 2e mov r4, r24 |
1630: 51 2c mov r5, r1 |
1632: 4e 20 and r4, r14 |
1634: 5f 20 and r5, r15 |
1636: 41 14 cp r4, r1 |
1638: 51 04 cpc r5, r1 |
163a: 21 f4 brne .+8 ; 0x1644 <_printf_P+0x4be> |
163c: 8a a9 ldd r24, Y+50 ; 0x32 |
163e: 8a 19 sub r24, r10 |
1640: 0e 94 8e 08 call 0x111c ; 0x111c <PAD_SP> |
1644: 89 81 ldd r24, Y+1 ; 0x01 |
1646: 88 23 and r24, r24 |
1648: 29 f0 breq .+10 ; 0x1654 <_printf_P+0x4ce> |
164a: 61 e0 ldi r22, 0x01 ; 1 |
164c: 70 e0 ldi r23, 0x00 ; 0 |
164e: ce 01 movw r24, r28 |
1650: 01 96 adiw r24, 0x01 ; 1 |
1652: 09 c0 rjmp .+18 ; 0x1666 <_printf_P+0x4e0> |
1654: e6 fe sbrs r14, 6 |
1656: 09 c0 rjmp .+18 ; 0x166a <_printf_P+0x4e4> |
1658: 80 e3 ldi r24, 0x30 ; 48 |
165a: 8a 83 std Y+2, r24 ; 0x02 |
165c: bb 82 std Y+3, r11 ; 0x03 |
165e: 62 e0 ldi r22, 0x02 ; 2 |
1660: 70 e0 ldi r23, 0x00 ; 0 |
1662: ce 01 movw r24, r28 |
1664: 02 96 adiw r24, 0x02 ; 2 |
1666: 0e 94 af 08 call 0x115e ; 0x115e <PRINT> |
166a: f0 e2 ldi r31, 0x20 ; 32 |
166c: 4f 16 cp r4, r31 |
166e: 51 04 cpc r5, r1 |
1670: 21 f4 brne .+8 ; 0x167a <_printf_P+0x4f4> |
1672: 8a a9 ldd r24, Y+50 ; 0x32 |
1674: 8a 19 sub r24, r10 |
1676: 0e 94 83 08 call 0x1106 ; 0x1106 <PAD_0> |
167a: 80 2f mov r24, r16 |
167c: 0e 94 83 08 call 0x1106 ; 0x1106 <PAD_0> |
1680: 61 2f mov r22, r17 |
1682: 77 27 eor r23, r23 |
1684: 67 fd sbrc r22, 7 |
1686: 70 95 com r23 |
1688: c6 01 movw r24, r12 |
168a: 0e 94 af 08 call 0x115e ; 0x115e <PRINT> |
168e: e4 fe sbrs r14, 4 |
1690: a8 cd rjmp .-1200 ; 0x11e2 <_printf_P+0x5c> |
1692: 8a a9 ldd r24, Y+50 ; 0x32 |
1694: 8a 19 sub r24, r10 |
1696: 0e 94 8e 08 call 0x111c ; 0x111c <PAD_SP> |
169a: a3 cd rjmp .-1210 ; 0x11e2 <_printf_P+0x5c> |
169c: e3 96 adiw r28, 0x33 ; 51 |
169e: 0f b6 in r0, 0x3f ; 63 |
16a0: f8 94 cli |
16a2: de bf out 0x3e, r29 ; 62 |
16a4: 0f be out 0x3f, r0 ; 63 |
16a6: cd bf out 0x3d, r28 ; 61 |
16a8: df 91 pop r29 |
16aa: cf 91 pop r28 |
16ac: 1f 91 pop r17 |
16ae: 0f 91 pop r16 |
16b0: ff 90 pop r15 |
16b2: ef 90 pop r14 |
16b4: df 90 pop r13 |
16b6: cf 90 pop r12 |
16b8: bf 90 pop r11 |
16ba: af 90 pop r10 |
16bc: 9f 90 pop r9 |
16be: 8f 90 pop r8 |
16c0: 7f 90 pop r7 |
16c2: 6f 90 pop r6 |
16c4: 5f 90 pop r5 |
16c6: 4f 90 pop r4 |
16c8: 3f 90 pop r3 |
16ca: 2f 90 pop r2 |
16cc: 08 95 ret |
000016ce <__vector_18>: |
16ce: 1f 92 push r1 |
16d0: 0f 92 push r0 |
16d2: 0f b6 in r0, 0x3f ; 63 |
16d4: 0f 92 push r0 |
16d6: 11 24 eor r1, r1 |
16d8: 2f 93 push r18 |
16da: 3f 93 push r19 |
16dc: 5f 93 push r21 |
16de: 6f 93 push r22 |
16e0: 7f 93 push r23 |
16e2: 8f 93 push r24 |
16e4: 9f 93 push r25 |
16e6: af 93 push r26 |
16e8: bf 93 push r27 |
16ea: 80 91 af 01 lds r24, 0x01AF |
16ee: 81 50 subi r24, 0x01 ; 1 |
16f0: 80 93 af 01 sts 0x01AF, r24 |
16f4: 8f 3f cpi r24, 0xFF ; 255 |
16f6: 01 f5 brne .+64 ; 0x1738 <__vector_18+0x6a> |
16f8: 89 e0 ldi r24, 0x09 ; 9 |
16fa: 80 93 af 01 sts 0x01AF, r24 |
16fe: 80 91 03 01 lds r24, 0x0103 |
1702: 8f 5f subi r24, 0xFF ; 255 |
1704: 81 70 andi r24, 0x01 ; 1 |
1706: 80 93 03 01 sts 0x0103, r24 |
170a: 88 23 and r24, r24 |
170c: 19 f4 brne .+6 ; 0x1714 <__vector_18+0x46> |
170e: 81 e0 ldi r24, 0x01 ; 1 |
1710: 80 93 a8 01 sts 0x01A8, r24 |
1714: 80 91 a6 01 lds r24, 0x01A6 |
1718: 90 91 a7 01 lds r25, 0x01A7 |
171c: 01 96 adiw r24, 0x01 ; 1 |
171e: 90 93 a7 01 sts 0x01A7, r25 |
1722: 80 93 a6 01 sts 0x01A6, r24 |
1726: 80 91 d6 01 lds r24, 0x01D6 |
172a: 88 23 and r24, r24 |
172c: 29 f0 breq .+10 ; 0x1738 <__vector_18+0x6a> |
172e: 80 91 d6 01 lds r24, 0x01D6 |
1732: 81 50 subi r24, 0x01 ; 1 |
1734: 80 93 d6 01 sts 0x01D6, r24 |
1738: 80 91 ab 01 lds r24, 0x01AB |
173c: 90 91 ac 01 lds r25, 0x01AC |
1740: 02 97 sbiw r24, 0x02 ; 2 |
1742: 58 f0 brcs .+22 ; 0x175a <__vector_18+0x8c> |
1744: 80 91 ab 01 lds r24, 0x01AB |
1748: 90 91 ac 01 lds r25, 0x01AC |
174c: 01 97 sbiw r24, 0x01 ; 1 |
174e: 90 93 ac 01 sts 0x01AC, r25 |
1752: 80 93 ab 01 sts 0x01AB, r24 |
1756: 5a 9a sbi 0x0b, 2 ; 11 |
1758: 01 c0 rjmp .+2 ; 0x175c <__vector_18+0x8e> |
175a: 5a 98 cbi 0x0b, 2 ; 11 |
175c: 80 91 75 05 lds r24, 0x0575 |
1760: 83 ff sbrs r24, 3 |
1762: 3b c0 rjmp .+118 ; 0x17da <__vector_18+0x10c> |
1764: 34 9b sbis 0x06, 4 ; 6 |
1766: 0a c0 rjmp .+20 ; 0x177c <__vector_18+0xae> |
1768: 80 91 a9 01 lds r24, 0x01A9 |
176c: 90 91 aa 01 lds r25, 0x01AA |
1770: 01 96 adiw r24, 0x01 ; 1 |
1772: 90 93 aa 01 sts 0x01AA, r25 |
1776: 80 93 a9 01 sts 0x01A9, r24 |
177a: 2f c0 rjmp .+94 ; 0x17da <__vector_18+0x10c> |
177c: 80 91 a9 01 lds r24, 0x01A9 |
1780: 90 91 aa 01 lds r25, 0x01AA |
1784: 89 2b or r24, r25 |
1786: 79 f0 breq .+30 ; 0x17a6 <__vector_18+0xd8> |
1788: 80 91 a9 01 lds r24, 0x01A9 |
178c: 90 91 aa 01 lds r25, 0x01AA |
1790: 80 5a subi r24, 0xA0 ; 160 |
1792: 9f 40 sbci r25, 0x0F ; 15 |
1794: 40 f4 brcc .+16 ; 0x17a6 <__vector_18+0xd8> |
1796: 80 91 a9 01 lds r24, 0x01A9 |
179a: 90 91 aa 01 lds r25, 0x01AA |
179e: 90 93 18 02 sts 0x0218, r25 |
17a2: 80 93 17 02 sts 0x0217, r24 |
17a6: 80 91 17 02 lds r24, 0x0217 |
17aa: 90 91 18 02 lds r25, 0x0218 |
17ae: 20 91 19 02 lds r18, 0x0219 |
17b2: 30 91 1a 02 lds r19, 0x021A |
17b6: 82 1b sub r24, r18 |
17b8: 93 0b sbc r25, r19 |
17ba: 84 5e subi r24, 0xE4 ; 228 |
17bc: 9d 4f sbci r25, 0xFD ; 253 |
17be: 68 e6 ldi r22, 0x68 ; 104 |
17c0: 71 e0 ldi r23, 0x01 ; 1 |
17c2: 0e 94 d3 2c call 0x59a6 ; 0x59a6 <__divmodhi4> |
17c6: 84 5b subi r24, 0xB4 ; 180 |
17c8: 90 40 sbci r25, 0x00 ; 0 |
17ca: 90 93 1c 02 sts 0x021C, r25 |
17ce: 80 93 1b 02 sts 0x021B, r24 |
17d2: 10 92 aa 01 sts 0x01AA, r1 |
17d6: 10 92 a9 01 sts 0x01A9, r1 |
17da: bf 91 pop r27 |
17dc: af 91 pop r26 |
17de: 9f 91 pop r25 |
17e0: 8f 91 pop r24 |
17e2: 7f 91 pop r23 |
17e4: 6f 91 pop r22 |
17e6: 5f 91 pop r21 |
17e8: 3f 91 pop r19 |
17ea: 2f 91 pop r18 |
17ec: 0f 90 pop r0 |
17ee: 0f be out 0x3f, r0 ; 63 |
17f0: 0f 90 pop r0 |
17f2: 1f 90 pop r1 |
17f4: 18 95 reti |
000017f6 <SetDelay>: |
17f6: 20 91 a6 01 lds r18, 0x01A6 |
17fa: 30 91 a7 01 lds r19, 0x01A7 |
17fe: 2f 5f subi r18, 0xFF ; 255 |
1800: 3f 4f sbci r19, 0xFF ; 255 |
1802: 82 0f add r24, r18 |
1804: 93 1f adc r25, r19 |
1806: 08 95 ret |
00001808 <CheckDelay>: |
1808: 20 91 a6 01 lds r18, 0x01A6 |
180c: 30 91 a7 01 lds r19, 0x01A7 |
1810: 82 1b sub r24, r18 |
1812: 93 0b sbc r25, r19 |
1814: 89 2f mov r24, r25 |
1816: 99 27 eor r25, r25 |
1818: 86 95 lsr r24 |
181a: 80 74 andi r24, 0x40 ; 64 |
181c: 99 27 eor r25, r25 |
181e: 08 95 ret |
00001820 <__vector_9>: |
1820: 1f 92 push r1 |
1822: 0f 92 push r0 |
1824: 0f b6 in r0, 0x3f ; 63 |
1826: 0f 92 push r0 |
1828: 11 24 eor r1, r1 |
182a: ef 92 push r14 |
182c: ff 92 push r15 |
182e: 0f 93 push r16 |
1830: 1f 93 push r17 |
1832: 2f 93 push r18 |
1834: 3f 93 push r19 |
1836: 4f 93 push r20 |
1838: 5f 93 push r21 |
183a: 6f 93 push r22 |
183c: 7f 93 push r23 |
183e: 8f 93 push r24 |
1840: 9f 93 push r25 |
1842: af 93 push r26 |
1844: bf 93 push r27 |
1846: cf 93 push r28 |
1848: df 93 push r29 |
184a: ef 93 push r30 |
184c: ff 93 push r31 |
184e: 80 91 02 01 lds r24, 0x0102 |
1852: 81 50 subi r24, 0x01 ; 1 |
1854: 80 93 02 01 sts 0x0102, r24 |
1858: 8f 3f cpi r24, 0xFF ; 255 |
185a: 09 f0 breq .+2 ; 0x185e <__vector_9+0x3e> |
185c: 73 c0 rjmp .+230 ; 0x1944 <__vector_9+0x124> |
185e: 83 e8 ldi r24, 0x83 ; 131 |
1860: 80 93 b0 00 sts 0x00B0, r24 |
1864: 80 91 89 01 lds r24, 0x0189 |
1868: c8 2f mov r28, r24 |
186a: dd 27 eor r29, r29 |
186c: d0 93 ae 01 sts 0x01AE, r29 |
1870: c0 93 ad 01 sts 0x01AD, r28 |
1874: 80 91 93 05 lds r24, 0x0593 |
1878: e0 90 8f 05 lds r14, 0x058F |
187c: 80 ff sbrs r24, 0 |
187e: 1e c0 rjmp .+60 ; 0x18bc <__vector_9+0x9c> |
1880: 60 91 e7 01 lds r22, 0x01E7 |
1884: 70 91 e8 01 lds r23, 0x01E8 |
1888: 80 91 e9 01 lds r24, 0x01E9 |
188c: 90 91 ea 01 lds r25, 0x01EA |
1890: ff 24 eor r15, r15 |
1892: 00 27 eor r16, r16 |
1894: 11 27 eor r17, r17 |
1896: 20 e8 ldi r18, 0x80 ; 128 |
1898: 30 e0 ldi r19, 0x00 ; 0 |
189a: 40 e0 ldi r20, 0x00 ; 0 |
189c: 50 e0 ldi r21, 0x00 ; 0 |
189e: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
18a2: c8 01 movw r24, r16 |
18a4: b7 01 movw r22, r14 |
18a6: 0e 94 a0 2c call 0x5940 ; 0x5940 <__mulsi3> |
18aa: 20 e0 ldi r18, 0x00 ; 0 |
18ac: 32 e0 ldi r19, 0x02 ; 2 |
18ae: 40 e0 ldi r20, 0x00 ; 0 |
18b0: 50 e0 ldi r21, 0x00 ; 0 |
18b2: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
18b6: c2 0f add r28, r18 |
18b8: d3 1f adc r29, r19 |
18ba: 1d c0 rjmp .+58 ; 0x18f6 <__vector_9+0xd6> |
18bc: 60 91 e7 01 lds r22, 0x01E7 |
18c0: 70 91 e8 01 lds r23, 0x01E8 |
18c4: 80 91 e9 01 lds r24, 0x01E9 |
18c8: 90 91 ea 01 lds r25, 0x01EA |
18cc: ff 24 eor r15, r15 |
18ce: 00 27 eor r16, r16 |
18d0: 11 27 eor r17, r17 |
18d2: 20 e8 ldi r18, 0x80 ; 128 |
18d4: 30 e0 ldi r19, 0x00 ; 0 |
18d6: 40 e0 ldi r20, 0x00 ; 0 |
18d8: 50 e0 ldi r21, 0x00 ; 0 |
18da: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
18de: c8 01 movw r24, r16 |
18e0: b7 01 movw r22, r14 |
18e2: 0e 94 a0 2c call 0x5940 ; 0x5940 <__mulsi3> |
18e6: 20 e0 ldi r18, 0x00 ; 0 |
18e8: 32 e0 ldi r19, 0x02 ; 2 |
18ea: 40 e0 ldi r20, 0x00 ; 0 |
18ec: 50 e0 ldi r21, 0x00 ; 0 |
18ee: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
18f2: c2 1b sub r28, r18 |
18f4: d3 0b sbc r29, r19 |
18f6: d0 93 ae 01 sts 0x01AE, r29 |
18fa: c0 93 ad 01 sts 0x01AD, r28 |
18fe: 20 91 ad 01 lds r18, 0x01AD |
1902: 30 91 ae 01 lds r19, 0x01AE |
1906: 80 91 90 05 lds r24, 0x0590 |
190a: 99 27 eor r25, r25 |
190c: 28 17 cp r18, r24 |
190e: 39 07 cpc r19, r25 |
1910: 34 f0 brlt .+12 ; 0x191e <__vector_9+0xfe> |
1912: 80 91 91 05 lds r24, 0x0591 |
1916: 99 27 eor r25, r25 |
1918: 82 17 cp r24, r18 |
191a: 93 07 cpc r25, r19 |
191c: 24 f4 brge .+8 ; 0x1926 <__vector_9+0x106> |
191e: 90 93 ae 01 sts 0x01AE, r25 |
1922: 80 93 ad 01 sts 0x01AD, r24 |
1926: 80 91 ad 01 lds r24, 0x01AD |
192a: 90 91 ae 01 lds r25, 0x01AE |
192e: 90 93 ff 04 sts 0x04FF, r25 |
1932: 80 93 fe 04 sts 0x04FE, r24 |
1936: 80 93 b3 00 sts 0x00B3, r24 |
193a: 80 91 92 05 lds r24, 0x0592 |
193e: 80 93 02 01 sts 0x0102, r24 |
1942: 04 c0 rjmp .+8 ; 0x194c <__vector_9+0x12c> |
1944: 83 e0 ldi r24, 0x03 ; 3 |
1946: 80 93 b0 00 sts 0x00B0, r24 |
194a: 5f 98 cbi 0x0b, 7 ; 11 |
194c: ff 91 pop r31 |
194e: ef 91 pop r30 |
1950: df 91 pop r29 |
1952: cf 91 pop r28 |
1954: bf 91 pop r27 |
1956: af 91 pop r26 |
1958: 9f 91 pop r25 |
195a: 8f 91 pop r24 |
195c: 7f 91 pop r23 |
195e: 6f 91 pop r22 |
1960: 5f 91 pop r21 |
1962: 4f 91 pop r20 |
1964: 3f 91 pop r19 |
1966: 2f 91 pop r18 |
1968: 1f 91 pop r17 |
196a: 0f 91 pop r16 |
196c: ff 90 pop r15 |
196e: ef 90 pop r14 |
1970: 0f 90 pop r0 |
1972: 0f be out 0x3f, r0 ; 63 |
1974: 0f 90 pop r0 |
1976: 1f 90 pop r1 |
1978: 18 95 reti |
0000197a <Timer_Init>: |
197a: 80 91 a6 01 lds r24, 0x01A6 |
197e: 90 91 a7 01 lds r25, 0x01A7 |
1982: 0b 96 adiw r24, 0x0b ; 11 |
1984: 90 93 b1 01 sts 0x01B1, r25 |
1988: 80 93 b0 01 sts 0x01B0, r24 |
198c: 82 e0 ldi r24, 0x02 ; 2 |
198e: 85 bd out 0x25, r24 ; 37 |
1990: 83 ea ldi r24, 0xA3 ; 163 |
1992: 84 bd out 0x24, r24 ; 36 |
1994: 17 bc out 0x27, r1 ; 39 |
1996: 88 e7 ldi r24, 0x78 ; 120 |
1998: 88 bd out 0x28, r24 ; 40 |
199a: 96 e0 ldi r25, 0x06 ; 6 |
199c: 96 bd out 0x26, r25 ; 38 |
199e: 83 ec ldi r24, 0xC3 ; 195 |
19a0: 80 93 b0 00 sts 0x00B0, r24 |
19a4: 90 93 b1 00 sts 0x00B1, r25 |
19a8: e0 e7 ldi r30, 0x70 ; 112 |
19aa: f0 e0 ldi r31, 0x00 ; 0 |
19ac: 80 81 ld r24, Z |
19ae: 82 60 ori r24, 0x02 ; 2 |
19b0: 80 83 st Z, r24 |
19b2: ee e6 ldi r30, 0x6E ; 110 |
19b4: f0 e0 ldi r31, 0x00 ; 0 |
19b6: 80 81 ld r24, Z |
19b8: 81 60 ori r24, 0x01 ; 1 |
19ba: 80 83 st Z, r24 |
19bc: 8a e0 ldi r24, 0x0A ; 10 |
19be: 80 93 b3 00 sts 0x00B3, r24 |
19c2: 10 92 b2 00 sts 0x00B2, r1 |
19c6: 08 95 ret |
000019c8 <Delay_ms>: |
19c8: 20 91 a6 01 lds r18, 0x01A6 |
19cc: 30 91 a7 01 lds r19, 0x01A7 |
19d0: 2f 5f subi r18, 0xFF ; 255 |
19d2: 3f 4f sbci r19, 0xFF ; 255 |
19d4: 28 0f add r18, r24 |
19d6: 39 1f adc r19, r25 |
19d8: 80 91 a6 01 lds r24, 0x01A6 |
19dc: 90 91 a7 01 lds r25, 0x01A7 |
19e0: a9 01 movw r20, r18 |
19e2: 48 1b sub r20, r24 |
19e4: 59 0b sbc r21, r25 |
19e6: 57 ff sbrs r21, 7 |
19e8: f7 cf rjmp .-18 ; 0x19d8 <Delay_ms+0x10> |
19ea: 08 95 ret |
000019ec <ADC_Init>: |
19ec: 10 92 7c 00 sts 0x007C, r1 |
19f0: 8f ee ldi r24, 0xEF ; 239 |
19f2: 80 93 7a 00 sts 0x007A, r24 |
19f6: 08 95 ret |
000019f8 <__vector_24>: |
19f8: 1f 92 push r1 |
19fa: 0f 92 push r0 |
19fc: 0f b6 in r0, 0x3f ; 63 |
19fe: 0f 92 push r0 |
1a00: 11 24 eor r1, r1 |
1a02: ef 92 push r14 |
1a04: ff 92 push r15 |
1a06: 0f 93 push r16 |
1a08: 1f 93 push r17 |
1a0a: 2f 93 push r18 |
1a0c: 3f 93 push r19 |
1a0e: 4f 93 push r20 |
1a10: 5f 93 push r21 |
1a12: 6f 93 push r22 |
1a14: 7f 93 push r23 |
1a16: 8f 93 push r24 |
1a18: 9f 93 push r25 |
1a1a: af 93 push r26 |
1a1c: bf 93 push r27 |
1a1e: cf 93 push r28 |
1a20: df 93 push r29 |
1a22: ef 93 push r30 |
1a24: ff 93 push r31 |
1a26: 10 92 7a 00 sts 0x007A, r1 |
1a2a: 40 91 c8 01 lds r20, 0x01C8 |
1a2e: 4f 5f subi r20, 0xFF ; 255 |
1a30: 40 93 c8 01 sts 0x01C8, r20 |
1a34: 41 50 subi r20, 0x01 ; 1 |
1a36: 43 30 cpi r20, 0x03 ; 3 |
1a38: 09 f4 brne .+2 ; 0x1a3c <__vector_24+0x44> |
1a3a: 1c c1 rjmp .+568 ; 0x1c74 <__vector_24+0x27c> |
1a3c: 44 30 cpi r20, 0x04 ; 4 |
1a3e: 38 f4 brcc .+14 ; 0x1a4e <__vector_24+0x56> |
1a40: 41 30 cpi r20, 0x01 ; 1 |
1a42: 09 f4 brne .+2 ; 0x1a46 <__vector_24+0x4e> |
1a44: 63 c0 rjmp .+198 ; 0x1b0c <__vector_24+0x114> |
1a46: 42 30 cpi r20, 0x02 ; 2 |
1a48: 08 f0 brcs .+2 ; 0x1a4c <__vector_24+0x54> |
1a4a: b9 c0 rjmp .+370 ; 0x1bbe <__vector_24+0x1c6> |
1a4c: 0d c0 rjmp .+26 ; 0x1a68 <__vector_24+0x70> |
1a4e: 45 30 cpi r20, 0x05 ; 5 |
1a50: 09 f4 brne .+2 ; 0x1a54 <__vector_24+0x5c> |
1a52: 50 c1 rjmp .+672 ; 0x1cf4 <__vector_24+0x2fc> |
1a54: 45 30 cpi r20, 0x05 ; 5 |
1a56: 08 f4 brcc .+2 ; 0x1a5a <__vector_24+0x62> |
1a58: 2a c1 rjmp .+596 ; 0x1cae <__vector_24+0x2b6> |
1a5a: 46 30 cpi r20, 0x06 ; 6 |
1a5c: 09 f4 brne .+2 ; 0x1a60 <__vector_24+0x68> |
1a5e: 6f c1 rjmp .+734 ; 0x1d3e <__vector_24+0x346> |
1a60: 47 30 cpi r20, 0x07 ; 7 |
1a62: 09 f0 breq .+2 ; 0x1a66 <__vector_24+0x6e> |
1a64: cb c2 rjmp .+1430 ; 0x1ffc <__vector_24+0x604> |
1a66: 52 c2 rjmp .+1188 ; 0x1f0c <__vector_24+0x514> |
1a68: 20 91 db 01 lds r18, 0x01DB |
1a6c: 30 91 dc 01 lds r19, 0x01DC |
1a70: 80 91 78 00 lds r24, 0x0078 |
1a74: 90 91 79 00 lds r25, 0x0079 |
1a78: 28 1b sub r18, r24 |
1a7a: 39 0b sbc r19, r25 |
1a7c: 80 91 b6 01 lds r24, 0x01B6 |
1a80: 90 91 b7 01 lds r25, 0x01B7 |
1a84: 82 0f add r24, r18 |
1a86: 93 1f adc r25, r19 |
1a88: 90 93 b7 01 sts 0x01B7, r25 |
1a8c: 80 93 b6 01 sts 0x01B6, r24 |
1a90: 80 91 c0 01 lds r24, 0x01C0 |
1a94: 8f 5f subi r24, 0xFF ; 255 |
1a96: 80 93 c0 01 sts 0x01C0, r24 |
1a9a: 80 91 0b 02 lds r24, 0x020B |
1a9e: 90 91 0c 02 lds r25, 0x020C |
1aa2: a0 91 0d 02 lds r26, 0x020D |
1aa6: b0 91 0e 02 lds r27, 0x020E |
1aaa: 44 27 eor r20, r20 |
1aac: 37 fd sbrc r19, 7 |
1aae: 40 95 com r20 |
1ab0: 54 2f mov r21, r20 |
1ab2: 82 0f add r24, r18 |
1ab4: 93 1f adc r25, r19 |
1ab6: a4 1f adc r26, r20 |
1ab8: b5 1f adc r27, r21 |
1aba: 80 93 0b 02 sts 0x020B, r24 |
1abe: 90 93 0c 02 sts 0x020C, r25 |
1ac2: a0 93 0d 02 sts 0x020D, r26 |
1ac6: b0 93 0e 02 sts 0x020E, r27 |
1aca: 80 91 0f 02 lds r24, 0x020F |
1ace: 90 91 10 02 lds r25, 0x0210 |
1ad2: a0 91 11 02 lds r26, 0x0211 |
1ad6: b0 91 12 02 lds r27, 0x0212 |
1ada: 82 0f add r24, r18 |
1adc: 93 1f adc r25, r19 |
1ade: a4 1f adc r26, r20 |
1ae0: b5 1f adc r27, r21 |
1ae2: 80 93 0f 02 sts 0x020F, r24 |
1ae6: 90 93 10 02 sts 0x0210, r25 |
1aea: a0 93 11 02 sts 0x0211, r26 |
1aee: b0 93 12 02 sts 0x0212, r27 |
1af2: 81 e0 ldi r24, 0x01 ; 1 |
1af4: 80 93 c9 01 sts 0x01C9, r24 |
1af8: 80 91 c6 01 lds r24, 0x01C6 |
1afc: 90 91 c7 01 lds r25, 0x01C7 |
1b00: 01 96 adiw r24, 0x01 ; 1 |
1b02: 90 93 c7 01 sts 0x01C7, r25 |
1b06: 80 93 c6 01 sts 0x01C6, r24 |
1b0a: 7c c2 rjmp .+1272 ; 0x2004 <__vector_24+0x60c> |
1b0c: 60 91 78 00 lds r22, 0x0078 |
1b10: 70 91 79 00 lds r23, 0x0079 |
1b14: 80 91 d9 01 lds r24, 0x01D9 |
1b18: 90 91 da 01 lds r25, 0x01DA |
1b1c: 68 1b sub r22, r24 |
1b1e: 79 0b sbc r23, r25 |
1b20: 80 91 03 02 lds r24, 0x0203 |
1b24: 90 91 04 02 lds r25, 0x0204 |
1b28: a0 91 05 02 lds r26, 0x0205 |
1b2c: b0 91 06 02 lds r27, 0x0206 |
1b30: 9b 01 movw r18, r22 |
1b32: 44 27 eor r20, r20 |
1b34: 37 fd sbrc r19, 7 |
1b36: 40 95 com r20 |
1b38: 54 2f mov r21, r20 |
1b3a: 82 0f add r24, r18 |
1b3c: 93 1f adc r25, r19 |
1b3e: a4 1f adc r26, r20 |
1b40: b5 1f adc r27, r21 |
1b42: 80 93 03 02 sts 0x0203, r24 |
1b46: 90 93 04 02 sts 0x0204, r25 |
1b4a: a0 93 05 02 sts 0x0205, r26 |
1b4e: b0 93 06 02 sts 0x0206, r27 |
1b52: 80 91 07 02 lds r24, 0x0207 |
1b56: 90 91 08 02 lds r25, 0x0208 |
1b5a: a0 91 09 02 lds r26, 0x0209 |
1b5e: b0 91 0a 02 lds r27, 0x020A |
1b62: 82 0f add r24, r18 |
1b64: 93 1f adc r25, r19 |
1b66: a4 1f adc r26, r20 |
1b68: b5 1f adc r27, r21 |
1b6a: 80 93 07 02 sts 0x0207, r24 |
1b6e: 90 93 08 02 sts 0x0208, r25 |
1b72: a0 93 09 02 sts 0x0209, r26 |
1b76: b0 93 0a 02 sts 0x020A, r27 |
1b7a: 80 91 78 00 lds r24, 0x0078 |
1b7e: 90 91 79 00 lds r25, 0x0079 |
1b82: 0a 97 sbiw r24, 0x0a ; 10 |
1b84: 10 f4 brcc .+4 ; 0x1b8a <__vector_24+0x192> |
1b86: 64 e4 ldi r22, 0x44 ; 68 |
1b88: 7d ef ldi r23, 0xFD ; 253 |
1b8a: 80 91 78 00 lds r24, 0x0078 |
1b8e: 90 91 79 00 lds r25, 0x0079 |
1b92: 89 5e subi r24, 0xE9 ; 233 |
1b94: 93 40 sbci r25, 0x03 ; 3 |
1b96: 10 f0 brcs .+4 ; 0x1b9c <__vector_24+0x1a4> |
1b98: 6c eb ldi r22, 0xBC ; 188 |
1b9a: 72 e0 ldi r23, 0x02 ; 2 |
1b9c: 80 91 b4 01 lds r24, 0x01B4 |
1ba0: 90 91 b5 01 lds r25, 0x01B5 |
1ba4: 86 0f add r24, r22 |
1ba6: 97 1f adc r25, r23 |
1ba8: 90 93 b5 01 sts 0x01B5, r25 |
1bac: 80 93 b4 01 sts 0x01B4, r24 |
1bb0: 80 91 bf 01 lds r24, 0x01BF |
1bb4: 8f 5f subi r24, 0xFF ; 255 |
1bb6: 80 93 bf 01 sts 0x01BF, r24 |
1bba: 82 e0 ldi r24, 0x02 ; 2 |
1bbc: 58 c0 rjmp .+176 ; 0x1c6e <__vector_24+0x276> |
1bbe: 60 91 78 00 lds r22, 0x0078 |
1bc2: 70 91 79 00 lds r23, 0x0079 |
1bc6: 80 91 d7 01 lds r24, 0x01D7 |
1bca: 90 91 d8 01 lds r25, 0x01D8 |
1bce: 68 1b sub r22, r24 |
1bd0: 79 0b sbc r23, r25 |
1bd2: 80 91 fb 01 lds r24, 0x01FB |
1bd6: 90 91 fc 01 lds r25, 0x01FC |
1bda: a0 91 fd 01 lds r26, 0x01FD |
1bde: b0 91 fe 01 lds r27, 0x01FE |
1be2: 9b 01 movw r18, r22 |
1be4: 44 27 eor r20, r20 |
1be6: 37 fd sbrc r19, 7 |
1be8: 40 95 com r20 |
1bea: 54 2f mov r21, r20 |
1bec: 82 0f add r24, r18 |
1bee: 93 1f adc r25, r19 |
1bf0: a4 1f adc r26, r20 |
1bf2: b5 1f adc r27, r21 |
1bf4: 80 93 fb 01 sts 0x01FB, r24 |
1bf8: 90 93 fc 01 sts 0x01FC, r25 |
1bfc: a0 93 fd 01 sts 0x01FD, r26 |
1c00: b0 93 fe 01 sts 0x01FE, r27 |
1c04: 80 91 ff 01 lds r24, 0x01FF |
1c08: 90 91 00 02 lds r25, 0x0200 |
1c0c: a0 91 01 02 lds r26, 0x0201 |
1c10: b0 91 02 02 lds r27, 0x0202 |
1c14: 82 0f add r24, r18 |
1c16: 93 1f adc r25, r19 |
1c18: a4 1f adc r26, r20 |
1c1a: b5 1f adc r27, r21 |
1c1c: 80 93 ff 01 sts 0x01FF, r24 |
1c20: 90 93 00 02 sts 0x0200, r25 |
1c24: a0 93 01 02 sts 0x0201, r26 |
1c28: b0 93 02 02 sts 0x0202, r27 |
1c2c: 80 91 78 00 lds r24, 0x0078 |
1c30: 90 91 79 00 lds r25, 0x0079 |
1c34: 0a 97 sbiw r24, 0x0a ; 10 |
1c36: 10 f4 brcc .+4 ; 0x1c3c <__vector_24+0x244> |
1c38: 64 e4 ldi r22, 0x44 ; 68 |
1c3a: 7d ef ldi r23, 0xFD ; 253 |
1c3c: 80 91 78 00 lds r24, 0x0078 |
1c40: 90 91 79 00 lds r25, 0x0079 |
1c44: 89 5e subi r24, 0xE9 ; 233 |
1c46: 93 40 sbci r25, 0x03 ; 3 |
1c48: 10 f0 brcs .+4 ; 0x1c4e <__vector_24+0x256> |
1c4a: 6c eb ldi r22, 0xBC ; 188 |
1c4c: 72 e0 ldi r23, 0x02 ; 2 |
1c4e: 80 91 b2 01 lds r24, 0x01B2 |
1c52: 90 91 b3 01 lds r25, 0x01B3 |
1c56: 86 0f add r24, r22 |
1c58: 97 1f adc r25, r23 |
1c5a: 90 93 b3 01 sts 0x01B3, r25 |
1c5e: 80 93 b2 01 sts 0x01B2, r24 |
1c62: 80 91 be 01 lds r24, 0x01BE |
1c66: 8f 5f subi r24, 0xFF ; 255 |
1c68: 80 93 be 01 sts 0x01BE, r24 |
1c6c: 84 e0 ldi r24, 0x04 ; 4 |
1c6e: 80 93 c9 01 sts 0x01C9, r24 |
1c72: c8 c1 rjmp .+912 ; 0x2004 <__vector_24+0x60c> |
1c74: 40 91 04 01 lds r20, 0x0104 |
1c78: 50 91 05 01 lds r21, 0x0105 |
1c7c: 80 91 78 00 lds r24, 0x0078 |
1c80: 90 91 79 00 lds r25, 0x0079 |
1c84: 9a 01 movw r18, r20 |
1c86: 22 0f add r18, r18 |
1c88: 33 1f adc r19, r19 |
1c8a: 24 0f add r18, r20 |
1c8c: 35 1f adc r19, r21 |
1c8e: 63 e0 ldi r22, 0x03 ; 3 |
1c90: 70 e0 ldi r23, 0x00 ; 0 |
1c92: 0e 94 bf 2c call 0x597e ; 0x597e <__udivmodhi4> |
1c96: 26 0f add r18, r22 |
1c98: 37 1f adc r19, r23 |
1c9a: 36 95 lsr r19 |
1c9c: 27 95 ror r18 |
1c9e: 36 95 lsr r19 |
1ca0: 27 95 ror r18 |
1ca2: 30 93 05 01 sts 0x0105, r19 |
1ca6: 20 93 04 01 sts 0x0104, r18 |
1caa: 86 e0 ldi r24, 0x06 ; 6 |
1cac: e0 cf rjmp .-64 ; 0x1c6e <__vector_24+0x276> |
1cae: 80 91 df 01 lds r24, 0x01DF |
1cb2: 90 91 e0 01 lds r25, 0x01E0 |
1cb6: 20 91 78 00 lds r18, 0x0078 |
1cba: 30 91 79 00 lds r19, 0x0079 |
1cbe: 82 1b sub r24, r18 |
1cc0: 93 0b sbc r25, r19 |
1cc2: 90 93 28 05 sts 0x0528, r25 |
1cc6: 80 93 27 05 sts 0x0527, r24 |
1cca: 80 91 b8 01 lds r24, 0x01B8 |
1cce: 90 91 b9 01 lds r25, 0x01B9 |
1cd2: 20 91 27 05 lds r18, 0x0527 |
1cd6: 30 91 28 05 lds r19, 0x0528 |
1cda: 82 0f add r24, r18 |
1cdc: 93 1f adc r25, r19 |
1cde: 90 93 b9 01 sts 0x01B9, r25 |
1ce2: 80 93 b8 01 sts 0x01B8, r24 |
1ce6: 80 91 c2 01 lds r24, 0x01C2 |
1cea: 8f 5f subi r24, 0xFF ; 255 |
1cec: 80 93 c2 01 sts 0x01C2, r24 |
1cf0: 87 e0 ldi r24, 0x07 ; 7 |
1cf2: bd cf rjmp .-134 ; 0x1c6e <__vector_24+0x276> |
1cf4: 80 91 78 00 lds r24, 0x0078 |
1cf8: 90 91 79 00 lds r25, 0x0079 |
1cfc: 20 91 dd 01 lds r18, 0x01DD |
1d00: 30 91 de 01 lds r19, 0x01DE |
1d04: 82 1b sub r24, r18 |
1d06: 93 0b sbc r25, r19 |
1d08: 90 93 28 05 sts 0x0528, r25 |
1d0c: 80 93 27 05 sts 0x0527, r24 |
1d10: 80 91 ba 01 lds r24, 0x01BA |
1d14: 90 91 bb 01 lds r25, 0x01BB |
1d18: 20 91 27 05 lds r18, 0x0527 |
1d1c: 30 91 28 05 lds r19, 0x0528 |
1d20: 82 0f add r24, r18 |
1d22: 93 1f adc r25, r19 |
1d24: 90 93 bb 01 sts 0x01BB, r25 |
1d28: 80 93 ba 01 sts 0x01BA, r24 |
1d2c: 80 91 c1 01 lds r24, 0x01C1 |
1d30: 8f 5f subi r24, 0xFF ; 255 |
1d32: 80 93 c1 01 sts 0x01C1, r24 |
1d36: 40 93 c9 01 sts 0x01C9, r20 |
1d3a: 86 e0 ldi r24, 0x06 ; 6 |
1d3c: e4 c0 rjmp .+456 ; 0x1f06 <__vector_24+0x50e> |
1d3e: 60 91 78 00 lds r22, 0x0078 |
1d42: 70 91 79 00 lds r23, 0x0079 |
1d46: e0 90 e1 01 lds r14, 0x01E1 |
1d4a: f0 90 e2 01 lds r15, 0x01E2 |
1d4e: 00 91 e3 01 lds r16, 0x01E3 |
1d52: 10 91 e4 01 lds r17, 0x01E4 |
1d56: 88 27 eor r24, r24 |
1d58: 77 fd sbrc r23, 7 |
1d5a: 80 95 com r24 |
1d5c: 98 2f mov r25, r24 |
1d5e: 0e 94 84 2b call 0x5708 ; 0x5708 <__floatsisf> |
1d62: a8 01 movw r20, r16 |
1d64: 97 01 movw r18, r14 |
1d66: 0e 94 de 2a call 0x55bc ; 0x55bc <__subsf3> |
1d6a: 0e 94 67 2b call 0x56ce ; 0x56ce <__fixsfsi> |
1d6e: 70 93 bd 01 sts 0x01BD, r23 |
1d72: 60 93 bc 01 sts 0x01BC, r22 |
1d76: 20 91 bc 01 lds r18, 0x01BC |
1d7a: 30 91 bd 01 lds r19, 0x01BD |
1d7e: e0 91 27 05 lds r30, 0x0527 |
1d82: f0 91 28 05 lds r31, 0x0528 |
1d86: 80 91 32 05 lds r24, 0x0532 |
1d8a: 90 91 33 05 lds r25, 0x0533 |
1d8e: 97 ff sbrs r25, 7 |
1d90: 03 c0 rjmp .+6 ; 0x1d98 <__vector_24+0x3a0> |
1d92: 90 95 com r25 |
1d94: 81 95 neg r24 |
1d96: 9f 4f sbci r25, 0xFF ; 255 |
1d98: 64 e0 ldi r22, 0x04 ; 4 |
1d9a: 70 e0 ldi r23, 0x00 ; 0 |
1d9c: 0e 94 d3 2c call 0x59a6 ; 0x59a6 <__divmodhi4> |
1da0: eb 01 movw r28, r22 |
1da2: cf 01 movw r24, r30 |
1da4: f7 ff sbrs r31, 7 |
1da6: 03 c0 rjmp .+6 ; 0x1dae <__vector_24+0x3b6> |
1da8: 90 95 com r25 |
1daa: 81 95 neg r24 |
1dac: 9f 4f sbci r25, 0xFF ; 255 |
1dae: 64 e0 ldi r22, 0x04 ; 4 |
1db0: 70 e0 ldi r23, 0x00 ; 0 |
1db2: 0e 94 d3 2c call 0x59a6 ; 0x59a6 <__divmodhi4> |
1db6: 26 0f add r18, r22 |
1db8: 37 1f adc r19, r23 |
1dba: 2c 0f add r18, r28 |
1dbc: 3d 1f adc r19, r29 |
1dbe: 30 93 bd 01 sts 0x01BD, r19 |
1dc2: 20 93 bc 01 sts 0x01BC, r18 |
1dc6: 80 91 bc 01 lds r24, 0x01BC |
1dca: 90 91 bd 01 lds r25, 0x01BD |
1dce: 02 97 sbiw r24, 0x02 ; 2 |
1dd0: 04 f1 brlt .+64 ; 0x1e12 <__vector_24+0x41a> |
1dd2: 60 91 e1 01 lds r22, 0x01E1 |
1dd6: 70 91 e2 01 lds r23, 0x01E2 |
1dda: 80 91 e3 01 lds r24, 0x01E3 |
1dde: 90 91 e4 01 lds r25, 0x01E4 |
1de2: 20 e0 ldi r18, 0x00 ; 0 |
1de4: 30 e0 ldi r19, 0x00 ; 0 |
1de6: 48 e4 ldi r20, 0x48 ; 72 |
1de8: 54 e4 ldi r21, 0x44 ; 68 |
1dea: 0e 94 8e 2b call 0x571c ; 0x571c <__eqsf2> |
1dee: 88 23 and r24, r24 |
1df0: 0c f0 brlt .+2 ; 0x1df4 <__vector_24+0x3fc> |
1df2: 3c c0 rjmp .+120 ; 0x1e6c <__vector_24+0x474> |
1df4: 60 91 e1 01 lds r22, 0x01E1 |
1df8: 70 91 e2 01 lds r23, 0x01E2 |
1dfc: 80 91 e3 01 lds r24, 0x01E3 |
1e00: 90 91 e4 01 lds r25, 0x01E4 |
1e04: 2a e0 ldi r18, 0x0A ; 10 |
1e06: 37 ed ldi r19, 0xD7 ; 215 |
1e08: 43 ea ldi r20, 0xA3 ; 163 |
1e0a: 5c e3 ldi r21, 0x3C ; 60 |
1e0c: 0e 94 df 2a call 0x55be ; 0x55be <__addsf3> |
1e10: 25 c0 rjmp .+74 ; 0x1e5c <__vector_24+0x464> |
1e12: 80 91 bc 01 lds r24, 0x01BC |
1e16: 90 91 bd 01 lds r25, 0x01BD |
1e1a: 8f 5f subi r24, 0xFF ; 255 |
1e1c: 9f 4f sbci r25, 0xFF ; 255 |
1e1e: 34 f5 brge .+76 ; 0x1e6c <__vector_24+0x474> |
1e20: 60 91 e1 01 lds r22, 0x01E1 |
1e24: 70 91 e2 01 lds r23, 0x01E2 |
1e28: 80 91 e3 01 lds r24, 0x01E3 |
1e2c: 90 91 e4 01 lds r25, 0x01E4 |
1e30: 20 e0 ldi r18, 0x00 ; 0 |
1e32: 30 e0 ldi r19, 0x00 ; 0 |
1e34: 46 e1 ldi r20, 0x16 ; 22 |
1e36: 54 e4 ldi r21, 0x44 ; 68 |
1e38: 0e 94 91 2b call 0x5722 ; 0x5722 <__gesf2> |
1e3c: 18 16 cp r1, r24 |
1e3e: b4 f4 brge .+44 ; 0x1e6c <__vector_24+0x474> |
1e40: 60 91 e1 01 lds r22, 0x01E1 |
1e44: 70 91 e2 01 lds r23, 0x01E2 |
1e48: 80 91 e3 01 lds r24, 0x01E3 |
1e4c: 90 91 e4 01 lds r25, 0x01E4 |
1e50: 2a e0 ldi r18, 0x0A ; 10 |
1e52: 37 ed ldi r19, 0xD7 ; 215 |
1e54: 43 ea ldi r20, 0xA3 ; 163 |
1e56: 5c e3 ldi r21, 0x3C ; 60 |
1e58: 0e 94 de 2a call 0x55bc ; 0x55bc <__subsf3> |
1e5c: 60 93 e1 01 sts 0x01E1, r22 |
1e60: 70 93 e2 01 sts 0x01E2, r23 |
1e64: 80 93 e3 01 sts 0x01E3, r24 |
1e68: 90 93 e4 01 sts 0x01E4, r25 |
1e6c: 81 e0 ldi r24, 0x01 ; 1 |
1e6e: 80 93 c3 01 sts 0x01C3, r24 |
1e72: 80 91 78 00 lds r24, 0x0078 |
1e76: 90 91 79 00 lds r25, 0x0079 |
1e7a: 90 93 2a 05 sts 0x052A, r25 |
1e7e: 80 93 29 05 sts 0x0529, r24 |
1e82: 20 91 13 02 lds r18, 0x0213 |
1e86: 30 91 14 02 lds r19, 0x0214 |
1e8a: 40 91 15 02 lds r20, 0x0215 |
1e8e: 50 91 16 02 lds r21, 0x0216 |
1e92: 80 91 bc 01 lds r24, 0x01BC |
1e96: 90 91 bd 01 lds r25, 0x01BD |
1e9a: aa 27 eor r26, r26 |
1e9c: 97 fd sbrc r25, 7 |
1e9e: a0 95 com r26 |
1ea0: ba 2f mov r27, r26 |
1ea2: 28 0f add r18, r24 |
1ea4: 39 1f adc r19, r25 |
1ea6: 4a 1f adc r20, r26 |
1ea8: 5b 1f adc r21, r27 |
1eaa: 20 93 13 02 sts 0x0213, r18 |
1eae: 30 93 14 02 sts 0x0214, r19 |
1eb2: 40 93 15 02 sts 0x0215, r20 |
1eb6: 50 93 16 02 sts 0x0216, r21 |
1eba: e0 90 13 02 lds r14, 0x0213 |
1ebe: f0 90 14 02 lds r15, 0x0214 |
1ec2: 00 91 15 02 lds r16, 0x0215 |
1ec6: 10 91 16 02 lds r17, 0x0216 |
1eca: 60 91 13 02 lds r22, 0x0213 |
1ece: 70 91 14 02 lds r23, 0x0214 |
1ed2: 80 91 15 02 lds r24, 0x0215 |
1ed6: 90 91 16 02 lds r25, 0x0216 |
1eda: 20 e0 ldi r18, 0x00 ; 0 |
1edc: 34 e0 ldi r19, 0x04 ; 4 |
1ede: 40 e0 ldi r20, 0x00 ; 0 |
1ee0: 50 e0 ldi r21, 0x00 ; 0 |
1ee2: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
1ee6: e2 1a sub r14, r18 |
1ee8: f3 0a sbc r15, r19 |
1eea: 04 0b sbc r16, r20 |
1eec: 15 0b sbc r17, r21 |
1eee: e0 92 13 02 sts 0x0213, r14 |
1ef2: f0 92 14 02 sts 0x0214, r15 |
1ef6: 00 93 15 02 sts 0x0215, r16 |
1efa: 10 93 16 02 sts 0x0216, r17 |
1efe: 83 e0 ldi r24, 0x03 ; 3 |
1f00: 80 93 c9 01 sts 0x01C9, r24 |
1f04: 87 e0 ldi r24, 0x07 ; 7 |
1f06: 80 93 c8 01 sts 0x01C8, r24 |
1f0a: 7c c0 rjmp .+248 ; 0x2004 <__vector_24+0x60c> |
1f0c: 80 91 37 05 lds r24, 0x0537 |
1f10: 90 91 38 05 lds r25, 0x0538 |
1f14: 20 91 78 00 lds r18, 0x0078 |
1f18: 30 91 79 00 lds r19, 0x0079 |
1f1c: 82 0f add r24, r18 |
1f1e: 93 1f adc r25, r19 |
1f20: 90 93 38 05 sts 0x0538, r25 |
1f24: 80 93 37 05 sts 0x0537, r24 |
1f28: 80 91 2f 05 lds r24, 0x052F |
1f2c: 8f 5f subi r24, 0xFF ; 255 |
1f2e: 80 93 2f 05 sts 0x052F, r24 |
1f32: 80 91 2f 05 lds r24, 0x052F |
1f36: 85 30 cpi r24, 0x05 ; 5 |
1f38: 08 f4 brcc .+2 ; 0x1f3c <__vector_24+0x544> |
1f3a: 60 c0 rjmp .+192 ; 0x1ffc <__vector_24+0x604> |
1f3c: 80 91 78 00 lds r24, 0x0078 |
1f40: 90 91 79 00 lds r25, 0x0079 |
1f44: 90 93 0b 01 sts 0x010B, r25 |
1f48: 80 93 0a 01 sts 0x010A, r24 |
1f4c: 10 92 2f 05 sts 0x052F, r1 |
1f50: 80 91 2b 05 lds r24, 0x052B |
1f54: 90 91 2c 05 lds r25, 0x052C |
1f58: 20 91 37 05 lds r18, 0x0537 |
1f5c: 30 91 38 05 lds r19, 0x0538 |
1f60: 82 1b sub r24, r18 |
1f62: 93 0b sbc r25, r19 |
1f64: 20 91 2f 02 lds r18, 0x022F |
1f68: 30 91 30 02 lds r19, 0x0230 |
1f6c: 82 1b sub r24, r18 |
1f6e: 93 0b sbc r25, r19 |
1f70: 90 93 c5 01 sts 0x01C5, r25 |
1f74: 80 93 c4 01 sts 0x01C4, r24 |
1f78: 60 91 37 05 lds r22, 0x0537 |
1f7c: 70 91 38 05 lds r23, 0x0538 |
1f80: e0 90 06 01 lds r14, 0x0106 |
1f84: f0 90 07 01 lds r15, 0x0107 |
1f88: 00 91 08 01 lds r16, 0x0108 |
1f8c: 10 91 09 01 lds r17, 0x0109 |
1f90: 88 27 eor r24, r24 |
1f92: 77 fd sbrc r23, 7 |
1f94: 80 95 com r24 |
1f96: 98 2f mov r25, r24 |
1f98: a8 01 movw r20, r16 |
1f9a: 97 01 movw r18, r14 |
1f9c: 22 0f add r18, r18 |
1f9e: 33 1f adc r19, r19 |
1fa0: 44 1f adc r20, r20 |
1fa2: 55 1f adc r21, r21 |
1fa4: 2e 0d add r18, r14 |
1fa6: 3f 1d adc r19, r15 |
1fa8: 40 1f adc r20, r16 |
1faa: 51 1f adc r21, r17 |
1fac: 62 0f add r22, r18 |
1fae: 73 1f adc r23, r19 |
1fb0: 84 1f adc r24, r20 |
1fb2: 95 1f adc r25, r21 |
1fb4: 24 e0 ldi r18, 0x04 ; 4 |
1fb6: 30 e0 ldi r19, 0x00 ; 0 |
1fb8: 40 e0 ldi r20, 0x00 ; 0 |
1fba: 50 e0 ldi r21, 0x00 ; 0 |
1fbc: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
1fc0: 20 93 06 01 sts 0x0106, r18 |
1fc4: 30 93 07 01 sts 0x0107, r19 |
1fc8: 40 93 08 01 sts 0x0108, r20 |
1fcc: 50 93 09 01 sts 0x0109, r21 |
1fd0: 20 91 2b 05 lds r18, 0x052B |
1fd4: 30 91 2c 05 lds r19, 0x052C |
1fd8: 80 91 06 01 lds r24, 0x0106 |
1fdc: 90 91 07 01 lds r25, 0x0107 |
1fe0: a0 91 08 01 lds r26, 0x0108 |
1fe4: b0 91 09 01 lds r27, 0x0109 |
1fe8: 28 1b sub r18, r24 |
1fea: 39 0b sbc r19, r25 |
1fec: 30 93 30 02 sts 0x0230, r19 |
1ff0: 20 93 2f 02 sts 0x022F, r18 |
1ff4: 10 92 38 05 sts 0x0538, r1 |
1ff8: 10 92 37 05 sts 0x0537, r1 |
1ffc: 10 92 c9 01 sts 0x01C9, r1 |
2000: 10 92 c8 01 sts 0x01C8, r1 |
2004: 80 91 c9 01 lds r24, 0x01C9 |
2008: 80 93 7c 00 sts 0x007C, r24 |
200c: 8f ee ldi r24, 0xEF ; 239 |
200e: 80 93 7a 00 sts 0x007A, r24 |
2012: ff 91 pop r31 |
2014: ef 91 pop r30 |
2016: df 91 pop r29 |
2018: cf 91 pop r28 |
201a: bf 91 pop r27 |
201c: af 91 pop r26 |
201e: 9f 91 pop r25 |
2020: 8f 91 pop r24 |
2022: 7f 91 pop r23 |
2024: 6f 91 pop r22 |
2026: 5f 91 pop r21 |
2028: 4f 91 pop r20 |
202a: 3f 91 pop r19 |
202c: 2f 91 pop r18 |
202e: 1f 91 pop r17 |
2030: 0f 91 pop r16 |
2032: ff 90 pop r15 |
2034: ef 90 pop r14 |
2036: 0f 90 pop r0 |
2038: 0f be out 0x3f, r0 ; 63 |
203a: 0f 90 pop r0 |
203c: 1f 90 pop r1 |
203e: 18 95 reti |
00002040 <SucheLuftruckOffset>: |
2040: cf 93 push r28 |
2042: df 93 push r29 |
2044: c0 e0 ldi r28, 0x00 ; 0 |
2046: d0 e0 ldi r29, 0x00 ; 0 |
2048: c7 bd out 0x27, r28 ; 39 |
204a: 82 e3 ldi r24, 0x32 ; 50 |
204c: 90 e0 ldi r25, 0x00 ; 0 |
204e: 0e 94 e4 0c call 0x19c8 ; 0x19c8 <Delay_ms> |
2052: 8b e3 ldi r24, 0x3B ; 59 |
2054: 91 e0 ldi r25, 0x01 ; 1 |
2056: 9f 93 push r25 |
2058: 8f 93 push r24 |
205a: 1f 92 push r1 |
205c: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
2060: 80 91 0a 01 lds r24, 0x010A |
2064: 90 91 0b 01 lds r25, 0x010B |
2068: 0f 90 pop r0 |
206a: 0f 90 pop r0 |
206c: 0f 90 pop r0 |
206e: 84 58 subi r24, 0x84 ; 132 |
2070: 93 40 sbci r25, 0x03 ; 3 |
2072: 20 f0 brcs .+8 ; 0x207c <SucheLuftruckOffset+0x3c> |
2074: 21 96 adiw r28, 0x01 ; 1 |
2076: ca 3f cpi r28, 0xFA ; 250 |
2078: d1 05 cpc r29, r1 |
207a: 31 f7 brne .-52 ; 0x2048 <SucheLuftruckOffset+0x8> |
207c: c0 93 34 05 sts 0x0534, r28 |
2080: 88 ec ldi r24, 0xC8 ; 200 |
2082: 90 e0 ldi r25, 0x00 ; 0 |
2084: 0e 94 e4 0c call 0x19c8 ; 0x19c8 <Delay_ms> |
2088: df 91 pop r29 |
208a: cf 91 pop r28 |
208c: 08 95 ret |
0000208e <LcdClear>: |
208e: e6 e1 ldi r30, 0x16 ; 22 |
2090: f1 e0 ldi r31, 0x01 ; 1 |
2092: 80 e2 ldi r24, 0x20 ; 32 |
2094: 81 93 st Z+, r24 |
2096: 91 e0 ldi r25, 0x01 ; 1 |
2098: e6 36 cpi r30, 0x66 ; 102 |
209a: f9 07 cpc r31, r25 |
209c: d9 f7 brne .-10 ; 0x2094 <LcdClear+0x6> |
209e: 08 95 ret |
000020a0 <Menu>: |
20a0: ff 92 push r15 |
20a2: 0f 93 push r16 |
20a4: 1f 93 push r17 |
20a6: 80 91 cd 01 lds r24, 0x01CD |
20aa: 28 2f mov r18, r24 |
20ac: 33 27 eor r19, r19 |
20ae: c9 01 movw r24, r18 |
20b0: 81 70 andi r24, 0x01 ; 1 |
20b2: 90 70 andi r25, 0x00 ; 0 |
20b4: 68 2f mov r22, r24 |
20b6: 88 23 and r24, r24 |
20b8: 91 f0 breq .+36 ; 0x20de <Menu+0x3e> |
20ba: 80 91 ce 01 lds r24, 0x01CE |
20be: 88 23 and r24, r24 |
20c0: 11 f0 breq .+4 ; 0x20c6 <Menu+0x26> |
20c2: 81 50 subi r24, 0x01 ; 1 |
20c4: 02 c0 rjmp .+4 ; 0x20ca <Menu+0x2a> |
20c6: 80 91 66 01 lds r24, 0x0166 |
20ca: 80 93 ce 01 sts 0x01CE, r24 |
20ce: e6 e1 ldi r30, 0x16 ; 22 |
20d0: f1 e0 ldi r31, 0x01 ; 1 |
20d2: 80 e2 ldi r24, 0x20 ; 32 |
20d4: 81 93 st Z+, r24 |
20d6: 91 e0 ldi r25, 0x01 ; 1 |
20d8: e6 36 cpi r30, 0x66 ; 102 |
20da: f9 07 cpc r31, r25 |
20dc: d9 f7 brne .-10 ; 0x20d4 <Menu+0x34> |
20de: a9 01 movw r20, r18 |
20e0: 42 70 andi r20, 0x02 ; 2 |
20e2: 50 70 andi r21, 0x00 ; 0 |
20e4: 21 ff sbrs r18, 1 |
20e6: 0d c0 rjmp .+26 ; 0x2102 <Menu+0x62> |
20e8: 80 91 ce 01 lds r24, 0x01CE |
20ec: 8f 5f subi r24, 0xFF ; 255 |
20ee: 80 93 ce 01 sts 0x01CE, r24 |
20f2: e6 e1 ldi r30, 0x16 ; 22 |
20f4: f1 e0 ldi r31, 0x01 ; 1 |
20f6: 80 e2 ldi r24, 0x20 ; 32 |
20f8: 81 93 st Z+, r24 |
20fa: 91 e0 ldi r25, 0x01 ; 1 |
20fc: e6 36 cpi r30, 0x66 ; 102 |
20fe: f9 07 cpc r31, r25 |
2100: d9 f7 brne .-10 ; 0x20f8 <Menu+0x58> |
2102: 66 23 and r22, r22 |
2104: 21 f0 breq .+8 ; 0x210e <Menu+0x6e> |
2106: 45 2b or r20, r21 |
2108: 11 f0 breq .+4 ; 0x210e <Menu+0x6e> |
210a: 10 92 ce 01 sts 0x01CE, r1 |
210e: 81 e1 ldi r24, 0x11 ; 17 |
2110: 80 93 cc 01 sts 0x01CC, r24 |
2114: 80 91 ce 01 lds r24, 0x01CE |
2118: 99 27 eor r25, r25 |
211a: 9f 93 push r25 |
211c: 8f 93 push r24 |
211e: 8c ea ldi r24, 0xAC ; 172 |
2120: 93 e0 ldi r25, 0x03 ; 3 |
2122: 9f 93 push r25 |
2124: 8f 93 push r24 |
2126: e1 e0 ldi r30, 0x01 ; 1 |
2128: fe 2e mov r15, r30 |
212a: ff 92 push r15 |
212c: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
2130: 00 91 ce 01 lds r16, 0x01CE |
2134: 0f 90 pop r0 |
2136: 0f 90 pop r0 |
2138: 0f 90 pop r0 |
213a: 0f 90 pop r0 |
213c: 0f 90 pop r0 |
213e: 05 30 cpi r16, 0x05 ; 5 |
2140: 09 f4 brne .+2 ; 0x2144 <Menu+0xa4> |
2142: d7 c1 rjmp .+942 ; 0x24f2 <Menu+0x452> |
2144: 06 30 cpi r16, 0x06 ; 6 |
2146: 90 f4 brcc .+36 ; 0x216c <Menu+0xcc> |
2148: 02 30 cpi r16, 0x02 ; 2 |
214a: 09 f4 brne .+2 ; 0x214e <Menu+0xae> |
214c: b8 c0 rjmp .+368 ; 0x22be <Menu+0x21e> |
214e: 03 30 cpi r16, 0x03 ; 3 |
2150: 30 f4 brcc .+12 ; 0x215e <Menu+0xbe> |
2152: 00 23 and r16, r16 |
2154: f1 f0 breq .+60 ; 0x2192 <Menu+0xf2> |
2156: 01 30 cpi r16, 0x01 ; 1 |
2158: 09 f0 breq .+2 ; 0x215c <Menu+0xbc> |
215a: 5b c3 rjmp .+1718 ; 0x2812 <Menu+0x772> |
215c: 4d c0 rjmp .+154 ; 0x21f8 <Menu+0x158> |
215e: 03 30 cpi r16, 0x03 ; 3 |
2160: 09 f4 brne .+2 ; 0x2164 <Menu+0xc4> |
2162: 02 c1 rjmp .+516 ; 0x2368 <Menu+0x2c8> |
2164: 04 30 cpi r16, 0x04 ; 4 |
2166: 09 f0 breq .+2 ; 0x216a <Menu+0xca> |
2168: 54 c3 rjmp .+1704 ; 0x2812 <Menu+0x772> |
216a: 4b c1 rjmp .+662 ; 0x2402 <Menu+0x362> |
216c: 08 30 cpi r16, 0x08 ; 8 |
216e: 09 f4 brne .+2 ; 0x2172 <Menu+0xd2> |
2170: 98 c2 rjmp .+1328 ; 0x26a2 <Menu+0x602> |
2172: 09 30 cpi r16, 0x09 ; 9 |
2174: 38 f4 brcc .+14 ; 0x2184 <Menu+0xe4> |
2176: 06 30 cpi r16, 0x06 ; 6 |
2178: 09 f4 brne .+2 ; 0x217c <Menu+0xdc> |
217a: 11 c2 rjmp .+1058 ; 0x259e <Menu+0x4fe> |
217c: 07 30 cpi r16, 0x07 ; 7 |
217e: 09 f0 breq .+2 ; 0x2182 <Menu+0xe2> |
2180: 48 c3 rjmp .+1680 ; 0x2812 <Menu+0x772> |
2182: 6c c2 rjmp .+1240 ; 0x265c <Menu+0x5bc> |
2184: 09 30 cpi r16, 0x09 ; 9 |
2186: 09 f4 brne .+2 ; 0x218a <Menu+0xea> |
2188: c9 c2 rjmp .+1426 ; 0x271c <Menu+0x67c> |
218a: 0a 30 cpi r16, 0x0A ; 10 |
218c: 09 f0 breq .+2 ; 0x2190 <Menu+0xf0> |
218e: 41 c3 rjmp .+1666 ; 0x2812 <Menu+0x772> |
2190: 03 c3 rjmp .+1542 ; 0x2798 <Menu+0x6f8> |
2192: 10 92 cc 01 sts 0x01CC, r1 |
2196: 8a e9 ldi r24, 0x9A ; 154 |
2198: 93 e0 ldi r25, 0x03 ; 3 |
219a: 9f 93 push r25 |
219c: 8f 93 push r24 |
219e: ff 92 push r15 |
21a0: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
21a4: 84 e1 ldi r24, 0x14 ; 20 |
21a6: 80 93 cc 01 sts 0x01CC, r24 |
21aa: 8c e3 ldi r24, 0x3C ; 60 |
21ac: 90 e0 ldi r25, 0x00 ; 0 |
21ae: 9f 93 push r25 |
21b0: 8f 93 push r24 |
21b2: 1f 92 push r1 |
21b4: 1f 92 push r1 |
21b6: 83 e9 ldi r24, 0x93 ; 147 |
21b8: 93 e0 ldi r25, 0x03 ; 3 |
21ba: 9f 93 push r25 |
21bc: 8f 93 push r24 |
21be: ff 92 push r15 |
21c0: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
21c4: 88 e2 ldi r24, 0x28 ; 40 |
21c6: 80 93 cc 01 sts 0x01CC, r24 |
21ca: 0e 94 f8 01 call 0x3f0 ; 0x3f0 <GetActiveParamSetNumber> |
21ce: 99 27 eor r25, r25 |
21d0: 9f 93 push r25 |
21d2: 8f 93 push r24 |
21d4: 86 e8 ldi r24, 0x86 ; 134 |
21d6: 93 e0 ldi r25, 0x03 ; 3 |
21d8: 9f 93 push r25 |
21da: 8f 93 push r24 |
21dc: ff 92 push r15 |
21de: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
21e2: 8c e3 ldi r24, 0x3C ; 60 |
21e4: 80 93 cc 01 sts 0x01CC, r24 |
21e8: 86 e7 ldi r24, 0x76 ; 118 |
21ea: 93 e0 ldi r25, 0x03 ; 3 |
21ec: 9f 93 push r25 |
21ee: 8f 93 push r24 |
21f0: ff 92 push r15 |
21f2: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
21f6: 8e c2 rjmp .+1308 ; 0x2714 <Menu+0x674> |
21f8: 80 91 75 05 lds r24, 0x0575 |
21fc: 80 ff sbrs r24, 0 |
21fe: 47 c0 rjmp .+142 ; 0x228e <Menu+0x1ee> |
2200: 10 92 cc 01 sts 0x01CC, r1 |
2204: 80 91 2f 02 lds r24, 0x022F |
2208: 90 91 30 02 lds r25, 0x0230 |
220c: 9f 93 push r25 |
220e: 8f 93 push r24 |
2210: 87 e6 ldi r24, 0x67 ; 103 |
2212: 93 e0 ldi r25, 0x03 ; 3 |
2214: 9f 93 push r25 |
2216: 8f 93 push r24 |
2218: 0f 93 push r16 |
221a: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
221e: 84 e1 ldi r24, 0x14 ; 20 |
2220: 80 93 cc 01 sts 0x01CC, r24 |
2224: 80 91 31 02 lds r24, 0x0231 |
2228: 90 91 32 02 lds r25, 0x0232 |
222c: 9f 93 push r25 |
222e: 8f 93 push r24 |
2230: 88 e5 ldi r24, 0x58 ; 88 |
2232: 93 e0 ldi r25, 0x03 ; 3 |
2234: 9f 93 push r25 |
2236: 8f 93 push r24 |
2238: 0f 93 push r16 |
223a: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
223e: 88 e2 ldi r24, 0x28 ; 40 |
2240: 80 93 cc 01 sts 0x01CC, r24 |
2244: 80 91 0a 01 lds r24, 0x010A |
2248: 90 91 0b 01 lds r25, 0x010B |
224c: 9f 93 push r25 |
224e: 8f 93 push r24 |
2250: 89 e4 ldi r24, 0x49 ; 73 |
2252: 93 e0 ldi r25, 0x03 ; 3 |
2254: 9f 93 push r25 |
2256: 8f 93 push r24 |
2258: 0f 93 push r16 |
225a: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
225e: 8c e3 ldi r24, 0x3C ; 60 |
2260: 80 93 cc 01 sts 0x01CC, r24 |
2264: 80 91 34 05 lds r24, 0x0534 |
2268: 99 27 eor r25, r25 |
226a: 9f 93 push r25 |
226c: 8f 93 push r24 |
226e: 8a e3 ldi r24, 0x3A ; 58 |
2270: 93 e0 ldi r25, 0x03 ; 3 |
2272: 9f 93 push r25 |
2274: 8f 93 push r24 |
2276: 0f 93 push r16 |
2278: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
227c: 8d b7 in r24, 0x3d ; 61 |
227e: 9e b7 in r25, 0x3e ; 62 |
2280: 44 96 adiw r24, 0x14 ; 20 |
2282: 0f b6 in r0, 0x3f ; 63 |
2284: f8 94 cli |
2286: 9e bf out 0x3e, r25 ; 62 |
2288: 0f be out 0x3f, r0 ; 63 |
228a: 8d bf out 0x3d, r24 ; 61 |
228c: c7 c2 rjmp .+1422 ; 0x281c <Menu+0x77c> |
228e: 84 e1 ldi r24, 0x14 ; 20 |
2290: 80 93 cc 01 sts 0x01CC, r24 |
2294: 83 e3 ldi r24, 0x33 ; 51 |
2296: 93 e0 ldi r25, 0x03 ; 3 |
2298: 9f 93 push r25 |
229a: 8f 93 push r24 |
229c: 0f 93 push r16 |
229e: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
22a2: 88 e2 ldi r24, 0x28 ; 40 |
22a4: 80 93 cc 01 sts 0x01CC, r24 |
22a8: 85 e2 ldi r24, 0x25 ; 37 |
22aa: 93 e0 ldi r25, 0x03 ; 3 |
22ac: 9f 93 push r25 |
22ae: 8f 93 push r24 |
22b0: 0f 93 push r16 |
22b2: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
22b6: 8d b7 in r24, 0x3d ; 61 |
22b8: 9e b7 in r25, 0x3e ; 62 |
22ba: 06 96 adiw r24, 0x06 ; 6 |
22bc: e2 cf rjmp .-60 ; 0x2282 <Menu+0x1e2> |
22be: 10 92 cc 01 sts 0x01CC, r1 |
22c2: 8b e1 ldi r24, 0x1B ; 27 |
22c4: 93 e0 ldi r25, 0x03 ; 3 |
22c6: 9f 93 push r25 |
22c8: 8f 93 push r24 |
22ca: ff 92 push r15 |
22cc: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
22d0: 84 e1 ldi r24, 0x14 ; 20 |
22d2: 80 93 cc 01 sts 0x01CC, r24 |
22d6: 60 91 e7 01 lds r22, 0x01E7 |
22da: 70 91 e8 01 lds r23, 0x01E8 |
22de: 80 91 e9 01 lds r24, 0x01E9 |
22e2: 90 91 ea 01 lds r25, 0x01EA |
22e6: 20 e0 ldi r18, 0x00 ; 0 |
22e8: 34 e0 ldi r19, 0x04 ; 4 |
22ea: 40 e0 ldi r20, 0x00 ; 0 |
22ec: 50 e0 ldi r21, 0x00 ; 0 |
22ee: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
22f2: 5f 93 push r21 |
22f4: 4f 93 push r20 |
22f6: 3f 93 push r19 |
22f8: 2f 93 push r18 |
22fa: 8c e0 ldi r24, 0x0C ; 12 |
22fc: 93 e0 ldi r25, 0x03 ; 3 |
22fe: 9f 93 push r25 |
2300: 8f 93 push r24 |
2302: ff 92 push r15 |
2304: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
2308: 88 e2 ldi r24, 0x28 ; 40 |
230a: 80 93 cc 01 sts 0x01CC, r24 |
230e: 60 91 ef 01 lds r22, 0x01EF |
2312: 70 91 f0 01 lds r23, 0x01F0 |
2316: 80 91 f1 01 lds r24, 0x01F1 |
231a: 90 91 f2 01 lds r25, 0x01F2 |
231e: 20 e0 ldi r18, 0x00 ; 0 |
2320: 34 e0 ldi r19, 0x04 ; 4 |
2322: 40 e0 ldi r20, 0x00 ; 0 |
2324: 50 e0 ldi r21, 0x00 ; 0 |
2326: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
232a: 5f 93 push r21 |
232c: 4f 93 push r20 |
232e: 3f 93 push r19 |
2330: 2f 93 push r18 |
2332: 8d ef ldi r24, 0xFD ; 253 |
2334: 92 e0 ldi r25, 0x02 ; 2 |
2336: 9f 93 push r25 |
2338: 8f 93 push r24 |
233a: ff 92 push r15 |
233c: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
2340: 8c e3 ldi r24, 0x3C ; 60 |
2342: 80 93 cc 01 sts 0x01CC, r24 |
2346: 80 91 17 02 lds r24, 0x0217 |
234a: 90 91 18 02 lds r25, 0x0218 |
234e: 9f 93 push r25 |
2350: 8f 93 push r24 |
2352: 8e ee ldi r24, 0xEE ; 238 |
2354: 92 e0 ldi r25, 0x02 ; 2 |
2356: 9f 93 push r25 |
2358: 8f 93 push r24 |
235a: ff 92 push r15 |
235c: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
2360: 8d b7 in r24, 0x3d ; 61 |
2362: 9e b7 in r25, 0x3e ; 62 |
2364: 46 96 adiw r24, 0x16 ; 22 |
2366: 8d cf rjmp .-230 ; 0x2282 <Menu+0x1e2> |
2368: 10 92 cc 01 sts 0x01CC, r1 |
236c: 80 91 45 05 lds r24, 0x0545 |
2370: 90 91 46 05 lds r25, 0x0546 |
2374: 20 91 43 05 lds r18, 0x0543 |
2378: 30 91 44 05 lds r19, 0x0544 |
237c: 9f 93 push r25 |
237e: 8f 93 push r24 |
2380: 3f 93 push r19 |
2382: 2f 93 push r18 |
2384: 8e ed ldi r24, 0xDE ; 222 |
2386: 92 e0 ldi r25, 0x02 ; 2 |
2388: 9f 93 push r25 |
238a: 8f 93 push r24 |
238c: ff 92 push r15 |
238e: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
2392: 84 e1 ldi r24, 0x14 ; 20 |
2394: 80 93 cc 01 sts 0x01CC, r24 |
2398: 80 91 49 05 lds r24, 0x0549 |
239c: 90 91 4a 05 lds r25, 0x054A |
23a0: 20 91 47 05 lds r18, 0x0547 |
23a4: 30 91 48 05 lds r19, 0x0548 |
23a8: 9f 93 push r25 |
23aa: 8f 93 push r24 |
23ac: 3f 93 push r19 |
23ae: 2f 93 push r18 |
23b0: 8e ec ldi r24, 0xCE ; 206 |
23b2: 92 e0 ldi r25, 0x02 ; 2 |
23b4: 9f 93 push r25 |
23b6: 8f 93 push r24 |
23b8: ff 92 push r15 |
23ba: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
23be: 88 e2 ldi r24, 0x28 ; 40 |
23c0: 80 93 cc 01 sts 0x01CC, r24 |
23c4: 80 91 4d 05 lds r24, 0x054D |
23c8: 90 91 4e 05 lds r25, 0x054E |
23cc: 20 91 4b 05 lds r18, 0x054B |
23d0: 30 91 4c 05 lds r19, 0x054C |
23d4: 9f 93 push r25 |
23d6: 8f 93 push r24 |
23d8: 3f 93 push r19 |
23da: 2f 93 push r18 |
23dc: 8e eb ldi r24, 0xBE ; 190 |
23de: 92 e0 ldi r25, 0x02 ; 2 |
23e0: 9f 93 push r25 |
23e2: 8f 93 push r24 |
23e4: ff 92 push r15 |
23e6: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
23ea: 8c e3 ldi r24, 0x3C ; 60 |
23ec: 80 93 cc 01 sts 0x01CC, r24 |
23f0: 80 91 4f 05 lds r24, 0x054F |
23f4: 90 91 50 05 lds r25, 0x0550 |
23f8: 9f 93 push r25 |
23fa: 8f 93 push r24 |
23fc: 8e ea ldi r24, 0xAE ; 174 |
23fe: 92 e0 ldi r25, 0x02 ; 2 |
2400: 6f c0 rjmp .+222 ; 0x24e0 <Menu+0x440> |
2402: 10 92 cc 01 sts 0x01CC, r1 |
2406: e0 91 6e 05 lds r30, 0x056E |
240a: ff 27 eor r31, r31 |
240c: ee 0f add r30, r30 |
240e: ff 1f adc r31, r31 |
2410: ef 5b subi r30, 0xBF ; 191 |
2412: fa 4f sbci r31, 0xFA ; 250 |
2414: 20 81 ld r18, Z |
2416: 31 81 ldd r19, Z+1 ; 0x01 |
2418: e0 91 6d 05 lds r30, 0x056D |
241c: ff 27 eor r31, r31 |
241e: ee 0f add r30, r30 |
2420: ff 1f adc r31, r31 |
2422: ef 5b subi r30, 0xBF ; 191 |
2424: fa 4f sbci r31, 0xFA ; 250 |
2426: 80 81 ld r24, Z |
2428: 91 81 ldd r25, Z+1 ; 0x01 |
242a: 3f 93 push r19 |
242c: 2f 93 push r18 |
242e: 9f 93 push r25 |
2430: 8f 93 push r24 |
2432: 8e e9 ldi r24, 0x9E ; 158 |
2434: 92 e0 ldi r25, 0x02 ; 2 |
2436: 9f 93 push r25 |
2438: 8f 93 push r24 |
243a: ff 92 push r15 |
243c: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
2440: 84 e1 ldi r24, 0x14 ; 20 |
2442: 80 93 cc 01 sts 0x01CC, r24 |
2446: e0 91 70 05 lds r30, 0x0570 |
244a: ff 27 eor r31, r31 |
244c: ee 0f add r30, r30 |
244e: ff 1f adc r31, r31 |
2450: ef 5b subi r30, 0xBF ; 191 |
2452: fa 4f sbci r31, 0xFA ; 250 |
2454: 20 81 ld r18, Z |
2456: 31 81 ldd r19, Z+1 ; 0x01 |
2458: e0 91 6f 05 lds r30, 0x056F |
245c: ff 27 eor r31, r31 |
245e: ee 0f add r30, r30 |
2460: ff 1f adc r31, r31 |
2462: ef 5b subi r30, 0xBF ; 191 |
2464: fa 4f sbci r31, 0xFA ; 250 |
2466: 80 81 ld r24, Z |
2468: 91 81 ldd r25, Z+1 ; 0x01 |
246a: 3f 93 push r19 |
246c: 2f 93 push r18 |
246e: 9f 93 push r25 |
2470: 8f 93 push r24 |
2472: 8e e8 ldi r24, 0x8E ; 142 |
2474: 92 e0 ldi r25, 0x02 ; 2 |
2476: 9f 93 push r25 |
2478: 8f 93 push r24 |
247a: ff 92 push r15 |
247c: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
2480: 88 e2 ldi r24, 0x28 ; 40 |
2482: 80 93 cc 01 sts 0x01CC, r24 |
2486: e0 91 72 05 lds r30, 0x0572 |
248a: ff 27 eor r31, r31 |
248c: ee 0f add r30, r30 |
248e: ff 1f adc r31, r31 |
2490: ef 5b subi r30, 0xBF ; 191 |
2492: fa 4f sbci r31, 0xFA ; 250 |
2494: 20 81 ld r18, Z |
2496: 31 81 ldd r19, Z+1 ; 0x01 |
2498: e0 91 71 05 lds r30, 0x0571 |
249c: ff 27 eor r31, r31 |
249e: ee 0f add r30, r30 |
24a0: ff 1f adc r31, r31 |
24a2: ef 5b subi r30, 0xBF ; 191 |
24a4: fa 4f sbci r31, 0xFA ; 250 |
24a6: 80 81 ld r24, Z |
24a8: 91 81 ldd r25, Z+1 ; 0x01 |
24aa: 3f 93 push r19 |
24ac: 2f 93 push r18 |
24ae: 9f 93 push r25 |
24b0: 8f 93 push r24 |
24b2: 8e e7 ldi r24, 0x7E ; 126 |
24b4: 92 e0 ldi r25, 0x02 ; 2 |
24b6: 9f 93 push r25 |
24b8: 8f 93 push r24 |
24ba: ff 92 push r15 |
24bc: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
24c0: 8c e3 ldi r24, 0x3C ; 60 |
24c2: 80 93 cc 01 sts 0x01CC, r24 |
24c6: e0 91 73 05 lds r30, 0x0573 |
24ca: ff 27 eor r31, r31 |
24cc: ee 0f add r30, r30 |
24ce: ff 1f adc r31, r31 |
24d0: ef 5b subi r30, 0xBF ; 191 |
24d2: fa 4f sbci r31, 0xFA ; 250 |
24d4: 80 81 ld r24, Z |
24d6: 91 81 ldd r25, Z+1 ; 0x01 |
24d8: 9f 93 push r25 |
24da: 8f 93 push r24 |
24dc: 8e e6 ldi r24, 0x6E ; 110 |
24de: 92 e0 ldi r25, 0x02 ; 2 |
24e0: 9f 93 push r25 |
24e2: 8f 93 push r24 |
24e4: ff 92 push r15 |
24e6: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
24ea: 8d b7 in r24, 0x3d ; 61 |
24ec: 9e b7 in r25, 0x3e ; 62 |
24ee: 4a 96 adiw r24, 0x1a ; 26 |
24f0: c8 ce rjmp .-624 ; 0x2282 <Menu+0x1e2> |
24f2: 10 92 cc 01 sts 0x01CC, r1 |
24f6: 80 e6 ldi r24, 0x60 ; 96 |
24f8: 92 e0 ldi r25, 0x02 ; 2 |
24fa: 9f 93 push r25 |
24fc: 8f 93 push r24 |
24fe: ff 92 push r15 |
2500: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
2504: 84 e1 ldi r24, 0x14 ; 20 |
2506: 80 93 cc 01 sts 0x01CC, r24 |
250a: 20 91 d7 01 lds r18, 0x01D7 |
250e: 30 91 d8 01 lds r19, 0x01D8 |
2512: 80 91 b2 01 lds r24, 0x01B2 |
2516: 90 91 b3 01 lds r25, 0x01B3 |
251a: 60 91 be 01 lds r22, 0x01BE |
251e: 3f 93 push r19 |
2520: 2f 93 push r18 |
2522: 77 27 eor r23, r23 |
2524: 0e 94 d3 2c call 0x59a6 ; 0x59a6 <__divmodhi4> |
2528: 7f 93 push r23 |
252a: 6f 93 push r22 |
252c: 81 e5 ldi r24, 0x51 ; 81 |
252e: 92 e0 ldi r25, 0x02 ; 2 |
2530: 9f 93 push r25 |
2532: 8f 93 push r24 |
2534: ff 92 push r15 |
2536: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
253a: 88 e2 ldi r24, 0x28 ; 40 |
253c: 80 93 cc 01 sts 0x01CC, r24 |
2540: 20 91 d9 01 lds r18, 0x01D9 |
2544: 30 91 da 01 lds r19, 0x01DA |
2548: 80 91 b4 01 lds r24, 0x01B4 |
254c: 90 91 b5 01 lds r25, 0x01B5 |
2550: 60 91 bf 01 lds r22, 0x01BF |
2554: 3f 93 push r19 |
2556: 2f 93 push r18 |
2558: 77 27 eor r23, r23 |
255a: 0e 94 d3 2c call 0x59a6 ; 0x59a6 <__divmodhi4> |
255e: 7f 93 push r23 |
2560: 6f 93 push r22 |
2562: 82 e4 ldi r24, 0x42 ; 66 |
2564: 92 e0 ldi r25, 0x02 ; 2 |
2566: 9f 93 push r25 |
2568: 8f 93 push r24 |
256a: ff 92 push r15 |
256c: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
2570: 8c e3 ldi r24, 0x3C ; 60 |
2572: 80 93 cc 01 sts 0x01CC, r24 |
2576: 20 91 db 01 lds r18, 0x01DB |
257a: 30 91 dc 01 lds r19, 0x01DC |
257e: 80 91 b6 01 lds r24, 0x01B6 |
2582: 90 91 b7 01 lds r25, 0x01B7 |
2586: 60 91 c0 01 lds r22, 0x01C0 |
258a: 3f 93 push r19 |
258c: 2f 93 push r18 |
258e: 77 27 eor r23, r23 |
2590: 0e 94 d3 2c call 0x59a6 ; 0x59a6 <__divmodhi4> |
2594: 7f 93 push r23 |
2596: 6f 93 push r22 |
2598: 83 e3 ldi r24, 0x33 ; 51 |
259a: 92 e0 ldi r25, 0x02 ; 2 |
259c: 56 c0 rjmp .+172 ; 0x264a <Menu+0x5aa> |
259e: 10 92 cc 01 sts 0x01CC, r1 |
25a2: 86 e2 ldi r24, 0x26 ; 38 |
25a4: 92 e0 ldi r25, 0x02 ; 2 |
25a6: 9f 93 push r25 |
25a8: 8f 93 push r24 |
25aa: ff 92 push r15 |
25ac: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
25b0: 84 e1 ldi r24, 0x14 ; 20 |
25b2: 80 93 cc 01 sts 0x01CC, r24 |
25b6: 20 91 dd 01 lds r18, 0x01DD |
25ba: 30 91 de 01 lds r19, 0x01DE |
25be: 80 91 ba 01 lds r24, 0x01BA |
25c2: 90 91 bb 01 lds r25, 0x01BB |
25c6: 60 91 c1 01 lds r22, 0x01C1 |
25ca: 3f 93 push r19 |
25cc: 2f 93 push r18 |
25ce: 77 27 eor r23, r23 |
25d0: 0e 94 d3 2c call 0x59a6 ; 0x59a6 <__divmodhi4> |
25d4: 7f 93 push r23 |
25d6: 6f 93 push r22 |
25d8: 87 e1 ldi r24, 0x17 ; 23 |
25da: 92 e0 ldi r25, 0x02 ; 2 |
25dc: 9f 93 push r25 |
25de: 8f 93 push r24 |
25e0: ff 92 push r15 |
25e2: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
25e6: 88 e2 ldi r24, 0x28 ; 40 |
25e8: 80 93 cc 01 sts 0x01CC, r24 |
25ec: 20 91 df 01 lds r18, 0x01DF |
25f0: 30 91 e0 01 lds r19, 0x01E0 |
25f4: 80 91 b8 01 lds r24, 0x01B8 |
25f8: 90 91 b9 01 lds r25, 0x01B9 |
25fc: 60 91 c2 01 lds r22, 0x01C2 |
2600: 3f 93 push r19 |
2602: 2f 93 push r18 |
2604: 77 27 eor r23, r23 |
2606: 0e 94 d3 2c call 0x59a6 ; 0x59a6 <__divmodhi4> |
260a: 7f 93 push r23 |
260c: 6f 93 push r22 |
260e: 88 e0 ldi r24, 0x08 ; 8 |
2610: 92 e0 ldi r25, 0x02 ; 2 |
2612: 9f 93 push r25 |
2614: 8f 93 push r24 |
2616: ff 92 push r15 |
2618: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
261c: 8c e3 ldi r24, 0x3C ; 60 |
261e: 80 93 cc 01 sts 0x01CC, r24 |
2622: 60 91 e1 01 lds r22, 0x01E1 |
2626: 70 91 e2 01 lds r23, 0x01E2 |
262a: 80 91 e3 01 lds r24, 0x01E3 |
262e: 90 91 e4 01 lds r25, 0x01E4 |
2632: 00 91 29 05 lds r16, 0x0529 |
2636: 10 91 2a 05 lds r17, 0x052A |
263a: 0e 94 67 2b call 0x56ce ; 0x56ce <__fixsfsi> |
263e: 7f 93 push r23 |
2640: 6f 93 push r22 |
2642: 1f 93 push r17 |
2644: 0f 93 push r16 |
2646: 89 ef ldi r24, 0xF9 ; 249 |
2648: 91 e0 ldi r25, 0x01 ; 1 |
264a: 9f 93 push r25 |
264c: 8f 93 push r24 |
264e: ff 92 push r15 |
2650: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
2654: 8d b7 in r24, 0x3d ; 61 |
2656: 9e b7 in r25, 0x3e ; 62 |
2658: 48 96 adiw r24, 0x18 ; 24 |
265a: 13 ce rjmp .-986 ; 0x2282 <Menu+0x1e2> |
265c: 84 e1 ldi r24, 0x14 ; 20 |
265e: 80 93 cc 01 sts 0x01CC, r24 |
2662: 80 91 04 01 lds r24, 0x0104 |
2666: 90 91 05 01 lds r25, 0x0105 |
266a: 9f 93 push r25 |
266c: 8f 93 push r24 |
266e: 8a ee ldi r24, 0xEA ; 234 |
2670: 91 e0 ldi r25, 0x01 ; 1 |
2672: 9f 93 push r25 |
2674: 8f 93 push r24 |
2676: ff 92 push r15 |
2678: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
267c: 88 e2 ldi r24, 0x28 ; 40 |
267e: 80 93 cc 01 sts 0x01CC, r24 |
2682: 80 91 27 02 lds r24, 0x0227 |
2686: 99 27 eor r25, r25 |
2688: 9f 93 push r25 |
268a: 8f 93 push r24 |
268c: 8b ed ldi r24, 0xDB ; 219 |
268e: 91 e0 ldi r25, 0x01 ; 1 |
2690: 9f 93 push r25 |
2692: 8f 93 push r24 |
2694: ff 92 push r15 |
2696: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
269a: 8d b7 in r24, 0x3d ; 61 |
269c: 9e b7 in r25, 0x3e ; 62 |
269e: 0a 96 adiw r24, 0x0a ; 10 |
26a0: f0 cd rjmp .-1056 ; 0x2282 <Menu+0x1e2> |
26a2: 10 92 cc 01 sts 0x01CC, r1 |
26a6: 8c ec ldi r24, 0xCC ; 204 |
26a8: 91 e0 ldi r25, 0x01 ; 1 |
26aa: 9f 93 push r25 |
26ac: 8f 93 push r24 |
26ae: ff 92 push r15 |
26b0: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
26b4: 84 e1 ldi r24, 0x14 ; 20 |
26b6: 80 93 cc 01 sts 0x01CC, r24 |
26ba: 80 91 1b 02 lds r24, 0x021B |
26be: 90 91 1c 02 lds r25, 0x021C |
26c2: 9f 93 push r25 |
26c4: 8f 93 push r24 |
26c6: 8d eb ldi r24, 0xBD ; 189 |
26c8: 91 e0 ldi r25, 0x01 ; 1 |
26ca: 9f 93 push r25 |
26cc: 8f 93 push r24 |
26ce: ff 92 push r15 |
26d0: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
26d4: 88 e2 ldi r24, 0x28 ; 40 |
26d6: 80 93 cc 01 sts 0x01CC, r24 |
26da: 80 91 17 02 lds r24, 0x0217 |
26de: 90 91 18 02 lds r25, 0x0218 |
26e2: 9f 93 push r25 |
26e4: 8f 93 push r24 |
26e6: 8e ea ldi r24, 0xAE ; 174 |
26e8: 91 e0 ldi r25, 0x01 ; 1 |
26ea: 9f 93 push r25 |
26ec: 8f 93 push r24 |
26ee: ff 92 push r15 |
26f0: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
26f4: 8c e3 ldi r24, 0x3C ; 60 |
26f6: 80 93 cc 01 sts 0x01CC, r24 |
26fa: 80 91 19 02 lds r24, 0x0219 |
26fe: 90 91 1a 02 lds r25, 0x021A |
2702: 9f 93 push r25 |
2704: 8f 93 push r24 |
2706: 8f e9 ldi r24, 0x9F ; 159 |
2708: 91 e0 ldi r25, 0x01 ; 1 |
270a: 9f 93 push r25 |
270c: 8f 93 push r24 |
270e: ff 92 push r15 |
2710: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
2714: 8d b7 in r24, 0x3d ; 61 |
2716: 9e b7 in r25, 0x3e ; 62 |
2718: 42 96 adiw r24, 0x12 ; 18 |
271a: b3 cd rjmp .-1178 ; 0x2282 <Menu+0x1e2> |
271c: 10 92 cc 01 sts 0x01CC, r1 |
2720: 80 91 1f 02 lds r24, 0x021F |
2724: 90 91 20 02 lds r25, 0x0220 |
2728: 9f 93 push r25 |
272a: 8f 93 push r24 |
272c: 83 e9 ldi r24, 0x93 ; 147 |
272e: 91 e0 ldi r25, 0x01 ; 1 |
2730: 9f 93 push r25 |
2732: 8f 93 push r24 |
2734: ff 92 push r15 |
2736: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
273a: 84 e1 ldi r24, 0x14 ; 20 |
273c: 80 93 cc 01 sts 0x01CC, r24 |
2740: 80 91 21 02 lds r24, 0x0221 |
2744: 90 91 22 02 lds r25, 0x0222 |
2748: 9f 93 push r25 |
274a: 8f 93 push r24 |
274c: 87 e8 ldi r24, 0x87 ; 135 |
274e: 91 e0 ldi r25, 0x01 ; 1 |
2750: 9f 93 push r25 |
2752: 8f 93 push r24 |
2754: ff 92 push r15 |
2756: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
275a: 88 e2 ldi r24, 0x28 ; 40 |
275c: 80 93 cc 01 sts 0x01CC, r24 |
2760: 80 91 23 02 lds r24, 0x0223 |
2764: 90 91 24 02 lds r25, 0x0224 |
2768: 9f 93 push r25 |
276a: 8f 93 push r24 |
276c: 8b e7 ldi r24, 0x7B ; 123 |
276e: 91 e0 ldi r25, 0x01 ; 1 |
2770: 9f 93 push r25 |
2772: 8f 93 push r24 |
2774: ff 92 push r15 |
2776: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
277a: 8c e3 ldi r24, 0x3C ; 60 |
277c: 80 93 cc 01 sts 0x01CC, r24 |
2780: 80 91 25 02 lds r24, 0x0225 |
2784: 90 91 26 02 lds r25, 0x0226 |
2788: 9f 93 push r25 |
278a: 8f 93 push r24 |
278c: 8f e6 ldi r24, 0x6F ; 111 |
278e: 91 e0 ldi r25, 0x01 ; 1 |
2790: 9f 93 push r25 |
2792: 8f 93 push r24 |
2794: ff 92 push r15 |
2796: 70 cd rjmp .-1312 ; 0x2278 <Menu+0x1d8> |
2798: 10 92 cc 01 sts 0x01CC, r1 |
279c: 87 e6 ldi r24, 0x67 ; 103 |
279e: 91 e0 ldi r25, 0x01 ; 1 |
27a0: 9f 93 push r25 |
27a2: 8f 93 push r24 |
27a4: ff 92 push r15 |
27a6: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
27aa: 84 e1 ldi r24, 0x14 ; 20 |
27ac: 80 93 cc 01 sts 0x01CC, r24 |
27b0: 80 91 89 01 lds r24, 0x0189 |
27b4: 99 27 eor r25, r25 |
27b6: 9f 93 push r25 |
27b8: 8f 93 push r24 |
27ba: 89 e5 ldi r24, 0x59 ; 89 |
27bc: 91 e0 ldi r25, 0x01 ; 1 |
27be: 9f 93 push r25 |
27c0: 8f 93 push r24 |
27c2: ff 92 push r15 |
27c4: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
27c8: 88 e2 ldi r24, 0x28 ; 40 |
27ca: 80 93 cc 01 sts 0x01CC, r24 |
27ce: 80 91 ad 01 lds r24, 0x01AD |
27d2: 90 91 ae 01 lds r25, 0x01AE |
27d6: 9f 93 push r25 |
27d8: 8f 93 push r24 |
27da: 8b e4 ldi r24, 0x4B ; 75 |
27dc: 91 e0 ldi r25, 0x01 ; 1 |
27de: 9f 93 push r25 |
27e0: 8f 93 push r24 |
27e2: ff 92 push r15 |
27e4: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
27e8: 8c e3 ldi r24, 0x3C ; 60 |
27ea: 80 93 cc 01 sts 0x01CC, r24 |
27ee: 80 91 91 05 lds r24, 0x0591 |
27f2: 99 27 eor r25, r25 |
27f4: 9f 93 push r25 |
27f6: 8f 93 push r24 |
27f8: 80 91 90 05 lds r24, 0x0590 |
27fc: 99 27 eor r25, r25 |
27fe: 9f 93 push r25 |
2800: 8f 93 push r24 |
2802: 8d e3 ldi r24, 0x3D ; 61 |
2804: 91 e0 ldi r25, 0x01 ; 1 |
2806: 9f 93 push r25 |
2808: 8f 93 push r24 |
280a: ff 92 push r15 |
280c: 0e 94 c3 08 call 0x1186 ; 0x1186 <_printf_P> |
2810: 35 cd rjmp .-1430 ; 0x227c <Menu+0x1dc> |
2812: 01 50 subi r16, 0x01 ; 1 |
2814: 00 93 66 01 sts 0x0166, r16 |
2818: 10 92 ce 01 sts 0x01CE, r1 |
281c: 10 92 cd 01 sts 0x01CD, r1 |
2820: 1f 91 pop r17 |
2822: 0f 91 pop r16 |
2824: ff 90 pop r15 |
2826: 08 95 ret |
00002828 <i2c_init>: |
2828: 10 92 b9 00 sts 0x00B9, r1 |
282c: 8a e2 ldi r24, 0x2A ; 42 |
282e: 80 93 b8 00 sts 0x00B8, r24 |
2832: 08 95 ret |
00002834 <i2c_start>: |
2834: 85 ea ldi r24, 0xA5 ; 165 |
2836: 80 93 bc 00 sts 0x00BC, r24 |
283a: 80 e0 ldi r24, 0x00 ; 0 |
283c: 90 e0 ldi r25, 0x00 ; 0 |
283e: 08 95 ret |
00002840 <i2c_stop>: |
2840: 84 e9 ldi r24, 0x94 ; 148 |
2842: 80 93 bc 00 sts 0x00BC, r24 |
2846: 08 95 ret |
00002848 <i2c_write_byte>: |
2848: 10 92 b9 00 sts 0x00B9, r1 |
284c: 80 93 bb 00 sts 0x00BB, r24 |
2850: 85 e8 ldi r24, 0x85 ; 133 |
2852: 80 93 bc 00 sts 0x00BC, r24 |
2856: 80 e0 ldi r24, 0x00 ; 0 |
2858: 90 e0 ldi r25, 0x00 ; 0 |
285a: 08 95 ret |
0000285c <__vector_26>: |
285c: 1f 92 push r1 |
285e: 0f 92 push r0 |
2860: 0f b6 in r0, 0x3f ; 63 |
2862: 0f 92 push r0 |
2864: 11 24 eor r1, r1 |
2866: 8f 93 push r24 |
2868: 9f 93 push r25 |
286a: ef 93 push r30 |
286c: ff 93 push r31 |
286e: 80 91 cf 01 lds r24, 0x01CF |
2872: 8f 5f subi r24, 0xFF ; 255 |
2874: 80 93 cf 01 sts 0x01CF, r24 |
2878: 81 50 subi r24, 0x01 ; 1 |
287a: 83 30 cpi r24, 0x03 ; 3 |
287c: 09 f4 brne .+2 ; 0x2880 <__vector_26+0x24> |
287e: 42 c0 rjmp .+132 ; 0x2904 <__vector_26+0xa8> |
2880: 84 30 cpi r24, 0x04 ; 4 |
2882: 28 f4 brcc .+10 ; 0x288e <__vector_26+0x32> |
2884: 81 30 cpi r24, 0x01 ; 1 |
2886: a1 f0 breq .+40 ; 0x28b0 <__vector_26+0x54> |
2888: 82 30 cpi r24, 0x02 ; 2 |
288a: 70 f5 brcc .+92 ; 0x28e8 <__vector_26+0x8c> |
288c: 0c c0 rjmp .+24 ; 0x28a6 <__vector_26+0x4a> |
288e: 85 30 cpi r24, 0x05 ; 5 |
2890: 09 f4 brne .+2 ; 0x2894 <__vector_26+0x38> |
2892: 48 c0 rjmp .+144 ; 0x2924 <__vector_26+0xc8> |
2894: 85 30 cpi r24, 0x05 ; 5 |
2896: d8 f1 brcs .+118 ; 0x290e <__vector_26+0xb2> |
2898: 86 30 cpi r24, 0x06 ; 6 |
289a: 09 f4 brne .+2 ; 0x289e <__vector_26+0x42> |
289c: 4b c0 rjmp .+150 ; 0x2934 <__vector_26+0xd8> |
289e: 87 30 cpi r24, 0x07 ; 7 |
28a0: 09 f0 breq .+2 ; 0x28a4 <__vector_26+0x48> |
28a2: 71 c0 rjmp .+226 ; 0x2986 <__vector_26+0x12a> |
28a4: 5b c0 rjmp .+182 ; 0x295c <__vector_26+0x100> |
28a6: 80 91 d0 01 lds r24, 0x01D0 |
28aa: 88 0f add r24, r24 |
28ac: 8e 5a subi r24, 0xAE ; 174 |
28ae: 14 c0 rjmp .+40 ; 0x28d8 <__vector_26+0x7c> |
28b0: 80 91 d0 01 lds r24, 0x01D0 |
28b4: 8f 5f subi r24, 0xFF ; 255 |
28b6: 80 93 d0 01 sts 0x01D0, r24 |
28ba: 81 50 subi r24, 0x01 ; 1 |
28bc: 81 30 cpi r24, 0x01 ; 1 |
28be: 09 f4 brne .+2 ; 0x28c2 <__vector_26+0x66> |
28c0: 44 c0 rjmp .+136 ; 0x294a <__vector_26+0xee> |
28c2: 81 30 cpi r24, 0x01 ; 1 |
28c4: 38 f0 brcs .+14 ; 0x28d4 <__vector_26+0x78> |
28c6: 82 30 cpi r24, 0x02 ; 2 |
28c8: 09 f4 brne .+2 ; 0x28cc <__vector_26+0x70> |
28ca: 42 c0 rjmp .+132 ; 0x2950 <__vector_26+0xf4> |
28cc: 83 30 cpi r24, 0x03 ; 3 |
28ce: 09 f0 breq .+2 ; 0x28d2 <__vector_26+0x76> |
28d0: 5a c0 rjmp .+180 ; 0x2986 <__vector_26+0x12a> |
28d2: 41 c0 rjmp .+130 ; 0x2956 <__vector_26+0xfa> |
28d4: 80 91 96 02 lds r24, 0x0296 |
28d8: 10 92 b9 00 sts 0x00B9, r1 |
28dc: 80 93 bb 00 sts 0x00BB, r24 |
28e0: 85 e8 ldi r24, 0x85 ; 133 |
28e2: 80 93 bc 00 sts 0x00BC, r24 |
28e6: 4f c0 rjmp .+158 ; 0x2986 <__vector_26+0x12a> |
28e8: 84 e9 ldi r24, 0x94 ; 148 |
28ea: 80 93 bc 00 sts 0x00BC, r24 |
28ee: 80 91 d0 01 lds r24, 0x01D0 |
28f2: 84 30 cpi r24, 0x04 ; 4 |
28f4: 18 f4 brcc .+6 ; 0x28fc <__vector_26+0xa0> |
28f6: 10 92 cf 01 sts 0x01CF, r1 |
28fa: 02 c0 rjmp .+4 ; 0x2900 <__vector_26+0xa4> |
28fc: 10 92 d0 01 sts 0x01D0, r1 |
2900: 85 ea ldi r24, 0xA5 ; 165 |
2902: ef cf rjmp .-34 ; 0x28e2 <__vector_26+0x86> |
2904: 80 91 d1 01 lds r24, 0x01D1 |
2908: 88 0f add r24, r24 |
290a: 8d 5a subi r24, 0xAD ; 173 |
290c: e5 cf rjmp .-54 ; 0x28d8 <__vector_26+0x7c> |
290e: 80 91 d1 01 lds r24, 0x01D1 |
2912: 81 30 cpi r24, 0x01 ; 1 |
2914: d1 f0 breq .+52 ; 0x294a <__vector_26+0xee> |
2916: 81 30 cpi r24, 0x01 ; 1 |
2918: e8 f2 brcs .-70 ; 0x28d4 <__vector_26+0x78> |
291a: 82 30 cpi r24, 0x02 ; 2 |
291c: c9 f0 breq .+50 ; 0x2950 <__vector_26+0xf4> |
291e: 83 30 cpi r24, 0x03 ; 3 |
2920: 91 f5 brne .+100 ; 0x2986 <__vector_26+0x12a> |
2922: 19 c0 rjmp .+50 ; 0x2956 <__vector_26+0xfa> |
2924: 80 91 bb 00 lds r24, 0x00BB |
2928: e0 91 d1 01 lds r30, 0x01D1 |
292c: ff 27 eor r31, r31 |
292e: e7 5c subi r30, 0xC7 ; 199 |
2930: fa 4f sbci r31, 0xFA ; 250 |
2932: 80 83 st Z, r24 |
2934: 80 91 d1 01 lds r24, 0x01D1 |
2938: 81 30 cpi r24, 0x01 ; 1 |
293a: 39 f0 breq .+14 ; 0x294a <__vector_26+0xee> |
293c: 81 30 cpi r24, 0x01 ; 1 |
293e: 50 f2 brcs .-108 ; 0x28d4 <__vector_26+0x78> |
2940: 82 30 cpi r24, 0x02 ; 2 |
2942: 31 f0 breq .+12 ; 0x2950 <__vector_26+0xf4> |
2944: 83 30 cpi r24, 0x03 ; 3 |
2946: f9 f4 brne .+62 ; 0x2986 <__vector_26+0x12a> |
2948: 06 c0 rjmp .+12 ; 0x2956 <__vector_26+0xfa> |
294a: 80 91 97 02 lds r24, 0x0297 |
294e: c4 cf rjmp .-120 ; 0x28d8 <__vector_26+0x7c> |
2950: 80 91 9a 02 lds r24, 0x029A |
2954: c1 cf rjmp .-126 ; 0x28d8 <__vector_26+0x7c> |
2956: 80 91 a6 02 lds r24, 0x02A6 |
295a: be cf rjmp .-132 ; 0x28d8 <__vector_26+0x7c> |
295c: 80 91 d1 01 lds r24, 0x01D1 |
2960: 90 91 bb 00 lds r25, 0x00BB |
2964: e8 2f mov r30, r24 |
2966: ff 27 eor r31, r31 |
2968: e7 5c subi r30, 0xC7 ; 199 |
296a: fa 4f sbci r31, 0xFA ; 250 |
296c: 94 83 std Z+4, r25 ; 0x04 |
296e: 8f 5f subi r24, 0xFF ; 255 |
2970: 80 93 d1 01 sts 0x01D1, r24 |
2974: 84 30 cpi r24, 0x04 ; 4 |
2976: 10 f0 brcs .+4 ; 0x297c <__vector_26+0x120> |
2978: 10 92 d1 01 sts 0x01D1, r1 |
297c: 84 e9 ldi r24, 0x94 ; 148 |
297e: 80 93 bc 00 sts 0x00BC, r24 |
2982: 10 92 cf 01 sts 0x01CF, r1 |
2986: ff 91 pop r31 |
2988: ef 91 pop r30 |
298a: 9f 91 pop r25 |
298c: 8f 91 pop r24 |
298e: 0f 90 pop r0 |
2990: 0f be out 0x3f, r0 ; 63 |
2992: 0f 90 pop r0 |
2994: 1f 90 pop r1 |
2996: 18 95 reti |
00002998 <rc_sum_init>: |
2998: 83 ec ldi r24, 0xC3 ; 195 |
299a: 80 93 81 00 sts 0x0081, r24 |
299e: ef e6 ldi r30, 0x6F ; 111 |
29a0: f0 e0 ldi r31, 0x00 ; 0 |
29a2: 80 81 ld r24, Z |
29a4: 80 62 ori r24, 0x20 ; 32 |
29a6: 80 83 st Z, r24 |
29a8: 10 92 dc 01 sts 0x01DC, r1 |
29ac: 10 92 db 01 sts 0x01DB, r1 |
29b0: 10 92 da 01 sts 0x01DA, r1 |
29b4: 10 92 d9 01 sts 0x01D9, r1 |
29b8: 10 92 d8 01 sts 0x01D8, r1 |
29bc: 10 92 d7 01 sts 0x01D7, r1 |
29c0: 08 95 ret |
000029c2 <__vector_12>: |
29c2: 1f 92 push r1 |
29c4: 0f 92 push r0 |
29c6: 0f b6 in r0, 0x3f ; 63 |
29c8: 0f 92 push r0 |
29ca: 11 24 eor r1, r1 |
29cc: 0f 93 push r16 |
29ce: 1f 93 push r17 |
29d0: 2f 93 push r18 |
29d2: 3f 93 push r19 |
29d4: 4f 93 push r20 |
29d6: 5f 93 push r21 |
29d8: 6f 93 push r22 |
29da: 7f 93 push r23 |
29dc: 8f 93 push r24 |
29de: 9f 93 push r25 |
29e0: af 93 push r26 |
29e2: bf 93 push r27 |
29e4: cf 93 push r28 |
29e6: df 93 push r29 |
29e8: ef 93 push r30 |
29ea: ff 93 push r31 |
29ec: 20 91 86 00 lds r18, 0x0086 |
29f0: 30 91 87 00 lds r19, 0x0087 |
29f4: 80 91 d4 01 lds r24, 0x01D4 |
29f8: 90 91 d5 01 lds r25, 0x01D5 |
29fc: 28 1b sub r18, r24 |
29fe: 39 0b sbc r19, r25 |
2a00: 80 91 86 00 lds r24, 0x0086 |
2a04: 90 91 87 00 lds r25, 0x0087 |
2a08: 90 93 d5 01 sts 0x01D5, r25 |
2a0c: 80 93 d4 01 sts 0x01D4, r24 |
2a10: c9 01 movw r24, r18 |
2a12: 8d 5d subi r24, 0xDD ; 221 |
2a14: 95 40 sbci r25, 0x05 ; 5 |
2a16: 83 56 subi r24, 0x63 ; 99 |
2a18: 99 41 sbci r25, 0x19 ; 25 |
2a1a: 48 f4 brcc .+18 ; 0x2a2e <__vector_12+0x6c> |
2a1c: 81 e0 ldi r24, 0x01 ; 1 |
2a1e: 90 e0 ldi r25, 0x00 ; 0 |
2a20: 90 93 d3 01 sts 0x01D3, r25 |
2a24: 80 93 d2 01 sts 0x01D2, r24 |
2a28: 10 92 67 01 sts 0x0167, r1 |
2a2c: 54 c0 rjmp .+168 ; 0x2ad6 <__vector_12+0x114> |
2a2e: c0 91 d2 01 lds r28, 0x01D2 |
2a32: d0 91 d3 01 lds r29, 0x01D3 |
2a36: ca 30 cpi r28, 0x0A ; 10 |
2a38: d1 05 cpc r29, r1 |
2a3a: 0c f0 brlt .+2 ; 0x2a3e <__vector_12+0x7c> |
2a3c: 4c c0 rjmp .+152 ; 0x2ad6 <__vector_12+0x114> |
2a3e: c9 01 movw r24, r18 |
2a40: 8b 5f subi r24, 0xFB ; 251 |
2a42: 90 40 sbci r25, 0x00 ; 0 |
2a44: 84 5b subi r24, 0xB4 ; 180 |
2a46: 91 40 sbci r25, 0x01 ; 1 |
2a48: 08 f0 brcs .+2 ; 0x2a4c <__vector_12+0x8a> |
2a4a: 40 c0 rjmp .+128 ; 0x2acc <__vector_12+0x10a> |
2a4c: a9 01 movw r20, r18 |
2a4e: 42 5d subi r20, 0xD2 ; 210 |
2a50: 51 40 sbci r21, 0x01 ; 1 |
2a52: fe 01 movw r30, r28 |
2a54: ee 0f add r30, r30 |
2a56: ff 1f adc r31, r31 |
2a58: ef 5b subi r30, 0xBF ; 191 |
2a5a: fa 4f sbci r31, 0xFA ; 250 |
2a5c: 80 81 ld r24, Z |
2a5e: 91 81 ldd r25, Z+1 ; 0x01 |
2a60: fa 01 movw r30, r20 |
2a62: e8 1b sub r30, r24 |
2a64: f9 0b sbc r31, r25 |
2a66: cf 01 movw r24, r30 |
2a68: f7 ff sbrs r31, 7 |
2a6a: 03 c0 rjmp .+6 ; 0x2a72 <__vector_12+0xb0> |
2a6c: 90 95 com r25 |
2a6e: 81 95 neg r24 |
2a70: 9f 4f sbci r25, 0xFF ; 255 |
2a72: 06 97 sbiw r24, 0x06 ; 6 |
2a74: 4c f4 brge .+18 ; 0x2a88 <__vector_12+0xc6> |
2a76: 80 91 27 02 lds r24, 0x0227 |
2a7a: 88 3c cpi r24, 0xC8 ; 200 |
2a7c: 28 f4 brcc .+10 ; 0x2a88 <__vector_12+0xc6> |
2a7e: 80 91 27 02 lds r24, 0x0227 |
2a82: 86 5f subi r24, 0xF6 ; 246 |
2a84: 80 93 27 02 sts 0x0227, r24 |
2a88: fe 01 movw r30, r28 |
2a8a: ee 0f add r30, r30 |
2a8c: ff 1f adc r31, r31 |
2a8e: 8f 01 movw r16, r30 |
2a90: 0f 5b subi r16, 0xBF ; 191 |
2a92: 1a 4f sbci r17, 0xFA ; 250 |
2a94: d8 01 movw r26, r16 |
2a96: 2d 91 ld r18, X+ |
2a98: 3c 91 ld r19, X |
2a9a: c9 01 movw r24, r18 |
2a9c: 88 0f add r24, r24 |
2a9e: 99 1f adc r25, r25 |
2aa0: 82 0f add r24, r18 |
2aa2: 93 1f adc r25, r19 |
2aa4: 84 0f add r24, r20 |
2aa6: 95 1f adc r25, r21 |
2aa8: 64 e0 ldi r22, 0x04 ; 4 |
2aaa: 70 e0 ldi r23, 0x00 ; 0 |
2aac: 0e 94 d3 2c call 0x59a6 ; 0x59a6 <__divmodhi4> |
2ab0: d8 01 movw r26, r16 |
2ab2: 8d 91 ld r24, X+ |
2ab4: 9c 91 ld r25, X |
2ab6: 11 97 sbiw r26, 0x01 ; 1 |
2ab8: 9b 01 movw r18, r22 |
2aba: 28 1b sub r18, r24 |
2abc: 39 0b sbc r19, r25 |
2abe: e9 5a subi r30, 0xA9 ; 169 |
2ac0: fa 4f sbci r31, 0xFA ; 250 |
2ac2: 31 83 std Z+1, r19 ; 0x01 |
2ac4: 20 83 st Z, r18 |
2ac6: 11 96 adiw r26, 0x01 ; 1 |
2ac8: 7c 93 st X, r23 |
2aca: 6e 93 st -X, r22 |
2acc: 21 96 adiw r28, 0x01 ; 1 |
2ace: d0 93 d3 01 sts 0x01D3, r29 |
2ad2: c0 93 d2 01 sts 0x01D2, r28 |
2ad6: ff 91 pop r31 |
2ad8: ef 91 pop r30 |
2ada: df 91 pop r29 |
2adc: cf 91 pop r28 |
2ade: bf 91 pop r27 |
2ae0: af 91 pop r26 |
2ae2: 9f 91 pop r25 |
2ae4: 8f 91 pop r24 |
2ae6: 7f 91 pop r23 |
2ae8: 6f 91 pop r22 |
2aea: 5f 91 pop r21 |
2aec: 4f 91 pop r20 |
2aee: 3f 91 pop r19 |
2af0: 2f 91 pop r18 |
2af2: 1f 91 pop r17 |
2af4: 0f 91 pop r16 |
2af6: 0f 90 pop r0 |
2af8: 0f be out 0x3f, r0 ; 63 |
2afa: 0f 90 pop r0 |
2afc: 1f 90 pop r1 |
2afe: 18 95 reti |
00002b00 <Mittelwert>: |
2b00: af 92 push r10 |
2b02: bf 92 push r11 |
2b04: cf 92 push r12 |
2b06: df 92 push r13 |
2b08: ef 92 push r14 |
2b0a: ff 92 push r15 |
2b0c: 0f 93 push r16 |
2b0e: 1f 93 push r17 |
2b10: 10 92 7a 00 sts 0x007A, r1 |
2b14: 80 91 be 01 lds r24, 0x01BE |
2b18: 88 23 and r24, r24 |
2b1a: 69 f0 breq .+26 ; 0x2b36 <Mittelwert+0x36> |
2b1c: 80 91 b2 01 lds r24, 0x01B2 |
2b20: 90 91 b3 01 lds r25, 0x01B3 |
2b24: 60 91 be 01 lds r22, 0x01BE |
2b28: 77 27 eor r23, r23 |
2b2a: 0e 94 d3 2c call 0x59a6 ; 0x59a6 <__divmodhi4> |
2b2e: 70 93 aa 05 sts 0x05AA, r23 |
2b32: 60 93 a9 05 sts 0x05A9, r22 |
2b36: 80 91 bf 01 lds r24, 0x01BF |
2b3a: 88 23 and r24, r24 |
2b3c: 69 f0 breq .+26 ; 0x2b58 <Mittelwert+0x58> |
2b3e: 80 91 b4 01 lds r24, 0x01B4 |
2b42: 90 91 b5 01 lds r25, 0x01B5 |
2b46: 60 91 bf 01 lds r22, 0x01BF |
2b4a: 77 27 eor r23, r23 |
2b4c: 0e 94 d3 2c call 0x59a6 ; 0x59a6 <__divmodhi4> |
2b50: 70 93 a8 05 sts 0x05A8, r23 |
2b54: 60 93 a7 05 sts 0x05A7, r22 |
2b58: 80 91 c0 01 lds r24, 0x01C0 |
2b5c: 88 23 and r24, r24 |
2b5e: 69 f0 breq .+26 ; 0x2b7a <Mittelwert+0x7a> |
2b60: 80 91 b6 01 lds r24, 0x01B6 |
2b64: 90 91 b7 01 lds r25, 0x01B7 |
2b68: 60 91 c0 01 lds r22, 0x01C0 |
2b6c: 77 27 eor r23, r23 |
2b6e: 0e 94 d3 2c call 0x59a6 ; 0x59a6 <__divmodhi4> |
2b72: 70 93 b6 05 sts 0x05B6, r23 |
2b76: 60 93 b5 05 sts 0x05B5, r22 |
2b7a: 80 91 c1 01 lds r24, 0x01C1 |
2b7e: 88 23 and r24, r24 |
2b80: d9 f1 breq .+118 ; 0x2bf8 <Mittelwert+0xf8> |
2b82: e0 90 b2 05 lds r14, 0x05B2 |
2b86: f0 90 b3 05 lds r15, 0x05B3 |
2b8a: 60 91 ba 01 lds r22, 0x01BA |
2b8e: 70 91 bb 01 lds r23, 0x01BB |
2b92: 20 91 c1 01 lds r18, 0x01C1 |
2b96: 00 27 eor r16, r16 |
2b98: f7 fc sbrc r15, 7 |
2b9a: 00 95 com r16 |
2b9c: 10 2f mov r17, r16 |
2b9e: 57 01 movw r10, r14 |
2ba0: 68 01 movw r12, r16 |
2ba2: 43 e0 ldi r20, 0x03 ; 3 |
2ba4: aa 0c add r10, r10 |
2ba6: bb 1c adc r11, r11 |
2ba8: cc 1c adc r12, r12 |
2baa: dd 1c adc r13, r13 |
2bac: 4a 95 dec r20 |
2bae: d1 f7 brne .-12 ; 0x2ba4 <Mittelwert+0xa4> |
2bb0: ae 18 sub r10, r14 |
2bb2: bf 08 sbc r11, r15 |
2bb4: c0 0a sbc r12, r16 |
2bb6: d1 0a sbc r13, r17 |
2bb8: 88 27 eor r24, r24 |
2bba: 77 fd sbrc r23, 7 |
2bbc: 80 95 com r24 |
2bbe: 98 2f mov r25, r24 |
2bc0: 34 e0 ldi r19, 0x04 ; 4 |
2bc2: 66 0f add r22, r22 |
2bc4: 77 1f adc r23, r23 |
2bc6: 88 1f adc r24, r24 |
2bc8: 99 1f adc r25, r25 |
2bca: 3a 95 dec r19 |
2bcc: d1 f7 brne .-12 ; 0x2bc2 <Mittelwert+0xc2> |
2bce: 33 27 eor r19, r19 |
2bd0: 44 27 eor r20, r20 |
2bd2: 55 27 eor r21, r21 |
2bd4: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
2bd8: a2 0e add r10, r18 |
2bda: b3 1e adc r11, r19 |
2bdc: c4 1e adc r12, r20 |
2bde: d5 1e adc r13, r21 |
2be0: c6 01 movw r24, r12 |
2be2: b5 01 movw r22, r10 |
2be4: 28 e0 ldi r18, 0x08 ; 8 |
2be6: 30 e0 ldi r19, 0x00 ; 0 |
2be8: 40 e0 ldi r20, 0x00 ; 0 |
2bea: 50 e0 ldi r21, 0x00 ; 0 |
2bec: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
2bf0: 30 93 b3 05 sts 0x05B3, r19 |
2bf4: 20 93 b2 05 sts 0x05B2, r18 |
2bf8: 80 91 c2 01 lds r24, 0x01C2 |
2bfc: 88 23 and r24, r24 |
2bfe: d9 f1 breq .+118 ; 0x2c76 <Mittelwert+0x176> |
2c00: e0 90 bb 05 lds r14, 0x05BB |
2c04: f0 90 bc 05 lds r15, 0x05BC |
2c08: 60 91 b8 01 lds r22, 0x01B8 |
2c0c: 70 91 b9 01 lds r23, 0x01B9 |
2c10: 20 91 c2 01 lds r18, 0x01C2 |
2c14: 00 27 eor r16, r16 |
2c16: f7 fc sbrc r15, 7 |
2c18: 00 95 com r16 |
2c1a: 10 2f mov r17, r16 |
2c1c: 57 01 movw r10, r14 |
2c1e: 68 01 movw r12, r16 |
2c20: 83 e0 ldi r24, 0x03 ; 3 |
2c22: aa 0c add r10, r10 |
2c24: bb 1c adc r11, r11 |
2c26: cc 1c adc r12, r12 |
2c28: dd 1c adc r13, r13 |
2c2a: 8a 95 dec r24 |
2c2c: d1 f7 brne .-12 ; 0x2c22 <Mittelwert+0x122> |
2c2e: ae 18 sub r10, r14 |
2c30: bf 08 sbc r11, r15 |
2c32: c0 0a sbc r12, r16 |
2c34: d1 0a sbc r13, r17 |
2c36: 88 27 eor r24, r24 |
2c38: 77 fd sbrc r23, 7 |
2c3a: 80 95 com r24 |
2c3c: 98 2f mov r25, r24 |
2c3e: b4 e0 ldi r27, 0x04 ; 4 |
2c40: 66 0f add r22, r22 |
2c42: 77 1f adc r23, r23 |
2c44: 88 1f adc r24, r24 |
2c46: 99 1f adc r25, r25 |
2c48: ba 95 dec r27 |
2c4a: d1 f7 brne .-12 ; 0x2c40 <Mittelwert+0x140> |
2c4c: 33 27 eor r19, r19 |
2c4e: 44 27 eor r20, r20 |
2c50: 55 27 eor r21, r21 |
2c52: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
2c56: a2 0e add r10, r18 |
2c58: b3 1e adc r11, r19 |
2c5a: c4 1e adc r12, r20 |
2c5c: d5 1e adc r13, r21 |
2c5e: c6 01 movw r24, r12 |
2c60: b5 01 movw r22, r10 |
2c62: 28 e0 ldi r18, 0x08 ; 8 |
2c64: 30 e0 ldi r19, 0x00 ; 0 |
2c66: 40 e0 ldi r20, 0x00 ; 0 |
2c68: 50 e0 ldi r21, 0x00 ; 0 |
2c6a: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
2c6e: 30 93 bc 05 sts 0x05BC, r19 |
2c72: 20 93 bb 05 sts 0x05BB, r18 |
2c76: 80 91 c3 01 lds r24, 0x01C3 |
2c7a: 88 23 and r24, r24 |
2c7c: a1 f1 breq .+104 ; 0x2ce6 <Mittelwert+0x1e6> |
2c7e: e0 90 ac 05 lds r14, 0x05AC |
2c82: f0 90 ad 05 lds r15, 0x05AD |
2c86: 60 91 bc 01 lds r22, 0x01BC |
2c8a: 70 91 bd 01 lds r23, 0x01BD |
2c8e: 20 91 c3 01 lds r18, 0x01C3 |
2c92: 00 27 eor r16, r16 |
2c94: f7 fc sbrc r15, 7 |
2c96: 00 95 com r16 |
2c98: 10 2f mov r17, r16 |
2c9a: 57 01 movw r10, r14 |
2c9c: 68 01 movw r12, r16 |
2c9e: a3 e0 ldi r26, 0x03 ; 3 |
2ca0: aa 0c add r10, r10 |
2ca2: bb 1c adc r11, r11 |
2ca4: cc 1c adc r12, r12 |
2ca6: dd 1c adc r13, r13 |
2ca8: aa 95 dec r26 |
2caa: d1 f7 brne .-12 ; 0x2ca0 <Mittelwert+0x1a0> |
2cac: ae 18 sub r10, r14 |
2cae: bf 08 sbc r11, r15 |
2cb0: c0 0a sbc r12, r16 |
2cb2: d1 0a sbc r13, r17 |
2cb4: 88 27 eor r24, r24 |
2cb6: 77 fd sbrc r23, 7 |
2cb8: 80 95 com r24 |
2cba: 98 2f mov r25, r24 |
2cbc: 33 27 eor r19, r19 |
2cbe: 44 27 eor r20, r20 |
2cc0: 55 27 eor r21, r21 |
2cc2: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
2cc6: a2 0e add r10, r18 |
2cc8: b3 1e adc r11, r19 |
2cca: c4 1e adc r12, r20 |
2ccc: d5 1e adc r13, r21 |
2cce: c6 01 movw r24, r12 |
2cd0: b5 01 movw r22, r10 |
2cd2: 28 e0 ldi r18, 0x08 ; 8 |
2cd4: 30 e0 ldi r19, 0x00 ; 0 |
2cd6: 40 e0 ldi r20, 0x00 ; 0 |
2cd8: 50 e0 ldi r21, 0x00 ; 0 |
2cda: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
2cde: 30 93 ad 05 sts 0x05AD, r19 |
2ce2: 20 93 ac 05 sts 0x05AC, r18 |
2ce6: 10 92 b3 01 sts 0x01B3, r1 |
2cea: 10 92 b2 01 sts 0x01B2, r1 |
2cee: 10 92 be 01 sts 0x01BE, r1 |
2cf2: 10 92 b5 01 sts 0x01B5, r1 |
2cf6: 10 92 b4 01 sts 0x01B4, r1 |
2cfa: 10 92 bf 01 sts 0x01BF, r1 |
2cfe: 10 92 b7 01 sts 0x01B7, r1 |
2d02: 10 92 b6 01 sts 0x01B6, r1 |
2d06: 10 92 c0 01 sts 0x01C0, r1 |
2d0a: 10 92 b9 01 sts 0x01B9, r1 |
2d0e: 10 92 b8 01 sts 0x01B8, r1 |
2d12: 10 92 c2 01 sts 0x01C2, r1 |
2d16: 10 92 bb 01 sts 0x01BB, r1 |
2d1a: 10 92 ba 01 sts 0x01BA, r1 |
2d1e: 10 92 c1 01 sts 0x01C1, r1 |
2d22: 10 92 bd 01 sts 0x01BD, r1 |
2d26: 10 92 bc 01 sts 0x01BC, r1 |
2d2a: 10 92 c3 01 sts 0x01C3, r1 |
2d2e: 80 91 0b 02 lds r24, 0x020B |
2d32: 90 91 0c 02 lds r25, 0x020C |
2d36: a0 91 0d 02 lds r26, 0x020D |
2d3a: b0 91 0e 02 lds r27, 0x020E |
2d3e: 80 93 f7 01 sts 0x01F7, r24 |
2d42: 90 93 f8 01 sts 0x01F8, r25 |
2d46: a0 93 f9 01 sts 0x01F9, r26 |
2d4a: b0 93 fa 01 sts 0x01FA, r27 |
2d4e: 80 91 fb 01 lds r24, 0x01FB |
2d52: 90 91 fc 01 lds r25, 0x01FC |
2d56: a0 91 fd 01 lds r26, 0x01FD |
2d5a: b0 91 fe 01 lds r27, 0x01FE |
2d5e: 80 93 e7 01 sts 0x01E7, r24 |
2d62: 90 93 e8 01 sts 0x01E8, r25 |
2d66: a0 93 e9 01 sts 0x01E9, r26 |
2d6a: b0 93 ea 01 sts 0x01EA, r27 |
2d6e: 80 91 03 02 lds r24, 0x0203 |
2d72: 90 91 04 02 lds r25, 0x0204 |
2d76: a0 91 05 02 lds r26, 0x0205 |
2d7a: b0 91 06 02 lds r27, 0x0206 |
2d7e: 80 93 ef 01 sts 0x01EF, r24 |
2d82: 90 93 f0 01 sts 0x01F0, r25 |
2d86: a0 93 f1 01 sts 0x01F1, r26 |
2d8a: b0 93 f2 01 sts 0x01F2, r27 |
2d8e: 80 91 ff 01 lds r24, 0x01FF |
2d92: 90 91 00 02 lds r25, 0x0200 |
2d96: a0 91 01 02 lds r26, 0x0201 |
2d9a: b0 91 02 02 lds r27, 0x0202 |
2d9e: 80 93 eb 01 sts 0x01EB, r24 |
2da2: 90 93 ec 01 sts 0x01EC, r25 |
2da6: a0 93 ed 01 sts 0x01ED, r26 |
2daa: b0 93 ee 01 sts 0x01EE, r27 |
2dae: 80 91 07 02 lds r24, 0x0207 |
2db2: 90 91 08 02 lds r25, 0x0208 |
2db6: a0 91 09 02 lds r26, 0x0209 |
2dba: b0 91 0a 02 lds r27, 0x020A |
2dbe: 80 93 f3 01 sts 0x01F3, r24 |
2dc2: 90 93 f4 01 sts 0x01F4, r25 |
2dc6: a0 93 f5 01 sts 0x01F5, r26 |
2dca: b0 93 f6 01 sts 0x01F6, r27 |
2dce: 8f ee ldi r24, 0xEF ; 239 |
2dd0: 80 93 7a 00 sts 0x007A, r24 |
2dd4: 80 91 a9 05 lds r24, 0x05A9 |
2dd8: 90 91 aa 05 lds r25, 0x05AA |
2ddc: 89 3c cpi r24, 0xC9 ; 201 |
2dde: 91 05 cpc r25, r1 |
2de0: 7c f0 brlt .+30 ; 0x2e00 <Mittelwert+0x300> |
2de2: 20 91 a9 05 lds r18, 0x05A9 |
2de6: 30 91 aa 05 lds r19, 0x05AA |
2dea: 80 91 a9 05 lds r24, 0x05A9 |
2dee: 90 91 aa 05 lds r25, 0x05AA |
2df2: 88 0f add r24, r24 |
2df4: 99 1f adc r25, r25 |
2df6: 88 0f add r24, r24 |
2df8: 99 1f adc r25, r25 |
2dfa: 20 52 subi r18, 0x20 ; 32 |
2dfc: 33 40 sbci r19, 0x03 ; 3 |
2dfe: 15 c0 rjmp .+42 ; 0x2e2a <Mittelwert+0x32a> |
2e00: 80 91 a9 05 lds r24, 0x05A9 |
2e04: 90 91 aa 05 lds r25, 0x05AA |
2e08: 88 53 subi r24, 0x38 ; 56 |
2e0a: 9f 4f sbci r25, 0xFF ; 255 |
2e0c: a4 f4 brge .+40 ; 0x2e36 <Mittelwert+0x336> |
2e0e: 20 91 a9 05 lds r18, 0x05A9 |
2e12: 30 91 aa 05 lds r19, 0x05AA |
2e16: 80 91 a9 05 lds r24, 0x05A9 |
2e1a: 90 91 aa 05 lds r25, 0x05AA |
2e1e: 88 0f add r24, r24 |
2e20: 99 1f adc r25, r25 |
2e22: 88 0f add r24, r24 |
2e24: 99 1f adc r25, r25 |
2e26: 20 5e subi r18, 0xE0 ; 224 |
2e28: 3c 4f sbci r19, 0xFC ; 252 |
2e2a: 82 0f add r24, r18 |
2e2c: 93 1f adc r25, r19 |
2e2e: 90 93 aa 05 sts 0x05AA, r25 |
2e32: 80 93 a9 05 sts 0x05A9, r24 |
2e36: 80 91 a7 05 lds r24, 0x05A7 |
2e3a: 90 91 a8 05 lds r25, 0x05A8 |
2e3e: 89 3c cpi r24, 0xC9 ; 201 |
2e40: 91 05 cpc r25, r1 |
2e42: 7c f0 brlt .+30 ; 0x2e62 <Mittelwert+0x362> |
2e44: 20 91 a7 05 lds r18, 0x05A7 |
2e48: 30 91 a8 05 lds r19, 0x05A8 |
2e4c: 80 91 a7 05 lds r24, 0x05A7 |
2e50: 90 91 a8 05 lds r25, 0x05A8 |
2e54: 88 0f add r24, r24 |
2e56: 99 1f adc r25, r25 |
2e58: 88 0f add r24, r24 |
2e5a: 99 1f adc r25, r25 |
2e5c: 20 52 subi r18, 0x20 ; 32 |
2e5e: 33 40 sbci r19, 0x03 ; 3 |
2e60: 15 c0 rjmp .+42 ; 0x2e8c <Mittelwert+0x38c> |
2e62: 80 91 a7 05 lds r24, 0x05A7 |
2e66: 90 91 a8 05 lds r25, 0x05A8 |
2e6a: 88 53 subi r24, 0x38 ; 56 |
2e6c: 9f 4f sbci r25, 0xFF ; 255 |
2e6e: a4 f4 brge .+40 ; 0x2e98 <Mittelwert+0x398> |
2e70: 20 91 a7 05 lds r18, 0x05A7 |
2e74: 30 91 a8 05 lds r19, 0x05A8 |
2e78: 80 91 a7 05 lds r24, 0x05A7 |
2e7c: 90 91 a8 05 lds r25, 0x05A8 |
2e80: 88 0f add r24, r24 |
2e82: 99 1f adc r25, r25 |
2e84: 88 0f add r24, r24 |
2e86: 99 1f adc r25, r25 |
2e88: 20 5e subi r18, 0xE0 ; 224 |
2e8a: 3c 4f sbci r19, 0xFC ; 252 |
2e8c: 82 0f add r24, r18 |
2e8e: 93 1f adc r25, r19 |
2e90: 90 93 a8 05 sts 0x05A8, r25 |
2e94: 80 93 a7 05 sts 0x05A7, r24 |
2e98: 20 91 1f 02 lds r18, 0x021F |
2e9c: 30 91 20 02 lds r19, 0x0220 |
2ea0: 80 91 71 05 lds r24, 0x0571 |
2ea4: e8 2f mov r30, r24 |
2ea6: ff 27 eor r31, r31 |
2ea8: ee 0f add r30, r30 |
2eaa: ff 1f adc r31, r31 |
2eac: ef 5b subi r30, 0xBF ; 191 |
2eae: fa 4f sbci r31, 0xFA ; 250 |
2eb0: 80 81 ld r24, Z |
2eb2: 91 81 ldd r25, Z+1 ; 0x01 |
2eb4: 82 59 subi r24, 0x92 ; 146 |
2eb6: 9f 4f sbci r25, 0xFF ; 255 |
2eb8: 28 17 cp r18, r24 |
2eba: 39 07 cpc r19, r25 |
2ebc: 1c f4 brge .+6 ; 0x2ec4 <Mittelwert+0x3c4> |
2ebe: 2f 5f subi r18, 0xFF ; 255 |
2ec0: 3f 4f sbci r19, 0xFF ; 255 |
2ec2: 0c c0 rjmp .+24 ; 0x2edc <Mittelwert+0x3dc> |
2ec4: 80 81 ld r24, Z |
2ec6: 91 81 ldd r25, Z+1 ; 0x01 |
2ec8: 82 59 subi r24, 0x92 ; 146 |
2eca: 9f 4f sbci r25, 0xFF ; 255 |
2ecc: 82 17 cp r24, r18 |
2ece: 93 07 cpc r25, r19 |
2ed0: 4c f4 brge .+18 ; 0x2ee4 <Mittelwert+0x3e4> |
2ed2: 21 15 cp r18, r1 |
2ed4: 31 05 cpc r19, r1 |
2ed6: 31 f0 breq .+12 ; 0x2ee4 <Mittelwert+0x3e4> |
2ed8: 21 50 subi r18, 0x01 ; 1 |
2eda: 30 40 sbci r19, 0x00 ; 0 |
2edc: 30 93 20 02 sts 0x0220, r19 |
2ee0: 20 93 1f 02 sts 0x021F, r18 |
2ee4: 20 91 21 02 lds r18, 0x0221 |
2ee8: 30 91 22 02 lds r19, 0x0222 |
2eec: 80 91 72 05 lds r24, 0x0572 |
2ef0: e8 2f mov r30, r24 |
2ef2: ff 27 eor r31, r31 |
2ef4: ee 0f add r30, r30 |
2ef6: ff 1f adc r31, r31 |
2ef8: ef 5b subi r30, 0xBF ; 191 |
2efa: fa 4f sbci r31, 0xFA ; 250 |
2efc: 80 81 ld r24, Z |
2efe: 91 81 ldd r25, Z+1 ; 0x01 |
2f00: 82 59 subi r24, 0x92 ; 146 |
2f02: 9f 4f sbci r25, 0xFF ; 255 |
2f04: 28 17 cp r18, r24 |
2f06: 39 07 cpc r19, r25 |
2f08: 1c f4 brge .+6 ; 0x2f10 <Mittelwert+0x410> |
2f0a: 2f 5f subi r18, 0xFF ; 255 |
2f0c: 3f 4f sbci r19, 0xFF ; 255 |
2f0e: 0c c0 rjmp .+24 ; 0x2f28 <Mittelwert+0x428> |
2f10: 80 81 ld r24, Z |
2f12: 91 81 ldd r25, Z+1 ; 0x01 |
2f14: 82 59 subi r24, 0x92 ; 146 |
2f16: 9f 4f sbci r25, 0xFF ; 255 |
2f18: 82 17 cp r24, r18 |
2f1a: 93 07 cpc r25, r19 |
2f1c: 4c f4 brge .+18 ; 0x2f30 <Mittelwert+0x430> |
2f1e: 21 15 cp r18, r1 |
2f20: 31 05 cpc r19, r1 |
2f22: 31 f0 breq .+12 ; 0x2f30 <Mittelwert+0x430> |
2f24: 21 50 subi r18, 0x01 ; 1 |
2f26: 30 40 sbci r19, 0x00 ; 0 |
2f28: 30 93 22 02 sts 0x0222, r19 |
2f2c: 20 93 21 02 sts 0x0221, r18 |
2f30: 20 91 23 02 lds r18, 0x0223 |
2f34: 30 91 24 02 lds r19, 0x0224 |
2f38: 80 91 73 05 lds r24, 0x0573 |
2f3c: e8 2f mov r30, r24 |
2f3e: ff 27 eor r31, r31 |
2f40: ee 0f add r30, r30 |
2f42: ff 1f adc r31, r31 |
2f44: ef 5b subi r30, 0xBF ; 191 |
2f46: fa 4f sbci r31, 0xFA ; 250 |
2f48: 80 81 ld r24, Z |
2f4a: 91 81 ldd r25, Z+1 ; 0x01 |
2f4c: 82 59 subi r24, 0x92 ; 146 |
2f4e: 9f 4f sbci r25, 0xFF ; 255 |
2f50: 28 17 cp r18, r24 |
2f52: 39 07 cpc r19, r25 |
2f54: 1c f4 brge .+6 ; 0x2f5c <Mittelwert+0x45c> |
2f56: 2f 5f subi r18, 0xFF ; 255 |
2f58: 3f 4f sbci r19, 0xFF ; 255 |
2f5a: 0c c0 rjmp .+24 ; 0x2f74 <Mittelwert+0x474> |
2f5c: 80 81 ld r24, Z |
2f5e: 91 81 ldd r25, Z+1 ; 0x01 |
2f60: 82 59 subi r24, 0x92 ; 146 |
2f62: 9f 4f sbci r25, 0xFF ; 255 |
2f64: 82 17 cp r24, r18 |
2f66: 93 07 cpc r25, r19 |
2f68: 4c f4 brge .+18 ; 0x2f7c <Mittelwert+0x47c> |
2f6a: 21 15 cp r18, r1 |
2f6c: 31 05 cpc r19, r1 |
2f6e: 31 f0 breq .+12 ; 0x2f7c <Mittelwert+0x47c> |
2f70: 21 50 subi r18, 0x01 ; 1 |
2f72: 30 40 sbci r19, 0x00 ; 0 |
2f74: 30 93 24 02 sts 0x0224, r19 |
2f78: 20 93 23 02 sts 0x0223, r18 |
2f7c: 20 91 25 02 lds r18, 0x0225 |
2f80: 30 91 26 02 lds r19, 0x0226 |
2f84: 80 91 74 05 lds r24, 0x0574 |
2f88: e8 2f mov r30, r24 |
2f8a: ff 27 eor r31, r31 |
2f8c: ee 0f add r30, r30 |
2f8e: ff 1f adc r31, r31 |
2f90: ef 5b subi r30, 0xBF ; 191 |
2f92: fa 4f sbci r31, 0xFA ; 250 |
2f94: 80 81 ld r24, Z |
2f96: 91 81 ldd r25, Z+1 ; 0x01 |
2f98: 82 59 subi r24, 0x92 ; 146 |
2f9a: 9f 4f sbci r25, 0xFF ; 255 |
2f9c: 28 17 cp r18, r24 |
2f9e: 39 07 cpc r19, r25 |
2fa0: 1c f4 brge .+6 ; 0x2fa8 <Mittelwert+0x4a8> |
2fa2: 2f 5f subi r18, 0xFF ; 255 |
2fa4: 3f 4f sbci r19, 0xFF ; 255 |
2fa6: 0c c0 rjmp .+24 ; 0x2fc0 <Mittelwert+0x4c0> |
2fa8: 80 81 ld r24, Z |
2faa: 91 81 ldd r25, Z+1 ; 0x01 |
2fac: 82 59 subi r24, 0x92 ; 146 |
2fae: 9f 4f sbci r25, 0xFF ; 255 |
2fb0: 82 17 cp r24, r18 |
2fb2: 93 07 cpc r25, r19 |
2fb4: 4c f4 brge .+18 ; 0x2fc8 <Mittelwert+0x4c8> |
2fb6: 21 15 cp r18, r1 |
2fb8: 31 05 cpc r19, r1 |
2fba: 31 f0 breq .+12 ; 0x2fc8 <Mittelwert+0x4c8> |
2fbc: 21 50 subi r18, 0x01 ; 1 |
2fbe: 30 40 sbci r19, 0x00 ; 0 |
2fc0: 30 93 26 02 sts 0x0226, r19 |
2fc4: 20 93 25 02 sts 0x0225, r18 |
2fc8: 80 91 1f 02 lds r24, 0x021F |
2fcc: 90 91 20 02 lds r25, 0x0220 |
2fd0: 97 ff sbrs r25, 7 |
2fd2: 05 c0 rjmp .+10 ; 0x2fde <Mittelwert+0x4de> |
2fd4: 10 92 20 02 sts 0x0220, r1 |
2fd8: 10 92 1f 02 sts 0x021F, r1 |
2fdc: 0a c0 rjmp .+20 ; 0x2ff2 <Mittelwert+0x4f2> |
2fde: 8f 3f cpi r24, 0xFF ; 255 |
2fe0: 91 05 cpc r25, r1 |
2fe2: 39 f0 breq .+14 ; 0x2ff2 <Mittelwert+0x4f2> |
2fe4: 34 f0 brlt .+12 ; 0x2ff2 <Mittelwert+0x4f2> |
2fe6: 8f ef ldi r24, 0xFF ; 255 |
2fe8: 90 e0 ldi r25, 0x00 ; 0 |
2fea: 90 93 20 02 sts 0x0220, r25 |
2fee: 80 93 1f 02 sts 0x021F, r24 |
2ff2: 80 91 21 02 lds r24, 0x0221 |
2ff6: 90 91 22 02 lds r25, 0x0222 |
2ffa: 97 ff sbrs r25, 7 |
2ffc: 05 c0 rjmp .+10 ; 0x3008 <Mittelwert+0x508> |
2ffe: 10 92 22 02 sts 0x0222, r1 |
3002: 10 92 21 02 sts 0x0221, r1 |
3006: 0a c0 rjmp .+20 ; 0x301c <Mittelwert+0x51c> |
3008: 8f 3f cpi r24, 0xFF ; 255 |
300a: 91 05 cpc r25, r1 |
300c: 39 f0 breq .+14 ; 0x301c <Mittelwert+0x51c> |
300e: 34 f0 brlt .+12 ; 0x301c <Mittelwert+0x51c> |
3010: 8f ef ldi r24, 0xFF ; 255 |
3012: 90 e0 ldi r25, 0x00 ; 0 |
3014: 90 93 22 02 sts 0x0222, r25 |
3018: 80 93 21 02 sts 0x0221, r24 |
301c: 80 91 23 02 lds r24, 0x0223 |
3020: 90 91 24 02 lds r25, 0x0224 |
3024: 97 ff sbrs r25, 7 |
3026: 05 c0 rjmp .+10 ; 0x3032 <Mittelwert+0x532> |
3028: 10 92 24 02 sts 0x0224, r1 |
302c: 10 92 23 02 sts 0x0223, r1 |
3030: 0a c0 rjmp .+20 ; 0x3046 <Mittelwert+0x546> |
3032: 8f 3f cpi r24, 0xFF ; 255 |
3034: 91 05 cpc r25, r1 |
3036: 39 f0 breq .+14 ; 0x3046 <Mittelwert+0x546> |
3038: 34 f0 brlt .+12 ; 0x3046 <Mittelwert+0x546> |
303a: 8f ef ldi r24, 0xFF ; 255 |
303c: 90 e0 ldi r25, 0x00 ; 0 |
303e: 90 93 24 02 sts 0x0224, r25 |
3042: 80 93 23 02 sts 0x0223, r24 |
3046: 80 91 25 02 lds r24, 0x0225 |
304a: 90 91 26 02 lds r25, 0x0226 |
304e: 97 ff sbrs r25, 7 |
3050: 05 c0 rjmp .+10 ; 0x305c <Mittelwert+0x55c> |
3052: 10 92 26 02 sts 0x0226, r1 |
3056: 10 92 25 02 sts 0x0225, r1 |
305a: 0a c0 rjmp .+20 ; 0x3070 <Mittelwert+0x570> |
305c: 8f 3f cpi r24, 0xFF ; 255 |
305e: 91 05 cpc r25, r1 |
3060: 39 f0 breq .+14 ; 0x3070 <Mittelwert+0x570> |
3062: 34 f0 brlt .+12 ; 0x3070 <Mittelwert+0x570> |
3064: 8f ef ldi r24, 0xFF ; 255 |
3066: 90 e0 ldi r25, 0x00 ; 0 |
3068: 90 93 26 02 sts 0x0226, r25 |
306c: 80 93 25 02 sts 0x0225, r24 |
3070: 1f 91 pop r17 |
3072: 0f 91 pop r16 |
3074: ff 90 pop r15 |
3076: ef 90 pop r14 |
3078: df 90 pop r13 |
307a: cf 90 pop r12 |
307c: bf 90 pop r11 |
307e: af 90 pop r10 |
3080: 08 95 ret |
00003082 <CalibrierMittelwert>: |
3082: 10 92 7a 00 sts 0x007A, r1 |
3086: 80 91 be 01 lds r24, 0x01BE |
308a: 88 23 and r24, r24 |
308c: 69 f0 breq .+26 ; 0x30a8 <CalibrierMittelwert+0x26> |
308e: 80 91 b2 01 lds r24, 0x01B2 |
3092: 90 91 b3 01 lds r25, 0x01B3 |
3096: 60 91 be 01 lds r22, 0x01BE |
309a: 77 27 eor r23, r23 |
309c: 0e 94 d3 2c call 0x59a6 ; 0x59a6 <__divmodhi4> |
30a0: 70 93 aa 05 sts 0x05AA, r23 |
30a4: 60 93 a9 05 sts 0x05A9, r22 |
30a8: 80 91 bf 01 lds r24, 0x01BF |
30ac: 88 23 and r24, r24 |
30ae: 69 f0 breq .+26 ; 0x30ca <CalibrierMittelwert+0x48> |
30b0: 80 91 b4 01 lds r24, 0x01B4 |
30b4: 90 91 b5 01 lds r25, 0x01B5 |
30b8: 60 91 bf 01 lds r22, 0x01BF |
30bc: 77 27 eor r23, r23 |
30be: 0e 94 d3 2c call 0x59a6 ; 0x59a6 <__divmodhi4> |
30c2: 70 93 a8 05 sts 0x05A8, r23 |
30c6: 60 93 a7 05 sts 0x05A7, r22 |
30ca: 80 91 c0 01 lds r24, 0x01C0 |
30ce: 88 23 and r24, r24 |
30d0: 69 f0 breq .+26 ; 0x30ec <CalibrierMittelwert+0x6a> |
30d2: 80 91 b6 01 lds r24, 0x01B6 |
30d6: 90 91 b7 01 lds r25, 0x01B7 |
30da: 60 91 c0 01 lds r22, 0x01C0 |
30de: 77 27 eor r23, r23 |
30e0: 0e 94 d3 2c call 0x59a6 ; 0x59a6 <__divmodhi4> |
30e4: 70 93 b6 05 sts 0x05B6, r23 |
30e8: 60 93 b5 05 sts 0x05B5, r22 |
30ec: 80 91 c1 01 lds r24, 0x01C1 |
30f0: 88 23 and r24, r24 |
30f2: d1 f0 breq .+52 ; 0x3128 <CalibrierMittelwert+0xa6> |
30f4: 60 91 ba 01 lds r22, 0x01BA |
30f8: 70 91 bb 01 lds r23, 0x01BB |
30fc: 20 91 c1 01 lds r18, 0x01C1 |
3100: 88 27 eor r24, r24 |
3102: 77 fd sbrc r23, 7 |
3104: 80 95 com r24 |
3106: 98 2f mov r25, r24 |
3108: 34 e0 ldi r19, 0x04 ; 4 |
310a: 66 0f add r22, r22 |
310c: 77 1f adc r23, r23 |
310e: 88 1f adc r24, r24 |
3110: 99 1f adc r25, r25 |
3112: 3a 95 dec r19 |
3114: d1 f7 brne .-12 ; 0x310a <CalibrierMittelwert+0x88> |
3116: 33 27 eor r19, r19 |
3118: 44 27 eor r20, r20 |
311a: 55 27 eor r21, r21 |
311c: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
3120: 30 93 b3 05 sts 0x05B3, r19 |
3124: 20 93 b2 05 sts 0x05B2, r18 |
3128: 80 91 c2 01 lds r24, 0x01C2 |
312c: 88 23 and r24, r24 |
312e: d1 f0 breq .+52 ; 0x3164 <CalibrierMittelwert+0xe2> |
3130: 60 91 b8 01 lds r22, 0x01B8 |
3134: 70 91 b9 01 lds r23, 0x01B9 |
3138: 20 91 c2 01 lds r18, 0x01C2 |
313c: 88 27 eor r24, r24 |
313e: 77 fd sbrc r23, 7 |
3140: 80 95 com r24 |
3142: 98 2f mov r25, r24 |
3144: b4 e0 ldi r27, 0x04 ; 4 |
3146: 66 0f add r22, r22 |
3148: 77 1f adc r23, r23 |
314a: 88 1f adc r24, r24 |
314c: 99 1f adc r25, r25 |
314e: ba 95 dec r27 |
3150: d1 f7 brne .-12 ; 0x3146 <CalibrierMittelwert+0xc4> |
3152: 33 27 eor r19, r19 |
3154: 44 27 eor r20, r20 |
3156: 55 27 eor r21, r21 |
3158: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
315c: 30 93 bc 05 sts 0x05BC, r19 |
3160: 20 93 bb 05 sts 0x05BB, r18 |
3164: 80 91 c3 01 lds r24, 0x01C3 |
3168: 88 23 and r24, r24 |
316a: 99 f0 breq .+38 ; 0x3192 <CalibrierMittelwert+0x110> |
316c: 60 91 bc 01 lds r22, 0x01BC |
3170: 70 91 bd 01 lds r23, 0x01BD |
3174: 20 91 c3 01 lds r18, 0x01C3 |
3178: 88 27 eor r24, r24 |
317a: 77 fd sbrc r23, 7 |
317c: 80 95 com r24 |
317e: 98 2f mov r25, r24 |
3180: 33 27 eor r19, r19 |
3182: 44 27 eor r20, r20 |
3184: 55 27 eor r21, r21 |
3186: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
318a: 30 93 ad 05 sts 0x05AD, r19 |
318e: 20 93 ac 05 sts 0x05AC, r18 |
3192: 10 92 b3 01 sts 0x01B3, r1 |
3196: 10 92 b2 01 sts 0x01B2, r1 |
319a: 10 92 be 01 sts 0x01BE, r1 |
319e: 10 92 b5 01 sts 0x01B5, r1 |
31a2: 10 92 b4 01 sts 0x01B4, r1 |
31a6: 10 92 bf 01 sts 0x01BF, r1 |
31aa: 10 92 b7 01 sts 0x01B7, r1 |
31ae: 10 92 b6 01 sts 0x01B6, r1 |
31b2: 10 92 c0 01 sts 0x01C0, r1 |
31b6: 10 92 b9 01 sts 0x01B9, r1 |
31ba: 10 92 b8 01 sts 0x01B8, r1 |
31be: 10 92 c2 01 sts 0x01C2, r1 |
31c2: 10 92 bb 01 sts 0x01BB, r1 |
31c6: 10 92 ba 01 sts 0x01BA, r1 |
31ca: 10 92 c1 01 sts 0x01C1, r1 |
31ce: 10 92 bd 01 sts 0x01BD, r1 |
31d2: 10 92 bc 01 sts 0x01BC, r1 |
31d6: 10 92 c3 01 sts 0x01C3, r1 |
31da: 8f ee ldi r24, 0xEF ; 239 |
31dc: 80 93 7a 00 sts 0x007A, r24 |
31e0: 20 91 1f 02 lds r18, 0x021F |
31e4: 30 91 20 02 lds r19, 0x0220 |
31e8: 80 91 71 05 lds r24, 0x0571 |
31ec: e8 2f mov r30, r24 |
31ee: ff 27 eor r31, r31 |
31f0: ee 0f add r30, r30 |
31f2: ff 1f adc r31, r31 |
31f4: ef 5b subi r30, 0xBF ; 191 |
31f6: fa 4f sbci r31, 0xFA ; 250 |
31f8: 80 81 ld r24, Z |
31fa: 91 81 ldd r25, Z+1 ; 0x01 |
31fc: 82 59 subi r24, 0x92 ; 146 |
31fe: 9f 4f sbci r25, 0xFF ; 255 |
3200: 28 17 cp r18, r24 |
3202: 39 07 cpc r19, r25 |
3204: 1c f4 brge .+6 ; 0x320c <CalibrierMittelwert+0x18a> |
3206: 2f 5f subi r18, 0xFF ; 255 |
3208: 3f 4f sbci r19, 0xFF ; 255 |
320a: 0c c0 rjmp .+24 ; 0x3224 <CalibrierMittelwert+0x1a2> |
320c: 80 81 ld r24, Z |
320e: 91 81 ldd r25, Z+1 ; 0x01 |
3210: 82 59 subi r24, 0x92 ; 146 |
3212: 9f 4f sbci r25, 0xFF ; 255 |
3214: 82 17 cp r24, r18 |
3216: 93 07 cpc r25, r19 |
3218: 4c f4 brge .+18 ; 0x322c <CalibrierMittelwert+0x1aa> |
321a: 21 15 cp r18, r1 |
321c: 31 05 cpc r19, r1 |
321e: 31 f0 breq .+12 ; 0x322c <CalibrierMittelwert+0x1aa> |
3220: 21 50 subi r18, 0x01 ; 1 |
3222: 30 40 sbci r19, 0x00 ; 0 |
3224: 30 93 20 02 sts 0x0220, r19 |
3228: 20 93 1f 02 sts 0x021F, r18 |
322c: 20 91 21 02 lds r18, 0x0221 |
3230: 30 91 22 02 lds r19, 0x0222 |
3234: 80 91 72 05 lds r24, 0x0572 |
3238: e8 2f mov r30, r24 |
323a: ff 27 eor r31, r31 |
323c: ee 0f add r30, r30 |
323e: ff 1f adc r31, r31 |
3240: ef 5b subi r30, 0xBF ; 191 |
3242: fa 4f sbci r31, 0xFA ; 250 |
3244: 80 81 ld r24, Z |
3246: 91 81 ldd r25, Z+1 ; 0x01 |
3248: 82 59 subi r24, 0x92 ; 146 |
324a: 9f 4f sbci r25, 0xFF ; 255 |
324c: 28 17 cp r18, r24 |
324e: 39 07 cpc r19, r25 |
3250: 1c f4 brge .+6 ; 0x3258 <CalibrierMittelwert+0x1d6> |
3252: 2f 5f subi r18, 0xFF ; 255 |
3254: 3f 4f sbci r19, 0xFF ; 255 |
3256: 0c c0 rjmp .+24 ; 0x3270 <CalibrierMittelwert+0x1ee> |
3258: 80 81 ld r24, Z |
325a: 91 81 ldd r25, Z+1 ; 0x01 |
325c: 82 59 subi r24, 0x92 ; 146 |
325e: 9f 4f sbci r25, 0xFF ; 255 |
3260: 82 17 cp r24, r18 |
3262: 93 07 cpc r25, r19 |
3264: 4c f4 brge .+18 ; 0x3278 <CalibrierMittelwert+0x1f6> |
3266: 21 15 cp r18, r1 |
3268: 31 05 cpc r19, r1 |
326a: 31 f0 breq .+12 ; 0x3278 <CalibrierMittelwert+0x1f6> |
326c: 21 50 subi r18, 0x01 ; 1 |
326e: 30 40 sbci r19, 0x00 ; 0 |
3270: 30 93 22 02 sts 0x0222, r19 |
3274: 20 93 21 02 sts 0x0221, r18 |
3278: 20 91 23 02 lds r18, 0x0223 |
327c: 30 91 24 02 lds r19, 0x0224 |
3280: 80 91 73 05 lds r24, 0x0573 |
3284: e8 2f mov r30, r24 |
3286: ff 27 eor r31, r31 |
3288: ee 0f add r30, r30 |
328a: ff 1f adc r31, r31 |
328c: ef 5b subi r30, 0xBF ; 191 |
328e: fa 4f sbci r31, 0xFA ; 250 |
3290: 80 81 ld r24, Z |
3292: 91 81 ldd r25, Z+1 ; 0x01 |
3294: 82 59 subi r24, 0x92 ; 146 |
3296: 9f 4f sbci r25, 0xFF ; 255 |
3298: 28 17 cp r18, r24 |
329a: 39 07 cpc r19, r25 |
329c: 1c f4 brge .+6 ; 0x32a4 <CalibrierMittelwert+0x222> |
329e: 2f 5f subi r18, 0xFF ; 255 |
32a0: 3f 4f sbci r19, 0xFF ; 255 |
32a2: 0c c0 rjmp .+24 ; 0x32bc <CalibrierMittelwert+0x23a> |
32a4: 80 81 ld r24, Z |
32a6: 91 81 ldd r25, Z+1 ; 0x01 |
32a8: 82 59 subi r24, 0x92 ; 146 |
32aa: 9f 4f sbci r25, 0xFF ; 255 |
32ac: 82 17 cp r24, r18 |
32ae: 93 07 cpc r25, r19 |
32b0: 4c f4 brge .+18 ; 0x32c4 <CalibrierMittelwert+0x242> |
32b2: 21 15 cp r18, r1 |
32b4: 31 05 cpc r19, r1 |
32b6: 31 f0 breq .+12 ; 0x32c4 <CalibrierMittelwert+0x242> |
32b8: 21 50 subi r18, 0x01 ; 1 |
32ba: 30 40 sbci r19, 0x00 ; 0 |
32bc: 30 93 24 02 sts 0x0224, r19 |
32c0: 20 93 23 02 sts 0x0223, r18 |
32c4: 20 91 25 02 lds r18, 0x0225 |
32c8: 30 91 26 02 lds r19, 0x0226 |
32cc: 80 91 74 05 lds r24, 0x0574 |
32d0: e8 2f mov r30, r24 |
32d2: ff 27 eor r31, r31 |
32d4: ee 0f add r30, r30 |
32d6: ff 1f adc r31, r31 |
32d8: ef 5b subi r30, 0xBF ; 191 |
32da: fa 4f sbci r31, 0xFA ; 250 |
32dc: 80 81 ld r24, Z |
32de: 91 81 ldd r25, Z+1 ; 0x01 |
32e0: 82 59 subi r24, 0x92 ; 146 |
32e2: 9f 4f sbci r25, 0xFF ; 255 |
32e4: 28 17 cp r18, r24 |
32e6: 39 07 cpc r19, r25 |
32e8: 1c f4 brge .+6 ; 0x32f0 <CalibrierMittelwert+0x26e> |
32ea: 2f 5f subi r18, 0xFF ; 255 |
32ec: 3f 4f sbci r19, 0xFF ; 255 |
32ee: 0c c0 rjmp .+24 ; 0x3308 <CalibrierMittelwert+0x286> |
32f0: 80 81 ld r24, Z |
32f2: 91 81 ldd r25, Z+1 ; 0x01 |
32f4: 82 59 subi r24, 0x92 ; 146 |
32f6: 9f 4f sbci r25, 0xFF ; 255 |
32f8: 82 17 cp r24, r18 |
32fa: 93 07 cpc r25, r19 |
32fc: 4c f4 brge .+18 ; 0x3310 <CalibrierMittelwert+0x28e> |
32fe: 21 15 cp r18, r1 |
3300: 31 05 cpc r19, r1 |
3302: 31 f0 breq .+12 ; 0x3310 <CalibrierMittelwert+0x28e> |
3304: 21 50 subi r18, 0x01 ; 1 |
3306: 30 40 sbci r19, 0x00 ; 0 |
3308: 30 93 26 02 sts 0x0226, r19 |
330c: 20 93 25 02 sts 0x0225, r18 |
3310: 80 91 1f 02 lds r24, 0x021F |
3314: 90 91 20 02 lds r25, 0x0220 |
3318: 97 ff sbrs r25, 7 |
331a: 05 c0 rjmp .+10 ; 0x3326 <CalibrierMittelwert+0x2a4> |
331c: 10 92 20 02 sts 0x0220, r1 |
3320: 10 92 1f 02 sts 0x021F, r1 |
3324: 0a c0 rjmp .+20 ; 0x333a <CalibrierMittelwert+0x2b8> |
3326: 8f 3f cpi r24, 0xFF ; 255 |
3328: 91 05 cpc r25, r1 |
332a: 39 f0 breq .+14 ; 0x333a <CalibrierMittelwert+0x2b8> |
332c: 34 f0 brlt .+12 ; 0x333a <CalibrierMittelwert+0x2b8> |
332e: 8f ef ldi r24, 0xFF ; 255 |
3330: 90 e0 ldi r25, 0x00 ; 0 |
3332: 90 93 20 02 sts 0x0220, r25 |
3336: 80 93 1f 02 sts 0x021F, r24 |
333a: 80 91 21 02 lds r24, 0x0221 |
333e: 90 91 22 02 lds r25, 0x0222 |
3342: 97 ff sbrs r25, 7 |
3344: 05 c0 rjmp .+10 ; 0x3350 <CalibrierMittelwert+0x2ce> |
3346: 10 92 22 02 sts 0x0222, r1 |
334a: 10 92 21 02 sts 0x0221, r1 |
334e: 0a c0 rjmp .+20 ; 0x3364 <CalibrierMittelwert+0x2e2> |
3350: 8f 3f cpi r24, 0xFF ; 255 |
3352: 91 05 cpc r25, r1 |
3354: 39 f0 breq .+14 ; 0x3364 <CalibrierMittelwert+0x2e2> |
3356: 34 f0 brlt .+12 ; 0x3364 <CalibrierMittelwert+0x2e2> |
3358: 8f ef ldi r24, 0xFF ; 255 |
335a: 90 e0 ldi r25, 0x00 ; 0 |
335c: 90 93 22 02 sts 0x0222, r25 |
3360: 80 93 21 02 sts 0x0221, r24 |
3364: 80 91 23 02 lds r24, 0x0223 |
3368: 90 91 24 02 lds r25, 0x0224 |
336c: 97 ff sbrs r25, 7 |
336e: 05 c0 rjmp .+10 ; 0x337a <CalibrierMittelwert+0x2f8> |
3370: 10 92 24 02 sts 0x0224, r1 |
3374: 10 92 23 02 sts 0x0223, r1 |
3378: 0a c0 rjmp .+20 ; 0x338e <CalibrierMittelwert+0x30c> |
337a: 8f 3f cpi r24, 0xFF ; 255 |
337c: 91 05 cpc r25, r1 |
337e: 39 f0 breq .+14 ; 0x338e <CalibrierMittelwert+0x30c> |
3380: 34 f0 brlt .+12 ; 0x338e <CalibrierMittelwert+0x30c> |
3382: 8f ef ldi r24, 0xFF ; 255 |
3384: 90 e0 ldi r25, 0x00 ; 0 |
3386: 90 93 24 02 sts 0x0224, r25 |
338a: 80 93 23 02 sts 0x0223, r24 |
338e: 80 91 25 02 lds r24, 0x0225 |
3392: 90 91 26 02 lds r25, 0x0226 |
3396: 97 ff sbrs r25, 7 |
3398: 05 c0 rjmp .+10 ; 0x33a4 <CalibrierMittelwert+0x322> |
339a: 10 92 26 02 sts 0x0226, r1 |
339e: 10 92 25 02 sts 0x0225, r1 |
33a2: 08 95 ret |
33a4: 8f 3f cpi r24, 0xFF ; 255 |
33a6: 91 05 cpc r25, r1 |
33a8: 39 f0 breq .+14 ; 0x33b8 <CalibrierMittelwert+0x336> |
33aa: 34 f0 brlt .+12 ; 0x33b8 <CalibrierMittelwert+0x336> |
33ac: 8f ef ldi r24, 0xFF ; 255 |
33ae: 90 e0 ldi r25, 0x00 ; 0 |
33b0: 90 93 26 02 sts 0x0226, r25 |
33b4: 80 93 25 02 sts 0x0225, r24 |
33b8: 08 95 ret |
000033ba <ParameterZuordnung>: |
33ba: 1f 93 push r17 |
33bc: 80 91 78 05 lds r24, 0x0578 |
33c0: 8b 3f cpi r24, 0xFB ; 251 |
33c2: 98 f0 brcs .+38 ; 0x33ea <ParameterZuordnung+0x30> |
33c4: 8b 3f cpi r24, 0xFB ; 251 |
33c6: 19 f4 brne .+6 ; 0x33ce <ParameterZuordnung+0x14> |
33c8: 80 91 1f 02 lds r24, 0x021F |
33cc: 0e c0 rjmp .+28 ; 0x33ea <ParameterZuordnung+0x30> |
33ce: 8c 3f cpi r24, 0xFC ; 252 |
33d0: 19 f4 brne .+6 ; 0x33d8 <ParameterZuordnung+0x1e> |
33d2: 80 91 21 02 lds r24, 0x0221 |
33d6: 09 c0 rjmp .+18 ; 0x33ea <ParameterZuordnung+0x30> |
33d8: 8d 3f cpi r24, 0xFD ; 253 |
33da: 19 f4 brne .+6 ; 0x33e2 <ParameterZuordnung+0x28> |
33dc: 80 91 23 02 lds r24, 0x0223 |
33e0: 04 c0 rjmp .+8 ; 0x33ea <ParameterZuordnung+0x30> |
33e2: 8e 3f cpi r24, 0xFE ; 254 |
33e4: 21 f4 brne .+8 ; 0x33ee <ParameterZuordnung+0x34> |
33e6: 80 91 25 02 lds r24, 0x0225 |
33ea: 80 93 81 01 sts 0x0181, r24 |
33ee: 80 91 81 01 lds r24, 0x0181 |
33f2: 88 23 and r24, r24 |
33f4: 19 f4 brne .+6 ; 0x33fc <ParameterZuordnung+0x42> |
33f6: 10 92 81 01 sts 0x0181, r1 |
33fa: 04 c0 rjmp .+8 ; 0x3404 <ParameterZuordnung+0x4a> |
33fc: 8f 3f cpi r24, 0xFF ; 255 |
33fe: 11 f4 brne .+4 ; 0x3404 <ParameterZuordnung+0x4a> |
3400: 80 93 81 01 sts 0x0181, r24 |
3404: 80 91 77 05 lds r24, 0x0577 |
3408: 8b 3f cpi r24, 0xFB ; 251 |
340a: 98 f0 brcs .+38 ; 0x3432 <ParameterZuordnung+0x78> |
340c: 8b 3f cpi r24, 0xFB ; 251 |
340e: 19 f4 brne .+6 ; 0x3416 <ParameterZuordnung+0x5c> |
3410: 80 91 1f 02 lds r24, 0x021F |
3414: 0e c0 rjmp .+28 ; 0x3432 <ParameterZuordnung+0x78> |
3416: 8c 3f cpi r24, 0xFC ; 252 |
3418: 19 f4 brne .+6 ; 0x3420 <ParameterZuordnung+0x66> |
341a: 80 91 21 02 lds r24, 0x0221 |
341e: 09 c0 rjmp .+18 ; 0x3432 <ParameterZuordnung+0x78> |
3420: 8d 3f cpi r24, 0xFD ; 253 |
3422: 19 f4 brne .+6 ; 0x342a <ParameterZuordnung+0x70> |
3424: 80 91 23 02 lds r24, 0x0223 |
3428: 04 c0 rjmp .+8 ; 0x3432 <ParameterZuordnung+0x78> |
342a: 8e 3f cpi r24, 0xFE ; 254 |
342c: 21 f4 brne .+8 ; 0x3436 <ParameterZuordnung+0x7c> |
342e: 80 91 25 02 lds r24, 0x0225 |
3432: 80 93 80 01 sts 0x0180, r24 |
3436: 80 91 80 01 lds r24, 0x0180 |
343a: 88 23 and r24, r24 |
343c: 19 f4 brne .+6 ; 0x3444 <ParameterZuordnung+0x8a> |
343e: 10 92 80 01 sts 0x0180, r1 |
3442: 05 c0 rjmp .+10 ; 0x344e <ParameterZuordnung+0x94> |
3444: 84 36 cpi r24, 0x64 ; 100 |
3446: 18 f0 brcs .+6 ; 0x344e <ParameterZuordnung+0x94> |
3448: 84 e6 ldi r24, 0x64 ; 100 |
344a: 80 93 80 01 sts 0x0180, r24 |
344e: 80 91 79 05 lds r24, 0x0579 |
3452: 8b 3f cpi r24, 0xFB ; 251 |
3454: 98 f0 brcs .+38 ; 0x347c <ParameterZuordnung+0xc2> |
3456: 8b 3f cpi r24, 0xFB ; 251 |
3458: 19 f4 brne .+6 ; 0x3460 <ParameterZuordnung+0xa6> |
345a: 80 91 1f 02 lds r24, 0x021F |
345e: 0e c0 rjmp .+28 ; 0x347c <ParameterZuordnung+0xc2> |
3460: 8c 3f cpi r24, 0xFC ; 252 |
3462: 19 f4 brne .+6 ; 0x346a <ParameterZuordnung+0xb0> |
3464: 80 91 21 02 lds r24, 0x0221 |
3468: 09 c0 rjmp .+18 ; 0x347c <ParameterZuordnung+0xc2> |
346a: 8d 3f cpi r24, 0xFD ; 253 |
346c: 19 f4 brne .+6 ; 0x3474 <ParameterZuordnung+0xba> |
346e: 80 91 23 02 lds r24, 0x0223 |
3472: 04 c0 rjmp .+8 ; 0x347c <ParameterZuordnung+0xc2> |
3474: 8e 3f cpi r24, 0xFE ; 254 |
3476: 21 f4 brne .+8 ; 0x3480 <ParameterZuordnung+0xc6> |
3478: 80 91 25 02 lds r24, 0x0225 |
347c: 80 93 82 01 sts 0x0182, r24 |
3480: 80 91 82 01 lds r24, 0x0182 |
3484: 88 23 and r24, r24 |
3486: 19 f4 brne .+6 ; 0x348e <ParameterZuordnung+0xd4> |
3488: 10 92 82 01 sts 0x0182, r1 |
348c: 05 c0 rjmp .+10 ; 0x3498 <ParameterZuordnung+0xde> |
348e: 84 36 cpi r24, 0x64 ; 100 |
3490: 18 f0 brcs .+6 ; 0x3498 <ParameterZuordnung+0xde> |
3492: 84 e6 ldi r24, 0x64 ; 100 |
3494: 80 93 82 01 sts 0x0182, r24 |
3498: 80 91 7b 05 lds r24, 0x057B |
349c: 8b 3f cpi r24, 0xFB ; 251 |
349e: 98 f0 brcs .+38 ; 0x34c6 <ParameterZuordnung+0x10c> |
34a0: 8b 3f cpi r24, 0xFB ; 251 |
34a2: 19 f4 brne .+6 ; 0x34aa <ParameterZuordnung+0xf0> |
34a4: 80 91 1f 02 lds r24, 0x021F |
34a8: 0e c0 rjmp .+28 ; 0x34c6 <ParameterZuordnung+0x10c> |
34aa: 8c 3f cpi r24, 0xFC ; 252 |
34ac: 19 f4 brne .+6 ; 0x34b4 <ParameterZuordnung+0xfa> |
34ae: 80 91 21 02 lds r24, 0x0221 |
34b2: 09 c0 rjmp .+18 ; 0x34c6 <ParameterZuordnung+0x10c> |
34b4: 8d 3f cpi r24, 0xFD ; 253 |
34b6: 19 f4 brne .+6 ; 0x34be <ParameterZuordnung+0x104> |
34b8: 80 91 23 02 lds r24, 0x0223 |
34bc: 04 c0 rjmp .+8 ; 0x34c6 <ParameterZuordnung+0x10c> |
34be: 8e 3f cpi r24, 0xFE ; 254 |
34c0: 21 f4 brne .+8 ; 0x34ca <ParameterZuordnung+0x110> |
34c2: 80 91 25 02 lds r24, 0x0225 |
34c6: 80 93 83 01 sts 0x0183, r24 |
34ca: 80 91 83 01 lds r24, 0x0183 |
34ce: 88 23 and r24, r24 |
34d0: 19 f4 brne .+6 ; 0x34d8 <ParameterZuordnung+0x11e> |
34d2: 10 92 83 01 sts 0x0183, r1 |
34d6: 04 c0 rjmp .+8 ; 0x34e0 <ParameterZuordnung+0x126> |
34d8: 8f 3f cpi r24, 0xFF ; 255 |
34da: 11 f4 brne .+4 ; 0x34e0 <ParameterZuordnung+0x126> |
34dc: 80 93 83 01 sts 0x0183, r24 |
34e0: 80 91 82 05 lds r24, 0x0582 |
34e4: 8b 3f cpi r24, 0xFB ; 251 |
34e6: 98 f0 brcs .+38 ; 0x350e <ParameterZuordnung+0x154> |
34e8: 8b 3f cpi r24, 0xFB ; 251 |
34ea: 19 f4 brne .+6 ; 0x34f2 <ParameterZuordnung+0x138> |
34ec: 80 91 1f 02 lds r24, 0x021F |
34f0: 0e c0 rjmp .+28 ; 0x350e <ParameterZuordnung+0x154> |
34f2: 8c 3f cpi r24, 0xFC ; 252 |
34f4: 19 f4 brne .+6 ; 0x34fc <ParameterZuordnung+0x142> |
34f6: 80 91 21 02 lds r24, 0x0221 |
34fa: 09 c0 rjmp .+18 ; 0x350e <ParameterZuordnung+0x154> |
34fc: 8d 3f cpi r24, 0xFD ; 253 |
34fe: 19 f4 brne .+6 ; 0x3506 <ParameterZuordnung+0x14c> |
3500: 80 91 23 02 lds r24, 0x0223 |
3504: 04 c0 rjmp .+8 ; 0x350e <ParameterZuordnung+0x154> |
3506: 8e 3f cpi r24, 0xFE ; 254 |
3508: 21 f4 brne .+8 ; 0x3512 <ParameterZuordnung+0x158> |
350a: 80 91 25 02 lds r24, 0x0225 |
350e: 80 93 84 01 sts 0x0184, r24 |
3512: 80 91 84 01 lds r24, 0x0184 |
3516: 88 23 and r24, r24 |
3518: 19 f4 brne .+6 ; 0x3520 <ParameterZuordnung+0x166> |
351a: 10 92 84 01 sts 0x0184, r1 |
351e: 04 c0 rjmp .+8 ; 0x3528 <ParameterZuordnung+0x16e> |
3520: 8f 3f cpi r24, 0xFF ; 255 |
3522: 11 f4 brne .+4 ; 0x3528 <ParameterZuordnung+0x16e> |
3524: 80 93 84 01 sts 0x0184, r24 |
3528: 80 91 83 05 lds r24, 0x0583 |
352c: 8b 3f cpi r24, 0xFB ; 251 |
352e: 98 f0 brcs .+38 ; 0x3556 <ParameterZuordnung+0x19c> |
3530: 8b 3f cpi r24, 0xFB ; 251 |
3532: 19 f4 brne .+6 ; 0x353a <ParameterZuordnung+0x180> |
3534: 80 91 1f 02 lds r24, 0x021F |
3538: 0e c0 rjmp .+28 ; 0x3556 <ParameterZuordnung+0x19c> |
353a: 8c 3f cpi r24, 0xFC ; 252 |
353c: 19 f4 brne .+6 ; 0x3544 <ParameterZuordnung+0x18a> |
353e: 80 91 21 02 lds r24, 0x0221 |
3542: 09 c0 rjmp .+18 ; 0x3556 <ParameterZuordnung+0x19c> |
3544: 8d 3f cpi r24, 0xFD ; 253 |
3546: 19 f4 brne .+6 ; 0x354e <ParameterZuordnung+0x194> |
3548: 80 91 23 02 lds r24, 0x0223 |
354c: 04 c0 rjmp .+8 ; 0x3556 <ParameterZuordnung+0x19c> |
354e: 8e 3f cpi r24, 0xFE ; 254 |
3550: 21 f4 brne .+8 ; 0x355a <ParameterZuordnung+0x1a0> |
3552: 80 91 25 02 lds r24, 0x0225 |
3556: 80 93 85 01 sts 0x0185, r24 |
355a: 80 91 85 01 lds r24, 0x0185 |
355e: 8b 30 cpi r24, 0x0B ; 11 |
3560: 10 f4 brcc .+4 ; 0x3566 <ParameterZuordnung+0x1ac> |
3562: 8a e0 ldi r24, 0x0A ; 10 |
3564: 02 c0 rjmp .+4 ; 0x356a <ParameterZuordnung+0x1b0> |
3566: 8f 3f cpi r24, 0xFF ; 255 |
3568: 11 f4 brne .+4 ; 0x356e <ParameterZuordnung+0x1b4> |
356a: 80 93 85 01 sts 0x0185, r24 |
356e: 80 91 84 05 lds r24, 0x0584 |
3572: 8b 3f cpi r24, 0xFB ; 251 |
3574: 98 f0 brcs .+38 ; 0x359c <ParameterZuordnung+0x1e2> |
3576: 8b 3f cpi r24, 0xFB ; 251 |
3578: 19 f4 brne .+6 ; 0x3580 <ParameterZuordnung+0x1c6> |
357a: 80 91 1f 02 lds r24, 0x021F |
357e: 0e c0 rjmp .+28 ; 0x359c <ParameterZuordnung+0x1e2> |
3580: 8c 3f cpi r24, 0xFC ; 252 |
3582: 19 f4 brne .+6 ; 0x358a <ParameterZuordnung+0x1d0> |
3584: 80 91 21 02 lds r24, 0x0221 |
3588: 09 c0 rjmp .+18 ; 0x359c <ParameterZuordnung+0x1e2> |
358a: 8d 3f cpi r24, 0xFD ; 253 |
358c: 19 f4 brne .+6 ; 0x3594 <ParameterZuordnung+0x1da> |
358e: 80 91 23 02 lds r24, 0x0223 |
3592: 04 c0 rjmp .+8 ; 0x359c <ParameterZuordnung+0x1e2> |
3594: 8e 3f cpi r24, 0xFE ; 254 |
3596: 21 f4 brne .+8 ; 0x35a0 <ParameterZuordnung+0x1e6> |
3598: 80 91 25 02 lds r24, 0x0225 |
359c: 80 93 86 01 sts 0x0186, r24 |
35a0: 80 91 86 01 lds r24, 0x0186 |
35a4: 88 23 and r24, r24 |
35a6: 19 f4 brne .+6 ; 0x35ae <ParameterZuordnung+0x1f4> |
35a8: 10 92 86 01 sts 0x0186, r1 |
35ac: 04 c0 rjmp .+8 ; 0x35b6 <ParameterZuordnung+0x1fc> |
35ae: 8f 3f cpi r24, 0xFF ; 255 |
35b0: 11 f4 brne .+4 ; 0x35b6 <ParameterZuordnung+0x1fc> |
35b2: 80 93 86 01 sts 0x0186, r24 |
35b6: 80 91 89 05 lds r24, 0x0589 |
35ba: 8b 3f cpi r24, 0xFB ; 251 |
35bc: 98 f0 brcs .+38 ; 0x35e4 <ParameterZuordnung+0x22a> |
35be: 8b 3f cpi r24, 0xFB ; 251 |
35c0: 19 f4 brne .+6 ; 0x35c8 <ParameterZuordnung+0x20e> |
35c2: 80 91 1f 02 lds r24, 0x021F |
35c6: 0e c0 rjmp .+28 ; 0x35e4 <ParameterZuordnung+0x22a> |
35c8: 8c 3f cpi r24, 0xFC ; 252 |
35ca: 19 f4 brne .+6 ; 0x35d2 <ParameterZuordnung+0x218> |
35cc: 80 91 21 02 lds r24, 0x0221 |
35d0: 09 c0 rjmp .+18 ; 0x35e4 <ParameterZuordnung+0x22a> |
35d2: 8d 3f cpi r24, 0xFD ; 253 |
35d4: 19 f4 brne .+6 ; 0x35dc <ParameterZuordnung+0x222> |
35d6: 80 91 23 02 lds r24, 0x0223 |
35da: 04 c0 rjmp .+8 ; 0x35e4 <ParameterZuordnung+0x22a> |
35dc: 8e 3f cpi r24, 0xFE ; 254 |
35de: 21 f4 brne .+8 ; 0x35e8 <ParameterZuordnung+0x22e> |
35e0: 80 91 25 02 lds r24, 0x0225 |
35e4: 80 93 88 01 sts 0x0188, r24 |
35e8: 80 91 88 01 lds r24, 0x0188 |
35ec: 88 23 and r24, r24 |
35ee: 19 f4 brne .+6 ; 0x35f6 <ParameterZuordnung+0x23c> |
35f0: 10 92 88 01 sts 0x0188, r1 |
35f4: 04 c0 rjmp .+8 ; 0x35fe <ParameterZuordnung+0x244> |
35f6: 8f 3f cpi r24, 0xFF ; 255 |
35f8: 11 f4 brne .+4 ; 0x35fe <ParameterZuordnung+0x244> |
35fa: 80 93 88 01 sts 0x0188, r24 |
35fe: 80 91 8a 05 lds r24, 0x058A |
3602: 8b 3f cpi r24, 0xFB ; 251 |
3604: 98 f0 brcs .+38 ; 0x362c <ParameterZuordnung+0x272> |
3606: 8b 3f cpi r24, 0xFB ; 251 |
3608: 19 f4 brne .+6 ; 0x3610 <ParameterZuordnung+0x256> |
360a: 80 91 1f 02 lds r24, 0x021F |
360e: 0e c0 rjmp .+28 ; 0x362c <ParameterZuordnung+0x272> |
3610: 8c 3f cpi r24, 0xFC ; 252 |
3612: 19 f4 brne .+6 ; 0x361a <ParameterZuordnung+0x260> |
3614: 80 91 21 02 lds r24, 0x0221 |
3618: 09 c0 rjmp .+18 ; 0x362c <ParameterZuordnung+0x272> |
361a: 8d 3f cpi r24, 0xFD ; 253 |
361c: 19 f4 brne .+6 ; 0x3624 <ParameterZuordnung+0x26a> |
361e: 80 91 23 02 lds r24, 0x0223 |
3622: 04 c0 rjmp .+8 ; 0x362c <ParameterZuordnung+0x272> |
3624: 8e 3f cpi r24, 0xFE ; 254 |
3626: 21 f4 brne .+8 ; 0x3630 <ParameterZuordnung+0x276> |
3628: 80 91 25 02 lds r24, 0x0225 |
362c: 80 93 33 02 sts 0x0233, r24 |
3630: 80 91 33 02 lds r24, 0x0233 |
3634: 88 23 and r24, r24 |
3636: 19 f4 brne .+6 ; 0x363e <ParameterZuordnung+0x284> |
3638: 10 92 33 02 sts 0x0233, r1 |
363c: 04 c0 rjmp .+8 ; 0x3646 <ParameterZuordnung+0x28c> |
363e: 8f 3f cpi r24, 0xFF ; 255 |
3640: 11 f4 brne .+4 ; 0x3646 <ParameterZuordnung+0x28c> |
3642: 80 93 33 02 sts 0x0233, r24 |
3646: 80 91 8b 05 lds r24, 0x058B |
364a: 8b 3f cpi r24, 0xFB ; 251 |
364c: 98 f0 brcs .+38 ; 0x3674 <ParameterZuordnung+0x2ba> |
364e: 8b 3f cpi r24, 0xFB ; 251 |
3650: 19 f4 brne .+6 ; 0x3658 <ParameterZuordnung+0x29e> |
3652: 80 91 1f 02 lds r24, 0x021F |
3656: 0e c0 rjmp .+28 ; 0x3674 <ParameterZuordnung+0x2ba> |
3658: 8c 3f cpi r24, 0xFC ; 252 |
365a: 19 f4 brne .+6 ; 0x3662 <ParameterZuordnung+0x2a8> |
365c: 80 91 21 02 lds r24, 0x0221 |
3660: 09 c0 rjmp .+18 ; 0x3674 <ParameterZuordnung+0x2ba> |
3662: 8d 3f cpi r24, 0xFD ; 253 |
3664: 19 f4 brne .+6 ; 0x366c <ParameterZuordnung+0x2b2> |
3666: 80 91 23 02 lds r24, 0x0223 |
366a: 04 c0 rjmp .+8 ; 0x3674 <ParameterZuordnung+0x2ba> |
366c: 8e 3f cpi r24, 0xFE ; 254 |
366e: 21 f4 brne .+8 ; 0x3678 <ParameterZuordnung+0x2be> |
3670: 80 91 25 02 lds r24, 0x0225 |
3674: 80 93 34 02 sts 0x0234, r24 |
3678: 80 91 34 02 lds r24, 0x0234 |
367c: 88 23 and r24, r24 |
367e: 19 f4 brne .+6 ; 0x3686 <ParameterZuordnung+0x2cc> |
3680: 10 92 34 02 sts 0x0234, r1 |
3684: 04 c0 rjmp .+8 ; 0x368e <ParameterZuordnung+0x2d4> |
3686: 8f 3f cpi r24, 0xFF ; 255 |
3688: 11 f4 brne .+4 ; 0x368e <ParameterZuordnung+0x2d4> |
368a: 80 93 34 02 sts 0x0234, r24 |
368e: 80 91 8c 05 lds r24, 0x058C |
3692: 8b 3f cpi r24, 0xFB ; 251 |
3694: 98 f0 brcs .+38 ; 0x36bc <ParameterZuordnung+0x302> |
3696: 8b 3f cpi r24, 0xFB ; 251 |
3698: 19 f4 brne .+6 ; 0x36a0 <ParameterZuordnung+0x2e6> |
369a: 80 91 1f 02 lds r24, 0x021F |
369e: 0e c0 rjmp .+28 ; 0x36bc <ParameterZuordnung+0x302> |
36a0: 8c 3f cpi r24, 0xFC ; 252 |
36a2: 19 f4 brne .+6 ; 0x36aa <ParameterZuordnung+0x2f0> |
36a4: 80 91 21 02 lds r24, 0x0221 |
36a8: 09 c0 rjmp .+18 ; 0x36bc <ParameterZuordnung+0x302> |
36aa: 8d 3f cpi r24, 0xFD ; 253 |
36ac: 19 f4 brne .+6 ; 0x36b4 <ParameterZuordnung+0x2fa> |
36ae: 80 91 23 02 lds r24, 0x0223 |
36b2: 04 c0 rjmp .+8 ; 0x36bc <ParameterZuordnung+0x302> |
36b4: 8e 3f cpi r24, 0xFE ; 254 |
36b6: 21 f4 brne .+8 ; 0x36c0 <ParameterZuordnung+0x306> |
36b8: 80 91 25 02 lds r24, 0x0225 |
36bc: 80 93 35 02 sts 0x0235, r24 |
36c0: 80 91 35 02 lds r24, 0x0235 |
36c4: 88 23 and r24, r24 |
36c6: 19 f4 brne .+6 ; 0x36ce <ParameterZuordnung+0x314> |
36c8: 10 92 35 02 sts 0x0235, r1 |
36cc: 04 c0 rjmp .+8 ; 0x36d6 <ParameterZuordnung+0x31c> |
36ce: 8f 3f cpi r24, 0xFF ; 255 |
36d0: 11 f4 brne .+4 ; 0x36d6 <ParameterZuordnung+0x31c> |
36d2: 80 93 35 02 sts 0x0235, r24 |
36d6: 80 91 8d 05 lds r24, 0x058D |
36da: 8b 3f cpi r24, 0xFB ; 251 |
36dc: 98 f0 brcs .+38 ; 0x3704 <ParameterZuordnung+0x34a> |
36de: 8b 3f cpi r24, 0xFB ; 251 |
36e0: 19 f4 brne .+6 ; 0x36e8 <ParameterZuordnung+0x32e> |
36e2: 80 91 1f 02 lds r24, 0x021F |
36e6: 0e c0 rjmp .+28 ; 0x3704 <ParameterZuordnung+0x34a> |
36e8: 8c 3f cpi r24, 0xFC ; 252 |
36ea: 19 f4 brne .+6 ; 0x36f2 <ParameterZuordnung+0x338> |
36ec: 80 91 21 02 lds r24, 0x0221 |
36f0: 09 c0 rjmp .+18 ; 0x3704 <ParameterZuordnung+0x34a> |
36f2: 8d 3f cpi r24, 0xFD ; 253 |
36f4: 19 f4 brne .+6 ; 0x36fc <ParameterZuordnung+0x342> |
36f6: 80 91 23 02 lds r24, 0x0223 |
36fa: 04 c0 rjmp .+8 ; 0x3704 <ParameterZuordnung+0x34a> |
36fc: 8e 3f cpi r24, 0xFE ; 254 |
36fe: 21 f4 brne .+8 ; 0x3708 <ParameterZuordnung+0x34e> |
3700: 80 91 25 02 lds r24, 0x0225 |
3704: 80 93 36 02 sts 0x0236, r24 |
3708: 80 91 36 02 lds r24, 0x0236 |
370c: 88 23 and r24, r24 |
370e: 19 f4 brne .+6 ; 0x3716 <ParameterZuordnung+0x35c> |
3710: 10 92 36 02 sts 0x0236, r1 |
3714: 04 c0 rjmp .+8 ; 0x371e <ParameterZuordnung+0x364> |
3716: 8f 3f cpi r24, 0xFF ; 255 |
3718: 11 f4 brne .+4 ; 0x371e <ParameterZuordnung+0x364> |
371a: 80 93 36 02 sts 0x0236, r24 |
371e: 90 91 8e 05 lds r25, 0x058E |
3722: 9b 3f cpi r25, 0xFB ; 251 |
3724: b0 f0 brcs .+44 ; 0x3752 <ParameterZuordnung+0x398> |
3726: 9b 3f cpi r25, 0xFB ; 251 |
3728: 19 f4 brne .+6 ; 0x3730 <ParameterZuordnung+0x376> |
372a: 80 91 1f 02 lds r24, 0x021F |
372e: 04 c0 rjmp .+8 ; 0x3738 <ParameterZuordnung+0x37e> |
3730: 9c 3f cpi r25, 0xFC ; 252 |
3732: 29 f4 brne .+10 ; 0x373e <ParameterZuordnung+0x384> |
3734: 80 91 21 02 lds r24, 0x0221 |
3738: 80 93 89 01 sts 0x0189, r24 |
373c: 0c c0 rjmp .+24 ; 0x3756 <ParameterZuordnung+0x39c> |
373e: 9d 3f cpi r25, 0xFD ; 253 |
3740: 19 f4 brne .+6 ; 0x3748 <ParameterZuordnung+0x38e> |
3742: 80 91 23 02 lds r24, 0x0223 |
3746: f8 cf rjmp .-16 ; 0x3738 <ParameterZuordnung+0x37e> |
3748: 9e 3f cpi r25, 0xFE ; 254 |
374a: 29 f4 brne .+10 ; 0x3756 <ParameterZuordnung+0x39c> |
374c: 80 91 25 02 lds r24, 0x0225 |
3750: f3 cf rjmp .-26 ; 0x3738 <ParameterZuordnung+0x37e> |
3752: 90 93 89 01 sts 0x0189, r25 |
3756: 80 91 89 01 lds r24, 0x0189 |
375a: 88 23 and r24, r24 |
375c: 19 f4 brne .+6 ; 0x3764 <ParameterZuordnung+0x3aa> |
375e: 10 92 89 01 sts 0x0189, r1 |
3762: 04 c0 rjmp .+8 ; 0x376c <ParameterZuordnung+0x3b2> |
3764: 8f 3f cpi r24, 0xFF ; 255 |
3766: 11 f4 brne .+4 ; 0x376c <ParameterZuordnung+0x3b2> |
3768: 80 93 89 01 sts 0x0189, r24 |
376c: 9b 3f cpi r25, 0xFB ; 251 |
376e: b0 f0 brcs .+44 ; 0x379c <ParameterZuordnung+0x3e2> |
3770: 9b 3f cpi r25, 0xFB ; 251 |
3772: 19 f4 brne .+6 ; 0x377a <ParameterZuordnung+0x3c0> |
3774: 80 91 1f 02 lds r24, 0x021F |
3778: 04 c0 rjmp .+8 ; 0x3782 <ParameterZuordnung+0x3c8> |
377a: 9c 3f cpi r25, 0xFC ; 252 |
377c: 29 f4 brne .+10 ; 0x3788 <ParameterZuordnung+0x3ce> |
377e: 80 91 21 02 lds r24, 0x0221 |
3782: 80 93 89 01 sts 0x0189, r24 |
3786: 0c c0 rjmp .+24 ; 0x37a0 <ParameterZuordnung+0x3e6> |
3788: 9d 3f cpi r25, 0xFD ; 253 |
378a: 19 f4 brne .+6 ; 0x3792 <ParameterZuordnung+0x3d8> |
378c: 80 91 23 02 lds r24, 0x0223 |
3790: f8 cf rjmp .-16 ; 0x3782 <ParameterZuordnung+0x3c8> |
3792: 9e 3f cpi r25, 0xFE ; 254 |
3794: 29 f4 brne .+10 ; 0x37a0 <ParameterZuordnung+0x3e6> |
3796: 80 91 25 02 lds r24, 0x0225 |
379a: f3 cf rjmp .-26 ; 0x3782 <ParameterZuordnung+0x3c8> |
379c: 90 93 89 01 sts 0x0189, r25 |
37a0: 80 91 89 01 lds r24, 0x0189 |
37a4: 88 23 and r24, r24 |
37a6: 19 f4 brne .+6 ; 0x37ae <ParameterZuordnung+0x3f4> |
37a8: 10 92 89 01 sts 0x0189, r1 |
37ac: 04 c0 rjmp .+8 ; 0x37b6 <ParameterZuordnung+0x3fc> |
37ae: 8f 3f cpi r24, 0xFF ; 255 |
37b0: 11 f4 brne .+4 ; 0x37b6 <ParameterZuordnung+0x3fc> |
37b2: 80 93 89 01 sts 0x0189, r24 |
37b6: 9b 3f cpi r25, 0xFB ; 251 |
37b8: b0 f0 brcs .+44 ; 0x37e6 <ParameterZuordnung+0x42c> |
37ba: 9b 3f cpi r25, 0xFB ; 251 |
37bc: 19 f4 brne .+6 ; 0x37c4 <ParameterZuordnung+0x40a> |
37be: 80 91 1f 02 lds r24, 0x021F |
37c2: 04 c0 rjmp .+8 ; 0x37cc <ParameterZuordnung+0x412> |
37c4: 9c 3f cpi r25, 0xFC ; 252 |
37c6: 29 f4 brne .+10 ; 0x37d2 <ParameterZuordnung+0x418> |
37c8: 80 91 21 02 lds r24, 0x0221 |
37cc: 80 93 89 01 sts 0x0189, r24 |
37d0: 0c c0 rjmp .+24 ; 0x37ea <ParameterZuordnung+0x430> |
37d2: 9d 3f cpi r25, 0xFD ; 253 |
37d4: 19 f4 brne .+6 ; 0x37dc <ParameterZuordnung+0x422> |
37d6: 80 91 23 02 lds r24, 0x0223 |
37da: f8 cf rjmp .-16 ; 0x37cc <ParameterZuordnung+0x412> |
37dc: 9e 3f cpi r25, 0xFE ; 254 |
37de: 29 f4 brne .+10 ; 0x37ea <ParameterZuordnung+0x430> |
37e0: 80 91 25 02 lds r24, 0x0225 |
37e4: f3 cf rjmp .-26 ; 0x37cc <ParameterZuordnung+0x412> |
37e6: 90 93 89 01 sts 0x0189, r25 |
37ea: 80 91 89 01 lds r24, 0x0189 |
37ee: 88 23 and r24, r24 |
37f0: 19 f4 brne .+6 ; 0x37f8 <ParameterZuordnung+0x43e> |
37f2: 10 92 89 01 sts 0x0189, r1 |
37f6: 04 c0 rjmp .+8 ; 0x3800 <ParameterZuordnung+0x446> |
37f8: 8f 3f cpi r24, 0xFF ; 255 |
37fa: 11 f4 brne .+4 ; 0x3800 <ParameterZuordnung+0x446> |
37fc: 80 93 89 01 sts 0x0189, r24 |
3800: 10 91 88 01 lds r17, 0x0188 |
3804: 61 2f mov r22, r17 |
3806: 77 27 eor r23, r23 |
3808: 67 fd sbrc r22, 7 |
380a: 70 95 com r23 |
380c: 87 2f mov r24, r23 |
380e: 97 2f mov r25, r23 |
3810: 0e 94 84 2b call 0x5708 ; 0x5708 <__floatsisf> |
3814: 17 ff sbrs r17, 7 |
3816: 06 c0 rjmp .+12 ; 0x3824 <ParameterZuordnung+0x46a> |
3818: 20 e0 ldi r18, 0x00 ; 0 |
381a: 30 e0 ldi r19, 0x00 ; 0 |
381c: 40 e8 ldi r20, 0x80 ; 128 |
381e: 53 e4 ldi r21, 0x43 ; 67 |
3820: 0e 94 df 2a call 0x55be ; 0x55be <__addsf3> |
3824: 27 e1 ldi r18, 0x17 ; 23 |
3826: 37 eb ldi r19, 0xB7 ; 183 |
3828: 41 ed ldi r20, 0xD1 ; 209 |
382a: 58 e3 ldi r21, 0x38 ; 56 |
382c: 0e 94 fe 2b call 0x57fc ; 0x57fc <__mulsf3> |
3830: 60 93 7c 01 sts 0x017C, r22 |
3834: 70 93 7d 01 sts 0x017D, r23 |
3838: 80 93 7e 01 sts 0x017E, r24 |
383c: 90 93 7f 01 sts 0x017F, r25 |
3840: 80 91 80 05 lds r24, 0x0580 |
3844: 80 93 b4 05 sts 0x05B4, r24 |
3848: 80 91 7f 05 lds r24, 0x057F |
384c: 80 93 ab 05 sts 0x05AB, r24 |
3850: 1f 91 pop r17 |
3852: 08 95 ret |
00003854 <DefaultKonstanten2>: |
3854: 81 e0 ldi r24, 0x01 ; 1 |
3856: 80 93 6d 05 sts 0x056D, r24 |
385a: 42 e0 ldi r20, 0x02 ; 2 |
385c: 40 93 6e 05 sts 0x056E, r20 |
3860: 83 e0 ldi r24, 0x03 ; 3 |
3862: 80 93 6f 05 sts 0x056F, r24 |
3866: 24 e0 ldi r18, 0x04 ; 4 |
3868: 20 93 70 05 sts 0x0570, r18 |
386c: 35 e0 ldi r19, 0x05 ; 5 |
386e: 30 93 71 05 sts 0x0571, r19 |
3872: 86 e0 ldi r24, 0x06 ; 6 |
3874: 80 93 72 05 sts 0x0572, r24 |
3878: 87 e0 ldi r24, 0x07 ; 7 |
387a: 80 93 73 05 sts 0x0573, r24 |
387e: 10 92 75 05 sts 0x0575, r1 |
3882: 8e e1 ldi r24, 0x1E ; 30 |
3884: 80 93 76 05 sts 0x0576, r24 |
3888: 8b ef ldi r24, 0xFB ; 251 |
388a: 80 93 78 05 sts 0x0578, r24 |
388e: 8a e0 ldi r24, 0x0A ; 10 |
3890: 80 93 79 05 sts 0x0579, r24 |
3894: 92 e3 ldi r25, 0x32 ; 50 |
3896: 90 93 77 05 sts 0x0577, r25 |
389a: 90 93 7b 05 sts 0x057B, r25 |
389e: 40 93 7a 05 sts 0x057A, r20 |
38a2: 20 93 7c 05 sts 0x057C, r18 |
38a6: 10 92 7d 05 sts 0x057D, r1 |
38aa: 80 e1 ldi r24, 0x10 ; 16 |
38ac: 80 93 7e 05 sts 0x057E, r24 |
38b0: 8f e0 ldi r24, 0x0F ; 15 |
38b2: 80 93 7f 05 sts 0x057F, r24 |
38b6: 8a ef ldi r24, 0xFA ; 250 |
38b8: 80 93 80 05 sts 0x0580, r24 |
38bc: 8a e1 ldi r24, 0x1A ; 26 |
38be: 80 93 81 05 sts 0x0581, r24 |
38c2: 80 e8 ldi r24, 0x80 ; 128 |
38c4: 80 93 82 05 sts 0x0582, r24 |
38c8: 8f ea ldi r24, 0xAF ; 175 |
38ca: 80 93 83 05 sts 0x0583, r24 |
38ce: 80 93 84 05 sts 0x0584, r24 |
38d2: 8a e5 ldi r24, 0x5A ; 90 |
38d4: 80 93 85 05 sts 0x0585, r24 |
38d8: 83 e2 ldi r24, 0x23 ; 35 |
38da: 80 93 86 05 sts 0x0586, r24 |
38de: 84 e1 ldi r24, 0x14 ; 20 |
38e0: 80 93 87 05 sts 0x0587, r24 |
38e4: 10 92 88 05 sts 0x0588, r1 |
38e8: 30 93 89 05 sts 0x0589, r19 |
38ec: 10 92 8a 05 sts 0x058A, r1 |
38f0: 10 92 8b 05 sts 0x058B, r1 |
38f4: 10 92 8c 05 sts 0x058C, r1 |
38f8: 10 92 8d 05 sts 0x058D, r1 |
38fc: 84 e6 ldi r24, 0x64 ; 100 |
38fe: 80 93 8e 05 sts 0x058E, r24 |
3902: 88 e2 ldi r24, 0x28 ; 40 |
3904: 80 93 8f 05 sts 0x058F, r24 |
3908: 10 92 93 05 sts 0x0593, r1 |
390c: 90 93 90 05 sts 0x0590, r25 |
3910: 86 e9 ldi r24, 0x96 ; 150 |
3912: 80 93 91 05 sts 0x0591, r24 |
3916: 30 93 92 05 sts 0x0592, r19 |
391a: ab e9 ldi r26, 0x9B ; 155 |
391c: b5 e0 ldi r27, 0x05 ; 5 |
391e: e8 e6 ldi r30, 0x68 ; 104 |
3920: f1 e0 ldi r31, 0x01 ; 1 |
3922: 8c e0 ldi r24, 0x0C ; 12 |
3924: 01 90 ld r0, Z+ |
3926: 0d 92 st X+, r0 |
3928: 81 50 subi r24, 0x01 ; 1 |
392a: e1 f7 brne .-8 ; 0x3924 <DefaultKonstanten2+0xd0> |
392c: 08 95 ret |
0000392e <DefaultKonstanten1>: |
392e: 81 e0 ldi r24, 0x01 ; 1 |
3930: 80 93 6d 05 sts 0x056D, r24 |
3934: 52 e0 ldi r21, 0x02 ; 2 |
3936: 50 93 6e 05 sts 0x056E, r21 |
393a: 83 e0 ldi r24, 0x03 ; 3 |
393c: 80 93 6f 05 sts 0x056F, r24 |
3940: 44 e0 ldi r20, 0x04 ; 4 |
3942: 40 93 70 05 sts 0x0570, r20 |
3946: 35 e0 ldi r19, 0x05 ; 5 |
3948: 30 93 71 05 sts 0x0571, r19 |
394c: 86 e0 ldi r24, 0x06 ; 6 |
394e: 80 93 72 05 sts 0x0572, r24 |
3952: 87 e0 ldi r24, 0x07 ; 7 |
3954: 80 93 73 05 sts 0x0573, r24 |
3958: 28 e0 ldi r18, 0x08 ; 8 |
395a: 20 93 74 05 sts 0x0574, r18 |
395e: 10 92 75 05 sts 0x0575, r1 |
3962: 9e e1 ldi r25, 0x1E ; 30 |
3964: 90 93 76 05 sts 0x0576, r25 |
3968: 8b ef ldi r24, 0xFB ; 251 |
396a: 80 93 78 05 sts 0x0578, r24 |
396e: 8a e0 ldi r24, 0x0A ; 10 |
3970: 80 93 79 05 sts 0x0579, r24 |
3974: 86 e4 ldi r24, 0x46 ; 70 |
3976: 80 93 77 05 sts 0x0577, r24 |
397a: 90 93 7b 05 sts 0x057B, r25 |
397e: 50 93 7a 05 sts 0x057A, r21 |
3982: 40 93 7c 05 sts 0x057C, r20 |
3986: 20 93 7d 05 sts 0x057D, r18 |
398a: 80 e1 ldi r24, 0x10 ; 16 |
398c: 80 93 7e 05 sts 0x057E, r24 |
3990: 8f e0 ldi r24, 0x0F ; 15 |
3992: 80 93 7f 05 sts 0x057F, r24 |
3996: 8a ef ldi r24, 0xFA ; 250 |
3998: 80 93 80 05 sts 0x0580, r24 |
399c: 8a e1 ldi r24, 0x1A ; 26 |
399e: 80 93 81 05 sts 0x0581, r24 |
39a2: 80 e8 ldi r24, 0x80 ; 128 |
39a4: 80 93 82 05 sts 0x0582, r24 |
39a8: 88 e7 ldi r24, 0x78 ; 120 |
39aa: 80 93 83 05 sts 0x0583, r24 |
39ae: 96 e9 ldi r25, 0x96 ; 150 |
39b0: 90 93 84 05 sts 0x0584, r25 |
39b4: 8a e5 ldi r24, 0x5A ; 90 |
39b6: 80 93 85 05 sts 0x0585, r24 |
39ba: 83 e2 ldi r24, 0x23 ; 35 |
39bc: 80 93 86 05 sts 0x0586, r24 |
39c0: 84 e1 ldi r24, 0x14 ; 20 |
39c2: 80 93 87 05 sts 0x0587, r24 |
39c6: 10 92 88 05 sts 0x0588, r1 |
39ca: 30 93 89 05 sts 0x0589, r19 |
39ce: 10 92 8a 05 sts 0x058A, r1 |
39d2: 10 92 8b 05 sts 0x058B, r1 |
39d6: 10 92 8c 05 sts 0x058C, r1 |
39da: 10 92 8d 05 sts 0x058D, r1 |
39de: 84 e6 ldi r24, 0x64 ; 100 |
39e0: 80 93 8e 05 sts 0x058E, r24 |
39e4: 88 e2 ldi r24, 0x28 ; 40 |
39e6: 80 93 8f 05 sts 0x058F, r24 |
39ea: 10 92 93 05 sts 0x0593, r1 |
39ee: 82 e3 ldi r24, 0x32 ; 50 |
39f0: 80 93 90 05 sts 0x0590, r24 |
39f4: 90 93 91 05 sts 0x0591, r25 |
39f8: 30 93 92 05 sts 0x0592, r19 |
39fc: ab e9 ldi r26, 0x9B ; 155 |
39fe: b5 e0 ldi r27, 0x05 ; 5 |
3a00: e0 e7 ldi r30, 0x70 ; 112 |
3a02: f1 e0 ldi r31, 0x01 ; 1 |
3a04: 8c e0 ldi r24, 0x0C ; 12 |
3a06: 01 90 ld r0, Z+ |
3a08: 0d 92 st X+, r0 |
3a0a: 81 50 subi r24, 0x01 ; 1 |
3a0c: e1 f7 brne .-8 ; 0x3a06 <DefaultKonstanten1+0xd8> |
3a0e: 08 95 ret |
00003a10 <SendMotorData>: |
3a10: 80 91 2e 02 lds r24, 0x022E |
3a14: 88 23 and r24, r24 |
3a16: 01 f5 brne .+64 ; 0x3a58 <SendMotorData+0x48> |
3a18: 10 92 97 02 sts 0x0297, r1 |
3a1c: 10 92 96 02 sts 0x0296, r1 |
3a20: 10 92 9a 02 sts 0x029A, r1 |
3a24: 10 92 a6 02 sts 0x02A6, r1 |
3a28: 80 91 98 01 lds r24, 0x0198 |
3a2c: 88 23 and r24, r24 |
3a2e: 11 f0 breq .+4 ; 0x3a34 <SendMotorData+0x24> |
3a30: 80 93 96 02 sts 0x0296, r24 |
3a34: 80 91 99 01 lds r24, 0x0199 |
3a38: 88 23 and r24, r24 |
3a3a: 11 f0 breq .+4 ; 0x3a40 <SendMotorData+0x30> |
3a3c: 80 93 97 02 sts 0x0297, r24 |
3a40: 80 91 9a 01 lds r24, 0x019A |
3a44: 88 23 and r24, r24 |
3a46: 11 f0 breq .+4 ; 0x3a4c <SendMotorData+0x3c> |
3a48: 80 93 a6 02 sts 0x02A6, r24 |
3a4c: 80 91 9b 01 lds r24, 0x019B |
3a50: 88 23 and r24, r24 |
3a52: 11 f0 breq .+4 ; 0x3a58 <SendMotorData+0x48> |
3a54: 80 93 9a 02 sts 0x029A, r24 |
3a58: 80 91 96 02 lds r24, 0x0296 |
3a5c: 99 27 eor r25, r25 |
3a5e: 90 93 03 05 sts 0x0503, r25 |
3a62: 80 93 02 05 sts 0x0502, r24 |
3a66: 80 91 97 02 lds r24, 0x0297 |
3a6a: 99 27 eor r25, r25 |
3a6c: 90 93 05 05 sts 0x0505, r25 |
3a70: 80 93 04 05 sts 0x0504, r24 |
3a74: 80 91 a6 02 lds r24, 0x02A6 |
3a78: 99 27 eor r25, r25 |
3a7a: 90 93 07 05 sts 0x0507, r25 |
3a7e: 80 93 06 05 sts 0x0506, r24 |
3a82: 80 91 9a 02 lds r24, 0x029A |
3a86: 99 27 eor r25, r25 |
3a88: 90 93 09 05 sts 0x0509, r25 |
3a8c: 80 93 08 05 sts 0x0508, r24 |
3a90: 10 92 cf 01 sts 0x01CF, r1 |
3a94: 10 92 d0 01 sts 0x01D0, r1 |
3a98: 0e 94 1a 14 call 0x2834 ; 0x2834 <i2c_start> |
3a9c: 08 95 ret |
00003a9e <SetNeutral>: |
3a9e: cf 93 push r28 |
3aa0: df 93 push r29 |
3aa2: 10 92 de 01 sts 0x01DE, r1 |
3aa6: 10 92 dd 01 sts 0x01DD, r1 |
3aaa: 10 92 e0 01 sts 0x01E0, r1 |
3aae: 10 92 df 01 sts 0x01DF, r1 |
3ab2: 80 e0 ldi r24, 0x00 ; 0 |
3ab4: 90 e0 ldi r25, 0x00 ; 0 |
3ab6: a0 e0 ldi r26, 0x00 ; 0 |
3ab8: b0 e0 ldi r27, 0x00 ; 0 |
3aba: 80 93 e1 01 sts 0x01E1, r24 |
3abe: 90 93 e2 01 sts 0x01E2, r25 |
3ac2: a0 93 e3 01 sts 0x01E3, r26 |
3ac6: b0 93 e4 01 sts 0x01E4, r27 |
3aca: 10 92 d8 01 sts 0x01D8, r1 |
3ace: 10 92 d7 01 sts 0x01D7, r1 |
3ad2: 10 92 da 01 sts 0x01DA, r1 |
3ad6: 10 92 d9 01 sts 0x01D9, r1 |
3ada: 10 92 dc 01 sts 0x01DC, r1 |
3ade: 10 92 db 01 sts 0x01DB, r1 |
3ae2: 0e 94 41 18 call 0x3082 ; 0x3082 <CalibrierMittelwert> |
3ae6: 85 e0 ldi r24, 0x05 ; 5 |
3ae8: 90 e0 ldi r25, 0x00 ; 0 |
3aea: 0e 94 fb 0b call 0x17f6 ; 0x17f6 <SetDelay> |
3aee: ec 01 movw r28, r24 |
3af0: ce 01 movw r24, r28 |
3af2: 0e 94 04 0c call 0x1808 ; 0x1808 <CheckDelay> |
3af6: 88 23 and r24, r24 |
3af8: d9 f3 breq .-10 ; 0x3af0 <SetNeutral+0x52> |
3afa: 0e 94 41 18 call 0x3082 ; 0x3082 <CalibrierMittelwert> |
3afe: 80 91 75 05 lds r24, 0x0575 |
3b02: 80 ff sbrs r24, 0 |
3b04: 10 c0 rjmp .+32 ; 0x3b26 <SetNeutral+0x88> |
3b06: 80 91 0a 01 lds r24, 0x010A |
3b0a: 90 91 0b 01 lds r25, 0x010B |
3b0e: 87 5b subi r24, 0xB7 ; 183 |
3b10: 93 40 sbci r25, 0x03 ; 3 |
3b12: 38 f4 brcc .+14 ; 0x3b22 <SetNeutral+0x84> |
3b14: 80 91 0a 01 lds r24, 0x010A |
3b18: 90 91 0b 01 lds r25, 0x010B |
3b1c: 8e 5e subi r24, 0xEE ; 238 |
3b1e: 92 40 sbci r25, 0x02 ; 2 |
3b20: 10 f4 brcc .+4 ; 0x3b26 <SetNeutral+0x88> |
3b22: 0e 94 20 10 call 0x2040 ; 0x2040 <SucheLuftruckOffset> |
3b26: 80 91 a9 05 lds r24, 0x05A9 |
3b2a: 90 91 aa 05 lds r25, 0x05AA |
3b2e: 97 ff sbrs r25, 7 |
3b30: 03 c0 rjmp .+6 ; 0x3b38 <SetNeutral+0x9a> |
3b32: 90 95 com r25 |
3b34: 81 95 neg r24 |
3b36: 9f 4f sbci r25, 0xFF ; 255 |
3b38: 90 93 d8 01 sts 0x01D8, r25 |
3b3c: 80 93 d7 01 sts 0x01D7, r24 |
3b40: 80 91 a7 05 lds r24, 0x05A7 |
3b44: 90 91 a8 05 lds r25, 0x05A8 |
3b48: 97 ff sbrs r25, 7 |
3b4a: 03 c0 rjmp .+6 ; 0x3b52 <SetNeutral+0xb4> |
3b4c: 90 95 com r25 |
3b4e: 81 95 neg r24 |
3b50: 9f 4f sbci r25, 0xFF ; 255 |
3b52: 90 93 da 01 sts 0x01DA, r25 |
3b56: 80 93 d9 01 sts 0x01D9, r24 |
3b5a: 80 91 b5 05 lds r24, 0x05B5 |
3b5e: 90 91 b6 05 lds r25, 0x05B6 |
3b62: 97 ff sbrs r25, 7 |
3b64: 03 c0 rjmp .+6 ; 0x3b6c <SetNeutral+0xce> |
3b66: 90 95 com r25 |
3b68: 81 95 neg r24 |
3b6a: 9f 4f sbci r25, 0xFF ; 255 |
3b6c: 90 93 dc 01 sts 0x01DC, r25 |
3b70: 80 93 db 01 sts 0x01DB, r24 |
3b74: 80 91 bb 05 lds r24, 0x05BB |
3b78: 90 91 bc 05 lds r25, 0x05BC |
3b7c: 97 ff sbrs r25, 7 |
3b7e: 03 c0 rjmp .+6 ; 0x3b86 <SetNeutral+0xe8> |
3b80: 90 95 com r25 |
3b82: 81 95 neg r24 |
3b84: 9f 4f sbci r25, 0xFF ; 255 |
3b86: 60 e1 ldi r22, 0x10 ; 16 |
3b88: 70 e0 ldi r23, 0x00 ; 0 |
3b8a: 0e 94 d3 2c call 0x59a6 ; 0x59a6 <__divmodhi4> |
3b8e: 70 93 e0 01 sts 0x01E0, r23 |
3b92: 60 93 df 01 sts 0x01DF, r22 |
3b96: 80 91 b2 05 lds r24, 0x05B2 |
3b9a: 90 91 b3 05 lds r25, 0x05B3 |
3b9e: 97 ff sbrs r25, 7 |
3ba0: 03 c0 rjmp .+6 ; 0x3ba8 <SetNeutral+0x10a> |
3ba2: 90 95 com r25 |
3ba4: 81 95 neg r24 |
3ba6: 9f 4f sbci r25, 0xFF ; 255 |
3ba8: 60 e1 ldi r22, 0x10 ; 16 |
3baa: 70 e0 ldi r23, 0x00 ; 0 |
3bac: 0e 94 d3 2c call 0x59a6 ; 0x59a6 <__divmodhi4> |
3bb0: 70 93 de 01 sts 0x01DE, r23 |
3bb4: 60 93 dd 01 sts 0x01DD, r22 |
3bb8: 60 91 29 05 lds r22, 0x0529 |
3bbc: 70 91 2a 05 lds r23, 0x052A |
3bc0: 88 27 eor r24, r24 |
3bc2: 77 fd sbrc r23, 7 |
3bc4: 80 95 com r24 |
3bc6: 98 2f mov r25, r24 |
3bc8: 0e 94 84 2b call 0x5708 ; 0x5708 <__floatsisf> |
3bcc: 60 93 e1 01 sts 0x01E1, r22 |
3bd0: 70 93 e2 01 sts 0x01E2, r23 |
3bd4: 80 93 e3 01 sts 0x01E3, r24 |
3bd8: 90 93 e4 01 sts 0x01E4, r25 |
3bdc: 10 92 fb 01 sts 0x01FB, r1 |
3be0: 10 92 fc 01 sts 0x01FC, r1 |
3be4: 10 92 fd 01 sts 0x01FD, r1 |
3be8: 10 92 fe 01 sts 0x01FE, r1 |
3bec: 10 92 ff 01 sts 0x01FF, r1 |
3bf0: 10 92 00 02 sts 0x0200, r1 |
3bf4: 10 92 01 02 sts 0x0201, r1 |
3bf8: 10 92 02 02 sts 0x0202, r1 |
3bfc: 10 92 03 02 sts 0x0203, r1 |
3c00: 10 92 04 02 sts 0x0204, r1 |
3c04: 10 92 05 02 sts 0x0205, r1 |
3c08: 10 92 06 02 sts 0x0206, r1 |
3c0c: 10 92 07 02 sts 0x0207, r1 |
3c10: 10 92 08 02 sts 0x0208, r1 |
3c14: 10 92 09 02 sts 0x0209, r1 |
3c18: 10 92 0a 02 sts 0x020A, r1 |
3c1c: 10 92 0b 02 sts 0x020B, r1 |
3c20: 10 92 0c 02 sts 0x020C, r1 |
3c24: 10 92 0d 02 sts 0x020D, r1 |
3c28: 10 92 0e 02 sts 0x020E, r1 |
3c2c: 10 92 aa 05 sts 0x05AA, r1 |
3c30: 10 92 a9 05 sts 0x05A9, r1 |
3c34: 10 92 a8 05 sts 0x05A8, r1 |
3c38: 10 92 a7 05 sts 0x05A7, r1 |
3c3c: 10 92 b6 05 sts 0x05B6, r1 |
3c40: 10 92 b5 05 sts 0x05B5, r1 |
3c44: 80 91 06 01 lds r24, 0x0106 |
3c48: 90 91 07 01 lds r25, 0x0107 |
3c4c: a0 91 08 01 lds r26, 0x0108 |
3c50: b0 91 09 01 lds r27, 0x0109 |
3c54: 90 93 2c 05 sts 0x052C, r25 |
3c58: 80 93 2b 05 sts 0x052B, r24 |
3c5c: 10 92 c5 01 sts 0x01C5, r1 |
3c60: 10 92 c4 01 sts 0x01C4, r1 |
3c64: 10 92 13 02 sts 0x0213, r1 |
3c68: 10 92 14 02 sts 0x0214, r1 |
3c6c: 10 92 15 02 sts 0x0215, r1 |
3c70: 10 92 16 02 sts 0x0216, r1 |
3c74: 80 91 17 02 lds r24, 0x0217 |
3c78: 90 91 18 02 lds r25, 0x0218 |
3c7c: 90 93 1a 02 sts 0x021A, r25 |
3c80: 80 93 19 02 sts 0x0219, r24 |
3c84: 82 e3 ldi r24, 0x32 ; 50 |
3c86: 90 e0 ldi r25, 0x00 ; 0 |
3c88: 90 93 ac 01 sts 0x01AC, r25 |
3c8c: 80 93 ab 01 sts 0x01AB, r24 |
3c90: df 91 pop r29 |
3c92: cf 91 pop r28 |
3c94: 08 95 ret |
00003c96 <Piep>: |
3c96: 1f 93 push r17 |
3c98: 18 2f mov r17, r24 |
3c9a: 0e c0 rjmp .+28 ; 0x3cb8 <Piep+0x22> |
3c9c: 80 91 2e 02 lds r24, 0x022E |
3ca0: 88 23 and r24, r24 |
3ca2: 61 f4 brne .+24 ; 0x3cbc <Piep+0x26> |
3ca4: 84 e6 ldi r24, 0x64 ; 100 |
3ca6: 90 e0 ldi r25, 0x00 ; 0 |
3ca8: 90 93 ac 01 sts 0x01AC, r25 |
3cac: 80 93 ab 01 sts 0x01AB, r24 |
3cb0: 8a ef ldi r24, 0xFA ; 250 |
3cb2: 90 e0 ldi r25, 0x00 ; 0 |
3cb4: 0e 94 e4 0c call 0x19c8 ; 0x19c8 <Delay_ms> |
3cb8: 11 50 subi r17, 0x01 ; 1 |
3cba: 80 f7 brcc .-32 ; 0x3c9c <Piep+0x6> |
3cbc: 1f 91 pop r17 |
3cbe: 08 95 ret |
00003cc0 <MotorRegler>: |
3cc0: 2f 92 push r2 |
3cc2: 3f 92 push r3 |
3cc4: 4f 92 push r4 |
3cc6: 5f 92 push r5 |
3cc8: 6f 92 push r6 |
3cca: 7f 92 push r7 |
3ccc: 8f 92 push r8 |
3cce: 9f 92 push r9 |
3cd0: af 92 push r10 |
3cd2: bf 92 push r11 |
3cd4: cf 92 push r12 |
3cd6: df 92 push r13 |
3cd8: ef 92 push r14 |
3cda: ff 92 push r15 |
3cdc: 0f 93 push r16 |
3cde: 1f 93 push r17 |
3ce0: cf 93 push r28 |
3ce2: df 93 push r29 |
3ce4: cd b7 in r28, 0x3d ; 61 |
3ce6: de b7 in r29, 0x3e ; 62 |
3ce8: 24 97 sbiw r28, 0x04 ; 4 |
3cea: 0f b6 in r0, 0x3f ; 63 |
3cec: f8 94 cli |
3cee: de bf out 0x3e, r29 ; 62 |
3cf0: 0f be out 0x3f, r0 ; 63 |
3cf2: cd bf out 0x3d, r28 ; 61 |
3cf4: 0e 94 80 15 call 0x2b00 ; 0x2b00 <Mittelwert> |
3cf8: 29 9a sbi 0x05, 1 ; 5 |
3cfa: e0 91 6f 05 lds r30, 0x056F |
3cfe: ae 2f mov r26, r30 |
3d00: bb 27 eor r27, r27 |
3d02: aa 0f add r26, r26 |
3d04: bb 1f adc r27, r27 |
3d06: af 5b subi r26, 0xBF ; 191 |
3d08: ba 4f sbci r27, 0xFA ; 250 |
3d0a: 0d 90 ld r0, X+ |
3d0c: bc 91 ld r27, X |
3d0e: a0 2d mov r26, r0 |
3d10: 9d 01 movw r18, r26 |
3d12: 28 58 subi r18, 0x88 ; 136 |
3d14: 3f 4f sbci r19, 0xFF ; 255 |
3d16: 3a 83 std Y+2, r19 ; 0x02 |
3d18: 29 83 std Y+1, r18 ; 0x01 |
3d1a: 37 ff sbrs r19, 7 |
3d1c: 02 c0 rjmp .+4 ; 0x3d22 <MotorRegler+0x62> |
3d1e: 1a 82 std Y+2, r1 ; 0x02 |
3d20: 19 82 std Y+1, r1 ; 0x01 |
3d22: 80 91 27 02 lds r24, 0x0227 |
3d26: 84 36 cpi r24, 0x64 ; 100 |
3d28: 08 f0 brcs .+2 ; 0x3d2c <MotorRegler+0x6c> |
3d2a: 4a c0 rjmp .+148 ; 0x3dc0 <MotorRegler+0x100> |
3d2c: 80 91 01 01 lds r24, 0x0101 |
3d30: 88 23 and r24, r24 |
3d32: 31 f4 brne .+12 ; 0x3d40 <MotorRegler+0x80> |
3d34: 84 ef ldi r24, 0xF4 ; 244 |
3d36: 91 e0 ldi r25, 0x01 ; 1 |
3d38: 90 93 ac 01 sts 0x01AC, r25 |
3d3c: 80 93 ab 01 sts 0x01AB, r24 |
3d40: 80 91 42 02 lds r24, 0x0242 |
3d44: 90 91 43 02 lds r25, 0x0243 |
3d48: 00 97 sbiw r24, 0x00 ; 0 |
3d4a: 31 f0 breq .+12 ; 0x3d58 <MotorRegler+0x98> |
3d4c: 01 97 sbiw r24, 0x01 ; 1 |
3d4e: 90 93 43 02 sts 0x0243, r25 |
3d52: 80 93 42 02 sts 0x0242, r24 |
3d56: 04 c0 rjmp .+8 ; 0x3d60 <MotorRegler+0xa0> |
3d58: 10 92 2e 02 sts 0x022E, r1 |
3d5c: 10 92 1d 02 sts 0x021D, r1 |
3d60: 28 9a sbi 0x05, 0 ; 5 |
3d62: 80 91 3d 02 lds r24, 0x023D |
3d66: 90 91 3e 02 lds r25, 0x023E |
3d6a: 81 5d subi r24, 0xD1 ; 209 |
3d6c: 97 40 sbci r25, 0x07 ; 7 |
3d6e: 28 f1 brcs .+74 ; 0x3dba <MotorRegler+0xfa> |
3d70: 80 91 86 05 lds r24, 0x0586 |
3d74: 48 2f mov r20, r24 |
3d76: 55 27 eor r21, r21 |
3d78: 5a 83 std Y+2, r21 ; 0x02 |
3d7a: 49 83 std Y+1, r20 ; 0x01 |
3d7c: 81 e0 ldi r24, 0x01 ; 1 |
3d7e: 80 93 1d 02 sts 0x021D, r24 |
3d82: e0 91 6d 05 lds r30, 0x056D |
3d86: ff 27 eor r31, r31 |
3d88: ee 0f add r30, r30 |
3d8a: ff 1f adc r31, r31 |
3d8c: ef 5b subi r30, 0xBF ; 191 |
3d8e: fa 4f sbci r31, 0xFA ; 250 |
3d90: 11 82 std Z+1, r1 ; 0x01 |
3d92: 10 82 st Z, r1 |
3d94: e0 91 6e 05 lds r30, 0x056E |
3d98: ff 27 eor r31, r31 |
3d9a: ee 0f add r30, r30 |
3d9c: ff 1f adc r31, r31 |
3d9e: ef 5b subi r30, 0xBF ; 191 |
3da0: fa 4f sbci r31, 0xFA ; 250 |
3da2: 11 82 std Z+1, r1 ; 0x01 |
3da4: 10 82 st Z, r1 |
3da6: e0 91 70 05 lds r30, 0x0570 |
3daa: ff 27 eor r31, r31 |
3dac: ee 0f add r30, r30 |
3dae: ff 1f adc r31, r31 |
3db0: ef 5b subi r30, 0xBF ; 191 |
3db2: fa 4f sbci r31, 0xFA ; 250 |
3db4: 11 82 std Z+1, r1 ; 0x01 |
3db6: 10 82 st Z, r1 |
3db8: ce c1 rjmp .+924 ; 0x4156 <MotorRegler+0x496> |
3dba: 10 92 2e 02 sts 0x022E, r1 |
3dbe: cb c1 rjmp .+918 ; 0x4156 <MotorRegler+0x496> |
3dc0: 80 91 27 02 lds r24, 0x0227 |
3dc4: 8d 38 cpi r24, 0x8D ; 141 |
3dc6: 08 f4 brcc .+2 ; 0x3dca <MotorRegler+0x10a> |
3dc8: c6 c1 rjmp .+908 ; 0x4156 <MotorRegler+0x496> |
3dca: 10 92 1d 02 sts 0x021D, r1 |
3dce: 80 91 87 05 lds r24, 0x0587 |
3dd2: 22 e3 ldi r18, 0x32 ; 50 |
3dd4: 82 9f mul r24, r18 |
3dd6: c0 01 movw r24, r0 |
3dd8: 11 24 eor r1, r1 |
3dda: 90 93 43 02 sts 0x0243, r25 |
3dde: 80 93 42 02 sts 0x0242, r24 |
3de2: 69 81 ldd r22, Y+1 ; 0x01 |
3de4: 7a 81 ldd r23, Y+2 ; 0x02 |
3de6: 69 32 cpi r22, 0x29 ; 41 |
3de8: 71 05 cpc r23, r1 |
3dea: 6c f0 brlt .+26 ; 0x3e06 <MotorRegler+0x146> |
3dec: 80 91 3d 02 lds r24, 0x023D |
3df0: 90 91 3e 02 lds r25, 0x023E |
3df4: 7f ef ldi r23, 0xFF ; 255 |
3df6: 8f 3f cpi r24, 0xFF ; 255 |
3df8: 97 07 cpc r25, r23 |
3dfa: 81 f1 breq .+96 ; 0x3e5c <MotorRegler+0x19c> |
3dfc: 01 96 adiw r24, 0x01 ; 1 |
3dfe: 90 93 3e 02 sts 0x023E, r25 |
3e02: 80 93 3d 02 sts 0x023D, r24 |
3e06: 80 91 3d 02 lds r24, 0x023D |
3e0a: 90 91 3e 02 lds r25, 0x023E |
3e0e: 88 3c cpi r24, 0xC8 ; 200 |
3e10: 91 05 cpc r25, r1 |
3e12: 20 f0 brcs .+8 ; 0x3e1c <MotorRegler+0x15c> |
3e14: 89 81 ldd r24, Y+1 ; 0x01 |
3e16: 9a 81 ldd r25, Y+2 ; 0x02 |
3e18: 88 97 sbiw r24, 0x28 ; 40 |
3e1a: 04 f5 brge .+64 ; 0x3e5c <MotorRegler+0x19c> |
3e1c: 10 92 58 02 sts 0x0258, r1 |
3e20: 10 92 59 02 sts 0x0259, r1 |
3e24: 10 92 5a 02 sts 0x025A, r1 |
3e28: 10 92 5b 02 sts 0x025B, r1 |
3e2c: 10 92 54 02 sts 0x0254, r1 |
3e30: 10 92 55 02 sts 0x0255, r1 |
3e34: 10 92 56 02 sts 0x0256, r1 |
3e38: 10 92 57 02 sts 0x0257, r1 |
3e3c: 10 92 0b 02 sts 0x020B, r1 |
3e40: 10 92 0c 02 sts 0x020C, r1 |
3e44: 10 92 0d 02 sts 0x020D, r1 |
3e48: 10 92 0e 02 sts 0x020E, r1 |
3e4c: 10 92 0f 02 sts 0x020F, r1 |
3e50: 10 92 10 02 sts 0x0210, r1 |
3e54: 10 92 11 02 sts 0x0211, r1 |
3e58: 10 92 12 02 sts 0x0212, r1 |
3e5c: e9 81 ldd r30, Y+1 ; 0x01 |
3e5e: fa 81 ldd r31, Y+2 ; 0x02 |
3e60: e9 3c cpi r30, 0xC9 ; 201 |
3e62: f1 05 cpc r31, r1 |
3e64: 0c f4 brge .+2 ; 0x3e68 <MotorRegler+0x1a8> |
3e66: d6 c0 rjmp .+428 ; 0x4014 <MotorRegler+0x354> |
3e68: 80 91 2e 02 lds r24, 0x022E |
3e6c: 88 23 and r24, r24 |
3e6e: 09 f0 breq .+2 ; 0x3e72 <MotorRegler+0x1b2> |
3e70: 72 c1 rjmp .+740 ; 0x4156 <MotorRegler+0x496> |
3e72: e0 91 70 05 lds r30, 0x0570 |
3e76: ff 27 eor r31, r31 |
3e78: ee 0f add r30, r30 |
3e7a: ff 1f adc r31, r31 |
3e7c: ef 5b subi r30, 0xBF ; 191 |
3e7e: fa 4f sbci r31, 0xFA ; 250 |
3e80: 80 81 ld r24, Z |
3e82: 91 81 ldd r25, Z+1 ; 0x01 |
3e84: 8c 34 cpi r24, 0x4C ; 76 |
3e86: 91 05 cpc r25, r1 |
3e88: 0c f4 brge .+2 ; 0x3e8c <MotorRegler+0x1cc> |
3e8a: c1 c0 rjmp .+386 ; 0x400e <MotorRegler+0x34e> |
3e8c: 80 91 41 02 lds r24, 0x0241 |
3e90: 8f 5f subi r24, 0xFF ; 255 |
3e92: 80 93 41 02 sts 0x0241, r24 |
3e96: 89 3c cpi r24, 0xC9 ; 201 |
3e98: 08 f4 brcc .+2 ; 0x3e9c <MotorRegler+0x1dc> |
3e9a: 5d c1 rjmp .+698 ; 0x4156 <MotorRegler+0x496> |
3e9c: 29 98 cbi 0x05, 1 ; 5 |
3e9e: 0e 94 4f 1d call 0x3a9e ; 0x3a9e <SetNeutral> |
3ea2: 10 92 2e 02 sts 0x022E, r1 |
3ea6: 10 92 41 02 sts 0x0241, r1 |
3eaa: 10 92 3e 02 sts 0x023E, r1 |
3eae: 10 92 3d 02 sts 0x023D, r1 |
3eb2: 80 91 6d 05 lds r24, 0x056D |
3eb6: 28 2f mov r18, r24 |
3eb8: 33 27 eor r19, r19 |
3eba: f9 01 movw r30, r18 |
3ebc: ee 0f add r30, r30 |
3ebe: ff 1f adc r31, r31 |
3ec0: ef 5b subi r30, 0xBF ; 191 |
3ec2: fa 4f sbci r31, 0xFA ; 250 |
3ec4: 80 81 ld r24, Z |
3ec6: 91 81 ldd r25, Z+1 ; 0x01 |
3ec8: 87 34 cpi r24, 0x47 ; 71 |
3eca: 91 05 cpc r25, r1 |
3ecc: 9c f4 brge .+38 ; 0x3ef4 <MotorRegler+0x234> |
3ece: e0 91 6e 05 lds r30, 0x056E |
3ed2: ff 27 eor r31, r31 |
3ed4: ee 0f add r30, r30 |
3ed6: ff 1f adc r31, r31 |
3ed8: ef 5b subi r30, 0xBF ; 191 |
3eda: fa 4f sbci r31, 0xFA ; 250 |
3edc: 01 90 ld r0, Z+ |
3ede: f0 81 ld r31, Z |
3ee0: e0 2d mov r30, r0 |
3ee2: f7 ff sbrs r31, 7 |
3ee4: 03 c0 rjmp .+6 ; 0x3eec <MotorRegler+0x22c> |
3ee6: f0 95 com r31 |
3ee8: e1 95 neg r30 |
3eea: ff 4f sbci r31, 0xFF ; 255 |
3eec: e7 34 cpi r30, 0x47 ; 71 |
3eee: f1 05 cpc r31, r1 |
3ef0: 0c f4 brge .+2 ; 0x3ef4 <MotorRegler+0x234> |
3ef2: 6c c0 rjmp .+216 ; 0x3fcc <MotorRegler+0x30c> |
3ef4: 80 91 6e 05 lds r24, 0x056E |
3ef8: 68 2f mov r22, r24 |
3efa: 77 27 eor r23, r23 |
3efc: db 01 movw r26, r22 |
3efe: aa 0f add r26, r26 |
3f00: bb 1f adc r27, r27 |
3f02: af 5b subi r26, 0xBF ; 191 |
3f04: ba 4f sbci r27, 0xFA ; 250 |
3f06: 8d 91 ld r24, X+ |
3f08: 9c 91 ld r25, X |
3f0a: 11 97 sbiw r26, 0x01 ; 1 |
3f0c: 87 34 cpi r24, 0x47 ; 71 |
3f0e: 91 05 cpc r25, r1 |
3f10: 3c f0 brlt .+14 ; 0x3f20 <MotorRegler+0x260> |
3f12: f9 01 movw r30, r18 |
3f14: ee 0f add r30, r30 |
3f16: ff 1f adc r31, r31 |
3f18: ef 5b subi r30, 0xBF ; 191 |
3f1a: fa 4f sbci r31, 0xFA ; 250 |
3f1c: 80 81 ld r24, Z |
3f1e: 91 81 ldd r25, Z+1 ; 0x01 |
3f20: 8d 91 ld r24, X+ |
3f22: 9c 91 ld r25, X |
3f24: 87 34 cpi r24, 0x47 ; 71 |
3f26: 91 05 cpc r25, r1 |
3f28: 64 f0 brlt .+24 ; 0x3f42 <MotorRegler+0x282> |
3f2a: f9 01 movw r30, r18 |
3f2c: ee 0f add r30, r30 |
3f2e: ff 1f adc r31, r31 |
3f30: ef 5b subi r30, 0xBF ; 191 |
3f32: fa 4f sbci r31, 0xFA ; 250 |
3f34: 80 81 ld r24, Z |
3f36: 91 81 ldd r25, Z+1 ; 0x01 |
3f38: 87 34 cpi r24, 0x47 ; 71 |
3f3a: 91 05 cpc r25, r1 |
3f3c: 14 f0 brlt .+4 ; 0x3f42 <MotorRegler+0x282> |
3f3e: 42 e0 ldi r20, 0x02 ; 2 |
3f40: 01 c0 rjmp .+2 ; 0x3f44 <MotorRegler+0x284> |
3f42: 41 e0 ldi r20, 0x01 ; 1 |
3f44: fb 01 movw r30, r22 |
3f46: ee 0f add r30, r30 |
3f48: ff 1f adc r31, r31 |
3f4a: ef 5b subi r30, 0xBF ; 191 |
3f4c: fa 4f sbci r31, 0xFA ; 250 |
3f4e: 80 81 ld r24, Z |
3f50: 91 81 ldd r25, Z+1 ; 0x01 |
3f52: 86 34 cpi r24, 0x46 ; 70 |
3f54: 91 05 cpc r25, r1 |
3f56: 5c f4 brge .+22 ; 0x3f6e <MotorRegler+0x2ae> |
3f58: f9 01 movw r30, r18 |
3f5a: ee 0f add r30, r30 |
3f5c: ff 1f adc r31, r31 |
3f5e: ef 5b subi r30, 0xBF ; 191 |
3f60: fa 4f sbci r31, 0xFA ; 250 |
3f62: 80 81 ld r24, Z |
3f64: 91 81 ldd r25, Z+1 ; 0x01 |
3f66: 87 34 cpi r24, 0x47 ; 71 |
3f68: 91 05 cpc r25, r1 |
3f6a: 0c f0 brlt .+2 ; 0x3f6e <MotorRegler+0x2ae> |
3f6c: 43 e0 ldi r20, 0x03 ; 3 |
3f6e: fb 01 movw r30, r22 |
3f70: ee 0f add r30, r30 |
3f72: ff 1f adc r31, r31 |
3f74: ef 5b subi r30, 0xBF ; 191 |
3f76: fa 4f sbci r31, 0xFA ; 250 |
3f78: 80 81 ld r24, Z |
3f7a: 91 81 ldd r25, Z+1 ; 0x01 |
3f7c: 8a 5b subi r24, 0xBA ; 186 |
3f7e: 9f 4f sbci r25, 0xFF ; 255 |
3f80: 5c f4 brge .+22 ; 0x3f98 <MotorRegler+0x2d8> |
3f82: f9 01 movw r30, r18 |
3f84: ee 0f add r30, r30 |
3f86: ff 1f adc r31, r31 |
3f88: ef 5b subi r30, 0xBF ; 191 |
3f8a: fa 4f sbci r31, 0xFA ; 250 |
3f8c: 80 81 ld r24, Z |
3f8e: 91 81 ldd r25, Z+1 ; 0x01 |
3f90: 87 34 cpi r24, 0x47 ; 71 |
3f92: 91 05 cpc r25, r1 |
3f94: 0c f0 brlt .+2 ; 0x3f98 <MotorRegler+0x2d8> |
3f96: 44 e0 ldi r20, 0x04 ; 4 |
3f98: 66 0f add r22, r22 |
3f9a: 77 1f adc r23, r23 |
3f9c: 6f 5b subi r22, 0xBF ; 191 |
3f9e: 7a 4f sbci r23, 0xFA ; 250 |
3fa0: fb 01 movw r30, r22 |
3fa2: 80 81 ld r24, Z |
3fa4: 91 81 ldd r25, Z+1 ; 0x01 |
3fa6: 8a 5b subi r24, 0xBA ; 186 |
3fa8: 9f 4f sbci r25, 0xFF ; 255 |
3faa: 5c f4 brge .+22 ; 0x3fc2 <MotorRegler+0x302> |
3fac: 22 0f add r18, r18 |
3fae: 33 1f adc r19, r19 |
3fb0: 2f 5b subi r18, 0xBF ; 191 |
3fb2: 3a 4f sbci r19, 0xFA ; 250 |
3fb4: f9 01 movw r30, r18 |
3fb6: 80 81 ld r24, Z |
3fb8: 91 81 ldd r25, Z+1 ; 0x01 |
3fba: 86 34 cpi r24, 0x46 ; 70 |
3fbc: 91 05 cpc r25, r1 |
3fbe: 0c f4 brge .+2 ; 0x3fc2 <MotorRegler+0x302> |
3fc0: 45 e0 ldi r20, 0x05 ; 5 |
3fc2: a2 e0 ldi r26, 0x02 ; 2 |
3fc4: b0 e0 ldi r27, 0x00 ; 0 |
3fc6: 04 2e mov r0, r20 |
3fc8: 0e 94 2b 2d call 0x5a56 ; 0x5a56 <__eeprom_write_byte_1F2021> |
3fcc: 0e 94 f8 01 call 0x3f0 ; 0x3f0 <GetActiveParamSetNumber> |
3fd0: 4a e3 ldi r20, 0x3A ; 58 |
3fd2: 6d e6 ldi r22, 0x6D ; 109 |
3fd4: 75 e0 ldi r23, 0x05 ; 5 |
3fd6: 0e 94 17 02 call 0x42e ; 0x42e <ReadParameterSet> |
3fda: 0e 94 f8 01 call 0x3f0 ; 0x3f0 <GetActiveParamSetNumber> |
3fde: 0e 94 4b 1e call 0x3c96 ; 0x3c96 <Piep> |
3fe2: 80 91 75 05 lds r24, 0x0575 |
3fe6: 80 ff sbrs r24, 0 |
3fe8: b6 c0 rjmp .+364 ; 0x4156 <MotorRegler+0x496> |
3fea: 80 91 0a 01 lds r24, 0x010A |
3fee: 90 91 0b 01 lds r25, 0x010B |
3ff2: 87 5b subi r24, 0xB7 ; 183 |
3ff4: 93 40 sbci r25, 0x03 ; 3 |
3ff6: 40 f4 brcc .+16 ; 0x4008 <MotorRegler+0x348> |
3ff8: 80 91 0a 01 lds r24, 0x010A |
3ffc: 90 91 0b 01 lds r25, 0x010B |
4000: 8e 5e subi r24, 0xEE ; 238 |
4002: 92 40 sbci r25, 0x02 ; 2 |
4004: 08 f0 brcs .+2 ; 0x4008 <MotorRegler+0x348> |
4006: a7 c0 rjmp .+334 ; 0x4156 <MotorRegler+0x496> |
4008: 0e 94 20 10 call 0x2040 ; 0x2040 <SucheLuftruckOffset> |
400c: a4 c0 rjmp .+328 ; 0x4156 <MotorRegler+0x496> |
400e: 10 92 41 02 sts 0x0241, r1 |
4012: a1 c0 rjmp .+322 ; 0x4156 <MotorRegler+0x496> |
4014: 49 81 ldd r20, Y+1 ; 0x01 |
4016: 5a 81 ldd r21, Y+2 ; 0x02 |
4018: 43 32 cpi r20, 0x23 ; 35 |
401a: 51 05 cpc r21, r1 |
401c: 0c f0 brlt .+2 ; 0x4020 <MotorRegler+0x360> |
401e: 9b c0 rjmp .+310 ; 0x4156 <MotorRegler+0x496> |
4020: 80 91 70 05 lds r24, 0x0570 |
4024: 48 2f mov r20, r24 |
4026: 55 27 eor r21, r21 |
4028: fa 01 movw r30, r20 |
402a: ee 0f add r30, r30 |
402c: ff 1f adc r31, r31 |
402e: ef 5b subi r30, 0xBF ; 191 |
4030: fa 4f sbci r31, 0xFA ; 250 |
4032: 80 81 ld r24, Z |
4034: 91 81 ldd r25, Z+1 ; 0x01 |
4036: 85 5b subi r24, 0xB5 ; 181 |
4038: 9f 4f sbci r25, 0xFF ; 255 |
403a: 0c f0 brlt .+2 ; 0x403e <MotorRegler+0x37e> |
403c: 6d c0 rjmp .+218 ; 0x4118 <MotorRegler+0x458> |
403e: 80 91 40 02 lds r24, 0x0240 |
4042: 8f 5f subi r24, 0xFF ; 255 |
4044: 80 93 40 02 sts 0x0240, r24 |
4048: 89 3c cpi r24, 0xC9 ; 201 |
404a: 08 f4 brcc .+2 ; 0x404e <MotorRegler+0x38e> |
404c: 67 c0 rjmp .+206 ; 0x411c <MotorRegler+0x45c> |
404e: 88 ec ldi r24, 0xC8 ; 200 |
4050: 80 93 40 02 sts 0x0240, r24 |
4054: 81 e0 ldi r24, 0x01 ; 1 |
4056: 90 e0 ldi r25, 0x00 ; 0 |
4058: 90 93 3e 02 sts 0x023E, r25 |
405c: 80 93 3d 02 sts 0x023D, r24 |
4060: 81 e0 ldi r24, 0x01 ; 1 |
4062: 80 93 2e 02 sts 0x022E, r24 |
4066: 10 92 50 02 sts 0x0250, r1 |
406a: 10 92 51 02 sts 0x0251, r1 |
406e: 10 92 52 02 sts 0x0252, r1 |
4072: 10 92 53 02 sts 0x0253, r1 |
4076: 10 92 0b 02 sts 0x020B, r1 |
407a: 10 92 0c 02 sts 0x020C, r1 |
407e: 10 92 0d 02 sts 0x020D, r1 |
4082: 10 92 0e 02 sts 0x020E, r1 |
4086: 10 92 0f 02 sts 0x020F, r1 |
408a: 10 92 10 02 sts 0x0210, r1 |
408e: 10 92 11 02 sts 0x0211, r1 |
4092: 10 92 12 02 sts 0x0212, r1 |
4096: 10 92 fb 01 sts 0x01FB, r1 |
409a: 10 92 fc 01 sts 0x01FC, r1 |
409e: 10 92 fd 01 sts 0x01FD, r1 |
40a2: 10 92 fe 01 sts 0x01FE, r1 |
40a6: 10 92 03 02 sts 0x0203, r1 |
40aa: 10 92 04 02 sts 0x0204, r1 |
40ae: 10 92 05 02 sts 0x0205, r1 |
40b2: 10 92 06 02 sts 0x0206, r1 |
40b6: 80 91 e7 01 lds r24, 0x01E7 |
40ba: 90 91 e8 01 lds r25, 0x01E8 |
40be: a0 91 e9 01 lds r26, 0x01E9 |
40c2: b0 91 ea 01 lds r27, 0x01EA |
40c6: 80 93 ff 01 sts 0x01FF, r24 |
40ca: 90 93 00 02 sts 0x0200, r25 |
40ce: a0 93 01 02 sts 0x0201, r26 |
40d2: b0 93 02 02 sts 0x0202, r27 |
40d6: 80 91 ef 01 lds r24, 0x01EF |
40da: 90 91 f0 01 lds r25, 0x01F0 |
40de: a0 91 f1 01 lds r26, 0x01F1 |
40e2: b0 91 f2 01 lds r27, 0x01F2 |
40e6: 80 93 07 02 sts 0x0207, r24 |
40ea: 90 93 08 02 sts 0x0208, r25 |
40ee: a0 93 09 02 sts 0x0209, r26 |
40f2: b0 93 0a 02 sts 0x020A, r27 |
40f6: 10 92 58 02 sts 0x0258, r1 |
40fa: 10 92 59 02 sts 0x0259, r1 |
40fe: 10 92 5a 02 sts 0x025A, r1 |
4102: 10 92 5b 02 sts 0x025B, r1 |
4106: 10 92 54 02 sts 0x0254, r1 |
410a: 10 92 55 02 sts 0x0255, r1 |
410e: 10 92 56 02 sts 0x0256, r1 |
4112: 10 92 57 02 sts 0x0257, r1 |
4116: 02 c0 rjmp .+4 ; 0x411c <MotorRegler+0x45c> |
4118: 10 92 40 02 sts 0x0240, r1 |
411c: 44 0f add r20, r20 |
411e: 55 1f adc r21, r21 |
4120: 4f 5b subi r20, 0xBF ; 191 |
4122: 5a 4f sbci r21, 0xFA ; 250 |
4124: fa 01 movw r30, r20 |
4126: 80 81 ld r24, Z |
4128: 91 81 ldd r25, Z+1 ; 0x01 |
412a: 8c 34 cpi r24, 0x4C ; 76 |
412c: 91 05 cpc r25, r1 |
412e: 8c f0 brlt .+34 ; 0x4152 <MotorRegler+0x492> |
4130: 80 91 3f 02 lds r24, 0x023F |
4134: 8f 5f subi r24, 0xFF ; 255 |
4136: 80 93 3f 02 sts 0x023F, r24 |
413a: 89 3c cpi r24, 0xC9 ; 201 |
413c: 60 f0 brcs .+24 ; 0x4156 <MotorRegler+0x496> |
413e: 10 92 2e 02 sts 0x022E, r1 |
4142: 88 ec ldi r24, 0xC8 ; 200 |
4144: 80 93 3f 02 sts 0x023F, r24 |
4148: 10 92 3e 02 sts 0x023E, r1 |
414c: 10 92 3d 02 sts 0x023D, r1 |
4150: 02 c0 rjmp .+4 ; 0x4156 <MotorRegler+0x496> |
4152: 10 92 3f 02 sts 0x023F, r1 |
4156: 80 91 67 01 lds r24, 0x0167 |
415a: 81 50 subi r24, 0x01 ; 1 |
415c: 80 93 67 01 sts 0x0167, r24 |
4160: 80 91 67 01 lds r24, 0x0167 |
4164: 8f 3f cpi r24, 0xFF ; 255 |
4166: 29 f0 breq .+10 ; 0x4172 <MotorRegler+0x4b2> |
4168: 80 91 1d 02 lds r24, 0x021D |
416c: 88 23 and r24, r24 |
416e: 09 f4 brne .+2 ; 0x4172 <MotorRegler+0x4b2> |
4170: 12 c1 rjmp .+548 ; 0x4396 <MotorRegler+0x6d6> |
4172: 0e 94 dd 19 call 0x33ba ; 0x33ba <ParameterZuordnung> |
4176: e0 91 6d 05 lds r30, 0x056D |
417a: ff 27 eor r31, r31 |
417c: ee 0f add r30, r30 |
417e: ff 1f adc r31, r31 |
4180: df 01 movw r26, r30 |
4182: af 5b subi r26, 0xBF ; 191 |
4184: ba 4f sbci r27, 0xFA ; 250 |
4186: 8d 91 ld r24, X+ |
4188: 9c 91 ld r25, X |
418a: 60 91 7c 05 lds r22, 0x057C |
418e: 77 27 eor r23, r23 |
4190: e9 5a subi r30, 0xA9 ; 169 |
4192: fa 4f sbci r31, 0xFA ; 250 |
4194: 20 81 ld r18, Z |
4196: 31 81 ldd r19, Z+1 ; 0x01 |
4198: 40 91 7d 05 lds r20, 0x057D |
419c: 55 27 eor r21, r21 |
419e: fc 01 movw r30, r24 |
41a0: e6 9f mul r30, r22 |
41a2: c0 01 movw r24, r0 |
41a4: e7 9f mul r30, r23 |
41a6: 90 0d add r25, r0 |
41a8: f6 9f mul r31, r22 |
41aa: 90 0d add r25, r0 |
41ac: 11 24 eor r1, r1 |
41ae: f9 01 movw r30, r18 |
41b0: e4 9f mul r30, r20 |
41b2: 90 01 movw r18, r0 |
41b4: e5 9f mul r30, r21 |
41b6: 30 0d add r19, r0 |
41b8: f4 9f mul r31, r20 |
41ba: 30 0d add r19, r0 |
41bc: 11 24 eor r1, r1 |
41be: 82 0f add r24, r18 |
41c0: 93 1f adc r25, r19 |
41c2: 90 93 29 02 sts 0x0229, r25 |
41c6: 80 93 28 02 sts 0x0228, r24 |
41ca: e0 91 6e 05 lds r30, 0x056E |
41ce: ff 27 eor r31, r31 |
41d0: ee 0f add r30, r30 |
41d2: ff 1f adc r31, r31 |
41d4: df 01 movw r26, r30 |
41d6: af 5b subi r26, 0xBF ; 191 |
41d8: ba 4f sbci r27, 0xFA ; 250 |
41da: 8d 91 ld r24, X+ |
41dc: 9c 91 ld r25, X |
41de: e9 5a subi r30, 0xA9 ; 169 |
41e0: fa 4f sbci r31, 0xFA ; 250 |
41e2: 20 81 ld r18, Z |
41e4: 31 81 ldd r19, Z+1 ; 0x01 |
41e6: fc 01 movw r30, r24 |
41e8: e6 9f mul r30, r22 |
41ea: c0 01 movw r24, r0 |
41ec: e7 9f mul r30, r23 |
41ee: 90 0d add r25, r0 |
41f0: f6 9f mul r31, r22 |
41f2: 90 0d add r25, r0 |
41f4: 11 24 eor r1, r1 |
41f6: b9 01 movw r22, r18 |
41f8: 64 9f mul r22, r20 |
41fa: 90 01 movw r18, r0 |
41fc: 65 9f mul r22, r21 |
41fe: 30 0d add r19, r0 |
4200: 74 9f mul r23, r20 |
4202: 30 0d add r19, r0 |
4204: 11 24 eor r1, r1 |
4206: 82 0f add r24, r18 |
4208: 93 1f adc r25, r19 |
420a: 90 93 2b 02 sts 0x022B, r25 |
420e: 80 93 2a 02 sts 0x022A, r24 |
4212: e0 91 70 05 lds r30, 0x0570 |
4216: ff 27 eor r31, r31 |
4218: ee 0f add r30, r30 |
421a: ff 1f adc r31, r31 |
421c: ef 5b subi r30, 0xBF ; 191 |
421e: fa 4f sbci r31, 0xFA ; 250 |
4220: 80 81 ld r24, Z |
4222: 91 81 ldd r25, Z+1 ; 0x01 |
4224: 90 95 com r25 |
4226: 81 95 neg r24 |
4228: 9f 4f sbci r25, 0xFF ; 255 |
422a: 90 93 2d 02 sts 0x022D, r25 |
422e: 80 93 2c 02 sts 0x022C, r24 |
4232: 10 91 85 01 lds r17, 0x0185 |
4236: 61 2f mov r22, r17 |
4238: 77 27 eor r23, r23 |
423a: 67 fd sbrc r22, 7 |
423c: 70 95 com r23 |
423e: 87 2f mov r24, r23 |
4240: 97 2f mov r25, r23 |
4242: 0e 94 84 2b call 0x5708 ; 0x5708 <__floatsisf> |
4246: 17 ff sbrs r17, 7 |
4248: 06 c0 rjmp .+12 ; 0x4256 <MotorRegler+0x596> |
424a: 20 e0 ldi r18, 0x00 ; 0 |
424c: 30 e0 ldi r19, 0x00 ; 0 |
424e: 40 e8 ldi r20, 0x80 ; 128 |
4250: 53 e4 ldi r21, 0x43 ; 67 |
4252: 0e 94 df 2a call 0x55be ; 0x55be <__addsf3> |
4256: 20 e0 ldi r18, 0x00 ; 0 |
4258: 30 e0 ldi r19, 0x00 ; 0 |
425a: 40 e2 ldi r20, 0x20 ; 32 |
425c: 51 e4 ldi r21, 0x41 ; 65 |
425e: 0e 94 df 2a call 0x55be ; 0x55be <__addsf3> |
4262: 20 e0 ldi r18, 0x00 ; 0 |
4264: 30 e0 ldi r19, 0x00 ; 0 |
4266: 40 e8 ldi r20, 0x80 ; 128 |
4268: 5b e3 ldi r21, 0x3B ; 59 |
426a: 0e 94 fe 2b call 0x57fc ; 0x57fc <__mulsf3> |
426e: 5b 01 movw r10, r22 |
4270: 6c 01 movw r12, r24 |
4272: 60 93 b7 05 sts 0x05B7, r22 |
4276: 70 93 b8 05 sts 0x05B8, r23 |
427a: 80 93 b9 05 sts 0x05B9, r24 |
427e: 90 93 ba 05 sts 0x05BA, r25 |
4282: 10 91 86 01 lds r17, 0x0186 |
4286: 61 2f mov r22, r17 |
4288: 77 27 eor r23, r23 |
428a: 67 fd sbrc r22, 7 |
428c: 70 95 com r23 |
428e: 87 2f mov r24, r23 |
4290: 97 2f mov r25, r23 |
4292: 0e 94 84 2b call 0x5708 ; 0x5708 <__floatsisf> |
4296: 17 ff sbrs r17, 7 |
4298: 06 c0 rjmp .+12 ; 0x42a6 <MotorRegler+0x5e6> |
429a: 20 e0 ldi r18, 0x00 ; 0 |
429c: 30 e0 ldi r19, 0x00 ; 0 |
429e: 40 e8 ldi r20, 0x80 ; 128 |
42a0: 53 e4 ldi r21, 0x43 ; 67 |
42a2: 0e 94 df 2a call 0x55be ; 0x55be <__addsf3> |
42a6: 20 e0 ldi r18, 0x00 ; 0 |
42a8: 30 ee ldi r19, 0xE0 ; 224 |
42aa: 4b e2 ldi r20, 0x2B ; 43 |
42ac: 57 e4 ldi r21, 0x47 ; 71 |
42ae: 0e 94 21 2b call 0x5642 ; 0x5642 <__divsf3> |
42b2: 60 93 ae 05 sts 0x05AE, r22 |
42b6: 70 93 af 05 sts 0x05AF, r23 |
42ba: 80 93 b0 05 sts 0x05B0, r24 |
42be: 90 93 b1 05 sts 0x05B1, r25 |
42c2: 80 91 75 05 lds r24, 0x0575 |
42c6: 82 ff sbrs r24, 2 |
42c8: 0c c0 rjmp .+24 ; 0x42e2 <MotorRegler+0x622> |
42ca: 80 e0 ldi r24, 0x00 ; 0 |
42cc: 90 e0 ldi r25, 0x00 ; 0 |
42ce: a0 e0 ldi r26, 0x00 ; 0 |
42d0: b0 e0 ldi r27, 0x00 ; 0 |
42d2: 80 93 ae 05 sts 0x05AE, r24 |
42d6: 90 93 af 05 sts 0x05AF, r25 |
42da: a0 93 b0 05 sts 0x05B0, r26 |
42de: b0 93 b1 05 sts 0x05B1, r27 |
42e2: 20 e0 ldi r18, 0x00 ; 0 |
42e4: 30 e0 ldi r19, 0x00 ; 0 |
42e6: 40 e0 ldi r20, 0x00 ; 0 |
42e8: 50 e0 ldi r21, 0x00 ; 0 |
42ea: c6 01 movw r24, r12 |
42ec: b5 01 movw r22, r10 |
42ee: 0e 94 8e 2b call 0x571c ; 0x571c <__eqsf2> |
42f2: 88 23 and r24, r24 |
42f4: 64 f4 brge .+24 ; 0x430e <MotorRegler+0x64e> |
42f6: 80 e0 ldi r24, 0x00 ; 0 |
42f8: 90 e0 ldi r25, 0x00 ; 0 |
42fa: a0 e0 ldi r26, 0x00 ; 0 |
42fc: b0 e0 ldi r27, 0x00 ; 0 |
42fe: 80 93 b7 05 sts 0x05B7, r24 |
4302: 90 93 b8 05 sts 0x05B8, r25 |
4306: a0 93 b9 05 sts 0x05B9, r26 |
430a: b0 93 ba 05 sts 0x05BA, r27 |
430e: 20 e0 ldi r18, 0x00 ; 0 |
4310: 30 e0 ldi r19, 0x00 ; 0 |
4312: 40 e0 ldi r20, 0x00 ; 0 |
4314: 50 e0 ldi r21, 0x00 ; 0 |
4316: 60 91 ae 05 lds r22, 0x05AE |
431a: 70 91 af 05 lds r23, 0x05AF |
431e: 80 91 b0 05 lds r24, 0x05B0 |
4322: 90 91 b1 05 lds r25, 0x05B1 |
4326: 0e 94 8e 2b call 0x571c ; 0x571c <__eqsf2> |
432a: 88 23 and r24, r24 |
432c: 64 f4 brge .+24 ; 0x4346 <MotorRegler+0x686> |
432e: 80 e0 ldi r24, 0x00 ; 0 |
4330: 90 e0 ldi r25, 0x00 ; 0 |
4332: a0 e0 ldi r26, 0x00 ; 0 |
4334: b0 e0 ldi r27, 0x00 ; 0 |
4336: 80 93 ae 05 sts 0x05AE, r24 |
433a: 90 93 af 05 sts 0x05AF, r25 |
433e: a0 93 b0 05 sts 0x05B0, r26 |
4342: b0 93 b1 05 sts 0x05B1, r27 |
4346: 80 91 1d 02 lds r24, 0x021D |
434a: 88 23 and r24, r24 |
434c: 21 f1 breq .+72 ; 0x4396 <MotorRegler+0x6d6> |
434e: 10 92 2d 02 sts 0x022D, r1 |
4352: 10 92 2c 02 sts 0x022C, r1 |
4356: 10 92 29 02 sts 0x0229, r1 |
435a: 10 92 28 02 sts 0x0228, r1 |
435e: 10 92 2b 02 sts 0x022B, r1 |
4362: 10 92 2a 02 sts 0x022A, r1 |
4366: 8d ec ldi r24, 0xCD ; 205 |
4368: 9c ec ldi r25, 0xCC ; 204 |
436a: ac ec ldi r26, 0xCC ; 204 |
436c: bd e3 ldi r27, 0x3D ; 61 |
436e: 80 93 b7 05 sts 0x05B7, r24 |
4372: 90 93 b8 05 sts 0x05B8, r25 |
4376: a0 93 b9 05 sts 0x05B9, r26 |
437a: b0 93 ba 05 sts 0x05BA, r27 |
437e: 8a e0 ldi r24, 0x0A ; 10 |
4380: 97 ed ldi r25, 0xD7 ; 215 |
4382: a3 ea ldi r26, 0xA3 ; 163 |
4384: bb e3 ldi r27, 0x3B ; 59 |
4386: 80 93 ae 05 sts 0x05AE, r24 |
438a: 90 93 af 05 sts 0x05AF, r25 |
438e: a0 93 b0 05 sts 0x05B0, r26 |
4392: b0 93 b1 05 sts 0x05B1, r27 |
4396: 80 91 c6 01 lds r24, 0x01C6 |
439a: 90 91 c7 01 lds r25, 0x01C7 |
439e: 8d 54 subi r24, 0x4D ; 77 |
43a0: 91 40 sbci r25, 0x01 ; 1 |
43a2: 08 f4 brcc .+2 ; 0x43a6 <MotorRegler+0x6e6> |
43a4: bc c0 rjmp .+376 ; 0x451e <MotorRegler+0x85e> |
43a6: 20 91 eb 01 lds r18, 0x01EB |
43aa: 30 91 ec 01 lds r19, 0x01EC |
43ae: 40 91 ed 01 lds r20, 0x01ED |
43b2: 50 91 ee 01 lds r21, 0x01EE |
43b6: 80 91 e7 01 lds r24, 0x01E7 |
43ba: 90 91 e8 01 lds r25, 0x01E8 |
43be: a0 91 e9 01 lds r26, 0x01E9 |
43c2: b0 91 ea 01 lds r27, 0x01EA |
43c6: b9 01 movw r22, r18 |
43c8: 68 1b sub r22, r24 |
43ca: 79 0b sbc r23, r25 |
43cc: 70 93 47 02 sts 0x0247, r23 |
43d0: 60 93 46 02 sts 0x0246, r22 |
43d4: 20 91 f3 01 lds r18, 0x01F3 |
43d8: 30 91 f4 01 lds r19, 0x01F4 |
43dc: 40 91 f5 01 lds r20, 0x01F5 |
43e0: 50 91 f6 01 lds r21, 0x01F6 |
43e4: 80 91 ef 01 lds r24, 0x01EF |
43e8: 90 91 f0 01 lds r25, 0x01F0 |
43ec: a0 91 f1 01 lds r26, 0x01F1 |
43f0: b0 91 f2 01 lds r27, 0x01F2 |
43f4: 28 1b sub r18, r24 |
43f6: 39 0b sbc r19, r25 |
43f8: 30 93 45 02 sts 0x0245, r19 |
43fc: 20 93 44 02 sts 0x0244, r18 |
4400: 10 92 c7 01 sts 0x01C7, r1 |
4404: 10 92 c6 01 sts 0x01C6, r1 |
4408: 67 3a cpi r22, 0xA7 ; 167 |
440a: 71 05 cpc r23, r1 |
440c: 34 f0 brlt .+12 ; 0x441a <MotorRegler+0x75a> |
440e: 80 91 d7 01 lds r24, 0x01D7 |
4412: 90 91 d8 01 lds r25, 0x01D8 |
4416: 01 96 adiw r24, 0x01 ; 1 |
4418: 08 c0 rjmp .+16 ; 0x442a <MotorRegler+0x76a> |
441a: 6a 55 subi r22, 0x5A ; 90 |
441c: 7f 4f sbci r23, 0xFF ; 255 |
441e: 4c f4 brge .+18 ; 0x4432 <MotorRegler+0x772> |
4420: 80 91 d7 01 lds r24, 0x01D7 |
4424: 90 91 d8 01 lds r25, 0x01D8 |
4428: 01 97 sbiw r24, 0x01 ; 1 |
442a: 90 93 d8 01 sts 0x01D8, r25 |
442e: 80 93 d7 01 sts 0x01D7, r24 |
4432: 27 3a cpi r18, 0xA7 ; 167 |
4434: 31 05 cpc r19, r1 |
4436: 34 f0 brlt .+12 ; 0x4444 <MotorRegler+0x784> |
4438: 80 91 d9 01 lds r24, 0x01D9 |
443c: 90 91 da 01 lds r25, 0x01DA |
4440: 01 96 adiw r24, 0x01 ; 1 |
4442: 08 c0 rjmp .+16 ; 0x4454 <MotorRegler+0x794> |
4444: 2a 55 subi r18, 0x5A ; 90 |
4446: 3f 4f sbci r19, 0xFF ; 255 |
4448: 4c f4 brge .+18 ; 0x445c <MotorRegler+0x79c> |
444a: 80 91 d9 01 lds r24, 0x01D9 |
444e: 90 91 da 01 lds r25, 0x01DA |
4452: 01 97 sbiw r24, 0x01 ; 1 |
4454: 90 93 da 01 sts 0x01DA, r25 |
4458: 80 93 d9 01 sts 0x01D9, r24 |
445c: 80 91 0f 02 lds r24, 0x020F |
4460: 90 91 10 02 lds r25, 0x0210 |
4464: a0 91 11 02 lds r26, 0x0211 |
4468: b0 91 12 02 lds r27, 0x0212 |
446c: 87 3a cpi r24, 0xA7 ; 167 |
446e: 91 05 cpc r25, r1 |
4470: a1 05 cpc r26, r1 |
4472: b1 05 cpc r27, r1 |
4474: 4c f0 brlt .+18 ; 0x4488 <MotorRegler+0x7c8> |
4476: 80 91 db 01 lds r24, 0x01DB |
447a: 90 91 dc 01 lds r25, 0x01DC |
447e: 01 97 sbiw r24, 0x01 ; 1 |
4480: 90 93 dc 01 sts 0x01DC, r25 |
4484: 80 93 db 01 sts 0x01DB, r24 |
4488: 80 91 0f 02 lds r24, 0x020F |
448c: 90 91 10 02 lds r25, 0x0210 |
4490: a0 91 11 02 lds r26, 0x0211 |
4494: b0 91 12 02 lds r27, 0x0212 |
4498: 8a 55 subi r24, 0x5A ; 90 |
449a: 9f 4f sbci r25, 0xFF ; 255 |
449c: af 4f sbci r26, 0xFF ; 255 |
449e: bf 4f sbci r27, 0xFF ; 255 |
44a0: 4c f4 brge .+18 ; 0x44b4 <MotorRegler+0x7f4> |
44a2: 80 91 db 01 lds r24, 0x01DB |
44a6: 90 91 dc 01 lds r25, 0x01DC |
44aa: 01 96 adiw r24, 0x01 ; 1 |
44ac: 90 93 dc 01 sts 0x01DC, r25 |
44b0: 80 93 db 01 sts 0x01DB, r24 |
44b4: 10 92 7a 00 sts 0x007A, r1 |
44b8: 80 91 e7 01 lds r24, 0x01E7 |
44bc: 90 91 e8 01 lds r25, 0x01E8 |
44c0: a0 91 e9 01 lds r26, 0x01E9 |
44c4: b0 91 ea 01 lds r27, 0x01EA |
44c8: 80 93 ff 01 sts 0x01FF, r24 |
44cc: 90 93 00 02 sts 0x0200, r25 |
44d0: a0 93 01 02 sts 0x0201, r26 |
44d4: b0 93 02 02 sts 0x0202, r27 |
44d8: 80 91 ef 01 lds r24, 0x01EF |
44dc: 90 91 f0 01 lds r25, 0x01F0 |
44e0: a0 91 f1 01 lds r26, 0x01F1 |
44e4: b0 91 f2 01 lds r27, 0x01F2 |
44e8: 80 93 07 02 sts 0x0207, r24 |
44ec: 90 93 08 02 sts 0x0208, r25 |
44f0: a0 93 09 02 sts 0x0209, r26 |
44f4: b0 93 0a 02 sts 0x020A, r27 |
44f8: 80 91 f7 01 lds r24, 0x01F7 |
44fc: 90 91 f8 01 lds r25, 0x01F8 |
4500: a0 91 f9 01 lds r26, 0x01F9 |
4504: b0 91 fa 01 lds r27, 0x01FA |
4508: 80 93 0f 02 sts 0x020F, r24 |
450c: 90 93 10 02 sts 0x0210, r25 |
4510: a0 93 11 02 sts 0x0211, r26 |
4514: b0 93 12 02 sts 0x0212, r27 |
4518: 8f ee ldi r24, 0xEF ; 239 |
451a: 80 93 7a 00 sts 0x007A, r24 |
451e: 60 91 e7 01 lds r22, 0x01E7 |
4522: 70 91 e8 01 lds r23, 0x01E8 |
4526: 80 91 e9 01 lds r24, 0x01E9 |
452a: 90 91 ea 01 lds r25, 0x01EA |
452e: a0 90 81 05 lds r10, 0x0581 |
4532: bb 24 eor r11, r11 |
4534: cc 24 eor r12, r12 |
4536: dd 24 eor r13, r13 |
4538: e0 90 b2 05 lds r14, 0x05B2 |
453c: f0 90 b3 05 lds r15, 0x05B3 |
4540: a6 01 movw r20, r12 |
4542: 95 01 movw r18, r10 |
4544: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
4548: 00 27 eor r16, r16 |
454a: f7 fc sbrc r15, 7 |
454c: 00 95 com r16 |
454e: 10 2f mov r17, r16 |
4550: 2e 19 sub r18, r14 |
4552: 3f 09 sbc r19, r15 |
4554: 40 0b sbc r20, r16 |
4556: 51 0b sbc r21, r17 |
4558: ca 01 movw r24, r20 |
455a: b9 01 movw r22, r18 |
455c: 20 e1 ldi r18, 0x10 ; 16 |
455e: 30 e0 ldi r19, 0x00 ; 0 |
4560: 40 e0 ldi r20, 0x00 ; 0 |
4562: 50 e0 ldi r21, 0x00 ; 0 |
4564: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
4568: 39 01 movw r6, r18 |
456a: 4a 01 movw r8, r20 |
456c: 20 93 4c 02 sts 0x024C, r18 |
4570: 30 93 4d 02 sts 0x024D, r19 |
4574: 40 93 4e 02 sts 0x024E, r20 |
4578: 50 93 4f 02 sts 0x024F, r21 |
457c: 60 91 ef 01 lds r22, 0x01EF |
4580: 70 91 f0 01 lds r23, 0x01F0 |
4584: 80 91 f1 01 lds r24, 0x01F1 |
4588: 90 91 f2 01 lds r25, 0x01F2 |
458c: e0 90 bb 05 lds r14, 0x05BB |
4590: f0 90 bc 05 lds r15, 0x05BC |
4594: a6 01 movw r20, r12 |
4596: 95 01 movw r18, r10 |
4598: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
459c: 00 27 eor r16, r16 |
459e: f7 fc sbrc r15, 7 |
45a0: 00 95 com r16 |
45a2: 10 2f mov r17, r16 |
45a4: 2e 19 sub r18, r14 |
45a6: 3f 09 sbc r19, r15 |
45a8: 40 0b sbc r20, r16 |
45aa: 51 0b sbc r21, r17 |
45ac: ca 01 movw r24, r20 |
45ae: b9 01 movw r22, r18 |
45b0: 20 e1 ldi r18, 0x10 ; 16 |
45b2: 30 e0 ldi r19, 0x00 ; 0 |
45b4: 40 e0 ldi r20, 0x00 ; 0 |
45b6: 50 e0 ldi r21, 0x00 ; 0 |
45b8: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
45bc: 20 93 48 02 sts 0x0248, r18 |
45c0: 30 93 49 02 sts 0x0249, r19 |
45c4: 40 93 4a 02 sts 0x024A, r20 |
45c8: 50 93 4b 02 sts 0x024B, r21 |
45cc: f5 ef ldi r31, 0xF5 ; 245 |
45ce: 6f 16 cp r6, r31 |
45d0: f1 e0 ldi r31, 0x01 ; 1 |
45d2: 7f 06 cpc r7, r31 |
45d4: f0 e0 ldi r31, 0x00 ; 0 |
45d6: 8f 06 cpc r8, r31 |
45d8: f0 e0 ldi r31, 0x00 ; 0 |
45da: 9f 06 cpc r9, r31 |
45dc: 2c f0 brlt .+10 ; 0x45e8 <MotorRegler+0x928> |
45de: 84 ef ldi r24, 0xF4 ; 244 |
45e0: 91 e0 ldi r25, 0x01 ; 1 |
45e2: a0 e0 ldi r26, 0x00 ; 0 |
45e4: b0 e0 ldi r27, 0x00 ; 0 |
45e6: 0d c0 rjmp .+26 ; 0x4602 <MotorRegler+0x942> |
45e8: 6c e0 ldi r22, 0x0C ; 12 |
45ea: 66 16 cp r6, r22 |
45ec: 6e ef ldi r22, 0xFE ; 254 |
45ee: 76 06 cpc r7, r22 |
45f0: 6f ef ldi r22, 0xFF ; 255 |
45f2: 86 06 cpc r8, r22 |
45f4: 6f ef ldi r22, 0xFF ; 255 |
45f6: 96 06 cpc r9, r22 |
45f8: 64 f4 brge .+24 ; 0x4612 <MotorRegler+0x952> |
45fa: 8c e0 ldi r24, 0x0C ; 12 |
45fc: 9e ef ldi r25, 0xFE ; 254 |
45fe: af ef ldi r26, 0xFF ; 255 |
4600: bf ef ldi r27, 0xFF ; 255 |
4602: 80 93 4c 02 sts 0x024C, r24 |
4606: 90 93 4d 02 sts 0x024D, r25 |
460a: a0 93 4e 02 sts 0x024E, r26 |
460e: b0 93 4f 02 sts 0x024F, r27 |
4612: 25 3f cpi r18, 0xF5 ; 245 |
4614: 71 e0 ldi r23, 0x01 ; 1 |
4616: 37 07 cpc r19, r23 |
4618: 70 e0 ldi r23, 0x00 ; 0 |
461a: 47 07 cpc r20, r23 |
461c: 70 e0 ldi r23, 0x00 ; 0 |
461e: 57 07 cpc r21, r23 |
4620: 2c f0 brlt .+10 ; 0x462c <MotorRegler+0x96c> |
4622: 84 ef ldi r24, 0xF4 ; 244 |
4624: 91 e0 ldi r25, 0x01 ; 1 |
4626: a0 e0 ldi r26, 0x00 ; 0 |
4628: b0 e0 ldi r27, 0x00 ; 0 |
462a: 09 c0 rjmp .+18 ; 0x463e <MotorRegler+0x97e> |
462c: 2c 50 subi r18, 0x0C ; 12 |
462e: 3e 4f sbci r19, 0xFE ; 254 |
4630: 4f 4f sbci r20, 0xFF ; 255 |
4632: 5f 4f sbci r21, 0xFF ; 255 |
4634: 64 f4 brge .+24 ; 0x464e <MotorRegler+0x98e> |
4636: 8c e0 ldi r24, 0x0C ; 12 |
4638: 9e ef ldi r25, 0xFE ; 254 |
463a: af ef ldi r26, 0xFF ; 255 |
463c: bf ef ldi r27, 0xFF ; 255 |
463e: 80 93 48 02 sts 0x0248, r24 |
4642: 90 93 49 02 sts 0x0249, r25 |
4646: a0 93 4a 02 sts 0x024A, r26 |
464a: b0 93 4b 02 sts 0x024B, r27 |
464e: 10 92 7a 00 sts 0x007A, r1 |
4652: 80 91 fb 01 lds r24, 0x01FB |
4656: 90 91 fc 01 lds r25, 0x01FC |
465a: a0 91 fd 01 lds r26, 0x01FD |
465e: b0 91 fe 01 lds r27, 0x01FE |
4662: 20 91 4c 02 lds r18, 0x024C |
4666: 30 91 4d 02 lds r19, 0x024D |
466a: 40 91 4e 02 lds r20, 0x024E |
466e: 50 91 4f 02 lds r21, 0x024F |
4672: 82 1b sub r24, r18 |
4674: 93 0b sbc r25, r19 |
4676: a4 0b sbc r26, r20 |
4678: b5 0b sbc r27, r21 |
467a: 80 93 fb 01 sts 0x01FB, r24 |
467e: 90 93 fc 01 sts 0x01FC, r25 |
4682: a0 93 fd 01 sts 0x01FD, r26 |
4686: b0 93 fe 01 sts 0x01FE, r27 |
468a: 80 91 03 02 lds r24, 0x0203 |
468e: 90 91 04 02 lds r25, 0x0204 |
4692: a0 91 05 02 lds r26, 0x0205 |
4696: b0 91 06 02 lds r27, 0x0206 |
469a: 20 91 48 02 lds r18, 0x0248 |
469e: 30 91 49 02 lds r19, 0x0249 |
46a2: 40 91 4a 02 lds r20, 0x024A |
46a6: 50 91 4b 02 lds r21, 0x024B |
46aa: 82 1b sub r24, r18 |
46ac: 93 0b sbc r25, r19 |
46ae: a4 0b sbc r26, r20 |
46b0: b5 0b sbc r27, r21 |
46b2: 80 93 03 02 sts 0x0203, r24 |
46b6: 90 93 04 02 sts 0x0204, r25 |
46ba: a0 93 05 02 sts 0x0205, r26 |
46be: b0 93 06 02 sts 0x0206, r27 |
46c2: 80 91 2c 02 lds r24, 0x022C |
46c6: 90 91 2d 02 lds r25, 0x022D |
46ca: 5c 01 movw r10, r24 |
46cc: cc 24 eor r12, r12 |
46ce: b7 fc sbrc r11, 7 |
46d0: c0 94 com r12 |
46d2: dc 2c mov r13, r12 |
46d4: a0 92 50 02 sts 0x0250, r10 |
46d8: b0 92 51 02 sts 0x0251, r11 |
46dc: c0 92 52 02 sts 0x0252, r12 |
46e0: d0 92 53 02 sts 0x0253, r13 |
46e4: 97 ff sbrs r25, 7 |
46e6: 03 c0 rjmp .+6 ; 0x46ee <MotorRegler+0xa2e> |
46e8: 90 95 com r25 |
46ea: 81 95 neg r24 |
46ec: 9f 4f sbci r25, 0xFF ; 255 |
46ee: 84 97 sbiw r24, 0x24 ; 36 |
46f0: 3c f0 brlt .+14 ; 0x4700 <MotorRegler+0xa40> |
46f2: 80 91 75 05 lds r24, 0x0575 |
46f6: 84 fd sbrc r24, 4 |
46f8: 03 c0 rjmp .+6 ; 0x4700 <MotorRegler+0xa40> |
46fa: 81 e0 ldi r24, 0x01 ; 1 |
46fc: 80 93 39 02 sts 0x0239, r24 |
4700: 60 90 0b 02 lds r6, 0x020B |
4704: 70 90 0c 02 lds r7, 0x020C |
4708: 80 90 0d 02 lds r8, 0x020D |
470c: 90 90 0e 02 lds r9, 0x020E |
4710: c5 01 movw r24, r10 |
4712: b7 fe sbrs r11, 7 |
4714: 03 c0 rjmp .+6 ; 0x471c <MotorRegler+0xa5c> |
4716: 90 95 com r25 |
4718: 81 95 neg r24 |
471a: 9f 4f sbci r25, 0xFF ; 255 |
471c: 7c 01 movw r14, r24 |
471e: 00 27 eor r16, r16 |
4720: f7 fc sbrc r15, 7 |
4722: 00 95 com r16 |
4724: 10 2f mov r17, r16 |
4726: 20 91 7e 05 lds r18, 0x057E |
472a: 33 27 eor r19, r19 |
472c: 44 27 eor r20, r20 |
472e: 55 27 eor r21, r21 |
4730: c6 01 movw r24, r12 |
4732: b5 01 movw r22, r10 |
4734: 0e 94 a0 2c call 0x5940 ; 0x5940 <__mulsi3> |
4738: 9b 01 movw r18, r22 |
473a: ac 01 movw r20, r24 |
473c: c8 01 movw r24, r16 |
473e: b7 01 movw r22, r14 |
4740: 0e 94 a0 2c call 0x5940 ; 0x5940 <__mulsi3> |
4744: 20 e0 ldi r18, 0x00 ; 0 |
4746: 31 e0 ldi r19, 0x01 ; 1 |
4748: 40 e0 ldi r20, 0x00 ; 0 |
474a: 50 e0 ldi r21, 0x00 ; 0 |
474c: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
4750: 44 27 eor r20, r20 |
4752: 37 fd sbrc r19, 7 |
4754: 40 95 com r20 |
4756: 54 2f mov r21, r20 |
4758: 62 1a sub r6, r18 |
475a: 73 0a sbc r7, r19 |
475c: 84 0a sbc r8, r20 |
475e: 95 0a sbc r9, r21 |
4760: 60 92 0b 02 sts 0x020B, r6 |
4764: 70 92 0c 02 sts 0x020C, r7 |
4768: 80 92 0d 02 sts 0x020D, r8 |
476c: 90 92 0e 02 sts 0x020E, r9 |
4770: 80 91 0b 02 lds r24, 0x020B |
4774: 90 91 0c 02 lds r25, 0x020C |
4778: a0 91 0d 02 lds r26, 0x020D |
477c: b0 91 0e 02 lds r27, 0x020E |
4780: 81 53 subi r24, 0x31 ; 49 |
4782: 95 47 sbci r25, 0x75 ; 117 |
4784: a0 40 sbci r26, 0x00 ; 0 |
4786: b0 40 sbci r27, 0x00 ; 0 |
4788: 64 f0 brlt .+24 ; 0x47a2 <MotorRegler+0xae2> |
478a: 80 e3 ldi r24, 0x30 ; 48 |
478c: 95 e7 ldi r25, 0x75 ; 117 |
478e: a0 e0 ldi r26, 0x00 ; 0 |
4790: b0 e0 ldi r27, 0x00 ; 0 |
4792: 80 93 0b 02 sts 0x020B, r24 |
4796: 90 93 0c 02 sts 0x020C, r25 |
479a: a0 93 0d 02 sts 0x020D, r26 |
479e: b0 93 0e 02 sts 0x020E, r27 |
47a2: 80 91 0b 02 lds r24, 0x020B |
47a6: 90 91 0c 02 lds r25, 0x020C |
47aa: a0 91 0d 02 lds r26, 0x020D |
47ae: b0 91 0e 02 lds r27, 0x020E |
47b2: 80 5d subi r24, 0xD0 ; 208 |
47b4: 9a 48 sbci r25, 0x8A ; 138 |
47b6: af 4f sbci r26, 0xFF ; 255 |
47b8: bf 4f sbci r27, 0xFF ; 255 |
47ba: 64 f4 brge .+24 ; 0x47d4 <MotorRegler+0xb14> |
47bc: 80 ed ldi r24, 0xD0 ; 208 |
47be: 9a e8 ldi r25, 0x8A ; 138 |
47c0: af ef ldi r26, 0xFF ; 255 |
47c2: bf ef ldi r27, 0xFF ; 255 |
47c4: 80 93 0b 02 sts 0x020B, r24 |
47c8: 90 93 0c 02 sts 0x020C, r25 |
47cc: a0 93 0d 02 sts 0x020D, r26 |
47d0: b0 93 0e 02 sts 0x020E, r27 |
47d4: 8f ee ldi r24, 0xEF ; 239 |
47d6: 80 93 7a 00 sts 0x007A, r24 |
47da: 80 91 17 02 lds r24, 0x0217 |
47de: 90 91 18 02 lds r25, 0x0218 |
47e2: 89 2b or r24, r25 |
47e4: 09 f4 brne .+2 ; 0x47e8 <MotorRegler+0xb28> |
47e6: a1 c0 rjmp .+322 ; 0x492a <MotorRegler+0xc6a> |
47e8: 80 91 75 05 lds r24, 0x0575 |
47ec: 83 ff sbrs r24, 3 |
47ee: 9d c0 rjmp .+314 ; 0x492a <MotorRegler+0xc6a> |
47f0: 60 91 e7 01 lds r22, 0x01E7 |
47f4: 70 91 e8 01 lds r23, 0x01E8 |
47f8: 80 91 e9 01 lds r24, 0x01E9 |
47fc: 90 91 ea 01 lds r25, 0x01EA |
4800: 20 e0 ldi r18, 0x00 ; 0 |
4802: 32 e0 ldi r19, 0x02 ; 2 |
4804: 40 e0 ldi r20, 0x00 ; 0 |
4806: 50 e0 ldi r21, 0x00 ; 0 |
4808: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
480c: 89 01 movw r16, r18 |
480e: 37 ff sbrs r19, 7 |
4810: 03 c0 rjmp .+6 ; 0x4818 <MotorRegler+0xb58> |
4812: 10 95 com r17 |
4814: 01 95 neg r16 |
4816: 1f 4f sbci r17, 0xFF ; 255 |
4818: 60 91 ef 01 lds r22, 0x01EF |
481c: 70 91 f0 01 lds r23, 0x01F0 |
4820: 80 91 f1 01 lds r24, 0x01F1 |
4824: 90 91 f2 01 lds r25, 0x01F2 |
4828: 20 e0 ldi r18, 0x00 ; 0 |
482a: 32 e0 ldi r19, 0x02 ; 2 |
482c: 40 e0 ldi r20, 0x00 ; 0 |
482e: 50 e0 ldi r21, 0x00 ; 0 |
4830: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
4834: b9 01 movw r22, r18 |
4836: 37 ff sbrs r19, 7 |
4838: 03 c0 rjmp .+6 ; 0x4840 <MotorRegler+0xb80> |
483a: 70 95 com r23 |
483c: 61 95 neg r22 |
483e: 7f 4f sbci r23, 0xFF ; 255 |
4840: 60 17 cp r22, r16 |
4842: 71 07 cpc r23, r17 |
4844: 0c f4 brge .+2 ; 0x4848 <MotorRegler+0xb88> |
4846: b8 01 movw r22, r16 |
4848: 69 31 cpi r22, 0x19 ; 25 |
484a: 71 05 cpc r23, r1 |
484c: a4 f4 brge .+40 ; 0x4876 <MotorRegler+0xbb6> |
484e: 80 91 39 02 lds r24, 0x0239 |
4852: 88 23 and r24, r24 |
4854: 81 f0 breq .+32 ; 0x4876 <MotorRegler+0xbb6> |
4856: 80 91 37 02 lds r24, 0x0237 |
485a: 90 91 38 02 lds r25, 0x0238 |
485e: 89 2b or r24, r25 |
4860: 51 f4 brne .+20 ; 0x4876 <MotorRegler+0xbb6> |
4862: 80 91 17 02 lds r24, 0x0217 |
4866: 90 91 18 02 lds r25, 0x0218 |
486a: 90 93 1a 02 sts 0x021A, r25 |
486e: 80 93 19 02 sts 0x0219, r24 |
4872: 10 92 39 02 sts 0x0239, r1 |
4876: 20 91 84 01 lds r18, 0x0184 |
487a: 33 27 eor r19, r19 |
487c: 62 9f mul r22, r18 |
487e: c0 01 movw r24, r0 |
4880: 63 9f mul r22, r19 |
4882: 90 0d add r25, r0 |
4884: 72 9f mul r23, r18 |
4886: 90 0d add r25, r0 |
4888: 11 24 eor r1, r1 |
488a: 60 e4 ldi r22, 0x40 ; 64 |
488c: 70 e0 ldi r23, 0x00 ; 0 |
488e: 0e 94 d3 2c call 0x59a6 ; 0x59a6 <__divmodhi4> |
4892: a9 01 movw r20, r18 |
4894: 46 1b sub r20, r22 |
4896: 57 0b sbc r21, r23 |
4898: 14 16 cp r1, r20 |
489a: 15 06 cpc r1, r21 |
489c: 0c f0 brlt .+2 ; 0x48a0 <MotorRegler+0xbe0> |
489e: 3f c0 rjmp .+126 ; 0x491e <MotorRegler+0xc5e> |
48a0: 10 92 7a 00 sts 0x007A, r1 |
48a4: 20 91 37 02 lds r18, 0x0237 |
48a8: 30 91 38 02 lds r19, 0x0238 |
48ac: 21 15 cp r18, r1 |
48ae: 31 05 cpc r19, r1 |
48b0: 61 f5 brne .+88 ; 0x490a <MotorRegler+0xc4a> |
48b2: 00 91 0b 02 lds r16, 0x020B |
48b6: 10 91 0c 02 lds r17, 0x020C |
48ba: 20 91 0d 02 lds r18, 0x020D |
48be: 30 91 0e 02 lds r19, 0x020E |
48c2: 80 91 1b 02 lds r24, 0x021B |
48c6: 90 91 1c 02 lds r25, 0x021C |
48ca: bc 01 movw r22, r24 |
48cc: 64 9f mul r22, r20 |
48ce: c0 01 movw r24, r0 |
48d0: 65 9f mul r22, r21 |
48d2: 90 0d add r25, r0 |
48d4: 74 9f mul r23, r20 |
48d6: 90 0d add r25, r0 |
48d8: 11 24 eor r1, r1 |
48da: 60 e2 ldi r22, 0x20 ; 32 |
48dc: 70 e0 ldi r23, 0x00 ; 0 |
48de: 0e 94 d3 2c call 0x59a6 ; 0x59a6 <__divmodhi4> |
48e2: 88 27 eor r24, r24 |
48e4: 77 fd sbrc r23, 7 |
48e6: 80 95 com r24 |
48e8: 98 2f mov r25, r24 |
48ea: 06 0f add r16, r22 |
48ec: 17 1f adc r17, r23 |
48ee: 28 1f adc r18, r24 |
48f0: 39 1f adc r19, r25 |
48f2: 00 93 0b 02 sts 0x020B, r16 |
48f6: 10 93 0c 02 sts 0x020C, r17 |
48fa: 20 93 0d 02 sts 0x020D, r18 |
48fe: 30 93 0e 02 sts 0x020E, r19 |
4902: 8f ee ldi r24, 0xEF ; 239 |
4904: 80 93 7a 00 sts 0x007A, r24 |
4908: 10 c0 rjmp .+32 ; 0x492a <MotorRegler+0xc6a> |
490a: 8f ee ldi r24, 0xEF ; 239 |
490c: 80 93 7a 00 sts 0x007A, r24 |
4910: 21 50 subi r18, 0x01 ; 1 |
4912: 30 40 sbci r19, 0x00 ; 0 |
4914: 30 93 38 02 sts 0x0238, r19 |
4918: 20 93 37 02 sts 0x0237, r18 |
491c: 06 c0 rjmp .+12 ; 0x492a <MotorRegler+0xc6a> |
491e: 84 ef ldi r24, 0xF4 ; 244 |
4920: 91 e0 ldi r25, 0x01 ; 1 |
4922: 90 93 38 02 sts 0x0238, r25 |
4926: 80 93 37 02 sts 0x0237, r24 |
492a: 80 91 75 05 lds r24, 0x0575 |
492e: 85 ff sbrs r24, 5 |
4930: 11 c0 rjmp .+34 ; 0x4954 <MotorRegler+0xc94> |
4932: 80 91 33 02 lds r24, 0x0233 |
4936: 99 27 eor r25, r25 |
4938: 90 93 a3 02 sts 0x02A3, r25 |
493c: 80 93 a2 02 sts 0x02A2, r24 |
4940: 80 91 34 02 lds r24, 0x0234 |
4944: 99 27 eor r25, r25 |
4946: 90 93 a5 02 sts 0x02A5, r25 |
494a: 80 93 a4 02 sts 0x02A4, r24 |
494e: 0e 94 2a 29 call 0x5254 ; 0x5254 <gps_main> |
4952: 08 c0 rjmp .+16 ; 0x4964 <MotorRegler+0xca4> |
4954: 10 92 8d 02 sts 0x028D, r1 |
4958: 10 92 8c 02 sts 0x028C, r1 |
495c: 10 92 8f 02 sts 0x028F, r1 |
4960: 10 92 8e 02 sts 0x028E, r1 |
4964: 80 91 e9 04 lds r24, 0x04E9 |
4968: 8f 5f subi r24, 0xFF ; 255 |
496a: 80 93 e9 04 sts 0x04E9, r24 |
496e: 80 91 3a 02 lds r24, 0x023A |
4972: 81 50 subi r24, 0x01 ; 1 |
4974: 80 93 3a 02 sts 0x023A, r24 |
4978: 8f 3f cpi r24, 0xFF ; 255 |
497a: 09 f0 breq .+2 ; 0x497e <MotorRegler+0xcbe> |
497c: 68 c0 rjmp .+208 ; 0x4a4e <MotorRegler+0xd8e> |
497e: 81 e3 ldi r24, 0x31 ; 49 |
4980: 80 93 3a 02 sts 0x023A, r24 |
4984: 60 91 e7 01 lds r22, 0x01E7 |
4988: 70 91 e8 01 lds r23, 0x01E8 |
498c: 80 91 e9 01 lds r24, 0x01E9 |
4990: 90 91 ea 01 lds r25, 0x01EA |
4994: e0 90 81 05 lds r14, 0x0581 |
4998: ff 24 eor r15, r15 |
499a: 00 27 eor r16, r16 |
499c: 11 27 eor r17, r17 |
499e: a8 01 movw r20, r16 |
49a0: 97 01 movw r18, r14 |
49a2: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
49a6: 30 93 eb 04 sts 0x04EB, r19 |
49aa: 20 93 ea 04 sts 0x04EA, r18 |
49ae: 60 91 ef 01 lds r22, 0x01EF |
49b2: 70 91 f0 01 lds r23, 0x01F0 |
49b6: 80 91 f1 01 lds r24, 0x01F1 |
49ba: 90 91 f2 01 lds r25, 0x01F2 |
49be: a8 01 movw r20, r16 |
49c0: 97 01 movw r18, r14 |
49c2: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
49c6: 30 93 ed 04 sts 0x04ED, r19 |
49ca: 20 93 ec 04 sts 0x04EC, r18 |
49ce: 80 91 b2 05 lds r24, 0x05B2 |
49d2: 90 91 b3 05 lds r25, 0x05B3 |
49d6: 90 93 ef 04 sts 0x04EF, r25 |
49da: 80 93 ee 04 sts 0x04EE, r24 |
49de: 80 91 bb 05 lds r24, 0x05BB |
49e2: 90 91 bc 05 lds r25, 0x05BC |
49e6: 90 93 f1 04 sts 0x04F1, r25 |
49ea: 80 93 f0 04 sts 0x04F0, r24 |
49ee: 80 91 b5 05 lds r24, 0x05B5 |
49f2: 90 91 b6 05 lds r25, 0x05B6 |
49f6: 90 93 f3 04 sts 0x04F3, r25 |
49fa: 80 93 f2 04 sts 0x04F2, r24 |
49fe: 80 91 2f 02 lds r24, 0x022F |
4a02: 90 91 30 02 lds r25, 0x0230 |
4a06: 90 93 f5 04 sts 0x04F5, r25 |
4a0a: 80 93 f4 04 sts 0x04F4, r24 |
4a0e: 60 91 13 02 lds r22, 0x0213 |
4a12: 70 91 14 02 lds r23, 0x0214 |
4a16: 80 91 15 02 lds r24, 0x0215 |
4a1a: 90 91 16 02 lds r25, 0x0216 |
4a1e: 20 e0 ldi r18, 0x00 ; 0 |
4a20: 32 e0 ldi r19, 0x02 ; 2 |
4a22: 40 e0 ldi r20, 0x00 ; 0 |
4a24: 50 e0 ldi r21, 0x00 ; 0 |
4a26: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
4a2a: 30 93 f7 04 sts 0x04F7, r19 |
4a2e: 20 93 f6 04 sts 0x04F6, r18 |
4a32: 89 81 ldd r24, Y+1 ; 0x01 |
4a34: 9a 81 ldd r25, Y+2 ; 0x02 |
4a36: 90 93 f9 04 sts 0x04F9, r25 |
4a3a: 80 93 f8 04 sts 0x04F8, r24 |
4a3e: 80 91 17 02 lds r24, 0x0217 |
4a42: 90 91 18 02 lds r25, 0x0218 |
4a46: 90 93 fb 04 sts 0x04FB, r25 |
4a4a: 80 93 fa 04 sts 0x04FA, r24 |
4a4e: 60 91 e7 01 lds r22, 0x01E7 |
4a52: 70 91 e8 01 lds r23, 0x01E8 |
4a56: 80 91 e9 01 lds r24, 0x01E9 |
4a5a: 90 91 ea 01 lds r25, 0x01EA |
4a5e: 20 90 ae 05 lds r2, 0x05AE |
4a62: 30 90 af 05 lds r3, 0x05AF |
4a66: 40 90 b0 05 lds r4, 0x05B0 |
4a6a: 50 90 b1 05 lds r5, 0x05B1 |
4a6e: e0 90 a9 05 lds r14, 0x05A9 |
4a72: f0 90 aa 05 lds r15, 0x05AA |
4a76: 60 90 b7 05 lds r6, 0x05B7 |
4a7a: 70 90 b8 05 lds r7, 0x05B8 |
4a7e: 80 90 b9 05 lds r8, 0x05B9 |
4a82: 90 90 ba 05 lds r9, 0x05BA |
4a86: 0e 94 84 2b call 0x5708 ; 0x5708 <__floatsisf> |
4a8a: a2 01 movw r20, r4 |
4a8c: 91 01 movw r18, r2 |
4a8e: 0e 94 fe 2b call 0x57fc ; 0x57fc <__mulsf3> |
4a92: 5b 01 movw r10, r22 |
4a94: 6c 01 movw r12, r24 |
4a96: 00 27 eor r16, r16 |
4a98: f7 fc sbrc r15, 7 |
4a9a: 00 95 com r16 |
4a9c: 10 2f mov r17, r16 |
4a9e: c8 01 movw r24, r16 |
4aa0: b7 01 movw r22, r14 |
4aa2: 0e 94 84 2b call 0x5708 ; 0x5708 <__floatsisf> |
4aa6: a4 01 movw r20, r8 |
4aa8: 93 01 movw r18, r6 |
4aaa: 0e 94 fe 2b call 0x57fc ; 0x57fc <__mulsf3> |
4aae: 9b 01 movw r18, r22 |
4ab0: ac 01 movw r20, r24 |
4ab2: c6 01 movw r24, r12 |
4ab4: b5 01 movw r22, r10 |
4ab6: 0e 94 df 2a call 0x55be ; 0x55be <__addsf3> |
4aba: 0e 94 67 2b call 0x56ce ; 0x56ce <__fixsfsi> |
4abe: 70 93 aa 05 sts 0x05AA, r23 |
4ac2: 60 93 a9 05 sts 0x05A9, r22 |
4ac6: 60 91 ef 01 lds r22, 0x01EF |
4aca: 70 91 f0 01 lds r23, 0x01F0 |
4ace: 80 91 f1 01 lds r24, 0x01F1 |
4ad2: 90 91 f2 01 lds r25, 0x01F2 |
4ad6: e0 90 a7 05 lds r14, 0x05A7 |
4ada: f0 90 a8 05 lds r15, 0x05A8 |
4ade: 0e 94 84 2b call 0x5708 ; 0x5708 <__floatsisf> |
4ae2: a2 01 movw r20, r4 |
4ae4: 91 01 movw r18, r2 |
4ae6: 0e 94 fe 2b call 0x57fc ; 0x57fc <__mulsf3> |
4aea: 5b 01 movw r10, r22 |
4aec: 6c 01 movw r12, r24 |
4aee: 00 27 eor r16, r16 |
4af0: f7 fc sbrc r15, 7 |
4af2: 00 95 com r16 |
4af4: 10 2f mov r17, r16 |
4af6: c8 01 movw r24, r16 |
4af8: b7 01 movw r22, r14 |
4afa: 0e 94 84 2b call 0x5708 ; 0x5708 <__floatsisf> |
4afe: a4 01 movw r20, r8 |
4b00: 93 01 movw r18, r6 |
4b02: 0e 94 fe 2b call 0x57fc ; 0x57fc <__mulsf3> |
4b06: 9b 01 movw r18, r22 |
4b08: ac 01 movw r20, r24 |
4b0a: c6 01 movw r24, r12 |
4b0c: b5 01 movw r22, r10 |
4b0e: 0e 94 df 2a call 0x55be ; 0x55be <__addsf3> |
4b12: 0e 94 67 2b call 0x56ce ; 0x56ce <__fixsfsi> |
4b16: 70 93 a8 05 sts 0x05A8, r23 |
4b1a: 60 93 a7 05 sts 0x05A7, r22 |
4b1e: 60 91 b5 05 lds r22, 0x05B5 |
4b22: 70 91 b6 05 lds r23, 0x05B6 |
4b26: a0 90 f7 01 lds r10, 0x01F7 |
4b2a: b0 90 f8 01 lds r11, 0x01F8 |
4b2e: c0 90 f9 01 lds r12, 0x01F9 |
4b32: d0 90 fa 01 lds r13, 0x01FA |
4b36: 88 27 eor r24, r24 |
4b38: 77 fd sbrc r23, 7 |
4b3a: 80 95 com r24 |
4b3c: 98 2f mov r25, r24 |
4b3e: 0e 94 84 2b call 0x5708 ; 0x5708 <__floatsisf> |
4b42: 7b 01 movw r14, r22 |
4b44: 8c 01 movw r16, r24 |
4b46: 20 e0 ldi r18, 0x00 ; 0 |
4b48: 30 e0 ldi r19, 0x00 ; 0 |
4b4a: 40 e0 ldi r20, 0x00 ; 0 |
4b4c: 5f e3 ldi r21, 0x3F ; 63 |
4b4e: c4 01 movw r24, r8 |
4b50: b3 01 movw r22, r6 |
4b52: 0e 94 fe 2b call 0x57fc ; 0x57fc <__mulsf3> |
4b56: 9b 01 movw r18, r22 |
4b58: ac 01 movw r20, r24 |
4b5a: c8 01 movw r24, r16 |
4b5c: b7 01 movw r22, r14 |
4b5e: 0e 94 fe 2b call 0x57fc ; 0x57fc <__mulsf3> |
4b62: 7b 01 movw r14, r22 |
4b64: 8c 01 movw r16, r24 |
4b66: c6 01 movw r24, r12 |
4b68: b5 01 movw r22, r10 |
4b6a: 0e 94 84 2b call 0x5708 ; 0x5708 <__floatsisf> |
4b6e: a2 01 movw r20, r4 |
4b70: 91 01 movw r18, r2 |
4b72: 0e 94 fe 2b call 0x57fc ; 0x57fc <__mulsf3> |
4b76: 9b 01 movw r18, r22 |
4b78: ac 01 movw r20, r24 |
4b7a: c8 01 movw r24, r16 |
4b7c: b7 01 movw r22, r14 |
4b7e: 0e 94 df 2a call 0x55be ; 0x55be <__addsf3> |
4b82: 0e 94 67 2b call 0x56ce ; 0x56ce <__fixsfsi> |
4b86: 70 93 b6 05 sts 0x05B6, r23 |
4b8a: 60 93 b5 05 sts 0x05B5, r22 |
4b8e: 80 91 a9 05 lds r24, 0x05A9 |
4b92: 90 91 aa 05 lds r25, 0x05AA |
4b96: 81 50 subi r24, 0x01 ; 1 |
4b98: 98 40 sbci r25, 0x08 ; 8 |
4b9a: 34 f0 brlt .+12 ; 0x4ba8 <MotorRegler+0xee8> |
4b9c: 80 e0 ldi r24, 0x00 ; 0 |
4b9e: 98 e0 ldi r25, 0x08 ; 8 |
4ba0: 90 93 aa 05 sts 0x05AA, r25 |
4ba4: 80 93 a9 05 sts 0x05A9, r24 |
4ba8: 80 91 a9 05 lds r24, 0x05A9 |
4bac: 90 91 aa 05 lds r25, 0x05AA |
4bb0: 80 50 subi r24, 0x00 ; 0 |
4bb2: 98 4f sbci r25, 0xF8 ; 248 |
4bb4: 34 f4 brge .+12 ; 0x4bc2 <MotorRegler+0xf02> |
4bb6: 80 e0 ldi r24, 0x00 ; 0 |
4bb8: 98 ef ldi r25, 0xF8 ; 248 |
4bba: 90 93 aa 05 sts 0x05AA, r25 |
4bbe: 80 93 a9 05 sts 0x05A9, r24 |
4bc2: 80 91 a7 05 lds r24, 0x05A7 |
4bc6: 90 91 a8 05 lds r25, 0x05A8 |
4bca: 81 50 subi r24, 0x01 ; 1 |
4bcc: 98 40 sbci r25, 0x08 ; 8 |
4bce: 34 f0 brlt .+12 ; 0x4bdc <MotorRegler+0xf1c> |
4bd0: 80 e0 ldi r24, 0x00 ; 0 |
4bd2: 98 e0 ldi r25, 0x08 ; 8 |
4bd4: 90 93 a8 05 sts 0x05A8, r25 |
4bd8: 80 93 a7 05 sts 0x05A7, r24 |
4bdc: 80 91 a7 05 lds r24, 0x05A7 |
4be0: 90 91 a8 05 lds r25, 0x05A8 |
4be4: 80 50 subi r24, 0x00 ; 0 |
4be6: 98 4f sbci r25, 0xF8 ; 248 |
4be8: 34 f4 brge .+12 ; 0x4bf6 <MotorRegler+0xf36> |
4bea: 80 e0 ldi r24, 0x00 ; 0 |
4bec: 98 ef ldi r25, 0xF8 ; 248 |
4bee: 90 93 a8 05 sts 0x05A8, r25 |
4bf2: 80 93 a7 05 sts 0x05A7, r24 |
4bf6: 80 91 b5 05 lds r24, 0x05B5 |
4bfa: 90 91 b6 05 lds r25, 0x05B6 |
4bfe: 81 50 subi r24, 0x01 ; 1 |
4c00: 98 40 sbci r25, 0x08 ; 8 |
4c02: 34 f0 brlt .+12 ; 0x4c10 <MotorRegler+0xf50> |
4c04: 80 e0 ldi r24, 0x00 ; 0 |
4c06: 98 e0 ldi r25, 0x08 ; 8 |
4c08: 90 93 b6 05 sts 0x05B6, r25 |
4c0c: 80 93 b5 05 sts 0x05B5, r24 |
4c10: 80 91 b5 05 lds r24, 0x05B5 |
4c14: 90 91 b6 05 lds r25, 0x05B6 |
4c18: 80 50 subi r24, 0x00 ; 0 |
4c1a: 98 4f sbci r25, 0xF8 ; 248 |
4c1c: 34 f4 brge .+12 ; 0x4c2a <MotorRegler+0xf6a> |
4c1e: 80 e0 ldi r24, 0x00 ; 0 |
4c20: 98 ef ldi r25, 0xF8 ; 248 |
4c22: 90 93 b6 05 sts 0x05B6, r25 |
4c26: 80 93 b5 05 sts 0x05B5, r24 |
4c2a: 80 91 75 05 lds r24, 0x0575 |
4c2e: 99 27 eor r25, r25 |
4c30: 80 ff sbrs r24, 0 |
4c32: cd c0 rjmp .+410 ; 0x4dce <MotorRegler+0x110e> |
4c34: 20 91 81 01 lds r18, 0x0181 |
4c38: 81 ff sbrs r24, 1 |
4c3a: 0e c0 rjmp .+28 ; 0x4c58 <MotorRegler+0xf98> |
4c3c: 22 33 cpi r18, 0x32 ; 50 |
4c3e: b0 f4 brcc .+44 ; 0x4c6c <MotorRegler+0xfac> |
4c40: 80 91 2f 02 lds r24, 0x022F |
4c44: 90 91 30 02 lds r25, 0x0230 |
4c48: 44 97 sbiw r24, 0x14 ; 20 |
4c4a: 90 93 32 02 sts 0x0232, r25 |
4c4e: 80 93 31 02 sts 0x0231, r24 |
4c52: 10 92 1e 02 sts 0x021E, r1 |
4c56: 0d c0 rjmp .+26 ; 0x4c72 <MotorRegler+0xfb2> |
4c58: 80 91 7a 05 lds r24, 0x057A |
4c5c: 28 9f mul r18, r24 |
4c5e: c0 01 movw r24, r0 |
4c60: 11 24 eor r1, r1 |
4c62: 44 97 sbiw r24, 0x14 ; 20 |
4c64: 90 93 32 02 sts 0x0232, r25 |
4c68: 80 93 31 02 sts 0x0231, r24 |
4c6c: 81 e0 ldi r24, 0x01 ; 1 |
4c6e: 80 93 1e 02 sts 0x021E, r24 |
4c72: 80 91 1d 02 lds r24, 0x021D |
4c76: 88 23 and r24, r24 |
4c78: 21 f0 breq .+8 ; 0x4c82 <MotorRegler+0xfc2> |
4c7a: 10 92 32 02 sts 0x0232, r1 |
4c7e: 10 92 31 02 sts 0x0231, r1 |
4c82: 20 91 2f 02 lds r18, 0x022F |
4c86: 30 91 30 02 lds r19, 0x0230 |
4c8a: 40 91 31 02 lds r20, 0x0231 |
4c8e: 50 91 32 02 lds r21, 0x0232 |
4c92: 42 17 cp r20, r18 |
4c94: 53 07 cpc r21, r19 |
4c96: 0c f0 brlt .+2 ; 0x4c9a <MotorRegler+0xfda> |
4c98: 9a c0 rjmp .+308 ; 0x4dce <MotorRegler+0x110e> |
4c9a: 80 91 1e 02 lds r24, 0x021E |
4c9e: 88 23 and r24, r24 |
4ca0: 09 f4 brne .+2 ; 0x4ca4 <MotorRegler+0xfe4> |
4ca2: 95 c0 rjmp .+298 ; 0x4dce <MotorRegler+0x110e> |
4ca4: 24 1b sub r18, r20 |
4ca6: 35 0b sbc r19, r21 |
4ca8: 80 91 82 01 lds r24, 0x0182 |
4cac: 99 27 eor r25, r25 |
4cae: bc 01 movw r22, r24 |
4cb0: 26 9f mul r18, r22 |
4cb2: c0 01 movw r24, r0 |
4cb4: 27 9f mul r18, r23 |
4cb6: 90 0d add r25, r0 |
4cb8: 36 9f mul r19, r22 |
4cba: 90 0d add r25, r0 |
4cbc: 11 24 eor r1, r1 |
4cbe: 60 e1 ldi r22, 0x10 ; 16 |
4cc0: 70 e0 ldi r23, 0x00 ; 0 |
4cc2: 0e 94 d3 2c call 0x59a6 ; 0x59a6 <__divmodhi4> |
4cc6: 09 81 ldd r16, Y+1 ; 0x01 |
4cc8: 1a 81 ldd r17, Y+2 ; 0x02 |
4cca: 06 1b sub r16, r22 |
4ccc: 17 0b sbc r17, r23 |
4cce: 20 91 c4 01 lds r18, 0x01C4 |
4cd2: 30 91 c5 01 lds r19, 0x01C5 |
4cd6: 80 91 80 01 lds r24, 0x0180 |
4cda: 99 27 eor r25, r25 |
4cdc: fc 01 movw r30, r24 |
4cde: 2e 9f mul r18, r30 |
4ce0: c0 01 movw r24, r0 |
4ce2: 2f 9f mul r18, r31 |
4ce4: 90 0d add r25, r0 |
4ce6: 3e 9f mul r19, r30 |
4ce8: 90 0d add r25, r0 |
4cea: 11 24 eor r1, r1 |
4cec: 68 e0 ldi r22, 0x08 ; 8 |
4cee: 70 e0 ldi r23, 0x00 ; 0 |
4cf0: 0e 94 d3 2c call 0x59a6 ; 0x59a6 <__divmodhi4> |
4cf4: 06 1b sub r16, r22 |
4cf6: 17 0b sbc r17, r23 |
4cf8: 60 91 13 02 lds r22, 0x0213 |
4cfc: 70 91 14 02 lds r23, 0x0214 |
4d00: 80 91 15 02 lds r24, 0x0215 |
4d04: 90 91 16 02 lds r25, 0x0216 |
4d08: 20 e0 ldi r18, 0x00 ; 0 |
4d0a: 32 e0 ldi r19, 0x02 ; 2 |
4d0c: 40 e0 ldi r20, 0x00 ; 0 |
4d0e: 50 e0 ldi r21, 0x00 ; 0 |
4d10: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
4d14: ca 01 movw r24, r20 |
4d16: b9 01 movw r22, r18 |
4d18: 20 91 83 01 lds r18, 0x0183 |
4d1c: 33 27 eor r19, r19 |
4d1e: 44 27 eor r20, r20 |
4d20: 55 27 eor r21, r21 |
4d22: 0e 94 a0 2c call 0x5940 ; 0x5940 <__mulsi3> |
4d26: 20 e2 ldi r18, 0x20 ; 32 |
4d28: 30 e0 ldi r19, 0x00 ; 0 |
4d2a: 40 e0 ldi r20, 0x00 ; 0 |
4d2c: 50 e0 ldi r21, 0x00 ; 0 |
4d2e: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
4d32: ff ef ldi r31, 0xFF ; 255 |
4d34: 2e 3c cpi r18, 0xCE ; 206 |
4d36: 3f 07 cpc r19, r31 |
4d38: 14 f4 brge .+4 ; 0x4d3e <MotorRegler+0x107e> |
4d3a: 2e ec ldi r18, 0xCE ; 206 |
4d3c: 3f ef ldi r19, 0xFF ; 255 |
4d3e: 80 91 3b 02 lds r24, 0x023B |
4d42: 90 91 3c 02 lds r25, 0x023C |
4d46: ac 01 movw r20, r24 |
4d48: 74 e0 ldi r23, 0x04 ; 4 |
4d4a: 44 0f add r20, r20 |
4d4c: 55 1f adc r21, r21 |
4d4e: 7a 95 dec r23 |
4d50: e1 f7 brne .-8 ; 0x4d4a <MotorRegler+0x108a> |
4d52: 48 1b sub r20, r24 |
4d54: 59 0b sbc r21, r25 |
4d56: 23 33 cpi r18, 0x33 ; 51 |
4d58: 31 05 cpc r19, r1 |
4d5a: 14 f0 brlt .+4 ; 0x4d60 <MotorRegler+0x10a0> |
4d5c: 22 e3 ldi r18, 0x32 ; 50 |
4d5e: 30 e0 ldi r19, 0x00 ; 0 |
4d60: 02 1b sub r16, r18 |
4d62: 13 0b sbc r17, r19 |
4d64: ca 01 movw r24, r20 |
4d66: 80 0f add r24, r16 |
4d68: 91 1f adc r25, r17 |
4d6a: 60 e1 ldi r22, 0x10 ; 16 |
4d6c: 70 e0 ldi r23, 0x00 ; 0 |
4d6e: 0e 94 d3 2c call 0x59a6 ; 0x59a6 <__divmodhi4> |
4d72: 70 93 3c 02 sts 0x023C, r23 |
4d76: 60 93 3b 02 sts 0x023B, r22 |
4d7a: 80 91 76 05 lds r24, 0x0576 |
4d7e: 99 27 eor r25, r25 |
4d80: 68 17 cp r22, r24 |
4d82: 79 07 cpc r23, r25 |
4d84: 8c f4 brge .+34 ; 0x4da8 <MotorRegler+0x10e8> |
4d86: 29 81 ldd r18, Y+1 ; 0x01 |
4d88: 3a 81 ldd r19, Y+2 ; 0x02 |
4d8a: 28 17 cp r18, r24 |
4d8c: 39 07 cpc r19, r25 |
4d8e: 2c f0 brlt .+10 ; 0x4d9a <MotorRegler+0x10da> |
4d90: 90 93 3c 02 sts 0x023C, r25 |
4d94: 80 93 3b 02 sts 0x023B, r24 |
4d98: 07 c0 rjmp .+14 ; 0x4da8 <MotorRegler+0x10e8> |
4d9a: 49 81 ldd r20, Y+1 ; 0x01 |
4d9c: 5a 81 ldd r21, Y+2 ; 0x02 |
4d9e: 50 93 3c 02 sts 0x023C, r21 |
4da2: 40 93 3b 02 sts 0x023B, r20 |
4da6: 0d c0 rjmp .+26 ; 0x4dc2 <MotorRegler+0x1102> |
4da8: 80 91 3b 02 lds r24, 0x023B |
4dac: 90 91 3c 02 lds r25, 0x023C |
4db0: 69 81 ldd r22, Y+1 ; 0x01 |
4db2: 7a 81 ldd r23, Y+2 ; 0x02 |
4db4: 68 17 cp r22, r24 |
4db6: 79 07 cpc r23, r25 |
4db8: 24 f4 brge .+8 ; 0x4dc2 <MotorRegler+0x1102> |
4dba: 70 93 3c 02 sts 0x023C, r23 |
4dbe: 60 93 3b 02 sts 0x023B, r22 |
4dc2: 80 91 3b 02 lds r24, 0x023B |
4dc6: 90 91 3c 02 lds r25, 0x023C |
4dca: 9a 83 std Y+2, r25 ; 0x02 |
4dcc: 89 83 std Y+1, r24 ; 0x01 |
4dce: c0 90 b5 05 lds r12, 0x05B5 |
4dd2: d0 90 b6 05 lds r13, 0x05B6 |
4dd6: 80 91 50 02 lds r24, 0x0250 |
4dda: 90 91 51 02 lds r25, 0x0251 |
4dde: c8 1a sub r12, r24 |
4de0: d9 0a sbc r13, r25 |
4de2: 95 e6 ldi r25, 0x65 ; 101 |
4de4: c9 16 cp r12, r25 |
4de6: d1 04 cpc r13, r1 |
4de8: 24 f0 brlt .+8 ; 0x4df2 <MotorRegler+0x1132> |
4dea: 64 e6 ldi r22, 0x64 ; 100 |
4dec: c6 2e mov r12, r22 |
4dee: d1 2c mov r13, r1 |
4df0: 09 c0 rjmp .+18 ; 0x4e04 <MotorRegler+0x1144> |
4df2: ec e9 ldi r30, 0x9C ; 156 |
4df4: ce 16 cp r12, r30 |
4df6: ef ef ldi r30, 0xFF ; 255 |
4df8: de 06 cpc r13, r30 |
4dfa: 24 f4 brge .+8 ; 0x4e04 <MotorRegler+0x1144> |
4dfc: 5c e9 ldi r21, 0x9C ; 156 |
4dfe: c5 2e mov r12, r21 |
4e00: 5f ef ldi r21, 0xFF ; 255 |
4e02: d5 2e mov r13, r21 |
4e04: 40 90 78 01 lds r4, 0x0178 |
4e08: 50 90 79 01 lds r5, 0x0179 |
4e0c: 60 90 7a 01 lds r6, 0x017A |
4e10: 70 90 7b 01 lds r7, 0x017B |
4e14: 60 91 a9 05 lds r22, 0x05A9 |
4e18: 70 91 aa 05 lds r23, 0x05AA |
4e1c: 20 91 28 02 lds r18, 0x0228 |
4e20: 30 91 29 02 lds r19, 0x0229 |
4e24: 40 91 8c 02 lds r20, 0x028C |
4e28: 50 91 8d 02 lds r21, 0x028D |
4e2c: 24 1b sub r18, r20 |
4e2e: 35 0b sbc r19, r21 |
4e30: 62 1b sub r22, r18 |
4e32: 73 0b sbc r23, r19 |
4e34: 88 27 eor r24, r24 |
4e36: 77 fd sbrc r23, 7 |
4e38: 80 95 com r24 |
4e3a: 98 2f mov r25, r24 |
4e3c: 0e 94 84 2b call 0x5708 ; 0x5708 <__floatsisf> |
4e40: 9b 01 movw r18, r22 |
4e42: ac 01 movw r20, r24 |
4e44: c3 01 movw r24, r6 |
4e46: b2 01 movw r22, r4 |
4e48: 0e 94 fe 2b call 0x57fc ; 0x57fc <__mulsf3> |
4e4c: 0e 94 67 2b call 0x56ce ; 0x56ce <__fixsfsi> |
4e50: 70 93 99 02 sts 0x0299, r23 |
4e54: 60 93 98 02 sts 0x0298, r22 |
4e58: 80 91 98 02 lds r24, 0x0298 |
4e5c: 90 91 99 02 lds r25, 0x0299 |
4e60: 8c 01 movw r16, r24 |
4e62: 22 27 eor r18, r18 |
4e64: 17 fd sbrc r17, 7 |
4e66: 20 95 com r18 |
4e68: 32 2f mov r19, r18 |
4e6a: 80 91 58 02 lds r24, 0x0258 |
4e6e: 90 91 59 02 lds r25, 0x0259 |
4e72: a0 91 5a 02 lds r26, 0x025A |
4e76: b0 91 5b 02 lds r27, 0x025B |
4e7a: 08 0f add r16, r24 |
4e7c: 19 1f adc r17, r25 |
4e7e: 2a 1f adc r18, r26 |
4e80: 3b 1f adc r19, r27 |
4e82: 00 93 58 02 sts 0x0258, r16 |
4e86: 10 93 59 02 sts 0x0259, r17 |
4e8a: 20 93 5a 02 sts 0x025A, r18 |
4e8e: 30 93 5b 02 sts 0x025B, r19 |
4e92: 10 16 cp r1, r16 |
4e94: 11 06 cpc r1, r17 |
4e96: 12 06 cpc r1, r18 |
4e98: 13 06 cpc r1, r19 |
4e9a: ac f4 brge .+42 ; 0x4ec6 <MotorRegler+0x1206> |
4e9c: c8 01 movw r24, r16 |
4e9e: 17 ff sbrs r17, 7 |
4ea0: 03 c0 rjmp .+6 ; 0x4ea8 <MotorRegler+0x11e8> |
4ea2: 90 95 com r25 |
4ea4: 81 95 neg r24 |
4ea6: 9f 4f sbci r25, 0xFF ; 255 |
4ea8: 60 e0 ldi r22, 0x00 ; 0 |
4eaa: 71 e0 ldi r23, 0x01 ; 1 |
4eac: 0e 94 d3 2c call 0x59a6 ; 0x59a6 <__divmodhi4> |
4eb0: 6f 5f subi r22, 0xFF ; 255 |
4eb2: 7f 4f sbci r23, 0xFF ; 255 |
4eb4: 88 27 eor r24, r24 |
4eb6: 77 fd sbrc r23, 7 |
4eb8: 80 95 com r24 |
4eba: 98 2f mov r25, r24 |
4ebc: 06 1b sub r16, r22 |
4ebe: 17 0b sbc r17, r23 |
4ec0: 28 0b sbc r18, r24 |
4ec2: 39 0b sbc r19, r25 |
4ec4: 14 c0 rjmp .+40 ; 0x4eee <MotorRegler+0x122e> |
4ec6: c8 01 movw r24, r16 |
4ec8: 17 ff sbrs r17, 7 |
4eca: 03 c0 rjmp .+6 ; 0x4ed2 <MotorRegler+0x1212> |
4ecc: 90 95 com r25 |
4ece: 81 95 neg r24 |
4ed0: 9f 4f sbci r25, 0xFF ; 255 |
4ed2: 60 e0 ldi r22, 0x00 ; 0 |
4ed4: 71 e0 ldi r23, 0x01 ; 1 |
4ed6: 0e 94 d3 2c call 0x59a6 ; 0x59a6 <__divmodhi4> |
4eda: 6f 5f subi r22, 0xFF ; 255 |
4edc: 7f 4f sbci r23, 0xFF ; 255 |
4ede: 88 27 eor r24, r24 |
4ee0: 77 fd sbrc r23, 7 |
4ee2: 80 95 com r24 |
4ee4: 98 2f mov r25, r24 |
4ee6: 06 0f add r16, r22 |
4ee8: 17 1f adc r17, r23 |
4eea: 28 1f adc r18, r24 |
4eec: 39 1f adc r19, r25 |
4eee: 00 93 58 02 sts 0x0258, r16 |
4ef2: 10 93 59 02 sts 0x0259, r17 |
4ef6: 20 93 5a 02 sts 0x025A, r18 |
4efa: 30 93 5b 02 sts 0x025B, r19 |
4efe: 80 91 58 02 lds r24, 0x0258 |
4f02: 90 91 59 02 lds r25, 0x0259 |
4f06: a0 91 5a 02 lds r26, 0x025A |
4f0a: b0 91 5b 02 lds r27, 0x025B |
4f0e: 81 38 cpi r24, 0x81 ; 129 |
4f10: fe e3 ldi r31, 0x3E ; 62 |
4f12: 9f 07 cpc r25, r31 |
4f14: f0 e0 ldi r31, 0x00 ; 0 |
4f16: af 07 cpc r26, r31 |
4f18: f0 e0 ldi r31, 0x00 ; 0 |
4f1a: bf 07 cpc r27, r31 |
4f1c: 2c f0 brlt .+10 ; 0x4f28 <MotorRegler+0x1268> |
4f1e: 80 e8 ldi r24, 0x80 ; 128 |
4f20: 9e e3 ldi r25, 0x3E ; 62 |
4f22: a0 e0 ldi r26, 0x00 ; 0 |
4f24: b0 e0 ldi r27, 0x00 ; 0 |
4f26: 09 c0 rjmp .+18 ; 0x4f3a <MotorRegler+0x127a> |
4f28: 80 58 subi r24, 0x80 ; 128 |
4f2a: 91 4c sbci r25, 0xC1 ; 193 |
4f2c: af 4f sbci r26, 0xFF ; 255 |
4f2e: bf 4f sbci r27, 0xFF ; 255 |
4f30: 64 f4 brge .+24 ; 0x4f4a <MotorRegler+0x128a> |
4f32: 80 e8 ldi r24, 0x80 ; 128 |
4f34: 91 ec ldi r25, 0xC1 ; 193 |
4f36: af ef ldi r26, 0xFF ; 255 |
4f38: bf ef ldi r27, 0xFF ; 255 |
4f3a: 80 93 58 02 sts 0x0258, r24 |
4f3e: 90 93 59 02 sts 0x0259, r25 |
4f42: a0 93 5a 02 sts 0x025A, r26 |
4f46: b0 93 5b 02 sts 0x025B, r27 |
4f4a: 60 91 98 02 lds r22, 0x0298 |
4f4e: 70 91 99 02 lds r23, 0x0299 |
4f52: 80 90 7c 01 lds r8, 0x017C |
4f56: 90 90 7d 01 lds r9, 0x017D |
4f5a: a0 90 7e 01 lds r10, 0x017E |
4f5e: b0 90 7f 01 lds r11, 0x017F |
4f62: 88 27 eor r24, r24 |
4f64: 77 fd sbrc r23, 7 |
4f66: 80 95 com r24 |
4f68: 98 2f mov r25, r24 |
4f6a: 0e 94 84 2b call 0x5708 ; 0x5708 <__floatsisf> |
4f6e: 7b 01 movw r14, r22 |
4f70: 8c 01 movw r16, r24 |
4f72: 60 91 58 02 lds r22, 0x0258 |
4f76: 70 91 59 02 lds r23, 0x0259 |
4f7a: 80 91 5a 02 lds r24, 0x025A |
4f7e: 90 91 5b 02 lds r25, 0x025B |
4f82: 0e 94 84 2b call 0x5708 ; 0x5708 <__floatsisf> |
4f86: 9b 01 movw r18, r22 |
4f88: ac 01 movw r20, r24 |
4f8a: c5 01 movw r24, r10 |
4f8c: b4 01 movw r22, r8 |
4f8e: 0e 94 fe 2b call 0x57fc ; 0x57fc <__mulsf3> |
4f92: 9b 01 movw r18, r22 |
4f94: ac 01 movw r20, r24 |
4f96: c8 01 movw r24, r16 |
4f98: b7 01 movw r22, r14 |
4f9a: 0e 94 df 2a call 0x55be ; 0x55be <__addsf3> |
4f9e: 0e 94 67 2b call 0x56ce ; 0x56ce <__fixsfsi> |
4fa2: 96 01 movw r18, r12 |
4fa4: 26 0f add r18, r22 |
4fa6: 37 1f adc r19, r23 |
4fa8: 49 81 ldd r20, Y+1 ; 0x01 |
4faa: 5a 81 ldd r21, Y+2 ; 0x02 |
4fac: 24 0f add r18, r20 |
4fae: 35 1f adc r19, r21 |
4fb0: 22 24 eor r2, r2 |
4fb2: 4a 30 cpi r20, 0x0A ; 10 |
4fb4: 51 05 cpc r21, r1 |
4fb6: 14 f4 brge .+4 ; 0x4fbc <MotorRegler+0x12fc> |
4fb8: 41 e0 ldi r20, 0x01 ; 1 |
4fba: 24 2e mov r2, r20 |
4fbc: 37 fd sbrc r19, 7 |
4fbe: 02 c0 rjmp .+4 ; 0x4fc4 <MotorRegler+0x1304> |
4fc0: 22 20 and r2, r2 |
4fc2: 19 f0 breq .+6 ; 0x4fca <MotorRegler+0x130a> |
4fc4: 40 e0 ldi r20, 0x00 ; 0 |
4fc6: 50 e0 ldi r21, 0x00 ; 0 |
4fc8: 08 c0 rjmp .+16 ; 0x4fda <MotorRegler+0x131a> |
4fca: 80 91 b4 05 lds r24, 0x05B4 |
4fce: 48 2f mov r20, r24 |
4fd0: 55 27 eor r21, r21 |
4fd2: 24 17 cp r18, r20 |
4fd4: 35 07 cpc r19, r21 |
4fd6: 0c f4 brge .+2 ; 0x4fda <MotorRegler+0x131a> |
4fd8: a9 01 movw r20, r18 |
4fda: 80 91 ab 05 lds r24, 0x05AB |
4fde: e8 2f mov r30, r24 |
4fe0: ff 27 eor r31, r31 |
4fe2: fc 83 std Y+4, r31 ; 0x04 |
4fe4: eb 83 std Y+3, r30 ; 0x03 |
4fe6: 9f 01 movw r18, r30 |
4fe8: e4 17 cp r30, r20 |
4fea: f5 07 cpc r31, r21 |
4fec: 0c f4 brge .+2 ; 0x4ff0 <MotorRegler+0x1330> |
4fee: 9a 01 movw r18, r20 |
4ff0: 20 93 96 02 sts 0x0296, r18 |
4ff4: 29 81 ldd r18, Y+1 ; 0x01 |
4ff6: 3a 81 ldd r19, Y+2 ; 0x02 |
4ff8: 26 1b sub r18, r22 |
4ffa: 37 0b sbc r19, r23 |
4ffc: b9 01 movw r22, r18 |
4ffe: 6c 0d add r22, r12 |
5000: 7d 1d adc r23, r13 |
5002: 77 fd sbrc r23, 7 |
5004: 02 c0 rjmp .+4 ; 0x500a <MotorRegler+0x134a> |
5006: 22 20 and r2, r2 |
5008: 19 f0 breq .+6 ; 0x5010 <MotorRegler+0x1350> |
500a: 80 e0 ldi r24, 0x00 ; 0 |
500c: 90 e0 ldi r25, 0x00 ; 0 |
500e: 07 c0 rjmp .+14 ; 0x501e <MotorRegler+0x135e> |
5010: 80 91 b4 05 lds r24, 0x05B4 |
5014: 99 27 eor r25, r25 |
5016: 68 17 cp r22, r24 |
5018: 79 07 cpc r23, r25 |
501a: 0c f4 brge .+2 ; 0x501e <MotorRegler+0x135e> |
501c: cb 01 movw r24, r22 |
501e: 2b 81 ldd r18, Y+3 ; 0x03 |
5020: 3c 81 ldd r19, Y+4 ; 0x04 |
5022: 28 17 cp r18, r24 |
5024: 39 07 cpc r19, r25 |
5026: 0c f4 brge .+2 ; 0x502a <MotorRegler+0x136a> |
5028: 9c 01 movw r18, r24 |
502a: 20 93 97 02 sts 0x0297, r18 |
502e: 60 91 a7 05 lds r22, 0x05A7 |
5032: 70 91 a8 05 lds r23, 0x05A8 |
5036: 20 91 2a 02 lds r18, 0x022A |
503a: 30 91 2b 02 lds r19, 0x022B |
503e: 40 91 8e 02 lds r20, 0x028E |
5042: 50 91 8f 02 lds r21, 0x028F |
5046: 24 1b sub r18, r20 |
5048: 35 0b sbc r19, r21 |
504a: 62 1b sub r22, r18 |
504c: 73 0b sbc r23, r19 |
504e: 88 27 eor r24, r24 |
5050: 77 fd sbrc r23, 7 |
5052: 80 95 com r24 |
5054: 98 2f mov r25, r24 |
5056: 0e 94 84 2b call 0x5708 ; 0x5708 <__floatsisf> |
505a: 9b 01 movw r18, r22 |
505c: ac 01 movw r20, r24 |
505e: c3 01 movw r24, r6 |
5060: b2 01 movw r22, r4 |
5062: 0e 94 fe 2b call 0x57fc ; 0x57fc <__mulsf3> |
5066: 0e 94 67 2b call 0x56ce ; 0x56ce <__fixsfsi> |
506a: 70 93 95 02 sts 0x0295, r23 |
506e: 60 93 94 02 sts 0x0294, r22 |
5072: 80 91 94 02 lds r24, 0x0294 |
5076: 90 91 95 02 lds r25, 0x0295 |
507a: 8c 01 movw r16, r24 |
507c: 22 27 eor r18, r18 |
507e: 17 fd sbrc r17, 7 |
5080: 20 95 com r18 |
5082: 32 2f mov r19, r18 |
5084: 80 91 54 02 lds r24, 0x0254 |
5088: 90 91 55 02 lds r25, 0x0255 |
508c: a0 91 56 02 lds r26, 0x0256 |
5090: b0 91 57 02 lds r27, 0x0257 |
5094: 08 0f add r16, r24 |
5096: 19 1f adc r17, r25 |
5098: 2a 1f adc r18, r26 |
509a: 3b 1f adc r19, r27 |
509c: 00 93 54 02 sts 0x0254, r16 |
50a0: 10 93 55 02 sts 0x0255, r17 |
50a4: 20 93 56 02 sts 0x0256, r18 |
50a8: 30 93 57 02 sts 0x0257, r19 |
50ac: 10 16 cp r1, r16 |
50ae: 11 06 cpc r1, r17 |
50b0: 12 06 cpc r1, r18 |
50b2: 13 06 cpc r1, r19 |
50b4: ac f4 brge .+42 ; 0x50e0 <MotorRegler+0x1420> |
50b6: c8 01 movw r24, r16 |
50b8: 17 ff sbrs r17, 7 |
50ba: 03 c0 rjmp .+6 ; 0x50c2 <MotorRegler+0x1402> |
50bc: 90 95 com r25 |
50be: 81 95 neg r24 |
50c0: 9f 4f sbci r25, 0xFF ; 255 |
50c2: 60 e0 ldi r22, 0x00 ; 0 |
50c4: 71 e0 ldi r23, 0x01 ; 1 |
50c6: 0e 94 d3 2c call 0x59a6 ; 0x59a6 <__divmodhi4> |
50ca: 6f 5f subi r22, 0xFF ; 255 |
50cc: 7f 4f sbci r23, 0xFF ; 255 |
50ce: 88 27 eor r24, r24 |
50d0: 77 fd sbrc r23, 7 |
50d2: 80 95 com r24 |
50d4: 98 2f mov r25, r24 |
50d6: 06 1b sub r16, r22 |
50d8: 17 0b sbc r17, r23 |
50da: 28 0b sbc r18, r24 |
50dc: 39 0b sbc r19, r25 |
50de: 14 c0 rjmp .+40 ; 0x5108 <MotorRegler+0x1448> |
50e0: c8 01 movw r24, r16 |
50e2: 17 ff sbrs r17, 7 |
50e4: 03 c0 rjmp .+6 ; 0x50ec <MotorRegler+0x142c> |
50e6: 90 95 com r25 |
50e8: 81 95 neg r24 |
50ea: 9f 4f sbci r25, 0xFF ; 255 |
50ec: 60 e0 ldi r22, 0x00 ; 0 |
50ee: 71 e0 ldi r23, 0x01 ; 1 |
50f0: 0e 94 d3 2c call 0x59a6 ; 0x59a6 <__divmodhi4> |
50f4: 6f 5f subi r22, 0xFF ; 255 |
50f6: 7f 4f sbci r23, 0xFF ; 255 |
50f8: 88 27 eor r24, r24 |
50fa: 77 fd sbrc r23, 7 |
50fc: 80 95 com r24 |
50fe: 98 2f mov r25, r24 |
5100: 06 0f add r16, r22 |
5102: 17 1f adc r17, r23 |
5104: 28 1f adc r18, r24 |
5106: 39 1f adc r19, r25 |
5108: 00 93 54 02 sts 0x0254, r16 |
510c: 10 93 55 02 sts 0x0255, r17 |
5110: 20 93 56 02 sts 0x0256, r18 |
5114: 30 93 57 02 sts 0x0257, r19 |
5118: 80 91 54 02 lds r24, 0x0254 |
511c: 90 91 55 02 lds r25, 0x0255 |
5120: a0 91 56 02 lds r26, 0x0256 |
5124: b0 91 57 02 lds r27, 0x0257 |
5128: 81 38 cpi r24, 0x81 ; 129 |
512a: 3e e3 ldi r19, 0x3E ; 62 |
512c: 93 07 cpc r25, r19 |
512e: 30 e0 ldi r19, 0x00 ; 0 |
5130: a3 07 cpc r26, r19 |
5132: 30 e0 ldi r19, 0x00 ; 0 |
5134: b3 07 cpc r27, r19 |
5136: 2c f0 brlt .+10 ; 0x5142 <MotorRegler+0x1482> |
5138: 80 e8 ldi r24, 0x80 ; 128 |
513a: 9e e3 ldi r25, 0x3E ; 62 |
513c: a0 e0 ldi r26, 0x00 ; 0 |
513e: b0 e0 ldi r27, 0x00 ; 0 |
5140: 09 c0 rjmp .+18 ; 0x5154 <MotorRegler+0x1494> |
5142: 80 58 subi r24, 0x80 ; 128 |
5144: 91 4c sbci r25, 0xC1 ; 193 |
5146: af 4f sbci r26, 0xFF ; 255 |
5148: bf 4f sbci r27, 0xFF ; 255 |
514a: 64 f4 brge .+24 ; 0x5164 <MotorRegler+0x14a4> |
514c: 80 e8 ldi r24, 0x80 ; 128 |
514e: 91 ec ldi r25, 0xC1 ; 193 |
5150: af ef ldi r26, 0xFF ; 255 |
5152: bf ef ldi r27, 0xFF ; 255 |
5154: 80 93 54 02 sts 0x0254, r24 |
5158: 90 93 55 02 sts 0x0255, r25 |
515c: a0 93 56 02 sts 0x0256, r26 |
5160: b0 93 57 02 sts 0x0257, r27 |
5164: 60 91 94 02 lds r22, 0x0294 |
5168: 70 91 95 02 lds r23, 0x0295 |
516c: 88 27 eor r24, r24 |
516e: 77 fd sbrc r23, 7 |
5170: 80 95 com r24 |
5172: 98 2f mov r25, r24 |
5174: 0e 94 84 2b call 0x5708 ; 0x5708 <__floatsisf> |
5178: 7b 01 movw r14, r22 |
517a: 8c 01 movw r16, r24 |
517c: 60 91 54 02 lds r22, 0x0254 |
5180: 70 91 55 02 lds r23, 0x0255 |
5184: 80 91 56 02 lds r24, 0x0256 |
5188: 90 91 57 02 lds r25, 0x0257 |
518c: 0e 94 84 2b call 0x5708 ; 0x5708 <__floatsisf> |
5190: 9b 01 movw r18, r22 |
5192: ac 01 movw r20, r24 |
5194: c5 01 movw r24, r10 |
5196: b4 01 movw r22, r8 |
5198: 0e 94 fe 2b call 0x57fc ; 0x57fc <__mulsf3> |
519c: 9b 01 movw r18, r22 |
519e: ac 01 movw r20, r24 |
51a0: c8 01 movw r24, r16 |
51a2: b7 01 movw r22, r14 |
51a4: 0e 94 df 2a call 0x55be ; 0x55be <__addsf3> |
51a8: 0e 94 67 2b call 0x56ce ; 0x56ce <__fixsfsi> |
51ac: 29 81 ldd r18, Y+1 ; 0x01 |
51ae: 3a 81 ldd r19, Y+2 ; 0x02 |
51b0: 26 0f add r18, r22 |
51b2: 37 1f adc r19, r23 |
51b4: 2c 19 sub r18, r12 |
51b6: 3d 09 sbc r19, r13 |
51b8: 37 fd sbrc r19, 7 |
51ba: 02 c0 rjmp .+4 ; 0x51c0 <MotorRegler+0x1500> |
51bc: 22 20 and r2, r2 |
51be: 19 f0 breq .+6 ; 0x51c6 <MotorRegler+0x1506> |
51c0: 40 e0 ldi r20, 0x00 ; 0 |
51c2: 50 e0 ldi r21, 0x00 ; 0 |
51c4: 08 c0 rjmp .+16 ; 0x51d6 <MotorRegler+0x1516> |
51c6: 80 91 b4 05 lds r24, 0x05B4 |
51ca: 48 2f mov r20, r24 |
51cc: 55 27 eor r21, r21 |
51ce: 24 17 cp r18, r20 |
51d0: 35 07 cpc r19, r21 |
51d2: 0c f4 brge .+2 ; 0x51d6 <MotorRegler+0x1516> |
51d4: a9 01 movw r20, r18 |
51d6: 2b 81 ldd r18, Y+3 ; 0x03 |
51d8: 3c 81 ldd r19, Y+4 ; 0x04 |
51da: 24 17 cp r18, r20 |
51dc: 35 07 cpc r19, r21 |
51de: 0c f4 brge .+2 ; 0x51e2 <MotorRegler+0x1522> |
51e0: 9a 01 movw r18, r20 |
51e2: 20 93 a6 02 sts 0x02A6, r18 |
51e6: 89 81 ldd r24, Y+1 ; 0x01 |
51e8: 9a 81 ldd r25, Y+2 ; 0x02 |
51ea: 86 1b sub r24, r22 |
51ec: 97 0b sbc r25, r23 |
51ee: bc 01 movw r22, r24 |
51f0: 6c 19 sub r22, r12 |
51f2: 7d 09 sbc r23, r13 |
51f4: 77 fd sbrc r23, 7 |
51f6: 02 c0 rjmp .+4 ; 0x51fc <MotorRegler+0x153c> |
51f8: 22 20 and r2, r2 |
51fa: 19 f0 breq .+6 ; 0x5202 <MotorRegler+0x1542> |
51fc: 20 e0 ldi r18, 0x00 ; 0 |
51fe: 30 e0 ldi r19, 0x00 ; 0 |
5200: 08 c0 rjmp .+16 ; 0x5212 <MotorRegler+0x1552> |
5202: 80 91 b4 05 lds r24, 0x05B4 |
5206: 28 2f mov r18, r24 |
5208: 33 27 eor r19, r19 |
520a: 62 17 cp r22, r18 |
520c: 73 07 cpc r23, r19 |
520e: 0c f4 brge .+2 ; 0x5212 <MotorRegler+0x1552> |
5210: 9b 01 movw r18, r22 |
5212: 8b 81 ldd r24, Y+3 ; 0x03 |
5214: 9c 81 ldd r25, Y+4 ; 0x04 |
5216: 82 17 cp r24, r18 |
5218: 93 07 cpc r25, r19 |
521a: 0c f4 brge .+2 ; 0x521e <MotorRegler+0x155e> |
521c: c9 01 movw r24, r18 |
521e: 80 93 9a 02 sts 0x029A, r24 |
5222: 24 96 adiw r28, 0x04 ; 4 |
5224: 0f b6 in r0, 0x3f ; 63 |
5226: f8 94 cli |
5228: de bf out 0x3e, r29 ; 62 |
522a: 0f be out 0x3f, r0 ; 63 |
522c: cd bf out 0x3d, r28 ; 61 |
522e: df 91 pop r29 |
5230: cf 91 pop r28 |
5232: 1f 91 pop r17 |
5234: 0f 91 pop r16 |
5236: ff 90 pop r15 |
5238: ef 90 pop r14 |
523a: df 90 pop r13 |
523c: cf 90 pop r12 |
523e: bf 90 pop r11 |
5240: af 90 pop r10 |
5242: 9f 90 pop r9 |
5244: 8f 90 pop r8 |
5246: 7f 90 pop r7 |
5248: 6f 90 pop r6 |
524a: 5f 90 pop r5 |
524c: 4f 90 pop r4 |
524e: 3f 90 pop r3 |
5250: 2f 90 pop r2 |
5252: 08 95 ret |
00005254 <gps_main>: |
5254: 6f 92 push r6 |
5256: 7f 92 push r7 |
5258: 8f 92 push r8 |
525a: 9f 92 push r9 |
525c: af 92 push r10 |
525e: bf 92 push r11 |
5260: cf 92 push r12 |
5262: df 92 push r13 |
5264: ef 92 push r14 |
5266: ff 92 push r15 |
5268: 0f 93 push r16 |
526a: 1f 93 push r17 |
526c: 80 91 1f 02 lds r24, 0x021F |
5270: 90 91 20 02 lds r25, 0x0220 |
5274: 18 16 cp r1, r24 |
5276: 19 06 cpc r1, r25 |
5278: 0c f0 brlt .+2 ; 0x527c <gps_main+0x28> |
527a: 78 c1 rjmp .+752 ; 0x556c <gps_main+0x318> |
527c: 80 91 22 05 lds r24, 0x0522 |
5280: 88 23 and r24, r24 |
5282: 09 f4 brne .+2 ; 0x5286 <gps_main+0x32> |
5284: 73 c1 rjmp .+742 ; 0x556c <gps_main+0x318> |
5286: 80 91 8a 01 lds r24, 0x018A |
528a: 90 91 8b 01 lds r25, 0x018B |
528e: 89 2b or r24, r25 |
5290: d1 f1 breq .+116 ; 0x5306 <gps_main+0xb2> |
5292: 80 91 0a 05 lds r24, 0x050A |
5296: 90 91 0b 05 lds r25, 0x050B |
529a: a0 91 0c 05 lds r26, 0x050C |
529e: b0 91 0d 05 lds r27, 0x050D |
52a2: 80 93 5c 02 sts 0x025C, r24 |
52a6: 90 93 5d 02 sts 0x025D, r25 |
52aa: a0 93 5e 02 sts 0x025E, r26 |
52ae: b0 93 5f 02 sts 0x025F, r27 |
52b2: 80 91 0e 05 lds r24, 0x050E |
52b6: 90 91 0f 05 lds r25, 0x050F |
52ba: a0 91 10 05 lds r26, 0x0510 |
52be: b0 91 11 05 lds r27, 0x0511 |
52c2: 80 93 60 02 sts 0x0260, r24 |
52c6: 90 93 61 02 sts 0x0261, r25 |
52ca: a0 93 62 02 sts 0x0262, r26 |
52ce: b0 93 63 02 sts 0x0263, r27 |
52d2: 80 91 12 05 lds r24, 0x0512 |
52d6: 90 91 13 05 lds r25, 0x0513 |
52da: a0 91 14 05 lds r26, 0x0514 |
52de: b0 91 15 05 lds r27, 0x0515 |
52e2: 80 93 64 02 sts 0x0264, r24 |
52e6: 90 93 65 02 sts 0x0265, r25 |
52ea: a0 93 66 02 sts 0x0266, r26 |
52ee: b0 93 67 02 sts 0x0267, r27 |
52f2: 82 e3 ldi r24, 0x32 ; 50 |
52f4: 90 e0 ldi r25, 0x00 ; 0 |
52f6: 90 93 ac 01 sts 0x01AC, r25 |
52fa: 80 93 ab 01 sts 0x01AB, r24 |
52fe: 10 92 8b 01 sts 0x018B, r1 |
5302: 10 92 8a 01 sts 0x018A, r1 |
5306: a0 90 a2 02 lds r10, 0x02A2 |
530a: b0 90 a3 02 lds r11, 0x02A3 |
530e: 60 91 64 02 lds r22, 0x0264 |
5312: 70 91 65 02 lds r23, 0x0265 |
5316: 80 91 66 02 lds r24, 0x0266 |
531a: 90 91 67 02 lds r25, 0x0267 |
531e: 6e 5f subi r22, 0xFE ; 254 |
5320: 7f 4f sbci r23, 0xFF ; 255 |
5322: 8f 4f sbci r24, 0xFF ; 255 |
5324: 9f 4f sbci r25, 0xFF ; 255 |
5326: 20 91 5c 02 lds r18, 0x025C |
532a: 30 91 5d 02 lds r19, 0x025D |
532e: 40 91 5e 02 lds r20, 0x025E |
5332: 50 91 5f 02 lds r21, 0x025F |
5336: e2 e0 ldi r30, 0x02 ; 2 |
5338: ee 2e mov r14, r30 |
533a: f1 2c mov r15, r1 |
533c: 01 2d mov r16, r1 |
533e: 11 2d mov r17, r1 |
5340: 2e 25 eor r18, r14 |
5342: 3f 25 eor r19, r15 |
5344: 40 27 eor r20, r16 |
5346: 51 27 eor r21, r17 |
5348: 62 27 eor r22, r18 |
534a: 73 27 eor r23, r19 |
534c: 84 27 eor r24, r20 |
534e: 95 27 eor r25, r21 |
5350: 0e 94 84 2b call 0x5708 ; 0x5708 <__floatsisf> |
5354: 0e 94 46 2c call 0x588c ; 0x588c <sqrt> |
5358: 3b 01 movw r6, r22 |
535a: 4c 01 movw r8, r24 |
535c: 60 91 12 05 lds r22, 0x0512 |
5360: 70 91 13 05 lds r23, 0x0513 |
5364: 80 91 14 05 lds r24, 0x0514 |
5368: 90 91 15 05 lds r25, 0x0515 |
536c: 6e 5f subi r22, 0xFE ; 254 |
536e: 7f 4f sbci r23, 0xFF ; 255 |
5370: 8f 4f sbci r24, 0xFF ; 255 |
5372: 9f 4f sbci r25, 0xFF ; 255 |
5374: 20 91 0a 05 lds r18, 0x050A |
5378: 30 91 0b 05 lds r19, 0x050B |
537c: 40 91 0c 05 lds r20, 0x050C |
5380: 50 91 0d 05 lds r21, 0x050D |
5384: 2e 25 eor r18, r14 |
5386: 3f 25 eor r19, r15 |
5388: 40 27 eor r20, r16 |
538a: 51 27 eor r21, r17 |
538c: 62 27 eor r22, r18 |
538e: 73 27 eor r23, r19 |
5390: 84 27 eor r24, r20 |
5392: 95 27 eor r25, r21 |
5394: 0e 94 84 2b call 0x5708 ; 0x5708 <__floatsisf> |
5398: 0e 94 46 2c call 0x588c ; 0x588c <sqrt> |
539c: 9b 01 movw r18, r22 |
539e: ac 01 movw r20, r24 |
53a0: c4 01 movw r24, r8 |
53a2: b3 01 movw r22, r6 |
53a4: 0e 94 de 2a call 0x55bc ; 0x55bc <__subsf3> |
53a8: 7b 01 movw r14, r22 |
53aa: 8c 01 movw r16, r24 |
53ac: cc 24 eor r12, r12 |
53ae: b7 fc sbrc r11, 7 |
53b0: c0 94 com r12 |
53b2: dc 2c mov r13, r12 |
53b4: c6 01 movw r24, r12 |
53b6: b5 01 movw r22, r10 |
53b8: 0e 94 84 2b call 0x5708 ; 0x5708 <__floatsisf> |
53bc: 9b 01 movw r18, r22 |
53be: ac 01 movw r20, r24 |
53c0: c8 01 movw r24, r16 |
53c2: b7 01 movw r22, r14 |
53c4: 0e 94 fe 2b call 0x57fc ; 0x57fc <__mulsf3> |
53c8: 20 e0 ldi r18, 0x00 ; 0 |
53ca: 30 e0 ldi r19, 0x00 ; 0 |
53cc: 40 e2 ldi r20, 0x20 ; 32 |
53ce: 51 e4 ldi r21, 0x41 ; 65 |
53d0: 0e 94 21 2b call 0x5642 ; 0x5642 <__divsf3> |
53d4: 0e 94 67 2b call 0x56ce ; 0x56ce <__fixsfsi> |
53d8: 3b 01 movw r6, r22 |
53da: 4c 01 movw r8, r24 |
53dc: 60 93 6a 02 sts 0x026A, r22 |
53e0: 70 93 6b 02 sts 0x026B, r23 |
53e4: 80 93 6c 02 sts 0x026C, r24 |
53e8: 90 93 6d 02 sts 0x026D, r25 |
53ec: 20 91 a2 02 lds r18, 0x02A2 |
53f0: 30 91 a3 02 lds r19, 0x02A3 |
53f4: 60 91 60 02 lds r22, 0x0260 |
53f8: 70 91 61 02 lds r23, 0x0261 |
53fc: 80 91 62 02 lds r24, 0x0262 |
5400: 90 91 63 02 lds r25, 0x0263 |
5404: e0 90 0e 05 lds r14, 0x050E |
5408: f0 90 0f 05 lds r15, 0x050F |
540c: 00 91 10 05 lds r16, 0x0510 |
5410: 10 91 11 05 lds r17, 0x0511 |
5414: 6e 19 sub r22, r14 |
5416: 7f 09 sbc r23, r15 |
5418: 80 0b sbc r24, r16 |
541a: 91 0b sbc r25, r17 |
541c: 44 27 eor r20, r20 |
541e: 37 fd sbrc r19, 7 |
5420: 40 95 com r20 |
5422: 54 2f mov r21, r20 |
5424: 0e 94 a0 2c call 0x5940 ; 0x5940 <__mulsi3> |
5428: 2a e0 ldi r18, 0x0A ; 10 |
542a: 30 e0 ldi r19, 0x00 ; 0 |
542c: 40 e0 ldi r20, 0x00 ; 0 |
542e: 50 e0 ldi r21, 0x00 ; 0 |
5430: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
5434: 59 01 movw r10, r18 |
5436: 6a 01 movw r12, r20 |
5438: 20 93 6e 02 sts 0x026E, r18 |
543c: 30 93 6f 02 sts 0x026F, r19 |
5440: 40 93 70 02 sts 0x0270, r20 |
5444: 50 93 71 02 sts 0x0271, r21 |
5448: 60 91 a4 02 lds r22, 0x02A4 |
544c: 70 91 a5 02 lds r23, 0x02A5 |
5450: 88 27 eor r24, r24 |
5452: 77 fd sbrc r23, 7 |
5454: 80 95 com r24 |
5456: 98 2f mov r25, r24 |
5458: 20 91 16 05 lds r18, 0x0516 |
545c: 30 91 17 05 lds r19, 0x0517 |
5460: 40 91 18 05 lds r20, 0x0518 |
5464: 50 91 19 05 lds r21, 0x0519 |
5468: 0e 94 a0 2c call 0x5940 ; 0x5940 <__mulsi3> |
546c: 2d ef ldi r18, 0xFD ; 253 |
546e: 3f ef ldi r19, 0xFF ; 255 |
5470: 4f ef ldi r20, 0xFF ; 255 |
5472: 5f ef ldi r21, 0xFF ; 255 |
5474: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
5478: 79 01 movw r14, r18 |
547a: 8a 01 movw r16, r20 |
547c: 20 93 7a 02 sts 0x027A, r18 |
5480: 30 93 7b 02 sts 0x027B, r19 |
5484: 40 93 7c 02 sts 0x027C, r20 |
5488: 50 93 7d 02 sts 0x027D, r21 |
548c: 60 91 a4 02 lds r22, 0x02A4 |
5490: 70 91 a5 02 lds r23, 0x02A5 |
5494: 88 27 eor r24, r24 |
5496: 77 fd sbrc r23, 7 |
5498: 80 95 com r24 |
549a: 98 2f mov r25, r24 |
549c: 20 91 1a 05 lds r18, 0x051A |
54a0: 30 91 1b 05 lds r19, 0x051B |
54a4: 40 91 1c 05 lds r20, 0x051C |
54a8: 50 91 1d 05 lds r21, 0x051D |
54ac: 0e 94 a0 2c call 0x5940 ; 0x5940 <__mulsi3> |
54b0: 2d ef ldi r18, 0xFD ; 253 |
54b2: 3f ef ldi r19, 0xFF ; 255 |
54b4: 4f ef ldi r20, 0xFF ; 255 |
54b6: 5f ef ldi r21, 0xFF ; 255 |
54b8: 0e 94 08 2d call 0x5a10 ; 0x5a10 <__divmodsi4> |
54bc: 20 93 7e 02 sts 0x027E, r18 |
54c0: 30 93 7f 02 sts 0x027F, r19 |
54c4: 40 93 80 02 sts 0x0280, r20 |
54c8: 50 93 81 02 sts 0x0281, r21 |
54cc: b3 01 movw r22, r6 |
54ce: 6e 0d add r22, r14 |
54d0: 7f 1d adc r23, r15 |
54d2: 70 93 8d 02 sts 0x028D, r23 |
54d6: 60 93 8c 02 sts 0x028C, r22 |
54da: 2a 0d add r18, r10 |
54dc: 3b 1d adc r19, r11 |
54de: 30 93 8f 02 sts 0x028F, r19 |
54e2: 20 93 8e 02 sts 0x028E, r18 |
54e6: 80 91 8c 01 lds r24, 0x018C |
54ea: 90 91 8d 01 lds r25, 0x018D |
54ee: 86 17 cp r24, r22 |
54f0: 97 07 cpc r25, r23 |
54f2: 2c f4 brge .+10 ; 0x54fe <gps_main+0x2aa> |
54f4: 80 91 8c 01 lds r24, 0x018C |
54f8: 90 91 8d 01 lds r25, 0x018D |
54fc: 11 c0 rjmp .+34 ; 0x5520 <gps_main+0x2cc> |
54fe: 80 91 8c 01 lds r24, 0x018C |
5502: 90 91 8d 01 lds r25, 0x018D |
5506: 90 95 com r25 |
5508: 81 95 neg r24 |
550a: 9f 4f sbci r25, 0xFF ; 255 |
550c: 68 17 cp r22, r24 |
550e: 79 07 cpc r23, r25 |
5510: 5c f4 brge .+22 ; 0x5528 <gps_main+0x2d4> |
5512: 80 91 8c 01 lds r24, 0x018C |
5516: 90 91 8d 01 lds r25, 0x018D |
551a: 90 95 com r25 |
551c: 81 95 neg r24 |
551e: 9f 4f sbci r25, 0xFF ; 255 |
5520: 90 93 8d 02 sts 0x028D, r25 |
5524: 80 93 8c 02 sts 0x028C, r24 |
5528: 80 91 8c 01 lds r24, 0x018C |
552c: 90 91 8d 01 lds r25, 0x018D |
5530: 82 17 cp r24, r18 |
5532: 93 07 cpc r25, r19 |
5534: 2c f4 brge .+10 ; 0x5540 <gps_main+0x2ec> |
5536: 80 91 8c 01 lds r24, 0x018C |
553a: 90 91 8d 01 lds r25, 0x018D |
553e: 11 c0 rjmp .+34 ; 0x5562 <gps_main+0x30e> |
5540: 80 91 8c 01 lds r24, 0x018C |
5544: 90 91 8d 01 lds r25, 0x018D |
5548: 90 95 com r25 |
554a: 81 95 neg r24 |
554c: 9f 4f sbci r25, 0xFF ; 255 |
554e: 28 17 cp r18, r24 |
5550: 39 07 cpc r19, r25 |
5552: d4 f4 brge .+52 ; 0x5588 <gps_main+0x334> |
5554: 80 91 8c 01 lds r24, 0x018C |
5558: 90 91 8d 01 lds r25, 0x018D |
555c: 90 95 com r25 |
555e: 81 95 neg r24 |
5560: 9f 4f sbci r25, 0xFF ; 255 |
5562: 90 93 8f 02 sts 0x028F, r25 |
5566: 80 93 8e 02 sts 0x028E, r24 |
556a: 0e c0 rjmp .+28 ; 0x5588 <gps_main+0x334> |
556c: 85 e0 ldi r24, 0x05 ; 5 |
556e: 90 e0 ldi r25, 0x00 ; 0 |
5570: 90 93 8b 01 sts 0x018B, r25 |
5574: 80 93 8a 01 sts 0x018A, r24 |
5578: 10 92 8d 02 sts 0x028D, r1 |
557c: 10 92 8c 02 sts 0x028C, r1 |
5580: 10 92 8f 02 sts 0x028F, r1 |
5584: 10 92 8e 02 sts 0x028E, r1 |
5588: 1f 91 pop r17 |
558a: 0f 91 pop r16 |
558c: ff 90 pop r15 |
558e: ef 90 pop r14 |
5590: df 90 pop r13 |
5592: cf 90 pop r12 |
5594: bf 90 pop r11 |
5596: af 90 pop r10 |
5598: 9f 90 pop r9 |
559a: 8f 90 pop r8 |
559c: 7f 90 pop r7 |
559e: 6f 90 pop r6 |
55a0: 08 95 ret |
000055a2 <memchr>: |
55a2: fc 01 movw r30, r24 |
55a4: 41 50 subi r20, 0x01 ; 1 |
55a6: 50 40 sbci r21, 0x00 ; 0 |
55a8: 30 f0 brcs .+12 ; 0x55b6 <memchr+0x14> |
55aa: 01 90 ld r0, Z+ |
55ac: 06 16 cp r0, r22 |
55ae: d1 f7 brne .-12 ; 0x55a4 <memchr+0x2> |
55b0: 31 97 sbiw r30, 0x01 ; 1 |
55b2: cf 01 movw r24, r30 |
55b4: 08 95 ret |
55b6: 88 27 eor r24, r24 |
55b8: 99 27 eor r25, r25 |
55ba: 08 95 ret |
000055bc <__subsf3>: |
55bc: 50 58 subi r21, 0x80 ; 128 |
000055be <__addsf3>: |
55be: 19 2e mov r1, r25 |
55c0: ef d0 rcall .+478 ; 0x57a0 <__fp_split3> |
55c2: 01 d0 rcall .+2 ; 0x55c6 <__addsf3x> |
55c4: d2 c0 rjmp .+420 ; 0x576a <__fp_merge> |
000055c6 <__addsf3x>: |
55c6: ba 17 cp r27, r26 |
55c8: 62 07 cpc r22, r18 |
55ca: 73 07 cpc r23, r19 |
55cc: 84 07 cpc r24, r20 |
55ce: 95 07 cpc r25, r21 |
55d0: b1 f1 breq .+108 ; 0x563e <__addsf3x+0x78> |
55d2: 88 f4 brcc .+34 ; 0x55f6 <__addsf3x+0x30> |
55d4: 0e f4 brtc .+2 ; 0x55d8 <__addsf3x+0x12> |
55d6: 10 94 com r1 |
55d8: 0b 2e mov r0, r27 |
55da: ba 2f mov r27, r26 |
55dc: a0 2d mov r26, r0 |
55de: 06 2e mov r0, r22 |
55e0: 62 2f mov r22, r18 |
55e2: 20 2d mov r18, r0 |
55e4: 07 2e mov r0, r23 |
55e6: 73 2f mov r23, r19 |
55e8: 30 2d mov r19, r0 |
55ea: 08 2e mov r0, r24 |
55ec: 84 2f mov r24, r20 |
55ee: 40 2d mov r20, r0 |
55f0: 09 2e mov r0, r25 |
55f2: 95 2f mov r25, r21 |
55f4: 50 2d mov r21, r0 |
55f6: ff 27 eor r31, r31 |
55f8: 55 23 and r21, r21 |
55fa: b9 f0 breq .+46 ; 0x562a <__addsf3x+0x64> |
55fc: 59 1b sub r21, r25 |
55fe: 49 f0 breq .+18 ; 0x5612 <__addsf3x+0x4c> |
5600: 57 3e cpi r21, 0xE7 ; 231 |
5602: 98 f0 brcs .+38 ; 0x562a <__addsf3x+0x64> |
5604: 46 95 lsr r20 |
5606: 37 95 ror r19 |
5608: 27 95 ror r18 |
560a: a7 95 ror r26 |
560c: f0 40 sbci r31, 0x00 ; 0 |
560e: 53 95 inc r21 |
5610: c9 f7 brne .-14 ; 0x5604 <__addsf3x+0x3e> |
5612: 76 f0 brts .+28 ; 0x5630 <__addsf3x+0x6a> |
5614: ba 0f add r27, r26 |
5616: 62 1f adc r22, r18 |
5618: 73 1f adc r23, r19 |
561a: 84 1f adc r24, r20 |
561c: 30 f4 brcc .+12 ; 0x562a <__addsf3x+0x64> |
561e: 87 95 ror r24 |
5620: 77 95 ror r23 |
5622: 67 95 ror r22 |
5624: b7 95 ror r27 |
5626: f0 40 sbci r31, 0x00 ; 0 |
5628: 93 95 inc r25 |
562a: 17 fa bst r1, 7 |
562c: 0f 2e mov r0, r31 |
562e: 08 95 ret |
5630: bf 1b sub r27, r31 |
5632: bb 27 eor r27, r27 |
5634: ba 0b sbc r27, r26 |
5636: 62 0b sbc r22, r18 |
5638: 73 0b sbc r23, r19 |
563a: 84 0b sbc r24, r20 |
563c: f6 cf rjmp .-20 ; 0x562a <__addsf3x+0x64> |
563e: de f6 brtc .-74 ; 0x55f6 <__addsf3x+0x30> |
5640: db c0 rjmp .+438 ; 0x57f8 <__fp_zerox> |
00005642 <__divsf3>: |
5642: ae d0 rcall .+348 ; 0x57a0 <__fp_split3> |
5644: 01 d0 rcall .+2 ; 0x5648 <__divsf3x> |
5646: 91 c0 rjmp .+290 ; 0x576a <__fp_merge> |
00005648 <__divsf3x>: |
5648: 55 23 and r21, r21 |
564a: 59 f0 breq .+22 ; 0x5662 <__divsf3x+0x1a> |
564c: 99 23 and r25, r25 |
564e: 69 f0 breq .+26 ; 0x566a <__divsf3x+0x22> |
5650: 9f 57 subi r25, 0x7F ; 127 |
5652: 5f 57 subi r21, 0x7F ; 127 |
5654: 95 1b sub r25, r21 |
5656: 33 f4 brvc .+12 ; 0x5664 <__divsf3x+0x1c> |
5658: 42 f4 brpl .+16 ; 0x566a <__divsf3x+0x22> |
565a: 90 38 cpi r25, 0x80 ; 128 |
565c: 11 f4 brne .+4 ; 0x5662 <__divsf3x+0x1a> |
565e: 91 58 subi r25, 0x81 ; 129 |
5660: 05 c0 rjmp .+10 ; 0x566c <__divsf3x+0x24> |
5662: 9b c0 rjmp .+310 ; 0x579a <__fp_nan> |
5664: 91 58 subi r25, 0x81 ; 129 |
5666: 9f 3f cpi r25, 0xFF ; 255 |
5668: 09 f4 brne .+2 ; 0x566c <__divsf3x+0x24> |
566a: c6 c0 rjmp .+396 ; 0x57f8 <__fp_zerox> |
566c: bb 27 eor r27, r27 |
566e: 11 24 eor r1, r1 |
5670: 62 17 cp r22, r18 |
5672: 73 07 cpc r23, r19 |
5674: 84 07 cpc r24, r20 |
5676: 30 f4 brcc .+12 ; 0x5684 <__divsf3x+0x3c> |
5678: 66 0f add r22, r22 |
567a: 77 1f adc r23, r23 |
567c: 88 1f adc r24, r24 |
567e: bb 1f adc r27, r27 |
5680: 91 50 subi r25, 0x01 ; 1 |
5682: 98 f3 brcs .-26 ; 0x566a <__divsf3x+0x22> |
5684: 11 d0 rcall .+34 ; 0x56a8 <__divsf3x+0x60> |
5686: 0f 92 push r0 |
5688: 0f d0 rcall .+30 ; 0x56a8 <__divsf3x+0x60> |
568a: 0f 92 push r0 |
568c: 0d d0 rcall .+26 ; 0x56a8 <__divsf3x+0x60> |
568e: a0 e8 ldi r26, 0x80 ; 128 |
5690: 26 17 cp r18, r22 |
5692: 37 07 cpc r19, r23 |
5694: 48 07 cpc r20, r24 |
5696: 1b 06 cpc r1, r27 |
5698: 09 f0 breq .+2 ; 0x569c <__divsf3x+0x54> |
569a: a0 48 sbci r26, 0x80 ; 128 |
569c: ba 2f mov r27, r26 |
569e: 60 2d mov r22, r0 |
56a0: 7f 91 pop r23 |
56a2: 8f 91 pop r24 |
56a4: 00 24 eor r0, r0 |
56a6: 08 95 ret |
56a8: a0 e8 ldi r26, 0x80 ; 128 |
56aa: 00 24 eor r0, r0 |
56ac: 62 17 cp r22, r18 |
56ae: 73 07 cpc r23, r19 |
56b0: 84 07 cpc r24, r20 |
56b2: b1 05 cpc r27, r1 |
56b4: 28 f0 brcs .+10 ; 0x56c0 <__divsf3x+0x78> |
56b6: 62 1b sub r22, r18 |
56b8: 73 0b sbc r23, r19 |
56ba: 84 0b sbc r24, r20 |
56bc: b1 09 sbc r27, r1 |
56be: 0a 2a or r0, r26 |
56c0: 66 0f add r22, r22 |
56c2: 77 1f adc r23, r23 |
56c4: 88 1f adc r24, r24 |
56c6: bb 1f adc r27, r27 |
56c8: a6 95 lsr r26 |
56ca: 81 f7 brne .-32 ; 0x56ac <__divsf3x+0x64> |
56cc: 08 95 ret |
000056ce <__fixsfsi>: |
56ce: 97 fb bst r25, 7 |
56d0: 73 d0 rcall .+230 ; 0x57b8 <__fp_split1> |
56d2: 9f 37 cpi r25, 0x7F ; 127 |
56d4: 38 f0 brcs .+14 ; 0x56e4 <__fixsfsi+0x16> |
56d6: fe e9 ldi r31, 0x9E ; 158 |
56d8: f9 1b sub r31, r25 |
56da: 98 2f mov r25, r24 |
56dc: 87 2f mov r24, r23 |
56de: 76 2f mov r23, r22 |
56e0: 6b 2f mov r22, r27 |
56e2: 05 c0 rjmp .+10 ; 0x56ee <__fixsfsi+0x20> |
56e4: 86 c0 rjmp .+268 ; 0x57f2 <__fp_zero> |
56e6: 96 95 lsr r25 |
56e8: 87 95 ror r24 |
56ea: 77 95 ror r23 |
56ec: 67 95 ror r22 |
56ee: f1 50 subi r31, 0x01 ; 1 |
56f0: d0 f7 brcc .-12 ; 0x56e6 <__fixsfsi+0x18> |
56f2: 3e f4 brtc .+14 ; 0x5702 <__fp_lneg+0xe> |
000056f4 <__fp_lneg>: |
56f4: 90 95 com r25 |
56f6: 80 95 com r24 |
56f8: 70 95 com r23 |
56fa: 61 95 neg r22 |
56fc: 7f 4f sbci r23, 0xFF ; 255 |
56fe: 8f 4f sbci r24, 0xFF ; 255 |
5700: 9f 4f sbci r25, 0xFF ; 255 |
5702: 08 95 ret |
00005704 <__floatunssisf>: |
5704: e8 94 clt |
5706: 03 c0 rjmp .+6 ; 0x570e <__floatsisf+0x6> |
00005708 <__floatsisf>: |
5708: 97 fb bst r25, 7 |
570a: 0e f4 brtc .+2 ; 0x570e <__floatsisf+0x6> |
570c: f3 df rcall .-26 ; 0x56f4 <__fp_lneg> |
570e: b6 2f mov r27, r22 |
5710: 67 2f mov r22, r23 |
5712: 78 2f mov r23, r24 |
5714: 89 2f mov r24, r25 |
5716: 9e e9 ldi r25, 0x9E ; 158 |
5718: 00 24 eor r0, r0 |
571a: 27 c0 rjmp .+78 ; 0x576a <__fp_merge> |
0000571c <__eqsf2>: |
571c: 0e d0 rcall .+28 ; 0x573a <.fp_cmp> |
571e: 5e f0 brts .+22 ; 0x5736 <__cmpsf2+0xe> |
5720: 04 c0 rjmp .+8 ; 0x572a <__cmpsf2+0x2> |
00005722 <__gesf2>: |
5722: 0b d0 rcall .+22 ; 0x573a <.fp_cmp> |
5724: 26 f0 brts .+8 ; 0x572e <__cmpsf2+0x6> |
5726: 01 c0 rjmp .+2 ; 0x572a <__cmpsf2+0x2> |
00005728 <__cmpsf2>: |
5728: 08 d0 rcall .+16 ; 0x573a <.fp_cmp> |
572a: 19 f0 breq .+6 ; 0x5732 <__cmpsf2+0xa> |
572c: 20 f4 brcc .+8 ; 0x5736 <__cmpsf2+0xe> |
572e: 8f ef ldi r24, 0xFF ; 255 |
5730: 08 95 ret |
5732: 80 e0 ldi r24, 0x00 ; 0 |
5734: 08 95 ret |
5736: 81 e0 ldi r24, 0x01 ; 1 |
5738: 08 95 ret |
0000573a <.fp_cmp>: |
573a: 97 fb bst r25, 7 |
573c: 09 2e mov r0, r25 |
573e: 05 26 eor r0, r21 |
5740: 00 f8 bld r0, 0 |
5742: 68 94 set |
5744: 30 d0 rcall .+96 ; 0x57a6 <__fp_split2> |
5746: e8 94 clt |
5748: 07 fc sbrc r0, 7 |
574a: 07 c0 rjmp .+14 ; 0x575a <.fp_cmp+0x20> |
574c: 62 17 cp r22, r18 |
574e: 73 07 cpc r23, r19 |
5750: 84 07 cpc r24, r20 |
5752: 95 07 cpc r25, r21 |
5754: 21 f0 breq .+8 ; 0x575e <.fp_cmp+0x24> |
5756: 08 f4 brcc .+2 ; 0x575a <.fp_cmp+0x20> |
5758: 00 94 com r0 |
575a: 07 94 ror r0 |
575c: 98 94 clz |
575e: 08 95 ret |
5760: 9a 95 dec r25 |
5762: bb 0f add r27, r27 |
5764: 66 1f adc r22, r22 |
5766: 77 1f adc r23, r23 |
5768: 88 1f adc r24, r24 |
0000576a <__fp_merge>: |
576a: 11 24 eor r1, r1 |
576c: 99 23 and r25, r25 |
576e: a1 f0 breq .+40 ; 0x5798 <__fp_merge+0x2e> |
5770: 88 23 and r24, r24 |
5772: b2 f7 brpl .-20 ; 0x5760 <.fp_cmp+0x26> |
5774: 9f 3f cpi r25, 0xFF ; 255 |
5776: 59 f0 breq .+22 ; 0x578e <__fp_merge+0x24> |
5778: bb 0f add r27, r27 |
577a: 48 f4 brcc .+18 ; 0x578e <__fp_merge+0x24> |
577c: 21 f4 brne .+8 ; 0x5786 <__fp_merge+0x1c> |
577e: 00 20 and r0, r0 |
5780: 11 f4 brne .+4 ; 0x5786 <__fp_merge+0x1c> |
5782: 60 ff sbrs r22, 0 |
5784: 04 c0 rjmp .+8 ; 0x578e <__fp_merge+0x24> |
5786: 6f 5f subi r22, 0xFF ; 255 |
5788: 7f 4f sbci r23, 0xFF ; 255 |
578a: 8f 4f sbci r24, 0xFF ; 255 |
578c: 9f 4f sbci r25, 0xFF ; 255 |
578e: 88 1f adc r24, r24 |
5790: 97 95 ror r25 |
5792: 87 95 ror r24 |
5794: 97 f9 bld r25, 7 |
5796: 08 95 ret |
5798: 2c c0 rjmp .+88 ; 0x57f2 <__fp_zero> |
0000579a <__fp_nan>: |
579a: 9f ef ldi r25, 0xFF ; 255 |
579c: 80 ec ldi r24, 0xC0 ; 192 |
579e: 08 95 ret |
000057a0 <__fp_split3>: |
57a0: 05 2e mov r0, r21 |
57a2: 09 26 eor r0, r25 |
57a4: 07 fa bst r0, 7 |
000057a6 <__fp_split2>: |
57a6: 44 0f add r20, r20 |
57a8: 55 1f adc r21, r21 |
57aa: 5f 3f cpi r21, 0xFF ; 255 |
57ac: 79 f0 breq .+30 ; 0x57cc <__fp_split1+0x14> |
57ae: aa 27 eor r26, r26 |
57b0: a5 17 cp r26, r21 |
57b2: 08 f0 brcs .+2 ; 0x57b6 <__fp_split2+0x10> |
57b4: 51 e0 ldi r21, 0x01 ; 1 |
57b6: 47 95 ror r20 |
000057b8 <__fp_split1>: |
57b8: 88 0f add r24, r24 |
57ba: 99 1f adc r25, r25 |
57bc: 9f 3f cpi r25, 0xFF ; 255 |
57be: 31 f0 breq .+12 ; 0x57cc <__fp_split1+0x14> |
57c0: bb 27 eor r27, r27 |
57c2: b9 17 cp r27, r25 |
57c4: 08 f0 brcs .+2 ; 0x57c8 <__fp_split1+0x10> |
57c6: 91 e0 ldi r25, 0x01 ; 1 |
57c8: 87 95 ror r24 |
57ca: 08 95 ret |
57cc: 9f 91 pop r25 |
57ce: 9f 91 pop r25 |
57d0: 11 24 eor r1, r1 |
57d2: e3 cf rjmp .-58 ; 0x579a <__fp_nan> |
000057d4 <__fp_split_a>: |
57d4: 97 fb bst r25, 7 |
57d6: 88 0f add r24, r24 |
57d8: 99 1f adc r25, r25 |
57da: 9f 3f cpi r25, 0xFF ; 255 |
57dc: 31 f0 breq .+12 ; 0x57ea <__fp_split_a+0x16> |
57de: bb 27 eor r27, r27 |
57e0: b9 17 cp r27, r25 |
57e2: 08 f0 brcs .+2 ; 0x57e6 <__fp_split_a+0x12> |
57e4: 91 e0 ldi r25, 0x01 ; 1 |
57e6: 87 95 ror r24 |
57e8: 08 95 ret |
57ea: 9f 91 pop r25 |
57ec: 9f 91 pop r25 |
57ee: 11 24 eor r1, r1 |
57f0: d4 cf rjmp .-88 ; 0x579a <__fp_nan> |
000057f2 <__fp_zero>: |
57f2: 66 27 eor r22, r22 |
57f4: 77 27 eor r23, r23 |
57f6: 88 27 eor r24, r24 |
000057f8 <__fp_zerox>: |
57f8: 99 27 eor r25, r25 |
57fa: 08 95 ret |
000057fc <__mulsf3>: |
57fc: d1 df rcall .-94 ; 0x57a0 <__fp_split3> |
57fe: 01 d0 rcall .+2 ; 0x5802 <__mulsf3x> |
5800: b4 cf rjmp .-152 ; 0x576a <__fp_merge> |
00005802 <__mulsf3x>: |
5802: 99 23 and r25, r25 |
5804: 39 f0 breq .+14 ; 0x5814 <__mulsf3x+0x12> |
5806: 55 23 and r21, r21 |
5808: 29 f0 breq .+10 ; 0x5814 <__mulsf3x+0x12> |
580a: 9f 57 subi r25, 0x7F ; 127 |
580c: 5f 57 subi r21, 0x7F ; 127 |
580e: 95 0f add r25, r21 |
5810: 13 f4 brvc .+4 ; 0x5816 <__mulsf3x+0x14> |
5812: 9a f1 brmi .+102 ; 0x587a <__mulsf3x+0x78> |
5814: f1 cf rjmp .-30 ; 0x57f8 <__fp_zerox> |
5816: 91 58 subi r25, 0x81 ; 129 |
5818: 9f 3f cpi r25, 0xFF ; 255 |
581a: e1 f3 breq .-8 ; 0x5814 <__mulsf3x+0x12> |
581c: 62 9f mul r22, r18 |
581e: a1 2d mov r26, r1 |
5820: 0f 92 push r0 |
5822: bb 27 eor r27, r27 |
5824: 63 9f mul r22, r19 |
5826: a0 0d add r26, r0 |
5828: b1 1d adc r27, r1 |
582a: ee 27 eor r30, r30 |
582c: 72 9f mul r23, r18 |
582e: a0 0d add r26, r0 |
5830: b1 1d adc r27, r1 |
5832: ee 1f adc r30, r30 |
5834: af 93 push r26 |
5836: aa 27 eor r26, r26 |
5838: 64 9f mul r22, r20 |
583a: b0 0d add r27, r0 |
583c: e1 1d adc r30, r1 |
583e: 73 9f mul r23, r19 |
5840: b0 0d add r27, r0 |
5842: e1 1d adc r30, r1 |
5844: aa 1f adc r26, r26 |
5846: 66 27 eor r22, r22 |
5848: 82 9f mul r24, r18 |
584a: b0 0d add r27, r0 |
584c: e1 1d adc r30, r1 |
584e: a6 1f adc r26, r22 |
5850: 55 27 eor r21, r21 |
5852: 74 9f mul r23, r20 |
5854: e0 0d add r30, r0 |
5856: a1 1d adc r26, r1 |
5858: 55 1f adc r21, r21 |
585a: 83 9f mul r24, r19 |
585c: e0 0d add r30, r0 |
585e: a1 1d adc r26, r1 |
5860: 56 1f adc r21, r22 |
5862: 84 9f mul r24, r20 |
5864: a0 0d add r26, r0 |
5866: 51 1d adc r21, r1 |
5868: 85 2f mov r24, r21 |
586a: 7a 2f mov r23, r26 |
586c: 6e 2f mov r22, r30 |
586e: 1f 90 pop r1 |
5870: 0f 90 pop r0 |
5872: 88 23 and r24, r24 |
5874: 1a f4 brpl .+6 ; 0x587c <__mulsf3x+0x7a> |
5876: 93 95 inc r25 |
5878: 39 f4 brne .+14 ; 0x5888 <__mulsf3x+0x86> |
587a: 8f cf rjmp .-226 ; 0x579a <__fp_nan> |
587c: 00 0c add r0, r0 |
587e: 11 1c adc r1, r1 |
5880: bb 1f adc r27, r27 |
5882: 66 1f adc r22, r22 |
5884: 77 1f adc r23, r23 |
5886: 88 1f adc r24, r24 |
5888: 01 28 or r0, r1 |
588a: 08 95 ret |
0000588c <sqrt>: |
588c: 97 fd sbrc r25, 7 |
588e: 85 cf rjmp .-246 ; 0x579a <__fp_nan> |
5890: 99 23 and r25, r25 |
5892: 09 f4 brne .+2 ; 0x5896 <sqrt+0xa> |
5894: 08 95 ret |
5896: 48 2f mov r20, r24 |
5898: 9d df rcall .-198 ; 0x57d4 <__fp_split_a> |
589a: f9 2f mov r31, r25 |
589c: ff 57 subi r31, 0x7F ; 127 |
589e: f5 95 asr r31 |
58a0: 9f 1b sub r25, r31 |
58a2: 9f 1b sub r25, r31 |
58a4: ff 93 push r31 |
58a6: 61 df rcall .-318 ; 0x576a <__fp_merge> |
58a8: ff 92 push r15 |
58aa: ef 92 push r14 |
58ac: df 92 push r13 |
58ae: cf 92 push r12 |
58b0: bf 92 push r11 |
58b2: af 92 push r10 |
58b4: 9f 92 push r9 |
58b6: 8f 92 push r8 |
58b8: 6b 01 movw r12, r22 |
58ba: 7c 01 movw r14, r24 |
58bc: 40 58 subi r20, 0x80 ; 128 |
58be: 47 95 ror r20 |
58c0: 33 27 eor r19, r19 |
58c2: 22 27 eor r18, r18 |
58c4: 40 68 ori r20, 0x80 ; 128 |
58c6: 5f e3 ldi r21, 0x3F ; 63 |
58c8: b6 01 movw r22, r12 |
58ca: c7 01 movw r24, r14 |
58cc: 49 01 movw r8, r18 |
58ce: 5a 01 movw r10, r20 |
58d0: 0e 94 21 2b call 0x5642 ; 0x5642 <__divsf3> |
58d4: 94 01 movw r18, r8 |
58d6: a5 01 movw r20, r10 |
58d8: 0e 94 df 2a call 0x55be ; 0x55be <__addsf3> |
58dc: 4f ef ldi r20, 0xFF ; 255 |
58de: 5f ef ldi r21, 0xFF ; 255 |
58e0: 13 d0 rcall .+38 ; 0x5908 <ldexp> |
58e2: 9b 01 movw r18, r22 |
58e4: ac 01 movw r20, r24 |
58e6: 82 16 cp r8, r18 |
58e8: 93 06 cpc r9, r19 |
58ea: a4 06 cpc r10, r20 |
58ec: b5 06 cpc r11, r21 |
58ee: 61 f7 brne .-40 ; 0x58c8 <sqrt+0x3c> |
58f0: 8f 90 pop r8 |
58f2: 9f 90 pop r9 |
58f4: af 90 pop r10 |
58f6: bf 90 pop r11 |
58f8: cf 90 pop r12 |
58fa: df 90 pop r13 |
58fc: ef 90 pop r14 |
58fe: ff 90 pop r15 |
5900: 5f 91 pop r21 |
5902: 68 df rcall .-304 ; 0x57d4 <__fp_split_a> |
5904: 95 0f add r25, r21 |
5906: 31 cf rjmp .-414 ; 0x576a <__fp_merge> |
00005908 <ldexp>: |
5908: 65 df rcall .-310 ; 0x57d4 <__fp_split_a> |
590a: 99 23 and r25, r25 |
590c: 59 f0 breq .+22 ; 0x5924 <ldexp+0x1c> |
590e: aa 27 eor r26, r26 |
5910: 94 0f add r25, r20 |
5912: a5 1f adc r26, r21 |
5914: 43 f0 brvs .+16 ; 0x5926 <ldexp+0x1e> |
5916: 32 f0 brmi .+12 ; 0x5924 <ldexp+0x1c> |
5918: 4f ef ldi r20, 0xFF ; 255 |
591a: 50 e0 ldi r21, 0x00 ; 0 |
591c: 94 17 cp r25, r20 |
591e: a5 07 cpc r26, r21 |
5920: 14 f4 brge .+4 ; 0x5926 <ldexp+0x1e> |
5922: 23 cf rjmp .-442 ; 0x576a <__fp_merge> |
5924: 66 cf rjmp .-308 ; 0x57f2 <__fp_zero> |
5926: 0e f0 brts .+2 ; 0x592a <ldexp+0x22> |
5928: 06 c0 rjmp .+12 ; 0x5936 <__fp_p_inf> |
592a: 00 c0 rjmp .+0 ; 0x592c <__fp_m_inf> |
0000592c <__fp_m_inf>: |
592c: 9f ef ldi r25, 0xFF ; 255 |
592e: 80 e8 ldi r24, 0x80 ; 128 |
5930: 70 e0 ldi r23, 0x00 ; 0 |
5932: 60 e0 ldi r22, 0x00 ; 0 |
5934: 08 95 ret |
00005936 <__fp_p_inf>: |
5936: 9f e7 ldi r25, 0x7F ; 127 |
5938: 80 e8 ldi r24, 0x80 ; 128 |
593a: 70 e0 ldi r23, 0x00 ; 0 |
593c: 60 e0 ldi r22, 0x00 ; 0 |
593e: 08 95 ret |
00005940 <__mulsi3>: |
5940: 62 9f mul r22, r18 |
5942: d0 01 movw r26, r0 |
5944: 73 9f mul r23, r19 |
5946: f0 01 movw r30, r0 |
5948: 82 9f mul r24, r18 |
594a: e0 0d add r30, r0 |
594c: f1 1d adc r31, r1 |
594e: 64 9f mul r22, r20 |
5950: e0 0d add r30, r0 |
5952: f1 1d adc r31, r1 |
5954: 92 9f mul r25, r18 |
5956: f0 0d add r31, r0 |
5958: 83 9f mul r24, r19 |
595a: f0 0d add r31, r0 |
595c: 74 9f mul r23, r20 |
595e: f0 0d add r31, r0 |
5960: 65 9f mul r22, r21 |
5962: f0 0d add r31, r0 |
5964: 99 27 eor r25, r25 |
5966: 72 9f mul r23, r18 |
5968: b0 0d add r27, r0 |
596a: e1 1d adc r30, r1 |
596c: f9 1f adc r31, r25 |
596e: 63 9f mul r22, r19 |
5970: b0 0d add r27, r0 |
5972: e1 1d adc r30, r1 |
5974: f9 1f adc r31, r25 |
5976: bd 01 movw r22, r26 |
5978: cf 01 movw r24, r30 |
597a: 11 24 eor r1, r1 |
597c: 08 95 ret |
0000597e <__udivmodhi4>: |
597e: aa 1b sub r26, r26 |
5980: bb 1b sub r27, r27 |
5982: 51 e1 ldi r21, 0x11 ; 17 |
5984: 07 c0 rjmp .+14 ; 0x5994 <__udivmodhi4_ep> |
00005986 <__udivmodhi4_loop>: |
5986: aa 1f adc r26, r26 |
5988: bb 1f adc r27, r27 |
598a: a6 17 cp r26, r22 |
598c: b7 07 cpc r27, r23 |
598e: 10 f0 brcs .+4 ; 0x5994 <__udivmodhi4_ep> |
5990: a6 1b sub r26, r22 |
5992: b7 0b sbc r27, r23 |
00005994 <__udivmodhi4_ep>: |
5994: 88 1f adc r24, r24 |
5996: 99 1f adc r25, r25 |
5998: 5a 95 dec r21 |
599a: a9 f7 brne .-22 ; 0x5986 <__udivmodhi4_loop> |
599c: 80 95 com r24 |
599e: 90 95 com r25 |
59a0: bc 01 movw r22, r24 |
59a2: cd 01 movw r24, r26 |
59a4: 08 95 ret |
000059a6 <__divmodhi4>: |
59a6: 97 fb bst r25, 7 |
59a8: 09 2e mov r0, r25 |
59aa: 07 26 eor r0, r23 |
59ac: 0a d0 rcall .+20 ; 0x59c2 <__divmodhi4_neg1> |
59ae: 77 fd sbrc r23, 7 |
59b0: 04 d0 rcall .+8 ; 0x59ba <__divmodhi4_neg2> |
59b2: e5 df rcall .-54 ; 0x597e <__udivmodhi4> |
59b4: 06 d0 rcall .+12 ; 0x59c2 <__divmodhi4_neg1> |
59b6: 00 20 and r0, r0 |
59b8: 1a f4 brpl .+6 ; 0x59c0 <__divmodhi4_exit> |
000059ba <__divmodhi4_neg2>: |
59ba: 70 95 com r23 |
59bc: 61 95 neg r22 |
59be: 7f 4f sbci r23, 0xFF ; 255 |
000059c0 <__divmodhi4_exit>: |
59c0: 08 95 ret |
000059c2 <__divmodhi4_neg1>: |
59c2: f6 f7 brtc .-4 ; 0x59c0 <__divmodhi4_exit> |
59c4: 90 95 com r25 |
59c6: 81 95 neg r24 |
59c8: 9f 4f sbci r25, 0xFF ; 255 |
59ca: 08 95 ret |
000059cc <__udivmodsi4>: |
59cc: a1 e2 ldi r26, 0x21 ; 33 |
59ce: 1a 2e mov r1, r26 |
59d0: aa 1b sub r26, r26 |
59d2: bb 1b sub r27, r27 |
59d4: fd 01 movw r30, r26 |
59d6: 0d c0 rjmp .+26 ; 0x59f2 <__udivmodsi4_ep> |
000059d8 <__udivmodsi4_loop>: |
59d8: aa 1f adc r26, r26 |
59da: bb 1f adc r27, r27 |
59dc: ee 1f adc r30, r30 |
59de: ff 1f adc r31, r31 |
59e0: a2 17 cp r26, r18 |
59e2: b3 07 cpc r27, r19 |
59e4: e4 07 cpc r30, r20 |
59e6: f5 07 cpc r31, r21 |
59e8: 20 f0 brcs .+8 ; 0x59f2 <__udivmodsi4_ep> |
59ea: a2 1b sub r26, r18 |
59ec: b3 0b sbc r27, r19 |
59ee: e4 0b sbc r30, r20 |
59f0: f5 0b sbc r31, r21 |
000059f2 <__udivmodsi4_ep>: |
59f2: 66 1f adc r22, r22 |
59f4: 77 1f adc r23, r23 |
59f6: 88 1f adc r24, r24 |
59f8: 99 1f adc r25, r25 |
59fa: 1a 94 dec r1 |
59fc: 69 f7 brne .-38 ; 0x59d8 <__udivmodsi4_loop> |
59fe: 60 95 com r22 |
5a00: 70 95 com r23 |
5a02: 80 95 com r24 |
5a04: 90 95 com r25 |
5a06: 9b 01 movw r18, r22 |
5a08: ac 01 movw r20, r24 |
5a0a: bd 01 movw r22, r26 |
5a0c: cf 01 movw r24, r30 |
5a0e: 08 95 ret |
00005a10 <__divmodsi4>: |
5a10: 97 fb bst r25, 7 |
5a12: 09 2e mov r0, r25 |
5a14: 05 26 eor r0, r21 |
5a16: 0e d0 rcall .+28 ; 0x5a34 <__divmodsi4_neg1> |
5a18: 57 fd sbrc r21, 7 |
5a1a: 04 d0 rcall .+8 ; 0x5a24 <__divmodsi4_neg2> |
5a1c: d7 df rcall .-82 ; 0x59cc <__udivmodsi4> |
5a1e: 0a d0 rcall .+20 ; 0x5a34 <__divmodsi4_neg1> |
5a20: 00 1c adc r0, r0 |
5a22: 38 f4 brcc .+14 ; 0x5a32 <__divmodsi4_exit> |
00005a24 <__divmodsi4_neg2>: |
5a24: 50 95 com r21 |
5a26: 40 95 com r20 |
5a28: 30 95 com r19 |
5a2a: 21 95 neg r18 |
5a2c: 3f 4f sbci r19, 0xFF ; 255 |
5a2e: 4f 4f sbci r20, 0xFF ; 255 |
5a30: 5f 4f sbci r21, 0xFF ; 255 |
00005a32 <__divmodsi4_exit>: |
5a32: 08 95 ret |
00005a34 <__divmodsi4_neg1>: |
5a34: f6 f7 brtc .-4 ; 0x5a32 <__divmodsi4_exit> |
5a36: 90 95 com r25 |
5a38: 80 95 com r24 |
5a3a: 70 95 com r23 |
5a3c: 61 95 neg r22 |
5a3e: 7f 4f sbci r23, 0xFF ; 255 |
5a40: 8f 4f sbci r24, 0xFF ; 255 |
5a42: 9f 4f sbci r25, 0xFF ; 255 |
5a44: 08 95 ret |
00005a46 <__eeprom_read_byte_1F2021>: |
5a46: f9 99 sbic 0x1f, 1 ; 31 |
5a48: fe cf rjmp .-4 ; 0x5a46 <__eeprom_read_byte_1F2021> |
5a4a: b2 bd out 0x22, r27 ; 34 |
5a4c: a1 bd out 0x21, r26 ; 33 |
5a4e: f8 9a sbi 0x1f, 0 ; 31 |
5a50: 11 96 adiw r26, 0x01 ; 1 |
5a52: 00 b4 in r0, 0x20 ; 32 |
5a54: 08 95 ret |
00005a56 <__eeprom_write_byte_1F2021>: |
5a56: f9 99 sbic 0x1f, 1 ; 31 |
5a58: fe cf rjmp .-4 ; 0x5a56 <__eeprom_write_byte_1F2021> |
5a5a: b2 bd out 0x22, r27 ; 34 |
5a5c: a1 bd out 0x21, r26 ; 33 |
5a5e: 00 bc out 0x20, r0 ; 32 |
5a60: 11 96 adiw r26, 0x01 ; 1 |
5a62: 0f b6 in r0, 0x3f ; 63 |
5a64: f8 94 cli |
5a66: fa 9a sbi 0x1f, 2 ; 31 |
5a68: f9 9a sbi 0x1f, 1 ; 31 |
5a6a: 0f be out 0x3f, r0 ; 63 |
5a6c: 08 95 ret |
00005a6e <_exit>: |
5a6e: ff cf rjmp .-2 ; 0x5a6e <_exit> |
/branches/chris_hallo2/Flight-Ctrl_MEGA644_V0_60.map |
---|
0,0 → 1,1747 |
Archive member included because of file (symbol) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3.o) |
analog.o (__subsf3) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3x.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3.o) (__addsf3x) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3.o) |
fc.o (__divsf3) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3x.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3.o) (__divsf3x) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fixsfsi.o) |
analog.o (__fixsfsi) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(floatsisf.o) |
analog.o (__floatsisf) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) |
analog.o (__ltsf2) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_merge.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3.o) (__fp_merge) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_nan.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3x.o) (__fp_nanx) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_split.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3.o) (__fp_split3) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_zero.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fixsfsi.o) (__fp_zero) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3.o) |
fc.o (__mulsf3) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3x.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3.o) (__mulsf3x) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(sqrt.o) |
GPS.o (sqrt) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(ldexp.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(sqrt.o) (ldexp) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_m_inf.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(ldexp.o) (__fp_m_inf) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_p_inf.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(ldexp.o) (__fp_p_inf) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_mulsi3.o) |
timer0.o (__mulsi3) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_udivmodhi4.o) |
analog.o (__udivmodhi4) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodhi4.o) |
timer0.o (__divmodhi4) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_udivmodsi4.o) |
printf_P.o (__udivmodsi4) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodsi4.o) |
timer0.o (__divmodsi4) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_exit.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o (exit) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_copy_data.o) |
main.o (__do_copy_data) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_clear_bss.o) |
main.o (__do_clear_bss) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(memchr.o) |
printf_P.o (memchr) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_rb.1F2021.o) |
main.o (__eeprom_read_byte_1F2021) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_wb.1F2021.o) |
main.o (__eeprom_write_byte_1F2021) |
Allocating common symbols |
Common symbol size file |
durchschnitt_easting |
0x4 main.o |
ubxEp 0x2 uart.o |
MeineSlaveAdresse 0x1 uart.o |
CK_A 0x1 uart.o |
EE_Parameter 0x3a fc.o |
DiffRoll 0x2 main.o |
MesswertRoll 0x2 fc.o |
Motor_Vorne 0x1 main.o |
Motor_Hinten 0x1 main.o |
MesswertNick 0x2 fc.o |
Aktuell_ay 0x2 analog.o |
MIN_GAS 0x1 fc.o |
SendeBuffer 0x96 uart.o |
NMEABuffer 0x96 uart.o |
Mittelwert_AccHoch 0x2 fc.o |
Debug_Timer 0x2 uart.o |
CK_B 0x1 uart.o |
DiffNick 0x2 main.o |
navStatus 0x11 uart.o |
DebugIn 0xb uart.o |
VersionInfo 0xa uart.o |
rollOffset 0x4 uart.o |
motor_rx 0x8 twimaster.o |
PPM_in 0x16 rc.o |
IntegralFaktor 0x4 fc.o |
Motor_Rechts 0x1 main.o |
Count 0x1 main.o |
Aktuell_az 0x2 analog.o |
ubxP 0x2 uart.o |
StartLuftdruck 0x2 analog.o |
navVelECEF 0x15 uart.o |
RxdBuffer 0x96 uart.o |
durchschnitt_northing |
0x4 main.o |
ubxSp 0x2 uart.o |
skal 0x2 main.o |
gps_p 0x2 main.o |
gps_d 0x2 main.o |
PrintZiel 0x1 printf_P.o |
Aktuell_Nick 0x2 analog.o |
messanzahl_Druck 0x1 analog.o |
Motor_Links 0x1 main.o |
Aktuell_Roll 0x2 analog.o |
msgLen 0x2 uart.o |
nickOffset 0x4 uart.o |
Aktuell_ax 0x2 analog.o |
navPosECEF 0x15 uart.o |
s 0x1 main.o |
h 0x1 main.o |
Mittelwert_AccNick 0x2 fc.o |
DebugOut 0x32 uart.o |
gps_gethome 0x2 main.o |
DruckOffsetSetting 0x1 analog.o |
actualPos 0x1a uart.o |
Aktuell_Gier 0x2 analog.o |
msgID 0x1 uart.o |
MAX_GAS 0x1 fc.o |
MesswertGier 0x2 fc.o |
GyroFaktor 0x4 fc.o |
m 0x1 main.o |
Mittelwert_AccRoll 0x2 fc.o |
ignorePacket 0x1 uart.o |
MotorWert 0x5 main.o |
PPM_diff 0x16 rc.o |
tmpLuftdruck 0x2 analog.o |
Discarded input sections |
.stabstr 0x00000000 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
Memory Configuration |
Name Origin Length Attributes |
text 0x00000000 0x00020000 xr |
data 0x00800060 0x0000ffa0 rw !x |
eeprom 0x00810000 0x00010000 rw !x |
*default* 0x00000000 0xffffffff |
Linker script and memory map |
Address of section .data set to 0x800100 |
LOAD c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
LOAD main.o |
LOAD uart.o |
LOAD printf_P.o |
LOAD timer0.o |
LOAD analog.o |
LOAD menu.o |
LOAD twimaster.o |
LOAD rc.o |
LOAD fc.o |
LOAD GPS.o |
LOAD c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a |
LOAD c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a |
LOAD c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a |
LOAD c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a |
.hash |
*(.hash) |
.dynsym |
*(.dynsym) |
.dynstr |
*(.dynstr) |
.gnu.version |
*(.gnu.version) |
.gnu.version_d |
*(.gnu.version_d) |
.gnu.version_r |
*(.gnu.version_r) |
.rel.init |
*(.rel.init) |
.rela.init |
*(.rela.init) |
.rel.text |
*(.rel.text) |
*(.rel.text.*) |
*(.rel.gnu.linkonce.t*) |
.rela.text |
*(.rela.text) |
*(.rela.text.*) |
*(.rela.gnu.linkonce.t*) |
.rel.fini |
*(.rel.fini) |
.rela.fini |
*(.rela.fini) |
.rel.rodata |
*(.rel.rodata) |
*(.rel.rodata.*) |
*(.rel.gnu.linkonce.r*) |
.rela.rodata |
*(.rela.rodata) |
*(.rela.rodata.*) |
*(.rela.gnu.linkonce.r*) |
.rel.data |
*(.rel.data) |
*(.rel.data.*) |
*(.rel.gnu.linkonce.d*) |
.rela.data |
*(.rela.data) |
*(.rela.data.*) |
*(.rela.gnu.linkonce.d*) |
.rel.ctors |
*(.rel.ctors) |
.rela.ctors |
*(.rela.ctors) |
.rel.dtors |
*(.rel.dtors) |
.rela.dtors |
*(.rela.dtors) |
.rel.got |
*(.rel.got) |
.rela.got |
*(.rela.got) |
.rel.bss |
*(.rel.bss) |
.rela.bss |
*(.rela.bss) |
.rel.plt |
*(.rel.plt) |
.rela.plt |
*(.rela.plt) |
.text 0x00000000 0x5a70 |
*(.vectors) |
.vectors 0x00000000 0x70 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
0x00000000 __vectors |
0x00000000 __vector_default |
*(.vectors) |
*(.progmem.gcc*) |
*(.progmem*) |
.progmem.data 0x00000070 0xcb main.o |
.progmem.data 0x0000013b 0x2 analog.o |
.progmem.data 0x0000013d 0x274 menu.o |
0x000003b2 . = ALIGN (0x2) |
*fill* 0x000003b1 0x1 00 |
0x000003b2 __trampolines_start = . |
*(.trampolines) |
.trampolines 0x000003b2 0x0 linker stubs |
*(.trampolines*) |
0x000003b2 __trampolines_end = . |
*(.jumptables) |
*(.jumptables*) |
*(.lowtext) |
*(.lowtext*) |
0x000003b2 __ctors_start = . |
*(.ctors) |
0x000003b2 __ctors_end = . |
0x000003b2 __dtors_start = . |
*(.dtors) |
0x000003b2 __dtors_end = . |
SORT(*)(.ctors) |
SORT(*)(.dtors) |
*(.init0) |
.init0 0x000003b2 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
0x000003b2 __init |
*(.init0) |
*(.init1) |
*(.init1) |
*(.init2) |
.init2 0x000003b2 0xc c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
*(.init2) |
*(.init3) |
*(.init3) |
*(.init4) |
.init4 0x000003be 0x16 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_copy_data.o) |
0x000003be __do_copy_data |
.init4 0x000003d4 0x10 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_clear_bss.o) |
0x000003d4 __do_clear_bss |
*(.init4) |
*(.init5) |
*(.init5) |
*(.init6) |
*(.init6) |
*(.init7) |
*(.init7) |
*(.init8) |
*(.init8) |
*(.init9) |
.init9 0x000003e4 0x8 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
*(.init9) |
*(.text) |
.text 0x000003ec 0x4 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
0x000003ec __vector_1 |
0x000003ec __bad_interrupt |
0x000003ec __vector_6 |
0x000003ec __vector_3 |
0x000003ec __vector_23 |
0x000003ec __vector_25 |
0x000003ec __vector_11 |
0x000003ec __vector_13 |
0x000003ec __vector_17 |
0x000003ec __vector_19 |
0x000003ec __vector_7 |
0x000003ec __vector_27 |
0x000003ec __vector_5 |
0x000003ec __vector_4 |
0x000003ec __vector_2 |
0x000003ec __vector_21 |
0x000003ec __vector_15 |
0x000003ec __vector_8 |
0x000003ec __vector_14 |
0x000003ec __vector_10 |
0x000003ec __vector_16 |
.text 0x000003f0 0x334 main.o |
0x000003fe WriteParameterSet |
0x0000042e ReadParameterSet |
0x0000045a main |
0x000003f0 GetActiveParamSetNumber |
.text 0x00000724 0x9b0 uart.o |
0x00000724 __vector_22 |
0x00000e58 WriteProgramData |
0x00000e5a UART_Init |
0x00000790 GPSscanData |
0x00000f70 BearbeiteRxDaten |
0x00000c5a AddCRC |
0x00000e94 DatenUebertragung |
0x00000d86 Decode64 |
0x00000cb6 SendOutData |
0x00000886 __vector_20 |
0x00000e36 uart_putchar |
.text 0x000010d4 0x5fa printf_P.o |
0x000010d4 Putchar |
0x00001186 _printf_P |
0x00001106 PAD_0 |
0x00001132 PRINTP |
0x0000115e PRINT |
0x0000111c PAD_SP |
.text 0x000016ce 0x31e timer0.o |
0x000017f6 SetDelay |
0x0000197a Timer_Init |
0x00001808 CheckDelay |
0x000019c8 Delay_ms |
0x00001820 __vector_9 |
0x000016ce __vector_18 |
.text 0x000019ec 0x6a2 analog.o |
0x000019f8 __vector_24 |
0x000019ec ADC_Init |
0x00002040 SucheLuftruckOffset |
.text 0x0000208e 0x79a menu.o |
0x0000208e LcdClear |
0x000020a0 Menu |
.text 0x00002828 0x170 twimaster.o |
0x00002834 i2c_start |
0x00002840 i2c_stop |
0x00002828 i2c_init |
0x0000285c __vector_26 |
0x00002848 i2c_write_byte |
.text 0x00002998 0x168 rc.o |
0x000029c2 __vector_12 |
0x00002998 rc_sum_init |
.text 0x00002b00 0x2754 fc.o |
0x0000392e DefaultKonstanten1 |
0x00003a10 SendMotorData |
0x00002b00 Mittelwert |
0x00003c96 Piep |
0x00003082 CalibrierMittelwert |
0x00003a9e SetNeutral |
0x00003854 DefaultKonstanten2 |
0x000033ba ParameterZuordnung |
0x00003cc0 MotorRegler |
.text 0x00005254 0x34e GPS.o |
0x00005254 gps_main |
.text 0x000055a2 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3.o) |
.text 0x000055a2 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3x.o) |
.text 0x000055a2 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3.o) |
.text 0x000055a2 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3x.o) |
.text 0x000055a2 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fixsfsi.o) |
.text 0x000055a2 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(floatsisf.o) |
.text 0x000055a2 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) |
.text 0x000055a2 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_merge.o) |
.text 0x000055a2 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_nan.o) |
.text 0x000055a2 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_split.o) |
.text 0x000055a2 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_zero.o) |
.text 0x000055a2 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3.o) |
.text 0x000055a2 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3x.o) |
.text 0x000055a2 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(sqrt.o) |
.text 0x000055a2 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(ldexp.o) |
.text 0x000055a2 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_m_inf.o) |
.text 0x000055a2 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_p_inf.o) |
.text 0x000055a2 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_mulsi3.o) |
.text 0x000055a2 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_udivmodhi4.o) |
.text 0x000055a2 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodhi4.o) |
.text 0x000055a2 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_udivmodsi4.o) |
.text 0x000055a2 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodsi4.o) |
.text 0x000055a2 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_exit.o) |
.text 0x000055a2 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_copy_data.o) |
.text 0x000055a2 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_clear_bss.o) |
.text 0x000055a2 0x1a c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(memchr.o) |
0x000055a2 memchr |
.text 0x000055bc 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_rb.1F2021.o) |
.text 0x000055bc 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_wb.1F2021.o) |
0x000055bc . = ALIGN (0x2) |
*(.text.*) |
.text.fplib 0x000055bc 0xa c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3.o) |
0x000055bc __subsf3 |
0x000055be __addsf3 |
.text.fplib 0x000055c6 0x7c c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3x.o) |
0x000055c6 __addsf3x |
.text.fplib 0x00005642 0x6 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3.o) |
0x00005642 __divsf3 |
.text.fplib 0x00005648 0x86 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3x.o) |
0x00005648 __divsf3x |
.text.fplib 0x000056ce 0x36 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fixsfsi.o) |
0x000056ce __fixsfsi |
0x000056f4 __fp_lneg |
0x000056ce __fixunssfsi |
.text.fplib 0x00005704 0x18 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(floatsisf.o) |
0x00005708 __floatsisf |
0x00005704 __floatunssisf |
.text.fplib 0x0000571c 0x44 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) |
0x0000571c __lesf2 |
0x0000571c __nesf2 |
0x00005722 __gtsf2 |
0x0000571c __eqsf2 |
0x00005728 __cmpsf2 |
0x0000571c __ltsf2 |
0x00005722 __gesf2 |
.text.fplib 0x00005760 0x3a c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_merge.o) |
0x0000576a __fp_merge |
.text.fplib 0x0000579a 0x6 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_nan.o) |
0x0000579a __fp_nanERANGE |
0x0000579a __fp_nan |
0x0000579a __fp_nanEDOM |
0x0000579a __fp_nanx |
.text.fplib 0x000057a0 0x52 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_split.o) |
0x000057a0 __fp_split3 |
0x000057a6 __fp_split2 |
0x000057b8 __fp_split1 |
0x000057d4 __fp_split_a |
.text.fplib 0x000057f2 0xa c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_zero.o) |
0x000057f2 __fp_zero |
0x000057f8 __fp_zerox |
.text.fplib 0x000057fc 0x6 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3.o) |
0x000057fc __mulsf3 |
.text.fplib 0x00005802 0x8a c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3x.o) |
0x00005802 __mulsf3x |
.text.fplib 0x0000588c 0x7c c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(sqrt.o) |
0x0000588c sqrt |
.text.fplib 0x00005908 0x24 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(ldexp.o) |
0x00005908 ldexp |
.text.fplib 0x0000592c 0xa c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_m_inf.o) |
0x0000592c __fp_m_inf |
.text.fplib 0x00005936 0xa c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_p_inf.o) |
0x00005936 __fp_p_inf |
.text.libgcc 0x00005940 0x3e c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_mulsi3.o) |
0x00005940 __mulsi3 |
.text.libgcc 0x0000597e 0x28 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_udivmodhi4.o) |
0x0000597e __udivmodhi4 |
.text.libgcc 0x000059a6 0x26 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodhi4.o) |
0x000059a6 __divmodhi4 |
0x000059a6 _div |
.text.libgcc 0x000059cc 0x44 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_udivmodsi4.o) |
0x000059cc __udivmodsi4 |
.text.libgcc 0x00005a10 0x36 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodsi4.o) |
0x00005a10 __divmodsi4 |
.text.libgcc 0x00005a46 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_exit.o) |
.text.libgcc 0x00005a46 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_copy_data.o) |
.text.libgcc 0x00005a46 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_clear_bss.o) |
.text.eeprom 0x00005a46 0x10 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_rb.1F2021.o) |
0x00005a46 __eeprom_read_byte_1F2021 |
.text.eeprom 0x00005a56 0x18 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_wb.1F2021.o) |
0x00005a56 __eeprom_write_byte_1F2021 |
0x00005a6e . = ALIGN (0x2) |
*(.fini9) |
.fini9 0x00005a6e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_exit.o) |
0x00005a6e exit |
0x00005a6e _exit |
*(.fini9) |
*(.fini8) |
*(.fini8) |
*(.fini7) |
*(.fini7) |
*(.fini6) |
*(.fini6) |
*(.fini5) |
*(.fini5) |
*(.fini4) |
*(.fini4) |
*(.fini3) |
*(.fini3) |
*(.fini2) |
*(.fini2) |
*(.fini1) |
*(.fini1) |
*(.fini0) |
.fini0 0x00005a6e 0x2 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_exit.o) |
*(.fini0) |
0x00005a70 _etext = . |
.data 0x00800100 0x8e load address 0x00005a70 |
0x00800100 PROVIDE (__data_start, .) |
*(.data) |
.data 0x00800100 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
.data 0x00800100 0x0 main.o |
.data 0x00800100 0x2 uart.o |
0x00800101 PcZugriff |
0x00800100 UebertragungAbgeschlossen |
.data 0x00800102 0x0 printf_P.o |
.data 0x00800102 0x2 timer0.o |
.data 0x00800104 0x8 analog.o |
0x00800104 UBat |
0x0080010a MessLuftdruck |
0x00800106 Luftdruck |
.data 0x0080010c 0x5b menu.o |
0x0080010c Array |
0x00800116 DisplayBuff |
.data 0x00800167 0x0 twimaster.o |
.data 0x00800167 0x1 rc.o |
0x00800167 NewPpmData |
.data 0x00800168 0x22 fc.o |
0x0080017c Ki |
0x00800180 Parameter_Luftdruck_D |
0x00800184 Parameter_KompassWirkung |
0x00800189 Parameter_ServoNickControl |
0x00800185 Parameter_Gyro_P |
0x00800182 Parameter_Hoehe_P |
0x00800183 Parameter_Hoehe_ACC_Wirkung |
0x00800186 Parameter_Gyro_I |
0x00800181 Parameter_MaxHoehe |
0x00800188 Parameter_I_Faktor |
0x00800178 Kp |
0x00800187 Parameter_Gier_P |
.data 0x0080018a 0x4 GPS.o |
0x0080018c gpsmax |
0x0080018a gps_getpos |
.data 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3.o) |
.data 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3x.o) |
.data 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3.o) |
.data 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3x.o) |
.data 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fixsfsi.o) |
.data 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(floatsisf.o) |
.data 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) |
.data 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_merge.o) |
.data 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_nan.o) |
.data 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_split.o) |
.data 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_zero.o) |
.data 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3.o) |
.data 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3x.o) |
.data 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(sqrt.o) |
.data 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(ldexp.o) |
.data 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_m_inf.o) |
.data 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_p_inf.o) |
.data 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_mulsi3.o) |
.data 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_udivmodhi4.o) |
.data 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodhi4.o) |
.data 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_udivmodsi4.o) |
.data 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodsi4.o) |
.data 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_exit.o) |
.data 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_copy_data.o) |
.data 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_clear_bss.o) |
.data 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(memchr.o) |
.data 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_rb.1F2021.o) |
.data 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_wb.1F2021.o) |
*(.data*) |
*(.rodata) |
*(.rodata*) |
*(.gnu.linkonce.d*) |
0x0080018e . = ALIGN (0x2) |
0x0080018e _edata = . |
0x0080018e PROVIDE (__data_end, .) |
.bss 0x0080018e 0x42f |
0x0080018e PROVIDE (__bss_start, .) |
*(.bss) |
.bss 0x0080018e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
.bss 0x0080018e 0x0 main.o |
.bss 0x0080018e 0x18 uart.o |
0x0080018e DebugGetAnforderung |
0x00800192 SioTmp |
0x00800197 PC_DebugTimeout |
0x00800191 GetVersionAnforderung |
0x00800194 NeueKoordinateEmpfangen |
0x00800190 DebugDataAnforderung |
0x00800198 MotorTest |
0x00800193 NeuerDatensatzEmpfangen |
0x0080018f DebugDisplayAnforderung |
0x00800195 CntCrcError |
0x00800196 AnzahlEmpfangsBytes |
.bss 0x008001a6 0x0 printf_P.o |
.bss 0x008001a6 0xc timer0.o |
0x008001ab beeptime |
0x008001a6 CountMilliseconds |
0x008001a9 cntKompass |
0x008001a8 UpdateMotor |
0x008001ad ServoValue |
.bss 0x008001b2 0x18 analog.o |
0x008001c4 HoeheD |
0x008001b6 AccumulateGier |
0x008001c1 messanzahl_AccNick |
0x008001c3 messanzahl_AccHoch |
0x008001b4 AccumulateRoll |
0x008001c6 ZaehlMessungen |
0x008001bc accumulate_AccHoch |
0x008001c2 messanzahl_AccRoll |
0x008001b8 accumulate_AccRoll |
0x008001be MessanzahlNick |
0x008001c0 MessanzahlGier |
0x008001ba accumulate_AccNick |
0x008001b2 AccumulateNick |
0x008001bf MessanzahlRoll |
.bss 0x008001ca 0x5 menu.o |
0x008001cc DispPtr |
0x008001cd RemoteTasten |
0x008001ca TestInt |
.bss 0x008001cf 0x3 twimaster.o |
0x008001cf twi_state |
0x008001d1 motorread |
0x008001d0 motor |
.bss 0x008001d2 0x4 rc.o |
.bss 0x008001d6 0x86 fc.o |
0x0080020f Mess_Integral_Gier2 |
0x0080022c StickGier |
0x008001ff Mess_IntegralNick2 |
0x008001eb IntegralNick2 |
0x00800227 SenderOkay |
0x008001f7 Integral_Gier |
0x00800228 StickNick |
0x00800221 Poti2 |
0x0080022e MotorenEin |
0x008001e5 CosinusNickWinkel |
0x0080022f HoehenWert |
0x00800207 Mess_IntegralRoll2 |
0x00800223 Poti3 |
0x00800233 Parameter_UserParam1 |
0x008001d9 AdNeutralRoll |
0x0080021d Notlandung |
0x008001e7 IntegralNick |
0x00800213 Mess_Integral_Hoch |
0x008001dd NeutralAccX |
0x0080020b Mess_Integral_Gier |
0x00800236 Parameter_UserParam4 |
0x00800219 KompassStartwert |
0x00800234 Parameter_UserParam2 |
0x00800217 KompassValue |
0x0080021b KompassRichtung |
0x00800203 Mess_IntegralRoll |
0x0080022a StickRoll |
0x008001d7 AdNeutralNick |
0x008001df NeutralAccY |
0x008001e1 NeutralAccZ |
0x008001d6 Timeout |
0x008001f3 IntegralRoll2 |
0x0080021f Poti1 |
0x00800235 Parameter_UserParam3 |
0x008001db AdNeutralGier |
0x008001e6 CosinusRollWinkel |
0x0080021e HoehenReglerAktiv |
0x00800231 SollHoehe |
0x00800225 Poti4 |
0x008001fb Mess_IntegralNick |
0x008001ef IntegralRoll |
.bss 0x0080025c 0x34 GPS.o |
0x0080027a zwn2 |
0x00800286 gps_home_y |
0x0080025c target_x |
0x00800282 gps_home_x |
0x00800264 target_z |
0x00800260 target_y |
0x0080028a komp_dreh |
0x0080028c GPS_Nick |
0x0080026e zwe |
0x00800272 zwn1 |
0x00800276 zwe1 |
0x0080027e zwe2 |
0x0080028e GPS_Roll |
0x0080026a zwn |
0x00800268 alpha |
.bss 0x00800290 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3.o) |
.bss 0x00800290 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3x.o) |
.bss 0x00800290 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3.o) |
.bss 0x00800290 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3x.o) |
.bss 0x00800290 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fixsfsi.o) |
.bss 0x00800290 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(floatsisf.o) |
.bss 0x00800290 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) |
.bss 0x00800290 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_merge.o) |
.bss 0x00800290 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_nan.o) |
.bss 0x00800290 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_split.o) |
.bss 0x00800290 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_zero.o) |
.bss 0x00800290 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3.o) |
.bss 0x00800290 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3x.o) |
.bss 0x00800290 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(sqrt.o) |
.bss 0x00800290 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(ldexp.o) |
.bss 0x00800290 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_m_inf.o) |
.bss 0x00800290 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_p_inf.o) |
.bss 0x00800290 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_mulsi3.o) |
.bss 0x00800290 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_udivmodhi4.o) |
.bss 0x00800290 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodhi4.o) |
.bss 0x00800290 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_udivmodsi4.o) |
.bss 0x00800290 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodsi4.o) |
.bss 0x00800290 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_exit.o) |
.bss 0x00800290 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_copy_data.o) |
.bss 0x00800290 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_clear_bss.o) |
.bss 0x00800290 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(memchr.o) |
.bss 0x00800290 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_rb.1F2021.o) |
.bss 0x00800290 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_wb.1F2021.o) |
*(.bss*) |
*(COMMON) |
COMMON 0x00800290 0x21 main.o |
0x00800290 durchschnitt_easting |
0x00800294 DiffRoll |
0x00800296 Motor_Vorne |
0x00800297 Motor_Hinten |
0x00800298 DiffNick |
0x0080029a Motor_Rechts |
0x0080029b Count |
0x0080029c durchschnitt_northing |
0x008002a0 skal |
0x008002a2 gps_p |
0x008002a4 gps_d |
0x008002a6 Motor_Links |
0x008002a7 s |
0x008002a8 h |
0x008002a9 gps_gethome |
0x008002ab m |
0x008002ac MotorWert |
COMMON 0x008002b1 0x275 uart.o |
0x008002b1 ubxEp |
0x008002b3 MeineSlaveAdresse |
0x008002b4 CK_A |
0x008002b5 SendeBuffer |
0x0080034b NMEABuffer |
0x008003e1 Debug_Timer |
0x008003e3 CK_B |
0x008003e4 navStatus |
0x008003f5 DebugIn |
0x00800400 VersionInfo |
0x0080040a rollOffset |
0x0080040e ubxP |
0x00800410 navVelECEF |
0x00800425 RxdBuffer |
0x008004bb ubxSp |
0x008004bd msgLen |
0x008004bf nickOffset |
0x008004c3 navPosECEF |
0x008004d8 DebugOut |
0x0080050a actualPos |
0x00800524 msgID |
0x00800525 ignorePacket |
COMMON 0x00800526 0x1 printf_P.o |
0x00800526 PrintZiel |
COMMON 0x00800527 0x12 analog.o |
0x00800527 Aktuell_ay |
0x00800529 Aktuell_az |
0x0080052b StartLuftdruck |
0x0080052d Aktuell_Nick |
0x0080052f messanzahl_Druck |
0x00800530 Aktuell_Roll |
0x00800532 Aktuell_ax |
0x00800534 DruckOffsetSetting |
0x00800535 Aktuell_Gier |
0x00800537 tmpLuftdruck |
COMMON 0x00800539 0x8 twimaster.o |
0x00800539 motor_rx |
COMMON 0x00800541 0x2c rc.o |
0x00800541 PPM_in |
0x00800557 PPM_diff |
COMMON 0x0080056d 0x50 fc.o |
0x0080056d EE_Parameter |
0x008005a7 MesswertRoll |
0x008005a9 MesswertNick |
0x008005ab MIN_GAS |
0x008005ac Mittelwert_AccHoch |
0x008005ae IntegralFaktor |
0x008005b2 Mittelwert_AccNick |
0x008005b4 MAX_GAS |
0x008005b5 MesswertGier |
0x008005b7 GyroFaktor |
0x008005bb Mittelwert_AccRoll |
0x008005bd PROVIDE (__bss_end, .) |
0x00005a70 __data_load_start = LOADADDR (.data) |
0x00005afe __data_load_end = (__data_load_start + SIZEOF (.data)) |
.noinit 0x008005bd 0x0 |
0x008005bd PROVIDE (__noinit_start, .) |
*(.noinit*) |
0x008005bd PROVIDE (__noinit_end, .) |
0x008005bd _end = . |
0x008005bd PROVIDE (__heap_start, .) |
.eeprom 0x00810000 0x800 |
*(.eeprom*) |
.eeprom 0x00810000 0x800 main.o |
0x00810000 EEPromArray |
0x00810800 __eeprom_end = . |
.stab 0x00000000 0x378 |
*(.stab) |
.stab 0x00000000 0x378 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
.stabstr 0x00000000 0x71 |
*(.stabstr) |
.stabstr 0x00000000 0x71 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
.stab.excl |
*(.stab.excl) |
.stab.exclstr |
*(.stab.exclstr) |
.stab.index |
*(.stab.index) |
.stab.indexstr |
*(.stab.indexstr) |
.comment |
*(.comment) |
.debug |
*(.debug) |
.line |
*(.line) |
.debug_srcinfo |
*(.debug_srcinfo) |
.debug_sfnames |
*(.debug_sfnames) |
.debug_aranges |
*(.debug_aranges) |
.debug_pubnames |
*(.debug_pubnames) |
.debug_info |
*(.debug_info) |
*(.gnu.linkonce.wi.*) |
.debug_abbrev |
*(.debug_abbrev) |
.debug_line |
*(.debug_line) |
.debug_frame |
*(.debug_frame) |
.debug_str |
*(.debug_str) |
.debug_loc |
*(.debug_loc) |
.debug_macinfo |
*(.debug_macinfo) |
OUTPUT(Flight-Ctrl_MEGA644_V0_60.elf elf32-avr) |
LOAD linker stubs |
Cross Reference Table |
Symbol File |
ADC_Init analog.o |
main.o |
AccumulateGier analog.o |
fc.o |
menu.o |
AccumulateNick analog.o |
fc.o |
menu.o |
AccumulateRoll analog.o |
fc.o |
menu.o |
AdNeutralGier fc.o |
rc.o |
menu.o |
analog.o |
AdNeutralNick fc.o |
rc.o |
menu.o |
analog.o |
AdNeutralRoll fc.o |
rc.o |
menu.o |
analog.o |
AddCRC uart.o |
Aktuell_Gier analog.o |
Aktuell_Nick analog.o |
Aktuell_Roll analog.o |
Aktuell_ax analog.o |
Aktuell_ay analog.o |
Aktuell_az fc.o |
menu.o |
analog.o |
AnzahlEmpfangsBytes uart.o |
Array menu.o |
BearbeiteRxDaten uart.o |
main.o |
CK_A uart.o |
CK_B uart.o |
CalibrierMittelwert fc.o |
CheckDelay timer0.o |
fc.o |
uart.o |
main.o |
CntCrcError uart.o |
CosinusNickWinkel fc.o |
GPS.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
CosinusRollWinkel fc.o |
GPS.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
Count GPS.o |
fc.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
CountMilliseconds timer0.o |
DatenUebertragung uart.o |
main.o |
DebugDataAnforderung uart.o |
DebugDisplayAnforderung uart.o |
DebugGetAnforderung uart.o |
DebugIn uart.o |
main.o |
DebugOut fc.o |
timer0.o |
uart.o |
Debug_Timer uart.o |
Decode64 uart.o |
DefaultKonstanten1 fc.o |
main.o |
DefaultKonstanten2 fc.o |
main.o |
Delay_ms timer0.o |
fc.o |
analog.o |
DiffNick GPS.o |
fc.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
DiffRoll GPS.o |
fc.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
DispPtr menu.o |
printf_P.o |
DisplayBuff menu.o |
printf_P.o |
uart.o |
DruckOffsetSetting menu.o |
analog.o |
EEPromArray main.o |
fc.o |
uart.o |
EE_Parameter fc.o |
menu.o |
timer0.o |
uart.o |
main.o |
GPS_Nick GPS.o |
fc.o |
GPS_Roll GPS.o |
fc.o |
GPSscanData uart.o |
GetActiveParamSetNumber main.o |
fc.o |
menu.o |
uart.o |
GetVersionAnforderung uart.o |
GyroFaktor fc.o |
HoeheD analog.o |
fc.o |
HoehenReglerAktiv fc.o |
HoehenWert fc.o |
menu.o |
analog.o |
IntegralFaktor fc.o |
IntegralNick fc.o |
GPS.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
IntegralNick2 fc.o |
GPS.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
IntegralRoll fc.o |
GPS.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
IntegralRoll2 fc.o |
GPS.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
Integral_Gier fc.o |
GPS.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
Ki fc.o |
KompassRichtung fc.o |
menu.o |
timer0.o |
KompassStartwert fc.o |
menu.o |
timer0.o |
KompassValue fc.o |
menu.o |
timer0.o |
Kp fc.o |
LcdClear menu.o |
main.o |
Luftdruck analog.o |
fc.o |
MAX_GAS fc.o |
MIN_GAS fc.o |
MeineSlaveAdresse uart.o |
Menu menu.o |
uart.o |
MessLuftdruck analog.o |
fc.o |
menu.o |
Mess_IntegralNick fc.o |
GPS.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
Mess_IntegralNick2 fc.o |
GPS.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
Mess_IntegralRoll fc.o |
GPS.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
Mess_IntegralRoll2 fc.o |
GPS.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
Mess_Integral_Gier fc.o |
GPS.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
Mess_Integral_Gier2 fc.o |
analog.o |
Mess_Integral_Hoch fc.o |
analog.o |
MessanzahlGier analog.o |
fc.o |
menu.o |
MessanzahlNick analog.o |
fc.o |
menu.o |
MessanzahlRoll analog.o |
fc.o |
menu.o |
MesswertGier fc.o |
MesswertNick fc.o |
MesswertRoll fc.o |
Mittelwert fc.o |
Mittelwert_AccHoch fc.o |
Mittelwert_AccNick fc.o |
Mittelwert_AccRoll fc.o |
MotorRegler fc.o |
main.o |
MotorTest uart.o |
fc.o |
MotorWert GPS.o |
fc.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
Motor_Hinten GPS.o |
fc.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
Motor_Links GPS.o |
fc.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
Motor_Rechts GPS.o |
fc.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
Motor_Vorne GPS.o |
fc.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
MotorenEin fc.o |
GPS.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
NMEABuffer uart.o |
NeueKoordinateEmpfangen uart.o |
NeuerDatensatzEmpfangen uart.o |
NeutralAccX fc.o |
menu.o |
analog.o |
NeutralAccY fc.o |
menu.o |
analog.o |
NeutralAccZ fc.o |
menu.o |
analog.o |
NewPpmData rc.o |
fc.o |
Notlandung fc.o |
PAD_0 printf_P.o |
PAD_SP printf_P.o |
PC_DebugTimeout uart.o |
PPM_diff fc.o |
rc.o |
PPM_in fc.o |
rc.o |
menu.o |
main.o |
PRINT printf_P.o |
PRINTP printf_P.o |
ParameterZuordnung fc.o |
Parameter_Gier_P fc.o |
Parameter_Gyro_I fc.o |
Parameter_Gyro_P fc.o |
Parameter_Hoehe_ACC_Wirkung fc.o |
Parameter_Hoehe_P fc.o |
Parameter_I_Faktor fc.o |
Parameter_KompassWirkung fc.o |
Parameter_Luftdruck_D fc.o |
Parameter_MaxHoehe fc.o |
Parameter_ServoNickControl fc.o |
menu.o |
timer0.o |
Parameter_UserParam1 fc.o |
Parameter_UserParam2 fc.o |
Parameter_UserParam3 fc.o |
Parameter_UserParam4 fc.o |
PcZugriff uart.o |
fc.o |
main.o |
Piep fc.o |
uart.o |
Poti1 fc.o |
GPS.o |
menu.o |
Poti2 fc.o |
menu.o |
Poti3 fc.o |
menu.o |
Poti4 fc.o |
menu.o |
PrintZiel printf_P.o |
Putchar printf_P.o |
ReadParameterSet main.o |
fc.o |
uart.o |
RemoteTasten menu.o |
GPS.o |
fc.o |
rc.o |
twimaster.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
RxdBuffer uart.o |
SendMotorData fc.o |
main.o |
SendOutData uart.o |
SendeBuffer uart.o |
SenderOkay fc.o |
GPS.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
ServoValue timer0.o |
menu.o |
SetDelay timer0.o |
fc.o |
uart.o |
main.o |
SetNeutral fc.o |
main.o |
SioTmp uart.o |
SollHoehe fc.o |
menu.o |
StartLuftdruck fc.o |
analog.o |
StickGier fc.o |
GPS.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
StickNick fc.o |
GPS.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
StickRoll fc.o |
GPS.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
SucheLuftruckOffset analog.o |
fc.o |
main.o |
TestInt menu.o |
Timeout fc.o |
GPS.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
Timer_Init timer0.o |
main.o |
UART_Init uart.o |
main.o |
UBat analog.o |
menu.o |
main.o |
UebertragungAbgeschlossen uart.o |
UpdateMotor timer0.o |
main.o |
VersionInfo uart.o |
main.o |
WriteParameterSet main.o |
uart.o |
WriteProgramData uart.o |
ZaehlMessungen analog.o |
fc.o |
__addsf3 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(sqrt.o) |
fc.o |
analog.o |
__addsf3x c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3x.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3.o) |
__bad_interrupt c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__bss_end c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_clear_bss.o) |
__bss_start c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_clear_bss.o) |
__cmpsf2 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) |
__data_end c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_copy_data.o) |
__data_load_start c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_copy_data.o) |
__data_start c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_copy_data.o) |
__divmodhi4 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodhi4.o) |
fc.o |
rc.o |
menu.o |
analog.o |
timer0.o |
__divmodsi4 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodsi4.o) |
GPS.o |
fc.o |
menu.o |
analog.o |
timer0.o |
__divsf3 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(sqrt.o) |
GPS.o |
fc.o |
__divsf3x c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3x.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3.o) |
__do_clear_bss c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_clear_bss.o) |
GPS.o |
fc.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
__do_copy_data c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_copy_data.o) |
GPS.o |
fc.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
__eeprom_read_byte_1F2021 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_rb.1F2021.o) |
main.o |
__eeprom_write_byte_1F2021 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_wb.1F2021.o) |
fc.o |
uart.o |
main.o |
__eqsf2 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) |
__fixsfsi c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fixsfsi.o) |
GPS.o |
fc.o |
menu.o |
analog.o |
__fixunssfsi c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fixsfsi.o) |
__floatsisf c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(floatsisf.o) |
GPS.o |
fc.o |
analog.o |
__floatunssisf c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(floatsisf.o) |
__fp_lneg c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fixsfsi.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(floatsisf.o) |
__fp_m_inf c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_m_inf.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(ldexp.o) |
__fp_merge c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_merge.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(ldexp.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(sqrt.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(floatsisf.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3.o) |
__fp_nan c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_nan.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_split.o) |
__fp_nanEDOM c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_nan.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(sqrt.o) |
__fp_nanERANGE c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_nan.o) |
__fp_nanx c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_nan.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3x.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3x.o) |
__fp_p_inf c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_p_inf.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(ldexp.o) |
__fp_split1 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_split.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fixsfsi.o) |
__fp_split2 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_split.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) |
__fp_split3 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_split.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3.o) |
__fp_split_a c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_split.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(ldexp.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(sqrt.o) |
__fp_zero c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_zero.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(ldexp.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_merge.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fixsfsi.o) |
__fp_zerox c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_zero.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3x.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3x.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3x.o) |
__gesf2 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) |
__gtsf2 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) |
analog.o |
__heap_end c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__init c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__lesf2 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) |
__ltsf2 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) |
fc.o |
analog.o |
__mulsf3 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3.o) |
GPS.o |
fc.o |
__mulsf3x c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3x.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3.o) |
__mulsi3 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_mulsi3.o) |
GPS.o |
fc.o |
timer0.o |
__nesf2 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) |
__stack c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__subsf3 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3.o) |
GPS.o |
analog.o |
__udivmodhi4 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_udivmodhi4.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodhi4.o) |
analog.o |
__udivmodsi4 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_udivmodsi4.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodsi4.o) |
printf_P.o |
__vector_1 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_10 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_11 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_12 rc.o |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_13 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_14 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_15 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_16 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_17 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_18 timer0.o |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_19 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_2 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_20 uart.o |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_21 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_22 uart.o |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_23 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_24 analog.o |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_25 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_26 twimaster.o |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_27 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_3 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_4 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_5 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_6 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_7 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_8 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_9 timer0.o |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_default c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vectors c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
_div c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodhi4.o) |
_exit c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_exit.o) |
_printf_P printf_P.o |
menu.o |
analog.o |
main.o |
accumulate_AccHoch analog.o |
fc.o |
accumulate_AccNick analog.o |
fc.o |
menu.o |
accumulate_AccRoll analog.o |
fc.o |
menu.o |
actualPos GPS.o |
uart.o |
alpha GPS.o |
beeptime timer0.o |
GPS.o |
fc.o |
main.o |
cntKompass timer0.o |
durchschnitt_easting GPS.o |
fc.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
durchschnitt_northing GPS.o |
fc.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
exit c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_exit.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
gps_d GPS.o |
fc.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
gps_gethome GPS.o |
fc.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
gps_getpos GPS.o |
gps_home_x GPS.o |
gps_home_y GPS.o |
gps_main GPS.o |
fc.o |
gps_p GPS.o |
fc.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
gpsmax GPS.o |
h GPS.o |
fc.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
i2c_init twimaster.o |
main.o |
i2c_start twimaster.o |
fc.o |
i2c_stop twimaster.o |
i2c_write_byte twimaster.o |
ignorePacket uart.o |
komp_dreh GPS.o |
ldexp c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(ldexp.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(sqrt.o) |
m GPS.o |
fc.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
main main.o |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
memchr c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(memchr.o) |
printf_P.o |
messanzahl_AccHoch analog.o |
fc.o |
messanzahl_AccNick analog.o |
fc.o |
menu.o |
messanzahl_AccRoll analog.o |
fc.o |
menu.o |
messanzahl_Druck analog.o |
motor twimaster.o |
fc.o |
motor_rx twimaster.o |
motorread twimaster.o |
msgID uart.o |
msgLen uart.o |
navPosECEF uart.o |
navStatus uart.o |
navVelECEF uart.o |
nickOffset uart.o |
rc_sum_init rc.o |
main.o |
rollOffset uart.o |
s GPS.o |
fc.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
skal GPS.o |
fc.o |
rc.o |
twimaster.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
sqrt c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(sqrt.o) |
GPS.o |
target_x GPS.o |
target_y GPS.o |
target_z GPS.o |
tmpLuftdruck analog.o |
twi_state twimaster.o |
fc.o |
uart_putchar uart.o |
printf_P.o |
ubxEp uart.o |
ubxP uart.o |
ubxSp uart.o |
zwe GPS.o |
zwe1 GPS.o |
zwe2 GPS.o |
zwn GPS.o |
zwn1 GPS.o |
zwn2 GPS.o |
/branches/chris_hallo2/Flight-Ctrl_MEGA644_V0_60.sym |
---|
0,0 → 1,477 |
00000000 W __heap_end |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 W __vector_default |
00000000 T __vectors |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
00000070 t __c.2018 |
00000074 t __c.2016 |
0000007c t __c.2014 |
00000088 t __c.2012 |
00000096 t __c.2010 |
0000009b t __c.2005 |
000000b8 t __c.2003 |
000000d3 t __c.1995 |
00000102 t __c.1993 |
00000123 t __c.1991 |
0000013b t __c.1990 |
0000013d t __c.2072 |
0000014b t __c.2070 |
00000159 t __c.2068 |
00000167 t __c.2066 |
0000016f t __c.2063 |
0000017b t __c.2061 |
00000187 t __c.2059 |
00000193 t __c.2057 |
0000019f t __c.2054 |
000001ae t __c.2052 |
000001bd t __c.2050 |
000001cc t __c.2048 |
000001db t __c.2045 |
000001ea t __c.2043 |
000001f9 t __c.2040 |
00000208 t __c.2038 |
00000217 t __c.2036 |
00000226 t __c.2034 |
00000233 t __c.2031 |
00000242 t __c.2029 |
00000251 t __c.2027 |
00000260 t __c.2025 |
0000026e t __c.2022 |
0000027e t __c.2020 |
0000028e t __c.2018 |
0000029e t __c.2016 |
000002ae t __c.2013 |
000002be t __c.2011 |
000002ce t __c.2009 |
000002de t __c.2007 |
000002ee t __c.2004 |
000002fd t __c.2002 |
0000030c t __c.2000 |
0000031b t __c.1998 |
00000325 t __c.1995 |
00000333 t __c.1993 |
0000033a t __c.1991 |
00000349 t __c.1989 |
00000358 t __c.1987 |
00000367 t __c.1985 |
00000376 t __c.1981 |
00000386 t __c.1979 |
00000393 t __c.1977 |
0000039a t __c.1975 |
000003ac t __c.1972 |
000003b2 T __ctors_end |
000003b2 T __ctors_start |
000003b2 T __dtors_end |
000003b2 T __dtors_start |
000003b2 W __init |
000003b2 T __trampolines_end |
000003b2 T __trampolines_start |
000003be T __do_copy_data |
000003ca t .do_copy_data_loop |
000003ce t .do_copy_data_start |
000003d4 T __do_clear_bss |
000003dc t .do_clear_bss_loop |
000003de t .do_clear_bss_start |
000003ec T __bad_interrupt |
000003ec W __vector_1 |
000003ec W __vector_10 |
000003ec W __vector_11 |
000003ec W __vector_13 |
000003ec W __vector_14 |
000003ec W __vector_15 |
000003ec W __vector_16 |
000003ec W __vector_17 |
000003ec W __vector_19 |
000003ec W __vector_2 |
000003ec W __vector_21 |
000003ec W __vector_23 |
000003ec W __vector_25 |
000003ec W __vector_27 |
000003ec W __vector_3 |
000003ec W __vector_4 |
000003ec W __vector_5 |
000003ec W __vector_6 |
000003ec W __vector_7 |
000003ec W __vector_8 |
000003f0 T GetActiveParamSetNumber |
000003fe T WriteParameterSet |
00000416 t .26_start |
00000422 t .26_finished |
0000042e T ReadParameterSet |
00000448 t .44_start |
00000454 t .44_finished |
0000045a T main |
00000724 T __vector_22 |
00000790 T GPSscanData |
00000886 T __vector_20 |
00000c5a T AddCRC |
00000cb6 T SendOutData |
00000d86 T Decode64 |
00000e36 T uart_putchar |
00000e58 T WriteProgramData |
00000e5a T UART_Init |
00000e94 T DatenUebertragung |
00000f70 T BearbeiteRxDaten |
000010d4 T Putchar |
000010ff W __stack |
00001106 T PAD_0 |
0000111c T PAD_SP |
00001132 T PRINTP |
0000115e T PRINT |
00001186 T _printf_P |
000016ce T __vector_18 |
000017f6 T SetDelay |
00001808 T CheckDelay |
00001820 T __vector_9 |
0000197a T Timer_Init |
000019c8 T Delay_ms |
000019ec T ADC_Init |
000019f8 T __vector_24 |
00002040 T SucheLuftruckOffset |
0000208e T LcdClear |
000020a0 T Menu |
00002828 T i2c_init |
00002834 T i2c_start |
00002840 T i2c_stop |
00002848 T i2c_write_byte |
0000285c T __vector_26 |
00002998 T rc_sum_init |
000029c2 T __vector_12 |
00002b00 T Mittelwert |
00003082 T CalibrierMittelwert |
000033ba T ParameterZuordnung |
00003854 T DefaultKonstanten2 |
0000392e T DefaultKonstanten1 |
00003a10 T SendMotorData |
00003a9e T SetNeutral |
00003c96 T Piep |
00003cc0 T MotorRegler |
00005254 T gps_main |
000055a2 T memchr |
000055bc T __subsf3 |
000055be T __addsf3 |
000055c6 T __addsf3x |
00005642 T __divsf3 |
00005648 T __divsf3x |
000056ce T __fixsfsi |
000056ce T __fixunssfsi |
000056f4 T __fp_lneg |
00005704 T __floatunssisf |
00005708 T __floatsisf |
0000571c T __eqsf2 |
0000571c T __lesf2 |
0000571c T __ltsf2 |
0000571c T __nesf2 |
00005722 T __gesf2 |
00005722 T __gtsf2 |
00005728 T __cmpsf2 |
0000573a t .fp_cmp |
0000576a T __fp_merge |
0000579a T __fp_nan |
0000579a T __fp_nanEDOM |
0000579a T __fp_nanERANGE |
0000579a T __fp_nanx |
000057a0 T __fp_split3 |
000057a6 T __fp_split2 |
000057b8 T __fp_split1 |
000057d4 T __fp_split_a |
000057f2 T __fp_zero |
000057f8 T __fp_zerox |
000057fc T __mulsf3 |
00005802 T __mulsf3x |
0000588c T sqrt |
00005908 T ldexp |
0000592c T __fp_m_inf |
00005936 T __fp_p_inf |
00005940 T __mulsi3 |
0000597e T __udivmodhi4 |
00005986 t __udivmodhi4_loop |
00005994 t __udivmodhi4_ep |
000059a6 T __divmodhi4 |
000059a6 T _div |
000059ba t __divmodhi4_neg2 |
000059c0 t __divmodhi4_exit |
000059c2 t __divmodhi4_neg1 |
000059cc T __udivmodsi4 |
000059d8 t __udivmodsi4_loop |
000059f2 t __udivmodsi4_ep |
00005a10 T __divmodsi4 |
00005a24 t __divmodsi4_neg2 |
00005a32 t __divmodsi4_exit |
00005a34 t __divmodsi4_neg1 |
00005a46 T __eeprom_read_byte_1F2021 |
00005a56 T __eeprom_write_byte_1F2021 |
00005a6e t __stop_program |
00005a6e T _exit |
00005a6e W exit |
00005a70 A __data_load_start |
00005a70 T _etext |
00005afe A __data_load_end |
00800100 D __data_start |
00800100 D UebertragungAbgeschlossen |
00800101 D PcZugriff |
00800102 d timer.2061 |
00800103 d cnt_1ms.1974 |
00800104 D UBat |
00800106 D Luftdruck |
0080010a D MessLuftdruck |
0080010c D Array |
00800116 D DisplayBuff |
00800166 d MaxMenue.1970 |
00800167 D NewPpmData |
00800178 D Kp |
0080017c D Ki |
00800180 D Parameter_Luftdruck_D |
00800181 D Parameter_MaxHoehe |
00800182 D Parameter_Hoehe_P |
00800183 D Parameter_Hoehe_ACC_Wirkung |
00800184 D Parameter_KompassWirkung |
00800185 D Parameter_Gyro_P |
00800186 D Parameter_Gyro_I |
00800187 D Parameter_Gier_P |
00800188 D Parameter_I_Faktor |
00800189 D Parameter_ServoNickControl |
0080018a D gps_getpos |
0080018c D gpsmax |
0080018e B __bss_start |
0080018e D __data_end |
0080018e D _edata |
0080018e B DebugGetAnforderung |
0080018f B DebugDisplayAnforderung |
00800190 B DebugDataAnforderung |
00800191 B GetVersionAnforderung |
00800192 B SioTmp |
00800193 B NeuerDatensatzEmpfangen |
00800194 B NeueKoordinateEmpfangen |
00800195 B CntCrcError |
00800196 B AnzahlEmpfangsBytes |
00800197 B PC_DebugTimeout |
00800198 B MotorTest |
0080019c b dis_zeile.2372 |
0080019d b UartState.2055 |
0080019e b buf_ptr.2054 |
0080019f b crc2.2053 |
008001a0 b crc1.2052 |
008001a1 b crc.2051 |
008001a3 b ptr.2021 |
008001a5 b gpsState |
008001a6 B CountMilliseconds |
008001a8 B UpdateMotor |
008001a9 B cntKompass |
008001ab B beeptime |
008001ad B ServoValue |
008001af b cnt.1975 |
008001b0 b tim_main |
008001b2 B AccumulateNick |
008001b4 B AccumulateRoll |
008001b6 B AccumulateGier |
008001b8 B accumulate_AccRoll |
008001ba B accumulate_AccNick |
008001bc B accumulate_AccHoch |
008001be B MessanzahlNick |
008001bf B MessanzahlRoll |
008001c0 B MessanzahlGier |
008001c1 B messanzahl_AccNick |
008001c2 B messanzahl_AccRoll |
008001c3 B messanzahl_AccHoch |
008001c4 B HoeheD |
008001c6 B ZaehlMessungen |
008001c8 b state.2005 |
008001c9 b kanal.2004 |
008001ca B TestInt |
008001cc B DispPtr |
008001cd B RemoteTasten |
008001ce b MenuePunkt.1971 |
008001cf B twi_state |
008001d0 B motor |
008001d1 B motorread |
008001d2 b index.1971 |
008001d4 b AltICR.1969 |
008001d6 B Timeout |
008001d7 B AdNeutralNick |
008001d9 B AdNeutralRoll |
008001db B AdNeutralGier |
008001dd B NeutralAccX |
008001df B NeutralAccY |
008001e1 B NeutralAccZ |
008001e5 B CosinusNickWinkel |
008001e6 B CosinusRollWinkel |
008001e7 B IntegralNick |
008001eb B IntegralNick2 |
008001ef B IntegralRoll |
008001f3 B IntegralRoll2 |
008001f7 B Integral_Gier |
008001fb B Mess_IntegralNick |
008001ff B Mess_IntegralNick2 |
00800203 B Mess_IntegralRoll |
00800207 B Mess_IntegralRoll2 |
0080020b B Mess_Integral_Gier |
0080020f B Mess_Integral_Gier2 |
00800213 B Mess_Integral_Hoch |
00800217 B KompassValue |
00800219 B KompassStartwert |
0080021b B KompassRichtung |
0080021d B Notlandung |
0080021e B HoehenReglerAktiv |
0080021f B Poti1 |
00800221 B Poti2 |
00800223 B Poti3 |
00800225 B Poti4 |
00800227 B SenderOkay |
00800228 B StickNick |
0080022a B StickRoll |
0080022c B StickGier |
0080022e B MotorenEin |
0080022f B HoehenWert |
00800231 B SollHoehe |
00800233 B Parameter_UserParam1 |
00800234 B Parameter_UserParam2 |
00800235 B Parameter_UserParam3 |
00800236 B Parameter_UserParam4 |
00800237 b SignalSchlecht.2366 |
00800239 b NeueKompassRichtungMerken.2362 |
0080023a b TimerWerteausgabe.2361 |
0080023b b hoehenregler.2360 |
0080023d b modell_fliegt.2359 |
0080023f b delay_ausschalten.2358 |
00800240 b delay_einschalten.2357 |
00800241 b delay_neutral.2356 |
00800242 b RcLostTimer.2355 |
00800244 b IntegralFehlerRoll.2354 |
00800246 b IntegralFehlerNick.2353 |
00800248 b tmp_long2.2352 |
0080024c b tmp_long.2351 |
00800250 b sollGier.2350 |
00800254 b SummeRoll.2349 |
00800258 b SummeNick.2348 |
0080025c B target_x |
00800260 B target_y |
00800264 B target_z |
00800268 B alpha |
0080026a B zwn |
0080026e B zwe |
00800272 B zwn1 |
00800276 B zwe1 |
0080027a B zwn2 |
0080027e B zwe2 |
00800282 B gps_home_x |
00800286 B gps_home_y |
0080028a B komp_dreh |
0080028c B GPS_Nick |
0080028e B GPS_Roll |
00800290 B durchschnitt_easting |
00800294 B DiffRoll |
00800296 B Motor_Vorne |
00800297 B Motor_Hinten |
00800298 B DiffNick |
0080029a B Motor_Rechts |
0080029b B Count |
0080029c B durchschnitt_northing |
008002a0 B skal |
008002a2 B gps_p |
008002a4 B gps_d |
008002a6 B Motor_Links |
008002a7 B s |
008002a8 B h |
008002a9 B gps_gethome |
008002ab B m |
008002ac B MotorWert |
008002b1 B ubxEp |
008002b3 B MeineSlaveAdresse |
008002b4 B CK_A |
008002b5 B SendeBuffer |
0080034b B NMEABuffer |
008003e1 B Debug_Timer |
008003e3 B CK_B |
008003e4 B navStatus |
008003f5 B DebugIn |
00800400 B VersionInfo |
0080040a B rollOffset |
0080040e B ubxP |
00800410 B navVelECEF |
00800425 B RxdBuffer |
008004bb B ubxSp |
008004bd B msgLen |
008004bf B nickOffset |
008004c3 B navPosECEF |
008004d8 B DebugOut |
0080050a B actualPos |
00800524 B msgID |
00800525 B ignorePacket |
00800526 B PrintZiel |
00800527 B Aktuell_ay |
00800529 B Aktuell_az |
0080052b B StartLuftdruck |
0080052d B Aktuell_Nick |
0080052f B messanzahl_Druck |
00800530 B Aktuell_Roll |
00800532 B Aktuell_ax |
00800534 B DruckOffsetSetting |
00800535 B Aktuell_Gier |
00800537 B tmpLuftdruck |
00800539 B motor_rx |
00800541 B PPM_in |
00800557 B PPM_diff |
0080056d B EE_Parameter |
008005a7 B MesswertRoll |
008005a9 B MesswertNick |
008005ab B MIN_GAS |
008005ac B Mittelwert_AccHoch |
008005ae B IntegralFaktor |
008005b2 B Mittelwert_AccNick |
008005b4 B MAX_GAS |
008005b5 B MesswertGier |
008005b7 B GyroFaktor |
008005bb B Mittelwert_AccRoll |
008005bd B __bss_end |
008005bd A _end |
00810000 D EEPromArray |
00810800 D __eeprom_end |
/branches/chris_hallo2/GPS.c |
---|
0,0 → 1,89 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 08.2007 by Christopher Hartmann / Daniel Schmitz |
// + |
// + Bitte die read_me Datei beachten! Es handelt sich hierbei um eine erste Probeversion! |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "math.h" |
// GPS feste Variablen++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//volatile int loop = 0; |
//long gps_northing = 0, gps_easting = 0, gps_altitude = 0; |
long target_x = 0, target_y = 0, target_z = 0; |
volatile int alpha = 0; |
long zwn = 0, zwe = 0, zwn1 = 0, zwe1 = 0, zwn2 = 0, zwe2 = 0; |
volatile int gps_getpos = 5; |
long gps_home_x = 0; |
long gps_home_y = 0; |
// GPS Einstellungen +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
volatile int komp_dreh = 0; // verdrehten Kompasseinbau kompensieren (+/-Grad) |
volatile int gpsmax = 35; //maximal zulässiger "GPS-Steuerausschlag" |
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
signed int GPS_Nick = 0; |
signed int GPS_Roll = 0; |
void gps_main(void) |
{ |
/* |
if (MotorenEin = 1 && gps_gethome == 0 && actualPos.state != 0){ //speichert GPS-Home-Position |
gps_home_x = actualPos.x; |
gps_home_y = actualPos.y; |
beeptime = 80; |
gps_gethome = 1; |
}*/ |
if (Poti1>0 && actualPos.state != 0){ //Beginn GPS-Position-Hold |
if (gps_getpos != 0){ //Postion mit Schalter loggen |
target_x = actualPos.x; |
target_y = actualPos.y; |
target_z = actualPos.z; |
beeptime = 50; |
gps_getpos = 0;} |
//Regler ########################################################################################################################## |
//P-Regler |
zwn = ((sqrt(target_x^2+target_z^2)-sqrt(actualPos.x^2+actualPos.z^2))*gps_p)/10; //8 |
zwe = ((target_y-actualPos.y)*gps_p)/10; |
//D-Regler |
zwn2= (gps_d*actualPos.vx)/-3; //-2 |
zwe2= (gps_d*actualPos.vy)/-3; |
GPS_Nick = (zwn+zwn2); // skal; |
GPS_Roll = (zwe+zwe2); // skal; |
//GPS-Mixer######################################################################################################################## |
if (GPS_Nick>gpsmax){GPS_Nick=gpsmax;} else if (GPS_Nick<(-1*gpsmax)){GPS_Nick=(-1*gpsmax);} //min-max Wert überprüfen |
if (GPS_Roll>gpsmax){GPS_Roll=gpsmax;} else if (GPS_Roll<(-1*gpsmax)){GPS_Roll=(-1*gpsmax);} |
/* |
//Rotationsmatrix################################################################################################################## |
//Kompass ++++++++++++++++++++++++++++ |
alpha=0; |
alpha = komp_dreh+KompassValue; |
if (KompassValue>300) {beeptime=50;} |
if (alpha>359) {alpha=alpha-360;} |
GPS_Nick=(sin(alpha)*GPS_Roll+cos(alpha)*GPS_Nick); |
GPS_Roll=(cos(alpha)*GPS_Roll-sin(alpha)*GPS_Nick); |
*/ |
}else { |
gps_getpos=5; |
GPS_Nick=0; |
GPS_Roll=0; |
} |
} |
/branches/chris_hallo2/GPS.d |
---|
0,0 → 1,2 |
GPS.o GPS.d : GPS.c main.h old_macros.h _settings.h printf_P.h timer0.h uart.h \ |
analog.h twimaster.h menu.h rc.h fc.h gps.h |
/branches/chris_hallo2/GPS.lst |
---|
0,0 → 1,498 |
1 .file "GPS.c" |
2 .arch atmega644 |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .text |
11 .global gps_main |
13 gps_main: |
14 /* prologue: frame size=0 */ |
15 0000 6F92 push r6 |
16 0002 7F92 push r7 |
17 0004 8F92 push r8 |
18 0006 9F92 push r9 |
19 0008 AF92 push r10 |
20 000a BF92 push r11 |
21 000c CF92 push r12 |
22 000e DF92 push r13 |
23 0010 EF92 push r14 |
24 0012 FF92 push r15 |
25 0014 0F93 push r16 |
26 0016 1F93 push r17 |
27 /* prologue end (size=12) */ |
28 0018 8091 0000 lds r24,Poti1 |
29 001c 9091 0000 lds r25,(Poti1)+1 |
30 0020 1816 cp __zero_reg__,r24 |
31 0022 1906 cpc __zero_reg__,r25 |
32 0024 04F0 brlt .+2 |
33 0026 00C0 rjmp .L2 |
34 0028 8091 0000 lds r24,actualPos+24 |
35 002c 8823 tst r24 |
36 002e 01F4 brne .+2 |
37 0030 00C0 rjmp .L2 |
38 0032 8091 0000 lds r24,gps_getpos |
39 0036 9091 0000 lds r25,(gps_getpos)+1 |
40 003a 892B or r24,r25 |
41 003c 01F0 breq .L5 |
42 003e 8091 0000 lds r24,actualPos |
43 0042 9091 0000 lds r25,(actualPos)+1 |
44 0046 A091 0000 lds r26,(actualPos)+2 |
45 004a B091 0000 lds r27,(actualPos)+3 |
46 004e 8093 0000 sts target_x,r24 |
47 0052 9093 0000 sts (target_x)+1,r25 |
48 0056 A093 0000 sts (target_x)+2,r26 |
49 005a B093 0000 sts (target_x)+3,r27 |
50 005e 8091 0000 lds r24,actualPos+4 |
51 0062 9091 0000 lds r25,(actualPos+4)+1 |
52 0066 A091 0000 lds r26,(actualPos+4)+2 |
53 006a B091 0000 lds r27,(actualPos+4)+3 |
54 006e 8093 0000 sts target_y,r24 |
55 0072 9093 0000 sts (target_y)+1,r25 |
56 0076 A093 0000 sts (target_y)+2,r26 |
57 007a B093 0000 sts (target_y)+3,r27 |
58 007e 8091 0000 lds r24,actualPos+8 |
59 0082 9091 0000 lds r25,(actualPos+8)+1 |
60 0086 A091 0000 lds r26,(actualPos+8)+2 |
61 008a B091 0000 lds r27,(actualPos+8)+3 |
62 008e 8093 0000 sts target_z,r24 |
63 0092 9093 0000 sts (target_z)+1,r25 |
64 0096 A093 0000 sts (target_z)+2,r26 |
65 009a B093 0000 sts (target_z)+3,r27 |
66 009e 82E3 ldi r24,lo8(50) |
67 00a0 90E0 ldi r25,hi8(50) |
68 00a2 9093 0000 sts (beeptime)+1,r25 |
69 00a6 8093 0000 sts beeptime,r24 |
70 00aa 1092 0000 sts (gps_getpos)+1,__zero_reg__ |
71 00ae 1092 0000 sts gps_getpos,__zero_reg__ |
72 .L5: |
73 00b2 A090 0000 lds r10,gps_p |
74 00b6 B090 0000 lds r11,(gps_p)+1 |
75 00ba 6091 0000 lds r22,target_z |
76 00be 7091 0000 lds r23,(target_z)+1 |
77 00c2 8091 0000 lds r24,(target_z)+2 |
78 00c6 9091 0000 lds r25,(target_z)+3 |
79 00ca 6E5F subi r22,lo8(-(2)) |
80 00cc 7F4F sbci r23,hi8(-(2)) |
81 00ce 8F4F sbci r24,hlo8(-(2)) |
82 00d0 9F4F sbci r25,hhi8(-(2)) |
83 00d2 2091 0000 lds r18,target_x |
84 00d6 3091 0000 lds r19,(target_x)+1 |
85 00da 4091 0000 lds r20,(target_x)+2 |
86 00de 5091 0000 lds r21,(target_x)+3 |
87 00e2 E2E0 ldi r30,lo8(2) |
88 00e4 EE2E mov r14,r30 |
89 00e6 F12C mov r15,__zero_reg__ |
90 00e8 012D mov r16,__zero_reg__ |
91 00ea 112D mov r17,__zero_reg__ |
92 00ec 2E25 eor r18,r14 |
93 00ee 3F25 eor r19,r15 |
94 00f0 4027 eor r20,r16 |
95 00f2 5127 eor r21,r17 |
96 00f4 6227 eor r22,r18 |
97 00f6 7327 eor r23,r19 |
98 00f8 8427 eor r24,r20 |
99 00fa 9527 eor r25,r21 |
100 00fc 0E94 0000 call __floatsisf |
101 0100 0E94 0000 call sqrt |
102 0104 3B01 movw r6,r22 |
103 0106 4C01 movw r8,r24 |
104 0108 6091 0000 lds r22,actualPos+8 |
105 010c 7091 0000 lds r23,(actualPos+8)+1 |
106 0110 8091 0000 lds r24,(actualPos+8)+2 |
107 0114 9091 0000 lds r25,(actualPos+8)+3 |
108 0118 6E5F subi r22,lo8(-(2)) |
109 011a 7F4F sbci r23,hi8(-(2)) |
110 011c 8F4F sbci r24,hlo8(-(2)) |
111 011e 9F4F sbci r25,hhi8(-(2)) |
112 0120 2091 0000 lds r18,actualPos |
113 0124 3091 0000 lds r19,(actualPos)+1 |
114 0128 4091 0000 lds r20,(actualPos)+2 |
115 012c 5091 0000 lds r21,(actualPos)+3 |
116 0130 2E25 eor r18,r14 |
117 0132 3F25 eor r19,r15 |
118 0134 4027 eor r20,r16 |
119 0136 5127 eor r21,r17 |
120 0138 6227 eor r22,r18 |
121 013a 7327 eor r23,r19 |
122 013c 8427 eor r24,r20 |
123 013e 9527 eor r25,r21 |
124 0140 0E94 0000 call __floatsisf |
125 0144 0E94 0000 call sqrt |
126 0148 9B01 movw r18,r22 |
127 014a AC01 movw r20,r24 |
128 014c C401 movw r24,r8 |
129 014e B301 movw r22,r6 |
130 0150 0E94 0000 call __subsf3 |
131 0154 7B01 movw r14,r22 |
132 0156 8C01 movw r16,r24 |
133 0158 CC24 clr r12 |
134 015a B7FC sbrc r11,7 |
135 015c C094 com r12 |
136 015e DC2C mov r13,r12 |
137 0160 C601 movw r24,r12 |
138 0162 B501 movw r22,r10 |
139 0164 0E94 0000 call __floatsisf |
140 0168 9B01 movw r18,r22 |
141 016a AC01 movw r20,r24 |
142 016c C801 movw r24,r16 |
143 016e B701 movw r22,r14 |
144 0170 0E94 0000 call __mulsf3 |
145 0174 20E0 ldi r18,lo8(0x41200000) |
146 0176 30E0 ldi r19,hi8(0x41200000) |
147 0178 40E2 ldi r20,hlo8(0x41200000) |
148 017a 51E4 ldi r21,hhi8(0x41200000) |
149 017c 0E94 0000 call __divsf3 |
150 0180 0E94 0000 call __fixsfsi |
151 0184 3B01 movw r6,r22 |
152 0186 4C01 movw r8,r24 |
153 0188 6093 0000 sts zwn,r22 |
154 018c 7093 0000 sts (zwn)+1,r23 |
155 0190 8093 0000 sts (zwn)+2,r24 |
156 0194 9093 0000 sts (zwn)+3,r25 |
157 0198 2091 0000 lds r18,gps_p |
158 019c 3091 0000 lds r19,(gps_p)+1 |
159 01a0 6091 0000 lds r22,target_y |
160 01a4 7091 0000 lds r23,(target_y)+1 |
161 01a8 8091 0000 lds r24,(target_y)+2 |
162 01ac 9091 0000 lds r25,(target_y)+3 |
163 01b0 E090 0000 lds r14,actualPos+4 |
164 01b4 F090 0000 lds r15,(actualPos+4)+1 |
165 01b8 0091 0000 lds r16,(actualPos+4)+2 |
166 01bc 1091 0000 lds r17,(actualPos+4)+3 |
167 01c0 6E19 sub r22,r14 |
168 01c2 7F09 sbc r23,r15 |
169 01c4 800B sbc r24,r16 |
170 01c6 910B sbc r25,r17 |
171 01c8 4427 clr r20 |
172 01ca 37FD sbrc r19,7 |
173 01cc 4095 com r20 |
174 01ce 542F mov r21,r20 |
175 01d0 0E94 0000 call __mulsi3 |
176 01d4 2AE0 ldi r18,lo8(10) |
177 01d6 30E0 ldi r19,hi8(10) |
178 01d8 40E0 ldi r20,hlo8(10) |
179 01da 50E0 ldi r21,hhi8(10) |
180 01dc 0E94 0000 call __divmodsi4 |
181 01e0 5901 movw r10,r18 |
182 01e2 6A01 movw r12,r20 |
183 01e4 2093 0000 sts zwe,r18 |
184 01e8 3093 0000 sts (zwe)+1,r19 |
185 01ec 4093 0000 sts (zwe)+2,r20 |
186 01f0 5093 0000 sts (zwe)+3,r21 |
187 01f4 6091 0000 lds r22,gps_d |
188 01f8 7091 0000 lds r23,(gps_d)+1 |
189 01fc 8827 clr r24 |
190 01fe 77FD sbrc r23,7 |
191 0200 8095 com r24 |
192 0202 982F mov r25,r24 |
193 0204 2091 0000 lds r18,actualPos+12 |
194 0208 3091 0000 lds r19,(actualPos+12)+1 |
195 020c 4091 0000 lds r20,(actualPos+12)+2 |
196 0210 5091 0000 lds r21,(actualPos+12)+3 |
197 0214 0E94 0000 call __mulsi3 |
198 0218 2DEF ldi r18,lo8(-3) |
199 021a 3FEF ldi r19,hi8(-3) |
200 021c 4FEF ldi r20,hlo8(-3) |
201 021e 5FEF ldi r21,hhi8(-3) |
202 0220 0E94 0000 call __divmodsi4 |
203 0224 7901 movw r14,r18 |
204 0226 8A01 movw r16,r20 |
205 0228 2093 0000 sts zwn2,r18 |
206 022c 3093 0000 sts (zwn2)+1,r19 |
207 0230 4093 0000 sts (zwn2)+2,r20 |
208 0234 5093 0000 sts (zwn2)+3,r21 |
209 0238 6091 0000 lds r22,gps_d |
210 023c 7091 0000 lds r23,(gps_d)+1 |
211 0240 8827 clr r24 |
212 0242 77FD sbrc r23,7 |
213 0244 8095 com r24 |
214 0246 982F mov r25,r24 |
215 0248 2091 0000 lds r18,actualPos+16 |
216 024c 3091 0000 lds r19,(actualPos+16)+1 |
217 0250 4091 0000 lds r20,(actualPos+16)+2 |
218 0254 5091 0000 lds r21,(actualPos+16)+3 |
219 0258 0E94 0000 call __mulsi3 |
220 025c 2DEF ldi r18,lo8(-3) |
221 025e 3FEF ldi r19,hi8(-3) |
222 0260 4FEF ldi r20,hlo8(-3) |
223 0262 5FEF ldi r21,hhi8(-3) |
224 0264 0E94 0000 call __divmodsi4 |
225 0268 2093 0000 sts zwe2,r18 |
226 026c 3093 0000 sts (zwe2)+1,r19 |
227 0270 4093 0000 sts (zwe2)+2,r20 |
228 0274 5093 0000 sts (zwe2)+3,r21 |
229 0278 B301 movw r22,r6 |
230 027a 6E0D add r22,r14 |
231 027c 7F1D adc r23,r15 |
232 027e 7093 0000 sts (GPS_Nick)+1,r23 |
233 0282 6093 0000 sts GPS_Nick,r22 |
234 0286 2A0D add r18,r10 |
235 0288 3B1D adc r19,r11 |
236 028a 3093 0000 sts (GPS_Roll)+1,r19 |
237 028e 2093 0000 sts GPS_Roll,r18 |
238 0292 8091 0000 lds r24,gpsmax |
239 0296 9091 0000 lds r25,(gpsmax)+1 |
240 029a 8617 cp r24,r22 |
241 029c 9707 cpc r25,r23 |
242 029e 04F4 brge .L7 |
243 02a0 8091 0000 lds r24,gpsmax |
244 02a4 9091 0000 lds r25,(gpsmax)+1 |
245 02a8 00C0 rjmp .L16 |
246 .L7: |
247 02aa 8091 0000 lds r24,gpsmax |
248 02ae 9091 0000 lds r25,(gpsmax)+1 |
249 02b2 9095 com r25 |
250 02b4 8195 neg r24 |
251 02b6 9F4F sbci r25,lo8(-1) |
252 02b8 6817 cp r22,r24 |
253 02ba 7907 cpc r23,r25 |
254 02bc 04F4 brge .L9 |
255 02be 8091 0000 lds r24,gpsmax |
256 02c2 9091 0000 lds r25,(gpsmax)+1 |
257 02c6 9095 com r25 |
258 02c8 8195 neg r24 |
259 02ca 9F4F sbci r25,lo8(-1) |
260 .L16: |
261 02cc 9093 0000 sts (GPS_Nick)+1,r25 |
262 02d0 8093 0000 sts GPS_Nick,r24 |
263 .L9: |
264 02d4 8091 0000 lds r24,gpsmax |
265 02d8 9091 0000 lds r25,(gpsmax)+1 |
266 02dc 8217 cp r24,r18 |
267 02de 9307 cpc r25,r19 |
268 02e0 04F4 brge .L11 |
269 02e2 8091 0000 lds r24,gpsmax |
270 02e6 9091 0000 lds r25,(gpsmax)+1 |
271 02ea 00C0 rjmp .L17 |
272 .L11: |
273 02ec 8091 0000 lds r24,gpsmax |
274 02f0 9091 0000 lds r25,(gpsmax)+1 |
275 02f4 9095 com r25 |
276 02f6 8195 neg r24 |
277 02f8 9F4F sbci r25,lo8(-1) |
278 02fa 2817 cp r18,r24 |
279 02fc 3907 cpc r19,r25 |
280 02fe 04F4 brge .L15 |
281 0300 8091 0000 lds r24,gpsmax |
282 0304 9091 0000 lds r25,(gpsmax)+1 |
283 0308 9095 com r25 |
284 030a 8195 neg r24 |
285 030c 9F4F sbci r25,lo8(-1) |
286 .L17: |
287 030e 9093 0000 sts (GPS_Roll)+1,r25 |
288 0312 8093 0000 sts GPS_Roll,r24 |
289 0316 00C0 rjmp .L15 |
290 .L2: |
291 0318 85E0 ldi r24,lo8(5) |
292 031a 90E0 ldi r25,hi8(5) |
293 031c 9093 0000 sts (gps_getpos)+1,r25 |
294 0320 8093 0000 sts gps_getpos,r24 |
295 0324 1092 0000 sts (GPS_Nick)+1,__zero_reg__ |
296 0328 1092 0000 sts GPS_Nick,__zero_reg__ |
297 032c 1092 0000 sts (GPS_Roll)+1,__zero_reg__ |
298 0330 1092 0000 sts GPS_Roll,__zero_reg__ |
299 .L15: |
300 /* epilogue: frame size=0 */ |
301 0334 1F91 pop r17 |
302 0336 0F91 pop r16 |
303 0338 FF90 pop r15 |
304 033a EF90 pop r14 |
305 033c DF90 pop r13 |
306 033e CF90 pop r12 |
307 0340 BF90 pop r11 |
308 0342 AF90 pop r10 |
309 0344 9F90 pop r9 |
310 0346 8F90 pop r8 |
311 0348 7F90 pop r7 |
312 034a 6F90 pop r6 |
313 034c 0895 ret |
314 /* epilogue end (size=13) */ |
315 /* function gps_main size 423 (398) */ |
317 .global target_x |
318 .global target_x |
319 .section .bss |
322 target_x: |
323 0000 0000 0000 .skip 4,0 |
324 .global target_y |
325 .global target_y |
328 target_y: |
329 0004 0000 0000 .skip 4,0 |
330 .global target_z |
331 .global target_z |
334 target_z: |
335 0008 0000 0000 .skip 4,0 |
336 .global alpha |
337 .global alpha |
340 alpha: |
341 000c 0000 .skip 2,0 |
342 .global zwn |
343 .global zwn |
346 zwn: |
347 000e 0000 0000 .skip 4,0 |
348 .global zwe |
349 .global zwe |
352 zwe: |
353 0012 0000 0000 .skip 4,0 |
354 .global zwn1 |
355 .global zwn1 |
358 zwn1: |
359 0016 0000 0000 .skip 4,0 |
360 .global zwe1 |
361 .global zwe1 |
364 zwe1: |
365 001a 0000 0000 .skip 4,0 |
366 .global zwn2 |
367 .global zwn2 |
370 zwn2: |
371 001e 0000 0000 .skip 4,0 |
372 .global zwe2 |
373 .global zwe2 |
376 zwe2: |
377 0022 0000 0000 .skip 4,0 |
378 .global gps_getpos |
379 .data |
382 gps_getpos: |
383 0000 0500 .word 5 |
384 .global gps_home_x |
385 .global gps_home_x |
386 .section .bss |
389 gps_home_x: |
390 0026 0000 0000 .skip 4,0 |
391 .global gps_home_y |
392 .global gps_home_y |
395 gps_home_y: |
396 002a 0000 0000 .skip 4,0 |
397 .global komp_dreh |
398 .global komp_dreh |
401 komp_dreh: |
402 002e 0000 .skip 2,0 |
403 .global gpsmax |
404 .data |
407 gpsmax: |
408 0002 2300 .word 35 |
409 .global GPS_Nick |
410 .global GPS_Nick |
411 .section .bss |
414 GPS_Nick: |
415 0030 0000 .skip 2,0 |
416 .global GPS_Roll |
417 .global GPS_Roll |
420 GPS_Roll: |
421 0032 0000 .skip 2,0 |
422 .comm DiffNick,2,1 |
423 .comm DiffRoll,2,1 |
424 .comm SenderOkay,1,1 |
425 .comm CosinusNickWinkel,1,1 |
426 .comm CosinusRollWinkel,1,1 |
427 .comm durchschnitt_northing,4,1 |
428 .comm durchschnitt_easting,4,1 |
429 .comm gps_p,2,1 |
430 .comm gps_d,2,1 |
431 .comm skal,2,1 |
432 .comm gps_gethome,2,1 |
433 .comm RemoteTasten,1,1 |
434 .comm Timeout,1,1 |
435 .comm IntegralNick,4,1 |
436 .comm IntegralNick2,4,1 |
437 .comm IntegralRoll,4,1 |
438 .comm IntegralRoll2,4,1 |
439 .comm Mess_IntegralNick,4,1 |
440 .comm Mess_IntegralNick2,4,1 |
441 .comm Mess_IntegralRoll,4,1 |
442 .comm Mess_IntegralRoll2,4,1 |
443 .comm Integral_Gier,4,1 |
444 .comm Mess_Integral_Gier,4,1 |
445 .comm h,1,1 |
446 .comm m,1,1 |
447 .comm s,1,1 |
448 .comm Motor_Vorne,1,1 |
449 .comm Motor_Hinten,1,1 |
450 .comm Motor_Rechts,1,1 |
451 .comm Motor_Links,1,1 |
452 .comm Count,1,1 |
453 .comm MotorWert,5,1 |
454 .comm StickNick,2,1 |
455 .comm StickRoll,2,1 |
456 .comm StickGier,2,1 |
457 .comm MotorenEin,1,1 |
458 /* File "GPS.c": code 423 = 0x01a7 ( 398), prologues 12, epilogues 13 */ |
DEFINED SYMBOLS |
*ABS*:00000000 GPS.c |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccZtEoZ3.s:3 *ABS*:0000003f __SREG__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccZtEoZ3.s:4 *ABS*:0000003e __SP_H__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccZtEoZ3.s:5 *ABS*:0000003d __SP_L__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccZtEoZ3.s:6 *ABS*:00000000 __tmp_reg__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccZtEoZ3.s:7 *ABS*:00000001 __zero_reg__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccZtEoZ3.s:13 .text:00000000 gps_main |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccZtEoZ3.s:382 .data:00000000 gps_getpos |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccZtEoZ3.s:322 .bss:00000000 target_x |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccZtEoZ3.s:328 .bss:00000004 target_y |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccZtEoZ3.s:334 .bss:00000008 target_z |
*COM*:00000002 gps_p |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccZtEoZ3.s:346 .bss:0000000e zwn |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccZtEoZ3.s:352 .bss:00000012 zwe |
*COM*:00000002 gps_d |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccZtEoZ3.s:370 .bss:0000001e zwn2 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccZtEoZ3.s:376 .bss:00000022 zwe2 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccZtEoZ3.s:414 .bss:00000030 GPS_Nick |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccZtEoZ3.s:420 .bss:00000032 GPS_Roll |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccZtEoZ3.s:407 .data:00000002 gpsmax |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccZtEoZ3.s:340 .bss:0000000c alpha |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccZtEoZ3.s:358 .bss:00000016 zwn1 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccZtEoZ3.s:364 .bss:0000001a zwe1 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccZtEoZ3.s:389 .bss:00000026 gps_home_x |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccZtEoZ3.s:395 .bss:0000002a gps_home_y |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccZtEoZ3.s:401 .bss:0000002e komp_dreh |
*COM*:00000002 DiffNick |
*COM*:00000002 DiffRoll |
*COM*:00000001 SenderOkay |
*COM*:00000001 CosinusNickWinkel |
*COM*:00000001 CosinusRollWinkel |
*COM*:00000004 durchschnitt_northing |
*COM*:00000004 durchschnitt_easting |
*COM*:00000002 skal |
*COM*:00000002 gps_gethome |
*COM*:00000001 RemoteTasten |
*COM*:00000001 Timeout |
*COM*:00000004 IntegralNick |
*COM*:00000004 IntegralNick2 |
*COM*:00000004 IntegralRoll |
*COM*:00000004 IntegralRoll2 |
*COM*:00000004 Mess_IntegralNick |
*COM*:00000004 Mess_IntegralNick2 |
*COM*:00000004 Mess_IntegralRoll |
*COM*:00000004 Mess_IntegralRoll2 |
*COM*:00000004 Integral_Gier |
*COM*:00000004 Mess_Integral_Gier |
*COM*:00000001 h |
*COM*:00000001 m |
*COM*:00000001 s |
*COM*:00000001 Motor_Vorne |
*COM*:00000001 Motor_Hinten |
*COM*:00000001 Motor_Rechts |
*COM*:00000001 Motor_Links |
*COM*:00000001 Count |
*COM*:00000005 MotorWert |
*COM*:00000002 StickNick |
*COM*:00000002 StickRoll |
*COM*:00000002 StickGier |
*COM*:00000001 MotorenEin |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
Poti1 |
actualPos |
beeptime |
__floatsisf |
sqrt |
__subsf3 |
__mulsf3 |
__divsf3 |
__fixsfsi |
__mulsi3 |
__divmodsi4 |
/branches/chris_hallo2/License.txt |
---|
0,0 → 1,52 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + Nur für den privaten Gebrauch |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten und nichtkommerziellen Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt und genannt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-profit use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet, our webpage (http://www.MikroKopter.de) must be |
// + clearly linked and named as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
/branches/chris_hallo2/Settings.h |
---|
--- chris_hallo2/_Settings.h (nonexistent) |
+++ chris_hallo2/_Settings.h (revision 171) |
@@ -0,0 +1,50 @@ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Testmodi |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define MOTOR_OFF 0 |
+#define MOTOR_TEST 0 |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Abstimmung |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define ACC_AMPLIFY 16 |
+#define FAKTOR_P 1 |
+#define FAKTOR_I 0.0001 |
+ |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Debug-Interface |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define SIO_DEBUG 1 // Soll der Debugger aktiviert sein? |
+#define MIN_DEBUG_INTERVALL 250 // in diesem Intervall werden Degugdaten ohne Aufforderung gesendet |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Sender |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ #define K_NICK 0 |
+ #define K_ROLL 1 |
+ #define K_GAS 2 |
+ #define K_GIER 3 |
+ #define K_POTI1 4 |
+ #define K_POTI2 5 |
+ #define K_POTI3 6 |
+ #define K_POTI4 7 |
+// +++++++++++++++++++++++++++++++ |
+// + Getestete Settings: |
+// +++++++++++++++++++++++++++++++ |
+// Setting: Kamera |
+// Stick_P:3 |
+// Stick_D:0 |
+// Gyro_P: 175 |
+// Gyro_I: 175 |
+// Ki_Anteil: 10 |
+// +++++++++++++++++++++++++++++++ |
+// + Getestete Settings: |
+// +++++++++++++++++++++++++++++++ |
+// Setting: Normal |
+// Stick_P:2 |
+// Stick_D:8 |
+// Gyro_P: 80 |
+// Gyro_I: 150 |
+// Ki_Anteil: 5 |
+ |
/branches/chris_hallo2/analog.c |
---|
0,0 → 1,155 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az, UBat = 100; |
volatile int AccumulateNick = 0, AccumulateRoll = 0, AccumulateGier = 0; |
volatile int accumulate_AccRoll = 0,accumulate_AccNick = 0,accumulate_AccHoch = 0; |
volatile char MessanzahlNick = 0, MessanzahlRoll = 0, MessanzahlGier = 0; |
volatile char messanzahl_AccNick = 0, messanzahl_AccRoll = 0, messanzahl_AccHoch = 0; |
volatile long Luftdruck = 32000; |
volatile int StartLuftdruck; |
volatile unsigned int MessLuftdruck = 1023; |
unsigned char DruckOffsetSetting; |
volatile int HoeheD = 0; |
volatile char messanzahl_Druck; |
volatile int tmpLuftdruck; |
volatile unsigned int ZaehlMessungen = 0; |
//####################################################################################### |
// |
void ADC_Init(void) |
//####################################################################################### |
{ |
ADMUX = 0;//Referenz ist extern |
ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE); |
//Free Running Mode, Division Factor 128, Interrupt on |
} |
void SucheLuftruckOffset(void) |
{ |
unsigned int off; |
for(off=0; off < 250;off++) |
{ |
OCR0A = off; |
Delay_ms(50); |
printf("."); |
if(MessLuftdruck < 900) break; |
} |
DruckOffsetSetting = off; |
Delay_ms(200); |
} |
//####################################################################################### |
// |
SIGNAL(SIG_ADC) |
//####################################################################################### |
{ |
static unsigned char kanal=0,state = 0; |
signed int wert; |
ANALOG_OFF; |
switch(state++) |
{ |
case 0: |
wert = (signed int) AdNeutralGier - ADC; |
AccumulateGier += wert; // |
MessanzahlGier++; |
Mess_Integral_Gier += wert;// / 16; |
Mess_Integral_Gier2 += wert; |
kanal = 1; |
ZaehlMessungen++; |
break; |
case 1: |
wert = (signed int) ADC - AdNeutralRoll; |
Mess_IntegralRoll += wert; |
Mess_IntegralRoll2 += wert; |
if(ADC < 10) wert = -700; |
if(ADC > 1000) wert = +700; |
AccumulateRoll += wert; |
MessanzahlRoll++; |
kanal = 2; |
break; |
case 2: |
wert = (signed int) ADC - AdNeutralNick; |
Mess_IntegralNick += wert; |
Mess_IntegralNick2 += wert; |
if(ADC < 10) wert = -700; |
if(ADC > 1000) wert = +700; |
AccumulateNick += wert; |
MessanzahlNick++; |
kanal = 4; |
break; |
case 3: |
UBat = (3 * UBat + ADC / 3) / 4;//(UBat + ((ADC * 39) / 256) + 19) / 2; |
kanal = 6; |
break; |
case 4: |
Aktuell_ay = NeutralAccY - ADC; |
accumulate_AccRoll += Aktuell_ay; |
messanzahl_AccRoll++; |
kanal = 7; |
break; |
case 5: |
Aktuell_ay = ADC - NeutralAccX; |
accumulate_AccNick += Aktuell_ay; |
messanzahl_AccNick++; |
kanal = 5; |
state = 6; |
break; |
case 6: |
accumulate_AccHoch = (signed int) ADC - NeutralAccZ; |
accumulate_AccHoch += abs(Aktuell_ay) / 4 + abs(Aktuell_ax) / 4; |
if(accumulate_AccHoch > 1) |
{ |
if(NeutralAccZ < 800) NeutralAccZ+= 0.02; |
} |
else if(accumulate_AccHoch < -1) |
{ |
if(NeutralAccZ > 600) NeutralAccZ-= 0.02; |
} |
messanzahl_AccHoch = 1; |
Aktuell_az = ADC; |
Mess_Integral_Hoch += accumulate_AccHoch; // Integrieren |
Mess_Integral_Hoch -= Mess_Integral_Hoch / 1024; // dämfen |
// Mess_Integral_Hoch -= Mess_Integral_Hoch / 512; // dämfen |
/* if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
kanal = 3; |
state = 7; |
} |
else |
{ |
kanal = 0; |
state = 0; |
}*/ |
kanal = 3; |
state = 7; |
break; |
case 7: |
tmpLuftdruck += ADC; |
if(++messanzahl_Druck >= 5) |
{ |
MessLuftdruck = ADC; |
messanzahl_Druck = 0; |
HoeheD = (int)(StartLuftdruck - tmpLuftdruck - HoehenWert); // D-Anteil = neuerWert - AlterWert |
Luftdruck = (tmpLuftdruck + 3 * Luftdruck) / 4; |
HoehenWert = StartLuftdruck - Luftdruck; |
tmpLuftdruck = 0; |
} |
kanal = 0; |
state = 0; |
break; |
default: |
kanal = 0; |
state = 0; |
break; |
} |
ADMUX = kanal; |
ANALOG_ON; |
} |
/branches/chris_hallo2/analog.d |
---|
0,0 → 1,2 |
analog.o analog.d : analog.c main.h old_macros.h _settings.h printf_P.h timer0.h \ |
uart.h analog.h twimaster.h menu.h rc.h fc.h gps.h |
/branches/chris_hallo2/analog.h |
---|
0,0 → 1,23 |
/*####################################################################################### |
#######################################################################################*/ |
extern volatile int UBat; |
extern volatile int AccumulateNick, AccumulateRoll, AccumulateGier,accumulate_AccRoll,accumulate_AccNick,accumulate_AccHoch; |
extern volatile char MessanzahlNick, MessanzahlRoll, MessanzahlGier,messanzahl_AccNick, messanzahl_AccRoll,messanzahl_AccHoch; |
extern volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az; |
extern volatile long Luftdruck; |
extern volatile char messanzahl_Druck; |
extern volatile unsigned int ZaehlMessungen; |
extern unsigned char DruckOffsetSetting; |
extern volatile int HoeheD; |
extern volatile unsigned int MessLuftdruck; |
extern volatile int StartLuftdruck; |
extern unsigned int ReadADC(unsigned char adc_input); |
extern void ADC_Init(void); |
extern void SucheLuftruckOffset(void); |
#define ANALOG_OFF ADCSRA=0 |
#define ANALOG_ON ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE) |
/branches/chris_hallo2/analog.lst |
---|
0,0 → 1,862 |
1 .file "analog.c" |
2 .arch atmega644 |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .text |
11 .global ADC_Init |
13 ADC_Init: |
14 /* prologue: frame size=0 */ |
15 /* prologue end (size=0) */ |
16 0000 1092 7C00 sts 124,__zero_reg__ |
17 0004 8FEE ldi r24,lo8(-17) |
18 0006 8093 7A00 sts 122,r24 |
19 /* epilogue: frame size=0 */ |
20 000a 0895 ret |
21 /* epilogue end (size=1) */ |
22 /* function ADC_Init size 6 (5) */ |
24 .global __vector_24 |
26 __vector_24: |
27 /* prologue: frame size=0 */ |
28 000c 1F92 push __zero_reg__ |
29 000e 0F92 push __tmp_reg__ |
30 0010 0FB6 in __tmp_reg__,__SREG__ |
31 0012 0F92 push __tmp_reg__ |
32 0014 1124 clr __zero_reg__ |
33 0016 EF92 push r14 |
34 0018 FF92 push r15 |
35 001a 0F93 push r16 |
36 001c 1F93 push r17 |
37 001e 2F93 push r18 |
38 0020 3F93 push r19 |
39 0022 4F93 push r20 |
40 0024 5F93 push r21 |
41 0026 6F93 push r22 |
42 0028 7F93 push r23 |
43 002a 8F93 push r24 |
44 002c 9F93 push r25 |
45 002e AF93 push r26 |
46 0030 BF93 push r27 |
47 0032 CF93 push r28 |
48 0034 DF93 push r29 |
49 0036 EF93 push r30 |
50 0038 FF93 push r31 |
51 /* prologue end (size=23) */ |
52 003a 1092 7A00 sts 122,__zero_reg__ |
53 003e 4091 0000 lds r20,state.2005 |
54 0042 4F5F subi r20,lo8(-(1)) |
55 0044 4093 0000 sts state.2005,r20 |
56 0048 4150 subi r20,lo8(-(-1)) |
57 004a 4330 cpi r20,lo8(3) |
58 004c 01F4 brne .+2 |
59 004e 00C0 rjmp .L8 |
60 0050 4430 cpi r20,lo8(4) |
61 0052 00F4 brsh .L13 |
62 0054 4130 cpi r20,lo8(1) |
63 0056 01F4 brne .+2 |
64 0058 00C0 rjmp .L6 |
65 005a 4230 cpi r20,lo8(2) |
66 005c 00F0 brlo .+2 |
67 005e 00C0 rjmp .L7 |
68 0060 00C0 rjmp .L36 |
69 .L13: |
70 0062 4530 cpi r20,lo8(5) |
71 0064 01F4 brne .+2 |
72 0066 00C0 rjmp .L10 |
73 0068 4530 cpi r20,lo8(5) |
74 006a 00F4 brsh .+2 |
75 006c 00C0 rjmp .L9 |
76 006e 4630 cpi r20,lo8(6) |
77 0070 01F4 brne .+2 |
78 0072 00C0 rjmp .L11 |
79 0074 4730 cpi r20,lo8(7) |
80 0076 01F0 breq .+2 |
81 0078 00C0 rjmp .L37 |
82 007a 00C0 rjmp .L12 |
83 .L36: |
84 007c 2091 0000 lds r18,AdNeutralGier |
85 0080 3091 0000 lds r19,(AdNeutralGier)+1 |
86 0084 8091 7800 lds r24,120 |
87 0088 9091 7900 lds r25,(120)+1 |
88 008c 281B sub r18,r24 |
89 008e 390B sbc r19,r25 |
90 0090 8091 0000 lds r24,AccumulateGier |
91 0094 9091 0000 lds r25,(AccumulateGier)+1 |
92 0098 820F add r24,r18 |
93 009a 931F adc r25,r19 |
94 009c 9093 0000 sts (AccumulateGier)+1,r25 |
95 00a0 8093 0000 sts AccumulateGier,r24 |
96 00a4 8091 0000 lds r24,MessanzahlGier |
97 00a8 8F5F subi r24,lo8(-(1)) |
98 00aa 8093 0000 sts MessanzahlGier,r24 |
99 00ae 8091 0000 lds r24,Mess_Integral_Gier |
100 00b2 9091 0000 lds r25,(Mess_Integral_Gier)+1 |
101 00b6 A091 0000 lds r26,(Mess_Integral_Gier)+2 |
102 00ba B091 0000 lds r27,(Mess_Integral_Gier)+3 |
103 00be 4427 clr r20 |
104 00c0 37FD sbrc r19,7 |
105 00c2 4095 com r20 |
106 00c4 542F mov r21,r20 |
107 00c6 820F add r24,r18 |
108 00c8 931F adc r25,r19 |
109 00ca A41F adc r26,r20 |
110 00cc B51F adc r27,r21 |
111 00ce 8093 0000 sts Mess_Integral_Gier,r24 |
112 00d2 9093 0000 sts (Mess_Integral_Gier)+1,r25 |
113 00d6 A093 0000 sts (Mess_Integral_Gier)+2,r26 |
114 00da B093 0000 sts (Mess_Integral_Gier)+3,r27 |
115 00de 8091 0000 lds r24,Mess_Integral_Gier2 |
116 00e2 9091 0000 lds r25,(Mess_Integral_Gier2)+1 |
117 00e6 A091 0000 lds r26,(Mess_Integral_Gier2)+2 |
118 00ea B091 0000 lds r27,(Mess_Integral_Gier2)+3 |
119 00ee 820F add r24,r18 |
120 00f0 931F adc r25,r19 |
121 00f2 A41F adc r26,r20 |
122 00f4 B51F adc r27,r21 |
123 00f6 8093 0000 sts Mess_Integral_Gier2,r24 |
124 00fa 9093 0000 sts (Mess_Integral_Gier2)+1,r25 |
125 00fe A093 0000 sts (Mess_Integral_Gier2)+2,r26 |
126 0102 B093 0000 sts (Mess_Integral_Gier2)+3,r27 |
127 0106 81E0 ldi r24,lo8(1) |
128 0108 8093 0000 sts kanal.2004,r24 |
129 010c 8091 0000 lds r24,ZaehlMessungen |
130 0110 9091 0000 lds r25,(ZaehlMessungen)+1 |
131 0114 0196 adiw r24,1 |
132 0116 9093 0000 sts (ZaehlMessungen)+1,r25 |
133 011a 8093 0000 sts ZaehlMessungen,r24 |
134 011e 00C0 rjmp .L14 |
135 .L6: |
136 0120 6091 7800 lds r22,120 |
137 0124 7091 7900 lds r23,(120)+1 |
138 0128 8091 0000 lds r24,AdNeutralRoll |
139 012c 9091 0000 lds r25,(AdNeutralRoll)+1 |
140 0130 681B sub r22,r24 |
141 0132 790B sbc r23,r25 |
142 0134 8091 0000 lds r24,Mess_IntegralRoll |
143 0138 9091 0000 lds r25,(Mess_IntegralRoll)+1 |
144 013c A091 0000 lds r26,(Mess_IntegralRoll)+2 |
145 0140 B091 0000 lds r27,(Mess_IntegralRoll)+3 |
146 0144 9B01 movw r18,r22 |
147 0146 4427 clr r20 |
148 0148 37FD sbrc r19,7 |
149 014a 4095 com r20 |
150 014c 542F mov r21,r20 |
151 014e 820F add r24,r18 |
152 0150 931F adc r25,r19 |
153 0152 A41F adc r26,r20 |
154 0154 B51F adc r27,r21 |
155 0156 8093 0000 sts Mess_IntegralRoll,r24 |
156 015a 9093 0000 sts (Mess_IntegralRoll)+1,r25 |
157 015e A093 0000 sts (Mess_IntegralRoll)+2,r26 |
158 0162 B093 0000 sts (Mess_IntegralRoll)+3,r27 |
159 0166 8091 0000 lds r24,Mess_IntegralRoll2 |
160 016a 9091 0000 lds r25,(Mess_IntegralRoll2)+1 |
161 016e A091 0000 lds r26,(Mess_IntegralRoll2)+2 |
162 0172 B091 0000 lds r27,(Mess_IntegralRoll2)+3 |
163 0176 820F add r24,r18 |
164 0178 931F adc r25,r19 |
165 017a A41F adc r26,r20 |
166 017c B51F adc r27,r21 |
167 017e 8093 0000 sts Mess_IntegralRoll2,r24 |
168 0182 9093 0000 sts (Mess_IntegralRoll2)+1,r25 |
169 0186 A093 0000 sts (Mess_IntegralRoll2)+2,r26 |
170 018a B093 0000 sts (Mess_IntegralRoll2)+3,r27 |
171 018e 8091 7800 lds r24,120 |
172 0192 9091 7900 lds r25,(120)+1 |
173 0196 0A97 sbiw r24,10 |
174 0198 00F4 brsh .L15 |
175 019a 64E4 ldi r22,lo8(-700) |
176 019c 7DEF ldi r23,hi8(-700) |
177 .L15: |
178 019e 8091 7800 lds r24,120 |
179 01a2 9091 7900 lds r25,(120)+1 |
180 01a6 895E subi r24,lo8(1001) |
181 01a8 9340 sbci r25,hi8(1001) |
182 01aa 00F0 brlo .L17 |
183 01ac 6CEB ldi r22,lo8(700) |
184 01ae 72E0 ldi r23,hi8(700) |
185 .L17: |
186 01b0 8091 0000 lds r24,AccumulateRoll |
187 01b4 9091 0000 lds r25,(AccumulateRoll)+1 |
188 01b8 860F add r24,r22 |
189 01ba 971F adc r25,r23 |
190 01bc 9093 0000 sts (AccumulateRoll)+1,r25 |
191 01c0 8093 0000 sts AccumulateRoll,r24 |
192 01c4 8091 0000 lds r24,MessanzahlRoll |
193 01c8 8F5F subi r24,lo8(-(1)) |
194 01ca 8093 0000 sts MessanzahlRoll,r24 |
195 01ce 82E0 ldi r24,lo8(2) |
196 01d0 00C0 rjmp .L39 |
197 .L7: |
198 01d2 6091 7800 lds r22,120 |
199 01d6 7091 7900 lds r23,(120)+1 |
200 01da 8091 0000 lds r24,AdNeutralNick |
201 01de 9091 0000 lds r25,(AdNeutralNick)+1 |
202 01e2 681B sub r22,r24 |
203 01e4 790B sbc r23,r25 |
204 01e6 8091 0000 lds r24,Mess_IntegralNick |
205 01ea 9091 0000 lds r25,(Mess_IntegralNick)+1 |
206 01ee A091 0000 lds r26,(Mess_IntegralNick)+2 |
207 01f2 B091 0000 lds r27,(Mess_IntegralNick)+3 |
208 01f6 9B01 movw r18,r22 |
209 01f8 4427 clr r20 |
210 01fa 37FD sbrc r19,7 |
211 01fc 4095 com r20 |
212 01fe 542F mov r21,r20 |
213 0200 820F add r24,r18 |
214 0202 931F adc r25,r19 |
215 0204 A41F adc r26,r20 |
216 0206 B51F adc r27,r21 |
217 0208 8093 0000 sts Mess_IntegralNick,r24 |
218 020c 9093 0000 sts (Mess_IntegralNick)+1,r25 |
219 0210 A093 0000 sts (Mess_IntegralNick)+2,r26 |
220 0214 B093 0000 sts (Mess_IntegralNick)+3,r27 |
221 0218 8091 0000 lds r24,Mess_IntegralNick2 |
222 021c 9091 0000 lds r25,(Mess_IntegralNick2)+1 |
223 0220 A091 0000 lds r26,(Mess_IntegralNick2)+2 |
224 0224 B091 0000 lds r27,(Mess_IntegralNick2)+3 |
225 0228 820F add r24,r18 |
226 022a 931F adc r25,r19 |
227 022c A41F adc r26,r20 |
228 022e B51F adc r27,r21 |
229 0230 8093 0000 sts Mess_IntegralNick2,r24 |
230 0234 9093 0000 sts (Mess_IntegralNick2)+1,r25 |
231 0238 A093 0000 sts (Mess_IntegralNick2)+2,r26 |
232 023c B093 0000 sts (Mess_IntegralNick2)+3,r27 |
233 0240 8091 7800 lds r24,120 |
234 0244 9091 7900 lds r25,(120)+1 |
235 0248 0A97 sbiw r24,10 |
236 024a 00F4 brsh .L19 |
237 024c 64E4 ldi r22,lo8(-700) |
238 024e 7DEF ldi r23,hi8(-700) |
239 .L19: |
240 0250 8091 7800 lds r24,120 |
241 0254 9091 7900 lds r25,(120)+1 |
242 0258 895E subi r24,lo8(1001) |
243 025a 9340 sbci r25,hi8(1001) |
244 025c 00F0 brlo .L21 |
245 025e 6CEB ldi r22,lo8(700) |
246 0260 72E0 ldi r23,hi8(700) |
247 .L21: |
248 0262 8091 0000 lds r24,AccumulateNick |
249 0266 9091 0000 lds r25,(AccumulateNick)+1 |
250 026a 860F add r24,r22 |
251 026c 971F adc r25,r23 |
252 026e 9093 0000 sts (AccumulateNick)+1,r25 |
253 0272 8093 0000 sts AccumulateNick,r24 |
254 0276 8091 0000 lds r24,MessanzahlNick |
255 027a 8F5F subi r24,lo8(-(1)) |
256 027c 8093 0000 sts MessanzahlNick,r24 |
257 0280 84E0 ldi r24,lo8(4) |
258 .L39: |
259 0282 8093 0000 sts kanal.2004,r24 |
260 0286 00C0 rjmp .L14 |
261 .L8: |
262 0288 4091 0000 lds r20,UBat |
263 028c 5091 0000 lds r21,(UBat)+1 |
264 0290 8091 7800 lds r24,120 |
265 0294 9091 7900 lds r25,(120)+1 |
266 0298 9A01 movw r18,r20 |
267 029a 220F lsl r18 |
268 029c 331F rol r19 |
269 029e 240F add r18,r20 |
270 02a0 351F adc r19,r21 |
271 02a2 63E0 ldi r22,lo8(3) |
272 02a4 70E0 ldi r23,hi8(3) |
273 02a6 0E94 0000 call __udivmodhi4 |
274 02aa 260F add r18,r22 |
275 02ac 371F adc r19,r23 |
276 02ae 3695 lsr r19 |
277 02b0 2795 ror r18 |
278 02b2 3695 lsr r19 |
279 02b4 2795 ror r18 |
280 02b6 3093 0000 sts (UBat)+1,r19 |
281 02ba 2093 0000 sts UBat,r18 |
282 02be 86E0 ldi r24,lo8(6) |
283 02c0 00C0 rjmp .L39 |
284 .L9: |
285 02c2 8091 0000 lds r24,NeutralAccY |
286 02c6 9091 0000 lds r25,(NeutralAccY)+1 |
287 02ca 2091 7800 lds r18,120 |
288 02ce 3091 7900 lds r19,(120)+1 |
289 02d2 821B sub r24,r18 |
290 02d4 930B sbc r25,r19 |
291 02d6 9093 0000 sts (Aktuell_ay)+1,r25 |
292 02da 8093 0000 sts Aktuell_ay,r24 |
293 02de 8091 0000 lds r24,accumulate_AccRoll |
294 02e2 9091 0000 lds r25,(accumulate_AccRoll)+1 |
295 02e6 2091 0000 lds r18,Aktuell_ay |
296 02ea 3091 0000 lds r19,(Aktuell_ay)+1 |
297 02ee 820F add r24,r18 |
298 02f0 931F adc r25,r19 |
299 02f2 9093 0000 sts (accumulate_AccRoll)+1,r25 |
300 02f6 8093 0000 sts accumulate_AccRoll,r24 |
301 02fa 8091 0000 lds r24,messanzahl_AccRoll |
302 02fe 8F5F subi r24,lo8(-(1)) |
303 0300 8093 0000 sts messanzahl_AccRoll,r24 |
304 0304 87E0 ldi r24,lo8(7) |
305 0306 00C0 rjmp .L39 |
306 .L10: |
307 0308 8091 7800 lds r24,120 |
308 030c 9091 7900 lds r25,(120)+1 |
309 0310 2091 0000 lds r18,NeutralAccX |
310 0314 3091 0000 lds r19,(NeutralAccX)+1 |
311 0318 821B sub r24,r18 |
312 031a 930B sbc r25,r19 |
313 031c 9093 0000 sts (Aktuell_ay)+1,r25 |
314 0320 8093 0000 sts Aktuell_ay,r24 |
315 0324 8091 0000 lds r24,accumulate_AccNick |
316 0328 9091 0000 lds r25,(accumulate_AccNick)+1 |
317 032c 2091 0000 lds r18,Aktuell_ay |
318 0330 3091 0000 lds r19,(Aktuell_ay)+1 |
319 0334 820F add r24,r18 |
320 0336 931F adc r25,r19 |
321 0338 9093 0000 sts (accumulate_AccNick)+1,r25 |
322 033c 8093 0000 sts accumulate_AccNick,r24 |
323 0340 8091 0000 lds r24,messanzahl_AccNick |
324 0344 8F5F subi r24,lo8(-(1)) |
325 0346 8093 0000 sts messanzahl_AccNick,r24 |
326 034a 4093 0000 sts kanal.2004,r20 |
327 034e 86E0 ldi r24,lo8(6) |
328 0350 00C0 rjmp .L40 |
329 .L11: |
330 0352 6091 7800 lds r22,120 |
331 0356 7091 7900 lds r23,(120)+1 |
332 035a E090 0000 lds r14,NeutralAccZ |
333 035e F090 0000 lds r15,(NeutralAccZ)+1 |
334 0362 0091 0000 lds r16,(NeutralAccZ)+2 |
335 0366 1091 0000 lds r17,(NeutralAccZ)+3 |
336 036a 8827 clr r24 |
337 036c 77FD sbrc r23,7 |
338 036e 8095 com r24 |
339 0370 982F mov r25,r24 |
340 0372 0E94 0000 call __floatsisf |
341 0376 A801 movw r20,r16 |
342 0378 9701 movw r18,r14 |
343 037a 0E94 0000 call __subsf3 |
344 037e 0E94 0000 call __fixsfsi |
345 0382 7093 0000 sts (accumulate_AccHoch)+1,r23 |
346 0386 6093 0000 sts accumulate_AccHoch,r22 |
347 038a 2091 0000 lds r18,accumulate_AccHoch |
348 038e 3091 0000 lds r19,(accumulate_AccHoch)+1 |
349 0392 E091 0000 lds r30,Aktuell_ay |
350 0396 F091 0000 lds r31,(Aktuell_ay)+1 |
351 039a 8091 0000 lds r24,Aktuell_ax |
352 039e 9091 0000 lds r25,(Aktuell_ax)+1 |
353 03a2 97FF sbrs r25,7 |
354 03a4 00C0 rjmp .L23 |
355 03a6 9095 com r25 |
356 03a8 8195 neg r24 |
357 03aa 9F4F sbci r25,lo8(-1) |
358 .L23: |
359 03ac 64E0 ldi r22,lo8(4) |
360 03ae 70E0 ldi r23,hi8(4) |
361 03b0 0E94 0000 call __divmodhi4 |
362 03b4 EB01 movw r28,r22 |
363 03b6 CF01 movw r24,r30 |
364 03b8 F7FF sbrs r31,7 |
365 03ba 00C0 rjmp .L24 |
366 03bc 9095 com r25 |
367 03be 8195 neg r24 |
368 03c0 9F4F sbci r25,lo8(-1) |
369 .L24: |
370 03c2 64E0 ldi r22,lo8(4) |
371 03c4 70E0 ldi r23,hi8(4) |
372 03c6 0E94 0000 call __divmodhi4 |
373 03ca 260F add r18,r22 |
374 03cc 371F adc r19,r23 |
375 03ce 2C0F add r18,r28 |
376 03d0 3D1F adc r19,r29 |
377 03d2 3093 0000 sts (accumulate_AccHoch)+1,r19 |
378 03d6 2093 0000 sts accumulate_AccHoch,r18 |
379 03da 8091 0000 lds r24,accumulate_AccHoch |
380 03de 9091 0000 lds r25,(accumulate_AccHoch)+1 |
381 03e2 0297 sbiw r24,2 |
382 03e4 04F0 brlt .L25 |
383 03e6 6091 0000 lds r22,NeutralAccZ |
384 03ea 7091 0000 lds r23,(NeutralAccZ)+1 |
385 03ee 8091 0000 lds r24,(NeutralAccZ)+2 |
386 03f2 9091 0000 lds r25,(NeutralAccZ)+3 |
387 03f6 20E0 ldi r18,lo8(0x44480000) |
388 03f8 30E0 ldi r19,hi8(0x44480000) |
389 03fa 48E4 ldi r20,hlo8(0x44480000) |
390 03fc 54E4 ldi r21,hhi8(0x44480000) |
391 03fe 0E94 0000 call __ltsf2 |
392 0402 8823 tst r24 |
393 0404 04F0 brlt .+2 |
394 0406 00C0 rjmp .L27 |
395 0408 6091 0000 lds r22,NeutralAccZ |
396 040c 7091 0000 lds r23,(NeutralAccZ)+1 |
397 0410 8091 0000 lds r24,(NeutralAccZ)+2 |
398 0414 9091 0000 lds r25,(NeutralAccZ)+3 |
399 0418 2AE0 ldi r18,lo8(0x3ca3d70a) |
400 041a 37ED ldi r19,hi8(0x3ca3d70a) |
401 041c 43EA ldi r20,hlo8(0x3ca3d70a) |
402 041e 5CE3 ldi r21,hhi8(0x3ca3d70a) |
403 0420 0E94 0000 call __addsf3 |
404 0424 00C0 rjmp .L38 |
405 .L25: |
406 0426 8091 0000 lds r24,accumulate_AccHoch |
407 042a 9091 0000 lds r25,(accumulate_AccHoch)+1 |
408 042e 8F5F subi r24,lo8(-1) |
409 0430 9F4F sbci r25,hi8(-1) |
410 0432 04F4 brge .L27 |
411 0434 6091 0000 lds r22,NeutralAccZ |
412 0438 7091 0000 lds r23,(NeutralAccZ)+1 |
413 043c 8091 0000 lds r24,(NeutralAccZ)+2 |
414 0440 9091 0000 lds r25,(NeutralAccZ)+3 |
415 0444 20E0 ldi r18,lo8(0x44160000) |
416 0446 30E0 ldi r19,hi8(0x44160000) |
417 0448 46E1 ldi r20,hlo8(0x44160000) |
418 044a 54E4 ldi r21,hhi8(0x44160000) |
419 044c 0E94 0000 call __gtsf2 |
420 0450 1816 cp __zero_reg__,r24 |
421 0452 04F4 brge .L27 |
422 0454 6091 0000 lds r22,NeutralAccZ |
423 0458 7091 0000 lds r23,(NeutralAccZ)+1 |
424 045c 8091 0000 lds r24,(NeutralAccZ)+2 |
425 0460 9091 0000 lds r25,(NeutralAccZ)+3 |
426 0464 2AE0 ldi r18,lo8(0x3ca3d70a) |
427 0466 37ED ldi r19,hi8(0x3ca3d70a) |
428 0468 43EA ldi r20,hlo8(0x3ca3d70a) |
429 046a 5CE3 ldi r21,hhi8(0x3ca3d70a) |
430 046c 0E94 0000 call __subsf3 |
431 .L38: |
432 0470 6093 0000 sts NeutralAccZ,r22 |
433 0474 7093 0000 sts (NeutralAccZ)+1,r23 |
434 0478 8093 0000 sts (NeutralAccZ)+2,r24 |
435 047c 9093 0000 sts (NeutralAccZ)+3,r25 |
436 .L27: |
437 0480 81E0 ldi r24,lo8(1) |
438 0482 8093 0000 sts messanzahl_AccHoch,r24 |
439 0486 8091 7800 lds r24,120 |
440 048a 9091 7900 lds r25,(120)+1 |
441 048e 9093 0000 sts (Aktuell_az)+1,r25 |
442 0492 8093 0000 sts Aktuell_az,r24 |
443 0496 2091 0000 lds r18,Mess_Integral_Hoch |
444 049a 3091 0000 lds r19,(Mess_Integral_Hoch)+1 |
445 049e 4091 0000 lds r20,(Mess_Integral_Hoch)+2 |
446 04a2 5091 0000 lds r21,(Mess_Integral_Hoch)+3 |
447 04a6 8091 0000 lds r24,accumulate_AccHoch |
448 04aa 9091 0000 lds r25,(accumulate_AccHoch)+1 |
449 04ae AA27 clr r26 |
450 04b0 97FD sbrc r25,7 |
451 04b2 A095 com r26 |
452 04b4 BA2F mov r27,r26 |
453 04b6 280F add r18,r24 |
454 04b8 391F adc r19,r25 |
455 04ba 4A1F adc r20,r26 |
456 04bc 5B1F adc r21,r27 |
457 04be 2093 0000 sts Mess_Integral_Hoch,r18 |
458 04c2 3093 0000 sts (Mess_Integral_Hoch)+1,r19 |
459 04c6 4093 0000 sts (Mess_Integral_Hoch)+2,r20 |
460 04ca 5093 0000 sts (Mess_Integral_Hoch)+3,r21 |
461 04ce E090 0000 lds r14,Mess_Integral_Hoch |
462 04d2 F090 0000 lds r15,(Mess_Integral_Hoch)+1 |
463 04d6 0091 0000 lds r16,(Mess_Integral_Hoch)+2 |
464 04da 1091 0000 lds r17,(Mess_Integral_Hoch)+3 |
465 04de 6091 0000 lds r22,Mess_Integral_Hoch |
466 04e2 7091 0000 lds r23,(Mess_Integral_Hoch)+1 |
467 04e6 8091 0000 lds r24,(Mess_Integral_Hoch)+2 |
468 04ea 9091 0000 lds r25,(Mess_Integral_Hoch)+3 |
469 04ee 20E0 ldi r18,lo8(1024) |
470 04f0 34E0 ldi r19,hi8(1024) |
471 04f2 40E0 ldi r20,hlo8(1024) |
472 04f4 50E0 ldi r21,hhi8(1024) |
473 04f6 0E94 0000 call __divmodsi4 |
474 04fa E21A sub r14,r18 |
475 04fc F30A sbc r15,r19 |
476 04fe 040B sbc r16,r20 |
477 0500 150B sbc r17,r21 |
478 0502 E092 0000 sts Mess_Integral_Hoch,r14 |
479 0506 F092 0000 sts (Mess_Integral_Hoch)+1,r15 |
480 050a 0093 0000 sts (Mess_Integral_Hoch)+2,r16 |
481 050e 1093 0000 sts (Mess_Integral_Hoch)+3,r17 |
482 0512 83E0 ldi r24,lo8(3) |
483 0514 8093 0000 sts kanal.2004,r24 |
484 0518 87E0 ldi r24,lo8(7) |
485 .L40: |
486 051a 8093 0000 sts state.2005,r24 |
487 051e 00C0 rjmp .L14 |
488 .L12: |
489 0520 8091 0000 lds r24,tmpLuftdruck |
490 0524 9091 0000 lds r25,(tmpLuftdruck)+1 |
491 0528 2091 7800 lds r18,120 |
492 052c 3091 7900 lds r19,(120)+1 |
493 0530 820F add r24,r18 |
494 0532 931F adc r25,r19 |
495 0534 9093 0000 sts (tmpLuftdruck)+1,r25 |
496 0538 8093 0000 sts tmpLuftdruck,r24 |
497 053c 8091 0000 lds r24,messanzahl_Druck |
498 0540 8F5F subi r24,lo8(-(1)) |
499 0542 8093 0000 sts messanzahl_Druck,r24 |
500 0546 8091 0000 lds r24,messanzahl_Druck |
501 054a 8530 cpi r24,lo8(5) |
502 054c 00F4 brsh .+2 |
503 054e 00C0 rjmp .L37 |
504 0550 8091 7800 lds r24,120 |
505 0554 9091 7900 lds r25,(120)+1 |
506 0558 9093 0000 sts (MessLuftdruck)+1,r25 |
507 055c 8093 0000 sts MessLuftdruck,r24 |
508 0560 1092 0000 sts messanzahl_Druck,__zero_reg__ |
509 0564 8091 0000 lds r24,StartLuftdruck |
510 0568 9091 0000 lds r25,(StartLuftdruck)+1 |
511 056c 2091 0000 lds r18,tmpLuftdruck |
512 0570 3091 0000 lds r19,(tmpLuftdruck)+1 |
513 0574 821B sub r24,r18 |
514 0576 930B sbc r25,r19 |
515 0578 2091 0000 lds r18,HoehenWert |
516 057c 3091 0000 lds r19,(HoehenWert)+1 |
517 0580 821B sub r24,r18 |
518 0582 930B sbc r25,r19 |
519 0584 9093 0000 sts (HoeheD)+1,r25 |
520 0588 8093 0000 sts HoeheD,r24 |
521 058c 6091 0000 lds r22,tmpLuftdruck |
522 0590 7091 0000 lds r23,(tmpLuftdruck)+1 |
523 0594 E090 0000 lds r14,Luftdruck |
524 0598 F090 0000 lds r15,(Luftdruck)+1 |
525 059c 0091 0000 lds r16,(Luftdruck)+2 |
526 05a0 1091 0000 lds r17,(Luftdruck)+3 |
527 05a4 8827 clr r24 |
528 05a6 77FD sbrc r23,7 |
529 05a8 8095 com r24 |
530 05aa 982F mov r25,r24 |
531 05ac A801 movw r20,r16 |
532 05ae 9701 movw r18,r14 |
533 05b0 220F lsl r18 |
534 05b2 331F rol r19 |
535 05b4 441F rol r20 |
536 05b6 551F rol r21 |
537 05b8 2E0D add r18,r14 |
538 05ba 3F1D adc r19,r15 |
539 05bc 401F adc r20,r16 |
540 05be 511F adc r21,r17 |
541 05c0 620F add r22,r18 |
542 05c2 731F adc r23,r19 |
543 05c4 841F adc r24,r20 |
544 05c6 951F adc r25,r21 |
545 05c8 24E0 ldi r18,lo8(4) |
546 05ca 30E0 ldi r19,hi8(4) |
547 05cc 40E0 ldi r20,hlo8(4) |
548 05ce 50E0 ldi r21,hhi8(4) |
549 05d0 0E94 0000 call __divmodsi4 |
550 05d4 2093 0000 sts Luftdruck,r18 |
551 05d8 3093 0000 sts (Luftdruck)+1,r19 |
552 05dc 4093 0000 sts (Luftdruck)+2,r20 |
553 05e0 5093 0000 sts (Luftdruck)+3,r21 |
554 05e4 2091 0000 lds r18,StartLuftdruck |
555 05e8 3091 0000 lds r19,(StartLuftdruck)+1 |
556 05ec 8091 0000 lds r24,Luftdruck |
557 05f0 9091 0000 lds r25,(Luftdruck)+1 |
558 05f4 A091 0000 lds r26,(Luftdruck)+2 |
559 05f8 B091 0000 lds r27,(Luftdruck)+3 |
560 05fc 281B sub r18,r24 |
561 05fe 390B sbc r19,r25 |
562 0600 3093 0000 sts (HoehenWert)+1,r19 |
563 0604 2093 0000 sts HoehenWert,r18 |
564 0608 1092 0000 sts (tmpLuftdruck)+1,__zero_reg__ |
565 060c 1092 0000 sts tmpLuftdruck,__zero_reg__ |
566 .L37: |
567 0610 1092 0000 sts kanal.2004,__zero_reg__ |
568 0614 1092 0000 sts state.2005,__zero_reg__ |
569 .L14: |
570 0618 8091 0000 lds r24,kanal.2004 |
571 061c 8093 7C00 sts 124,r24 |
572 0620 8FEE ldi r24,lo8(-17) |
573 0622 8093 7A00 sts 122,r24 |
574 /* epilogue: frame size=0 */ |
575 0626 FF91 pop r31 |
576 0628 EF91 pop r30 |
577 062a DF91 pop r29 |
578 062c CF91 pop r28 |
579 062e BF91 pop r27 |
580 0630 AF91 pop r26 |
581 0632 9F91 pop r25 |
582 0634 8F91 pop r24 |
583 0636 7F91 pop r23 |
584 0638 6F91 pop r22 |
585 063a 5F91 pop r21 |
586 063c 4F91 pop r20 |
587 063e 3F91 pop r19 |
588 0640 2F91 pop r18 |
589 0642 1F91 pop r17 |
590 0644 0F91 pop r16 |
591 0646 FF90 pop r15 |
592 0648 EF90 pop r14 |
593 064a 0F90 pop __tmp_reg__ |
594 064c 0FBE out __SREG__,__tmp_reg__ |
595 064e 0F90 pop __tmp_reg__ |
596 0650 1F90 pop __zero_reg__ |
597 0652 1895 reti |
598 /* epilogue end (size=23) */ |
599 /* function __vector_24 size 811 (765) */ |
601 .global SucheLuftruckOffset |
603 SucheLuftruckOffset: |
604 /* prologue: frame size=0 */ |
605 0654 CF93 push r28 |
606 0656 DF93 push r29 |
607 /* prologue end (size=2) */ |
608 0658 C0E0 ldi r28,lo8(0) |
609 065a D0E0 ldi r29,hi8(0) |
610 .L42: |
611 065c C7BD out 71-0x20,r28 |
612 065e 82E3 ldi r24,lo8(50) |
613 0660 90E0 ldi r25,hi8(50) |
614 0662 0E94 0000 call Delay_ms |
615 0666 80E0 ldi r24,lo8(__c.1990) |
616 0668 90E0 ldi r25,hi8(__c.1990) |
617 066a 9F93 push r25 |
618 066c 8F93 push r24 |
619 066e 1F92 push __zero_reg__ |
620 0670 0E94 0000 call _printf_P |
621 0674 8091 0000 lds r24,MessLuftdruck |
622 0678 9091 0000 lds r25,(MessLuftdruck)+1 |
623 067c 0F90 pop __tmp_reg__ |
624 067e 0F90 pop __tmp_reg__ |
625 0680 0F90 pop __tmp_reg__ |
626 0682 8458 subi r24,lo8(900) |
627 0684 9340 sbci r25,hi8(900) |
628 0686 00F0 brlo .L43 |
629 0688 2196 adiw r28,1 |
630 068a CA3F cpi r28,250 |
631 068c D105 cpc r29,__zero_reg__ |
632 068e 01F4 brne .L42 |
633 .L43: |
634 0690 C093 0000 sts DruckOffsetSetting,r28 |
635 0694 88EC ldi r24,lo8(200) |
636 0696 90E0 ldi r25,hi8(200) |
637 0698 0E94 0000 call Delay_ms |
638 /* epilogue: frame size=0 */ |
639 069c DF91 pop r29 |
640 069e CF91 pop r28 |
641 06a0 0895 ret |
642 /* epilogue end (size=3) */ |
643 /* function SucheLuftruckOffset size 40 (35) */ |
645 .global UBat |
646 .data |
649 UBat: |
650 0000 6400 .word 100 |
651 .global AccumulateNick |
652 .global AccumulateNick |
653 .section .bss |
656 AccumulateNick: |
657 0000 0000 .skip 2,0 |
658 .global AccumulateRoll |
659 .global AccumulateRoll |
662 AccumulateRoll: |
663 0002 0000 .skip 2,0 |
664 .global AccumulateGier |
665 .global AccumulateGier |
668 AccumulateGier: |
669 0004 0000 .skip 2,0 |
670 .global accumulate_AccRoll |
671 .global accumulate_AccRoll |
674 accumulate_AccRoll: |
675 0006 0000 .skip 2,0 |
676 .global accumulate_AccNick |
677 .global accumulate_AccNick |
680 accumulate_AccNick: |
681 0008 0000 .skip 2,0 |
682 .global accumulate_AccHoch |
683 .global accumulate_AccHoch |
686 accumulate_AccHoch: |
687 000a 0000 .skip 2,0 |
688 .global MessanzahlNick |
689 .global MessanzahlNick |
692 MessanzahlNick: |
693 000c 00 .skip 1,0 |
694 .global MessanzahlRoll |
695 .global MessanzahlRoll |
698 MessanzahlRoll: |
699 000d 00 .skip 1,0 |
700 .global MessanzahlGier |
701 .global MessanzahlGier |
704 MessanzahlGier: |
705 000e 00 .skip 1,0 |
706 .global messanzahl_AccNick |
707 .global messanzahl_AccNick |
710 messanzahl_AccNick: |
711 000f 00 .skip 1,0 |
712 .global messanzahl_AccRoll |
713 .global messanzahl_AccRoll |
716 messanzahl_AccRoll: |
717 0010 00 .skip 1,0 |
718 .global messanzahl_AccHoch |
719 .global messanzahl_AccHoch |
722 messanzahl_AccHoch: |
723 0011 00 .skip 1,0 |
724 .global Luftdruck |
725 .data |
728 Luftdruck: |
729 0002 00 .byte 0 |
730 0003 7D .byte 125 |
731 0004 00 .byte 0 |
732 0005 00 .byte 0 |
733 .global MessLuftdruck |
736 MessLuftdruck: |
737 0006 FF03 .word 1023 |
738 .global HoeheD |
739 .global HoeheD |
740 .section .bss |
743 HoeheD: |
744 0012 0000 .skip 2,0 |
745 .global ZaehlMessungen |
746 .global ZaehlMessungen |
749 ZaehlMessungen: |
750 0014 0000 .skip 2,0 |
751 .lcomm state.2005,1 |
752 .lcomm kanal.2004,1 |
753 .section .progmem.data,"a",@progbits |
756 __c.1990: |
757 0000 2E00 .string "." |
758 .comm DiffNick,2,1 |
759 .comm DiffRoll,2,1 |
760 .comm SenderOkay,1,1 |
761 .comm CosinusNickWinkel,1,1 |
762 .comm CosinusRollWinkel,1,1 |
763 .comm durchschnitt_northing,4,1 |
764 .comm durchschnitt_easting,4,1 |
765 .comm gps_p,2,1 |
766 .comm gps_d,2,1 |
767 .comm skal,2,1 |
768 .comm gps_gethome,2,1 |
769 .comm Aktuell_Nick,2,1 |
770 .comm Aktuell_Roll,2,1 |
771 .comm Aktuell_Gier,2,1 |
772 .comm Aktuell_ax,2,1 |
773 .comm Aktuell_ay,2,1 |
774 .comm Aktuell_az,2,1 |
775 .comm messanzahl_Druck,1,1 |
776 .comm DruckOffsetSetting,1,1 |
777 .comm StartLuftdruck,2,1 |
778 .comm RemoteTasten,1,1 |
779 .comm Timeout,1,1 |
780 .comm IntegralNick,4,1 |
781 .comm IntegralNick2,4,1 |
782 .comm IntegralRoll,4,1 |
783 .comm IntegralRoll2,4,1 |
784 .comm Mess_IntegralNick,4,1 |
785 .comm Mess_IntegralNick2,4,1 |
786 .comm Mess_IntegralRoll,4,1 |
787 .comm Mess_IntegralRoll2,4,1 |
788 .comm Integral_Gier,4,1 |
789 .comm Mess_Integral_Gier,4,1 |
790 .comm h,1,1 |
791 .comm m,1,1 |
792 .comm s,1,1 |
793 .comm Motor_Vorne,1,1 |
794 .comm Motor_Hinten,1,1 |
795 .comm Motor_Rechts,1,1 |
796 .comm Motor_Links,1,1 |
797 .comm Count,1,1 |
798 .comm MotorWert,5,1 |
799 .comm StickNick,2,1 |
800 .comm StickRoll,2,1 |
801 .comm StickGier,2,1 |
802 .comm MotorenEin,1,1 |
803 .comm tmpLuftdruck,2,1 |
804 /* File "analog.c": code 857 = 0x0359 ( 805), prologues 25, epilogues 27 */ |
DEFINED SYMBOLS |
*ABS*:00000000 analog.c |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc6sAnBf.s:3 *ABS*:0000003f __SREG__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc6sAnBf.s:4 *ABS*:0000003e __SP_H__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc6sAnBf.s:5 *ABS*:0000003d __SP_L__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc6sAnBf.s:6 *ABS*:00000000 __tmp_reg__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc6sAnBf.s:7 *ABS*:00000001 __zero_reg__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc6sAnBf.s:13 .text:00000000 ADC_Init |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc6sAnBf.s:26 .text:0000000c __vector_24 |
.bss:00000016 state.2005 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc6sAnBf.s:668 .bss:00000004 AccumulateGier |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc6sAnBf.s:704 .bss:0000000e MessanzahlGier |
*COM*:00000004 Mess_Integral_Gier |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc6sAnBf.s:751 .bss:00000017 kanal.2004 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc6sAnBf.s:749 .bss:00000014 ZaehlMessungen |
*COM*:00000004 Mess_IntegralRoll |
*COM*:00000004 Mess_IntegralRoll2 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc6sAnBf.s:662 .bss:00000002 AccumulateRoll |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc6sAnBf.s:698 .bss:0000000d MessanzahlRoll |
*COM*:00000004 Mess_IntegralNick |
*COM*:00000004 Mess_IntegralNick2 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc6sAnBf.s:656 .bss:00000000 AccumulateNick |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc6sAnBf.s:692 .bss:0000000c MessanzahlNick |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc6sAnBf.s:649 .data:00000000 UBat |
*COM*:00000002 Aktuell_ay |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc6sAnBf.s:674 .bss:00000006 accumulate_AccRoll |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc6sAnBf.s:716 .bss:00000010 messanzahl_AccRoll |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc6sAnBf.s:680 .bss:00000008 accumulate_AccNick |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc6sAnBf.s:710 .bss:0000000f messanzahl_AccNick |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc6sAnBf.s:686 .bss:0000000a accumulate_AccHoch |
*COM*:00000002 Aktuell_ax |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc6sAnBf.s:722 .bss:00000011 messanzahl_AccHoch |
*COM*:00000002 Aktuell_az |
*COM*:00000002 tmpLuftdruck |
*COM*:00000001 messanzahl_Druck |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc6sAnBf.s:736 .data:00000006 MessLuftdruck |
*COM*:00000002 StartLuftdruck |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc6sAnBf.s:743 .bss:00000012 HoeheD |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc6sAnBf.s:728 .data:00000002 Luftdruck |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc6sAnBf.s:603 .text:00000654 SucheLuftruckOffset |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc6sAnBf.s:756 .progmem.data:00000000 __c.1990 |
*COM*:00000001 DruckOffsetSetting |
*COM*:00000002 DiffNick |
*COM*:00000002 DiffRoll |
*COM*:00000001 SenderOkay |
*COM*:00000001 CosinusNickWinkel |
*COM*:00000001 CosinusRollWinkel |
*COM*:00000004 durchschnitt_northing |
*COM*:00000004 durchschnitt_easting |
*COM*:00000002 gps_p |
*COM*:00000002 gps_d |
*COM*:00000002 skal |
*COM*:00000002 gps_gethome |
*COM*:00000002 Aktuell_Nick |
*COM*:00000002 Aktuell_Roll |
*COM*:00000002 Aktuell_Gier |
*COM*:00000001 RemoteTasten |
*COM*:00000001 Timeout |
*COM*:00000004 IntegralNick |
*COM*:00000004 IntegralNick2 |
*COM*:00000004 IntegralRoll |
*COM*:00000004 IntegralRoll2 |
*COM*:00000004 Integral_Gier |
*COM*:00000001 h |
*COM*:00000001 m |
*COM*:00000001 s |
*COM*:00000001 Motor_Vorne |
*COM*:00000001 Motor_Hinten |
*COM*:00000001 Motor_Rechts |
*COM*:00000001 Motor_Links |
*COM*:00000001 Count |
*COM*:00000005 MotorWert |
*COM*:00000002 StickNick |
*COM*:00000002 StickRoll |
*COM*:00000002 StickGier |
*COM*:00000001 MotorenEin |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
AdNeutralGier |
Mess_Integral_Gier2 |
AdNeutralRoll |
AdNeutralNick |
__udivmodhi4 |
NeutralAccY |
NeutralAccX |
NeutralAccZ |
__floatsisf |
__subsf3 |
__fixsfsi |
__divmodhi4 |
__ltsf2 |
__addsf3 |
__gtsf2 |
Mess_Integral_Hoch |
__divmodsi4 |
HoehenWert |
Delay_ms |
_printf_P |
/branches/chris_hallo2/eeprom.c |
---|
--- chris_hallo2/fc.c (nonexistent) |
+++ chris_hallo2/fc.c (revision 171) |
@@ -0,0 +1,828 @@ |
+/*####################################################################################### |
+Flight Control |
+#######################################################################################*/ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Copyright (c) 04.2007 Holger Buss |
+// + Nur für den privaten Gebrauch |
+// + www.MikroKopter.com |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
+// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
+// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
+// + bzgl. der Nutzungsbedingungen aufzunehmen. |
+// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
+// + Verkauf von Luftbildaufnahmen, usw. |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
+// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
+// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
+// + eindeutig als Ursprung verlinkt werden |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
+// + Benutzung auf eigene Gefahr |
+// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
+// + mit unserer Zustimmung zulässig |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
+// + this list of conditions and the following disclaimer. |
+// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
+// + from this software without specific prior written permission. |
+// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
+// + for non-commercial use (directly or indirectly) |
+// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
+// + with our written permission |
+// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
+// + clearly linked as origin |
+// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
+// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
+// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
+// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
+// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
+// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
+// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
+// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
+// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
+// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
+// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
+// + POSSIBILITY OF SUCH DAMAGE. |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+#include "main.h" |
+ |
+unsigned char h,m,s; |
+volatile unsigned char Timeout = 0; |
+volatile int MesswertNick,MesswertRoll,MesswertGier; |
+volatile int AdNeutralNick = 0,AdNeutralRoll = 0,AdNeutralGier = 0; |
+volatile int Mittelwert_AccNick, Mittelwert_AccRoll,Mittelwert_AccHoch, NeutralAccX=0, NeutralAccY=0; |
+volatile float NeutralAccZ = 0; |
+unsigned char CosinusNickWinkel = 0, CosinusRollWinkel = 0; |
+volatile long IntegralNick = 0,IntegralNick2 = 0; |
+volatile long IntegralRoll = 0,IntegralRoll2 = 0; |
+volatile long Integral_Gier = 0; |
+volatile long Mess_IntegralNick = 0,Mess_IntegralNick2 = 0; |
+volatile long Mess_IntegralRoll = 0,Mess_IntegralRoll2 = 0; |
+volatile long Mess_Integral_Gier = 0,Mess_Integral_Gier2 = 0; |
+volatile long Mess_Integral_Hoch = 0; |
+volatile int KompassValue = 0; |
+volatile int KompassStartwert = 0; |
+volatile int KompassRichtung = 0; |
+unsigned char MAX_GAS,MIN_GAS; |
+unsigned char Notlandung = 0; |
+unsigned char HoehenReglerAktiv = 0; |
+ |
+float GyroFaktor; |
+float IntegralFaktor; |
+ |
+volatile int DiffNick,DiffRoll; |
+int Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0; |
+volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count; |
+unsigned char MotorWert[5]; |
+volatile unsigned char SenderOkay = 0; |
+int StickNick = 0,StickRoll = 0,StickGier = 0; |
+char MotorenEin = 0; |
+int HoehenWert = 0; |
+int SollHoehe = 0; |
+ |
+float Kp = FAKTOR_P; |
+float Ki = FAKTOR_I; |
+ |
+unsigned char Parameter_Luftdruck_D = 48; // Wert : 0-250 |
+unsigned char Parameter_MaxHoehe = 251; // Wert : 0-250 |
+unsigned char Parameter_Hoehe_P = 16; // Wert : 0-32 |
+unsigned char Parameter_Hoehe_ACC_Wirkung = 58; // Wert : 0-250 |
+unsigned char Parameter_KompassWirkung = 64; // Wert : 0-250 |
+unsigned char Parameter_Gyro_P = 50; // Wert : 10-250 |
+unsigned char Parameter_Gyro_I = 150; // Wert : 0-250 |
+unsigned char Parameter_Gier_P = 2; // Wert : 1-20 |
+unsigned char Parameter_I_Faktor = 10; // Wert : 1-20 |
+unsigned char Parameter_UserParam1 = 0; |
+unsigned char Parameter_UserParam2 = 0; |
+unsigned char Parameter_UserParam3 = 0; |
+unsigned char Parameter_UserParam4 = 0; |
+unsigned char Parameter_ServoNickControl = 100; |
+struct mk_param_struct EE_Parameter; |
+ |
+void Piep(unsigned char Anzahl) |
+{ |
+ while(Anzahl--) |
+ { |
+ if(MotorenEin) return; //auf keinen Fall im Flug! |
+ beeptime = 100; |
+ Delay_ms(250); |
+ } |
+} |
+ |
+//############################################################################ |
+// Nullwerte ermitteln |
+void SetNeutral(void) |
+//############################################################################ |
+{ |
+ unsigned int timer; |
+ NeutralAccX = 0; |
+ NeutralAccY = 0; |
+ NeutralAccZ = 0; |
+ AdNeutralNick = 0; |
+ AdNeutralRoll = 0; |
+ AdNeutralGier = 0; |
+ CalibrierMittelwert(); |
+ timer = SetDelay(5); |
+ while (!CheckDelay(timer)); |
+ CalibrierMittelwert(); |
+ if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
+ { |
+ if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
+ } |
+ AdNeutralNick= abs(MesswertNick); |
+ AdNeutralRoll= abs(MesswertRoll); |
+ AdNeutralGier= abs(MesswertGier); |
+ NeutralAccY = abs(Mittelwert_AccRoll) / ACC_AMPLIFY; |
+ NeutralAccX = abs(Mittelwert_AccNick) / ACC_AMPLIFY; |
+ NeutralAccZ = Aktuell_az; |
+ |
+ Mess_IntegralNick = 0; |
+ Mess_IntegralNick2 = 0; |
+ Mess_IntegralRoll = 0; |
+ Mess_IntegralRoll2 = 0; |
+ Mess_Integral_Gier = 0; |
+ MesswertNick = 0; |
+ MesswertRoll = 0; |
+ MesswertGier = 0; |
+ StartLuftdruck = Luftdruck; |
+ HoeheD = 0; |
+ Mess_Integral_Hoch = 0; |
+ KompassStartwert = KompassValue; |
+ beeptime = 50; |
+} |
+ |
+//############################################################################ |
+// Bildet den Mittelwert aus den Messwerten |
+void Mittelwert(void) |
+//############################################################################ |
+{ |
+ // ADC auschalten, damit die Werte sich nicht während der Berechnung ändern |
+ ANALOG_OFF; |
+ if(MessanzahlNick) (MesswertNick = AccumulateNick / MessanzahlNick); |
+ if(MessanzahlRoll) (MesswertRoll = AccumulateRoll / MessanzahlRoll); |
+ if(MessanzahlGier) (MesswertGier = AccumulateGier / MessanzahlGier); |
+ if(messanzahl_AccNick) Mittelwert_AccNick = ((long)Mittelwert_AccNick * 7 + ((ACC_AMPLIFY * (long)accumulate_AccNick) / messanzahl_AccNick)) / 8L; |
+ if(messanzahl_AccRoll) Mittelwert_AccRoll = ((long)Mittelwert_AccRoll * 7 + ((ACC_AMPLIFY * (long)accumulate_AccRoll) / messanzahl_AccRoll)) / 8L; |
+ if(messanzahl_AccHoch) Mittelwert_AccHoch = ((long)Mittelwert_AccHoch * 7 + ((long)accumulate_AccHoch) / messanzahl_AccHoch) / 8L; |
+ AccumulateNick = 0; MessanzahlNick = 0; |
+ AccumulateRoll = 0; MessanzahlRoll = 0; |
+ AccumulateGier = 0; MessanzahlGier = 0; |
+ accumulate_AccRoll = 0;messanzahl_AccRoll = 0; |
+ accumulate_AccNick = 0;messanzahl_AccNick = 0; |
+ accumulate_AccHoch = 0;messanzahl_AccHoch = 0; |
+ Integral_Gier = Mess_Integral_Gier; |
+// Integral_Gier2 = Mess_Integral_Gier2; |
+ IntegralNick = Mess_IntegralNick; |
+ IntegralRoll = Mess_IntegralRoll; |
+ IntegralNick2 = Mess_IntegralNick2; |
+ IntegralRoll2 = Mess_IntegralRoll2; |
+ // ADC einschalten |
+ ANALOG_ON; |
+ |
+//------------------------------------------------------------------------------ |
+ if(MesswertNick > 200) MesswertNick += 4 * (MesswertNick - 200); |
+ else |
+ if(MesswertNick < -200) MesswertNick += 4 * (MesswertNick + 200); |
+ |
+ if(MesswertRoll > 200) MesswertRoll += 4 * (MesswertRoll - 200); |
+ else |
+ if(MesswertRoll < -200) MesswertRoll += 4 * (MesswertRoll + 200); |
+//------------------------------------------------------------------------------ |
+ if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--; |
+ if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--; |
+ if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--; |
+ if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--; |
+ if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255; |
+ if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255; |
+ if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255; |
+ if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255; |
+} |
+ |
+//############################################################################ |
+// Messwerte beim Ermitteln der Nullage |
+void CalibrierMittelwert(void) |
+//############################################################################ |
+{ |
+ // ADC auschalten, damit die Werte sich nicht während der Berechnung ändern |
+ ANALOG_OFF; |
+ if(MessanzahlNick) (MesswertNick = AccumulateNick / MessanzahlNick); |
+ if(MessanzahlRoll) (MesswertRoll = AccumulateRoll / MessanzahlRoll); |
+ if(MessanzahlGier) (MesswertGier = AccumulateGier / MessanzahlGier); |
+ if(messanzahl_AccNick) Mittelwert_AccNick = ((ACC_AMPLIFY * (long)accumulate_AccNick) / messanzahl_AccNick); |
+ if(messanzahl_AccRoll) Mittelwert_AccRoll = (ACC_AMPLIFY * (long)accumulate_AccRoll) / messanzahl_AccRoll; |
+ if(messanzahl_AccHoch) Mittelwert_AccHoch = ((long)accumulate_AccHoch) / messanzahl_AccHoch; |
+ AccumulateNick = 0; MessanzahlNick = 0; |
+ AccumulateRoll = 0; MessanzahlRoll = 0; |
+ AccumulateGier = 0; MessanzahlGier = 0; |
+ accumulate_AccRoll = 0;messanzahl_AccRoll = 0; |
+ accumulate_AccNick = 0;messanzahl_AccNick = 0; |
+ accumulate_AccHoch = 0;messanzahl_AccHoch = 0; |
+ // ADC einschalten |
+ ANALOG_ON; |
+ if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--; |
+ if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--; |
+ if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--; |
+ if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--; |
+ if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255; |
+ if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255; |
+ if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255; |
+ if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255; |
+} |
+ |
+//############################################################################ |
+// Senden der Motorwerte per I2C-Bus |
+void SendMotorData(void) |
+//############################################################################ |
+{ |
+ if(MOTOR_OFF || !MotorenEin) |
+ { |
+ Motor_Hinten = 0; |
+ Motor_Vorne = 0; |
+ Motor_Rechts = 0; |
+ Motor_Links = 0; |
+ if(MotorTest[0]) Motor_Vorne = MotorTest[0]; |
+ if(MotorTest[1]) Motor_Hinten = MotorTest[1]; |
+ if(MotorTest[2]) Motor_Links = MotorTest[2]; |
+ if(MotorTest[3]) Motor_Rechts = MotorTest[3]; |
+ } |
+ |
+ DebugOut.Analog[12] = Motor_Vorne; |
+ DebugOut.Analog[13] = Motor_Hinten; |
+ DebugOut.Analog[14] = Motor_Links; |
+ DebugOut.Analog[15] = Motor_Rechts; |
+ |
+ //Start I2C Interrupt Mode |
+ twi_state = 0; |
+ motor = 0; |
+ i2c_start(); |
+} |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Konstanten |
+// + 0-250 -> normale Werte |
+// + 251 -> Poti1 |
+// + 252 -> Poti2 |
+// + 253 -> Poti3 |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+void DefaultKonstanten1(void) |
+{ |
+ EE_Parameter.Kanalbelegung[K_NICK] = 1; |
+ EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
+ EE_Parameter.Kanalbelegung[K_GAS] = 3; |
+ EE_Parameter.Kanalbelegung[K_GIER] = 4; |
+ EE_Parameter.Kanalbelegung[K_POTI1] = 5; |
+ EE_Parameter.Kanalbelegung[K_POTI2] = 6; |
+ EE_Parameter.Kanalbelegung[K_POTI3] = 7; |
+ EE_Parameter.Kanalbelegung[K_POTI4] = 8; |
+ EE_Parameter.GlobalConfig = 0;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV | CFG_KOMPASS_FIX;//0x01; |
+ EE_Parameter.Hoehe_MinGas = 30; |
+ EE_Parameter.MaxHoehe = 251; // Wert : 0-32 251 -> Poti1 |
+ EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
+ EE_Parameter.Luftdruck_D = 70; // Wert : 0-250 |
+ EE_Parameter.Hoehe_ACC_Wirkung = 30; // Wert : 0-250 |
+ EE_Parameter.Hoehe_Verstaerkung = 2; // Wert : 0-50 |
+ EE_Parameter.Stick_P = 4; //2 // Wert : 1-6 |
+ EE_Parameter.Stick_D = 8; //8 // Wert : 0-64 |
+ EE_Parameter.Gier_P = 16; // Wert : 1-20 |
+ EE_Parameter.Gas_Min = 15; // Wert : 0-32 |
+ EE_Parameter.Gas_Max = 250; // Wert : 33-250 |
+ EE_Parameter.GyroAccFaktor = 26; // Wert : 1-64 |
+ EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
+ EE_Parameter.Gyro_P = 120; //80 // Wert : 0-250 |
+ EE_Parameter.Gyro_I = 150; // Wert : 0-250 |
+ EE_Parameter.UnterspannungsWarnung = 90; // Wert : 0-250 |
+ EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
+ EE_Parameter.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
+ EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
+ EE_Parameter.I_Faktor = 5; |
+ EE_Parameter.UserParam1 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam2 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam3 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam4 = 0; //zur freien Verwendung |
+ EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
+ EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
+ EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
+ EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
+ EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
+ EE_Parameter.ServoNickRefresh = 5; |
+ memcpy(EE_Parameter.Name, "Normal\0", 12); |
+} |
+ |
+void DefaultKonstanten2(void) |
+{ |
+ EE_Parameter.Kanalbelegung[K_NICK] = 1; |
+ EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
+ EE_Parameter.Kanalbelegung[K_GAS] = 3; |
+ EE_Parameter.Kanalbelegung[K_GIER] = 4; |
+ EE_Parameter.Kanalbelegung[K_POTI1] = 5; |
+ EE_Parameter.Kanalbelegung[K_POTI2] = 6; |
+ EE_Parameter.Kanalbelegung[K_POTI3] = 7; |
+ EE_Parameter.GlobalConfig = 0;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV;//0x01; |
+ EE_Parameter.Hoehe_MinGas = 30; |
+ EE_Parameter.MaxHoehe = 251; // Wert : 0-32 251 -> Poti1 |
+ EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
+ EE_Parameter.Luftdruck_D = 50; // Wert : 0-250 |
+ EE_Parameter.Hoehe_ACC_Wirkung = 50; // Wert : 0-250 |
+ EE_Parameter.Hoehe_Verstaerkung = 2; // Wert : 0-50 |
+ EE_Parameter.Stick_P = 4; //2 // Wert : 1-6 |
+ EE_Parameter.Stick_D = 0; //8 // Wert : 0-64 |
+ EE_Parameter.Gier_P = 16; // Wert : 1-20 |
+ EE_Parameter.Gas_Min = 15; // Wert : 0-32 |
+ EE_Parameter.Gas_Max = 250; // Wert : 33-250 |
+ EE_Parameter.GyroAccFaktor = 26; // Wert : 1-64 |
+ EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
+ EE_Parameter.Gyro_P = 175; //80 // Wert : 0-250 |
+ EE_Parameter.Gyro_I = 175; // Wert : 0-250 |
+ EE_Parameter.UnterspannungsWarnung = 90; // Wert : 0-250 |
+ EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
+ EE_Parameter.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
+ EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
+ EE_Parameter.I_Faktor = 5; |
+ EE_Parameter.UserParam1 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam2 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam3 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam4 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam3 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam4 = 0; //zur freien Verwendung |
+ EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
+ EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
+ EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
+ EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
+ EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
+ EE_Parameter.ServoNickRefresh = 5; |
+ memcpy(EE_Parameter.Name, "Kamera\0", 12); |
+} |
+ |
+ |
+//############################################################################ |
+// Trägt ggf. das Poti als Parameter ein |
+void ParameterZuordnung(void) |
+//############################################################################ |
+{ |
+ |
+ #define CHK_POTI(b,a,min,max) { if(a > 250) { if(a == 251) b = Poti1; else if(a == 252) b = Poti2; else if(a == 253) b = Poti3; else if(a == 254) b = Poti4;} else b = a; if(b <= min) b = min; else if(b >= max) b = max;} |
+ CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe,0,255); |
+ CHK_POTI(Parameter_Luftdruck_D,EE_Parameter.Luftdruck_D,0,100); |
+ CHK_POTI(Parameter_Hoehe_P,EE_Parameter.Hoehe_P,0,100); |
+ CHK_POTI(Parameter_Hoehe_ACC_Wirkung,EE_Parameter.Hoehe_ACC_Wirkung,0,255); |
+ CHK_POTI(Parameter_KompassWirkung,EE_Parameter.KompassWirkung,0,255); |
+ CHK_POTI(Parameter_Gyro_P,EE_Parameter.Gyro_P,10,255); |
+ CHK_POTI(Parameter_Gyro_I,EE_Parameter.Gyro_I,0,255); |
+ CHK_POTI(Parameter_I_Faktor,EE_Parameter.I_Faktor,0,255); |
+ CHK_POTI(Parameter_UserParam1,EE_Parameter.UserParam1,0,255); |
+ CHK_POTI(Parameter_UserParam2,EE_Parameter.UserParam2,0,255); |
+ CHK_POTI(Parameter_UserParam3,EE_Parameter.UserParam3,0,255); |
+ CHK_POTI(Parameter_UserParam4,EE_Parameter.UserParam4,0,255); |
+ |
+ unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
+ unsigned char ServoNickCompInvert; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
+ unsigned char ServoNickMin; // Wert : 0-250 // Anschlag |
+ unsigned char ServoNickMax; // Wert : 0-250 // Anschlag |
+ |
+ |
+ CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
+ CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
+ CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
+ |
+ Ki = (float) Parameter_I_Faktor * 0.0001; |
+ MAX_GAS = EE_Parameter.Gas_Max; |
+ MIN_GAS = EE_Parameter.Gas_Min; |
+} |
+ |
+ |
+//############################################################################ |
+// |
+void MotorRegler(void) |
+//############################################################################ |
+{ |
+ int motorwert,pd_ergebnis,h,tmp_int; |
+ int GierMischanteil,GasMischanteil; |
+ static long SummeNick=0,SummeRoll=0; |
+ static long sollGier = 0,tmp_long,tmp_long2; |
+ static int IntegralFehlerNick = 0; |
+ static int IntegralFehlerRoll = 0; |
+ static unsigned int RcLostTimer; |
+ static unsigned char delay_neutral = 0; |
+ static unsigned char delay_einschalten = 0,delay_ausschalten = 0; |
+ static unsigned int modell_fliegt = 0; |
+ static int hoehenregler = 0; |
+ static char TimerWerteausgabe = 0; |
+ static char NeueKompassRichtungMerken = 0; |
+ Mittelwert(); |
+ |
+ GRN_ON; |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gaswert ermitteln |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ GasMischanteil = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 120; |
+ if(GasMischanteil < 0) GasMischanteil = 0; |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Emfang schlecht |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(SenderOkay < 100) |
+ { |
+ if(!PcZugriff) beeptime = 500; |
+ if(RcLostTimer) RcLostTimer--; |
+ else |
+ { |
+ MotorenEin = 0; |
+ Notlandung = 0; |
+ } |
+ ROT_ON; |
+ if(modell_fliegt > 2000) // wahrscheinlich in der Luft --> langsam absenken |
+ { |
+ GasMischanteil = EE_Parameter.NotGas; |
+ Notlandung = 1; |
+ PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] = 0; |
+ PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] = 0; |
+ PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] = 0; |
+/* Poti1 = 65; |
+ Poti2 = 48; |
+ Poti3 = 0; |
+*/ } |
+ else MotorenEin = 0; |
+ } |
+ else |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Emfang gut |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(SenderOkay > 140) |
+ { |
+ Notlandung = 0; |
+ RcLostTimer = EE_Parameter.NotGasZeit * 50; |
+ if(GasMischanteil > 40) |
+ { |
+ if(modell_fliegt < 0xffff) modell_fliegt++; |
+ } |
+ if((modell_fliegt < 200) || (GasMischanteil < 40)) |
+ { |
+ SummeNick = 0; |
+ SummeRoll = 0; |
+ Mess_Integral_Gier = 0; |
+ Mess_Integral_Gier2 = 0; |
+ } |
+ if((GasMischanteil > 200) && MotorenEin == 0) |
+ { |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// auf Nullwerte kalibrieren |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) // Neutralwerte |
+ { |
+ unsigned char setting; |
+ if(++delay_neutral > 200) // nicht sofort |
+ { |
+ GRN_OFF; |
+ SetNeutral(); |
+ MotorenEin = 0; |
+ delay_neutral = 0; |
+ modell_fliegt = 0; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70 || abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) > 70) |
+ { |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 1; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 2; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5; |
+ eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], setting); // aktiven Datensatz merken |
+ } |
+ ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
+ Piep(GetActiveParamSetNumber()); |
+ if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
+ { |
+ if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
+ } |
+ } |
+ } |
+ else delay_neutral = 0; |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gas ist unten |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(GasMischanteil < 35) |
+ { |
+ // Starten |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75) |
+ { |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Einschalten |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(++delay_einschalten > 200) |
+ { |
+ delay_einschalten = 200; |
+ modell_fliegt = 1; |
+ MotorenEin = 1; |
+ sollGier = 0; |
+ Mess_Integral_Gier = 0; |
+ Mess_Integral_Gier2 = 0; |
+ Mess_IntegralNick = 0; |
+ Mess_IntegralRoll = 0; |
+ Mess_IntegralNick2 = IntegralNick; |
+ Mess_IntegralRoll2 = IntegralRoll; |
+ SummeNick = 0; |
+ SummeRoll = 0; |
+ } |
+ } |
+ else delay_einschalten = 0; |
+ //Auf Neutralwerte setzen |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Auschalten |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) |
+ { |
+ if(++delay_ausschalten > 200) // nicht sofort |
+ { |
+ MotorenEin = 0; |
+ delay_ausschalten = 200; |
+ modell_fliegt = 0; |
+ } |
+ } |
+ else delay_ausschalten = 0; |
+ } |
+ } |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// neue Werte von der Funke |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(!NewPpmData-- || Notlandung) |
+ { |
+ ParameterZuordnung(); |
+ StickNick = PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P; |
+ StickNick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D; |
+ StickRoll = PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P; |
+ StickRoll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D; |
+ StickGier = -PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]; |
+ |
+ GyroFaktor = ((float)Parameter_Gyro_P + 10.0) / 256.0; |
+ IntegralFaktor = ((float) Parameter_Gyro_I) / 44000; |
+ |
+ if(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor = 0; |
+ if(GyroFaktor < 0) GyroFaktor = 0; |
+ if(IntegralFaktor < 0) IntegralFaktor = 0; |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Bei Empfangsausfall im Flug |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(Notlandung) |
+ { |
+ StickGier = 0; |
+ StickNick = 0; |
+ StickRoll = 0; |
+ GyroFaktor = 0.1; |
+ IntegralFaktor = 0.005; |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gyro-Drift kompensieren |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define DRIFT_FAKTOR 3 |
+ if(ZaehlMessungen >= 1000 / DRIFT_FAKTOR) |
+ { |
+ IntegralFehlerNick = IntegralNick2 - IntegralNick; |
+ IntegralFehlerRoll = IntegralRoll2 - IntegralRoll; |
+ ZaehlMessungen = 0; |
+ if(IntegralFehlerNick > 500/DRIFT_FAKTOR) AdNeutralNick++; |
+ if(IntegralFehlerNick < -500/DRIFT_FAKTOR) AdNeutralNick--; |
+ if(IntegralFehlerRoll > 500/DRIFT_FAKTOR) AdNeutralRoll++; |
+ if(IntegralFehlerRoll < -500/DRIFT_FAKTOR) AdNeutralRoll--; |
+ if(Mess_Integral_Gier2 > 500/DRIFT_FAKTOR) AdNeutralGier--; |
+ if(Mess_Integral_Gier2 <-500/DRIFT_FAKTOR) AdNeutralGier++; |
+ ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
+ Mess_IntegralNick2 = IntegralNick; |
+ Mess_IntegralRoll2 = IntegralRoll; |
+ Mess_Integral_Gier2 = Integral_Gier; |
+ ANALOG_ON; // ADC einschalten |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Integrale auf ACC-Signal abgleichen |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick) / 16; |
+ tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll) / 16; |
+#define AUSGLEICH 500 |
+ if(tmp_long > AUSGLEICH) tmp_long = AUSGLEICH; |
+ if(tmp_long < -AUSGLEICH) tmp_long =-AUSGLEICH; |
+ if(tmp_long2 > AUSGLEICH) tmp_long2 = AUSGLEICH; |
+ if(tmp_long2 <-AUSGLEICH) tmp_long2 =-AUSGLEICH; |
+ ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
+ Mess_IntegralNick -= tmp_long; |
+ Mess_IntegralRoll -= tmp_long2; |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gieren |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ sollGier = StickGier; |
+ if(abs(StickGier) > 35) |
+ { |
+ if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX)) NeueKompassRichtungMerken = 1; |
+ } |
+ tmp_int = EE_Parameter.Gier_P * (sollGier * abs(sollGier)) / 256; // expo |
+ Mess_Integral_Gier -= tmp_int; |
+ if(Mess_Integral_Gier > 30000) Mess_Integral_Gier = 30000; // begrenzen |
+ if(Mess_Integral_Gier <-30000) Mess_Integral_Gier =-30000; |
+ |
+ ANALOG_ON; // ADC einschalten |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Kompass |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ //KompassValue = 12; |
+ if(KompassValue && (EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV)) |
+ { |
+ int w,v; |
+ static int SignalSchlecht = 0; |
+ w = abs(IntegralNick /512); // mit zunehmender Neigung den Einfluss drosseln |
+ v = abs(IntegralRoll /512); |
+ if(v > w) w = v; // grösste Neigung ermitteln |
+ if(w < 25 && NeueKompassRichtungMerken && !SignalSchlecht) |
+ { |
+ KompassStartwert = KompassValue; |
+ NeueKompassRichtungMerken = 0; |
+ } |
+ w = (w * Parameter_KompassWirkung) / 64; // auf die Wirkung normieren |
+ w = Parameter_KompassWirkung - w; // Wirkung ggf drosseln |
+ if(w > 0) |
+ { |
+ ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
+ if(!SignalSchlecht) Mess_Integral_Gier += (KompassRichtung * w) / 32; // nach Kompass ausrichten |
+ ANALOG_ON; // ADC einschalten |
+ if(SignalSchlecht) SignalSchlecht--; |
+ } |
+ else SignalSchlecht = 500; // so lange das Signal taub stellen --> ca. 1 sek |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// GPS |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+if(EE_Parameter.GlobalConfig & CFG_GPS_AKTIV) |
+{ |
+ gps_p = Parameter_UserParam1; |
+ gps_d = Parameter_UserParam2; |
+ |
+ gps_main(); |
+} |
+else |
+{ |
+ GPS_Nick = 0; |
+ GPS_Roll = 0; |
+} |
+ |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Debugwerte zuordnen |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+DebugOut.Sekunden++; |
+ if(!TimerWerteausgabe--) |
+ { |
+ TimerWerteausgabe = 49; |
+// DebugOut.Analog[0] = MesswertNick; |
+// DebugOut.Analog[1] = MesswertRoll; |
+// DebugOut.Analog[2] = MesswertGier; |
+ DebugOut.Analog[0] = IntegralNick / EE_Parameter.GyroAccFaktor; |
+ DebugOut.Analog[1] = IntegralRoll / EE_Parameter.GyroAccFaktor; |
+ DebugOut.Analog[2] = Mittelwert_AccNick; |
+ DebugOut.Analog[3] = Mittelwert_AccRoll; |
+ DebugOut.Analog[4] = MesswertGier; |
+ DebugOut.Analog[5] = HoehenWert; |
+ DebugOut.Analog[6] = (Mess_Integral_Hoch / 512); |
+ DebugOut.Analog[7] = GasMischanteil; |
+ DebugOut.Analog[8] = KompassValue; |
+// DebugOut.Analog[9] = SollHoehe; |
+// DebugOut.Analog[10] = Mess_Integral_Gier / 128; |
+// DebugOut.Analog[11] = KompassStartwert; |
+// DebugOut.Analog[10] = Parameter_Gyro_I; |
+// DebugOut.Analog[10] = EE_Parameter.Gyro_I; |
+// DebugOut.Analog[9] = KompassRichtung; |
+// DebugOut.Analog[10] = GasMischanteil; |
+// DebugOut.Analog[3] = HoeheD * 32; |
+// DebugOut.Analog[4] = hoehenregler; |
+ } |
+ |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Drehgeschwindigkeit und -winkel zu einem Istwert zusammenfassen |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ MesswertNick = IntegralNick * IntegralFaktor + MesswertNick * GyroFaktor; |
+ MesswertRoll = IntegralRoll * IntegralFaktor + MesswertRoll * GyroFaktor; |
+ MesswertGier = MesswertGier * (GyroFaktor/2) + Integral_Gier * IntegralFaktor; |
+ |
+ // Maximalwerte abfangen |
+ #define MAX_SENSOR 2048 |
+ if(MesswertNick > MAX_SENSOR) MesswertNick = MAX_SENSOR; |
+ if(MesswertNick < -MAX_SENSOR) MesswertNick = -MAX_SENSOR; |
+ if(MesswertRoll > MAX_SENSOR) MesswertRoll = MAX_SENSOR; |
+ if(MesswertRoll < -MAX_SENSOR) MesswertRoll = -MAX_SENSOR; |
+ if(MesswertGier > MAX_SENSOR) MesswertGier = MAX_SENSOR; |
+ if(MesswertGier < -MAX_SENSOR) MesswertGier = -MAX_SENSOR; |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Höhenregelung |
+// Die Höhenregelung schwächt lediglich das Gas ab, erhöht es allerdings nicht |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+//OCR0B = 180 - (Poti1 + 120) / 4; |
+//DruckOffsetSetting = OCR0B; |
+ if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung |
+ { |
+ int tmp_int; |
+ if(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER) // Regler wird über Schalter gesteuert |
+ { |
+ if(Parameter_MaxHoehe < 50) |
+ { |
+ SollHoehe = HoehenWert - 20; // Parameter_MaxHoehe ist der PPM-Wert des Schalters |
+ HoehenReglerAktiv = 0; |
+ } |
+ else |
+ HoehenReglerAktiv = 1; |
+ } |
+ else |
+ { |
+ SollHoehe = Parameter_MaxHoehe * EE_Parameter.Hoehe_Verstaerkung - 20; |
+ HoehenReglerAktiv = 1; |
+ } |
+ |
+ if(Notlandung) SollHoehe = 0; |
+ h = HoehenWert; |
+ if((h > SollHoehe) && HoehenReglerAktiv) // zu hoch --> drosseln |
+ { h = ((h - SollHoehe) * (int) Parameter_Hoehe_P) / 16; // Differenz bestimmen --> P-Anteil |
+ h = GasMischanteil - h; // vom Gas abziehen |
+ h -= (HoeheD * Parameter_Luftdruck_D)/8; // D-Anteil |
+ tmp_int = ((Mess_Integral_Hoch / 512) * (signed long) Parameter_Hoehe_ACC_Wirkung) / 32; |
+ if(tmp_int > 50) tmp_int = 50; |
+ else if(tmp_int < -50) tmp_int = -50; |
+ h -= tmp_int; |
+ hoehenregler = (hoehenregler*15 + h) / 16; |
+ if(hoehenregler < EE_Parameter.Hoehe_MinGas) // nicht unter MIN |
+ { |
+ if(GasMischanteil >= EE_Parameter.Hoehe_MinGas) hoehenregler = EE_Parameter.Hoehe_MinGas; |
+ if(GasMischanteil < EE_Parameter.Hoehe_MinGas) hoehenregler = GasMischanteil; |
+ } |
+ if(hoehenregler > GasMischanteil) hoehenregler = GasMischanteil; // nicht mehr als Gas |
+ GasMischanteil = hoehenregler; |
+ } |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Mischer und PI-Regler |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gier-Anteil |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ GierMischanteil = MesswertGier - sollGier; // Regler für Gier |
+ if(GierMischanteil > 100) GierMischanteil = 100; |
+ if(GierMischanteil < -100) GierMischanteil = -100; |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Nick-Achse |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ DiffNick = Kp * (MesswertNick - (StickNick - GPS_Nick)); // Differenz bestimmen |
+ SummeNick += DiffNick; // I-Anteil |
+ if(SummeNick > 0) SummeNick-= (abs(SummeNick)/256 + 1); else SummeNick += abs(SummeNick)/256 + 1; |
+ if(SummeNick > 16000) SummeNick = 16000; |
+ if(SummeNick < -16000) SummeNick = -16000; |
+ pd_ergebnis = DiffNick + Ki * SummeNick; // PI-Regler für Nick |
+ // Motor Vorn |
+ motorwert = GasMischanteil + pd_ergebnis + GierMischanteil; // Mischer |
+ if ((motorwert < 0) | (GasMischanteil < 10)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Vorne = motorwert; |
+ // Motor Heck |
+ motorwert = GasMischanteil - pd_ergebnis + GierMischanteil; |
+ if ((motorwert < 0) | (GasMischanteil < 10)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Hinten = motorwert; |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Roll-Achse |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ DiffRoll = Kp * (MesswertRoll - (StickRoll - GPS_Roll)); // Differenz bestimmen |
+ SummeRoll += DiffRoll; // I-Anteil |
+ if(SummeRoll > 0) SummeRoll-= (abs(SummeRoll)/256 + 1); else SummeRoll += abs(SummeRoll)/256 + 1; |
+ if(SummeRoll > 16000) SummeRoll = 16000; |
+ if(SummeRoll < -16000) SummeRoll = -16000; |
+ pd_ergebnis = DiffRoll + Ki * SummeRoll; // PI-Regler für Roll |
+ // Motor Links |
+ motorwert = GasMischanteil + pd_ergebnis - GierMischanteil; |
+ if ((motorwert < 0) | (GasMischanteil < 10)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Links = motorwert; |
+ // Motor Rechts |
+ motorwert = GasMischanteil - pd_ergebnis - GierMischanteil; |
+ if ((motorwert < 0) | (GasMischanteil < 10)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Rechts = motorwert; |
+ // +++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+} |
+ |
/branches/chris_hallo2/fc.d |
---|
0,0 → 1,2 |
fc.o fc.d : fc.c main.h old_macros.h _settings.h printf_P.h timer0.h uart.h \ |
analog.h twimaster.h menu.h rc.h fc.h gps.h |
/branches/chris_hallo2/fc.h |
---|
0,0 → 1,106 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
#ifndef _FC_H |
#define _FC_H |
extern volatile unsigned char Timeout; |
extern unsigned char Sekunde,Minute; |
extern volatile long IntegralNick,IntegralNick2; |
extern volatile long IntegralRoll,IntegralRoll2; |
extern volatile long Mess_IntegralNick,Mess_IntegralNick2; |
extern volatile long Mess_IntegralRoll,Mess_IntegralRoll2; |
extern volatile long Mess_Integral_Hoch; |
extern volatile long Integral_Gier,Mess_Integral_Gier,Mess_Integral_Gier2; |
extern volatile int KompassValue; |
extern volatile int KompassStartwert; |
extern volatile int KompassRichtung; |
extern int HoehenWert; |
extern int SollHoehe; |
extern volatile int MesswertNick,MesswertRoll,MesswertGier; |
extern volatile int AdNeutralNick,AdNeutralRoll,AdNeutralGier, Mittelwert_AccNick, Mittelwert_AccRoll; |
extern volatile int NeutralAccX, NeutralAccY,Mittelwert_AccHoch; |
extern volatile float NeutralAccZ; |
void MotorRegler(void); |
void SendMotorData(void); |
void CalibrierMittelwert(void); |
void Mittelwert(void); |
void SetNeutral(void); |
unsigned char h,m,s; |
volatile unsigned char Timeout ; |
unsigned char CosinusNickWinkel, CosinusRollWinkel; |
volatile long IntegralNick,IntegralNick2; |
volatile long IntegralRoll,IntegralRoll2; |
volatile long Integral_Gier; |
volatile long Mess_IntegralNick,Mess_IntegralNick2; |
volatile long Mess_IntegralRoll,Mess_IntegralRoll2; |
volatile long Mess_Integral_Gier; |
volatile int DiffNick,DiffRoll; |
extern int Poti1, Poti2, Poti3, Poti4; |
volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count; |
unsigned char MotorWert[5]; |
volatile unsigned char SenderOkay; |
int StickNick,StickRoll,StickGier; |
char MotorenEin; |
extern void DefaultKonstanten(void); |
#define STRUCT_PARAM_LAENGE 58 |
struct mk_param_struct |
{ |
unsigned char Kanalbelegung[8]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3 |
unsigned char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv |
unsigned char Hoehe_MinGas; // Wert : 0-100 |
unsigned char Luftdruck_D; // Wert : 0-250 |
unsigned char MaxHoehe; // Wert : 0-32 |
unsigned char Hoehe_P; // Wert : 0-32 |
unsigned char Hoehe_Verstaerkung; // Wert : 0-50 |
unsigned char Hoehe_ACC_Wirkung; // Wert : 0-250 |
unsigned char Stick_P; // Wert : 1-6 |
unsigned char Stick_D; // Wert : 0-64 |
unsigned char Gier_P; // Wert : 1-20 |
unsigned char Gas_Min; // Wert : 0-32 |
unsigned char Gas_Max; // Wert : 33-250 |
unsigned char GyroAccFaktor; // Wert : 1-64 |
unsigned char KompassWirkung; // Wert : 0-32 |
unsigned char Gyro_P; // Wert : 10-250 |
unsigned char Gyro_I; // Wert : 0-250 |
unsigned char UnterspannungsWarnung; // Wert : 0-250 |
unsigned char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust |
unsigned char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen |
unsigned char UfoAusrichtung; // X oder + Formation |
unsigned char I_Faktor; // Wert : 0-250 |
unsigned char UserParam1; // Wert : 0-250 |
unsigned char UserParam2; // Wert : 0-250 |
unsigned char UserParam3; // Wert : 0-250 |
unsigned char UserParam4; // Wert : 0-250 |
unsigned char ServoNickControl; // Wert : 0-250 // Stellung des Servos |
unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
unsigned char ServoNickMin; // Wert : 0-250 // Anschlag |
unsigned char ServoNickMax; // Wert : 0-250 // Anschlag |
unsigned char ServoNickRefresh; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
unsigned char ServoNickCompInvert; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
unsigned char Reserved[7]; |
char Name[12]; |
}; |
extern struct mk_param_struct EE_Parameter; |
extern unsigned char Parameter_Luftdruck_D; |
extern unsigned char Parameter_MaxHoehe; |
extern unsigned char Parameter_Hoehe_P; |
extern unsigned char Parameter_Hoehe_ACC_Wirkung; |
extern unsigned char Parameter_KompassWirkung; |
extern unsigned char Parameter_Gyro_P; |
extern unsigned char Parameter_Gyro_I; |
extern unsigned char Parameter_Gier_P; |
extern unsigned char Parameter_ServoNickControl; |
#endif //_FC_H |
/branches/chris_hallo2/fc.lst |
---|
0,0 → 1,4487 |
1 .file "fc.c" |
2 .arch atmega644 |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .text |
11 .global Mittelwert |
13 Mittelwert: |
14 /* prologue: frame size=0 */ |
15 0000 AF92 push r10 |
16 0002 BF92 push r11 |
17 0004 CF92 push r12 |
18 0006 DF92 push r13 |
19 0008 EF92 push r14 |
20 000a FF92 push r15 |
21 000c 0F93 push r16 |
22 000e 1F93 push r17 |
23 /* prologue end (size=8) */ |
24 0010 1092 7A00 sts 122,__zero_reg__ |
25 0014 8091 0000 lds r24,MessanzahlNick |
26 0018 8823 tst r24 |
27 001a 01F0 breq .L2 |
28 001c 8091 0000 lds r24,AccumulateNick |
29 0020 9091 0000 lds r25,(AccumulateNick)+1 |
30 0024 6091 0000 lds r22,MessanzahlNick |
31 0028 7727 clr r23 |
32 002a 0E94 0000 call __divmodhi4 |
33 002e 7093 0000 sts (MesswertNick)+1,r23 |
34 0032 6093 0000 sts MesswertNick,r22 |
35 .L2: |
36 0036 8091 0000 lds r24,MessanzahlRoll |
37 003a 8823 tst r24 |
38 003c 01F0 breq .L4 |
39 003e 8091 0000 lds r24,AccumulateRoll |
40 0042 9091 0000 lds r25,(AccumulateRoll)+1 |
41 0046 6091 0000 lds r22,MessanzahlRoll |
42 004a 7727 clr r23 |
43 004c 0E94 0000 call __divmodhi4 |
44 0050 7093 0000 sts (MesswertRoll)+1,r23 |
45 0054 6093 0000 sts MesswertRoll,r22 |
46 .L4: |
47 0058 8091 0000 lds r24,MessanzahlGier |
48 005c 8823 tst r24 |
49 005e 01F0 breq .L6 |
50 0060 8091 0000 lds r24,AccumulateGier |
51 0064 9091 0000 lds r25,(AccumulateGier)+1 |
52 0068 6091 0000 lds r22,MessanzahlGier |
53 006c 7727 clr r23 |
54 006e 0E94 0000 call __divmodhi4 |
55 0072 7093 0000 sts (MesswertGier)+1,r23 |
56 0076 6093 0000 sts MesswertGier,r22 |
57 .L6: |
58 007a 8091 0000 lds r24,messanzahl_AccNick |
59 007e 8823 tst r24 |
60 0080 01F0 breq .L8 |
61 0082 E090 0000 lds r14,Mittelwert_AccNick |
62 0086 F090 0000 lds r15,(Mittelwert_AccNick)+1 |
63 008a 6091 0000 lds r22,accumulate_AccNick |
64 008e 7091 0000 lds r23,(accumulate_AccNick)+1 |
65 0092 2091 0000 lds r18,messanzahl_AccNick |
66 0096 0027 clr r16 |
67 0098 F7FC sbrc r15,7 |
68 009a 0095 com r16 |
69 009c 102F mov r17,r16 |
70 009e 5701 movw r10,r14 |
71 00a0 6801 movw r12,r16 |
72 00a2 43E0 ldi r20,3 |
73 00a4 AA0C 1: lsl r10 |
74 00a6 BB1C rol r11 |
75 00a8 CC1C rol r12 |
76 00aa DD1C rol r13 |
77 00ac 4A95 dec r20 |
78 00ae 01F4 brne 1b |
79 00b0 AE18 sub r10,r14 |
80 00b2 BF08 sbc r11,r15 |
81 00b4 C00A sbc r12,r16 |
82 00b6 D10A sbc r13,r17 |
83 00b8 8827 clr r24 |
84 00ba 77FD sbrc r23,7 |
85 00bc 8095 com r24 |
86 00be 982F mov r25,r24 |
87 00c0 34E0 ldi r19,4 |
88 00c2 660F 1: lsl r22 |
89 00c4 771F rol r23 |
90 00c6 881F rol r24 |
91 00c8 991F rol r25 |
92 00ca 3A95 dec r19 |
93 00cc 01F4 brne 1b |
94 00ce 3327 clr r19 |
95 00d0 4427 clr r20 |
96 00d2 5527 clr r21 |
97 00d4 0E94 0000 call __divmodsi4 |
98 00d8 A20E add r10,r18 |
99 00da B31E adc r11,r19 |
100 00dc C41E adc r12,r20 |
101 00de D51E adc r13,r21 |
102 00e0 C601 movw r24,r12 |
103 00e2 B501 movw r22,r10 |
104 00e4 28E0 ldi r18,lo8(8) |
105 00e6 30E0 ldi r19,hi8(8) |
106 00e8 40E0 ldi r20,hlo8(8) |
107 00ea 50E0 ldi r21,hhi8(8) |
108 00ec 0E94 0000 call __divmodsi4 |
109 00f0 3093 0000 sts (Mittelwert_AccNick)+1,r19 |
110 00f4 2093 0000 sts Mittelwert_AccNick,r18 |
111 .L8: |
112 00f8 8091 0000 lds r24,messanzahl_AccRoll |
113 00fc 8823 tst r24 |
114 00fe 01F0 breq .L10 |
115 0100 E090 0000 lds r14,Mittelwert_AccRoll |
116 0104 F090 0000 lds r15,(Mittelwert_AccRoll)+1 |
117 0108 6091 0000 lds r22,accumulate_AccRoll |
118 010c 7091 0000 lds r23,(accumulate_AccRoll)+1 |
119 0110 2091 0000 lds r18,messanzahl_AccRoll |
120 0114 0027 clr r16 |
121 0116 F7FC sbrc r15,7 |
122 0118 0095 com r16 |
123 011a 102F mov r17,r16 |
124 011c 5701 movw r10,r14 |
125 011e 6801 movw r12,r16 |
126 0120 83E0 ldi r24,3 |
127 0122 AA0C 1: lsl r10 |
128 0124 BB1C rol r11 |
129 0126 CC1C rol r12 |
130 0128 DD1C rol r13 |
131 012a 8A95 dec r24 |
132 012c 01F4 brne 1b |
133 012e AE18 sub r10,r14 |
134 0130 BF08 sbc r11,r15 |
135 0132 C00A sbc r12,r16 |
136 0134 D10A sbc r13,r17 |
137 0136 8827 clr r24 |
138 0138 77FD sbrc r23,7 |
139 013a 8095 com r24 |
140 013c 982F mov r25,r24 |
141 013e B4E0 ldi r27,4 |
142 0140 660F 1: lsl r22 |
143 0142 771F rol r23 |
144 0144 881F rol r24 |
145 0146 991F rol r25 |
146 0148 BA95 dec r27 |
147 014a 01F4 brne 1b |
148 014c 3327 clr r19 |
149 014e 4427 clr r20 |
150 0150 5527 clr r21 |
151 0152 0E94 0000 call __divmodsi4 |
152 0156 A20E add r10,r18 |
153 0158 B31E adc r11,r19 |
154 015a C41E adc r12,r20 |
155 015c D51E adc r13,r21 |
156 015e C601 movw r24,r12 |
157 0160 B501 movw r22,r10 |
158 0162 28E0 ldi r18,lo8(8) |
159 0164 30E0 ldi r19,hi8(8) |
160 0166 40E0 ldi r20,hlo8(8) |
161 0168 50E0 ldi r21,hhi8(8) |
162 016a 0E94 0000 call __divmodsi4 |
163 016e 3093 0000 sts (Mittelwert_AccRoll)+1,r19 |
164 0172 2093 0000 sts Mittelwert_AccRoll,r18 |
165 .L10: |
166 0176 8091 0000 lds r24,messanzahl_AccHoch |
167 017a 8823 tst r24 |
168 017c 01F0 breq .L12 |
169 017e E090 0000 lds r14,Mittelwert_AccHoch |
170 0182 F090 0000 lds r15,(Mittelwert_AccHoch)+1 |
171 0186 6091 0000 lds r22,accumulate_AccHoch |
172 018a 7091 0000 lds r23,(accumulate_AccHoch)+1 |
173 018e 2091 0000 lds r18,messanzahl_AccHoch |
174 0192 0027 clr r16 |
175 0194 F7FC sbrc r15,7 |
176 0196 0095 com r16 |
177 0198 102F mov r17,r16 |
178 019a 5701 movw r10,r14 |
179 019c 6801 movw r12,r16 |
180 019e A3E0 ldi r26,3 |
181 01a0 AA0C 1: lsl r10 |
182 01a2 BB1C rol r11 |
183 01a4 CC1C rol r12 |
184 01a6 DD1C rol r13 |
185 01a8 AA95 dec r26 |
186 01aa 01F4 brne 1b |
187 01ac AE18 sub r10,r14 |
188 01ae BF08 sbc r11,r15 |
189 01b0 C00A sbc r12,r16 |
190 01b2 D10A sbc r13,r17 |
191 01b4 8827 clr r24 |
192 01b6 77FD sbrc r23,7 |
193 01b8 8095 com r24 |
194 01ba 982F mov r25,r24 |
195 01bc 3327 clr r19 |
196 01be 4427 clr r20 |
197 01c0 5527 clr r21 |
198 01c2 0E94 0000 call __divmodsi4 |
199 01c6 A20E add r10,r18 |
200 01c8 B31E adc r11,r19 |
201 01ca C41E adc r12,r20 |
202 01cc D51E adc r13,r21 |
203 01ce C601 movw r24,r12 |
204 01d0 B501 movw r22,r10 |
205 01d2 28E0 ldi r18,lo8(8) |
206 01d4 30E0 ldi r19,hi8(8) |
207 01d6 40E0 ldi r20,hlo8(8) |
208 01d8 50E0 ldi r21,hhi8(8) |
209 01da 0E94 0000 call __divmodsi4 |
210 01de 3093 0000 sts (Mittelwert_AccHoch)+1,r19 |
211 01e2 2093 0000 sts Mittelwert_AccHoch,r18 |
212 .L12: |
213 01e6 1092 0000 sts (AccumulateNick)+1,__zero_reg__ |
214 01ea 1092 0000 sts AccumulateNick,__zero_reg__ |
215 01ee 1092 0000 sts MessanzahlNick,__zero_reg__ |
216 01f2 1092 0000 sts (AccumulateRoll)+1,__zero_reg__ |
217 01f6 1092 0000 sts AccumulateRoll,__zero_reg__ |
218 01fa 1092 0000 sts MessanzahlRoll,__zero_reg__ |
219 01fe 1092 0000 sts (AccumulateGier)+1,__zero_reg__ |
220 0202 1092 0000 sts AccumulateGier,__zero_reg__ |
221 0206 1092 0000 sts MessanzahlGier,__zero_reg__ |
222 020a 1092 0000 sts (accumulate_AccRoll)+1,__zero_reg__ |
223 020e 1092 0000 sts accumulate_AccRoll,__zero_reg__ |
224 0212 1092 0000 sts messanzahl_AccRoll,__zero_reg__ |
225 0216 1092 0000 sts (accumulate_AccNick)+1,__zero_reg__ |
226 021a 1092 0000 sts accumulate_AccNick,__zero_reg__ |
227 021e 1092 0000 sts messanzahl_AccNick,__zero_reg__ |
228 0222 1092 0000 sts (accumulate_AccHoch)+1,__zero_reg__ |
229 0226 1092 0000 sts accumulate_AccHoch,__zero_reg__ |
230 022a 1092 0000 sts messanzahl_AccHoch,__zero_reg__ |
231 022e 8091 0000 lds r24,Mess_Integral_Gier |
232 0232 9091 0000 lds r25,(Mess_Integral_Gier)+1 |
233 0236 A091 0000 lds r26,(Mess_Integral_Gier)+2 |
234 023a B091 0000 lds r27,(Mess_Integral_Gier)+3 |
235 023e 8093 0000 sts Integral_Gier,r24 |
236 0242 9093 0000 sts (Integral_Gier)+1,r25 |
237 0246 A093 0000 sts (Integral_Gier)+2,r26 |
238 024a B093 0000 sts (Integral_Gier)+3,r27 |
239 024e 8091 0000 lds r24,Mess_IntegralNick |
240 0252 9091 0000 lds r25,(Mess_IntegralNick)+1 |
241 0256 A091 0000 lds r26,(Mess_IntegralNick)+2 |
242 025a B091 0000 lds r27,(Mess_IntegralNick)+3 |
243 025e 8093 0000 sts IntegralNick,r24 |
244 0262 9093 0000 sts (IntegralNick)+1,r25 |
245 0266 A093 0000 sts (IntegralNick)+2,r26 |
246 026a B093 0000 sts (IntegralNick)+3,r27 |
247 026e 8091 0000 lds r24,Mess_IntegralRoll |
248 0272 9091 0000 lds r25,(Mess_IntegralRoll)+1 |
249 0276 A091 0000 lds r26,(Mess_IntegralRoll)+2 |
250 027a B091 0000 lds r27,(Mess_IntegralRoll)+3 |
251 027e 8093 0000 sts IntegralRoll,r24 |
252 0282 9093 0000 sts (IntegralRoll)+1,r25 |
253 0286 A093 0000 sts (IntegralRoll)+2,r26 |
254 028a B093 0000 sts (IntegralRoll)+3,r27 |
255 028e 8091 0000 lds r24,Mess_IntegralNick2 |
256 0292 9091 0000 lds r25,(Mess_IntegralNick2)+1 |
257 0296 A091 0000 lds r26,(Mess_IntegralNick2)+2 |
258 029a B091 0000 lds r27,(Mess_IntegralNick2)+3 |
259 029e 8093 0000 sts IntegralNick2,r24 |
260 02a2 9093 0000 sts (IntegralNick2)+1,r25 |
261 02a6 A093 0000 sts (IntegralNick2)+2,r26 |
262 02aa B093 0000 sts (IntegralNick2)+3,r27 |
263 02ae 8091 0000 lds r24,Mess_IntegralRoll2 |
264 02b2 9091 0000 lds r25,(Mess_IntegralRoll2)+1 |
265 02b6 A091 0000 lds r26,(Mess_IntegralRoll2)+2 |
266 02ba B091 0000 lds r27,(Mess_IntegralRoll2)+3 |
267 02be 8093 0000 sts IntegralRoll2,r24 |
268 02c2 9093 0000 sts (IntegralRoll2)+1,r25 |
269 02c6 A093 0000 sts (IntegralRoll2)+2,r26 |
270 02ca B093 0000 sts (IntegralRoll2)+3,r27 |
271 02ce 8FEE ldi r24,lo8(-17) |
272 02d0 8093 7A00 sts 122,r24 |
273 02d4 8091 0000 lds r24,MesswertNick |
274 02d8 9091 0000 lds r25,(MesswertNick)+1 |
275 02dc 893C cpi r24,201 |
276 02de 9105 cpc r25,__zero_reg__ |
277 02e0 04F0 brlt .L14 |
278 02e2 2091 0000 lds r18,MesswertNick |
279 02e6 3091 0000 lds r19,(MesswertNick)+1 |
280 02ea 8091 0000 lds r24,MesswertNick |
281 02ee 9091 0000 lds r25,(MesswertNick)+1 |
282 02f2 880F lsl r24 |
283 02f4 991F rol r25 |
284 02f6 880F lsl r24 |
285 02f8 991F rol r25 |
286 02fa 2052 subi r18,lo8(-(-800)) |
287 02fc 3340 sbci r19,hi8(-(-800)) |
288 02fe 00C0 rjmp .L59 |
289 .L14: |
290 0300 8091 0000 lds r24,MesswertNick |
291 0304 9091 0000 lds r25,(MesswertNick)+1 |
292 0308 8853 subi r24,lo8(-200) |
293 030a 9F4F sbci r25,hi8(-200) |
294 030c 04F4 brge .L16 |
295 030e 2091 0000 lds r18,MesswertNick |
296 0312 3091 0000 lds r19,(MesswertNick)+1 |
297 0316 8091 0000 lds r24,MesswertNick |
298 031a 9091 0000 lds r25,(MesswertNick)+1 |
299 031e 880F lsl r24 |
300 0320 991F rol r25 |
301 0322 880F lsl r24 |
302 0324 991F rol r25 |
303 0326 205E subi r18,lo8(-(800)) |
304 0328 3C4F sbci r19,hi8(-(800)) |
305 .L59: |
306 032a 820F add r24,r18 |
307 032c 931F adc r25,r19 |
308 032e 9093 0000 sts (MesswertNick)+1,r25 |
309 0332 8093 0000 sts MesswertNick,r24 |
310 .L16: |
311 0336 8091 0000 lds r24,MesswertRoll |
312 033a 9091 0000 lds r25,(MesswertRoll)+1 |
313 033e 893C cpi r24,201 |
314 0340 9105 cpc r25,__zero_reg__ |
315 0342 04F0 brlt .L18 |
316 0344 2091 0000 lds r18,MesswertRoll |
317 0348 3091 0000 lds r19,(MesswertRoll)+1 |
318 034c 8091 0000 lds r24,MesswertRoll |
319 0350 9091 0000 lds r25,(MesswertRoll)+1 |
320 0354 880F lsl r24 |
321 0356 991F rol r25 |
322 0358 880F lsl r24 |
323 035a 991F rol r25 |
324 035c 2052 subi r18,lo8(-(-800)) |
325 035e 3340 sbci r19,hi8(-(-800)) |
326 0360 00C0 rjmp .L60 |
327 .L18: |
328 0362 8091 0000 lds r24,MesswertRoll |
329 0366 9091 0000 lds r25,(MesswertRoll)+1 |
330 036a 8853 subi r24,lo8(-200) |
331 036c 9F4F sbci r25,hi8(-200) |
332 036e 04F4 brge .L20 |
333 0370 2091 0000 lds r18,MesswertRoll |
334 0374 3091 0000 lds r19,(MesswertRoll)+1 |
335 0378 8091 0000 lds r24,MesswertRoll |
336 037c 9091 0000 lds r25,(MesswertRoll)+1 |
337 0380 880F lsl r24 |
338 0382 991F rol r25 |
339 0384 880F lsl r24 |
340 0386 991F rol r25 |
341 0388 205E subi r18,lo8(-(800)) |
342 038a 3C4F sbci r19,hi8(-(800)) |
343 .L60: |
344 038c 820F add r24,r18 |
345 038e 931F adc r25,r19 |
346 0390 9093 0000 sts (MesswertRoll)+1,r25 |
347 0394 8093 0000 sts MesswertRoll,r24 |
348 .L20: |
349 0398 2091 0000 lds r18,Poti1 |
350 039c 3091 0000 lds r19,(Poti1)+1 |
351 03a0 8091 0000 lds r24,EE_Parameter+4 |
352 03a4 E82F mov r30,r24 |
353 03a6 FF27 clr r31 |
354 03a8 EE0F lsl r30 |
355 03aa FF1F rol r31 |
356 03ac E050 subi r30,lo8(-(PPM_in)) |
357 03ae F040 sbci r31,hi8(-(PPM_in)) |
358 03b0 8081 ld r24,Z |
359 03b2 9181 ldd r25,Z+1 |
360 03b4 8259 subi r24,lo8(-(110)) |
361 03b6 9F4F sbci r25,hi8(-(110)) |
362 03b8 2817 cp r18,r24 |
363 03ba 3907 cpc r19,r25 |
364 03bc 04F4 brge .L22 |
365 03be 2F5F subi r18,lo8(-(1)) |
366 03c0 3F4F sbci r19,hi8(-(1)) |
367 03c2 00C0 rjmp .L61 |
368 .L22: |
369 03c4 8081 ld r24,Z |
370 03c6 9181 ldd r25,Z+1 |
371 03c8 8259 subi r24,lo8(-(110)) |
372 03ca 9F4F sbci r25,hi8(-(110)) |
373 03cc 8217 cp r24,r18 |
374 03ce 9307 cpc r25,r19 |
375 03d0 04F4 brge .L24 |
376 03d2 2115 cp r18,__zero_reg__ |
377 03d4 3105 cpc r19,__zero_reg__ |
378 03d6 01F0 breq .L24 |
379 03d8 2150 subi r18,lo8(-(-1)) |
380 03da 3040 sbci r19,hi8(-(-1)) |
381 .L61: |
382 03dc 3093 0000 sts (Poti1)+1,r19 |
383 03e0 2093 0000 sts Poti1,r18 |
384 .L24: |
385 03e4 2091 0000 lds r18,Poti2 |
386 03e8 3091 0000 lds r19,(Poti2)+1 |
387 03ec 8091 0000 lds r24,EE_Parameter+5 |
388 03f0 E82F mov r30,r24 |
389 03f2 FF27 clr r31 |
390 03f4 EE0F lsl r30 |
391 03f6 FF1F rol r31 |
392 03f8 E050 subi r30,lo8(-(PPM_in)) |
393 03fa F040 sbci r31,hi8(-(PPM_in)) |
394 03fc 8081 ld r24,Z |
395 03fe 9181 ldd r25,Z+1 |
396 0400 8259 subi r24,lo8(-(110)) |
397 0402 9F4F sbci r25,hi8(-(110)) |
398 0404 2817 cp r18,r24 |
399 0406 3907 cpc r19,r25 |
400 0408 04F4 brge .L27 |
401 040a 2F5F subi r18,lo8(-(1)) |
402 040c 3F4F sbci r19,hi8(-(1)) |
403 040e 00C0 rjmp .L62 |
404 .L27: |
405 0410 8081 ld r24,Z |
406 0412 9181 ldd r25,Z+1 |
407 0414 8259 subi r24,lo8(-(110)) |
408 0416 9F4F sbci r25,hi8(-(110)) |
409 0418 8217 cp r24,r18 |
410 041a 9307 cpc r25,r19 |
411 041c 04F4 brge .L29 |
412 041e 2115 cp r18,__zero_reg__ |
413 0420 3105 cpc r19,__zero_reg__ |
414 0422 01F0 breq .L29 |
415 0424 2150 subi r18,lo8(-(-1)) |
416 0426 3040 sbci r19,hi8(-(-1)) |
417 .L62: |
418 0428 3093 0000 sts (Poti2)+1,r19 |
419 042c 2093 0000 sts Poti2,r18 |
420 .L29: |
421 0430 2091 0000 lds r18,Poti3 |
422 0434 3091 0000 lds r19,(Poti3)+1 |
423 0438 8091 0000 lds r24,EE_Parameter+6 |
424 043c E82F mov r30,r24 |
425 043e FF27 clr r31 |
426 0440 EE0F lsl r30 |
427 0442 FF1F rol r31 |
428 0444 E050 subi r30,lo8(-(PPM_in)) |
429 0446 F040 sbci r31,hi8(-(PPM_in)) |
430 0448 8081 ld r24,Z |
431 044a 9181 ldd r25,Z+1 |
432 044c 8259 subi r24,lo8(-(110)) |
433 044e 9F4F sbci r25,hi8(-(110)) |
434 0450 2817 cp r18,r24 |
435 0452 3907 cpc r19,r25 |
436 0454 04F4 brge .L32 |
437 0456 2F5F subi r18,lo8(-(1)) |
438 0458 3F4F sbci r19,hi8(-(1)) |
439 045a 00C0 rjmp .L63 |
440 .L32: |
441 045c 8081 ld r24,Z |
442 045e 9181 ldd r25,Z+1 |
443 0460 8259 subi r24,lo8(-(110)) |
444 0462 9F4F sbci r25,hi8(-(110)) |
445 0464 8217 cp r24,r18 |
446 0466 9307 cpc r25,r19 |
447 0468 04F4 brge .L34 |
448 046a 2115 cp r18,__zero_reg__ |
449 046c 3105 cpc r19,__zero_reg__ |
450 046e 01F0 breq .L34 |
451 0470 2150 subi r18,lo8(-(-1)) |
452 0472 3040 sbci r19,hi8(-(-1)) |
453 .L63: |
454 0474 3093 0000 sts (Poti3)+1,r19 |
455 0478 2093 0000 sts Poti3,r18 |
456 .L34: |
457 047c 2091 0000 lds r18,Poti4 |
458 0480 3091 0000 lds r19,(Poti4)+1 |
459 0484 8091 0000 lds r24,EE_Parameter+7 |
460 0488 E82F mov r30,r24 |
461 048a FF27 clr r31 |
462 048c EE0F lsl r30 |
463 048e FF1F rol r31 |
464 0490 E050 subi r30,lo8(-(PPM_in)) |
465 0492 F040 sbci r31,hi8(-(PPM_in)) |
466 0494 8081 ld r24,Z |
467 0496 9181 ldd r25,Z+1 |
468 0498 8259 subi r24,lo8(-(110)) |
469 049a 9F4F sbci r25,hi8(-(110)) |
470 049c 2817 cp r18,r24 |
471 049e 3907 cpc r19,r25 |
472 04a0 04F4 brge .L37 |
473 04a2 2F5F subi r18,lo8(-(1)) |
474 04a4 3F4F sbci r19,hi8(-(1)) |
475 04a6 00C0 rjmp .L64 |
476 .L37: |
477 04a8 8081 ld r24,Z |
478 04aa 9181 ldd r25,Z+1 |
479 04ac 8259 subi r24,lo8(-(110)) |
480 04ae 9F4F sbci r25,hi8(-(110)) |
481 04b0 8217 cp r24,r18 |
482 04b2 9307 cpc r25,r19 |
483 04b4 04F4 brge .L39 |
484 04b6 2115 cp r18,__zero_reg__ |
485 04b8 3105 cpc r19,__zero_reg__ |
486 04ba 01F0 breq .L39 |
487 04bc 2150 subi r18,lo8(-(-1)) |
488 04be 3040 sbci r19,hi8(-(-1)) |
489 .L64: |
490 04c0 3093 0000 sts (Poti4)+1,r19 |
491 04c4 2093 0000 sts Poti4,r18 |
492 .L39: |
493 04c8 8091 0000 lds r24,Poti1 |
494 04cc 9091 0000 lds r25,(Poti1)+1 |
495 04d0 97FF sbrs r25,7 |
496 04d2 00C0 rjmp .L42 |
497 04d4 1092 0000 sts (Poti1)+1,__zero_reg__ |
498 04d8 1092 0000 sts Poti1,__zero_reg__ |
499 04dc 00C0 rjmp .L44 |
500 .L42: |
501 04de 8F3F cpi r24,255 |
502 04e0 9105 cpc r25,__zero_reg__ |
503 04e2 01F0 breq .L44 |
504 04e4 04F0 brlt .L44 |
505 04e6 8FEF ldi r24,lo8(255) |
506 04e8 90E0 ldi r25,hi8(255) |
507 04ea 9093 0000 sts (Poti1)+1,r25 |
508 04ee 8093 0000 sts Poti1,r24 |
509 .L44: |
510 04f2 8091 0000 lds r24,Poti2 |
511 04f6 9091 0000 lds r25,(Poti2)+1 |
512 04fa 97FF sbrs r25,7 |
513 04fc 00C0 rjmp .L46 |
514 04fe 1092 0000 sts (Poti2)+1,__zero_reg__ |
515 0502 1092 0000 sts Poti2,__zero_reg__ |
516 0506 00C0 rjmp .L48 |
517 .L46: |
518 0508 8F3F cpi r24,255 |
519 050a 9105 cpc r25,__zero_reg__ |
520 050c 01F0 breq .L48 |
521 050e 04F0 brlt .L48 |
522 0510 8FEF ldi r24,lo8(255) |
523 0512 90E0 ldi r25,hi8(255) |
524 0514 9093 0000 sts (Poti2)+1,r25 |
525 0518 8093 0000 sts Poti2,r24 |
526 .L48: |
527 051c 8091 0000 lds r24,Poti3 |
528 0520 9091 0000 lds r25,(Poti3)+1 |
529 0524 97FF sbrs r25,7 |
530 0526 00C0 rjmp .L50 |
531 0528 1092 0000 sts (Poti3)+1,__zero_reg__ |
532 052c 1092 0000 sts Poti3,__zero_reg__ |
533 0530 00C0 rjmp .L52 |
534 .L50: |
535 0532 8F3F cpi r24,255 |
536 0534 9105 cpc r25,__zero_reg__ |
537 0536 01F0 breq .L52 |
538 0538 04F0 brlt .L52 |
539 053a 8FEF ldi r24,lo8(255) |
540 053c 90E0 ldi r25,hi8(255) |
541 053e 9093 0000 sts (Poti3)+1,r25 |
542 0542 8093 0000 sts Poti3,r24 |
543 .L52: |
544 0546 8091 0000 lds r24,Poti4 |
545 054a 9091 0000 lds r25,(Poti4)+1 |
546 054e 97FF sbrs r25,7 |
547 0550 00C0 rjmp .L54 |
548 0552 1092 0000 sts (Poti4)+1,__zero_reg__ |
549 0556 1092 0000 sts Poti4,__zero_reg__ |
550 055a 00C0 rjmp .L58 |
551 .L54: |
552 055c 8F3F cpi r24,255 |
553 055e 9105 cpc r25,__zero_reg__ |
554 0560 01F0 breq .L58 |
555 0562 04F0 brlt .L58 |
556 0564 8FEF ldi r24,lo8(255) |
557 0566 90E0 ldi r25,hi8(255) |
558 0568 9093 0000 sts (Poti4)+1,r25 |
559 056c 8093 0000 sts Poti4,r24 |
560 .L58: |
561 /* epilogue: frame size=0 */ |
562 0570 1F91 pop r17 |
563 0572 0F91 pop r16 |
564 0574 FF90 pop r15 |
565 0576 EF90 pop r14 |
566 0578 DF90 pop r13 |
567 057a CF90 pop r12 |
568 057c BF90 pop r11 |
569 057e AF90 pop r10 |
570 0580 0895 ret |
571 /* epilogue end (size=9) */ |
572 /* function Mittelwert size 707 (690) */ |
574 .global CalibrierMittelwert |
576 CalibrierMittelwert: |
577 /* prologue: frame size=0 */ |
578 /* prologue end (size=0) */ |
579 0582 1092 7A00 sts 122,__zero_reg__ |
580 0586 8091 0000 lds r24,MessanzahlNick |
581 058a 8823 tst r24 |
582 058c 01F0 breq .L66 |
583 058e 8091 0000 lds r24,AccumulateNick |
584 0592 9091 0000 lds r25,(AccumulateNick)+1 |
585 0596 6091 0000 lds r22,MessanzahlNick |
586 059a 7727 clr r23 |
587 059c 0E94 0000 call __divmodhi4 |
588 05a0 7093 0000 sts (MesswertNick)+1,r23 |
589 05a4 6093 0000 sts MesswertNick,r22 |
590 .L66: |
591 05a8 8091 0000 lds r24,MessanzahlRoll |
592 05ac 8823 tst r24 |
593 05ae 01F0 breq .L68 |
594 05b0 8091 0000 lds r24,AccumulateRoll |
595 05b4 9091 0000 lds r25,(AccumulateRoll)+1 |
596 05b8 6091 0000 lds r22,MessanzahlRoll |
597 05bc 7727 clr r23 |
598 05be 0E94 0000 call __divmodhi4 |
599 05c2 7093 0000 sts (MesswertRoll)+1,r23 |
600 05c6 6093 0000 sts MesswertRoll,r22 |
601 .L68: |
602 05ca 8091 0000 lds r24,MessanzahlGier |
603 05ce 8823 tst r24 |
604 05d0 01F0 breq .L70 |
605 05d2 8091 0000 lds r24,AccumulateGier |
606 05d6 9091 0000 lds r25,(AccumulateGier)+1 |
607 05da 6091 0000 lds r22,MessanzahlGier |
608 05de 7727 clr r23 |
609 05e0 0E94 0000 call __divmodhi4 |
610 05e4 7093 0000 sts (MesswertGier)+1,r23 |
611 05e8 6093 0000 sts MesswertGier,r22 |
612 .L70: |
613 05ec 8091 0000 lds r24,messanzahl_AccNick |
614 05f0 8823 tst r24 |
615 05f2 01F0 breq .L72 |
616 05f4 6091 0000 lds r22,accumulate_AccNick |
617 05f8 7091 0000 lds r23,(accumulate_AccNick)+1 |
618 05fc 2091 0000 lds r18,messanzahl_AccNick |
619 0600 8827 clr r24 |
620 0602 77FD sbrc r23,7 |
621 0604 8095 com r24 |
622 0606 982F mov r25,r24 |
623 0608 34E0 ldi r19,4 |
624 060a 660F 1: lsl r22 |
625 060c 771F rol r23 |
626 060e 881F rol r24 |
627 0610 991F rol r25 |
628 0612 3A95 dec r19 |
629 0614 01F4 brne 1b |
630 0616 3327 clr r19 |
631 0618 4427 clr r20 |
632 061a 5527 clr r21 |
633 061c 0E94 0000 call __divmodsi4 |
634 0620 3093 0000 sts (Mittelwert_AccNick)+1,r19 |
635 0624 2093 0000 sts Mittelwert_AccNick,r18 |
636 .L72: |
637 0628 8091 0000 lds r24,messanzahl_AccRoll |
638 062c 8823 tst r24 |
639 062e 01F0 breq .L74 |
640 0630 6091 0000 lds r22,accumulate_AccRoll |
641 0634 7091 0000 lds r23,(accumulate_AccRoll)+1 |
642 0638 2091 0000 lds r18,messanzahl_AccRoll |
643 063c 8827 clr r24 |
644 063e 77FD sbrc r23,7 |
645 0640 8095 com r24 |
646 0642 982F mov r25,r24 |
647 0644 B4E0 ldi r27,4 |
648 0646 660F 1: lsl r22 |
649 0648 771F rol r23 |
650 064a 881F rol r24 |
651 064c 991F rol r25 |
652 064e BA95 dec r27 |
653 0650 01F4 brne 1b |
654 0652 3327 clr r19 |
655 0654 4427 clr r20 |
656 0656 5527 clr r21 |
657 0658 0E94 0000 call __divmodsi4 |
658 065c 3093 0000 sts (Mittelwert_AccRoll)+1,r19 |
659 0660 2093 0000 sts Mittelwert_AccRoll,r18 |
660 .L74: |
661 0664 8091 0000 lds r24,messanzahl_AccHoch |
662 0668 8823 tst r24 |
663 066a 01F0 breq .L76 |
664 066c 6091 0000 lds r22,accumulate_AccHoch |
665 0670 7091 0000 lds r23,(accumulate_AccHoch)+1 |
666 0674 2091 0000 lds r18,messanzahl_AccHoch |
667 0678 8827 clr r24 |
668 067a 77FD sbrc r23,7 |
669 067c 8095 com r24 |
670 067e 982F mov r25,r24 |
671 0680 3327 clr r19 |
672 0682 4427 clr r20 |
673 0684 5527 clr r21 |
674 0686 0E94 0000 call __divmodsi4 |
675 068a 3093 0000 sts (Mittelwert_AccHoch)+1,r19 |
676 068e 2093 0000 sts Mittelwert_AccHoch,r18 |
677 .L76: |
678 0692 1092 0000 sts (AccumulateNick)+1,__zero_reg__ |
679 0696 1092 0000 sts AccumulateNick,__zero_reg__ |
680 069a 1092 0000 sts MessanzahlNick,__zero_reg__ |
681 069e 1092 0000 sts (AccumulateRoll)+1,__zero_reg__ |
682 06a2 1092 0000 sts AccumulateRoll,__zero_reg__ |
683 06a6 1092 0000 sts MessanzahlRoll,__zero_reg__ |
684 06aa 1092 0000 sts (AccumulateGier)+1,__zero_reg__ |
685 06ae 1092 0000 sts AccumulateGier,__zero_reg__ |
686 06b2 1092 0000 sts MessanzahlGier,__zero_reg__ |
687 06b6 1092 0000 sts (accumulate_AccRoll)+1,__zero_reg__ |
688 06ba 1092 0000 sts accumulate_AccRoll,__zero_reg__ |
689 06be 1092 0000 sts messanzahl_AccRoll,__zero_reg__ |
690 06c2 1092 0000 sts (accumulate_AccNick)+1,__zero_reg__ |
691 06c6 1092 0000 sts accumulate_AccNick,__zero_reg__ |
692 06ca 1092 0000 sts messanzahl_AccNick,__zero_reg__ |
693 06ce 1092 0000 sts (accumulate_AccHoch)+1,__zero_reg__ |
694 06d2 1092 0000 sts accumulate_AccHoch,__zero_reg__ |
695 06d6 1092 0000 sts messanzahl_AccHoch,__zero_reg__ |
696 06da 8FEE ldi r24,lo8(-17) |
697 06dc 8093 7A00 sts 122,r24 |
698 06e0 2091 0000 lds r18,Poti1 |
699 06e4 3091 0000 lds r19,(Poti1)+1 |
700 06e8 8091 0000 lds r24,EE_Parameter+4 |
701 06ec E82F mov r30,r24 |
702 06ee FF27 clr r31 |
703 06f0 EE0F lsl r30 |
704 06f2 FF1F rol r31 |
705 06f4 E050 subi r30,lo8(-(PPM_in)) |
706 06f6 F040 sbci r31,hi8(-(PPM_in)) |
707 06f8 8081 ld r24,Z |
708 06fa 9181 ldd r25,Z+1 |
709 06fc 8259 subi r24,lo8(-(110)) |
710 06fe 9F4F sbci r25,hi8(-(110)) |
711 0700 2817 cp r18,r24 |
712 0702 3907 cpc r19,r25 |
713 0704 04F4 brge .L78 |
714 0706 2F5F subi r18,lo8(-(1)) |
715 0708 3F4F sbci r19,hi8(-(1)) |
716 070a 00C0 rjmp .L115 |
717 .L78: |
718 070c 8081 ld r24,Z |
719 070e 9181 ldd r25,Z+1 |
720 0710 8259 subi r24,lo8(-(110)) |
721 0712 9F4F sbci r25,hi8(-(110)) |
722 0714 8217 cp r24,r18 |
723 0716 9307 cpc r25,r19 |
724 0718 04F4 brge .L80 |
725 071a 2115 cp r18,__zero_reg__ |
726 071c 3105 cpc r19,__zero_reg__ |
727 071e 01F0 breq .L80 |
728 0720 2150 subi r18,lo8(-(-1)) |
729 0722 3040 sbci r19,hi8(-(-1)) |
730 .L115: |
731 0724 3093 0000 sts (Poti1)+1,r19 |
732 0728 2093 0000 sts Poti1,r18 |
733 .L80: |
734 072c 2091 0000 lds r18,Poti2 |
735 0730 3091 0000 lds r19,(Poti2)+1 |
736 0734 8091 0000 lds r24,EE_Parameter+5 |
737 0738 E82F mov r30,r24 |
738 073a FF27 clr r31 |
739 073c EE0F lsl r30 |
740 073e FF1F rol r31 |
741 0740 E050 subi r30,lo8(-(PPM_in)) |
742 0742 F040 sbci r31,hi8(-(PPM_in)) |
743 0744 8081 ld r24,Z |
744 0746 9181 ldd r25,Z+1 |
745 0748 8259 subi r24,lo8(-(110)) |
746 074a 9F4F sbci r25,hi8(-(110)) |
747 074c 2817 cp r18,r24 |
748 074e 3907 cpc r19,r25 |
749 0750 04F4 brge .L83 |
750 0752 2F5F subi r18,lo8(-(1)) |
751 0754 3F4F sbci r19,hi8(-(1)) |
752 0756 00C0 rjmp .L116 |
753 .L83: |
754 0758 8081 ld r24,Z |
755 075a 9181 ldd r25,Z+1 |
756 075c 8259 subi r24,lo8(-(110)) |
757 075e 9F4F sbci r25,hi8(-(110)) |
758 0760 8217 cp r24,r18 |
759 0762 9307 cpc r25,r19 |
760 0764 04F4 brge .L85 |
761 0766 2115 cp r18,__zero_reg__ |
762 0768 3105 cpc r19,__zero_reg__ |
763 076a 01F0 breq .L85 |
764 076c 2150 subi r18,lo8(-(-1)) |
765 076e 3040 sbci r19,hi8(-(-1)) |
766 .L116: |
767 0770 3093 0000 sts (Poti2)+1,r19 |
768 0774 2093 0000 sts Poti2,r18 |
769 .L85: |
770 0778 2091 0000 lds r18,Poti3 |
771 077c 3091 0000 lds r19,(Poti3)+1 |
772 0780 8091 0000 lds r24,EE_Parameter+6 |
773 0784 E82F mov r30,r24 |
774 0786 FF27 clr r31 |
775 0788 EE0F lsl r30 |
776 078a FF1F rol r31 |
777 078c E050 subi r30,lo8(-(PPM_in)) |
778 078e F040 sbci r31,hi8(-(PPM_in)) |
779 0790 8081 ld r24,Z |
780 0792 9181 ldd r25,Z+1 |
781 0794 8259 subi r24,lo8(-(110)) |
782 0796 9F4F sbci r25,hi8(-(110)) |
783 0798 2817 cp r18,r24 |
784 079a 3907 cpc r19,r25 |
785 079c 04F4 brge .L88 |
786 079e 2F5F subi r18,lo8(-(1)) |
787 07a0 3F4F sbci r19,hi8(-(1)) |
788 07a2 00C0 rjmp .L117 |
789 .L88: |
790 07a4 8081 ld r24,Z |
791 07a6 9181 ldd r25,Z+1 |
792 07a8 8259 subi r24,lo8(-(110)) |
793 07aa 9F4F sbci r25,hi8(-(110)) |
794 07ac 8217 cp r24,r18 |
795 07ae 9307 cpc r25,r19 |
796 07b0 04F4 brge .L90 |
797 07b2 2115 cp r18,__zero_reg__ |
798 07b4 3105 cpc r19,__zero_reg__ |
799 07b6 01F0 breq .L90 |
800 07b8 2150 subi r18,lo8(-(-1)) |
801 07ba 3040 sbci r19,hi8(-(-1)) |
802 .L117: |
803 07bc 3093 0000 sts (Poti3)+1,r19 |
804 07c0 2093 0000 sts Poti3,r18 |
805 .L90: |
806 07c4 2091 0000 lds r18,Poti4 |
807 07c8 3091 0000 lds r19,(Poti4)+1 |
808 07cc 8091 0000 lds r24,EE_Parameter+7 |
809 07d0 E82F mov r30,r24 |
810 07d2 FF27 clr r31 |
811 07d4 EE0F lsl r30 |
812 07d6 FF1F rol r31 |
813 07d8 E050 subi r30,lo8(-(PPM_in)) |
814 07da F040 sbci r31,hi8(-(PPM_in)) |
815 07dc 8081 ld r24,Z |
816 07de 9181 ldd r25,Z+1 |
817 07e0 8259 subi r24,lo8(-(110)) |
818 07e2 9F4F sbci r25,hi8(-(110)) |
819 07e4 2817 cp r18,r24 |
820 07e6 3907 cpc r19,r25 |
821 07e8 04F4 brge .L93 |
822 07ea 2F5F subi r18,lo8(-(1)) |
823 07ec 3F4F sbci r19,hi8(-(1)) |
824 07ee 00C0 rjmp .L118 |
825 .L93: |
826 07f0 8081 ld r24,Z |
827 07f2 9181 ldd r25,Z+1 |
828 07f4 8259 subi r24,lo8(-(110)) |
829 07f6 9F4F sbci r25,hi8(-(110)) |
830 07f8 8217 cp r24,r18 |
831 07fa 9307 cpc r25,r19 |
832 07fc 04F4 brge .L95 |
833 07fe 2115 cp r18,__zero_reg__ |
834 0800 3105 cpc r19,__zero_reg__ |
835 0802 01F0 breq .L95 |
836 0804 2150 subi r18,lo8(-(-1)) |
837 0806 3040 sbci r19,hi8(-(-1)) |
838 .L118: |
839 0808 3093 0000 sts (Poti4)+1,r19 |
840 080c 2093 0000 sts Poti4,r18 |
841 .L95: |
842 0810 8091 0000 lds r24,Poti1 |
843 0814 9091 0000 lds r25,(Poti1)+1 |
844 0818 97FF sbrs r25,7 |
845 081a 00C0 rjmp .L98 |
846 081c 1092 0000 sts (Poti1)+1,__zero_reg__ |
847 0820 1092 0000 sts Poti1,__zero_reg__ |
848 0824 00C0 rjmp .L100 |
849 .L98: |
850 0826 8F3F cpi r24,255 |
851 0828 9105 cpc r25,__zero_reg__ |
852 082a 01F0 breq .L100 |
853 082c 04F0 brlt .L100 |
854 082e 8FEF ldi r24,lo8(255) |
855 0830 90E0 ldi r25,hi8(255) |
856 0832 9093 0000 sts (Poti1)+1,r25 |
857 0836 8093 0000 sts Poti1,r24 |
858 .L100: |
859 083a 8091 0000 lds r24,Poti2 |
860 083e 9091 0000 lds r25,(Poti2)+1 |
861 0842 97FF sbrs r25,7 |
862 0844 00C0 rjmp .L102 |
863 0846 1092 0000 sts (Poti2)+1,__zero_reg__ |
864 084a 1092 0000 sts Poti2,__zero_reg__ |
865 084e 00C0 rjmp .L104 |
866 .L102: |
867 0850 8F3F cpi r24,255 |
868 0852 9105 cpc r25,__zero_reg__ |
869 0854 01F0 breq .L104 |
870 0856 04F0 brlt .L104 |
871 0858 8FEF ldi r24,lo8(255) |
872 085a 90E0 ldi r25,hi8(255) |
873 085c 9093 0000 sts (Poti2)+1,r25 |
874 0860 8093 0000 sts Poti2,r24 |
875 .L104: |
876 0864 8091 0000 lds r24,Poti3 |
877 0868 9091 0000 lds r25,(Poti3)+1 |
878 086c 97FF sbrs r25,7 |
879 086e 00C0 rjmp .L106 |
880 0870 1092 0000 sts (Poti3)+1,__zero_reg__ |
881 0874 1092 0000 sts Poti3,__zero_reg__ |
882 0878 00C0 rjmp .L108 |
883 .L106: |
884 087a 8F3F cpi r24,255 |
885 087c 9105 cpc r25,__zero_reg__ |
886 087e 01F0 breq .L108 |
887 0880 04F0 brlt .L108 |
888 0882 8FEF ldi r24,lo8(255) |
889 0884 90E0 ldi r25,hi8(255) |
890 0886 9093 0000 sts (Poti3)+1,r25 |
891 088a 8093 0000 sts Poti3,r24 |
892 .L108: |
893 088e 8091 0000 lds r24,Poti4 |
894 0892 9091 0000 lds r25,(Poti4)+1 |
895 0896 97FF sbrs r25,7 |
896 0898 00C0 rjmp .L110 |
897 089a 1092 0000 sts (Poti4)+1,__zero_reg__ |
898 089e 1092 0000 sts Poti4,__zero_reg__ |
899 08a2 0895 ret |
900 .L110: |
901 08a4 8F3F cpi r24,255 |
902 08a6 9105 cpc r25,__zero_reg__ |
903 08a8 01F0 breq .L114 |
904 08aa 04F0 brlt .L114 |
905 08ac 8FEF ldi r24,lo8(255) |
906 08ae 90E0 ldi r25,hi8(255) |
907 08b0 9093 0000 sts (Poti4)+1,r25 |
908 08b4 8093 0000 sts Poti4,r24 |
909 .L114: |
910 08b8 0895 ret |
911 /* epilogue: frame size=0 */ |
912 /* epilogue: noreturn */ |
913 /* epilogue end (size=0) */ |
914 /* function CalibrierMittelwert size 412 (412) */ |
916 .global ParameterZuordnung |
918 ParameterZuordnung: |
919 /* prologue: frame size=0 */ |
920 08ba 1F93 push r17 |
921 /* prologue end (size=1) */ |
922 08bc 8091 0000 lds r24,EE_Parameter+11 |
923 08c0 8B3F cpi r24,lo8(-5) |
924 08c2 00F0 brlo .L120 |
925 08c4 8B3F cpi r24,lo8(-5) |
926 08c6 01F4 brne .L122 |
927 08c8 8091 0000 lds r24,Poti1 |
928 08cc 00C0 rjmp .L120 |
929 .L122: |
930 08ce 8C3F cpi r24,lo8(-4) |
931 08d0 01F4 brne .L125 |
932 08d2 8091 0000 lds r24,Poti2 |
933 08d6 00C0 rjmp .L120 |
934 .L125: |
935 08d8 8D3F cpi r24,lo8(-3) |
936 08da 01F4 brne .L127 |
937 08dc 8091 0000 lds r24,Poti3 |
938 08e0 00C0 rjmp .L120 |
939 .L127: |
940 08e2 8E3F cpi r24,lo8(-2) |
941 08e4 01F4 brne .L124 |
942 08e6 8091 0000 lds r24,Poti4 |
943 .L120: |
944 08ea 8093 0000 sts Parameter_MaxHoehe,r24 |
945 .L124: |
946 08ee 8091 0000 lds r24,Parameter_MaxHoehe |
947 08f2 8823 tst r24 |
948 08f4 01F4 brne .L130 |
949 08f6 1092 0000 sts Parameter_MaxHoehe,__zero_reg__ |
950 08fa 00C0 rjmp .L132 |
951 .L130: |
952 08fc 8F3F cpi r24,lo8(-1) |
953 08fe 01F4 brne .L132 |
954 0900 8093 0000 sts Parameter_MaxHoehe,r24 |
955 .L132: |
956 0904 8091 0000 lds r24,EE_Parameter+10 |
957 0908 8B3F cpi r24,lo8(-5) |
958 090a 00F0 brlo .L134 |
959 090c 8B3F cpi r24,lo8(-5) |
960 090e 01F4 brne .L136 |
961 0910 8091 0000 lds r24,Poti1 |
962 0914 00C0 rjmp .L134 |
963 .L136: |
964 0916 8C3F cpi r24,lo8(-4) |
965 0918 01F4 brne .L139 |
966 091a 8091 0000 lds r24,Poti2 |
967 091e 00C0 rjmp .L134 |
968 .L139: |
969 0920 8D3F cpi r24,lo8(-3) |
970 0922 01F4 brne .L141 |
971 0924 8091 0000 lds r24,Poti3 |
972 0928 00C0 rjmp .L134 |
973 .L141: |
974 092a 8E3F cpi r24,lo8(-2) |
975 092c 01F4 brne .L138 |
976 092e 8091 0000 lds r24,Poti4 |
977 .L134: |
978 0932 8093 0000 sts Parameter_Luftdruck_D,r24 |
979 .L138: |
980 0936 8091 0000 lds r24,Parameter_Luftdruck_D |
981 093a 8823 tst r24 |
982 093c 01F4 brne .L144 |
983 093e 1092 0000 sts Parameter_Luftdruck_D,__zero_reg__ |
984 0942 00C0 rjmp .L146 |
985 .L144: |
986 0944 8436 cpi r24,lo8(100) |
987 0946 00F0 brlo .L146 |
988 0948 84E6 ldi r24,lo8(100) |
989 094a 8093 0000 sts Parameter_Luftdruck_D,r24 |
990 .L146: |
991 094e 8091 0000 lds r24,EE_Parameter+12 |
992 0952 8B3F cpi r24,lo8(-5) |
993 0954 00F0 brlo .L148 |
994 0956 8B3F cpi r24,lo8(-5) |
995 0958 01F4 brne .L150 |
996 095a 8091 0000 lds r24,Poti1 |
997 095e 00C0 rjmp .L148 |
998 .L150: |
999 0960 8C3F cpi r24,lo8(-4) |
1000 0962 01F4 brne .L153 |
1001 0964 8091 0000 lds r24,Poti2 |
1002 0968 00C0 rjmp .L148 |
1003 .L153: |
1004 096a 8D3F cpi r24,lo8(-3) |
1005 096c 01F4 brne .L155 |
1006 096e 8091 0000 lds r24,Poti3 |
1007 0972 00C0 rjmp .L148 |
1008 .L155: |
1009 0974 8E3F cpi r24,lo8(-2) |
1010 0976 01F4 brne .L152 |
1011 0978 8091 0000 lds r24,Poti4 |
1012 .L148: |
1013 097c 8093 0000 sts Parameter_Hoehe_P,r24 |
1014 .L152: |
1015 0980 8091 0000 lds r24,Parameter_Hoehe_P |
1016 0984 8823 tst r24 |
1017 0986 01F4 brne .L158 |
1018 0988 1092 0000 sts Parameter_Hoehe_P,__zero_reg__ |
1019 098c 00C0 rjmp .L160 |
1020 .L158: |
1021 098e 8436 cpi r24,lo8(100) |
1022 0990 00F0 brlo .L160 |
1023 0992 84E6 ldi r24,lo8(100) |
1024 0994 8093 0000 sts Parameter_Hoehe_P,r24 |
1025 .L160: |
1026 0998 8091 0000 lds r24,EE_Parameter+14 |
1027 099c 8B3F cpi r24,lo8(-5) |
1028 099e 00F0 brlo .L162 |
1029 09a0 8B3F cpi r24,lo8(-5) |
1030 09a2 01F4 brne .L164 |
1031 09a4 8091 0000 lds r24,Poti1 |
1032 09a8 00C0 rjmp .L162 |
1033 .L164: |
1034 09aa 8C3F cpi r24,lo8(-4) |
1035 09ac 01F4 brne .L167 |
1036 09ae 8091 0000 lds r24,Poti2 |
1037 09b2 00C0 rjmp .L162 |
1038 .L167: |
1039 09b4 8D3F cpi r24,lo8(-3) |
1040 09b6 01F4 brne .L169 |
1041 09b8 8091 0000 lds r24,Poti3 |
1042 09bc 00C0 rjmp .L162 |
1043 .L169: |
1044 09be 8E3F cpi r24,lo8(-2) |
1045 09c0 01F4 brne .L166 |
1046 09c2 8091 0000 lds r24,Poti4 |
1047 .L162: |
1048 09c6 8093 0000 sts Parameter_Hoehe_ACC_Wirkung,r24 |
1049 .L166: |
1050 09ca 8091 0000 lds r24,Parameter_Hoehe_ACC_Wirkung |
1051 09ce 8823 tst r24 |
1052 09d0 01F4 brne .L172 |
1053 09d2 1092 0000 sts Parameter_Hoehe_ACC_Wirkung,__zero_reg__ |
1054 09d6 00C0 rjmp .L174 |
1055 .L172: |
1056 09d8 8F3F cpi r24,lo8(-1) |
1057 09da 01F4 brne .L174 |
1058 09dc 8093 0000 sts Parameter_Hoehe_ACC_Wirkung,r24 |
1059 .L174: |
1060 09e0 8091 0000 lds r24,EE_Parameter+21 |
1061 09e4 8B3F cpi r24,lo8(-5) |
1062 09e6 00F0 brlo .L176 |
1063 09e8 8B3F cpi r24,lo8(-5) |
1064 09ea 01F4 brne .L178 |
1065 09ec 8091 0000 lds r24,Poti1 |
1066 09f0 00C0 rjmp .L176 |
1067 .L178: |
1068 09f2 8C3F cpi r24,lo8(-4) |
1069 09f4 01F4 brne .L181 |
1070 09f6 8091 0000 lds r24,Poti2 |
1071 09fa 00C0 rjmp .L176 |
1072 .L181: |
1073 09fc 8D3F cpi r24,lo8(-3) |
1074 09fe 01F4 brne .L183 |
1075 0a00 8091 0000 lds r24,Poti3 |
1076 0a04 00C0 rjmp .L176 |
1077 .L183: |
1078 0a06 8E3F cpi r24,lo8(-2) |
1079 0a08 01F4 brne .L180 |
1080 0a0a 8091 0000 lds r24,Poti4 |
1081 .L176: |
1082 0a0e 8093 0000 sts Parameter_KompassWirkung,r24 |
1083 .L180: |
1084 0a12 8091 0000 lds r24,Parameter_KompassWirkung |
1085 0a16 8823 tst r24 |
1086 0a18 01F4 brne .L186 |
1087 0a1a 1092 0000 sts Parameter_KompassWirkung,__zero_reg__ |
1088 0a1e 00C0 rjmp .L188 |
1089 .L186: |
1090 0a20 8F3F cpi r24,lo8(-1) |
1091 0a22 01F4 brne .L188 |
1092 0a24 8093 0000 sts Parameter_KompassWirkung,r24 |
1093 .L188: |
1094 0a28 8091 0000 lds r24,EE_Parameter+22 |
1095 0a2c 8B3F cpi r24,lo8(-5) |
1096 0a2e 00F0 brlo .L190 |
1097 0a30 8B3F cpi r24,lo8(-5) |
1098 0a32 01F4 brne .L192 |
1099 0a34 8091 0000 lds r24,Poti1 |
1100 0a38 00C0 rjmp .L190 |
1101 .L192: |
1102 0a3a 8C3F cpi r24,lo8(-4) |
1103 0a3c 01F4 brne .L195 |
1104 0a3e 8091 0000 lds r24,Poti2 |
1105 0a42 00C0 rjmp .L190 |
1106 .L195: |
1107 0a44 8D3F cpi r24,lo8(-3) |
1108 0a46 01F4 brne .L197 |
1109 0a48 8091 0000 lds r24,Poti3 |
1110 0a4c 00C0 rjmp .L190 |
1111 .L197: |
1112 0a4e 8E3F cpi r24,lo8(-2) |
1113 0a50 01F4 brne .L194 |
1114 0a52 8091 0000 lds r24,Poti4 |
1115 .L190: |
1116 0a56 8093 0000 sts Parameter_Gyro_P,r24 |
1117 .L194: |
1118 0a5a 8091 0000 lds r24,Parameter_Gyro_P |
1119 0a5e 8B30 cpi r24,lo8(11) |
1120 0a60 00F4 brsh .L200 |
1121 0a62 8AE0 ldi r24,lo8(10) |
1122 0a64 00C0 rjmp .L332 |
1123 .L200: |
1124 0a66 8F3F cpi r24,lo8(-1) |
1125 0a68 01F4 brne .L202 |
1126 .L332: |
1127 0a6a 8093 0000 sts Parameter_Gyro_P,r24 |
1128 .L202: |
1129 0a6e 8091 0000 lds r24,EE_Parameter+23 |
1130 0a72 8B3F cpi r24,lo8(-5) |
1131 0a74 00F0 brlo .L204 |
1132 0a76 8B3F cpi r24,lo8(-5) |
1133 0a78 01F4 brne .L206 |
1134 0a7a 8091 0000 lds r24,Poti1 |
1135 0a7e 00C0 rjmp .L204 |
1136 .L206: |
1137 0a80 8C3F cpi r24,lo8(-4) |
1138 0a82 01F4 brne .L209 |
1139 0a84 8091 0000 lds r24,Poti2 |
1140 0a88 00C0 rjmp .L204 |
1141 .L209: |
1142 0a8a 8D3F cpi r24,lo8(-3) |
1143 0a8c 01F4 brne .L211 |
1144 0a8e 8091 0000 lds r24,Poti3 |
1145 0a92 00C0 rjmp .L204 |
1146 .L211: |
1147 0a94 8E3F cpi r24,lo8(-2) |
1148 0a96 01F4 brne .L208 |
1149 0a98 8091 0000 lds r24,Poti4 |
1150 .L204: |
1151 0a9c 8093 0000 sts Parameter_Gyro_I,r24 |
1152 .L208: |
1153 0aa0 8091 0000 lds r24,Parameter_Gyro_I |
1154 0aa4 8823 tst r24 |
1155 0aa6 01F4 brne .L214 |
1156 0aa8 1092 0000 sts Parameter_Gyro_I,__zero_reg__ |
1157 0aac 00C0 rjmp .L216 |
1158 .L214: |
1159 0aae 8F3F cpi r24,lo8(-1) |
1160 0ab0 01F4 brne .L216 |
1161 0ab2 8093 0000 sts Parameter_Gyro_I,r24 |
1162 .L216: |
1163 0ab6 8091 0000 lds r24,EE_Parameter+28 |
1164 0aba 8B3F cpi r24,lo8(-5) |
1165 0abc 00F0 brlo .L218 |
1166 0abe 8B3F cpi r24,lo8(-5) |
1167 0ac0 01F4 brne .L220 |
1168 0ac2 8091 0000 lds r24,Poti1 |
1169 0ac6 00C0 rjmp .L218 |
1170 .L220: |
1171 0ac8 8C3F cpi r24,lo8(-4) |
1172 0aca 01F4 brne .L223 |
1173 0acc 8091 0000 lds r24,Poti2 |
1174 0ad0 00C0 rjmp .L218 |
1175 .L223: |
1176 0ad2 8D3F cpi r24,lo8(-3) |
1177 0ad4 01F4 brne .L225 |
1178 0ad6 8091 0000 lds r24,Poti3 |
1179 0ada 00C0 rjmp .L218 |
1180 .L225: |
1181 0adc 8E3F cpi r24,lo8(-2) |
1182 0ade 01F4 brne .L222 |
1183 0ae0 8091 0000 lds r24,Poti4 |
1184 .L218: |
1185 0ae4 8093 0000 sts Parameter_I_Faktor,r24 |
1186 .L222: |
1187 0ae8 8091 0000 lds r24,Parameter_I_Faktor |
1188 0aec 8823 tst r24 |
1189 0aee 01F4 brne .L228 |
1190 0af0 1092 0000 sts Parameter_I_Faktor,__zero_reg__ |
1191 0af4 00C0 rjmp .L230 |
1192 .L228: |
1193 0af6 8F3F cpi r24,lo8(-1) |
1194 0af8 01F4 brne .L230 |
1195 0afa 8093 0000 sts Parameter_I_Faktor,r24 |
1196 .L230: |
1197 0afe 8091 0000 lds r24,EE_Parameter+29 |
1198 0b02 8B3F cpi r24,lo8(-5) |
1199 0b04 00F0 brlo .L232 |
1200 0b06 8B3F cpi r24,lo8(-5) |
1201 0b08 01F4 brne .L234 |
1202 0b0a 8091 0000 lds r24,Poti1 |
1203 0b0e 00C0 rjmp .L232 |
1204 .L234: |
1205 0b10 8C3F cpi r24,lo8(-4) |
1206 0b12 01F4 brne .L237 |
1207 0b14 8091 0000 lds r24,Poti2 |
1208 0b18 00C0 rjmp .L232 |
1209 .L237: |
1210 0b1a 8D3F cpi r24,lo8(-3) |
1211 0b1c 01F4 brne .L239 |
1212 0b1e 8091 0000 lds r24,Poti3 |
1213 0b22 00C0 rjmp .L232 |
1214 .L239: |
1215 0b24 8E3F cpi r24,lo8(-2) |
1216 0b26 01F4 brne .L236 |
1217 0b28 8091 0000 lds r24,Poti4 |
1218 .L232: |
1219 0b2c 8093 0000 sts Parameter_UserParam1,r24 |
1220 .L236: |
1221 0b30 8091 0000 lds r24,Parameter_UserParam1 |
1222 0b34 8823 tst r24 |
1223 0b36 01F4 brne .L242 |
1224 0b38 1092 0000 sts Parameter_UserParam1,__zero_reg__ |
1225 0b3c 00C0 rjmp .L244 |
1226 .L242: |
1227 0b3e 8F3F cpi r24,lo8(-1) |
1228 0b40 01F4 brne .L244 |
1229 0b42 8093 0000 sts Parameter_UserParam1,r24 |
1230 .L244: |
1231 0b46 8091 0000 lds r24,EE_Parameter+30 |
1232 0b4a 8B3F cpi r24,lo8(-5) |
1233 0b4c 00F0 brlo .L246 |
1234 0b4e 8B3F cpi r24,lo8(-5) |
1235 0b50 01F4 brne .L248 |
1236 0b52 8091 0000 lds r24,Poti1 |
1237 0b56 00C0 rjmp .L246 |
1238 .L248: |
1239 0b58 8C3F cpi r24,lo8(-4) |
1240 0b5a 01F4 brne .L251 |
1241 0b5c 8091 0000 lds r24,Poti2 |
1242 0b60 00C0 rjmp .L246 |
1243 .L251: |
1244 0b62 8D3F cpi r24,lo8(-3) |
1245 0b64 01F4 brne .L253 |
1246 0b66 8091 0000 lds r24,Poti3 |
1247 0b6a 00C0 rjmp .L246 |
1248 .L253: |
1249 0b6c 8E3F cpi r24,lo8(-2) |
1250 0b6e 01F4 brne .L250 |
1251 0b70 8091 0000 lds r24,Poti4 |
1252 .L246: |
1253 0b74 8093 0000 sts Parameter_UserParam2,r24 |
1254 .L250: |
1255 0b78 8091 0000 lds r24,Parameter_UserParam2 |
1256 0b7c 8823 tst r24 |
1257 0b7e 01F4 brne .L256 |
1258 0b80 1092 0000 sts Parameter_UserParam2,__zero_reg__ |
1259 0b84 00C0 rjmp .L258 |
1260 .L256: |
1261 0b86 8F3F cpi r24,lo8(-1) |
1262 0b88 01F4 brne .L258 |
1263 0b8a 8093 0000 sts Parameter_UserParam2,r24 |
1264 .L258: |
1265 0b8e 8091 0000 lds r24,EE_Parameter+31 |
1266 0b92 8B3F cpi r24,lo8(-5) |
1267 0b94 00F0 brlo .L260 |
1268 0b96 8B3F cpi r24,lo8(-5) |
1269 0b98 01F4 brne .L262 |
1270 0b9a 8091 0000 lds r24,Poti1 |
1271 0b9e 00C0 rjmp .L260 |
1272 .L262: |
1273 0ba0 8C3F cpi r24,lo8(-4) |
1274 0ba2 01F4 brne .L265 |
1275 0ba4 8091 0000 lds r24,Poti2 |
1276 0ba8 00C0 rjmp .L260 |
1277 .L265: |
1278 0baa 8D3F cpi r24,lo8(-3) |
1279 0bac 01F4 brne .L267 |
1280 0bae 8091 0000 lds r24,Poti3 |
1281 0bb2 00C0 rjmp .L260 |
1282 .L267: |
1283 0bb4 8E3F cpi r24,lo8(-2) |
1284 0bb6 01F4 brne .L264 |
1285 0bb8 8091 0000 lds r24,Poti4 |
1286 .L260: |
1287 0bbc 8093 0000 sts Parameter_UserParam3,r24 |
1288 .L264: |
1289 0bc0 8091 0000 lds r24,Parameter_UserParam3 |
1290 0bc4 8823 tst r24 |
1291 0bc6 01F4 brne .L270 |
1292 0bc8 1092 0000 sts Parameter_UserParam3,__zero_reg__ |
1293 0bcc 00C0 rjmp .L272 |
1294 .L270: |
1295 0bce 8F3F cpi r24,lo8(-1) |
1296 0bd0 01F4 brne .L272 |
1297 0bd2 8093 0000 sts Parameter_UserParam3,r24 |
1298 .L272: |
1299 0bd6 8091 0000 lds r24,EE_Parameter+32 |
1300 0bda 8B3F cpi r24,lo8(-5) |
1301 0bdc 00F0 brlo .L274 |
1302 0bde 8B3F cpi r24,lo8(-5) |
1303 0be0 01F4 brne .L276 |
1304 0be2 8091 0000 lds r24,Poti1 |
1305 0be6 00C0 rjmp .L274 |
1306 .L276: |
1307 0be8 8C3F cpi r24,lo8(-4) |
1308 0bea 01F4 brne .L279 |
1309 0bec 8091 0000 lds r24,Poti2 |
1310 0bf0 00C0 rjmp .L274 |
1311 .L279: |
1312 0bf2 8D3F cpi r24,lo8(-3) |
1313 0bf4 01F4 brne .L281 |
1314 0bf6 8091 0000 lds r24,Poti3 |
1315 0bfa 00C0 rjmp .L274 |
1316 .L281: |
1317 0bfc 8E3F cpi r24,lo8(-2) |
1318 0bfe 01F4 brne .L278 |
1319 0c00 8091 0000 lds r24,Poti4 |
1320 .L274: |
1321 0c04 8093 0000 sts Parameter_UserParam4,r24 |
1322 .L278: |
1323 0c08 8091 0000 lds r24,Parameter_UserParam4 |
1324 0c0c 8823 tst r24 |
1325 0c0e 01F4 brne .L284 |
1326 0c10 1092 0000 sts Parameter_UserParam4,__zero_reg__ |
1327 0c14 00C0 rjmp .L286 |
1328 .L284: |
1329 0c16 8F3F cpi r24,lo8(-1) |
1330 0c18 01F4 brne .L286 |
1331 0c1a 8093 0000 sts Parameter_UserParam4,r24 |
1332 .L286: |
1333 0c1e 9091 0000 lds r25,EE_Parameter+33 |
1334 0c22 9B3F cpi r25,lo8(-5) |
1335 0c24 00F0 brlo .L288 |
1336 0c26 9B3F cpi r25,lo8(-5) |
1337 0c28 01F4 brne .L290 |
1338 0c2a 8091 0000 lds r24,Poti1 |
1339 0c2e 00C0 rjmp .L333 |
1340 .L290: |
1341 0c30 9C3F cpi r25,lo8(-4) |
1342 0c32 01F4 brne .L293 |
1343 0c34 8091 0000 lds r24,Poti2 |
1344 .L333: |
1345 0c38 8093 0000 sts Parameter_ServoNickControl,r24 |
1346 0c3c 00C0 rjmp .L292 |
1347 .L293: |
1348 0c3e 9D3F cpi r25,lo8(-3) |
1349 0c40 01F4 brne .L295 |
1350 0c42 8091 0000 lds r24,Poti3 |
1351 0c46 00C0 rjmp .L333 |
1352 .L295: |
1353 0c48 9E3F cpi r25,lo8(-2) |
1354 0c4a 01F4 brne .L292 |
1355 0c4c 8091 0000 lds r24,Poti4 |
1356 0c50 00C0 rjmp .L333 |
1357 .L288: |
1358 0c52 9093 0000 sts Parameter_ServoNickControl,r25 |
1359 .L292: |
1360 0c56 8091 0000 lds r24,Parameter_ServoNickControl |
1361 0c5a 8823 tst r24 |
1362 0c5c 01F4 brne .L298 |
1363 0c5e 1092 0000 sts Parameter_ServoNickControl,__zero_reg__ |
1364 0c62 00C0 rjmp .L300 |
1365 .L298: |
1366 0c64 8F3F cpi r24,lo8(-1) |
1367 0c66 01F4 brne .L300 |
1368 0c68 8093 0000 sts Parameter_ServoNickControl,r24 |
1369 .L300: |
1370 0c6c 9B3F cpi r25,lo8(-5) |
1371 0c6e 00F0 brlo .L302 |
1372 0c70 9B3F cpi r25,lo8(-5) |
1373 0c72 01F4 brne .L304 |
1374 0c74 8091 0000 lds r24,Poti1 |
1375 0c78 00C0 rjmp .L334 |
1376 .L304: |
1377 0c7a 9C3F cpi r25,lo8(-4) |
1378 0c7c 01F4 brne .L307 |
1379 0c7e 8091 0000 lds r24,Poti2 |
1380 .L334: |
1381 0c82 8093 0000 sts Parameter_ServoNickControl,r24 |
1382 0c86 00C0 rjmp .L306 |
1383 .L307: |
1384 0c88 9D3F cpi r25,lo8(-3) |
1385 0c8a 01F4 brne .L309 |
1386 0c8c 8091 0000 lds r24,Poti3 |
1387 0c90 00C0 rjmp .L334 |
1388 .L309: |
1389 0c92 9E3F cpi r25,lo8(-2) |
1390 0c94 01F4 brne .L306 |
1391 0c96 8091 0000 lds r24,Poti4 |
1392 0c9a 00C0 rjmp .L334 |
1393 .L302: |
1394 0c9c 9093 0000 sts Parameter_ServoNickControl,r25 |
1395 .L306: |
1396 0ca0 8091 0000 lds r24,Parameter_ServoNickControl |
1397 0ca4 8823 tst r24 |
1398 0ca6 01F4 brne .L312 |
1399 0ca8 1092 0000 sts Parameter_ServoNickControl,__zero_reg__ |
1400 0cac 00C0 rjmp .L314 |
1401 .L312: |
1402 0cae 8F3F cpi r24,lo8(-1) |
1403 0cb0 01F4 brne .L314 |
1404 0cb2 8093 0000 sts Parameter_ServoNickControl,r24 |
1405 .L314: |
1406 0cb6 9B3F cpi r25,lo8(-5) |
1407 0cb8 00F0 brlo .L316 |
1408 0cba 9B3F cpi r25,lo8(-5) |
1409 0cbc 01F4 brne .L318 |
1410 0cbe 8091 0000 lds r24,Poti1 |
1411 0cc2 00C0 rjmp .L335 |
1412 .L318: |
1413 0cc4 9C3F cpi r25,lo8(-4) |
1414 0cc6 01F4 brne .L321 |
1415 0cc8 8091 0000 lds r24,Poti2 |
1416 .L335: |
1417 0ccc 8093 0000 sts Parameter_ServoNickControl,r24 |
1418 0cd0 00C0 rjmp .L320 |
1419 .L321: |
1420 0cd2 9D3F cpi r25,lo8(-3) |
1421 0cd4 01F4 brne .L323 |
1422 0cd6 8091 0000 lds r24,Poti3 |
1423 0cda 00C0 rjmp .L335 |
1424 .L323: |
1425 0cdc 9E3F cpi r25,lo8(-2) |
1426 0cde 01F4 brne .L320 |
1427 0ce0 8091 0000 lds r24,Poti4 |
1428 0ce4 00C0 rjmp .L335 |
1429 .L316: |
1430 0ce6 9093 0000 sts Parameter_ServoNickControl,r25 |
1431 .L320: |
1432 0cea 8091 0000 lds r24,Parameter_ServoNickControl |
1433 0cee 8823 tst r24 |
1434 0cf0 01F4 brne .L326 |
1435 0cf2 1092 0000 sts Parameter_ServoNickControl,__zero_reg__ |
1436 0cf6 00C0 rjmp .L328 |
1437 .L326: |
1438 0cf8 8F3F cpi r24,lo8(-1) |
1439 0cfa 01F4 brne .L328 |
1440 0cfc 8093 0000 sts Parameter_ServoNickControl,r24 |
1441 .L328: |
1442 0d00 1091 0000 lds r17,Parameter_I_Faktor |
1443 0d04 612F mov r22,r17 |
1444 0d06 7727 clr r23 |
1445 0d08 67FD sbrc r22,7 |
1446 0d0a 7095 com r23 |
1447 0d0c 872F mov r24,r23 |
1448 0d0e 972F mov r25,r23 |
1449 0d10 0E94 0000 call __floatsisf |
1450 0d14 17FF sbrs r17,7 |
1451 0d16 00C0 rjmp .L330 |
1452 0d18 20E0 ldi r18,lo8(0x43800000) |
1453 0d1a 30E0 ldi r19,hi8(0x43800000) |
1454 0d1c 40E8 ldi r20,hlo8(0x43800000) |
1455 0d1e 53E4 ldi r21,hhi8(0x43800000) |
1456 0d20 0E94 0000 call __addsf3 |
1457 .L330: |
1458 0d24 27E1 ldi r18,lo8(0x38d1b717) |
1459 0d26 37EB ldi r19,hi8(0x38d1b717) |
1460 0d28 41ED ldi r20,hlo8(0x38d1b717) |
1461 0d2a 58E3 ldi r21,hhi8(0x38d1b717) |
1462 0d2c 0E94 0000 call __mulsf3 |
1463 0d30 6093 0000 sts Ki,r22 |
1464 0d34 7093 0000 sts (Ki)+1,r23 |
1465 0d38 8093 0000 sts (Ki)+2,r24 |
1466 0d3c 9093 0000 sts (Ki)+3,r25 |
1467 0d40 8091 0000 lds r24,EE_Parameter+19 |
1468 0d44 8093 0000 sts MAX_GAS,r24 |
1469 0d48 8091 0000 lds r24,EE_Parameter+18 |
1470 0d4c 8093 0000 sts MIN_GAS,r24 |
1471 /* epilogue: frame size=0 */ |
1472 0d50 1F91 pop r17 |
1473 0d52 0895 ret |
1474 /* epilogue end (size=2) */ |
1475 /* function ParameterZuordnung size 589 (586) */ |
1477 .data |
1478 .LC0: |
1479 0000 4B61 6D65 .string "Kamera" |
1479 7261 00 |
1480 0007 00 .string "" |
1481 .text |
1482 .global DefaultKonstanten2 |
1484 DefaultKonstanten2: |
1485 /* prologue: frame size=0 */ |
1486 /* prologue end (size=0) */ |
1487 0d54 81E0 ldi r24,lo8(1) |
1488 0d56 8093 0000 sts EE_Parameter,r24 |
1489 0d5a 42E0 ldi r20,lo8(2) |
1490 0d5c 4093 0000 sts EE_Parameter+1,r20 |
1491 0d60 83E0 ldi r24,lo8(3) |
1492 0d62 8093 0000 sts EE_Parameter+2,r24 |
1493 0d66 24E0 ldi r18,lo8(4) |
1494 0d68 2093 0000 sts EE_Parameter+3,r18 |
1495 0d6c 35E0 ldi r19,lo8(5) |
1496 0d6e 3093 0000 sts EE_Parameter+4,r19 |
1497 0d72 86E0 ldi r24,lo8(6) |
1498 0d74 8093 0000 sts EE_Parameter+5,r24 |
1499 0d78 87E0 ldi r24,lo8(7) |
1500 0d7a 8093 0000 sts EE_Parameter+6,r24 |
1501 0d7e 1092 0000 sts EE_Parameter+8,__zero_reg__ |
1502 0d82 8EE1 ldi r24,lo8(30) |
1503 0d84 8093 0000 sts EE_Parameter+9,r24 |
1504 0d88 8BEF ldi r24,lo8(-5) |
1505 0d8a 8093 0000 sts EE_Parameter+11,r24 |
1506 0d8e 8AE0 ldi r24,lo8(10) |
1507 0d90 8093 0000 sts EE_Parameter+12,r24 |
1508 0d94 92E3 ldi r25,lo8(50) |
1509 0d96 9093 0000 sts EE_Parameter+10,r25 |
1510 0d9a 9093 0000 sts EE_Parameter+14,r25 |
1511 0d9e 4093 0000 sts EE_Parameter+13,r20 |
1512 0da2 2093 0000 sts EE_Parameter+15,r18 |
1513 0da6 1092 0000 sts EE_Parameter+16,__zero_reg__ |
1514 0daa 80E1 ldi r24,lo8(16) |
1515 0dac 8093 0000 sts EE_Parameter+17,r24 |
1516 0db0 8FE0 ldi r24,lo8(15) |
1517 0db2 8093 0000 sts EE_Parameter+18,r24 |
1518 0db6 8AEF ldi r24,lo8(-6) |
1519 0db8 8093 0000 sts EE_Parameter+19,r24 |
1520 0dbc 8AE1 ldi r24,lo8(26) |
1521 0dbe 8093 0000 sts EE_Parameter+20,r24 |
1522 0dc2 80E8 ldi r24,lo8(-128) |
1523 0dc4 8093 0000 sts EE_Parameter+21,r24 |
1524 0dc8 8FEA ldi r24,lo8(-81) |
1525 0dca 8093 0000 sts EE_Parameter+22,r24 |
1526 0dce 8093 0000 sts EE_Parameter+23,r24 |
1527 0dd2 8AE5 ldi r24,lo8(90) |
1528 0dd4 8093 0000 sts EE_Parameter+24,r24 |
1529 0dd8 83E2 ldi r24,lo8(35) |
1530 0dda 8093 0000 sts EE_Parameter+25,r24 |
1531 0dde 84E1 ldi r24,lo8(20) |
1532 0de0 8093 0000 sts EE_Parameter+26,r24 |
1533 0de4 1092 0000 sts EE_Parameter+27,__zero_reg__ |
1534 0de8 3093 0000 sts EE_Parameter+28,r19 |
1535 0dec 1092 0000 sts EE_Parameter+29,__zero_reg__ |
1536 0df0 1092 0000 sts EE_Parameter+30,__zero_reg__ |
1537 0df4 1092 0000 sts EE_Parameter+31,__zero_reg__ |
1538 0df8 1092 0000 sts EE_Parameter+32,__zero_reg__ |
1539 0dfc 84E6 ldi r24,lo8(100) |
1540 0dfe 8093 0000 sts EE_Parameter+33,r24 |
1541 0e02 88E2 ldi r24,lo8(40) |
1542 0e04 8093 0000 sts EE_Parameter+34,r24 |
1543 0e08 1092 0000 sts EE_Parameter+38,__zero_reg__ |
1544 0e0c 9093 0000 sts EE_Parameter+35,r25 |
1545 0e10 86E9 ldi r24,lo8(-106) |
1546 0e12 8093 0000 sts EE_Parameter+36,r24 |
1547 0e16 3093 0000 sts EE_Parameter+37,r19 |
1548 0e1a A0E0 ldi r26,lo8(EE_Parameter+46) |
1549 0e1c B0E0 ldi r27,hi8(EE_Parameter+46) |
1550 0e1e E0E0 ldi r30,lo8(.LC0) |
1551 0e20 F0E0 ldi r31,hi8(.LC0) |
1552 0e22 8CE0 ldi r24,lo8(12) |
1553 .L337: |
1554 0e24 0190 ld r0,Z+ |
1555 0e26 0D92 st X+,r0 |
1556 0e28 8150 subi r24,lo8(-(-1)) |
1557 0e2a 01F4 brne .L337 |
1558 /* epilogue: frame size=0 */ |
1559 0e2c 0895 ret |
1560 /* epilogue end (size=1) */ |
1561 /* function DefaultKonstanten2 size 110 (109) */ |
1563 .data |
1564 .LC1: |
1565 0008 4E6F 726D .string "Normal" |
1565 616C 00 |
1566 000f 00 .string "" |
1567 .text |
1568 .global DefaultKonstanten1 |
1570 DefaultKonstanten1: |
1571 /* prologue: frame size=0 */ |
1572 /* prologue end (size=0) */ |
1573 0e2e 81E0 ldi r24,lo8(1) |
1574 0e30 8093 0000 sts EE_Parameter,r24 |
1575 0e34 52E0 ldi r21,lo8(2) |
1576 0e36 5093 0000 sts EE_Parameter+1,r21 |
1577 0e3a 83E0 ldi r24,lo8(3) |
1578 0e3c 8093 0000 sts EE_Parameter+2,r24 |
1579 0e40 44E0 ldi r20,lo8(4) |
1580 0e42 4093 0000 sts EE_Parameter+3,r20 |
1581 0e46 35E0 ldi r19,lo8(5) |
1582 0e48 3093 0000 sts EE_Parameter+4,r19 |
1583 0e4c 86E0 ldi r24,lo8(6) |
1584 0e4e 8093 0000 sts EE_Parameter+5,r24 |
1585 0e52 87E0 ldi r24,lo8(7) |
1586 0e54 8093 0000 sts EE_Parameter+6,r24 |
1587 0e58 28E0 ldi r18,lo8(8) |
1588 0e5a 2093 0000 sts EE_Parameter+7,r18 |
1589 0e5e 1092 0000 sts EE_Parameter+8,__zero_reg__ |
1590 0e62 9EE1 ldi r25,lo8(30) |
1591 0e64 9093 0000 sts EE_Parameter+9,r25 |
1592 0e68 8BEF ldi r24,lo8(-5) |
1593 0e6a 8093 0000 sts EE_Parameter+11,r24 |
1594 0e6e 8AE0 ldi r24,lo8(10) |
1595 0e70 8093 0000 sts EE_Parameter+12,r24 |
1596 0e74 86E4 ldi r24,lo8(70) |
1597 0e76 8093 0000 sts EE_Parameter+10,r24 |
1598 0e7a 9093 0000 sts EE_Parameter+14,r25 |
1599 0e7e 5093 0000 sts EE_Parameter+13,r21 |
1600 0e82 4093 0000 sts EE_Parameter+15,r20 |
1601 0e86 2093 0000 sts EE_Parameter+16,r18 |
1602 0e8a 80E1 ldi r24,lo8(16) |
1603 0e8c 8093 0000 sts EE_Parameter+17,r24 |
1604 0e90 8FE0 ldi r24,lo8(15) |
1605 0e92 8093 0000 sts EE_Parameter+18,r24 |
1606 0e96 8AEF ldi r24,lo8(-6) |
1607 0e98 8093 0000 sts EE_Parameter+19,r24 |
1608 0e9c 8AE1 ldi r24,lo8(26) |
1609 0e9e 8093 0000 sts EE_Parameter+20,r24 |
1610 0ea2 80E8 ldi r24,lo8(-128) |
1611 0ea4 8093 0000 sts EE_Parameter+21,r24 |
1612 0ea8 88E7 ldi r24,lo8(120) |
1613 0eaa 8093 0000 sts EE_Parameter+22,r24 |
1614 0eae 96E9 ldi r25,lo8(-106) |
1615 0eb0 9093 0000 sts EE_Parameter+23,r25 |
1616 0eb4 8AE5 ldi r24,lo8(90) |
1617 0eb6 8093 0000 sts EE_Parameter+24,r24 |
1618 0eba 83E2 ldi r24,lo8(35) |
1619 0ebc 8093 0000 sts EE_Parameter+25,r24 |
1620 0ec0 84E1 ldi r24,lo8(20) |
1621 0ec2 8093 0000 sts EE_Parameter+26,r24 |
1622 0ec6 1092 0000 sts EE_Parameter+27,__zero_reg__ |
1623 0eca 3093 0000 sts EE_Parameter+28,r19 |
1624 0ece 1092 0000 sts EE_Parameter+29,__zero_reg__ |
1625 0ed2 1092 0000 sts EE_Parameter+30,__zero_reg__ |
1626 0ed6 1092 0000 sts EE_Parameter+31,__zero_reg__ |
1627 0eda 1092 0000 sts EE_Parameter+32,__zero_reg__ |
1628 0ede 84E6 ldi r24,lo8(100) |
1629 0ee0 8093 0000 sts EE_Parameter+33,r24 |
1630 0ee4 88E2 ldi r24,lo8(40) |
1631 0ee6 8093 0000 sts EE_Parameter+34,r24 |
1632 0eea 1092 0000 sts EE_Parameter+38,__zero_reg__ |
1633 0eee 82E3 ldi r24,lo8(50) |
1634 0ef0 8093 0000 sts EE_Parameter+35,r24 |
1635 0ef4 9093 0000 sts EE_Parameter+36,r25 |
1636 0ef8 3093 0000 sts EE_Parameter+37,r19 |
1637 0efc A0E0 ldi r26,lo8(EE_Parameter+46) |
1638 0efe B0E0 ldi r27,hi8(EE_Parameter+46) |
1639 0f00 E0E0 ldi r30,lo8(.LC1) |
1640 0f02 F0E0 ldi r31,hi8(.LC1) |
1641 0f04 8CE0 ldi r24,lo8(12) |
1642 .L342: |
1643 0f06 0190 ld r0,Z+ |
1644 0f08 0D92 st X+,r0 |
1645 0f0a 8150 subi r24,lo8(-(-1)) |
1646 0f0c 01F4 brne .L342 |
1647 /* epilogue: frame size=0 */ |
1648 0f0e 0895 ret |
1649 /* epilogue end (size=1) */ |
1650 /* function DefaultKonstanten1 size 114 (113) */ |
1652 .global SendMotorData |
1654 SendMotorData: |
1655 /* prologue: frame size=0 */ |
1656 /* prologue end (size=0) */ |
1657 0f10 8091 0000 lds r24,MotorenEin |
1658 0f14 8823 tst r24 |
1659 0f16 01F4 brne .L347 |
1660 0f18 1092 0000 sts Motor_Hinten,__zero_reg__ |
1661 0f1c 1092 0000 sts Motor_Vorne,__zero_reg__ |
1662 0f20 1092 0000 sts Motor_Rechts,__zero_reg__ |
1663 0f24 1092 0000 sts Motor_Links,__zero_reg__ |
1664 0f28 8091 0000 lds r24,MotorTest |
1665 0f2c 8823 tst r24 |
1666 0f2e 01F0 breq .L349 |
1667 0f30 8093 0000 sts Motor_Vorne,r24 |
1668 .L349: |
1669 0f34 8091 0000 lds r24,MotorTest+1 |
1670 0f38 8823 tst r24 |
1671 0f3a 01F0 breq .L351 |
1672 0f3c 8093 0000 sts Motor_Hinten,r24 |
1673 .L351: |
1674 0f40 8091 0000 lds r24,MotorTest+2 |
1675 0f44 8823 tst r24 |
1676 0f46 01F0 breq .L353 |
1677 0f48 8093 0000 sts Motor_Links,r24 |
1678 .L353: |
1679 0f4c 8091 0000 lds r24,MotorTest+3 |
1680 0f50 8823 tst r24 |
1681 0f52 01F0 breq .L347 |
1682 0f54 8093 0000 sts Motor_Rechts,r24 |
1683 .L347: |
1684 0f58 8091 0000 lds r24,Motor_Vorne |
1685 0f5c 9927 clr r25 |
1686 0f5e 9093 0000 sts (DebugOut+42)+1,r25 |
1687 0f62 8093 0000 sts DebugOut+42,r24 |
1688 0f66 8091 0000 lds r24,Motor_Hinten |
1689 0f6a 9927 clr r25 |
1690 0f6c 9093 0000 sts (DebugOut+44)+1,r25 |
1691 0f70 8093 0000 sts DebugOut+44,r24 |
1692 0f74 8091 0000 lds r24,Motor_Links |
1693 0f78 9927 clr r25 |
1694 0f7a 9093 0000 sts (DebugOut+46)+1,r25 |
1695 0f7e 8093 0000 sts DebugOut+46,r24 |
1696 0f82 8091 0000 lds r24,Motor_Rechts |
1697 0f86 9927 clr r25 |
1698 0f88 9093 0000 sts (DebugOut+48)+1,r25 |
1699 0f8c 8093 0000 sts DebugOut+48,r24 |
1700 0f90 1092 0000 sts twi_state,__zero_reg__ |
1701 0f94 1092 0000 sts motor,__zero_reg__ |
1702 0f98 0E94 0000 call i2c_start |
1703 /* epilogue: frame size=0 */ |
1704 0f9c 0895 ret |
1705 /* epilogue end (size=1) */ |
1706 /* function SendMotorData size 71 (70) */ |
1708 .global SetNeutral |
1710 SetNeutral: |
1711 /* prologue: frame size=0 */ |
1712 0f9e CF93 push r28 |
1713 0fa0 DF93 push r29 |
1714 /* prologue end (size=2) */ |
1715 0fa2 1092 0000 sts (NeutralAccX)+1,__zero_reg__ |
1716 0fa6 1092 0000 sts NeutralAccX,__zero_reg__ |
1717 0faa 1092 0000 sts (NeutralAccY)+1,__zero_reg__ |
1718 0fae 1092 0000 sts NeutralAccY,__zero_reg__ |
1719 0fb2 80E0 ldi r24,lo8(0x0) |
1720 0fb4 90E0 ldi r25,hi8(0x0) |
1721 0fb6 A0E0 ldi r26,hlo8(0x0) |
1722 0fb8 B0E0 ldi r27,hhi8(0x0) |
1723 0fba 8093 0000 sts NeutralAccZ,r24 |
1724 0fbe 9093 0000 sts (NeutralAccZ)+1,r25 |
1725 0fc2 A093 0000 sts (NeutralAccZ)+2,r26 |
1726 0fc6 B093 0000 sts (NeutralAccZ)+3,r27 |
1727 0fca 1092 0000 sts (AdNeutralNick)+1,__zero_reg__ |
1728 0fce 1092 0000 sts AdNeutralNick,__zero_reg__ |
1729 0fd2 1092 0000 sts (AdNeutralRoll)+1,__zero_reg__ |
1730 0fd6 1092 0000 sts AdNeutralRoll,__zero_reg__ |
1731 0fda 1092 0000 sts (AdNeutralGier)+1,__zero_reg__ |
1732 0fde 1092 0000 sts AdNeutralGier,__zero_reg__ |
1733 0fe2 0E94 0000 call CalibrierMittelwert |
1734 0fe6 85E0 ldi r24,lo8(5) |
1735 0fe8 90E0 ldi r25,hi8(5) |
1736 0fea 0E94 0000 call SetDelay |
1737 0fee EC01 movw r28,r24 |
1738 .L358: |
1739 0ff0 CE01 movw r24,r28 |
1740 0ff2 0E94 0000 call CheckDelay |
1741 0ff6 8823 tst r24 |
1742 0ff8 01F0 breq .L358 |
1743 0ffa 0E94 0000 call CalibrierMittelwert |
1744 0ffe 8091 0000 lds r24,EE_Parameter+8 |
1745 1002 80FF sbrs r24,0 |
1746 1004 00C0 rjmp .L360 |
1747 1006 8091 0000 lds r24,MessLuftdruck |
1748 100a 9091 0000 lds r25,(MessLuftdruck)+1 |
1749 100e 875B subi r24,lo8(951) |
1750 1010 9340 sbci r25,hi8(951) |
1751 1012 00F4 brsh .L362 |
1752 1014 8091 0000 lds r24,MessLuftdruck |
1753 1018 9091 0000 lds r25,(MessLuftdruck)+1 |
1754 101c 8E5E subi r24,lo8(750) |
1755 101e 9240 sbci r25,hi8(750) |
1756 1020 00F4 brsh .L360 |
1757 .L362: |
1758 1022 0E94 0000 call SucheLuftruckOffset |
1759 .L360: |
1760 1026 8091 0000 lds r24,MesswertNick |
1761 102a 9091 0000 lds r25,(MesswertNick)+1 |
1762 102e 97FF sbrs r25,7 |
1763 1030 00C0 rjmp .L364 |
1764 1032 9095 com r25 |
1765 1034 8195 neg r24 |
1766 1036 9F4F sbci r25,lo8(-1) |
1767 .L364: |
1768 1038 9093 0000 sts (AdNeutralNick)+1,r25 |
1769 103c 8093 0000 sts AdNeutralNick,r24 |
1770 1040 8091 0000 lds r24,MesswertRoll |
1771 1044 9091 0000 lds r25,(MesswertRoll)+1 |
1772 1048 97FF sbrs r25,7 |
1773 104a 00C0 rjmp .L365 |
1774 104c 9095 com r25 |
1775 104e 8195 neg r24 |
1776 1050 9F4F sbci r25,lo8(-1) |
1777 .L365: |
1778 1052 9093 0000 sts (AdNeutralRoll)+1,r25 |
1779 1056 8093 0000 sts AdNeutralRoll,r24 |
1780 105a 8091 0000 lds r24,MesswertGier |
1781 105e 9091 0000 lds r25,(MesswertGier)+1 |
1782 1062 97FF sbrs r25,7 |
1783 1064 00C0 rjmp .L366 |
1784 1066 9095 com r25 |
1785 1068 8195 neg r24 |
1786 106a 9F4F sbci r25,lo8(-1) |
1787 .L366: |
1788 106c 9093 0000 sts (AdNeutralGier)+1,r25 |
1789 1070 8093 0000 sts AdNeutralGier,r24 |
1790 1074 8091 0000 lds r24,Mittelwert_AccRoll |
1791 1078 9091 0000 lds r25,(Mittelwert_AccRoll)+1 |
1792 107c 97FF sbrs r25,7 |
1793 107e 00C0 rjmp .L367 |
1794 1080 9095 com r25 |
1795 1082 8195 neg r24 |
1796 1084 9F4F sbci r25,lo8(-1) |
1797 .L367: |
1798 1086 60E1 ldi r22,lo8(16) |
1799 1088 70E0 ldi r23,hi8(16) |
1800 108a 0E94 0000 call __divmodhi4 |
1801 108e 7093 0000 sts (NeutralAccY)+1,r23 |
1802 1092 6093 0000 sts NeutralAccY,r22 |
1803 1096 8091 0000 lds r24,Mittelwert_AccNick |
1804 109a 9091 0000 lds r25,(Mittelwert_AccNick)+1 |
1805 109e 97FF sbrs r25,7 |
1806 10a0 00C0 rjmp .L368 |
1807 10a2 9095 com r25 |
1808 10a4 8195 neg r24 |
1809 10a6 9F4F sbci r25,lo8(-1) |
1810 .L368: |
1811 10a8 60E1 ldi r22,lo8(16) |
1812 10aa 70E0 ldi r23,hi8(16) |
1813 10ac 0E94 0000 call __divmodhi4 |
1814 10b0 7093 0000 sts (NeutralAccX)+1,r23 |
1815 10b4 6093 0000 sts NeutralAccX,r22 |
1816 10b8 6091 0000 lds r22,Aktuell_az |
1817 10bc 7091 0000 lds r23,(Aktuell_az)+1 |
1818 10c0 8827 clr r24 |
1819 10c2 77FD sbrc r23,7 |
1820 10c4 8095 com r24 |
1821 10c6 982F mov r25,r24 |
1822 10c8 0E94 0000 call __floatsisf |
1823 10cc 6093 0000 sts NeutralAccZ,r22 |
1824 10d0 7093 0000 sts (NeutralAccZ)+1,r23 |
1825 10d4 8093 0000 sts (NeutralAccZ)+2,r24 |
1826 10d8 9093 0000 sts (NeutralAccZ)+3,r25 |
1827 10dc 1092 0000 sts Mess_IntegralNick,__zero_reg__ |
1828 10e0 1092 0000 sts (Mess_IntegralNick)+1,__zero_reg__ |
1829 10e4 1092 0000 sts (Mess_IntegralNick)+2,__zero_reg__ |
1830 10e8 1092 0000 sts (Mess_IntegralNick)+3,__zero_reg__ |
1831 10ec 1092 0000 sts Mess_IntegralNick2,__zero_reg__ |
1832 10f0 1092 0000 sts (Mess_IntegralNick2)+1,__zero_reg__ |
1833 10f4 1092 0000 sts (Mess_IntegralNick2)+2,__zero_reg__ |
1834 10f8 1092 0000 sts (Mess_IntegralNick2)+3,__zero_reg__ |
1835 10fc 1092 0000 sts Mess_IntegralRoll,__zero_reg__ |
1836 1100 1092 0000 sts (Mess_IntegralRoll)+1,__zero_reg__ |
1837 1104 1092 0000 sts (Mess_IntegralRoll)+2,__zero_reg__ |
1838 1108 1092 0000 sts (Mess_IntegralRoll)+3,__zero_reg__ |
1839 110c 1092 0000 sts Mess_IntegralRoll2,__zero_reg__ |
1840 1110 1092 0000 sts (Mess_IntegralRoll2)+1,__zero_reg__ |
1841 1114 1092 0000 sts (Mess_IntegralRoll2)+2,__zero_reg__ |
1842 1118 1092 0000 sts (Mess_IntegralRoll2)+3,__zero_reg__ |
1843 111c 1092 0000 sts Mess_Integral_Gier,__zero_reg__ |
1844 1120 1092 0000 sts (Mess_Integral_Gier)+1,__zero_reg__ |
1845 1124 1092 0000 sts (Mess_Integral_Gier)+2,__zero_reg__ |
1846 1128 1092 0000 sts (Mess_Integral_Gier)+3,__zero_reg__ |
1847 112c 1092 0000 sts (MesswertNick)+1,__zero_reg__ |
1848 1130 1092 0000 sts MesswertNick,__zero_reg__ |
1849 1134 1092 0000 sts (MesswertRoll)+1,__zero_reg__ |
1850 1138 1092 0000 sts MesswertRoll,__zero_reg__ |
1851 113c 1092 0000 sts (MesswertGier)+1,__zero_reg__ |
1852 1140 1092 0000 sts MesswertGier,__zero_reg__ |
1853 1144 8091 0000 lds r24,Luftdruck |
1854 1148 9091 0000 lds r25,(Luftdruck)+1 |
1855 114c A091 0000 lds r26,(Luftdruck)+2 |
1856 1150 B091 0000 lds r27,(Luftdruck)+3 |
1857 1154 9093 0000 sts (StartLuftdruck)+1,r25 |
1858 1158 8093 0000 sts StartLuftdruck,r24 |
1859 115c 1092 0000 sts (HoeheD)+1,__zero_reg__ |
1860 1160 1092 0000 sts HoeheD,__zero_reg__ |
1861 1164 1092 0000 sts Mess_Integral_Hoch,__zero_reg__ |
1862 1168 1092 0000 sts (Mess_Integral_Hoch)+1,__zero_reg__ |
1863 116c 1092 0000 sts (Mess_Integral_Hoch)+2,__zero_reg__ |
1864 1170 1092 0000 sts (Mess_Integral_Hoch)+3,__zero_reg__ |
1865 1174 8091 0000 lds r24,KompassValue |
1866 1178 9091 0000 lds r25,(KompassValue)+1 |
1867 117c 9093 0000 sts (KompassStartwert)+1,r25 |
1868 1180 8093 0000 sts KompassStartwert,r24 |
1869 1184 82E3 ldi r24,lo8(50) |
1870 1186 90E0 ldi r25,hi8(50) |
1871 1188 9093 0000 sts (beeptime)+1,r25 |
1872 118c 8093 0000 sts beeptime,r24 |
1873 /* epilogue: frame size=0 */ |
1874 1190 DF91 pop r29 |
1875 1192 CF91 pop r28 |
1876 1194 0895 ret |
1877 /* epilogue end (size=3) */ |
1878 /* function SetNeutral size 254 (249) */ |
1880 .global Piep |
1882 Piep: |
1883 /* prologue: frame size=0 */ |
1884 1196 1F93 push r17 |
1885 /* prologue end (size=1) */ |
1886 1198 182F mov r17,r24 |
1887 119a 00C0 rjmp .L373 |
1888 .L374: |
1889 119c 8091 0000 lds r24,MotorenEin |
1890 11a0 8823 tst r24 |
1891 11a2 01F4 brne .L377 |
1892 11a4 84E6 ldi r24,lo8(100) |
1893 11a6 90E0 ldi r25,hi8(100) |
1894 11a8 9093 0000 sts (beeptime)+1,r25 |
1895 11ac 8093 0000 sts beeptime,r24 |
1896 11b0 8AEF ldi r24,lo8(250) |
1897 11b2 90E0 ldi r25,hi8(250) |
1898 11b4 0E94 0000 call Delay_ms |
1899 .L373: |
1900 11b8 1150 subi r17,1 |
1901 11ba 00F4 brcc .L374 |
1902 .L377: |
1903 /* epilogue: frame size=0 */ |
1904 11bc 1F91 pop r17 |
1905 11be 0895 ret |
1906 /* epilogue end (size=2) */ |
1907 /* function Piep size 22 (19) */ |
1909 .global MotorRegler |
1911 MotorRegler: |
1912 /* prologue: frame size=4 */ |
1913 11c0 2F92 push r2 |
1914 11c2 3F92 push r3 |
1915 11c4 4F92 push r4 |
1916 11c6 5F92 push r5 |
1917 11c8 6F92 push r6 |
1918 11ca 7F92 push r7 |
1919 11cc 8F92 push r8 |
1920 11ce 9F92 push r9 |
1921 11d0 AF92 push r10 |
1922 11d2 BF92 push r11 |
1923 11d4 CF92 push r12 |
1924 11d6 DF92 push r13 |
1925 11d8 EF92 push r14 |
1926 11da FF92 push r15 |
1927 11dc 0F93 push r16 |
1928 11de 1F93 push r17 |
1929 11e0 CF93 push r28 |
1930 11e2 DF93 push r29 |
1931 11e4 CDB7 in r28,__SP_L__ |
1932 11e6 DEB7 in r29,__SP_H__ |
1933 11e8 2497 sbiw r28,4 |
1934 11ea 0FB6 in __tmp_reg__,__SREG__ |
1935 11ec F894 cli |
1936 11ee DEBF out __SP_H__,r29 |
1937 11f0 0FBE out __SREG__,__tmp_reg__ |
1938 11f2 CDBF out __SP_L__,r28 |
1939 /* prologue end (size=26) */ |
1940 11f4 0E94 0000 call Mittelwert |
1941 11f8 299A sbi 37-0x20,1 |
1942 11fa E091 0000 lds r30,EE_Parameter+2 |
1943 11fe AE2F mov r26,r30 |
1944 1200 BB27 clr r27 |
1945 1202 AA0F lsl r26 |
1946 1204 BB1F rol r27 |
1947 1206 A050 subi r26,lo8(-(PPM_in)) |
1948 1208 B040 sbci r27,hi8(-(PPM_in)) |
1949 120a 0D90 ld __tmp_reg__,X+ |
1950 120c BC91 ld r27,X |
1951 120e A02D mov r26,__tmp_reg__ |
1952 1210 9D01 movw r18,r26 |
1953 1212 2858 subi r18,lo8(-(120)) |
1954 1214 3F4F sbci r19,hi8(-(120)) |
1955 1216 3A83 std Y+2,r19 |
1956 1218 2983 std Y+1,r18 |
1957 121a 37FF sbrs r19,7 |
1958 121c 00C0 rjmp .L379 |
1959 121e 1A82 std Y+2,__zero_reg__ |
1960 1220 1982 std Y+1,__zero_reg__ |
1961 .L379: |
1962 1222 8091 0000 lds r24,SenderOkay |
1963 1226 8436 cpi r24,lo8(100) |
1964 1228 00F0 brlo .+2 |
1965 122a 00C0 rjmp .L380 |
1966 122c 8091 0000 lds r24,PcZugriff |
1967 1230 8823 tst r24 |
1968 1232 01F4 brne .L382 |
1969 1234 84EF ldi r24,lo8(500) |
1970 1236 91E0 ldi r25,hi8(500) |
1971 1238 9093 0000 sts (beeptime)+1,r25 |
1972 123c 8093 0000 sts beeptime,r24 |
1973 .L382: |
1974 1240 8091 0000 lds r24,RcLostTimer.2355 |
1975 1244 9091 0000 lds r25,(RcLostTimer.2355)+1 |
1976 1248 0097 sbiw r24,0 |
1977 124a 01F0 breq .L384 |
1978 124c 0197 sbiw r24,1 |
1979 124e 9093 0000 sts (RcLostTimer.2355)+1,r25 |
1980 1252 8093 0000 sts RcLostTimer.2355,r24 |
1981 1256 00C0 rjmp .L386 |
1982 .L384: |
1983 1258 1092 0000 sts MotorenEin,__zero_reg__ |
1984 125c 1092 0000 sts Notlandung,__zero_reg__ |
1985 .L386: |
1986 1260 289A sbi 37-0x20,0 |
1987 1262 8091 0000 lds r24,modell_fliegt.2359 |
1988 1266 9091 0000 lds r25,(modell_fliegt.2359)+1 |
1989 126a 815D subi r24,lo8(2001) |
1990 126c 9740 sbci r25,hi8(2001) |
1991 126e 00F0 brlo .L387 |
1992 1270 8091 0000 lds r24,EE_Parameter+25 |
1993 1274 482F mov r20,r24 |
1994 1276 5527 clr r21 |
1995 1278 5A83 std Y+2,r21 |
1996 127a 4983 std Y+1,r20 |
1997 127c 81E0 ldi r24,lo8(1) |
1998 127e 8093 0000 sts Notlandung,r24 |
1999 1282 E091 0000 lds r30,EE_Parameter |
2000 1286 FF27 clr r31 |
2001 1288 EE0F lsl r30 |
2002 128a FF1F rol r31 |
2003 128c E050 subi r30,lo8(-(PPM_in)) |
2004 128e F040 sbci r31,hi8(-(PPM_in)) |
2005 1290 1182 std Z+1,__zero_reg__ |
2006 1292 1082 st Z,__zero_reg__ |
2007 1294 E091 0000 lds r30,EE_Parameter+1 |
2008 1298 FF27 clr r31 |
2009 129a EE0F lsl r30 |
2010 129c FF1F rol r31 |
2011 129e E050 subi r30,lo8(-(PPM_in)) |
2012 12a0 F040 sbci r31,hi8(-(PPM_in)) |
2013 12a2 1182 std Z+1,__zero_reg__ |
2014 12a4 1082 st Z,__zero_reg__ |
2015 12a6 E091 0000 lds r30,EE_Parameter+3 |
2016 12aa FF27 clr r31 |
2017 12ac EE0F lsl r30 |
2018 12ae FF1F rol r31 |
2019 12b0 E050 subi r30,lo8(-(PPM_in)) |
2020 12b2 F040 sbci r31,hi8(-(PPM_in)) |
2021 12b4 1182 std Z+1,__zero_reg__ |
2022 12b6 1082 st Z,__zero_reg__ |
2023 12b8 00C0 rjmp .L389 |
2024 .L387: |
2025 12ba 1092 0000 sts MotorenEin,__zero_reg__ |
2026 12be 00C0 rjmp .L389 |
2027 .L380: |
2028 12c0 8091 0000 lds r24,SenderOkay |
2029 12c4 8D38 cpi r24,lo8(-115) |
2030 12c6 00F4 brsh .+2 |
2031 12c8 00C0 rjmp .L389 |
2032 12ca 1092 0000 sts Notlandung,__zero_reg__ |
2033 12ce 8091 0000 lds r24,EE_Parameter+26 |
2034 12d2 22E3 ldi r18,lo8(50) |
2035 12d4 829F mul r24,r18 |
2036 12d6 C001 movw r24,r0 |
2037 12d8 1124 clr r1 |
2038 12da 9093 0000 sts (RcLostTimer.2355)+1,r25 |
2039 12de 8093 0000 sts RcLostTimer.2355,r24 |
2040 12e2 6981 ldd r22,Y+1 |
2041 12e4 7A81 ldd r23,Y+2 |
2042 12e6 6932 cpi r22,41 |
2043 12e8 7105 cpc r23,__zero_reg__ |
2044 12ea 04F0 brlt .L391 |
2045 12ec 8091 0000 lds r24,modell_fliegt.2359 |
2046 12f0 9091 0000 lds r25,(modell_fliegt.2359)+1 |
2047 12f4 7FEF ldi r23,hi8(-1) |
2048 12f6 8F3F cpi r24,lo8(-1) |
2049 12f8 9707 cpc r25,r23 |
2050 12fa 01F0 breq .L393 |
2051 12fc 0196 adiw r24,1 |
2052 12fe 9093 0000 sts (modell_fliegt.2359)+1,r25 |
2053 1302 8093 0000 sts modell_fliegt.2359,r24 |
2054 .L391: |
2055 1306 8091 0000 lds r24,modell_fliegt.2359 |
2056 130a 9091 0000 lds r25,(modell_fliegt.2359)+1 |
2057 130e 883C cpi r24,200 |
2058 1310 9105 cpc r25,__zero_reg__ |
2059 1312 00F0 brlo .L395 |
2060 1314 8981 ldd r24,Y+1 |
2061 1316 9A81 ldd r25,Y+2 |
2062 1318 8897 sbiw r24,40 |
2063 131a 04F4 brge .L393 |
2064 .L395: |
2065 131c 1092 0000 sts SummeNick.2348,__zero_reg__ |
2066 1320 1092 0000 sts (SummeNick.2348)+1,__zero_reg__ |
2067 1324 1092 0000 sts (SummeNick.2348)+2,__zero_reg__ |
2068 1328 1092 0000 sts (SummeNick.2348)+3,__zero_reg__ |
2069 132c 1092 0000 sts SummeRoll.2349,__zero_reg__ |
2070 1330 1092 0000 sts (SummeRoll.2349)+1,__zero_reg__ |
2071 1334 1092 0000 sts (SummeRoll.2349)+2,__zero_reg__ |
2072 1338 1092 0000 sts (SummeRoll.2349)+3,__zero_reg__ |
2073 133c 1092 0000 sts Mess_Integral_Gier,__zero_reg__ |
2074 1340 1092 0000 sts (Mess_Integral_Gier)+1,__zero_reg__ |
2075 1344 1092 0000 sts (Mess_Integral_Gier)+2,__zero_reg__ |
2076 1348 1092 0000 sts (Mess_Integral_Gier)+3,__zero_reg__ |
2077 134c 1092 0000 sts Mess_Integral_Gier2,__zero_reg__ |
2078 1350 1092 0000 sts (Mess_Integral_Gier2)+1,__zero_reg__ |
2079 1354 1092 0000 sts (Mess_Integral_Gier2)+2,__zero_reg__ |
2080 1358 1092 0000 sts (Mess_Integral_Gier2)+3,__zero_reg__ |
2081 .L393: |
2082 135c E981 ldd r30,Y+1 |
2083 135e FA81 ldd r31,Y+2 |
2084 1360 E93C cpi r30,201 |
2085 1362 F105 cpc r31,__zero_reg__ |
2086 1364 04F4 brge .+2 |
2087 1366 00C0 rjmp .L397 |
2088 1368 8091 0000 lds r24,MotorenEin |
2089 136c 8823 tst r24 |
2090 136e 01F0 breq .+2 |
2091 1370 00C0 rjmp .L389 |
2092 1372 E091 0000 lds r30,EE_Parameter+3 |
2093 1376 FF27 clr r31 |
2094 1378 EE0F lsl r30 |
2095 137a FF1F rol r31 |
2096 137c E050 subi r30,lo8(-(PPM_in)) |
2097 137e F040 sbci r31,hi8(-(PPM_in)) |
2098 1380 8081 ld r24,Z |
2099 1382 9181 ldd r25,Z+1 |
2100 1384 8C34 cpi r24,76 |
2101 1386 9105 cpc r25,__zero_reg__ |
2102 1388 04F4 brge .+2 |
2103 138a 00C0 rjmp .L400 |
2104 138c 8091 0000 lds r24,delay_neutral.2356 |
2105 1390 8F5F subi r24,lo8(-(1)) |
2106 1392 8093 0000 sts delay_neutral.2356,r24 |
2107 1396 893C cpi r24,lo8(-55) |
2108 1398 00F4 brsh .+2 |
2109 139a 00C0 rjmp .L389 |
2110 139c 2998 cbi 37-0x20,1 |
2111 139e 0E94 0000 call SetNeutral |
2112 13a2 1092 0000 sts MotorenEin,__zero_reg__ |
2113 13a6 1092 0000 sts delay_neutral.2356,__zero_reg__ |
2114 13aa 1092 0000 sts (modell_fliegt.2359)+1,__zero_reg__ |
2115 13ae 1092 0000 sts modell_fliegt.2359,__zero_reg__ |
2116 13b2 8091 0000 lds r24,EE_Parameter |
2117 13b6 282F mov r18,r24 |
2118 13b8 3327 clr r19 |
2119 13ba F901 movw r30,r18 |
2120 13bc EE0F lsl r30 |
2121 13be FF1F rol r31 |
2122 13c0 E050 subi r30,lo8(-(PPM_in)) |
2123 13c2 F040 sbci r31,hi8(-(PPM_in)) |
2124 13c4 8081 ld r24,Z |
2125 13c6 9181 ldd r25,Z+1 |
2126 13c8 8734 cpi r24,71 |
2127 13ca 9105 cpc r25,__zero_reg__ |
2128 13cc 04F4 brge .L403 |
2129 13ce E091 0000 lds r30,EE_Parameter+1 |
2130 13d2 FF27 clr r31 |
2131 13d4 EE0F lsl r30 |
2132 13d6 FF1F rol r31 |
2133 13d8 E050 subi r30,lo8(-(PPM_in)) |
2134 13da F040 sbci r31,hi8(-(PPM_in)) |
2135 13dc 0190 ld __tmp_reg__,Z+ |
2136 13de F081 ld r31,Z |
2137 13e0 E02D mov r30,__tmp_reg__ |
2138 13e2 F7FF sbrs r31,7 |
2139 13e4 00C0 rjmp .L406 |
2140 13e6 F095 com r31 |
2141 13e8 E195 neg r30 |
2142 13ea FF4F sbci r31,lo8(-1) |
2143 .L406: |
2144 13ec E734 cpi r30,71 |
2145 13ee F105 cpc r31,__zero_reg__ |
2146 13f0 04F4 brge .+2 |
2147 13f2 00C0 rjmp .L405 |
2148 .L403: |
2149 13f4 8091 0000 lds r24,EE_Parameter+1 |
2150 13f8 682F mov r22,r24 |
2151 13fa 7727 clr r23 |
2152 13fc DB01 movw r26,r22 |
2153 13fe AA0F lsl r26 |
2154 1400 BB1F rol r27 |
2155 1402 A050 subi r26,lo8(-(PPM_in)) |
2156 1404 B040 sbci r27,hi8(-(PPM_in)) |
2157 1406 8D91 ld r24,X+ |
2158 1408 9C91 ld r25,X |
2159 140a 1197 sbiw r26,1 |
2160 140c 8734 cpi r24,71 |
2161 140e 9105 cpc r25,__zero_reg__ |
2162 1410 04F0 brlt .L407 |
2163 1412 F901 movw r30,r18 |
2164 1414 EE0F lsl r30 |
2165 1416 FF1F rol r31 |
2166 1418 E050 subi r30,lo8(-(PPM_in)) |
2167 141a F040 sbci r31,hi8(-(PPM_in)) |
2168 141c 8081 ld r24,Z |
2169 141e 9181 ldd r25,Z+1 |
2170 .L407: |
2171 1420 8D91 ld r24,X+ |
2172 1422 9C91 ld r25,X |
2173 1424 8734 cpi r24,71 |
2174 1426 9105 cpc r25,__zero_reg__ |
2175 1428 04F0 brlt .L409 |
2176 142a F901 movw r30,r18 |
2177 142c EE0F lsl r30 |
2178 142e FF1F rol r31 |
2179 1430 E050 subi r30,lo8(-(PPM_in)) |
2180 1432 F040 sbci r31,hi8(-(PPM_in)) |
2181 1434 8081 ld r24,Z |
2182 1436 9181 ldd r25,Z+1 |
2183 1438 8734 cpi r24,71 |
2184 143a 9105 cpc r25,__zero_reg__ |
2185 143c 04F0 brlt .L409 |
2186 143e 42E0 ldi r20,lo8(2) |
2187 1440 00C0 rjmp .L412 |
2188 .L409: |
2189 1442 41E0 ldi r20,lo8(1) |
2190 .L412: |
2191 1444 FB01 movw r30,r22 |
2192 1446 EE0F lsl r30 |
2193 1448 FF1F rol r31 |
2194 144a E050 subi r30,lo8(-(PPM_in)) |
2195 144c F040 sbci r31,hi8(-(PPM_in)) |
2196 144e 8081 ld r24,Z |
2197 1450 9181 ldd r25,Z+1 |
2198 1452 8634 cpi r24,70 |
2199 1454 9105 cpc r25,__zero_reg__ |
2200 1456 04F4 brge .L413 |
2201 1458 F901 movw r30,r18 |
2202 145a EE0F lsl r30 |
2203 145c FF1F rol r31 |
2204 145e E050 subi r30,lo8(-(PPM_in)) |
2205 1460 F040 sbci r31,hi8(-(PPM_in)) |
2206 1462 8081 ld r24,Z |
2207 1464 9181 ldd r25,Z+1 |
2208 1466 8734 cpi r24,71 |
2209 1468 9105 cpc r25,__zero_reg__ |
2210 146a 04F0 brlt .L413 |
2211 146c 43E0 ldi r20,lo8(3) |
2212 .L413: |
2213 146e FB01 movw r30,r22 |
2214 1470 EE0F lsl r30 |
2215 1472 FF1F rol r31 |
2216 1474 E050 subi r30,lo8(-(PPM_in)) |
2217 1476 F040 sbci r31,hi8(-(PPM_in)) |
2218 1478 8081 ld r24,Z |
2219 147a 9181 ldd r25,Z+1 |
2220 147c 8A5B subi r24,lo8(-70) |
2221 147e 9F4F sbci r25,hi8(-70) |
2222 1480 04F4 brge .L416 |
2223 1482 F901 movw r30,r18 |
2224 1484 EE0F lsl r30 |
2225 1486 FF1F rol r31 |
2226 1488 E050 subi r30,lo8(-(PPM_in)) |
2227 148a F040 sbci r31,hi8(-(PPM_in)) |
2228 148c 8081 ld r24,Z |
2229 148e 9181 ldd r25,Z+1 |
2230 1490 8734 cpi r24,71 |
2231 1492 9105 cpc r25,__zero_reg__ |
2232 1494 04F0 brlt .L416 |
2233 1496 44E0 ldi r20,lo8(4) |
2234 .L416: |
2235 1498 660F lsl r22 |
2236 149a 771F rol r23 |
2237 149c 6050 subi r22,lo8(-(PPM_in)) |
2238 149e 7040 sbci r23,hi8(-(PPM_in)) |
2239 14a0 FB01 movw r30,r22 |
2240 14a2 8081 ld r24,Z |
2241 14a4 9181 ldd r25,Z+1 |
2242 14a6 8A5B subi r24,lo8(-70) |
2243 14a8 9F4F sbci r25,hi8(-70) |
2244 14aa 04F4 brge .L419 |
2245 14ac 220F lsl r18 |
2246 14ae 331F rol r19 |
2247 14b0 2050 subi r18,lo8(-(PPM_in)) |
2248 14b2 3040 sbci r19,hi8(-(PPM_in)) |
2249 14b4 F901 movw r30,r18 |
2250 14b6 8081 ld r24,Z |
2251 14b8 9181 ldd r25,Z+1 |
2252 14ba 8634 cpi r24,70 |
2253 14bc 9105 cpc r25,__zero_reg__ |
2254 14be 04F4 brge .L419 |
2255 14c0 45E0 ldi r20,lo8(5) |
2256 .L419: |
2257 14c2 A0E0 ldi r26,lo8(EEPromArray+2) |
2258 14c4 B0E0 ldi r27,hi8(EEPromArray+2) |
2259 /* #APP */ |
2260 14c6 042E mov __tmp_reg__,r20 |
2261 14c8 0E94 0000 call __eeprom_write_byte_1F2021 |
2262 /* #NOAPP */ |
2263 .L405: |
2264 14cc 0E94 0000 call GetActiveParamSetNumber |
2265 14d0 4AE3 ldi r20,lo8(58) |
2266 14d2 60E0 ldi r22,lo8(EE_Parameter) |
2267 14d4 70E0 ldi r23,hi8(EE_Parameter) |
2268 14d6 0E94 0000 call ReadParameterSet |
2269 14da 0E94 0000 call GetActiveParamSetNumber |
2270 14de 0E94 0000 call Piep |
2271 14e2 8091 0000 lds r24,EE_Parameter+8 |
2272 14e6 80FF sbrs r24,0 |
2273 14e8 00C0 rjmp .L389 |
2274 14ea 8091 0000 lds r24,MessLuftdruck |
2275 14ee 9091 0000 lds r25,(MessLuftdruck)+1 |
2276 14f2 875B subi r24,lo8(951) |
2277 14f4 9340 sbci r25,hi8(951) |
2278 14f6 00F4 brsh .L423 |
2279 14f8 8091 0000 lds r24,MessLuftdruck |
2280 14fc 9091 0000 lds r25,(MessLuftdruck)+1 |
2281 1500 8E5E subi r24,lo8(750) |
2282 1502 9240 sbci r25,hi8(750) |
2283 1504 00F0 brlo .+2 |
2284 1506 00C0 rjmp .L389 |
2285 .L423: |
2286 1508 0E94 0000 call SucheLuftruckOffset |
2287 150c 00C0 rjmp .L389 |
2288 .L400: |
2289 150e 1092 0000 sts delay_neutral.2356,__zero_reg__ |
2290 1512 00C0 rjmp .L389 |
2291 .L397: |
2292 1514 4981 ldd r20,Y+1 |
2293 1516 5A81 ldd r21,Y+2 |
2294 1518 4332 cpi r20,35 |
2295 151a 5105 cpc r21,__zero_reg__ |
2296 151c 04F0 brlt .+2 |
2297 151e 00C0 rjmp .L389 |
2298 1520 8091 0000 lds r24,EE_Parameter+3 |
2299 1524 482F mov r20,r24 |
2300 1526 5527 clr r21 |
2301 1528 FA01 movw r30,r20 |
2302 152a EE0F lsl r30 |
2303 152c FF1F rol r31 |
2304 152e E050 subi r30,lo8(-(PPM_in)) |
2305 1530 F040 sbci r31,hi8(-(PPM_in)) |
2306 1532 8081 ld r24,Z |
2307 1534 9181 ldd r25,Z+1 |
2308 1536 855B subi r24,lo8(-75) |
2309 1538 9F4F sbci r25,hi8(-75) |
2310 153a 04F0 brlt .+2 |
2311 153c 00C0 rjmp .L426 |
2312 153e 8091 0000 lds r24,delay_einschalten.2357 |
2313 1542 8F5F subi r24,lo8(-(1)) |
2314 1544 8093 0000 sts delay_einschalten.2357,r24 |
2315 1548 893C cpi r24,lo8(-55) |
2316 154a 00F4 brsh .+2 |
2317 154c 00C0 rjmp .L428 |
2318 154e 88EC ldi r24,lo8(-56) |
2319 1550 8093 0000 sts delay_einschalten.2357,r24 |
2320 1554 81E0 ldi r24,lo8(1) |
2321 1556 90E0 ldi r25,hi8(1) |
2322 1558 9093 0000 sts (modell_fliegt.2359)+1,r25 |
2323 155c 8093 0000 sts modell_fliegt.2359,r24 |
2324 1560 81E0 ldi r24,lo8(1) |
2325 1562 8093 0000 sts MotorenEin,r24 |
2326 1566 1092 0000 sts sollGier.2350,__zero_reg__ |
2327 156a 1092 0000 sts (sollGier.2350)+1,__zero_reg__ |
2328 156e 1092 0000 sts (sollGier.2350)+2,__zero_reg__ |
2329 1572 1092 0000 sts (sollGier.2350)+3,__zero_reg__ |
2330 1576 1092 0000 sts Mess_Integral_Gier,__zero_reg__ |
2331 157a 1092 0000 sts (Mess_Integral_Gier)+1,__zero_reg__ |
2332 157e 1092 0000 sts (Mess_Integral_Gier)+2,__zero_reg__ |
2333 1582 1092 0000 sts (Mess_Integral_Gier)+3,__zero_reg__ |
2334 1586 1092 0000 sts Mess_Integral_Gier2,__zero_reg__ |
2335 158a 1092 0000 sts (Mess_Integral_Gier2)+1,__zero_reg__ |
2336 158e 1092 0000 sts (Mess_Integral_Gier2)+2,__zero_reg__ |
2337 1592 1092 0000 sts (Mess_Integral_Gier2)+3,__zero_reg__ |
2338 1596 1092 0000 sts Mess_IntegralNick,__zero_reg__ |
2339 159a 1092 0000 sts (Mess_IntegralNick)+1,__zero_reg__ |
2340 159e 1092 0000 sts (Mess_IntegralNick)+2,__zero_reg__ |
2341 15a2 1092 0000 sts (Mess_IntegralNick)+3,__zero_reg__ |
2342 15a6 1092 0000 sts Mess_IntegralRoll,__zero_reg__ |
2343 15aa 1092 0000 sts (Mess_IntegralRoll)+1,__zero_reg__ |
2344 15ae 1092 0000 sts (Mess_IntegralRoll)+2,__zero_reg__ |
2345 15b2 1092 0000 sts (Mess_IntegralRoll)+3,__zero_reg__ |
2346 15b6 8091 0000 lds r24,IntegralNick |
2347 15ba 9091 0000 lds r25,(IntegralNick)+1 |
2348 15be A091 0000 lds r26,(IntegralNick)+2 |
2349 15c2 B091 0000 lds r27,(IntegralNick)+3 |
2350 15c6 8093 0000 sts Mess_IntegralNick2,r24 |
2351 15ca 9093 0000 sts (Mess_IntegralNick2)+1,r25 |
2352 15ce A093 0000 sts (Mess_IntegralNick2)+2,r26 |
2353 15d2 B093 0000 sts (Mess_IntegralNick2)+3,r27 |
2354 15d6 8091 0000 lds r24,IntegralRoll |
2355 15da 9091 0000 lds r25,(IntegralRoll)+1 |
2356 15de A091 0000 lds r26,(IntegralRoll)+2 |
2357 15e2 B091 0000 lds r27,(IntegralRoll)+3 |
2358 15e6 8093 0000 sts Mess_IntegralRoll2,r24 |
2359 15ea 9093 0000 sts (Mess_IntegralRoll2)+1,r25 |
2360 15ee A093 0000 sts (Mess_IntegralRoll2)+2,r26 |
2361 15f2 B093 0000 sts (Mess_IntegralRoll2)+3,r27 |
2362 15f6 1092 0000 sts SummeNick.2348,__zero_reg__ |
2363 15fa 1092 0000 sts (SummeNick.2348)+1,__zero_reg__ |
2364 15fe 1092 0000 sts (SummeNick.2348)+2,__zero_reg__ |
2365 1602 1092 0000 sts (SummeNick.2348)+3,__zero_reg__ |
2366 1606 1092 0000 sts SummeRoll.2349,__zero_reg__ |
2367 160a 1092 0000 sts (SummeRoll.2349)+1,__zero_reg__ |
2368 160e 1092 0000 sts (SummeRoll.2349)+2,__zero_reg__ |
2369 1612 1092 0000 sts (SummeRoll.2349)+3,__zero_reg__ |
2370 1616 00C0 rjmp .L428 |
2371 .L426: |
2372 1618 1092 0000 sts delay_einschalten.2357,__zero_reg__ |
2373 .L428: |
2374 161c 440F lsl r20 |
2375 161e 551F rol r21 |
2376 1620 4050 subi r20,lo8(-(PPM_in)) |
2377 1622 5040 sbci r21,hi8(-(PPM_in)) |
2378 1624 FA01 movw r30,r20 |
2379 1626 8081 ld r24,Z |
2380 1628 9181 ldd r25,Z+1 |
2381 162a 8C34 cpi r24,76 |
2382 162c 9105 cpc r25,__zero_reg__ |
2383 162e 04F0 brlt .L430 |
2384 1630 8091 0000 lds r24,delay_ausschalten.2358 |
2385 1634 8F5F subi r24,lo8(-(1)) |
2386 1636 8093 0000 sts delay_ausschalten.2358,r24 |
2387 163a 893C cpi r24,lo8(-55) |
2388 163c 00F0 brlo .L389 |
2389 163e 1092 0000 sts MotorenEin,__zero_reg__ |
2390 1642 88EC ldi r24,lo8(-56) |
2391 1644 8093 0000 sts delay_ausschalten.2358,r24 |
2392 1648 1092 0000 sts (modell_fliegt.2359)+1,__zero_reg__ |
2393 164c 1092 0000 sts modell_fliegt.2359,__zero_reg__ |
2394 1650 00C0 rjmp .L389 |
2395 .L430: |
2396 1652 1092 0000 sts delay_ausschalten.2358,__zero_reg__ |
2397 .L389: |
2398 1656 8091 0000 lds r24,NewPpmData |
2399 165a 8150 subi r24,lo8(-(-1)) |
2400 165c 8093 0000 sts NewPpmData,r24 |
2401 1660 8091 0000 lds r24,NewPpmData |
2402 1664 8F3F cpi r24,lo8(-1) |
2403 1666 01F0 breq .L433 |
2404 1668 8091 0000 lds r24,Notlandung |
2405 166c 8823 tst r24 |
2406 166e 01F4 brne .+2 |
2407 1670 00C0 rjmp .L435 |
2408 .L433: |
2409 1672 0E94 0000 call ParameterZuordnung |
2410 1676 E091 0000 lds r30,EE_Parameter |
2411 167a FF27 clr r31 |
2412 167c EE0F lsl r30 |
2413 167e FF1F rol r31 |
2414 1680 DF01 movw r26,r30 |
2415 1682 A050 subi r26,lo8(-(PPM_in)) |
2416 1684 B040 sbci r27,hi8(-(PPM_in)) |
2417 1686 8D91 ld r24,X+ |
2418 1688 9C91 ld r25,X |
2419 168a 6091 0000 lds r22,EE_Parameter+15 |
2420 168e 7727 clr r23 |
2421 1690 E050 subi r30,lo8(-(PPM_diff)) |
2422 1692 F040 sbci r31,hi8(-(PPM_diff)) |
2423 1694 2081 ld r18,Z |
2424 1696 3181 ldd r19,Z+1 |
2425 1698 4091 0000 lds r20,EE_Parameter+16 |
2426 169c 5527 clr r21 |
2427 169e FC01 movw r30,r24 |
2428 16a0 E69F mul r30,r22 |
2429 16a2 C001 movw r24,r0 |
2430 16a4 E79F mul r30,r23 |
2431 16a6 900D add r25,r0 |
2432 16a8 F69F mul r31,r22 |
2433 16aa 900D add r25,r0 |
2434 16ac 1124 clr r1 |
2435 16ae F901 movw r30,r18 |
2436 16b0 E49F mul r30,r20 |
2437 16b2 9001 movw r18,r0 |
2438 16b4 E59F mul r30,r21 |
2439 16b6 300D add r19,r0 |
2440 16b8 F49F mul r31,r20 |
2441 16ba 300D add r19,r0 |
2442 16bc 1124 clr r1 |
2443 16be 820F add r24,r18 |
2444 16c0 931F adc r25,r19 |
2445 16c2 9093 0000 sts (StickNick)+1,r25 |
2446 16c6 8093 0000 sts StickNick,r24 |
2447 16ca E091 0000 lds r30,EE_Parameter+1 |
2448 16ce FF27 clr r31 |
2449 16d0 EE0F lsl r30 |
2450 16d2 FF1F rol r31 |
2451 16d4 DF01 movw r26,r30 |
2452 16d6 A050 subi r26,lo8(-(PPM_in)) |
2453 16d8 B040 sbci r27,hi8(-(PPM_in)) |
2454 16da 8D91 ld r24,X+ |
2455 16dc 9C91 ld r25,X |
2456 16de E050 subi r30,lo8(-(PPM_diff)) |
2457 16e0 F040 sbci r31,hi8(-(PPM_diff)) |
2458 16e2 2081 ld r18,Z |
2459 16e4 3181 ldd r19,Z+1 |
2460 16e6 FC01 movw r30,r24 |
2461 16e8 E69F mul r30,r22 |
2462 16ea C001 movw r24,r0 |
2463 16ec E79F mul r30,r23 |
2464 16ee 900D add r25,r0 |
2465 16f0 F69F mul r31,r22 |
2466 16f2 900D add r25,r0 |
2467 16f4 1124 clr r1 |
2468 16f6 B901 movw r22,r18 |
2469 16f8 649F mul r22,r20 |
2470 16fa 9001 movw r18,r0 |
2471 16fc 659F mul r22,r21 |
2472 16fe 300D add r19,r0 |
2473 1700 749F mul r23,r20 |
2474 1702 300D add r19,r0 |
2475 1704 1124 clr r1 |
2476 1706 820F add r24,r18 |
2477 1708 931F adc r25,r19 |
2478 170a 9093 0000 sts (StickRoll)+1,r25 |
2479 170e 8093 0000 sts StickRoll,r24 |
2480 1712 E091 0000 lds r30,EE_Parameter+3 |
2481 1716 FF27 clr r31 |
2482 1718 EE0F lsl r30 |
2483 171a FF1F rol r31 |
2484 171c E050 subi r30,lo8(-(PPM_in)) |
2485 171e F040 sbci r31,hi8(-(PPM_in)) |
2486 1720 8081 ld r24,Z |
2487 1722 9181 ldd r25,Z+1 |
2488 1724 9095 com r25 |
2489 1726 8195 neg r24 |
2490 1728 9F4F sbci r25,lo8(-1) |
2491 172a 9093 0000 sts (StickGier)+1,r25 |
2492 172e 8093 0000 sts StickGier,r24 |
2493 1732 1091 0000 lds r17,Parameter_Gyro_P |
2494 1736 612F mov r22,r17 |
2495 1738 7727 clr r23 |
2496 173a 67FD sbrc r22,7 |
2497 173c 7095 com r23 |
2498 173e 872F mov r24,r23 |
2499 1740 972F mov r25,r23 |
2500 1742 0E94 0000 call __floatsisf |
2501 1746 17FF sbrs r17,7 |
2502 1748 00C0 rjmp .L436 |
2503 174a 20E0 ldi r18,lo8(0x43800000) |
2504 174c 30E0 ldi r19,hi8(0x43800000) |
2505 174e 40E8 ldi r20,hlo8(0x43800000) |
2506 1750 53E4 ldi r21,hhi8(0x43800000) |
2507 1752 0E94 0000 call __addsf3 |
2508 .L436: |
2509 1756 20E0 ldi r18,lo8(0x41200000) |
2510 1758 30E0 ldi r19,hi8(0x41200000) |
2511 175a 40E2 ldi r20,hlo8(0x41200000) |
2512 175c 51E4 ldi r21,hhi8(0x41200000) |
2513 175e 0E94 0000 call __addsf3 |
2514 1762 20E0 ldi r18,lo8(0x3b800000) |
2515 1764 30E0 ldi r19,hi8(0x3b800000) |
2516 1766 40E8 ldi r20,hlo8(0x3b800000) |
2517 1768 5BE3 ldi r21,hhi8(0x3b800000) |
2518 176a 0E94 0000 call __mulsf3 |
2519 176e 5B01 movw r10,r22 |
2520 1770 6C01 movw r12,r24 |
2521 1772 6093 0000 sts GyroFaktor,r22 |
2522 1776 7093 0000 sts (GyroFaktor)+1,r23 |
2523 177a 8093 0000 sts (GyroFaktor)+2,r24 |
2524 177e 9093 0000 sts (GyroFaktor)+3,r25 |
2525 1782 1091 0000 lds r17,Parameter_Gyro_I |
2526 1786 612F mov r22,r17 |
2527 1788 7727 clr r23 |
2528 178a 67FD sbrc r22,7 |
2529 178c 7095 com r23 |
2530 178e 872F mov r24,r23 |
2531 1790 972F mov r25,r23 |
2532 1792 0E94 0000 call __floatsisf |
2533 1796 17FF sbrs r17,7 |
2534 1798 00C0 rjmp .L437 |
2535 179a 20E0 ldi r18,lo8(0x43800000) |
2536 179c 30E0 ldi r19,hi8(0x43800000) |
2537 179e 40E8 ldi r20,hlo8(0x43800000) |
2538 17a0 53E4 ldi r21,hhi8(0x43800000) |
2539 17a2 0E94 0000 call __addsf3 |
2540 .L437: |
2541 17a6 20E0 ldi r18,lo8(0x472be000) |
2542 17a8 30EE ldi r19,hi8(0x472be000) |
2543 17aa 4BE2 ldi r20,hlo8(0x472be000) |
2544 17ac 57E4 ldi r21,hhi8(0x472be000) |
2545 17ae 0E94 0000 call __divsf3 |
2546 17b2 6093 0000 sts IntegralFaktor,r22 |
2547 17b6 7093 0000 sts (IntegralFaktor)+1,r23 |
2548 17ba 8093 0000 sts (IntegralFaktor)+2,r24 |
2549 17be 9093 0000 sts (IntegralFaktor)+3,r25 |
2550 17c2 8091 0000 lds r24,EE_Parameter+8 |
2551 17c6 82FF sbrs r24,2 |
2552 17c8 00C0 rjmp .L438 |
2553 17ca 80E0 ldi r24,lo8(0x0) |
2554 17cc 90E0 ldi r25,hi8(0x0) |
2555 17ce A0E0 ldi r26,hlo8(0x0) |
2556 17d0 B0E0 ldi r27,hhi8(0x0) |
2557 17d2 8093 0000 sts IntegralFaktor,r24 |
2558 17d6 9093 0000 sts (IntegralFaktor)+1,r25 |
2559 17da A093 0000 sts (IntegralFaktor)+2,r26 |
2560 17de B093 0000 sts (IntegralFaktor)+3,r27 |
2561 .L438: |
2562 17e2 20E0 ldi r18,lo8(0x0) |
2563 17e4 30E0 ldi r19,hi8(0x0) |
2564 17e6 40E0 ldi r20,hlo8(0x0) |
2565 17e8 50E0 ldi r21,hhi8(0x0) |
2566 17ea C601 movw r24,r12 |
2567 17ec B501 movw r22,r10 |
2568 17ee 0E94 0000 call __ltsf2 |
2569 17f2 8823 tst r24 |
2570 17f4 04F4 brge .L440 |
2571 17f6 80E0 ldi r24,lo8(0x0) |
2572 17f8 90E0 ldi r25,hi8(0x0) |
2573 17fa A0E0 ldi r26,hlo8(0x0) |
2574 17fc B0E0 ldi r27,hhi8(0x0) |
2575 17fe 8093 0000 sts GyroFaktor,r24 |
2576 1802 9093 0000 sts (GyroFaktor)+1,r25 |
2577 1806 A093 0000 sts (GyroFaktor)+2,r26 |
2578 180a B093 0000 sts (GyroFaktor)+3,r27 |
2579 .L440: |
2580 180e 20E0 ldi r18,lo8(0x0) |
2581 1810 30E0 ldi r19,hi8(0x0) |
2582 1812 40E0 ldi r20,hlo8(0x0) |
2583 1814 50E0 ldi r21,hhi8(0x0) |
2584 1816 6091 0000 lds r22,IntegralFaktor |
2585 181a 7091 0000 lds r23,(IntegralFaktor)+1 |
2586 181e 8091 0000 lds r24,(IntegralFaktor)+2 |
2587 1822 9091 0000 lds r25,(IntegralFaktor)+3 |
2588 1826 0E94 0000 call __ltsf2 |
2589 182a 8823 tst r24 |
2590 182c 04F4 brge .L443 |
2591 182e 80E0 ldi r24,lo8(0x0) |
2592 1830 90E0 ldi r25,hi8(0x0) |
2593 1832 A0E0 ldi r26,hlo8(0x0) |
2594 1834 B0E0 ldi r27,hhi8(0x0) |
2595 1836 8093 0000 sts IntegralFaktor,r24 |
2596 183a 9093 0000 sts (IntegralFaktor)+1,r25 |
2597 183e A093 0000 sts (IntegralFaktor)+2,r26 |
2598 1842 B093 0000 sts (IntegralFaktor)+3,r27 |
2599 .L443: |
2600 1846 8091 0000 lds r24,Notlandung |
2601 184a 8823 tst r24 |
2602 184c 01F0 breq .L435 |
2603 184e 1092 0000 sts (StickGier)+1,__zero_reg__ |
2604 1852 1092 0000 sts StickGier,__zero_reg__ |
2605 1856 1092 0000 sts (StickNick)+1,__zero_reg__ |
2606 185a 1092 0000 sts StickNick,__zero_reg__ |
2607 185e 1092 0000 sts (StickRoll)+1,__zero_reg__ |
2608 1862 1092 0000 sts StickRoll,__zero_reg__ |
2609 1866 8DEC ldi r24,lo8(0x3dcccccd) |
2610 1868 9CEC ldi r25,hi8(0x3dcccccd) |
2611 186a ACEC ldi r26,hlo8(0x3dcccccd) |
2612 186c BDE3 ldi r27,hhi8(0x3dcccccd) |
2613 186e 8093 0000 sts GyroFaktor,r24 |
2614 1872 9093 0000 sts (GyroFaktor)+1,r25 |
2615 1876 A093 0000 sts (GyroFaktor)+2,r26 |
2616 187a B093 0000 sts (GyroFaktor)+3,r27 |
2617 187e 8AE0 ldi r24,lo8(0x3ba3d70a) |
2618 1880 97ED ldi r25,hi8(0x3ba3d70a) |
2619 1882 A3EA ldi r26,hlo8(0x3ba3d70a) |
2620 1884 BBE3 ldi r27,hhi8(0x3ba3d70a) |
2621 1886 8093 0000 sts IntegralFaktor,r24 |
2622 188a 9093 0000 sts (IntegralFaktor)+1,r25 |
2623 188e A093 0000 sts (IntegralFaktor)+2,r26 |
2624 1892 B093 0000 sts (IntegralFaktor)+3,r27 |
2625 .L435: |
2626 1896 8091 0000 lds r24,ZaehlMessungen |
2627 189a 9091 0000 lds r25,(ZaehlMessungen)+1 |
2628 189e 8D54 subi r24,lo8(333) |
2629 18a0 9140 sbci r25,hi8(333) |
2630 18a2 00F4 brsh .+2 |
2631 18a4 00C0 rjmp .L447 |
2632 18a6 2091 0000 lds r18,IntegralNick2 |
2633 18aa 3091 0000 lds r19,(IntegralNick2)+1 |
2634 18ae 4091 0000 lds r20,(IntegralNick2)+2 |
2635 18b2 5091 0000 lds r21,(IntegralNick2)+3 |
2636 18b6 8091 0000 lds r24,IntegralNick |
2637 18ba 9091 0000 lds r25,(IntegralNick)+1 |
2638 18be A091 0000 lds r26,(IntegralNick)+2 |
2639 18c2 B091 0000 lds r27,(IntegralNick)+3 |
2640 18c6 B901 movw r22,r18 |
2641 18c8 681B sub r22,r24 |
2642 18ca 790B sbc r23,r25 |
2643 18cc 7093 0000 sts (IntegralFehlerNick.2353)+1,r23 |
2644 18d0 6093 0000 sts IntegralFehlerNick.2353,r22 |
2645 18d4 2091 0000 lds r18,IntegralRoll2 |
2646 18d8 3091 0000 lds r19,(IntegralRoll2)+1 |
2647 18dc 4091 0000 lds r20,(IntegralRoll2)+2 |
2648 18e0 5091 0000 lds r21,(IntegralRoll2)+3 |
2649 18e4 8091 0000 lds r24,IntegralRoll |
2650 18e8 9091 0000 lds r25,(IntegralRoll)+1 |
2651 18ec A091 0000 lds r26,(IntegralRoll)+2 |
2652 18f0 B091 0000 lds r27,(IntegralRoll)+3 |
2653 18f4 281B sub r18,r24 |
2654 18f6 390B sbc r19,r25 |
2655 18f8 3093 0000 sts (IntegralFehlerRoll.2354)+1,r19 |
2656 18fc 2093 0000 sts IntegralFehlerRoll.2354,r18 |
2657 1900 1092 0000 sts (ZaehlMessungen)+1,__zero_reg__ |
2658 1904 1092 0000 sts ZaehlMessungen,__zero_reg__ |
2659 1908 673A cpi r22,167 |
2660 190a 7105 cpc r23,__zero_reg__ |
2661 190c 04F0 brlt .L449 |
2662 190e 8091 0000 lds r24,AdNeutralNick |
2663 1912 9091 0000 lds r25,(AdNeutralNick)+1 |
2664 1916 0196 adiw r24,1 |
2665 1918 00C0 rjmp .L576 |
2666 .L449: |
2667 191a 6A55 subi r22,lo8(-166) |
2668 191c 7F4F sbci r23,hi8(-166) |
2669 191e 04F4 brge .L451 |
2670 1920 8091 0000 lds r24,AdNeutralNick |
2671 1924 9091 0000 lds r25,(AdNeutralNick)+1 |
2672 1928 0197 sbiw r24,1 |
2673 .L576: |
2674 192a 9093 0000 sts (AdNeutralNick)+1,r25 |
2675 192e 8093 0000 sts AdNeutralNick,r24 |
2676 .L451: |
2677 1932 273A cpi r18,167 |
2678 1934 3105 cpc r19,__zero_reg__ |
2679 1936 04F0 brlt .L453 |
2680 1938 8091 0000 lds r24,AdNeutralRoll |
2681 193c 9091 0000 lds r25,(AdNeutralRoll)+1 |
2682 1940 0196 adiw r24,1 |
2683 1942 00C0 rjmp .L577 |
2684 .L453: |
2685 1944 2A55 subi r18,lo8(-166) |
2686 1946 3F4F sbci r19,hi8(-166) |
2687 1948 04F4 brge .L455 |
2688 194a 8091 0000 lds r24,AdNeutralRoll |
2689 194e 9091 0000 lds r25,(AdNeutralRoll)+1 |
2690 1952 0197 sbiw r24,1 |
2691 .L577: |
2692 1954 9093 0000 sts (AdNeutralRoll)+1,r25 |
2693 1958 8093 0000 sts AdNeutralRoll,r24 |
2694 .L455: |
2695 195c 8091 0000 lds r24,Mess_Integral_Gier2 |
2696 1960 9091 0000 lds r25,(Mess_Integral_Gier2)+1 |
2697 1964 A091 0000 lds r26,(Mess_Integral_Gier2)+2 |
2698 1968 B091 0000 lds r27,(Mess_Integral_Gier2)+3 |
2699 196c 873A cpi r24,lo8(167) |
2700 196e 9105 cpc r25,__zero_reg__ |
2701 1970 A105 cpc r26,__zero_reg__ |
2702 1972 B105 cpc r27,__zero_reg__ |
2703 1974 04F0 brlt .L457 |
2704 1976 8091 0000 lds r24,AdNeutralGier |
2705 197a 9091 0000 lds r25,(AdNeutralGier)+1 |
2706 197e 0197 sbiw r24,1 |
2707 1980 9093 0000 sts (AdNeutralGier)+1,r25 |
2708 1984 8093 0000 sts AdNeutralGier,r24 |
2709 .L457: |
2710 1988 8091 0000 lds r24,Mess_Integral_Gier2 |
2711 198c 9091 0000 lds r25,(Mess_Integral_Gier2)+1 |
2712 1990 A091 0000 lds r26,(Mess_Integral_Gier2)+2 |
2713 1994 B091 0000 lds r27,(Mess_Integral_Gier2)+3 |
2714 1998 8A55 subi r24,lo8(-166) |
2715 199a 9F4F sbci r25,hi8(-166) |
2716 199c AF4F sbci r26,hlo8(-166) |
2717 199e BF4F sbci r27,hhi8(-166) |
2718 19a0 04F4 brge .L459 |
2719 19a2 8091 0000 lds r24,AdNeutralGier |
2720 19a6 9091 0000 lds r25,(AdNeutralGier)+1 |
2721 19aa 0196 adiw r24,1 |
2722 19ac 9093 0000 sts (AdNeutralGier)+1,r25 |
2723 19b0 8093 0000 sts AdNeutralGier,r24 |
2724 .L459: |
2725 19b4 1092 7A00 sts 122,__zero_reg__ |
2726 19b8 8091 0000 lds r24,IntegralNick |
2727 19bc 9091 0000 lds r25,(IntegralNick)+1 |
2728 19c0 A091 0000 lds r26,(IntegralNick)+2 |
2729 19c4 B091 0000 lds r27,(IntegralNick)+3 |
2730 19c8 8093 0000 sts Mess_IntegralNick2,r24 |
2731 19cc 9093 0000 sts (Mess_IntegralNick2)+1,r25 |
2732 19d0 A093 0000 sts (Mess_IntegralNick2)+2,r26 |
2733 19d4 B093 0000 sts (Mess_IntegralNick2)+3,r27 |
2734 19d8 8091 0000 lds r24,IntegralRoll |
2735 19dc 9091 0000 lds r25,(IntegralRoll)+1 |
2736 19e0 A091 0000 lds r26,(IntegralRoll)+2 |
2737 19e4 B091 0000 lds r27,(IntegralRoll)+3 |
2738 19e8 8093 0000 sts Mess_IntegralRoll2,r24 |
2739 19ec 9093 0000 sts (Mess_IntegralRoll2)+1,r25 |
2740 19f0 A093 0000 sts (Mess_IntegralRoll2)+2,r26 |
2741 19f4 B093 0000 sts (Mess_IntegralRoll2)+3,r27 |
2742 19f8 8091 0000 lds r24,Integral_Gier |
2743 19fc 9091 0000 lds r25,(Integral_Gier)+1 |
2744 1a00 A091 0000 lds r26,(Integral_Gier)+2 |
2745 1a04 B091 0000 lds r27,(Integral_Gier)+3 |
2746 1a08 8093 0000 sts Mess_Integral_Gier2,r24 |
2747 1a0c 9093 0000 sts (Mess_Integral_Gier2)+1,r25 |
2748 1a10 A093 0000 sts (Mess_Integral_Gier2)+2,r26 |
2749 1a14 B093 0000 sts (Mess_Integral_Gier2)+3,r27 |
2750 1a18 8FEE ldi r24,lo8(-17) |
2751 1a1a 8093 7A00 sts 122,r24 |
2752 .L447: |
2753 1a1e 6091 0000 lds r22,IntegralNick |
2754 1a22 7091 0000 lds r23,(IntegralNick)+1 |
2755 1a26 8091 0000 lds r24,(IntegralNick)+2 |
2756 1a2a 9091 0000 lds r25,(IntegralNick)+3 |
2757 1a2e A090 0000 lds r10,EE_Parameter+20 |
2758 1a32 BB24 clr r11 |
2759 1a34 CC24 clr r12 |
2760 1a36 DD24 clr r13 |
2761 1a38 E090 0000 lds r14,Mittelwert_AccNick |
2762 1a3c F090 0000 lds r15,(Mittelwert_AccNick)+1 |
2763 1a40 A601 movw r20,r12 |
2764 1a42 9501 movw r18,r10 |
2765 1a44 0E94 0000 call __divmodsi4 |
2766 1a48 0027 clr r16 |
2767 1a4a F7FC sbrc r15,7 |
2768 1a4c 0095 com r16 |
2769 1a4e 102F mov r17,r16 |
2770 1a50 2E19 sub r18,r14 |
2771 1a52 3F09 sbc r19,r15 |
2772 1a54 400B sbc r20,r16 |
2773 1a56 510B sbc r21,r17 |
2774 1a58 CA01 movw r24,r20 |
2775 1a5a B901 movw r22,r18 |
2776 1a5c 20E1 ldi r18,lo8(16) |
2777 1a5e 30E0 ldi r19,hi8(16) |
2778 1a60 40E0 ldi r20,hlo8(16) |
2779 1a62 50E0 ldi r21,hhi8(16) |
2780 1a64 0E94 0000 call __divmodsi4 |
2781 1a68 3901 movw r6,r18 |
2782 1a6a 4A01 movw r8,r20 |
2783 1a6c 2093 0000 sts tmp_long.2351,r18 |
2784 1a70 3093 0000 sts (tmp_long.2351)+1,r19 |
2785 1a74 4093 0000 sts (tmp_long.2351)+2,r20 |
2786 1a78 5093 0000 sts (tmp_long.2351)+3,r21 |
2787 1a7c 6091 0000 lds r22,IntegralRoll |
2788 1a80 7091 0000 lds r23,(IntegralRoll)+1 |
2789 1a84 8091 0000 lds r24,(IntegralRoll)+2 |
2790 1a88 9091 0000 lds r25,(IntegralRoll)+3 |
2791 1a8c E090 0000 lds r14,Mittelwert_AccRoll |
2792 1a90 F090 0000 lds r15,(Mittelwert_AccRoll)+1 |
2793 1a94 A601 movw r20,r12 |
2794 1a96 9501 movw r18,r10 |
2795 1a98 0E94 0000 call __divmodsi4 |
2796 1a9c 0027 clr r16 |
2797 1a9e F7FC sbrc r15,7 |
2798 1aa0 0095 com r16 |
2799 1aa2 102F mov r17,r16 |
2800 1aa4 2E19 sub r18,r14 |
2801 1aa6 3F09 sbc r19,r15 |
2802 1aa8 400B sbc r20,r16 |
2803 1aaa 510B sbc r21,r17 |
2804 1aac CA01 movw r24,r20 |
2805 1aae B901 movw r22,r18 |
2806 1ab0 20E1 ldi r18,lo8(16) |
2807 1ab2 30E0 ldi r19,hi8(16) |
2808 1ab4 40E0 ldi r20,hlo8(16) |
2809 1ab6 50E0 ldi r21,hhi8(16) |
2810 1ab8 0E94 0000 call __divmodsi4 |
2811 1abc 2093 0000 sts tmp_long2.2352,r18 |
2812 1ac0 3093 0000 sts (tmp_long2.2352)+1,r19 |
2813 1ac4 4093 0000 sts (tmp_long2.2352)+2,r20 |
2814 1ac8 5093 0000 sts (tmp_long2.2352)+3,r21 |
2815 1acc F5EF ldi r31,lo8(501) |
2816 1ace 6F16 cp r6,r31 |
2817 1ad0 F1E0 ldi r31,hi8(501) |
2818 1ad2 7F06 cpc r7,r31 |
2819 1ad4 F0E0 ldi r31,hlo8(501) |
2820 1ad6 8F06 cpc r8,r31 |
2821 1ad8 F0E0 ldi r31,hhi8(501) |
2822 1ada 9F06 cpc r9,r31 |
2823 1adc 04F0 brlt .L461 |
2824 1ade 84EF ldi r24,lo8(500) |
2825 1ae0 91E0 ldi r25,hi8(500) |
2826 1ae2 A0E0 ldi r26,hlo8(500) |
2827 1ae4 B0E0 ldi r27,hhi8(500) |
2828 1ae6 00C0 rjmp .L578 |
2829 .L461: |
2830 1ae8 6CE0 ldi r22,lo8(-500) |
2831 1aea 6616 cp r6,r22 |
2832 1aec 6EEF ldi r22,hi8(-500) |
2833 1aee 7606 cpc r7,r22 |
2834 1af0 6FEF ldi r22,hlo8(-500) |
2835 1af2 8606 cpc r8,r22 |
2836 1af4 6FEF ldi r22,hhi8(-500) |
2837 1af6 9606 cpc r9,r22 |
2838 1af8 04F4 brge .L463 |
2839 1afa 8CE0 ldi r24,lo8(-500) |
2840 1afc 9EEF ldi r25,hi8(-500) |
2841 1afe AFEF ldi r26,hlo8(-500) |
2842 1b00 BFEF ldi r27,hhi8(-500) |
2843 .L578: |
2844 1b02 8093 0000 sts tmp_long.2351,r24 |
2845 1b06 9093 0000 sts (tmp_long.2351)+1,r25 |
2846 1b0a A093 0000 sts (tmp_long.2351)+2,r26 |
2847 1b0e B093 0000 sts (tmp_long.2351)+3,r27 |
2848 .L463: |
2849 1b12 253F cpi r18,lo8(501) |
2850 1b14 71E0 ldi r23,hi8(501) |
2851 1b16 3707 cpc r19,r23 |
2852 1b18 70E0 ldi r23,hlo8(501) |
2853 1b1a 4707 cpc r20,r23 |
2854 1b1c 70E0 ldi r23,hhi8(501) |
2855 1b1e 5707 cpc r21,r23 |
2856 1b20 04F0 brlt .L465 |
2857 1b22 84EF ldi r24,lo8(500) |
2858 1b24 91E0 ldi r25,hi8(500) |
2859 1b26 A0E0 ldi r26,hlo8(500) |
2860 1b28 B0E0 ldi r27,hhi8(500) |
2861 1b2a 00C0 rjmp .L579 |
2862 .L465: |
2863 1b2c 2C50 subi r18,lo8(-500) |
2864 1b2e 3E4F sbci r19,hi8(-500) |
2865 1b30 4F4F sbci r20,hlo8(-500) |
2866 1b32 5F4F sbci r21,hhi8(-500) |
2867 1b34 04F4 brge .L467 |
2868 1b36 8CE0 ldi r24,lo8(-500) |
2869 1b38 9EEF ldi r25,hi8(-500) |
2870 1b3a AFEF ldi r26,hlo8(-500) |
2871 1b3c BFEF ldi r27,hhi8(-500) |
2872 .L579: |
2873 1b3e 8093 0000 sts tmp_long2.2352,r24 |
2874 1b42 9093 0000 sts (tmp_long2.2352)+1,r25 |
2875 1b46 A093 0000 sts (tmp_long2.2352)+2,r26 |
2876 1b4a B093 0000 sts (tmp_long2.2352)+3,r27 |
2877 .L467: |
2878 1b4e 1092 7A00 sts 122,__zero_reg__ |
2879 1b52 8091 0000 lds r24,Mess_IntegralNick |
2880 1b56 9091 0000 lds r25,(Mess_IntegralNick)+1 |
2881 1b5a A091 0000 lds r26,(Mess_IntegralNick)+2 |
2882 1b5e B091 0000 lds r27,(Mess_IntegralNick)+3 |
2883 1b62 2091 0000 lds r18,tmp_long.2351 |
2884 1b66 3091 0000 lds r19,(tmp_long.2351)+1 |
2885 1b6a 4091 0000 lds r20,(tmp_long.2351)+2 |
2886 1b6e 5091 0000 lds r21,(tmp_long.2351)+3 |
2887 1b72 821B sub r24,r18 |
2888 1b74 930B sbc r25,r19 |
2889 1b76 A40B sbc r26,r20 |
2890 1b78 B50B sbc r27,r21 |
2891 1b7a 8093 0000 sts Mess_IntegralNick,r24 |
2892 1b7e 9093 0000 sts (Mess_IntegralNick)+1,r25 |
2893 1b82 A093 0000 sts (Mess_IntegralNick)+2,r26 |
2894 1b86 B093 0000 sts (Mess_IntegralNick)+3,r27 |
2895 1b8a 8091 0000 lds r24,Mess_IntegralRoll |
2896 1b8e 9091 0000 lds r25,(Mess_IntegralRoll)+1 |
2897 1b92 A091 0000 lds r26,(Mess_IntegralRoll)+2 |
2898 1b96 B091 0000 lds r27,(Mess_IntegralRoll)+3 |
2899 1b9a 2091 0000 lds r18,tmp_long2.2352 |
2900 1b9e 3091 0000 lds r19,(tmp_long2.2352)+1 |
2901 1ba2 4091 0000 lds r20,(tmp_long2.2352)+2 |
2902 1ba6 5091 0000 lds r21,(tmp_long2.2352)+3 |
2903 1baa 821B sub r24,r18 |
2904 1bac 930B sbc r25,r19 |
2905 1bae A40B sbc r26,r20 |
2906 1bb0 B50B sbc r27,r21 |
2907 1bb2 8093 0000 sts Mess_IntegralRoll,r24 |
2908 1bb6 9093 0000 sts (Mess_IntegralRoll)+1,r25 |
2909 1bba A093 0000 sts (Mess_IntegralRoll)+2,r26 |
2910 1bbe B093 0000 sts (Mess_IntegralRoll)+3,r27 |
2911 1bc2 8091 0000 lds r24,StickGier |
2912 1bc6 9091 0000 lds r25,(StickGier)+1 |
2913 1bca 5C01 movw r10,r24 |
2914 1bcc CC24 clr r12 |
2915 1bce B7FC sbrc r11,7 |
2916 1bd0 C094 com r12 |
2917 1bd2 DC2C mov r13,r12 |
2918 1bd4 A092 0000 sts sollGier.2350,r10 |
2919 1bd8 B092 0000 sts (sollGier.2350)+1,r11 |
2920 1bdc C092 0000 sts (sollGier.2350)+2,r12 |
2921 1be0 D092 0000 sts (sollGier.2350)+3,r13 |
2922 1be4 97FF sbrs r25,7 |
2923 1be6 00C0 rjmp .L470 |
2924 1be8 9095 com r25 |
2925 1bea 8195 neg r24 |
2926 1bec 9F4F sbci r25,lo8(-1) |
2927 .L470: |
2928 1bee 8497 sbiw r24,36 |
2929 1bf0 04F0 brlt .L469 |
2930 1bf2 8091 0000 lds r24,EE_Parameter+8 |
2931 1bf6 84FD sbrc r24,4 |
2932 1bf8 00C0 rjmp .L469 |
2933 1bfa 81E0 ldi r24,lo8(1) |
2934 1bfc 8093 0000 sts NeueKompassRichtungMerken.2362,r24 |
2935 .L469: |
2936 1c00 6090 0000 lds r6,Mess_Integral_Gier |
2937 1c04 7090 0000 lds r7,(Mess_Integral_Gier)+1 |
2938 1c08 8090 0000 lds r8,(Mess_Integral_Gier)+2 |
2939 1c0c 9090 0000 lds r9,(Mess_Integral_Gier)+3 |
2940 1c10 C501 movw r24,r10 |
2941 1c12 B7FE sbrs r11,7 |
2942 1c14 00C0 rjmp .L473 |
2943 1c16 9095 com r25 |
2944 1c18 8195 neg r24 |
2945 1c1a 9F4F sbci r25,lo8(-1) |
2946 .L473: |
2947 1c1c 7C01 movw r14,r24 |
2948 1c1e 0027 clr r16 |
2949 1c20 F7FC sbrc r15,7 |
2950 1c22 0095 com r16 |
2951 1c24 102F mov r17,r16 |
2952 1c26 2091 0000 lds r18,EE_Parameter+17 |
2953 1c2a 3327 clr r19 |
2954 1c2c 4427 clr r20 |
2955 1c2e 5527 clr r21 |
2956 1c30 C601 movw r24,r12 |
2957 1c32 B501 movw r22,r10 |
2958 1c34 0E94 0000 call __mulsi3 |
2959 1c38 9B01 movw r18,r22 |
2960 1c3a AC01 movw r20,r24 |
2961 1c3c C801 movw r24,r16 |
2962 1c3e B701 movw r22,r14 |
2963 1c40 0E94 0000 call __mulsi3 |
2964 1c44 20E0 ldi r18,lo8(256) |
2965 1c46 31E0 ldi r19,hi8(256) |
2966 1c48 40E0 ldi r20,hlo8(256) |
2967 1c4a 50E0 ldi r21,hhi8(256) |
2968 1c4c 0E94 0000 call __divmodsi4 |
2969 1c50 4427 clr r20 |
2970 1c52 37FD sbrc r19,7 |
2971 1c54 4095 com r20 |
2972 1c56 542F mov r21,r20 |
2973 1c58 621A sub r6,r18 |
2974 1c5a 730A sbc r7,r19 |
2975 1c5c 840A sbc r8,r20 |
2976 1c5e 950A sbc r9,r21 |
2977 1c60 6092 0000 sts Mess_Integral_Gier,r6 |
2978 1c64 7092 0000 sts (Mess_Integral_Gier)+1,r7 |
2979 1c68 8092 0000 sts (Mess_Integral_Gier)+2,r8 |
2980 1c6c 9092 0000 sts (Mess_Integral_Gier)+3,r9 |
2981 1c70 8091 0000 lds r24,Mess_Integral_Gier |
2982 1c74 9091 0000 lds r25,(Mess_Integral_Gier)+1 |
2983 1c78 A091 0000 lds r26,(Mess_Integral_Gier)+2 |
2984 1c7c B091 0000 lds r27,(Mess_Integral_Gier)+3 |
2985 1c80 8153 subi r24,lo8(30001) |
2986 1c82 9547 sbci r25,hi8(30001) |
2987 1c84 A040 sbci r26,hlo8(30001) |
2988 1c86 B040 sbci r27,hhi8(30001) |
2989 1c88 04F0 brlt .L474 |
2990 1c8a 80E3 ldi r24,lo8(30000) |
2991 1c8c 95E7 ldi r25,hi8(30000) |
2992 1c8e A0E0 ldi r26,hlo8(30000) |
2993 1c90 B0E0 ldi r27,hhi8(30000) |
2994 1c92 8093 0000 sts Mess_Integral_Gier,r24 |
2995 1c96 9093 0000 sts (Mess_Integral_Gier)+1,r25 |
2996 1c9a A093 0000 sts (Mess_Integral_Gier)+2,r26 |
2997 1c9e B093 0000 sts (Mess_Integral_Gier)+3,r27 |
2998 .L474: |
2999 1ca2 8091 0000 lds r24,Mess_Integral_Gier |
3000 1ca6 9091 0000 lds r25,(Mess_Integral_Gier)+1 |
3001 1caa A091 0000 lds r26,(Mess_Integral_Gier)+2 |
3002 1cae B091 0000 lds r27,(Mess_Integral_Gier)+3 |
3003 1cb2 805D subi r24,lo8(-30000) |
3004 1cb4 9A48 sbci r25,hi8(-30000) |
3005 1cb6 AF4F sbci r26,hlo8(-30000) |
3006 1cb8 BF4F sbci r27,hhi8(-30000) |
3007 1cba 04F4 brge .L476 |
3008 1cbc 80ED ldi r24,lo8(-30000) |
3009 1cbe 9AE8 ldi r25,hi8(-30000) |
3010 1cc0 AFEF ldi r26,hlo8(-30000) |
3011 1cc2 BFEF ldi r27,hhi8(-30000) |
3012 1cc4 8093 0000 sts Mess_Integral_Gier,r24 |
3013 1cc8 9093 0000 sts (Mess_Integral_Gier)+1,r25 |
3014 1ccc A093 0000 sts (Mess_Integral_Gier)+2,r26 |
3015 1cd0 B093 0000 sts (Mess_Integral_Gier)+3,r27 |
3016 .L476: |
3017 1cd4 8FEE ldi r24,lo8(-17) |
3018 1cd6 8093 7A00 sts 122,r24 |
3019 1cda 8091 0000 lds r24,KompassValue |
3020 1cde 9091 0000 lds r25,(KompassValue)+1 |
3021 1ce2 892B or r24,r25 |
3022 1ce4 01F4 brne .+2 |
3023 1ce6 00C0 rjmp .L478 |
3024 1ce8 8091 0000 lds r24,EE_Parameter+8 |
3025 1cec 83FF sbrs r24,3 |
3026 1cee 00C0 rjmp .L478 |
3027 1cf0 6091 0000 lds r22,IntegralNick |
3028 1cf4 7091 0000 lds r23,(IntegralNick)+1 |
3029 1cf8 8091 0000 lds r24,(IntegralNick)+2 |
3030 1cfc 9091 0000 lds r25,(IntegralNick)+3 |
3031 1d00 20E0 ldi r18,lo8(512) |
3032 1d02 32E0 ldi r19,hi8(512) |
3033 1d04 40E0 ldi r20,hlo8(512) |
3034 1d06 50E0 ldi r21,hhi8(512) |
3035 1d08 0E94 0000 call __divmodsi4 |
3036 1d0c 8901 movw r16,r18 |
3037 1d0e 37FF sbrs r19,7 |
3038 1d10 00C0 rjmp .L481 |
3039 1d12 1095 com r17 |
3040 1d14 0195 neg r16 |
3041 1d16 1F4F sbci r17,lo8(-1) |
3042 .L481: |
3043 1d18 6091 0000 lds r22,IntegralRoll |
3044 1d1c 7091 0000 lds r23,(IntegralRoll)+1 |
3045 1d20 8091 0000 lds r24,(IntegralRoll)+2 |
3046 1d24 9091 0000 lds r25,(IntegralRoll)+3 |
3047 1d28 20E0 ldi r18,lo8(512) |
3048 1d2a 32E0 ldi r19,hi8(512) |
3049 1d2c 40E0 ldi r20,hlo8(512) |
3050 1d2e 50E0 ldi r21,hhi8(512) |
3051 1d30 0E94 0000 call __divmodsi4 |
3052 1d34 B901 movw r22,r18 |
3053 1d36 37FF sbrs r19,7 |
3054 1d38 00C0 rjmp .L482 |
3055 1d3a 7095 com r23 |
3056 1d3c 6195 neg r22 |
3057 1d3e 7F4F sbci r23,lo8(-1) |
3058 .L482: |
3059 1d40 6017 cp r22,r16 |
3060 1d42 7107 cpc r23,r17 |
3061 1d44 04F4 brge .L483 |
3062 1d46 B801 movw r22,r16 |
3063 .L483: |
3064 1d48 6931 cpi r22,25 |
3065 1d4a 7105 cpc r23,__zero_reg__ |
3066 1d4c 04F4 brge .L484 |
3067 1d4e 8091 0000 lds r24,NeueKompassRichtungMerken.2362 |
3068 1d52 8823 tst r24 |
3069 1d54 01F0 breq .L484 |
3070 1d56 8091 0000 lds r24,SignalSchlecht.2366 |
3071 1d5a 9091 0000 lds r25,(SignalSchlecht.2366)+1 |
3072 1d5e 892B or r24,r25 |
3073 1d60 01F4 brne .L484 |
3074 1d62 8091 0000 lds r24,KompassValue |
3075 1d66 9091 0000 lds r25,(KompassValue)+1 |
3076 1d6a 9093 0000 sts (KompassStartwert)+1,r25 |
3077 1d6e 8093 0000 sts KompassStartwert,r24 |
3078 1d72 1092 0000 sts NeueKompassRichtungMerken.2362,__zero_reg__ |
3079 .L484: |
3080 1d76 2091 0000 lds r18,Parameter_KompassWirkung |
3081 1d7a 3327 clr r19 |
3082 1d7c 629F mul r22,r18 |
3083 1d7e C001 movw r24,r0 |
3084 1d80 639F mul r22,r19 |
3085 1d82 900D add r25,r0 |
3086 1d84 729F mul r23,r18 |
3087 1d86 900D add r25,r0 |
3088 1d88 1124 clr r1 |
3089 1d8a 60E4 ldi r22,lo8(64) |
3090 1d8c 70E0 ldi r23,hi8(64) |
3091 1d8e 0E94 0000 call __divmodhi4 |
3092 1d92 A901 movw r20,r18 |
3093 1d94 461B sub r20,r22 |
3094 1d96 570B sbc r21,r23 |
3095 1d98 1416 cp __zero_reg__,r20 |
3096 1d9a 1506 cpc __zero_reg__,r21 |
3097 1d9c 04F0 brlt .+2 |
3098 1d9e 00C0 rjmp .L488 |
3099 1da0 1092 7A00 sts 122,__zero_reg__ |
3100 1da4 2091 0000 lds r18,SignalSchlecht.2366 |
3101 1da8 3091 0000 lds r19,(SignalSchlecht.2366)+1 |
3102 1dac 2115 cp r18,__zero_reg__ |
3103 1dae 3105 cpc r19,__zero_reg__ |
3104 1db0 01F4 brne .L490 |
3105 1db2 0091 0000 lds r16,Mess_Integral_Gier |
3106 1db6 1091 0000 lds r17,(Mess_Integral_Gier)+1 |
3107 1dba 2091 0000 lds r18,(Mess_Integral_Gier)+2 |
3108 1dbe 3091 0000 lds r19,(Mess_Integral_Gier)+3 |
3109 1dc2 8091 0000 lds r24,KompassRichtung |
3110 1dc6 9091 0000 lds r25,(KompassRichtung)+1 |
3111 1dca BC01 movw r22,r24 |
3112 1dcc 649F mul r22,r20 |
3113 1dce C001 movw r24,r0 |
3114 1dd0 659F mul r22,r21 |
3115 1dd2 900D add r25,r0 |
3116 1dd4 749F mul r23,r20 |
3117 1dd6 900D add r25,r0 |
3118 1dd8 1124 clr r1 |
3119 1dda 60E2 ldi r22,lo8(32) |
3120 1ddc 70E0 ldi r23,hi8(32) |
3121 1dde 0E94 0000 call __divmodhi4 |
3122 1de2 8827 clr r24 |
3123 1de4 77FD sbrc r23,7 |
3124 1de6 8095 com r24 |
3125 1de8 982F mov r25,r24 |
3126 1dea 060F add r16,r22 |
3127 1dec 171F adc r17,r23 |
3128 1dee 281F adc r18,r24 |
3129 1df0 391F adc r19,r25 |
3130 1df2 0093 0000 sts Mess_Integral_Gier,r16 |
3131 1df6 1093 0000 sts (Mess_Integral_Gier)+1,r17 |
3132 1dfa 2093 0000 sts (Mess_Integral_Gier)+2,r18 |
3133 1dfe 3093 0000 sts (Mess_Integral_Gier)+3,r19 |
3134 1e02 8FEE ldi r24,lo8(-17) |
3135 1e04 8093 7A00 sts 122,r24 |
3136 1e08 00C0 rjmp .L478 |
3137 .L490: |
3138 1e0a 8FEE ldi r24,lo8(-17) |
3139 1e0c 8093 7A00 sts 122,r24 |
3140 1e10 2150 subi r18,lo8(-(-1)) |
3141 1e12 3040 sbci r19,hi8(-(-1)) |
3142 1e14 3093 0000 sts (SignalSchlecht.2366)+1,r19 |
3143 1e18 2093 0000 sts SignalSchlecht.2366,r18 |
3144 1e1c 00C0 rjmp .L478 |
3145 .L488: |
3146 1e1e 84EF ldi r24,lo8(500) |
3147 1e20 91E0 ldi r25,hi8(500) |
3148 1e22 9093 0000 sts (SignalSchlecht.2366)+1,r25 |
3149 1e26 8093 0000 sts SignalSchlecht.2366,r24 |
3150 .L478: |
3151 1e2a 8091 0000 lds r24,EE_Parameter+8 |
3152 1e2e 85FF sbrs r24,5 |
3153 1e30 00C0 rjmp .L492 |
3154 1e32 8091 0000 lds r24,Parameter_UserParam1 |
3155 1e36 9927 clr r25 |
3156 1e38 9093 0000 sts (gps_p)+1,r25 |
3157 1e3c 8093 0000 sts gps_p,r24 |
3158 1e40 8091 0000 lds r24,Parameter_UserParam2 |
3159 1e44 9927 clr r25 |
3160 1e46 9093 0000 sts (gps_d)+1,r25 |
3161 1e4a 8093 0000 sts gps_d,r24 |
3162 1e4e 0E94 0000 call gps_main |
3163 1e52 00C0 rjmp .L494 |
3164 .L492: |
3165 1e54 1092 0000 sts (GPS_Nick)+1,__zero_reg__ |
3166 1e58 1092 0000 sts GPS_Nick,__zero_reg__ |
3167 1e5c 1092 0000 sts (GPS_Roll)+1,__zero_reg__ |
3168 1e60 1092 0000 sts GPS_Roll,__zero_reg__ |
3169 .L494: |
3170 1e64 8091 0000 lds r24,DebugOut+17 |
3171 1e68 8F5F subi r24,lo8(-(1)) |
3172 1e6a 8093 0000 sts DebugOut+17,r24 |
3173 1e6e 8091 0000 lds r24,TimerWerteausgabe.2361 |
3174 1e72 8150 subi r24,lo8(-(-1)) |
3175 1e74 8093 0000 sts TimerWerteausgabe.2361,r24 |
3176 1e78 8F3F cpi r24,lo8(-1) |
3177 1e7a 01F0 breq .+2 |
3178 1e7c 00C0 rjmp .L495 |
3179 1e7e 81E3 ldi r24,lo8(49) |
3180 1e80 8093 0000 sts TimerWerteausgabe.2361,r24 |
3181 1e84 6091 0000 lds r22,IntegralNick |
3182 1e88 7091 0000 lds r23,(IntegralNick)+1 |
3183 1e8c 8091 0000 lds r24,(IntegralNick)+2 |
3184 1e90 9091 0000 lds r25,(IntegralNick)+3 |
3185 1e94 E090 0000 lds r14,EE_Parameter+20 |
3186 1e98 FF24 clr r15 |
3187 1e9a 0027 clr r16 |
3188 1e9c 1127 clr r17 |
3189 1e9e A801 movw r20,r16 |
3190 1ea0 9701 movw r18,r14 |
3191 1ea2 0E94 0000 call __divmodsi4 |
3192 1ea6 3093 0000 sts (DebugOut+18)+1,r19 |
3193 1eaa 2093 0000 sts DebugOut+18,r18 |
3194 1eae 6091 0000 lds r22,IntegralRoll |
3195 1eb2 7091 0000 lds r23,(IntegralRoll)+1 |
3196 1eb6 8091 0000 lds r24,(IntegralRoll)+2 |
3197 1eba 9091 0000 lds r25,(IntegralRoll)+3 |
3198 1ebe A801 movw r20,r16 |
3199 1ec0 9701 movw r18,r14 |
3200 1ec2 0E94 0000 call __divmodsi4 |
3201 1ec6 3093 0000 sts (DebugOut+20)+1,r19 |
3202 1eca 2093 0000 sts DebugOut+20,r18 |
3203 1ece 8091 0000 lds r24,Mittelwert_AccNick |
3204 1ed2 9091 0000 lds r25,(Mittelwert_AccNick)+1 |
3205 1ed6 9093 0000 sts (DebugOut+22)+1,r25 |
3206 1eda 8093 0000 sts DebugOut+22,r24 |
3207 1ede 8091 0000 lds r24,Mittelwert_AccRoll |
3208 1ee2 9091 0000 lds r25,(Mittelwert_AccRoll)+1 |
3209 1ee6 9093 0000 sts (DebugOut+24)+1,r25 |
3210 1eea 8093 0000 sts DebugOut+24,r24 |
3211 1eee 8091 0000 lds r24,MesswertGier |
3212 1ef2 9091 0000 lds r25,(MesswertGier)+1 |
3213 1ef6 9093 0000 sts (DebugOut+26)+1,r25 |
3214 1efa 8093 0000 sts DebugOut+26,r24 |
3215 1efe 8091 0000 lds r24,HoehenWert |
3216 1f02 9091 0000 lds r25,(HoehenWert)+1 |
3217 1f06 9093 0000 sts (DebugOut+28)+1,r25 |
3218 1f0a 8093 0000 sts DebugOut+28,r24 |
3219 1f0e 6091 0000 lds r22,Mess_Integral_Hoch |
3220 1f12 7091 0000 lds r23,(Mess_Integral_Hoch)+1 |
3221 1f16 8091 0000 lds r24,(Mess_Integral_Hoch)+2 |
3222 1f1a 9091 0000 lds r25,(Mess_Integral_Hoch)+3 |
3223 1f1e 20E0 ldi r18,lo8(512) |
3224 1f20 32E0 ldi r19,hi8(512) |
3225 1f22 40E0 ldi r20,hlo8(512) |
3226 1f24 50E0 ldi r21,hhi8(512) |
3227 1f26 0E94 0000 call __divmodsi4 |
3228 1f2a 3093 0000 sts (DebugOut+30)+1,r19 |
3229 1f2e 2093 0000 sts DebugOut+30,r18 |
3230 1f32 8981 ldd r24,Y+1 |
3231 1f34 9A81 ldd r25,Y+2 |
3232 1f36 9093 0000 sts (DebugOut+32)+1,r25 |
3233 1f3a 8093 0000 sts DebugOut+32,r24 |
3234 1f3e 8091 0000 lds r24,KompassValue |
3235 1f42 9091 0000 lds r25,(KompassValue)+1 |
3236 1f46 9093 0000 sts (DebugOut+34)+1,r25 |
3237 1f4a 8093 0000 sts DebugOut+34,r24 |
3238 .L495: |
3239 1f4e 6091 0000 lds r22,IntegralNick |
3240 1f52 7091 0000 lds r23,(IntegralNick)+1 |
3241 1f56 8091 0000 lds r24,(IntegralNick)+2 |
3242 1f5a 9091 0000 lds r25,(IntegralNick)+3 |
3243 1f5e 2090 0000 lds r2,IntegralFaktor |
3244 1f62 3090 0000 lds r3,(IntegralFaktor)+1 |
3245 1f66 4090 0000 lds r4,(IntegralFaktor)+2 |
3246 1f6a 5090 0000 lds r5,(IntegralFaktor)+3 |
3247 1f6e E090 0000 lds r14,MesswertNick |
3248 1f72 F090 0000 lds r15,(MesswertNick)+1 |
3249 1f76 6090 0000 lds r6,GyroFaktor |
3250 1f7a 7090 0000 lds r7,(GyroFaktor)+1 |
3251 1f7e 8090 0000 lds r8,(GyroFaktor)+2 |
3252 1f82 9090 0000 lds r9,(GyroFaktor)+3 |
3253 1f86 0E94 0000 call __floatsisf |
3254 1f8a A201 movw r20,r4 |
3255 1f8c 9101 movw r18,r2 |
3256 1f8e 0E94 0000 call __mulsf3 |
3257 1f92 5B01 movw r10,r22 |
3258 1f94 6C01 movw r12,r24 |
3259 1f96 0027 clr r16 |
3260 1f98 F7FC sbrc r15,7 |
3261 1f9a 0095 com r16 |
3262 1f9c 102F mov r17,r16 |
3263 1f9e C801 movw r24,r16 |
3264 1fa0 B701 movw r22,r14 |
3265 1fa2 0E94 0000 call __floatsisf |
3266 1fa6 A401 movw r20,r8 |
3267 1fa8 9301 movw r18,r6 |
3268 1faa 0E94 0000 call __mulsf3 |
3269 1fae 9B01 movw r18,r22 |
3270 1fb0 AC01 movw r20,r24 |
3271 1fb2 C601 movw r24,r12 |
3272 1fb4 B501 movw r22,r10 |
3273 1fb6 0E94 0000 call __addsf3 |
3274 1fba 0E94 0000 call __fixsfsi |
3275 1fbe 7093 0000 sts (MesswertNick)+1,r23 |
3276 1fc2 6093 0000 sts MesswertNick,r22 |
3277 1fc6 6091 0000 lds r22,IntegralRoll |
3278 1fca 7091 0000 lds r23,(IntegralRoll)+1 |
3279 1fce 8091 0000 lds r24,(IntegralRoll)+2 |
3280 1fd2 9091 0000 lds r25,(IntegralRoll)+3 |
3281 1fd6 E090 0000 lds r14,MesswertRoll |
3282 1fda F090 0000 lds r15,(MesswertRoll)+1 |
3283 1fde 0E94 0000 call __floatsisf |
3284 1fe2 A201 movw r20,r4 |
3285 1fe4 9101 movw r18,r2 |
3286 1fe6 0E94 0000 call __mulsf3 |
3287 1fea 5B01 movw r10,r22 |
3288 1fec 6C01 movw r12,r24 |
3289 1fee 0027 clr r16 |
3290 1ff0 F7FC sbrc r15,7 |
3291 1ff2 0095 com r16 |
3292 1ff4 102F mov r17,r16 |
3293 1ff6 C801 movw r24,r16 |
3294 1ff8 B701 movw r22,r14 |
3295 1ffa 0E94 0000 call __floatsisf |
3296 1ffe A401 movw r20,r8 |
3297 2000 9301 movw r18,r6 |
3298 2002 0E94 0000 call __mulsf3 |
3299 2006 9B01 movw r18,r22 |
3300 2008 AC01 movw r20,r24 |
3301 200a C601 movw r24,r12 |
3302 200c B501 movw r22,r10 |
3303 200e 0E94 0000 call __addsf3 |
3304 2012 0E94 0000 call __fixsfsi |
3305 2016 7093 0000 sts (MesswertRoll)+1,r23 |
3306 201a 6093 0000 sts MesswertRoll,r22 |
3307 201e 6091 0000 lds r22,MesswertGier |
3308 2022 7091 0000 lds r23,(MesswertGier)+1 |
3309 2026 A090 0000 lds r10,Integral_Gier |
3310 202a B090 0000 lds r11,(Integral_Gier)+1 |
3311 202e C090 0000 lds r12,(Integral_Gier)+2 |
3312 2032 D090 0000 lds r13,(Integral_Gier)+3 |
3313 2036 8827 clr r24 |
3314 2038 77FD sbrc r23,7 |
3315 203a 8095 com r24 |
3316 203c 982F mov r25,r24 |
3317 203e 0E94 0000 call __floatsisf |
3318 2042 7B01 movw r14,r22 |
3319 2044 8C01 movw r16,r24 |
3320 2046 20E0 ldi r18,lo8(0x3f000000) |
3321 2048 30E0 ldi r19,hi8(0x3f000000) |
3322 204a 40E0 ldi r20,hlo8(0x3f000000) |
3323 204c 5FE3 ldi r21,hhi8(0x3f000000) |
3324 204e C401 movw r24,r8 |
3325 2050 B301 movw r22,r6 |
3326 2052 0E94 0000 call __mulsf3 |
3327 2056 9B01 movw r18,r22 |
3328 2058 AC01 movw r20,r24 |
3329 205a C801 movw r24,r16 |
3330 205c B701 movw r22,r14 |
3331 205e 0E94 0000 call __mulsf3 |
3332 2062 7B01 movw r14,r22 |
3333 2064 8C01 movw r16,r24 |
3334 2066 C601 movw r24,r12 |
3335 2068 B501 movw r22,r10 |
3336 206a 0E94 0000 call __floatsisf |
3337 206e A201 movw r20,r4 |
3338 2070 9101 movw r18,r2 |
3339 2072 0E94 0000 call __mulsf3 |
3340 2076 9B01 movw r18,r22 |
3341 2078 AC01 movw r20,r24 |
3342 207a C801 movw r24,r16 |
3343 207c B701 movw r22,r14 |
3344 207e 0E94 0000 call __addsf3 |
3345 2082 0E94 0000 call __fixsfsi |
3346 2086 7093 0000 sts (MesswertGier)+1,r23 |
3347 208a 6093 0000 sts MesswertGier,r22 |
3348 208e 8091 0000 lds r24,MesswertNick |
3349 2092 9091 0000 lds r25,(MesswertNick)+1 |
3350 2096 8150 subi r24,lo8(2049) |
3351 2098 9840 sbci r25,hi8(2049) |
3352 209a 04F0 brlt .L497 |
3353 209c 80E0 ldi r24,lo8(2048) |
3354 209e 98E0 ldi r25,hi8(2048) |
3355 20a0 9093 0000 sts (MesswertNick)+1,r25 |
3356 20a4 8093 0000 sts MesswertNick,r24 |
3357 .L497: |
3358 20a8 8091 0000 lds r24,MesswertNick |
3359 20ac 9091 0000 lds r25,(MesswertNick)+1 |
3360 20b0 8050 subi r24,lo8(-2048) |
3361 20b2 984F sbci r25,hi8(-2048) |
3362 20b4 04F4 brge .L499 |
3363 20b6 80E0 ldi r24,lo8(-2048) |
3364 20b8 98EF ldi r25,hi8(-2048) |
3365 20ba 9093 0000 sts (MesswertNick)+1,r25 |
3366 20be 8093 0000 sts MesswertNick,r24 |
3367 .L499: |
3368 20c2 8091 0000 lds r24,MesswertRoll |
3369 20c6 9091 0000 lds r25,(MesswertRoll)+1 |
3370 20ca 8150 subi r24,lo8(2049) |
3371 20cc 9840 sbci r25,hi8(2049) |
3372 20ce 04F0 brlt .L501 |
3373 20d0 80E0 ldi r24,lo8(2048) |
3374 20d2 98E0 ldi r25,hi8(2048) |
3375 20d4 9093 0000 sts (MesswertRoll)+1,r25 |
3376 20d8 8093 0000 sts MesswertRoll,r24 |
3377 .L501: |
3378 20dc 8091 0000 lds r24,MesswertRoll |
3379 20e0 9091 0000 lds r25,(MesswertRoll)+1 |
3380 20e4 8050 subi r24,lo8(-2048) |
3381 20e6 984F sbci r25,hi8(-2048) |
3382 20e8 04F4 brge .L503 |
3383 20ea 80E0 ldi r24,lo8(-2048) |
3384 20ec 98EF ldi r25,hi8(-2048) |
3385 20ee 9093 0000 sts (MesswertRoll)+1,r25 |
3386 20f2 8093 0000 sts MesswertRoll,r24 |
3387 .L503: |
3388 20f6 8091 0000 lds r24,MesswertGier |
3389 20fa 9091 0000 lds r25,(MesswertGier)+1 |
3390 20fe 8150 subi r24,lo8(2049) |
3391 2100 9840 sbci r25,hi8(2049) |
3392 2102 04F0 brlt .L505 |
3393 2104 80E0 ldi r24,lo8(2048) |
3394 2106 98E0 ldi r25,hi8(2048) |
3395 2108 9093 0000 sts (MesswertGier)+1,r25 |
3396 210c 8093 0000 sts MesswertGier,r24 |
3397 .L505: |
3398 2110 8091 0000 lds r24,MesswertGier |
3399 2114 9091 0000 lds r25,(MesswertGier)+1 |
3400 2118 8050 subi r24,lo8(-2048) |
3401 211a 984F sbci r25,hi8(-2048) |
3402 211c 04F4 brge .L507 |
3403 211e 80E0 ldi r24,lo8(-2048) |
3404 2120 98EF ldi r25,hi8(-2048) |
3405 2122 9093 0000 sts (MesswertGier)+1,r25 |
3406 2126 8093 0000 sts MesswertGier,r24 |
3407 .L507: |
3408 212a 8091 0000 lds r24,EE_Parameter+8 |
3409 212e 9927 clr r25 |
3410 2130 80FF sbrs r24,0 |
3411 2132 00C0 rjmp .L509 |
3412 2134 2091 0000 lds r18,Parameter_MaxHoehe |
3413 2138 81FF sbrs r24,1 |
3414 213a 00C0 rjmp .L511 |
3415 213c 2233 cpi r18,lo8(50) |
3416 213e 00F4 brsh .L580 |
3417 2140 8091 0000 lds r24,HoehenWert |
3418 2144 9091 0000 lds r25,(HoehenWert)+1 |
3419 2148 4497 sbiw r24,20 |
3420 214a 9093 0000 sts (SollHoehe)+1,r25 |
3421 214e 8093 0000 sts SollHoehe,r24 |
3422 2152 1092 0000 sts HoehenReglerAktiv,__zero_reg__ |
3423 2156 00C0 rjmp .L515 |
3424 .L511: |
3425 2158 8091 0000 lds r24,EE_Parameter+13 |
3426 215c 289F mul r18,r24 |
3427 215e C001 movw r24,r0 |
3428 2160 1124 clr r1 |
3429 2162 4497 sbiw r24,20 |
3430 2164 9093 0000 sts (SollHoehe)+1,r25 |
3431 2168 8093 0000 sts SollHoehe,r24 |
3432 .L580: |
3433 216c 81E0 ldi r24,lo8(1) |
3434 216e 8093 0000 sts HoehenReglerAktiv,r24 |
3435 .L515: |
3436 2172 8091 0000 lds r24,Notlandung |
3437 2176 8823 tst r24 |
3438 2178 01F0 breq .L516 |
3439 217a 1092 0000 sts (SollHoehe)+1,__zero_reg__ |
3440 217e 1092 0000 sts SollHoehe,__zero_reg__ |
3441 .L516: |
3442 2182 2091 0000 lds r18,HoehenWert |
3443 2186 3091 0000 lds r19,(HoehenWert)+1 |
3444 218a 4091 0000 lds r20,SollHoehe |
3445 218e 5091 0000 lds r21,(SollHoehe)+1 |
3446 2192 4217 cp r20,r18 |
3447 2194 5307 cpc r21,r19 |
3448 2196 04F0 brlt .+2 |
3449 2198 00C0 rjmp .L509 |
3450 219a 8091 0000 lds r24,HoehenReglerAktiv |
3451 219e 8823 tst r24 |
3452 21a0 01F4 brne .+2 |
3453 21a2 00C0 rjmp .L509 |
3454 21a4 241B sub r18,r20 |
3455 21a6 350B sbc r19,r21 |
3456 21a8 8091 0000 lds r24,Parameter_Hoehe_P |
3457 21ac 9927 clr r25 |
3458 21ae BC01 movw r22,r24 |
3459 21b0 269F mul r18,r22 |
3460 21b2 C001 movw r24,r0 |
3461 21b4 279F mul r18,r23 |
3462 21b6 900D add r25,r0 |
3463 21b8 369F mul r19,r22 |
3464 21ba 900D add r25,r0 |
3465 21bc 1124 clr r1 |
3466 21be 60E1 ldi r22,lo8(16) |
3467 21c0 70E0 ldi r23,hi8(16) |
3468 21c2 0E94 0000 call __divmodhi4 |
3469 21c6 0981 ldd r16,Y+1 |
3470 21c8 1A81 ldd r17,Y+2 |
3471 21ca 061B sub r16,r22 |
3472 21cc 170B sbc r17,r23 |
3473 21ce 2091 0000 lds r18,HoeheD |
3474 21d2 3091 0000 lds r19,(HoeheD)+1 |
3475 21d6 8091 0000 lds r24,Parameter_Luftdruck_D |
3476 21da 9927 clr r25 |
3477 21dc FC01 movw r30,r24 |
3478 21de 2E9F mul r18,r30 |
3479 21e0 C001 movw r24,r0 |
3480 21e2 2F9F mul r18,r31 |
3481 21e4 900D add r25,r0 |
3482 21e6 3E9F mul r19,r30 |
3483 21e8 900D add r25,r0 |
3484 21ea 1124 clr r1 |
3485 21ec 68E0 ldi r22,lo8(8) |
3486 21ee 70E0 ldi r23,hi8(8) |
3487 21f0 0E94 0000 call __divmodhi4 |
3488 21f4 061B sub r16,r22 |
3489 21f6 170B sbc r17,r23 |
3490 21f8 6091 0000 lds r22,Mess_Integral_Hoch |
3491 21fc 7091 0000 lds r23,(Mess_Integral_Hoch)+1 |
3492 2200 8091 0000 lds r24,(Mess_Integral_Hoch)+2 |
3493 2204 9091 0000 lds r25,(Mess_Integral_Hoch)+3 |
3494 2208 20E0 ldi r18,lo8(512) |
3495 220a 32E0 ldi r19,hi8(512) |
3496 220c 40E0 ldi r20,hlo8(512) |
3497 220e 50E0 ldi r21,hhi8(512) |
3498 2210 0E94 0000 call __divmodsi4 |
3499 2214 CA01 movw r24,r20 |
3500 2216 B901 movw r22,r18 |
3501 2218 2091 0000 lds r18,Parameter_Hoehe_ACC_Wirkung |
3502 221c 3327 clr r19 |
3503 221e 4427 clr r20 |
3504 2220 5527 clr r21 |
3505 2222 0E94 0000 call __mulsi3 |
3506 2226 20E2 ldi r18,lo8(32) |
3507 2228 30E0 ldi r19,hi8(32) |
3508 222a 40E0 ldi r20,hlo8(32) |
3509 222c 50E0 ldi r21,hhi8(32) |
3510 222e 0E94 0000 call __divmodsi4 |
3511 2232 FFEF ldi r31,hi8(-50) |
3512 2234 2E3C cpi r18,lo8(-50) |
3513 2236 3F07 cpc r19,r31 |
3514 2238 04F4 brge .L520 |
3515 223a 2EEC ldi r18,lo8(-50) |
3516 223c 3FEF ldi r19,hi8(-50) |
3517 .L520: |
3518 223e 8091 0000 lds r24,hoehenregler.2360 |
3519 2242 9091 0000 lds r25,(hoehenregler.2360)+1 |
3520 2246 AC01 movw r20,r24 |
3521 2248 74E0 ldi r23,4 |
3522 224a 440F 1: lsl r20 |
3523 224c 551F rol r21 |
3524 224e 7A95 dec r23 |
3525 2250 01F4 brne 1b |
3526 2252 481B sub r20,r24 |
3527 2254 590B sbc r21,r25 |
3528 2256 2333 cpi r18,51 |
3529 2258 3105 cpc r19,__zero_reg__ |
3530 225a 04F0 brlt .L521 |
3531 225c 22E3 ldi r18,lo8(50) |
3532 225e 30E0 ldi r19,hi8(50) |
3533 .L521: |
3534 2260 021B sub r16,r18 |
3535 2262 130B sbc r17,r19 |
3536 2264 CA01 movw r24,r20 |
3537 2266 800F add r24,r16 |
3538 2268 911F adc r25,r17 |
3539 226a 60E1 ldi r22,lo8(16) |
3540 226c 70E0 ldi r23,hi8(16) |
3541 226e 0E94 0000 call __divmodhi4 |
3542 2272 7093 0000 sts (hoehenregler.2360)+1,r23 |
3543 2276 6093 0000 sts hoehenregler.2360,r22 |
3544 227a 8091 0000 lds r24,EE_Parameter+9 |
3545 227e 9927 clr r25 |
3546 2280 6817 cp r22,r24 |
3547 2282 7907 cpc r23,r25 |
3548 2284 04F4 brge .L522 |
3549 2286 2981 ldd r18,Y+1 |
3550 2288 3A81 ldd r19,Y+2 |
3551 228a 2817 cp r18,r24 |
3552 228c 3907 cpc r19,r25 |
3553 228e 04F0 brlt .L524 |
3554 2290 9093 0000 sts (hoehenregler.2360)+1,r25 |
3555 2294 8093 0000 sts hoehenregler.2360,r24 |
3556 2298 00C0 rjmp .L522 |
3557 .L524: |
3558 229a 4981 ldd r20,Y+1 |
3559 229c 5A81 ldd r21,Y+2 |
3560 229e 5093 0000 sts (hoehenregler.2360)+1,r21 |
3561 22a2 4093 0000 sts hoehenregler.2360,r20 |
3562 22a6 00C0 rjmp .L526 |
3563 .L522: |
3564 22a8 8091 0000 lds r24,hoehenregler.2360 |
3565 22ac 9091 0000 lds r25,(hoehenregler.2360)+1 |
3566 22b0 6981 ldd r22,Y+1 |
3567 22b2 7A81 ldd r23,Y+2 |
3568 22b4 6817 cp r22,r24 |
3569 22b6 7907 cpc r23,r25 |
3570 22b8 04F4 brge .L526 |
3571 22ba 7093 0000 sts (hoehenregler.2360)+1,r23 |
3572 22be 6093 0000 sts hoehenregler.2360,r22 |
3573 .L526: |
3574 22c2 8091 0000 lds r24,hoehenregler.2360 |
3575 22c6 9091 0000 lds r25,(hoehenregler.2360)+1 |
3576 22ca 9A83 std Y+2,r25 |
3577 22cc 8983 std Y+1,r24 |
3578 .L509: |
3579 22ce C090 0000 lds r12,MesswertGier |
3580 22d2 D090 0000 lds r13,(MesswertGier)+1 |
3581 22d6 8091 0000 lds r24,sollGier.2350 |
3582 22da 9091 0000 lds r25,(sollGier.2350)+1 |
3583 22de C81A sub r12,r24 |
3584 22e0 D90A sbc r13,r25 |
3585 22e2 95E6 ldi r25,lo8(101) |
3586 22e4 C916 cp r12,r25 |
3587 22e6 D104 cpc r13,__zero_reg__ |
3588 22e8 04F0 brlt .L528 |
3589 22ea 64E6 ldi r22,lo8(100) |
3590 22ec C62E mov r12,r22 |
3591 22ee D12C mov r13,__zero_reg__ |
3592 22f0 00C0 rjmp .L530 |
3593 .L528: |
3594 22f2 ECE9 ldi r30,lo8(-100) |
3595 22f4 CE16 cp r12,r30 |
3596 22f6 EFEF ldi r30,hi8(-100) |
3597 22f8 DE06 cpc r13,r30 |
3598 22fa 04F4 brge .L530 |
3599 22fc 5CE9 ldi r21,lo8(-100) |
3600 22fe C52E mov r12,r21 |
3601 2300 5FEF ldi r21,hi8(-100) |
3602 2302 D52E mov r13,r21 |
3603 .L530: |
3604 2304 4090 0000 lds r4,Kp |
3605 2308 5090 0000 lds r5,(Kp)+1 |
3606 230c 6090 0000 lds r6,(Kp)+2 |
3607 2310 7090 0000 lds r7,(Kp)+3 |
3608 2314 6091 0000 lds r22,MesswertNick |
3609 2318 7091 0000 lds r23,(MesswertNick)+1 |
3610 231c 2091 0000 lds r18,StickNick |
3611 2320 3091 0000 lds r19,(StickNick)+1 |
3612 2324 4091 0000 lds r20,GPS_Nick |
3613 2328 5091 0000 lds r21,(GPS_Nick)+1 |
3614 232c 241B sub r18,r20 |
3615 232e 350B sbc r19,r21 |
3616 2330 621B sub r22,r18 |
3617 2332 730B sbc r23,r19 |
3618 2334 8827 clr r24 |
3619 2336 77FD sbrc r23,7 |
3620 2338 8095 com r24 |
3621 233a 982F mov r25,r24 |
3622 233c 0E94 0000 call __floatsisf |
3623 2340 9B01 movw r18,r22 |
3624 2342 AC01 movw r20,r24 |
3625 2344 C301 movw r24,r6 |
3626 2346 B201 movw r22,r4 |
3627 2348 0E94 0000 call __mulsf3 |
3628 234c 0E94 0000 call __fixsfsi |
3629 2350 7093 0000 sts (DiffNick)+1,r23 |
3630 2354 6093 0000 sts DiffNick,r22 |
3631 2358 8091 0000 lds r24,DiffNick |
3632 235c 9091 0000 lds r25,(DiffNick)+1 |
3633 2360 8C01 movw r16,r24 |
3634 2362 2227 clr r18 |
3635 2364 17FD sbrc r17,7 |
3636 2366 2095 com r18 |
3637 2368 322F mov r19,r18 |
3638 236a 8091 0000 lds r24,SummeNick.2348 |
3639 236e 9091 0000 lds r25,(SummeNick.2348)+1 |
3640 2372 A091 0000 lds r26,(SummeNick.2348)+2 |
3641 2376 B091 0000 lds r27,(SummeNick.2348)+3 |
3642 237a 080F add r16,r24 |
3643 237c 191F adc r17,r25 |
3644 237e 2A1F adc r18,r26 |
3645 2380 3B1F adc r19,r27 |
3646 2382 0093 0000 sts SummeNick.2348,r16 |
3647 2386 1093 0000 sts (SummeNick.2348)+1,r17 |
3648 238a 2093 0000 sts (SummeNick.2348)+2,r18 |
3649 238e 3093 0000 sts (SummeNick.2348)+3,r19 |
3650 2392 1016 cp __zero_reg__,r16 |
3651 2394 1106 cpc __zero_reg__,r17 |
3652 2396 1206 cpc __zero_reg__,r18 |
3653 2398 1306 cpc __zero_reg__,r19 |
3654 239a 04F4 brge .L532 |
3655 239c C801 movw r24,r16 |
3656 239e 17FF sbrs r17,7 |
3657 23a0 00C0 rjmp .L534 |
3658 23a2 9095 com r25 |
3659 23a4 8195 neg r24 |
3660 23a6 9F4F sbci r25,lo8(-1) |
3661 .L534: |
3662 23a8 60E0 ldi r22,lo8(256) |
3663 23aa 71E0 ldi r23,hi8(256) |
3664 23ac 0E94 0000 call __divmodhi4 |
3665 23b0 6F5F subi r22,lo8(-(1)) |
3666 23b2 7F4F sbci r23,hi8(-(1)) |
3667 23b4 8827 clr r24 |
3668 23b6 77FD sbrc r23,7 |
3669 23b8 8095 com r24 |
3670 23ba 982F mov r25,r24 |
3671 23bc 061B sub r16,r22 |
3672 23be 170B sbc r17,r23 |
3673 23c0 280B sbc r18,r24 |
3674 23c2 390B sbc r19,r25 |
3675 23c4 00C0 rjmp .L581 |
3676 .L532: |
3677 23c6 C801 movw r24,r16 |
3678 23c8 17FF sbrs r17,7 |
3679 23ca 00C0 rjmp .L536 |
3680 23cc 9095 com r25 |
3681 23ce 8195 neg r24 |
3682 23d0 9F4F sbci r25,lo8(-1) |
3683 .L536: |
3684 23d2 60E0 ldi r22,lo8(256) |
3685 23d4 71E0 ldi r23,hi8(256) |
3686 23d6 0E94 0000 call __divmodhi4 |
3687 23da 6F5F subi r22,lo8(-(1)) |
3688 23dc 7F4F sbci r23,hi8(-(1)) |
3689 23de 8827 clr r24 |
3690 23e0 77FD sbrc r23,7 |
3691 23e2 8095 com r24 |
3692 23e4 982F mov r25,r24 |
3693 23e6 060F add r16,r22 |
3694 23e8 171F adc r17,r23 |
3695 23ea 281F adc r18,r24 |
3696 23ec 391F adc r19,r25 |
3697 .L581: |
3698 23ee 0093 0000 sts SummeNick.2348,r16 |
3699 23f2 1093 0000 sts (SummeNick.2348)+1,r17 |
3700 23f6 2093 0000 sts (SummeNick.2348)+2,r18 |
3701 23fa 3093 0000 sts (SummeNick.2348)+3,r19 |
3702 23fe 8091 0000 lds r24,SummeNick.2348 |
3703 2402 9091 0000 lds r25,(SummeNick.2348)+1 |
3704 2406 A091 0000 lds r26,(SummeNick.2348)+2 |
3705 240a B091 0000 lds r27,(SummeNick.2348)+3 |
3706 240e 8138 cpi r24,lo8(16001) |
3707 2410 FEE3 ldi r31,hi8(16001) |
3708 2412 9F07 cpc r25,r31 |
3709 2414 F0E0 ldi r31,hlo8(16001) |
3710 2416 AF07 cpc r26,r31 |
3711 2418 F0E0 ldi r31,hhi8(16001) |
3712 241a BF07 cpc r27,r31 |
3713 241c 04F0 brlt .L537 |
3714 241e 80E8 ldi r24,lo8(16000) |
3715 2420 9EE3 ldi r25,hi8(16000) |
3716 2422 A0E0 ldi r26,hlo8(16000) |
3717 2424 B0E0 ldi r27,hhi8(16000) |
3718 2426 00C0 rjmp .L582 |
3719 .L537: |
3720 2428 8058 subi r24,lo8(-16000) |
3721 242a 914C sbci r25,hi8(-16000) |
3722 242c AF4F sbci r26,hlo8(-16000) |
3723 242e BF4F sbci r27,hhi8(-16000) |
3724 2430 04F4 brge .L539 |
3725 2432 80E8 ldi r24,lo8(-16000) |
3726 2434 91EC ldi r25,hi8(-16000) |
3727 2436 AFEF ldi r26,hlo8(-16000) |
3728 2438 BFEF ldi r27,hhi8(-16000) |
3729 .L582: |
3730 243a 8093 0000 sts SummeNick.2348,r24 |
3731 243e 9093 0000 sts (SummeNick.2348)+1,r25 |
3732 2442 A093 0000 sts (SummeNick.2348)+2,r26 |
3733 2446 B093 0000 sts (SummeNick.2348)+3,r27 |
3734 .L539: |
3735 244a 6091 0000 lds r22,DiffNick |
3736 244e 7091 0000 lds r23,(DiffNick)+1 |
3737 2452 8090 0000 lds r8,Ki |
3738 2456 9090 0000 lds r9,(Ki)+1 |
3739 245a A090 0000 lds r10,(Ki)+2 |
3740 245e B090 0000 lds r11,(Ki)+3 |
3741 2462 8827 clr r24 |
3742 2464 77FD sbrc r23,7 |
3743 2466 8095 com r24 |
3744 2468 982F mov r25,r24 |
3745 246a 0E94 0000 call __floatsisf |
3746 246e 7B01 movw r14,r22 |
3747 2470 8C01 movw r16,r24 |
3748 2472 6091 0000 lds r22,SummeNick.2348 |
3749 2476 7091 0000 lds r23,(SummeNick.2348)+1 |
3750 247a 8091 0000 lds r24,(SummeNick.2348)+2 |
3751 247e 9091 0000 lds r25,(SummeNick.2348)+3 |
3752 2482 0E94 0000 call __floatsisf |
3753 2486 9B01 movw r18,r22 |
3754 2488 AC01 movw r20,r24 |
3755 248a C501 movw r24,r10 |
3756 248c B401 movw r22,r8 |
3757 248e 0E94 0000 call __mulsf3 |
3758 2492 9B01 movw r18,r22 |
3759 2494 AC01 movw r20,r24 |
3760 2496 C801 movw r24,r16 |
3761 2498 B701 movw r22,r14 |
3762 249a 0E94 0000 call __addsf3 |
3763 249e 0E94 0000 call __fixsfsi |
3764 24a2 9601 movw r18,r12 |
3765 24a4 260F add r18,r22 |
3766 24a6 371F adc r19,r23 |
3767 24a8 4981 ldd r20,Y+1 |
3768 24aa 5A81 ldd r21,Y+2 |
3769 24ac 240F add r18,r20 |
3770 24ae 351F adc r19,r21 |
3771 24b0 2224 clr r2 |
3772 24b2 4A30 cpi r20,10 |
3773 24b4 5105 cpc r21,__zero_reg__ |
3774 24b6 04F4 brge .L541 |
3775 24b8 41E0 ldi r20,lo8(1) |
3776 24ba 242E mov r2,r20 |
3777 .L541: |
3778 24bc 37FD sbrc r19,7 |
3779 24be 00C0 rjmp .L544 |
3780 24c0 2220 tst r2 |
3781 24c2 01F0 breq .L542 |
3782 .L544: |
3783 24c4 40E0 ldi r20,lo8(0) |
3784 24c6 50E0 ldi r21,hi8(0) |
3785 24c8 00C0 rjmp .L545 |
3786 .L542: |
3787 24ca 8091 0000 lds r24,MAX_GAS |
3788 24ce 482F mov r20,r24 |
3789 24d0 5527 clr r21 |
3790 24d2 2417 cp r18,r20 |
3791 24d4 3507 cpc r19,r21 |
3792 24d6 04F4 brge .L545 |
3793 24d8 A901 movw r20,r18 |
3794 .L545: |
3795 24da 8091 0000 lds r24,MIN_GAS |
3796 24de E82F mov r30,r24 |
3797 24e0 FF27 clr r31 |
3798 24e2 FC83 std Y+4,r31 |
3799 24e4 EB83 std Y+3,r30 |
3800 24e6 9F01 movw r18,r30 |
3801 24e8 E417 cp r30,r20 |
3802 24ea F507 cpc r31,r21 |
3803 24ec 04F4 brge .L547 |
3804 24ee 9A01 movw r18,r20 |
3805 .L547: |
3806 24f0 2093 0000 sts Motor_Vorne,r18 |
3807 24f4 2981 ldd r18,Y+1 |
3808 24f6 3A81 ldd r19,Y+2 |
3809 24f8 261B sub r18,r22 |
3810 24fa 370B sbc r19,r23 |
3811 24fc B901 movw r22,r18 |
3812 24fe 6C0D add r22,r12 |
3813 2500 7D1D adc r23,r13 |
3814 2502 77FD sbrc r23,7 |
3815 2504 00C0 rjmp .L550 |
3816 2506 2220 tst r2 |
3817 2508 01F0 breq .L548 |
3818 .L550: |
3819 250a 80E0 ldi r24,lo8(0) |
3820 250c 90E0 ldi r25,hi8(0) |
3821 250e 00C0 rjmp .L551 |
3822 .L548: |
3823 2510 8091 0000 lds r24,MAX_GAS |
3824 2514 9927 clr r25 |
3825 2516 6817 cp r22,r24 |
3826 2518 7907 cpc r23,r25 |
3827 251a 04F4 brge .L551 |
3828 251c CB01 movw r24,r22 |
3829 .L551: |
3830 251e 2B81 ldd r18,Y+3 |
3831 2520 3C81 ldd r19,Y+4 |
3832 2522 2817 cp r18,r24 |
3833 2524 3907 cpc r19,r25 |
3834 2526 04F4 brge .L553 |
3835 2528 9C01 movw r18,r24 |
3836 .L553: |
3837 252a 2093 0000 sts Motor_Hinten,r18 |
3838 252e 6091 0000 lds r22,MesswertRoll |
3839 2532 7091 0000 lds r23,(MesswertRoll)+1 |
3840 2536 2091 0000 lds r18,StickRoll |
3841 253a 3091 0000 lds r19,(StickRoll)+1 |
3842 253e 4091 0000 lds r20,GPS_Roll |
3843 2542 5091 0000 lds r21,(GPS_Roll)+1 |
3844 2546 241B sub r18,r20 |
3845 2548 350B sbc r19,r21 |
3846 254a 621B sub r22,r18 |
3847 254c 730B sbc r23,r19 |
3848 254e 8827 clr r24 |
3849 2550 77FD sbrc r23,7 |
3850 2552 8095 com r24 |
3851 2554 982F mov r25,r24 |
3852 2556 0E94 0000 call __floatsisf |
3853 255a 9B01 movw r18,r22 |
3854 255c AC01 movw r20,r24 |
3855 255e C301 movw r24,r6 |
3856 2560 B201 movw r22,r4 |
3857 2562 0E94 0000 call __mulsf3 |
3858 2566 0E94 0000 call __fixsfsi |
3859 256a 7093 0000 sts (DiffRoll)+1,r23 |
3860 256e 6093 0000 sts DiffRoll,r22 |
3861 2572 8091 0000 lds r24,DiffRoll |
3862 2576 9091 0000 lds r25,(DiffRoll)+1 |
3863 257a 8C01 movw r16,r24 |
3864 257c 2227 clr r18 |
3865 257e 17FD sbrc r17,7 |
3866 2580 2095 com r18 |
3867 2582 322F mov r19,r18 |
3868 2584 8091 0000 lds r24,SummeRoll.2349 |
3869 2588 9091 0000 lds r25,(SummeRoll.2349)+1 |
3870 258c A091 0000 lds r26,(SummeRoll.2349)+2 |
3871 2590 B091 0000 lds r27,(SummeRoll.2349)+3 |
3872 2594 080F add r16,r24 |
3873 2596 191F adc r17,r25 |
3874 2598 2A1F adc r18,r26 |
3875 259a 3B1F adc r19,r27 |
3876 259c 0093 0000 sts SummeRoll.2349,r16 |
3877 25a0 1093 0000 sts (SummeRoll.2349)+1,r17 |
3878 25a4 2093 0000 sts (SummeRoll.2349)+2,r18 |
3879 25a8 3093 0000 sts (SummeRoll.2349)+3,r19 |
3880 25ac 1016 cp __zero_reg__,r16 |
3881 25ae 1106 cpc __zero_reg__,r17 |
3882 25b0 1206 cpc __zero_reg__,r18 |
3883 25b2 1306 cpc __zero_reg__,r19 |
3884 25b4 04F4 brge .L554 |
3885 25b6 C801 movw r24,r16 |
3886 25b8 17FF sbrs r17,7 |
3887 25ba 00C0 rjmp .L556 |
3888 25bc 9095 com r25 |
3889 25be 8195 neg r24 |
3890 25c0 9F4F sbci r25,lo8(-1) |
3891 .L556: |
3892 25c2 60E0 ldi r22,lo8(256) |
3893 25c4 71E0 ldi r23,hi8(256) |
3894 25c6 0E94 0000 call __divmodhi4 |
3895 25ca 6F5F subi r22,lo8(-(1)) |
3896 25cc 7F4F sbci r23,hi8(-(1)) |
3897 25ce 8827 clr r24 |
3898 25d0 77FD sbrc r23,7 |
3899 25d2 8095 com r24 |
3900 25d4 982F mov r25,r24 |
3901 25d6 061B sub r16,r22 |
3902 25d8 170B sbc r17,r23 |
3903 25da 280B sbc r18,r24 |
3904 25dc 390B sbc r19,r25 |
3905 25de 00C0 rjmp .L583 |
3906 .L554: |
3907 25e0 C801 movw r24,r16 |
3908 25e2 17FF sbrs r17,7 |
3909 25e4 00C0 rjmp .L558 |
3910 25e6 9095 com r25 |
3911 25e8 8195 neg r24 |
3912 25ea 9F4F sbci r25,lo8(-1) |
3913 .L558: |
3914 25ec 60E0 ldi r22,lo8(256) |
3915 25ee 71E0 ldi r23,hi8(256) |
3916 25f0 0E94 0000 call __divmodhi4 |
3917 25f4 6F5F subi r22,lo8(-(1)) |
3918 25f6 7F4F sbci r23,hi8(-(1)) |
3919 25f8 8827 clr r24 |
3920 25fa 77FD sbrc r23,7 |
3921 25fc 8095 com r24 |
3922 25fe 982F mov r25,r24 |
3923 2600 060F add r16,r22 |
3924 2602 171F adc r17,r23 |
3925 2604 281F adc r18,r24 |
3926 2606 391F adc r19,r25 |
3927 .L583: |
3928 2608 0093 0000 sts SummeRoll.2349,r16 |
3929 260c 1093 0000 sts (SummeRoll.2349)+1,r17 |
3930 2610 2093 0000 sts (SummeRoll.2349)+2,r18 |
3931 2614 3093 0000 sts (SummeRoll.2349)+3,r19 |
3932 2618 8091 0000 lds r24,SummeRoll.2349 |
3933 261c 9091 0000 lds r25,(SummeRoll.2349)+1 |
3934 2620 A091 0000 lds r26,(SummeRoll.2349)+2 |
3935 2624 B091 0000 lds r27,(SummeRoll.2349)+3 |
3936 2628 8138 cpi r24,lo8(16001) |
3937 262a 3EE3 ldi r19,hi8(16001) |
3938 262c 9307 cpc r25,r19 |
3939 262e 30E0 ldi r19,hlo8(16001) |
3940 2630 A307 cpc r26,r19 |
3941 2632 30E0 ldi r19,hhi8(16001) |
3942 2634 B307 cpc r27,r19 |
3943 2636 04F0 brlt .L559 |
3944 2638 80E8 ldi r24,lo8(16000) |
3945 263a 9EE3 ldi r25,hi8(16000) |
3946 263c A0E0 ldi r26,hlo8(16000) |
3947 263e B0E0 ldi r27,hhi8(16000) |
3948 2640 00C0 rjmp .L584 |
3949 .L559: |
3950 2642 8058 subi r24,lo8(-16000) |
3951 2644 914C sbci r25,hi8(-16000) |
3952 2646 AF4F sbci r26,hlo8(-16000) |
3953 2648 BF4F sbci r27,hhi8(-16000) |
3954 264a 04F4 brge .L561 |
3955 264c 80E8 ldi r24,lo8(-16000) |
3956 264e 91EC ldi r25,hi8(-16000) |
3957 2650 AFEF ldi r26,hlo8(-16000) |
3958 2652 BFEF ldi r27,hhi8(-16000) |
3959 .L584: |
3960 2654 8093 0000 sts SummeRoll.2349,r24 |
3961 2658 9093 0000 sts (SummeRoll.2349)+1,r25 |
3962 265c A093 0000 sts (SummeRoll.2349)+2,r26 |
3963 2660 B093 0000 sts (SummeRoll.2349)+3,r27 |
3964 .L561: |
3965 2664 6091 0000 lds r22,DiffRoll |
3966 2668 7091 0000 lds r23,(DiffRoll)+1 |
3967 266c 8827 clr r24 |
3968 266e 77FD sbrc r23,7 |
3969 2670 8095 com r24 |
3970 2672 982F mov r25,r24 |
3971 2674 0E94 0000 call __floatsisf |
3972 2678 7B01 movw r14,r22 |
3973 267a 8C01 movw r16,r24 |
3974 267c 6091 0000 lds r22,SummeRoll.2349 |
3975 2680 7091 0000 lds r23,(SummeRoll.2349)+1 |
3976 2684 8091 0000 lds r24,(SummeRoll.2349)+2 |
3977 2688 9091 0000 lds r25,(SummeRoll.2349)+3 |
3978 268c 0E94 0000 call __floatsisf |
3979 2690 9B01 movw r18,r22 |
3980 2692 AC01 movw r20,r24 |
3981 2694 C501 movw r24,r10 |
3982 2696 B401 movw r22,r8 |
3983 2698 0E94 0000 call __mulsf3 |
3984 269c 9B01 movw r18,r22 |
3985 269e AC01 movw r20,r24 |
3986 26a0 C801 movw r24,r16 |
3987 26a2 B701 movw r22,r14 |
3988 26a4 0E94 0000 call __addsf3 |
3989 26a8 0E94 0000 call __fixsfsi |
3990 26ac 2981 ldd r18,Y+1 |
3991 26ae 3A81 ldd r19,Y+2 |
3992 26b0 260F add r18,r22 |
3993 26b2 371F adc r19,r23 |
3994 26b4 2C19 sub r18,r12 |
3995 26b6 3D09 sbc r19,r13 |
3996 26b8 37FD sbrc r19,7 |
3997 26ba 00C0 rjmp .L565 |
3998 26bc 2220 tst r2 |
3999 26be 01F0 breq .L563 |
4000 .L565: |
4001 26c0 40E0 ldi r20,lo8(0) |
4002 26c2 50E0 ldi r21,hi8(0) |
4003 26c4 00C0 rjmp .L566 |
4004 .L563: |
4005 26c6 8091 0000 lds r24,MAX_GAS |
4006 26ca 482F mov r20,r24 |
4007 26cc 5527 clr r21 |
4008 26ce 2417 cp r18,r20 |
4009 26d0 3507 cpc r19,r21 |
4010 26d2 04F4 brge .L566 |
4011 26d4 A901 movw r20,r18 |
4012 .L566: |
4013 26d6 2B81 ldd r18,Y+3 |
4014 26d8 3C81 ldd r19,Y+4 |
4015 26da 2417 cp r18,r20 |
4016 26dc 3507 cpc r19,r21 |
4017 26de 04F4 brge .L568 |
4018 26e0 9A01 movw r18,r20 |
4019 .L568: |
4020 26e2 2093 0000 sts Motor_Links,r18 |
4021 26e6 8981 ldd r24,Y+1 |
4022 26e8 9A81 ldd r25,Y+2 |
4023 26ea 861B sub r24,r22 |
4024 26ec 970B sbc r25,r23 |
4025 26ee BC01 movw r22,r24 |
4026 26f0 6C19 sub r22,r12 |
4027 26f2 7D09 sbc r23,r13 |
4028 26f4 77FD sbrc r23,7 |
4029 26f6 00C0 rjmp .L571 |
4030 26f8 2220 tst r2 |
4031 26fa 01F0 breq .L569 |
4032 .L571: |
4033 26fc 20E0 ldi r18,lo8(0) |
4034 26fe 30E0 ldi r19,hi8(0) |
4035 2700 00C0 rjmp .L572 |
4036 .L569: |
4037 2702 8091 0000 lds r24,MAX_GAS |
4038 2706 282F mov r18,r24 |
4039 2708 3327 clr r19 |
4040 270a 6217 cp r22,r18 |
4041 270c 7307 cpc r23,r19 |
4042 270e 04F4 brge .L572 |
4043 2710 9B01 movw r18,r22 |
4044 .L572: |
4045 2712 8B81 ldd r24,Y+3 |
4046 2714 9C81 ldd r25,Y+4 |
4047 2716 8217 cp r24,r18 |
4048 2718 9307 cpc r25,r19 |
4049 271a 04F4 brge .L574 |
4050 271c C901 movw r24,r18 |
4051 .L574: |
4052 271e 8093 0000 sts Motor_Rechts,r24 |
4053 /* epilogue: frame size=4 */ |
4054 2722 2496 adiw r28,4 |
4055 2724 0FB6 in __tmp_reg__,__SREG__ |
4056 2726 F894 cli |
4057 2728 DEBF out __SP_H__,r29 |
4058 272a 0FBE out __SREG__,__tmp_reg__ |
4059 272c CDBF out __SP_L__,r28 |
4060 272e DF91 pop r29 |
4061 2730 CF91 pop r28 |
4062 2732 1F91 pop r17 |
4063 2734 0F91 pop r16 |
4064 2736 FF90 pop r15 |
4065 2738 EF90 pop r14 |
4066 273a DF90 pop r13 |
4067 273c CF90 pop r12 |
4068 273e BF90 pop r11 |
4069 2740 AF90 pop r10 |
4070 2742 9F90 pop r9 |
4071 2744 8F90 pop r8 |
4072 2746 7F90 pop r7 |
4073 2748 6F90 pop r6 |
4074 274a 5F90 pop r5 |
4075 274c 4F90 pop r4 |
4076 274e 3F90 pop r3 |
4077 2750 2F90 pop r2 |
4078 2752 0895 ret |
4079 /* epilogue end (size=25) */ |
4080 /* function MotorRegler size 2799 (2748) */ |
4082 .global Timeout |
4083 .global Timeout |
4084 .section .bss |
4087 Timeout: |
4088 0000 00 .skip 1,0 |
4089 .global AdNeutralNick |
4090 .global AdNeutralNick |
4093 AdNeutralNick: |
4094 0001 0000 .skip 2,0 |
4095 .global AdNeutralRoll |
4096 .global AdNeutralRoll |
4099 AdNeutralRoll: |
4100 0003 0000 .skip 2,0 |
4101 .global AdNeutralGier |
4102 .global AdNeutralGier |
4105 AdNeutralGier: |
4106 0005 0000 .skip 2,0 |
4107 .global NeutralAccX |
4108 .global NeutralAccX |
4111 NeutralAccX: |
4112 0007 0000 .skip 2,0 |
4113 .global NeutralAccY |
4114 .global NeutralAccY |
4117 NeutralAccY: |
4118 0009 0000 .skip 2,0 |
4119 .global NeutralAccZ |
4120 .global NeutralAccZ |
4123 NeutralAccZ: |
4124 000b 0000 0000 .skip 4,0 |
4125 .global CosinusNickWinkel |
4126 .global CosinusNickWinkel |
4129 CosinusNickWinkel: |
4130 000f 00 .skip 1,0 |
4131 .global CosinusRollWinkel |
4132 .global CosinusRollWinkel |
4135 CosinusRollWinkel: |
4136 0010 00 .skip 1,0 |
4137 .global IntegralNick |
4138 .global IntegralNick |
4141 IntegralNick: |
4142 0011 0000 0000 .skip 4,0 |
4143 .global IntegralNick2 |
4144 .global IntegralNick2 |
4147 IntegralNick2: |
4148 0015 0000 0000 .skip 4,0 |
4149 .global IntegralRoll |
4150 .global IntegralRoll |
4153 IntegralRoll: |
4154 0019 0000 0000 .skip 4,0 |
4155 .global IntegralRoll2 |
4156 .global IntegralRoll2 |
4159 IntegralRoll2: |
4160 001d 0000 0000 .skip 4,0 |
4161 .global Integral_Gier |
4162 .global Integral_Gier |
4165 Integral_Gier: |
4166 0021 0000 0000 .skip 4,0 |
4167 .global Mess_IntegralNick |
4168 .global Mess_IntegralNick |
4171 Mess_IntegralNick: |
4172 0025 0000 0000 .skip 4,0 |
4173 .global Mess_IntegralNick2 |
4174 .global Mess_IntegralNick2 |
4177 Mess_IntegralNick2: |
4178 0029 0000 0000 .skip 4,0 |
4179 .global Mess_IntegralRoll |
4180 .global Mess_IntegralRoll |
4183 Mess_IntegralRoll: |
4184 002d 0000 0000 .skip 4,0 |
4185 .global Mess_IntegralRoll2 |
4186 .global Mess_IntegralRoll2 |
4189 Mess_IntegralRoll2: |
4190 0031 0000 0000 .skip 4,0 |
4191 .global Mess_Integral_Gier |
4192 .global Mess_Integral_Gier |
4195 Mess_Integral_Gier: |
4196 0035 0000 0000 .skip 4,0 |
4197 .global Mess_Integral_Gier2 |
4198 .global Mess_Integral_Gier2 |
4201 Mess_Integral_Gier2: |
4202 0039 0000 0000 .skip 4,0 |
4203 .global Mess_Integral_Hoch |
4204 .global Mess_Integral_Hoch |
4207 Mess_Integral_Hoch: |
4208 003d 0000 0000 .skip 4,0 |
4209 .global KompassValue |
4210 .global KompassValue |
4213 KompassValue: |
4214 0041 0000 .skip 2,0 |
4215 .global KompassStartwert |
4216 .global KompassStartwert |
4219 KompassStartwert: |
4220 0043 0000 .skip 2,0 |
4221 .global KompassRichtung |
4222 .global KompassRichtung |
4225 KompassRichtung: |
4226 0045 0000 .skip 2,0 |
4227 .global Notlandung |
4228 .global Notlandung |
4231 Notlandung: |
4232 0047 00 .skip 1,0 |
4233 .global HoehenReglerAktiv |
4234 .global HoehenReglerAktiv |
4237 HoehenReglerAktiv: |
4238 0048 00 .skip 1,0 |
4239 .global Poti1 |
4240 .global Poti1 |
4243 Poti1: |
4244 0049 0000 .skip 2,0 |
4245 .global Poti2 |
4246 .global Poti2 |
4249 Poti2: |
4250 004b 0000 .skip 2,0 |
4251 .global Poti3 |
4252 .global Poti3 |
4255 Poti3: |
4256 004d 0000 .skip 2,0 |
4257 .global Poti4 |
4258 .global Poti4 |
4261 Poti4: |
4262 004f 0000 .skip 2,0 |
4263 .global SenderOkay |
4264 .global SenderOkay |
4267 SenderOkay: |
4268 0051 00 .skip 1,0 |
4269 .global StickNick |
4270 .global StickNick |
4273 StickNick: |
4274 0052 0000 .skip 2,0 |
4275 .global StickRoll |
4276 .global StickRoll |
4279 StickRoll: |
4280 0054 0000 .skip 2,0 |
4281 .global StickGier |
4282 .global StickGier |
4285 StickGier: |
4286 0056 0000 .skip 2,0 |
4287 .global MotorenEin |
4288 .global MotorenEin |
4291 MotorenEin: |
4292 0058 00 .skip 1,0 |
4293 .global HoehenWert |
4294 .global HoehenWert |
4297 HoehenWert: |
4298 0059 0000 .skip 2,0 |
4299 .global SollHoehe |
4300 .global SollHoehe |
4303 SollHoehe: |
4304 005b 0000 .skip 2,0 |
4305 .global Kp |
4306 .data |
4309 Kp: |
4310 0010 00 .byte 0 |
4311 0011 00 .byte 0 |
4312 0012 80 .byte -128 |
4313 0013 3F .byte 63 |
4314 .global Ki |
4317 Ki: |
4318 0014 17 .byte 23 |
4319 0015 B7 .byte -73 |
4320 0016 D1 .byte -47 |
4321 0017 38 .byte 56 |
4322 .global Parameter_Luftdruck_D |
4325 Parameter_Luftdruck_D: |
4326 0018 30 .byte 48 |
4327 .global Parameter_MaxHoehe |
4330 Parameter_MaxHoehe: |
4331 0019 FB .byte -5 |
4332 .global Parameter_Hoehe_P |
4335 Parameter_Hoehe_P: |
4336 001a 10 .byte 16 |
4337 .global Parameter_Hoehe_ACC_Wirkung |
4340 Parameter_Hoehe_ACC_Wirkung: |
4341 001b 3A .byte 58 |
4342 .global Parameter_KompassWirkung |
4345 Parameter_KompassWirkung: |
4346 001c 40 .byte 64 |
4347 .global Parameter_Gyro_P |
4350 Parameter_Gyro_P: |
4351 001d 32 .byte 50 |
4352 .global Parameter_Gyro_I |
4355 Parameter_Gyro_I: |
4356 001e 96 .byte -106 |
4357 .global Parameter_Gier_P |
4360 Parameter_Gier_P: |
4361 001f 02 .byte 2 |
4362 .global Parameter_I_Faktor |
4365 Parameter_I_Faktor: |
4366 0020 0A .byte 10 |
4367 .global Parameter_UserParam1 |
4368 .global Parameter_UserParam1 |
4369 .section .bss |
4372 Parameter_UserParam1: |
4373 005d 00 .skip 1,0 |
4374 .global Parameter_UserParam2 |
4375 .global Parameter_UserParam2 |
4378 Parameter_UserParam2: |
4379 005e 00 .skip 1,0 |
4380 .global Parameter_UserParam3 |
4381 .global Parameter_UserParam3 |
4384 Parameter_UserParam3: |
4385 005f 00 .skip 1,0 |
4386 .global Parameter_UserParam4 |
4387 .global Parameter_UserParam4 |
4390 Parameter_UserParam4: |
4391 0060 00 .skip 1,0 |
4392 .global Parameter_ServoNickControl |
4393 .data |
4396 Parameter_ServoNickControl: |
4397 0021 64 .byte 100 |
4398 .lcomm SignalSchlecht.2366,2 |
4399 .lcomm NeueKompassRichtungMerken.2362,1 |
4400 .lcomm TimerWerteausgabe.2361,1 |
4401 .lcomm hoehenregler.2360,2 |
4402 .lcomm modell_fliegt.2359,2 |
4403 .lcomm delay_ausschalten.2358,1 |
4404 .lcomm delay_einschalten.2357,1 |
4405 .lcomm delay_neutral.2356,1 |
4406 .lcomm RcLostTimer.2355,2 |
4407 .lcomm IntegralFehlerRoll.2354,2 |
4408 .lcomm IntegralFehlerNick.2353,2 |
4409 .lcomm tmp_long2.2352,4 |
4410 .lcomm tmp_long.2351,4 |
4411 .lcomm sollGier.2350,4 |
4412 .lcomm SummeRoll.2349,4 |
4413 .lcomm SummeNick.2348,4 |
4414 .comm DiffNick,2,1 |
4415 .comm DiffRoll,2,1 |
4416 .comm durchschnitt_northing,4,1 |
4417 .comm durchschnitt_easting,4,1 |
4418 .comm gps_p,2,1 |
4419 .comm gps_d,2,1 |
4420 .comm skal,2,1 |
4421 .comm gps_gethome,2,1 |
4422 .comm RemoteTasten,1,1 |
4423 .comm MesswertNick,2,1 |
4424 .comm MesswertRoll,2,1 |
4425 .comm MesswertGier,2,1 |
4426 .comm Mittelwert_AccNick,2,1 |
4427 .comm Mittelwert_AccRoll,2,1 |
4428 .comm Mittelwert_AccHoch,2,1 |
4429 .comm h,1,1 |
4430 .comm m,1,1 |
4431 .comm s,1,1 |
4432 .comm Motor_Vorne,1,1 |
4433 .comm Motor_Hinten,1,1 |
4434 .comm Motor_Rechts,1,1 |
4435 .comm Motor_Links,1,1 |
4436 .comm Count,1,1 |
4437 .comm MotorWert,5,1 |
4438 .comm EE_Parameter,58,1 |
4439 .comm MAX_GAS,1,1 |
4440 .comm MIN_GAS,1,1 |
4441 .comm GyroFaktor,4,1 |
4442 .comm IntegralFaktor,4,1 |
4443 /* File "fc.c": code 5078 = 0x13d6 (4996), prologues 38, epilogues 44 */ |
DEFINED SYMBOLS |
*ABS*:00000000 fc.c |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:3 *ABS*:0000003f __SREG__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4 *ABS*:0000003e __SP_H__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:5 *ABS*:0000003d __SP_L__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:6 *ABS*:00000000 __tmp_reg__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:7 *ABS*:00000001 __zero_reg__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:13 .text:00000000 Mittelwert |
*COM*:00000002 MesswertNick |
*COM*:00000002 MesswertRoll |
*COM*:00000002 MesswertGier |
*COM*:00000002 Mittelwert_AccNick |
*COM*:00000002 Mittelwert_AccRoll |
*COM*:00000002 Mittelwert_AccHoch |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4195 .bss:00000035 Mess_Integral_Gier |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4165 .bss:00000021 Integral_Gier |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4171 .bss:00000025 Mess_IntegralNick |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4141 .bss:00000011 IntegralNick |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4183 .bss:0000002d Mess_IntegralRoll |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4153 .bss:00000019 IntegralRoll |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4177 .bss:00000029 Mess_IntegralNick2 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4147 .bss:00000015 IntegralNick2 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4189 .bss:00000031 Mess_IntegralRoll2 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4159 .bss:0000001d IntegralRoll2 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4243 .bss:00000049 Poti1 |
*COM*:0000003a EE_Parameter |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4249 .bss:0000004b Poti2 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4255 .bss:0000004d Poti3 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4261 .bss:0000004f Poti4 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:576 .text:00000582 CalibrierMittelwert |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:918 .text:000008ba ParameterZuordnung |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4330 .data:00000019 Parameter_MaxHoehe |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4325 .data:00000018 Parameter_Luftdruck_D |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4335 .data:0000001a Parameter_Hoehe_P |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4340 .data:0000001b Parameter_Hoehe_ACC_Wirkung |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4345 .data:0000001c Parameter_KompassWirkung |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4350 .data:0000001d Parameter_Gyro_P |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4355 .data:0000001e Parameter_Gyro_I |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4365 .data:00000020 Parameter_I_Faktor |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4372 .bss:0000005d Parameter_UserParam1 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4378 .bss:0000005e Parameter_UserParam2 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4384 .bss:0000005f Parameter_UserParam3 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4390 .bss:00000060 Parameter_UserParam4 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4396 .data:00000021 Parameter_ServoNickControl |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4317 .data:00000014 Ki |
*COM*:00000001 MAX_GAS |
*COM*:00000001 MIN_GAS |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:1484 .text:00000d54 DefaultKonstanten2 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:1570 .text:00000e2e DefaultKonstanten1 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:1654 .text:00000f10 SendMotorData |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4291 .bss:00000058 MotorenEin |
*COM*:00000001 Motor_Hinten |
*COM*:00000001 Motor_Vorne |
*COM*:00000001 Motor_Rechts |
*COM*:00000001 Motor_Links |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:1710 .text:00000f9e SetNeutral |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4111 .bss:00000007 NeutralAccX |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4117 .bss:00000009 NeutralAccY |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4123 .bss:0000000b NeutralAccZ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4093 .bss:00000001 AdNeutralNick |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4099 .bss:00000003 AdNeutralRoll |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4105 .bss:00000005 AdNeutralGier |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4207 .bss:0000003d Mess_Integral_Hoch |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4213 .bss:00000041 KompassValue |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4219 .bss:00000043 KompassStartwert |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:1882 .text:00001196 Piep |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:1911 .text:000011c0 MotorRegler |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4267 .bss:00000051 SenderOkay |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4405 .bss:0000006c RcLostTimer.2355 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4231 .bss:00000047 Notlandung |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4401 .bss:00000067 modell_fliegt.2359 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4412 .bss:00000082 SummeNick.2348 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4411 .bss:0000007e SummeRoll.2349 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4201 .bss:00000039 Mess_Integral_Gier2 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4404 .bss:0000006b delay_neutral.2356 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4403 .bss:0000006a delay_einschalten.2357 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4410 .bss:0000007a sollGier.2350 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4402 .bss:00000069 delay_ausschalten.2358 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4273 .bss:00000052 StickNick |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4279 .bss:00000054 StickRoll |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4285 .bss:00000056 StickGier |
*COM*:00000004 GyroFaktor |
*COM*:00000004 IntegralFaktor |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4407 .bss:00000070 IntegralFehlerNick.2353 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4406 .bss:0000006e IntegralFehlerRoll.2354 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4409 .bss:00000076 tmp_long.2351 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4408 .bss:00000072 tmp_long2.2352 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4398 .bss:00000063 NeueKompassRichtungMerken.2362 |
.bss:00000061 SignalSchlecht.2366 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4225 .bss:00000045 KompassRichtung |
*COM*:00000002 gps_p |
*COM*:00000002 gps_d |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4399 .bss:00000064 TimerWerteausgabe.2361 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4297 .bss:00000059 HoehenWert |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4303 .bss:0000005b SollHoehe |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4237 .bss:00000048 HoehenReglerAktiv |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4400 .bss:00000065 hoehenregler.2360 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4309 .data:00000010 Kp |
*COM*:00000002 DiffNick |
*COM*:00000002 DiffRoll |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4087 .bss:00000000 Timeout |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4129 .bss:0000000f CosinusNickWinkel |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4135 .bss:00000010 CosinusRollWinkel |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc9SL4d7.s:4360 .data:0000001f Parameter_Gier_P |
*COM*:00000004 durchschnitt_northing |
*COM*:00000004 durchschnitt_easting |
*COM*:00000002 skal |
*COM*:00000002 gps_gethome |
*COM*:00000001 RemoteTasten |
*COM*:00000001 h |
*COM*:00000001 m |
*COM*:00000001 s |
*COM*:00000001 Count |
*COM*:00000005 MotorWert |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
MessanzahlNick |
AccumulateNick |
__divmodhi4 |
MessanzahlRoll |
AccumulateRoll |
MessanzahlGier |
AccumulateGier |
messanzahl_AccNick |
accumulate_AccNick |
__divmodsi4 |
messanzahl_AccRoll |
accumulate_AccRoll |
messanzahl_AccHoch |
accumulate_AccHoch |
PPM_in |
__floatsisf |
__addsf3 |
__mulsf3 |
MotorTest |
DebugOut |
twi_state |
motor |
i2c_start |
SetDelay |
CheckDelay |
MessLuftdruck |
SucheLuftruckOffset |
Aktuell_az |
Luftdruck |
StartLuftdruck |
HoeheD |
beeptime |
Delay_ms |
PcZugriff |
EEPromArray |
__eeprom_write_byte_1F2021 |
GetActiveParamSetNumber |
ReadParameterSet |
NewPpmData |
PPM_diff |
__divsf3 |
__ltsf2 |
ZaehlMessungen |
__mulsi3 |
gps_main |
GPS_Nick |
GPS_Roll |
__fixsfsi |
/branches/chris_hallo2/flight.pnproj |
---|
0,0 → 1,0 |
<Project name="Flight-Ctrl"><File path="uart.h"></File><File path="main.c"></File><File path="main.h"></File><File path="makefile"></File><File path="uart.c"></File><File path="printf_P.h"></File><File path="printf_P.c"></File><File path="timer0.c"></File><File path="timer0.h"></File><File path="old_macros.h"></File><File path="twimaster.c"></File><File path="version.txt"></File><File path="twimaster.h"></File><File path="rc.c"></File><File path="rc.h"></File><File path="fc.h"></File><File path="fc.c"></File><File path="menu.h"></File><File path="menu.c"></File><File path="_Settings.h"></File><File path="analog.c"></File><File path="analog.h"></File><File path="GPS.c"></File><File path="gps.h"></File><File path="License.txt"></File></Project> |
/branches/chris_hallo2/flight.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="Flight-Ctrl" x="true"></e></ViewState></pd> |
/branches/chris_hallo2/gps.h |
---|
0,0 → 1,4 |
extern signed int GPS_Nick; |
extern signed int GPS_Roll; |
extern void GPS_Neutral(void); |
extern void GPS_BerechneZielrichtung(void); |
/branches/chris_hallo2/main.c |
---|
0,0 → 1,210 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + Nur für den privaten Gebrauch |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten und nicht-kommerziellen Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt und genannt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned char EEPromArray[E2END+1] EEMEM; |
// -- Parametersatz aus EEPROM lesen --- |
// number [0..5] |
void ReadParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if (number > 5) number = 5; |
eeprom_read_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length); |
} |
// -- Parametersatz ins EEPROM schreiben --- |
// number [0..5] |
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if (number > 5) number = 5; |
eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], number); // diesen Parametersatz als aktuell merken |
} |
unsigned char GetActiveParamSetNumber(void) |
{ |
return(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET])); |
} |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
unsigned int timer; |
unsigned int timer2 = 0; |
DDRC = 0x01; // SCL |
PORTC = 0xff; // Pullup SDA |
DDRB = 0x1B; // LEDs und Druckoffset |
PORTB = 0x01; // LED_Rot |
DDRD = 0x3E; // Speaker & TXD & J3 J4 J5 |
DDRD |=0x80; // J7 |
PORTD = 0xF7; // LED |
MCUSR &=~(1<<WDRF); |
WDTCSR |= (1<<WDCE)|(1<<WDE); |
WDTCSR = 0; |
beeptime = 2000; |
StickGier = 0; PPM_in[K_GAS] = 0;StickRoll = 0; StickNick = 0; |
ROT_OFF; |
Timer_Init(); |
UART_Init(); |
rc_sum_init(); |
ADC_Init(); |
i2c_init(); |
sei(); |
VersionInfo.Hauptversion = VERSION_HAUPTVERSION; |
VersionInfo.Nebenversion = VERSION_NEBENVERSION; |
VersionInfo.PCKompatibel = VERSION_KOMPATIBEL; |
printf("\n\rFlightControl V%d.%d ", VERSION_HAUPTVERSION, VERSION_NEBENVERSION); |
printf("\n\r=============================="); |
GRN_ON; |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != 59) // seit V 0.60 |
{ |
printf("\n\rInit. EEPROM: Generiere Default-Parameter..."); |
DefaultKonstanten1(); |
for (unsigned char i=0;i<6;i++) |
{ |
if(i==2) DefaultKonstanten2(); |
WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
} |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], 1); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], 59); |
} |
ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
printf("\n\rBenutze Parametersatz %d", GetActiveParamSetNumber()); |
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
printf("\n\rAbgleich Luftdrucksensor.."); |
timer = SetDelay(2500); |
SucheLuftruckOffset(); |
while (!CheckDelay(timer)); |
printf("OK\n\r"); |
} |
SetNeutral(); |
ROT_OFF; |
beeptime = 2000; |
DebugIn.Analog[1] = 1000; |
DebugIn.Digital[0] = 0x55; |
printf("\n\rSteuerung: "); |
if (EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) printf("HeadingHold"); |
else printf("Neutral"); |
printf("\n\n\r"); |
LcdClear(); |
while (1) |
{ |
if (UpdateMotor) // ReglerIntervall |
{ |
UpdateMotor=0; |
MotorRegler(); |
SendMotorData(); |
ROT_OFF; |
if(PcZugriff) PcZugriff--; |
if(SenderOkay) SenderOkay--; |
if (UBat < EE_Parameter.UnterspannungsWarnung) |
{ |
beeptime = 2000; |
} |
if(!Timeout) |
{ |
i2c_init(); |
} |
else |
{ |
ROT_OFF; |
} |
} |
if(SIO_DEBUG) |
{ |
DatenUebertragung(); |
BearbeiteRxDaten(); |
} |
else BearbeiteRxDaten(); |
if(CheckDelay(timer2)) |
{ |
if(MotorenEin) PORTC ^= 0x10; else PORTC &= ~0x10; |
timer = SetDelay(500); |
} |
} |
return (1); |
} |
/branches/chris_hallo2/main.d |
---|
0,0 → 1,2 |
main.o main.d : main.c main.h old_macros.h _settings.h printf_P.h timer0.h uart.h \ |
analog.h twimaster.h menu.h rc.h fc.h gps.h |
/branches/chris_hallo2/main.h |
---|
0,0 → 1,101 |
#ifndef _MAIN_H |
#define _MAIN_H |
//Hier die Quarz Frequenz einstellen |
#if defined (__AVR_ATmega32__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
#endif |
#if defined (__AVR_ATmega644__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
//#define SYSCLK 16000000L //Quarz Frequenz in Hz |
#endif |
// neue Hardware |
#define ROT_OFF PORTB &=~0x01 |
#define ROT_ON PORTB |= 0x01 |
#define ROT_FLASH PORTB ^= 0x01 |
#define GRN_OFF PORTB &=~0x02 |
#define GRN_ON PORTB |= 0x02 |
#define GRN_FLASH PORTD ^= 0x02 |
//#ifndef F_CPU |
//#error ################## F_CPU nicht definiert oder ungültig ############# |
//#endif |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//#define ANZ_MITTELWERT 4 |
#define EEPROM_ADR_VALID 1 |
#define EEPROM_ADR_ACTIVE_SET 2 |
#define EEPROM_ADR_PARAM_BEGIN 100 |
#define CFG_HOEHENREGELUNG 0x01 |
#define CFG_HOEHEN_SCHALTER 0x02 |
#define CFG_HEADING_HOLD 0x04 |
#define CFG_KOMPASS_AKTIV 0x08 |
#define CFG_KOMPASS_FIX 0x10 |
#define CFG_GPS_AKTIV 0x20 |
//#define SYSCLK |
//extern unsigned long SYSCLK; |
extern volatile int i_Nick[20],i_Roll[20],DiffNick,DiffRoll; |
extern volatile unsigned char SenderOkay; |
extern unsigned char CosinusNickWinkel, CosinusRollWinkel; |
extern void ReadParameterSet (unsigned char number, unsigned char *buffer, unsigned char length); |
extern void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length); |
extern unsigned char GetActiveParamSetNumber(void); |
extern unsigned char EEPromArray[]; |
long durchschnitt_northing; |
long durchschnitt_easting; |
volatile int gps_p; //P-Anteil (10) |
volatile int gps_d; //D-Anteil (4) |
volatile int skal; //Skalierungsfaktor der Regelung (alter Wert: 10) (20) |
volatile int gps_gethome; |
#include <stdlib.h> |
#include <string.h> |
#include <avr/io.h> |
#include <avr/pgmspace.h> |
#include <avr/interrupt.h> |
#include <avr/eeprom.h> |
#include <avr/boot.h> |
#include <avr/wdt.h> |
#include "old_macros.h" |
#include "_settings.h" |
#include "printf_P.h" |
#include "timer0.h" |
#include "uart.h" |
#include "analog.h" |
#include "twimaster.h" |
#include "menu.h" |
#include "rc.h" |
#include "fc.h" |
#include "gps.h" |
#ifndef EEMEM |
#define EEMEM __attribute__ ((section (".eeprom"))) |
#endif |
#define DEBUG_DISPLAY_INTERVALL 123 // in ms |
#define DELAY_US(x) ((unsigned int)( (x) * 1e-6 * F_CPU )) |
#endif //_MAIN_H |
/branches/chris_hallo2/main.lst |
---|
0,0 → 1,598 |
1 .file "main.c" |
2 .arch atmega644 |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .text |
11 .global GetActiveParamSetNumber |
13 GetActiveParamSetNumber: |
14 /* prologue: frame size=0 */ |
15 /* prologue end (size=0) */ |
16 0000 A0E0 ldi r26,lo8(EEPromArray+2) |
17 0002 B0E0 ldi r27,hi8(EEPromArray+2) |
18 /* #APP */ |
19 0004 0E94 0000 call __eeprom_read_byte_1F2021 |
20 0008 802D mov r24,__tmp_reg__ |
21 /* #NOAPP */ |
22 000a 9927 clr r25 |
23 /* epilogue: frame size=0 */ |
24 000c 0895 ret |
25 /* epilogue end (size=1) */ |
26 /* function GetActiveParamSetNumber size 8 (7) */ |
28 .global WriteParameterSet |
30 WriteParameterSet: |
31 /* prologue: frame size=0 */ |
32 /* prologue end (size=0) */ |
33 000e FB01 movw r30,r22 |
34 0010 282F mov r18,r24 |
35 0012 8630 cpi r24,lo8(6) |
36 0014 00F0 brlo .L4 |
37 0016 25E0 ldi r18,lo8(5) |
38 .L4: |
39 0018 842F mov r24,r20 |
40 001a 9927 clr r25 |
41 001c 429F mul r20,r18 |
42 001e D001 movw r26,r0 |
43 0020 1124 clr r1 |
44 0022 A050 subi r26,lo8(-(EEPromArray+100)) |
45 0024 B040 sbci r27,hi8(-(EEPromArray+100)) |
46 /* #APP */ |
47 .26_start: |
48 0026 0197 sbiw r24,1 |
49 0028 04F0 brlt .26_finished |
50 002a 0190 ld __tmp_reg__,z+ |
51 002c 0E94 0000 call __eeprom_write_byte_1F2021 |
52 0030 00C0 rjmp .26_start |
53 .26_finished: |
54 /* #NOAPP */ |
55 0032 A0E0 ldi r26,lo8(EEPromArray+2) |
56 0034 B0E0 ldi r27,hi8(EEPromArray+2) |
57 /* #APP */ |
58 0036 022E mov __tmp_reg__,r18 |
59 0038 0E94 0000 call __eeprom_write_byte_1F2021 |
60 /* #NOAPP */ |
61 /* epilogue: frame size=0 */ |
62 003c 0895 ret |
63 /* epilogue end (size=1) */ |
64 /* function WriteParameterSet size 33 (32) */ |
66 .global ReadParameterSet |
68 ReadParameterSet: |
69 /* prologue: frame size=0 */ |
70 003e CF93 push r28 |
71 0040 DF93 push r29 |
72 /* prologue end (size=2) */ |
73 0042 FB01 movw r30,r22 |
74 0044 C42F mov r28,r20 |
75 0046 DD27 clr r29 |
76 0048 8630 cpi r24,lo8(6) |
77 004a 00F0 brlo .L7 |
78 004c 85E0 ldi r24,lo8(5) |
79 .L7: |
80 004e 489F mul r20,r24 |
81 0050 D001 movw r26,r0 |
82 0052 1124 clr r1 |
83 0054 A050 subi r26,lo8(-(EEPromArray+100)) |
84 0056 B040 sbci r27,hi8(-(EEPromArray+100)) |
85 /* #APP */ |
86 .44_start: |
87 0058 2197 sbiw r28,1 |
88 005a 04F0 brlt .44_finished |
89 005c 0E94 0000 call __eeprom_read_byte_1F2021 |
90 0060 0192 st z+,__tmp_reg__ |
91 0062 00C0 rjmp .44_start |
92 .44_finished: |
93 /* #NOAPP */ |
94 /* epilogue: frame size=0 */ |
95 0064 DF91 pop r29 |
96 0066 CF91 pop r28 |
97 0068 0895 ret |
98 /* epilogue end (size=3) */ |
99 /* function ReadParameterSet size 30 (25) */ |
101 .global main |
103 main: |
104 /* prologue: frame size=0 */ |
105 006a 0F93 push r16 |
106 006c 1F93 push r17 |
107 006e CF93 push r28 |
108 0070 DF93 push r29 |
109 /* prologue end (size=4) */ |
110 0072 91E0 ldi r25,lo8(1) |
111 0074 97B9 out 39-0x20,r25 |
112 0076 8FEF ldi r24,lo8(-1) |
113 0078 88B9 out 40-0x20,r24 |
114 007a 8BE1 ldi r24,lo8(27) |
115 007c 84B9 out 36-0x20,r24 |
116 007e 95B9 out 37-0x20,r25 |
117 0080 8EE3 ldi r24,lo8(62) |
118 0082 8AB9 out 42-0x20,r24 |
119 0084 579A sbi 42-0x20,7 |
120 0086 87EF ldi r24,lo8(-9) |
121 0088 8BB9 out 43-0x20,r24 |
122 008a 84B7 in r24,84-0x20 |
123 008c 877F andi r24,lo8(-9) |
124 008e 84BF out 84-0x20,r24 |
125 0090 8091 6000 lds r24,96 |
126 0094 8861 ori r24,lo8(24) |
127 0096 8093 6000 sts 96,r24 |
128 009a 1092 6000 sts 96,__zero_reg__ |
129 009e 80ED ldi r24,lo8(2000) |
130 00a0 97E0 ldi r25,hi8(2000) |
131 00a2 9093 0000 sts (beeptime)+1,r25 |
132 00a6 8093 0000 sts beeptime,r24 |
133 00aa 1092 0000 sts (StickGier)+1,__zero_reg__ |
134 00ae 1092 0000 sts StickGier,__zero_reg__ |
135 00b2 1092 0000 sts (PPM_in+4)+1,__zero_reg__ |
136 00b6 1092 0000 sts PPM_in+4,__zero_reg__ |
137 00ba 1092 0000 sts (StickRoll)+1,__zero_reg__ |
138 00be 1092 0000 sts StickRoll,__zero_reg__ |
139 00c2 1092 0000 sts (StickNick)+1,__zero_reg__ |
140 00c6 1092 0000 sts StickNick,__zero_reg__ |
141 00ca 2898 cbi 37-0x20,0 |
142 00cc 0E94 0000 call Timer_Init |
143 00d0 0E94 0000 call UART_Init |
144 00d4 0E94 0000 call rc_sum_init |
145 00d8 0E94 0000 call ADC_Init |
146 00dc 0E94 0000 call i2c_init |
147 /* #APP */ |
148 00e0 7894 sei |
149 /* #NOAPP */ |
150 00e2 1092 0000 sts VersionInfo,__zero_reg__ |
151 00e6 8CE3 ldi r24,lo8(60) |
152 00e8 8093 0000 sts VersionInfo+1,r24 |
153 00ec 84E0 ldi r24,lo8(4) |
154 00ee 8093 0000 sts VersionInfo+2,r24 |
155 00f2 8CE3 ldi r24,lo8(60) |
156 00f4 90E0 ldi r25,hi8(60) |
157 00f6 9F93 push r25 |
158 00f8 8F93 push r24 |
159 00fa 1F92 push __zero_reg__ |
160 00fc 1F92 push __zero_reg__ |
161 00fe 80E0 ldi r24,lo8(__c.1991) |
162 0100 90E0 ldi r25,hi8(__c.1991) |
163 0102 9F93 push r25 |
164 0104 8F93 push r24 |
165 0106 1F92 push __zero_reg__ |
166 0108 0E94 0000 call _printf_P |
167 010c 80E0 ldi r24,lo8(__c.1993) |
168 010e 90E0 ldi r25,hi8(__c.1993) |
169 0110 9F93 push r25 |
170 0112 8F93 push r24 |
171 0114 1F92 push __zero_reg__ |
172 0116 0E94 0000 call _printf_P |
173 011a 299A sbi 37-0x20,1 |
174 011c A0E0 ldi r26,lo8(EEPromArray+1) |
175 011e B0E0 ldi r27,hi8(EEPromArray+1) |
176 /* #APP */ |
177 0120 0E94 0000 call __eeprom_read_byte_1F2021 |
178 0124 802D mov r24,__tmp_reg__ |
179 /* #NOAPP */ |
180 0126 2DB7 in r18,__SP_L__ |
181 0128 3EB7 in r19,__SP_H__ |
182 012a 265F subi r18,lo8(-(10)) |
183 012c 3F4F sbci r19,hi8(-(10)) |
184 012e 0FB6 in __tmp_reg__,__SREG__ |
185 0130 F894 cli |
186 0132 3EBF out __SP_H__,r19 |
187 0134 0FBE out __SREG__,__tmp_reg__ |
188 0136 2DBF out __SP_L__,r18 |
189 0138 8B33 cpi r24,lo8(59) |
190 013a 01F0 breq .L10 |
191 013c 80E0 ldi r24,lo8(__c.1995) |
192 013e 90E0 ldi r25,hi8(__c.1995) |
193 0140 9F93 push r25 |
194 0142 8F93 push r24 |
195 0144 1F92 push __zero_reg__ |
196 0146 0E94 0000 call _printf_P |
197 014a 0E94 0000 call DefaultKonstanten1 |
198 014e 4AE3 ldi r20,lo8(58) |
199 0150 60E0 ldi r22,lo8(EE_Parameter) |
200 0152 70E0 ldi r23,hi8(EE_Parameter) |
201 0154 80E0 ldi r24,lo8(0) |
202 0156 0E94 0000 call WriteParameterSet |
203 015a 01E0 ldi r16,lo8(1) |
204 015c 0F90 pop __tmp_reg__ |
205 015e 0F90 pop __tmp_reg__ |
206 0160 0F90 pop __tmp_reg__ |
207 .L12: |
208 0162 0230 cpi r16,lo8(2) |
209 0164 01F4 brne .L13 |
210 0166 0E94 0000 call DefaultKonstanten2 |
211 016a 4AE3 ldi r20,lo8(58) |
212 016c 60E0 ldi r22,lo8(EE_Parameter) |
213 016e 70E0 ldi r23,hi8(EE_Parameter) |
214 0170 82E0 ldi r24,lo8(2) |
215 0172 0E94 0000 call WriteParameterSet |
216 0176 03E0 ldi r16,lo8(3) |
217 .L13: |
218 0178 4AE3 ldi r20,lo8(58) |
219 017a 60E0 ldi r22,lo8(EE_Parameter) |
220 017c 70E0 ldi r23,hi8(EE_Parameter) |
221 017e 802F mov r24,r16 |
222 0180 0E94 0000 call WriteParameterSet |
223 0184 0F5F subi r16,lo8(-(1)) |
224 0186 0630 cpi r16,lo8(6) |
225 0188 00F0 brlo .L12 |
226 018a 81E0 ldi r24,lo8(1) |
227 018c 20E0 ldi r18,lo8(EEPromArray+2) |
228 018e 30E0 ldi r19,hi8(EEPromArray+2) |
229 0190 D901 movw r26,r18 |
230 /* #APP */ |
231 0192 082E mov __tmp_reg__,r24 |
232 0194 0E94 0000 call __eeprom_write_byte_1F2021 |
233 /* #NOAPP */ |
234 0198 8BE3 ldi r24,lo8(59) |
235 019a 2150 subi r18,lo8(-(-1)) |
236 019c 3040 sbci r19,hi8(-(-1)) |
237 019e D901 movw r26,r18 |
238 /* #APP */ |
239 01a0 082E mov __tmp_reg__,r24 |
240 01a2 0E94 0000 call __eeprom_write_byte_1F2021 |
241 /* #NOAPP */ |
242 .L10: |
243 01a6 00E0 ldi r16,lo8(EEPromArray+2) |
244 01a8 10E0 ldi r17,hi8(EEPromArray+2) |
245 01aa D801 movw r26,r16 |
246 /* #APP */ |
247 01ac 0E94 0000 call __eeprom_read_byte_1F2021 |
248 01b0 802D mov r24,__tmp_reg__ |
249 /* #NOAPP */ |
250 01b2 4AE3 ldi r20,lo8(58) |
251 01b4 60E0 ldi r22,lo8(EE_Parameter) |
252 01b6 70E0 ldi r23,hi8(EE_Parameter) |
253 01b8 0E94 0000 call ReadParameterSet |
254 01bc D801 movw r26,r16 |
255 /* #APP */ |
256 01be 0E94 0000 call __eeprom_read_byte_1F2021 |
257 01c2 802D mov r24,__tmp_reg__ |
258 /* #NOAPP */ |
259 01c4 9927 clr r25 |
260 01c6 9F93 push r25 |
261 01c8 8F93 push r24 |
262 01ca 80E0 ldi r24,lo8(__c.2003) |
263 01cc 90E0 ldi r25,hi8(__c.2003) |
264 01ce 9F93 push r25 |
265 01d0 8F93 push r24 |
266 01d2 1F92 push __zero_reg__ |
267 01d4 0E94 0000 call _printf_P |
268 01d8 8091 0000 lds r24,EE_Parameter+8 |
269 01dc 0F90 pop __tmp_reg__ |
270 01de 0F90 pop __tmp_reg__ |
271 01e0 0F90 pop __tmp_reg__ |
272 01e2 0F90 pop __tmp_reg__ |
273 01e4 0F90 pop __tmp_reg__ |
274 01e6 80FF sbrs r24,0 |
275 01e8 00C0 rjmp .L16 |
276 01ea 80E0 ldi r24,lo8(__c.2005) |
277 01ec 90E0 ldi r25,hi8(__c.2005) |
278 01ee 9F93 push r25 |
279 01f0 8F93 push r24 |
280 01f2 1F92 push __zero_reg__ |
281 01f4 0E94 0000 call _printf_P |
282 01f8 84EC ldi r24,lo8(2500) |
283 01fa 99E0 ldi r25,hi8(2500) |
284 01fc 0E94 0000 call SetDelay |
285 0200 EC01 movw r28,r24 |
286 0202 0E94 0000 call SucheLuftruckOffset |
287 0206 0F90 pop __tmp_reg__ |
288 0208 0F90 pop __tmp_reg__ |
289 020a 0F90 pop __tmp_reg__ |
290 .L18: |
291 020c CE01 movw r24,r28 |
292 020e 0E94 0000 call CheckDelay |
293 0212 8823 tst r24 |
294 0214 01F0 breq .L18 |
295 0216 80E0 ldi r24,lo8(__c.2010) |
296 0218 90E0 ldi r25,hi8(__c.2010) |
297 021a 9F93 push r25 |
298 021c 8F93 push r24 |
299 021e 1F92 push __zero_reg__ |
300 0220 0E94 0000 call _printf_P |
301 0224 0F90 pop __tmp_reg__ |
302 0226 0F90 pop __tmp_reg__ |
303 0228 0F90 pop __tmp_reg__ |
304 .L16: |
305 022a 0E94 0000 call SetNeutral |
306 022e 2898 cbi 37-0x20,0 |
307 0230 80ED ldi r24,lo8(2000) |
308 0232 97E0 ldi r25,hi8(2000) |
309 0234 9093 0000 sts (beeptime)+1,r25 |
310 0238 8093 0000 sts beeptime,r24 |
311 023c 88EE ldi r24,lo8(1000) |
312 023e 93E0 ldi r25,hi8(1000) |
313 0240 9093 0000 sts (DebugIn+5)+1,r25 |
314 0244 8093 0000 sts DebugIn+5,r24 |
315 0248 85E5 ldi r24,lo8(85) |
316 024a 8093 0000 sts DebugIn,r24 |
317 024e 80E0 ldi r24,lo8(__c.2012) |
318 0250 90E0 ldi r25,hi8(__c.2012) |
319 0252 9F93 push r25 |
320 0254 8F93 push r24 |
321 0256 1F92 push __zero_reg__ |
322 0258 0E94 0000 call _printf_P |
323 025c 8091 0000 lds r24,EE_Parameter+8 |
324 0260 0F90 pop __tmp_reg__ |
325 0262 0F90 pop __tmp_reg__ |
326 0264 0F90 pop __tmp_reg__ |
327 0266 82FF sbrs r24,2 |
328 0268 00C0 rjmp .L20 |
329 026a 80E0 ldi r24,lo8(__c.2014) |
330 026c 90E0 ldi r25,hi8(__c.2014) |
331 026e 00C0 rjmp .L48 |
332 .L20: |
333 0270 80E0 ldi r24,lo8(__c.2016) |
334 0272 90E0 ldi r25,hi8(__c.2016) |
335 .L48: |
336 0274 9F93 push r25 |
337 0276 8F93 push r24 |
338 0278 1F92 push __zero_reg__ |
339 027a 0E94 0000 call _printf_P |
340 027e 0F90 pop __tmp_reg__ |
341 0280 0F90 pop __tmp_reg__ |
342 0282 0F90 pop __tmp_reg__ |
343 0284 80E0 ldi r24,lo8(__c.2018) |
344 0286 90E0 ldi r25,hi8(__c.2018) |
345 0288 9F93 push r25 |
346 028a 8F93 push r24 |
347 028c 1F92 push __zero_reg__ |
348 028e 0E94 0000 call _printf_P |
349 0292 0E94 0000 call LcdClear |
350 0296 0F90 pop __tmp_reg__ |
351 0298 0F90 pop __tmp_reg__ |
352 029a 0F90 pop __tmp_reg__ |
353 .L49: |
354 029c 8091 0000 lds r24,UpdateMotor |
355 02a0 8823 tst r24 |
356 02a2 01F0 breq .L24 |
357 02a4 1092 0000 sts UpdateMotor,__zero_reg__ |
358 02a8 0E94 0000 call MotorRegler |
359 02ac 0E94 0000 call SendMotorData |
360 02b0 2898 cbi 37-0x20,0 |
361 02b2 8091 0000 lds r24,PcZugriff |
362 02b6 8823 tst r24 |
363 02b8 01F0 breq .L26 |
364 02ba 8150 subi r24,lo8(-(-1)) |
365 02bc 8093 0000 sts PcZugriff,r24 |
366 .L26: |
367 02c0 8091 0000 lds r24,SenderOkay |
368 02c4 8823 tst r24 |
369 02c6 01F0 breq .L28 |
370 02c8 8091 0000 lds r24,SenderOkay |
371 02cc 8150 subi r24,lo8(-(-1)) |
372 02ce 8093 0000 sts SenderOkay,r24 |
373 .L28: |
374 02d2 2091 0000 lds r18,UBat |
375 02d6 3091 0000 lds r19,(UBat)+1 |
376 02da 8091 0000 lds r24,EE_Parameter+24 |
377 02de 9927 clr r25 |
378 02e0 2817 cp r18,r24 |
379 02e2 3907 cpc r19,r25 |
380 02e4 04F4 brge .L30 |
381 02e6 80ED ldi r24,lo8(2000) |
382 02e8 97E0 ldi r25,hi8(2000) |
383 02ea 9093 0000 sts (beeptime)+1,r25 |
384 02ee 8093 0000 sts beeptime,r24 |
385 .L30: |
386 02f2 8091 0000 lds r24,Timeout |
387 02f6 8823 tst r24 |
388 02f8 01F4 brne .L32 |
389 02fa 0E94 0000 call i2c_init |
390 02fe 00C0 rjmp .L24 |
391 .L32: |
392 0300 2898 cbi 37-0x20,0 |
393 .L24: |
394 0302 0E94 0000 call DatenUebertragung |
395 0306 0E94 0000 call BearbeiteRxDaten |
396 030a 80E0 ldi r24,lo8(0) |
397 030c 90E0 ldi r25,hi8(0) |
398 030e 0E94 0000 call CheckDelay |
399 0312 8823 tst r24 |
400 0314 01F0 breq .L49 |
401 0316 8091 0000 lds r24,MotorenEin |
402 031a 8823 tst r24 |
403 031c 01F0 breq .L35 |
404 031e 88B1 in r24,40-0x20 |
405 0320 90E1 ldi r25,lo8(16) |
406 0322 8927 eor r24,r25 |
407 0324 88B9 out 40-0x20,r24 |
408 0326 00C0 rjmp .L37 |
409 .L35: |
410 0328 4498 cbi 40-0x20,4 |
411 .L37: |
412 032a 84EF ldi r24,lo8(500) |
413 032c 91E0 ldi r25,hi8(500) |
414 032e 0E94 0000 call SetDelay |
415 0332 00C0 rjmp .L49 |
416 /* epilogue: frame size=0 */ |
417 /* epilogue: noreturn */ |
418 /* epilogue end (size=0) */ |
419 /* function main size 363 (359) */ |
421 .section .progmem.data,"a",@progbits |
424 __c.2018: |
425 0000 0A0A 0D00 .string "\n\n\r" |
428 __c.2016: |
429 0004 4E65 7574 .string "Neutral" |
429 7261 6C00 |
432 __c.2014: |
433 000c 4865 6164 .string "HeadingHold" |
433 696E 6748 |
433 6F6C 6400 |
436 __c.2012: |
437 0018 0A0D 5374 .string "\n\rSteuerung: " |
437 6575 6572 |
437 756E 673A |
437 2000 |
440 __c.2010: |
441 0026 4F4B 0A0D .string "OK\n\r" |
441 00 |
444 __c.2005: |
445 002b 0A0D 4162 .string "\n\rAbgleich Luftdrucksensor.." |
445 676C 6569 |
445 6368 204C |
445 7566 7464 |
445 7275 636B |
448 __c.2003: |
449 0048 0A0D 4265 .string "\n\rBenutze Parametersatz %d" |
449 6E75 747A |
449 6520 5061 |
449 7261 6D65 |
449 7465 7273 |
452 __c.1995: |
453 0063 0A0D 496E .string "\n\rInit. EEPROM: Generiere Default-Parameter..." |
453 6974 2E20 |
453 4545 5052 |
453 4F4D 3A20 |
453 4765 6E65 |
456 __c.1993: |
457 0092 0A0D 3D3D .string "\n\r==============================" |
457 3D3D 3D3D |
457 3D3D 3D3D |
457 3D3D 3D3D |
457 3D3D 3D3D |
460 __c.1991: |
461 00b3 0A0D 466C .string "\n\rFlightControl V%d.%d " |
461 6967 6874 |
461 436F 6E74 |
461 726F 6C20 |
461 5625 642E |
462 .comm DiffNick,2,1 |
463 .comm DiffRoll,2,1 |
464 .comm SenderOkay,1,1 |
465 .comm CosinusNickWinkel,1,1 |
466 .comm CosinusRollWinkel,1,1 |
467 .global EEPromArray |
468 .section .eeprom,"aw",@progbits |
471 EEPromArray: |
472 0000 0000 0000 .skip 2048,0 |
472 0000 0000 |
472 0000 0000 |
472 0000 0000 |
472 0000 0000 |
473 .comm durchschnitt_northing,4,1 |
474 .comm durchschnitt_easting,4,1 |
475 .comm gps_p,2,1 |
476 .comm gps_d,2,1 |
477 .comm skal,2,1 |
478 .comm gps_gethome,2,1 |
479 .comm RemoteTasten,1,1 |
480 .comm Timeout,1,1 |
481 .comm IntegralNick,4,1 |
482 .comm IntegralNick2,4,1 |
483 .comm IntegralRoll,4,1 |
484 .comm IntegralRoll2,4,1 |
485 .comm Mess_IntegralNick,4,1 |
486 .comm Mess_IntegralNick2,4,1 |
487 .comm Mess_IntegralRoll,4,1 |
488 .comm Mess_IntegralRoll2,4,1 |
489 .comm Integral_Gier,4,1 |
490 .comm Mess_Integral_Gier,4,1 |
491 .comm h,1,1 |
492 .comm m,1,1 |
493 .comm s,1,1 |
494 .comm Motor_Vorne,1,1 |
495 .comm Motor_Hinten,1,1 |
496 .comm Motor_Rechts,1,1 |
497 .comm Motor_Links,1,1 |
498 .comm Count,1,1 |
499 .comm MotorWert,5,1 |
500 .comm StickNick,2,1 |
501 .comm StickRoll,2,1 |
502 .comm StickGier,2,1 |
503 .comm MotorenEin,1,1 |
504 /* File "main.c": code 434 = 0x01b2 ( 423), prologues 6, epilogues 5 */ |
DEFINED SYMBOLS |
*ABS*:00000000 main.c |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccwMXjrd.s:3 *ABS*:0000003f __SREG__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccwMXjrd.s:4 *ABS*:0000003e __SP_H__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccwMXjrd.s:5 *ABS*:0000003d __SP_L__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccwMXjrd.s:6 *ABS*:00000000 __tmp_reg__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccwMXjrd.s:7 *ABS*:00000001 __zero_reg__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccwMXjrd.s:13 .text:00000000 GetActiveParamSetNumber |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccwMXjrd.s:471 .eeprom:00000000 EEPromArray |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccwMXjrd.s:30 .text:0000000e WriteParameterSet |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccwMXjrd.s:47 .text:00000026 .26_start |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccwMXjrd.s:53 .text:00000032 .26_finished |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccwMXjrd.s:68 .text:0000003e ReadParameterSet |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccwMXjrd.s:86 .text:00000058 .44_start |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccwMXjrd.s:92 .text:00000064 .44_finished |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccwMXjrd.s:103 .text:0000006a main |
*COM*:00000002 StickGier |
*COM*:00000002 StickRoll |
*COM*:00000002 StickNick |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccwMXjrd.s:460 .progmem.data:000000b3 __c.1991 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccwMXjrd.s:456 .progmem.data:00000092 __c.1993 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccwMXjrd.s:452 .progmem.data:00000063 __c.1995 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccwMXjrd.s:448 .progmem.data:00000048 __c.2003 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccwMXjrd.s:444 .progmem.data:0000002b __c.2005 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccwMXjrd.s:440 .progmem.data:00000026 __c.2010 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccwMXjrd.s:436 .progmem.data:00000018 __c.2012 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccwMXjrd.s:432 .progmem.data:0000000c __c.2014 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccwMXjrd.s:428 .progmem.data:00000004 __c.2016 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccwMXjrd.s:424 .progmem.data:00000000 __c.2018 |
*COM*:00000001 SenderOkay |
*COM*:00000001 Timeout |
*COM*:00000001 MotorenEin |
*COM*:00000002 DiffNick |
*COM*:00000002 DiffRoll |
*COM*:00000001 CosinusNickWinkel |
*COM*:00000001 CosinusRollWinkel |
*COM*:00000004 durchschnitt_northing |
*COM*:00000004 durchschnitt_easting |
*COM*:00000002 gps_p |
*COM*:00000002 gps_d |
*COM*:00000002 skal |
*COM*:00000002 gps_gethome |
*COM*:00000001 RemoteTasten |
*COM*:00000004 IntegralNick |
*COM*:00000004 IntegralNick2 |
*COM*:00000004 IntegralRoll |
*COM*:00000004 IntegralRoll2 |
*COM*:00000004 Mess_IntegralNick |
*COM*:00000004 Mess_IntegralNick2 |
*COM*:00000004 Mess_IntegralRoll |
*COM*:00000004 Mess_IntegralRoll2 |
*COM*:00000004 Integral_Gier |
*COM*:00000004 Mess_Integral_Gier |
*COM*:00000001 h |
*COM*:00000001 m |
*COM*:00000001 s |
*COM*:00000001 Motor_Vorne |
*COM*:00000001 Motor_Hinten |
*COM*:00000001 Motor_Rechts |
*COM*:00000001 Motor_Links |
*COM*:00000001 Count |
*COM*:00000005 MotorWert |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
__eeprom_read_byte_1F2021 |
__eeprom_write_byte_1F2021 |
beeptime |
PPM_in |
Timer_Init |
UART_Init |
rc_sum_init |
ADC_Init |
i2c_init |
VersionInfo |
_printf_P |
DefaultKonstanten1 |
EE_Parameter |
DefaultKonstanten2 |
SetDelay |
SucheLuftruckOffset |
CheckDelay |
SetNeutral |
DebugIn |
LcdClear |
UpdateMotor |
MotorRegler |
SendMotorData |
PcZugriff |
UBat |
DatenUebertragung |
BearbeiteRxDaten |
/branches/chris_hallo2/makefile |
---|
0,0 → 1,391 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega644 |
F_CPU = 20000000 |
#------------------------------------------------------------------- |
HAUPT_VERSION = 0 |
NEBEN_VERSION = 60 |
VERSION_KOMPATIBEL = 4 # PC-Kompatibilität |
#------------------------------------------------------------------- |
ifeq ($(MCU), atmega32) |
# FUSE_SETTINGS= -u -U lfuse:w:0xff:m -U hfuse:w:0xcf:m |
HEX_NAME = MEGA32 |
endif |
ifeq ($(MCU), atmega644) |
FUSE_SETTINGS = -u -U lfuse:w:0xff:m -U hfuse:w:0xdf:m |
#FUSE_SETTINGS = -U lfuse:w:0xff:m -U hfuse:w:0xdf:m |
# -u bei neuen Controllern wieder einspielen |
HEX_NAME = MEGA644 |
endif |
ifeq ($(F_CPU), 16000000) |
QUARZ = 16MHZ |
endif |
ifeq ($(F_CPU), 20000000) |
QUARZ = 20MHZ |
endif |
# Output format. (can be srec, ihex, binary) |
FORMAT = ihex |
# Target file name (without extension). |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION) |
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
OPT = s |
########################################################################################################## |
# List C source files here. (C dependencies are automatically generated.) |
SRC = main.c uart.c printf_P.c timer0.c analog.c menu.c |
SRC += twimaster.c rc.c fc.c GPS.c |
########################################################################################################## |
# List Assembler source files here. |
# Make them always end in a capital .S. Files ending in a lowercase .s |
# will not be considered source files but generated files (assembler |
# output from the compiler), and will be deleted upon "make clean"! |
# Even though the DOS/Win* filesystem matches both .s and .S the same, |
# it will preserve the spelling of the filenames, and gcc itself does |
# care about how the name is spelled on its command-line. |
ASRC = |
# List any extra directories to look for include files here. |
# Each directory must be seperated by a space. |
EXTRAINCDIRS = |
# Optional compiler flags. |
# -g: generate debugging information (for GDB, or for COFF conversion) |
# -O*: optimization level |
# -f...: tuning, see gcc manual and avr-libc documentation |
# -Wall...: warning level |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create assembler listing |
CFLAGS = -O$(OPT) \ |
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \ |
-Wall -Wstrict-prototypes \ |
-Wa,-adhlns=$(<:.c=.lst) \ |
$(patsubst %,-I%,$(EXTRAINCDIRS)) |
# Set a "language standard" compiler flag. |
# Unremark just one line below to set the language standard to use. |
# gnu99 = C99 + GNU extensions. See GCC manual for more information. |
#CFLAGS += -std=c89 |
#CFLAGS += -std=gnu89 |
#CFLAGS += -std=c99 |
CFLAGS += -std=gnu99 |
CFLAGS += -DVERSION_HAUPTVERSION=$(HAUPT_VERSION) -DVERSION_NEBENVERSION=$(NEBEN_VERSION) -DVERSION_KOMPATIBEL=$(VERSION_KOMPATIBEL) |
# Optional assembler flags. |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create listing |
# -gstabs: have the assembler create line number information; note that |
# for use in COFF files, additional information about filenames |
# and function names needs to be present in the assembler source |
# files -- see avr-libc docs [FIXME: not yet described there] |
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs |
# Optional linker flags. |
# -Wl,...: tell GCC to pass this to linker. |
# -Map: create map file |
# --cref: add cross reference to map file |
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref |
# Additional libraries |
# Minimalistic printf version |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min |
# Floating point printf version (requires -lm below) |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt |
# -lm = math library |
LDFLAGS += -lm |
##LDFLAGS += -T./linkerfile/avr5.x |
# Programming support using avrdude. Settings and variables. |
# Programming hardware: alf avr910 avrisp bascom bsd |
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 |
# |
# Type: avrdude -c ? |
# to get a full listing. |
# |
#AVRDUDE_PROGRAMMER = stk200 |
AVRDUDE_PROGRAMMER = dt006 |
#AVRDUDE_PROGRAMMER = ponyser |
#falls Ponyser ausgewählt wird, muss sich unsere avrdude-Configdatei im Bin-Verzeichnis des Compilers befinden |
#AVRDUDE_PORT = com1 # programmer connected to serial device |
AVRDUDE_PORT = lpt1 # programmer connected to parallel port |
#AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex |
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex $(FUSE_SETTINGS) |
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep |
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) |
# Uncomment the following if you want avrdude's erase cycle counter. |
# Note that this counter needs to be initialized first using -Yn, |
# see avrdude manual. |
#AVRDUDE_ERASE += -y |
# Uncomment the following if you do /not/ wish a verification to be |
# performed after programming the device. |
AVRDUDE_FLAGS += -V |
# Increase verbosity level. Please use this when submitting bug |
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> |
# to submit bug reports. |
#AVRDUDE_FLAGS += -v -v |
# --------------------------------------------------------------------------- |
# Define directories, if needed. |
DIRAVR = c:/winavr |
DIRAVRBIN = $(DIRAVR)/bin |
DIRAVRUTILS = $(DIRAVR)/utils/bin |
DIRINC = . |
DIRLIB = $(DIRAVR)/avr/lib |
# Define programs and commands. |
SHELL = sh |
CC = avr-gcc |
OBJCOPY = avr-objcopy |
OBJDUMP = avr-objdump |
SIZE = avr-size |
# Programming support using avrdude. |
AVRDUDE = avrdude |
REMOVE = rm -f |
COPY = cp |
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
ELFSIZE = $(SIZE) -A $(TARGET).elf |
# Define Messages |
# English |
MSG_ERRORS_NONE = Errors: none |
MSG_BEGIN = -------- begin -------- |
MSG_END = -------- end -------- |
MSG_SIZE_BEFORE = Size before: |
MSG_SIZE_AFTER = Size after: |
MSG_COFF = Converting to AVR COFF: |
MSG_EXTENDED_COFF = Converting to AVR Extended COFF: |
MSG_FLASH = Creating load file for Flash: |
MSG_EEPROM = Creating load file for EEPROM: |
MSG_EXTENDED_LISTING = Creating Extended Listing: |
MSG_SYMBOL_TABLE = Creating Symbol Table: |
MSG_LINKING = Linking: |
MSG_COMPILING = Compiling: |
MSG_ASSEMBLING = Assembling: |
MSG_CLEANING = Cleaning project: |
# Define all object files. |
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) |
# Define all listing files. |
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) |
# Combine all necessary flags and optional flags. |
# Add target processor to flags. |
#ALL_CFLAGS = -mmcu=$(MCU) -DF_CPU=$(F_CPU) -I. $(CFLAGS) |
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) |
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) |
# Default target. |
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
$(TARGET).lss $(TARGET).sym sizeafter finished end |
# Eye candy. |
# AVR Studio 3.x does not check make's exit code but relies on |
# the following magic strings to be generated by the compile job. |
begin: |
@echo |
@echo $(MSG_BEGIN) |
finished: |
@echo $(MSG_ERRORS_NONE) |
end: |
@echo $(MSG_END) |
@echo |
# Display size of file. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi |
# Display compiler version information. |
gccversion : |
@$(CC) --version |
# Convert ELF to COFF for use in debugging / simulating in |
# AVR Studio or VMLAB. |
COFFCONVERT=$(OBJCOPY) --debugging \ |
--change-section-address .data-0x800000 \ |
--change-section-address .bss-0x800000 \ |
--change-section-address .noinit-0x800000 \ |
--change-section-address .eeprom-0x810000 |
coff: $(TARGET).elf |
@echo |
@echo $(MSG_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof |
extcoff: $(TARGET).elf |
@echo |
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof |
# Program the device. |
program: $(TARGET).hex $(TARGET).eep |
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
# Create final output files (.hex, .eep) from ELF output file. |
%.hex: %.elf |
@echo |
@echo $(MSG_FLASH) $@ |
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ |
%.eep: %.elf |
@echo |
@echo $(MSG_EEPROM) $@ |
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ |
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@ |
# Create extended listing file from ELF output file. |
%.lss: %.elf |
@echo |
@echo $(MSG_EXTENDED_LISTING) $@ |
$(OBJDUMP) -h -S $< > $@ |
# Create a symbol table from ELF output file. |
%.sym: %.elf |
@echo |
@echo $(MSG_SYMBOL_TABLE) $@ |
avr-nm -n $< > $@ |
# Link: create ELF output file from object files. |
.SECONDARY : $(TARGET).elf |
.PRECIOUS : $(OBJ) |
%.elf: $(OBJ) |
@echo |
@echo $(MSG_LINKING) $@ |
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) |
# Compile: create object files from C source files. |
%.o : %.c |
@echo |
@echo $(MSG_COMPILING) $< |
$(CC) -c $(ALL_CFLAGS) $< -o $@ |
# Compile: create assembler files from C source files. |
%.s : %.c |
$(CC) -S $(ALL_CFLAGS) $< -o $@ |
# Assemble: create object files from assembler source files. |
%.o : %.S |
@echo |
@echo $(MSG_ASSEMBLING) $< |
$(CC) -c $(ALL_ASFLAGS) $< -o $@ |
# Target: clean project. |
clean: begin clean_list finished end |
clean_list : |
@echo |
@echo $(MSG_CLEANING) |
# $(REMOVE) $(TARGET).hex |
$(REMOVE) $(TARGET).eep |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).cof |
$(REMOVE) $(TARGET).elf |
$(REMOVE) $(TARGET).map |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).a90 |
$(REMOVE) $(TARGET).sym |
$(REMOVE) $(TARGET).lnk |
$(REMOVE) $(TARGET).lss |
$(REMOVE) $(OBJ) |
$(REMOVE) $(LST) |
$(REMOVE) $(SRC:.c=.s) |
$(REMOVE) $(SRC:.c=.d) |
# Automatically generate C source code dependencies. |
# (Code originally taken from the GNU make user manual and modified |
# (See README.txt Credits).) |
# |
# Note that this will work with sh (bash) and sed that is shipped with WinAVR |
# (see the SHELL variable defined above). |
# This may not work with other shells or other seds. |
# |
%.d: %.c |
set -e; $(CC) -MM $(ALL_CFLAGS) $< \ |
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ |
[ -s $@ ] || rm -f $@ |
# Remove the '-' if you want to see the dependency files generated. |
-include $(SRC:.c=.d) |
# Listing of phony targets. |
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \ |
clean clean_list program |
/branches/chris_hallo2/menu.c |
---|
0,0 → 1,118 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned int TestInt = 0; |
#define ARRAYGROESSE 10 |
unsigned char Array[ARRAYGROESSE] = {1,2,3,4,5,6,7,8,9,10}; |
char DisplayBuff[80] = "Hallo Welt"; |
unsigned char DispPtr = 0; |
unsigned char RemoteTasten = 0; |
#define KEY1 0x01 |
#define KEY2 0x02 |
#define KEY3 0x04 |
#define KEY4 0x08 |
#define KEY5 0x10 |
void LcdClear(void) |
{ |
unsigned char i; |
for(i=0;i<80;i++) DisplayBuff[i] = ' '; |
} |
void Menu(void) |
{ |
static unsigned char MaxMenue = 10,MenuePunkt=0; |
if(RemoteTasten & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue; LcdClear(); } |
if(RemoteTasten & KEY2) { MenuePunkt++; LcdClear(); } |
if((RemoteTasten & KEY1) && (RemoteTasten & KEY2)) MenuePunkt = 0; |
LCD_printfxy(17,0,"[%i]",MenuePunkt); |
switch(MenuePunkt) |
{ |
case 0: |
LCD_printfxy(0,0,"++ MikroKopter ++"); |
LCD_printfxy(0,1,"V%d.%d",VERSION_HAUPTVERSION, VERSION_NEBENVERSION); |
LCD_printfxy(0,2,"Setting: %d ",GetActiveParamSetNumber()); |
LCD_printfxy(0,3,"(c) Holger Buss"); |
// if(RemoteTasten & KEY3) TestInt--; |
// if(RemoteTasten & KEY4) TestInt++; |
break; |
case 1: |
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
LCD_printfxy(0,0,"Hoehe: %5i",HoehenWert); |
LCD_printfxy(0,1,"SollHoehe: %5i",SollHoehe); |
LCD_printfxy(0,2,"Luftdruck: %5i",MessLuftdruck); |
LCD_printfxy(0,3,"Off : %5i",DruckOffsetSetting); |
} |
else |
{ |
LCD_printfxy(0,1,"Keine "); |
LCD_printfxy(0,2,"Höhenregelung"); |
} |
break; |
case 2: |
LCD_printfxy(0,0,"akt. Lage"); |
LCD_printfxy(0,1,"Nick: %5i",IntegralNick/1024); |
LCD_printfxy(0,2,"Roll: %5i",IntegralRoll/1024); |
LCD_printfxy(0,3,"Kompass: %5i",KompassValue); |
break; |
case 3: |
LCD_printfxy(0,0,"K1:%4i K2:%4i ",PPM_in[1],PPM_in[2]); |
LCD_printfxy(0,1,"K3:%4i K4:%4i ",PPM_in[3],PPM_in[4]); |
LCD_printfxy(0,2,"K5:%4i K6:%4i ",PPM_in[5],PPM_in[6]); |
LCD_printfxy(0,3,"K7:%4i Kanäle ",PPM_in[7]); |
break; |
case 4: |
LCD_printfxy(0,0,"Ni:%4i Ro:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_NICK]],PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]); |
LCD_printfxy(0,1,"Gs:%4i Gi:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_GAS]],PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]); |
LCD_printfxy(0,2,"P1:%4i P2:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]],PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]]); |
LCD_printfxy(0,3,"P3:%4i Kanäle ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]]); |
break; |
case 5: |
LCD_printfxy(0,0,"Gyro - Sensor"); |
LCD_printfxy(0,1,"Nick %4i (%3i)",AccumulateNick / MessanzahlNick, AdNeutralNick); |
LCD_printfxy(0,2,"Roll %4i (%3i)",AccumulateRoll / MessanzahlRoll, AdNeutralRoll); |
LCD_printfxy(0,3,"Gier %4i (%3i)",AccumulateGier / MessanzahlGier, AdNeutralGier); |
break; |
case 6: |
LCD_printfxy(0,0,"ACC - Sensor"); |
LCD_printfxy(0,1,"Nick %4i (%3i)",accumulate_AccNick / messanzahl_AccNick,NeutralAccX); |
LCD_printfxy(0,2,"Roll %4i (%3i)",accumulate_AccRoll / messanzahl_AccRoll,NeutralAccY); |
LCD_printfxy(0,3,"Hoch %4i (%3i)",Aktuell_az/*accumulate_AccHoch / messanzahl_AccHoch*/,(int)NeutralAccZ); |
break; |
case 7: |
LCD_printfxy(0,1,"Spannung: %5i",UBat); |
LCD_printfxy(0,2,"Empf.Pegel:%5i",SenderOkay); |
break; |
case 8: |
LCD_printfxy(0,0,"Kompass "); |
LCD_printfxy(0,1,"Richtung: %5i",KompassRichtung); |
LCD_printfxy(0,2,"Messwert: %5i",KompassValue); |
LCD_printfxy(0,3,"Start: %5i",KompassStartwert); |
break; |
case 9: |
LCD_printfxy(0,0,"Poti1: %3i",Poti1); |
LCD_printfxy(0,1,"Poti2: %3i",Poti2); |
LCD_printfxy(0,2,"Poti3: %3i",Poti3); |
LCD_printfxy(0,3,"Poti4: %3i",Poti4); |
break; |
case 10: |
LCD_printfxy(0,0,"Servo " ); |
LCD_printfxy(0,1,"Setpoint %3i",Parameter_ServoNickControl); |
LCD_printfxy(0,2,"Stellung: %3i",ServoValue); |
LCD_printfxy(0,3,"Range:%3i-%3i",EE_Parameter.ServoNickMin,EE_Parameter.ServoNickMax); |
break; |
default: MaxMenue = MenuePunkt - 1; |
MenuePunkt = 0; |
break; |
} |
RemoteTasten = 0; |
} |
/branches/chris_hallo2/menu.d |
---|
0,0 → 1,2 |
menu.o menu.d : menu.c main.h old_macros.h _settings.h printf_P.h timer0.h uart.h \ |
analog.h twimaster.h menu.h rc.h fc.h gps.h |
/branches/chris_hallo2/menu.h |
---|
0,0 → 1,5 |
extern void Menu(void); |
extern char DisplayBuff[80]; |
extern unsigned char DispPtr; |
unsigned char RemoteTasten; |
/branches/chris_hallo2/menu.lst |
---|
0,0 → 1,1257 |
1 .file "menu.c" |
2 .arch atmega644 |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .text |
11 .global LcdClear |
13 LcdClear: |
14 /* prologue: frame size=0 */ |
15 /* prologue end (size=0) */ |
16 0000 E0E0 ldi r30,lo8(DisplayBuff) |
17 0002 F0E0 ldi r31,hi8(DisplayBuff) |
18 0004 80E2 ldi r24,lo8(32) |
19 .L2: |
20 0006 8193 st Z+,r24 |
21 0008 90E0 ldi r25,hi8(DisplayBuff+80) |
22 000a E030 cpi r30,lo8(DisplayBuff+80) |
23 000c F907 cpc r31,r25 |
24 000e 01F4 brne .L2 |
25 /* epilogue: frame size=0 */ |
26 0010 0895 ret |
27 /* epilogue end (size=1) */ |
28 /* function LcdClear size 9 (8) */ |
30 .global Menu |
32 Menu: |
33 /* prologue: frame size=0 */ |
34 0012 FF92 push r15 |
35 0014 0F93 push r16 |
36 0016 1F93 push r17 |
37 /* prologue end (size=3) */ |
38 0018 8091 0000 lds r24,RemoteTasten |
39 001c 282F mov r18,r24 |
40 001e 3327 clr r19 |
41 0020 C901 movw r24,r18 |
42 0022 8170 andi r24,lo8(1) |
43 0024 9070 andi r25,hi8(1) |
44 0026 682F mov r22,r24 |
45 0028 8823 tst r24 |
46 002a 01F0 breq .L8 |
47 002c 8091 0000 lds r24,MenuePunkt.1971 |
48 0030 8823 tst r24 |
49 0032 01F0 breq .L10 |
50 0034 8150 subi r24,lo8(-(-1)) |
51 0036 00C0 rjmp .L41 |
52 .L10: |
53 0038 8091 0000 lds r24,MaxMenue.1970 |
54 .L41: |
55 003c 8093 0000 sts MenuePunkt.1971,r24 |
56 0040 E0E0 ldi r30,lo8(DisplayBuff) |
57 0042 F0E0 ldi r31,hi8(DisplayBuff) |
58 0044 80E2 ldi r24,lo8(32) |
59 .L13: |
60 0046 8193 st Z+,r24 |
61 0048 90E0 ldi r25,hi8(DisplayBuff+80) |
62 004a E030 cpi r30,lo8(DisplayBuff+80) |
63 004c F907 cpc r31,r25 |
64 004e 01F4 brne .L13 |
65 .L8: |
66 0050 A901 movw r20,r18 |
67 0052 4270 andi r20,lo8(2) |
68 0054 5070 andi r21,hi8(2) |
69 0056 21FF sbrs r18,1 |
70 0058 00C0 rjmp .L14 |
71 005a 8091 0000 lds r24,MenuePunkt.1971 |
72 005e 8F5F subi r24,lo8(-(1)) |
73 0060 8093 0000 sts MenuePunkt.1971,r24 |
74 0064 E0E0 ldi r30,lo8(DisplayBuff) |
75 0066 F0E0 ldi r31,hi8(DisplayBuff) |
76 0068 80E2 ldi r24,lo8(32) |
77 .L16: |
78 006a 8193 st Z+,r24 |
79 006c 90E0 ldi r25,hi8(DisplayBuff+80) |
80 006e E030 cpi r30,lo8(DisplayBuff+80) |
81 0070 F907 cpc r31,r25 |
82 0072 01F4 brne .L16 |
83 .L14: |
84 0074 6623 tst r22 |
85 0076 01F0 breq .L17 |
86 0078 452B or r20,r21 |
87 007a 01F0 breq .L17 |
88 007c 1092 0000 sts MenuePunkt.1971,__zero_reg__ |
89 .L17: |
90 0080 81E1 ldi r24,lo8(17) |
91 0082 8093 0000 sts DispPtr,r24 |
92 0086 8091 0000 lds r24,MenuePunkt.1971 |
93 008a 9927 clr r25 |
94 008c 9F93 push r25 |
95 008e 8F93 push r24 |
96 0090 80E0 ldi r24,lo8(__c.1972) |
97 0092 90E0 ldi r25,hi8(__c.1972) |
98 0094 9F93 push r25 |
99 0096 8F93 push r24 |
100 0098 E1E0 ldi r30,lo8(1) |
101 009a FE2E mov r15,r30 |
102 009c FF92 push r15 |
103 009e 0E94 0000 call _printf_P |
104 00a2 0091 0000 lds r16,MenuePunkt.1971 |
105 00a6 0F90 pop __tmp_reg__ |
106 00a8 0F90 pop __tmp_reg__ |
107 00aa 0F90 pop __tmp_reg__ |
108 00ac 0F90 pop __tmp_reg__ |
109 00ae 0F90 pop __tmp_reg__ |
110 00b0 0530 cpi r16,lo8(5) |
111 00b2 01F4 brne .+2 |
112 00b4 00C0 rjmp .L26 |
113 00b6 0630 cpi r16,lo8(6) |
114 00b8 00F4 brsh .L32 |
115 00ba 0230 cpi r16,lo8(2) |
116 00bc 01F4 brne .+2 |
117 00be 00C0 rjmp .L23 |
118 00c0 0330 cpi r16,lo8(3) |
119 00c2 00F4 brsh .L33 |
120 00c4 0023 tst r16 |
121 00c6 01F0 breq .L21 |
122 00c8 0130 cpi r16,lo8(1) |
123 00ca 01F0 breq .+2 |
124 00cc 00C0 rjmp .L20 |
125 00ce 00C0 rjmp .L22 |
126 .L33: |
127 00d0 0330 cpi r16,lo8(3) |
128 00d2 01F4 brne .+2 |
129 00d4 00C0 rjmp .L24 |
130 00d6 0430 cpi r16,lo8(4) |
131 00d8 01F0 breq .+2 |
132 00da 00C0 rjmp .L20 |
133 00dc 00C0 rjmp .L25 |
134 .L32: |
135 00de 0830 cpi r16,lo8(8) |
136 00e0 01F4 brne .+2 |
137 00e2 00C0 rjmp .L29 |
138 00e4 0930 cpi r16,lo8(9) |
139 00e6 00F4 brsh .L34 |
140 00e8 0630 cpi r16,lo8(6) |
141 00ea 01F4 brne .+2 |
142 00ec 00C0 rjmp .L27 |
143 00ee 0730 cpi r16,lo8(7) |
144 00f0 01F0 breq .+2 |
145 00f2 00C0 rjmp .L20 |
146 00f4 00C0 rjmp .L28 |
147 .L34: |
148 00f6 0930 cpi r16,lo8(9) |
149 00f8 01F4 brne .+2 |
150 00fa 00C0 rjmp .L30 |
151 00fc 0A30 cpi r16,lo8(10) |
152 00fe 01F0 breq .+2 |
153 0100 00C0 rjmp .L20 |
154 0102 00C0 rjmp .L31 |
155 .L21: |
156 0104 1092 0000 sts DispPtr,__zero_reg__ |
157 0108 80E0 ldi r24,lo8(__c.1975) |
158 010a 90E0 ldi r25,hi8(__c.1975) |
159 010c 9F93 push r25 |
160 010e 8F93 push r24 |
161 0110 FF92 push r15 |
162 0112 0E94 0000 call _printf_P |
163 0116 84E1 ldi r24,lo8(20) |
164 0118 8093 0000 sts DispPtr,r24 |
165 011c 8CE3 ldi r24,lo8(60) |
166 011e 90E0 ldi r25,hi8(60) |
167 0120 9F93 push r25 |
168 0122 8F93 push r24 |
169 0124 1F92 push __zero_reg__ |
170 0126 1F92 push __zero_reg__ |
171 0128 80E0 ldi r24,lo8(__c.1977) |
172 012a 90E0 ldi r25,hi8(__c.1977) |
173 012c 9F93 push r25 |
174 012e 8F93 push r24 |
175 0130 FF92 push r15 |
176 0132 0E94 0000 call _printf_P |
177 0136 88E2 ldi r24,lo8(40) |
178 0138 8093 0000 sts DispPtr,r24 |
179 013c 0E94 0000 call GetActiveParamSetNumber |
180 0140 9927 clr r25 |
181 0142 9F93 push r25 |
182 0144 8F93 push r24 |
183 0146 80E0 ldi r24,lo8(__c.1979) |
184 0148 90E0 ldi r25,hi8(__c.1979) |
185 014a 9F93 push r25 |
186 014c 8F93 push r24 |
187 014e FF92 push r15 |
188 0150 0E94 0000 call _printf_P |
189 0154 8CE3 ldi r24,lo8(60) |
190 0156 8093 0000 sts DispPtr,r24 |
191 015a 80E0 ldi r24,lo8(__c.1981) |
192 015c 90E0 ldi r25,hi8(__c.1981) |
193 015e 9F93 push r25 |
194 0160 8F93 push r24 |
195 0162 FF92 push r15 |
196 0164 0E94 0000 call _printf_P |
197 0168 00C0 rjmp .L43 |
198 .L22: |
199 016a 8091 0000 lds r24,EE_Parameter+8 |
200 016e 80FF sbrs r24,0 |
201 0170 00C0 rjmp .L36 |
202 0172 1092 0000 sts DispPtr,__zero_reg__ |
203 0176 8091 0000 lds r24,HoehenWert |
204 017a 9091 0000 lds r25,(HoehenWert)+1 |
205 017e 9F93 push r25 |
206 0180 8F93 push r24 |
207 0182 80E0 ldi r24,lo8(__c.1985) |
208 0184 90E0 ldi r25,hi8(__c.1985) |
209 0186 9F93 push r25 |
210 0188 8F93 push r24 |
211 018a 0F93 push r16 |
212 018c 0E94 0000 call _printf_P |
213 0190 84E1 ldi r24,lo8(20) |
214 0192 8093 0000 sts DispPtr,r24 |
215 0196 8091 0000 lds r24,SollHoehe |
216 019a 9091 0000 lds r25,(SollHoehe)+1 |
217 019e 9F93 push r25 |
218 01a0 8F93 push r24 |
219 01a2 80E0 ldi r24,lo8(__c.1987) |
220 01a4 90E0 ldi r25,hi8(__c.1987) |
221 01a6 9F93 push r25 |
222 01a8 8F93 push r24 |
223 01aa 0F93 push r16 |
224 01ac 0E94 0000 call _printf_P |
225 01b0 88E2 ldi r24,lo8(40) |
226 01b2 8093 0000 sts DispPtr,r24 |
227 01b6 8091 0000 lds r24,MessLuftdruck |
228 01ba 9091 0000 lds r25,(MessLuftdruck)+1 |
229 01be 9F93 push r25 |
230 01c0 8F93 push r24 |
231 01c2 80E0 ldi r24,lo8(__c.1989) |
232 01c4 90E0 ldi r25,hi8(__c.1989) |
233 01c6 9F93 push r25 |
234 01c8 8F93 push r24 |
235 01ca 0F93 push r16 |
236 01cc 0E94 0000 call _printf_P |
237 01d0 8CE3 ldi r24,lo8(60) |
238 01d2 8093 0000 sts DispPtr,r24 |
239 01d6 8091 0000 lds r24,DruckOffsetSetting |
240 01da 9927 clr r25 |
241 01dc 9F93 push r25 |
242 01de 8F93 push r24 |
243 01e0 80E0 ldi r24,lo8(__c.1991) |
244 01e2 90E0 ldi r25,hi8(__c.1991) |
245 01e4 9F93 push r25 |
246 01e6 8F93 push r24 |
247 01e8 0F93 push r16 |
248 .L47: |
249 01ea 0E94 0000 call _printf_P |
250 .L44: |
251 01ee 8DB7 in r24,__SP_L__ |
252 01f0 9EB7 in r25,__SP_H__ |
253 01f2 4496 adiw r24,20 |
254 .L42: |
255 01f4 0FB6 in __tmp_reg__,__SREG__ |
256 01f6 F894 cli |
257 01f8 9EBF out __SP_H__,r25 |
258 01fa 0FBE out __SREG__,__tmp_reg__ |
259 01fc 8DBF out __SP_L__,r24 |
260 01fe 00C0 rjmp .L35 |
261 .L36: |
262 0200 84E1 ldi r24,lo8(20) |
263 0202 8093 0000 sts DispPtr,r24 |
264 0206 80E0 ldi r24,lo8(__c.1993) |
265 0208 90E0 ldi r25,hi8(__c.1993) |
266 020a 9F93 push r25 |
267 020c 8F93 push r24 |
268 020e 0F93 push r16 |
269 0210 0E94 0000 call _printf_P |
270 0214 88E2 ldi r24,lo8(40) |
271 0216 8093 0000 sts DispPtr,r24 |
272 021a 80E0 ldi r24,lo8(__c.1995) |
273 021c 90E0 ldi r25,hi8(__c.1995) |
274 021e 9F93 push r25 |
275 0220 8F93 push r24 |
276 0222 0F93 push r16 |
277 0224 0E94 0000 call _printf_P |
278 0228 8DB7 in r24,__SP_L__ |
279 022a 9EB7 in r25,__SP_H__ |
280 022c 0696 adiw r24,6 |
281 022e 00C0 rjmp .L42 |
282 .L23: |
283 0230 1092 0000 sts DispPtr,__zero_reg__ |
284 0234 80E0 ldi r24,lo8(__c.1998) |
285 0236 90E0 ldi r25,hi8(__c.1998) |
286 0238 9F93 push r25 |
287 023a 8F93 push r24 |
288 023c FF92 push r15 |
289 023e 0E94 0000 call _printf_P |
290 0242 84E1 ldi r24,lo8(20) |
291 0244 8093 0000 sts DispPtr,r24 |
292 0248 6091 0000 lds r22,IntegralNick |
293 024c 7091 0000 lds r23,(IntegralNick)+1 |
294 0250 8091 0000 lds r24,(IntegralNick)+2 |
295 0254 9091 0000 lds r25,(IntegralNick)+3 |
296 0258 20E0 ldi r18,lo8(1024) |
297 025a 34E0 ldi r19,hi8(1024) |
298 025c 40E0 ldi r20,hlo8(1024) |
299 025e 50E0 ldi r21,hhi8(1024) |
300 0260 0E94 0000 call __divmodsi4 |
301 0264 5F93 push r21 |
302 0266 4F93 push r20 |
303 0268 3F93 push r19 |
304 026a 2F93 push r18 |
305 026c 80E0 ldi r24,lo8(__c.2000) |
306 026e 90E0 ldi r25,hi8(__c.2000) |
307 0270 9F93 push r25 |
308 0272 8F93 push r24 |
309 0274 FF92 push r15 |
310 0276 0E94 0000 call _printf_P |
311 027a 88E2 ldi r24,lo8(40) |
312 027c 8093 0000 sts DispPtr,r24 |
313 0280 6091 0000 lds r22,IntegralRoll |
314 0284 7091 0000 lds r23,(IntegralRoll)+1 |
315 0288 8091 0000 lds r24,(IntegralRoll)+2 |
316 028c 9091 0000 lds r25,(IntegralRoll)+3 |
317 0290 20E0 ldi r18,lo8(1024) |
318 0292 34E0 ldi r19,hi8(1024) |
319 0294 40E0 ldi r20,hlo8(1024) |
320 0296 50E0 ldi r21,hhi8(1024) |
321 0298 0E94 0000 call __divmodsi4 |
322 029c 5F93 push r21 |
323 029e 4F93 push r20 |
324 02a0 3F93 push r19 |
325 02a2 2F93 push r18 |
326 02a4 80E0 ldi r24,lo8(__c.2002) |
327 02a6 90E0 ldi r25,hi8(__c.2002) |
328 02a8 9F93 push r25 |
329 02aa 8F93 push r24 |
330 02ac FF92 push r15 |
331 02ae 0E94 0000 call _printf_P |
332 02b2 8CE3 ldi r24,lo8(60) |
333 02b4 8093 0000 sts DispPtr,r24 |
334 02b8 8091 0000 lds r24,KompassValue |
335 02bc 9091 0000 lds r25,(KompassValue)+1 |
336 02c0 9F93 push r25 |
337 02c2 8F93 push r24 |
338 02c4 80E0 ldi r24,lo8(__c.2004) |
339 02c6 90E0 ldi r25,hi8(__c.2004) |
340 02c8 9F93 push r25 |
341 02ca 8F93 push r24 |
342 02cc FF92 push r15 |
343 02ce 0E94 0000 call _printf_P |
344 02d2 8DB7 in r24,__SP_L__ |
345 02d4 9EB7 in r25,__SP_H__ |
346 02d6 4696 adiw r24,22 |
347 02d8 00C0 rjmp .L42 |
348 .L24: |
349 02da 1092 0000 sts DispPtr,__zero_reg__ |
350 02de 8091 0000 lds r24,PPM_in+4 |
351 02e2 9091 0000 lds r25,(PPM_in+4)+1 |
352 02e6 2091 0000 lds r18,PPM_in+2 |
353 02ea 3091 0000 lds r19,(PPM_in+2)+1 |
354 02ee 9F93 push r25 |
355 02f0 8F93 push r24 |
356 02f2 3F93 push r19 |
357 02f4 2F93 push r18 |
358 02f6 80E0 ldi r24,lo8(__c.2007) |
359 02f8 90E0 ldi r25,hi8(__c.2007) |
360 02fa 9F93 push r25 |
361 02fc 8F93 push r24 |
362 02fe FF92 push r15 |
363 0300 0E94 0000 call _printf_P |
364 0304 84E1 ldi r24,lo8(20) |
365 0306 8093 0000 sts DispPtr,r24 |
366 030a 8091 0000 lds r24,PPM_in+8 |
367 030e 9091 0000 lds r25,(PPM_in+8)+1 |
368 0312 2091 0000 lds r18,PPM_in+6 |
369 0316 3091 0000 lds r19,(PPM_in+6)+1 |
370 031a 9F93 push r25 |
371 031c 8F93 push r24 |
372 031e 3F93 push r19 |
373 0320 2F93 push r18 |
374 0322 80E0 ldi r24,lo8(__c.2009) |
375 0324 90E0 ldi r25,hi8(__c.2009) |
376 0326 9F93 push r25 |
377 0328 8F93 push r24 |
378 032a FF92 push r15 |
379 032c 0E94 0000 call _printf_P |
380 0330 88E2 ldi r24,lo8(40) |
381 0332 8093 0000 sts DispPtr,r24 |
382 0336 8091 0000 lds r24,PPM_in+12 |
383 033a 9091 0000 lds r25,(PPM_in+12)+1 |
384 033e 2091 0000 lds r18,PPM_in+10 |
385 0342 3091 0000 lds r19,(PPM_in+10)+1 |
386 0346 9F93 push r25 |
387 0348 8F93 push r24 |
388 034a 3F93 push r19 |
389 034c 2F93 push r18 |
390 034e 80E0 ldi r24,lo8(__c.2011) |
391 0350 90E0 ldi r25,hi8(__c.2011) |
392 0352 9F93 push r25 |
393 0354 8F93 push r24 |
394 0356 FF92 push r15 |
395 0358 0E94 0000 call _printf_P |
396 035c 8CE3 ldi r24,lo8(60) |
397 035e 8093 0000 sts DispPtr,r24 |
398 0362 8091 0000 lds r24,PPM_in+14 |
399 0366 9091 0000 lds r25,(PPM_in+14)+1 |
400 036a 9F93 push r25 |
401 036c 8F93 push r24 |
402 036e 80E0 ldi r24,lo8(__c.2013) |
403 0370 90E0 ldi r25,hi8(__c.2013) |
404 0372 00C0 rjmp .L45 |
405 .L25: |
406 0374 1092 0000 sts DispPtr,__zero_reg__ |
407 0378 E091 0000 lds r30,EE_Parameter+1 |
408 037c FF27 clr r31 |
409 037e EE0F lsl r30 |
410 0380 FF1F rol r31 |
411 0382 E050 subi r30,lo8(-(PPM_in)) |
412 0384 F040 sbci r31,hi8(-(PPM_in)) |
413 0386 2081 ld r18,Z |
414 0388 3181 ldd r19,Z+1 |
415 038a E091 0000 lds r30,EE_Parameter |
416 038e FF27 clr r31 |
417 0390 EE0F lsl r30 |
418 0392 FF1F rol r31 |
419 0394 E050 subi r30,lo8(-(PPM_in)) |
420 0396 F040 sbci r31,hi8(-(PPM_in)) |
421 0398 8081 ld r24,Z |
422 039a 9181 ldd r25,Z+1 |
423 039c 3F93 push r19 |
424 039e 2F93 push r18 |
425 03a0 9F93 push r25 |
426 03a2 8F93 push r24 |
427 03a4 80E0 ldi r24,lo8(__c.2016) |
428 03a6 90E0 ldi r25,hi8(__c.2016) |
429 03a8 9F93 push r25 |
430 03aa 8F93 push r24 |
431 03ac FF92 push r15 |
432 03ae 0E94 0000 call _printf_P |
433 03b2 84E1 ldi r24,lo8(20) |
434 03b4 8093 0000 sts DispPtr,r24 |
435 03b8 E091 0000 lds r30,EE_Parameter+3 |
436 03bc FF27 clr r31 |
437 03be EE0F lsl r30 |
438 03c0 FF1F rol r31 |
439 03c2 E050 subi r30,lo8(-(PPM_in)) |
440 03c4 F040 sbci r31,hi8(-(PPM_in)) |
441 03c6 2081 ld r18,Z |
442 03c8 3181 ldd r19,Z+1 |
443 03ca E091 0000 lds r30,EE_Parameter+2 |
444 03ce FF27 clr r31 |
445 03d0 EE0F lsl r30 |
446 03d2 FF1F rol r31 |
447 03d4 E050 subi r30,lo8(-(PPM_in)) |
448 03d6 F040 sbci r31,hi8(-(PPM_in)) |
449 03d8 8081 ld r24,Z |
450 03da 9181 ldd r25,Z+1 |
451 03dc 3F93 push r19 |
452 03de 2F93 push r18 |
453 03e0 9F93 push r25 |
454 03e2 8F93 push r24 |
455 03e4 80E0 ldi r24,lo8(__c.2018) |
456 03e6 90E0 ldi r25,hi8(__c.2018) |
457 03e8 9F93 push r25 |
458 03ea 8F93 push r24 |
459 03ec FF92 push r15 |
460 03ee 0E94 0000 call _printf_P |
461 03f2 88E2 ldi r24,lo8(40) |
462 03f4 8093 0000 sts DispPtr,r24 |
463 03f8 E091 0000 lds r30,EE_Parameter+5 |
464 03fc FF27 clr r31 |
465 03fe EE0F lsl r30 |
466 0400 FF1F rol r31 |
467 0402 E050 subi r30,lo8(-(PPM_in)) |
468 0404 F040 sbci r31,hi8(-(PPM_in)) |
469 0406 2081 ld r18,Z |
470 0408 3181 ldd r19,Z+1 |
471 040a E091 0000 lds r30,EE_Parameter+4 |
472 040e FF27 clr r31 |
473 0410 EE0F lsl r30 |
474 0412 FF1F rol r31 |
475 0414 E050 subi r30,lo8(-(PPM_in)) |
476 0416 F040 sbci r31,hi8(-(PPM_in)) |
477 0418 8081 ld r24,Z |
478 041a 9181 ldd r25,Z+1 |
479 041c 3F93 push r19 |
480 041e 2F93 push r18 |
481 0420 9F93 push r25 |
482 0422 8F93 push r24 |
483 0424 80E0 ldi r24,lo8(__c.2020) |
484 0426 90E0 ldi r25,hi8(__c.2020) |
485 0428 9F93 push r25 |
486 042a 8F93 push r24 |
487 042c FF92 push r15 |
488 042e 0E94 0000 call _printf_P |
489 0432 8CE3 ldi r24,lo8(60) |
490 0434 8093 0000 sts DispPtr,r24 |
491 0438 E091 0000 lds r30,EE_Parameter+6 |
492 043c FF27 clr r31 |
493 043e EE0F lsl r30 |
494 0440 FF1F rol r31 |
495 0442 E050 subi r30,lo8(-(PPM_in)) |
496 0444 F040 sbci r31,hi8(-(PPM_in)) |
497 0446 8081 ld r24,Z |
498 0448 9181 ldd r25,Z+1 |
499 044a 9F93 push r25 |
500 044c 8F93 push r24 |
501 044e 80E0 ldi r24,lo8(__c.2022) |
502 0450 90E0 ldi r25,hi8(__c.2022) |
503 .L45: |
504 0452 9F93 push r25 |
505 0454 8F93 push r24 |
506 0456 FF92 push r15 |
507 0458 0E94 0000 call _printf_P |
508 045c 8DB7 in r24,__SP_L__ |
509 045e 9EB7 in r25,__SP_H__ |
510 0460 4A96 adiw r24,26 |
511 0462 00C0 rjmp .L42 |
512 .L26: |
513 0464 1092 0000 sts DispPtr,__zero_reg__ |
514 0468 80E0 ldi r24,lo8(__c.2025) |
515 046a 90E0 ldi r25,hi8(__c.2025) |
516 046c 9F93 push r25 |
517 046e 8F93 push r24 |
518 0470 FF92 push r15 |
519 0472 0E94 0000 call _printf_P |
520 0476 84E1 ldi r24,lo8(20) |
521 0478 8093 0000 sts DispPtr,r24 |
522 047c 2091 0000 lds r18,AdNeutralNick |
523 0480 3091 0000 lds r19,(AdNeutralNick)+1 |
524 0484 8091 0000 lds r24,AccumulateNick |
525 0488 9091 0000 lds r25,(AccumulateNick)+1 |
526 048c 6091 0000 lds r22,MessanzahlNick |
527 0490 3F93 push r19 |
528 0492 2F93 push r18 |
529 0494 7727 clr r23 |
530 0496 0E94 0000 call __divmodhi4 |
531 049a 7F93 push r23 |
532 049c 6F93 push r22 |
533 049e 80E0 ldi r24,lo8(__c.2027) |
534 04a0 90E0 ldi r25,hi8(__c.2027) |
535 04a2 9F93 push r25 |
536 04a4 8F93 push r24 |
537 04a6 FF92 push r15 |
538 04a8 0E94 0000 call _printf_P |
539 04ac 88E2 ldi r24,lo8(40) |
540 04ae 8093 0000 sts DispPtr,r24 |
541 04b2 2091 0000 lds r18,AdNeutralRoll |
542 04b6 3091 0000 lds r19,(AdNeutralRoll)+1 |
543 04ba 8091 0000 lds r24,AccumulateRoll |
544 04be 9091 0000 lds r25,(AccumulateRoll)+1 |
545 04c2 6091 0000 lds r22,MessanzahlRoll |
546 04c6 3F93 push r19 |
547 04c8 2F93 push r18 |
548 04ca 7727 clr r23 |
549 04cc 0E94 0000 call __divmodhi4 |
550 04d0 7F93 push r23 |
551 04d2 6F93 push r22 |
552 04d4 80E0 ldi r24,lo8(__c.2029) |
553 04d6 90E0 ldi r25,hi8(__c.2029) |
554 04d8 9F93 push r25 |
555 04da 8F93 push r24 |
556 04dc FF92 push r15 |
557 04de 0E94 0000 call _printf_P |
558 04e2 8CE3 ldi r24,lo8(60) |
559 04e4 8093 0000 sts DispPtr,r24 |
560 04e8 2091 0000 lds r18,AdNeutralGier |
561 04ec 3091 0000 lds r19,(AdNeutralGier)+1 |
562 04f0 8091 0000 lds r24,AccumulateGier |
563 04f4 9091 0000 lds r25,(AccumulateGier)+1 |
564 04f8 6091 0000 lds r22,MessanzahlGier |
565 04fc 3F93 push r19 |
566 04fe 2F93 push r18 |
567 0500 7727 clr r23 |
568 0502 0E94 0000 call __divmodhi4 |
569 0506 7F93 push r23 |
570 0508 6F93 push r22 |
571 050a 80E0 ldi r24,lo8(__c.2031) |
572 050c 90E0 ldi r25,hi8(__c.2031) |
573 050e 00C0 rjmp .L46 |
574 .L27: |
575 0510 1092 0000 sts DispPtr,__zero_reg__ |
576 0514 80E0 ldi r24,lo8(__c.2034) |
577 0516 90E0 ldi r25,hi8(__c.2034) |
578 0518 9F93 push r25 |
579 051a 8F93 push r24 |
580 051c FF92 push r15 |
581 051e 0E94 0000 call _printf_P |
582 0522 84E1 ldi r24,lo8(20) |
583 0524 8093 0000 sts DispPtr,r24 |
584 0528 2091 0000 lds r18,NeutralAccX |
585 052c 3091 0000 lds r19,(NeutralAccX)+1 |
586 0530 8091 0000 lds r24,accumulate_AccNick |
587 0534 9091 0000 lds r25,(accumulate_AccNick)+1 |
588 0538 6091 0000 lds r22,messanzahl_AccNick |
589 053c 3F93 push r19 |
590 053e 2F93 push r18 |
591 0540 7727 clr r23 |
592 0542 0E94 0000 call __divmodhi4 |
593 0546 7F93 push r23 |
594 0548 6F93 push r22 |
595 054a 80E0 ldi r24,lo8(__c.2036) |
596 054c 90E0 ldi r25,hi8(__c.2036) |
597 054e 9F93 push r25 |
598 0550 8F93 push r24 |
599 0552 FF92 push r15 |
600 0554 0E94 0000 call _printf_P |
601 0558 88E2 ldi r24,lo8(40) |
602 055a 8093 0000 sts DispPtr,r24 |
603 055e 2091 0000 lds r18,NeutralAccY |
604 0562 3091 0000 lds r19,(NeutralAccY)+1 |
605 0566 8091 0000 lds r24,accumulate_AccRoll |
606 056a 9091 0000 lds r25,(accumulate_AccRoll)+1 |
607 056e 6091 0000 lds r22,messanzahl_AccRoll |
608 0572 3F93 push r19 |
609 0574 2F93 push r18 |
610 0576 7727 clr r23 |
611 0578 0E94 0000 call __divmodhi4 |
612 057c 7F93 push r23 |
613 057e 6F93 push r22 |
614 0580 80E0 ldi r24,lo8(__c.2038) |
615 0582 90E0 ldi r25,hi8(__c.2038) |
616 0584 9F93 push r25 |
617 0586 8F93 push r24 |
618 0588 FF92 push r15 |
619 058a 0E94 0000 call _printf_P |
620 058e 8CE3 ldi r24,lo8(60) |
621 0590 8093 0000 sts DispPtr,r24 |
622 0594 6091 0000 lds r22,NeutralAccZ |
623 0598 7091 0000 lds r23,(NeutralAccZ)+1 |
624 059c 8091 0000 lds r24,(NeutralAccZ)+2 |
625 05a0 9091 0000 lds r25,(NeutralAccZ)+3 |
626 05a4 0091 0000 lds r16,Aktuell_az |
627 05a8 1091 0000 lds r17,(Aktuell_az)+1 |
628 05ac 0E94 0000 call __fixsfsi |
629 05b0 7F93 push r23 |
630 05b2 6F93 push r22 |
631 05b4 1F93 push r17 |
632 05b6 0F93 push r16 |
633 05b8 80E0 ldi r24,lo8(__c.2040) |
634 05ba 90E0 ldi r25,hi8(__c.2040) |
635 .L46: |
636 05bc 9F93 push r25 |
637 05be 8F93 push r24 |
638 05c0 FF92 push r15 |
639 05c2 0E94 0000 call _printf_P |
640 05c6 8DB7 in r24,__SP_L__ |
641 05c8 9EB7 in r25,__SP_H__ |
642 05ca 4896 adiw r24,24 |
643 05cc 00C0 rjmp .L42 |
644 .L28: |
645 05ce 84E1 ldi r24,lo8(20) |
646 05d0 8093 0000 sts DispPtr,r24 |
647 05d4 8091 0000 lds r24,UBat |
648 05d8 9091 0000 lds r25,(UBat)+1 |
649 05dc 9F93 push r25 |
650 05de 8F93 push r24 |
651 05e0 80E0 ldi r24,lo8(__c.2043) |
652 05e2 90E0 ldi r25,hi8(__c.2043) |
653 05e4 9F93 push r25 |
654 05e6 8F93 push r24 |
655 05e8 FF92 push r15 |
656 05ea 0E94 0000 call _printf_P |
657 05ee 88E2 ldi r24,lo8(40) |
658 05f0 8093 0000 sts DispPtr,r24 |
659 05f4 8091 0000 lds r24,SenderOkay |
660 05f8 9927 clr r25 |
661 05fa 9F93 push r25 |
662 05fc 8F93 push r24 |
663 05fe 80E0 ldi r24,lo8(__c.2045) |
664 0600 90E0 ldi r25,hi8(__c.2045) |
665 0602 9F93 push r25 |
666 0604 8F93 push r24 |
667 0606 FF92 push r15 |
668 0608 0E94 0000 call _printf_P |
669 060c 8DB7 in r24,__SP_L__ |
670 060e 9EB7 in r25,__SP_H__ |
671 0610 0A96 adiw r24,10 |
672 0612 00C0 rjmp .L42 |
673 .L29: |
674 0614 1092 0000 sts DispPtr,__zero_reg__ |
675 0618 80E0 ldi r24,lo8(__c.2048) |
676 061a 90E0 ldi r25,hi8(__c.2048) |
677 061c 9F93 push r25 |
678 061e 8F93 push r24 |
679 0620 FF92 push r15 |
680 0622 0E94 0000 call _printf_P |
681 0626 84E1 ldi r24,lo8(20) |
682 0628 8093 0000 sts DispPtr,r24 |
683 062c 8091 0000 lds r24,KompassRichtung |
684 0630 9091 0000 lds r25,(KompassRichtung)+1 |
685 0634 9F93 push r25 |
686 0636 8F93 push r24 |
687 0638 80E0 ldi r24,lo8(__c.2050) |
688 063a 90E0 ldi r25,hi8(__c.2050) |
689 063c 9F93 push r25 |
690 063e 8F93 push r24 |
691 0640 FF92 push r15 |
692 0642 0E94 0000 call _printf_P |
693 0646 88E2 ldi r24,lo8(40) |
694 0648 8093 0000 sts DispPtr,r24 |
695 064c 8091 0000 lds r24,KompassValue |
696 0650 9091 0000 lds r25,(KompassValue)+1 |
697 0654 9F93 push r25 |
698 0656 8F93 push r24 |
699 0658 80E0 ldi r24,lo8(__c.2052) |
700 065a 90E0 ldi r25,hi8(__c.2052) |
701 065c 9F93 push r25 |
702 065e 8F93 push r24 |
703 0660 FF92 push r15 |
704 0662 0E94 0000 call _printf_P |
705 0666 8CE3 ldi r24,lo8(60) |
706 0668 8093 0000 sts DispPtr,r24 |
707 066c 8091 0000 lds r24,KompassStartwert |
708 0670 9091 0000 lds r25,(KompassStartwert)+1 |
709 0674 9F93 push r25 |
710 0676 8F93 push r24 |
711 0678 80E0 ldi r24,lo8(__c.2054) |
712 067a 90E0 ldi r25,hi8(__c.2054) |
713 067c 9F93 push r25 |
714 067e 8F93 push r24 |
715 0680 FF92 push r15 |
716 0682 0E94 0000 call _printf_P |
717 .L43: |
718 0686 8DB7 in r24,__SP_L__ |
719 0688 9EB7 in r25,__SP_H__ |
720 068a 4296 adiw r24,18 |
721 068c 00C0 rjmp .L42 |
722 .L30: |
723 068e 1092 0000 sts DispPtr,__zero_reg__ |
724 0692 8091 0000 lds r24,Poti1 |
725 0696 9091 0000 lds r25,(Poti1)+1 |
726 069a 9F93 push r25 |
727 069c 8F93 push r24 |
728 069e 80E0 ldi r24,lo8(__c.2057) |
729 06a0 90E0 ldi r25,hi8(__c.2057) |
730 06a2 9F93 push r25 |
731 06a4 8F93 push r24 |
732 06a6 FF92 push r15 |
733 06a8 0E94 0000 call _printf_P |
734 06ac 84E1 ldi r24,lo8(20) |
735 06ae 8093 0000 sts DispPtr,r24 |
736 06b2 8091 0000 lds r24,Poti2 |
737 06b6 9091 0000 lds r25,(Poti2)+1 |
738 06ba 9F93 push r25 |
739 06bc 8F93 push r24 |
740 06be 80E0 ldi r24,lo8(__c.2059) |
741 06c0 90E0 ldi r25,hi8(__c.2059) |
742 06c2 9F93 push r25 |
743 06c4 8F93 push r24 |
744 06c6 FF92 push r15 |
745 06c8 0E94 0000 call _printf_P |
746 06cc 88E2 ldi r24,lo8(40) |
747 06ce 8093 0000 sts DispPtr,r24 |
748 06d2 8091 0000 lds r24,Poti3 |
749 06d6 9091 0000 lds r25,(Poti3)+1 |
750 06da 9F93 push r25 |
751 06dc 8F93 push r24 |
752 06de 80E0 ldi r24,lo8(__c.2061) |
753 06e0 90E0 ldi r25,hi8(__c.2061) |
754 06e2 9F93 push r25 |
755 06e4 8F93 push r24 |
756 06e6 FF92 push r15 |
757 06e8 0E94 0000 call _printf_P |
758 06ec 8CE3 ldi r24,lo8(60) |
759 06ee 8093 0000 sts DispPtr,r24 |
760 06f2 8091 0000 lds r24,Poti4 |
761 06f6 9091 0000 lds r25,(Poti4)+1 |
762 06fa 9F93 push r25 |
763 06fc 8F93 push r24 |
764 06fe 80E0 ldi r24,lo8(__c.2063) |
765 0700 90E0 ldi r25,hi8(__c.2063) |
766 0702 9F93 push r25 |
767 0704 8F93 push r24 |
768 0706 FF92 push r15 |
769 0708 00C0 rjmp .L47 |
770 .L31: |
771 070a 1092 0000 sts DispPtr,__zero_reg__ |
772 070e 80E0 ldi r24,lo8(__c.2066) |
773 0710 90E0 ldi r25,hi8(__c.2066) |
774 0712 9F93 push r25 |
775 0714 8F93 push r24 |
776 0716 FF92 push r15 |
777 0718 0E94 0000 call _printf_P |
778 071c 84E1 ldi r24,lo8(20) |
779 071e 8093 0000 sts DispPtr,r24 |
780 0722 8091 0000 lds r24,Parameter_ServoNickControl |
781 0726 9927 clr r25 |
782 0728 9F93 push r25 |
783 072a 8F93 push r24 |
784 072c 80E0 ldi r24,lo8(__c.2068) |
785 072e 90E0 ldi r25,hi8(__c.2068) |
786 0730 9F93 push r25 |
787 0732 8F93 push r24 |
788 0734 FF92 push r15 |
789 0736 0E94 0000 call _printf_P |
790 073a 88E2 ldi r24,lo8(40) |
791 073c 8093 0000 sts DispPtr,r24 |
792 0740 8091 0000 lds r24,ServoValue |
793 0744 9091 0000 lds r25,(ServoValue)+1 |
794 0748 9F93 push r25 |
795 074a 8F93 push r24 |
796 074c 80E0 ldi r24,lo8(__c.2070) |
797 074e 90E0 ldi r25,hi8(__c.2070) |
798 0750 9F93 push r25 |
799 0752 8F93 push r24 |
800 0754 FF92 push r15 |
801 0756 0E94 0000 call _printf_P |
802 075a 8CE3 ldi r24,lo8(60) |
803 075c 8093 0000 sts DispPtr,r24 |
804 0760 8091 0000 lds r24,EE_Parameter+36 |
805 0764 9927 clr r25 |
806 0766 9F93 push r25 |
807 0768 8F93 push r24 |
808 076a 8091 0000 lds r24,EE_Parameter+35 |
809 076e 9927 clr r25 |
810 0770 9F93 push r25 |
811 0772 8F93 push r24 |
812 0774 80E0 ldi r24,lo8(__c.2072) |
813 0776 90E0 ldi r25,hi8(__c.2072) |
814 0778 9F93 push r25 |
815 077a 8F93 push r24 |
816 077c FF92 push r15 |
817 077e 0E94 0000 call _printf_P |
818 0782 00C0 rjmp .L44 |
819 .L20: |
820 0784 0150 subi r16,lo8(-(-1)) |
821 0786 0093 0000 sts MaxMenue.1970,r16 |
822 078a 1092 0000 sts MenuePunkt.1971,__zero_reg__ |
823 .L35: |
824 078e 1092 0000 sts RemoteTasten,__zero_reg__ |
825 /* epilogue: frame size=0 */ |
826 0792 1F91 pop r17 |
827 0794 0F91 pop r16 |
828 0796 FF90 pop r15 |
829 0798 0895 ret |
830 /* epilogue end (size=4) */ |
831 /* function Menu size 964 (957) */ |
833 .global TestInt |
834 .global TestInt |
835 .section .bss |
838 TestInt: |
839 0000 0000 .skip 2,0 |
840 .global Array |
841 .data |
844 Array: |
845 0000 01 .byte 1 |
846 0001 02 .byte 2 |
847 0002 03 .byte 3 |
848 0003 04 .byte 4 |
849 0004 05 .byte 5 |
850 0005 06 .byte 6 |
851 0006 07 .byte 7 |
852 0007 08 .byte 8 |
853 0008 09 .byte 9 |
854 0009 0A .byte 10 |
855 .global DisplayBuff |
858 DisplayBuff: |
859 000a 4861 6C6C .string "Hallo Welt" |
859 6F20 5765 |
859 6C74 00 |
860 0015 0000 0000 .skip 69,0 |
860 0000 0000 |
860 0000 0000 |
860 0000 0000 |
860 0000 0000 |
861 .global DispPtr |
862 .global DispPtr |
863 .section .bss |
866 DispPtr: |
867 0002 00 .skip 1,0 |
868 .global RemoteTasten |
869 .global RemoteTasten |
872 RemoteTasten: |
873 0003 00 .skip 1,0 |
874 .section .progmem.data,"a",@progbits |
877 __c.2072: |
878 0000 5261 6E67 .string "Range:%3i-%3i" |
878 653A 2533 |
878 692D 2533 |
878 6900 |
881 __c.2070: |
882 000e 5374 656C .string "Stellung: %3i" |
882 6C75 6E67 |
882 3A20 2533 |
882 6900 |
885 __c.2068: |
886 001c 5365 7470 .string "Setpoint %3i" |
886 6F69 6E74 |
886 2020 2533 |
886 6900 |
889 __c.2066: |
890 002a 5365 7276 .string "Servo " |
890 6F20 2000 |
893 __c.2063: |
894 0032 506F 7469 .string "Poti4: %3i" |
894 343A 2020 |
894 2533 6900 |
897 __c.2061: |
898 003e 506F 7469 .string "Poti3: %3i" |
898 333A 2020 |
898 2533 6900 |
901 __c.2059: |
902 004a 506F 7469 .string "Poti2: %3i" |
902 323A 2020 |
902 2533 6900 |
905 __c.2057: |
906 0056 506F 7469 .string "Poti1: %3i" |
906 313A 2020 |
906 2533 6900 |
909 __c.2054: |
910 0062 5374 6172 .string "Start: %5i" |
910 743A 2020 |
910 2020 2025 |
910 3569 00 |
913 __c.2052: |
914 0071 4D65 7373 .string "Messwert: %5i" |
914 7765 7274 |
914 3A20 2025 |
914 3569 00 |
917 __c.2050: |
918 0080 5269 6368 .string "Richtung: %5i" |
918 7475 6E67 |
918 3A20 2025 |
918 3569 00 |
921 __c.2048: |
922 008f 4B6F 6D70 .string "Kompass " |
922 6173 7320 |
922 2020 2020 |
922 2020 00 |
925 __c.2045: |
926 009e 456D 7066 .string "Empf.Pegel:%5i" |
926 2E50 6567 |
926 656C 3A25 |
926 3569 00 |
929 __c.2043: |
930 00ad 5370 616E .string "Spannung: %5i" |
930 6E75 6E67 |
930 3A20 2025 |
930 3569 00 |
933 __c.2040: |
934 00bc 486F 6368 .string "Hoch %4i (%3i)" |
934 2025 3469 |
934 2028 2533 |
934 6929 00 |
937 __c.2038: |
938 00cb 526F 6C6C .string "Roll %4i (%3i)" |
938 2025 3469 |
938 2028 2533 |
938 6929 00 |
941 __c.2036: |
942 00da 4E69 636B .string "Nick %4i (%3i)" |
942 2025 3469 |
942 2028 2533 |
942 6929 00 |
945 __c.2034: |
946 00e9 4143 4320 .string "ACC - Sensor" |
946 2D20 5365 |
946 6E73 6F72 |
946 00 |
949 __c.2031: |
950 00f6 4769 6572 .string "Gier %4i (%3i)" |
950 2025 3469 |
950 2028 2533 |
950 6929 00 |
953 __c.2029: |
954 0105 526F 6C6C .string "Roll %4i (%3i)" |
954 2025 3469 |
954 2028 2533 |
954 6929 00 |
957 __c.2027: |
958 0114 4E69 636B .string "Nick %4i (%3i)" |
958 2025 3469 |
958 2028 2533 |
958 6929 00 |
961 __c.2025: |
962 0123 4779 726F .string "Gyro - Sensor" |
962 202D 2053 |
962 656E 736F |
962 7200 |
965 __c.2022: |
966 0131 5033 3A25 .string "P3:%4i Kan\344le " |
966 3469 2020 |
966 4B61 6EE4 |
966 6C65 2000 |
969 __c.2020: |
970 0141 5031 3A25 .string "P1:%4i P2:%4i " |
970 3469 2020 |
970 5032 3A25 |
970 3469 2000 |
973 __c.2018: |
974 0151 4773 3A25 .string "Gs:%4i Gi:%4i " |
974 3469 2020 |
974 4769 3A25 |
974 3469 2000 |
977 __c.2016: |
978 0161 4E69 3A25 .string "Ni:%4i Ro:%4i " |
978 3469 2020 |
978 526F 3A25 |
978 3469 2000 |
981 __c.2013: |
982 0171 4B37 3A25 .string "K7:%4i Kan\344le " |
982 3469 2020 |
982 4B61 6EE4 |
982 6C65 2000 |
985 __c.2011: |
986 0181 4B35 3A25 .string "K5:%4i K6:%4i " |
986 3469 2020 |
986 4B36 3A25 |
986 3469 2000 |
989 __c.2009: |
990 0191 4B33 3A25 .string "K3:%4i K4:%4i " |
990 3469 2020 |
990 4B34 3A25 |
990 3469 2000 |
993 __c.2007: |
994 01a1 4B31 3A25 .string "K1:%4i K2:%4i " |
994 3469 2020 |
994 4B32 3A25 |
994 3469 2000 |
997 __c.2004: |
998 01b1 4B6F 6D70 .string "Kompass: %5i" |
998 6173 733A |
998 2020 2025 |
998 3569 00 |
1001 __c.2002: |
1002 01c0 526F 6C6C .string "Roll: %5i" |
1002 3A20 2020 |
1002 2020 2025 |
1002 3569 00 |
1005 __c.2000: |
1006 01cf 4E69 636B .string "Nick: %5i" |
1006 3A20 2020 |
1006 2020 2025 |
1006 3569 00 |
1009 __c.1998: |
1010 01de 616B 742E .string "akt. Lage" |
1010 204C 6167 |
1010 6500 |
1013 __c.1995: |
1014 01e8 48F6 6865 .string "H\366henregelung" |
1014 6E72 6567 |
1014 656C 756E |
1014 6700 |
1017 __c.1993: |
1018 01f6 4B65 696E .string "Keine " |
1018 6520 00 |
1021 __c.1991: |
1022 01fd 4F66 6620 .string "Off : %5i" |
1022 2020 2020 |
1022 203A 2025 |
1022 3569 00 |
1025 __c.1989: |
1026 020c 4C75 6674 .string "Luftdruck: %5i" |
1026 6472 7563 |
1026 6B3A 2025 |
1026 3569 00 |
1029 __c.1987: |
1030 021b 536F 6C6C .string "SollHoehe: %5i" |
1030 486F 6568 |
1030 653A 2025 |
1030 3569 00 |
1033 __c.1985: |
1034 022a 486F 6568 .string "Hoehe: %5i" |
1034 653A 2020 |
1034 2020 2025 |
1034 3569 00 |
1037 __c.1981: |
1038 0239 2863 2920 .string "(c) Holger Buss" |
1038 486F 6C67 |
1038 6572 2042 |
1038 7573 7300 |
1041 __c.1979: |
1042 0249 5365 7474 .string "Setting: %d " |
1042 696E 673A |
1042 2025 6420 |
1042 00 |
1045 __c.1977: |
1046 0256 5625 642E .string "V%d.%d" |
1046 2564 00 |
1049 __c.1975: |
1050 025d 2B2B 204D .string "++ MikroKopter ++" |
1050 696B 726F |
1050 4B6F 7074 |
1050 6572 202B |
1050 2B00 |
1053 __c.1972: |
1054 026f 5B25 695D .string "[%i]" |
1054 00 |
1055 .lcomm MenuePunkt.1971,1 |
1056 .data |
1059 MaxMenue.1970: |
1060 005a 0A .byte 10 |
1061 .comm DiffNick,2,1 |
1062 .comm DiffRoll,2,1 |
1063 .comm SenderOkay,1,1 |
1064 .comm CosinusNickWinkel,1,1 |
1065 .comm CosinusRollWinkel,1,1 |
1066 .comm durchschnitt_northing,4,1 |
1067 .comm durchschnitt_easting,4,1 |
1068 .comm gps_p,2,1 |
1069 .comm gps_d,2,1 |
1070 .comm skal,2,1 |
1071 .comm gps_gethome,2,1 |
1072 .comm Timeout,1,1 |
1073 .comm IntegralNick,4,1 |
1074 .comm IntegralNick2,4,1 |
1075 .comm IntegralRoll,4,1 |
1076 .comm IntegralRoll2,4,1 |
1077 .comm Mess_IntegralNick,4,1 |
1078 .comm Mess_IntegralNick2,4,1 |
1079 .comm Mess_IntegralRoll,4,1 |
1080 .comm Mess_IntegralRoll2,4,1 |
1081 .comm Integral_Gier,4,1 |
1082 .comm Mess_Integral_Gier,4,1 |
1083 .comm h,1,1 |
1084 .comm m,1,1 |
1085 .comm s,1,1 |
1086 .comm Motor_Vorne,1,1 |
1087 .comm Motor_Hinten,1,1 |
1088 .comm Motor_Rechts,1,1 |
1089 .comm Motor_Links,1,1 |
1090 .comm Count,1,1 |
1091 .comm MotorWert,5,1 |
1092 .comm StickNick,2,1 |
1093 .comm StickRoll,2,1 |
1094 .comm StickGier,2,1 |
1095 .comm MotorenEin,1,1 |
1096 /* File "menu.c": code 973 = 0x03cd ( 965), prologues 3, epilogues 5 */ |
DEFINED SYMBOLS |
*ABS*:00000000 menu.c |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:3 *ABS*:0000003f __SREG__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:4 *ABS*:0000003e __SP_H__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:5 *ABS*:0000003d __SP_L__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:6 *ABS*:00000000 __tmp_reg__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:7 *ABS*:00000001 __zero_reg__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:13 .text:00000000 LcdClear |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:858 .data:0000000a DisplayBuff |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:32 .text:00000012 Menu |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:872 .bss:00000003 RemoteTasten |
.bss:00000004 MenuePunkt.1971 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:1059 .data:0000005a MaxMenue.1970 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:866 .bss:00000002 DispPtr |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:1053 .progmem.data:0000026f __c.1972 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:1049 .progmem.data:0000025d __c.1975 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:1045 .progmem.data:00000256 __c.1977 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:1041 .progmem.data:00000249 __c.1979 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:1037 .progmem.data:00000239 __c.1981 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:1033 .progmem.data:0000022a __c.1985 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:1029 .progmem.data:0000021b __c.1987 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:1025 .progmem.data:0000020c __c.1989 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:1021 .progmem.data:000001fd __c.1991 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:1017 .progmem.data:000001f6 __c.1993 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:1013 .progmem.data:000001e8 __c.1995 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:1009 .progmem.data:000001de __c.1998 |
*COM*:00000004 IntegralNick |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:1005 .progmem.data:000001cf __c.2000 |
*COM*:00000004 IntegralRoll |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:1001 .progmem.data:000001c0 __c.2002 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:997 .progmem.data:000001b1 __c.2004 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:993 .progmem.data:000001a1 __c.2007 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:989 .progmem.data:00000191 __c.2009 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:985 .progmem.data:00000181 __c.2011 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:981 .progmem.data:00000171 __c.2013 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:977 .progmem.data:00000161 __c.2016 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:973 .progmem.data:00000151 __c.2018 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:969 .progmem.data:00000141 __c.2020 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:965 .progmem.data:00000131 __c.2022 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:961 .progmem.data:00000123 __c.2025 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:957 .progmem.data:00000114 __c.2027 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:953 .progmem.data:00000105 __c.2029 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:949 .progmem.data:000000f6 __c.2031 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:945 .progmem.data:000000e9 __c.2034 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:941 .progmem.data:000000da __c.2036 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:937 .progmem.data:000000cb __c.2038 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:933 .progmem.data:000000bc __c.2040 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:929 .progmem.data:000000ad __c.2043 |
*COM*:00000001 SenderOkay |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:925 .progmem.data:0000009e __c.2045 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:921 .progmem.data:0000008f __c.2048 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:917 .progmem.data:00000080 __c.2050 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:913 .progmem.data:00000071 __c.2052 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:909 .progmem.data:00000062 __c.2054 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:905 .progmem.data:00000056 __c.2057 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:901 .progmem.data:0000004a __c.2059 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:897 .progmem.data:0000003e __c.2061 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:893 .progmem.data:00000032 __c.2063 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:889 .progmem.data:0000002a __c.2066 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:885 .progmem.data:0000001c __c.2068 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:881 .progmem.data:0000000e __c.2070 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:877 .progmem.data:00000000 __c.2072 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:838 .bss:00000000 TestInt |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cc3clghb.s:844 .data:00000000 Array |
*COM*:00000002 DiffNick |
*COM*:00000002 DiffRoll |
*COM*:00000001 CosinusNickWinkel |
*COM*:00000001 CosinusRollWinkel |
*COM*:00000004 durchschnitt_northing |
*COM*:00000004 durchschnitt_easting |
*COM*:00000002 gps_p |
*COM*:00000002 gps_d |
*COM*:00000002 skal |
*COM*:00000002 gps_gethome |
*COM*:00000001 Timeout |
*COM*:00000004 IntegralNick2 |
*COM*:00000004 IntegralRoll2 |
*COM*:00000004 Mess_IntegralNick |
*COM*:00000004 Mess_IntegralNick2 |
*COM*:00000004 Mess_IntegralRoll |
*COM*:00000004 Mess_IntegralRoll2 |
*COM*:00000004 Integral_Gier |
*COM*:00000004 Mess_Integral_Gier |
*COM*:00000001 h |
*COM*:00000001 m |
*COM*:00000001 s |
*COM*:00000001 Motor_Vorne |
*COM*:00000001 Motor_Hinten |
*COM*:00000001 Motor_Rechts |
*COM*:00000001 Motor_Links |
*COM*:00000001 Count |
*COM*:00000005 MotorWert |
*COM*:00000002 StickNick |
*COM*:00000002 StickRoll |
*COM*:00000002 StickGier |
*COM*:00000001 MotorenEin |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
_printf_P |
GetActiveParamSetNumber |
EE_Parameter |
HoehenWert |
SollHoehe |
MessLuftdruck |
DruckOffsetSetting |
__divmodsi4 |
KompassValue |
PPM_in |
AdNeutralNick |
AccumulateNick |
MessanzahlNick |
__divmodhi4 |
AdNeutralRoll |
AccumulateRoll |
MessanzahlRoll |
AdNeutralGier |
AccumulateGier |
MessanzahlGier |
NeutralAccX |
accumulate_AccNick |
messanzahl_AccNick |
NeutralAccY |
accumulate_AccRoll |
messanzahl_AccRoll |
NeutralAccZ |
Aktuell_az |
__fixsfsi |
UBat |
KompassRichtung |
KompassStartwert |
Poti1 |
Poti2 |
Poti3 |
Poti4 |
Parameter_ServoNickControl |
ServoValue |
/branches/chris_hallo2/old_macros.h |
---|
0,0 → 1,47 |
/* |
For backwards compatibility only. |
Ingo Busker ingo@mikrocontroller.com |
*/ |
#ifndef cbi |
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) |
#endif |
#ifndef sbi |
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) |
#endif |
#ifndef inb |
#define inb(sfr) _SFR_BYTE(sfr) |
#endif |
#ifndef outb |
#define outb(sfr, val) (_SFR_BYTE(sfr) = (val)) |
#endif |
#ifndef inw |
#define inw(sfr) _SFR_WORD(sfr) |
#endif |
#ifndef outw |
#define outw(sfr, val) (_SFR_WORD(sfr) = (val)) |
#endif |
#ifndef outp |
#define outp(val, sfr) outb(sfr, val) |
#endif |
#ifndef inp |
#define inp(sfr) inb(sfr) |
#endif |
#ifndef BV |
#define BV(bit) _BV(bit) |
#endif |
#ifndef PRG_RDB |
#define PRG_RDB pgm_read_byte |
#endif |
/branches/chris_hallo2/printf_P.c |
---|
0,0 → 1,480 |
// Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist nicht von der Lizenz für den MikroKopter-Teil unterstellt |
/* |
Copyright (C) 1993 Free Software Foundation |
This file is part of the GNU IO Library. This library is free |
software; you can redistribute it and/or modify it under the |
terms of the GNU General Public License as published by the |
Free Software Foundation; either version 2, or (at your option) |
any later version. |
This library is distributed in the hope that it will be useful, |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
GNU General Public License for more details. |
You should have received a copy of the GNU General Public License |
along with this library; see the file COPYING. If not, write to the Free |
Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
As a special exception, if you link this library with files |
compiled with a GNU compiler to produce an executable, this does not cause |
the resulting executable to be covered by the GNU General Public License. |
This exception does not however invalidate any other reasons why |
the executable file might be covered by the GNU General Public License. */ |
/* |
* Copyright (c) 1990 Regents of the University of California. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. [rescinded 22 July 1999] |
* 4. Neither the name of the University nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
/****************************************************************************** |
This file is a patched version of printf called _printf_P |
It is made to work with avr-gcc for Atmel AVR MCUs. |
There are some differences from standard printf: |
1. There is no floating point support (with fp the code is about 8K!) |
2. Return type is void |
3. Format string must be in program memory (by using macro printf this is |
done automaticaly) |
4. %n is not implemented (just remove the comment around it if you need it) |
5. If LIGHTPRINTF is defined, the code is about 550 bytes smaller and the |
folowing specifiers are disabled : |
space # * . - + p s o O |
6. A function void uart_sendchar(char c) is used for output. The UART must |
be initialized before using printf. |
Alexander Popov |
sasho@vip.orbitel.bg |
******************************************************************************/ |
/* |
* Actual printf innards. |
* |
* This code is large and complicated... |
*/ |
#include <string.h> |
#ifdef __STDC__ |
#include <stdarg.h> |
#else |
#include <varargs.h> |
#endif |
#include "main.h" |
//#define LIGHTPRINTF |
char PrintZiel; |
char Putchar(char zeichen) |
{ |
if(PrintZiel == OUT_LCD) { DisplayBuff[DispPtr++] = zeichen; return(1);} |
else return(uart_putchar(zeichen)); |
} |
void PRINT(const char * ptr, unsigned int len) |
{ |
for(;len;len--) Putchar(*ptr++); |
} |
void PRINTP(const char * ptr, unsigned int len) |
{ |
for(;len;len--) Putchar(pgm_read_byte(ptr++)); |
} |
void PAD_SP(signed char howmany) |
{ |
for(;howmany>0;howmany--) Putchar(' '); |
} |
void PAD_0(signed char howmany) |
{ |
for(;howmany>0;howmany--) Putchar('0'); |
} |
#define BUF 40 |
/* |
* Macros for converting digits to letters and vice versa |
*/ |
#define to_digit(c) ((c) - '0') |
#define is_digit(c) ((c)<='9' && (c)>='0') |
#define to_char(n) ((n) + '0') |
/* |
* Flags used during conversion. |
*/ |
#define LONGINT 0x01 /* long integer */ |
#define LONGDBL 0x02 /* long double; unimplemented */ |
#define SHORTINT 0x04 /* short integer */ |
#define ALT 0x08 /* alternate form */ |
#define LADJUST 0x10 /* left adjustment */ |
#define ZEROPAD 0x20 /* zero (as opposed to blank) pad */ |
#define HEXPREFIX 0x40 /* add 0x or 0X prefix */ |
void _printf_P (char ziel,char const *fmt0, ...) /* Works with string from FLASH */ |
{ |
va_list ap; |
register const char *fmt; /* format string */ |
register char ch; /* character from fmt */ |
register int n; /* handy integer (short term usage) */ |
register char *cp; /* handy char pointer (short term usage) */ |
const char *fmark; /* for remembering a place in fmt */ |
register unsigned char flags; /* flags as above */ |
signed char width; /* width from format (%8d), or 0 */ |
signed char prec; /* precision from format (%.3d), or -1 */ |
char sign; /* sign prefix (' ', '+', '-', or \0) */ |
unsigned long _ulong=0; /* integer arguments %[diouxX] */ |
#define OCT 8 |
#define DEC 10 |
#define HEX 16 |
unsigned char base; /* base for [diouxX] conversion */ |
signed char dprec; /* a copy of prec if [diouxX], 0 otherwise */ |
signed char dpad; /* extra 0 padding needed for integers */ |
signed char fieldsz; /* field size expanded by sign, dpad etc */ |
/* The initialization of 'size' is to suppress a warning that |
'size' might be used unitialized. It seems gcc can't |
quite grok this spaghetti code ... */ |
signed char size = 0; /* size of converted field or string */ |
char buf[BUF]; /* space for %c, %[diouxX], %[eEfgG] */ |
char ox[2]; /* space for 0x hex-prefix */ |
PrintZiel = ziel; // bestimmt, LCD oder UART |
va_start(ap, fmt0); |
fmt = fmt0; |
/* |
* Scan the format for conversions (`%' character). |
*/ |
for (;;) { |
for (fmark = fmt; (ch = pgm_read_byte(fmt)) != '\0' && ch != '%'; fmt++) |
/* void */; |
if ((n = fmt - fmark) != 0) { |
PRINTP(fmark, n); |
} |
if (ch == '\0') |
goto done; |
fmt++; /* skip over '%' */ |
flags = 0; |
dprec = 0; |
width = 0; |
prec = -1; |
sign = '\0'; |
rflag: ch = PRG_RDB(fmt++); |
reswitch: |
#ifdef LIGHTPRINTF |
if (ch=='o' || ch=='u' || (ch|0x20)=='x') { |
#else |
if (ch=='u' || (ch|0x20)=='x') { |
#endif |
if (flags&LONGINT) { |
_ulong=va_arg(ap, unsigned long); |
} else { |
register unsigned int _d; |
_d=va_arg(ap, unsigned int); |
_ulong = flags&SHORTINT ? (unsigned long)(unsigned short)_d : (unsigned long)_d; |
} |
} |
#ifndef LIGHTPRINTF |
if(ch==' ') { |
/* |
* ``If the space and + flags both appear, the space |
* flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
if (!sign) |
sign = ' '; |
goto rflag; |
} else if (ch=='#') { |
flags |= ALT; |
goto rflag; |
} else if (ch=='*'||ch=='-') { |
if (ch=='*') { |
/* |
* ``A negative field width argument is taken as a |
* - flag followed by a positive field width.'' |
* -- ANSI X3J11 |
* They don't exclude field widths read from args. |
*/ |
if ((width = va_arg(ap, int)) >= 0) |
goto rflag; |
width = -width; |
} |
flags |= LADJUST; |
flags &= ~ZEROPAD; /* '-' disables '0' */ |
goto rflag; |
} else if (ch=='+') { |
sign = '+'; |
goto rflag; |
} else if (ch=='.') { |
if ((ch = PRG_RDB(fmt++)) == '*') { |
n = va_arg(ap, int); |
prec = n < 0 ? -1 : n; |
goto rflag; |
} |
n = 0; |
while (is_digit(ch)) { |
n = n*10 + to_digit(ch); |
ch = PRG_RDB(fmt++); |
} |
prec = n < 0 ? -1 : n; |
goto reswitch; |
} else |
#endif /* LIGHTPRINTF */ |
if (ch=='0') { |
/* |
* ``Note that 0 is taken as a flag, not as the |
* beginning of a field width.'' |
* -- ANSI X3J11 |
*/ |
if (!(flags & LADJUST)) |
flags |= ZEROPAD; /* '-' disables '0' */ |
goto rflag; |
} else if (ch>='1' && ch<='9') { |
n = 0; |
do { |
n = 10 * n + to_digit(ch); |
ch = PRG_RDB(fmt++); |
} while (is_digit(ch)); |
width = n; |
goto reswitch; |
} else if (ch=='h') { |
flags |= SHORTINT; |
goto rflag; |
} else if (ch=='l') { |
flags |= LONGINT; |
goto rflag; |
} else if (ch=='c') { |
*(cp = buf) = va_arg(ap, int); |
size = 1; |
sign = '\0'; |
} else if (ch=='D'||ch=='d'||ch=='i') { |
if(ch=='D') |
flags |= LONGINT; |
if (flags&LONGINT) { |
_ulong=va_arg(ap, long); |
} else { |
register int _d; |
_d=va_arg(ap, int); |
_ulong = flags&SHORTINT ? (long)(short)_d : (long)_d; |
} |
if ((long)_ulong < 0) { |
_ulong = -_ulong; |
sign = '-'; |
} |
base = DEC; |
goto number; |
} else |
/* |
if (ch=='n') { |
if (flags & LONGINT) |
*va_arg(ap, long *) = ret; |
else if (flags & SHORTINT) |
*va_arg(ap, short *) = ret; |
else |
*va_arg(ap, int *) = ret; |
continue; // no output |
} else |
*/ |
#ifndef LIGHTPRINTF |
if (ch=='O'||ch=='o') { |
if (ch=='O') |
flags |= LONGINT; |
base = OCT; |
goto nosign; |
} else if (ch=='p') { |
/* |
* ``The argument shall be a pointer to void. The |
* value of the pointer is converted to a sequence |
* of printable characters, in an implementation- |
* defined manner.'' |
* -- ANSI X3J11 |
*/ |
/* NOSTRICT */ |
_ulong = (unsigned int)va_arg(ap, void *); |
base = HEX; |
flags |= HEXPREFIX; |
ch = 'x'; |
goto nosign; |
} else if (ch=='s') { // print a string from RAM |
if ((cp = va_arg(ap, char *)) == NULL) { |
cp=buf; |
cp[0] = '('; |
cp[1] = 'n'; |
cp[2] = 'u'; |
cp[4] = cp[3] = 'l'; |
cp[5] = ')'; |
cp[6] = '\0'; |
} |
if (prec >= 0) { |
/* |
* can't use strlen; can only look for the |
* NUL in the first `prec' characters, and |
* strlen() will go further. |
*/ |
char *p = (char*)memchr(cp, 0, prec); |
if (p != NULL) { |
size = p - cp; |
if (size > prec) |
size = prec; |
} else |
size = prec; |
} else |
size = strlen(cp); |
sign = '\0'; |
} else |
#endif /* LIGHTPRINTF */ |
if(ch=='U'||ch=='u') { |
if (ch=='U') |
flags |= LONGINT; |
base = DEC; |
goto nosign; |
} else if (ch=='X'||ch=='x') { |
base = HEX; |
/* leading 0x/X only if non-zero */ |
if (flags & ALT && _ulong != 0) |
flags |= HEXPREFIX; |
/* unsigned conversions */ |
nosign: sign = '\0'; |
/* |
* ``... diouXx conversions ... if a precision is |
* specified, the 0 flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
number: if ((dprec = prec) >= 0) |
flags &= ~ZEROPAD; |
/* |
* ``The result of converting a zero value with an |
* explicit precision of zero is no characters.'' |
* -- ANSI X3J11 |
*/ |
cp = buf + BUF; |
if (_ulong != 0 || prec != 0) { |
register unsigned char _d,notlastdigit; |
do { |
notlastdigit=(_ulong>=base); |
_d = _ulong % base; |
if (_d<10) { |
_d+='0'; |
} else { |
_d+='a'-10; |
if (ch=='X') _d&=~0x20; |
} |
*--cp=_d; |
_ulong /= base; |
} while (notlastdigit); |
#ifndef LIGHTPRINTF |
// handle octal leading 0 |
if (base==OCT && flags & ALT && *cp != '0') |
*--cp = '0'; |
#endif |
} |
size = buf + BUF - cp; |
} else { //default |
/* "%?" prints ?, unless ? is NUL */ |
if (ch == '\0') |
goto done; |
/* pretend it was %c with argument ch */ |
cp = buf; |
*cp = ch; |
size = 1; |
sign = '\0'; |
} |
/* |
* All reasonable formats wind up here. At this point, |
* `cp' points to a string which (if not flags&LADJUST) |
* should be padded out to `width' places. If |
* flags&ZEROPAD, it should first be prefixed by any |
* sign or other prefix; otherwise, it should be blank |
* padded before the prefix is emitted. After any |
* left-hand padding and prefixing, emit zeroes |
* required by a decimal [diouxX] precision, then print |
* the string proper, then emit zeroes required by any |
* leftover floating precision; finally, if LADJUST, |
* pad with blanks. |
*/ |
/* |
* compute actual size, so we know how much to pad. |
*/ |
fieldsz = size; |
dpad = dprec - size; |
if (dpad < 0) |
dpad = 0; |
if (sign) |
fieldsz++; |
else if (flags & HEXPREFIX) |
fieldsz += 2; |
fieldsz += dpad; |
/* right-adjusting blank padding */ |
if ((flags & (LADJUST|ZEROPAD)) == 0) |
PAD_SP(width - fieldsz); |
/* prefix */ |
if (sign) { |
PRINT(&sign, 1); |
} else if (flags & HEXPREFIX) { |
ox[0] = '0'; |
ox[1] = ch; |
PRINT(ox, 2); |
} |
/* right-adjusting zero padding */ |
if ((flags & (LADJUST|ZEROPAD)) == ZEROPAD) |
PAD_0(width - fieldsz); |
/* leading zeroes from decimal precision */ |
PAD_0(dpad); |
/* the string or number proper */ |
PRINT(cp, size); |
/* left-adjusting padding (always blank) */ |
if (flags & LADJUST) |
PAD_SP(width - fieldsz); |
} |
done: |
va_end(ap); |
} |
/branches/chris_hallo2/printf_P.d |
---|
0,0 → 1,2 |
printf_P.o printf_P.d : printf_P.c main.h old_macros.h _settings.h printf_P.h \ |
timer0.h uart.h analog.h twimaster.h menu.h rc.h fc.h gps.h |
/branches/chris_hallo2/printf_P.h |
---|
0,0 → 1,19 |
#ifndef _PRINTF_P_H_ |
#define _PRINTF_P_H_ |
#include <avr/pgmspace.h> |
#define OUT_V24 0 |
#define OUT_LCD 1 |
extern void _printf_P (char, char const *fmt0, ...); |
extern char PrintZiel; |
#define printf_P(format, args...) _printf_P(OUT_V24,format , ## args) |
#define printf(format, args...) _printf_P(OUT_V24,PSTR(format) , ## args) |
#define LCD_printfxy(x,y,format, args...) { DispPtr = y * 20 + x; _printf_P(OUT_LCD,PSTR(format) , ## args);} |
#define LCD_printf(format, args...) { _printf_P(OUT_LCD,PSTR(format) , ## args);} |
#endif |
/branches/chris_hallo2/printf_P.lst |
---|
0,0 → 1,997 |
1 .file "printf_P.c" |
2 .arch atmega644 |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .text |
11 .global Putchar |
13 Putchar: |
14 /* prologue: frame size=0 */ |
15 /* prologue end (size=0) */ |
16 0000 982F mov r25,r24 |
17 0002 8091 0000 lds r24,PrintZiel |
18 0006 8130 cpi r24,lo8(1) |
19 0008 01F4 brne .L2 |
20 000a 8091 0000 lds r24,DispPtr |
21 000e E82F mov r30,r24 |
22 0010 FF27 clr r31 |
23 0012 E050 subi r30,lo8(-(DisplayBuff)) |
24 0014 F040 sbci r31,hi8(-(DisplayBuff)) |
25 0016 9083 st Z,r25 |
26 0018 8F5F subi r24,lo8(-(1)) |
27 001a 8093 0000 sts DispPtr,r24 |
28 001e 21E0 ldi r18,lo8(1) |
29 0020 30E0 ldi r19,hi8(1) |
30 0022 00C0 rjmp .L4 |
31 .L2: |
32 0024 892F mov r24,r25 |
33 0026 0E94 0000 call uart_putchar |
34 002a 282F mov r18,r24 |
35 002c 3327 clr r19 |
36 .L4: |
37 002e C901 movw r24,r18 |
38 /* epilogue: frame size=0 */ |
39 0030 0895 ret |
40 /* epilogue end (size=1) */ |
41 /* function Putchar size 25 (24) */ |
43 .global PAD_0 |
45 PAD_0: |
46 /* prologue: frame size=0 */ |
47 0032 1F93 push r17 |
48 /* prologue end (size=1) */ |
49 0034 182F mov r17,r24 |
50 0036 00C0 rjmp .L7 |
51 .L8: |
52 0038 80E3 ldi r24,lo8(48) |
53 003a 0E94 0000 call Putchar |
54 003e 1150 subi r17,lo8(-(-1)) |
55 .L7: |
56 0040 1116 cp __zero_reg__,r17 |
57 0042 04F0 brlt .L8 |
58 /* epilogue: frame size=0 */ |
59 0044 1F91 pop r17 |
60 0046 0895 ret |
61 /* epilogue end (size=2) */ |
62 /* function PAD_0 size 11 (8) */ |
64 .global PAD_SP |
66 PAD_SP: |
67 /* prologue: frame size=0 */ |
68 0048 1F93 push r17 |
69 /* prologue end (size=1) */ |
70 004a 182F mov r17,r24 |
71 004c 00C0 rjmp .L12 |
72 .L13: |
73 004e 80E2 ldi r24,lo8(32) |
74 0050 0E94 0000 call Putchar |
75 0054 1150 subi r17,lo8(-(-1)) |
76 .L12: |
77 0056 1116 cp __zero_reg__,r17 |
78 0058 04F0 brlt .L13 |
79 /* epilogue: frame size=0 */ |
80 005a 1F91 pop r17 |
81 005c 0895 ret |
82 /* epilogue end (size=2) */ |
83 /* function PAD_SP size 11 (8) */ |
85 .global PRINTP |
87 PRINTP: |
88 /* prologue: frame size=0 */ |
89 005e 0F93 push r16 |
90 0060 1F93 push r17 |
91 0062 CF93 push r28 |
92 0064 DF93 push r29 |
93 /* prologue end (size=4) */ |
94 0066 8C01 movw r16,r24 |
95 0068 EB01 movw r28,r22 |
96 006a 00C0 rjmp .L17 |
97 .L18: |
98 006c F801 movw r30,r16 |
99 006e 0F5F subi r16,lo8(-(1)) |
100 0070 1F4F sbci r17,hi8(-(1)) |
101 /* #APP */ |
102 0072 E491 lpm r30, Z |
103 |
104 /* #NOAPP */ |
105 0074 8E2F mov r24,r30 |
106 0076 0E94 0000 call Putchar |
107 007a 2197 sbiw r28,1 |
108 .L17: |
109 007c 2097 sbiw r28,0 |
110 007e 01F4 brne .L18 |
111 /* epilogue: frame size=0 */ |
112 0080 DF91 pop r29 |
113 0082 CF91 pop r28 |
114 0084 1F91 pop r17 |
115 0086 0F91 pop r16 |
116 0088 0895 ret |
117 /* epilogue end (size=5) */ |
118 /* function PRINTP size 25 (16) */ |
120 .global PRINT |
122 PRINT: |
123 /* prologue: frame size=0 */ |
124 008a 0F93 push r16 |
125 008c 1F93 push r17 |
126 008e CF93 push r28 |
127 0090 DF93 push r29 |
128 /* prologue end (size=4) */ |
129 0092 8C01 movw r16,r24 |
130 0094 EB01 movw r28,r22 |
131 0096 00C0 rjmp .L22 |
132 .L23: |
133 0098 F801 movw r30,r16 |
134 009a 8191 ld r24,Z+ |
135 009c 8F01 movw r16,r30 |
136 009e 0E94 0000 call Putchar |
137 00a2 2197 sbiw r28,1 |
138 .L22: |
139 00a4 2097 sbiw r28,0 |
140 00a6 01F4 brne .L23 |
141 /* epilogue: frame size=0 */ |
142 00a8 DF91 pop r29 |
143 00aa CF91 pop r28 |
144 00ac 1F91 pop r17 |
145 00ae 0F91 pop r16 |
146 00b0 0895 ret |
147 /* epilogue end (size=5) */ |
148 /* function PRINT size 20 (11) */ |
150 .global _printf_P |
152 _printf_P: |
153 /* prologue: frame size=51 */ |
154 00b2 2F92 push r2 |
155 00b4 3F92 push r3 |
156 00b6 4F92 push r4 |
157 00b8 5F92 push r5 |
158 00ba 6F92 push r6 |
159 00bc 7F92 push r7 |
160 00be 8F92 push r8 |
161 00c0 9F92 push r9 |
162 00c2 AF92 push r10 |
163 00c4 BF92 push r11 |
164 00c6 CF92 push r12 |
165 00c8 DF92 push r13 |
166 00ca EF92 push r14 |
167 00cc FF92 push r15 |
168 00ce 0F93 push r16 |
169 00d0 1F93 push r17 |
170 00d2 CF93 push r28 |
171 00d4 DF93 push r29 |
172 00d6 CDB7 in r28,__SP_L__ |
173 00d8 DEB7 in r29,__SP_H__ |
174 00da E397 sbiw r28,51 |
175 00dc 0FB6 in __tmp_reg__,__SREG__ |
176 00de F894 cli |
177 00e0 DEBF out __SP_H__,r29 |
178 00e2 0FBE out __SREG__,__tmp_reg__ |
179 00e4 CDBF out __SP_L__,r28 |
180 /* prologue end (size=26) */ |
181 00e6 2996 adiw r28,72-63 |
182 00e8 8FAD ldd r24,Y+63 |
183 00ea 2997 sbiw r28,72-63 |
184 00ec 8093 0000 sts PrintZiel,r24 |
185 00f0 CE01 movw r24,r28 |
186 00f2 855B subi r24,lo8(-(75)) |
187 00f4 9F4F sbci r25,hi8(-(75)) |
188 00f6 9D83 std Y+5,r25 |
189 00f8 8C83 std Y+4,r24 |
190 00fa 2B96 adiw r28,73-62 |
191 00fc 8EAD ldd r24,Y+62 |
192 00fe 9FAD ldd r25,Y+63 |
193 0100 2B97 sbiw r28,73-62 |
194 0102 9FA7 std Y+47,r25 |
195 0104 8EA7 std Y+46,r24 |
196 0106 2224 clr r2 |
197 0108 3324 clr r3 |
198 010a 2101 movw r4,r2 |
199 010c 00C0 rjmp .L27 |
200 .L28: |
201 010e 1301 movw r2,r6 |
202 0110 2401 movw r4,r8 |
203 .L27: |
204 0112 0EA5 ldd r16,Y+46 |
205 0114 1FA5 ldd r17,Y+47 |
206 0116 00C0 rjmp .L29 |
207 .L30: |
208 0118 0F5F subi r16,lo8(-(1)) |
209 011a 1F4F sbci r17,hi8(-(1)) |
210 .L29: |
211 011c F801 movw r30,r16 |
212 /* #APP */ |
213 011e F490 lpm r15, Z |
214 |
215 /* #NOAPP */ |
216 0120 FF20 tst r15 |
217 0122 01F0 breq .L31 |
218 0124 F5E2 ldi r31,lo8(37) |
219 0126 FF16 cp r15,r31 |
220 0128 01F4 brne .L30 |
221 .L31: |
222 012a B801 movw r22,r16 |
223 012c 8EA5 ldd r24,Y+46 |
224 012e 9FA5 ldd r25,Y+47 |
225 0130 681B sub r22,r24 |
226 0132 790B sbc r23,r25 |
227 0134 01F0 breq .L33 |
228 0136 0E94 0000 call PRINTP |
229 .L33: |
230 013a FF20 tst r15 |
231 013c 01F4 brne .+2 |
232 013e 00C0 rjmp .L152 |
233 0140 0F5F subi r16,lo8(-(1)) |
234 0142 1F4F sbci r17,hi8(-(1)) |
235 0144 1FA7 std Y+47,r17 |
236 0146 0EA7 std Y+46,r16 |
237 0148 1982 std Y+1,__zero_reg__ |
238 014a AC81 ldd r26,Y+4 |
239 014c BD81 ldd r27,Y+5 |
240 014e 1BAA std Y+51,__zero_reg__ |
241 0150 1AAA std Y+50,__zero_reg__ |
242 0152 9FEF ldi r25,lo8(-1) |
243 0154 99AB std Y+49,r25 |
244 .L174: |
245 0156 EEA5 ldd r30,Y+46 |
246 0158 FFA5 ldd r31,Y+47 |
247 015a CF01 movw r24,r30 |
248 015c 0196 adiw r24,1 |
249 015e 9FA7 std Y+47,r25 |
250 0160 8EA7 std Y+46,r24 |
251 /* #APP */ |
252 0162 B490 lpm r11, Z |
253 |
254 /* #NOAPP */ |
255 .L175: |
256 0164 95E7 ldi r25,lo8(117) |
257 0166 B916 cp r11,r25 |
258 0168 01F0 breq .L39 |
259 016a 8B2D mov r24,r11 |
260 016c 8062 ori r24,lo8(32) |
261 016e 8837 cpi r24,lo8(120) |
262 0170 01F4 brne .L41 |
263 .L39: |
264 0172 EBA9 ldd r30,Y+51 |
265 0174 E0FF sbrs r30,0 |
266 0176 00C0 rjmp .L42 |
267 0178 2D90 ld r2,X+ |
268 017a 3D90 ld r3,X+ |
269 017c 4D90 ld r4,X+ |
270 017e 5C90 ld r5,X |
271 0180 1397 sbiw r26,3 |
272 0182 1496 adiw r26,4 |
273 0184 00C0 rjmp .L41 |
274 .L42: |
275 0186 8D91 ld r24,X+ |
276 0188 9C91 ld r25,X |
277 018a 1197 sbiw r26,1 |
278 018c 1C01 movw r2,r24 |
279 018e 4424 clr r4 |
280 0190 5524 clr r5 |
281 0192 1296 adiw r26,2 |
282 .L41: |
283 0194 F0E2 ldi r31,lo8(32) |
284 0196 BF16 cp r11,r31 |
285 0198 01F4 brne .L44 |
286 019a 8981 ldd r24,Y+1 |
287 019c 8823 tst r24 |
288 019e 01F4 brne .L174 |
289 01a0 00C0 rjmp .L156 |
290 .L44: |
291 01a2 83E2 ldi r24,lo8(35) |
292 01a4 B816 cp r11,r24 |
293 01a6 01F4 brne .+2 |
294 01a8 00C0 rjmp .L155 |
295 01aa 9AE2 ldi r25,lo8(42) |
296 01ac B916 cp r11,r25 |
297 01ae 01F0 breq .L49 |
298 01b0 EDE2 ldi r30,lo8(45) |
299 01b2 BE16 cp r11,r30 |
300 01b4 01F4 brne .L164 |
301 01b6 00C0 rjmp .L51 |
302 .L49: |
303 01b8 FD01 movw r30,r26 |
304 01ba 1296 adiw r26,2 |
305 01bc E081 ld r30,Z |
306 01be EAAB std Y+50,r30 |
307 01c0 E7FF sbrs r30,7 |
308 01c2 00C0 rjmp .L174 |
309 01c4 E195 neg r30 |
310 01c6 EAAB std Y+50,r30 |
311 .L51: |
312 01c8 FBA9 ldd r31,Y+51 |
313 01ca F061 ori r31,lo8(16) |
314 01cc FF7D andi r31,lo8(-33) |
315 01ce 00C0 rjmp .L169 |
316 .L164: |
317 01d0 8BE2 ldi r24,lo8(43) |
318 01d2 B816 cp r11,r24 |
319 01d4 01F4 brne .+2 |
320 01d6 00C0 rjmp .L156 |
321 01d8 9EE2 ldi r25,lo8(46) |
322 01da B916 cp r11,r25 |
323 01dc 01F4 brne .L56 |
324 01de 2EA5 ldd r18,Y+46 |
325 01e0 3FA5 ldd r19,Y+47 |
326 01e2 2F5F subi r18,lo8(-(1)) |
327 01e4 3F4F sbci r19,hi8(-(1)) |
328 01e6 EEA5 ldd r30,Y+46 |
329 01e8 FFA5 ldd r31,Y+47 |
330 /* #APP */ |
331 01ea 8491 lpm r24, Z |
332 |
333 /* #NOAPP */ |
334 01ec 8A32 cpi r24,lo8(42) |
335 01ee 01F0 breq .L58 |
336 01f0 B82E mov r11,r24 |
337 01f2 20E0 ldi r18,lo8(0) |
338 01f4 30E0 ldi r19,hi8(0) |
339 01f6 00C0 rjmp .L60 |
340 .L58: |
341 01f8 FD01 movw r30,r26 |
342 01fa 1296 adiw r26,2 |
343 01fc 4081 ld r20,Z |
344 01fe 5181 ldd r21,Z+1 |
345 0200 57FF sbrs r21,7 |
346 0202 00C0 rjmp .L61 |
347 0204 4FEF ldi r20,lo8(-1) |
348 0206 5FEF ldi r21,hi8(-1) |
349 .L61: |
350 0208 49AB std Y+49,r20 |
351 020a 3FA7 std Y+47,r19 |
352 020c 2EA7 std Y+46,r18 |
353 020e 00C0 rjmp .L174 |
354 .L62: |
355 0210 C901 movw r24,r18 |
356 0212 03E0 ldi r16,3 |
357 0214 880F 1: lsl r24 |
358 0216 991F rol r25 |
359 0218 0A95 dec r16 |
360 021a 01F4 brne 1b |
361 021c 220F lsl r18 |
362 021e 331F rol r19 |
363 0220 280F add r18,r24 |
364 0222 391F adc r19,r25 |
365 0224 2B0D add r18,r11 |
366 0226 311D adc r19,__zero_reg__ |
367 0228 2053 subi r18,lo8(-(-48)) |
368 022a 3040 sbci r19,hi8(-(-48)) |
369 /* #APP */ |
370 022c B490 lpm r11, Z |
371 |
372 /* #NOAPP */ |
373 .L60: |
374 022e 3196 adiw r30,1 |
375 0230 8B2D mov r24,r11 |
376 0232 8053 subi r24,lo8(-(-48)) |
377 0234 8A30 cpi r24,lo8(10) |
378 0236 00F0 brlo .L62 |
379 0238 FFA7 std Y+47,r31 |
380 023a EEA7 std Y+46,r30 |
381 023c A901 movw r20,r18 |
382 023e 37FF sbrs r19,7 |
383 0240 00C0 rjmp .L64 |
384 0242 4FEF ldi r20,lo8(-1) |
385 0244 5FEF ldi r21,hi8(-1) |
386 .L64: |
387 0246 49AB std Y+49,r20 |
388 0248 00C0 rjmp .L175 |
389 .L56: |
390 024a F0E3 ldi r31,lo8(48) |
391 024c BF16 cp r11,r31 |
392 024e 01F4 brne .L65 |
393 0250 8BA9 ldd r24,Y+51 |
394 0252 84FD sbrc r24,4 |
395 0254 00C0 rjmp .L174 |
396 0256 8062 ori r24,lo8(32) |
397 0258 8BAB std Y+51,r24 |
398 025a 00C0 rjmp .L174 |
399 .L65: |
400 025c 8B2D mov r24,r11 |
401 025e 8153 subi r24,lo8(-(-49)) |
402 0260 8930 cpi r24,lo8(9) |
403 0262 00F4 brsh .L68 |
404 0264 20E0 ldi r18,lo8(0) |
405 0266 30E0 ldi r19,hi8(0) |
406 .L70: |
407 0268 C901 movw r24,r18 |
408 026a F3E0 ldi r31,3 |
409 026c 880F 1: lsl r24 |
410 026e 991F rol r25 |
411 0270 FA95 dec r31 |
412 0272 01F4 brne 1b |
413 0274 220F lsl r18 |
414 0276 331F rol r19 |
415 0278 280F add r18,r24 |
416 027a 391F adc r19,r25 |
417 027c 2B0D add r18,r11 |
418 027e 311D adc r19,__zero_reg__ |
419 0280 2053 subi r18,lo8(-(-48)) |
420 0282 3040 sbci r19,hi8(-(-48)) |
421 0284 EEA5 ldd r30,Y+46 |
422 0286 FFA5 ldd r31,Y+47 |
423 0288 CF01 movw r24,r30 |
424 028a 0196 adiw r24,1 |
425 028c 9FA7 std Y+47,r25 |
426 028e 8EA7 std Y+46,r24 |
427 /* #APP */ |
428 0290 B490 lpm r11, Z |
429 |
430 /* #NOAPP */ |
431 0292 8B2D mov r24,r11 |
432 0294 8053 subi r24,lo8(-(-48)) |
433 0296 8A30 cpi r24,lo8(10) |
434 0298 00F0 brlo .L70 |
435 029a 2AAB std Y+50,r18 |
436 029c 00C0 rjmp .L175 |
437 .L68: |
438 029e 98E6 ldi r25,lo8(104) |
439 02a0 B916 cp r11,r25 |
440 02a2 01F4 brne .L72 |
441 02a4 EBA9 ldd r30,Y+51 |
442 02a6 E460 ori r30,lo8(4) |
443 02a8 EBAB std Y+51,r30 |
444 02aa 00C0 rjmp .L174 |
445 .L156: |
446 02ac B982 std Y+1,r11 |
447 02ae 00C0 rjmp .L174 |
448 .L155: |
449 02b0 FBA9 ldd r31,Y+51 |
450 02b2 F860 ori r31,lo8(8) |
451 .L169: |
452 02b4 FBAB std Y+51,r31 |
453 02b6 00C0 rjmp .L174 |
454 .L72: |
455 02b8 8CE6 ldi r24,lo8(108) |
456 02ba B816 cp r11,r24 |
457 02bc 01F4 brne .L74 |
458 02be 9BA9 ldd r25,Y+51 |
459 02c0 9160 ori r25,lo8(1) |
460 02c2 9BAB std Y+51,r25 |
461 02c4 00C0 rjmp .L174 |
462 .L74: |
463 02c6 BD83 std Y+5,r27 |
464 02c8 AC83 std Y+4,r26 |
465 02ca E3E6 ldi r30,lo8(99) |
466 02cc BE16 cp r11,r30 |
467 02ce 01F4 brne .L76 |
468 02d0 1296 adiw r26,2 |
469 02d2 BD83 std Y+5,r27 |
470 02d4 AC83 std Y+4,r26 |
471 02d6 1297 sbiw r26,2 |
472 02d8 8C91 ld r24,X |
473 02da 8E83 std Y+6,r24 |
474 02dc 00C0 rjmp .L173 |
475 .L76: |
476 02de F4E4 ldi r31,lo8(68) |
477 02e0 BF16 cp r11,r31 |
478 02e2 01F0 breq .L79 |
479 02e4 84E6 ldi r24,lo8(100) |
480 02e6 B816 cp r11,r24 |
481 02e8 01F0 breq .L81 |
482 02ea 99E6 ldi r25,lo8(105) |
483 02ec B916 cp r11,r25 |
484 02ee 01F4 brne .L166 |
485 02f0 00C0 rjmp .L81 |
486 .L79: |
487 02f2 EBA9 ldd r30,Y+51 |
488 02f4 E160 ori r30,lo8(1) |
489 02f6 EBAB std Y+51,r30 |
490 .L81: |
491 02f8 FBA9 ldd r31,Y+51 |
492 02fa F0FF sbrs r31,0 |
493 02fc 00C0 rjmp .L84 |
494 02fe 1496 adiw r26,4 |
495 0300 BD83 std Y+5,r27 |
496 0302 AC83 std Y+4,r26 |
497 0304 5E90 ld r5,-X |
498 0306 4E90 ld r4,-X |
499 0308 3E90 ld r3,-X |
500 030a 2E90 ld r2,-X |
501 030c 00C0 rjmp .L86 |
502 .L84: |
503 030e 1296 adiw r26,2 |
504 0310 BD83 std Y+5,r27 |
505 0312 AC83 std Y+4,r26 |
506 0314 9E91 ld r25,-X |
507 0316 8E91 ld r24,-X |
508 0318 1C01 movw r2,r24 |
509 031a 4424 clr r4 |
510 031c 37FC sbrc r3,7 |
511 031e 4094 com r4 |
512 0320 542C mov r5,r4 |
513 .L86: |
514 0322 57FC sbrc r5,7 |
515 0324 00C0 rjmp .L87 |
516 0326 8AE0 ldi r24,lo8(10) |
517 0328 88AB std Y+48,r24 |
518 032a 00C0 rjmp .L89 |
519 .L87: |
520 032c 5094 com r5 |
521 032e 4094 com r4 |
522 0330 3094 com r3 |
523 0332 2094 com r2 |
524 0334 211C adc r2,__zero_reg__ |
525 0336 311C adc r3,__zero_reg__ |
526 0338 411C adc r4,__zero_reg__ |
527 033a 511C adc r5,__zero_reg__ |
528 033c 8DE2 ldi r24,lo8(45) |
529 033e 8983 std Y+1,r24 |
530 0340 9AE0 ldi r25,lo8(10) |
531 0342 98AB std Y+48,r25 |
532 0344 00C0 rjmp .L89 |
533 .L166: |
534 0346 EFE4 ldi r30,lo8(79) |
535 0348 BE16 cp r11,r30 |
536 034a 01F0 breq .L90 |
537 034c FFE6 ldi r31,lo8(111) |
538 034e BF16 cp r11,r31 |
539 0350 01F4 brne .L92 |
540 0352 88E0 ldi r24,lo8(8) |
541 0354 00C0 rjmp .L170 |
542 .L90: |
543 0356 9BA9 ldd r25,Y+51 |
544 0358 9160 ori r25,lo8(1) |
545 035a 9BAB std Y+51,r25 |
546 035c E8E0 ldi r30,lo8(8) |
547 035e 00C0 rjmp .L171 |
548 .L92: |
549 0360 F0E7 ldi r31,lo8(112) |
550 0362 BF16 cp r11,r31 |
551 0364 01F4 brne .L95 |
552 0366 1296 adiw r26,2 |
553 0368 BD83 std Y+5,r27 |
554 036a AC83 std Y+4,r26 |
555 036c 9E91 ld r25,-X |
556 036e 8E91 ld r24,-X |
557 0370 1C01 movw r2,r24 |
558 0372 4424 clr r4 |
559 0374 5524 clr r5 |
560 0376 8BA9 ldd r24,Y+51 |
561 0378 8064 ori r24,lo8(64) |
562 037a 8BAB std Y+51,r24 |
563 037c 90E1 ldi r25,lo8(16) |
564 037e 98AB std Y+48,r25 |
565 0380 78E7 ldi r23,lo8(120) |
566 0382 B72E mov r11,r23 |
567 0384 00C0 rjmp .L94 |
568 .L95: |
569 0386 E3E7 ldi r30,lo8(115) |
570 0388 BE16 cp r11,r30 |
571 038a 01F4 brne .L97 |
572 038c 1296 adiw r26,2 |
573 038e BD83 std Y+5,r27 |
574 0390 AC83 std Y+4,r26 |
575 0392 DE90 ld r13,-X |
576 0394 CE90 ld r12,-X |
577 0396 C114 cp r12,__zero_reg__ |
578 0398 D104 cpc r13,__zero_reg__ |
579 039a 01F4 brne .L99 |
580 039c 88E2 ldi r24,lo8(40) |
581 039e 8E83 std Y+6,r24 |
582 03a0 8EE6 ldi r24,lo8(110) |
583 03a2 8F83 std Y+7,r24 |
584 03a4 85E7 ldi r24,lo8(117) |
585 03a6 8887 std Y+8,r24 |
586 03a8 8CE6 ldi r24,lo8(108) |
587 03aa 8987 std Y+9,r24 |
588 03ac 8A87 std Y+10,r24 |
589 03ae 89E2 ldi r24,lo8(41) |
590 03b0 8B87 std Y+11,r24 |
591 03b2 1C86 std Y+12,__zero_reg__ |
592 03b4 66E0 ldi r22,lo8(6) |
593 03b6 C62E mov r12,r22 |
594 03b8 D12C mov r13,__zero_reg__ |
595 03ba CC0E add r12,r28 |
596 03bc DD1E adc r13,r29 |
597 .L99: |
598 03be F9A9 ldd r31,Y+49 |
599 03c0 F7FD sbrc r31,7 |
600 03c2 00C0 rjmp .L101 |
601 03c4 4F2F mov r20,r31 |
602 03c6 5527 clr r21 |
603 03c8 47FD sbrc r20,7 |
604 03ca 5095 com r21 |
605 03cc 60E0 ldi r22,lo8(0) |
606 03ce 70E0 ldi r23,hi8(0) |
607 03d0 C601 movw r24,r12 |
608 03d2 0E94 0000 call memchr |
609 03d6 0097 sbiw r24,0 |
610 03d8 01F4 brne .L103 |
611 03da 19A9 ldd r17,Y+49 |
612 03dc 00C0 rjmp .L105 |
613 .L103: |
614 03de 8C19 sub r24,r12 |
615 03e0 19A9 ldd r17,Y+49 |
616 03e2 8117 cp r24,r17 |
617 03e4 04F4 brge .L105 |
618 03e6 182F mov r17,r24 |
619 03e8 00C0 rjmp .L105 |
620 .L101: |
621 03ea F601 movw r30,r12 |
622 03ec 0190 ld __tmp_reg__,Z+ |
623 03ee 0020 tst __tmp_reg__ |
624 03f0 01F4 brne .-6 |
625 03f2 3197 sbiw r30,1 |
626 03f4 1E2F mov r17,r30 |
627 03f6 1C19 sub r17,r12 |
628 .L105: |
629 03f8 1982 std Y+1,__zero_reg__ |
630 03fa 4201 movw r8,r4 |
631 03fc 3101 movw r6,r2 |
632 03fe 40E0 ldi r20,lo8(0) |
633 0400 00C0 rjmp .L107 |
634 .L97: |
635 0402 85E5 ldi r24,lo8(85) |
636 0404 B816 cp r11,r24 |
637 0406 01F0 breq .L108 |
638 0408 95E7 ldi r25,lo8(117) |
639 040a B916 cp r11,r25 |
640 040c 01F4 brne .L110 |
641 040e EAE0 ldi r30,lo8(10) |
642 .L171: |
643 0410 E8AB std Y+48,r30 |
644 0412 00C0 rjmp .L94 |
645 .L108: |
646 0414 FBA9 ldd r31,Y+51 |
647 0416 F160 ori r31,lo8(1) |
648 0418 FBAB std Y+51,r31 |
649 041a 8AE0 ldi r24,lo8(10) |
650 .L170: |
651 041c 88AB std Y+48,r24 |
652 041e 00C0 rjmp .L94 |
653 .L110: |
654 0420 98E5 ldi r25,lo8(88) |
655 0422 B916 cp r11,r25 |
656 0424 01F0 breq .L112 |
657 0426 E8E7 ldi r30,lo8(120) |
658 0428 BE16 cp r11,r30 |
659 042a 01F0 breq .+2 |
660 042c 00C0 rjmp .L114 |
661 .L112: |
662 042e FBA9 ldd r31,Y+51 |
663 0430 F3FD sbrc r31,3 |
664 0432 00C0 rjmp .L115 |
665 0434 80E1 ldi r24,lo8(16) |
666 0436 00C0 rjmp .L170 |
667 .L115: |
668 0438 2114 cp r2,__zero_reg__ |
669 043a 3104 cpc r3,__zero_reg__ |
670 043c 4104 cpc r4,__zero_reg__ |
671 043e 5104 cpc r5,__zero_reg__ |
672 0440 01F4 brne .L117 |
673 0442 90E1 ldi r25,lo8(16) |
674 0444 98AB std Y+48,r25 |
675 0446 00C0 rjmp .L94 |
676 .L117: |
677 0448 EBA9 ldd r30,Y+51 |
678 044a E064 ori r30,lo8(64) |
679 044c EBAB std Y+51,r30 |
680 044e F0E1 ldi r31,lo8(16) |
681 0450 F8AB std Y+48,r31 |
682 .L94: |
683 0452 1982 std Y+1,__zero_reg__ |
684 .L89: |
685 0454 89A9 ldd r24,Y+49 |
686 0456 87FD sbrc r24,7 |
687 0458 00C0 rjmp .L119 |
688 045a 9BA9 ldd r25,Y+51 |
689 045c 9F7D andi r25,lo8(-33) |
690 045e 9BAB std Y+51,r25 |
691 .L119: |
692 0460 2114 cp r2,__zero_reg__ |
693 0462 3104 cpc r3,__zero_reg__ |
694 0464 4104 cpc r4,__zero_reg__ |
695 0466 5104 cpc r5,__zero_reg__ |
696 0468 01F4 brne .L121 |
697 046a E9A9 ldd r30,Y+49 |
698 046c EE23 tst r30 |
699 046e 01F4 brne .L121 |
700 0470 6624 clr r6 |
701 0472 7724 clr r7 |
702 0474 4301 movw r8,r6 |
703 0476 5EE2 ldi r21,lo8(46) |
704 0478 C52E mov r12,r21 |
705 047a D12C mov r13,__zero_reg__ |
706 047c CC0E add r12,r28 |
707 047e DD1E adc r13,r29 |
708 0480 00C0 rjmp .L124 |
709 .L121: |
710 0482 4EE2 ldi r20,lo8(46) |
711 0484 C42E mov r12,r20 |
712 0486 D12C mov r13,__zero_reg__ |
713 0488 CC0E add r12,r28 |
714 048a DD1E adc r13,r29 |
715 048c F8A9 ldd r31,Y+48 |
716 048e EF2E mov r14,r31 |
717 0490 FF24 clr r15 |
718 0492 0027 clr r16 |
719 0494 1127 clr r17 |
720 .L125: |
721 0496 C201 movw r24,r4 |
722 0498 B101 movw r22,r2 |
723 049a A801 movw r20,r16 |
724 049c 9701 movw r18,r14 |
725 049e 0E94 0000 call __udivmodsi4 |
726 04a2 6A30 cpi r22,lo8(10) |
727 04a4 00F4 brsh .L126 |
728 04a6 30E3 ldi r19,lo8(48) |
729 04a8 A32E mov r10,r19 |
730 04aa A60E add r10,r22 |
731 04ac 00C0 rjmp .L128 |
732 .L126: |
733 04ae 27E5 ldi r18,lo8(87) |
734 04b0 A22E mov r10,r18 |
735 04b2 A60E add r10,r22 |
736 04b4 88E5 ldi r24,lo8(88) |
737 04b6 B816 cp r11,r24 |
738 04b8 01F4 brne .L128 |
739 04ba 9FED ldi r25,lo8(-33) |
740 04bc A922 and r10,r25 |
741 .L128: |
742 04be F601 movw r30,r12 |
743 04c0 A292 st -Z,r10 |
744 04c2 6F01 movw r12,r30 |
745 04c4 C201 movw r24,r4 |
746 04c6 B101 movw r22,r2 |
747 04c8 A801 movw r20,r16 |
748 04ca 9701 movw r18,r14 |
749 04cc 0E94 0000 call __udivmodsi4 |
750 04d0 3901 movw r6,r18 |
751 04d2 4A01 movw r8,r20 |
752 04d4 2E14 cp r2,r14 |
753 04d6 3F04 cpc r3,r15 |
754 04d8 4006 cpc r4,r16 |
755 04da 5106 cpc r5,r17 |
756 04dc 00F0 brlo .L130 |
757 04de 1901 movw r2,r18 |
758 04e0 2A01 movw r4,r20 |
759 04e2 00C0 rjmp .L125 |
760 .L130: |
761 04e4 F8A9 ldd r31,Y+48 |
762 04e6 F830 cpi r31,lo8(8) |
763 04e8 01F4 brne .L124 |
764 04ea 8BA9 ldd r24,Y+51 |
765 04ec 83FF sbrs r24,3 |
766 04ee 00C0 rjmp .L124 |
767 04f0 90E3 ldi r25,lo8(48) |
768 04f2 A916 cp r10,r25 |
769 04f4 01F0 breq .L124 |
770 04f6 80E3 ldi r24,lo8(48) |
771 04f8 F601 movw r30,r12 |
772 04fa 8293 st -Z,r24 |
773 04fc 6F01 movw r12,r30 |
774 .L124: |
775 04fe CE01 movw r24,r28 |
776 0500 8C19 sub r24,r12 |
777 0502 182F mov r17,r24 |
778 0504 125D subi r17,lo8(-(46)) |
779 0506 49A9 ldd r20,Y+49 |
780 0508 00C0 rjmp .L107 |
781 .L114: |
782 050a BB20 tst r11 |
783 050c 01F4 brne .+2 |
784 050e 00C0 rjmp .L152 |
785 0510 BE82 std Y+6,r11 |
786 .L173: |
787 0512 1982 std Y+1,__zero_reg__ |
788 0514 4201 movw r8,r4 |
789 0516 3101 movw r6,r2 |
790 0518 00E0 ldi r16,lo8(0) |
791 051a 11E0 ldi r17,lo8(1) |
792 051c 96E0 ldi r25,lo8(6) |
793 051e C92E mov r12,r25 |
794 0520 D12C mov r13,__zero_reg__ |
795 0522 CC0E add r12,r28 |
796 0524 DD1E adc r13,r29 |
797 0526 21E0 ldi r18,lo8(1) |
798 0528 00C0 rjmp .L136 |
799 .L107: |
800 052a 212F mov r18,r17 |
801 052c 042F mov r16,r20 |
802 052e 011B sub r16,r17 |
803 0530 07FD sbrc r16,7 |
804 0532 00E0 ldi r16,lo8(0) |
805 .L136: |
806 0534 8981 ldd r24,Y+1 |
807 0536 8823 tst r24 |
808 0538 01F0 breq .L138 |
809 053a 812F mov r24,r17 |
810 053c 8F5F subi r24,lo8(-(1)) |
811 053e 00C0 rjmp .L140 |
812 .L138: |
813 0540 9BA9 ldd r25,Y+51 |
814 0542 96FD sbrc r25,6 |
815 0544 00C0 rjmp .L141 |
816 0546 812F mov r24,r17 |
817 0548 00C0 rjmp .L140 |
818 .L141: |
819 054a 822F mov r24,r18 |
820 054c 8E5F subi r24,lo8(-(2)) |
821 .L140: |
822 054e A82E mov r10,r24 |
823 0550 A00E add r10,r16 |
824 0552 EBA9 ldd r30,Y+51 |
825 0554 EE2E mov r14,r30 |
826 0556 FF24 clr r15 |
827 0558 80E3 ldi r24,lo8(48) |
828 055a 482E mov r4,r24 |
829 055c 512C mov r5,__zero_reg__ |
830 055e 4E20 and r4,r14 |
831 0560 5F20 and r5,r15 |
832 0562 4114 cp r4,__zero_reg__ |
833 0564 5104 cpc r5,__zero_reg__ |
834 0566 01F4 brne .L143 |
835 0568 8AA9 ldd r24,Y+50 |
836 056a 8A19 sub r24,r10 |
837 056c 0E94 0000 call PAD_SP |
838 .L143: |
839 0570 8981 ldd r24,Y+1 |
840 0572 8823 tst r24 |
841 0574 01F0 breq .L145 |
842 0576 61E0 ldi r22,lo8(1) |
843 0578 70E0 ldi r23,hi8(1) |
844 057a CE01 movw r24,r28 |
845 057c 0196 adiw r24,1 |
846 057e 00C0 rjmp .L172 |
847 .L145: |
848 0580 E6FE sbrs r14,6 |
849 0582 00C0 rjmp .L147 |
850 0584 80E3 ldi r24,lo8(48) |
851 0586 8A83 std Y+2,r24 |
852 0588 BB82 std Y+3,r11 |
853 058a 62E0 ldi r22,lo8(2) |
854 058c 70E0 ldi r23,hi8(2) |
855 058e CE01 movw r24,r28 |
856 0590 0296 adiw r24,2 |
857 .L172: |
858 0592 0E94 0000 call PRINT |
859 .L147: |
860 0596 F0E2 ldi r31,lo8(32) |
861 0598 4F16 cp r4,r31 |
862 059a 5104 cpc r5,__zero_reg__ |
863 059c 01F4 brne .L149 |
864 059e 8AA9 ldd r24,Y+50 |
865 05a0 8A19 sub r24,r10 |
866 05a2 0E94 0000 call PAD_0 |
867 .L149: |
868 05a6 802F mov r24,r16 |
869 05a8 0E94 0000 call PAD_0 |
870 05ac 612F mov r22,r17 |
871 05ae 7727 clr r23 |
872 05b0 67FD sbrc r22,7 |
873 05b2 7095 com r23 |
874 05b4 C601 movw r24,r12 |
875 05b6 0E94 0000 call PRINT |
876 05ba E4FE sbrs r14,4 |
877 05bc 00C0 rjmp .L28 |
878 05be 8AA9 ldd r24,Y+50 |
879 05c0 8A19 sub r24,r10 |
880 05c2 0E94 0000 call PAD_SP |
881 05c6 00C0 rjmp .L28 |
882 .L35: |
883 .L152: |
884 /* epilogue: frame size=51 */ |
885 05c8 E396 adiw r28,51 |
886 05ca 0FB6 in __tmp_reg__,__SREG__ |
887 05cc F894 cli |
888 05ce DEBF out __SP_H__,r29 |
889 05d0 0FBE out __SREG__,__tmp_reg__ |
890 05d2 CDBF out __SP_L__,r28 |
891 05d4 DF91 pop r29 |
892 05d6 CF91 pop r28 |
893 05d8 1F91 pop r17 |
894 05da 0F91 pop r16 |
895 05dc FF90 pop r15 |
896 05de EF90 pop r14 |
897 05e0 DF90 pop r13 |
898 05e2 CF90 pop r12 |
899 05e4 BF90 pop r11 |
900 05e6 AF90 pop r10 |
901 05e8 9F90 pop r9 |
902 05ea 8F90 pop r8 |
903 05ec 7F90 pop r7 |
904 05ee 6F90 pop r6 |
905 05f0 5F90 pop r5 |
906 05f2 4F90 pop r4 |
907 05f4 3F90 pop r3 |
908 05f6 2F90 pop r2 |
909 05f8 0895 ret |
910 /* epilogue end (size=25) */ |
911 /* function _printf_P size 694 (643) */ |
913 .comm DiffNick,2,1 |
914 .comm DiffRoll,2,1 |
915 .comm SenderOkay,1,1 |
916 .comm CosinusNickWinkel,1,1 |
917 .comm CosinusRollWinkel,1,1 |
918 .comm durchschnitt_northing,4,1 |
919 .comm durchschnitt_easting,4,1 |
920 .comm gps_p,2,1 |
921 .comm gps_d,2,1 |
922 .comm skal,2,1 |
923 .comm gps_gethome,2,1 |
924 .comm PrintZiel,1,1 |
925 .comm RemoteTasten,1,1 |
926 .comm Timeout,1,1 |
927 .comm IntegralNick,4,1 |
928 .comm IntegralNick2,4,1 |
929 .comm IntegralRoll,4,1 |
930 .comm IntegralRoll2,4,1 |
931 .comm Mess_IntegralNick,4,1 |
932 .comm Mess_IntegralNick2,4,1 |
933 .comm Mess_IntegralRoll,4,1 |
934 .comm Mess_IntegralRoll2,4,1 |
935 .comm Integral_Gier,4,1 |
936 .comm Mess_Integral_Gier,4,1 |
937 .comm h,1,1 |
938 .comm m,1,1 |
939 .comm s,1,1 |
940 .comm Motor_Vorne,1,1 |
941 .comm Motor_Hinten,1,1 |
942 .comm Motor_Rechts,1,1 |
943 .comm Motor_Links,1,1 |
944 .comm Count,1,1 |
945 .comm MotorWert,5,1 |
946 .comm StickNick,2,1 |
947 .comm StickRoll,2,1 |
948 .comm StickGier,2,1 |
949 .comm MotorenEin,1,1 |
950 /* File "printf_P.c": code 786 = 0x0312 ( 710), prologues 36, epilogues 40 */ |
DEFINED SYMBOLS |
*ABS*:00000000 printf_P.c |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cckDPzml.s:3 *ABS*:0000003f __SREG__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cckDPzml.s:4 *ABS*:0000003e __SP_H__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cckDPzml.s:5 *ABS*:0000003d __SP_L__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cckDPzml.s:6 *ABS*:00000000 __tmp_reg__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cckDPzml.s:7 *ABS*:00000001 __zero_reg__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cckDPzml.s:13 .text:00000000 Putchar |
*COM*:00000001 PrintZiel |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cckDPzml.s:45 .text:00000032 PAD_0 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cckDPzml.s:66 .text:00000048 PAD_SP |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cckDPzml.s:87 .text:0000005e PRINTP |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cckDPzml.s:122 .text:0000008a PRINT |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/cckDPzml.s:152 .text:000000b2 _printf_P |
*COM*:00000002 DiffNick |
*COM*:00000002 DiffRoll |
*COM*:00000001 SenderOkay |
*COM*:00000001 CosinusNickWinkel |
*COM*:00000001 CosinusRollWinkel |
*COM*:00000004 durchschnitt_northing |
*COM*:00000004 durchschnitt_easting |
*COM*:00000002 gps_p |
*COM*:00000002 gps_d |
*COM*:00000002 skal |
*COM*:00000002 gps_gethome |
*COM*:00000001 RemoteTasten |
*COM*:00000001 Timeout |
*COM*:00000004 IntegralNick |
*COM*:00000004 IntegralNick2 |
*COM*:00000004 IntegralRoll |
*COM*:00000004 IntegralRoll2 |
*COM*:00000004 Mess_IntegralNick |
*COM*:00000004 Mess_IntegralNick2 |
*COM*:00000004 Mess_IntegralRoll |
*COM*:00000004 Mess_IntegralRoll2 |
*COM*:00000004 Integral_Gier |
*COM*:00000004 Mess_Integral_Gier |
*COM*:00000001 h |
*COM*:00000001 m |
*COM*:00000001 s |
*COM*:00000001 Motor_Vorne |
*COM*:00000001 Motor_Hinten |
*COM*:00000001 Motor_Rechts |
*COM*:00000001 Motor_Links |
*COM*:00000001 Count |
*COM*:00000005 MotorWert |
*COM*:00000002 StickNick |
*COM*:00000002 StickRoll |
*COM*:00000002 StickGier |
*COM*:00000001 MotorenEin |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
DispPtr |
DisplayBuff |
uart_putchar |
memchr |
__udivmodsi4 |
/branches/chris_hallo2/rc.c |
---|
0,0 → 1,85 |
/*####################################################################################### |
Decodieren eines RC Summen Signals |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "rc.h" |
#include "main.h" |
volatile int PPM_in[11]; |
volatile int PPM_diff[11]; // das diffenzierte Stick-Signal |
volatile unsigned char NewPpmData = 1; |
//############################################################################ |
//zum decodieren des PPM-Signals wird Timer1 mit seiner Input |
//Capture Funktion benutzt: |
void rc_sum_init (void) |
//############################################################################ |
{ |
TCCR1B=(1<<CS11)|(1<<CS10)|(1<<ICES1)|(1<<ICNC1);//|(1 << WGM12); //timer1 prescale 64 |
// PWM |
//TCCR1A = (1 << COM1B1) | (1 << WGM11) | (1 << WGM10); |
//TCCR1B |= (1 << WGM12); |
//OCR1B = 55; |
TIMSK1 |= _BV(ICIE1); |
AdNeutralGier = 0; |
AdNeutralRoll = 0; |
AdNeutralNick = 0; |
return; |
} |
//############################################################################ |
//Diese Routine startet und inizialisiert den Timer für RC |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int AltICR=0; |
signed int signal = 0; |
static int index; |
signal = (unsigned int) ICR1 - AltICR; |
AltICR = ICR1; |
//Syncronisationspause? |
if ((signal > 1500) && (signal < 8000)) |
{ |
index = 1; |
NewPpmData = 0; // Null bedeutet: Neue Daten |
// OCR2A = Poti2/2 + 80; |
} |
else |
{ |
if(index < 10) |
{ |
if((signal > 250) && (signal < 687)) |
{ |
signal -= 466; |
// Stabiles Signal |
if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10;} |
signal = (3 * (PPM_in[index]) + signal) / 4; |
//373 entspricht ca. 1.5ms also Mittelstellung |
PPM_diff[index] = signal - PPM_in[index]; |
PPM_in[index] = signal; |
} |
index++; |
/* if(index == 5) PORTD |= 0x20; else PORTD &= ~0x20; // Servosignal an J3 anlegen |
if(index == 6) PORTD |= 0x10; else PORTD &= ~0x10; // Servosignal an J4 anlegen |
if(index == 7) PORTD |= 0x08; else PORTD &= ~0x08; // Servosignal an J5 anlegen */ |
} |
} |
} |
/branches/chris_hallo2/rc.d |
---|
0,0 → 1,2 |
rc.o rc.d : rc.c rc.h main.h old_macros.h _settings.h printf_P.h timer0.h \ |
uart.h analog.h twimaster.h menu.h fc.h gps.h |
/branches/chris_hallo2/rc.h |
---|
0,0 → 1,29 |
/*####################################################################################### |
Derkodieren eines RC Summen Signals |
#######################################################################################*/ |
#ifndef _RC_H |
#define _RC_H |
#if defined (__AVR_ATmega32__) |
#define TIMER_TEILER CK64 |
#define TIMER_RELOAD_VALUE 250 |
#endif |
#if defined (__AVR_ATmega644__) |
//#define TIMER_TEILER CK64 |
#define TIMER_RELOAD_VALUE 250 |
//#define TIMER_TEILER CK256 // bei 20MHz |
//#define TIMER_RELOAD_VALUE -78 // bei 20MHz |
#endif |
#define GAS PPM_in[2] |
extern void rc_sum_init (void); |
extern volatile int PPM_in[11]; |
extern volatile int PPM_diff[11]; // das diffenzierte Stick-Signal |
extern volatile unsigned char NewPpmData; |
#endif //_RC_H |
/branches/chris_hallo2/rc.lst |
---|
0,0 → 1,286 |
1 .file "rc.c" |
2 .arch atmega644 |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .text |
11 .global rc_sum_init |
13 rc_sum_init: |
14 /* prologue: frame size=0 */ |
15 /* prologue end (size=0) */ |
16 0000 83EC ldi r24,lo8(-61) |
17 0002 8093 8100 sts 129,r24 |
18 0006 EFE6 ldi r30,lo8(111) |
19 0008 F0E0 ldi r31,hi8(111) |
20 000a 8081 ld r24,Z |
21 000c 8062 ori r24,lo8(32) |
22 000e 8083 st Z,r24 |
23 0010 1092 0000 sts (AdNeutralGier)+1,__zero_reg__ |
24 0014 1092 0000 sts AdNeutralGier,__zero_reg__ |
25 0018 1092 0000 sts (AdNeutralRoll)+1,__zero_reg__ |
26 001c 1092 0000 sts AdNeutralRoll,__zero_reg__ |
27 0020 1092 0000 sts (AdNeutralNick)+1,__zero_reg__ |
28 0024 1092 0000 sts AdNeutralNick,__zero_reg__ |
29 /* epilogue: frame size=0 */ |
30 0028 0895 ret |
31 /* epilogue end (size=1) */ |
32 /* function rc_sum_init size 21 (20) */ |
34 .global __vector_12 |
36 __vector_12: |
37 /* prologue: frame size=0 */ |
38 002a 1F92 push __zero_reg__ |
39 002c 0F92 push __tmp_reg__ |
40 002e 0FB6 in __tmp_reg__,__SREG__ |
41 0030 0F92 push __tmp_reg__ |
42 0032 1124 clr __zero_reg__ |
43 0034 0F93 push r16 |
44 0036 1F93 push r17 |
45 0038 2F93 push r18 |
46 003a 3F93 push r19 |
47 003c 4F93 push r20 |
48 003e 5F93 push r21 |
49 0040 6F93 push r22 |
50 0042 7F93 push r23 |
51 0044 8F93 push r24 |
52 0046 9F93 push r25 |
53 0048 AF93 push r26 |
54 004a BF93 push r27 |
55 004c CF93 push r28 |
56 004e DF93 push r29 |
57 0050 EF93 push r30 |
58 0052 FF93 push r31 |
59 /* prologue end (size=21) */ |
60 0054 2091 8600 lds r18,134 |
61 0058 3091 8700 lds r19,(134)+1 |
62 005c 8091 0000 lds r24,AltICR.1969 |
63 0060 9091 0000 lds r25,(AltICR.1969)+1 |
64 0064 281B sub r18,r24 |
65 0066 390B sbc r19,r25 |
66 0068 8091 8600 lds r24,134 |
67 006c 9091 8700 lds r25,(134)+1 |
68 0070 9093 0000 sts (AltICR.1969)+1,r25 |
69 0074 8093 0000 sts AltICR.1969,r24 |
70 0078 C901 movw r24,r18 |
71 007a 8D5D subi r24,lo8(-(-1501)) |
72 007c 9540 sbci r25,hi8(-(-1501)) |
73 007e 8356 subi r24,lo8(6499) |
74 0080 9941 sbci r25,hi8(6499) |
75 0082 00F4 brsh .L4 |
76 0084 81E0 ldi r24,lo8(1) |
77 0086 90E0 ldi r25,hi8(1) |
78 0088 9093 0000 sts (index.1971)+1,r25 |
79 008c 8093 0000 sts index.1971,r24 |
80 0090 1092 0000 sts NewPpmData,__zero_reg__ |
81 0094 00C0 rjmp .L14 |
82 .L4: |
83 0096 C091 0000 lds r28,index.1971 |
84 009a D091 0000 lds r29,(index.1971)+1 |
85 009e CA30 cpi r28,10 |
86 00a0 D105 cpc r29,__zero_reg__ |
87 00a2 04F0 brlt .+2 |
88 00a4 00C0 rjmp .L14 |
89 00a6 C901 movw r24,r18 |
90 00a8 8B5F subi r24,lo8(-(-251)) |
91 00aa 9040 sbci r25,hi8(-(-251)) |
92 00ac 845B subi r24,lo8(436) |
93 00ae 9140 sbci r25,hi8(436) |
94 00b0 00F0 brlo .+2 |
95 00b2 00C0 rjmp .L8 |
96 00b4 A901 movw r20,r18 |
97 00b6 425D subi r20,lo8(-(-466)) |
98 00b8 5140 sbci r21,hi8(-(-466)) |
99 00ba FE01 movw r30,r28 |
100 00bc EE0F lsl r30 |
101 00be FF1F rol r31 |
102 00c0 E050 subi r30,lo8(-(PPM_in)) |
103 00c2 F040 sbci r31,hi8(-(PPM_in)) |
104 00c4 8081 ld r24,Z |
105 00c6 9181 ldd r25,Z+1 |
106 00c8 FA01 movw r30,r20 |
107 00ca E81B sub r30,r24 |
108 00cc F90B sbc r31,r25 |
109 00ce CF01 movw r24,r30 |
110 00d0 F7FF sbrs r31,7 |
111 00d2 00C0 rjmp .L11 |
112 00d4 9095 com r25 |
113 00d6 8195 neg r24 |
114 00d8 9F4F sbci r25,lo8(-1) |
115 .L11: |
116 00da 0697 sbiw r24,6 |
117 00dc 04F4 brge .L10 |
118 00de 8091 0000 lds r24,SenderOkay |
119 00e2 883C cpi r24,lo8(-56) |
120 00e4 00F4 brsh .L10 |
121 00e6 8091 0000 lds r24,SenderOkay |
122 00ea 865F subi r24,lo8(-(10)) |
123 00ec 8093 0000 sts SenderOkay,r24 |
124 .L10: |
125 00f0 FE01 movw r30,r28 |
126 00f2 EE0F lsl r30 |
127 00f4 FF1F rol r31 |
128 00f6 8F01 movw r16,r30 |
129 00f8 0050 subi r16,lo8(-(PPM_in)) |
130 00fa 1040 sbci r17,hi8(-(PPM_in)) |
131 00fc D801 movw r26,r16 |
132 00fe 2D91 ld r18,X+ |
133 0100 3C91 ld r19,X |
134 0102 C901 movw r24,r18 |
135 0104 880F lsl r24 |
136 0106 991F rol r25 |
137 0108 820F add r24,r18 |
138 010a 931F adc r25,r19 |
139 010c 840F add r24,r20 |
140 010e 951F adc r25,r21 |
141 0110 64E0 ldi r22,lo8(4) |
142 0112 70E0 ldi r23,hi8(4) |
143 0114 0E94 0000 call __divmodhi4 |
144 0118 D801 movw r26,r16 |
145 011a 8D91 ld r24,X+ |
146 011c 9C91 ld r25,X |
147 011e 1197 sbiw r26,1 |
148 0120 9B01 movw r18,r22 |
149 0122 281B sub r18,r24 |
150 0124 390B sbc r19,r25 |
151 0126 E050 subi r30,lo8(-(PPM_diff)) |
152 0128 F040 sbci r31,hi8(-(PPM_diff)) |
153 012a 3183 std Z+1,r19 |
154 012c 2083 st Z,r18 |
155 012e 1196 adiw r26,1 |
156 0130 7C93 st X,r23 |
157 0132 6E93 st -X,r22 |
158 .L8: |
159 0134 2196 adiw r28,1 |
160 0136 D093 0000 sts (index.1971)+1,r29 |
161 013a C093 0000 sts index.1971,r28 |
162 .L14: |
163 /* epilogue: frame size=0 */ |
164 013e FF91 pop r31 |
165 0140 EF91 pop r30 |
166 0142 DF91 pop r29 |
167 0144 CF91 pop r28 |
168 0146 BF91 pop r27 |
169 0148 AF91 pop r26 |
170 014a 9F91 pop r25 |
171 014c 8F91 pop r24 |
172 014e 7F91 pop r23 |
173 0150 6F91 pop r22 |
174 0152 5F91 pop r21 |
175 0154 4F91 pop r20 |
176 0156 3F91 pop r19 |
177 0158 2F91 pop r18 |
178 015a 1F91 pop r17 |
179 015c 0F91 pop r16 |
180 015e 0F90 pop __tmp_reg__ |
181 0160 0FBE out __SREG__,__tmp_reg__ |
182 0162 0F90 pop __tmp_reg__ |
183 0164 1F90 pop __zero_reg__ |
184 0166 1895 reti |
185 /* epilogue end (size=21) */ |
186 /* function __vector_12 size 162 (120) */ |
188 .global NewPpmData |
189 .data |
192 NewPpmData: |
193 0000 01 .byte 1 |
194 .lcomm index.1971,2 |
195 .lcomm AltICR.1969,2 |
196 .comm PPM_in,22,1 |
197 .comm PPM_diff,22,1 |
198 .comm DiffNick,2,1 |
199 .comm DiffRoll,2,1 |
200 .comm SenderOkay,1,1 |
201 .comm CosinusNickWinkel,1,1 |
202 .comm CosinusRollWinkel,1,1 |
203 .comm durchschnitt_northing,4,1 |
204 .comm durchschnitt_easting,4,1 |
205 .comm gps_p,2,1 |
206 .comm gps_d,2,1 |
207 .comm skal,2,1 |
208 .comm gps_gethome,2,1 |
209 .comm RemoteTasten,1,1 |
210 .comm Timeout,1,1 |
211 .comm IntegralNick,4,1 |
212 .comm IntegralNick2,4,1 |
213 .comm IntegralRoll,4,1 |
214 .comm IntegralRoll2,4,1 |
215 .comm Mess_IntegralNick,4,1 |
216 .comm Mess_IntegralNick2,4,1 |
217 .comm Mess_IntegralRoll,4,1 |
218 .comm Mess_IntegralRoll2,4,1 |
219 .comm Integral_Gier,4,1 |
220 .comm Mess_Integral_Gier,4,1 |
221 .comm h,1,1 |
222 .comm m,1,1 |
223 .comm s,1,1 |
224 .comm Motor_Vorne,1,1 |
225 .comm Motor_Hinten,1,1 |
226 .comm Motor_Rechts,1,1 |
227 .comm Motor_Links,1,1 |
228 .comm Count,1,1 |
229 .comm MotorWert,5,1 |
230 .comm StickNick,2,1 |
231 .comm StickRoll,2,1 |
232 .comm StickGier,2,1 |
233 .comm MotorenEin,1,1 |
234 /* File "rc.c": code 183 = 0x00b7 ( 140), prologues 21, epilogues 22 */ |
DEFINED SYMBOLS |
*ABS*:00000000 rc.c |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccqyyvXd.s:3 *ABS*:0000003f __SREG__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccqyyvXd.s:4 *ABS*:0000003e __SP_H__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccqyyvXd.s:5 *ABS*:0000003d __SP_L__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccqyyvXd.s:6 *ABS*:00000000 __tmp_reg__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccqyyvXd.s:7 *ABS*:00000001 __zero_reg__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccqyyvXd.s:13 .text:00000000 rc_sum_init |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccqyyvXd.s:36 .text:0000002a __vector_12 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccqyyvXd.s:194 .bss:00000002 AltICR.1969 |
.bss:00000000 index.1971 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccqyyvXd.s:192 .data:00000000 NewPpmData |
*COM*:00000016 PPM_in |
*COM*:00000001 SenderOkay |
*COM*:00000016 PPM_diff |
*COM*:00000002 DiffNick |
*COM*:00000002 DiffRoll |
*COM*:00000001 CosinusNickWinkel |
*COM*:00000001 CosinusRollWinkel |
*COM*:00000004 durchschnitt_northing |
*COM*:00000004 durchschnitt_easting |
*COM*:00000002 gps_p |
*COM*:00000002 gps_d |
*COM*:00000002 skal |
*COM*:00000002 gps_gethome |
*COM*:00000001 RemoteTasten |
*COM*:00000001 Timeout |
*COM*:00000004 IntegralNick |
*COM*:00000004 IntegralNick2 |
*COM*:00000004 IntegralRoll |
*COM*:00000004 IntegralRoll2 |
*COM*:00000004 Mess_IntegralNick |
*COM*:00000004 Mess_IntegralNick2 |
*COM*:00000004 Mess_IntegralRoll |
*COM*:00000004 Mess_IntegralRoll2 |
*COM*:00000004 Integral_Gier |
*COM*:00000004 Mess_Integral_Gier |
*COM*:00000001 h |
*COM*:00000001 m |
*COM*:00000001 s |
*COM*:00000001 Motor_Vorne |
*COM*:00000001 Motor_Hinten |
*COM*:00000001 Motor_Rechts |
*COM*:00000001 Motor_Links |
*COM*:00000001 Count |
*COM*:00000005 MotorWert |
*COM*:00000002 StickNick |
*COM*:00000002 StickRoll |
*COM*:00000002 StickGier |
*COM*:00000001 MotorenEin |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
AdNeutralGier |
AdNeutralRoll |
AdNeutralNick |
__divmodhi4 |
/branches/chris_hallo2/readme.txt |
---|
0,0 → 1,84 |
GPS-Modifikation auf Basis der Original V0.6 by Holger Buss & Ingo Busker |
----- BETA V0.2----- |
Copyright by Christopher Hartmann und Daniel Schmitz. |
-Disclaimer- |
Wir übernehmen keinerlei Garantie für die Funktionstüchtigkeit dieser Software |
jegliche Änderung geschehen auf Eigene Gefahr |
für eventuelle Schäden übernehmen wir keinerlei Haftung |
______ |
Parametrierung ist noch nicht abgeschlossen !!!! |
Kompass nicht integriert !!!! -> Ufo muss nach Norden ausgerichtet sein !!!!!! |
Im Koptertool nicht vergessen GPS zu aktivieren ! |
Testparamter : P:2 / D:2 |
________ ***************ÄNDERUNGEN**************************** |
folgende Änderungen am GPS-Empfänger vornehmen (siehe auch Pitschu Anleitung für Details) |
folgende Einstellungen werden nicht mehr benötigt (muss nicht zwingend deaktiviert werden) |
unter Messages: |
-NAV-POSLLH |
-NAV-POSUTM |
-NAV-VELNED |
folgende Einstellungen müssen aktiviert werden: (für Target1) |
unter Messages: |
-NAV-POSECEF |
-NAV-VELECEF |
_________****************************************************** |
features: |
-Auslesen der GPS Daten im UBX Protokoll (modifizierte Version, - Original von Pitschu (Peter Schulten) ) |
- integrierter PD Regler - Parametrierung des P-, D-Anteils (der D-Anteil sollte ggf. durch Änderung im Quelltext weiter verkleinert werden) |
User Parameter 1: P-Regler, 2:D-Regler |
- Rotationsmatrix für Kompass |
- Postiton Hold (Aktivierung über Poti 1 ( 0=Aus , >0 =aktiviert) |
- kruzes Piepsen bestätigt Aktivierung des PH |
- rote LED der Flight-Ctrl für Statusanzeige: (blinkend : GPS Aktiv) |
- Aktivierung des Postiton-Hold ohne Empfang von GPS unterbunden |
- Einbinden des GPS-Empfängers bitte Erklärung von PITSCHU aus XUFO-Forum entnehmen (http://forum.xufo.net/bb/viewtopic.php?t=5980) |
----- BAUDRATE einstellen auf 57600 ------ |
_____ |
in Planung: (TWI: teilweise Integriert, siehe Quelltext -- UNGETESTET -- ) |
- Kompass (TWI) |
- dynamische Parametrierung anhand der mittleren Abweichung der GPS Daten (höhrere Genauigkeit im PH) |
-"Home Postition" (TWI) |
- Eingangsdatenfilterung (Kompensation von Ungenauigkeit) |
- Auslagerung auf externen Prozessor |
. |
/branches/chris_hallo2/timer0.c |
---|
0,0 → 1,139 |
#include "main.h" |
volatile unsigned int CountMilliseconds = 0; |
volatile static unsigned int tim_main; |
volatile unsigned char UpdateMotor = 0; |
volatile unsigned int cntKompass = 0; |
volatile unsigned int beeptime = 0; |
int ServoValue = 0; |
enum { |
STOP = 0, |
CK = 1, |
CK8 = 2, |
CK64 = 3, |
CK256 = 4, |
CK1024 = 5, |
T0_FALLING_EDGE = 6, |
T0_RISING_EDGE = 7 |
}; |
SIGNAL (SIG_OVERFLOW0) // 8kHz |
{ |
static unsigned char cnt_1ms = 1,cnt = 0; |
// TCNT0 -= 250;//TIMER_RELOAD_VALUE; |
if(!cnt--) |
{ |
cnt = 9; |
cnt_1ms++; |
cnt_1ms %= 2; |
if(!cnt_1ms) UpdateMotor = 1; |
CountMilliseconds++; |
if(Timeout) Timeout--; |
} |
if(beeptime > 1) |
{ |
beeptime--; |
PORTD |= (1<<2); |
} |
else |
PORTD &= ~(1<<2); |
if(EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV) |
{ |
if(PINC & 0x10) |
{ |
cntKompass++; |
} |
else |
{ |
if((cntKompass) && (cntKompass < 4000)) |
{ |
KompassValue = cntKompass; |
} |
// if(cntKompass < 10) cntKompass = 10; |
// KompassValue = (unsigned long)((unsigned long)(cntKompass-10)*720L + 1L) / 703L; |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
cntKompass = 0; |
} |
} |
} |
void Timer_Init(void) |
{ |
tim_main = SetDelay(10); |
TCCR0B = CK8; |
TCCR0A = (1<<COM0A1)|(1<<COM0B1)|3;//fast PWM |
OCR0A = 0; |
OCR0B = 120; |
TCNT0 = -TIMER_RELOAD_VALUE; // reload |
//OCR1 = 0x00; |
TCCR2A=(1<<COM2A1)|(1<<COM2A0)|3; |
TCCR2B=(0<<CS20)|(1<<CS21)|(1<<CS22); |
// TIMSK2 |= _BV(TOIE2); |
TIMSK2 |= _BV(OCIE2A); |
TIMSK0 |= _BV(TOIE0); |
OCR2A = 10; |
TCNT2 = 0; |
} |
// ----------------------------------------------------------------------- |
unsigned int SetDelay (unsigned int t) |
{ |
// TIMSK0 &= ~_BV(TOIE0); |
return(CountMilliseconds + t + 1); |
// TIMSK0 |= _BV(TOIE0); |
} |
// ----------------------------------------------------------------------- |
char CheckDelay(unsigned int t) |
{ |
// TIMSK0 &= ~_BV(TOIE0); |
return(((t - CountMilliseconds) & 0x8000) >> 9); |
// TIMSK0 |= _BV(TOIE0); |
} |
// ----------------------------------------------------------------------- |
void Delay_ms(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)); |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Servo ansteuern |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(SIG_OUTPUT_COMPARE2A) |
{ |
static unsigned char timer = 10; |
if(!timer--) |
{ |
TCCR2A=(1<<COM2A1)|(0<<COM2A0)|3; |
ServoValue = Parameter_ServoNickControl; |
if(EE_Parameter.ServoNickCompInvert & 0x01) ServoValue += ((long) EE_Parameter.ServoNickComp * (IntegralNick / 128)) / 512; |
else ServoValue -= ((long) EE_Parameter.ServoNickComp * (IntegralNick / 128)) / 512; |
if(ServoValue < EE_Parameter.ServoNickMin) ServoValue = EE_Parameter.ServoNickMin; |
else if(ServoValue > EE_Parameter.ServoNickMax) ServoValue = EE_Parameter.ServoNickMax; |
DebugOut.Analog[10] = ServoValue; |
OCR2A = ServoValue;// + 75; |
timer = EE_Parameter.ServoNickRefresh; |
} |
else |
{ |
TCCR2A =3; |
PORTD&=~0x80; |
} |
} |
/branches/chris_hallo2/timer0.d |
---|
0,0 → 1,2 |
timer0.o timer0.d : timer0.c main.h old_macros.h _settings.h printf_P.h timer0.h \ |
uart.h analog.h twimaster.h menu.h rc.h fc.h gps.h |
/branches/chris_hallo2/timer0.h |
---|
0,0 → 1,14 |
#define TIMER_TEILER CK8 |
#define TIMER_RELOAD_VALUE 250 |
void Timer_Init(void); |
void Delay_ms(unsigned int); |
unsigned int SetDelay (unsigned int t); |
char CheckDelay (unsigned int t); |
extern volatile unsigned int CountMilliseconds; |
extern volatile unsigned char UpdateMotor; |
extern volatile unsigned int beeptime; |
extern volatile unsigned int cntKompass; |
extern int ServoValue; |
/branches/chris_hallo2/timer0.lst |
---|
0,0 → 1,506 |
1 .file "timer0.c" |
2 .arch atmega644 |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .text |
11 .global __vector_18 |
13 __vector_18: |
14 /* prologue: frame size=0 */ |
15 0000 1F92 push __zero_reg__ |
16 0002 0F92 push __tmp_reg__ |
17 0004 0FB6 in __tmp_reg__,__SREG__ |
18 0006 0F92 push __tmp_reg__ |
19 0008 1124 clr __zero_reg__ |
20 000a 2F93 push r18 |
21 000c 3F93 push r19 |
22 000e 5F93 push r21 |
23 0010 6F93 push r22 |
24 0012 7F93 push r23 |
25 0014 8F93 push r24 |
26 0016 9F93 push r25 |
27 0018 AF93 push r26 |
28 001a BF93 push r27 |
29 /* prologue end (size=14) */ |
30 001c 8091 0000 lds r24,cnt.1975 |
31 0020 8150 subi r24,lo8(-(-1)) |
32 0022 8093 0000 sts cnt.1975,r24 |
33 0026 8F3F cpi r24,lo8(-1) |
34 0028 01F4 brne .L2 |
35 002a 89E0 ldi r24,lo8(9) |
36 002c 8093 0000 sts cnt.1975,r24 |
37 0030 8091 0000 lds r24,cnt_1ms.1974 |
38 0034 8F5F subi r24,lo8(-(1)) |
39 0036 8170 andi r24,lo8(1) |
40 0038 8093 0000 sts cnt_1ms.1974,r24 |
41 003c 8823 tst r24 |
42 003e 01F4 brne .L4 |
43 0040 81E0 ldi r24,lo8(1) |
44 0042 8093 0000 sts UpdateMotor,r24 |
45 .L4: |
46 0046 8091 0000 lds r24,CountMilliseconds |
47 004a 9091 0000 lds r25,(CountMilliseconds)+1 |
48 004e 0196 adiw r24,1 |
49 0050 9093 0000 sts (CountMilliseconds)+1,r25 |
50 0054 8093 0000 sts CountMilliseconds,r24 |
51 0058 8091 0000 lds r24,Timeout |
52 005c 8823 tst r24 |
53 005e 01F0 breq .L2 |
54 0060 8091 0000 lds r24,Timeout |
55 0064 8150 subi r24,lo8(-(-1)) |
56 0066 8093 0000 sts Timeout,r24 |
57 .L2: |
58 006a 8091 0000 lds r24,beeptime |
59 006e 9091 0000 lds r25,(beeptime)+1 |
60 0072 0297 sbiw r24,2 |
61 0074 00F0 brlo .L7 |
62 0076 8091 0000 lds r24,beeptime |
63 007a 9091 0000 lds r25,(beeptime)+1 |
64 007e 0197 sbiw r24,1 |
65 0080 9093 0000 sts (beeptime)+1,r25 |
66 0084 8093 0000 sts beeptime,r24 |
67 0088 5A9A sbi 43-0x20,2 |
68 008a 00C0 rjmp .L9 |
69 .L7: |
70 008c 5A98 cbi 43-0x20,2 |
71 .L9: |
72 008e 8091 0000 lds r24,EE_Parameter+8 |
73 0092 83FF sbrs r24,3 |
74 0094 00C0 rjmp .L17 |
75 0096 349B sbis 38-0x20,4 |
76 0098 00C0 rjmp .L12 |
77 009a 8091 0000 lds r24,cntKompass |
78 009e 9091 0000 lds r25,(cntKompass)+1 |
79 00a2 0196 adiw r24,1 |
80 00a4 9093 0000 sts (cntKompass)+1,r25 |
81 00a8 8093 0000 sts cntKompass,r24 |
82 00ac 00C0 rjmp .L17 |
83 .L12: |
84 00ae 8091 0000 lds r24,cntKompass |
85 00b2 9091 0000 lds r25,(cntKompass)+1 |
86 00b6 892B or r24,r25 |
87 00b8 01F0 breq .L14 |
88 00ba 8091 0000 lds r24,cntKompass |
89 00be 9091 0000 lds r25,(cntKompass)+1 |
90 00c2 805A subi r24,lo8(4000) |
91 00c4 9F40 sbci r25,hi8(4000) |
92 00c6 00F4 brsh .L14 |
93 00c8 8091 0000 lds r24,cntKompass |
94 00cc 9091 0000 lds r25,(cntKompass)+1 |
95 00d0 9093 0000 sts (KompassValue)+1,r25 |
96 00d4 8093 0000 sts KompassValue,r24 |
97 .L14: |
98 00d8 8091 0000 lds r24,KompassValue |
99 00dc 9091 0000 lds r25,(KompassValue)+1 |
100 00e0 2091 0000 lds r18,KompassStartwert |
101 00e4 3091 0000 lds r19,(KompassStartwert)+1 |
102 00e8 821B sub r24,r18 |
103 00ea 930B sbc r25,r19 |
104 00ec 845E subi r24,lo8(-(540)) |
105 00ee 9D4F sbci r25,hi8(-(540)) |
106 00f0 68E6 ldi r22,lo8(360) |
107 00f2 71E0 ldi r23,hi8(360) |
108 00f4 0E94 0000 call __divmodhi4 |
109 00f8 845B subi r24,lo8(-(-180)) |
110 00fa 9040 sbci r25,hi8(-(-180)) |
111 00fc 9093 0000 sts (KompassRichtung)+1,r25 |
112 0100 8093 0000 sts KompassRichtung,r24 |
113 0104 1092 0000 sts (cntKompass)+1,__zero_reg__ |
114 0108 1092 0000 sts cntKompass,__zero_reg__ |
115 .L17: |
116 /* epilogue: frame size=0 */ |
117 010c BF91 pop r27 |
118 010e AF91 pop r26 |
119 0110 9F91 pop r25 |
120 0112 8F91 pop r24 |
121 0114 7F91 pop r23 |
122 0116 6F91 pop r22 |
123 0118 5F91 pop r21 |
124 011a 3F91 pop r19 |
125 011c 2F91 pop r18 |
126 011e 0F90 pop __tmp_reg__ |
127 0120 0FBE out __SREG__,__tmp_reg__ |
128 0122 0F90 pop __tmp_reg__ |
129 0124 1F90 pop __zero_reg__ |
130 0126 1895 reti |
131 /* epilogue end (size=14) */ |
132 /* function __vector_18 size 150 (122) */ |
134 .global SetDelay |
136 SetDelay: |
137 /* prologue: frame size=0 */ |
138 /* prologue end (size=0) */ |
139 0128 2091 0000 lds r18,CountMilliseconds |
140 012c 3091 0000 lds r19,(CountMilliseconds)+1 |
141 0130 2F5F subi r18,lo8(-(1)) |
142 0132 3F4F sbci r19,hi8(-(1)) |
143 0134 820F add r24,r18 |
144 0136 931F adc r25,r19 |
145 /* epilogue: frame size=0 */ |
146 0138 0895 ret |
147 /* epilogue end (size=1) */ |
148 /* function SetDelay size 9 (8) */ |
150 .global CheckDelay |
152 CheckDelay: |
153 /* prologue: frame size=0 */ |
154 /* prologue end (size=0) */ |
155 013a 2091 0000 lds r18,CountMilliseconds |
156 013e 3091 0000 lds r19,(CountMilliseconds)+1 |
157 0142 821B sub r24,r18 |
158 0144 930B sbc r25,r19 |
159 0146 892F mov r24,r25 |
160 0148 9927 clr r25 |
161 014a 8695 lsr r24 |
162 014c 8074 andi r24,lo8(64) |
163 014e 9927 clr r25 |
164 /* epilogue: frame size=0 */ |
165 0150 0895 ret |
166 /* epilogue end (size=1) */ |
167 /* function CheckDelay size 12 (11) */ |
169 .global __vector_9 |
171 __vector_9: |
172 /* prologue: frame size=0 */ |
173 0152 1F92 push __zero_reg__ |
174 0154 0F92 push __tmp_reg__ |
175 0156 0FB6 in __tmp_reg__,__SREG__ |
176 0158 0F92 push __tmp_reg__ |
177 015a 1124 clr __zero_reg__ |
178 015c EF92 push r14 |
179 015e FF92 push r15 |
180 0160 0F93 push r16 |
181 0162 1F93 push r17 |
182 0164 2F93 push r18 |
183 0166 3F93 push r19 |
184 0168 4F93 push r20 |
185 016a 5F93 push r21 |
186 016c 6F93 push r22 |
187 016e 7F93 push r23 |
188 0170 8F93 push r24 |
189 0172 9F93 push r25 |
190 0174 AF93 push r26 |
191 0176 BF93 push r27 |
192 0178 CF93 push r28 |
193 017a DF93 push r29 |
194 017c EF93 push r30 |
195 017e FF93 push r31 |
196 /* prologue end (size=23) */ |
197 0180 8091 0000 lds r24,timer.2061 |
198 0184 8150 subi r24,lo8(-(-1)) |
199 0186 8093 0000 sts timer.2061,r24 |
200 018a 8F3F cpi r24,lo8(-1) |
201 018c 01F0 breq .+2 |
202 018e 00C0 rjmp .L23 |
203 0190 83E8 ldi r24,lo8(-125) |
204 0192 8093 B000 sts 176,r24 |
205 0196 8091 0000 lds r24,Parameter_ServoNickControl |
206 019a C82F mov r28,r24 |
207 019c DD27 clr r29 |
208 019e D093 0000 sts (ServoValue)+1,r29 |
209 01a2 C093 0000 sts ServoValue,r28 |
210 01a6 8091 0000 lds r24,EE_Parameter+38 |
211 01aa E090 0000 lds r14,EE_Parameter+34 |
212 01ae 80FF sbrs r24,0 |
213 01b0 00C0 rjmp .L25 |
214 01b2 6091 0000 lds r22,IntegralNick |
215 01b6 7091 0000 lds r23,(IntegralNick)+1 |
216 01ba 8091 0000 lds r24,(IntegralNick)+2 |
217 01be 9091 0000 lds r25,(IntegralNick)+3 |
218 01c2 FF24 clr r15 |
219 01c4 0027 clr r16 |
220 01c6 1127 clr r17 |
221 01c8 20E8 ldi r18,lo8(128) |
222 01ca 30E0 ldi r19,hi8(128) |
223 01cc 40E0 ldi r20,hlo8(128) |
224 01ce 50E0 ldi r21,hhi8(128) |
225 01d0 0E94 0000 call __divmodsi4 |
226 01d4 C801 movw r24,r16 |
227 01d6 B701 movw r22,r14 |
228 01d8 0E94 0000 call __mulsi3 |
229 01dc 20E0 ldi r18,lo8(512) |
230 01de 32E0 ldi r19,hi8(512) |
231 01e0 40E0 ldi r20,hlo8(512) |
232 01e2 50E0 ldi r21,hhi8(512) |
233 01e4 0E94 0000 call __divmodsi4 |
234 01e8 C20F add r28,r18 |
235 01ea D31F adc r29,r19 |
236 01ec 00C0 rjmp .L34 |
237 .L25: |
238 01ee 6091 0000 lds r22,IntegralNick |
239 01f2 7091 0000 lds r23,(IntegralNick)+1 |
240 01f6 8091 0000 lds r24,(IntegralNick)+2 |
241 01fa 9091 0000 lds r25,(IntegralNick)+3 |
242 01fe FF24 clr r15 |
243 0200 0027 clr r16 |
244 0202 1127 clr r17 |
245 0204 20E8 ldi r18,lo8(128) |
246 0206 30E0 ldi r19,hi8(128) |
247 0208 40E0 ldi r20,hlo8(128) |
248 020a 50E0 ldi r21,hhi8(128) |
249 020c 0E94 0000 call __divmodsi4 |
250 0210 C801 movw r24,r16 |
251 0212 B701 movw r22,r14 |
252 0214 0E94 0000 call __mulsi3 |
253 0218 20E0 ldi r18,lo8(512) |
254 021a 32E0 ldi r19,hi8(512) |
255 021c 40E0 ldi r20,hlo8(512) |
256 021e 50E0 ldi r21,hhi8(512) |
257 0220 0E94 0000 call __divmodsi4 |
258 0224 C21B sub r28,r18 |
259 0226 D30B sbc r29,r19 |
260 .L34: |
261 0228 D093 0000 sts (ServoValue)+1,r29 |
262 022c C093 0000 sts ServoValue,r28 |
263 0230 2091 0000 lds r18,ServoValue |
264 0234 3091 0000 lds r19,(ServoValue)+1 |
265 0238 8091 0000 lds r24,EE_Parameter+35 |
266 023c 9927 clr r25 |
267 023e 2817 cp r18,r24 |
268 0240 3907 cpc r19,r25 |
269 0242 04F0 brlt .L35 |
270 0244 8091 0000 lds r24,EE_Parameter+36 |
271 0248 9927 clr r25 |
272 024a 8217 cp r24,r18 |
273 024c 9307 cpc r25,r19 |
274 024e 04F4 brge .L30 |
275 .L35: |
276 0250 9093 0000 sts (ServoValue)+1,r25 |
277 0254 8093 0000 sts ServoValue,r24 |
278 .L30: |
279 0258 8091 0000 lds r24,ServoValue |
280 025c 9091 0000 lds r25,(ServoValue)+1 |
281 0260 9093 0000 sts (DebugOut+38)+1,r25 |
282 0264 8093 0000 sts DebugOut+38,r24 |
283 0268 8093 B300 sts 179,r24 |
284 026c 8091 0000 lds r24,EE_Parameter+37 |
285 0270 8093 0000 sts timer.2061,r24 |
286 0274 00C0 rjmp .L33 |
287 .L23: |
288 0276 83E0 ldi r24,lo8(3) |
289 0278 8093 B000 sts 176,r24 |
290 027c 5F98 cbi 43-0x20,7 |
291 .L33: |
292 /* epilogue: frame size=0 */ |
293 027e FF91 pop r31 |
294 0280 EF91 pop r30 |
295 0282 DF91 pop r29 |
296 0284 CF91 pop r28 |
297 0286 BF91 pop r27 |
298 0288 AF91 pop r26 |
299 028a 9F91 pop r25 |
300 028c 8F91 pop r24 |
301 028e 7F91 pop r23 |
302 0290 6F91 pop r22 |
303 0292 5F91 pop r21 |
304 0294 4F91 pop r20 |
305 0296 3F91 pop r19 |
306 0298 2F91 pop r18 |
307 029a 1F91 pop r17 |
308 029c 0F91 pop r16 |
309 029e FF90 pop r15 |
310 02a0 EF90 pop r14 |
311 02a2 0F90 pop __tmp_reg__ |
312 02a4 0FBE out __SREG__,__tmp_reg__ |
313 02a6 0F90 pop __tmp_reg__ |
314 02a8 1F90 pop __zero_reg__ |
315 02aa 1895 reti |
316 /* epilogue end (size=23) */ |
317 /* function __vector_9 size 173 (127) */ |
319 .global Timer_Init |
321 Timer_Init: |
322 /* prologue: frame size=0 */ |
323 /* prologue end (size=0) */ |
324 02ac 8091 0000 lds r24,CountMilliseconds |
325 02b0 9091 0000 lds r25,(CountMilliseconds)+1 |
326 02b4 0B96 adiw r24,11 |
327 02b6 9093 0000 sts (tim_main)+1,r25 |
328 02ba 8093 0000 sts tim_main,r24 |
329 02be 82E0 ldi r24,lo8(2) |
330 02c0 85BD out 69-0x20,r24 |
331 02c2 83EA ldi r24,lo8(-93) |
332 02c4 84BD out 68-0x20,r24 |
333 02c6 17BC out 71-0x20,__zero_reg__ |
334 02c8 88E7 ldi r24,lo8(120) |
335 02ca 88BD out 72-0x20,r24 |
336 02cc 96E0 ldi r25,lo8(6) |
337 02ce 96BD out 70-0x20,r25 |
338 02d0 83EC ldi r24,lo8(-61) |
339 02d2 8093 B000 sts 176,r24 |
340 02d6 9093 B100 sts 177,r25 |
341 02da E0E7 ldi r30,lo8(112) |
342 02dc F0E0 ldi r31,hi8(112) |
343 02de 8081 ld r24,Z |
344 02e0 8260 ori r24,lo8(2) |
345 02e2 8083 st Z,r24 |
346 02e4 EEE6 ldi r30,lo8(110) |
347 02e6 F0E0 ldi r31,hi8(110) |
348 02e8 8081 ld r24,Z |
349 02ea 8160 ori r24,lo8(1) |
350 02ec 8083 st Z,r24 |
351 02ee 8AE0 ldi r24,lo8(10) |
352 02f0 8093 B300 sts 179,r24 |
353 02f4 1092 B200 sts 178,__zero_reg__ |
354 /* epilogue: frame size=0 */ |
355 02f8 0895 ret |
356 /* epilogue end (size=1) */ |
357 /* function Timer_Init size 39 (38) */ |
359 .global Delay_ms |
361 Delay_ms: |
362 /* prologue: frame size=0 */ |
363 /* prologue end (size=0) */ |
364 02fa 2091 0000 lds r18,CountMilliseconds |
365 02fe 3091 0000 lds r19,(CountMilliseconds)+1 |
366 0302 2F5F subi r18,lo8(-(1)) |
367 0304 3F4F sbci r19,hi8(-(1)) |
368 0306 280F add r18,r24 |
369 0308 391F adc r19,r25 |
370 .L39: |
371 030a 8091 0000 lds r24,CountMilliseconds |
372 030e 9091 0000 lds r25,(CountMilliseconds)+1 |
373 0312 A901 movw r20,r18 |
374 0314 481B sub r20,r24 |
375 0316 590B sbc r21,r25 |
376 0318 57FF sbrs r21,7 |
377 031a 00C0 rjmp .L39 |
378 /* epilogue: frame size=0 */ |
379 031c 0895 ret |
380 /* epilogue end (size=1) */ |
381 /* function Delay_ms size 18 (17) */ |
383 .global CountMilliseconds |
384 .global CountMilliseconds |
385 .section .bss |
388 CountMilliseconds: |
389 0000 0000 .skip 2,0 |
390 .global UpdateMotor |
391 .global UpdateMotor |
394 UpdateMotor: |
395 0002 00 .skip 1,0 |
396 .global cntKompass |
397 .global cntKompass |
400 cntKompass: |
401 0003 0000 .skip 2,0 |
402 .global beeptime |
403 .global beeptime |
406 beeptime: |
407 0005 0000 .skip 2,0 |
408 .global ServoValue |
409 .global ServoValue |
412 ServoValue: |
413 0007 0000 .skip 2,0 |
414 .data |
417 timer.2061: |
418 0000 0A .byte 10 |
419 .lcomm cnt.1975,1 |
422 cnt_1ms.1974: |
423 0001 01 .byte 1 |
424 .lcomm tim_main,2 |
425 .comm DiffNick,2,1 |
426 .comm DiffRoll,2,1 |
427 .comm SenderOkay,1,1 |
428 .comm CosinusNickWinkel,1,1 |
429 .comm CosinusRollWinkel,1,1 |
430 .comm durchschnitt_northing,4,1 |
431 .comm durchschnitt_easting,4,1 |
432 .comm gps_p,2,1 |
433 .comm gps_d,2,1 |
434 .comm skal,2,1 |
435 .comm gps_gethome,2,1 |
436 .comm RemoteTasten,1,1 |
437 .comm Timeout,1,1 |
438 .comm IntegralNick,4,1 |
439 .comm IntegralNick2,4,1 |
440 .comm IntegralRoll,4,1 |
441 .comm IntegralRoll2,4,1 |
442 .comm Mess_IntegralNick,4,1 |
443 .comm Mess_IntegralNick2,4,1 |
444 .comm Mess_IntegralRoll,4,1 |
445 .comm Mess_IntegralRoll2,4,1 |
446 .comm Integral_Gier,4,1 |
447 .comm Mess_Integral_Gier,4,1 |
448 .comm h,1,1 |
449 .comm m,1,1 |
450 .comm s,1,1 |
451 .comm Motor_Vorne,1,1 |
452 .comm Motor_Hinten,1,1 |
453 .comm Motor_Rechts,1,1 |
454 .comm Motor_Links,1,1 |
455 .comm Count,1,1 |
456 .comm MotorWert,5,1 |
457 .comm StickNick,2,1 |
458 .comm StickRoll,2,1 |
459 .comm StickGier,2,1 |
460 .comm MotorenEin,1,1 |
461 /* File "timer0.c": code 401 = 0x0191 ( 323), prologues 37, epilogues 41 */ |
DEFINED SYMBOLS |
*ABS*:00000000 timer0.c |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccHWrDwn.s:3 *ABS*:0000003f __SREG__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccHWrDwn.s:4 *ABS*:0000003e __SP_H__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccHWrDwn.s:5 *ABS*:0000003d __SP_L__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccHWrDwn.s:6 *ABS*:00000000 __tmp_reg__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccHWrDwn.s:7 *ABS*:00000001 __zero_reg__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccHWrDwn.s:13 .text:00000000 __vector_18 |
.bss:00000009 cnt.1975 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccHWrDwn.s:422 .data:00000001 cnt_1ms.1974 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccHWrDwn.s:394 .bss:00000002 UpdateMotor |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccHWrDwn.s:388 .bss:00000000 CountMilliseconds |
*COM*:00000001 Timeout |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccHWrDwn.s:406 .bss:00000005 beeptime |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccHWrDwn.s:400 .bss:00000003 cntKompass |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccHWrDwn.s:136 .text:00000128 SetDelay |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccHWrDwn.s:152 .text:0000013a CheckDelay |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccHWrDwn.s:171 .text:00000152 __vector_9 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccHWrDwn.s:417 .data:00000000 timer.2061 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccHWrDwn.s:412 .bss:00000007 ServoValue |
*COM*:00000004 IntegralNick |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccHWrDwn.s:321 .text:000002ac Timer_Init |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccHWrDwn.s:419 .bss:0000000a tim_main |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccHWrDwn.s:361 .text:000002fa Delay_ms |
*COM*:00000002 DiffNick |
*COM*:00000002 DiffRoll |
*COM*:00000001 SenderOkay |
*COM*:00000001 CosinusNickWinkel |
*COM*:00000001 CosinusRollWinkel |
*COM*:00000004 durchschnitt_northing |
*COM*:00000004 durchschnitt_easting |
*COM*:00000002 gps_p |
*COM*:00000002 gps_d |
*COM*:00000002 skal |
*COM*:00000002 gps_gethome |
*COM*:00000001 RemoteTasten |
*COM*:00000004 IntegralNick2 |
*COM*:00000004 IntegralRoll |
*COM*:00000004 IntegralRoll2 |
*COM*:00000004 Mess_IntegralNick |
*COM*:00000004 Mess_IntegralNick2 |
*COM*:00000004 Mess_IntegralRoll |
*COM*:00000004 Mess_IntegralRoll2 |
*COM*:00000004 Integral_Gier |
*COM*:00000004 Mess_Integral_Gier |
*COM*:00000001 h |
*COM*:00000001 m |
*COM*:00000001 s |
*COM*:00000001 Motor_Vorne |
*COM*:00000001 Motor_Hinten |
*COM*:00000001 Motor_Rechts |
*COM*:00000001 Motor_Links |
*COM*:00000001 Count |
*COM*:00000005 MotorWert |
*COM*:00000002 StickNick |
*COM*:00000002 StickRoll |
*COM*:00000002 StickGier |
*COM*:00000001 MotorenEin |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
EE_Parameter |
KompassValue |
KompassStartwert |
__divmodhi4 |
KompassRichtung |
Parameter_ServoNickControl |
__divmodsi4 |
__mulsi3 |
DebugOut |
/branches/chris_hallo2/twimaster.c |
---|
0,0 → 1,131 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
unsigned char twi_state = 0; |
unsigned char motor = 0; |
unsigned char motorread = 0; |
unsigned char motor_rx[8]; |
//############################################################################ |
//Initzialisieren der I2C (TWI) Schnittstelle |
void i2c_init(void) |
//############################################################################ |
{ |
TWSR = 0; |
TWBR = ((SYSCLK/SCL_CLOCK)-16)/2; |
} |
//############################################################################ |
//Start I2C |
char i2c_start(void) |
//############################################################################ |
{ |
TWCR = (1<<TWSTA) | (1<<TWEN) | (1<<TWINT) | (1<<TWIE); |
return(0); |
} |
//############################################################################ |
//Start I2C |
void i2c_stop(void) |
//############################################################################ |
{ |
TWCR = (1<<TWEN) | (1<<TWSTO) | (1<<TWINT); |
} |
//############################################################################ |
//Start I2C |
char i2c_write_byte(char byte) |
//############################################################################ |
{ |
TWSR = 0x00; |
TWDR = byte; |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE); |
return(0); |
} |
//############################################################################ |
//Start I2C |
SIGNAL (TWI_vect) |
//############################################################################ |
{ |
switch (twi_state++) |
{ |
case 0: |
i2c_write_byte(0x52+(motor*2)); |
break; |
case 1: |
switch(motor++) |
{ |
case 0: |
i2c_write_byte(Motor_Vorne); |
break; |
case 1: |
i2c_write_byte(Motor_Hinten); |
break; |
case 2: |
i2c_write_byte(Motor_Rechts); |
break; |
case 3: |
i2c_write_byte(Motor_Links); |
break; |
} |
break; |
case 2: |
i2c_stop(); |
if (motor<4) twi_state = 0; |
else motor = 0; |
i2c_start(); |
break; |
//Liest Daten von Motor |
case 3: |
i2c_write_byte(0x53+(motorread*2)); |
break; |
case 4: |
switch(motorread) |
{ |
case 0: |
i2c_write_byte(Motor_Vorne); |
break; |
case 1: |
i2c_write_byte(Motor_Hinten); |
break; |
case 2: |
i2c_write_byte(Motor_Rechts); |
break; |
case 3: |
i2c_write_byte(Motor_Links); |
break; |
} |
break; |
case 5: //1 Byte vom Motor lesen |
motor_rx[motorread] = TWDR; |
case 6: |
switch(motorread) |
{ |
case 0: |
i2c_write_byte(Motor_Vorne); |
break; |
case 1: |
i2c_write_byte(Motor_Hinten); |
break; |
case 2: |
i2c_write_byte(Motor_Rechts); |
break; |
case 3: |
i2c_write_byte(Motor_Links); |
break; |
} |
break; |
case 7: //2 Byte vom Motor lesen |
motor_rx[motorread+4] = TWDR; |
motorread++; |
if (motorread>3) motorread=0; |
i2c_stop(); |
twi_state = 0; |
} |
} |
/branches/chris_hallo2/twimaster.d |
---|
0,0 → 1,2 |
twimaster.o twimaster.d : twimaster.c main.h old_macros.h _settings.h printf_P.h \ |
timer0.h uart.h analog.h twimaster.h menu.h rc.h fc.h gps.h |
/branches/chris_hallo2/twimaster.h |
---|
0,0 → 1,32 |
/*############################################################################ |
############################################################################*/ |
#ifndef _I2C_MASTER_H |
#define _I2C_MASTER_H |
//############################################################################ |
// I2C Konstanten |
#define SCL_CLOCK 200000L |
#define I2C_TIMEOUT 30000 |
#define I2C_START 0x08 |
#define I2C_REPEATED_START 0x10 |
#define I2C_TX_SLA_ACK 0x18 |
#define I2C_TX_DATA_ACK 0x28 |
#define I2C_RX_SLA_ACK 0x40 |
#define I2C_RX_DATA_ACK 0x50 |
//############################################################################ |
extern unsigned char twi_state; |
extern unsigned char motor; |
extern unsigned char motorread; |
extern unsigned char motor_rx[8]; |
void i2c_init (void); // I2C initialisieren |
char i2c_start (void); // Start I2C |
void i2c_stop (void); // Stop I2C |
char i2c_write_byte (char byte); // 1 Byte schreiben |
#endif |
/branches/chris_hallo2/twimaster.lst |
---|
0,0 → 1,321 |
1 .file "twimaster.c" |
2 .arch atmega644 |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .text |
11 .global i2c_init |
13 i2c_init: |
14 /* prologue: frame size=0 */ |
15 /* prologue end (size=0) */ |
16 0000 1092 B900 sts 185,__zero_reg__ |
17 0004 8AE2 ldi r24,lo8(42) |
18 0006 8093 B800 sts 184,r24 |
19 /* epilogue: frame size=0 */ |
20 000a 0895 ret |
21 /* epilogue end (size=1) */ |
22 /* function i2c_init size 6 (5) */ |
24 .global i2c_start |
26 i2c_start: |
27 /* prologue: frame size=0 */ |
28 /* prologue end (size=0) */ |
29 000c 85EA ldi r24,lo8(-91) |
30 000e 8093 BC00 sts 188,r24 |
31 0012 80E0 ldi r24,lo8(0) |
32 0014 90E0 ldi r25,hi8(0) |
33 /* epilogue: frame size=0 */ |
34 0016 0895 ret |
35 /* epilogue end (size=1) */ |
36 /* function i2c_start size 6 (5) */ |
38 .global i2c_stop |
40 i2c_stop: |
41 /* prologue: frame size=0 */ |
42 /* prologue end (size=0) */ |
43 0018 84E9 ldi r24,lo8(-108) |
44 001a 8093 BC00 sts 188,r24 |
45 /* epilogue: frame size=0 */ |
46 001e 0895 ret |
47 /* epilogue end (size=1) */ |
48 /* function i2c_stop size 4 (3) */ |
50 .global i2c_write_byte |
52 i2c_write_byte: |
53 /* prologue: frame size=0 */ |
54 /* prologue end (size=0) */ |
55 0020 1092 B900 sts 185,__zero_reg__ |
56 0024 8093 BB00 sts 187,r24 |
57 0028 85E8 ldi r24,lo8(-123) |
58 002a 8093 BC00 sts 188,r24 |
59 002e 80E0 ldi r24,lo8(0) |
60 0030 90E0 ldi r25,hi8(0) |
61 /* epilogue: frame size=0 */ |
62 0032 0895 ret |
63 /* epilogue end (size=1) */ |
64 /* function i2c_write_byte size 10 (9) */ |
66 .global __vector_26 |
68 __vector_26: |
69 /* prologue: frame size=0 */ |
70 0034 1F92 push __zero_reg__ |
71 0036 0F92 push __tmp_reg__ |
72 0038 0FB6 in __tmp_reg__,__SREG__ |
73 003a 0F92 push __tmp_reg__ |
74 003c 1124 clr __zero_reg__ |
75 003e 8F93 push r24 |
76 0040 9F93 push r25 |
77 0042 EF93 push r30 |
78 0044 FF93 push r31 |
79 /* prologue end (size=9) */ |
80 0046 8091 0000 lds r24,twi_state |
81 004a 8F5F subi r24,lo8(-(1)) |
82 004c 8093 0000 sts twi_state,r24 |
83 0050 8150 subi r24,lo8(-(-1)) |
84 0052 8330 cpi r24,lo8(3) |
85 0054 01F4 brne .+2 |
86 0056 00C0 rjmp .L14 |
87 0058 8430 cpi r24,lo8(4) |
88 005a 00F4 brsh .L19 |
89 005c 8130 cpi r24,lo8(1) |
90 005e 01F0 breq .L12 |
91 0060 8230 cpi r24,lo8(2) |
92 0062 00F4 brsh .L13 |
93 0064 00C0 rjmp .L38 |
94 .L19: |
95 0066 8530 cpi r24,lo8(5) |
96 0068 01F4 brne .+2 |
97 006a 00C0 rjmp .L16 |
98 006c 8530 cpi r24,lo8(5) |
99 006e 00F0 brlo .L15 |
100 0070 8630 cpi r24,lo8(6) |
101 0072 01F4 brne .+2 |
102 0074 00C0 rjmp .L17 |
103 0076 8730 cpi r24,lo8(7) |
104 0078 01F0 breq .+2 |
105 007a 00C0 rjmp .L37 |
106 007c 00C0 rjmp .L18 |
107 .L38: |
108 007e 8091 0000 lds r24,motor |
109 0082 880F lsl r24 |
110 0084 8E5A subi r24,lo8(-(82)) |
111 0086 00C0 rjmp .L39 |
112 .L12: |
113 0088 8091 0000 lds r24,motor |
114 008c 8F5F subi r24,lo8(-(1)) |
115 008e 8093 0000 sts motor,r24 |
116 0092 8150 subi r24,lo8(-(-1)) |
117 0094 8130 cpi r24,lo8(1) |
118 0096 01F4 brne .+2 |
119 0098 00C0 rjmp .L32 |
120 009a 8130 cpi r24,lo8(1) |
121 009c 00F0 brlo .L20 |
122 009e 8230 cpi r24,lo8(2) |
123 00a0 01F4 brne .+2 |
124 00a2 00C0 rjmp .L33 |
125 00a4 8330 cpi r24,lo8(3) |
126 00a6 01F0 breq .+2 |
127 00a8 00C0 rjmp .L37 |
128 00aa 00C0 rjmp .L34 |
129 .L20: |
130 00ac 8091 0000 lds r24,Motor_Vorne |
131 .L39: |
132 00b0 1092 B900 sts 185,__zero_reg__ |
133 00b4 8093 BB00 sts 187,r24 |
134 00b8 85E8 ldi r24,lo8(-123) |
135 .L40: |
136 00ba 8093 BC00 sts 188,r24 |
137 00be 00C0 rjmp .L37 |
138 .L13: |
139 00c0 84E9 ldi r24,lo8(-108) |
140 00c2 8093 BC00 sts 188,r24 |
141 00c6 8091 0000 lds r24,motor |
142 00ca 8430 cpi r24,lo8(4) |
143 00cc 00F4 brsh .L24 |
144 00ce 1092 0000 sts twi_state,__zero_reg__ |
145 00d2 00C0 rjmp .L26 |
146 .L24: |
147 00d4 1092 0000 sts motor,__zero_reg__ |
148 .L26: |
149 00d8 85EA ldi r24,lo8(-91) |
150 00da 00C0 rjmp .L40 |
151 .L14: |
152 00dc 8091 0000 lds r24,motorread |
153 00e0 880F lsl r24 |
154 00e2 8D5A subi r24,lo8(-(83)) |
155 00e4 00C0 rjmp .L39 |
156 .L15: |
157 00e6 8091 0000 lds r24,motorread |
158 00ea 8130 cpi r24,lo8(1) |
159 00ec 01F0 breq .L32 |
160 00ee 8130 cpi r24,lo8(1) |
161 00f0 00F0 brlo .L20 |
162 00f2 8230 cpi r24,lo8(2) |
163 00f4 01F0 breq .L33 |
164 00f6 8330 cpi r24,lo8(3) |
165 00f8 01F4 brne .L37 |
166 00fa 00C0 rjmp .L34 |
167 .L16: |
168 00fc 8091 BB00 lds r24,187 |
169 0100 E091 0000 lds r30,motorread |
170 0104 FF27 clr r31 |
171 0106 E050 subi r30,lo8(-(motor_rx)) |
172 0108 F040 sbci r31,hi8(-(motor_rx)) |
173 010a 8083 st Z,r24 |
174 .L17: |
175 010c 8091 0000 lds r24,motorread |
176 0110 8130 cpi r24,lo8(1) |
177 0112 01F0 breq .L32 |
178 0114 8130 cpi r24,lo8(1) |
179 0116 00F0 brlo .L20 |
180 0118 8230 cpi r24,lo8(2) |
181 011a 01F0 breq .L33 |
182 011c 8330 cpi r24,lo8(3) |
183 011e 01F4 brne .L37 |
184 0120 00C0 rjmp .L34 |
185 .L32: |
186 0122 8091 0000 lds r24,Motor_Hinten |
187 0126 00C0 rjmp .L39 |
188 .L33: |
189 0128 8091 0000 lds r24,Motor_Rechts |
190 012c 00C0 rjmp .L39 |
191 .L34: |
192 012e 8091 0000 lds r24,Motor_Links |
193 0132 00C0 rjmp .L39 |
194 .L18: |
195 0134 8091 0000 lds r24,motorread |
196 0138 9091 BB00 lds r25,187 |
197 013c E82F mov r30,r24 |
198 013e FF27 clr r31 |
199 0140 E050 subi r30,lo8(-(motor_rx)) |
200 0142 F040 sbci r31,hi8(-(motor_rx)) |
201 0144 9483 std Z+4,r25 |
202 0146 8F5F subi r24,lo8(-(1)) |
203 0148 8093 0000 sts motorread,r24 |
204 014c 8430 cpi r24,lo8(4) |
205 014e 00F0 brlo .L35 |
206 0150 1092 0000 sts motorread,__zero_reg__ |
207 .L35: |
208 0154 84E9 ldi r24,lo8(-108) |
209 0156 8093 BC00 sts 188,r24 |
210 015a 1092 0000 sts twi_state,__zero_reg__ |
211 .L37: |
212 /* epilogue: frame size=0 */ |
213 015e FF91 pop r31 |
214 0160 EF91 pop r30 |
215 0162 9F91 pop r25 |
216 0164 8F91 pop r24 |
217 0166 0F90 pop __tmp_reg__ |
218 0168 0FBE out __SREG__,__tmp_reg__ |
219 016a 0F90 pop __tmp_reg__ |
220 016c 1F90 pop __zero_reg__ |
221 016e 1895 reti |
222 /* epilogue end (size=9) */ |
223 /* function __vector_26 size 158 (140) */ |
225 .global twi_state |
226 .global twi_state |
227 .section .bss |
230 twi_state: |
231 0000 00 .skip 1,0 |
232 .global motor |
233 .global motor |
236 motor: |
237 0001 00 .skip 1,0 |
238 .global motorread |
239 .global motorread |
242 motorread: |
243 0002 00 .skip 1,0 |
244 .comm DiffNick,2,1 |
245 .comm DiffRoll,2,1 |
246 .comm SenderOkay,1,1 |
247 .comm CosinusNickWinkel,1,1 |
248 .comm CosinusRollWinkel,1,1 |
249 .comm durchschnitt_northing,4,1 |
250 .comm durchschnitt_easting,4,1 |
251 .comm gps_p,2,1 |
252 .comm gps_d,2,1 |
253 .comm skal,2,1 |
254 .comm gps_gethome,2,1 |
255 .comm motor_rx,8,1 |
256 .comm RemoteTasten,1,1 |
257 .comm Timeout,1,1 |
258 .comm IntegralNick,4,1 |
259 .comm IntegralNick2,4,1 |
260 .comm IntegralRoll,4,1 |
261 .comm IntegralRoll2,4,1 |
262 .comm Mess_IntegralNick,4,1 |
263 .comm Mess_IntegralNick2,4,1 |
264 .comm Mess_IntegralRoll,4,1 |
265 .comm Mess_IntegralRoll2,4,1 |
266 .comm Integral_Gier,4,1 |
267 .comm Mess_Integral_Gier,4,1 |
268 .comm h,1,1 |
269 .comm m,1,1 |
270 .comm s,1,1 |
271 .comm Motor_Vorne,1,1 |
272 .comm Motor_Hinten,1,1 |
273 .comm Motor_Rechts,1,1 |
274 .comm Motor_Links,1,1 |
275 .comm Count,1,1 |
276 .comm MotorWert,5,1 |
277 .comm StickNick,2,1 |
278 .comm StickRoll,2,1 |
279 .comm StickGier,2,1 |
280 .comm MotorenEin,1,1 |
281 /* File "twimaster.c": code 184 = 0x00b8 ( 162), prologues 9, epilogues 13 */ |
DEFINED SYMBOLS |
*ABS*:00000000 twimaster.c |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccQBlghb.s:3 *ABS*:0000003f __SREG__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccQBlghb.s:4 *ABS*:0000003e __SP_H__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccQBlghb.s:5 *ABS*:0000003d __SP_L__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccQBlghb.s:6 *ABS*:00000000 __tmp_reg__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccQBlghb.s:7 *ABS*:00000001 __zero_reg__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccQBlghb.s:13 .text:00000000 i2c_init |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccQBlghb.s:26 .text:0000000c i2c_start |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccQBlghb.s:40 .text:00000018 i2c_stop |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccQBlghb.s:52 .text:00000020 i2c_write_byte |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccQBlghb.s:68 .text:00000034 __vector_26 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccQBlghb.s:230 .bss:00000000 twi_state |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccQBlghb.s:236 .bss:00000001 motor |
*COM*:00000001 Motor_Vorne |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccQBlghb.s:242 .bss:00000002 motorread |
*COM*:00000008 motor_rx |
*COM*:00000001 Motor_Hinten |
*COM*:00000001 Motor_Rechts |
*COM*:00000001 Motor_Links |
*COM*:00000002 DiffNick |
*COM*:00000002 DiffRoll |
*COM*:00000001 SenderOkay |
*COM*:00000001 CosinusNickWinkel |
*COM*:00000001 CosinusRollWinkel |
*COM*:00000004 durchschnitt_northing |
*COM*:00000004 durchschnitt_easting |
*COM*:00000002 gps_p |
*COM*:00000002 gps_d |
*COM*:00000002 skal |
*COM*:00000002 gps_gethome |
*COM*:00000001 RemoteTasten |
*COM*:00000001 Timeout |
*COM*:00000004 IntegralNick |
*COM*:00000004 IntegralNick2 |
*COM*:00000004 IntegralRoll |
*COM*:00000004 IntegralRoll2 |
*COM*:00000004 Mess_IntegralNick |
*COM*:00000004 Mess_IntegralNick2 |
*COM*:00000004 Mess_IntegralRoll |
*COM*:00000004 Mess_IntegralRoll2 |
*COM*:00000004 Integral_Gier |
*COM*:00000004 Mess_Integral_Gier |
*COM*:00000001 h |
*COM*:00000001 m |
*COM*:00000001 s |
*COM*:00000001 Count |
*COM*:00000005 MotorWert |
*COM*:00000002 StickNick |
*COM*:00000002 StickRoll |
*COM*:00000002 StickGier |
*COM*:00000001 MotorenEin |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
/branches/chris_hallo2/uart.c |
---|
0,0 → 1,656 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// + |
// + GPS read out: |
// + modified Version of the Pitschu Brushless Ufo - (c) Peter Schulten, Mülheim, Germany |
// + only for non-profit use |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "uart.h" |
unsigned char DebugGetAnforderung = 0,DebugDisplayAnforderung = 0,DebugDataAnforderung = 0,GetVersionAnforderung = 0; |
unsigned volatile char SioTmp = 0; |
unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NMEABuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NeuerDatensatzEmpfangen = 0; |
unsigned volatile char NeueKoordinateEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned volatile char CntCrcError = 0; |
unsigned volatile char AnzahlEmpfangsBytes = 0; |
unsigned volatile char PC_DebugTimeout = 0; |
unsigned char PcZugriff = 100; |
unsigned char MotorTest[4] = {0,0,0,0}; |
unsigned char MeineSlaveAdresse; |
struct str_DebugOut DebugOut; |
struct str_Debug DebugIn; |
struct str_VersionInfo VersionInfo; |
int Debug_Timer; |
static uint8_t gpsState; |
#define GPS_EMPTY 0 |
#define GPS_SYNC1 1 |
#define GPS_SYNC2 2 |
#define GPS_CLASS 3 |
#define GPS_LEN1 4 |
#define GPS_LEN2 5 |
#define GPS_FILLING 6 |
#define GPS_CKA 7 |
#define GPS_CKB 8 |
//gpsInfo_t gpsPoints[5]; // stored position to fly to (currently only 1 target supported) |
//gpsInfo_t *gpsTarget; // points to one of the targets |
gpsInfo_t actualPos; // measured position (last gps record) |
#define SYNC_CHAR1 0xb5 |
#define SYNC_CHAR2 0x62 |
#define CLASS_NAV 0x01 |
#define MSGID_POSECEF 0x01 |
#define MSGID_STATUS 0x03 |
//#define MSGID_POSLLH 0x02 |
#define MSGID_VELECEF 0x11 |
//#define MSGID_POSUTM 0x08 |
//#define MSGID_VELNED 0x12 |
typedef struct { |
unsigned long ITOW; // time of week |
uint8_t GPSfix; // GPSfix Type, range 0..6 |
uint8_t Flags; // Navigation Status Flags |
uint8_t DiffS; // Differential Status |
uint8_t res; // reserved |
unsigned long TTFF; // Time to first fix (millisecond time tag) |
unsigned long MSSS; // Milliseconds since Startup / Reset |
uint8_t packetStatus; |
} NAV_STATUS_t; |
/* |
typedef struct { |
unsigned long ITOW; // time of week |
long LON; // longitude in 1e-07 deg |
long LAT; // lattitude |
long HEIGHT; // height in mm |
long HMSL; // height above mean sea level im mm |
unsigned long Hacc; // horizontal accuracy in mm |
unsigned long Vacc; // vertical accuracy in mm |
uint8_t packetStatus; |
} NAV_POSLLH_t; |
typedef struct { |
unsigned long ITOW; // time of week |
long EAST; // cm UTM Easting |
long NORTH; // cm UTM Nording |
long ALT; // cm altitude |
uint8_t ZONE; // UTM zone number |
uint8_t HEM; // Hemisphere Indicator (0=North, 1=South) |
uint8_t packetStatus; |
} NAV_POSUTM_t; |
typedef struct { |
unsigned long ITOW; // ms GPS Millisecond Time of Week |
long VEL_N; // cm/s NED north velocity |
long VEL_E; // cm/s NED east velocity |
long VEL_D; // cm/s NED down velocity |
unsigned long Speed; // cm/s Speed (3-D) |
unsigned long GSpeed; // cm/s Ground Speed (2-D) |
long Heading; // deg (1e-05) Heading 2-D |
unsigned long SAcc; // cm/s Speed Accuracy Estimate |
unsigned long CAcc; // deg Course / Heading Accuracy Estimate |
uint8_t packetStatus; |
} NAV_VELNED_t; |
*/ |
typedef struct { |
unsigned long ITOW; // ms GPS Millisecond Time of Week |
long ECEF_X; // ecef x / cm |
long ECEF_Y; // ecef y / cm |
long ECEF_Z; // ecef z / cm |
unsigned long Pacc; // Abweichung |
uint8_t packetStatus; |
} NAV_POSECEF_t ; |
typedef struct { |
unsigned long ITOW; // ms GPS Millisecond Time of Week |
long ECEFVX; // ecef x velocity cm/s |
long ECEFVY; // ecef y velocity cm/s |
long ECEFVZ; // ecef z velocity cm/s |
unsigned long SAcc; // Abweichung |
uint8_t packetStatus; |
} NAV_VELECEF_t; |
NAV_STATUS_t navStatus; |
NAV_POSECEF_t navPosECEF; |
NAV_VELECEF_t navVelECEF; |
//NAV_POSLLH_t navPosLlh; |
//NAV_POSUTM_t navPosUtm; |
//NAV_VELECEF avVelNed; |
volatile char *ubxP, *ubxEp, *ubxSp; // pointers to packet currently transfered |
volatile uint8_t CK_A, CK_B; // UBX checksum bytes |
volatile unsigned short msgLen; |
volatile uint8_t msgID; |
volatile uint8_t ignorePacket; // true when previous packet was not processed |
// distance to target position |
long rollOffset; // in 10cm |
long nickOffset; |
#define GPS_INTCYCLES 100 |
#define GPS_I_LIMIT (long)(40 * MAINLOOPS_PER_SEC) |
#ifdef GPS_DEBUG // if set then the GPS data is transfered to display |
extern volatile uint8_t v24state; |
char buf[200]; |
char *bp; |
char *ep; |
#endif |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Sende-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_TX) |
{ |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!UebertragungAbgeschlossen) |
{ |
ptr++; // die [0] wurde schon gesendet |
tmp_tx = SendeBuffer[ptr]; |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
{ |
ptr = 0; |
UebertragungAbgeschlossen = 1; |
} |
UDR = tmp_tx; |
} |
else ptr = 0; |
} |
void GPSscanData (void) |
{ |
if (navPosECEF.packetStatus == 1) // valid packet |
{ |
actualPos.x = navPosECEF.ECEF_X; //ECEF X in cm |
actualPos.y = navPosECEF.ECEF_Y; //ECEF Y in cm |
actualPos.z = navPosECEF.ECEF_Z; //ECEF Z in cm |
navPosECEF.packetStatus = 0; |
} |
if (navStatus.packetStatus == 1) // valid packet |
{ |
actualPos.state = navStatus.GPSfix; |
navStatus.packetStatus = 0; |
} |
if (navVelECEF.packetStatus == 1) // valid packet |
{ |
actualPos.vx = navVelECEF.ECEFVX; //ECEF VEL X in cm/s |
actualPos.vy = navVelECEF.ECEFVY; //ECEF VEL Y in cm/s |
actualPos.vz = navVelECEF.ECEFVZ; //ECEF VEL Z in cm/s |
navVelECEF.packetStatus = 0; |
} |
/* |
if (navPosUtm.packetStatus == 1) // valid packet |
{ |
actualPos.northing = navPosUtm.NORTH; ///10; // in 10cm; |
actualPos.easting = navPosUtm.EAST; //10; |
actualPos.altitude = navPosUtm.ALT; //10; |
navPosUtm.packetStatus = 0; |
} |
if (navPosLlh.packetStatus == 1) |
navPosLlh.packetStatus = 0; |
if (navVelNed.packetStatus == 1){ |
actualPos.velNorth = navVelNed.VEL_N; |
actualPos.velEast = navVelNed.VEL_E; |
navVelNed.packetStatus = 0;} |
navPosLlh and navVelNed currently not used |
*/ |
if (actualPos.state != 0){ROT_ON;} //-> Rot blinkt mit 4Hz wenn GPS Signal brauchbar |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung, incl. CRC-Auswertung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
SioTmp = UDR; |
uint8_t c; |
uint8_t re; |
re = (UCSR0A & (_B1(FE0) | _B1(DOR0))); // any error occured ? |
c = SioTmp; |
#ifdef GPS_DEBUG |
*bp++ = c; |
if (bp >= (buf+200)) bp = buf; |
if (v24state == 0) |
{ |
v24state = 1; |
UDR0 = *ep++; |
if (ep >= buf+200) |
ep = buf; |
UCSR0B |= _B1(UDRIE0); //enable further irqs |
} |
#endif |
if (re == 0) |
{ |
switch (gpsState) |
{ |
case GPS_EMPTY: |
if (c == SYNC_CHAR1) |
gpsState = GPS_SYNC1; |
break; |
case GPS_SYNC1: |
if (c == SYNC_CHAR2) |
gpsState = GPS_SYNC2; |
else if (c != SYNC_CHAR1) |
gpsState = GPS_EMPTY; |
break; |
case GPS_SYNC2: |
if (c == CLASS_NAV) |
gpsState = GPS_CLASS; |
else |
gpsState = GPS_EMPTY; |
break; |
case GPS_CLASS: // msg ID seen: init packed receive |
msgID = c; |
CK_A = CLASS_NAV + c; |
CK_B = CLASS_NAV + CK_A; |
gpsState = GPS_LEN1; |
switch (msgID) |
{ |
case MSGID_STATUS: |
ubxP = (char*)&navStatus; |
ubxEp = (char*)(&navStatus + sizeof(NAV_STATUS_t)); |
ubxSp = (char*)&navStatus.packetStatus; |
ignorePacket = navStatus.packetStatus; |
break; |
case MSGID_POSECEF: |
ubxP = (char*)&navPosECEF; |
ubxEp = (char*)(&navPosECEF + sizeof(NAV_POSECEF_t)); |
ubxSp = (char*)&navPosECEF.packetStatus; |
ignorePacket = navPosECEF.packetStatus; |
break; |
case MSGID_VELECEF: |
ubxP = (char*)&navVelECEF; |
ubxEp = (char*)(&navVelECEF + sizeof(NAV_VELECEF_t)); |
ubxSp = (char*)&navVelECEF.packetStatus; |
ignorePacket = navVelECEF.packetStatus; |
break; |
/* |
case MSGID_POSLLH: |
ubxP = (char*)&navPosLlh; |
ubxEp = (char*)(&navPosLlh + sizeof(NAV_POSLLH_t)); |
ubxSp = (char*)&navPosLlh.packetStatus; |
ignorePacket = navPosLlh.packetStatus; |
break; |
case MSGID_POSUTM: |
ubxP = (char*)&navPosUtm; |
ubxEp = (char*)(&navPosUtm + sizeof(NAV_POSUTM_t)); |
ubxSp = (char*)&navPosUtm.packetStatus; |
ignorePacket = navPosUtm.packetStatus; |
break; |
case MSGID_VELNED: |
ubxP = (char*)&navVelNed; |
ubxEp = (char*)(&navVelNed + sizeof(NAV_VELNED_t)); |
ubxSp = (char*)&navVelNed.packetStatus; |
ignorePacket = navVelNed.packetStatus; |
break; |
*/ |
default: |
ignorePacket = 1; |
ubxSp = (char*)0; |
} |
break; |
case GPS_LEN1: // first len byte |
msgLen = c; |
CK_A += c; |
CK_B += CK_A; |
gpsState = GPS_LEN2; |
break; |
case GPS_LEN2: // second len byte |
msgLen = msgLen + (c * 256); |
CK_A += c; |
CK_B += CK_A; |
gpsState = GPS_FILLING; // next data will be stored in packet struct |
break; |
case GPS_FILLING: |
CK_A += c; |
CK_B += CK_A; |
if ( !ignorePacket && ubxP < ubxEp) |
*ubxP++ = c; |
if (--msgLen == 0) |
gpsState = GPS_CKA; |
break; |
case GPS_CKA: |
if (c == CK_A) |
gpsState = GPS_CKB; |
else |
gpsState = GPS_EMPTY; |
break; |
case GPS_CKB: |
if (c == CK_B && ubxSp) // No error -> packet received successfully |
*ubxSp = 1; // set packetStatus in struct |
gpsState = GPS_EMPTY; // ready for next packet |
break; |
default: |
gpsState = GPS_EMPTY; // ready for next packet |
} |
} |
else // discard any data if error occured |
{ |
gpsState = GPS_EMPTY; |
GPSscanData (); //Test kann ggf. wieder gelöscht werden! |
} |
GPSscanData (); |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
if(SioTmp == '\r' && UartState == 2) |
{ |
UartState = 0; |
crc -= RxdBuffer[buf_ptr-2]; |
crc -= RxdBuffer[buf_ptr-1]; |
crc %= 4096; |
crc1 = '=' + crc / 64; |
crc2 = '=' + crc % 64; |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; CntCrcError++;}; |
if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet |
{ |
NeuerDatensatzEmpfangen = 1; |
AnzahlEmpfangsBytes = buf_ptr; |
RxdBuffer[buf_ptr] = '\r'; |
if(/*(RxdBuffer[1] == MeineSlaveAdresse || (RxdBuffer[1] == 'a')) && */(RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando |
} |
} |
else |
switch(UartState) |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc = SioTmp; |
break; |
case 1: // Adresse auswerten |
UartState++; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
else UartState = 0; |
crc += SioTmp; |
break; |
default: |
UartState = 0; |
break; |
} |
} |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
{ |
tmpCRC += SendeBuffer[i]; |
} |
tmpCRC %= 4096; |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
SendeBuffer[i++] = '\r'; |
UebertragungAbgeschlossen = 0; |
UDR = SendeBuffer[0]; |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
SendeBuffer[pt++] = '#'; // Startzeichen |
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...) |
SendeBuffer[pt++] = cmd; // Commando |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
} |
AddCRC(pt); |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
} |
} |
// -------------------------------------------------------------------------- |
void BearbeiteRxDaten(void) |
{ |
if(!NeuerDatensatzEmpfangen) return; |
unsigned int tmp_int_arr1[1]; |
unsigned int tmp_int_arr2[2]; |
unsigned int tmp_int_arr3[3]; |
unsigned char tmp_char_arr2[2]; |
unsigned char tmp_char_arr3[3]; |
unsigned char tmp_char_arr4[4]; |
//if(!MotorenEin) |
PcZugriff = 255; |
switch(RxdBuffer[2]) |
{ |
case 'c':// Debugdaten incl. Externe IOs usw |
Decode64((unsigned char *) &DebugIn,sizeof(DebugIn),3,AnzahlEmpfangsBytes); |
/* for(unsigned char i=0; i<4;i++) |
{ |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2], DebugIn.Analog[i]); |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2 + 1], DebugIn.Analog[i] >> 8); |
}*/ |
RemoteTasten |= DebugIn.RemoteTasten; |
DebugDataAnforderung = 1; |
break; |
case 'h':// x-1 Displayzeilen |
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes); |
RemoteTasten |= tmp_char_arr2[0]; |
DebugDisplayAnforderung = 1; |
break; |
case 't':// Motortest |
Decode64((unsigned char *) &MotorTest[0],sizeof(MotorTest),3,AnzahlEmpfangsBytes); |
break; |
case 'v': // Version-Anforderung und Ausbaustufe |
GetVersionAnforderung = 1; |
break; |
case 'g':// "Get"-Anforderung für Debug-Daten |
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
DebugGetAnforderung = 1; |
break; |
case 'q':// "Get"-Anforderung für Settings |
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes); |
if(tmp_char_arr2[0] != 0xff) |
{ |
if(tmp_char_arr2[0] > 5) tmp_char_arr2[0] = 5; |
ReadParameterSet(tmp_char_arr2[0], (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
SendOutData('L' + tmp_char_arr2[0] -1,MeineSlaveAdresse,(unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE); |
} |
else |
SendOutData('L' + GetActiveParamSetNumber()-1,MeineSlaveAdresse,(unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE); |
break; |
case 'l': |
case 'm': |
case 'n': |
case 'o': |
case 'p': // Parametersatz speichern |
Decode64((unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE,3,AnzahlEmpfangsBytes); |
WriteParameterSet(RxdBuffer[2] - 'l' + 1, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], RxdBuffer[2] - 'l' + 1); // aktiven Datensatz merken |
Piep(GetActiveParamSetNumber()); |
break; |
} |
// DebugOut.AnzahlZyklen = Debug_Timer_Intervall; |
NeuerDatensatzEmpfangen = 0; |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
if (c == '\n') |
uart_putchar('\r'); |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
//Ausgabe des Zeichens |
UDR = c; |
return (0); |
} |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
//if (ProgramLocation == IN_RAM) Buffer[pos] = wert; |
// else eeprom_write_byte(&EE_Buffer[pos], wert); |
// Buffer[pos] = wert; |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); |
// TX-Interrupt Freigabe |
UCSRB |= (1<<TXCIE); |
//Teiler wird gesetzt |
UBRR=(SYSCLK / (BAUD_RATE * 8L) - 1); |
//UBRR = 33; |
//öffnet einen Kanal für printf (STDOUT) |
//fdevopen (uart_putchar, 0); |
//sbi(PORTD,4); |
Debug_Timer = SetDelay(200); |
gpsState = GPS_EMPTY; |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
static char dis_zeile = 0; |
if(!UebertragungAbgeschlossen) return; |
if(DebugGetAnforderung && UebertragungAbgeschlossen) // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
{ |
SendOutData('G',MeineSlaveAdresse,(unsigned char *) &DebugIn,sizeof(DebugIn)); |
DebugGetAnforderung = 0; |
} |
if((CheckDelay(Debug_Timer) || DebugDataAnforderung) && UebertragungAbgeschlossen) |
{ |
SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut)); |
DebugDataAnforderung = 0; |
Debug_Timer = SetDelay(MIN_DEBUG_INTERVALL); |
} |
if(DebugDisplayAnforderung && UebertragungAbgeschlossen) |
{ |
Menu(); |
DebugDisplayAnforderung = 0; |
if(++dis_zeile == 4) dis_zeile = 0; |
SendOutData('0' + dis_zeile,0,&DisplayBuff[20 * dis_zeile],20); // DisplayZeile übertragen |
} |
if(GetVersionAnforderung && UebertragungAbgeschlossen) |
{ |
SendOutData('V',MeineSlaveAdresse,(unsigned char *) &VersionInfo,sizeof(VersionInfo)); |
GetVersionAnforderung = 0; |
} |
} |
/branches/chris_hallo2/uart.d |
---|
0,0 → 1,2 |
uart.o uart.d : uart.c main.h old_macros.h _settings.h printf_P.h timer0.h uart.h \ |
analog.h twimaster.h menu.h rc.h fc.h gps.h |
/branches/chris_hallo2/uart.h |
---|
0,0 → 1,118 |
#ifndef _UART_H |
#define _UART_H |
#define MAX_SENDE_BUFF 150 |
#define MAX_EMPFANGS_BUFF 150 |
extern unsigned char DebugGetAnforderung; |
extern unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
extern unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
extern unsigned volatile char UebertragungAbgeschlossen; |
extern unsigned volatile char PC_DebugTimeout; |
extern unsigned volatile char NeueKoordinateEmpfangen; |
extern unsigned char MeineSlaveAdresse; |
extern unsigned char PcZugriff; |
extern int Debug_Timer; |
extern void UART_Init (void); |
extern int uart_putchar (char c); |
extern void boot_program_page (uint32_t page, uint8_t *buf); |
extern void DatenUebertragung(void); |
extern void DecodeNMEA(void); |
extern unsigned char MotorTest[4]; |
struct str_DebugOut |
{ |
unsigned char Digital[13]; |
unsigned int AnzahlZyklen; |
unsigned int Zeit; |
unsigned char Sekunden; |
unsigned int Analog[16]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
#define _B1(bit) (1 << (bit)) |
#define _B0(bit) (0 << (bit)) |
typedef struct { |
long x; // in cm (+ = north) |
long y; // in cm (+ = east) |
long z; // in cm |
long vx; |
long vy; |
long vz; |
//long groundSpeed; |
//long heading; |
uint8_t state; // status of data: 0 = invlid; 1 = valid |
uint8_t noSV; // number of sats |
} gpsInfo_t; |
extern gpsInfo_t lockedPos; // stored position to fly to |
extern gpsInfo_t actualPos; // measured position (last gps record) |
extern void GPSscanData (void); |
extern void GPSupdate(void); |
extern void GPSsaveTarget (uint8_t mode); |
struct str_Debug |
{ |
unsigned char Digital[2]; |
unsigned char RemoteTasten; |
unsigned int Analog[4]; |
}; |
extern struct str_Debug DebugIn; |
struct str_VersionInfo |
{ |
unsigned char Hauptversion; |
unsigned char Nebenversion; |
unsigned char PCKompatibel; |
unsigned char Rserved[7]; |
}; |
extern struct str_VersionInfo VersionInfo; |
//Die Baud_Rate der Seriellen Schnittstelle ist 9600 Baud |
//#define BAUD_RATE 9600 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 14400 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 28800 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 38400 //Baud Rate für die Serielle Schnittstelle |
#define BAUD_RATE 57600 //Baud Rate für die Serielle Schnittstelle |
//Anpassen der seriellen Schnittstellen Register wenn ein ATMega128 benutzt wird |
#if defined (__AVR_ATmega128__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICRB |
#endif |
#if defined (__AVR_ATmega32__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega644__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICR0B |
# define TXEN TXEN0 |
# define RXEN RXEN0 |
# define RXCIE RXCIE0 |
# define TXCIE TXCIE0 |
# define U2X U2X0 |
# define UCSRB UCSR0B |
# define UDRE UDRE0 |
# define INT_VEC_RX SIG_USART_RECV |
# define INT_VEC_TX SIG_USART_TRANS |
#endif |
#endif //_UART_H |
/branches/chris_hallo2/uart.lst |
---|
0,0 → 1,1374 |
1 .file "uart.c" |
2 .arch atmega644 |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .text |
11 .global __vector_22 |
13 __vector_22: |
14 /* prologue: frame size=0 */ |
15 0000 1F92 push __zero_reg__ |
16 0002 0F92 push __tmp_reg__ |
17 0004 0FB6 in __tmp_reg__,__SREG__ |
18 0006 0F92 push __tmp_reg__ |
19 0008 1124 clr __zero_reg__ |
20 000a 8F93 push r24 |
21 000c 9F93 push r25 |
22 000e EF93 push r30 |
23 0010 FF93 push r31 |
24 /* prologue end (size=9) */ |
25 0012 8091 0000 lds r24,UebertragungAbgeschlossen |
26 0016 8823 tst r24 |
27 0018 01F4 brne .L2 |
28 001a 8091 0000 lds r24,ptr.2021 |
29 001e 9091 0000 lds r25,(ptr.2021)+1 |
30 0022 0196 adiw r24,1 |
31 0024 9093 0000 sts (ptr.2021)+1,r25 |
32 0028 8093 0000 sts ptr.2021,r24 |
33 002c FC01 movw r30,r24 |
34 002e E050 subi r30,lo8(-(SendeBuffer)) |
35 0030 F040 sbci r31,hi8(-(SendeBuffer)) |
36 0032 E081 ld r30,Z |
37 0034 ED30 cpi r30,lo8(13) |
38 0036 01F0 breq .L4 |
39 0038 8639 cpi r24,150 |
40 003a 9105 cpc r25,__zero_reg__ |
41 003c 01F4 brne .L6 |
42 .L4: |
43 003e 1092 0000 sts (ptr.2021)+1,__zero_reg__ |
44 0042 1092 0000 sts ptr.2021,__zero_reg__ |
45 0046 81E0 ldi r24,lo8(1) |
46 0048 8093 0000 sts UebertragungAbgeschlossen,r24 |
47 .L6: |
48 004c E093 C600 sts 198,r30 |
49 0050 00C0 rjmp .L8 |
50 .L2: |
51 0052 1092 0000 sts (ptr.2021)+1,__zero_reg__ |
52 0056 1092 0000 sts ptr.2021,__zero_reg__ |
53 .L8: |
54 /* epilogue: frame size=0 */ |
55 005a FF91 pop r31 |
56 005c EF91 pop r30 |
57 005e 9F91 pop r25 |
58 0060 8F91 pop r24 |
59 0062 0F90 pop __tmp_reg__ |
60 0064 0FBE out __SREG__,__tmp_reg__ |
61 0066 0F90 pop __tmp_reg__ |
62 0068 1F90 pop __zero_reg__ |
63 006a 1895 reti |
64 /* epilogue end (size=9) */ |
65 /* function __vector_22 size 54 (36) */ |
67 .global GPSscanData |
69 GPSscanData: |
70 /* prologue: frame size=0 */ |
71 /* prologue end (size=0) */ |
72 006c 8091 0000 lds r24,navPosECEF+20 |
73 0070 8130 cpi r24,lo8(1) |
74 0072 01F4 brne .L10 |
75 0074 8091 0000 lds r24,navPosECEF+4 |
76 0078 9091 0000 lds r25,(navPosECEF+4)+1 |
77 007c A091 0000 lds r26,(navPosECEF+4)+2 |
78 0080 B091 0000 lds r27,(navPosECEF+4)+3 |
79 0084 8093 0000 sts actualPos,r24 |
80 0088 9093 0000 sts (actualPos)+1,r25 |
81 008c A093 0000 sts (actualPos)+2,r26 |
82 0090 B093 0000 sts (actualPos)+3,r27 |
83 0094 8091 0000 lds r24,navPosECEF+8 |
84 0098 9091 0000 lds r25,(navPosECEF+8)+1 |
85 009c A091 0000 lds r26,(navPosECEF+8)+2 |
86 00a0 B091 0000 lds r27,(navPosECEF+8)+3 |
87 00a4 8093 0000 sts actualPos+4,r24 |
88 00a8 9093 0000 sts (actualPos+4)+1,r25 |
89 00ac A093 0000 sts (actualPos+4)+2,r26 |
90 00b0 B093 0000 sts (actualPos+4)+3,r27 |
91 00b4 8091 0000 lds r24,navPosECEF+12 |
92 00b8 9091 0000 lds r25,(navPosECEF+12)+1 |
93 00bc A091 0000 lds r26,(navPosECEF+12)+2 |
94 00c0 B091 0000 lds r27,(navPosECEF+12)+3 |
95 00c4 8093 0000 sts actualPos+8,r24 |
96 00c8 9093 0000 sts (actualPos+8)+1,r25 |
97 00cc A093 0000 sts (actualPos+8)+2,r26 |
98 00d0 B093 0000 sts (actualPos+8)+3,r27 |
99 00d4 1092 0000 sts navPosECEF+20,__zero_reg__ |
100 .L10: |
101 00d8 8091 0000 lds r24,navStatus+16 |
102 00dc 8130 cpi r24,lo8(1) |
103 00de 01F4 brne .L12 |
104 00e0 8091 0000 lds r24,navStatus+4 |
105 00e4 8093 0000 sts actualPos+24,r24 |
106 00e8 1092 0000 sts navStatus+16,__zero_reg__ |
107 .L12: |
108 00ec 8091 0000 lds r24,navVelECEF+20 |
109 00f0 8130 cpi r24,lo8(1) |
110 00f2 01F4 brne .L14 |
111 00f4 8091 0000 lds r24,navVelECEF+4 |
112 00f8 9091 0000 lds r25,(navVelECEF+4)+1 |
113 00fc A091 0000 lds r26,(navVelECEF+4)+2 |
114 0100 B091 0000 lds r27,(navVelECEF+4)+3 |
115 0104 8093 0000 sts actualPos+12,r24 |
116 0108 9093 0000 sts (actualPos+12)+1,r25 |
117 010c A093 0000 sts (actualPos+12)+2,r26 |
118 0110 B093 0000 sts (actualPos+12)+3,r27 |
119 0114 8091 0000 lds r24,navVelECEF+8 |
120 0118 9091 0000 lds r25,(navVelECEF+8)+1 |
121 011c A091 0000 lds r26,(navVelECEF+8)+2 |
122 0120 B091 0000 lds r27,(navVelECEF+8)+3 |
123 0124 8093 0000 sts actualPos+16,r24 |
124 0128 9093 0000 sts (actualPos+16)+1,r25 |
125 012c A093 0000 sts (actualPos+16)+2,r26 |
126 0130 B093 0000 sts (actualPos+16)+3,r27 |
127 0134 8091 0000 lds r24,navVelECEF+12 |
128 0138 9091 0000 lds r25,(navVelECEF+12)+1 |
129 013c A091 0000 lds r26,(navVelECEF+12)+2 |
130 0140 B091 0000 lds r27,(navVelECEF+12)+3 |
131 0144 8093 0000 sts actualPos+20,r24 |
132 0148 9093 0000 sts (actualPos+20)+1,r25 |
133 014c A093 0000 sts (actualPos+20)+2,r26 |
134 0150 B093 0000 sts (actualPos+20)+3,r27 |
135 0154 1092 0000 sts navVelECEF+20,__zero_reg__ |
136 .L14: |
137 0158 8091 0000 lds r24,actualPos+24 |
138 015c 8111 cpse r24,__zero_reg__ |
139 015e 289A sbi 37-0x20,0 |
140 .L18: |
141 0160 0895 ret |
142 /* epilogue: frame size=0 */ |
143 /* epilogue: noreturn */ |
144 /* epilogue end (size=0) */ |
145 /* function GPSscanData size 124 (124) */ |
147 .global __vector_20 |
149 __vector_20: |
150 /* prologue: frame size=0 */ |
151 0162 1F92 push __zero_reg__ |
152 0164 0F92 push __tmp_reg__ |
153 0166 0FB6 in __tmp_reg__,__SREG__ |
154 0168 0F92 push __tmp_reg__ |
155 016a 1124 clr __zero_reg__ |
156 016c 2F93 push r18 |
157 016e 3F93 push r19 |
158 0170 4F93 push r20 |
159 0172 5F93 push r21 |
160 0174 6F93 push r22 |
161 0176 7F93 push r23 |
162 0178 8F93 push r24 |
163 017a 9F93 push r25 |
164 017c AF93 push r26 |
165 017e BF93 push r27 |
166 0180 CF93 push r28 |
167 0182 DF93 push r29 |
168 0184 EF93 push r30 |
169 0186 FF93 push r31 |
170 /* prologue end (size=19) */ |
171 0188 8091 C600 lds r24,198 |
172 018c 8093 0000 sts SioTmp,r24 |
173 0190 8091 C000 lds r24,192 |
174 0194 4091 0000 lds r20,SioTmp |
175 0198 8871 andi r24,lo8(24) |
176 019a 01F0 breq .+2 |
177 019c 00C0 rjmp .L20 |
178 019e 8091 0000 lds r24,gpsState |
179 01a2 8430 cpi r24,lo8(4) |
180 01a4 01F4 brne .+2 |
181 01a6 00C0 rjmp .L27 |
182 01a8 8530 cpi r24,lo8(5) |
183 01aa 00F4 brsh .L32 |
184 01ac 8130 cpi r24,lo8(1) |
185 01ae 01F0 breq .L24 |
186 01b0 8130 cpi r24,lo8(1) |
187 01b2 00F0 brlo .L23 |
188 01b4 8230 cpi r24,lo8(2) |
189 01b6 01F0 breq .L25 |
190 01b8 8330 cpi r24,lo8(3) |
191 01ba 01F0 breq .+2 |
192 01bc 00C0 rjmp .L22 |
193 01be 00C0 rjmp .L26 |
194 .L32: |
195 01c0 8630 cpi r24,lo8(6) |
196 01c2 01F4 brne .+2 |
197 01c4 00C0 rjmp .L29 |
198 01c6 8630 cpi r24,lo8(6) |
199 01c8 00F4 brsh .+2 |
200 01ca 00C0 rjmp .L28 |
201 01cc 8730 cpi r24,lo8(7) |
202 01ce 01F4 brne .+2 |
203 01d0 00C0 rjmp .L30 |
204 01d2 8830 cpi r24,lo8(8) |
205 01d4 01F0 breq .+2 |
206 01d6 00C0 rjmp .L22 |
207 01d8 00C0 rjmp .L31 |
208 .L23: |
209 01da 453B cpi r20,lo8(-75) |
210 01dc 01F0 breq .+2 |
211 01de 00C0 rjmp .L33 |
212 01e0 81E0 ldi r24,lo8(1) |
213 01e2 00C0 rjmp .L79 |
214 .L24: |
215 01e4 4236 cpi r20,lo8(98) |
216 01e6 01F4 brne .L35 |
217 01e8 82E0 ldi r24,lo8(2) |
218 .L79: |
219 01ea 8093 0000 sts gpsState,r24 |
220 01ee 00C0 rjmp .L33 |
221 .L35: |
222 01f0 453B cpi r20,lo8(-75) |
223 01f2 01F4 brne .+2 |
224 01f4 00C0 rjmp .L33 |
225 01f6 00C0 rjmp .L22 |
226 .L25: |
227 01f8 4130 cpi r20,lo8(1) |
228 01fa 01F0 breq .+2 |
229 01fc 00C0 rjmp .L22 |
230 01fe 83E0 ldi r24,lo8(3) |
231 0200 00C0 rjmp .L79 |
232 .L26: |
233 0202 4093 0000 sts msgID,r20 |
234 0206 4F5F subi r20,lo8(-(1)) |
235 0208 4093 0000 sts CK_A,r20 |
236 020c 8091 0000 lds r24,CK_A |
237 0210 8F5F subi r24,lo8(-(1)) |
238 0212 8093 0000 sts CK_B,r24 |
239 0216 84E0 ldi r24,lo8(4) |
240 0218 8093 0000 sts gpsState,r24 |
241 021c 8091 0000 lds r24,msgID |
242 0220 8330 cpi r24,lo8(3) |
243 0222 01F0 breq .L42 |
244 0224 8131 cpi r24,lo8(17) |
245 0226 01F0 breq .L43 |
246 0228 8130 cpi r24,lo8(1) |
247 022a 01F0 breq .+2 |
248 022c 00C0 rjmp .L77 |
249 022e 00C0 rjmp .L41 |
250 .L42: |
251 0230 80E0 ldi r24,lo8(navStatus) |
252 0232 90E0 ldi r25,hi8(navStatus) |
253 0234 9093 0000 sts (ubxP)+1,r25 |
254 0238 8093 0000 sts ubxP,r24 |
255 023c 20E0 ldi r18,lo8(navStatus+289) |
256 023e 30E0 ldi r19,hi8(navStatus+289) |
257 0240 3093 0000 sts (ubxEp)+1,r19 |
258 0244 2093 0000 sts ubxEp,r18 |
259 0248 4096 adiw r24,16 |
260 024a 9093 0000 sts (ubxSp)+1,r25 |
261 024e 8093 0000 sts ubxSp,r24 |
262 0252 8091 0000 lds r24,navStatus+16 |
263 0256 00C0 rjmp .L80 |
264 .L41: |
265 0258 80E0 ldi r24,lo8(navPosECEF) |
266 025a 90E0 ldi r25,hi8(navPosECEF) |
267 025c 9093 0000 sts (ubxP)+1,r25 |
268 0260 8093 0000 sts ubxP,r24 |
269 0264 20E0 ldi r18,lo8(navPosECEF+441) |
270 0266 30E0 ldi r19,hi8(navPosECEF+441) |
271 0268 3093 0000 sts (ubxEp)+1,r19 |
272 026c 2093 0000 sts ubxEp,r18 |
273 0270 4496 adiw r24,20 |
274 0272 9093 0000 sts (ubxSp)+1,r25 |
275 0276 8093 0000 sts ubxSp,r24 |
276 027a 8091 0000 lds r24,navPosECEF+20 |
277 027e 00C0 rjmp .L80 |
278 .L43: |
279 0280 80E0 ldi r24,lo8(navVelECEF) |
280 0282 90E0 ldi r25,hi8(navVelECEF) |
281 0284 9093 0000 sts (ubxP)+1,r25 |
282 0288 8093 0000 sts ubxP,r24 |
283 028c 20E0 ldi r18,lo8(navVelECEF+441) |
284 028e 30E0 ldi r19,hi8(navVelECEF+441) |
285 0290 3093 0000 sts (ubxEp)+1,r19 |
286 0294 2093 0000 sts ubxEp,r18 |
287 0298 4496 adiw r24,20 |
288 029a 9093 0000 sts (ubxSp)+1,r25 |
289 029e 8093 0000 sts ubxSp,r24 |
290 02a2 8091 0000 lds r24,navVelECEF+20 |
291 .L80: |
292 02a6 8093 0000 sts ignorePacket,r24 |
293 02aa 00C0 rjmp .L33 |
294 .L77: |
295 02ac 81E0 ldi r24,lo8(1) |
296 02ae 8093 0000 sts ignorePacket,r24 |
297 02b2 1092 0000 sts (ubxSp)+1,__zero_reg__ |
298 02b6 1092 0000 sts ubxSp,__zero_reg__ |
299 02ba 00C0 rjmp .L33 |
300 .L27: |
301 02bc 842F mov r24,r20 |
302 02be 9927 clr r25 |
303 02c0 9093 0000 sts (msgLen)+1,r25 |
304 02c4 8093 0000 sts msgLen,r24 |
305 02c8 8091 0000 lds r24,CK_A |
306 02cc 840F add r24,r20 |
307 02ce 8093 0000 sts CK_A,r24 |
308 02d2 8091 0000 lds r24,CK_B |
309 02d6 9091 0000 lds r25,CK_A |
310 02da 890F add r24,r25 |
311 02dc 8093 0000 sts CK_B,r24 |
312 02e0 85E0 ldi r24,lo8(5) |
313 02e2 00C0 rjmp .L79 |
314 .L28: |
315 02e4 2091 0000 lds r18,msgLen |
316 02e8 3091 0000 lds r19,(msgLen)+1 |
317 02ec 842F mov r24,r20 |
318 02ee 9927 clr r25 |
319 02f0 982F mov r25,r24 |
320 02f2 8827 clr r24 |
321 02f4 280F add r18,r24 |
322 02f6 391F adc r19,r25 |
323 02f8 3093 0000 sts (msgLen)+1,r19 |
324 02fc 2093 0000 sts msgLen,r18 |
325 0300 8091 0000 lds r24,CK_A |
326 0304 840F add r24,r20 |
327 0306 8093 0000 sts CK_A,r24 |
328 030a 8091 0000 lds r24,CK_B |
329 030e 9091 0000 lds r25,CK_A |
330 0312 890F add r24,r25 |
331 0314 8093 0000 sts CK_B,r24 |
332 0318 86E0 ldi r24,lo8(6) |
333 031a 00C0 rjmp .L79 |
334 .L29: |
335 031c 8091 0000 lds r24,CK_A |
336 0320 840F add r24,r20 |
337 0322 8093 0000 sts CK_A,r24 |
338 0326 8091 0000 lds r24,CK_B |
339 032a 9091 0000 lds r25,CK_A |
340 032e 890F add r24,r25 |
341 0330 8093 0000 sts CK_B,r24 |
342 0334 8091 0000 lds r24,ignorePacket |
343 0338 8823 tst r24 |
344 033a 01F4 brne .L44 |
345 033c E091 0000 lds r30,ubxP |
346 0340 F091 0000 lds r31,(ubxP)+1 |
347 0344 8091 0000 lds r24,ubxEp |
348 0348 9091 0000 lds r25,(ubxEp)+1 |
349 034c E817 cp r30,r24 |
350 034e F907 cpc r31,r25 |
351 0350 00F4 brsh .L44 |
352 0352 4193 st Z+,r20 |
353 0354 F093 0000 sts (ubxP)+1,r31 |
354 0358 E093 0000 sts ubxP,r30 |
355 .L44: |
356 035c 8091 0000 lds r24,msgLen |
357 0360 9091 0000 lds r25,(msgLen)+1 |
358 0364 0197 sbiw r24,1 |
359 0366 9093 0000 sts (msgLen)+1,r25 |
360 036a 8093 0000 sts msgLen,r24 |
361 036e 8091 0000 lds r24,msgLen |
362 0372 9091 0000 lds r25,(msgLen)+1 |
363 0376 892B or r24,r25 |
364 0378 01F4 brne .L33 |
365 037a 87E0 ldi r24,lo8(7) |
366 037c 00C0 rjmp .L79 |
367 .L30: |
368 037e 8091 0000 lds r24,CK_A |
369 0382 4817 cp r20,r24 |
370 0384 01F4 brne .L22 |
371 0386 88E0 ldi r24,lo8(8) |
372 0388 00C0 rjmp .L79 |
373 .L31: |
374 038a 8091 0000 lds r24,CK_B |
375 038e 4817 cp r20,r24 |
376 0390 01F4 brne .L22 |
377 0392 E091 0000 lds r30,ubxSp |
378 0396 F091 0000 lds r31,(ubxSp)+1 |
379 039a 3097 sbiw r30,0 |
380 039c 01F0 breq .L22 |
381 039e 81E0 ldi r24,lo8(1) |
382 03a0 8083 st Z,r24 |
383 .L22: |
384 03a2 1092 0000 sts gpsState,__zero_reg__ |
385 03a6 00C0 rjmp .L33 |
386 .L20: |
387 03a8 1092 0000 sts gpsState,__zero_reg__ |
388 03ac 0E94 0000 call GPSscanData |
389 .L33: |
390 03b0 0E94 0000 call GPSscanData |
391 03b4 4091 0000 lds r20,buf_ptr.2054 |
392 03b8 4639 cpi r20,lo8(-106) |
393 03ba 00F0 brlo .L53 |
394 03bc 1092 0000 sts UartState.2055,__zero_reg__ |
395 .L53: |
396 03c0 8091 0000 lds r24,SioTmp |
397 03c4 8D30 cpi r24,lo8(13) |
398 03c6 01F0 breq .+2 |
399 03c8 00C0 rjmp .L55 |
400 03ca 8091 0000 lds r24,UartState.2055 |
401 03ce 8230 cpi r24,lo8(2) |
402 03d0 01F0 breq .+2 |
403 03d2 00C0 rjmp .L55 |
404 03d4 1092 0000 sts UartState.2055,__zero_reg__ |
405 03d8 A42F mov r26,r20 |
406 03da BB27 clr r27 |
407 03dc FD01 movw r30,r26 |
408 03de E050 subi r30,lo8(-(RxdBuffer-2)) |
409 03e0 F040 sbci r31,hi8(-(RxdBuffer-2)) |
410 03e2 3081 ld r19,Z |
411 03e4 ED01 movw r28,r26 |
412 03e6 C050 subi r28,lo8(-(RxdBuffer-1)) |
413 03e8 D040 sbci r29,hi8(-(RxdBuffer-1)) |
414 03ea 2881 ld r18,Y |
415 03ec 8091 0000 lds r24,crc.2051 |
416 03f0 9091 0000 lds r25,(crc.2051)+1 |
417 03f4 831B sub r24,r19 |
418 03f6 9109 sbc r25,__zero_reg__ |
419 03f8 821B sub r24,r18 |
420 03fa 9109 sbc r25,__zero_reg__ |
421 03fc 9F70 andi r25,hi8(4095) |
422 03fe 9093 0000 sts (crc.2051)+1,r25 |
423 0402 8093 0000 sts crc.2051,r24 |
424 0406 9C01 movw r18,r24 |
425 0408 96E0 ldi r25,6 |
426 040a 3695 1: lsr r19 |
427 040c 2795 ror r18 |
428 040e 9A95 dec r25 |
429 0410 01F4 brne 1b |
430 0412 235C subi r18,lo8(-(61)) |
431 0414 2093 0000 sts crc1.2052,r18 |
432 0418 982F mov r25,r24 |
433 041a 9F73 andi r25,lo8(63) |
434 041c 935C subi r25,lo8(-(61)) |
435 041e 9093 0000 sts crc2.2053,r25 |
436 0422 8081 ld r24,Z |
437 0424 2817 cp r18,r24 |
438 0426 01F4 brne .L58 |
439 0428 8881 ld r24,Y |
440 042a 9817 cp r25,r24 |
441 042c 01F4 brne .L58 |
442 042e 91E0 ldi r25,lo8(1) |
443 0430 00C0 rjmp .L61 |
444 .L58: |
445 0432 8091 0000 lds r24,CntCrcError |
446 0436 8F5F subi r24,lo8(-(1)) |
447 0438 8093 0000 sts CntCrcError,r24 |
448 043c 90E0 ldi r25,lo8(0) |
449 .L61: |
450 043e 8091 0000 lds r24,NeuerDatensatzEmpfangen |
451 0442 8823 tst r24 |
452 0444 01F0 breq .+2 |
453 0446 00C0 rjmp .L76 |
454 0448 9923 tst r25 |
455 044a 01F4 brne .+2 |
456 044c 00C0 rjmp .L76 |
457 044e 81E0 ldi r24,lo8(1) |
458 0450 8093 0000 sts NeuerDatensatzEmpfangen,r24 |
459 0454 4093 0000 sts AnzahlEmpfangsBytes,r20 |
460 0458 A050 subi r26,lo8(-(RxdBuffer)) |
461 045a B040 sbci r27,hi8(-(RxdBuffer)) |
462 045c 8DE0 ldi r24,lo8(13) |
463 045e 8C93 st X,r24 |
464 0460 8091 0000 lds r24,RxdBuffer+2 |
465 0464 8235 cpi r24,lo8(82) |
466 0466 01F0 breq .+2 |
467 0468 00C0 rjmp .L76 |
468 046a 88E1 ldi r24,lo8(24) |
469 046c 90E0 ldi r25,hi8(24) |
470 046e 2CE0 ldi r18,lo8(12) |
471 /* #APP */ |
472 0470 0FB6 in __tmp_reg__,__SREG__ |
473 0472 F894 cli |
474 0474 A895 wdr |
475 0476 8093 6000 sts 96,r24 |
476 047a 0FBE out __SREG__,__tmp_reg__ |
477 047c 2093 6000 sts 96,r18 |
478 /* #NOAPP */ |
479 0480 00C0 rjmp .L76 |
480 .L55: |
481 0482 8091 0000 lds r24,UartState.2055 |
482 0486 8130 cpi r24,lo8(1) |
483 0488 01F0 breq .L68 |
484 048a 8130 cpi r24,lo8(1) |
485 048c 00F0 brlo .L67 |
486 048e 8230 cpi r24,lo8(2) |
487 0490 01F4 brne .L78 |
488 0492 00C0 rjmp .L69 |
489 .L67: |
490 0494 8091 0000 lds r24,SioTmp |
491 0498 8332 cpi r24,lo8(35) |
492 049a 01F4 brne .L70 |
493 049c 8091 0000 lds r24,NeuerDatensatzEmpfangen |
494 04a0 8823 tst r24 |
495 04a2 01F4 brne .L70 |
496 04a4 81E0 ldi r24,lo8(1) |
497 04a6 8093 0000 sts UartState.2055,r24 |
498 .L70: |
499 04aa 8091 0000 lds r24,SioTmp |
500 04ae 8093 0000 sts RxdBuffer,r24 |
501 04b2 81E0 ldi r24,lo8(1) |
502 04b4 8093 0000 sts buf_ptr.2054,r24 |
503 04b8 8091 0000 lds r24,SioTmp |
504 04bc 9927 clr r25 |
505 04be 00C0 rjmp .L81 |
506 .L68: |
507 04c0 82E0 ldi r24,lo8(2) |
508 04c2 8093 0000 sts UartState.2055,r24 |
509 04c6 E42F mov r30,r20 |
510 04c8 FF27 clr r31 |
511 04ca 8091 0000 lds r24,SioTmp |
512 04ce E050 subi r30,lo8(-(RxdBuffer)) |
513 04d0 F040 sbci r31,hi8(-(RxdBuffer)) |
514 04d2 8083 st Z,r24 |
515 .L83: |
516 04d4 4F5F subi r20,lo8(-(1)) |
517 04d6 4093 0000 sts buf_ptr.2054,r20 |
518 .L82: |
519 04da 2091 0000 lds r18,SioTmp |
520 04de 8091 0000 lds r24,crc.2051 |
521 04e2 9091 0000 lds r25,(crc.2051)+1 |
522 04e6 820F add r24,r18 |
523 04e8 911D adc r25,__zero_reg__ |
524 .L81: |
525 04ea 9093 0000 sts (crc.2051)+1,r25 |
526 04ee 8093 0000 sts crc.2051,r24 |
527 04f2 00C0 rjmp .L76 |
528 .L69: |
529 04f4 E42F mov r30,r20 |
530 04f6 FF27 clr r31 |
531 04f8 8091 0000 lds r24,SioTmp |
532 04fc E050 subi r30,lo8(-(RxdBuffer)) |
533 04fe F040 sbci r31,hi8(-(RxdBuffer)) |
534 0500 8083 st Z,r24 |
535 0502 4639 cpi r20,lo8(-106) |
536 0504 00F0 brlo .L83 |
537 0506 1092 0000 sts UartState.2055,__zero_reg__ |
538 050a 00C0 rjmp .L82 |
539 .L78: |
540 050c 1092 0000 sts UartState.2055,__zero_reg__ |
541 .L76: |
542 /* epilogue: frame size=0 */ |
543 0510 FF91 pop r31 |
544 0512 EF91 pop r30 |
545 0514 DF91 pop r29 |
546 0516 CF91 pop r28 |
547 0518 BF91 pop r27 |
548 051a AF91 pop r26 |
549 051c 9F91 pop r25 |
550 051e 8F91 pop r24 |
551 0520 7F91 pop r23 |
552 0522 6F91 pop r22 |
553 0524 5F91 pop r21 |
554 0526 4F91 pop r20 |
555 0528 3F91 pop r19 |
556 052a 2F91 pop r18 |
557 052c 0F90 pop __tmp_reg__ |
558 052e 0FBE out __SREG__,__tmp_reg__ |
559 0530 0F90 pop __tmp_reg__ |
560 0532 1F90 pop __zero_reg__ |
561 0534 1895 reti |
562 /* epilogue end (size=19) */ |
563 /* function __vector_20 size 495 (457) */ |
565 .global AddCRC |
567 AddCRC: |
568 /* prologue: frame size=0 */ |
569 /* prologue end (size=0) */ |
570 0536 DC01 movw r26,r24 |
571 0538 20E0 ldi r18,lo8(0) |
572 053a 30E0 ldi r19,hi8(0) |
573 053c 40E0 ldi r20,lo8(0) |
574 053e 50E0 ldi r21,hi8(0) |
575 0540 E0E0 ldi r30,lo8(SendeBuffer) |
576 0542 F0E0 ldi r31,hi8(SendeBuffer) |
577 0544 00C0 rjmp .L85 |
578 .L86: |
579 0546 8191 ld r24,Z+ |
580 0548 280F add r18,r24 |
581 054a 311D adc r19,__zero_reg__ |
582 054c 4F5F subi r20,lo8(-(1)) |
583 054e 5F4F sbci r21,hi8(-(1)) |
584 .L85: |
585 0550 4A17 cp r20,r26 |
586 0552 5B07 cpc r21,r27 |
587 0554 01F4 brne .L86 |
588 0556 3F70 andi r19,hi8(4095) |
589 0558 C901 movw r24,r18 |
590 055a 66E0 ldi r22,6 |
591 055c 9695 1: lsr r25 |
592 055e 8795 ror r24 |
593 0560 6A95 dec r22 |
594 0562 01F4 brne 1b |
595 0564 835C subi r24,lo8(-(61)) |
596 0566 FD01 movw r30,r26 |
597 0568 E050 subi r30,lo8(-(SendeBuffer)) |
598 056a F040 sbci r31,hi8(-(SendeBuffer)) |
599 056c 8083 st Z,r24 |
600 056e 1196 adiw r26,1 |
601 0570 2F73 andi r18,lo8(63) |
602 0572 235C subi r18,lo8(-(61)) |
603 0574 FD01 movw r30,r26 |
604 0576 E050 subi r30,lo8(-(SendeBuffer)) |
605 0578 F040 sbci r31,hi8(-(SendeBuffer)) |
606 057a 2083 st Z,r18 |
607 057c A050 subi r26,lo8(-(SendeBuffer+1)) |
608 057e B040 sbci r27,hi8(-(SendeBuffer+1)) |
609 0580 8DE0 ldi r24,lo8(13) |
610 0582 8C93 st X,r24 |
611 0584 1092 0000 sts UebertragungAbgeschlossen,__zero_reg__ |
612 0588 8091 0000 lds r24,SendeBuffer |
613 058c 8093 C600 sts 198,r24 |
614 /* epilogue: frame size=0 */ |
615 0590 0895 ret |
616 /* epilogue end (size=1) */ |
617 /* function AddCRC size 47 (46) */ |
619 .global SendOutData |
621 SendOutData: |
622 /* prologue: frame size=0 */ |
623 0592 EF92 push r14 |
624 0594 FF92 push r15 |
625 0596 0F93 push r16 |
626 0598 1F93 push r17 |
627 059a CF93 push r28 |
628 059c DF93 push r29 |
629 /* prologue end (size=6) */ |
630 059e 7A01 movw r14,r20 |
631 05a0 722F mov r23,r18 |
632 05a2 93E2 ldi r25,lo8(35) |
633 05a4 9093 0000 sts SendeBuffer,r25 |
634 05a8 6093 0000 sts SendeBuffer+1,r22 |
635 05ac 8093 0000 sts SendeBuffer+2,r24 |
636 05b0 03E0 ldi r16,lo8(3) |
637 05b2 10E0 ldi r17,hi8(3) |
638 05b4 60E0 ldi r22,lo8(0) |
639 05b6 A0E0 ldi r26,lo8(SendeBuffer+3) |
640 05b8 B0E0 ldi r27,hi8(SendeBuffer+3) |
641 05ba 00C0 rjmp .L90 |
642 .L91: |
643 05bc F701 movw r30,r14 |
644 05be E60F add r30,r22 |
645 05c0 F11D adc r31,__zero_reg__ |
646 05c2 9081 ld r25,Z |
647 05c4 6F5F subi r22,lo8(-(1)) |
648 05c6 7150 subi r23,lo8(-(-1)) |
649 05c8 01F4 brne .L92 |
650 05ca E0E0 ldi r30,lo8(0) |
651 05cc 40E0 ldi r20,lo8(0) |
652 05ce 00C0 rjmp .L94 |
653 .L92: |
654 05d0 F701 movw r30,r14 |
655 05d2 E60F add r30,r22 |
656 05d4 F11D adc r31,__zero_reg__ |
657 05d6 4081 ld r20,Z |
658 05d8 6F5F subi r22,lo8(-(1)) |
659 05da 7150 subi r23,lo8(-(-1)) |
660 05dc 01F4 brne .L95 |
661 05de E0E0 ldi r30,lo8(0) |
662 05e0 00C0 rjmp .L94 |
663 .L95: |
664 05e2 F701 movw r30,r14 |
665 05e4 E60F add r30,r22 |
666 05e6 F11D adc r31,__zero_reg__ |
667 05e8 E081 ld r30,Z |
668 05ea 6F5F subi r22,lo8(-(1)) |
669 05ec 7150 subi r23,lo8(-(-1)) |
670 .L94: |
671 05ee 892F mov r24,r25 |
672 05f0 8695 lsr r24 |
673 05f2 8695 lsr r24 |
674 05f4 835C subi r24,lo8(-(61)) |
675 05f6 8C93 st X,r24 |
676 05f8 5527 clr r21 |
677 05fa 892F mov r24,r25 |
678 05fc 9927 clr r25 |
679 05fe 8370 andi r24,lo8(3) |
680 0600 9070 andi r25,hi8(3) |
681 0602 24E0 ldi r18,4 |
682 0604 880F 1: lsl r24 |
683 0606 991F rol r25 |
684 0608 2A95 dec r18 |
685 060a 01F4 brne 1b |
686 060c 9A01 movw r18,r20 |
687 060e 94E0 ldi r25,4 |
688 0610 3695 1: lsr r19 |
689 0612 2795 ror r18 |
690 0614 9A95 dec r25 |
691 0616 01F4 brne 1b |
692 0618 822B or r24,r18 |
693 061a 835C subi r24,lo8(-(61)) |
694 061c ED01 movw r28,r26 |
695 061e 8983 std Y+1,r24 |
696 0620 4F70 andi r20,lo8(15) |
697 0622 5070 andi r21,hi8(15) |
698 0624 440F lsl r20 |
699 0626 551F rol r21 |
700 0628 440F lsl r20 |
701 062a 551F rol r21 |
702 062c 8E2F mov r24,r30 |
703 062e 8295 swap r24 |
704 0630 8695 lsr r24 |
705 0632 8695 lsr r24 |
706 0634 8370 andi r24,0x3 |
707 0636 842B or r24,r20 |
708 0638 835C subi r24,lo8(-(61)) |
709 063a 8A83 std Y+2,r24 |
710 063c EF73 andi r30,lo8(63) |
711 063e E35C subi r30,lo8(-(61)) |
712 0640 EB83 std Y+3,r30 |
713 0642 0C5F subi r16,lo8(-(4)) |
714 0644 1F4F sbci r17,hi8(-(4)) |
715 0646 1496 adiw r26,4 |
716 .L90: |
717 0648 7723 tst r23 |
718 064a 01F0 breq .+2 |
719 064c 00C0 rjmp .L91 |
720 064e C801 movw r24,r16 |
721 0650 0E94 0000 call AddCRC |
722 /* epilogue: frame size=0 */ |
723 0654 DF91 pop r29 |
724 0656 CF91 pop r28 |
725 0658 1F91 pop r17 |
726 065a 0F91 pop r16 |
727 065c FF90 pop r15 |
728 065e EF90 pop r14 |
729 0660 0895 ret |
730 /* epilogue end (size=7) */ |
731 /* function SendOutData size 106 (93) */ |
733 .global Decode64 |
735 Decode64: |
736 /* prologue: frame size=0 */ |
737 0662 1F93 push r17 |
738 0664 CF93 push r28 |
739 0666 DF93 push r29 |
740 /* prologue end (size=3) */ |
741 0668 EC01 movw r28,r24 |
742 066a 70E0 ldi r23,lo8(0) |
743 066c A22F mov r26,r18 |
744 066e BB27 clr r27 |
745 0670 1297 sbiw r26,2 |
746 0672 00C0 rjmp .L100 |
747 .L101: |
748 0674 E42F mov r30,r20 |
749 0676 FF27 clr r31 |
750 0678 E050 subi r30,lo8(-(RxdBuffer)) |
751 067a F040 sbci r31,hi8(-(RxdBuffer)) |
752 067c 3081 ld r19,Z |
753 067e 4F5F subi r20,lo8(-(1)) |
754 0680 E42F mov r30,r20 |
755 0682 FF27 clr r31 |
756 0684 E050 subi r30,lo8(-(RxdBuffer)) |
757 0686 F040 sbci r31,hi8(-(RxdBuffer)) |
758 0688 5081 ld r21,Z |
759 068a 4F5F subi r20,lo8(-(1)) |
760 068c E42F mov r30,r20 |
761 068e FF27 clr r31 |
762 0690 E050 subi r30,lo8(-(RxdBuffer)) |
763 0692 F040 sbci r31,hi8(-(RxdBuffer)) |
764 0694 1081 ld r17,Z |
765 0696 4F5F subi r20,lo8(-(1)) |
766 0698 E42F mov r30,r20 |
767 069a FF27 clr r31 |
768 069c E050 subi r30,lo8(-(RxdBuffer)) |
769 069e F040 sbci r31,hi8(-(RxdBuffer)) |
770 06a0 2081 ld r18,Z |
771 06a2 4F5F subi r20,lo8(-(1)) |
772 06a4 842F mov r24,r20 |
773 06a6 9927 clr r25 |
774 06a8 A817 cp r26,r24 |
775 06aa B907 cpc r27,r25 |
776 06ac 04F0 brlt .L106 |
777 06ae 5D53 subi r21,lo8(-(-61)) |
778 06b0 FE01 movw r30,r28 |
779 06b2 E70F add r30,r23 |
780 06b4 F11D adc r31,__zero_reg__ |
781 06b6 3D53 subi r19,lo8(-(-61)) |
782 06b8 330F lsl r19 |
783 06ba 330F lsl r19 |
784 06bc 852F mov r24,r21 |
785 06be 8295 swap r24 |
786 06c0 8F70 andi r24,0x0f |
787 06c2 382B or r19,r24 |
788 06c4 3083 st Z,r19 |
789 06c6 6130 cpi r22,lo8(1) |
790 06c8 01F0 breq .L106 |
791 06ca 912F mov r25,r17 |
792 06cc 9D53 subi r25,lo8(-(-61)) |
793 06ce 7F5F subi r23,lo8(-(1)) |
794 06d0 FE01 movw r30,r28 |
795 06d2 E70F add r30,r23 |
796 06d4 F11D adc r31,__zero_reg__ |
797 06d6 7150 subi r23,lo8(-(-1)) |
798 06d8 5295 swap r21 |
799 06da 507F andi r21,0xf0 |
800 06dc 892F mov r24,r25 |
801 06de 8695 lsr r24 |
802 06e0 8695 lsr r24 |
803 06e2 582B or r21,r24 |
804 06e4 5083 st Z,r21 |
805 06e6 6350 subi r22,lo8(-(-3)) |
806 06e8 6F3F cpi r22,lo8(-1) |
807 06ea 01F0 breq .L106 |
808 06ec 7E5F subi r23,lo8(-(2)) |
809 06ee FE01 movw r30,r28 |
810 06f0 E70F add r30,r23 |
811 06f2 F11D adc r31,__zero_reg__ |
812 06f4 9295 swap r25 |
813 06f6 990F lsl r25 |
814 06f8 990F lsl r25 |
815 06fa 907C andi r25,0xc0 |
816 06fc 2D53 subi r18,lo8(-(-61)) |
817 06fe 922B or r25,r18 |
818 0700 9083 st Z,r25 |
819 0702 7F5F subi r23,lo8(-(1)) |
820 .L100: |
821 0704 6623 tst r22 |
822 0706 01F0 breq .+2 |
823 0708 00C0 rjmp .L101 |
824 .L106: |
825 /* epilogue: frame size=0 */ |
826 070a DF91 pop r29 |
827 070c CF91 pop r28 |
828 070e 1F91 pop r17 |
829 0710 0895 ret |
830 /* epilogue end (size=4) */ |
831 /* function Decode64 size 88 (81) */ |
833 .global uart_putchar |
835 uart_putchar: |
836 /* prologue: frame size=0 */ |
837 0712 1F93 push r17 |
838 /* prologue end (size=1) */ |
839 0714 182F mov r17,r24 |
840 0716 8A30 cpi r24,lo8(10) |
841 0718 01F4 brne .L112 |
842 071a 8DE0 ldi r24,lo8(13) |
843 071c 0E94 0000 call uart_putchar |
844 .L112: |
845 0720 8091 C000 lds r24,192 |
846 0724 85FF sbrs r24,5 |
847 0726 00C0 rjmp .L112 |
848 0728 1093 C600 sts 198,r17 |
849 072c 80E0 ldi r24,lo8(0) |
850 072e 90E0 ldi r25,hi8(0) |
851 /* epilogue: frame size=0 */ |
852 0730 1F91 pop r17 |
853 0732 0895 ret |
854 /* epilogue end (size=2) */ |
855 /* function uart_putchar size 17 (14) */ |
857 .global WriteProgramData |
859 WriteProgramData: |
860 /* prologue: frame size=0 */ |
861 /* prologue end (size=0) */ |
862 /* epilogue: frame size=0 */ |
863 0734 0895 ret |
864 /* epilogue end (size=1) */ |
865 /* function WriteProgramData size 1 (0) */ |
867 .global UART_Init |
869 UART_Init: |
870 /* prologue: frame size=0 */ |
871 /* prologue end (size=0) */ |
872 0736 E1EC ldi r30,lo8(193) |
873 0738 F0E0 ldi r31,hi8(193) |
874 073a 88E1 ldi r24,lo8(24) |
875 073c 8083 st Z,r24 |
876 073e A0EC ldi r26,lo8(192) |
877 0740 B0E0 ldi r27,hi8(192) |
878 0742 8C91 ld r24,X |
879 0744 8260 ori r24,lo8(2) |
880 0746 8C93 st X,r24 |
881 0748 8081 ld r24,Z |
882 074a 8068 ori r24,lo8(-128) |
883 074c 8083 st Z,r24 |
884 074e 8081 ld r24,Z |
885 0750 8064 ori r24,lo8(64) |
886 0752 8083 st Z,r24 |
887 0754 8AE2 ldi r24,lo8(42) |
888 0756 8093 C400 sts 196,r24 |
889 075a 88EC ldi r24,lo8(200) |
890 075c 90E0 ldi r25,hi8(200) |
891 075e 0E94 0000 call SetDelay |
892 0762 9093 0000 sts (Debug_Timer)+1,r25 |
893 0766 8093 0000 sts Debug_Timer,r24 |
894 076a 1092 0000 sts gpsState,__zero_reg__ |
895 /* epilogue: frame size=0 */ |
896 076e 0895 ret |
897 /* epilogue end (size=1) */ |
898 /* function UART_Init size 29 (28) */ |
900 .global DatenUebertragung |
902 DatenUebertragung: |
903 /* prologue: frame size=0 */ |
904 /* prologue end (size=0) */ |
905 0770 8091 0000 lds r24,UebertragungAbgeschlossen |
906 0774 8823 tst r24 |
907 0776 01F4 brne .+2 |
908 0778 00C0 rjmp .L136 |
909 077a 8091 0000 lds r24,DebugGetAnforderung |
910 077e 8823 tst r24 |
911 0780 01F0 breq .L122 |
912 0782 8091 0000 lds r24,UebertragungAbgeschlossen |
913 0786 8823 tst r24 |
914 0788 01F0 breq .L122 |
915 078a 2BE0 ldi r18,lo8(11) |
916 078c 40E0 ldi r20,lo8(DebugIn) |
917 078e 50E0 ldi r21,hi8(DebugIn) |
918 0790 6091 0000 lds r22,MeineSlaveAdresse |
919 0794 87E4 ldi r24,lo8(71) |
920 0796 0E94 0000 call SendOutData |
921 079a 1092 0000 sts DebugGetAnforderung,__zero_reg__ |
922 .L122: |
923 079e 8091 0000 lds r24,Debug_Timer |
924 07a2 9091 0000 lds r25,(Debug_Timer)+1 |
925 07a6 0E94 0000 call CheckDelay |
926 07aa 8823 tst r24 |
927 07ac 01F4 brne .L125 |
928 07ae 8091 0000 lds r24,DebugDataAnforderung |
929 07b2 8823 tst r24 |
930 07b4 01F0 breq .L127 |
931 .L125: |
932 07b6 8091 0000 lds r24,UebertragungAbgeschlossen |
933 07ba 8823 tst r24 |
934 07bc 01F0 breq .L127 |
935 07be 22E3 ldi r18,lo8(50) |
936 07c0 40E0 ldi r20,lo8(DebugOut) |
937 07c2 50E0 ldi r21,hi8(DebugOut) |
938 07c4 6091 0000 lds r22,MeineSlaveAdresse |
939 07c8 84E4 ldi r24,lo8(68) |
940 07ca 0E94 0000 call SendOutData |
941 07ce 1092 0000 sts DebugDataAnforderung,__zero_reg__ |
942 07d2 8AEF ldi r24,lo8(250) |
943 07d4 90E0 ldi r25,hi8(250) |
944 07d6 0E94 0000 call SetDelay |
945 07da 9093 0000 sts (Debug_Timer)+1,r25 |
946 07de 8093 0000 sts Debug_Timer,r24 |
947 .L127: |
948 07e2 8091 0000 lds r24,DebugDisplayAnforderung |
949 07e6 8823 tst r24 |
950 07e8 01F0 breq .L129 |
951 07ea 8091 0000 lds r24,UebertragungAbgeschlossen |
952 07ee 8823 tst r24 |
953 07f0 01F0 breq .L129 |
954 07f2 0E94 0000 call Menu |
955 07f6 1092 0000 sts DebugDisplayAnforderung,__zero_reg__ |
956 07fa 8091 0000 lds r24,dis_zeile.2372 |
957 07fe 8F5F subi r24,lo8(-(1)) |
958 0800 8093 0000 sts dis_zeile.2372,r24 |
959 0804 8430 cpi r24,lo8(4) |
960 0806 01F4 brne .L132 |
961 0808 1092 0000 sts dis_zeile.2372,__zero_reg__ |
962 .L132: |
963 080c 8091 0000 lds r24,dis_zeile.2372 |
964 0810 44E1 ldi r20,lo8(20) |
965 0812 849F mul r24,r20 |
966 0814 A001 movw r20,r0 |
967 0816 1124 clr r1 |
968 0818 4050 subi r20,lo8(-(DisplayBuff)) |
969 081a 5040 sbci r21,hi8(-(DisplayBuff)) |
970 081c 24E1 ldi r18,lo8(20) |
971 081e 60E0 ldi r22,lo8(0) |
972 0820 805D subi r24,lo8(-(48)) |
973 0822 0E94 0000 call SendOutData |
974 .L129: |
975 0826 8091 0000 lds r24,GetVersionAnforderung |
976 082a 8823 tst r24 |
977 082c 01F0 breq .L136 |
978 082e 8091 0000 lds r24,UebertragungAbgeschlossen |
979 0832 8823 tst r24 |
980 0834 01F0 breq .L136 |
981 0836 2AE0 ldi r18,lo8(10) |
982 0838 40E0 ldi r20,lo8(VersionInfo) |
983 083a 50E0 ldi r21,hi8(VersionInfo) |
984 083c 6091 0000 lds r22,MeineSlaveAdresse |
985 0840 86E5 ldi r24,lo8(86) |
986 0842 0E94 0000 call SendOutData |
987 0846 1092 0000 sts GetVersionAnforderung,__zero_reg__ |
988 .L136: |
989 084a 0895 ret |
990 /* epilogue: frame size=0 */ |
991 /* epilogue: noreturn */ |
992 /* epilogue end (size=0) */ |
993 /* function DatenUebertragung size 110 (110) */ |
995 .global BearbeiteRxDaten |
997 BearbeiteRxDaten: |
998 /* prologue: frame size=2 */ |
999 084c 1F93 push r17 |
1000 084e CF93 push r28 |
1001 0850 DF93 push r29 |
1002 0852 CDB7 in r28,__SP_L__ |
1003 0854 DEB7 in r29,__SP_H__ |
1004 0856 2297 sbiw r28,2 |
1005 0858 0FB6 in __tmp_reg__,__SREG__ |
1006 085a F894 cli |
1007 085c DEBF out __SP_H__,r29 |
1008 085e 0FBE out __SREG__,__tmp_reg__ |
1009 0860 CDBF out __SP_L__,r28 |
1010 /* prologue end (size=11) */ |
1011 0862 8091 0000 lds r24,NeuerDatensatzEmpfangen |
1012 0866 8823 tst r24 |
1013 0868 01F4 brne .+2 |
1014 086a 00C0 rjmp .L153 |
1015 086c 8FEF ldi r24,lo8(-1) |
1016 086e 8093 0000 sts PcZugriff,r24 |
1017 0872 8091 0000 lds r24,RxdBuffer+2 |
1018 0876 8137 cpi r24,lo8(113) |
1019 0878 00F4 brsh .L148 |
1020 087a 8C36 cpi r24,lo8(108) |
1021 087c 00F0 brlo .+2 |
1022 087e 00C0 rjmp .L144 |
1023 0880 8736 cpi r24,lo8(103) |
1024 0882 01F4 brne .+2 |
1025 0884 00C0 rjmp .L142 |
1026 0886 8836 cpi r24,lo8(104) |
1027 0888 01F0 breq .L143 |
1028 088a 8336 cpi r24,lo8(99) |
1029 088c 01F0 breq .+2 |
1030 088e 00C0 rjmp .L140 |
1031 0890 00C0 rjmp .L141 |
1032 .L148: |
1033 0892 8437 cpi r24,lo8(116) |
1034 0894 01F0 breq .L146 |
1035 0896 8637 cpi r24,lo8(118) |
1036 0898 01F0 breq .L147 |
1037 089a 8137 cpi r24,lo8(113) |
1038 089c 01F0 breq .+2 |
1039 089e 00C0 rjmp .L140 |
1040 08a0 00C0 rjmp .L145 |
1041 .L141: |
1042 08a2 2091 0000 lds r18,AnzahlEmpfangsBytes |
1043 08a6 43E0 ldi r20,lo8(3) |
1044 08a8 6BE0 ldi r22,lo8(11) |
1045 08aa 80E0 ldi r24,lo8(DebugIn) |
1046 08ac 90E0 ldi r25,hi8(DebugIn) |
1047 08ae 0E94 0000 call Decode64 |
1048 08b2 8091 0000 lds r24,RemoteTasten |
1049 08b6 9091 0000 lds r25,DebugIn+2 |
1050 08ba 892B or r24,r25 |
1051 08bc 8093 0000 sts RemoteTasten,r24 |
1052 08c0 81E0 ldi r24,lo8(1) |
1053 08c2 8093 0000 sts DebugDataAnforderung,r24 |
1054 08c6 00C0 rjmp .L140 |
1055 .L143: |
1056 08c8 2091 0000 lds r18,AnzahlEmpfangsBytes |
1057 08cc 43E0 ldi r20,lo8(3) |
1058 08ce 62E0 ldi r22,lo8(2) |
1059 08d0 CE01 movw r24,r28 |
1060 08d2 0196 adiw r24,1 |
1061 08d4 0E94 0000 call Decode64 |
1062 08d8 8091 0000 lds r24,RemoteTasten |
1063 08dc 9981 ldd r25,Y+1 |
1064 08de 892B or r24,r25 |
1065 08e0 8093 0000 sts RemoteTasten,r24 |
1066 08e4 81E0 ldi r24,lo8(1) |
1067 08e6 8093 0000 sts DebugDisplayAnforderung,r24 |
1068 08ea 00C0 rjmp .L140 |
1069 .L146: |
1070 08ec 2091 0000 lds r18,AnzahlEmpfangsBytes |
1071 08f0 43E0 ldi r20,lo8(3) |
1072 08f2 64E0 ldi r22,lo8(4) |
1073 08f4 80E0 ldi r24,lo8(MotorTest) |
1074 08f6 90E0 ldi r25,hi8(MotorTest) |
1075 08f8 0E94 0000 call Decode64 |
1076 08fc 00C0 rjmp .L140 |
1077 .L147: |
1078 08fe 81E0 ldi r24,lo8(1) |
1079 0900 8093 0000 sts GetVersionAnforderung,r24 |
1080 0904 00C0 rjmp .L140 |
1081 .L142: |
1082 0906 81E0 ldi r24,lo8(1) |
1083 0908 8093 0000 sts DebugGetAnforderung,r24 |
1084 090c 00C0 rjmp .L140 |
1085 .L145: |
1086 090e 2091 0000 lds r18,AnzahlEmpfangsBytes |
1087 0912 43E0 ldi r20,lo8(3) |
1088 0914 62E0 ldi r22,lo8(2) |
1089 0916 CE01 movw r24,r28 |
1090 0918 0196 adiw r24,1 |
1091 091a 0E94 0000 call Decode64 |
1092 091e 8981 ldd r24,Y+1 |
1093 0920 8F3F cpi r24,lo8(-1) |
1094 0922 01F0 breq .L149 |
1095 0924 8630 cpi r24,lo8(6) |
1096 0926 00F0 brlo .L151 |
1097 0928 85E0 ldi r24,lo8(5) |
1098 092a 8983 std Y+1,r24 |
1099 .L151: |
1100 092c 4AE3 ldi r20,lo8(58) |
1101 092e 60E0 ldi r22,lo8(EE_Parameter) |
1102 0930 70E0 ldi r23,hi8(EE_Parameter) |
1103 0932 8981 ldd r24,Y+1 |
1104 0934 0E94 0000 call ReadParameterSet |
1105 0938 8981 ldd r24,Y+1 |
1106 093a 2AE3 ldi r18,lo8(58) |
1107 093c 40E0 ldi r20,lo8(EE_Parameter) |
1108 093e 50E0 ldi r21,hi8(EE_Parameter) |
1109 0940 6091 0000 lds r22,MeineSlaveAdresse |
1110 0944 00C0 rjmp .L154 |
1111 .L149: |
1112 0946 1091 0000 lds r17,MeineSlaveAdresse |
1113 094a 0E94 0000 call GetActiveParamSetNumber |
1114 094e 2AE3 ldi r18,lo8(58) |
1115 0950 40E0 ldi r20,lo8(EE_Parameter) |
1116 0952 50E0 ldi r21,hi8(EE_Parameter) |
1117 0954 612F mov r22,r17 |
1118 .L154: |
1119 0956 855B subi r24,lo8(-(75)) |
1120 0958 0E94 0000 call SendOutData |
1121 095c 00C0 rjmp .L140 |
1122 .L144: |
1123 095e 2091 0000 lds r18,AnzahlEmpfangsBytes |
1124 0962 43E0 ldi r20,lo8(3) |
1125 0964 6AE3 ldi r22,lo8(58) |
1126 0966 80E0 ldi r24,lo8(EE_Parameter) |
1127 0968 90E0 ldi r25,hi8(EE_Parameter) |
1128 096a 0E94 0000 call Decode64 |
1129 096e 8091 0000 lds r24,RxdBuffer+2 |
1130 0972 4AE3 ldi r20,lo8(58) |
1131 0974 60E0 ldi r22,lo8(EE_Parameter) |
1132 0976 70E0 ldi r23,hi8(EE_Parameter) |
1133 0978 8B56 subi r24,lo8(-(-107)) |
1134 097a 0E94 0000 call WriteParameterSet |
1135 097e 8091 0000 lds r24,RxdBuffer+2 |
1136 0982 8B56 subi r24,lo8(-(-107)) |
1137 0984 A0E0 ldi r26,lo8(EEPromArray+2) |
1138 0986 B0E0 ldi r27,hi8(EEPromArray+2) |
1139 /* #APP */ |
1140 0988 082E mov __tmp_reg__,r24 |
1141 098a 0E94 0000 call __eeprom_write_byte_1F2021 |
1142 /* #NOAPP */ |
1143 098e 0E94 0000 call GetActiveParamSetNumber |
1144 0992 9927 clr r25 |
1145 0994 0E94 0000 call Piep |
1146 .L140: |
1147 0998 1092 0000 sts NeuerDatensatzEmpfangen,__zero_reg__ |
1148 .L153: |
1149 /* epilogue: frame size=2 */ |
1150 099c 2296 adiw r28,2 |
1151 099e 0FB6 in __tmp_reg__,__SREG__ |
1152 09a0 F894 cli |
1153 09a2 DEBF out __SP_H__,r29 |
1154 09a4 0FBE out __SREG__,__tmp_reg__ |
1155 09a6 CDBF out __SP_L__,r28 |
1156 09a8 DF91 pop r29 |
1157 09aa CF91 pop r28 |
1158 09ac 1F91 pop r17 |
1159 09ae 0895 ret |
1160 /* epilogue end (size=10) */ |
1161 /* function BearbeiteRxDaten size 179 (158) */ |
1163 .global DebugGetAnforderung |
1164 .global DebugGetAnforderung |
1165 .section .bss |
1168 DebugGetAnforderung: |
1169 0000 00 .skip 1,0 |
1170 .global DebugDisplayAnforderung |
1171 .global DebugDisplayAnforderung |
1174 DebugDisplayAnforderung: |
1175 0001 00 .skip 1,0 |
1176 .global DebugDataAnforderung |
1177 .global DebugDataAnforderung |
1180 DebugDataAnforderung: |
1181 0002 00 .skip 1,0 |
1182 .global GetVersionAnforderung |
1183 .global GetVersionAnforderung |
1186 GetVersionAnforderung: |
1187 0003 00 .skip 1,0 |
1188 .global SioTmp |
1189 .global SioTmp |
1192 SioTmp: |
1193 0004 00 .skip 1,0 |
1194 .global NeuerDatensatzEmpfangen |
1195 .global NeuerDatensatzEmpfangen |
1198 NeuerDatensatzEmpfangen: |
1199 0005 00 .skip 1,0 |
1200 .global NeueKoordinateEmpfangen |
1201 .global NeueKoordinateEmpfangen |
1204 NeueKoordinateEmpfangen: |
1205 0006 00 .skip 1,0 |
1206 .global UebertragungAbgeschlossen |
1207 .data |
1210 UebertragungAbgeschlossen: |
1211 0000 01 .byte 1 |
1212 .global CntCrcError |
1213 .global CntCrcError |
1214 .section .bss |
1217 CntCrcError: |
1218 0007 00 .skip 1,0 |
1219 .global AnzahlEmpfangsBytes |
1220 .global AnzahlEmpfangsBytes |
1223 AnzahlEmpfangsBytes: |
1224 0008 00 .skip 1,0 |
1225 .global PC_DebugTimeout |
1226 .global PC_DebugTimeout |
1229 PC_DebugTimeout: |
1230 0009 00 .skip 1,0 |
1231 .global PcZugriff |
1232 .data |
1235 PcZugriff: |
1236 0001 64 .byte 100 |
1237 .global MotorTest |
1238 .global MotorTest |
1239 .section .bss |
1242 MotorTest: |
1243 000a 0000 0000 .skip 4,0 |
1244 .lcomm dis_zeile.2372,1 |
1245 .lcomm UartState.2055,1 |
1246 .lcomm buf_ptr.2054,1 |
1247 .lcomm crc2.2053,1 |
1248 .lcomm crc1.2052,1 |
1249 .lcomm crc.2051,2 |
1250 .lcomm ptr.2021,2 |
1251 .lcomm gpsState,1 |
1252 .comm DiffNick,2,1 |
1253 .comm DiffRoll,2,1 |
1254 .comm SenderOkay,1,1 |
1255 .comm CosinusNickWinkel,1,1 |
1256 .comm CosinusRollWinkel,1,1 |
1257 .comm durchschnitt_northing,4,1 |
1258 .comm durchschnitt_easting,4,1 |
1259 .comm gps_p,2,1 |
1260 .comm gps_d,2,1 |
1261 .comm skal,2,1 |
1262 .comm gps_gethome,2,1 |
1263 .comm SendeBuffer,150,1 |
1264 .comm RxdBuffer,150,1 |
1265 .comm MeineSlaveAdresse,1,1 |
1266 .comm Debug_Timer,2,1 |
1267 .comm DebugOut,50,1 |
1268 .comm actualPos,26,1 |
1269 .comm DebugIn,11,1 |
1270 .comm VersionInfo,10,1 |
1271 .comm RemoteTasten,1,1 |
1272 .comm Timeout,1,1 |
1273 .comm IntegralNick,4,1 |
1274 .comm IntegralNick2,4,1 |
1275 .comm IntegralRoll,4,1 |
1276 .comm IntegralRoll2,4,1 |
1277 .comm Mess_IntegralNick,4,1 |
1278 .comm Mess_IntegralNick2,4,1 |
1279 .comm Mess_IntegralRoll,4,1 |
1280 .comm Mess_IntegralRoll2,4,1 |
1281 .comm Integral_Gier,4,1 |
1282 .comm Mess_Integral_Gier,4,1 |
1283 .comm h,1,1 |
1284 .comm m,1,1 |
1285 .comm s,1,1 |
1286 .comm Motor_Vorne,1,1 |
1287 .comm Motor_Hinten,1,1 |
1288 .comm Motor_Rechts,1,1 |
1289 .comm Motor_Links,1,1 |
1290 .comm Count,1,1 |
1291 .comm MotorWert,5,1 |
1292 .comm StickNick,2,1 |
1293 .comm StickRoll,2,1 |
1294 .comm StickGier,2,1 |
1295 .comm MotorenEin,1,1 |
1296 .comm NMEABuffer,150,1 |
1297 .comm navStatus,17,1 |
1298 .comm navPosECEF,21,1 |
1299 .comm navVelECEF,21,1 |
1300 .comm ubxP,2,1 |
1301 .comm ubxEp,2,1 |
1302 .comm ubxSp,2,1 |
1303 .comm CK_A,1,1 |
1304 .comm CK_B,1,1 |
1305 .comm msgLen,2,1 |
1306 .comm msgID,1,1 |
1307 .comm ignorePacket,1,1 |
1308 .comm rollOffset,4,1 |
1309 .comm nickOffset,4,1 |
1310 /* File "uart.c": code 1250 = 0x04e2 (1147), prologues 49, epilogues 54 */ |
DEFINED SYMBOLS |
*ABS*:00000000 uart.c |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:3 *ABS*:0000003f __SREG__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:4 *ABS*:0000003e __SP_H__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:5 *ABS*:0000003d __SP_L__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:6 *ABS*:00000000 __tmp_reg__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:7 *ABS*:00000001 __zero_reg__ |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:13 .text:00000000 __vector_22 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:1210 .data:00000000 UebertragungAbgeschlossen |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:1249 .bss:00000015 ptr.2021 |
*COM*:00000096 SendeBuffer |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:69 .text:0000006c GPSscanData |
*COM*:00000015 navPosECEF |
*COM*:0000001a actualPos |
*COM*:00000011 navStatus |
*COM*:00000015 navVelECEF |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:149 .text:00000162 __vector_20 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:1192 .bss:00000004 SioTmp |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:1250 .bss:00000017 gpsState |
*COM*:00000001 msgID |
*COM*:00000001 CK_A |
*COM*:00000001 CK_B |
*COM*:00000002 ubxP |
*COM*:00000002 ubxEp |
*COM*:00000002 ubxSp |
*COM*:00000001 ignorePacket |
*COM*:00000002 msgLen |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:1245 .bss:00000010 buf_ptr.2054 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:1244 .bss:0000000f UartState.2055 |
*COM*:00000096 RxdBuffer |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:1248 .bss:00000013 crc.2051 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:1247 .bss:00000012 crc1.2052 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:1246 .bss:00000011 crc2.2053 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:1217 .bss:00000007 CntCrcError |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:1198 .bss:00000005 NeuerDatensatzEmpfangen |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:1223 .bss:00000008 AnzahlEmpfangsBytes |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:567 .text:00000536 AddCRC |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:621 .text:00000592 SendOutData |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:735 .text:00000662 Decode64 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:835 .text:00000712 uart_putchar |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:859 .text:00000734 WriteProgramData |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:869 .text:00000736 UART_Init |
*COM*:00000002 Debug_Timer |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:902 .text:00000770 DatenUebertragung |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:1168 .bss:00000000 DebugGetAnforderung |
*COM*:0000000b DebugIn |
*COM*:00000001 MeineSlaveAdresse |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:1180 .bss:00000002 DebugDataAnforderung |
*COM*:00000032 DebugOut |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:1174 .bss:00000001 DebugDisplayAnforderung |
.bss:0000000e dis_zeile.2372 |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:1186 .bss:00000003 GetVersionAnforderung |
*COM*:0000000a VersionInfo |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:997 .text:0000084c BearbeiteRxDaten |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:1235 .data:00000001 PcZugriff |
*COM*:00000001 RemoteTasten |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:1242 .bss:0000000a MotorTest |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:1204 .bss:00000006 NeueKoordinateEmpfangen |
C:\DOKUME~1\CHRIST~1\LOKALE~1\Temp/ccRsoX2g.s:1229 .bss:00000009 PC_DebugTimeout |
*COM*:00000002 DiffNick |
*COM*:00000002 DiffRoll |
*COM*:00000001 SenderOkay |
*COM*:00000001 CosinusNickWinkel |
*COM*:00000001 CosinusRollWinkel |
*COM*:00000004 durchschnitt_northing |
*COM*:00000004 durchschnitt_easting |
*COM*:00000002 gps_p |
*COM*:00000002 gps_d |
*COM*:00000002 skal |
*COM*:00000002 gps_gethome |
*COM*:00000001 Timeout |
*COM*:00000004 IntegralNick |
*COM*:00000004 IntegralNick2 |
*COM*:00000004 IntegralRoll |
*COM*:00000004 IntegralRoll2 |
*COM*:00000004 Mess_IntegralNick |
*COM*:00000004 Mess_IntegralNick2 |
*COM*:00000004 Mess_IntegralRoll |
*COM*:00000004 Mess_IntegralRoll2 |
*COM*:00000004 Integral_Gier |
*COM*:00000004 Mess_Integral_Gier |
*COM*:00000001 h |
*COM*:00000001 m |
*COM*:00000001 s |
*COM*:00000001 Motor_Vorne |
*COM*:00000001 Motor_Hinten |
*COM*:00000001 Motor_Rechts |
*COM*:00000001 Motor_Links |
*COM*:00000001 Count |
*COM*:00000005 MotorWert |
*COM*:00000002 StickNick |
*COM*:00000002 StickRoll |
*COM*:00000002 StickGier |
*COM*:00000001 MotorenEin |
*COM*:00000096 NMEABuffer |
*COM*:00000004 rollOffset |
*COM*:00000004 nickOffset |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
SetDelay |
CheckDelay |
Menu |
DisplayBuff |
EE_Parameter |
ReadParameterSet |
GetActiveParamSetNumber |
WriteParameterSet |
EEPromArray |
__eeprom_write_byte_1F2021 |
Piep |
/branches/martosi/Flight-Ctrl_MEGA644_V0_60.aps |
---|
0,0 → 1,0 |
<AVRStudio><MANAGEMENT><ProjectName>Flight-Ctrl_MEGA644_V0_60</ProjectName><Created>19-Aug-2007 14:38:13</Created><LastEdit>19-Aug-2007 14:51:35</LastEdit><ICON>241</ICON><ProjectType>0</ProjectType><Created>19-Aug-2007 14:38:13</Created><Version>4</Version><Build>4, 13, 0, 528</Build><ProjectTypeName>AVR GCC</ProjectTypeName></MANAGEMENT><CODE_CREATION><ObjectFile>Flight-Ctrl_MEGA644_V0_60.elf</ObjectFile><EntryFile></EntryFile><SaveFolder>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\</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>main.c</SOURCEFILE><SOURCEFILE>analog.c</SOURCEFILE><SOURCEFILE>eeprom.c</SOURCEFILE><SOURCEFILE>fc.c</SOURCEFILE><SOURCEFILE>GPS.c</SOURCEFILE><SOURCEFILE>gps_ubx.c</SOURCEFILE><SOURCEFILE>menu.c</SOURCEFILE><SOURCEFILE>printf_P.c</SOURCEFILE><SOURCEFILE>rc.c</SOURCEFILE><SOURCEFILE>timer0.c</SOURCEFILE><SOURCEFILE>twimaster.c</SOURCEFILE><SOURCEFILE>uart.c</SOURCEFILE><HEADERFILE>_Settings.h</HEADERFILE><HEADERFILE>analog.h</HEADERFILE><HEADERFILE>fc.h</HEADERFILE><HEADERFILE>gps.h</HEADERFILE><HEADERFILE>gps_ubx.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>std_c.h</HEADERFILE><HEADERFILE>timer0.h</HEADERFILE><HEADERFILE>twimaster.h</HEADERFILE><HEADERFILE>uart.h</HEADERFILE><OTHERFILE>makefile</OTHERFILE></FILES><CONFIGS><CONFIG><NAME>default</NAME><USESEXTERNALMAKEFILE>YES</USESEXTERNALMAKEFILE><EXTERNALMAKEFILE>makefile</EXTERNALMAKEFILE><PART>atmega644</PART><HEX>1</HEX><LIST>0</LIST><MAP>0</MAP><OUTPUTFILENAME>Flight-Ctrl_MEGA644_V0_60.elf</OUTPUTFILENAME><OUTPUTDIR>default\</OUTPUTDIR><ISDIRTY>1</ISDIRTY><OPTIONS/><INCDIRS/><LIBDIRS/><LIBS/><LINKOBJECTS/><OPTIONSFORALL>-Wall -gdwarf-2 -O0 -fsigned-char</OPTIONSFORALL><LINKEROPTIONS></LINKEROPTIONS><SEGMENTS/></CONFIG></CONFIGS><LASTCONFIG>default</LASTCONFIG><USES_WINAVR>1</USES_WINAVR><GCC_LOC>C:\WinAVR\bin\avr-gcc.exe</GCC_LOC><MAKE_LOC>C:\WinAVR\utils\bin\make.exe</MAKE_LOC></AVRGCCPLUGIN><ProjectFiles><Files><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\_Settings.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\analog.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\fc.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\gps.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\gps_ubx.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\main.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\menu.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\old_macros.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\printf_P.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\rc.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\Settings.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\std_c.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\timer0.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\twimaster.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\uart.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\main.c</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\analog.c</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\eeprom.c</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\fc.c</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\GPS.c</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\gps_ubx.c</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\menu.c</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\printf_P.c</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\rc.c</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\timer0.c</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\twimaster.c</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\uart.c</Name></Files></ProjectFiles><IOView><usergroups/></IOView><Files><File00000><FileId>00000</FileId><FileName>main.c</FileName><Status>1</Status></File00000></Files><Workspace><File00000><Position>343 98 875 474</Position><LineCol>0 0</LineCol></File00000></Workspace><Events><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio> |
/branches/martosi/Flight-Ctrl_MEGA644_V0_60.hex |
---|
0,0 → 1,1601 |
:100000000C94EA010C9405020C9405020C94050270 |
:100010000C9405020C9405020C9405020C94050244 |
:100020000C9405020C94A70A0C9405020C9405028A |
:100030000C94A8130C9405020C9405020C94050270 |
:100040000C9405020C9405020C94FE090C94050214 |
:100050000C9423060C9405020C94AD030C94050239 |
:100060000C94930B0C9405020C94F5120C9405025D |
:100070000A0A0D004E65757472616C004865616412 |
:10008000696E67486F6C64000A0D5374657565721C |
:10009000756E673A20004F4B0A0D000A0D416267EA |
:1000A0006C65696368204C756674647275636B7304 |
:1000B000656E736F722E2E000A0D42656E75747A2E |
:1000C0006520506172616D657465727361747A2028 |
:1000D0002564000A0D496E69742E20454550524F23 |
:1000E0004D3A2047656E65726965726520446566A4 |
:1000F00061756C742D506172616D657465722E2E20 |
:100100002E000A0D3D3D3D3D3D3D3D3D3D3D3D3DCE |
:100110003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D0F |
:100120003D3D000A0D466C69676874436F6E7472DA |
:100130006F6C205625642E256420002E00475053F6 |
:100140005F526F6C6C3A20253369004750535F4E05 |
:1001500069636B20202533690047505320200052EB |
:10016000616E67653A2533692D25336900537465DF |
:100170006C6C756E673A2025336900536574706F37 |
:10018000696E74202025336900536572766F2020D4 |
:1001900000506F7469343A202025336900506F7421 |
:1001A00069333A202025336900506F7469323A2050 |
:1001B0002025336900506F7469313A202025336956 |
:1001C0000053746172743A20202020202535690084 |
:1001D0004D657373776572743A2020253569005236 |
:1001E00069636874756E673A2020253569004B6F26 |
:1001F0006D706173732020202020202000456D70D9 |
:10020000662E506567656C3A253569005370616EDE |
:100210006E756E673A202025356900486F63682047 |
:1002200025346920282533692900526F6C6C2025FC |
:100230003469202825336929004E69636B202534F1 |
:100240006920282533692900414343202D20536527 |
:100250006E736F7200476965722025346920282506 |
:1002600033692900526F6C6C2025346920282533AE |
:100270006929004E69636B2025346920282533697C |
:1002800029004779726F202D2053656E736F7200BD |
:1002900050333A25346920204B616EE46C652000B0 |
:1002A00050313A253469202050323A2534692000F3 |
:1002B00047733A253469202047693A25346920007C |
:1002C0004E693A2534692020526F3A25346920005E |
:1002D0004B373A25346920204B616EE46C65200071 |
:1002E0004B353A25346920204B363A2534692000B5 |
:1002F0004B333A25346920204B343A2534692000A9 |
:100300004B313A25346920204B323A25346920009C |
:100310004B6F6D706173733A202020253569005250 |
:100320006F6C6C3A202020202020253569004E6912 |
:10033000636B3A20202020202025356900616B74F2 |
:100340002E204C6167650048F668656E72656765CA |
:100350006C756E67004B65696E6520004F666620A0 |
:1003600020202020203A20253569004C75667464D1 |
:100370007275636B3A2025356900536F6C6C486F5A |
:100380006568653A2025356900486F6568653A20DB |
:10039000202020202535690028632920486F6C67BC |
:1003A000657220427573730053657474696E673AA1 |
:1003B00020256420005625642E2564002B2B204D1B |
:1003C000696B726F4B6F70746572202B2B005B250D |
:1003D000695D000011241FBECFEFD0E1DEBFCDBFAD |
:1003E00011E0A0E0B1E0E0E3F3E602C005900D9279 |
:1003F000A83CB107D9F717E0A8ECB1E001C01D9205 |
:10040000A73AB107E1F70C9438020C940000A2E07F |
:10041000B0E00E948431802D99270895FB01282F98 |
:10042000863008F025E0429FD0011124AC59BF4F1F |
:10043000842F9927019724F001900E948C31FACFE4 |
:10044000A2E0B0E0022E0E948C310895FB018630BC |
:1004500008F085E0489FD0011124AC59BF4F842F8C |
:100460009927019724F00E9484310192FACF0895D0 |
:100470000F931F93CF93DF9391E097B98FEF88B9D4 |
:100480008BE184B995B98EE38AB9579A87EF8BB916 |
:1004900084B7877F84BF809160008861809360000B |
:1004A0001092600080ED97E09093E5018093E40165 |
:1004B00010926602109265021092170610921606AC |
:1004C0001092640210926302109262021092610212 |
:1004D00028980E94540B0E94E8040E9493130E94E3 |
:1004E0008D0B0E94DB127894109225058CE380938B |
:1004F000260584E0809327058CE390E09F938F93FB |
:100500001F921F9283E291E09F938F931F920E940C |
:10051000590782E091E09F938F931F920E945907A1 |
:10052000299AA1E0B0E00E948431802D2DB73EB71A |
:10053000265F3F4F0FB6F8943EBF0FBE2DBF8B33E3 |
:10054000A9F183ED90E09F938F931F920E9459072A |
:100550000E945E1B4AE36EE376E080E00E940E029A |
:1005600001E00F900F900F90023049F40E94F11AB1 |
:100570004AE36EE376E082E00E940E0203E04AE383 |
:100580006EE376E0802F0E940E020F5F063060F36C |
:1005900081E022E030E0D901082E0E948C318BE30B |
:1005A00021503040D901082E0E948C3102E010E029 |
:1005B000D8010E948431802D4AE36EE376E00E94E8 |
:1005C0002602D8010E948431802D99279F938F9312 |
:1005D00088EB90E09F938F931F920E945907809120 |
:1005E00046060F900F900F900F900F9080FF20C045 |
:1005F0008BE990E09F938F931F920E94590784ECA0 |
:1006000099E00E94920AEC010E94B70E0F900F90A1 |
:100610000F90CE010E949B0A8823D9F386E990E0CF |
:100620009F938F931F920E9459070F900F900F90E6 |
:100630000E94161C289880ED97E09093E501809326 |
:10064000E40188EE93E09093200580931F0585E5F3 |
:1006500080931A0588E890E09F938F931F920E94E1 |
:100660005907809146060F900F900F9082FF03C0AC |
:100670008CE790E002C084E790E09F938F931F92F5 |
:100680000E9459070F900F900F9080E790E09F9382 |
:100690008F931F920E9459070E94DE0E0F900F90B9 |
:1006A0000F908091E101882379F11092E1010E947D |
:1006B000291D0E94CF1B289880910101882319F0E1 |
:1006C00081508093010180916002882329F08091FC |
:1006D00060028150809360022091040130910501F5 |
:1006E0008091560699272817390734F480ED97E052 |
:1006F0009093E5018093E40180910F02882319F41F |
:100700000E94DB1201C028988091460685FF03C035 |
:100710000E945A2908C010929602109295021092D7 |
:100720009802109297020E9403050E94710580E0D2 |
:1007300090E00E949B0A882309F4B3CF809167025E |
:10074000882329F088B190E1892788B901C04498AD |
:1007500084EF91E00E94920AA4CF1F920F920FB6ED |
:100760000F9211248F939F93EF93FF938091000139 |
:100770008823E1F48091DD019091DE010196909350 |
:10078000DE018093DD01FC01E451FC4FE081ED309E |
:1007900019F08639910539F41092DE011092DD01CD |
:1007A00081E080930001E093C60004C01092DE0156 |
:1007B0001092DD01FF91EF919F918F910F900FBEED |
:1007C0000F901F901895DC0120E030E040E050E0F1 |
:1007D000ECEEF3E005C08191280F311D4F5F5F4FB4 |
:1007E0004A175B07C1F73F70C90136E096958795B8 |
:1007F0003A95E1F7835CFD01E451FC4F808311964B |
:100800002F73235CFD01E451FC4F2083A351BC4FA7 |
:100810008DE08C93109200018091EC038093C600D0 |
:100820000895EF92FF920F931F93CF93DF937A0176 |
:10083000722F93E29093EC036093ED038093EE03A9 |
:1008400003E010E060E0AFEEB3E046C0F701E60F72 |
:10085000F11D90816F5F715019F4E0E040E00FC02E |
:10086000F701E60FF11D40816F5F715011F4E0E078 |
:1008700006C0F701E60FF11DE0816F5F7150892F0F |
:1008800086958695835C8C935527892F992783704D |
:10089000907024E0880F991F2A95E1F79A0194E05F |
:1008A000369527959A95E1F7822B835CED01898334 |
:1008B0004F705070440F551F440F551F8E2F829557 |
:1008C000869586958370842B835C8A83EF73E35CC3 |
:1008D000EB830C5F1F4F1496772309F0B7CFC80145 |
:1008E0000E94E303DF91CF911F910F91FF90EF9052 |
:1008F00008950F931F93CF93DF93EC01062F70E0C1 |
:10090000A22FBB2712974AC0E42FFF27E15DFA4FC1 |
:1009100030814F5FE42FFF27E15DFA4F50814F5F39 |
:10092000E42FFF27E15DFA4F10814F5FE42FFF278F |
:10093000E15DFA4F20814F5F842F9927A817B907EF |
:1009400084F1701771F15D53FE01E70FF11D3D5306 |
:10095000330F330F852F82958F70382B30836130A2 |
:1009600001F1912F9D537F5FFE01E70FF11D715043 |
:100970005295507F892F86958695582B50836350CA |
:100980006F3F79F07E5FFE01E70FF11D9295990FA1 |
:10099000990F907C2D53922B90837F5F662309F0F3 |
:1009A000B3CFDF91CF911F910F9108951F93182F0F |
:1009B0008A3019F48DE00E94D6048091C00085FF32 |
:1009C000FCCF1093C60080E090E01F910895089539 |
:1009D000E1ECF0E088E18083A0ECB0E08C918260F3 |
:1009E0008C938081806880838081806480838AE2A8 |
:1009F0008093C40088EC90E00E94920A90931905BD |
:100A000080931805089580910001882309F468C037 |
:100A10008091C801882371F080910001882351F0F2 |
:100A20002BE04AE155E06091EB0387E40E9411045A |
:100A30001092C80180911805909119050E949B0A97 |
:100A4000882321F48091CA018823B1F080910001AC |
:100A5000882391F022E345EC55E06091EB0384E4B8 |
:100A60000E9411041092CA018AEF90E00E94920A3B |
:100A700090931905809318058091C9018823F1F09E |
:100A8000809100018823D1F00E94E70E1092C901E5 |
:100A90008091D6018F5F8093D601843011F410923B |
:100AA000D6018091D60144E1849FA00111244A5EC1 |
:100AB0005E4F24E160E0805D0E9411048091CB01D3 |
:100AC000882371F080910001882351F02AE045E2EB |
:100AD00055E06091EB0386E50E9411041092CB0172 |
:100AE00008951F93CF93DF93CDB7DEB722970FB64C |
:100AF000F894DEBF0FBECDBF8091CD01882309F4ED |
:100B000098C08FEF8093010180913105813760F4A7 |
:100B10008C3608F06FC0873609F440C08836F9F08B |
:100B2000833609F084C008C0843759F1863791F1C3 |
:100B3000813709F07CC036C02091D00143E06BE0E2 |
:100B40008AE195E00E9479048091060290911C054B |
:100B5000892B8093060281E08093CA0168C02091AE |
:100B6000D00143E062E0CE0101960E9479048091B9 |
:100B700006029981892B8093060281E08093C90146 |
:100B800056C02091D00143E064E082ED91E00E94E4 |
:100B900079044DC081E08093CB0149C081E080930E |
:100BA000C80145C02091D00143E062E0CE0101962A |
:100BB0000E94790489818F3F89F0863010F085E0AA |
:100BC00089834AE36EE376E089810E942602898167 |
:100BD0002AE34EE356E06091EB0308C01091EB036B |
:100BE0000E9407022AE34EE356E0612F855B0E94D4 |
:100BF00011041DC02091D00143E06AE38EE396E02A |
:100C00000E947904809131054AE36EE376E08B56C9 |
:100C10000E940E02809131058B56A2E0B0E0082EB2 |
:100C20000E948C310E94070299270E94141D109285 |
:100C3000CD0122960FB6F894DEBF0FBECDBFDF9177 |
:100C4000CF911F9108951F920F920FB60F9211240A |
:100C50002F933F934F935F936F937F938F939F93C4 |
:100C6000AF93BF93CF93DF93EF93FF938091C60031 |
:100C70008093CC018091CC010E94E22A4091D8015E |
:100C8000463910F01092D7018091CC018D3009F0D7 |
:100C90005DC08091D701823009F058C01092D70111 |
:100CA000A42FBB27FD01E35DFA4F3081ED01C25D4A |
:100CB000DA4F28818091DB019091DC01831B91093F |
:100CC000821B91099F709093DC018093DB019C0152 |
:100CD000689415F8369527951694E1F7235C2093D0 |
:100CE000DA01982F9F73935C9093D9018081281724 |
:100CF00029F48881981711F491E006C08091CF0102 |
:100D00008F5F8093CF0190E08091CD01882309F01F |
:100D100064C0992309F461C081E08093CD014093C0 |
:100D2000D001A15DBA4F8DE08C9380913105823561 |
:100D300009F053C088E190E02CE00FB6F894A89534 |
:100D4000809360000FBE2093600047C08091D70160 |
:100D50008130D9F0813018F08230E9F530C08091CF |
:100D6000CC01833239F48091CD01882319F481E0DC |
:100D70008093D7018091CC0180932F0581E08093EF |
:100D8000D8018091CC01992715C082E08093D701CA |
:100D9000E42FFF278091CC01E15DFA4F80834F5F04 |
:100DA0004093D8012091CC018091DB019091DC012E |
:100DB000820F911D9093DC018093DB010EC0E42F24 |
:100DC000FF278091CC01E15DFA4F8083463938F3EB |
:100DD0001092D701E7CF1092D701FF91EF91DF91E9 |
:100DE000CF91BF91AF919F918F917F916F915F91C3 |
:100DF0004F913F912F910F900FBE0F901F9018951C |
:100E0000982F8091F705813069F480910502E82FD1 |
:100E1000FF27EA5EFE4F90838F5F8093050221E0FB |
:100E200030E005C0892F0E94D604282F3327C9013E |
:100E300008951F93182F04C080E30E9400071150EB |
:100E40001116D4F31F9108951F93182F04C080E248 |
:100E50000E94000711501116D4F31F9108950F93AB |
:100E60001F93CF93DF938C01EB0108C0F8010F5F54 |
:100E70001F4FE4918E2F0E94000721972097B1F712 |
:100E8000DF91CF911F910F9108950F931F93CF93EF |
:100E9000DF938C01EB0106C0F80181918F010E9464 |
:100EA000000721972097C1F7DF91CF911F910F91F4 |
:100EB00008952F923F924F925F926F927F928F92FE |
:100EC0009F92AF92BF92CF92DF92EF92FF920F93D9 |
:100ED0001F93CF93DF93CDB7DEB7E3970FB6F894A8 |
:100EE000DEBF0FBECDBF29968FAD29978093F70542 |
:100EF000CE01855B9F4F9D838C832B964EAD5FAD5E |
:100F00002B975FA74EA722243324210102C013018F |
:100F100024010EA51FA502C00F5F1F4FF801F4901A |
:100F2000FF2019F0F5E2FF16B9F7B8014EA55FA54D |
:100F3000641B750B19F0CA010E942F07FF2009F4EA |
:100F400044C20F5F1F4F1FA70EA71982AC81BD813E |
:100F50001BAA1AAA5FEF59ABEEA5FFA5CF01019618 |
:100F60009FA78EA7B49095E7B91621F08B2D8062CC |
:100F7000883789F4EBA9E0FF07C02D903D904D9094 |
:100F80005C901397149607C08D919C9111971C014A |
:100F9000442455241296F0E2BF1621F48981882357 |
:100FA000D9F686C043E2B41609F484C05AE2B516F5 |
:100FB00021F08DE2B81671F408C0FD011296E081AF |
:100FC000EAABE7FFC9CFE195EAAB9BA990619F7DB2 |
:100FD0009BABC2CFEBE2BE1609F46AC0FEE2BF16BD |
:100FE000B1F52EA53FA52F5F3F4FEEA5FFA584913C |
:100FF0008A3221F0B82E20E030E01BC0FD011296AD |
:101000004081518157FF02C04FEF5FEF49AB3FA7CF |
:101010002EA7A2CF8AE090E0A901489F9001499FA6 |
:10102000300D589F300D11242B0D311D20533040B1 |
:10103000B49031968B2D80538A3060F3FFA7EEA7D2 |
:10104000A90137FF02C04FEF5FEF49AB8CCF50E3F0 |
:10105000B51631F48BA984FD7FCF80628BAB7CCF3A |
:101060008B2D81538930E8F420E030E04AE050E0F5 |
:10107000F901E49F9001E59F300DF49F300D11249C |
:101080002B0D311D20533040EEA5FFA5CF01019659 |
:101090009FA78EA7B4908B2D80538A3048F32AAB3C |
:1010A00062CF98E6B91651F4EBA9E460EBAB54CFEC |
:1010B000B98252CFFBA9F860FBAB4ECF4CE6B41619 |
:1010C00021F45BA951605BAB47CFBD83AC8383E662 |
:1010D000B81639F41296BD83AC8312978C918E8327 |
:1010E00019C194E4B91639F0E4E6BE1639F0F9E610 |
:1010F000BF1659F503C04BA941604BAB5BA950FF2C |
:1011000008C01496BD83AC835E904E903E902E90A6 |
:101110000AC01296BD83AC839E918E911C0144241B |
:1011200037FC4094542C57FC03C08AE088AB93C032 |
:101130005094409430942094211C311C411C511C2B |
:101140008DE289839AE098AB86C0EFE4BE1629F061 |
:10115000FFE6BF1641F448E061C05BA951605BAB9C |
:1011600088E088AB77C090E7B91671F41296BD831A |
:10117000AC839E918E911C0144245524EBA9E0641C |
:10118000EBAB78E7B72E5EC043E7B416D9F51296FD |
:10119000BD83AC83DE90CE90C114D10489F488E283 |
:1011A0008E838EE68F8385E788878CE689878A879A |
:1011B00089E28B871C8666E0C62ED12CCC0EDD1E04 |
:1011C00059A957FD13C0452F552747FD509560E09D |
:1011D00070E0C6010E94252C009711F419A90DC0DA |
:1011E0008C1919A981174CF4182F07C0F60101902A |
:1011F0000020E9F731971E2F1C1919824201310195 |
:1012000040E094C085E5B81629F095E7B91641F499 |
:10121000EAE011C0FBA9F160FBAB4AE048AB1AC0A1 |
:1012200058E5B51621F088E7B81609F06FC09BA9FC |
:1012300093FD03C0E0E1E8AB0DC02114310441048B |
:10124000510419F4F0E1F8AB05C04BA940644BAB75 |
:1012500050E158AB198289A987FD03C09BA99F7DE6 |
:101260009BAB211431044104510461F4E9A9EE233C |
:1012700049F46624772443015EE2C52ED12CCC0EBE |
:10128000DD1E3EC04EE2C42ED12CCC0EDD1EF8A9D0 |
:10129000EF2EFF2400271127C201B101A8019701F9 |
:1012A0000E9447316A3020F430E3A32EA60E08C016 |
:1012B00027E5A22EA60E48E5B41611F45FEDA5228F |
:1012C000F601A2926F01C201B101A80197010E942B |
:1012D000473139014A012E143F044006510618F0E7 |
:1012E00019012A01D9CFF8A9F83051F44BA943FFCD |
:1012F00007C050E3A51621F080E3F60182936F0149 |
:10130000AE014C19142F125D49A910C0BB2009F47D |
:101310005CC0BE8219824201310100E096E0C92E14 |
:10132000D12CCC0EDD1E11E091E005C0912F042FD1 |
:10133000011B07FD00E08981882319F0812F8F5F51 |
:1013400007C05BA956FD02C0812F02C0892F8E5FA6 |
:10135000A82EA00E8BA9E82EFF2480E3482E512C46 |
:101360004E205F204114510421F48AA98A190E9459 |
:1013700024078981882329F061E070E0CE0101967D |
:1013800009C0E6FE09C080E38A83BB8262E070E0A8 |
:10139000CE0102960E94450790E24916510421F4BD |
:1013A0008AA98A190E941907802F0E941907612FA4 |
:1013B000772767FD7095C6010E944507E4FEA7CD1B |
:1013C0008AA98A190E942407A2CDE3960FB6F89441 |
:1013D000DEBF0FBECDBFDF91CF911F910F91FF9068 |
:1013E000EF90DF90CF90BF90AF909F908F907F90C5 |
:1013F0006F905F904F903F902F9008951F920F92A3 |
:101400000FB60F9211242F933F935F936F937F93A7 |
:101410008F939F93AF93BF938091E8018150809306 |
:10142000E8018F3F01F589E08093E8018091030195 |
:101430008F5F817080930301882319F481E080938A |
:10144000E1018091DF019091E00101969093E0012C |
:101450008093DF0180910F02882329F080910F0291 |
:10146000815080930F028091E4019091E5010297F1 |
:1014700058F08091E4019091E50101979093E50186 |
:101480008093E4015A9A01C05A988091460683FFDE |
:101490003BC0349B0AC08091E2019091E301019628 |
:1014A0009093E3018093E2012FC08091E20190913B |
:1014B000E301892B79F08091E2019091E301805A58 |
:1014C0009F4040F48091E2019091E301909351029A |
:1014D00080935002809150029091510220915202CB |
:1014E00030915302821B930B845E9D4F68E671E03E |
:1014F0000E943431845B9040909355028093540253 |
:101500001092E3011092E201BF91AF919F918F91F0 |
:101510007F916F915F913F912F910F900FBE0F9030 |
:101520001F9018952091DF013091E0012F5F3F4F10 |
:10153000820F931F08952091DF013091E001821BFB |
:10154000930B892F992786958074992708951F9268 |
:101550000F920FB60F921124EF92FF920F931F93E9 |
:101560002F933F934F935F936F937F938F939F93AB |
:10157000AF93BF93CF93DF93EF93FF9380910201DB |
:101580008150809302018F3F09F073C083E88093FC |
:10159000B00080918901C82FDD27D093E701C09367 |
:1015A000E60180916406E090600680FF1EC06091B5 |
:1015B0002002709121028091220290912302FF2447 |
:1015C0000027112720E830E040E050E00E94693118 |
:1015D000C801B7010E94013120E032E040E050E054 |
:1015E0000E946931C20FD31F1DC06091200270910B |
:1015F00021028091220290912302FF2400271127CB |
:1016000020E830E040E050E00E946931C801B701B5 |
:101610000E94013120E032E040E050E00E94693158 |
:10162000C21BD30BD093E701C093E6012091E601E2 |
:101630003091E7018091610699272817390734F026 |
:101640008091620699278217930724F49093E7010B |
:101650008093E6018091E6019091E7019093EC057B |
:101660008093EB058093B300809163068093020121 |
:1016700004C083E08093B0005F98FF91EF91DF9109 |
:10168000CF91BF91AF919F918F917F916F915F911A |
:101690004F913F912F911F910F91FF90EF900F90DD |
:1016A0000FBE0F901F9018958091DF019091E0017F |
:1016B0000B969093EA018093E90182E085BD83EA6D |
:1016C00084BD17BC88E788BD96E096BD83EC809307 |
:1016D000B0009093B100E0E7F0E080818260808309 |
:1016E000EEE6F0E08081816080838AE08093B30041 |
:1016F0001092B20008952091DF013091E0012F5F38 |
:101700003F4F280F391F8091DF019091E001A9011F |
:10171000481B590B57FFF7CF089510927C008FEEAE |
:1017200080937A0008951F920F920FB60F921124A2 |
:10173000EF92FF920F931F932F933F934F935F93DB |
:101740006F937F938F939F93AF93BF93CF93DF93C9 |
:10175000EF93FF9310927A00409101024F5F409304 |
:1017600001024150433009F41CC1443038F4413087 |
:1017700009F463C0423008F0B9C00DC0453009F427 |
:1017800050C1453008F42AC1463009F46FC14730D2 |
:1017900009F0CBC252C220911402309115028091FF |
:1017A000780090917900281B390B8091EF0190917E |
:1017B000F001820F931F9093F0018093EF018091CD |
:1017C000F9018F5F8093F901809144029091450265 |
:1017D000A0914602B0914702442737FD4095542F0F |
:1017E000820F931FA41FB51F80934402909345025C |
:1017F000A0934602B093470280914802909149021B |
:10180000A0914A02B0914B02820F931FA41FB51FF3 |
:101810008093480290934902A0934A02B0934B02EE |
:1018200081E0809302028091FF0190910002019675 |
:10183000909300028093FF017CC2609178007091C8 |
:1018400079008091120290911302681B790B8091AC |
:101850003C0290913D02A0913E02B0913F029B015B |
:10186000442737FD4095542F820F931FA41FB51FA7 |
:1018700080933C0290933D02A0933E02B0933F02BE |
:101880008091400290914102A0914202B0914302A6 |
:10189000820F931FA41FB51F8093400290934102B3 |
:1018A000A0934202B0934302809178009091790016 |
:1018B0000A9710F464E47DEF8091780090917900AC |
:1018C000895E934010F06CEB72E08091ED01909195 |
:1018D000EE01860F971F9093EE018093ED018091AA |
:1018E000F8018F5F8093F80182E058C06091780022 |
:1018F000709179008091100290911102681B790B10 |
:101900008091340290913502A0913602B091370255 |
:101910009B01442737FD4095542F820F931FA41F2E |
:10192000B51F8093340290933502A0933602B09392 |
:1019300037028091380290913902A0913A02B09119 |
:101940003B02820F931FA41FB51F80933802909310 |
:101950003902A0933A02B0933B02809178009091B3 |
:1019600079000A9710F464E47DEF809178009091FB |
:101970007900895E934010F06CEB72E08091EB018E |
:101980009091EC01860F971F9093EC018093EB01EF |
:101990008091F7018F5F8093F70184E080930202CA |
:1019A000C8C1409104015091050180917800909147 |
:1019B00079009A01220F331F240F351F63E070E076 |
:1019C0000E942031260F371F36952795369527958B |
:1019D000309305012093040186E0E0CF8091180246 |
:1019E000909119022091780030917900821B930B1D |
:1019F0009093F9058093F8058091F1019091F2019F |
:101A00002091F8053091F905820F931F9093F20110 |
:101A10008093F1018091FB018F5F8093FB0187E050 |
:101A2000BDCF80917800909179002091160230917D |
:101A30001702821B930B9093F9058093F805809110 |
:101A4000F3019091F4012091F8053091F905820F8E |
:101A5000931F9093F4018093F3018091FA018F5FBB |
:101A60008093FA014093020286E0E4C0609178001E |
:101A700070917900E0901A02F0901B0200911C0214 |
:101A800010911D02882777FD8095982F0E943F3086 |
:101A9000A80197010E94992F0E9422307093F601AD |
:101AA0006093F5012091F5013091F601E091F80580 |
:101AB000F091F905809103069091040697FF03C009 |
:101AC000909581959F4F64E070E00E943431EB0166 |
:101AD000CF01F7FF03C0909581959F4F64E070E0C0 |
:101AE0000E943431260F371F2C0F3D1F3093F60113 |
:101AF0002093F5018091F5019091F601029704F190 |
:101B000060911A0270911B0280911C0290911D023B |
:101B100020E030E048E454E40E94493088230CF08F |
:101B20003CC060911A0270911B0280911C0290913E |
:101B30001D022AE037ED43EA5CE30E949A2F25C09C |
:101B40008091F5019091F6018F5F9F4F34F5609180 |
:101B50001A0270911B0280911C0290911D0220E0DC |
:101B600030E046E154E40E944C301816B4F4609121 |
:101B70001A0270911B0280911C0290911D022AE0B2 |
:101B800037ED43EA5CE30E94992F60931A02709349 |
:101B90001B0280931C0290931D0281E08093FC0144 |
:101BA00080917800909179009093FB058093FA05DD |
:101BB00020914C0230914D0240914E0250914F02C3 |
:101BC0008091F5019091F601AA2797FDA095BA2F73 |
:101BD000280F391F4A1F5B1F20934C0230934D0280 |
:101BE00040934E0250934F02E0904C02F0904D0211 |
:101BF00000914E0210914F0260914C0270914D0283 |
:101C000080914E0290914F0220E034E040E050E09D |
:101C10000E946931E21AF30A040B150BE0924C02A0 |
:101C2000F0924D0200934E0210934F0283E0809396 |
:101C3000020287E0809301027CC0809108069091A7 |
:101C400009062091780030917900820F931F9093BC |
:101C5000090680930806809100068F5F8093000636 |
:101C600080910006853008F460C0809178009091E2 |
:101C7000790090930B0180930A01109200068091E5 |
:101C8000FC059091FD052091080630910906821B04 |
:101C9000930B2091680230916902821B930B909301 |
:101CA000FE018093FD016091080670910906E090A5 |
:101CB0000601F090070100910801109109018827A1 |
:101CC00077FD8095982FA8019701220F331F441F9D |
:101CD000551F2E0D3F1D401F511F620F731F841F84 |
:101CE000951F24E030E040E050E00E9469312093ED |
:101CF0000601309307014093080150930901209198 |
:101D0000FC053091FD058091060190910701A0919D |
:101D10000801B0910901281B390B30936902209307 |
:101D200068021092090610920806109202021092A0 |
:101D300001028091020280937C008FEE80937A00F2 |
:101D4000FF91EF91DF91CF91BF91AF919F918F91D3 |
:101D50007F916F915F914F913F912F911F910F91C3 |
:101D6000FF90EF900F900FBE0F901F901895CF939C |
:101D7000DF93C0E0D0E0C7BD82E390E00E947B0B20 |
:101D80008BE391E09F938F931F920E94590780915C |
:101D90000A0190910B010F900F900F90845893407F |
:101DA00020F02196CA3FD10531F7C093050688EC93 |
:101DB00090E00E947B0BDF91CF910895E6E1F1E086 |
:101DC00080E2819391E0E636F907D9F70895FF9212 |
:101DD0000F931F9380910602282F3327C90181702A |
:101DE0009070682F882391F080910702882311F06A |
:101DF000815002C08091660180930702E6E1F1E024 |
:101E000080E2819391E0E636F907D9F7A9014270A3 |
:101E1000507021FF0DC0809107028F5F80930702F1 |
:101E2000E6E1F1E080E2819391E0E636F907D9F747 |
:101E3000662321F0452B11F01092070281E1809377 |
:101E400005028091070299279F938F938EEC93E070 |
:101E50009F938F93E1E0FE2EFF920E94590700911D |
:101E600007020F900F900F900F900F90053009F41C |
:101E7000DAC1063090F4023009F4BBC0033030F40C |
:101E8000002309F1013009F08BC350C0033009F47D |
:101E900005C1043009F084C34EC1083009F49BC267 |
:101EA000093038F4063009F414C2073009F078C359 |
:101EB0006FC20A3009F40AC30A3008F4C9C20B30F1 |
:101EC00009F06EC340C3109205028CEB93E09F9320 |
:101ED0008F93FF920E94590784E1809305028CE35F |
:101EE00090E09F938F931F921F9285EB93E09F93B7 |
:101EF0008F93FF920E94590788E2809305020E9407 |
:101F0000070299279F938F9388EA93E09F938F937B |
:101F1000FF920E9459078CE38093050288E993E0C1 |
:101F20009F938F93FF920E9459078EC2809146061D |
:101F300080FF47C01092050280916802909169026B |
:101F40009F938F9389E893E09F938F930F930E94C1 |
:101F5000590784E18093050280916A0290916B0297 |
:101F60009F938F938AE793E09F938F930F930E94A1 |
:101F7000590788E28093050280910A0190910B0134 |
:101F80009F938F938BE693E09F938F930F930E9481 |
:101F900059078CE3809305028091050699279F934A |
:101FA0008F938CE593E09F938F930F930E94590733 |
:101FB0008DB79EB744960FB6F8949EBF0FBE8DBFE7 |
:101FC000F4C284E18093050285E593E09F938F93AB |
:101FD0000F930E94590788E28093050287E493E0FB |
:101FE0009F938F930F930E9459078DB79EB70696C4 |
:101FF000E2CF109205028DE393E09F938F93FF92BF |
:102000000E94590784E1809305026091200270913B |
:102010002102809122029091230220E034E040E0EE |
:1020200050E00E9469315F934F933F932F938EE26C |
:1020300093E09F938F93FF920E94590788E28093C9 |
:102040000502609128027091290280912A029091E4 |
:102050002B0220E034E040E050E00E9469315F93C1 |
:102060004F933F932F938FE193E09F938F93FF9232 |
:102070000E9459078CE38093050280915002909151 |
:1020800051029F938F9380E193E09F938F93FF92F0 |
:102090000E9459078DB79EB746968DCF10920502C4 |
:1020A000809116069091170620911406309115061E |
:1020B0009F938F933F932F9380E093E09F938F9311 |
:1020C000FF920E94590784E18093050280911A06CD |
:1020D00090911B0620911806309119069F938F93BB |
:1020E0003F932F9380EF92E09F938F93FF920E94F4 |
:1020F000590788E28093050280911E0690911F0681 |
:1021000020911C0630911D069F938F933F932F9330 |
:1021100080EE92E09F938F93FF920E9459078CE389 |
:102120008093050280912006909121069F938F93C2 |
:1021300080ED92E06FC010920502E0913F06FF270C |
:10214000EE0FFF1FEE5EF94F20813181E0913E06D8 |
:10215000FF27EE0FFF1FEE5EF94F808191813F93C5 |
:102160002F939F938F9380EC92E09F938F93FF9296 |
:102170000E94590784E180930502E0914106FF2700 |
:10218000EE0FFF1FEE5EF94F20813181E091400696 |
:10219000FF27EE0FFF1FEE5EF94F808191813F9385 |
:1021A0002F939F938F9380EB92E09F938F93FF9257 |
:1021B0000E94590788E280930502E0914306FF27B9 |
:1021C000EE0FFF1FEE5EF94F20813181E091420654 |
:1021D000FF27EE0FFF1FEE5EF94F808191813F9345 |
:1021E0002F939F938F9380EA92E09F938F93FF9218 |
:1021F0000E9459078CE380930502E0914406FF2773 |
:10220000EE0FFF1FEE5EF94F808191819F938F93B8 |
:1022100080E992E09F938F93FF920E9459078DB7B8 |
:102220009EB74A96C8CE1092050282E892E09F932C |
:102230008F93FF920E94590784E1809305022091B9 |
:102240001002309111028091EB019091EC016091AC |
:10225000F7013F932F9377270E9434317F936F9339 |
:1022600083E792E09F938F93FF920E94590788E241 |
:102270008093050220911202309113028091ED01AA |
:102280009091EE016091F8013F932F9377270E9480 |
:1022900034317F936F9384E692E09F938F93FF9204 |
:1022A0000E9459078CE3809305022091140230911B |
:1022B00015028091EF019091F0016091F9013F9337 |
:1022C0002F9377270E9434317F936F9385E592E0B7 |
:1022D00056C01092050288E492E09F938F93FF927C |
:1022E0000E94590784E180930502209116023091E3 |
:1022F00017028091F3019091F4016091FA013F93EC |
:102300002F9377270E9434317F936F9389E392E074 |
:102310009F938F93FF920E94590788E28093050252 |
:1023200020911802309119028091F1019091F201EF |
:102330006091FB013F932F9377270E9434317F9365 |
:102340006F938AE292E09F938F93FF920E945907C6 |
:102350008CE38093050260911A0270911B028091B8 |
:102360001C0290911D020091FA051091FB050E943C |
:1023700022307F936F931F930F938BE192E09F9393 |
:102380008F93FF920E9459078DB79EB7489613CE40 |
:1023900084E18093050280910401909105019F934F |
:1023A0008F938CE092E09F938F93FF920E94590746 |
:1023B00088E2809305028091600299279F938F9312 |
:1023C0008DEF91E09F938F93FF920E9459078DB7F5 |
:1023D0009EB70A96F0CD109205028EEE91E09F9383 |
:1023E0008F93FF920E94590784E1809305028091A8 |
:1023F0005402909155029F938F938FED91E09F939C |
:102400008F93FF920E94590788E280930502809182 |
:102410005002909151029F938F9380ED91E09F9392 |
:102420008F93FF920E9459078CE38093050280915D |
:102430005202909153029F938F9381EC91E09F936E |
:102440008F93FF920E9459078DB79EB74296B3CDE6 |
:102450001092050280915802909159029F938F9398 |
:1024600085EB91E09F938F93FF920E94590784E13F |
:102470008093050280915A0290915B029F938F9303 |
:1024800089EA91E09F938F93FF920E94590788E217 |
:102490008093050280915C0290915D029F938F93DF |
:1024A0008DE991E09F938F93FF920E9459078CE3EF |
:1024B0008093050280915E0290915F029F938F93BB |
:1024C00081E991E09F938F93FF9270CD1092050266 |
:1024D00089E891E09F938F93FF920E94590784E1CE |
:1024E000809305028091890199279F938F938BE7B1 |
:1024F00091E09F938F93FF920E94590788E2809307 |
:1025000005028091E6019091E7019F938F938DE6FC |
:1025100091E09F938F93FF920E9459078CE38093E1 |
:1025200005028091620699279F938F93809161069F |
:1025300099279F938F938FE591E09F938F93FF92BD |
:102540000E94590735CD1092050289E591E09F93CD |
:102550008F93FF920E94590784E180930502809136 |
:102560009502909196029F938F938BE491E09F93B5 |
:102570008F93FF920E94590788E280930502809111 |
:102580009702909198029F938F938DE391E09F9390 |
:102590008F93FF920E9459078DB79EB70D960BCD72 |
:1025A00001500093660110920702109206021F91DB |
:1025B0000F91FF9008951092B9008AE28093B800BD |
:1025C000089585EA8093BC0080E090E0089584E956 |
:1025D0008093BC0008951092B9008093BB0085E8F9 |
:1025E0008093BC0080E090E008951F920F920FB698 |
:1025F0000F9211248F939F93EF93FF938091080282 |
:102600008F5F809308028150833009F442C0843088 |
:1026100028F48130A1F0823070F50CC0853009F4C7 |
:1026200048C08530D8F1863009F44BC0873009F0B6 |
:1026300071C05BC080910902880F8E5A14C08091CE |
:1026400009028F5F809309028150813009F444C0F0 |
:10265000813038F0823009F442C0833009F05AC02A |
:1026600041C08091AF021092B9008093BB0085E811 |
:102670008093BC004FC084E98093BC008091090224 |
:10268000843018F41092080202C01092090285EA00 |
:10269000EFCF80910A02880F8D5AE5CF80910A0210 |
:1026A0008130D1F08130E8F28230C9F0833091F589 |
:1026B00019C08091BB00E0910A02FF27E65FF94F45 |
:1026C000808380910A02813039F0813050F282306B |
:1026D00031F08330F9F406C08091B002C4CF80910C |
:1026E000B703C1CF8091E203BECF80910A029091DF |
:1026F000BB00E82FFF27E65FF94F94838F5F80933D |
:102700000A02843010F010920A0284E98093BC001F |
:1027100010920802FF91EF919F918F910F900FBE41 |
:102720000F901F90189583EC80938100EFE6F0E006 |
:1027300080818062808310921502109214021092A0 |
:1027400013021092120210921102109210020895B8 |
:102750001F920F920FB60F9211240F931F932F9376 |
:102760003F934F935F936F937F938F939F93AF9319 |
:10277000BF93CF93DF93EF93FF9320918600309127 |
:10278000870080910D0290910E02281B390B8091D9 |
:1027900086009091870090930E0280930D02C901EC |
:1027A0008D5D95408356994148F481E090E0909387 |
:1027B0000C0280930B021092670154C0C0910B026F |
:1027C000D0910C02CA30D1050CF04CC0C9018B5F0E |
:1027D0009040845B914008F040C0A901425D5140A7 |
:1027E000FE01EE0FFF1FEE5EF94F80819181FA012D |
:1027F000E81BF90BCF01F7FF03C0909581959F4F20 |
:1028000006974CF480916002883C28F48091600225 |
:10281000865F80936002FE01EE0FFF1F8F010E5E48 |
:10282000194FD8012D913C91C901880F991F820F32 |
:10283000931F840F951F64E070E00E943431D8012B |
:102840008D919C9111979B01281B390BE85DF94FE5 |
:102850003183208311967C936E932196D0930C0242 |
:10286000C0930B02FF91EF91DF91CF91BF91AF9198 |
:102870009F918F917F916F915F914F913F912F9198 |
:102880001F910F910F900FBE0F901F901895AF9250 |
:10289000BF92CF92DF92EF92FF920F931F9310920D |
:1028A0007A008091F701882369F08091EB01909183 |
:1028B000EC016091F70177270E94343170937B0619 |
:1028C00060937A068091F801882369F08091ED0188 |
:1028D0009091EE016091F80177270E943431709356 |
:1028E0007906609378068091F901882369F08091D8 |
:1028F000EF019091F0016091F90177270E94343146 |
:1029000070938706609386068091FA018823D9F137 |
:10291000E0908306F09084066091F3017091F401D9 |
:102920002091FA010027F7FC0095102F570168014C |
:1029300043E0AA0CBB1CCC1CDD1C4A95D1F7AE1899 |
:10294000BF08C00AD10A882777FD8095982F34E008 |
:10295000660F771F881F991F3A95D1F733274427B1 |
:1029600055270E946931A20EB31EC41ED51EC60192 |
:10297000B50128E030E040E050E00E94693130933A |
:102980008406209383068091FB018823D9F1E0908F |
:102990008C06F0908D066091F1017091F20120910A |
:1029A000FB010027F7FC0095102F5701680183E019 |
:1029B000AA0CBB1CCC1CDD1C8A95D1F7AE18BF0835 |
:1029C000C00AD10A882777FD8095982FB4E0660F5A |
:1029D000771F881F991FBA95D1F7332744275527AA |
:1029E0000E946931A20EB31EC41ED51EC601B501D8 |
:1029F00028E030E040E050E00E94693130938D06DD |
:102A000020938C068091FC018823A1F1E0907D0643 |
:102A1000F0907E066091F5017091F6012091FC0125 |
:102A20000027F7FC0095102F57016801A3E0AA0CBE |
:102A3000BB1CCC1CDD1CAA95D1F7AE18BF08C00A80 |
:102A4000D10A882777FD8095982F3327442755276B |
:102A50000E946931A20EB31EC41ED51EC601B50167 |
:102A600028E030E040E050E00E94693130937E067B |
:102A700020937D061092EC011092EB011092F70169 |
:102A80001092EE011092ED011092F8011092F001F7 |
:102A90001092EF011092F9011092F2011092F101DF |
:102AA0001092FB011092F4011092F3011092FA01BE |
:102AB0001092F6011092F5011092FC0180914402EF |
:102AC00090914502A0914602B09147028093300256 |
:102AD00090933102A0933202B0933302809134027A |
:102AE00090913502A0913602B09137028093200276 |
:102AF00090932102A0932202B093230280913C0282 |
:102B000090913D02A0913E02B0913F028093280235 |
:102B100090932902A0932A02B0932B02809138024D |
:102B200090913902A0913A02B0913B028093240225 |
:102B300090932502A0932602B09327028091400231 |
:102B400090914102A0914202B091430280932C02E5 |
:102B500090932D02A0932E02B0932F028FEE8093BC |
:102B60007A0080917A0690917B06893C91057CF0F1 |
:102B700020917A0630917B0680917A0690917B06AF |
:102B8000880F991F880F991F2052334015C08091DC |
:102B90007A0690917B0688539F4FA4F420917A0681 |
:102BA00030917B0680917A0690917B06880F991F61 |
:102BB000880F991F205E3C4F820F931F90937B06D6 |
:102BC00080937A068091780690917906893C9105E8 |
:102BD0007CF020917806309179068091780690916A |
:102BE0007906880F991F880F991F2052334015C00E |
:102BF000809178069091790688539F4FA4F4209194 |
:102C00007806309179068091780690917906880F40 |
:102C1000991F880F991F205E3C4F820F931F90933E |
:102C2000790680937806209158023091590280915C |
:102C30004206E82FFF27EE0FFF1FEE5EF94F80815F |
:102C4000918182599F4F281739071CF42F5F3F4FFE |
:102C50000CC08081918182599F4F821793074CF459 |
:102C60002115310531F02150304030935902209325 |
:102C7000580220915A0230915B0280914306E82F5E |
:102C8000FF27EE0FFF1FEE5EF94F80819181825981 |
:102C90009F4F281739071CF42F5F3F4F0CC08081CE |
:102CA000918182599F4F821793074CF4211531056A |
:102CB00031F02150304030935B0220935A02209132 |
:102CC0005C0230915D0280914406E82FFF27EE0FF1 |
:102CD000FF1FEE5EF94F8081918182599F4F281727 |
:102CE00039071CF42F5F3F4F0CC0808191818259BE |
:102CF0009F4F821793074CF42115310531F0215075 |
:102D0000304030935D0220935C0220915E0230914E |
:102D10005F0280914506E82FFF27EE0FFF1FEE5E52 |
:102D2000F94F8081918182599F4F281739071CF4F0 |
:102D30002F5F3F4F0CC08081918182599F4F821736 |
:102D400093074CF42115310531F021503040309378 |
:102D50005F0220935E02809158029091590297FF82 |
:102D600005C010925902109258020AC08F3F910577 |
:102D700039F034F08FEF90E090935902809358022D |
:102D800080915A0290915B0297FF05C010925B02FE |
:102D900010925A020AC08F3F910539F034F08FEF3C |
:102DA00090E090935B0280935A0280915C02909134 |
:102DB0005D0297FF05C010925D0210925C020AC08E |
:102DC0008F3F910539F034F08FEF90E090935D02E2 |
:102DD00080935C0280915E0290915F0297FF05C034 |
:102DE00010925F0210925E020AC08F3F910539F087 |
:102DF00034F08FEF90E090935F0280935E021F911A |
:102E00000F91FF90EF90DF90CF90BF90AF9008951B |
:102E100010927A008091F701882369F08091EB018C |
:102E20009091EC016091F70177270E943431709303 |
:102E30007B0660937A068091F801882369F080917F |
:102E4000ED019091EE016091F80177270E943431F5 |
:102E500070937906609378068091F901882369F070 |
:102E60008091EF019091F0016091F90177270E9424 |
:102E7000343170938706609386068091FA01882327 |
:102E8000D1F06091F3017091F4012091FA0188274B |
:102E900077FD8095982F34E0660F771F881F991F64 |
:102EA0003A95D1F73327442755270E94693130934B |
:102EB0008406209383068091FB018823D1F06091E2 |
:102EC000F1017091F2012091FB01882777FD809537 |
:102ED000982FB4E0660F771F881F991FBA95D1F716 |
:102EE0003327442755270E94693130938D0620935C |
:102EF0008C068091FC01882399F06091F501709116 |
:102F0000F6012091FC01882777FD8095982F3327C3 |
:102F1000442755270E94693130937E0620937D0611 |
:102F20001092EC011092EB011092F7011092EE0159 |
:102F30001092ED011092F8011092F0011092EF0141 |
:102F40001092F9011092F2011092F1011092FB011E |
:102F50001092F4011092F3011092FA011092F6010E |
:102F60001092F5011092FC018FEE80937A0020916F |
:102F700058023091590280914206E82FFF27EE0F48 |
:102F8000FF1FEE5EF94F8081918182599F4F281774 |
:102F900039071CF42F5F3F4F0CC08081918182590B |
:102FA0009F4F821793074CF42115310531F02150C2 |
:102FB0003040309359022093580220915A023091A8 |
:102FC0005B0280914306E82FFF27EE0FFF1FEE5EA6 |
:102FD000F94F8081918182599F4F281739071CF43E |
:102FE0002F5F3F4F0CC08081918182599F4F821784 |
:102FF00093074CF42115310531F0215030403093C6 |
:103000005B0220935A0220915C0230915D02809114 |
:103010004406E82FFF27EE0FFF1FEE5EF94F808179 |
:10302000918182599F4F281739071CF42F5F3F4F1A |
:103030000CC08081918182599F4F821793074CF475 |
:103040002115310531F02150304030935D0220933D |
:103050005C0220915E0230915F0280914506E82F6C |
:10306000FF27EE0FFF1FEE5EF94F8081918182599D |
:103070009F4F281739071CF42F5F3F4F0CC08081EA |
:10308000918182599F4F821793074CF42115310586 |
:1030900031F02150304030935F0220935E028091E6 |
:1030A00058029091590297FF05C010925902109250 |
:1030B00058020AC08F3F910539F034F08FEF90E04D |
:1030C000909359028093580280915A0290915B022A |
:1030D00097FF05C010925B0210925A020AC08F3F00 |
:1030E000910539F034F08FEF90E090935B0280937C |
:1030F0005A0280915C0290915D0297FF05C0109288 |
:103100005D0210925C020AC08F3F910539F034F0E5 |
:103110008FEF90E090935D0280935C0280915E025D |
:1031200090915F0297FF05C010925F0210925E02BD |
:1031300008958F3F910539F034F08FEF90E0909330 |
:103140005F0280935E0208951F93809149068B3F32 |
:1031500098F08B3F19F4809158020EC08C3F19F4FF |
:1031600080915A0209C08D3F19F480915C0204C01D |
:103170008E3F21F480915E028093810180918101D4 |
:10318000882319F41092810104C08F3F11F48093B9 |
:103190008101809148068B3F98F08B3F19F4809114 |
:1031A00058020EC08C3F19F480915A0209C08D3F1D |
:1031B00019F480915C0204C08E3F21F480915E027C |
:1031C0008093800180918001882319F410928001FE |
:1031D00005C0843618F084E68093800180914A0609 |
:1031E0008B3F98F08B3F19F4809158020EC08C3FB2 |
:1031F00019F480915A0209C08D3F19F480915C0244 |
:1032000004C08E3F21F480915E0280938201809100 |
:103210008201882319F41092820105C0843618F0C7 |
:1032200084E68093820180914C068B3F98F08B3F1F |
:1032300019F4809158020EC08C3F19F480915A0203 |
:1032400009C08D3F19F480915C0204C08E3F21F4C7 |
:1032500080915E028093830180918301882319F419 |
:103260001092830104C08F3F11F4809383018091F9 |
:1032700053068B3F98F08B3F19F4809158020EC093 |
:103280008C3F19F480915A0209C08D3F19F4809146 |
:103290005C0204C08E3F21F480915E028093840121 |
:1032A00080918401882319F41092840104C08F3F17 |
:1032B00011F480938401809154068B3F98F08B3FEA |
:1032C00019F4809158020EC08C3F19F480915A0273 |
:1032D00009C08D3F19F480915C0204C08E3F21F437 |
:1032E00080915E0280938501809185018B3010F47E |
:1032F0008AE002C08F3F11F48093850180915506CA |
:103300008B3F98F08B3F19F4809158020EC08C3F90 |
:1033100019F480915A0209C08D3F19F480915C0222 |
:1033200004C08E3F21F480915E02809386018091DB |
:103330008601882319F41092860104C08F3F11F48E |
:103340008093860180915A068B3F98F08B3F19F449 |
:10335000809158020EC08C3F19F480915A0209C026 |
:103360008D3F19F480915C0204C08E3F21F480915E |
:103370005E028093880180918801882319F410925D |
:10338000880104C08F3F11F48093880180915B060F |
:103390008B3F98F08B3F19F4809158020EC08C3F00 |
:1033A00019F480915A0209C08D3F19F480915C0292 |
:1033B00004C08E3F21F480915E0280936C02809164 |
:1033C0006C02882319F410926C0204C08F3F11F430 |
:1033D00080936C0280915C068B3F98F08B3F19F4D0 |
:1033E000809158020EC08C3F19F480915A0209C096 |
:1033F0008D3F19F480915C0204C08E3F21F48091CE |
:103400005E0280936D0280916D02882319F4109200 |
:103410006D0204C08F3F11F480936D0280915D06B0 |
:103420008B3F98F08B3F19F4809158020EC08C3F6F |
:1034300019F480915A0209C08D3F19F480915C0201 |
:1034400004C08E3F21F480915E0280936E028091D1 |
:103450006E02882319F410926E0204C08F3F11F49B |
:1034600080936E0280915E068B3F98F08B3F19F43B |
:10347000809158020EC08C3F19F480915A0209C005 |
:103480008D3F19F480915C0204C08E3F21F480913D |
:103490005E0280936F0280916F02882319F410926C |
:1034A0006F0204C08F3F11F480936F0290915F060A |
:1034B0009B3FB0F09B3F19F48091580204C09C3FA1 |
:1034C00029F480915A02809389010CC09D3F19F420 |
:1034D00080915C02F8CF9E3F29F480915E02F3CF89 |
:1034E0009093890180918901882319F410928901B0 |
:1034F00004C08F3F11F4809389019B3FB0F09B3F44 |
:1035000019F48091580204C09C3F29F480915A021A |
:10351000809389010CC09D3F19F480915C02F8CF23 |
:103520009E3F29F480915E02F3CF909389018091B0 |
:103530008901882319F41092890104C08F3F11F486 |
:10354000809389019B3FB0F09B3F19F48091580212 |
:1035500004C09C3F29F480915A02809389010CC0D9 |
:103560009D3F19F480915C02F8CF9E3F29F4809131 |
:103570005E02F3CF9093890180918901882319F429 |
:103580001092890104C08F3F11F48093890110913A |
:103590008801612F772767FD7095872F972F0E94ED |
:1035A0003F3017FF06C020E030E040E853E40E94BF |
:1035B0009A2F27E137EB41ED58E30E94B930609331 |
:1035C0007C0170937D0180937E0190937F018091B7 |
:1035D0005106809385068091500680937C061F914A |
:1035E000089581E080933E0642E040933F0683E0E9 |
:1035F0008093400624E02093410635E03093420654 |
:1036000086E08093430687E0809344061092460646 |
:103610008EE1809347068BEF809349068AE0809382 |
:103620004A0692E39093480690934C0640934B06CB |
:1036300020934D0610924E0680E180934F068FE056 |
:10364000809350068AEF809351068AE18093520658 |
:1036500080E8809353068FEA809354068093550642 |
:103660008AE58093560683E28093570684E180932F |
:1036700058061092590630935A0610925B06109223 |
:103680005C0610925D0610925E0684E680935F06EB |
:1036900088E280936006109264069093610686E942 |
:1036A0008093620630936306ACE6B6E0E8E6F1E0AC |
:1036B0008CE001900D928150E1F7089581E08093B4 |
:1036C0003E0652E050933F0683E08093400644E07C |
:1036D0004093410635E03093420686E080934306EE |
:1036E00087E08093440628E0209345061092460622 |
:1036F0009EE1909347068BEF809349068AE0809382 |
:103700004A0686E48093480690934C0650934B06F5 |
:1037100040934D0620934E0680E180934F068FE044 |
:10372000809350068AEF809351068AE18093520677 |
:1037300080E88093530688E78093540696E9909337 |
:1037400055068AE58093560683E28093570684E106 |
:10375000809358061092590630935A0610925B06D1 |
:1037600010925C0610925D0610925E0684E68093CD |
:103770005F0688E2809360061092640682E380937D |
:1037800061069093620630936306ACE6B6E0E0E72C |
:10379000F1E08CE001900D928150E1F70895809165 |
:1037A0006702882301F51092B0021092AF021092C6 |
:1037B000B7031092E2038091D201882311F0809325 |
:1037C000AF028091D301882311F08093B0028091E1 |
:1037D000D401882311F08093E2038091D5018823DE |
:1037E00011F08093B7038091AF0299279093F00571 |
:1037F0008093EF058091B00299279093F205809312 |
:10380000F1058091E20399279093F4058093F305E5 |
:103810008091B70399279093F6058093F505109250 |
:103820000802109209020E94E1120895CF93DF93DB |
:10383000109217021092160210921902109218029A |
:1038400080E090E0A0E0B0E080931A0290931B0229 |
:10385000A0931C02B0931D0210921102109210024C |
:10386000109213021092120210921502109214027A |
:103870000E94081785E090E00E94920AEC01CE01B8 |
:103880000E949B0A8823D9F30E940817809146065C |
:1038900080FF10C080910A0190910B01875B9340DB |
:1038A00038F480910A0190910B018E5E924010F4E1 |
:1038B0000E94B70E80917A0690917B0697FF03C015 |
:1038C000909581959F4F9093110280931002809163 |
:1038D00078069091790697FF03C0909581959F4F48 |
:1038E000909313028093120280918606909187062E |
:1038F00097FF03C0909581959F4F909315028093F9 |
:10390000140280918C0690918D0697FF03C09095CC |
:1039100081959F4F60E170E00E94343170931902ED |
:1039200060931802809183069091840697FF03C0EC |
:10393000909581959F4F60E170E00E9434317093C3 |
:103940001702609316026091FA057091FB058827B3 |
:1039500077FD8095982F0E943F3060931A027093F4 |
:103960001B0280931C0290931D021092340210924D |
:1039700035021092360210923702109238021092DD |
:10398000390210923A0210923B0210923C021092BD |
:103990003D0210923E0210923F021092400210929D |
:1039A000410210924202109243021092440210927D |
:1039B0004502109246021092470210927B06109226 |
:1039C0007A06109279061092780610928706109265 |
:1039D00086068091060190910701A0910801B0919F |
:1039E00009019093FD058093FC051092FE01109251 |
:1039F000FD0110924C0210924D0210924E02109254 |
:103A00004F02809150029091510290935302809303 |
:103A100052020E94D82782E390E09093E5018093C0 |
:103A2000E401DF91CF9108951F93182F0EC080916C |
:103A30006702882361F484E690E09093E501809327 |
:103A4000E4018AEF90E00E947B0B115080F71F91F8 |
:103A500008952F923F924F925F926F927F928F9232 |
:103A60009F92AF92BF92CF92DF92EF92FF920F930D |
:103A70001F93CF93DF93CDB7DEB728970FB6F89497 |
:103A8000DEBF0FBECDBF0E944714299AE0914006C9 |
:103A9000AE2FBB27AA0FBB1FAE5EB94F0D90BC91D6 |
:103AA000A02D9D0128583F4F3A83298337FF02C03C |
:103AB0001A82198280916002843608F04AC080918F |
:103AC0000101882331F484EF91E09093E501809324 |
:103AD000E40180917B0290917C02009731F0019784 |
:103AE00090937C0280937B0204C010926702109234 |
:103AF0005602289A8091760290917702815D9740D4 |
:103B000028F180915706482F55275A83498381E031 |
:103B100080935602E0913E06FF27EE0FFF1FEE5EF8 |
:103B2000F94F11821082E0913F06FF27EE0FFF1F31 |
:103B3000EE5EF94F11821082E0914106FF27EE0FF1 |
:103B4000FF1FEE5EF94F11821082CEC11092670204 |
:103B5000CBC1809160028D3808F4C6C11092560224 |
:103B60008091580622E3829FC001112490937C0229 |
:103B700080937B0269817A81693271056CF0809152 |
:103B80007602909177027FEF8F3F970781F1019640 |
:103B900090937702809376028091760290917702DB |
:103BA000883C910520F089819A81889704F51092CC |
:103BB000910210929202109293021092940210922B |
:103BC0008D0210928E0210928F021092900210922B |
:103BD000440210924502109246021092470210923F |
:103BE00048021092490210924A0210924B02E98157 |
:103BF000FA81E93CF1050CF4D6C080916702882374 |
:103C000009F072C1E0914106FF27EE0FFF1FEE5E43 |
:103C1000F94F808191818C3491050CF4C1C0809161 |
:103C20007A028F5F80937A02893C08F45DC12998FB |
:103C30000E94161C1092670210927A02109277026C |
:103C40001092760280913E06282F3327F901EE0F5D |
:103C5000FF1FEE5EF94F80819181873491059CF4BE |
:103C6000E0913F06FF27EE0FFF1FEE5EF94F019038 |
:103C7000F081E02DF7FF03C0F095E195FF4FE734A9 |
:103C8000F1050CF46CC080913F06682F7727DB01AB |
:103C9000AA0FBB1FAE5EB94F8D919C9111978734CF |
:103CA00091053CF0F901EE0FFF1FEE5EF94F8081A8 |
:103CB00091818D919C918734910564F0F901EE0F0B |
:103CC000FF1FEE5EF94F808191818734910514F0DA |
:103CD00042E001C041E0FB01EE0FFF1FEE5EF94F35 |
:103CE00080819181863491055CF4F901EE0FFF1F0C |
:103CF000EE5EF94F80819181873491050CF043E0AD |
:103D0000FB01EE0FFF1FEE5EF94F808191818A5B10 |
:103D10009F4F5CF4F901EE0FFF1FEE5EF94F8081BB |
:103D20009181873491050CF044E0660F771F6E5E39 |
:103D3000794FFB01808191818A5B9F4F5CF4220F58 |
:103D4000331F2E5E394FF9018081918186349105B0 |
:103D50000CF445E0A2E0B0E0042E0E948C310E94F9 |
:103D600007024AE36EE376E00E9426020E94070201 |
:103D70000E94141D8091460680FFB6C080910A0102 |
:103D800090910B01875B934040F480910A019091E0 |
:103D90000B018E5E924008F0A7C00E94B70EA4C02F |
:103DA00010927A02A1C049815A81433251050CF028 |
:103DB0009BC080914106482F5527FA01EE0FFF1F47 |
:103DC000EE5EF94F80819181855B9F4F0CF06DC055 |
:103DD000809179028F5F80937902893C08F467C0F3 |
:103DE00088EC8093790281E090E090937702809351 |
:103DF000760281E0809367021092890210928A0213 |
:103E000010928B0210928C02109244021092450282 |
:103E100010924602109247021092480210924902F4 |
:103E200010924A0210924B02109234021092350204 |
:103E3000109236021092370210923C0210923D020C |
:103E400010923E0210923F02809120029091210236 |
:103E5000A0912202B09123028093380290933902FC |
:103E6000A0933A02B0933B028091280290912902DC |
:103E7000A0912A02B0912B028093400290934102BC |
:103E8000A0934202B09343021092910210929202C8 |
:103E9000109293021092940210928D0210928E0250 |
:103EA00010928F021092900202C010927902440F79 |
:103EB000551F4E5E594FFA01808191818C349105D6 |
:103EC0008CF0809178028F5F80937802893C60F05B |
:103ED0001092670288EC8093780210927702109219 |
:103EE000760202C01092780280916701815080931F |
:103EF0006701809167018F3F29F0809156028823E6 |
:103F000009F412C10E94A418E0913E06FF27EE0FAB |
:103F1000FF1FDF01AE5EB94F8D919C9160914D0600 |
:103F20007727E85DF94F2081318140914E06552772 |
:103F3000FC01E69FC001E79F900DF69F900D1124B4 |
:103F4000F901E49F9001E59F300DF49F300D11249D |
:103F5000820F931F9093620280936102E0913F066B |
:103F6000FF27EE0FFF1FDF01AE5EB94F8D919C91D1 |
:103F7000E85DF94F20813181FC01E69FC001E79F98 |
:103F8000900DF69F900D1124B901649F9001659FDB |
:103F9000300D749F300D1124820F931F9093640293 |
:103FA00080936302E0914106FF27EE0FFF1FEE5E54 |
:103FB000F94F80819181909581959F4F90936602F2 |
:103FC0008093650210918501612F772767FD7095B9 |
:103FD000872F972F0E943F3017FF06C020E030E068 |
:103FE00040E853E40E949A2F20E030E040E251E4A0 |
:103FF0000E949A2F20E030E040E85BE30E94B93055 |
:104000005B016C01609388067093890680938A0631 |
:1040100090938B0610918601612F772767FD70952D |
:10402000872F972F0E943F3017FF06C020E030E017 |
:1040300040E853E40E949A2F20E030EE4BE257E430 |
:104040000E94DC2F60937F06709380068093810628 |
:10405000909382068091460682FF0CC080E090E03B |
:10406000A0E0B0E080937F0690938006A093810645 |
:10407000B093820620E030E040E050E0C601B50198 |
:104080000E944930882364F480E090E0A0E0B0E032 |
:104090008093880690938906A0938A06B0938B0636 |
:1040A00020E030E040E050E060917F0670918006B3 |
:1040B00080918106909182060E944930882364F4A1 |
:1040C00080E090E0A0E0B0E080937F0690938006CF |
:1040D000A0938106B093820680915602882321F135 |
:1040E00010926602109265021092620210926102B2 |
:1040F00010926402109263028DEC9CECACECBDE378 |
:104100008093880690938906A0938A06B0938B06C5 |
:104110008AE097EDA3EABBE380937F069093800645 |
:10412000A0938106B09382068091FF0190910002D6 |
:104130008D54914008F4BCC0209124023091250296 |
:1041400040912602509127028091200290912102F5 |
:10415000A0912202B0912302B901681B790B7093E0 |
:10416000800260937F0220912C0230912D024091B9 |
:104170002E0250912F028091280290912902A09145 |
:104180002A02B0912B02281B390B30937E02209318 |
:104190007D02109200021092FF01673A710534F01F |
:1041A0008091100290911102019608C06A557F4FCC |
:1041B0004CF480911002909111020197909311029A |
:1041C00080931002273A310534F0809112029091C9 |
:1041D0001302019608C02A553F4F4CF480911202F9 |
:1041E0009091130201979093130280931202809191 |
:1041F000480290914902A0914A02B0914B02873A3D |
:104200009105A105B1054CF0809114029091150221 |
:104210000197909315028093140280914802909127 |
:104220004902A0914A02B0914B028A559F4FAF4F6D |
:10423000BF4F4CF480911402909115020196909317 |
:1042400015028093140210927A00809120029091BE |
:104250002102A0912202B091230280933802909310 |
:104260003902A0933A02B0933B02809128029091C8 |
:104270002902A0912A02B0912B02809340029093D0 |
:104280004102A0934202B093430280913002909188 |
:104290003102A0913202B091330280934802909390 |
:1042A0004902A0934A02B0934B028FEE80937A00AA |
:1042B000609120027091210280912202909123024C |
:1042C00020915206622E772488249924E090830658 |
:1042D000F0908406A40193010E9469310027F7FC45 |
:1042E0000095102F2E193F09400B510BCA01B9013F |
:1042F00020E130E040E050E00E94693159016A015C |
:10430000209385023093860240938702509388025F |
:10431000609128027091290280912A0290912B02CB |
:10432000E0908C06F0908D06A40193010E94693103 |
:104330000027F7FC0095102F2E193F09400B510B59 |
:10434000CA01B90120E130E040E050E00E9469314B |
:10435000209381023093820240938302509384021F |
:10436000F5EFAF16F1E0BF06F0E0CF06F0E0DF06B4 |
:104370002CF084EF91E0A0E0B0E00DC06CE0A61658 |
:104380006EEFB6066FEFC6066FEFD60664F48CE0EC |
:104390009EEFAFEFBFEF8093850290938602A093CC |
:1043A0008702B0938802253F71E0370770E0470726 |
:1043B00070E057072CF084EF91E0A0E0B0E009C076 |
:1043C0002C503E4F4F4F5F4F64F48CE09EEFAFEFA9 |
:1043D000BFEF8093810290938202A0938302B093F7 |
:1043E000840210927A008091340290913502A0915B |
:1043F0003602B091370220918502309186024091B9 |
:10440000870250918802821B930BA40BB50B8093FB |
:10441000340290933502A0933602B0933702809114 |
:104420003C0290913D02A0913E02B0913F0220914A |
:104430008102309182024091830250918402821B5A |
:10444000930BA40BB50B80933C0290933D02A09379 |
:104450003E02B0933F0280916502909166029C01FA |
:10446000442737FD4095542F2B833C834D835E8337 |
:104470002093890230938A0240938B0250938C02DE |
:1044800097FF03C0909581959F4F84973CF0809152 |
:10449000460684FD03C081E080937202A09044022E |
:1044A000B0904502C0904602D09047028B819C811B |
:1044B00097FF03C0909581959F4F7C010027F7FCE3 |
:1044C0000095102F20914F063327442755276B81E5 |
:1044D0007C818D819E810E9401319B01AC01C801CC |
:1044E000B7010E94013120E031E040E050E00E943D |
:1044F0006931442737FD4095542FA21AB30AC40AE4 |
:10450000D50AA0924402B0924502C0924602D092CF |
:1045100047028091440290914502A0914602B091D9 |
:10452000470281539547A040B04064F080E395E78F |
:10453000A0E0B0E08093440290934502A09346022D |
:10454000B09347028091440290914502A0914602A7 |
:10455000B0914702805D9A48AF4FBF4F64F480ED41 |
:104560009AE8AFEFBFEF8093440290934502A09387 |
:104570004602B09347028FEE80937A0080915002FA |
:1045800090915102892B09F4A1C08091460683FFC6 |
:104590009DC0609120027091210280912202909131 |
:1045A000230220E032E040E050E00E9469318901BE |
:1045B00037FF03C0109501951F4F6091280270913D |
:1045C000290280912A0290912B0220E032E040E003 |
:1045D00050E00E946931B90137FF03C070956195C1 |
:1045E0007F4F601771070CF4B80169317105A4F4AD |
:1045F00080917202882381F0809170029091710203 |
:10460000892B51F480915002909151029093530262 |
:104610008093520210927202209184013327629F8C |
:10462000C001639F900D729F900D112460E470E0B3 |
:104630000E943431A901461B570B141615060CF0C5 |
:104640003FC010927A0020917002309171022115C2 |
:10465000310561F500914402109145022091460216 |
:10466000309147028091540290915502FC01E49FE1 |
:10467000C001E59F900DF49F900D112460E270E061 |
:104680000E943431882777FD8095982F060F171FD9 |
:10469000281F391F009344021093450220934602BD |
:1046A000309347028FEE80937A0010C08FEE809394 |
:1046B0007A0021503040309371022093700206C07E |
:1046C00084EF91E090937102809370028091D605FF |
:1046D0008F5F8093D605809173028150809373021F |
:1046E0008F3F09F063C081E38093730260912002E1 |
:1046F000709121028091220290912302A4019301E2 |
:104700000E9469313093D8052093D7056091280223 |
:104710007091290280912A0290912B02A4019301A9 |
:104720000E9469313093DA052093D9058091830680 |
:10473000909184069093DC058093DB0580918C0634 |
:1047400090918D069093DE058093DD05809186061D |
:10475000909187069093E0058093DF058091680231 |
:10476000909169029093E2058093E10560914C027B |
:1047700070914D0280914E0290914F0220E032E004 |
:1047800040E050E00E9469313093E4052093E30556 |
:1047900029813A813093E6052093E5058091500206 |
:1047A000909151029093E8058093E7056091200273 |
:1047B00070912102809122029091230220907F0625 |
:1047C000309080064090810650908206E0907A06F4 |
:1047D000F0907B06609088067090890680908A062B |
:1047E00090908B060E943F30A20191010E94B93047 |
:1047F0005B016C010027F7FC0095102FC801B70181 |
:104800000E943F30A40193010E94B9309B01AC018A |
:10481000C601B5010E949A2F0E94223070937B0638 |
:1048200060937A06609128027091290280912A0291 |
:1048300090912B02E0907806F09079060E943F302C |
:10484000A20191010E94B9305B016C010027F7FCC5 |
:104850000095102FC801B7010E943F30A4019301B9 |
:104860000E94B9309B01AC01C601B5010E949A2F8C |
:104870000E942230709379066093780660918606D4 |
:1048800070918706A0903002B0903102C090320241 |
:10489000D0903302882777FD8095982F0E943F3073 |
:1048A0007B018C0120E030E040E05FE3C401B30114 |
:1048B0000E94B9309B01AC01C801B7010E94B93018 |
:1048C0007B018C01C601B5010E943F30A20191011C |
:1048D0000E94B9309B01AC01C801B7010E949A2F18 |
:1048E0000E942230709387066093860680917A0634 |
:1048F00090917B068150984034F080E098E090934E |
:104900007B0680937A0680917A0690917B06805090 |
:10491000984F34F480E098EF90937B0680937A066A |
:1049200080917806909179068150984034F080E02B |
:1049300098E090937906809378068091780690911C |
:1049400079068050984F34F480E098EF9093790680 |
:1049500080937806809186069091870681509840D2 |
:1049600034F080E098E090938706809386068091EB |
:104970008606909187068050984F34F480E098EF37 |
:10498000909387068093860680914606992780FF3C |
:10499000CFC02091810181FF0EC02233B0F48091FD |
:1049A000680290916902449790936B0280936A0227 |
:1049B000109257020DC080914B06289FC001112410 |
:1049C000449790936B0280936A0281E08093570230 |
:1049D00080915602882321F010926B0210926A0295 |
:1049E000209168023091690240916A0250916B02F5 |
:1049F000421753070CF09CC080915702882309F49A |
:104A000097C0241B350B809182019927AC01249F0C |
:104A1000C001259F900D349F900D112460E170E03E |
:104A20000E94343109811A81061B170B2091FD0168 |
:104A30003091FE01809180019927BC01269FC00121 |
:104A4000279F900D369F900D112468E070E00E9422 |
:104A50003431061B170B60914C0270914D0280910E |
:104A60004E0290914F0220E032E040E050E00E9480 |
:104A70006931CA01B90120918301332744275527A1 |
:104A80000E94013120E230E040E050E00E946931B4 |
:104A9000A9012E5C3F4F14F44EEC5FEF209174029D |
:104AA000309175028FE090E0FC012E9FC0012F9F96 |
:104AB000900D3E9F900D11249A014333510514F03F |
:104AC00022E330E0021B130B800F911F60E170E0C6 |
:104AD0000E9434317093750260937402809147068E |
:104AE0009927681779078CF429813A8128173907A3 |
:104AF0002CF0909375028093740207C049815A810B |
:104B000050937502409374020DC08091740290918D |
:104B1000750269817A816817790724F470937502A8 |
:104B20006093740280917402909175029A838983D4 |
:104B3000C0908606D0908706EB81FC81CE1ADF0AF2 |
:104B4000F5E6CF16D10424F064E6C62ED12C09C0B8 |
:104B50002CE9C2162FEFD20624F45CE9C52E5FEFD4 |
:104B6000D52E409078015090790160907A01709034 |
:104B70007B0160917A0670917B06209161023091F1 |
:104B800062024091950250919602241B350B621BE4 |
:104B9000730B882777FD8095982F0E943F309B01EB |
:104BA000AC01C301B2010E94B9300E94223070935F |
:104BB000B6036093B5038091B5039091B6038C0161 |
:104BC000222717FD2095322F809191029091920219 |
:104BD000A0919302B0919402080F191F2A1F3B1F46 |
:104BE00000939102109392022093930230939402C7 |
:104BF0001016110612061306ACF4C80117FF03C005 |
:104C0000909581959F4F60E071E00E9434316F5F15 |
:104C10007F4F882777FD8095982F061B170B280B51 |
:104C2000390B14C0C80117FF03C0909581959F4FA1 |
:104C300060E071E00E9434316F5F7F4F882777FD1D |
:104C40008095982F060F171F281F391F0093910278 |
:104C500010939202209393023093940280919102D8 |
:104C600090919202A0919302B091940281383EE318 |
:104C7000930730E0A30730E0B3072CF080E89EE311 |
:104C8000A0E0B0E009C08058914CAF4FBF4F64F432 |
:104C900080E891ECAFEFBFEF809391029093920286 |
:104CA000A0939302B09394026091B5037091B60300 |
:104CB00080907C0190907D01A0907E01B0907F015A |
:104CC000882777FD8095982F0E943F307B018C01CB |
:104CD000609191027091920280919302909194025E |
:104CE0000E943F309B01AC01C501B4010E94B93064 |
:104CF0009B01AC01C801B7010E949A2F0E9422308B |
:104D00009601260F371F89819A81280F391F222487 |
:104D10000A9714F441E0242E37FD02C0222019F036 |
:104D200040E050E008C080918506482F55272417A1 |
:104D300035070CF4A90180917C06E82FFF27F8873E |
:104D4000EF839F01E417F5070CF49A012093AF025B |
:104D500029813A81261B370BB9016C0D7D1D77FD2A |
:104D600002C0222019F080E090E007C08091850603 |
:104D70009927681779070CF4CB012F8138852817FC |
:104D800039070CF49C012093B00260917806709171 |
:104D9000790620916302309164024091970250910C |
:104DA0009802241B350B621B730B882777FD8095B7 |
:104DB000982F0E943F309B01AC01C301B2010E94B9 |
:104DC000B9300E9422307093AE026093AD028091A0 |
:104DD000AD029091AE028C01222717FD2095322F53 |
:104DE00080918D0290918E02A0918F02B0919002DD |
:104DF000080F191F2A1F3B1F00938D0210938E026C |
:104E000020938F023093900210161106120613069B |
:104E1000ACF4C80117FF03C0909581959F4F60E0E7 |
:104E200071E00E9434316F5F7F4F882777FD809556 |
:104E3000982F061B170B280B390B14C0C80117FF3E |
:104E400003C0909581959F4F60E071E00E943431DE |
:104E50006F5F7F4F882777FD8095982F060F171F6C |
:104E6000281F391F00938D0210938E0220938F020A |
:104E70003093900280918D0290918E02A0918F02CA |
:104E8000B091900281383EE3930730E0A30730E011 |
:104E9000B3072CF080E89EE3A0E0B0E009C08058A2 |
:104EA000914CAF4FBF4F64F480E891ECAFEFBFEF90 |
:104EB00080938D0290938E02A0938F02B093900204 |
:104EC0006091AD027091AE02882777FD8095982F92 |
:104ED0000E943F307B018C0160918D0270918E02A7 |
:104EE00080918F02909190020E943F309B01AC0113 |
:104EF000C501B4010E94B9309B01AC01C801B701E2 |
:104F00000E949A2F0E94223029813A81260F371F52 |
:104F10002C193D0937FD02C0222019F040E050E075 |
:104F200008C080918506482F5527241735070CF4B3 |
:104F3000A9012F813885241735070CF49A01209395 |
:104F4000E20389819A81861B970BBC016C197D094C |
:104F500077FD02C0222019F020E030E008C08091E7 |
:104F60008506282F3327621773070CF49B018F8166 |
:104F70009885821793070CF4C9018093B70328968C |
:104F80000FB6F894DEBF0FBECDBFDF91CF911F915A |
:104F90000F91FF90EF90DF90CF90BF90AF909F90D8 |
:104FA0008F907F906F905F904F903F902F900895DB |
:104FB00080919D0290919E02A0919F02B091A002CB |
:104FC0008093A5029093A602A093A702B093A80293 |
:104FD0008091A1029091A202A091A302B091A4029B |
:104FE0008093A9029093AA02A093AB02B093AC0263 |
:104FF00010929602109295021092980210929702C7 |
:105000000895CF92DF92EF92FF921F93CF93DF9399 |
:10501000CDB7DEB72A970FB6F894DEBF0FBECDBF6F |
:105020009C01162F40E0E62EFF246E010894C11C5F |
:10503000D11C14C0F701E41BF109EC0DFD1D3197E3 |
:10504000C9016AE070E00E942031805D8083C9015F |
:105050006AE070E00E9420319B014F5F411751F7D9 |
:1050600040E050E0212F332721503040BE016F5FD8 |
:105070007F4FA0E209C04F5F5F4FFB01E80FF91FB0 |
:105080008081803331F4A083842F9927821793077E |
:1050900094F390919B0620E0AE014F5F5F4F0BC0F1 |
:1050A000E92FE20FFF27DA01A20FB11D8C91E45125 |
:1050B000FC4F80832F5F211799F7910F90939B06E8 |
:1050C0002A960FB6F894DEBF0FBECDBFDF91CF9109 |
:1050D0001F91FF90EF90DF90CF900895CF92DF92D5 |
:1050E000EF92FF920F931F93CF93DF93CDB7DEB76D |
:1050F0002A970FB6F894DEBF0FBECDBF9C01F62EE7 |
:1051000097FD02C0EE2405C0309521953F4F81E008 |
:10511000E82E40E00F2D11276E010894C11CD11C10 |
:1051200014C0F801E41BF109EC0DFD1D3197C90114 |
:105130006AE070E00E943431805D8083C9016AE0DA |
:1051400070E00E9434319B014F5F4F1551F712C040 |
:105150002F5F3F4FFE013196E40FF51F80818033B2 |
:1051600019F480E2808308C0EE2071F031978DE25F |
:1051700080830AC020E030E0422F55278F2D9927E9 |
:1051800001974817590724F390919B0620E0AE0140 |
:105190004F5F5F4F0BC0E92FE20FFF27DA01A20F2D |
:1051A000B11D8C91E451FC4F80832F5F2F1599F72F |
:1051B0009F0D90939B062A960FB6F894DEBF0FBE04 |
:1051C000CDBFDF91CF911F910F91FF90EF90DF90B6 |
:1051D000CF900895DC010BC080919B06E82FFF273C |
:1051E000E451FC4F90838F5F80939B0611969C91B6 |
:1051F000992391F708950F931F9310929B06809126 |
:10520000BE0361E099270E9401288AE891E00E948C |
:10521000EA2867E080918E0690918F060E946E28A2 |
:1052200067E080919706909198060E946E280CE89E |
:1052300011E0C8010E94EA2867E0809193069091EE |
:1052400094060E946E2867E080919C0690919D06CE |
:105250000E946E28C8010E94EA2867E080919702A8 |
:10526000909198020E946E2867E08091950290913B |
:1052700096020E946E2880E991E00E94EA2867E089 |
:1052800080916302909164020E946E2867E0809191 |
:105290006102909162020E946E2884E991E00E946E |
:1052A000EA28109200018091EC038093C6001F91C0 |
:1052B0000F9108952F923F924F925F926F927F923B |
:1052C0008F929F92AF92BF92CF92DF92EF92FF9216 |
:1052D0000F931F93CF93DF93CDB7DEB728970FB609 |
:1052E000F894DEBF0FBECDBF80915C0290915D024D |
:1052F0008E37910574F18091BE03882309F446C06E |
:1053000080919206882309F041C080919D0290917E |
:105310009E02A0919F02B091A0028093A50290935B |
:10532000A602A093A702B093A8028091A102909137 |
:10533000A202A091A302B091A4028093A90290932B |
:10534000AA02A093AB02B093AC0281E080939206D4 |
:105350001DC08D379105D4F41092A5021092A602BB |
:105360001092A7021092A8021092A9021092AA020B |
:105370001092AB021092AC0210929602109295021B |
:105380001092980210929702109292068091B102A8 |
:10539000882309F4FEC01092B10281EB92E00E94D2 |
:1053A000472B8091B903882309F4F1C01092B90307 |
:1053B0008091BE03882331F088B194E0892788B9B1 |
:1053C000439805C088B198E0892788B942988091B0 |
:1053D000BF039091C003A091C103B091C203809319 |
:1053E0009D0290939E02A0939F02B093A0022091F1 |
:1053F000C3033091C4034091C5035091C603209369 |
:10540000A1023093A2024093A3025093A402E09021 |
:10541000A502F090A6020091A7021091A802E81A36 |
:10542000F90A0A0B1B0BE0929706F092980600937C |
:10543000990610939A062090A9023090AA024090F3 |
:10544000AB025090AC02221A330A440A550A209249 |
:105450008E0630928F06409290065092910680916F |
:10546000CF039091D003A091D103B091D203222712 |
:105470003327A901281B390B4A0B5B0B2D833E8375 |
:105480004F83588720939C0630939D0640939E0639 |
:1054900050939F068091D3039091D403A091D5039C |
:1054A000B091D60322273327A901281B390B4A0BB9 |
:1054B0005B0B29833A834B835C8320939306309361 |
:1054C0009406409395065093960680919206882301 |
:1054D00009F455C0A0905802B0905902CC24B7FCF2 |
:1054E000C094DC2C60905A0270905B02882477FC98 |
:1054F0008094982CC801B701A60195010E94013142 |
:1055000020E032E040E050E00E94693179018A01F8 |
:105510006D817E818F819885A40193010E94013164 |
:1055200020E830E040E050E00E946931E20EF31ED6 |
:10553000F0929602E0929502C201B101A601950196 |
:105540000E94013120E032E040E050E00E946931E9 |
:1055500079018A0169817A818B819C81A4019301FF |
:105560000E94013120E830E040E050E00E946931C3 |
:10557000E20EF31EF0929802E092970208C0109299 |
:1055800096021092950210929802109297020E9431 |
:10559000FB2828960FB6F894DEBF0FBECDBFDF9173 |
:1055A000CF911F910F91FF90EF90DF90CF90BF9020 |
:1055B000AF909F908F907F906F905F904F903F90B3 |
:1055C0002F900895CF93DF939091A006E92FFF27A6 |
:1055D000EF55F94F8083892F8F5F8093A00681302C |
:1055E00031F48091A106853B09F44EC04BC0823056 |
:1055F00031F48091A206823609F446C043C0863059 |
:1056000008F442C04091A506A82FBB27842F9927F4 |
:105610000896A817B907C4F190E050E0C3EAD6E0B5 |
:10562000FD0132979F012F55394F03C08991980F83 |
:10563000590FC217D307D1F7EF55F94F808198174B |
:1056400009F5A056B94F8C915817E1F48091A30643 |
:105650008093B2028091A4068093B3024093B40277 |
:1056600020E030E0A7EAB6E0E5EBF2E0552704C021 |
:105670008D9181932F5F3F4F24173507C8F381E049 |
:105680008093B1021092A006DF91CF910895CF933D |
:10569000DF93EC012981213009F080C08A818630B6 |
:1056A00009F07CC08C819D81AE81BF818093BA035B |
:1056B0009093BB03A093BC03B093BD038E858093EE |
:1056C000BE03FE01349684859585A685B7858093B3 |
:1056D000BF039093C003A093C103B093C20380891A |
:1056E0009189A289B3898093C3039093C403A09343 |
:1056F000C503B093C60384899589A689B789809329 |
:10570000C7039093C803A093C903B093CA03808DC5 |
:10571000918DA28DB38D8093CB039093CC03A093F6 |
:10572000CD03B093CE03848D958DA68DB78D8093D8 |
:10573000CF039093D003A093D103B093D20380A161 |
:1057400091A1A2A1B3A18093D3039093D403A0937A |
:10575000D503B093D60384A195A1A6A1B7A1809348 |
:10576000D7039093D803A093D903B093DA0380A50D |
:1057700091A5A2A5B3A58093DB039093DC03A0932E |
:10578000DD03B093DE0388A999279093E00380930B |
:10579000DF038BA98093E1032093B903DF91CF91BD |
:1057A00008950F931F93CF93DF93EC01898199277D |
:1057B0009F938F9387E991E09F938F930E94322C60 |
:1057C0008A8199279F938F9384EA91E09F938F9387 |
:1057D0000E94322C8B8199279F938F938EEA91E0C0 |
:1057E0009F938F930E94322C89EB91E09F938F932C |
:1057F0000E94322C00E010E08DB79EB70E960FB6D7 |
:10580000F8949EBF0FBE8DBF11C0FE01E90FF11DC0 |
:10581000848199279F938F9380EC91E09F938F933E |
:105820000E94322C0F900F900F900F90902F0F5FCF |
:105830001F4F8B81981748F386EC91E00E94522C01 |
:10584000DF91CF911F910F910895FC01415050407D |
:1058500030F001900616D1F73197CF0108958827CF |
:1058600099270895CF93DF93CDB7DEB722970FB670 |
:10587000F894DEBF0FBECDBFFE01379661917191E6 |
:10588000FA83E983AF018091A3079091A4070E9456 |
:10589000852C22960FB6F894DEBF0FBECDBFDF91E8 |
:1058A000CF9108950F931F93CF93DF938C01E091D5 |
:1058B000A307F091A407838181FF1FC0C0E0D0E05F |
:1058C0000AC0FD0120853185BD01F9010995892BAB |
:1058D00011F0CFEFDFEFF80181918F01A091A307C5 |
:1058E000B091A407882369F7FD0120853185BD01AA |
:1058F0008AE0F9010995892B11F0CFEFDFEFCE0196 |
:10590000DF91CF911F910F9108952F923F924F9267 |
:105910005F926F927F928F929F92AF92BF92CF923F |
:10592000DF92EF92FF920F931F93CF93DF93CDB748 |
:10593000DEB764970FB6F894DEBF0FBECDBFCC24A0 |
:10594000DD2476011C017C8B6B8B2A01FC01178204 |
:105950001682838181FD03C08FEF9FEF85C2AA2449 |
:10596000BB246FC2A0FE54C28A8980538A30E8F4F7 |
:10597000FA89F03341F42D85222329F4A3FC03C0D6 |
:1059800080E091E06FC08AE0ED85E802C00111245B |
:10599000FA89F80FF053FD87F7FF02C02FE72D8734 |
:1059A000A3FC49C23D853E8746C2C5018870907000 |
:1059B000A3FE05C0ED85EE2311F4F1E0FD872A89F1 |
:1059C000283624F525360CF05BC0233509F480C059 |
:1059D00024358CF42B32C1F12C3234F42032C1F155 |
:1059E000233209F00AC23CC03A893D32B1F13E325D |
:1059F00009F003C23AC08A89833609F449C0843663 |
:105A00000CF081C0883509F0F8C11BC0EA89E03785 |
:105A100009F4A3C0E13744F4EC3669F1EF3671F0D4 |
:105A2000E93609F0EAC16FC0FA89F53709F49DC07B |
:105A3000F83739F0F33709F0E0C134C028E0298B9A |
:105A400094C030E1398B91C080E190E0A82AB92A56 |
:105A5000E0E2F0E0AE2ABF2AEEC120E830E00DC05F |
:105A600080E490E0A82AB92AE6C1E8E0F0E0AE2A96 |
:105A7000BF2A1D86E0C124E030E0A22AB32ADBC1A0 |
:105A80003FE3C32E3E8531503E8783E68A8B41C17A |
:105A9000F201C080FE85F150FE8722E030E0420E28 |
:105AA000531E37C1F201C080D180892B49F0FD859A |
:105AB0006F2F772767FD7095C6010E94612F19C06F |
:105AC000F60101900020E9F73197EC19E98B12C03B |
:105AD000F201C080D180892B49F0FD856F2F772797 |
:105AE00067FD7095C6010E94562F03C0C6010E9433 |
:105AF0004D2F898B22E030E0420E531E3E8589896E |
:105B0000381B3E8706C1A2FE08C0F2018081918148 |
:105B1000A281B38124E030E009C0F201808191814B |
:105B2000AA2797FDA095BA2F22E030E0420E531E1F |
:105B30006C017D01B7FF0CC082E090E0A82AB92A71 |
:105B4000F094E094D094C094C11CD11CE11CF11CD1 |
:105B5000EFEBFFEFAE22BF2221C020E430E0A22A0B |
:105B6000B32A38E73A8B80E1898BA2FE08C0F201A4 |
:105B700080819181A281B38124E030E007C0F201ED |
:105B800080819181AA27BB2722E030E0420E531E7C |
:105B90006C017D018FEC9FEFA822B922870176016D |
:105BA000FE013196F88BEF87F9896F2E77248824D0 |
:105BB0009924C801B701A40193010E9447316A30BA |
:105BC00024F02A89620F615201C0605DEF85F88977 |
:105BD0006193F88BEF87C801B701A40193010E947C |
:105BE000473179018A01211531054105510509F730 |
:105BF000CC24DD247601CE010196CF84C81AC501DC |
:105C000082739070892B19F0FE85F150FE87A6FEF5 |
:105C100009C02989203111F482E001C081E03E856C |
:105C2000381B3E8728E0822E912C8A209B20A3FEE1 |
:105C300018C08D85282F332727FD30958C2D992767 |
:105C4000821793073CF0E7EFFFEFAE22BF228824D4 |
:105C5000992407C0FD85FC19FD872E852F1B2E87F3 |
:105C600003C03E853C193E87C50180789170892B21 |
:105C700069F48E8506C0B10180E290E00E946C2F2D |
:105C8000812F182F11501816B4F31E87A1FE04C0DF |
:105C9000B1018DE290E00BC0A4FE04C0B1018BE223 |
:105CA00090E005C0A5FE05C0B10180E290E00E9431 |
:105CB0006C2FA6FE10C0B10180E390E00E946C2F13 |
:105CC0008989803141F4B101EA898E2F992787FDB6 |
:105CD00090950E946C2FB0FE0DC08E8506C0B1015C |
:105CE00080E390E00E946C2F812F182F115018161E |
:105CF000B4F31E87892869F02D8506C0B10180E3C1 |
:105D000090E00E946C2F212F122F11501216B4F325 |
:105D10001D8790E8692E712C6A207B20A7FC0DC09E |
:105D20008E8506C0B10180E290E00E946C2F812F29 |
:105D3000182F11501816B4F31E87FA89F33641F460 |
:105D4000B1018C2D992787FD90950E946C2F45C03D |
:105D50002A892337B1F446015601198909C0F50192 |
:105D600081915F01B101992787FD90950E946C2F69 |
:105D70001150A8F76401F989CF0ED11C2FEF298BA0 |
:105D80002CC03A89333519F00F8518891FC0460198 |
:105D90008601B98808C0F8018491B10199270E9451 |
:105DA0006C2F0F5F1F4FBA94FFEFBF16A1F764016E |
:105DB0002989C20ED11CF98B10C0F80182918F0184 |
:105DC000B101992787FD90950E946C2FCE01019615 |
:105DD0000817190791F7188B0F876728B1F08E8580 |
:105DE00006C0B10180E290E00E946C2F812F182F35 |
:105DF00011501816B4F31E8708C0B101FA898F2F0D |
:105E0000992787FD90950E946C2FAA24BB2413C06C |
:105E10002A89253241F43AE0398B1E861D8681E0BD |
:105E2000A82EB12C08C0B101EA898E2F992787FDD1 |
:105E300090950E946C2F2B893C892F5F3F4F3C8BA4 |
:105E40002B8BF101838183FF04C0EB89FC89F491E2 |
:105E500003C0EB89FC89F081FA8B2A89222309F09F |
:105E600081CDF1018681978164960FB6F894DEBFEB |
:105E70000FBECDBFDF91CF911F910F91FF90EF909B |
:105E8000DF90CF90BF90AF909F908F907F906F905A |
:105E90005F904F903F902F900895FC010590002057 |
:105EA000E9F7809590958E0F9F1F0895FC0105904E |
:105EB000615070400110D8F7809590958E0F9F1F0C |
:105EC0000895FC016150704001900110D8F7809551 |
:105ED00090958E0F9F1F08950F931F93CF93DF937D |
:105EE0008C01EB018B81992781FF1BC082FF0DC0C4 |
:105EF0002E813F818C819D812817390764F4E881C8 |
:105F0000F9810193F983E88306C0E885F985802F3C |
:105F10000995892B31F48E819F8101969F838E8311 |
:105F200002C00FEF1FEFC801DF91CF911F910F91BA |
:105F300008955058192EEFD001D0D2C0BA17620779 |
:105F4000730784079507B1F188F40EF410940B2EB3 |
:105F5000BA2FA02D062E622F202D072E732F302D45 |
:105F6000082E842F402D092E952F502DFF275523C5 |
:105F7000B9F0591B49F0573E98F04695379527954B |
:105F8000A795F0405395C9F776F0BA0F621F731FBB |
:105F9000841F30F4879577956795B795F040939572 |
:105FA00017FA0F2E0895BF1BBB27BA0B620B730B9A |
:105FB000840BF6CFDEF6DBC0AED001D091C0552306 |
:105FC00059F0992369F09F575F57951B33F442F4BA |
:105FD000903811F4915805C09BC091589F3F09F427 |
:105FE000C6C0BB27112462177307840730F4660FFD |
:105FF000771F881FBB1F915098F311D00F920FD0BD |
:106000000F920DD0A0E82617370748071B0609F0A6 |
:10601000A048BA2F602D7F918F9100240895A0E8A9 |
:106020000024621773078407B10528F0621B730B05 |
:10603000840BB1090A2A660F771F881FBB1FA6951C |
:1060400081F7089597FB73D09F3738F0FEE9F91B6D |
:10605000982F872F762F6B2F05C086C09695879532 |
:1060600077956795F150D0F73EF4909580957095AF |
:1060700061957F4F8F4F9F4F0895E89403C097FB22 |
:106080000EF4F3DFB62F672F782F892F9EE90024B7 |
:1060900027C00ED05EF004C00BD026F001C008D09F |
:1060A00019F020F48FEF089580E0089581E00895BD |
:1060B00097FB092E052600F8689430D0E89407FC79 |
:1060C00007C0621773078407950721F008F400944E |
:1060D0000794989408959A95BB0F661F771F881FA1 |
:1060E00011249923A1F08823B2F79F3F59F0BB0FE9 |
:1060F00048F421F4002011F460FF04C06F5F7F4F6B |
:106100008F4F9F4F881F9795879597F908952CC0BB |
:106110009FEF80EC0895052E092607FA440F551FBE |
:106120005F3F79F0AA27A51708F051E04795880F3F |
:10613000991F9F3F31F0BB27B91708F091E0879571 |
:1061400008959F919F911124E3CF97FB880F991F8A |
:106150009F3F31F0BB27B91708F091E0879508956C |
:106160009F919F911124D4CF66277727882799275D |
:106170000895D1DF01D0B4CF992339F0552329F008 |
:106180009F575F57950F13F49AF1F1CF91589F3FA6 |
:10619000E1F3629FA12D0F92BB27639FA00DB11D5C |
:1061A000EE27729FA00DB11DEE1FAF93AA27649F2B |
:1061B000B00DE11D739FB00DE11DAA1F6627829FE0 |
:1061C000B00DE11DA61F5527749FE00DA11D551FA1 |
:1061D000839FE00DA11D561F849FA00D511D852F8B |
:1061E0007A2F6E2F1F900F9088231AF4939539F40D |
:1061F0008FCF000C111CBB1F661F771F881F012843 |
:106200000895629FD001739FF001829FE00DF11D00 |
:10621000649FE00DF11D929FF00D839FF00D749F20 |
:10622000F00D659FF00D9927729FB00DE11DF91FCC |
:10623000639FB00DE11DF91FBD01CF011124089529 |
:10624000AA1BBB1B51E107C0AA1FBB1FA617B7079C |
:1062500010F0A61BB70B881F991F5A95A9F78095B8 |
:106260009095BC01CD01089597FB092E07260AD011 |
:1062700077FD04D0E5DF06D000201AF47095619513 |
:106280007F4F0895F6F7909581959F4F0895A1E26D |
:106290001A2EAA1BBB1BFD010DC0AA1FBB1FEE1FA0 |
:1062A000FF1FA217B307E407F50720F0A21BB30BEB |
:1062B000E40BF50B661F771F881F991F1A9469F767 |
:1062C00060957095809590959B01AC01BD01CF01C3 |
:1062D000089597FB092E05260ED057FD04D0D7DF71 |
:1062E0000AD0001C38F450954095309521953F4FC9 |
:1062F0004F4F5F4F0895F6F7909580957095619593 |
:106300007F4F8F4F9F4F0895F999FECFB2BDA1BD2A |
:10631000F89A119600B40895F999FECFB2BDA1BDC7 |
:1063200000BC11960FB6F894FA9AF99A0FBE089528 |
:1063300001640A016400007D0000FF030102030400 |
:1063400005060708090A48616C6C6F2057656C7474 |
:10635000000000000000000000000000000000003D |
:10636000000000000000000000000000000000002D |
:10637000000000000000000000000000000000001D |
:10638000000000000000000000000000000000000D |
:106390000000000000000B014B616D6572610000A0 |
:1063A0004E6F726D616C00000000803F17B7D138EE |
:1063B00030FB103A403296020A642000207C200014 |
:1063C000202320000D0A004D7367436C6173733DF9 |
:1063D000257520004D736749643D257520004C6587 |
:1063E0006E6774683D25752000446174613D20002E |
:0863F0002530325820000D0099 |
:00000001FF |
/branches/martosi/GPS.c |
---|
0,0 → 1,290 |
//------------------------------------------------------------------------------ |
// _ _ |
// | | | | |
// ___ _ __ ___ ___ _ _ ___| |_ ___ ___| |__ |
// / _ \ '_ ` _ \/ __| | | / __| __/ _ \/ __| '_ \. |
// | __/ | | | | \__ \ |_| \__ \ || __/ (__| | | | |
// \___|_| |_| |_|___/\__, |___/\__\___|\___|_| |_| |
// __/ | |
// |___/ Engineering |
// |
// Filename: GPS.c |
// Description: |
// |
// Author: Martin Steppuhn |
// History: 15.06.2007 Initial version |
// |
//------------------------------------------------------------------------------ |
/**** Includes ****************************************************************/ |
#include "std_c.h" |
#include "main.h" |
#include "fc.h" |
#include "gps_ubx.h" |
/**** Preprocessing directives (#define) **************************************/ |
/**** Type definitions (typedef) **********************************************/ |
/**** Global constants ********************************************************/ |
/**** Global variables ********************************************************/ |
signed int GPS_Nick = 0; |
signed int GPS_Roll = 0; |
/**** Local constants ********************************************************/ |
/**** Local variables *********************************************************/ |
signed int test_nick = 0; |
signed int test_roll = 0; |
long GpsAktuell_X = 0; |
long GpsAktuell_Y = 0; |
long GpsAktuell_Z = 0; |
long GpsZiel_X = 0; |
long GpsZiel_Y = 0; |
long gps_dx; |
long gps_dy; |
long gps_dz; |
long gps_vx; |
long gps_vy; |
long gps_vz; |
bool gps_hold; |
uint8 print_pos; |
/**** Local function prototypes ***********************************************/ |
void print_uint16(uint16 value,uint8 width); |
void print_int16(int16 value,uint8 width); |
void print_string(char *s); |
//------------------------------------------------------------------------------ |
// Name: GPS_Neutral |
// Function: |
// |
// Parameter: |
// Return: |
//------------------------------------------------------------------------------ |
void GPS_Neutral(void) |
{ |
GpsZiel_X = GpsAktuell_X; |
GpsZiel_Y = GpsAktuell_Y; |
GPS_Nick = 0; |
GPS_Roll = 0; |
// LED_GPS_DATA_OFF; |
//LED_GPS_FIX_OFF; |
//LED_GPS_DATA_ON; |
} |
//------------------------------------------------------------------------------ |
// Name: gps_trace |
// Function: |
// |
// Parameter: |
// Return: |
//------------------------------------------------------------------------------ |
void gps_trace(void) |
{ |
print_pos = 0; |
print_uint16(nav_sol.gpsfix,1); |
print_string(" "); |
print_int16(gps_dy,7); |
print_int16(gps_dx,7); |
print_string(" | "); |
print_int16(gps_vy,7); |
print_int16(gps_vx,7); |
print_string(" | "); |
print_int16(GPS_Roll,7); |
print_int16(GPS_Nick,7); |
print_string(" # "); |
print_int16(StickRoll,7); |
print_int16(StickNick,7); |
print_string("\r\n"); |
UebertragungAbgeschlossen = 0; |
UDR = SendeBuffer[0]; // Start |
} |
//------------------------------------------------------------------------------ |
// Name: gps_main |
// Function: |
// |
// Parameter: |
// Return: |
//------------------------------------------------------------------------------ |
void GPS_Main(void) |
{ |
if((Poti3 > 125) && (nav_sol.gpsfix) && (gps_hold == false)) // Enable Hold |
{ |
GpsZiel_X = GpsAktuell_X; |
GpsZiel_Y = GpsAktuell_Y; |
gps_hold = true; |
} |
if(Poti3 < 125) // Disable Hold |
{ |
GpsZiel_X = 0; |
GpsZiel_Y = 0; |
GPS_Nick = 0; |
GPS_Roll = 0; |
gps_hold = false; |
} |
if(ubx.update) |
{ |
ubx.update = false; |
ubx_decode(&ubx); |
if(nav_sol.update) |
{ |
//trace_nav_sol(); |
nav_sol.update = false; |
if(nav_sol.gpsfix) |
{ |
LED_GPS_FIX_TOGGLE; |
LED_GPS_DATA_OFF; |
} |
else |
{ |
LED_GPS_DATA_TOGGLE; |
LED_GPS_FIX_OFF; |
} |
//=== new Position ==================== |
GpsAktuell_X = nav_sol.ecef_x; |
GpsAktuell_Y = nav_sol.ecef_y; |
gps_dx = GpsZiel_X - GpsAktuell_X; // Süden + |
gps_dy = GpsZiel_Y - GpsAktuell_Y; // Osten + |
gps_vx = -nav_sol.ecefvx; // cm/s ECEF X velocity |
gps_vy = -nav_sol.ecefvy; // cm/s ECEF Y velocity |
if(gps_hold) |
{ |
GPS_Nick = ((gps_dx * Poti1) / 512) + ((gps_vx * Poti2) / 128); |
GPS_Roll = ((gps_dy * Poti1) / 512) + ((gps_vy * Poti2) / 128); |
} |
else |
{ |
GPS_Nick = 0; |
GPS_Roll = 0; |
} |
//===================================== |
} |
gps_trace(); |
} |
} |
//============================================================================== |
//============================================================================== |
//============================================================================== |
// |
//============================================================================== |
//============================================================================== |
//============================================================================== |
//------------------------------------------------------------------------------ |
// Name: |
// Function: |
// |
// Parameter: |
// Return: |
//------------------------------------------------------------------------------ |
void print_uint16(uint16 value,uint8 width) |
{ |
uint8 i,s[10]; |
for (i = 0; i < width; i++) |
{ |
s[width - i - 1] = '0' + (value % 10); |
value /= 10; |
} |
for (i=0; i<(width - 1); i++) // Overwrite trailing Zeros |
{ |
if (s[i] == '0') s[i] = ' '; |
else break; |
} |
for (i=0; i<width; i++) SendeBuffer[print_pos++] = s[i]; // Output String |
// for (i=0; i<width; i++) putchar(s[i]); // Output String |
} |
//------------------------------------------------------------------------------ |
// Name: |
// Function: |
// |
// Parameter: |
// Return: |
//------------------------------------------------------------------------------ |
void print_int16(int16 value,uint8 width) |
{ |
uint8 i,s[10]; |
bool neg; |
neg = false; |
if(value < 0) { value = -value; neg = true; } |
for (i = 0; i < width; i++) |
{ |
s[width - i - 1] = '0' + (value % 10); |
value /= 10; |
} |
for (i=0; i<(width - 1); i++) // Overwrite trailing Zeros |
{ |
if (s[i] == '0') s[i] = ' '; |
else |
{ |
if(neg) s[i-1] = '-'; |
break; |
} |
} |
for (i=0; i<width; i++) SendeBuffer[print_pos++] = s[i]; // Output String |
// for (i=0; i<width; i++) putchar(s[i]); // Output String |
} |
//------------------------------------------------------------------------------ |
// Name: |
// Function: |
// |
// Parameter: |
// Return: |
//------------------------------------------------------------------------------ |
void print_string(char *s) |
{ |
while(*s) |
{ |
SendeBuffer[print_pos++] = *s; |
s++; |
} |
} |
/branches/martosi/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/martosi/Settings.h |
---|
--- martosi/_Settings.h (nonexistent) |
+++ martosi/_Settings.h (revision 171) |
@@ -0,0 +1,50 @@ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Testmodi |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define MOTOR_OFF 0 |
+#define MOTOR_TEST 0 |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Abstimmung |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define ACC_AMPLIFY 16 |
+#define FAKTOR_P 1 |
+#define FAKTOR_I 0.0001 |
+ |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Debug-Interface |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define SIO_DEBUG 1 // Soll der Debugger aktiviert sein? |
+#define MIN_DEBUG_INTERVALL 250 // in diesem Intervall werden Degugdaten ohne Aufforderung gesendet |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Sender |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ #define K_NICK 0 |
+ #define K_ROLL 1 |
+ #define K_GAS 2 |
+ #define K_GIER 3 |
+ #define K_POTI1 4 |
+ #define K_POTI2 5 |
+ #define K_POTI3 6 |
+ #define K_POTI4 7 |
+// +++++++++++++++++++++++++++++++ |
+// + Getestete Settings: |
+// +++++++++++++++++++++++++++++++ |
+// Setting: Kamera |
+// Stick_P:3 |
+// Stick_D:0 |
+// Gyro_P: 175 |
+// Gyro_I: 175 |
+// Ki_Anteil: 10 |
+// +++++++++++++++++++++++++++++++ |
+// + Getestete Settings: |
+// +++++++++++++++++++++++++++++++ |
+// Setting: Normal |
+// Stick_P:2 |
+// Stick_D:8 |
+// Gyro_P: 80 |
+// Gyro_I: 150 |
+// Ki_Anteil: 5 |
+ |
/branches/martosi/analog.c |
---|
0,0 → 1,155 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az, UBat = 100; |
volatile int AccumulateNick = 0, AccumulateRoll = 0, AccumulateGier = 0; |
volatile int accumulate_AccRoll = 0,accumulate_AccNick = 0,accumulate_AccHoch = 0; |
volatile char MessanzahlNick = 0, MessanzahlRoll = 0, MessanzahlGier = 0; |
volatile char messanzahl_AccNick = 0, messanzahl_AccRoll = 0, messanzahl_AccHoch = 0; |
volatile long Luftdruck = 32000; |
volatile int StartLuftdruck; |
volatile unsigned int MessLuftdruck = 1023; |
unsigned char DruckOffsetSetting; |
volatile int HoeheD = 0; |
volatile char messanzahl_Druck; |
volatile int tmpLuftdruck; |
volatile unsigned int ZaehlMessungen = 0; |
//####################################################################################### |
// |
void ADC_Init(void) |
//####################################################################################### |
{ |
ADMUX = 0;//Referenz ist extern |
ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE); |
//Free Running Mode, Division Factor 128, Interrupt on |
} |
void SucheLuftruckOffset(void) |
{ |
unsigned int off; |
for(off=0; off < 250;off++) |
{ |
OCR0A = off; |
Delay_ms(50); |
printf("."); |
if(MessLuftdruck < 900) break; |
} |
DruckOffsetSetting = off; |
Delay_ms(200); |
} |
//####################################################################################### |
// |
SIGNAL(SIG_ADC) |
//####################################################################################### |
{ |
static unsigned char kanal=0,state = 0; |
signed int wert; |
ANALOG_OFF; |
switch(state++) |
{ |
case 0: |
wert = (signed int) AdNeutralGier - ADC; |
AccumulateGier += wert; // |
MessanzahlGier++; |
Mess_Integral_Gier += wert;// / 16; |
Mess_Integral_Gier2 += wert; |
kanal = 1; |
ZaehlMessungen++; |
break; |
case 1: |
wert = (signed int) ADC - AdNeutralRoll; |
Mess_IntegralRoll += wert; |
Mess_IntegralRoll2 += wert; |
if(ADC < 10) wert = -700; |
if(ADC > 1000) wert = +700; |
AccumulateRoll += wert; |
MessanzahlRoll++; |
kanal = 2; |
break; |
case 2: |
wert = (signed int) ADC - AdNeutralNick; |
Mess_IntegralNick += wert; |
Mess_IntegralNick2 += wert; |
if(ADC < 10) wert = -700; |
if(ADC > 1000) wert = +700; |
AccumulateNick += wert; |
MessanzahlNick++; |
kanal = 4; |
break; |
case 3: |
UBat = (3 * UBat + ADC / 3) / 4;//(UBat + ((ADC * 39) / 256) + 19) / 2; |
kanal = 6; |
break; |
case 4: |
Aktuell_ay = NeutralAccY - ADC; |
accumulate_AccRoll += Aktuell_ay; |
messanzahl_AccRoll++; |
kanal = 7; |
break; |
case 5: |
Aktuell_ay = ADC - NeutralAccX; |
accumulate_AccNick += Aktuell_ay; |
messanzahl_AccNick++; |
kanal = 5; |
state = 6; |
break; |
case 6: |
accumulate_AccHoch = (signed int) ADC - NeutralAccZ; |
accumulate_AccHoch += abs(Aktuell_ay) / 4 + abs(Aktuell_ax) / 4; |
if(accumulate_AccHoch > 1) |
{ |
if(NeutralAccZ < 800) NeutralAccZ+= 0.02; |
} |
else if(accumulate_AccHoch < -1) |
{ |
if(NeutralAccZ > 600) NeutralAccZ-= 0.02; |
} |
messanzahl_AccHoch = 1; |
Aktuell_az = ADC; |
Mess_Integral_Hoch += accumulate_AccHoch; // Integrieren |
Mess_Integral_Hoch -= Mess_Integral_Hoch / 1024; // dämfen |
// Mess_Integral_Hoch -= Mess_Integral_Hoch / 512; // dämfen |
/* if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
kanal = 3; |
state = 7; |
} |
else |
{ |
kanal = 0; |
state = 0; |
}*/ |
kanal = 3; |
state = 7; |
break; |
case 7: |
tmpLuftdruck += ADC; |
if(++messanzahl_Druck >= 5) |
{ |
MessLuftdruck = ADC; |
messanzahl_Druck = 0; |
HoeheD = (int)(StartLuftdruck - tmpLuftdruck - HoehenWert); // D-Anteil = neuerWert - AlterWert |
Luftdruck = (tmpLuftdruck + 3 * Luftdruck) / 4; |
HoehenWert = StartLuftdruck - Luftdruck; |
tmpLuftdruck = 0; |
} |
kanal = 0; |
state = 0; |
break; |
default: |
kanal = 0; |
state = 0; |
break; |
} |
ADMUX = kanal; |
ANALOG_ON; |
} |
/branches/martosi/analog.h |
---|
0,0 → 1,23 |
/*####################################################################################### |
#######################################################################################*/ |
extern volatile int UBat; |
extern volatile int AccumulateNick, AccumulateRoll, AccumulateGier,accumulate_AccRoll,accumulate_AccNick,accumulate_AccHoch; |
extern volatile char MessanzahlNick, MessanzahlRoll, MessanzahlGier,messanzahl_AccNick, messanzahl_AccRoll,messanzahl_AccHoch; |
extern volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az; |
extern volatile long Luftdruck; |
extern volatile char messanzahl_Druck; |
extern volatile unsigned int ZaehlMessungen; |
extern unsigned char DruckOffsetSetting; |
extern volatile int HoeheD; |
extern volatile unsigned int MessLuftdruck; |
extern volatile int StartLuftdruck; |
extern unsigned int ReadADC(unsigned char adc_input); |
extern void ADC_Init(void); |
extern void SucheLuftruckOffset(void); |
#define ANALOG_OFF ADCSRA=0 |
#define ANALOG_ON ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE) |
/branches/martosi/eeprom.c |
---|
--- martosi/fc.c (nonexistent) |
+++ martosi/fc.c (revision 171) |
@@ -0,0 +1,812 @@ |
+/*####################################################################################### |
+Flight Control |
+#######################################################################################*/ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Copyright (c) 04.2007 Holger Buss |
+// + Nur für den privaten Gebrauch |
+// + www.MikroKopter.com |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
+// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
+// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
+// + bzgl. der Nutzungsbedingungen aufzunehmen. |
+// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
+// + Verkauf von Luftbildaufnahmen, usw. |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
+// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
+// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
+// + eindeutig als Ursprung verlinkt werden |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
+// + Benutzung auf eigene Gefahr |
+// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
+// + mit unserer Zustimmung zulässig |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
+// + this list of conditions and the following disclaimer. |
+// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
+// + from this software without specific prior written permission. |
+// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
+// + for non-commercial use (directly or indirectly) |
+// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
+// + with our written permission |
+// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
+// + clearly linked as origin |
+// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
+// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
+// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
+// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
+// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
+// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
+// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
+// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
+// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
+// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
+// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
+// + POSSIBILITY OF SUCH DAMAGE. |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+#include "main.h" |
+ |
+unsigned char h,m,s; |
+volatile unsigned char Timeout = 0; |
+volatile int MesswertNick,MesswertRoll,MesswertGier; |
+volatile int AdNeutralNick = 0,AdNeutralRoll = 0,AdNeutralGier = 0; |
+volatile int Mittelwert_AccNick, Mittelwert_AccRoll,Mittelwert_AccHoch, NeutralAccX=0, NeutralAccY=0; |
+volatile float NeutralAccZ = 0; |
+unsigned char CosinusNickWinkel = 0, CosinusRollWinkel = 0; |
+volatile long IntegralNick = 0,IntegralNick2 = 0; |
+volatile long IntegralRoll = 0,IntegralRoll2 = 0; |
+volatile long Integral_Gier = 0; |
+volatile long Mess_IntegralNick = 0,Mess_IntegralNick2 = 0; |
+volatile long Mess_IntegralRoll = 0,Mess_IntegralRoll2 = 0; |
+volatile long Mess_Integral_Gier = 0,Mess_Integral_Gier2 = 0; |
+volatile long Mess_Integral_Hoch = 0; |
+volatile int KompassValue = 0; |
+volatile int KompassStartwert = 0; |
+volatile int KompassRichtung = 0; |
+unsigned char MAX_GAS,MIN_GAS; |
+unsigned char Notlandung = 0; |
+unsigned char HoehenReglerAktiv = 0; |
+ |
+float GyroFaktor; |
+float IntegralFaktor; |
+ |
+volatile int DiffNick,DiffRoll; |
+int Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0; |
+volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count; |
+unsigned char MotorWert[5]; |
+volatile unsigned char SenderOkay = 0; |
+int StickNick = 0,StickRoll = 0,StickGier = 0; |
+char MotorenEin = 0; |
+int HoehenWert = 0; |
+int SollHoehe = 0; |
+ |
+float Kp = FAKTOR_P; |
+float Ki = FAKTOR_I; |
+ |
+unsigned char Parameter_Luftdruck_D = 48; // Wert : 0-250 |
+unsigned char Parameter_MaxHoehe = 251; // Wert : 0-250 |
+unsigned char Parameter_Hoehe_P = 16; // Wert : 0-32 |
+unsigned char Parameter_Hoehe_ACC_Wirkung = 58; // Wert : 0-250 |
+unsigned char Parameter_KompassWirkung = 64; // Wert : 0-250 |
+unsigned char Parameter_Gyro_P = 50; // Wert : 10-250 |
+unsigned char Parameter_Gyro_I = 150; // Wert : 0-250 |
+unsigned char Parameter_Gier_P = 2; // Wert : 1-20 |
+unsigned char Parameter_I_Faktor = 10; // Wert : 1-20 |
+unsigned char Parameter_UserParam1 = 0; |
+unsigned char Parameter_UserParam2 = 0; |
+unsigned char Parameter_UserParam3 = 0; |
+unsigned char Parameter_UserParam4 = 0; |
+unsigned char Parameter_ServoNickControl = 100; |
+struct mk_param_struct EE_Parameter; |
+ |
+void Piep(unsigned char Anzahl) |
+{ |
+ while(Anzahl--) |
+ { |
+ if(MotorenEin) return; //auf keinen Fall im Flug! |
+ beeptime = 100; |
+ Delay_ms(250); |
+ } |
+} |
+ |
+//############################################################################ |
+// Nullwerte ermitteln |
+void SetNeutral(void) |
+//############################################################################ |
+{ |
+ unsigned int timer; |
+ NeutralAccX = 0; |
+ NeutralAccY = 0; |
+ NeutralAccZ = 0; |
+ AdNeutralNick = 0; |
+ AdNeutralRoll = 0; |
+ AdNeutralGier = 0; |
+ CalibrierMittelwert(); |
+ timer = SetDelay(5); |
+ while (!CheckDelay(timer)); |
+ CalibrierMittelwert(); |
+ if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
+ { |
+ if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
+ } |
+ AdNeutralNick= abs(MesswertNick); |
+ AdNeutralRoll= abs(MesswertRoll); |
+ AdNeutralGier= abs(MesswertGier); |
+ NeutralAccY = abs(Mittelwert_AccRoll) / ACC_AMPLIFY; |
+ NeutralAccX = abs(Mittelwert_AccNick) / ACC_AMPLIFY; |
+ NeutralAccZ = Aktuell_az; |
+ |
+ Mess_IntegralNick = 0; |
+ Mess_IntegralNick2 = 0; |
+ Mess_IntegralRoll = 0; |
+ Mess_IntegralRoll2 = 0; |
+ Mess_Integral_Gier = 0; |
+ MesswertNick = 0; |
+ MesswertRoll = 0; |
+ MesswertGier = 0; |
+ StartLuftdruck = Luftdruck; |
+ HoeheD = 0; |
+ Mess_Integral_Hoch = 0; |
+ KompassStartwert = KompassValue; |
+ GPS_Neutral(); |
+ beeptime = 50; |
+} |
+ |
+//############################################################################ |
+// Bildet den Mittelwert aus den Messwerten |
+void Mittelwert(void) |
+//############################################################################ |
+{ |
+ // ADC auschalten, damit die Werte sich nicht während der Berechnung ändern |
+ ANALOG_OFF; |
+ if(MessanzahlNick) (MesswertNick = AccumulateNick / MessanzahlNick); |
+ if(MessanzahlRoll) (MesswertRoll = AccumulateRoll / MessanzahlRoll); |
+ if(MessanzahlGier) (MesswertGier = AccumulateGier / MessanzahlGier); |
+ if(messanzahl_AccNick) Mittelwert_AccNick = ((long)Mittelwert_AccNick * 7 + ((ACC_AMPLIFY * (long)accumulate_AccNick) / messanzahl_AccNick)) / 8L; |
+ if(messanzahl_AccRoll) Mittelwert_AccRoll = ((long)Mittelwert_AccRoll * 7 + ((ACC_AMPLIFY * (long)accumulate_AccRoll) / messanzahl_AccRoll)) / 8L; |
+ if(messanzahl_AccHoch) Mittelwert_AccHoch = ((long)Mittelwert_AccHoch * 7 + ((long)accumulate_AccHoch) / messanzahl_AccHoch) / 8L; |
+ AccumulateNick = 0; MessanzahlNick = 0; |
+ AccumulateRoll = 0; MessanzahlRoll = 0; |
+ AccumulateGier = 0; MessanzahlGier = 0; |
+ accumulate_AccRoll = 0;messanzahl_AccRoll = 0; |
+ accumulate_AccNick = 0;messanzahl_AccNick = 0; |
+ accumulate_AccHoch = 0;messanzahl_AccHoch = 0; |
+ Integral_Gier = Mess_Integral_Gier; |
+// Integral_Gier2 = Mess_Integral_Gier2; |
+ IntegralNick = Mess_IntegralNick; |
+ IntegralRoll = Mess_IntegralRoll; |
+ IntegralNick2 = Mess_IntegralNick2; |
+ IntegralRoll2 = Mess_IntegralRoll2; |
+ // ADC einschalten |
+ ANALOG_ON; |
+ |
+//------------------------------------------------------------------------------ |
+ if(MesswertNick > 200) MesswertNick += 4 * (MesswertNick - 200); |
+ else |
+ if(MesswertNick < -200) MesswertNick += 4 * (MesswertNick + 200); |
+ |
+ if(MesswertRoll > 200) MesswertRoll += 4 * (MesswertRoll - 200); |
+ else |
+ if(MesswertRoll < -200) MesswertRoll += 4 * (MesswertRoll + 200); |
+//------------------------------------------------------------------------------ |
+ if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--; |
+ if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--; |
+ if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--; |
+ if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--; |
+ if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255; |
+ if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255; |
+ if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255; |
+ if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255; |
+} |
+ |
+//############################################################################ |
+// Messwerte beim Ermitteln der Nullage |
+void CalibrierMittelwert(void) |
+//############################################################################ |
+{ |
+ // ADC auschalten, damit die Werte sich nicht während der Berechnung ändern |
+ ANALOG_OFF; |
+ if(MessanzahlNick) (MesswertNick = AccumulateNick / MessanzahlNick); |
+ if(MessanzahlRoll) (MesswertRoll = AccumulateRoll / MessanzahlRoll); |
+ if(MessanzahlGier) (MesswertGier = AccumulateGier / MessanzahlGier); |
+ if(messanzahl_AccNick) Mittelwert_AccNick = ((ACC_AMPLIFY * (long)accumulate_AccNick) / messanzahl_AccNick); |
+ if(messanzahl_AccRoll) Mittelwert_AccRoll = (ACC_AMPLIFY * (long)accumulate_AccRoll) / messanzahl_AccRoll; |
+ if(messanzahl_AccHoch) Mittelwert_AccHoch = ((long)accumulate_AccHoch) / messanzahl_AccHoch; |
+ AccumulateNick = 0; MessanzahlNick = 0; |
+ AccumulateRoll = 0; MessanzahlRoll = 0; |
+ AccumulateGier = 0; MessanzahlGier = 0; |
+ accumulate_AccRoll = 0;messanzahl_AccRoll = 0; |
+ accumulate_AccNick = 0;messanzahl_AccNick = 0; |
+ accumulate_AccHoch = 0;messanzahl_AccHoch = 0; |
+ // ADC einschalten |
+ ANALOG_ON; |
+ if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--; |
+ if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--; |
+ if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--; |
+ if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--; |
+ if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255; |
+ if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255; |
+ if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255; |
+ if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255; |
+} |
+ |
+//############################################################################ |
+// Senden der Motorwerte per I2C-Bus |
+void SendMotorData(void) |
+//############################################################################ |
+{ |
+ if(MOTOR_OFF || !MotorenEin) |
+ { |
+ Motor_Hinten = 0; |
+ Motor_Vorne = 0; |
+ Motor_Rechts = 0; |
+ Motor_Links = 0; |
+ if(MotorTest[0]) Motor_Vorne = MotorTest[0]; |
+ if(MotorTest[1]) Motor_Hinten = MotorTest[1]; |
+ if(MotorTest[2]) Motor_Links = MotorTest[2]; |
+ if(MotorTest[3]) Motor_Rechts = MotorTest[3]; |
+ } |
+ |
+ DebugOut.Analog[12] = Motor_Vorne; |
+ DebugOut.Analog[13] = Motor_Hinten; |
+ DebugOut.Analog[14] = Motor_Links; |
+ DebugOut.Analog[15] = Motor_Rechts; |
+ |
+ //Start I2C Interrupt Mode |
+ twi_state = 0; |
+ motor = 0; |
+ i2c_start(); |
+} |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Konstanten |
+// + 0-250 -> normale Werte |
+// + 251 -> Poti1 |
+// + 252 -> Poti2 |
+// + 253 -> Poti3 |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+void DefaultKonstanten1(void) |
+{ |
+ EE_Parameter.Kanalbelegung[K_NICK] = 1; |
+ EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
+ EE_Parameter.Kanalbelegung[K_GAS] = 3; |
+ EE_Parameter.Kanalbelegung[K_GIER] = 4; |
+ EE_Parameter.Kanalbelegung[K_POTI1] = 5; |
+ EE_Parameter.Kanalbelegung[K_POTI2] = 6; |
+ EE_Parameter.Kanalbelegung[K_POTI3] = 7; |
+ EE_Parameter.Kanalbelegung[K_POTI4] = 8; |
+ EE_Parameter.GlobalConfig = 0;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV | CFG_KOMPASS_FIX;//0x01; |
+ EE_Parameter.Hoehe_MinGas = 30; |
+ EE_Parameter.MaxHoehe = 251; // Wert : 0-32 251 -> Poti1 |
+ EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
+ EE_Parameter.Luftdruck_D = 70; // Wert : 0-250 |
+ EE_Parameter.Hoehe_ACC_Wirkung = 30; // Wert : 0-250 |
+ EE_Parameter.Hoehe_Verstaerkung = 2; // Wert : 0-50 |
+ EE_Parameter.Stick_P = 4; //2 // Wert : 1-6 |
+ EE_Parameter.Stick_D = 8; //8 // Wert : 0-64 |
+ EE_Parameter.Gier_P = 16; // Wert : 1-20 |
+ EE_Parameter.Gas_Min = 15; // Wert : 0-32 |
+ EE_Parameter.Gas_Max = 250; // Wert : 33-250 |
+ EE_Parameter.GyroAccFaktor = 26; // Wert : 1-64 |
+ EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
+ EE_Parameter.Gyro_P = 120; //80 // Wert : 0-250 |
+ EE_Parameter.Gyro_I = 150; // Wert : 0-250 |
+ EE_Parameter.UnterspannungsWarnung = 90; // Wert : 0-250 |
+ EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
+ EE_Parameter.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
+ EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
+ EE_Parameter.I_Faktor = 5; |
+ EE_Parameter.UserParam1 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam2 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam3 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam4 = 0; //zur freien Verwendung |
+ EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
+ EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
+ EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
+ EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
+ EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
+ EE_Parameter.ServoNickRefresh = 5; |
+ memcpy(EE_Parameter.Name, "Normal\0", 12); |
+} |
+ |
+void DefaultKonstanten2(void) |
+{ |
+ EE_Parameter.Kanalbelegung[K_NICK] = 1; |
+ EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
+ EE_Parameter.Kanalbelegung[K_GAS] = 3; |
+ EE_Parameter.Kanalbelegung[K_GIER] = 4; |
+ EE_Parameter.Kanalbelegung[K_POTI1] = 5; |
+ EE_Parameter.Kanalbelegung[K_POTI2] = 6; |
+ EE_Parameter.Kanalbelegung[K_POTI3] = 7; |
+ EE_Parameter.GlobalConfig = 0;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV;//0x01; |
+ EE_Parameter.Hoehe_MinGas = 30; |
+ EE_Parameter.MaxHoehe = 251; // Wert : 0-32 251 -> Poti1 |
+ EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
+ EE_Parameter.Luftdruck_D = 50; // Wert : 0-250 |
+ EE_Parameter.Hoehe_ACC_Wirkung = 50; // Wert : 0-250 |
+ EE_Parameter.Hoehe_Verstaerkung = 2; // Wert : 0-50 |
+ EE_Parameter.Stick_P = 4; //2 // Wert : 1-6 |
+ EE_Parameter.Stick_D = 0; //8 // Wert : 0-64 |
+ EE_Parameter.Gier_P = 16; // Wert : 1-20 |
+ EE_Parameter.Gas_Min = 15; // Wert : 0-32 |
+ EE_Parameter.Gas_Max = 250; // Wert : 33-250 |
+ EE_Parameter.GyroAccFaktor = 26; // Wert : 1-64 |
+ EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
+ EE_Parameter.Gyro_P = 175; //80 // Wert : 0-250 |
+ EE_Parameter.Gyro_I = 175; // Wert : 0-250 |
+ EE_Parameter.UnterspannungsWarnung = 90; // Wert : 0-250 |
+ EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
+ EE_Parameter.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
+ EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
+ EE_Parameter.I_Faktor = 5; |
+ EE_Parameter.UserParam1 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam2 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam3 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam4 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam3 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam4 = 0; //zur freien Verwendung |
+ EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
+ EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
+ EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
+ EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
+ EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
+ EE_Parameter.ServoNickRefresh = 5; |
+ memcpy(EE_Parameter.Name, "Kamera\0", 12); |
+} |
+ |
+ |
+//############################################################################ |
+// Trägt ggf. das Poti als Parameter ein |
+void ParameterZuordnung(void) |
+//############################################################################ |
+{ |
+ |
+ #define CHK_POTI(b,a,min,max) { if(a > 250) { if(a == 251) b = Poti1; else if(a == 252) b = Poti2; else if(a == 253) b = Poti3; else if(a == 254) b = Poti4;} else b = a; if(b <= min) b = min; else if(b >= max) b = max;} |
+ CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe,0,255); |
+ CHK_POTI(Parameter_Luftdruck_D,EE_Parameter.Luftdruck_D,0,100); |
+ CHK_POTI(Parameter_Hoehe_P,EE_Parameter.Hoehe_P,0,100); |
+ CHK_POTI(Parameter_Hoehe_ACC_Wirkung,EE_Parameter.Hoehe_ACC_Wirkung,0,255); |
+ CHK_POTI(Parameter_KompassWirkung,EE_Parameter.KompassWirkung,0,255); |
+ CHK_POTI(Parameter_Gyro_P,EE_Parameter.Gyro_P,10,255); |
+ CHK_POTI(Parameter_Gyro_I,EE_Parameter.Gyro_I,0,255); |
+ CHK_POTI(Parameter_I_Faktor,EE_Parameter.I_Faktor,0,255); |
+ CHK_POTI(Parameter_UserParam1,EE_Parameter.UserParam1,0,255); |
+ CHK_POTI(Parameter_UserParam2,EE_Parameter.UserParam2,0,255); |
+ CHK_POTI(Parameter_UserParam3,EE_Parameter.UserParam3,0,255); |
+ CHK_POTI(Parameter_UserParam4,EE_Parameter.UserParam4,0,255); |
+ |
+ unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
+ unsigned char ServoNickCompInvert; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
+ unsigned char ServoNickMin; // Wert : 0-250 // Anschlag |
+ unsigned char ServoNickMax; // Wert : 0-250 // Anschlag |
+ |
+ |
+ CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
+ CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
+ CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
+ |
+ Ki = (float) Parameter_I_Faktor * 0.0001; |
+ MAX_GAS = EE_Parameter.Gas_Max; |
+ MIN_GAS = EE_Parameter.Gas_Min; |
+} |
+ |
+ |
+//############################################################################ |
+// |
+void MotorRegler(void) |
+//############################################################################ |
+{ |
+ int motorwert,pd_ergebnis,h,tmp_int; |
+ int GierMischanteil,GasMischanteil; |
+ static long SummeNick=0,SummeRoll=0; |
+ static long sollGier = 0,tmp_long,tmp_long2; |
+ static int IntegralFehlerNick = 0; |
+ static int IntegralFehlerRoll = 0; |
+ static unsigned int RcLostTimer; |
+ static unsigned char delay_neutral = 0; |
+ static unsigned char delay_einschalten = 0,delay_ausschalten = 0; |
+ static unsigned int modell_fliegt = 0; |
+ static int hoehenregler = 0; |
+ static char TimerWerteausgabe = 0; |
+ static char NeueKompassRichtungMerken = 0; |
+ Mittelwert(); |
+ |
+ GRN_ON; |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gaswert ermitteln |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ GasMischanteil = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 120; |
+ if(GasMischanteil < 0) GasMischanteil = 0; |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Emfang schlecht |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(SenderOkay < 100) |
+ { |
+ if(!PcZugriff) beeptime = 500; |
+ if(RcLostTimer) RcLostTimer--; |
+ else |
+ { |
+ MotorenEin = 0; |
+ Notlandung = 0; |
+ } |
+ ROT_ON; |
+ if(modell_fliegt > 2000) // wahrscheinlich in der Luft --> langsam absenken |
+ { |
+ GasMischanteil = EE_Parameter.NotGas; |
+ Notlandung = 1; |
+ PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] = 0; |
+ PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] = 0; |
+ PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] = 0; |
+/* Poti1 = 65; |
+ Poti2 = 48; |
+ Poti3 = 0; |
+*/ } |
+ else MotorenEin = 0; |
+ } |
+ else |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Emfang gut |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(SenderOkay > 140) |
+ { |
+ Notlandung = 0; |
+ RcLostTimer = EE_Parameter.NotGasZeit * 50; |
+ if(GasMischanteil > 40) |
+ { |
+ if(modell_fliegt < 0xffff) modell_fliegt++; |
+ } |
+ if((modell_fliegt < 200) || (GasMischanteil < 40)) |
+ { |
+ SummeNick = 0; |
+ SummeRoll = 0; |
+ Mess_Integral_Gier = 0; |
+ Mess_Integral_Gier2 = 0; |
+ } |
+ if((GasMischanteil > 200) && MotorenEin == 0) |
+ { |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// auf Nullwerte kalibrieren |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) // Neutralwerte |
+ { |
+ unsigned char setting; |
+ if(++delay_neutral > 200) // nicht sofort |
+ { |
+ GRN_OFF; |
+ SetNeutral(); |
+ MotorenEin = 0; |
+ delay_neutral = 0; |
+ modell_fliegt = 0; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70 || abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) > 70) |
+ { |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 1; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 2; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5; |
+ eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], setting); // aktiven Datensatz merken |
+ } |
+ ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
+ Piep(GetActiveParamSetNumber()); |
+ if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
+ { |
+ if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
+ } |
+ } |
+ } |
+ else delay_neutral = 0; |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gas ist unten |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(GasMischanteil < 35) |
+ { |
+ // Starten |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75) |
+ { |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Einschalten |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(++delay_einschalten > 200) |
+ { |
+ delay_einschalten = 200; |
+ modell_fliegt = 1; |
+ MotorenEin = 1; |
+ sollGier = 0; |
+ Mess_Integral_Gier = 0; |
+ Mess_Integral_Gier2 = 0; |
+ Mess_IntegralNick = 0; |
+ Mess_IntegralRoll = 0; |
+ Mess_IntegralNick2 = IntegralNick; |
+ Mess_IntegralRoll2 = IntegralRoll; |
+ SummeNick = 0; |
+ SummeRoll = 0; |
+ } |
+ } |
+ else delay_einschalten = 0; |
+ //Auf Neutralwerte setzen |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Auschalten |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) |
+ { |
+ if(++delay_ausschalten > 200) // nicht sofort |
+ { |
+ MotorenEin = 0; |
+ delay_ausschalten = 200; |
+ modell_fliegt = 0; |
+ } |
+ } |
+ else delay_ausschalten = 0; |
+ } |
+ } |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// neue Werte von der Funke |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(!NewPpmData-- || Notlandung) |
+ { |
+ ParameterZuordnung(); |
+ StickNick = PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P; |
+ StickNick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D; |
+ StickRoll = PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P; |
+ StickRoll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D; |
+ StickGier = -PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]; |
+ |
+ GyroFaktor = ((float)Parameter_Gyro_P + 10.0) / 256.0; |
+ IntegralFaktor = ((float) Parameter_Gyro_I) / 44000; |
+ |
+ if(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor = 0; |
+ if(GyroFaktor < 0) GyroFaktor = 0; |
+ if(IntegralFaktor < 0) IntegralFaktor = 0; |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Bei Empfangsausfall im Flug |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(Notlandung) |
+ { |
+ StickGier = 0; |
+ StickNick = 0; |
+ StickRoll = 0; |
+ GyroFaktor = 0.1; |
+ IntegralFaktor = 0.005; |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gyro-Drift kompensieren |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define DRIFT_FAKTOR 3 |
+ if(ZaehlMessungen >= 1000 / DRIFT_FAKTOR) |
+ { |
+ IntegralFehlerNick = IntegralNick2 - IntegralNick; |
+ IntegralFehlerRoll = IntegralRoll2 - IntegralRoll; |
+ ZaehlMessungen = 0; |
+ if(IntegralFehlerNick > 500/DRIFT_FAKTOR) AdNeutralNick++; |
+ if(IntegralFehlerNick < -500/DRIFT_FAKTOR) AdNeutralNick--; |
+ if(IntegralFehlerRoll > 500/DRIFT_FAKTOR) AdNeutralRoll++; |
+ if(IntegralFehlerRoll < -500/DRIFT_FAKTOR) AdNeutralRoll--; |
+ if(Mess_Integral_Gier2 > 500/DRIFT_FAKTOR) AdNeutralGier--; |
+ if(Mess_Integral_Gier2 <-500/DRIFT_FAKTOR) AdNeutralGier++; |
+ ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
+ Mess_IntegralNick2 = IntegralNick; |
+ Mess_IntegralRoll2 = IntegralRoll; |
+ Mess_Integral_Gier2 = Integral_Gier; |
+ ANALOG_ON; // ADC einschalten |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Integrale auf ACC-Signal abgleichen |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick) / 16; |
+ tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll) / 16; |
+#define AUSGLEICH 500 |
+ if(tmp_long > AUSGLEICH) tmp_long = AUSGLEICH; |
+ if(tmp_long < -AUSGLEICH) tmp_long =-AUSGLEICH; |
+ if(tmp_long2 > AUSGLEICH) tmp_long2 = AUSGLEICH; |
+ if(tmp_long2 <-AUSGLEICH) tmp_long2 =-AUSGLEICH; |
+ ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
+ Mess_IntegralNick -= tmp_long; |
+ Mess_IntegralRoll -= tmp_long2; |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gieren |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ sollGier = StickGier; |
+ if(abs(StickGier) > 35) |
+ { |
+ if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX)) NeueKompassRichtungMerken = 1; |
+ } |
+ tmp_int = EE_Parameter.Gier_P * (sollGier * abs(sollGier)) / 256; // expo |
+ Mess_Integral_Gier -= tmp_int; |
+ if(Mess_Integral_Gier > 30000) Mess_Integral_Gier = 30000; // begrenzen |
+ if(Mess_Integral_Gier <-30000) Mess_Integral_Gier =-30000; |
+ |
+ ANALOG_ON; // ADC einschalten |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Kompass |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ //KompassValue = 12; |
+ if(KompassValue && (EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV)) |
+ { |
+ int w,v; |
+ static int SignalSchlecht = 0; |
+ w = abs(IntegralNick /512); // mit zunehmender Neigung den Einfluss drosseln |
+ v = abs(IntegralRoll /512); |
+ if(v > w) w = v; // grösste Neigung ermitteln |
+ if(w < 25 && NeueKompassRichtungMerken && !SignalSchlecht) |
+ { |
+ KompassStartwert = KompassValue; |
+ NeueKompassRichtungMerken = 0; |
+ } |
+ w = (w * Parameter_KompassWirkung) / 64; // auf die Wirkung normieren |
+ w = Parameter_KompassWirkung - w; // Wirkung ggf drosseln |
+ if(w > 0) |
+ { |
+ ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
+ if(!SignalSchlecht) Mess_Integral_Gier += (KompassRichtung * w) / 32; // nach Kompass ausrichten |
+ ANALOG_ON; // ADC einschalten |
+ if(SignalSchlecht) SignalSchlecht--; |
+ } |
+ else SignalSchlecht = 500; // so lange das Signal taub stellen --> ca. 1 sek |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Debugwerte zuordnen |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+DebugOut.Sekunden++; |
+ if(!TimerWerteausgabe--) |
+ { |
+ TimerWerteausgabe = 49; |
+// DebugOut.Analog[0] = MesswertNick; |
+// DebugOut.Analog[1] = MesswertRoll; |
+// DebugOut.Analog[2] = MesswertGier; |
+ DebugOut.Analog[0] = IntegralNick / EE_Parameter.GyroAccFaktor; |
+ DebugOut.Analog[1] = IntegralRoll / EE_Parameter.GyroAccFaktor; |
+ DebugOut.Analog[2] = Mittelwert_AccNick; |
+ DebugOut.Analog[3] = Mittelwert_AccRoll; |
+ DebugOut.Analog[4] = MesswertGier; |
+ DebugOut.Analog[5] = HoehenWert; |
+ DebugOut.Analog[6] = (Mess_Integral_Hoch / 512); |
+ DebugOut.Analog[7] = GasMischanteil; |
+ DebugOut.Analog[8] = KompassValue; |
+// DebugOut.Analog[9] = SollHoehe; |
+// DebugOut.Analog[10] = Mess_Integral_Gier / 128; |
+// DebugOut.Analog[11] = KompassStartwert; |
+// DebugOut.Analog[10] = Parameter_Gyro_I; |
+// DebugOut.Analog[10] = EE_Parameter.Gyro_I; |
+// DebugOut.Analog[9] = KompassRichtung; |
+// DebugOut.Analog[10] = GasMischanteil; |
+// DebugOut.Analog[3] = HoeheD * 32; |
+// DebugOut.Analog[4] = hoehenregler; |
+ } |
+ |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Drehgeschwindigkeit und -winkel zu einem Istwert zusammenfassen |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ MesswertNick = IntegralNick * IntegralFaktor + MesswertNick * GyroFaktor; |
+ MesswertRoll = IntegralRoll * IntegralFaktor + MesswertRoll * GyroFaktor; |
+ MesswertGier = MesswertGier * (GyroFaktor/2) + Integral_Gier * IntegralFaktor; |
+ |
+ // Maximalwerte abfangen |
+ #define MAX_SENSOR 2048 |
+ if(MesswertNick > MAX_SENSOR) MesswertNick = MAX_SENSOR; |
+ if(MesswertNick < -MAX_SENSOR) MesswertNick = -MAX_SENSOR; |
+ if(MesswertRoll > MAX_SENSOR) MesswertRoll = MAX_SENSOR; |
+ if(MesswertRoll < -MAX_SENSOR) MesswertRoll = -MAX_SENSOR; |
+ if(MesswertGier > MAX_SENSOR) MesswertGier = MAX_SENSOR; |
+ if(MesswertGier < -MAX_SENSOR) MesswertGier = -MAX_SENSOR; |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Höhenregelung |
+// Die Höhenregelung schwächt lediglich das Gas ab, erhöht es allerdings nicht |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+//OCR0B = 180 - (Poti1 + 120) / 4; |
+//DruckOffsetSetting = OCR0B; |
+ if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung |
+ { |
+ int tmp_int; |
+ if(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER) // Regler wird über Schalter gesteuert |
+ { |
+ if(Parameter_MaxHoehe < 50) |
+ { |
+ SollHoehe = HoehenWert - 20; // Parameter_MaxHoehe ist der PPM-Wert des Schalters |
+ HoehenReglerAktiv = 0; |
+ } |
+ else |
+ HoehenReglerAktiv = 1; |
+ } |
+ else |
+ { |
+ SollHoehe = Parameter_MaxHoehe * EE_Parameter.Hoehe_Verstaerkung - 20; |
+ HoehenReglerAktiv = 1; |
+ } |
+ |
+ if(Notlandung) SollHoehe = 0; |
+ h = HoehenWert; |
+ if((h > SollHoehe) && HoehenReglerAktiv) // zu hoch --> drosseln |
+ { h = ((h - SollHoehe) * (int) Parameter_Hoehe_P) / 16; // Differenz bestimmen --> P-Anteil |
+ h = GasMischanteil - h; // vom Gas abziehen |
+ h -= (HoeheD * Parameter_Luftdruck_D)/8; // D-Anteil |
+ tmp_int = ((Mess_Integral_Hoch / 512) * (signed long) Parameter_Hoehe_ACC_Wirkung) / 32; |
+ if(tmp_int > 50) tmp_int = 50; |
+ else if(tmp_int < -50) tmp_int = -50; |
+ h -= tmp_int; |
+ hoehenregler = (hoehenregler*15 + h) / 16; |
+ if(hoehenregler < EE_Parameter.Hoehe_MinGas) // nicht unter MIN |
+ { |
+ if(GasMischanteil >= EE_Parameter.Hoehe_MinGas) hoehenregler = EE_Parameter.Hoehe_MinGas; |
+ if(GasMischanteil < EE_Parameter.Hoehe_MinGas) hoehenregler = GasMischanteil; |
+ } |
+ if(hoehenregler > GasMischanteil) hoehenregler = GasMischanteil; // nicht mehr als Gas |
+ GasMischanteil = hoehenregler; |
+ } |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Mischer und PI-Regler |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gier-Anteil |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ GierMischanteil = MesswertGier - sollGier; // Regler für Gier |
+ if(GierMischanteil > 100) GierMischanteil = 100; |
+ if(GierMischanteil < -100) GierMischanteil = -100; |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Nick-Achse |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ DiffNick = Kp * (MesswertNick - (StickNick - GPS_Nick)); // Differenz bestimmen |
+ SummeNick += DiffNick; // I-Anteil |
+ if(SummeNick > 0) SummeNick-= (abs(SummeNick)/256 + 1); else SummeNick += abs(SummeNick)/256 + 1; |
+ if(SummeNick > 16000) SummeNick = 16000; |
+ if(SummeNick < -16000) SummeNick = -16000; |
+ pd_ergebnis = DiffNick + Ki * SummeNick; // PI-Regler für Nick |
+ // Motor Vorn |
+ motorwert = GasMischanteil + pd_ergebnis + GierMischanteil; // Mischer |
+ if ((motorwert < 0) | (GasMischanteil < 10)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Vorne = motorwert; |
+ // Motor Heck |
+ motorwert = GasMischanteil - pd_ergebnis + GierMischanteil; |
+ if ((motorwert < 0) | (GasMischanteil < 10)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Hinten = motorwert; |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Roll-Achse |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ DiffRoll = Kp * (MesswertRoll - (StickRoll - GPS_Roll)); // Differenz bestimmen |
+ SummeRoll += DiffRoll; // I-Anteil |
+ if(SummeRoll > 0) SummeRoll-= (abs(SummeRoll)/256 + 1); else SummeRoll += abs(SummeRoll)/256 + 1; |
+ if(SummeRoll > 16000) SummeRoll = 16000; |
+ if(SummeRoll < -16000) SummeRoll = -16000; |
+ pd_ergebnis = DiffRoll + Ki * SummeRoll; // PI-Regler für Roll |
+ // Motor Links |
+ motorwert = GasMischanteil + pd_ergebnis - GierMischanteil; |
+ if ((motorwert < 0) | (GasMischanteil < 10)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Links = motorwert; |
+ // Motor Rechts |
+ motorwert = GasMischanteil - pd_ergebnis - GierMischanteil; |
+ if ((motorwert < 0) | (GasMischanteil < 10)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Rechts = motorwert; |
+ // +++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+} |
+ |
/branches/martosi/fc.h |
---|
0,0 → 1,106 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
#ifndef _FC_H |
#define _FC_H |
extern volatile unsigned char Timeout; |
extern unsigned char Sekunde,Minute; |
extern volatile long IntegralNick,IntegralNick2; |
extern volatile long IntegralRoll,IntegralRoll2; |
extern volatile long Mess_IntegralNick,Mess_IntegralNick2; |
extern volatile long Mess_IntegralRoll,Mess_IntegralRoll2; |
extern volatile long Mess_Integral_Hoch; |
extern volatile long Integral_Gier,Mess_Integral_Gier,Mess_Integral_Gier2; |
extern volatile int KompassValue; |
extern volatile int KompassStartwert; |
extern volatile int KompassRichtung; |
extern int HoehenWert; |
extern int SollHoehe; |
extern volatile int MesswertNick,MesswertRoll,MesswertGier; |
extern volatile int AdNeutralNick,AdNeutralRoll,AdNeutralGier, Mittelwert_AccNick, Mittelwert_AccRoll; |
extern volatile int NeutralAccX, NeutralAccY,Mittelwert_AccHoch; |
extern volatile float NeutralAccZ; |
void MotorRegler(void); |
void SendMotorData(void); |
void CalibrierMittelwert(void); |
void Mittelwert(void); |
void SetNeutral(void); |
unsigned char h,m,s; |
volatile unsigned char Timeout ; |
unsigned char CosinusNickWinkel, CosinusRollWinkel; |
volatile long IntegralNick,IntegralNick2; |
volatile long IntegralRoll,IntegralRoll2; |
volatile long Integral_Gier; |
volatile long Mess_IntegralNick,Mess_IntegralNick2; |
volatile long Mess_IntegralRoll,Mess_IntegralRoll2; |
volatile long Mess_Integral_Gier; |
volatile int DiffNick,DiffRoll; |
extern int Poti1, Poti2, Poti3, Poti4; |
volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count; |
unsigned char MotorWert[5]; |
volatile unsigned char SenderOkay; |
int StickNick,StickRoll,StickGier; |
char MotorenEin; |
extern void DefaultKonstanten(void); |
#define STRUCT_PARAM_LAENGE 58 |
struct mk_param_struct |
{ |
unsigned char Kanalbelegung[8]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3 |
unsigned char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv |
unsigned char Hoehe_MinGas; // Wert : 0-100 |
unsigned char Luftdruck_D; // Wert : 0-250 |
unsigned char MaxHoehe; // Wert : 0-32 |
unsigned char Hoehe_P; // Wert : 0-32 |
unsigned char Hoehe_Verstaerkung; // Wert : 0-50 |
unsigned char Hoehe_ACC_Wirkung; // Wert : 0-250 |
unsigned char Stick_P; // Wert : 1-6 |
unsigned char Stick_D; // Wert : 0-64 |
unsigned char Gier_P; // Wert : 1-20 |
unsigned char Gas_Min; // Wert : 0-32 |
unsigned char Gas_Max; // Wert : 33-250 |
unsigned char GyroAccFaktor; // Wert : 1-64 |
unsigned char KompassWirkung; // Wert : 0-32 |
unsigned char Gyro_P; // Wert : 10-250 |
unsigned char Gyro_I; // Wert : 0-250 |
unsigned char UnterspannungsWarnung; // Wert : 0-250 |
unsigned char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust |
unsigned char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen |
unsigned char UfoAusrichtung; // X oder + Formation |
unsigned char I_Faktor; // Wert : 0-250 |
unsigned char UserParam1; // Wert : 0-250 |
unsigned char UserParam2; // Wert : 0-250 |
unsigned char UserParam3; // Wert : 0-250 |
unsigned char UserParam4; // Wert : 0-250 |
unsigned char ServoNickControl; // Wert : 0-250 // Stellung des Servos |
unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
unsigned char ServoNickMin; // Wert : 0-250 // Anschlag |
unsigned char ServoNickMax; // Wert : 0-250 // Anschlag |
unsigned char ServoNickRefresh; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
unsigned char ServoNickCompInvert; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
unsigned char Reserved[7]; |
char Name[12]; |
}; |
extern struct mk_param_struct EE_Parameter; |
extern unsigned char Parameter_Luftdruck_D; |
extern unsigned char Parameter_MaxHoehe; |
extern unsigned char Parameter_Hoehe_P; |
extern unsigned char Parameter_Hoehe_ACC_Wirkung; |
extern unsigned char Parameter_KompassWirkung; |
extern unsigned char Parameter_Gyro_P; |
extern unsigned char Parameter_Gyro_I; |
extern unsigned char Parameter_Gier_P; |
extern unsigned char Parameter_ServoNickControl; |
#endif //_FC_H |
/branches/martosi/flight-ctrl_mega644_v0_60.aws |
---|
0,0 → 1,0 |
<AVRWorkspace><IOSettings><CurrentRegisters/></IOSettings><part name="ATMEGA644"/><Files><File00000 Name="C:\hubi\ufo\mickrokopter\gps codes\V0.60_GPS_BETA_martosi\main.c" Position="336 71 1048 624" LineCol="198 0" State="Maximized"/></Files></AVRWorkspace> |
/branches/martosi/gps.h |
---|
0,0 → 1,73 |
//------------------------------------------------------------------------------ |
// _ _ |
// | | | | |
// ___ _ __ ___ ___ _ _ ___| |_ ___ ___| |__ |
// / _ \ '_ ` _ \/ __| | | / __| __/ _ \/ __| '_ \. |
// | __/ | | | | \__ \ |_| \__ \ || __/ (__| | | | |
// \___|_| |_| |_|___/\__, |___/\__\___|\___|_| |_| |
// __/ | |
// |___/ Engineering |
// |
// Filename: gps.h |
// Description: |
// |
// Author: Martin Steppuhn |
// History: 15.06.2007 Initial version |
// |
//------------------------------------------------------------------------------ |
#ifndef GPS_H |
#define GPS_H |
/**** Includes ****************************************************************/ |
/**** Preprocessing directives (#define) **************************************/ |
#define LED_GPS_FIX_TOGGLE PORTC ^= (1<<2) |
#define LED_GPS_FIX_ON PORTC |= (1<<2) |
#define LED_GPS_FIX_OFF PORTC &= ~(1<<2) |
#define LED_GPS_DATA_TOGGLE PORTC ^= (1<<3) |
#define LED_GPS_DATA_ON PORTC |= (1<<3) |
#define LED_GPS_DATA_OFF PORTC &= ~(1<<3) |
/**** Type definitions (typedef) **********************************************/ |
/**** Global constants (extern) ***********************************************/ |
/**** Global variables (extern) ***********************************************/ |
extern signed int GPS_Nick; |
extern signed int GPS_Roll; |
extern void GPS_Neutral(void); |
extern void GPS_Main(void); |
/**** Global function prototypes **********************************************/ |
#endif |
/branches/martosi/gps_ubx.c |
---|
0,0 → 1,137 |
//------------------------------------------------------------------------------ |
// _ _ |
// | | | | |
// ___ _ __ ___ ___ _ _ ___| |_ ___ ___| |__ |
// / _ \ '_ ` _ \/ __| | | / __| __/ _ \/ __| '_ \. |
// | __/ | | | | \__ \ |_| \__ \ || __/ (__| | | | |
// \___|_| |_| |_|___/\__, |___/\__\___|\___|_| |_| |
// __/ | |
// |___/ Engineering |
// |
// Filename: gps_ubx.c |
// Description: |
// |
// Author: Martin Steppuhn |
// History: 08.06.2007 Initial version |
// |
//------------------------------------------------------------------------------ |
/**** Includes ****************************************************************/ |
#include "std_c.h" |
#include "gps_ubx.h" |
/**** Preprocessing directives (#define) **************************************/ |
/**** Type definitions (typedef) **********************************************/ |
/**** Global constants ********************************************************/ |
/**** Global variables ********************************************************/ |
struct ubx_struct ubx; |
struct nav_sol_struct nav_sol; |
/**** Local constants ********************************************************/ |
/**** Local variables *********************************************************/ |
uint8 ubx_buf[256]; |
uint8 ubx_buf_len; |
/**** Local function prototypes ***********************************************/ |
//------------------------------------------------------------------------------ |
// Name: ubx_push |
// Function: |
// |
// Parameter: |
// Return: |
//------------------------------------------------------------------------------ |
void ubx_push(uint8 c) |
{ |
uint8 length; |
uint8 check_a,check_b; |
uint16 i; |
ubx_buf[ubx_buf_len] = c; |
ubx_buf_len++; |
if(ubx_buf_len == 1) { if(ubx_buf[0] != 0xB5) ubx_buf_len = 0; } // Sync |
else if(ubx_buf_len == 2) { if(ubx_buf[1] != 0x62) ubx_buf_len = 0; } // Sync |
else if(ubx_buf_len >= 6) |
{ |
length = (((uint16)ubx_buf[5]) << 8)+ ubx_buf[4]; // length |
if(ubx_buf_len >= (length+8)) // frame complete |
{ |
//=== Calculate checksum === |
check_a = 0; |
check_b = 0; |
for(i=2;i<(ubx_buf_len-2);i++) |
{ |
check_a = check_a + ubx_buf[i]; |
check_b = check_b + check_a; |
} |
//=== Test checksum === |
if((check_a == ubx_buf[ubx_buf_len-2]) && (check_b == ubx_buf[ubx_buf_len-1])) |
{ |
ubx.msg_class = ubx_buf[2]; |
ubx.msg_id = ubx_buf[3]; |
ubx.length = length; |
for(i=0;i<ubx.length;i++) ubx.data[i] = ubx_buf[i+6]; // copy data |
ubx.update = true; |
} |
ubx_buf_len = 0; |
} |
} |
} |
//------------------------------------------------------------------------------ |
// Name: ubx_decode |
// Function: |
// |
// Parameter: |
// Return: |
//------------------------------------------------------------------------------ |
void ubx_decode(struct ubx_struct *ubx) |
{ |
if((ubx->msg_class == 0x01) && (ubx->msg_id == 0x06)) // NAV-SOL |
{ |
nav_sol.itow = *(uint32*)(&ubx->data[0]); // ms |
nav_sol.gpsfix = ubx->data[10]; |
nav_sol.ecef_x = *(int32*)(&ubx->data[12]); // cm |
nav_sol.ecef_y = *(int32*)(&ubx->data[16]); // cm |
nav_sol.ecef_z = *(int32*)(&ubx->data[20]); // cm |
nav_sol.pacc = *(int32*)(&ubx->data[24]); // cm |
nav_sol.ecefvx = *(uint32*)(&ubx->data[28]); // cm/s |
nav_sol.ecefvy = *(uint32*)(&ubx->data[32]); // cm/s |
nav_sol.ecefvz = *(uint32*)(&ubx->data[36]); // cm/s |
nav_sol.sacc = *(uint32*)(&ubx->data[40]); // cm/s |
nav_sol.pdop = (uint16)ubx->data[44]; |
nav_sol.numsv = ubx->data[47]; |
nav_sol.update = true; |
} |
} |
//------------------------------------------------------------------------------ |
// Name: show_ubx |
// Function: |
// |
// Parameter: |
// Return: |
//------------------------------------------------------------------------------ |
void show_ubx(struct ubx_struct *ubx) |
{ |
uint8 i; |
printf("MsgClass=%u ",ubx->msg_class); |
printf("MsgId=%u ",ubx->msg_id); |
printf("Length=%u ",ubx->length); |
printf("Data= "); |
for(i=0;i<ubx->length;i++) printf("%02X ",ubx->data[i]); |
printf("\r\n"); |
} |
/branches/martosi/gps_ubx.h |
---|
0,0 → 1,71 |
//------------------------------------------------------------------------------ |
// _ _ |
// | | | | |
// ___ _ __ ___ ___ _ _ ___| |_ ___ ___| |__ |
// / _ \ '_ ` _ \/ __| | | / __| __/ _ \/ __| '_ \. |
// | __/ | | | | \__ \ |_| \__ \ || __/ (__| | | | |
// \___|_| |_| |_|___/\__, |___/\__\___|\___|_| |_| |
// __/ | |
// |___/ Engineering |
// |
// Filename: gps_ubx.h |
// Description: |
// |
// Author: Martin Steppuhn |
// History: 08.06.2007 Initial version |
// |
//------------------------------------------------------------------------------ |
#ifndef GPS_UBX_H |
#define GPS_UBX_H |
/**** Includes ****************************************************************/ |
#include "std_c.h" |
/**** Preprocessing directives (#define) **************************************/ |
/**** Type definitions (typedef) **********************************************/ |
typedef struct ubx_struct |
{ |
bool update; |
uint8 msg_class; |
uint8 msg_id; |
uint8 length; |
uint8 data[256]; |
}; |
typedef struct nav_sol_struct |
{ |
uint8 update; |
uint32 itow; // Time |
uint8 gpsfix; // GPSfix |
int32 ecef_x; // cm ECEF X coordinate |
int32 ecef_y; // cm ECEF Y coordinate |
int32 ecef_z; // cm ECEF Z coordinate |
uint32 pacc; // cm 3D Position Accuracy Estimate |
int32 ecefvx; // cm/s ECEF X velocity |
int32 ecefvy; // cm/s ECEF Y velocity |
int32 ecefvz; // cm/s ECEF Z velocity |
uint32 sacc; // cm/s Speed Accuracy Estimate |
uint16 pdop; // Position DOP |
uint8 numsv; // Number of SVs used in Nav Solution |
}; |
/**** Global constants (extern) ***********************************************/ |
/**** Global variables (extern) ***********************************************/ |
struct ubx_struct ubx; |
struct nav_sol_struct nav_sol; |
/**** Global function prototypes **********************************************/ |
extern void ubx_push(uint8 c); |
extern void ubx_decode(struct ubx_struct *ubx); |
#endif |
/branches/martosi/main.c |
---|
0,0 → 1,221 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + Nur für den privaten Gebrauch |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten und nicht-kommerziellen Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt und genannt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned char EEPromArray[E2END+1] EEMEM; |
// -- Parametersatz aus EEPROM lesen --- |
// number [0..5] |
void ReadParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if (number > 5) number = 5; |
eeprom_read_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length); |
} |
// -- Parametersatz ins EEPROM schreiben --- |
// number [0..5] |
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if (number > 5) number = 5; |
eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], number); // diesen Parametersatz als aktuell merken |
} |
unsigned char GetActiveParamSetNumber(void) |
{ |
return(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET])); |
} |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
unsigned int timer; |
unsigned int timer2 = 0; |
DDRC = 0x01; // SCL |
PORTC = 0xff; // Pullup SDA |
DDRB = 0x1B; // LEDs und Druckoffset |
PORTB = 0x01; // LED_Rot |
DDRD = 0x3E; // Speaker & TXD & J3 J4 J5 |
DDRD |=0x80; // J7 |
PORTD = 0xF7; // LED |
MCUSR &=~(1<<WDRF); |
WDTCSR |= (1<<WDCE)|(1<<WDE); |
WDTCSR = 0; |
beeptime = 2000; |
StickGier = 0; PPM_in[K_GAS] = 0;StickRoll = 0; StickNick = 0; |
ROT_OFF; |
Timer_Init(); |
UART_Init(); |
rc_sum_init(); |
ADC_Init(); |
i2c_init(); |
sei(); |
VersionInfo.Hauptversion = VERSION_HAUPTVERSION; |
VersionInfo.Nebenversion = VERSION_NEBENVERSION; |
VersionInfo.PCKompatibel = VERSION_KOMPATIBEL; |
printf("\n\rFlightControl V%d.%d ", VERSION_HAUPTVERSION, VERSION_NEBENVERSION); |
printf("\n\r=============================="); |
GRN_ON; |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != 59) // seit V 0.60 |
{ |
printf("\n\rInit. EEPROM: Generiere Default-Parameter..."); |
DefaultKonstanten1(); |
for (unsigned char i=0;i<6;i++) |
{ |
if(i==2) DefaultKonstanten2(); |
WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
} |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], 1); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], 59); |
} |
ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
printf("\n\rBenutze Parametersatz %d", GetActiveParamSetNumber()); |
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
printf("\n\rAbgleich Luftdrucksensor.."); |
timer = SetDelay(2500); |
SucheLuftruckOffset(); |
while (!CheckDelay(timer)); |
printf("OK\n\r"); |
} |
SetNeutral(); |
ROT_OFF; |
beeptime = 2000; |
DebugIn.Analog[1] = 1000; |
DebugIn.Digital[0] = 0x55; |
printf("\n\rSteuerung: "); |
if (EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) printf("HeadingHold"); |
else printf("Neutral"); |
printf("\n\n\r"); |
LcdClear(); |
while (1) |
{ |
if (UpdateMotor) // ReglerIntervall |
{ |
UpdateMotor=0; |
MotorRegler(); |
SendMotorData(); |
ROT_OFF; |
if(PcZugriff) PcZugriff--; |
if(SenderOkay) SenderOkay--; |
if (UBat < EE_Parameter.UnterspannungsWarnung) |
{ |
beeptime = 2000; |
} |
if(!Timeout) |
{ |
i2c_init(); |
} |
else |
{ |
ROT_OFF; |
} |
} |
if(EE_Parameter.GlobalConfig & CFG_GPS_AKTIV) |
{ |
GPS_Main(); |
} |
else |
{ |
GPS_Nick = 0; |
GPS_Roll = 0; |
} |
if(SIO_DEBUG) |
{ |
DatenUebertragung(); |
BearbeiteRxDaten(); |
} |
else BearbeiteRxDaten(); |
if(CheckDelay(timer2)) |
{ |
if(MotorenEin) PORTC ^= 0x10; else PORTC &= ~0x10; |
timer = SetDelay(500); |
} |
} |
return (1); |
} |
/branches/martosi/main.h |
---|
0,0 → 1,93 |
#ifndef _MAIN_H |
#define _MAIN_H |
//Hier die Quarz Frequenz einstellen |
#if defined (__AVR_ATmega32__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
#endif |
#if defined (__AVR_ATmega644__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
//#define SYSCLK 16000000L //Quarz Frequenz in Hz |
#endif |
// neue Hardware |
#define ROT_OFF PORTB &=~0x01 |
#define ROT_ON PORTB |= 0x01 |
#define ROT_FLASH PORTB ^= 0x01 |
#define GRN_OFF PORTB &=~0x02 |
#define GRN_ON PORTB |= 0x02 |
#define GRN_FLASH PORTD ^= 0x02 |
//#ifndef F_CPU |
//#error ################## F_CPU nicht definiert oder ungültig ############# |
//#endif |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//#define ANZ_MITTELWERT 4 |
#define EEPROM_ADR_VALID 1 |
#define EEPROM_ADR_ACTIVE_SET 2 |
#define EEPROM_ADR_PARAM_BEGIN 100 |
#define CFG_HOEHENREGELUNG 0x01 |
#define CFG_HOEHEN_SCHALTER 0x02 |
#define CFG_HEADING_HOLD 0x04 |
#define CFG_KOMPASS_AKTIV 0x08 |
#define CFG_KOMPASS_FIX 0x10 |
#define CFG_GPS_AKTIV 0x20 |
//#define SYSCLK |
//extern unsigned long SYSCLK; |
extern volatile int i_Nick[20],i_Roll[20],DiffNick,DiffRoll; |
extern volatile unsigned char SenderOkay; |
extern unsigned char CosinusNickWinkel, CosinusRollWinkel; |
extern void ReadParameterSet (unsigned char number, unsigned char *buffer, unsigned char length); |
extern void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length); |
extern unsigned char GetActiveParamSetNumber(void); |
extern unsigned char EEPromArray[]; |
#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 "gps_ubx.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/martosi/makefile |
---|
0,0 → 1,391 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega644 |
F_CPU = 20000000 |
#------------------------------------------------------------------- |
HAUPT_VERSION = 0 |
NEBEN_VERSION = 60 |
VERSION_KOMPATIBEL = 4 # PC-Kompatibilität |
#------------------------------------------------------------------- |
ifeq ($(MCU), atmega32) |
# FUSE_SETTINGS= -u -U lfuse:w:0xff:m -U hfuse:w:0xcf:m |
HEX_NAME = MEGA32 |
endif |
ifeq ($(MCU), atmega644) |
FUSE_SETTINGS = -u -U lfuse:w:0xff:m -U hfuse:w:0xdf:m |
#FUSE_SETTINGS = -U lfuse:w:0xff:m -U hfuse:w:0xdf:m |
# -u bei neuen Controllern wieder einspielen |
HEX_NAME = MEGA644 |
endif |
ifeq ($(F_CPU), 16000000) |
QUARZ = 16MHZ |
endif |
ifeq ($(F_CPU), 20000000) |
QUARZ = 20MHZ |
endif |
# Output format. (can be srec, ihex, binary) |
FORMAT = ihex |
# Target file name (without extension). |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION) |
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
OPT = s |
########################################################################################################## |
# List C source files here. (C dependencies are automatically generated.) |
SRC = main.c uart.c printf_P.c timer0.c analog.c menu.c |
SRC += twimaster.c rc.c fc.c GPS.c gps_ubx.c |
########################################################################################################## |
# List Assembler source files here. |
# Make them always end in a capital .S. Files ending in a lowercase .s |
# will not be considered source files but generated files (assembler |
# output from the compiler), and will be deleted upon "make clean"! |
# Even though the DOS/Win* filesystem matches both .s and .S the same, |
# it will preserve the spelling of the filenames, and gcc itself does |
# care about how the name is spelled on its command-line. |
ASRC = |
# List any extra directories to look for include files here. |
# Each directory must be seperated by a space. |
EXTRAINCDIRS = |
# Optional compiler flags. |
# -g: generate debugging information (for GDB, or for COFF conversion) |
# -O*: optimization level |
# -f...: tuning, see gcc manual and avr-libc documentation |
# -Wall...: warning level |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create assembler listing |
CFLAGS = -O$(OPT) \ |
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \ |
-Wall -Wstrict-prototypes \ |
-Wa,-adhlns=$(<:.c=.lst) \ |
$(patsubst %,-I%,$(EXTRAINCDIRS)) |
# Set a "language standard" compiler flag. |
# Unremark just one line below to set the language standard to use. |
# gnu99 = C99 + GNU extensions. See GCC manual for more information. |
#CFLAGS += -std=c89 |
#CFLAGS += -std=gnu89 |
#CFLAGS += -std=c99 |
CFLAGS += -std=gnu99 |
CFLAGS += -DVERSION_HAUPTVERSION=$(HAUPT_VERSION) -DVERSION_NEBENVERSION=$(NEBEN_VERSION) -DVERSION_KOMPATIBEL=$(VERSION_KOMPATIBEL) |
# Optional assembler flags. |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create listing |
# -gstabs: have the assembler create line number information; note that |
# for use in COFF files, additional information about filenames |
# and function names needs to be present in the assembler source |
# files -- see avr-libc docs [FIXME: not yet described there] |
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs |
# Optional linker flags. |
# -Wl,...: tell GCC to pass this to linker. |
# -Map: create map file |
# --cref: add cross reference to map file |
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref |
# Additional libraries |
# Minimalistic printf version |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min |
# Floating point printf version (requires -lm below) |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt |
# -lm = math library |
LDFLAGS += -lm |
##LDFLAGS += -T./linkerfile/avr5.x |
# Programming support using avrdude. Settings and variables. |
# Programming hardware: alf avr910 avrisp bascom bsd |
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 |
# |
# Type: avrdude -c ? |
# to get a full listing. |
# |
#AVRDUDE_PROGRAMMER = stk200 |
AVRDUDE_PROGRAMMER = dt006 |
#AVRDUDE_PROGRAMMER = ponyser |
#falls Ponyser ausgewählt wird, muss sich unsere avrdude-Configdatei im Bin-Verzeichnis des Compilers befinden |
#AVRDUDE_PORT = com1 # programmer connected to serial device |
AVRDUDE_PORT = lpt1 # programmer connected to parallel port |
#AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex |
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex $(FUSE_SETTINGS) |
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep |
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) |
# Uncomment the following if you want avrdude's erase cycle counter. |
# Note that this counter needs to be initialized first using -Yn, |
# see avrdude manual. |
#AVRDUDE_ERASE += -y |
# Uncomment the following if you do /not/ wish a verification to be |
# performed after programming the device. |
AVRDUDE_FLAGS += -V |
# Increase verbosity level. Please use this when submitting bug |
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> |
# to submit bug reports. |
#AVRDUDE_FLAGS += -v -v |
# --------------------------------------------------------------------------- |
# Define directories, if needed. |
DIRAVR = c:/winavr |
DIRAVRBIN = $(DIRAVR)/bin |
DIRAVRUTILS = $(DIRAVR)/utils/bin |
DIRINC = . |
DIRLIB = $(DIRAVR)/avr/lib |
# Define programs and commands. |
SHELL = sh |
CC = avr-gcc |
OBJCOPY = avr-objcopy |
OBJDUMP = avr-objdump |
SIZE = avr-size |
# Programming support using avrdude. |
AVRDUDE = avrdude |
REMOVE = rm -f |
COPY = cp |
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
ELFSIZE = $(SIZE) -A $(TARGET).elf |
# Define Messages |
# English |
MSG_ERRORS_NONE = Errors: none |
MSG_BEGIN = -------- begin -------- |
MSG_END = -------- end -------- |
MSG_SIZE_BEFORE = Size before: |
MSG_SIZE_AFTER = Size after: |
MSG_COFF = Converting to AVR COFF: |
MSG_EXTENDED_COFF = Converting to AVR Extended COFF: |
MSG_FLASH = Creating load file for Flash: |
MSG_EEPROM = Creating load file for EEPROM: |
MSG_EXTENDED_LISTING = Creating Extended Listing: |
MSG_SYMBOL_TABLE = Creating Symbol Table: |
MSG_LINKING = Linking: |
MSG_COMPILING = Compiling: |
MSG_ASSEMBLING = Assembling: |
MSG_CLEANING = Cleaning project: |
# Define all object files. |
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) |
# Define all listing files. |
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) |
# Combine all necessary flags and optional flags. |
# Add target processor to flags. |
#ALL_CFLAGS = -mmcu=$(MCU) -DF_CPU=$(F_CPU) -I. $(CFLAGS) |
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) |
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) |
# Default target. |
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
$(TARGET).lss $(TARGET).sym sizeafter finished end |
# Eye candy. |
# AVR Studio 3.x does not check make's exit code but relies on |
# the following magic strings to be generated by the compile job. |
begin: |
@echo |
@echo $(MSG_BEGIN) |
finished: |
@echo $(MSG_ERRORS_NONE) |
end: |
@echo $(MSG_END) |
@echo |
# Display size of file. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi |
# Display compiler version information. |
gccversion : |
@$(CC) --version |
# Convert ELF to COFF for use in debugging / simulating in |
# AVR Studio or VMLAB. |
COFFCONVERT=$(OBJCOPY) --debugging \ |
--change-section-address .data-0x800000 \ |
--change-section-address .bss-0x800000 \ |
--change-section-address .noinit-0x800000 \ |
--change-section-address .eeprom-0x810000 |
coff: $(TARGET).elf |
@echo |
@echo $(MSG_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof |
extcoff: $(TARGET).elf |
@echo |
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof |
# Program the device. |
program: $(TARGET).hex $(TARGET).eep |
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
# Create final output files (.hex, .eep) from ELF output file. |
%.hex: %.elf |
@echo |
@echo $(MSG_FLASH) $@ |
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ |
%.eep: %.elf |
@echo |
@echo $(MSG_EEPROM) $@ |
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ |
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@ |
# Create extended listing file from ELF output file. |
%.lss: %.elf |
@echo |
@echo $(MSG_EXTENDED_LISTING) $@ |
$(OBJDUMP) -h -S $< > $@ |
# Create a symbol table from ELF output file. |
%.sym: %.elf |
@echo |
@echo $(MSG_SYMBOL_TABLE) $@ |
avr-nm -n $< > $@ |
# Link: create ELF output file from object files. |
.SECONDARY : $(TARGET).elf |
.PRECIOUS : $(OBJ) |
%.elf: $(OBJ) |
@echo |
@echo $(MSG_LINKING) $@ |
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) |
# Compile: create object files from C source files. |
%.o : %.c |
@echo |
@echo $(MSG_COMPILING) $< |
$(CC) -c $(ALL_CFLAGS) $< -o $@ |
# Compile: create assembler files from C source files. |
%.s : %.c |
$(CC) -S $(ALL_CFLAGS) $< -o $@ |
# Assemble: create object files from assembler source files. |
%.o : %.S |
@echo |
@echo $(MSG_ASSEMBLING) $< |
$(CC) -c $(ALL_ASFLAGS) $< -o $@ |
# Target: clean project. |
clean: begin clean_list finished end |
clean_list : |
@echo |
@echo $(MSG_CLEANING) |
# $(REMOVE) $(TARGET).hex |
$(REMOVE) $(TARGET).eep |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).cof |
$(REMOVE) $(TARGET).elf |
$(REMOVE) $(TARGET).map |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).a90 |
$(REMOVE) $(TARGET).sym |
$(REMOVE) $(TARGET).lnk |
$(REMOVE) $(TARGET).lss |
$(REMOVE) $(OBJ) |
$(REMOVE) $(LST) |
$(REMOVE) $(SRC:.c=.s) |
$(REMOVE) $(SRC:.c=.d) |
# Automatically generate C source code dependencies. |
# (Code originally taken from the GNU make user manual and modified |
# (See README.txt Credits).) |
# |
# Note that this will work with sh (bash) and sed that is shipped with WinAVR |
# (see the SHELL variable defined above). |
# This may not work with other shells or other seds. |
# |
%.d: %.c |
set -e; $(CC) -MM $(ALL_CFLAGS) $< \ |
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ |
[ -s $@ ] || rm -f $@ |
# Remove the '-' if you want to see the dependency files generated. |
-include $(SRC:.c=.d) |
# Listing of phony targets. |
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \ |
clean clean_list program |
/branches/martosi/menu.c |
---|
0,0 → 1,125 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned int TestInt = 0; |
#define ARRAYGROESSE 10 |
unsigned char Array[ARRAYGROESSE] = {1,2,3,4,5,6,7,8,9,10}; |
char DisplayBuff[80] = "Hallo Welt"; |
unsigned char DispPtr = 0; |
unsigned char RemoteTasten = 0; |
#define KEY1 0x01 |
#define KEY2 0x02 |
#define KEY3 0x04 |
#define KEY4 0x08 |
#define KEY5 0x10 |
void LcdClear(void) |
{ |
unsigned char i; |
for(i=0;i<80;i++) DisplayBuff[i] = ' '; |
} |
void Menu(void) |
{ |
static unsigned char MaxMenue = 11,MenuePunkt=0; |
if(RemoteTasten & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue; LcdClear(); } |
if(RemoteTasten & KEY2) { MenuePunkt++; LcdClear(); } |
if((RemoteTasten & KEY1) && (RemoteTasten & KEY2)) MenuePunkt = 0; |
LCD_printfxy(17,0,"[%i]",MenuePunkt); |
switch(MenuePunkt) |
{ |
case 0: |
LCD_printfxy(0,0,"++ MikroKopter ++"); |
LCD_printfxy(0,1,"V%d.%d",VERSION_HAUPTVERSION, VERSION_NEBENVERSION); |
LCD_printfxy(0,2,"Setting: %d ",GetActiveParamSetNumber()); |
LCD_printfxy(0,3,"(c) Holger Buss"); |
// if(RemoteTasten & KEY3) TestInt--; |
// if(RemoteTasten & KEY4) TestInt++; |
break; |
case 1: |
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
LCD_printfxy(0,0,"Hoehe: %5i",HoehenWert); |
LCD_printfxy(0,1,"SollHoehe: %5i",SollHoehe); |
LCD_printfxy(0,2,"Luftdruck: %5i",MessLuftdruck); |
LCD_printfxy(0,3,"Off : %5i",DruckOffsetSetting); |
} |
else |
{ |
LCD_printfxy(0,1,"Keine "); |
LCD_printfxy(0,2,"Höhenregelung"); |
} |
break; |
case 2: |
LCD_printfxy(0,0,"akt. Lage"); |
LCD_printfxy(0,1,"Nick: %5i",IntegralNick/1024); |
LCD_printfxy(0,2,"Roll: %5i",IntegralRoll/1024); |
LCD_printfxy(0,3,"Kompass: %5i",KompassValue); |
break; |
case 3: |
LCD_printfxy(0,0,"K1:%4i K2:%4i ",PPM_in[1],PPM_in[2]); |
LCD_printfxy(0,1,"K3:%4i K4:%4i ",PPM_in[3],PPM_in[4]); |
LCD_printfxy(0,2,"K5:%4i K6:%4i ",PPM_in[5],PPM_in[6]); |
LCD_printfxy(0,3,"K7:%4i Kanäle ",PPM_in[7]); |
break; |
case 4: |
LCD_printfxy(0,0,"Ni:%4i Ro:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_NICK]],PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]); |
LCD_printfxy(0,1,"Gs:%4i Gi:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_GAS]],PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]); |
LCD_printfxy(0,2,"P1:%4i P2:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]],PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]]); |
LCD_printfxy(0,3,"P3:%4i Kanäle ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]]); |
break; |
case 5: |
LCD_printfxy(0,0,"Gyro - Sensor"); |
LCD_printfxy(0,1,"Nick %4i (%3i)",AccumulateNick / MessanzahlNick, AdNeutralNick); |
LCD_printfxy(0,2,"Roll %4i (%3i)",AccumulateRoll / MessanzahlRoll, AdNeutralRoll); |
LCD_printfxy(0,3,"Gier %4i (%3i)",AccumulateGier / MessanzahlGier, AdNeutralGier); |
break; |
case 6: |
LCD_printfxy(0,0,"ACC - Sensor"); |
LCD_printfxy(0,1,"Nick %4i (%3i)",accumulate_AccNick / messanzahl_AccNick,NeutralAccX); |
LCD_printfxy(0,2,"Roll %4i (%3i)",accumulate_AccRoll / messanzahl_AccRoll,NeutralAccY); |
LCD_printfxy(0,3,"Hoch %4i (%3i)",Aktuell_az/*accumulate_AccHoch / messanzahl_AccHoch*/,(int)NeutralAccZ); |
break; |
case 7: |
LCD_printfxy(0,1,"Spannung: %5i",UBat); |
LCD_printfxy(0,2,"Empf.Pegel:%5i",SenderOkay); |
break; |
case 8: |
LCD_printfxy(0,0,"Kompass "); |
LCD_printfxy(0,1,"Richtung: %5i",KompassRichtung); |
LCD_printfxy(0,2,"Messwert: %5i",KompassValue); |
LCD_printfxy(0,3,"Start: %5i",KompassStartwert); |
break; |
case 9: |
LCD_printfxy(0,0,"Poti1: %3i",Poti1); |
LCD_printfxy(0,1,"Poti2: %3i",Poti2); |
LCD_printfxy(0,2,"Poti3: %3i",Poti3); |
LCD_printfxy(0,3,"Poti4: %3i",Poti4); |
break; |
case 10: |
LCD_printfxy(0,0,"Servo " ); |
LCD_printfxy(0,1,"Setpoint %3i",Parameter_ServoNickControl); |
LCD_printfxy(0,2,"Stellung: %3i",ServoValue); |
LCD_printfxy(0,3,"Range:%3i-%3i",EE_Parameter.ServoNickMin,EE_Parameter.ServoNickMax); |
break; |
case 11: |
LCD_printfxy(0,0,"GPS " ); |
LCD_printfxy(0,1,"GPS_Nick %3i",GPS_Nick); |
LCD_printfxy(0,2,"GPS_Roll: %3i",GPS_Roll); |
break; |
default: MaxMenue = MenuePunkt - 1; |
MenuePunkt = 0; |
break; |
} |
RemoteTasten = 0; |
} |
/branches/martosi/menu.h |
---|
0,0 → 1,5 |
extern void Menu(void); |
extern char DisplayBuff[80]; |
extern unsigned char DispPtr; |
unsigned char RemoteTasten; |
/branches/martosi/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/martosi/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/martosi/printf_P.h |
---|
0,0 → 1,19 |
#ifndef _PRINTF_P_H_ |
#define _PRINTF_P_H_ |
#include <avr/pgmspace.h> |
#define OUT_V24 0 |
#define OUT_LCD 1 |
extern void _printf_P (char, char const *fmt0, ...); |
extern char PrintZiel; |
#define printf_P(format, args...) _printf_P(OUT_V24,format , ## args) |
#define printf(format, args...) _printf_P(OUT_V24,PSTR(format) , ## args) |
#define LCD_printfxy(x,y,format, args...) { DispPtr = y * 20 + x; _printf_P(OUT_LCD,PSTR(format) , ## args);} |
#define LCD_printf(format, args...) { _printf_P(OUT_LCD,PSTR(format) , ## args);} |
#endif |
/branches/martosi/rc.c |
---|
0,0 → 1,85 |
/*####################################################################################### |
Decodieren eines RC Summen Signals |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "rc.h" |
#include "main.h" |
volatile int PPM_in[11]; |
volatile int PPM_diff[11]; // das diffenzierte Stick-Signal |
volatile unsigned char NewPpmData = 1; |
//############################################################################ |
//zum decodieren des PPM-Signals wird Timer1 mit seiner Input |
//Capture Funktion benutzt: |
void rc_sum_init (void) |
//############################################################################ |
{ |
TCCR1B=(1<<CS11)|(1<<CS10)|(1<<ICES1)|(1<<ICNC1);//|(1 << WGM12); //timer1 prescale 64 |
// PWM |
//TCCR1A = (1 << COM1B1) | (1 << WGM11) | (1 << WGM10); |
//TCCR1B |= (1 << WGM12); |
//OCR1B = 55; |
TIMSK1 |= _BV(ICIE1); |
AdNeutralGier = 0; |
AdNeutralRoll = 0; |
AdNeutralNick = 0; |
return; |
} |
//############################################################################ |
//Diese Routine startet und inizialisiert den Timer für RC |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int AltICR=0; |
signed int signal = 0; |
static int index; |
signal = (unsigned int) ICR1 - AltICR; |
AltICR = ICR1; |
//Syncronisationspause? |
if ((signal > 1500) && (signal < 8000)) |
{ |
index = 1; |
NewPpmData = 0; // Null bedeutet: Neue Daten |
// OCR2A = Poti2/2 + 80; |
} |
else |
{ |
if(index < 10) |
{ |
if((signal > 250) && (signal < 687)) |
{ |
signal -= 466; |
// Stabiles Signal |
if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10;} |
signal = (3 * (PPM_in[index]) + signal) / 4; |
//373 entspricht ca. 1.5ms also Mittelstellung |
PPM_diff[index] = signal - PPM_in[index]; |
PPM_in[index] = signal; |
} |
index++; |
/* if(index == 5) PORTD |= 0x20; else PORTD &= ~0x20; // Servosignal an J3 anlegen |
if(index == 6) PORTD |= 0x10; else PORTD &= ~0x10; // Servosignal an J4 anlegen |
if(index == 7) PORTD |= 0x08; else PORTD &= ~0x08; // Servosignal an J5 anlegen */ |
} |
} |
} |
/branches/martosi/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/martosi/std_c.h |
---|
0,0 → 1,49 |
//*---------------------------------------------------------------------------- |
//* ATMEL Microcontroller Software Support - ROUSSET - |
//*---------------------------------------------------------------------------- |
//* The software is delivered "AS IS" without warranty or condition of any |
//* kind, either express, implied or statutory. This includes without |
//* limitation any warranty or condition with respect to merchantability or |
//* fitness for any particular purpose, or against the infringements of |
//* intellectual property rights of others. |
//*---------------------------------------------------------------------------- |
//* File Name : std_c.h |
//* Object : Standard C Header File |
//* |
//* 1.0 01/04/00 JCZ : Creation |
//*---------------------------------------------------------------------------- |
#ifndef std_c_h |
#define std_c_h |
/*----------------*/ |
/* Standard types */ |
/*----------------*/ |
typedef unsigned char uint8; |
typedef unsigned short uint16; |
typedef unsigned long uint32; |
typedef unsigned char bool; |
typedef signed char int8; |
typedef signed short int16; |
typedef signed long int32; |
/* 16-bit Flash Data type */ |
typedef volatile unsigned short flash_word ; |
/* AT91 Register type */ |
typedef volatile unsigned int at91_reg ; |
/*----------------*/ |
/* Boolean values */ |
/*----------------*/ |
#define true 1 |
#define false 0 |
#endif /* std_c_h */ |
/branches/martosi/timer0.c |
---|
0,0 → 1,139 |
#include "main.h" |
volatile unsigned int CountMilliseconds = 0; |
volatile static unsigned int tim_main; |
volatile unsigned char UpdateMotor = 0; |
volatile unsigned int cntKompass = 0; |
volatile unsigned int beeptime = 0; |
int ServoValue = 0; |
enum { |
STOP = 0, |
CK = 1, |
CK8 = 2, |
CK64 = 3, |
CK256 = 4, |
CK1024 = 5, |
T0_FALLING_EDGE = 6, |
T0_RISING_EDGE = 7 |
}; |
SIGNAL (SIG_OVERFLOW0) // 8kHz |
{ |
static unsigned char cnt_1ms = 1,cnt = 0; |
// TCNT0 -= 250;//TIMER_RELOAD_VALUE; |
if(!cnt--) |
{ |
cnt = 9; |
cnt_1ms++; |
cnt_1ms %= 2; |
if(!cnt_1ms) UpdateMotor = 1; |
CountMilliseconds++; |
if(Timeout) Timeout--; |
} |
if(beeptime > 1) |
{ |
beeptime--; |
PORTD |= (1<<2); |
} |
else |
PORTD &= ~(1<<2); |
if(EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV) |
{ |
if(PINC & 0x10) |
{ |
cntKompass++; |
} |
else |
{ |
if((cntKompass) && (cntKompass < 4000)) |
{ |
KompassValue = cntKompass; |
} |
// if(cntKompass < 10) cntKompass = 10; |
// KompassValue = (unsigned long)((unsigned long)(cntKompass-10)*720L + 1L) / 703L; |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
cntKompass = 0; |
} |
} |
} |
void Timer_Init(void) |
{ |
tim_main = SetDelay(10); |
TCCR0B = CK8; |
TCCR0A = (1<<COM0A1)|(1<<COM0B1)|3;//fast PWM |
OCR0A = 0; |
OCR0B = 120; |
TCNT0 = -TIMER_RELOAD_VALUE; // reload |
//OCR1 = 0x00; |
TCCR2A=(1<<COM2A1)|(1<<COM2A0)|3; |
TCCR2B=(0<<CS20)|(1<<CS21)|(1<<CS22); |
// TIMSK2 |= _BV(TOIE2); |
TIMSK2 |= _BV(OCIE2A); |
TIMSK0 |= _BV(TOIE0); |
OCR2A = 10; |
TCNT2 = 0; |
} |
// ----------------------------------------------------------------------- |
unsigned int SetDelay (unsigned int t) |
{ |
// TIMSK0 &= ~_BV(TOIE0); |
return(CountMilliseconds + t + 1); |
// TIMSK0 |= _BV(TOIE0); |
} |
// ----------------------------------------------------------------------- |
char CheckDelay(unsigned int t) |
{ |
// TIMSK0 &= ~_BV(TOIE0); |
return(((t - CountMilliseconds) & 0x8000) >> 9); |
// TIMSK0 |= _BV(TOIE0); |
} |
// ----------------------------------------------------------------------- |
void Delay_ms(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)); |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Servo ansteuern |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(SIG_OUTPUT_COMPARE2A) |
{ |
static unsigned char timer = 10; |
if(!timer--) |
{ |
TCCR2A=(1<<COM2A1)|(0<<COM2A0)|3; |
ServoValue = Parameter_ServoNickControl; |
if(EE_Parameter.ServoNickCompInvert & 0x01) ServoValue += ((long) EE_Parameter.ServoNickComp * (IntegralNick / 128)) / 512; |
else ServoValue -= ((long) EE_Parameter.ServoNickComp * (IntegralNick / 128)) / 512; |
if(ServoValue < EE_Parameter.ServoNickMin) ServoValue = EE_Parameter.ServoNickMin; |
else if(ServoValue > EE_Parameter.ServoNickMax) ServoValue = EE_Parameter.ServoNickMax; |
DebugOut.Analog[10] = ServoValue; |
OCR2A = ServoValue;// + 75; |
timer = EE_Parameter.ServoNickRefresh; |
} |
else |
{ |
TCCR2A =3; |
PORTD&=~0x80; |
} |
} |
/branches/martosi/timer0.h |
---|
0,0 → 1,14 |
#define TIMER_TEILER CK8 |
#define TIMER_RELOAD_VALUE 250 |
void Timer_Init(void); |
void Delay_ms(unsigned int); |
unsigned int SetDelay (unsigned int t); |
char CheckDelay (unsigned int t); |
extern volatile unsigned int CountMilliseconds; |
extern volatile unsigned char UpdateMotor; |
extern volatile unsigned int beeptime; |
extern volatile unsigned int cntKompass; |
extern int ServoValue; |
/branches/martosi/twimaster.c |
---|
0,0 → 1,131 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
unsigned char twi_state = 0; |
unsigned char motor = 0; |
unsigned char motorread = 0; |
unsigned char motor_rx[8]; |
//############################################################################ |
//Initzialisieren der I2C (TWI) Schnittstelle |
void i2c_init(void) |
//############################################################################ |
{ |
TWSR = 0; |
TWBR = ((SYSCLK/SCL_CLOCK)-16)/2; |
} |
//############################################################################ |
//Start I2C |
char i2c_start(void) |
//############################################################################ |
{ |
TWCR = (1<<TWSTA) | (1<<TWEN) | (1<<TWINT) | (1<<TWIE); |
return(0); |
} |
//############################################################################ |
//Start I2C |
void i2c_stop(void) |
//############################################################################ |
{ |
TWCR = (1<<TWEN) | (1<<TWSTO) | (1<<TWINT); |
} |
//############################################################################ |
//Start I2C |
char i2c_write_byte(char byte) |
//############################################################################ |
{ |
TWSR = 0x00; |
TWDR = byte; |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE); |
return(0); |
} |
//############################################################################ |
//Start I2C |
SIGNAL (TWI_vect) |
//############################################################################ |
{ |
switch (twi_state++) |
{ |
case 0: |
i2c_write_byte(0x52+(motor*2)); |
break; |
case 1: |
switch(motor++) |
{ |
case 0: |
i2c_write_byte(Motor_Vorne); |
break; |
case 1: |
i2c_write_byte(Motor_Hinten); |
break; |
case 2: |
i2c_write_byte(Motor_Rechts); |
break; |
case 3: |
i2c_write_byte(Motor_Links); |
break; |
} |
break; |
case 2: |
i2c_stop(); |
if (motor<4) twi_state = 0; |
else motor = 0; |
i2c_start(); |
break; |
//Liest Daten von Motor |
case 3: |
i2c_write_byte(0x53+(motorread*2)); |
break; |
case 4: |
switch(motorread) |
{ |
case 0: |
i2c_write_byte(Motor_Vorne); |
break; |
case 1: |
i2c_write_byte(Motor_Hinten); |
break; |
case 2: |
i2c_write_byte(Motor_Rechts); |
break; |
case 3: |
i2c_write_byte(Motor_Links); |
break; |
} |
break; |
case 5: //1 Byte vom Motor lesen |
motor_rx[motorread] = TWDR; |
case 6: |
switch(motorread) |
{ |
case 0: |
i2c_write_byte(Motor_Vorne); |
break; |
case 1: |
i2c_write_byte(Motor_Hinten); |
break; |
case 2: |
i2c_write_byte(Motor_Rechts); |
break; |
case 3: |
i2c_write_byte(Motor_Links); |
break; |
} |
break; |
case 7: //2 Byte vom Motor lesen |
motor_rx[motorread+4] = TWDR; |
motorread++; |
if (motorread>3) motorread=0; |
i2c_stop(); |
twi_state = 0; |
} |
} |
/branches/martosi/twimaster.h |
---|
0,0 → 1,32 |
/*############################################################################ |
############################################################################*/ |
#ifndef _I2C_MASTER_H |
#define _I2C_MASTER_H |
//############################################################################ |
// I2C Konstanten |
#define SCL_CLOCK 200000L |
#define I2C_TIMEOUT 30000 |
#define I2C_START 0x08 |
#define I2C_REPEATED_START 0x10 |
#define I2C_TX_SLA_ACK 0x18 |
#define I2C_TX_DATA_ACK 0x28 |
#define I2C_RX_SLA_ACK 0x40 |
#define I2C_RX_DATA_ACK 0x50 |
//############################################################################ |
extern unsigned char twi_state; |
extern unsigned char motor; |
extern unsigned char motorread; |
extern unsigned char motor_rx[8]; |
void i2c_init (void); // I2C initialisieren |
char i2c_start (void); // Start I2C |
void i2c_stop (void); // Stop I2C |
char i2c_write_byte (char byte); // 1 Byte schreiben |
#endif |
/branches/martosi/uart.c |
---|
0,0 → 1,331 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "uart.h" |
unsigned char DebugGetAnforderung = 0,DebugDisplayAnforderung = 0,DebugDataAnforderung = 0,GetVersionAnforderung = 0; |
unsigned volatile char SioTmp = 0; |
unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NMEABuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NeuerDatensatzEmpfangen = 0; |
unsigned volatile char NeueKoordinateEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned volatile char CntCrcError = 0; |
unsigned volatile char AnzahlEmpfangsBytes = 0; |
unsigned volatile char PC_DebugTimeout = 0; |
unsigned char PcZugriff = 100; |
unsigned char MotorTest[4] = {0,0,0,0}; |
unsigned char MeineSlaveAdresse; |
struct str_DebugOut DebugOut; |
struct str_Debug DebugIn; |
struct str_VersionInfo VersionInfo; |
int Debug_Timer; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Sende-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_TX) |
{ |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!UebertragungAbgeschlossen) |
{ |
ptr++; // die [0] wurde schon gesendet |
tmp_tx = SendeBuffer[ptr]; |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
{ |
ptr = 0; |
UebertragungAbgeschlossen = 1; |
} |
UDR = tmp_tx; |
} |
else ptr = 0; |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung, incl. CRC-Auswertung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
SioTmp = UDR; |
ubx_push(SioTmp); // push die GPS daten in die GPS routine |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
if(SioTmp == '\r' && UartState == 2) |
{ |
UartState = 0; |
crc -= RxdBuffer[buf_ptr-2]; |
crc -= RxdBuffer[buf_ptr-1]; |
crc %= 4096; |
crc1 = '=' + crc / 64; |
crc2 = '=' + crc % 64; |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; CntCrcError++;}; |
if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet |
{ |
NeuerDatensatzEmpfangen = 1; |
AnzahlEmpfangsBytes = buf_ptr; |
RxdBuffer[buf_ptr] = '\r'; |
if(/*(RxdBuffer[1] == MeineSlaveAdresse || (RxdBuffer[1] == 'a')) && */(RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando |
} |
} |
else |
switch(UartState) |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc = SioTmp; |
break; |
case 1: // Adresse auswerten |
UartState++; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
else UartState = 0; |
crc += SioTmp; |
break; |
default: |
UartState = 0; |
break; |
} |
} |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
{ |
tmpCRC += SendeBuffer[i]; |
} |
tmpCRC %= 4096; |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
SendeBuffer[i++] = '\r'; |
UebertragungAbgeschlossen = 0; |
UDR = SendeBuffer[0]; |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
SendeBuffer[pt++] = '#'; // Startzeichen |
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...) |
SendeBuffer[pt++] = cmd; // Commando |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
} |
AddCRC(pt); |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
} |
} |
// -------------------------------------------------------------------------- |
void BearbeiteRxDaten(void) |
{ |
if(!NeuerDatensatzEmpfangen) return; |
unsigned int tmp_int_arr1[1]; |
unsigned int tmp_int_arr2[2]; |
unsigned int tmp_int_arr3[3]; |
unsigned char tmp_char_arr2[2]; |
unsigned char tmp_char_arr3[3]; |
unsigned char tmp_char_arr4[4]; |
//if(!MotorenEin) |
PcZugriff = 255; |
switch(RxdBuffer[2]) |
{ |
case 'c':// Debugdaten incl. Externe IOs usw |
Decode64((unsigned char *) &DebugIn,sizeof(DebugIn),3,AnzahlEmpfangsBytes); |
/* for(unsigned char i=0; i<4;i++) |
{ |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2], DebugIn.Analog[i]); |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2 + 1], DebugIn.Analog[i] >> 8); |
}*/ |
RemoteTasten |= DebugIn.RemoteTasten; |
DebugDataAnforderung = 1; |
break; |
case 'h':// x-1 Displayzeilen |
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes); |
RemoteTasten |= tmp_char_arr2[0]; |
DebugDisplayAnforderung = 1; |
break; |
case 't':// Motortest |
Decode64((unsigned char *) &MotorTest[0],sizeof(MotorTest),3,AnzahlEmpfangsBytes); |
break; |
case 'v': // Version-Anforderung und Ausbaustufe |
GetVersionAnforderung = 1; |
break; |
case 'g':// "Get"-Anforderung für Debug-Daten |
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
DebugGetAnforderung = 1; |
break; |
case 'q':// "Get"-Anforderung für Settings |
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes); |
if(tmp_char_arr2[0] != 0xff) |
{ |
if(tmp_char_arr2[0] > 5) tmp_char_arr2[0] = 5; |
ReadParameterSet(tmp_char_arr2[0], (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
SendOutData('L' + tmp_char_arr2[0] -1,MeineSlaveAdresse,(unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE); |
} |
else |
SendOutData('L' + GetActiveParamSetNumber()-1,MeineSlaveAdresse,(unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE); |
break; |
case 'l': |
case 'm': |
case 'n': |
case 'o': |
case 'p': // Parametersatz speichern |
Decode64((unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE,3,AnzahlEmpfangsBytes); |
WriteParameterSet(RxdBuffer[2] - 'l' + 1, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], RxdBuffer[2] - 'l' + 1); // aktiven Datensatz merken |
Piep(GetActiveParamSetNumber()); |
break; |
} |
// DebugOut.AnzahlZyklen = Debug_Timer_Intervall; |
NeuerDatensatzEmpfangen = 0; |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
if (c == '\n') |
uart_putchar('\r'); |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
//Ausgabe des Zeichens |
UDR = c; |
return (0); |
} |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
//if (ProgramLocation == IN_RAM) Buffer[pos] = wert; |
// else eeprom_write_byte(&EE_Buffer[pos], wert); |
// Buffer[pos] = wert; |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); |
// TX-Interrupt Freigabe |
UCSRB |= (1<<TXCIE); |
//Teiler wird gesetzt |
UBRR=(SYSCLK / (BAUD_RATE * 8L) - 1); |
//UBRR = 33; |
//öffnet einen Kanal für printf (STDOUT) |
//fdevopen (uart_putchar, 0); |
//sbi(PORTD,4); |
Debug_Timer = SetDelay(200); |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
static char dis_zeile = 0; |
if(!UebertragungAbgeschlossen) return; |
if(DebugGetAnforderung && UebertragungAbgeschlossen) // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
{ |
SendOutData('G',MeineSlaveAdresse,(unsigned char *) &DebugIn,sizeof(DebugIn)); |
DebugGetAnforderung = 0; |
} |
if((CheckDelay(Debug_Timer) || DebugDataAnforderung) && UebertragungAbgeschlossen) |
{ |
SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut)); |
DebugDataAnforderung = 0; |
Debug_Timer = SetDelay(MIN_DEBUG_INTERVALL); |
} |
if(DebugDisplayAnforderung && UebertragungAbgeschlossen) |
{ |
Menu(); |
DebugDisplayAnforderung = 0; |
if(++dis_zeile == 4) dis_zeile = 0; |
SendOutData('0' + dis_zeile,0,&DisplayBuff[20 * dis_zeile],20); // DisplayZeile übertragen |
} |
if(GetVersionAnforderung && UebertragungAbgeschlossen) |
{ |
SendOutData('V',MeineSlaveAdresse,(unsigned char *) &VersionInfo,sizeof(VersionInfo)); |
GetVersionAnforderung = 0; |
} |
} |
/branches/martosi/uart.h |
---|
0,0 → 1,93 |
#ifndef _UART_H |
#define _UART_H |
#define MAX_SENDE_BUFF 150 |
#define MAX_EMPFANGS_BUFF 150 |
extern unsigned char DebugGetAnforderung; |
extern unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
extern unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
extern unsigned volatile char UebertragungAbgeschlossen; |
extern unsigned volatile char PC_DebugTimeout; |
extern unsigned volatile char NeueKoordinateEmpfangen; |
extern unsigned char MeineSlaveAdresse; |
extern unsigned char PcZugriff; |
extern int Debug_Timer; |
extern void UART_Init (void); |
extern int uart_putchar (char c); |
extern void boot_program_page (uint32_t page, uint8_t *buf); |
extern void DatenUebertragung(void); |
extern void DecodeNMEA(void); |
extern unsigned char MotorTest[4]; |
struct str_DebugOut |
{ |
unsigned char Digital[13]; |
unsigned int AnzahlZyklen; |
unsigned int Zeit; |
unsigned char Sekunden; |
unsigned int Analog[16]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
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/martosi/version.txt |
---|
0,0 → 1,57 |
------- |
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 |
++ martosi |
Ich habe den von mart veröffentlichen code 1 zu 1 verbaut und noch das fehlende |
und später erklärte std_c.h hinzugefügt. Das ganze ist ein avrstudio4 Projekt. |
Viel Spass damit und schaut nach Updates. |
Die Lizenz lautet alles geht nix muss ausser bestehende lizenzen beachten!! |
Das ganze ist Beerware also wer möchte darf mart und/oder mir ein Bier spendieren. |
Osiair |
/branches/matosi/Flight-Ctrl_MEGA644_V0_60.aps |
---|
0,0 → 1,0 |
<AVRStudio><MANAGEMENT><ProjectName>Flight-Ctrl_MEGA644_V0_60</ProjectName><Created>19-Aug-2007 14:38:13</Created><LastEdit>19-Aug-2007 14:51:35</LastEdit><ICON>241</ICON><ProjectType>0</ProjectType><Created>19-Aug-2007 14:38:13</Created><Version>4</Version><Build>4, 13, 0, 528</Build><ProjectTypeName>AVR GCC</ProjectTypeName></MANAGEMENT><CODE_CREATION><ObjectFile>Flight-Ctrl_MEGA644_V0_60.elf</ObjectFile><EntryFile></EntryFile><SaveFolder>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\</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>main.c</SOURCEFILE><SOURCEFILE>analog.c</SOURCEFILE><SOURCEFILE>eeprom.c</SOURCEFILE><SOURCEFILE>fc.c</SOURCEFILE><SOURCEFILE>GPS.c</SOURCEFILE><SOURCEFILE>gps_ubx.c</SOURCEFILE><SOURCEFILE>menu.c</SOURCEFILE><SOURCEFILE>printf_P.c</SOURCEFILE><SOURCEFILE>rc.c</SOURCEFILE><SOURCEFILE>timer0.c</SOURCEFILE><SOURCEFILE>twimaster.c</SOURCEFILE><SOURCEFILE>uart.c</SOURCEFILE><HEADERFILE>_Settings.h</HEADERFILE><HEADERFILE>analog.h</HEADERFILE><HEADERFILE>fc.h</HEADERFILE><HEADERFILE>gps.h</HEADERFILE><HEADERFILE>gps_ubx.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>std_c.h</HEADERFILE><HEADERFILE>timer0.h</HEADERFILE><HEADERFILE>twimaster.h</HEADERFILE><HEADERFILE>uart.h</HEADERFILE><OTHERFILE>makefile</OTHERFILE></FILES><CONFIGS><CONFIG><NAME>default</NAME><USESEXTERNALMAKEFILE>YES</USESEXTERNALMAKEFILE><EXTERNALMAKEFILE>makefile</EXTERNALMAKEFILE><PART>atmega644</PART><HEX>1</HEX><LIST>0</LIST><MAP>0</MAP><OUTPUTFILENAME>Flight-Ctrl_MEGA644_V0_60.elf</OUTPUTFILENAME><OUTPUTDIR>default\</OUTPUTDIR><ISDIRTY>1</ISDIRTY><OPTIONS/><INCDIRS/><LIBDIRS/><LIBS/><LINKOBJECTS/><OPTIONSFORALL>-Wall -gdwarf-2 -O0 -fsigned-char</OPTIONSFORALL><LINKEROPTIONS></LINKEROPTIONS><SEGMENTS/></CONFIG></CONFIGS><LASTCONFIG>default</LASTCONFIG><USES_WINAVR>1</USES_WINAVR><GCC_LOC>C:\WinAVR\bin\avr-gcc.exe</GCC_LOC><MAKE_LOC>C:\WinAVR\utils\bin\make.exe</MAKE_LOC></AVRGCCPLUGIN><ProjectFiles><Files><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\_Settings.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\analog.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\fc.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\gps.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\gps_ubx.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\main.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\menu.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\old_macros.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\printf_P.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\rc.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\Settings.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\std_c.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\timer0.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\twimaster.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\uart.h</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\main.c</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\analog.c</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\eeprom.c</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\fc.c</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\GPS.c</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\gps_ubx.c</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\menu.c</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\printf_P.c</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\rc.c</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\timer0.c</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\twimaster.c</Name><Name>C:\hubi\ufo\mickrokopter\gps codes\0.60\Flight-Ctrl_MEGA644_V0_60\uart.c</Name></Files></ProjectFiles><IOView><usergroups/></IOView><Files><File00000><FileId>00000</FileId><FileName>main.c</FileName><Status>1</Status></File00000></Files><Workspace><File00000><Position>343 98 875 474</Position><LineCol>0 0</LineCol></File00000></Workspace><Events><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio> |
/branches/matosi/Flight-Ctrl_MEGA644_V0_60.hex |
---|
0,0 → 1,1601 |
:100000000C94EA010C9405020C9405020C94050270 |
:100010000C9405020C9405020C9405020C94050244 |
:100020000C9405020C94A70A0C9405020C9405028A |
:100030000C94A8130C9405020C9405020C94050270 |
:100040000C9405020C9405020C94FE090C94050214 |
:100050000C9423060C9405020C94AD030C94050239 |
:100060000C94930B0C9405020C94F5120C9405025D |
:100070000A0A0D004E65757472616C004865616412 |
:10008000696E67486F6C64000A0D5374657565721C |
:10009000756E673A20004F4B0A0D000A0D416267EA |
:1000A0006C65696368204C756674647275636B7304 |
:1000B000656E736F722E2E000A0D42656E75747A2E |
:1000C0006520506172616D657465727361747A2028 |
:1000D0002564000A0D496E69742E20454550524F23 |
:1000E0004D3A2047656E65726965726520446566A4 |
:1000F00061756C742D506172616D657465722E2E20 |
:100100002E000A0D3D3D3D3D3D3D3D3D3D3D3D3DCE |
:100110003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D0F |
:100120003D3D000A0D466C69676874436F6E7472DA |
:100130006F6C205625642E256420002E00475053F6 |
:100140005F526F6C6C3A20253369004750535F4E05 |
:1001500069636B20202533690047505320200052EB |
:10016000616E67653A2533692D25336900537465DF |
:100170006C6C756E673A2025336900536574706F37 |
:10018000696E74202025336900536572766F2020D4 |
:1001900000506F7469343A202025336900506F7421 |
:1001A00069333A202025336900506F7469323A2050 |
:1001B0002025336900506F7469313A202025336956 |
:1001C0000053746172743A20202020202535690084 |
:1001D0004D657373776572743A2020253569005236 |
:1001E00069636874756E673A2020253569004B6F26 |
:1001F0006D706173732020202020202000456D70D9 |
:10020000662E506567656C3A253569005370616EDE |
:100210006E756E673A202025356900486F63682047 |
:1002200025346920282533692900526F6C6C2025FC |
:100230003469202825336929004E69636B202534F1 |
:100240006920282533692900414343202D20536527 |
:100250006E736F7200476965722025346920282506 |
:1002600033692900526F6C6C2025346920282533AE |
:100270006929004E69636B2025346920282533697C |
:1002800029004779726F202D2053656E736F7200BD |
:1002900050333A25346920204B616EE46C652000B0 |
:1002A00050313A253469202050323A2534692000F3 |
:1002B00047733A253469202047693A25346920007C |
:1002C0004E693A2534692020526F3A25346920005E |
:1002D0004B373A25346920204B616EE46C65200071 |
:1002E0004B353A25346920204B363A2534692000B5 |
:1002F0004B333A25346920204B343A2534692000A9 |
:100300004B313A25346920204B323A25346920009C |
:100310004B6F6D706173733A202020253569005250 |
:100320006F6C6C3A202020202020253569004E6912 |
:10033000636B3A20202020202025356900616B74F2 |
:100340002E204C6167650048F668656E72656765CA |
:100350006C756E67004B65696E6520004F666620A0 |
:1003600020202020203A20253569004C75667464D1 |
:100370007275636B3A2025356900536F6C6C486F5A |
:100380006568653A2025356900486F6568653A20DB |
:10039000202020202535690028632920486F6C67BC |
:1003A000657220427573730053657474696E673AA1 |
:1003B00020256420005625642E2564002B2B204D1B |
:1003C000696B726F4B6F70746572202B2B005B250D |
:1003D000695D000011241FBECFEFD0E1DEBFCDBFAD |
:1003E00011E0A0E0B1E0E0E3F3E602C005900D9279 |
:1003F000A83CB107D9F717E0A8ECB1E001C01D9205 |
:10040000A73AB107E1F70C9438020C940000A2E07F |
:10041000B0E00E948431802D99270895FB01282F98 |
:10042000863008F025E0429FD0011124AC59BF4F1F |
:10043000842F9927019724F001900E948C31FACFE4 |
:10044000A2E0B0E0022E0E948C310895FB018630BC |
:1004500008F085E0489FD0011124AC59BF4F842F8C |
:100460009927019724F00E9484310192FACF0895D0 |
:100470000F931F93CF93DF9391E097B98FEF88B9D4 |
:100480008BE184B995B98EE38AB9579A87EF8BB916 |
:1004900084B7877F84BF809160008861809360000B |
:1004A0001092600080ED97E09093E5018093E40165 |
:1004B00010926602109265021092170610921606AC |
:1004C0001092640210926302109262021092610212 |
:1004D00028980E94540B0E94E8040E9493130E94E3 |
:1004E0008D0B0E94DB127894109225058CE380938B |
:1004F000260584E0809327058CE390E09F938F93FB |
:100500001F921F9283E291E09F938F931F920E940C |
:10051000590782E091E09F938F931F920E945907A1 |
:10052000299AA1E0B0E00E948431802D2DB73EB71A |
:10053000265F3F4F0FB6F8943EBF0FBE2DBF8B33E3 |
:10054000A9F183ED90E09F938F931F920E9459072A |
:100550000E945E1B4AE36EE376E080E00E940E029A |
:1005600001E00F900F900F90023049F40E94F11AB1 |
:100570004AE36EE376E082E00E940E0203E04AE383 |
:100580006EE376E0802F0E940E020F5F063060F36C |
:1005900081E022E030E0D901082E0E948C318BE30B |
:1005A00021503040D901082E0E948C3102E010E029 |
:1005B000D8010E948431802D4AE36EE376E00E94E8 |
:1005C0002602D8010E948431802D99279F938F9312 |
:1005D00088EB90E09F938F931F920E945907809120 |
:1005E00046060F900F900F900F900F9080FF20C045 |
:1005F0008BE990E09F938F931F920E94590784ECA0 |
:1006000099E00E94920AEC010E94B70E0F900F90A1 |
:100610000F90CE010E949B0A8823D9F386E990E0CF |
:100620009F938F931F920E9459070F900F900F90E6 |
:100630000E94161C289880ED97E09093E501809326 |
:10064000E40188EE93E09093200580931F0585E5F3 |
:1006500080931A0588E890E09F938F931F920E94E1 |
:100660005907809146060F900F900F9082FF03C0AC |
:100670008CE790E002C084E790E09F938F931F92F5 |
:100680000E9459070F900F900F9080E790E09F9382 |
:100690008F931F920E9459070E94DE0E0F900F90B9 |
:1006A0000F908091E101882379F11092E1010E947D |
:1006B000291D0E94CF1B289880910101882319F0E1 |
:1006C00081508093010180916002882329F08091FC |
:1006D00060028150809360022091040130910501F5 |
:1006E0008091560699272817390734F480ED97E052 |
:1006F0009093E5018093E40180910F02882319F41F |
:100700000E94DB1201C028988091460685FF03C035 |
:100710000E945A2908C010929602109295021092D7 |
:100720009802109297020E9403050E94710580E0D2 |
:1007300090E00E949B0A882309F4B3CF809167025E |
:10074000882329F088B190E1892788B901C04498AD |
:1007500084EF91E00E94920AA4CF1F920F920FB6ED |
:100760000F9211248F939F93EF93FF938091000139 |
:100770008823E1F48091DD019091DE010196909350 |
:10078000DE018093DD01FC01E451FC4FE081ED309E |
:1007900019F08639910539F41092DE011092DD01CD |
:1007A00081E080930001E093C60004C01092DE0156 |
:1007B0001092DD01FF91EF919F918F910F900FBEED |
:1007C0000F901F901895DC0120E030E040E050E0F1 |
:1007D000ECEEF3E005C08191280F311D4F5F5F4FB4 |
:1007E0004A175B07C1F73F70C90136E096958795B8 |
:1007F0003A95E1F7835CFD01E451FC4F808311964B |
:100800002F73235CFD01E451FC4F2083A351BC4FA7 |
:100810008DE08C93109200018091EC038093C600D0 |
:100820000895EF92FF920F931F93CF93DF937A0176 |
:10083000722F93E29093EC036093ED038093EE03A9 |
:1008400003E010E060E0AFEEB3E046C0F701E60F72 |
:10085000F11D90816F5F715019F4E0E040E00FC02E |
:10086000F701E60FF11D40816F5F715011F4E0E078 |
:1008700006C0F701E60FF11DE0816F5F7150892F0F |
:1008800086958695835C8C935527892F992783704D |
:10089000907024E0880F991F2A95E1F79A0194E05F |
:1008A000369527959A95E1F7822B835CED01898334 |
:1008B0004F705070440F551F440F551F8E2F829557 |
:1008C000869586958370842B835C8A83EF73E35CC3 |
:1008D000EB830C5F1F4F1496772309F0B7CFC80145 |
:1008E0000E94E303DF91CF911F910F91FF90EF9052 |
:1008F00008950F931F93CF93DF93EC01062F70E0C1 |
:10090000A22FBB2712974AC0E42FFF27E15DFA4FC1 |
:1009100030814F5FE42FFF27E15DFA4F50814F5F39 |
:10092000E42FFF27E15DFA4F10814F5FE42FFF278F |
:10093000E15DFA4F20814F5F842F9927A817B907EF |
:1009400084F1701771F15D53FE01E70FF11D3D5306 |
:10095000330F330F852F82958F70382B30836130A2 |
:1009600001F1912F9D537F5FFE01E70FF11D715043 |
:100970005295507F892F86958695582B50836350CA |
:100980006F3F79F07E5FFE01E70FF11D9295990FA1 |
:10099000990F907C2D53922B90837F5F662309F0F3 |
:1009A000B3CFDF91CF911F910F9108951F93182F0F |
:1009B0008A3019F48DE00E94D6048091C00085FF32 |
:1009C000FCCF1093C60080E090E01F910895089539 |
:1009D000E1ECF0E088E18083A0ECB0E08C918260F3 |
:1009E0008C938081806880838081806480838AE2A8 |
:1009F0008093C40088EC90E00E94920A90931905BD |
:100A000080931805089580910001882309F468C037 |
:100A10008091C801882371F080910001882351F0F2 |
:100A20002BE04AE155E06091EB0387E40E9411045A |
:100A30001092C80180911805909119050E949B0A97 |
:100A4000882321F48091CA018823B1F080910001AC |
:100A5000882391F022E345EC55E06091EB0384E4B8 |
:100A60000E9411041092CA018AEF90E00E94920A3B |
:100A700090931905809318058091C9018823F1F09E |
:100A8000809100018823D1F00E94E70E1092C901E5 |
:100A90008091D6018F5F8093D601843011F410923B |
:100AA000D6018091D60144E1849FA00111244A5EC1 |
:100AB0005E4F24E160E0805D0E9411048091CB01D3 |
:100AC000882371F080910001882351F02AE045E2EB |
:100AD00055E06091EB0386E50E9411041092CB0172 |
:100AE00008951F93CF93DF93CDB7DEB722970FB64C |
:100AF000F894DEBF0FBECDBF8091CD01882309F4ED |
:100B000098C08FEF8093010180913105813760F4A7 |
:100B10008C3608F06FC0873609F440C08836F9F08B |
:100B2000833609F084C008C0843759F1863791F1C3 |
:100B3000813709F07CC036C02091D00143E06BE0E2 |
:100B40008AE195E00E9479048091060290911C054B |
:100B5000892B8093060281E08093CA0168C02091AE |
:100B6000D00143E062E0CE0101960E9479048091B9 |
:100B700006029981892B8093060281E08093C90146 |
:100B800056C02091D00143E064E082ED91E00E94E4 |
:100B900079044DC081E08093CB0149C081E080930E |
:100BA000C80145C02091D00143E062E0CE0101962A |
:100BB0000E94790489818F3F89F0863010F085E0AA |
:100BC00089834AE36EE376E089810E942602898167 |
:100BD0002AE34EE356E06091EB0308C01091EB036B |
:100BE0000E9407022AE34EE356E0612F855B0E94D4 |
:100BF00011041DC02091D00143E06AE38EE396E02A |
:100C00000E947904809131054AE36EE376E08B56C9 |
:100C10000E940E02809131058B56A2E0B0E0082EB2 |
:100C20000E948C310E94070299270E94141D109285 |
:100C3000CD0122960FB6F894DEBF0FBECDBFDF9177 |
:100C4000CF911F9108951F920F920FB60F9211240A |
:100C50002F933F934F935F936F937F938F939F93C4 |
:100C6000AF93BF93CF93DF93EF93FF938091C60031 |
:100C70008093CC018091CC010E94E22A4091D8015E |
:100C8000463910F01092D7018091CC018D3009F0D7 |
:100C90005DC08091D701823009F058C01092D70111 |
:100CA000A42FBB27FD01E35DFA4F3081ED01C25D4A |
:100CB000DA4F28818091DB019091DC01831B91093F |
:100CC000821B91099F709093DC018093DB019C0152 |
:100CD000689415F8369527951694E1F7235C2093D0 |
:100CE000DA01982F9F73935C9093D9018081281724 |
:100CF00029F48881981711F491E006C08091CF0102 |
:100D00008F5F8093CF0190E08091CD01882309F01F |
:100D100064C0992309F461C081E08093CD014093C0 |
:100D2000D001A15DBA4F8DE08C9380913105823561 |
:100D300009F053C088E190E02CE00FB6F894A89534 |
:100D4000809360000FBE2093600047C08091D70160 |
:100D50008130D9F0813018F08230E9F530C08091CF |
:100D6000CC01833239F48091CD01882319F481E0DC |
:100D70008093D7018091CC0180932F0581E08093EF |
:100D8000D8018091CC01992715C082E08093D701CA |
:100D9000E42FFF278091CC01E15DFA4F80834F5F04 |
:100DA0004093D8012091CC018091DB019091DC012E |
:100DB000820F911D9093DC018093DB010EC0E42F24 |
:100DC000FF278091CC01E15DFA4F8083463938F3EB |
:100DD0001092D701E7CF1092D701FF91EF91DF91E9 |
:100DE000CF91BF91AF919F918F917F916F915F91C3 |
:100DF0004F913F912F910F900FBE0F901F9018951C |
:100E0000982F8091F705813069F480910502E82FD1 |
:100E1000FF27EA5EFE4F90838F5F8093050221E0FB |
:100E200030E005C0892F0E94D604282F3327C9013E |
:100E300008951F93182F04C080E30E9400071150EB |
:100E40001116D4F31F9108951F93182F04C080E248 |
:100E50000E94000711501116D4F31F9108950F93AB |
:100E60001F93CF93DF938C01EB0108C0F8010F5F54 |
:100E70001F4FE4918E2F0E94000721972097B1F712 |
:100E8000DF91CF911F910F9108950F931F93CF93EF |
:100E9000DF938C01EB0106C0F80181918F010E9464 |
:100EA000000721972097C1F7DF91CF911F910F91F4 |
:100EB00008952F923F924F925F926F927F928F92FE |
:100EC0009F92AF92BF92CF92DF92EF92FF920F93D9 |
:100ED0001F93CF93DF93CDB7DEB7E3970FB6F894A8 |
:100EE000DEBF0FBECDBF29968FAD29978093F70542 |
:100EF000CE01855B9F4F9D838C832B964EAD5FAD5E |
:100F00002B975FA74EA722243324210102C013018F |
:100F100024010EA51FA502C00F5F1F4FF801F4901A |
:100F2000FF2019F0F5E2FF16B9F7B8014EA55FA54D |
:100F3000641B750B19F0CA010E942F07FF2009F4EA |
:100F400044C20F5F1F4F1FA70EA71982AC81BD813E |
:100F50001BAA1AAA5FEF59ABEEA5FFA5CF01019618 |
:100F60009FA78EA7B49095E7B91621F08B2D8062CC |
:100F7000883789F4EBA9E0FF07C02D903D904D9094 |
:100F80005C901397149607C08D919C9111971C014A |
:100F9000442455241296F0E2BF1621F48981882357 |
:100FA000D9F686C043E2B41609F484C05AE2B516F5 |
:100FB00021F08DE2B81671F408C0FD011296E081AF |
:100FC000EAABE7FFC9CFE195EAAB9BA990619F7DB2 |
:100FD0009BABC2CFEBE2BE1609F46AC0FEE2BF16BD |
:100FE000B1F52EA53FA52F5F3F4FEEA5FFA584913C |
:100FF0008A3221F0B82E20E030E01BC0FD011296AD |
:101000004081518157FF02C04FEF5FEF49AB3FA7CF |
:101010002EA7A2CF8AE090E0A901489F9001499FA6 |
:10102000300D589F300D11242B0D311D20533040B1 |
:10103000B49031968B2D80538A3060F3FFA7EEA7D2 |
:10104000A90137FF02C04FEF5FEF49AB8CCF50E3F0 |
:10105000B51631F48BA984FD7FCF80628BAB7CCF3A |
:101060008B2D81538930E8F420E030E04AE050E0F5 |
:10107000F901E49F9001E59F300DF49F300D11249C |
:101080002B0D311D20533040EEA5FFA5CF01019659 |
:101090009FA78EA7B4908B2D80538A3048F32AAB3C |
:1010A00062CF98E6B91651F4EBA9E460EBAB54CFEC |
:1010B000B98252CFFBA9F860FBAB4ECF4CE6B41619 |
:1010C00021F45BA951605BAB47CFBD83AC8383E662 |
:1010D000B81639F41296BD83AC8312978C918E8327 |
:1010E00019C194E4B91639F0E4E6BE1639F0F9E610 |
:1010F000BF1659F503C04BA941604BAB5BA950FF2C |
:1011000008C01496BD83AC835E904E903E902E90A6 |
:101110000AC01296BD83AC839E918E911C0144241B |
:1011200037FC4094542C57FC03C08AE088AB93C032 |
:101130005094409430942094211C311C411C511C2B |
:101140008DE289839AE098AB86C0EFE4BE1629F061 |
:10115000FFE6BF1641F448E061C05BA951605BAB9C |
:1011600088E088AB77C090E7B91671F41296BD831A |
:10117000AC839E918E911C0144245524EBA9E0641C |
:10118000EBAB78E7B72E5EC043E7B416D9F51296FD |
:10119000BD83AC83DE90CE90C114D10489F488E283 |
:1011A0008E838EE68F8385E788878CE689878A879A |
:1011B00089E28B871C8666E0C62ED12CCC0EDD1E04 |
:1011C00059A957FD13C0452F552747FD509560E09D |
:1011D00070E0C6010E94252C009711F419A90DC0DA |
:1011E0008C1919A981174CF4182F07C0F60101902A |
:1011F0000020E9F731971E2F1C1919824201310195 |
:1012000040E094C085E5B81629F095E7B91641F499 |
:10121000EAE011C0FBA9F160FBAB4AE048AB1AC0A1 |
:1012200058E5B51621F088E7B81609F06FC09BA9FC |
:1012300093FD03C0E0E1E8AB0DC02114310441048B |
:10124000510419F4F0E1F8AB05C04BA940644BAB75 |
:1012500050E158AB198289A987FD03C09BA99F7DE6 |
:101260009BAB211431044104510461F4E9A9EE233C |
:1012700049F46624772443015EE2C52ED12CCC0EBE |
:10128000DD1E3EC04EE2C42ED12CCC0EDD1EF8A9D0 |
:10129000EF2EFF2400271127C201B101A8019701F9 |
:1012A0000E9447316A3020F430E3A32EA60E08C016 |
:1012B00027E5A22EA60E48E5B41611F45FEDA5228F |
:1012C000F601A2926F01C201B101A80197010E942B |
:1012D000473139014A012E143F044006510618F0E7 |
:1012E00019012A01D9CFF8A9F83051F44BA943FFCD |
:1012F00007C050E3A51621F080E3F60182936F0149 |
:10130000AE014C19142F125D49A910C0BB2009F47D |
:101310005CC0BE8219824201310100E096E0C92E14 |
:10132000D12CCC0EDD1E11E091E005C0912F042FD1 |
:10133000011B07FD00E08981882319F0812F8F5F51 |
:1013400007C05BA956FD02C0812F02C0892F8E5FA6 |
:10135000A82EA00E8BA9E82EFF2480E3482E512C46 |
:101360004E205F204114510421F48AA98A190E9459 |
:1013700024078981882329F061E070E0CE0101967D |
:1013800009C0E6FE09C080E38A83BB8262E070E0A8 |
:10139000CE0102960E94450790E24916510421F4BD |
:1013A0008AA98A190E941907802F0E941907612FA4 |
:1013B000772767FD7095C6010E944507E4FEA7CD1B |
:1013C0008AA98A190E942407A2CDE3960FB6F89441 |
:1013D000DEBF0FBECDBFDF91CF911F910F91FF9068 |
:1013E000EF90DF90CF90BF90AF909F908F907F90C5 |
:1013F0006F905F904F903F902F9008951F920F92A3 |
:101400000FB60F9211242F933F935F936F937F93A7 |
:101410008F939F93AF93BF938091E8018150809306 |
:10142000E8018F3F01F589E08093E8018091030195 |
:101430008F5F817080930301882319F481E080938A |
:10144000E1018091DF019091E00101969093E0012C |
:101450008093DF0180910F02882329F080910F0291 |
:10146000815080930F028091E4019091E5010297F1 |
:1014700058F08091E4019091E50101979093E50186 |
:101480008093E4015A9A01C05A988091460683FFDE |
:101490003BC0349B0AC08091E2019091E301019628 |
:1014A0009093E3018093E2012FC08091E20190913B |
:1014B000E301892B79F08091E2019091E301805A58 |
:1014C0009F4040F48091E2019091E301909351029A |
:1014D00080935002809150029091510220915202CB |
:1014E00030915302821B930B845E9D4F68E671E03E |
:1014F0000E943431845B9040909355028093540253 |
:101500001092E3011092E201BF91AF919F918F91F0 |
:101510007F916F915F913F912F910F900FBE0F9030 |
:101520001F9018952091DF013091E0012F5F3F4F10 |
:10153000820F931F08952091DF013091E001821BFB |
:10154000930B892F992786958074992708951F9268 |
:101550000F920FB60F921124EF92FF920F931F93E9 |
:101560002F933F934F935F936F937F938F939F93AB |
:10157000AF93BF93CF93DF93EF93FF9380910201DB |
:101580008150809302018F3F09F073C083E88093FC |
:10159000B00080918901C82FDD27D093E701C09367 |
:1015A000E60180916406E090600680FF1EC06091B5 |
:1015B0002002709121028091220290912302FF2447 |
:1015C0000027112720E830E040E050E00E94693118 |
:1015D000C801B7010E94013120E032E040E050E054 |
:1015E0000E946931C20FD31F1DC06091200270910B |
:1015F00021028091220290912302FF2400271127CB |
:1016000020E830E040E050E00E946931C801B701B5 |
:101610000E94013120E032E040E050E00E94693158 |
:10162000C21BD30BD093E701C093E6012091E601E2 |
:101630003091E7018091610699272817390734F026 |
:101640008091620699278217930724F49093E7010B |
:101650008093E6018091E6019091E7019093EC057B |
:101660008093EB058093B300809163068093020121 |
:1016700004C083E08093B0005F98FF91EF91DF9109 |
:10168000CF91BF91AF919F918F917F916F915F911A |
:101690004F913F912F911F910F91FF90EF900F90DD |
:1016A0000FBE0F901F9018958091DF019091E0017F |
:1016B0000B969093EA018093E90182E085BD83EA6D |
:1016C00084BD17BC88E788BD96E096BD83EC809307 |
:1016D000B0009093B100E0E7F0E080818260808309 |
:1016E000EEE6F0E08081816080838AE08093B30041 |
:1016F0001092B20008952091DF013091E0012F5F38 |
:101700003F4F280F391F8091DF019091E001A9011F |
:10171000481B590B57FFF7CF089510927C008FEEAE |
:1017200080937A0008951F920F920FB60F921124A2 |
:10173000EF92FF920F931F932F933F934F935F93DB |
:101740006F937F938F939F93AF93BF93CF93DF93C9 |
:10175000EF93FF9310927A00409101024F5F409304 |
:1017600001024150433009F41CC1443038F4413087 |
:1017700009F463C0423008F0B9C00DC0453009F427 |
:1017800050C1453008F42AC1463009F46FC14730D2 |
:1017900009F0CBC252C220911402309115028091FF |
:1017A000780090917900281B390B8091EF0190917E |
:1017B000F001820F931F9093F0018093EF018091CD |
:1017C000F9018F5F8093F901809144029091450265 |
:1017D000A0914602B0914702442737FD4095542F0F |
:1017E000820F931FA41FB51F80934402909345025C |
:1017F000A0934602B093470280914802909149021B |
:10180000A0914A02B0914B02820F931FA41FB51FF3 |
:101810008093480290934902A0934A02B0934B02EE |
:1018200081E0809302028091FF0190910002019675 |
:10183000909300028093FF017CC2609178007091C8 |
:1018400079008091120290911302681B790B8091AC |
:101850003C0290913D02A0913E02B0913F029B015B |
:10186000442737FD4095542F820F931FA41FB51FA7 |
:1018700080933C0290933D02A0933E02B0933F02BE |
:101880008091400290914102A0914202B0914302A6 |
:10189000820F931FA41FB51F8093400290934102B3 |
:1018A000A0934202B0934302809178009091790016 |
:1018B0000A9710F464E47DEF8091780090917900AC |
:1018C000895E934010F06CEB72E08091ED01909195 |
:1018D000EE01860F971F9093EE018093ED018091AA |
:1018E000F8018F5F8093F80182E058C06091780022 |
:1018F000709179008091100290911102681B790B10 |
:101900008091340290913502A0913602B091370255 |
:101910009B01442737FD4095542F820F931FA41F2E |
:10192000B51F8093340290933502A0933602B09392 |
:1019300037028091380290913902A0913A02B09119 |
:101940003B02820F931FA41FB51F80933802909310 |
:101950003902A0933A02B0933B02809178009091B3 |
:1019600079000A9710F464E47DEF809178009091FB |
:101970007900895E934010F06CEB72E08091EB018E |
:101980009091EC01860F971F9093EC018093EB01EF |
:101990008091F7018F5F8093F70184E080930202CA |
:1019A000C8C1409104015091050180917800909147 |
:1019B00079009A01220F331F240F351F63E070E076 |
:1019C0000E942031260F371F36952795369527958B |
:1019D000309305012093040186E0E0CF8091180246 |
:1019E000909119022091780030917900821B930B1D |
:1019F0009093F9058093F8058091F1019091F2019F |
:101A00002091F8053091F905820F931F9093F20110 |
:101A10008093F1018091FB018F5F8093FB0187E050 |
:101A2000BDCF80917800909179002091160230917D |
:101A30001702821B930B9093F9058093F805809110 |
:101A4000F3019091F4012091F8053091F905820F8E |
:101A5000931F9093F4018093F3018091FA018F5FBB |
:101A60008093FA014093020286E0E4C0609178001E |
:101A700070917900E0901A02F0901B0200911C0214 |
:101A800010911D02882777FD8095982F0E943F3086 |
:101A9000A80197010E94992F0E9422307093F601AD |
:101AA0006093F5012091F5013091F601E091F80580 |
:101AB000F091F905809103069091040697FF03C009 |
:101AC000909581959F4F64E070E00E943431EB0166 |
:101AD000CF01F7FF03C0909581959F4F64E070E0C0 |
:101AE0000E943431260F371F2C0F3D1F3093F60113 |
:101AF0002093F5018091F5019091F601029704F190 |
:101B000060911A0270911B0280911C0290911D023B |
:101B100020E030E048E454E40E94493088230CF08F |
:101B20003CC060911A0270911B0280911C0290913E |
:101B30001D022AE037ED43EA5CE30E949A2F25C09C |
:101B40008091F5019091F6018F5F9F4F34F5609180 |
:101B50001A0270911B0280911C0290911D0220E0DC |
:101B600030E046E154E40E944C301816B4F4609121 |
:101B70001A0270911B0280911C0290911D022AE0B2 |
:101B800037ED43EA5CE30E94992F60931A02709349 |
:101B90001B0280931C0290931D0281E08093FC0144 |
:101BA00080917800909179009093FB058093FA05DD |
:101BB00020914C0230914D0240914E0250914F02C3 |
:101BC0008091F5019091F601AA2797FDA095BA2F73 |
:101BD000280F391F4A1F5B1F20934C0230934D0280 |
:101BE00040934E0250934F02E0904C02F0904D0211 |
:101BF00000914E0210914F0260914C0270914D0283 |
:101C000080914E0290914F0220E034E040E050E09D |
:101C10000E946931E21AF30A040B150BE0924C02A0 |
:101C2000F0924D0200934E0210934F0283E0809396 |
:101C3000020287E0809301027CC0809108069091A7 |
:101C400009062091780030917900820F931F9093BC |
:101C5000090680930806809100068F5F8093000636 |
:101C600080910006853008F460C0809178009091E2 |
:101C7000790090930B0180930A01109200068091E5 |
:101C8000FC059091FD052091080630910906821B04 |
:101C9000930B2091680230916902821B930B909301 |
:101CA000FE018093FD016091080670910906E090A5 |
:101CB0000601F090070100910801109109018827A1 |
:101CC00077FD8095982FA8019701220F331F441F9D |
:101CD000551F2E0D3F1D401F511F620F731F841F84 |
:101CE000951F24E030E040E050E00E9469312093ED |
:101CF0000601309307014093080150930901209198 |
:101D0000FC053091FD058091060190910701A0919D |
:101D10000801B0910901281B390B30936902209307 |
:101D200068021092090610920806109202021092A0 |
:101D300001028091020280937C008FEE80937A00F2 |
:101D4000FF91EF91DF91CF91BF91AF919F918F91D3 |
:101D50007F916F915F914F913F912F911F910F91C3 |
:101D6000FF90EF900F900FBE0F901F901895CF939C |
:101D7000DF93C0E0D0E0C7BD82E390E00E947B0B20 |
:101D80008BE391E09F938F931F920E94590780915C |
:101D90000A0190910B010F900F900F90845893407F |
:101DA00020F02196CA3FD10531F7C093050688EC93 |
:101DB00090E00E947B0BDF91CF910895E6E1F1E086 |
:101DC00080E2819391E0E636F907D9F70895FF9212 |
:101DD0000F931F9380910602282F3327C90181702A |
:101DE0009070682F882391F080910702882311F06A |
:101DF000815002C08091660180930702E6E1F1E024 |
:101E000080E2819391E0E636F907D9F7A9014270A3 |
:101E1000507021FF0DC0809107028F5F80930702F1 |
:101E2000E6E1F1E080E2819391E0E636F907D9F747 |
:101E3000662321F0452B11F01092070281E1809377 |
:101E400005028091070299279F938F938EEC93E070 |
:101E50009F938F93E1E0FE2EFF920E94590700911D |
:101E600007020F900F900F900F900F90053009F41C |
:101E7000DAC1063090F4023009F4BBC0033030F40C |
:101E8000002309F1013009F08BC350C0033009F47D |
:101E900005C1043009F084C34EC1083009F49BC267 |
:101EA000093038F4063009F414C2073009F078C359 |
:101EB0006FC20A3009F40AC30A3008F4C9C20B30F1 |
:101EC00009F06EC340C3109205028CEB93E09F9320 |
:101ED0008F93FF920E94590784E1809305028CE35F |
:101EE00090E09F938F931F921F9285EB93E09F93B7 |
:101EF0008F93FF920E94590788E2809305020E9407 |
:101F0000070299279F938F9388EA93E09F938F937B |
:101F1000FF920E9459078CE38093050288E993E0C1 |
:101F20009F938F93FF920E9459078EC2809146061D |
:101F300080FF47C01092050280916802909169026B |
:101F40009F938F9389E893E09F938F930F930E94C1 |
:101F5000590784E18093050280916A0290916B0297 |
:101F60009F938F938AE793E09F938F930F930E94A1 |
:101F7000590788E28093050280910A0190910B0134 |
:101F80009F938F938BE693E09F938F930F930E9481 |
:101F900059078CE3809305028091050699279F934A |
:101FA0008F938CE593E09F938F930F930E94590733 |
:101FB0008DB79EB744960FB6F8949EBF0FBE8DBFE7 |
:101FC000F4C284E18093050285E593E09F938F93AB |
:101FD0000F930E94590788E28093050287E493E0FB |
:101FE0009F938F930F930E9459078DB79EB70696C4 |
:101FF000E2CF109205028DE393E09F938F93FF92BF |
:102000000E94590784E1809305026091200270913B |
:102010002102809122029091230220E034E040E0EE |
:1020200050E00E9469315F934F933F932F938EE26C |
:1020300093E09F938F93FF920E94590788E28093C9 |
:102040000502609128027091290280912A029091E4 |
:102050002B0220E034E040E050E00E9469315F93C1 |
:102060004F933F932F938FE193E09F938F93FF9232 |
:102070000E9459078CE38093050280915002909151 |
:1020800051029F938F9380E193E09F938F93FF92F0 |
:102090000E9459078DB79EB746968DCF10920502C4 |
:1020A000809116069091170620911406309115061E |
:1020B0009F938F933F932F9380E093E09F938F9311 |
:1020C000FF920E94590784E18093050280911A06CD |
:1020D00090911B0620911806309119069F938F93BB |
:1020E0003F932F9380EF92E09F938F93FF920E94F4 |
:1020F000590788E28093050280911E0690911F0681 |
:1021000020911C0630911D069F938F933F932F9330 |
:1021100080EE92E09F938F93FF920E9459078CE389 |
:102120008093050280912006909121069F938F93C2 |
:1021300080ED92E06FC010920502E0913F06FF270C |
:10214000EE0FFF1FEE5EF94F20813181E0913E06D8 |
:10215000FF27EE0FFF1FEE5EF94F808191813F93C5 |
:102160002F939F938F9380EC92E09F938F93FF9296 |
:102170000E94590784E180930502E0914106FF2700 |
:10218000EE0FFF1FEE5EF94F20813181E091400696 |
:10219000FF27EE0FFF1FEE5EF94F808191813F9385 |
:1021A0002F939F938F9380EB92E09F938F93FF9257 |
:1021B0000E94590788E280930502E0914306FF27B9 |
:1021C000EE0FFF1FEE5EF94F20813181E091420654 |
:1021D000FF27EE0FFF1FEE5EF94F808191813F9345 |
:1021E0002F939F938F9380EA92E09F938F93FF9218 |
:1021F0000E9459078CE380930502E0914406FF2773 |
:10220000EE0FFF1FEE5EF94F808191819F938F93B8 |
:1022100080E992E09F938F93FF920E9459078DB7B8 |
:102220009EB74A96C8CE1092050282E892E09F932C |
:102230008F93FF920E94590784E1809305022091B9 |
:102240001002309111028091EB019091EC016091AC |
:10225000F7013F932F9377270E9434317F936F9339 |
:1022600083E792E09F938F93FF920E94590788E241 |
:102270008093050220911202309113028091ED01AA |
:102280009091EE016091F8013F932F9377270E9480 |
:1022900034317F936F9384E692E09F938F93FF9204 |
:1022A0000E9459078CE3809305022091140230911B |
:1022B00015028091EF019091F0016091F9013F9337 |
:1022C0002F9377270E9434317F936F9385E592E0B7 |
:1022D00056C01092050288E492E09F938F93FF927C |
:1022E0000E94590784E180930502209116023091E3 |
:1022F00017028091F3019091F4016091FA013F93EC |
:102300002F9377270E9434317F936F9389E392E074 |
:102310009F938F93FF920E94590788E28093050252 |
:1023200020911802309119028091F1019091F201EF |
:102330006091FB013F932F9377270E9434317F9365 |
:102340006F938AE292E09F938F93FF920E945907C6 |
:102350008CE38093050260911A0270911B028091B8 |
:102360001C0290911D020091FA051091FB050E943C |
:1023700022307F936F931F930F938BE192E09F9393 |
:102380008F93FF920E9459078DB79EB7489613CE40 |
:1023900084E18093050280910401909105019F934F |
:1023A0008F938CE092E09F938F93FF920E94590746 |
:1023B00088E2809305028091600299279F938F9312 |
:1023C0008DEF91E09F938F93FF920E9459078DB7F5 |
:1023D0009EB70A96F0CD109205028EEE91E09F9383 |
:1023E0008F93FF920E94590784E1809305028091A8 |
:1023F0005402909155029F938F938FED91E09F939C |
:102400008F93FF920E94590788E280930502809182 |
:102410005002909151029F938F9380ED91E09F9392 |
:102420008F93FF920E9459078CE38093050280915D |
:102430005202909153029F938F9381EC91E09F936E |
:102440008F93FF920E9459078DB79EB74296B3CDE6 |
:102450001092050280915802909159029F938F9398 |
:1024600085EB91E09F938F93FF920E94590784E13F |
:102470008093050280915A0290915B029F938F9303 |
:1024800089EA91E09F938F93FF920E94590788E217 |
:102490008093050280915C0290915D029F938F93DF |
:1024A0008DE991E09F938F93FF920E9459078CE3EF |
:1024B0008093050280915E0290915F029F938F93BB |
:1024C00081E991E09F938F93FF9270CD1092050266 |
:1024D00089E891E09F938F93FF920E94590784E1CE |
:1024E000809305028091890199279F938F938BE7B1 |
:1024F00091E09F938F93FF920E94590788E2809307 |
:1025000005028091E6019091E7019F938F938DE6FC |
:1025100091E09F938F93FF920E9459078CE38093E1 |
:1025200005028091620699279F938F93809161069F |
:1025300099279F938F938FE591E09F938F93FF92BD |
:102540000E94590735CD1092050289E591E09F93CD |
:102550008F93FF920E94590784E180930502809136 |
:102560009502909196029F938F938BE491E09F93B5 |
:102570008F93FF920E94590788E280930502809111 |
:102580009702909198029F938F938DE391E09F9390 |
:102590008F93FF920E9459078DB79EB70D960BCD72 |
:1025A00001500093660110920702109206021F91DB |
:1025B0000F91FF9008951092B9008AE28093B800BD |
:1025C000089585EA8093BC0080E090E0089584E956 |
:1025D0008093BC0008951092B9008093BB0085E8F9 |
:1025E0008093BC0080E090E008951F920F920FB698 |
:1025F0000F9211248F939F93EF93FF938091080282 |
:102600008F5F809308028150833009F442C0843088 |
:1026100028F48130A1F0823070F50CC0853009F4C7 |
:1026200048C08530D8F1863009F44BC0873009F0B6 |
:1026300071C05BC080910902880F8E5A14C08091CE |
:1026400009028F5F809309028150813009F444C0F0 |
:10265000813038F0823009F442C0833009F05AC02A |
:1026600041C08091AF021092B9008093BB0085E811 |
:102670008093BC004FC084E98093BC008091090224 |
:10268000843018F41092080202C01092090285EA00 |
:10269000EFCF80910A02880F8D5AE5CF80910A0210 |
:1026A0008130D1F08130E8F28230C9F0833091F589 |
:1026B00019C08091BB00E0910A02FF27E65FF94F45 |
:1026C000808380910A02813039F0813050F282306B |
:1026D00031F08330F9F406C08091B002C4CF80910C |
:1026E000B703C1CF8091E203BECF80910A029091DF |
:1026F000BB00E82FFF27E65FF94F94838F5F80933D |
:102700000A02843010F010920A0284E98093BC001F |
:1027100010920802FF91EF919F918F910F900FBE41 |
:102720000F901F90189583EC80938100EFE6F0E006 |
:1027300080818062808310921502109214021092A0 |
:1027400013021092120210921102109210020895B8 |
:102750001F920F920FB60F9211240F931F932F9376 |
:102760003F934F935F936F937F938F939F93AF9319 |
:10277000BF93CF93DF93EF93FF9320918600309127 |
:10278000870080910D0290910E02281B390B8091D9 |
:1027900086009091870090930E0280930D02C901EC |
:1027A0008D5D95408356994148F481E090E0909387 |
:1027B0000C0280930B021092670154C0C0910B026F |
:1027C000D0910C02CA30D1050CF04CC0C9018B5F0E |
:1027D0009040845B914008F040C0A901425D5140A7 |
:1027E000FE01EE0FFF1FEE5EF94F80819181FA012D |
:1027F000E81BF90BCF01F7FF03C0909581959F4F20 |
:1028000006974CF480916002883C28F48091600225 |
:10281000865F80936002FE01EE0FFF1F8F010E5E48 |
:10282000194FD8012D913C91C901880F991F820F32 |
:10283000931F840F951F64E070E00E943431D8012B |
:102840008D919C9111979B01281B390BE85DF94FE5 |
:102850003183208311967C936E932196D0930C0242 |
:10286000C0930B02FF91EF91DF91CF91BF91AF9198 |
:102870009F918F917F916F915F914F913F912F9198 |
:102880001F910F910F900FBE0F901F901895AF9250 |
:10289000BF92CF92DF92EF92FF920F931F9310920D |
:1028A0007A008091F701882369F08091EB01909183 |
:1028B000EC016091F70177270E94343170937B0619 |
:1028C00060937A068091F801882369F08091ED0188 |
:1028D0009091EE016091F80177270E943431709356 |
:1028E0007906609378068091F901882369F08091D8 |
:1028F000EF019091F0016091F90177270E94343146 |
:1029000070938706609386068091FA018823D9F137 |
:10291000E0908306F09084066091F3017091F401D9 |
:102920002091FA010027F7FC0095102F570168014C |
:1029300043E0AA0CBB1CCC1CDD1C4A95D1F7AE1899 |
:10294000BF08C00AD10A882777FD8095982F34E008 |
:10295000660F771F881F991F3A95D1F733274427B1 |
:1029600055270E946931A20EB31EC41ED51EC60192 |
:10297000B50128E030E040E050E00E94693130933A |
:102980008406209383068091FB018823D9F1E0908F |
:102990008C06F0908D066091F1017091F20120910A |
:1029A000FB010027F7FC0095102F5701680183E019 |
:1029B000AA0CBB1CCC1CDD1C8A95D1F7AE18BF0835 |
:1029C000C00AD10A882777FD8095982FB4E0660F5A |
:1029D000771F881F991FBA95D1F7332744275527AA |
:1029E0000E946931A20EB31EC41ED51EC601B501D8 |
:1029F00028E030E040E050E00E94693130938D06DD |
:102A000020938C068091FC018823A1F1E0907D0643 |
:102A1000F0907E066091F5017091F6012091FC0125 |
:102A20000027F7FC0095102F57016801A3E0AA0CBE |
:102A3000BB1CCC1CDD1CAA95D1F7AE18BF08C00A80 |
:102A4000D10A882777FD8095982F3327442755276B |
:102A50000E946931A20EB31EC41ED51EC601B50167 |
:102A600028E030E040E050E00E94693130937E067B |
:102A700020937D061092EC011092EB011092F70169 |
:102A80001092EE011092ED011092F8011092F001F7 |
:102A90001092EF011092F9011092F2011092F101DF |
:102AA0001092FB011092F4011092F3011092FA01BE |
:102AB0001092F6011092F5011092FC0180914402EF |
:102AC00090914502A0914602B09147028093300256 |
:102AD00090933102A0933202B0933302809134027A |
:102AE00090913502A0913602B09137028093200276 |
:102AF00090932102A0932202B093230280913C0282 |
:102B000090913D02A0913E02B0913F028093280235 |
:102B100090932902A0932A02B0932B02809138024D |
:102B200090913902A0913A02B0913B028093240225 |
:102B300090932502A0932602B09327028091400231 |
:102B400090914102A0914202B091430280932C02E5 |
:102B500090932D02A0932E02B0932F028FEE8093BC |
:102B60007A0080917A0690917B06893C91057CF0F1 |
:102B700020917A0630917B0680917A0690917B06AF |
:102B8000880F991F880F991F2052334015C08091DC |
:102B90007A0690917B0688539F4FA4F420917A0681 |
:102BA00030917B0680917A0690917B06880F991F61 |
:102BB000880F991F205E3C4F820F931F90937B06D6 |
:102BC00080937A068091780690917906893C9105E8 |
:102BD0007CF020917806309179068091780690916A |
:102BE0007906880F991F880F991F2052334015C00E |
:102BF000809178069091790688539F4FA4F4209194 |
:102C00007806309179068091780690917906880F40 |
:102C1000991F880F991F205E3C4F820F931F90933E |
:102C2000790680937806209158023091590280915C |
:102C30004206E82FFF27EE0FFF1FEE5EF94F80815F |
:102C4000918182599F4F281739071CF42F5F3F4FFE |
:102C50000CC08081918182599F4F821793074CF459 |
:102C60002115310531F02150304030935902209325 |
:102C7000580220915A0230915B0280914306E82F5E |
:102C8000FF27EE0FFF1FEE5EF94F80819181825981 |
:102C90009F4F281739071CF42F5F3F4F0CC08081CE |
:102CA000918182599F4F821793074CF4211531056A |
:102CB00031F02150304030935B0220935A02209132 |
:102CC0005C0230915D0280914406E82FFF27EE0FF1 |
:102CD000FF1FEE5EF94F8081918182599F4F281727 |
:102CE00039071CF42F5F3F4F0CC0808191818259BE |
:102CF0009F4F821793074CF42115310531F0215075 |
:102D0000304030935D0220935C0220915E0230914E |
:102D10005F0280914506E82FFF27EE0FFF1FEE5E52 |
:102D2000F94F8081918182599F4F281739071CF4F0 |
:102D30002F5F3F4F0CC08081918182599F4F821736 |
:102D400093074CF42115310531F021503040309378 |
:102D50005F0220935E02809158029091590297FF82 |
:102D600005C010925902109258020AC08F3F910577 |
:102D700039F034F08FEF90E090935902809358022D |
:102D800080915A0290915B0297FF05C010925B02FE |
:102D900010925A020AC08F3F910539F034F08FEF3C |
:102DA00090E090935B0280935A0280915C02909134 |
:102DB0005D0297FF05C010925D0210925C020AC08E |
:102DC0008F3F910539F034F08FEF90E090935D02E2 |
:102DD00080935C0280915E0290915F0297FF05C034 |
:102DE00010925F0210925E020AC08F3F910539F087 |
:102DF00034F08FEF90E090935F0280935E021F911A |
:102E00000F91FF90EF90DF90CF90BF90AF9008951B |
:102E100010927A008091F701882369F08091EB018C |
:102E20009091EC016091F70177270E943431709303 |
:102E30007B0660937A068091F801882369F080917F |
:102E4000ED019091EE016091F80177270E943431F5 |
:102E500070937906609378068091F901882369F070 |
:102E60008091EF019091F0016091F90177270E9424 |
:102E7000343170938706609386068091FA01882327 |
:102E8000D1F06091F3017091F4012091FA0188274B |
:102E900077FD8095982F34E0660F771F881F991F64 |
:102EA0003A95D1F73327442755270E94693130934B |
:102EB0008406209383068091FB018823D1F06091E2 |
:102EC000F1017091F2012091FB01882777FD809537 |
:102ED000982FB4E0660F771F881F991FBA95D1F716 |
:102EE0003327442755270E94693130938D0620935C |
:102EF0008C068091FC01882399F06091F501709116 |
:102F0000F6012091FC01882777FD8095982F3327C3 |
:102F1000442755270E94693130937E0620937D0611 |
:102F20001092EC011092EB011092F7011092EE0159 |
:102F30001092ED011092F8011092F0011092EF0141 |
:102F40001092F9011092F2011092F1011092FB011E |
:102F50001092F4011092F3011092FA011092F6010E |
:102F60001092F5011092FC018FEE80937A0020916F |
:102F700058023091590280914206E82FFF27EE0F48 |
:102F8000FF1FEE5EF94F8081918182599F4F281774 |
:102F900039071CF42F5F3F4F0CC08081918182590B |
:102FA0009F4F821793074CF42115310531F02150C2 |
:102FB0003040309359022093580220915A023091A8 |
:102FC0005B0280914306E82FFF27EE0FFF1FEE5EA6 |
:102FD000F94F8081918182599F4F281739071CF43E |
:102FE0002F5F3F4F0CC08081918182599F4F821784 |
:102FF00093074CF42115310531F0215030403093C6 |
:103000005B0220935A0220915C0230915D02809114 |
:103010004406E82FFF27EE0FFF1FEE5EF94F808179 |
:10302000918182599F4F281739071CF42F5F3F4F1A |
:103030000CC08081918182599F4F821793074CF475 |
:103040002115310531F02150304030935D0220933D |
:103050005C0220915E0230915F0280914506E82F6C |
:10306000FF27EE0FFF1FEE5EF94F8081918182599D |
:103070009F4F281739071CF42F5F3F4F0CC08081EA |
:10308000918182599F4F821793074CF42115310586 |
:1030900031F02150304030935F0220935E028091E6 |
:1030A00058029091590297FF05C010925902109250 |
:1030B00058020AC08F3F910539F034F08FEF90E04D |
:1030C000909359028093580280915A0290915B022A |
:1030D00097FF05C010925B0210925A020AC08F3F00 |
:1030E000910539F034F08FEF90E090935B0280937C |
:1030F0005A0280915C0290915D0297FF05C0109288 |
:103100005D0210925C020AC08F3F910539F034F0E5 |
:103110008FEF90E090935D0280935C0280915E025D |
:1031200090915F0297FF05C010925F0210925E02BD |
:1031300008958F3F910539F034F08FEF90E0909330 |
:103140005F0280935E0208951F93809149068B3F32 |
:1031500098F08B3F19F4809158020EC08C3F19F4FF |
:1031600080915A0209C08D3F19F480915C0204C01D |
:103170008E3F21F480915E028093810180918101D4 |
:10318000882319F41092810104C08F3F11F48093B9 |
:103190008101809148068B3F98F08B3F19F4809114 |
:1031A00058020EC08C3F19F480915A0209C08D3F1D |
:1031B00019F480915C0204C08E3F21F480915E027C |
:1031C0008093800180918001882319F410928001FE |
:1031D00005C0843618F084E68093800180914A0609 |
:1031E0008B3F98F08B3F19F4809158020EC08C3FB2 |
:1031F00019F480915A0209C08D3F19F480915C0244 |
:1032000004C08E3F21F480915E0280938201809100 |
:103210008201882319F41092820105C0843618F0C7 |
:1032200084E68093820180914C068B3F98F08B3F1F |
:1032300019F4809158020EC08C3F19F480915A0203 |
:1032400009C08D3F19F480915C0204C08E3F21F4C7 |
:1032500080915E028093830180918301882319F419 |
:103260001092830104C08F3F11F4809383018091F9 |
:1032700053068B3F98F08B3F19F4809158020EC093 |
:103280008C3F19F480915A0209C08D3F19F4809146 |
:103290005C0204C08E3F21F480915E028093840121 |
:1032A00080918401882319F41092840104C08F3F17 |
:1032B00011F480938401809154068B3F98F08B3FEA |
:1032C00019F4809158020EC08C3F19F480915A0273 |
:1032D00009C08D3F19F480915C0204C08E3F21F437 |
:1032E00080915E0280938501809185018B3010F47E |
:1032F0008AE002C08F3F11F48093850180915506CA |
:103300008B3F98F08B3F19F4809158020EC08C3F90 |
:1033100019F480915A0209C08D3F19F480915C0222 |
:1033200004C08E3F21F480915E02809386018091DB |
:103330008601882319F41092860104C08F3F11F48E |
:103340008093860180915A068B3F98F08B3F19F449 |
:10335000809158020EC08C3F19F480915A0209C026 |
:103360008D3F19F480915C0204C08E3F21F480915E |
:103370005E028093880180918801882319F410925D |
:10338000880104C08F3F11F48093880180915B060F |
:103390008B3F98F08B3F19F4809158020EC08C3F00 |
:1033A00019F480915A0209C08D3F19F480915C0292 |
:1033B00004C08E3F21F480915E0280936C02809164 |
:1033C0006C02882319F410926C0204C08F3F11F430 |
:1033D00080936C0280915C068B3F98F08B3F19F4D0 |
:1033E000809158020EC08C3F19F480915A0209C096 |
:1033F0008D3F19F480915C0204C08E3F21F48091CE |
:103400005E0280936D0280916D02882319F4109200 |
:103410006D0204C08F3F11F480936D0280915D06B0 |
:103420008B3F98F08B3F19F4809158020EC08C3F6F |
:1034300019F480915A0209C08D3F19F480915C0201 |
:1034400004C08E3F21F480915E0280936E028091D1 |
:103450006E02882319F410926E0204C08F3F11F49B |
:1034600080936E0280915E068B3F98F08B3F19F43B |
:10347000809158020EC08C3F19F480915A0209C005 |
:103480008D3F19F480915C0204C08E3F21F480913D |
:103490005E0280936F0280916F02882319F410926C |
:1034A0006F0204C08F3F11F480936F0290915F060A |
:1034B0009B3FB0F09B3F19F48091580204C09C3FA1 |
:1034C00029F480915A02809389010CC09D3F19F420 |
:1034D00080915C02F8CF9E3F29F480915E02F3CF89 |
:1034E0009093890180918901882319F410928901B0 |
:1034F00004C08F3F11F4809389019B3FB0F09B3F44 |
:1035000019F48091580204C09C3F29F480915A021A |
:10351000809389010CC09D3F19F480915C02F8CF23 |
:103520009E3F29F480915E02F3CF909389018091B0 |
:103530008901882319F41092890104C08F3F11F486 |
:10354000809389019B3FB0F09B3F19F48091580212 |
:1035500004C09C3F29F480915A02809389010CC0D9 |
:103560009D3F19F480915C02F8CF9E3F29F4809131 |
:103570005E02F3CF9093890180918901882319F429 |
:103580001092890104C08F3F11F48093890110913A |
:103590008801612F772767FD7095872F972F0E94ED |
:1035A0003F3017FF06C020E030E040E853E40E94BF |
:1035B0009A2F27E137EB41ED58E30E94B930609331 |
:1035C0007C0170937D0180937E0190937F018091B7 |
:1035D0005106809385068091500680937C061F914A |
:1035E000089581E080933E0642E040933F0683E0E9 |
:1035F0008093400624E02093410635E03093420654 |
:1036000086E08093430687E0809344061092460646 |
:103610008EE1809347068BEF809349068AE0809382 |
:103620004A0692E39093480690934C0640934B06CB |
:1036300020934D0610924E0680E180934F068FE056 |
:10364000809350068AEF809351068AE18093520658 |
:1036500080E8809353068FEA809354068093550642 |
:103660008AE58093560683E28093570684E180932F |
:1036700058061092590630935A0610925B06109223 |
:103680005C0610925D0610925E0684E680935F06EB |
:1036900088E280936006109264069093610686E942 |
:1036A0008093620630936306ACE6B6E0E8E6F1E0AC |
:1036B0008CE001900D928150E1F7089581E08093B4 |
:1036C0003E0652E050933F0683E08093400644E07C |
:1036D0004093410635E03093420686E080934306EE |
:1036E00087E08093440628E0209345061092460622 |
:1036F0009EE1909347068BEF809349068AE0809382 |
:103700004A0686E48093480690934C0650934B06F5 |
:1037100040934D0620934E0680E180934F068FE044 |
:10372000809350068AEF809351068AE18093520677 |
:1037300080E88093530688E78093540696E9909337 |
:1037400055068AE58093560683E28093570684E106 |
:10375000809358061092590630935A0610925B06D1 |
:1037600010925C0610925D0610925E0684E68093CD |
:103770005F0688E2809360061092640682E380937D |
:1037800061069093620630936306ACE6B6E0E0E72C |
:10379000F1E08CE001900D928150E1F70895809165 |
:1037A0006702882301F51092B0021092AF021092C6 |
:1037B000B7031092E2038091D201882311F0809325 |
:1037C000AF028091D301882311F08093B0028091E1 |
:1037D000D401882311F08093E2038091D5018823DE |
:1037E00011F08093B7038091AF0299279093F00571 |
:1037F0008093EF058091B00299279093F205809312 |
:10380000F1058091E20399279093F4058093F305E5 |
:103810008091B70399279093F6058093F505109250 |
:103820000802109209020E94E1120895CF93DF93DB |
:10383000109217021092160210921902109218029A |
:1038400080E090E0A0E0B0E080931A0290931B0229 |
:10385000A0931C02B0931D0210921102109210024C |
:10386000109213021092120210921502109214027A |
:103870000E94081785E090E00E94920AEC01CE01B8 |
:103880000E949B0A8823D9F30E940817809146065C |
:1038900080FF10C080910A0190910B01875B9340DB |
:1038A00038F480910A0190910B018E5E924010F4E1 |
:1038B0000E94B70E80917A0690917B0697FF03C015 |
:1038C000909581959F4F9093110280931002809163 |
:1038D00078069091790697FF03C0909581959F4F48 |
:1038E000909313028093120280918606909187062E |
:1038F00097FF03C0909581959F4F909315028093F9 |
:10390000140280918C0690918D0697FF03C09095CC |
:1039100081959F4F60E170E00E94343170931902ED |
:1039200060931802809183069091840697FF03C0EC |
:10393000909581959F4F60E170E00E9434317093C3 |
:103940001702609316026091FA057091FB058827B3 |
:1039500077FD8095982F0E943F3060931A027093F4 |
:103960001B0280931C0290931D021092340210924D |
:1039700035021092360210923702109238021092DD |
:10398000390210923A0210923B0210923C021092BD |
:103990003D0210923E0210923F021092400210929D |
:1039A000410210924202109243021092440210927D |
:1039B0004502109246021092470210927B06109226 |
:1039C0007A06109279061092780610928706109265 |
:1039D00086068091060190910701A0910801B0919F |
:1039E00009019093FD058093FC051092FE01109251 |
:1039F000FD0110924C0210924D0210924E02109254 |
:103A00004F02809150029091510290935302809303 |
:103A100052020E94D82782E390E09093E5018093C0 |
:103A2000E401DF91CF9108951F93182F0EC080916C |
:103A30006702882361F484E690E09093E501809327 |
:103A4000E4018AEF90E00E947B0B115080F71F91F8 |
:103A500008952F923F924F925F926F927F928F9232 |
:103A60009F92AF92BF92CF92DF92EF92FF920F930D |
:103A70001F93CF93DF93CDB7DEB728970FB6F89497 |
:103A8000DEBF0FBECDBF0E944714299AE0914006C9 |
:103A9000AE2FBB27AA0FBB1FAE5EB94F0D90BC91D6 |
:103AA000A02D9D0128583F4F3A83298337FF02C03C |
:103AB0001A82198280916002843608F04AC080918F |
:103AC0000101882331F484EF91E09093E501809324 |
:103AD000E40180917B0290917C02009731F0019784 |
:103AE00090937C0280937B0204C010926702109234 |
:103AF0005602289A8091760290917702815D9740D4 |
:103B000028F180915706482F55275A83498381E031 |
:103B100080935602E0913E06FF27EE0FFF1FEE5EF8 |
:103B2000F94F11821082E0913F06FF27EE0FFF1F31 |
:103B3000EE5EF94F11821082E0914106FF27EE0FF1 |
:103B4000FF1FEE5EF94F11821082CEC11092670204 |
:103B5000CBC1809160028D3808F4C6C11092560224 |
:103B60008091580622E3829FC001112490937C0229 |
:103B700080937B0269817A81693271056CF0809152 |
:103B80007602909177027FEF8F3F970781F1019640 |
:103B900090937702809376028091760290917702DB |
:103BA000883C910520F089819A81889704F51092CC |
:103BB000910210929202109293021092940210922B |
:103BC0008D0210928E0210928F021092900210922B |
:103BD000440210924502109246021092470210923F |
:103BE00048021092490210924A0210924B02E98157 |
:103BF000FA81E93CF1050CF4D6C080916702882374 |
:103C000009F072C1E0914106FF27EE0FFF1FEE5E43 |
:103C1000F94F808191818C3491050CF4C1C0809161 |
:103C20007A028F5F80937A02893C08F45DC12998FB |
:103C30000E94161C1092670210927A02109277026C |
:103C40001092760280913E06282F3327F901EE0F5D |
:103C5000FF1FEE5EF94F80819181873491059CF4BE |
:103C6000E0913F06FF27EE0FFF1FEE5EF94F019038 |
:103C7000F081E02DF7FF03C0F095E195FF4FE734A9 |
:103C8000F1050CF46CC080913F06682F7727DB01AB |
:103C9000AA0FBB1FAE5EB94F8D919C9111978734CF |
:103CA00091053CF0F901EE0FFF1FEE5EF94F8081A8 |
:103CB00091818D919C918734910564F0F901EE0F0B |
:103CC000FF1FEE5EF94F808191818734910514F0DA |
:103CD00042E001C041E0FB01EE0FFF1FEE5EF94F35 |
:103CE00080819181863491055CF4F901EE0FFF1F0C |
:103CF000EE5EF94F80819181873491050CF043E0AD |
:103D0000FB01EE0FFF1FEE5EF94F808191818A5B10 |
:103D10009F4F5CF4F901EE0FFF1FEE5EF94F8081BB |
:103D20009181873491050CF044E0660F771F6E5E39 |
:103D3000794FFB01808191818A5B9F4F5CF4220F58 |
:103D4000331F2E5E394FF9018081918186349105B0 |
:103D50000CF445E0A2E0B0E0042E0E948C310E94F9 |
:103D600007024AE36EE376E00E9426020E94070201 |
:103D70000E94141D8091460680FFB6C080910A0102 |
:103D800090910B01875B934040F480910A019091E0 |
:103D90000B018E5E924008F0A7C00E94B70EA4C02F |
:103DA00010927A02A1C049815A81433251050CF028 |
:103DB0009BC080914106482F5527FA01EE0FFF1F47 |
:103DC000EE5EF94F80819181855B9F4F0CF06DC055 |
:103DD000809179028F5F80937902893C08F467C0F3 |
:103DE00088EC8093790281E090E090937702809351 |
:103DF000760281E0809367021092890210928A0213 |
:103E000010928B0210928C02109244021092450282 |
:103E100010924602109247021092480210924902F4 |
:103E200010924A0210924B02109234021092350204 |
:103E3000109236021092370210923C0210923D020C |
:103E400010923E0210923F02809120029091210236 |
:103E5000A0912202B09123028093380290933902FC |
:103E6000A0933A02B0933B028091280290912902DC |
:103E7000A0912A02B0912B028093400290934102BC |
:103E8000A0934202B09343021092910210929202C8 |
:103E9000109293021092940210928D0210928E0250 |
:103EA00010928F021092900202C010927902440F79 |
:103EB000551F4E5E594FFA01808191818C349105D6 |
:103EC0008CF0809178028F5F80937802893C60F05B |
:103ED0001092670288EC8093780210927702109219 |
:103EE000760202C01092780280916701815080931F |
:103EF0006701809167018F3F29F0809156028823E6 |
:103F000009F412C10E94A418E0913E06FF27EE0FAB |
:103F1000FF1FDF01AE5EB94F8D919C9160914D0600 |
:103F20007727E85DF94F2081318140914E06552772 |
:103F3000FC01E69FC001E79F900DF69F900D1124B4 |
:103F4000F901E49F9001E59F300DF49F300D11249D |
:103F5000820F931F9093620280936102E0913F066B |
:103F6000FF27EE0FFF1FDF01AE5EB94F8D919C91D1 |
:103F7000E85DF94F20813181FC01E69FC001E79F98 |
:103F8000900DF69F900D1124B901649F9001659FDB |
:103F9000300D749F300D1124820F931F9093640293 |
:103FA00080936302E0914106FF27EE0FFF1FEE5E54 |
:103FB000F94F80819181909581959F4F90936602F2 |
:103FC0008093650210918501612F772767FD7095B9 |
:103FD000872F972F0E943F3017FF06C020E030E068 |
:103FE00040E853E40E949A2F20E030E040E251E4A0 |
:103FF0000E949A2F20E030E040E85BE30E94B93055 |
:104000005B016C01609388067093890680938A0631 |
:1040100090938B0610918601612F772767FD70952D |
:10402000872F972F0E943F3017FF06C020E030E017 |
:1040300040E853E40E949A2F20E030EE4BE257E430 |
:104040000E94DC2F60937F06709380068093810628 |
:10405000909382068091460682FF0CC080E090E03B |
:10406000A0E0B0E080937F0690938006A093810645 |
:10407000B093820620E030E040E050E0C601B50198 |
:104080000E944930882364F480E090E0A0E0B0E032 |
:104090008093880690938906A0938A06B0938B0636 |
:1040A00020E030E040E050E060917F0670918006B3 |
:1040B00080918106909182060E944930882364F4A1 |
:1040C00080E090E0A0E0B0E080937F0690938006CF |
:1040D000A0938106B093820680915602882321F135 |
:1040E00010926602109265021092620210926102B2 |
:1040F00010926402109263028DEC9CECACECBDE378 |
:104100008093880690938906A0938A06B0938B06C5 |
:104110008AE097EDA3EABBE380937F069093800645 |
:10412000A0938106B09382068091FF0190910002D6 |
:104130008D54914008F4BCC0209124023091250296 |
:1041400040912602509127028091200290912102F5 |
:10415000A0912202B0912302B901681B790B7093E0 |
:10416000800260937F0220912C0230912D024091B9 |
:104170002E0250912F028091280290912902A09145 |
:104180002A02B0912B02281B390B30937E02209318 |
:104190007D02109200021092FF01673A710534F01F |
:1041A0008091100290911102019608C06A557F4FCC |
:1041B0004CF480911002909111020197909311029A |
:1041C00080931002273A310534F0809112029091C9 |
:1041D0001302019608C02A553F4F4CF480911202F9 |
:1041E0009091130201979093130280931202809191 |
:1041F000480290914902A0914A02B0914B02873A3D |
:104200009105A105B1054CF0809114029091150221 |
:104210000197909315028093140280914802909127 |
:104220004902A0914A02B0914B028A559F4FAF4F6D |
:10423000BF4F4CF480911402909115020196909317 |
:1042400015028093140210927A00809120029091BE |
:104250002102A0912202B091230280933802909310 |
:104260003902A0933A02B0933B02809128029091C8 |
:104270002902A0912A02B0912B02809340029093D0 |
:104280004102A0934202B093430280913002909188 |
:104290003102A0913202B091330280934802909390 |
:1042A0004902A0934A02B0934B028FEE80937A00AA |
:1042B000609120027091210280912202909123024C |
:1042C00020915206622E772488249924E090830658 |
:1042D000F0908406A40193010E9469310027F7FC45 |
:1042E0000095102F2E193F09400B510BCA01B9013F |
:1042F00020E130E040E050E00E94693159016A015C |
:10430000209385023093860240938702509388025F |
:10431000609128027091290280912A0290912B02CB |
:10432000E0908C06F0908D06A40193010E94693103 |
:104330000027F7FC0095102F2E193F09400B510B59 |
:10434000CA01B90120E130E040E050E00E9469314B |
:10435000209381023093820240938302509384021F |
:10436000F5EFAF16F1E0BF06F0E0CF06F0E0DF06B4 |
:104370002CF084EF91E0A0E0B0E00DC06CE0A61658 |
:104380006EEFB6066FEFC6066FEFD60664F48CE0EC |
:104390009EEFAFEFBFEF8093850290938602A093CC |
:1043A0008702B0938802253F71E0370770E0470726 |
:1043B00070E057072CF084EF91E0A0E0B0E009C076 |
:1043C0002C503E4F4F4F5F4F64F48CE09EEFAFEFA9 |
:1043D000BFEF8093810290938202A0938302B093F7 |
:1043E000840210927A008091340290913502A0915B |
:1043F0003602B091370220918502309186024091B9 |
:10440000870250918802821B930BA40BB50B8093FB |
:10441000340290933502A0933602B0933702809114 |
:104420003C0290913D02A0913E02B0913F0220914A |
:104430008102309182024091830250918402821B5A |
:10444000930BA40BB50B80933C0290933D02A09379 |
:104450003E02B0933F0280916502909166029C01FA |
:10446000442737FD4095542F2B833C834D835E8337 |
:104470002093890230938A0240938B0250938C02DE |
:1044800097FF03C0909581959F4F84973CF0809152 |
:10449000460684FD03C081E080937202A09044022E |
:1044A000B0904502C0904602D09047028B819C811B |
:1044B00097FF03C0909581959F4F7C010027F7FCE3 |
:1044C0000095102F20914F063327442755276B81E5 |
:1044D0007C818D819E810E9401319B01AC01C801CC |
:1044E000B7010E94013120E031E040E050E00E943D |
:1044F0006931442737FD4095542FA21AB30AC40AE4 |
:10450000D50AA0924402B0924502C0924602D092CF |
:1045100047028091440290914502A0914602B091D9 |
:10452000470281539547A040B04064F080E395E78F |
:10453000A0E0B0E08093440290934502A09346022D |
:10454000B09347028091440290914502A0914602A7 |
:10455000B0914702805D9A48AF4FBF4F64F480ED41 |
:104560009AE8AFEFBFEF8093440290934502A09387 |
:104570004602B09347028FEE80937A0080915002FA |
:1045800090915102892B09F4A1C08091460683FFC6 |
:104590009DC0609120027091210280912202909131 |
:1045A000230220E032E040E050E00E9469318901BE |
:1045B00037FF03C0109501951F4F6091280270913D |
:1045C000290280912A0290912B0220E032E040E003 |
:1045D00050E00E946931B90137FF03C070956195C1 |
:1045E0007F4F601771070CF4B80169317105A4F4AD |
:1045F00080917202882381F0809170029091710203 |
:10460000892B51F480915002909151029093530262 |
:104610008093520210927202209184013327629F8C |
:10462000C001639F900D729F900D112460E470E0B3 |
:104630000E943431A901461B570B141615060CF0C5 |
:104640003FC010927A0020917002309171022115C2 |
:10465000310561F500914402109145022091460216 |
:10466000309147028091540290915502FC01E49FE1 |
:10467000C001E59F900DF49F900D112460E270E061 |
:104680000E943431882777FD8095982F060F171FD9 |
:10469000281F391F009344021093450220934602BD |
:1046A000309347028FEE80937A0010C08FEE809394 |
:1046B0007A0021503040309371022093700206C07E |
:1046C00084EF91E090937102809370028091D605FF |
:1046D0008F5F8093D605809173028150809373021F |
:1046E0008F3F09F063C081E38093730260912002E1 |
:1046F000709121028091220290912302A4019301E2 |
:104700000E9469313093D8052093D7056091280223 |
:104710007091290280912A0290912B02A4019301A9 |
:104720000E9469313093DA052093D9058091830680 |
:10473000909184069093DC058093DB0580918C0634 |
:1047400090918D069093DE058093DD05809186061D |
:10475000909187069093E0058093DF058091680231 |
:10476000909169029093E2058093E10560914C027B |
:1047700070914D0280914E0290914F0220E032E004 |
:1047800040E050E00E9469313093E4052093E30556 |
:1047900029813A813093E6052093E5058091500206 |
:1047A000909151029093E8058093E7056091200273 |
:1047B00070912102809122029091230220907F0625 |
:1047C000309080064090810650908206E0907A06F4 |
:1047D000F0907B06609088067090890680908A062B |
:1047E00090908B060E943F30A20191010E94B93047 |
:1047F0005B016C010027F7FC0095102FC801B70181 |
:104800000E943F30A40193010E94B9309B01AC018A |
:10481000C601B5010E949A2F0E94223070937B0638 |
:1048200060937A06609128027091290280912A0291 |
:1048300090912B02E0907806F09079060E943F302C |
:10484000A20191010E94B9305B016C010027F7FCC5 |
:104850000095102FC801B7010E943F30A4019301B9 |
:104860000E94B9309B01AC01C601B5010E949A2F8C |
:104870000E942230709379066093780660918606D4 |
:1048800070918706A0903002B0903102C090320241 |
:10489000D0903302882777FD8095982F0E943F3073 |
:1048A0007B018C0120E030E040E05FE3C401B30114 |
:1048B0000E94B9309B01AC01C801B7010E94B93018 |
:1048C0007B018C01C601B5010E943F30A20191011C |
:1048D0000E94B9309B01AC01C801B7010E949A2F18 |
:1048E0000E942230709387066093860680917A0634 |
:1048F00090917B068150984034F080E098E090934E |
:104900007B0680937A0680917A0690917B06805090 |
:10491000984F34F480E098EF90937B0680937A066A |
:1049200080917806909179068150984034F080E02B |
:1049300098E090937906809378068091780690911C |
:1049400079068050984F34F480E098EF9093790680 |
:1049500080937806809186069091870681509840D2 |
:1049600034F080E098E090938706809386068091EB |
:104970008606909187068050984F34F480E098EF37 |
:10498000909387068093860680914606992780FF3C |
:10499000CFC02091810181FF0EC02233B0F48091FD |
:1049A000680290916902449790936B0280936A0227 |
:1049B000109257020DC080914B06289FC001112410 |
:1049C000449790936B0280936A0281E08093570230 |
:1049D00080915602882321F010926B0210926A0295 |
:1049E000209168023091690240916A0250916B02F5 |
:1049F000421753070CF09CC080915702882309F49A |
:104A000097C0241B350B809182019927AC01249F0C |
:104A1000C001259F900D349F900D112460E170E03E |
:104A20000E94343109811A81061B170B2091FD0168 |
:104A30003091FE01809180019927BC01269FC00121 |
:104A4000279F900D369F900D112468E070E00E9422 |
:104A50003431061B170B60914C0270914D0280910E |
:104A60004E0290914F0220E032E040E050E00E9480 |
:104A70006931CA01B90120918301332744275527A1 |
:104A80000E94013120E230E040E050E00E946931B4 |
:104A9000A9012E5C3F4F14F44EEC5FEF209174029D |
:104AA000309175028FE090E0FC012E9FC0012F9F96 |
:104AB000900D3E9F900D11249A014333510514F03F |
:104AC00022E330E0021B130B800F911F60E170E0C6 |
:104AD0000E9434317093750260937402809147068E |
:104AE0009927681779078CF429813A8128173907A3 |
:104AF0002CF0909375028093740207C049815A810B |
:104B000050937502409374020DC08091740290918D |
:104B1000750269817A816817790724F470937502A8 |
:104B20006093740280917402909175029A838983D4 |
:104B3000C0908606D0908706EB81FC81CE1ADF0AF2 |
:104B4000F5E6CF16D10424F064E6C62ED12C09C0B8 |
:104B50002CE9C2162FEFD20624F45CE9C52E5FEFD4 |
:104B6000D52E409078015090790160907A01709034 |
:104B70007B0160917A0670917B06209161023091F1 |
:104B800062024091950250919602241B350B621BE4 |
:104B9000730B882777FD8095982F0E943F309B01EB |
:104BA000AC01C301B2010E94B9300E94223070935F |
:104BB000B6036093B5038091B5039091B6038C0161 |
:104BC000222717FD2095322F809191029091920219 |
:104BD000A0919302B0919402080F191F2A1F3B1F46 |
:104BE00000939102109392022093930230939402C7 |
:104BF0001016110612061306ACF4C80117FF03C005 |
:104C0000909581959F4F60E071E00E9434316F5F15 |
:104C10007F4F882777FD8095982F061B170B280B51 |
:104C2000390B14C0C80117FF03C0909581959F4FA1 |
:104C300060E071E00E9434316F5F7F4F882777FD1D |
:104C40008095982F060F171F281F391F0093910278 |
:104C500010939202209393023093940280919102D8 |
:104C600090919202A0919302B091940281383EE318 |
:104C7000930730E0A30730E0B3072CF080E89EE311 |
:104C8000A0E0B0E009C08058914CAF4FBF4F64F432 |
:104C900080E891ECAFEFBFEF809391029093920286 |
:104CA000A0939302B09394026091B5037091B60300 |
:104CB00080907C0190907D01A0907E01B0907F015A |
:104CC000882777FD8095982F0E943F307B018C01CB |
:104CD000609191027091920280919302909194025E |
:104CE0000E943F309B01AC01C501B4010E94B93064 |
:104CF0009B01AC01C801B7010E949A2F0E9422308B |
:104D00009601260F371F89819A81280F391F222487 |
:104D10000A9714F441E0242E37FD02C0222019F036 |
:104D200040E050E008C080918506482F55272417A1 |
:104D300035070CF4A90180917C06E82FFF27F8873E |
:104D4000EF839F01E417F5070CF49A012093AF025B |
:104D500029813A81261B370BB9016C0D7D1D77FD2A |
:104D600002C0222019F080E090E007C08091850603 |
:104D70009927681779070CF4CB012F8138852817FC |
:104D800039070CF49C012093B00260917806709171 |
:104D9000790620916302309164024091970250910C |
:104DA0009802241B350B621B730B882777FD8095B7 |
:104DB000982F0E943F309B01AC01C301B2010E94B9 |
:104DC000B9300E9422307093AE026093AD028091A0 |
:104DD000AD029091AE028C01222717FD2095322F53 |
:104DE00080918D0290918E02A0918F02B0919002DD |
:104DF000080F191F2A1F3B1F00938D0210938E026C |
:104E000020938F023093900210161106120613069B |
:104E1000ACF4C80117FF03C0909581959F4F60E0E7 |
:104E200071E00E9434316F5F7F4F882777FD809556 |
:104E3000982F061B170B280B390B14C0C80117FF3E |
:104E400003C0909581959F4F60E071E00E943431DE |
:104E50006F5F7F4F882777FD8095982F060F171F6C |
:104E6000281F391F00938D0210938E0220938F020A |
:104E70003093900280918D0290918E02A0918F02CA |
:104E8000B091900281383EE3930730E0A30730E011 |
:104E9000B3072CF080E89EE3A0E0B0E009C08058A2 |
:104EA000914CAF4FBF4F64F480E891ECAFEFBFEF90 |
:104EB00080938D0290938E02A0938F02B093900204 |
:104EC0006091AD027091AE02882777FD8095982F92 |
:104ED0000E943F307B018C0160918D0270918E02A7 |
:104EE00080918F02909190020E943F309B01AC0113 |
:104EF000C501B4010E94B9309B01AC01C801B701E2 |
:104F00000E949A2F0E94223029813A81260F371F52 |
:104F10002C193D0937FD02C0222019F040E050E075 |
:104F200008C080918506482F5527241735070CF4B3 |
:104F3000A9012F813885241735070CF49A01209395 |
:104F4000E20389819A81861B970BBC016C197D094C |
:104F500077FD02C0222019F020E030E008C08091E7 |
:104F60008506282F3327621773070CF49B018F8166 |
:104F70009885821793070CF4C9018093B70328968C |
:104F80000FB6F894DEBF0FBECDBFDF91CF911F915A |
:104F90000F91FF90EF90DF90CF90BF90AF909F90D8 |
:104FA0008F907F906F905F904F903F902F900895DB |
:104FB00080919D0290919E02A0919F02B091A002CB |
:104FC0008093A5029093A602A093A702B093A80293 |
:104FD0008091A1029091A202A091A302B091A4029B |
:104FE0008093A9029093AA02A093AB02B093AC0263 |
:104FF00010929602109295021092980210929702C7 |
:105000000895CF92DF92EF92FF921F93CF93DF9399 |
:10501000CDB7DEB72A970FB6F894DEBF0FBECDBF6F |
:105020009C01162F40E0E62EFF246E010894C11C5F |
:10503000D11C14C0F701E41BF109EC0DFD1D3197E3 |
:10504000C9016AE070E00E942031805D8083C9015F |
:105050006AE070E00E9420319B014F5F411751F7D9 |
:1050600040E050E0212F332721503040BE016F5FD8 |
:105070007F4FA0E209C04F5F5F4FFB01E80FF91FB0 |
:105080008081803331F4A083842F9927821793077E |
:1050900094F390919B0620E0AE014F5F5F4F0BC0F1 |
:1050A000E92FE20FFF27DA01A20FB11D8C91E45125 |
:1050B000FC4F80832F5F211799F7910F90939B06E8 |
:1050C0002A960FB6F894DEBF0FBECDBFDF91CF9109 |
:1050D0001F91FF90EF90DF90CF900895CF92DF92D5 |
:1050E000EF92FF920F931F93CF93DF93CDB7DEB76D |
:1050F0002A970FB6F894DEBF0FBECDBF9C01F62EE7 |
:1051000097FD02C0EE2405C0309521953F4F81E008 |
:10511000E82E40E00F2D11276E010894C11CD11C10 |
:1051200014C0F801E41BF109EC0DFD1D3197C90114 |
:105130006AE070E00E943431805D8083C9016AE0DA |
:1051400070E00E9434319B014F5F4F1551F712C040 |
:105150002F5F3F4FFE013196E40FF51F80818033B2 |
:1051600019F480E2808308C0EE2071F031978DE25F |
:1051700080830AC020E030E0422F55278F2D9927E9 |
:1051800001974817590724F390919B0620E0AE0140 |
:105190004F5F5F4F0BC0E92FE20FFF27DA01A20F2D |
:1051A000B11D8C91E451FC4F80832F5F2F1599F72F |
:1051B0009F0D90939B062A960FB6F894DEBF0FBE04 |
:1051C000CDBFDF91CF911F910F91FF90EF90DF90B6 |
:1051D000CF900895DC010BC080919B06E82FFF273C |
:1051E000E451FC4F90838F5F80939B0611969C91B6 |
:1051F000992391F708950F931F9310929B06809126 |
:10520000BE0361E099270E9401288AE891E00E948C |
:10521000EA2867E080918E0690918F060E946E28A2 |
:1052200067E080919706909198060E946E280CE89E |
:1052300011E0C8010E94EA2867E0809193069091EE |
:1052400094060E946E2867E080919C0690919D06CE |
:105250000E946E28C8010E94EA2867E080919702A8 |
:10526000909198020E946E2867E08091950290913B |
:1052700096020E946E2880E991E00E94EA2867E089 |
:1052800080916302909164020E946E2867E0809191 |
:105290006102909162020E946E2884E991E00E946E |
:1052A000EA28109200018091EC038093C6001F91C0 |
:1052B0000F9108952F923F924F925F926F927F923B |
:1052C0008F929F92AF92BF92CF92DF92EF92FF9216 |
:1052D0000F931F93CF93DF93CDB7DEB728970FB609 |
:1052E000F894DEBF0FBECDBF80915C0290915D024D |
:1052F0008E37910574F18091BE03882309F446C06E |
:1053000080919206882309F041C080919D0290917E |
:105310009E02A0919F02B091A0028093A50290935B |
:10532000A602A093A702B093A8028091A102909137 |
:10533000A202A091A302B091A4028093A90290932B |
:10534000AA02A093AB02B093AC0281E080939206D4 |
:105350001DC08D379105D4F41092A5021092A602BB |
:105360001092A7021092A8021092A9021092AA020B |
:105370001092AB021092AC0210929602109295021B |
:105380001092980210929702109292068091B102A8 |
:10539000882309F4FEC01092B10281EB92E00E94D2 |
:1053A000472B8091B903882309F4F1C01092B90307 |
:1053B0008091BE03882331F088B194E0892788B9B1 |
:1053C000439805C088B198E0892788B942988091B0 |
:1053D000BF039091C003A091C103B091C203809319 |
:1053E0009D0290939E02A0939F02B093A0022091F1 |
:1053F000C3033091C4034091C5035091C603209369 |
:10540000A1023093A2024093A3025093A402E09021 |
:10541000A502F090A6020091A7021091A802E81A36 |
:10542000F90A0A0B1B0BE0929706F092980600937C |
:10543000990610939A062090A9023090AA024090F3 |
:10544000AB025090AC02221A330A440A550A209249 |
:105450008E0630928F06409290065092910680916F |
:10546000CF039091D003A091D103B091D203222712 |
:105470003327A901281B390B4A0B5B0B2D833E8375 |
:105480004F83588720939C0630939D0640939E0639 |
:1054900050939F068091D3039091D403A091D5039C |
:1054A000B091D60322273327A901281B390B4A0BB9 |
:1054B0005B0B29833A834B835C8320939306309361 |
:1054C0009406409395065093960680919206882301 |
:1054D00009F455C0A0905802B0905902CC24B7FCF2 |
:1054E000C094DC2C60905A0270905B02882477FC98 |
:1054F0008094982CC801B701A60195010E94013142 |
:1055000020E032E040E050E00E94693179018A01F8 |
:105510006D817E818F819885A40193010E94013164 |
:1055200020E830E040E050E00E946931E20EF31ED6 |
:10553000F0929602E0929502C201B101A601950196 |
:105540000E94013120E032E040E050E00E946931E9 |
:1055500079018A0169817A818B819C81A4019301FF |
:105560000E94013120E830E040E050E00E946931C3 |
:10557000E20EF31EF0929802E092970208C0109299 |
:1055800096021092950210929802109297020E9431 |
:10559000FB2828960FB6F894DEBF0FBECDBFDF9173 |
:1055A000CF911F910F91FF90EF90DF90CF90BF9020 |
:1055B000AF909F908F907F906F905F904F903F90B3 |
:1055C0002F900895CF93DF939091A006E92FFF27A6 |
:1055D000EF55F94F8083892F8F5F8093A00681302C |
:1055E00031F48091A106853B09F44EC04BC0823056 |
:1055F00031F48091A206823609F446C043C0863059 |
:1056000008F442C04091A506A82FBB27842F9927F4 |
:105610000896A817B907C4F190E050E0C3EAD6E0B5 |
:10562000FD0132979F012F55394F03C08991980F83 |
:10563000590FC217D307D1F7EF55F94F808198174B |
:1056400009F5A056B94F8C915817E1F48091A30643 |
:105650008093B2028091A4068093B3024093B40277 |
:1056600020E030E0A7EAB6E0E5EBF2E0552704C021 |
:105670008D9181932F5F3F4F24173507C8F381E049 |
:105680008093B1021092A006DF91CF910895CF933D |
:10569000DF93EC012981213009F080C08A818630B6 |
:1056A00009F07CC08C819D81AE81BF818093BA035B |
:1056B0009093BB03A093BC03B093BD038E858093EE |
:1056C000BE03FE01349684859585A685B7858093B3 |
:1056D000BF039093C003A093C103B093C20380891A |
:1056E0009189A289B3898093C3039093C403A09343 |
:1056F000C503B093C60384899589A689B789809329 |
:10570000C7039093C803A093C903B093CA03808DC5 |
:10571000918DA28DB38D8093CB039093CC03A093F6 |
:10572000CD03B093CE03848D958DA68DB78D8093D8 |
:10573000CF039093D003A093D103B093D20380A161 |
:1057400091A1A2A1B3A18093D3039093D403A0937A |
:10575000D503B093D60384A195A1A6A1B7A1809348 |
:10576000D7039093D803A093D903B093DA0380A50D |
:1057700091A5A2A5B3A58093DB039093DC03A0932E |
:10578000DD03B093DE0388A999279093E00380930B |
:10579000DF038BA98093E1032093B903DF91CF91BD |
:1057A00008950F931F93CF93DF93EC01898199277D |
:1057B0009F938F9387E991E09F938F930E94322C60 |
:1057C0008A8199279F938F9384EA91E09F938F9387 |
:1057D0000E94322C8B8199279F938F938EEA91E0C0 |
:1057E0009F938F930E94322C89EB91E09F938F932C |
:1057F0000E94322C00E010E08DB79EB70E960FB6D7 |
:10580000F8949EBF0FBE8DBF11C0FE01E90FF11DC0 |
:10581000848199279F938F9380EC91E09F938F933E |
:105820000E94322C0F900F900F900F90902F0F5FCF |
:105830001F4F8B81981748F386EC91E00E94522C01 |
:10584000DF91CF911F910F910895FC01415050407D |
:1058500030F001900616D1F73197CF0108958827CF |
:1058600099270895CF93DF93CDB7DEB722970FB670 |
:10587000F894DEBF0FBECDBFFE01379661917191E6 |
:10588000FA83E983AF018091A3079091A4070E9456 |
:10589000852C22960FB6F894DEBF0FBECDBFDF91E8 |
:1058A000CF9108950F931F93CF93DF938C01E091D5 |
:1058B000A307F091A407838181FF1FC0C0E0D0E05F |
:1058C0000AC0FD0120853185BD01F9010995892BAB |
:1058D00011F0CFEFDFEFF80181918F01A091A307C5 |
:1058E000B091A407882369F7FD0120853185BD01AA |
:1058F0008AE0F9010995892B11F0CFEFDFEFCE0196 |
:10590000DF91CF911F910F9108952F923F924F9267 |
:105910005F926F927F928F929F92AF92BF92CF923F |
:10592000DF92EF92FF920F931F93CF93DF93CDB748 |
:10593000DEB764970FB6F894DEBF0FBECDBFCC24A0 |
:10594000DD2476011C017C8B6B8B2A01FC01178204 |
:105950001682838181FD03C08FEF9FEF85C2AA2449 |
:10596000BB246FC2A0FE54C28A8980538A30E8F4F7 |
:10597000FA89F03341F42D85222329F4A3FC03C0D6 |
:1059800080E091E06FC08AE0ED85E802C00111245B |
:10599000FA89F80FF053FD87F7FF02C02FE72D8734 |
:1059A000A3FC49C23D853E8746C2C5018870907000 |
:1059B000A3FE05C0ED85EE2311F4F1E0FD872A89F1 |
:1059C000283624F525360CF05BC0233509F480C059 |
:1059D00024358CF42B32C1F12C3234F42032C1F155 |
:1059E000233209F00AC23CC03A893D32B1F13E325D |
:1059F00009F003C23AC08A89833609F449C0843663 |
:105A00000CF081C0883509F0F8C11BC0EA89E03785 |
:105A100009F4A3C0E13744F4EC3669F1EF3671F0D4 |
:105A2000E93609F0EAC16FC0FA89F53709F49DC07B |
:105A3000F83739F0F33709F0E0C134C028E0298B9A |
:105A400094C030E1398B91C080E190E0A82AB92A56 |
:105A5000E0E2F0E0AE2ABF2AEEC120E830E00DC05F |
:105A600080E490E0A82AB92AE6C1E8E0F0E0AE2A96 |
:105A7000BF2A1D86E0C124E030E0A22AB32ADBC1A0 |
:105A80003FE3C32E3E8531503E8783E68A8B41C17A |
:105A9000F201C080FE85F150FE8722E030E0420E28 |
:105AA000531E37C1F201C080D180892B49F0FD859A |
:105AB0006F2F772767FD7095C6010E94612F19C06F |
:105AC000F60101900020E9F73197EC19E98B12C03B |
:105AD000F201C080D180892B49F0FD856F2F772797 |
:105AE00067FD7095C6010E94562F03C0C6010E9433 |
:105AF0004D2F898B22E030E0420E531E3E8589896E |
:105B0000381B3E8706C1A2FE08C0F2018081918148 |
:105B1000A281B38124E030E009C0F201808191814B |
:105B2000AA2797FDA095BA2F22E030E0420E531E1F |
:105B30006C017D01B7FF0CC082E090E0A82AB92A71 |
:105B4000F094E094D094C094C11CD11CE11CF11CD1 |
:105B5000EFEBFFEFAE22BF2221C020E430E0A22A0B |
:105B6000B32A38E73A8B80E1898BA2FE08C0F201A4 |
:105B700080819181A281B38124E030E007C0F201ED |
:105B800080819181AA27BB2722E030E0420E531E7C |
:105B90006C017D018FEC9FEFA822B922870176016D |
:105BA000FE013196F88BEF87F9896F2E77248824D0 |
:105BB0009924C801B701A40193010E9447316A30BA |
:105BC00024F02A89620F615201C0605DEF85F88977 |
:105BD0006193F88BEF87C801B701A40193010E947C |
:105BE000473179018A01211531054105510509F730 |
:105BF000CC24DD247601CE010196CF84C81AC501DC |
:105C000082739070892B19F0FE85F150FE87A6FEF5 |
:105C100009C02989203111F482E001C081E03E856C |
:105C2000381B3E8728E0822E912C8A209B20A3FEE1 |
:105C300018C08D85282F332727FD30958C2D992767 |
:105C4000821793073CF0E7EFFFEFAE22BF228824D4 |
:105C5000992407C0FD85FC19FD872E852F1B2E87F3 |
:105C600003C03E853C193E87C50180789170892B21 |
:105C700069F48E8506C0B10180E290E00E946C2F2D |
:105C8000812F182F11501816B4F31E87A1FE04C0DF |
:105C9000B1018DE290E00BC0A4FE04C0B1018BE223 |
:105CA00090E005C0A5FE05C0B10180E290E00E9431 |
:105CB0006C2FA6FE10C0B10180E390E00E946C2F13 |
:105CC0008989803141F4B101EA898E2F992787FDB6 |
:105CD00090950E946C2FB0FE0DC08E8506C0B1015C |
:105CE00080E390E00E946C2F812F182F115018161E |
:105CF000B4F31E87892869F02D8506C0B10180E3C1 |
:105D000090E00E946C2F212F122F11501216B4F325 |
:105D10001D8790E8692E712C6A207B20A7FC0DC09E |
:105D20008E8506C0B10180E290E00E946C2F812F29 |
:105D3000182F11501816B4F31E87FA89F33641F460 |
:105D4000B1018C2D992787FD90950E946C2F45C03D |
:105D50002A892337B1F446015601198909C0F50192 |
:105D600081915F01B101992787FD90950E946C2F69 |
:105D70001150A8F76401F989CF0ED11C2FEF298BA0 |
:105D80002CC03A89333519F00F8518891FC0460198 |
:105D90008601B98808C0F8018491B10199270E9451 |
:105DA0006C2F0F5F1F4FBA94FFEFBF16A1F764016E |
:105DB0002989C20ED11CF98B10C0F80182918F0184 |
:105DC000B101992787FD90950E946C2FCE01019615 |
:105DD0000817190791F7188B0F876728B1F08E8580 |
:105DE00006C0B10180E290E00E946C2F812F182F35 |
:105DF00011501816B4F31E8708C0B101FA898F2F0D |
:105E0000992787FD90950E946C2FAA24BB2413C06C |
:105E10002A89253241F43AE0398B1E861D8681E0BD |
:105E2000A82EB12C08C0B101EA898E2F992787FDD1 |
:105E300090950E946C2F2B893C892F5F3F4F3C8BA4 |
:105E40002B8BF101838183FF04C0EB89FC89F491E2 |
:105E500003C0EB89FC89F081FA8B2A89222309F09F |
:105E600081CDF1018681978164960FB6F894DEBFEB |
:105E70000FBECDBFDF91CF911F910F91FF90EF909B |
:105E8000DF90CF90BF90AF909F908F907F906F905A |
:105E90005F904F903F902F900895FC010590002057 |
:105EA000E9F7809590958E0F9F1F0895FC0105904E |
:105EB000615070400110D8F7809590958E0F9F1F0C |
:105EC0000895FC016150704001900110D8F7809551 |
:105ED00090958E0F9F1F08950F931F93CF93DF937D |
:105EE0008C01EB018B81992781FF1BC082FF0DC0C4 |
:105EF0002E813F818C819D812817390764F4E881C8 |
:105F0000F9810193F983E88306C0E885F985802F3C |
:105F10000995892B31F48E819F8101969F838E8311 |
:105F200002C00FEF1FEFC801DF91CF911F910F91BA |
:105F300008955058192EEFD001D0D2C0BA17620779 |
:105F4000730784079507B1F188F40EF410940B2EB3 |
:105F5000BA2FA02D062E622F202D072E732F302D45 |
:105F6000082E842F402D092E952F502DFF275523C5 |
:105F7000B9F0591B49F0573E98F04695379527954B |
:105F8000A795F0405395C9F776F0BA0F621F731FBB |
:105F9000841F30F4879577956795B795F040939572 |
:105FA00017FA0F2E0895BF1BBB27BA0B620B730B9A |
:105FB000840BF6CFDEF6DBC0AED001D091C0552306 |
:105FC00059F0992369F09F575F57951B33F442F4BA |
:105FD000903811F4915805C09BC091589F3F09F427 |
:105FE000C6C0BB27112462177307840730F4660FFD |
:105FF000771F881FBB1F915098F311D00F920FD0BD |
:106000000F920DD0A0E82617370748071B0609F0A6 |
:10601000A048BA2F602D7F918F9100240895A0E8A9 |
:106020000024621773078407B10528F0621B730B05 |
:10603000840BB1090A2A660F771F881FBB1FA6951C |
:1060400081F7089597FB73D09F3738F0FEE9F91B6D |
:10605000982F872F762F6B2F05C086C09695879532 |
:1060600077956795F150D0F73EF4909580957095AF |
:1060700061957F4F8F4F9F4F0895E89403C097FB22 |
:106080000EF4F3DFB62F672F782F892F9EE90024B7 |
:1060900027C00ED05EF004C00BD026F001C008D09F |
:1060A00019F020F48FEF089580E0089581E00895BD |
:1060B00097FB092E052600F8689430D0E89407FC79 |
:1060C00007C0621773078407950721F008F400944E |
:1060D0000794989408959A95BB0F661F771F881FA1 |
:1060E00011249923A1F08823B2F79F3F59F0BB0FE9 |
:1060F00048F421F4002011F460FF04C06F5F7F4F6B |
:106100008F4F9F4F881F9795879597F908952CC0BB |
:106110009FEF80EC0895052E092607FA440F551FBE |
:106120005F3F79F0AA27A51708F051E04795880F3F |
:10613000991F9F3F31F0BB27B91708F091E0879571 |
:1061400008959F919F911124E3CF97FB880F991F8A |
:106150009F3F31F0BB27B91708F091E0879508956C |
:106160009F919F911124D4CF66277727882799275D |
:106170000895D1DF01D0B4CF992339F0552329F008 |
:106180009F575F57950F13F49AF1F1CF91589F3FA6 |
:10619000E1F3629FA12D0F92BB27639FA00DB11D5C |
:1061A000EE27729FA00DB11DEE1FAF93AA27649F2B |
:1061B000B00DE11D739FB00DE11DAA1F6627829FE0 |
:1061C000B00DE11DA61F5527749FE00DA11D551FA1 |
:1061D000839FE00DA11D561F849FA00D511D852F8B |
:1061E0007A2F6E2F1F900F9088231AF4939539F40D |
:1061F0008FCF000C111CBB1F661F771F881F012843 |
:106200000895629FD001739FF001829FE00DF11D00 |
:10621000649FE00DF11D929FF00D839FF00D749F20 |
:10622000F00D659FF00D9927729FB00DE11DF91FCC |
:10623000639FB00DE11DF91FBD01CF011124089529 |
:10624000AA1BBB1B51E107C0AA1FBB1FA617B7079C |
:1062500010F0A61BB70B881F991F5A95A9F78095B8 |
:106260009095BC01CD01089597FB092E07260AD011 |
:1062700077FD04D0E5DF06D000201AF47095619513 |
:106280007F4F0895F6F7909581959F4F0895A1E26D |
:106290001A2EAA1BBB1BFD010DC0AA1FBB1FEE1FA0 |
:1062A000FF1FA217B307E407F50720F0A21BB30BEB |
:1062B000E40BF50B661F771F881F991F1A9469F767 |
:1062C00060957095809590959B01AC01BD01CF01C3 |
:1062D000089597FB092E05260ED057FD04D0D7DF71 |
:1062E0000AD0001C38F450954095309521953F4FC9 |
:1062F0004F4F5F4F0895F6F7909580957095619593 |
:106300007F4F8F4F9F4F0895F999FECFB2BDA1BD2A |
:10631000F89A119600B40895F999FECFB2BDA1BDC7 |
:1063200000BC11960FB6F894FA9AF99A0FBE089528 |
:1063300001640A016400007D0000FF030102030400 |
:1063400005060708090A48616C6C6F2057656C7474 |
:10635000000000000000000000000000000000003D |
:10636000000000000000000000000000000000002D |
:10637000000000000000000000000000000000001D |
:10638000000000000000000000000000000000000D |
:106390000000000000000B014B616D6572610000A0 |
:1063A0004E6F726D616C00000000803F17B7D138EE |
:1063B00030FB103A403296020A642000207C200014 |
:1063C000202320000D0A004D7367436C6173733DF9 |
:1063D000257520004D736749643D257520004C6587 |
:1063E0006E6774683D25752000446174613D20002E |
:0863F0002530325820000D0099 |
:00000001FF |
/branches/matosi/GPS.c |
---|
0,0 → 1,290 |
//------------------------------------------------------------------------------ |
// _ _ |
// | | | | |
// ___ _ __ ___ ___ _ _ ___| |_ ___ ___| |__ |
// / _ \ '_ ` _ \/ __| | | / __| __/ _ \/ __| '_ \. |
// | __/ | | | | \__ \ |_| \__ \ || __/ (__| | | | |
// \___|_| |_| |_|___/\__, |___/\__\___|\___|_| |_| |
// __/ | |
// |___/ Engineering |
// |
// Filename: GPS.c |
// Description: |
// |
// Author: Martin Steppuhn |
// History: 15.06.2007 Initial version |
// |
//------------------------------------------------------------------------------ |
/**** Includes ****************************************************************/ |
#include "std_c.h" |
#include "main.h" |
#include "fc.h" |
#include "gps_ubx.h" |
/**** Preprocessing directives (#define) **************************************/ |
/**** Type definitions (typedef) **********************************************/ |
/**** Global constants ********************************************************/ |
/**** Global variables ********************************************************/ |
signed int GPS_Nick = 0; |
signed int GPS_Roll = 0; |
/**** Local constants ********************************************************/ |
/**** Local variables *********************************************************/ |
signed int test_nick = 0; |
signed int test_roll = 0; |
long GpsAktuell_X = 0; |
long GpsAktuell_Y = 0; |
long GpsAktuell_Z = 0; |
long GpsZiel_X = 0; |
long GpsZiel_Y = 0; |
long gps_dx; |
long gps_dy; |
long gps_dz; |
long gps_vx; |
long gps_vy; |
long gps_vz; |
bool gps_hold; |
uint8 print_pos; |
/**** Local function prototypes ***********************************************/ |
void print_uint16(uint16 value,uint8 width); |
void print_int16(int16 value,uint8 width); |
void print_string(char *s); |
//------------------------------------------------------------------------------ |
// Name: GPS_Neutral |
// Function: |
// |
// Parameter: |
// Return: |
//------------------------------------------------------------------------------ |
void GPS_Neutral(void) |
{ |
GpsZiel_X = GpsAktuell_X; |
GpsZiel_Y = GpsAktuell_Y; |
GPS_Nick = 0; |
GPS_Roll = 0; |
// LED_GPS_DATA_OFF; |
//LED_GPS_FIX_OFF; |
//LED_GPS_DATA_ON; |
} |
//------------------------------------------------------------------------------ |
// Name: gps_trace |
// Function: |
// |
// Parameter: |
// Return: |
//------------------------------------------------------------------------------ |
void gps_trace(void) |
{ |
print_pos = 0; |
print_uint16(nav_sol.gpsfix,1); |
print_string(" "); |
print_int16(gps_dy,7); |
print_int16(gps_dx,7); |
print_string(" | "); |
print_int16(gps_vy,7); |
print_int16(gps_vx,7); |
print_string(" | "); |
print_int16(GPS_Roll,7); |
print_int16(GPS_Nick,7); |
print_string(" # "); |
print_int16(StickRoll,7); |
print_int16(StickNick,7); |
print_string("\r\n"); |
UebertragungAbgeschlossen = 0; |
UDR = SendeBuffer[0]; // Start |
} |
//------------------------------------------------------------------------------ |
// Name: gps_main |
// Function: |
// |
// Parameter: |
// Return: |
//------------------------------------------------------------------------------ |
void GPS_Main(void) |
{ |
if((Poti3 > 125) && (nav_sol.gpsfix) && (gps_hold == false)) // Enable Hold |
{ |
GpsZiel_X = GpsAktuell_X; |
GpsZiel_Y = GpsAktuell_Y; |
gps_hold = true; |
} |
if(Poti3 < 125) // Disable Hold |
{ |
GpsZiel_X = 0; |
GpsZiel_Y = 0; |
GPS_Nick = 0; |
GPS_Roll = 0; |
gps_hold = false; |
} |
if(ubx.update) |
{ |
ubx.update = false; |
ubx_decode(&ubx); |
if(nav_sol.update) |
{ |
//trace_nav_sol(); |
nav_sol.update = false; |
if(nav_sol.gpsfix) |
{ |
LED_GPS_FIX_TOGGLE; |
LED_GPS_DATA_OFF; |
} |
else |
{ |
LED_GPS_DATA_TOGGLE; |
LED_GPS_FIX_OFF; |
} |
//=== new Position ==================== |
GpsAktuell_X = nav_sol.ecef_x; |
GpsAktuell_Y = nav_sol.ecef_y; |
gps_dx = GpsZiel_X - GpsAktuell_X; // Süden + |
gps_dy = GpsZiel_Y - GpsAktuell_Y; // Osten + |
gps_vx = -nav_sol.ecefvx; // cm/s ECEF X velocity |
gps_vy = -nav_sol.ecefvy; // cm/s ECEF Y velocity |
if(gps_hold) |
{ |
GPS_Nick = ((gps_dx * Poti1) / 512) + ((gps_vx * Poti2) / 128); |
GPS_Roll = ((gps_dy * Poti1) / 512) + ((gps_vy * Poti2) / 128); |
} |
else |
{ |
GPS_Nick = 0; |
GPS_Roll = 0; |
} |
//===================================== |
} |
gps_trace(); |
} |
} |
//============================================================================== |
//============================================================================== |
//============================================================================== |
// |
//============================================================================== |
//============================================================================== |
//============================================================================== |
//------------------------------------------------------------------------------ |
// Name: |
// Function: |
// |
// Parameter: |
// Return: |
//------------------------------------------------------------------------------ |
void print_uint16(uint16 value,uint8 width) |
{ |
uint8 i,s[10]; |
for (i = 0; i < width; i++) |
{ |
s[width - i - 1] = '0' + (value % 10); |
value /= 10; |
} |
for (i=0; i<(width - 1); i++) // Overwrite trailing Zeros |
{ |
if (s[i] == '0') s[i] = ' '; |
else break; |
} |
for (i=0; i<width; i++) SendeBuffer[print_pos++] = s[i]; // Output String |
// for (i=0; i<width; i++) putchar(s[i]); // Output String |
} |
//------------------------------------------------------------------------------ |
// Name: |
// Function: |
// |
// Parameter: |
// Return: |
//------------------------------------------------------------------------------ |
void print_int16(int16 value,uint8 width) |
{ |
uint8 i,s[10]; |
bool neg; |
neg = false; |
if(value < 0) { value = -value; neg = true; } |
for (i = 0; i < width; i++) |
{ |
s[width - i - 1] = '0' + (value % 10); |
value /= 10; |
} |
for (i=0; i<(width - 1); i++) // Overwrite trailing Zeros |
{ |
if (s[i] == '0') s[i] = ' '; |
else |
{ |
if(neg) s[i-1] = '-'; |
break; |
} |
} |
for (i=0; i<width; i++) SendeBuffer[print_pos++] = s[i]; // Output String |
// for (i=0; i<width; i++) putchar(s[i]); // Output String |
} |
//------------------------------------------------------------------------------ |
// Name: |
// Function: |
// |
// Parameter: |
// Return: |
//------------------------------------------------------------------------------ |
void print_string(char *s) |
{ |
while(*s) |
{ |
SendeBuffer[print_pos++] = *s; |
s++; |
} |
} |
/branches/matosi/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/matosi/Settings.h |
---|
--- matosi/_Settings.h (nonexistent) |
+++ matosi/_Settings.h (revision 171) |
@@ -0,0 +1,50 @@ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Testmodi |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define MOTOR_OFF 0 |
+#define MOTOR_TEST 0 |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Abstimmung |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define ACC_AMPLIFY 16 |
+#define FAKTOR_P 1 |
+#define FAKTOR_I 0.0001 |
+ |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Debug-Interface |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define SIO_DEBUG 1 // Soll der Debugger aktiviert sein? |
+#define MIN_DEBUG_INTERVALL 250 // in diesem Intervall werden Degugdaten ohne Aufforderung gesendet |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Sender |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ #define K_NICK 0 |
+ #define K_ROLL 1 |
+ #define K_GAS 2 |
+ #define K_GIER 3 |
+ #define K_POTI1 4 |
+ #define K_POTI2 5 |
+ #define K_POTI3 6 |
+ #define K_POTI4 7 |
+// +++++++++++++++++++++++++++++++ |
+// + Getestete Settings: |
+// +++++++++++++++++++++++++++++++ |
+// Setting: Kamera |
+// Stick_P:3 |
+// Stick_D:0 |
+// Gyro_P: 175 |
+// Gyro_I: 175 |
+// Ki_Anteil: 10 |
+// +++++++++++++++++++++++++++++++ |
+// + Getestete Settings: |
+// +++++++++++++++++++++++++++++++ |
+// Setting: Normal |
+// Stick_P:2 |
+// Stick_D:8 |
+// Gyro_P: 80 |
+// Gyro_I: 150 |
+// Ki_Anteil: 5 |
+ |
/branches/matosi/analog.c |
---|
0,0 → 1,155 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az, UBat = 100; |
volatile int AccumulateNick = 0, AccumulateRoll = 0, AccumulateGier = 0; |
volatile int accumulate_AccRoll = 0,accumulate_AccNick = 0,accumulate_AccHoch = 0; |
volatile char MessanzahlNick = 0, MessanzahlRoll = 0, MessanzahlGier = 0; |
volatile char messanzahl_AccNick = 0, messanzahl_AccRoll = 0, messanzahl_AccHoch = 0; |
volatile long Luftdruck = 32000; |
volatile int StartLuftdruck; |
volatile unsigned int MessLuftdruck = 1023; |
unsigned char DruckOffsetSetting; |
volatile int HoeheD = 0; |
volatile char messanzahl_Druck; |
volatile int tmpLuftdruck; |
volatile unsigned int ZaehlMessungen = 0; |
//####################################################################################### |
// |
void ADC_Init(void) |
//####################################################################################### |
{ |
ADMUX = 0;//Referenz ist extern |
ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE); |
//Free Running Mode, Division Factor 128, Interrupt on |
} |
void SucheLuftruckOffset(void) |
{ |
unsigned int off; |
for(off=0; off < 250;off++) |
{ |
OCR0A = off; |
Delay_ms(50); |
printf("."); |
if(MessLuftdruck < 900) break; |
} |
DruckOffsetSetting = off; |
Delay_ms(200); |
} |
//####################################################################################### |
// |
SIGNAL(SIG_ADC) |
//####################################################################################### |
{ |
static unsigned char kanal=0,state = 0; |
signed int wert; |
ANALOG_OFF; |
switch(state++) |
{ |
case 0: |
wert = (signed int) AdNeutralGier - ADC; |
AccumulateGier += wert; // |
MessanzahlGier++; |
Mess_Integral_Gier += wert;// / 16; |
Mess_Integral_Gier2 += wert; |
kanal = 1; |
ZaehlMessungen++; |
break; |
case 1: |
wert = (signed int) ADC - AdNeutralRoll; |
Mess_IntegralRoll += wert; |
Mess_IntegralRoll2 += wert; |
if(ADC < 10) wert = -700; |
if(ADC > 1000) wert = +700; |
AccumulateRoll += wert; |
MessanzahlRoll++; |
kanal = 2; |
break; |
case 2: |
wert = (signed int) ADC - AdNeutralNick; |
Mess_IntegralNick += wert; |
Mess_IntegralNick2 += wert; |
if(ADC < 10) wert = -700; |
if(ADC > 1000) wert = +700; |
AccumulateNick += wert; |
MessanzahlNick++; |
kanal = 4; |
break; |
case 3: |
UBat = (3 * UBat + ADC / 3) / 4;//(UBat + ((ADC * 39) / 256) + 19) / 2; |
kanal = 6; |
break; |
case 4: |
Aktuell_ay = NeutralAccY - ADC; |
accumulate_AccRoll += Aktuell_ay; |
messanzahl_AccRoll++; |
kanal = 7; |
break; |
case 5: |
Aktuell_ay = ADC - NeutralAccX; |
accumulate_AccNick += Aktuell_ay; |
messanzahl_AccNick++; |
kanal = 5; |
state = 6; |
break; |
case 6: |
accumulate_AccHoch = (signed int) ADC - NeutralAccZ; |
accumulate_AccHoch += abs(Aktuell_ay) / 4 + abs(Aktuell_ax) / 4; |
if(accumulate_AccHoch > 1) |
{ |
if(NeutralAccZ < 800) NeutralAccZ+= 0.02; |
} |
else if(accumulate_AccHoch < -1) |
{ |
if(NeutralAccZ > 600) NeutralAccZ-= 0.02; |
} |
messanzahl_AccHoch = 1; |
Aktuell_az = ADC; |
Mess_Integral_Hoch += accumulate_AccHoch; // Integrieren |
Mess_Integral_Hoch -= Mess_Integral_Hoch / 1024; // dämfen |
// Mess_Integral_Hoch -= Mess_Integral_Hoch / 512; // dämfen |
/* if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
kanal = 3; |
state = 7; |
} |
else |
{ |
kanal = 0; |
state = 0; |
}*/ |
kanal = 3; |
state = 7; |
break; |
case 7: |
tmpLuftdruck += ADC; |
if(++messanzahl_Druck >= 5) |
{ |
MessLuftdruck = ADC; |
messanzahl_Druck = 0; |
HoeheD = (int)(StartLuftdruck - tmpLuftdruck - HoehenWert); // D-Anteil = neuerWert - AlterWert |
Luftdruck = (tmpLuftdruck + 3 * Luftdruck) / 4; |
HoehenWert = StartLuftdruck - Luftdruck; |
tmpLuftdruck = 0; |
} |
kanal = 0; |
state = 0; |
break; |
default: |
kanal = 0; |
state = 0; |
break; |
} |
ADMUX = kanal; |
ANALOG_ON; |
} |
/branches/matosi/analog.h |
---|
0,0 → 1,23 |
/*####################################################################################### |
#######################################################################################*/ |
extern volatile int UBat; |
extern volatile int AccumulateNick, AccumulateRoll, AccumulateGier,accumulate_AccRoll,accumulate_AccNick,accumulate_AccHoch; |
extern volatile char MessanzahlNick, MessanzahlRoll, MessanzahlGier,messanzahl_AccNick, messanzahl_AccRoll,messanzahl_AccHoch; |
extern volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az; |
extern volatile long Luftdruck; |
extern volatile char messanzahl_Druck; |
extern volatile unsigned int ZaehlMessungen; |
extern unsigned char DruckOffsetSetting; |
extern volatile int HoeheD; |
extern volatile unsigned int MessLuftdruck; |
extern volatile int StartLuftdruck; |
extern unsigned int ReadADC(unsigned char adc_input); |
extern void ADC_Init(void); |
extern void SucheLuftruckOffset(void); |
#define ANALOG_OFF ADCSRA=0 |
#define ANALOG_ON ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE) |
/branches/matosi/eeprom.c |
---|
--- matosi/fc.c (nonexistent) |
+++ matosi/fc.c (revision 171) |
@@ -0,0 +1,812 @@ |
+/*####################################################################################### |
+Flight Control |
+#######################################################################################*/ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Copyright (c) 04.2007 Holger Buss |
+// + Nur für den privaten Gebrauch |
+// + www.MikroKopter.com |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
+// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
+// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
+// + bzgl. der Nutzungsbedingungen aufzunehmen. |
+// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
+// + Verkauf von Luftbildaufnahmen, usw. |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
+// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
+// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
+// + eindeutig als Ursprung verlinkt werden |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
+// + Benutzung auf eigene Gefahr |
+// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
+// + mit unserer Zustimmung zulässig |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
+// + this list of conditions and the following disclaimer. |
+// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
+// + from this software without specific prior written permission. |
+// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
+// + for non-commercial use (directly or indirectly) |
+// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
+// + with our written permission |
+// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
+// + clearly linked as origin |
+// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
+// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
+// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
+// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
+// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
+// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
+// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
+// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
+// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
+// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
+// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
+// + POSSIBILITY OF SUCH DAMAGE. |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+#include "main.h" |
+ |
+unsigned char h,m,s; |
+volatile unsigned char Timeout = 0; |
+volatile int MesswertNick,MesswertRoll,MesswertGier; |
+volatile int AdNeutralNick = 0,AdNeutralRoll = 0,AdNeutralGier = 0; |
+volatile int Mittelwert_AccNick, Mittelwert_AccRoll,Mittelwert_AccHoch, NeutralAccX=0, NeutralAccY=0; |
+volatile float NeutralAccZ = 0; |
+unsigned char CosinusNickWinkel = 0, CosinusRollWinkel = 0; |
+volatile long IntegralNick = 0,IntegralNick2 = 0; |
+volatile long IntegralRoll = 0,IntegralRoll2 = 0; |
+volatile long Integral_Gier = 0; |
+volatile long Mess_IntegralNick = 0,Mess_IntegralNick2 = 0; |
+volatile long Mess_IntegralRoll = 0,Mess_IntegralRoll2 = 0; |
+volatile long Mess_Integral_Gier = 0,Mess_Integral_Gier2 = 0; |
+volatile long Mess_Integral_Hoch = 0; |
+volatile int KompassValue = 0; |
+volatile int KompassStartwert = 0; |
+volatile int KompassRichtung = 0; |
+unsigned char MAX_GAS,MIN_GAS; |
+unsigned char Notlandung = 0; |
+unsigned char HoehenReglerAktiv = 0; |
+ |
+float GyroFaktor; |
+float IntegralFaktor; |
+ |
+volatile int DiffNick,DiffRoll; |
+int Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0; |
+volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count; |
+unsigned char MotorWert[5]; |
+volatile unsigned char SenderOkay = 0; |
+int StickNick = 0,StickRoll = 0,StickGier = 0; |
+char MotorenEin = 0; |
+int HoehenWert = 0; |
+int SollHoehe = 0; |
+ |
+float Kp = FAKTOR_P; |
+float Ki = FAKTOR_I; |
+ |
+unsigned char Parameter_Luftdruck_D = 48; // Wert : 0-250 |
+unsigned char Parameter_MaxHoehe = 251; // Wert : 0-250 |
+unsigned char Parameter_Hoehe_P = 16; // Wert : 0-32 |
+unsigned char Parameter_Hoehe_ACC_Wirkung = 58; // Wert : 0-250 |
+unsigned char Parameter_KompassWirkung = 64; // Wert : 0-250 |
+unsigned char Parameter_Gyro_P = 50; // Wert : 10-250 |
+unsigned char Parameter_Gyro_I = 150; // Wert : 0-250 |
+unsigned char Parameter_Gier_P = 2; // Wert : 1-20 |
+unsigned char Parameter_I_Faktor = 10; // Wert : 1-20 |
+unsigned char Parameter_UserParam1 = 0; |
+unsigned char Parameter_UserParam2 = 0; |
+unsigned char Parameter_UserParam3 = 0; |
+unsigned char Parameter_UserParam4 = 0; |
+unsigned char Parameter_ServoNickControl = 100; |
+struct mk_param_struct EE_Parameter; |
+ |
+void Piep(unsigned char Anzahl) |
+{ |
+ while(Anzahl--) |
+ { |
+ if(MotorenEin) return; //auf keinen Fall im Flug! |
+ beeptime = 100; |
+ Delay_ms(250); |
+ } |
+} |
+ |
+//############################################################################ |
+// Nullwerte ermitteln |
+void SetNeutral(void) |
+//############################################################################ |
+{ |
+ unsigned int timer; |
+ NeutralAccX = 0; |
+ NeutralAccY = 0; |
+ NeutralAccZ = 0; |
+ AdNeutralNick = 0; |
+ AdNeutralRoll = 0; |
+ AdNeutralGier = 0; |
+ CalibrierMittelwert(); |
+ timer = SetDelay(5); |
+ while (!CheckDelay(timer)); |
+ CalibrierMittelwert(); |
+ if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
+ { |
+ if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
+ } |
+ AdNeutralNick= abs(MesswertNick); |
+ AdNeutralRoll= abs(MesswertRoll); |
+ AdNeutralGier= abs(MesswertGier); |
+ NeutralAccY = abs(Mittelwert_AccRoll) / ACC_AMPLIFY; |
+ NeutralAccX = abs(Mittelwert_AccNick) / ACC_AMPLIFY; |
+ NeutralAccZ = Aktuell_az; |
+ |
+ Mess_IntegralNick = 0; |
+ Mess_IntegralNick2 = 0; |
+ Mess_IntegralRoll = 0; |
+ Mess_IntegralRoll2 = 0; |
+ Mess_Integral_Gier = 0; |
+ MesswertNick = 0; |
+ MesswertRoll = 0; |
+ MesswertGier = 0; |
+ StartLuftdruck = Luftdruck; |
+ HoeheD = 0; |
+ Mess_Integral_Hoch = 0; |
+ KompassStartwert = KompassValue; |
+ GPS_Neutral(); |
+ beeptime = 50; |
+} |
+ |
+//############################################################################ |
+// Bildet den Mittelwert aus den Messwerten |
+void Mittelwert(void) |
+//############################################################################ |
+{ |
+ // ADC auschalten, damit die Werte sich nicht während der Berechnung ändern |
+ ANALOG_OFF; |
+ if(MessanzahlNick) (MesswertNick = AccumulateNick / MessanzahlNick); |
+ if(MessanzahlRoll) (MesswertRoll = AccumulateRoll / MessanzahlRoll); |
+ if(MessanzahlGier) (MesswertGier = AccumulateGier / MessanzahlGier); |
+ if(messanzahl_AccNick) Mittelwert_AccNick = ((long)Mittelwert_AccNick * 7 + ((ACC_AMPLIFY * (long)accumulate_AccNick) / messanzahl_AccNick)) / 8L; |
+ if(messanzahl_AccRoll) Mittelwert_AccRoll = ((long)Mittelwert_AccRoll * 7 + ((ACC_AMPLIFY * (long)accumulate_AccRoll) / messanzahl_AccRoll)) / 8L; |
+ if(messanzahl_AccHoch) Mittelwert_AccHoch = ((long)Mittelwert_AccHoch * 7 + ((long)accumulate_AccHoch) / messanzahl_AccHoch) / 8L; |
+ AccumulateNick = 0; MessanzahlNick = 0; |
+ AccumulateRoll = 0; MessanzahlRoll = 0; |
+ AccumulateGier = 0; MessanzahlGier = 0; |
+ accumulate_AccRoll = 0;messanzahl_AccRoll = 0; |
+ accumulate_AccNick = 0;messanzahl_AccNick = 0; |
+ accumulate_AccHoch = 0;messanzahl_AccHoch = 0; |
+ Integral_Gier = Mess_Integral_Gier; |
+// Integral_Gier2 = Mess_Integral_Gier2; |
+ IntegralNick = Mess_IntegralNick; |
+ IntegralRoll = Mess_IntegralRoll; |
+ IntegralNick2 = Mess_IntegralNick2; |
+ IntegralRoll2 = Mess_IntegralRoll2; |
+ // ADC einschalten |
+ ANALOG_ON; |
+ |
+//------------------------------------------------------------------------------ |
+ if(MesswertNick > 200) MesswertNick += 4 * (MesswertNick - 200); |
+ else |
+ if(MesswertNick < -200) MesswertNick += 4 * (MesswertNick + 200); |
+ |
+ if(MesswertRoll > 200) MesswertRoll += 4 * (MesswertRoll - 200); |
+ else |
+ if(MesswertRoll < -200) MesswertRoll += 4 * (MesswertRoll + 200); |
+//------------------------------------------------------------------------------ |
+ if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--; |
+ if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--; |
+ if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--; |
+ if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--; |
+ if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255; |
+ if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255; |
+ if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255; |
+ if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255; |
+} |
+ |
+//############################################################################ |
+// Messwerte beim Ermitteln der Nullage |
+void CalibrierMittelwert(void) |
+//############################################################################ |
+{ |
+ // ADC auschalten, damit die Werte sich nicht während der Berechnung ändern |
+ ANALOG_OFF; |
+ if(MessanzahlNick) (MesswertNick = AccumulateNick / MessanzahlNick); |
+ if(MessanzahlRoll) (MesswertRoll = AccumulateRoll / MessanzahlRoll); |
+ if(MessanzahlGier) (MesswertGier = AccumulateGier / MessanzahlGier); |
+ if(messanzahl_AccNick) Mittelwert_AccNick = ((ACC_AMPLIFY * (long)accumulate_AccNick) / messanzahl_AccNick); |
+ if(messanzahl_AccRoll) Mittelwert_AccRoll = (ACC_AMPLIFY * (long)accumulate_AccRoll) / messanzahl_AccRoll; |
+ if(messanzahl_AccHoch) Mittelwert_AccHoch = ((long)accumulate_AccHoch) / messanzahl_AccHoch; |
+ AccumulateNick = 0; MessanzahlNick = 0; |
+ AccumulateRoll = 0; MessanzahlRoll = 0; |
+ AccumulateGier = 0; MessanzahlGier = 0; |
+ accumulate_AccRoll = 0;messanzahl_AccRoll = 0; |
+ accumulate_AccNick = 0;messanzahl_AccNick = 0; |
+ accumulate_AccHoch = 0;messanzahl_AccHoch = 0; |
+ // ADC einschalten |
+ ANALOG_ON; |
+ if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--; |
+ if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--; |
+ if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--; |
+ if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--; |
+ if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255; |
+ if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255; |
+ if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255; |
+ if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255; |
+} |
+ |
+//############################################################################ |
+// Senden der Motorwerte per I2C-Bus |
+void SendMotorData(void) |
+//############################################################################ |
+{ |
+ if(MOTOR_OFF || !MotorenEin) |
+ { |
+ Motor_Hinten = 0; |
+ Motor_Vorne = 0; |
+ Motor_Rechts = 0; |
+ Motor_Links = 0; |
+ if(MotorTest[0]) Motor_Vorne = MotorTest[0]; |
+ if(MotorTest[1]) Motor_Hinten = MotorTest[1]; |
+ if(MotorTest[2]) Motor_Links = MotorTest[2]; |
+ if(MotorTest[3]) Motor_Rechts = MotorTest[3]; |
+ } |
+ |
+ DebugOut.Analog[12] = Motor_Vorne; |
+ DebugOut.Analog[13] = Motor_Hinten; |
+ DebugOut.Analog[14] = Motor_Links; |
+ DebugOut.Analog[15] = Motor_Rechts; |
+ |
+ //Start I2C Interrupt Mode |
+ twi_state = 0; |
+ motor = 0; |
+ i2c_start(); |
+} |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Konstanten |
+// + 0-250 -> normale Werte |
+// + 251 -> Poti1 |
+// + 252 -> Poti2 |
+// + 253 -> Poti3 |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+void DefaultKonstanten1(void) |
+{ |
+ EE_Parameter.Kanalbelegung[K_NICK] = 1; |
+ EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
+ EE_Parameter.Kanalbelegung[K_GAS] = 3; |
+ EE_Parameter.Kanalbelegung[K_GIER] = 4; |
+ EE_Parameter.Kanalbelegung[K_POTI1] = 5; |
+ EE_Parameter.Kanalbelegung[K_POTI2] = 6; |
+ EE_Parameter.Kanalbelegung[K_POTI3] = 7; |
+ EE_Parameter.Kanalbelegung[K_POTI4] = 8; |
+ EE_Parameter.GlobalConfig = 0;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV | CFG_KOMPASS_FIX;//0x01; |
+ EE_Parameter.Hoehe_MinGas = 30; |
+ EE_Parameter.MaxHoehe = 251; // Wert : 0-32 251 -> Poti1 |
+ EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
+ EE_Parameter.Luftdruck_D = 70; // Wert : 0-250 |
+ EE_Parameter.Hoehe_ACC_Wirkung = 30; // Wert : 0-250 |
+ EE_Parameter.Hoehe_Verstaerkung = 2; // Wert : 0-50 |
+ EE_Parameter.Stick_P = 4; //2 // Wert : 1-6 |
+ EE_Parameter.Stick_D = 8; //8 // Wert : 0-64 |
+ EE_Parameter.Gier_P = 16; // Wert : 1-20 |
+ EE_Parameter.Gas_Min = 15; // Wert : 0-32 |
+ EE_Parameter.Gas_Max = 250; // Wert : 33-250 |
+ EE_Parameter.GyroAccFaktor = 26; // Wert : 1-64 |
+ EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
+ EE_Parameter.Gyro_P = 120; //80 // Wert : 0-250 |
+ EE_Parameter.Gyro_I = 150; // Wert : 0-250 |
+ EE_Parameter.UnterspannungsWarnung = 90; // Wert : 0-250 |
+ EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
+ EE_Parameter.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
+ EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
+ EE_Parameter.I_Faktor = 5; |
+ EE_Parameter.UserParam1 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam2 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam3 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam4 = 0; //zur freien Verwendung |
+ EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
+ EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
+ EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
+ EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
+ EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
+ EE_Parameter.ServoNickRefresh = 5; |
+ memcpy(EE_Parameter.Name, "Normal\0", 12); |
+} |
+ |
+void DefaultKonstanten2(void) |
+{ |
+ EE_Parameter.Kanalbelegung[K_NICK] = 1; |
+ EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
+ EE_Parameter.Kanalbelegung[K_GAS] = 3; |
+ EE_Parameter.Kanalbelegung[K_GIER] = 4; |
+ EE_Parameter.Kanalbelegung[K_POTI1] = 5; |
+ EE_Parameter.Kanalbelegung[K_POTI2] = 6; |
+ EE_Parameter.Kanalbelegung[K_POTI3] = 7; |
+ EE_Parameter.GlobalConfig = 0;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV;//0x01; |
+ EE_Parameter.Hoehe_MinGas = 30; |
+ EE_Parameter.MaxHoehe = 251; // Wert : 0-32 251 -> Poti1 |
+ EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
+ EE_Parameter.Luftdruck_D = 50; // Wert : 0-250 |
+ EE_Parameter.Hoehe_ACC_Wirkung = 50; // Wert : 0-250 |
+ EE_Parameter.Hoehe_Verstaerkung = 2; // Wert : 0-50 |
+ EE_Parameter.Stick_P = 4; //2 // Wert : 1-6 |
+ EE_Parameter.Stick_D = 0; //8 // Wert : 0-64 |
+ EE_Parameter.Gier_P = 16; // Wert : 1-20 |
+ EE_Parameter.Gas_Min = 15; // Wert : 0-32 |
+ EE_Parameter.Gas_Max = 250; // Wert : 33-250 |
+ EE_Parameter.GyroAccFaktor = 26; // Wert : 1-64 |
+ EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
+ EE_Parameter.Gyro_P = 175; //80 // Wert : 0-250 |
+ EE_Parameter.Gyro_I = 175; // Wert : 0-250 |
+ EE_Parameter.UnterspannungsWarnung = 90; // Wert : 0-250 |
+ EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
+ EE_Parameter.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
+ EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
+ EE_Parameter.I_Faktor = 5; |
+ EE_Parameter.UserParam1 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam2 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam3 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam4 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam3 = 0; //zur freien Verwendung |
+ EE_Parameter.UserParam4 = 0; //zur freien Verwendung |
+ EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
+ EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
+ EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
+ EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
+ EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
+ EE_Parameter.ServoNickRefresh = 5; |
+ memcpy(EE_Parameter.Name, "Kamera\0", 12); |
+} |
+ |
+ |
+//############################################################################ |
+// Trägt ggf. das Poti als Parameter ein |
+void ParameterZuordnung(void) |
+//############################################################################ |
+{ |
+ |
+ #define CHK_POTI(b,a,min,max) { if(a > 250) { if(a == 251) b = Poti1; else if(a == 252) b = Poti2; else if(a == 253) b = Poti3; else if(a == 254) b = Poti4;} else b = a; if(b <= min) b = min; else if(b >= max) b = max;} |
+ CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe,0,255); |
+ CHK_POTI(Parameter_Luftdruck_D,EE_Parameter.Luftdruck_D,0,100); |
+ CHK_POTI(Parameter_Hoehe_P,EE_Parameter.Hoehe_P,0,100); |
+ CHK_POTI(Parameter_Hoehe_ACC_Wirkung,EE_Parameter.Hoehe_ACC_Wirkung,0,255); |
+ CHK_POTI(Parameter_KompassWirkung,EE_Parameter.KompassWirkung,0,255); |
+ CHK_POTI(Parameter_Gyro_P,EE_Parameter.Gyro_P,10,255); |
+ CHK_POTI(Parameter_Gyro_I,EE_Parameter.Gyro_I,0,255); |
+ CHK_POTI(Parameter_I_Faktor,EE_Parameter.I_Faktor,0,255); |
+ CHK_POTI(Parameter_UserParam1,EE_Parameter.UserParam1,0,255); |
+ CHK_POTI(Parameter_UserParam2,EE_Parameter.UserParam2,0,255); |
+ CHK_POTI(Parameter_UserParam3,EE_Parameter.UserParam3,0,255); |
+ CHK_POTI(Parameter_UserParam4,EE_Parameter.UserParam4,0,255); |
+ |
+ unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
+ unsigned char ServoNickCompInvert; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
+ unsigned char ServoNickMin; // Wert : 0-250 // Anschlag |
+ unsigned char ServoNickMax; // Wert : 0-250 // Anschlag |
+ |
+ |
+ CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
+ CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
+ CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
+ |
+ Ki = (float) Parameter_I_Faktor * 0.0001; |
+ MAX_GAS = EE_Parameter.Gas_Max; |
+ MIN_GAS = EE_Parameter.Gas_Min; |
+} |
+ |
+ |
+//############################################################################ |
+// |
+void MotorRegler(void) |
+//############################################################################ |
+{ |
+ int motorwert,pd_ergebnis,h,tmp_int; |
+ int GierMischanteil,GasMischanteil; |
+ static long SummeNick=0,SummeRoll=0; |
+ static long sollGier = 0,tmp_long,tmp_long2; |
+ static int IntegralFehlerNick = 0; |
+ static int IntegralFehlerRoll = 0; |
+ static unsigned int RcLostTimer; |
+ static unsigned char delay_neutral = 0; |
+ static unsigned char delay_einschalten = 0,delay_ausschalten = 0; |
+ static unsigned int modell_fliegt = 0; |
+ static int hoehenregler = 0; |
+ static char TimerWerteausgabe = 0; |
+ static char NeueKompassRichtungMerken = 0; |
+ Mittelwert(); |
+ |
+ GRN_ON; |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gaswert ermitteln |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ GasMischanteil = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 120; |
+ if(GasMischanteil < 0) GasMischanteil = 0; |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Emfang schlecht |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(SenderOkay < 100) |
+ { |
+ if(!PcZugriff) beeptime = 500; |
+ if(RcLostTimer) RcLostTimer--; |
+ else |
+ { |
+ MotorenEin = 0; |
+ Notlandung = 0; |
+ } |
+ ROT_ON; |
+ if(modell_fliegt > 2000) // wahrscheinlich in der Luft --> langsam absenken |
+ { |
+ GasMischanteil = EE_Parameter.NotGas; |
+ Notlandung = 1; |
+ PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] = 0; |
+ PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] = 0; |
+ PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] = 0; |
+/* Poti1 = 65; |
+ Poti2 = 48; |
+ Poti3 = 0; |
+*/ } |
+ else MotorenEin = 0; |
+ } |
+ else |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Emfang gut |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(SenderOkay > 140) |
+ { |
+ Notlandung = 0; |
+ RcLostTimer = EE_Parameter.NotGasZeit * 50; |
+ if(GasMischanteil > 40) |
+ { |
+ if(modell_fliegt < 0xffff) modell_fliegt++; |
+ } |
+ if((modell_fliegt < 200) || (GasMischanteil < 40)) |
+ { |
+ SummeNick = 0; |
+ SummeRoll = 0; |
+ Mess_Integral_Gier = 0; |
+ Mess_Integral_Gier2 = 0; |
+ } |
+ if((GasMischanteil > 200) && MotorenEin == 0) |
+ { |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// auf Nullwerte kalibrieren |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) // Neutralwerte |
+ { |
+ unsigned char setting; |
+ if(++delay_neutral > 200) // nicht sofort |
+ { |
+ GRN_OFF; |
+ SetNeutral(); |
+ MotorenEin = 0; |
+ delay_neutral = 0; |
+ modell_fliegt = 0; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70 || abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) > 70) |
+ { |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 1; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 2; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4; |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5; |
+ eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], setting); // aktiven Datensatz merken |
+ } |
+ ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
+ Piep(GetActiveParamSetNumber()); |
+ if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
+ { |
+ if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
+ } |
+ } |
+ } |
+ else delay_neutral = 0; |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gas ist unten |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(GasMischanteil < 35) |
+ { |
+ // Starten |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75) |
+ { |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Einschalten |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(++delay_einschalten > 200) |
+ { |
+ delay_einschalten = 200; |
+ modell_fliegt = 1; |
+ MotorenEin = 1; |
+ sollGier = 0; |
+ Mess_Integral_Gier = 0; |
+ Mess_Integral_Gier2 = 0; |
+ Mess_IntegralNick = 0; |
+ Mess_IntegralRoll = 0; |
+ Mess_IntegralNick2 = IntegralNick; |
+ Mess_IntegralRoll2 = IntegralRoll; |
+ SummeNick = 0; |
+ SummeRoll = 0; |
+ } |
+ } |
+ else delay_einschalten = 0; |
+ //Auf Neutralwerte setzen |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Auschalten |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) |
+ { |
+ if(++delay_ausschalten > 200) // nicht sofort |
+ { |
+ MotorenEin = 0; |
+ delay_ausschalten = 200; |
+ modell_fliegt = 0; |
+ } |
+ } |
+ else delay_ausschalten = 0; |
+ } |
+ } |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// neue Werte von der Funke |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(!NewPpmData-- || Notlandung) |
+ { |
+ ParameterZuordnung(); |
+ StickNick = PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P; |
+ StickNick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D; |
+ StickRoll = PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P; |
+ StickRoll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D; |
+ StickGier = -PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]; |
+ |
+ GyroFaktor = ((float)Parameter_Gyro_P + 10.0) / 256.0; |
+ IntegralFaktor = ((float) Parameter_Gyro_I) / 44000; |
+ |
+ if(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor = 0; |
+ if(GyroFaktor < 0) GyroFaktor = 0; |
+ if(IntegralFaktor < 0) IntegralFaktor = 0; |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Bei Empfangsausfall im Flug |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ if(Notlandung) |
+ { |
+ StickGier = 0; |
+ StickNick = 0; |
+ StickRoll = 0; |
+ GyroFaktor = 0.1; |
+ IntegralFaktor = 0.005; |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gyro-Drift kompensieren |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define DRIFT_FAKTOR 3 |
+ if(ZaehlMessungen >= 1000 / DRIFT_FAKTOR) |
+ { |
+ IntegralFehlerNick = IntegralNick2 - IntegralNick; |
+ IntegralFehlerRoll = IntegralRoll2 - IntegralRoll; |
+ ZaehlMessungen = 0; |
+ if(IntegralFehlerNick > 500/DRIFT_FAKTOR) AdNeutralNick++; |
+ if(IntegralFehlerNick < -500/DRIFT_FAKTOR) AdNeutralNick--; |
+ if(IntegralFehlerRoll > 500/DRIFT_FAKTOR) AdNeutralRoll++; |
+ if(IntegralFehlerRoll < -500/DRIFT_FAKTOR) AdNeutralRoll--; |
+ if(Mess_Integral_Gier2 > 500/DRIFT_FAKTOR) AdNeutralGier--; |
+ if(Mess_Integral_Gier2 <-500/DRIFT_FAKTOR) AdNeutralGier++; |
+ ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
+ Mess_IntegralNick2 = IntegralNick; |
+ Mess_IntegralRoll2 = IntegralRoll; |
+ Mess_Integral_Gier2 = Integral_Gier; |
+ ANALOG_ON; // ADC einschalten |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Integrale auf ACC-Signal abgleichen |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick) / 16; |
+ tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll) / 16; |
+#define AUSGLEICH 500 |
+ if(tmp_long > AUSGLEICH) tmp_long = AUSGLEICH; |
+ if(tmp_long < -AUSGLEICH) tmp_long =-AUSGLEICH; |
+ if(tmp_long2 > AUSGLEICH) tmp_long2 = AUSGLEICH; |
+ if(tmp_long2 <-AUSGLEICH) tmp_long2 =-AUSGLEICH; |
+ ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
+ Mess_IntegralNick -= tmp_long; |
+ Mess_IntegralRoll -= tmp_long2; |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gieren |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ sollGier = StickGier; |
+ if(abs(StickGier) > 35) |
+ { |
+ if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX)) NeueKompassRichtungMerken = 1; |
+ } |
+ tmp_int = EE_Parameter.Gier_P * (sollGier * abs(sollGier)) / 256; // expo |
+ Mess_Integral_Gier -= tmp_int; |
+ if(Mess_Integral_Gier > 30000) Mess_Integral_Gier = 30000; // begrenzen |
+ if(Mess_Integral_Gier <-30000) Mess_Integral_Gier =-30000; |
+ |
+ ANALOG_ON; // ADC einschalten |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Kompass |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ //KompassValue = 12; |
+ if(KompassValue && (EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV)) |
+ { |
+ int w,v; |
+ static int SignalSchlecht = 0; |
+ w = abs(IntegralNick /512); // mit zunehmender Neigung den Einfluss drosseln |
+ v = abs(IntegralRoll /512); |
+ if(v > w) w = v; // grösste Neigung ermitteln |
+ if(w < 25 && NeueKompassRichtungMerken && !SignalSchlecht) |
+ { |
+ KompassStartwert = KompassValue; |
+ NeueKompassRichtungMerken = 0; |
+ } |
+ w = (w * Parameter_KompassWirkung) / 64; // auf die Wirkung normieren |
+ w = Parameter_KompassWirkung - w; // Wirkung ggf drosseln |
+ if(w > 0) |
+ { |
+ ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
+ if(!SignalSchlecht) Mess_Integral_Gier += (KompassRichtung * w) / 32; // nach Kompass ausrichten |
+ ANALOG_ON; // ADC einschalten |
+ if(SignalSchlecht) SignalSchlecht--; |
+ } |
+ else SignalSchlecht = 500; // so lange das Signal taub stellen --> ca. 1 sek |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Debugwerte zuordnen |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+DebugOut.Sekunden++; |
+ if(!TimerWerteausgabe--) |
+ { |
+ TimerWerteausgabe = 49; |
+// DebugOut.Analog[0] = MesswertNick; |
+// DebugOut.Analog[1] = MesswertRoll; |
+// DebugOut.Analog[2] = MesswertGier; |
+ DebugOut.Analog[0] = IntegralNick / EE_Parameter.GyroAccFaktor; |
+ DebugOut.Analog[1] = IntegralRoll / EE_Parameter.GyroAccFaktor; |
+ DebugOut.Analog[2] = Mittelwert_AccNick; |
+ DebugOut.Analog[3] = Mittelwert_AccRoll; |
+ DebugOut.Analog[4] = MesswertGier; |
+ DebugOut.Analog[5] = HoehenWert; |
+ DebugOut.Analog[6] = (Mess_Integral_Hoch / 512); |
+ DebugOut.Analog[7] = GasMischanteil; |
+ DebugOut.Analog[8] = KompassValue; |
+// DebugOut.Analog[9] = SollHoehe; |
+// DebugOut.Analog[10] = Mess_Integral_Gier / 128; |
+// DebugOut.Analog[11] = KompassStartwert; |
+// DebugOut.Analog[10] = Parameter_Gyro_I; |
+// DebugOut.Analog[10] = EE_Parameter.Gyro_I; |
+// DebugOut.Analog[9] = KompassRichtung; |
+// DebugOut.Analog[10] = GasMischanteil; |
+// DebugOut.Analog[3] = HoeheD * 32; |
+// DebugOut.Analog[4] = hoehenregler; |
+ } |
+ |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Drehgeschwindigkeit und -winkel zu einem Istwert zusammenfassen |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ MesswertNick = IntegralNick * IntegralFaktor + MesswertNick * GyroFaktor; |
+ MesswertRoll = IntegralRoll * IntegralFaktor + MesswertRoll * GyroFaktor; |
+ MesswertGier = MesswertGier * (GyroFaktor/2) + Integral_Gier * IntegralFaktor; |
+ |
+ // Maximalwerte abfangen |
+ #define MAX_SENSOR 2048 |
+ if(MesswertNick > MAX_SENSOR) MesswertNick = MAX_SENSOR; |
+ if(MesswertNick < -MAX_SENSOR) MesswertNick = -MAX_SENSOR; |
+ if(MesswertRoll > MAX_SENSOR) MesswertRoll = MAX_SENSOR; |
+ if(MesswertRoll < -MAX_SENSOR) MesswertRoll = -MAX_SENSOR; |
+ if(MesswertGier > MAX_SENSOR) MesswertGier = MAX_SENSOR; |
+ if(MesswertGier < -MAX_SENSOR) MesswertGier = -MAX_SENSOR; |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Höhenregelung |
+// Die Höhenregelung schwächt lediglich das Gas ab, erhöht es allerdings nicht |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+//OCR0B = 180 - (Poti1 + 120) / 4; |
+//DruckOffsetSetting = OCR0B; |
+ if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung |
+ { |
+ int tmp_int; |
+ if(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER) // Regler wird über Schalter gesteuert |
+ { |
+ if(Parameter_MaxHoehe < 50) |
+ { |
+ SollHoehe = HoehenWert - 20; // Parameter_MaxHoehe ist der PPM-Wert des Schalters |
+ HoehenReglerAktiv = 0; |
+ } |
+ else |
+ HoehenReglerAktiv = 1; |
+ } |
+ else |
+ { |
+ SollHoehe = Parameter_MaxHoehe * EE_Parameter.Hoehe_Verstaerkung - 20; |
+ HoehenReglerAktiv = 1; |
+ } |
+ |
+ if(Notlandung) SollHoehe = 0; |
+ h = HoehenWert; |
+ if((h > SollHoehe) && HoehenReglerAktiv) // zu hoch --> drosseln |
+ { h = ((h - SollHoehe) * (int) Parameter_Hoehe_P) / 16; // Differenz bestimmen --> P-Anteil |
+ h = GasMischanteil - h; // vom Gas abziehen |
+ h -= (HoeheD * Parameter_Luftdruck_D)/8; // D-Anteil |
+ tmp_int = ((Mess_Integral_Hoch / 512) * (signed long) Parameter_Hoehe_ACC_Wirkung) / 32; |
+ if(tmp_int > 50) tmp_int = 50; |
+ else if(tmp_int < -50) tmp_int = -50; |
+ h -= tmp_int; |
+ hoehenregler = (hoehenregler*15 + h) / 16; |
+ if(hoehenregler < EE_Parameter.Hoehe_MinGas) // nicht unter MIN |
+ { |
+ if(GasMischanteil >= EE_Parameter.Hoehe_MinGas) hoehenregler = EE_Parameter.Hoehe_MinGas; |
+ if(GasMischanteil < EE_Parameter.Hoehe_MinGas) hoehenregler = GasMischanteil; |
+ } |
+ if(hoehenregler > GasMischanteil) hoehenregler = GasMischanteil; // nicht mehr als Gas |
+ GasMischanteil = hoehenregler; |
+ } |
+ } |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Mischer und PI-Regler |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Gier-Anteil |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ GierMischanteil = MesswertGier - sollGier; // Regler für Gier |
+ if(GierMischanteil > 100) GierMischanteil = 100; |
+ if(GierMischanteil < -100) GierMischanteil = -100; |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Nick-Achse |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ DiffNick = Kp * (MesswertNick - (StickNick - GPS_Nick)); // Differenz bestimmen |
+ SummeNick += DiffNick; // I-Anteil |
+ if(SummeNick > 0) SummeNick-= (abs(SummeNick)/256 + 1); else SummeNick += abs(SummeNick)/256 + 1; |
+ if(SummeNick > 16000) SummeNick = 16000; |
+ if(SummeNick < -16000) SummeNick = -16000; |
+ pd_ergebnis = DiffNick + Ki * SummeNick; // PI-Regler für Nick |
+ // Motor Vorn |
+ motorwert = GasMischanteil + pd_ergebnis + GierMischanteil; // Mischer |
+ if ((motorwert < 0) | (GasMischanteil < 10)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Vorne = motorwert; |
+ // Motor Heck |
+ motorwert = GasMischanteil - pd_ergebnis + GierMischanteil; |
+ if ((motorwert < 0) | (GasMischanteil < 10)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Hinten = motorwert; |
+ |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Roll-Achse |
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ DiffRoll = Kp * (MesswertRoll - (StickRoll - GPS_Roll)); // Differenz bestimmen |
+ SummeRoll += DiffRoll; // I-Anteil |
+ if(SummeRoll > 0) SummeRoll-= (abs(SummeRoll)/256 + 1); else SummeRoll += abs(SummeRoll)/256 + 1; |
+ if(SummeRoll > 16000) SummeRoll = 16000; |
+ if(SummeRoll < -16000) SummeRoll = -16000; |
+ pd_ergebnis = DiffRoll + Ki * SummeRoll; // PI-Regler für Roll |
+ // Motor Links |
+ motorwert = GasMischanteil + pd_ergebnis - GierMischanteil; |
+ if ((motorwert < 0) | (GasMischanteil < 10)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Links = motorwert; |
+ // Motor Rechts |
+ motorwert = GasMischanteil - pd_ergebnis - GierMischanteil; |
+ if ((motorwert < 0) | (GasMischanteil < 10)) motorwert = 0; |
+ else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
+ if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
+ Motor_Rechts = motorwert; |
+ // +++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+} |
+ |
/branches/matosi/fc.h |
---|
0,0 → 1,106 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
#ifndef _FC_H |
#define _FC_H |
extern volatile unsigned char Timeout; |
extern unsigned char Sekunde,Minute; |
extern volatile long IntegralNick,IntegralNick2; |
extern volatile long IntegralRoll,IntegralRoll2; |
extern volatile long Mess_IntegralNick,Mess_IntegralNick2; |
extern volatile long Mess_IntegralRoll,Mess_IntegralRoll2; |
extern volatile long Mess_Integral_Hoch; |
extern volatile long Integral_Gier,Mess_Integral_Gier,Mess_Integral_Gier2; |
extern volatile int KompassValue; |
extern volatile int KompassStartwert; |
extern volatile int KompassRichtung; |
extern int HoehenWert; |
extern int SollHoehe; |
extern volatile int MesswertNick,MesswertRoll,MesswertGier; |
extern volatile int AdNeutralNick,AdNeutralRoll,AdNeutralGier, Mittelwert_AccNick, Mittelwert_AccRoll; |
extern volatile int NeutralAccX, NeutralAccY,Mittelwert_AccHoch; |
extern volatile float NeutralAccZ; |
void MotorRegler(void); |
void SendMotorData(void); |
void CalibrierMittelwert(void); |
void Mittelwert(void); |
void SetNeutral(void); |
unsigned char h,m,s; |
volatile unsigned char Timeout ; |
unsigned char CosinusNickWinkel, CosinusRollWinkel; |
volatile long IntegralNick,IntegralNick2; |
volatile long IntegralRoll,IntegralRoll2; |
volatile long Integral_Gier; |
volatile long Mess_IntegralNick,Mess_IntegralNick2; |
volatile long Mess_IntegralRoll,Mess_IntegralRoll2; |
volatile long Mess_Integral_Gier; |
volatile int DiffNick,DiffRoll; |
extern int Poti1, Poti2, Poti3, Poti4; |
volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count; |
unsigned char MotorWert[5]; |
volatile unsigned char SenderOkay; |
int StickNick,StickRoll,StickGier; |
char MotorenEin; |
extern void DefaultKonstanten(void); |
#define STRUCT_PARAM_LAENGE 58 |
struct mk_param_struct |
{ |
unsigned char Kanalbelegung[8]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3 |
unsigned char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv |
unsigned char Hoehe_MinGas; // Wert : 0-100 |
unsigned char Luftdruck_D; // Wert : 0-250 |
unsigned char MaxHoehe; // Wert : 0-32 |
unsigned char Hoehe_P; // Wert : 0-32 |
unsigned char Hoehe_Verstaerkung; // Wert : 0-50 |
unsigned char Hoehe_ACC_Wirkung; // Wert : 0-250 |
unsigned char Stick_P; // Wert : 1-6 |
unsigned char Stick_D; // Wert : 0-64 |
unsigned char Gier_P; // Wert : 1-20 |
unsigned char Gas_Min; // Wert : 0-32 |
unsigned char Gas_Max; // Wert : 33-250 |
unsigned char GyroAccFaktor; // Wert : 1-64 |
unsigned char KompassWirkung; // Wert : 0-32 |
unsigned char Gyro_P; // Wert : 10-250 |
unsigned char Gyro_I; // Wert : 0-250 |
unsigned char UnterspannungsWarnung; // Wert : 0-250 |
unsigned char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust |
unsigned char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen |
unsigned char UfoAusrichtung; // X oder + Formation |
unsigned char I_Faktor; // Wert : 0-250 |
unsigned char UserParam1; // Wert : 0-250 |
unsigned char UserParam2; // Wert : 0-250 |
unsigned char UserParam3; // Wert : 0-250 |
unsigned char UserParam4; // Wert : 0-250 |
unsigned char ServoNickControl; // Wert : 0-250 // Stellung des Servos |
unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
unsigned char ServoNickMin; // Wert : 0-250 // Anschlag |
unsigned char ServoNickMax; // Wert : 0-250 // Anschlag |
unsigned char ServoNickRefresh; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
unsigned char ServoNickCompInvert; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
unsigned char Reserved[7]; |
char Name[12]; |
}; |
extern struct mk_param_struct EE_Parameter; |
extern unsigned char Parameter_Luftdruck_D; |
extern unsigned char Parameter_MaxHoehe; |
extern unsigned char Parameter_Hoehe_P; |
extern unsigned char Parameter_Hoehe_ACC_Wirkung; |
extern unsigned char Parameter_KompassWirkung; |
extern unsigned char Parameter_Gyro_P; |
extern unsigned char Parameter_Gyro_I; |
extern unsigned char Parameter_Gier_P; |
extern unsigned char Parameter_ServoNickControl; |
#endif //_FC_H |
/branches/matosi/flight-ctrl_mega644_v0_60.aws |
---|
0,0 → 1,0 |
<AVRWorkspace><IOSettings><CurrentRegisters/></IOSettings><part name="ATMEGA644"/><Files><File00000 Name="C:\hubi\ufo\mickrokopter\gps codes\V0.60_GPS_BETA_martosi\main.c" Position="336 71 1048 624" LineCol="198 0" State="Maximized"/></Files></AVRWorkspace> |
/branches/matosi/gps.h |
---|
0,0 → 1,73 |
//------------------------------------------------------------------------------ |
// _ _ |
// | | | | |
// ___ _ __ ___ ___ _ _ ___| |_ ___ ___| |__ |
// / _ \ '_ ` _ \/ __| | | / __| __/ _ \/ __| '_ \. |
// | __/ | | | | \__ \ |_| \__ \ || __/ (__| | | | |
// \___|_| |_| |_|___/\__, |___/\__\___|\___|_| |_| |
// __/ | |
// |___/ Engineering |
// |
// Filename: gps.h |
// Description: |
// |
// Author: Martin Steppuhn |
// History: 15.06.2007 Initial version |
// |
//------------------------------------------------------------------------------ |
#ifndef GPS_H |
#define GPS_H |
/**** Includes ****************************************************************/ |
/**** Preprocessing directives (#define) **************************************/ |
#define LED_GPS_FIX_TOGGLE PORTC ^= (1<<2) |
#define LED_GPS_FIX_ON PORTC |= (1<<2) |
#define LED_GPS_FIX_OFF PORTC &= ~(1<<2) |
#define LED_GPS_DATA_TOGGLE PORTC ^= (1<<3) |
#define LED_GPS_DATA_ON PORTC |= (1<<3) |
#define LED_GPS_DATA_OFF PORTC &= ~(1<<3) |
/**** Type definitions (typedef) **********************************************/ |
/**** Global constants (extern) ***********************************************/ |
/**** Global variables (extern) ***********************************************/ |
extern signed int GPS_Nick; |
extern signed int GPS_Roll; |
extern void GPS_Neutral(void); |
extern void GPS_Main(void); |
/**** Global function prototypes **********************************************/ |
#endif |
/branches/matosi/gps_ubx.c |
---|
0,0 → 1,137 |
//------------------------------------------------------------------------------ |
// _ _ |
// | | | | |
// ___ _ __ ___ ___ _ _ ___| |_ ___ ___| |__ |
// / _ \ '_ ` _ \/ __| | | / __| __/ _ \/ __| '_ \. |
// | __/ | | | | \__ \ |_| \__ \ || __/ (__| | | | |
// \___|_| |_| |_|___/\__, |___/\__\___|\___|_| |_| |
// __/ | |
// |___/ Engineering |
// |
// Filename: gps_ubx.c |
// Description: |
// |
// Author: Martin Steppuhn |
// History: 08.06.2007 Initial version |
// |
//------------------------------------------------------------------------------ |
/**** Includes ****************************************************************/ |
#include "std_c.h" |
#include "gps_ubx.h" |
/**** Preprocessing directives (#define) **************************************/ |
/**** Type definitions (typedef) **********************************************/ |
/**** Global constants ********************************************************/ |
/**** Global variables ********************************************************/ |
struct ubx_struct ubx; |
struct nav_sol_struct nav_sol; |
/**** Local constants ********************************************************/ |
/**** Local variables *********************************************************/ |
uint8 ubx_buf[256]; |
uint8 ubx_buf_len; |
/**** Local function prototypes ***********************************************/ |
//------------------------------------------------------------------------------ |
// Name: ubx_push |
// Function: |
// |
// Parameter: |
// Return: |
//------------------------------------------------------------------------------ |
void ubx_push(uint8 c) |
{ |
uint8 length; |
uint8 check_a,check_b; |
uint16 i; |
ubx_buf[ubx_buf_len] = c; |
ubx_buf_len++; |
if(ubx_buf_len == 1) { if(ubx_buf[0] != 0xB5) ubx_buf_len = 0; } // Sync |
else if(ubx_buf_len == 2) { if(ubx_buf[1] != 0x62) ubx_buf_len = 0; } // Sync |
else if(ubx_buf_len >= 6) |
{ |
length = (((uint16)ubx_buf[5]) << 8)+ ubx_buf[4]; // length |
if(ubx_buf_len >= (length+8)) // frame complete |
{ |
//=== Calculate checksum === |
check_a = 0; |
check_b = 0; |
for(i=2;i<(ubx_buf_len-2);i++) |
{ |
check_a = check_a + ubx_buf[i]; |
check_b = check_b + check_a; |
} |
//=== Test checksum === |
if((check_a == ubx_buf[ubx_buf_len-2]) && (check_b == ubx_buf[ubx_buf_len-1])) |
{ |
ubx.msg_class = ubx_buf[2]; |
ubx.msg_id = ubx_buf[3]; |
ubx.length = length; |
for(i=0;i<ubx.length;i++) ubx.data[i] = ubx_buf[i+6]; // copy data |
ubx.update = true; |
} |
ubx_buf_len = 0; |
} |
} |
} |
//------------------------------------------------------------------------------ |
// Name: ubx_decode |
// Function: |
// |
// Parameter: |
// Return: |
//------------------------------------------------------------------------------ |
void ubx_decode(struct ubx_struct *ubx) |
{ |
if((ubx->msg_class == 0x01) && (ubx->msg_id == 0x06)) // NAV-SOL |
{ |
nav_sol.itow = *(uint32*)(&ubx->data[0]); // ms |
nav_sol.gpsfix = ubx->data[10]; |
nav_sol.ecef_x = *(int32*)(&ubx->data[12]); // cm |
nav_sol.ecef_y = *(int32*)(&ubx->data[16]); // cm |
nav_sol.ecef_z = *(int32*)(&ubx->data[20]); // cm |
nav_sol.pacc = *(int32*)(&ubx->data[24]); // cm |
nav_sol.ecefvx = *(uint32*)(&ubx->data[28]); // cm/s |
nav_sol.ecefvy = *(uint32*)(&ubx->data[32]); // cm/s |
nav_sol.ecefvz = *(uint32*)(&ubx->data[36]); // cm/s |
nav_sol.sacc = *(uint32*)(&ubx->data[40]); // cm/s |
nav_sol.pdop = (uint16)ubx->data[44]; |
nav_sol.numsv = ubx->data[47]; |
nav_sol.update = true; |
} |
} |
//------------------------------------------------------------------------------ |
// Name: show_ubx |
// Function: |
// |
// Parameter: |
// Return: |
//------------------------------------------------------------------------------ |
void show_ubx(struct ubx_struct *ubx) |
{ |
uint8 i; |
printf("MsgClass=%u ",ubx->msg_class); |
printf("MsgId=%u ",ubx->msg_id); |
printf("Length=%u ",ubx->length); |
printf("Data= "); |
for(i=0;i<ubx->length;i++) printf("%02X ",ubx->data[i]); |
printf("\r\n"); |
} |
/branches/matosi/gps_ubx.h |
---|
0,0 → 1,71 |
//------------------------------------------------------------------------------ |
// _ _ |
// | | | | |
// ___ _ __ ___ ___ _ _ ___| |_ ___ ___| |__ |
// / _ \ '_ ` _ \/ __| | | / __| __/ _ \/ __| '_ \. |
// | __/ | | | | \__ \ |_| \__ \ || __/ (__| | | | |
// \___|_| |_| |_|___/\__, |___/\__\___|\___|_| |_| |
// __/ | |
// |___/ Engineering |
// |
// Filename: gps_ubx.h |
// Description: |
// |
// Author: Martin Steppuhn |
// History: 08.06.2007 Initial version |
// |
//------------------------------------------------------------------------------ |
#ifndef GPS_UBX_H |
#define GPS_UBX_H |
/**** Includes ****************************************************************/ |
#include "std_c.h" |
/**** Preprocessing directives (#define) **************************************/ |
/**** Type definitions (typedef) **********************************************/ |
typedef struct ubx_struct |
{ |
bool update; |
uint8 msg_class; |
uint8 msg_id; |
uint8 length; |
uint8 data[256]; |
}; |
typedef struct nav_sol_struct |
{ |
uint8 update; |
uint32 itow; // Time |
uint8 gpsfix; // GPSfix |
int32 ecef_x; // cm ECEF X coordinate |
int32 ecef_y; // cm ECEF Y coordinate |
int32 ecef_z; // cm ECEF Z coordinate |
uint32 pacc; // cm 3D Position Accuracy Estimate |
int32 ecefvx; // cm/s ECEF X velocity |
int32 ecefvy; // cm/s ECEF Y velocity |
int32 ecefvz; // cm/s ECEF Z velocity |
uint32 sacc; // cm/s Speed Accuracy Estimate |
uint16 pdop; // Position DOP |
uint8 numsv; // Number of SVs used in Nav Solution |
}; |
/**** Global constants (extern) ***********************************************/ |
/**** Global variables (extern) ***********************************************/ |
struct ubx_struct ubx; |
struct nav_sol_struct nav_sol; |
/**** Global function prototypes **********************************************/ |
extern void ubx_push(uint8 c); |
extern void ubx_decode(struct ubx_struct *ubx); |
#endif |
/branches/matosi/main.c |
---|
0,0 → 1,221 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + Nur für den privaten Gebrauch |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten und nicht-kommerziellen Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt und genannt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned char EEPromArray[E2END+1] EEMEM; |
// -- Parametersatz aus EEPROM lesen --- |
// number [0..5] |
void ReadParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if (number > 5) number = 5; |
eeprom_read_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length); |
} |
// -- Parametersatz ins EEPROM schreiben --- |
// number [0..5] |
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if (number > 5) number = 5; |
eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], number); // diesen Parametersatz als aktuell merken |
} |
unsigned char GetActiveParamSetNumber(void) |
{ |
return(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET])); |
} |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
unsigned int timer; |
unsigned int timer2 = 0; |
DDRC = 0x01; // SCL |
PORTC = 0xff; // Pullup SDA |
DDRB = 0x1B; // LEDs und Druckoffset |
PORTB = 0x01; // LED_Rot |
DDRD = 0x3E; // Speaker & TXD & J3 J4 J5 |
DDRD |=0x80; // J7 |
PORTD = 0xF7; // LED |
MCUSR &=~(1<<WDRF); |
WDTCSR |= (1<<WDCE)|(1<<WDE); |
WDTCSR = 0; |
beeptime = 2000; |
StickGier = 0; PPM_in[K_GAS] = 0;StickRoll = 0; StickNick = 0; |
ROT_OFF; |
Timer_Init(); |
UART_Init(); |
rc_sum_init(); |
ADC_Init(); |
i2c_init(); |
sei(); |
VersionInfo.Hauptversion = VERSION_HAUPTVERSION; |
VersionInfo.Nebenversion = VERSION_NEBENVERSION; |
VersionInfo.PCKompatibel = VERSION_KOMPATIBEL; |
printf("\n\rFlightControl V%d.%d ", VERSION_HAUPTVERSION, VERSION_NEBENVERSION); |
printf("\n\r=============================="); |
GRN_ON; |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != 59) // seit V 0.60 |
{ |
printf("\n\rInit. EEPROM: Generiere Default-Parameter..."); |
DefaultKonstanten1(); |
for (unsigned char i=0;i<6;i++) |
{ |
if(i==2) DefaultKonstanten2(); |
WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
} |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], 1); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], 59); |
} |
ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
printf("\n\rBenutze Parametersatz %d", GetActiveParamSetNumber()); |
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
printf("\n\rAbgleich Luftdrucksensor.."); |
timer = SetDelay(2500); |
SucheLuftruckOffset(); |
while (!CheckDelay(timer)); |
printf("OK\n\r"); |
} |
SetNeutral(); |
ROT_OFF; |
beeptime = 2000; |
DebugIn.Analog[1] = 1000; |
DebugIn.Digital[0] = 0x55; |
printf("\n\rSteuerung: "); |
if (EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) printf("HeadingHold"); |
else printf("Neutral"); |
printf("\n\n\r"); |
LcdClear(); |
while (1) |
{ |
if (UpdateMotor) // ReglerIntervall |
{ |
UpdateMotor=0; |
MotorRegler(); |
SendMotorData(); |
ROT_OFF; |
if(PcZugriff) PcZugriff--; |
if(SenderOkay) SenderOkay--; |
if (UBat < EE_Parameter.UnterspannungsWarnung) |
{ |
beeptime = 2000; |
} |
if(!Timeout) |
{ |
i2c_init(); |
} |
else |
{ |
ROT_OFF; |
} |
} |
if(EE_Parameter.GlobalConfig & CFG_GPS_AKTIV) |
{ |
GPS_Main(); |
} |
else |
{ |
GPS_Nick = 0; |
GPS_Roll = 0; |
} |
if(SIO_DEBUG) |
{ |
DatenUebertragung(); |
BearbeiteRxDaten(); |
} |
else BearbeiteRxDaten(); |
if(CheckDelay(timer2)) |
{ |
if(MotorenEin) PORTC ^= 0x10; else PORTC &= ~0x10; |
timer = SetDelay(500); |
} |
} |
return (1); |
} |
/branches/matosi/main.h |
---|
0,0 → 1,93 |
#ifndef _MAIN_H |
#define _MAIN_H |
//Hier die Quarz Frequenz einstellen |
#if defined (__AVR_ATmega32__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
#endif |
#if defined (__AVR_ATmega644__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
//#define SYSCLK 16000000L //Quarz Frequenz in Hz |
#endif |
// neue Hardware |
#define ROT_OFF PORTB &=~0x01 |
#define ROT_ON PORTB |= 0x01 |
#define ROT_FLASH PORTB ^= 0x01 |
#define GRN_OFF PORTB &=~0x02 |
#define GRN_ON PORTB |= 0x02 |
#define GRN_FLASH PORTD ^= 0x02 |
//#ifndef F_CPU |
//#error ################## F_CPU nicht definiert oder ungültig ############# |
//#endif |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//#define ANZ_MITTELWERT 4 |
#define EEPROM_ADR_VALID 1 |
#define EEPROM_ADR_ACTIVE_SET 2 |
#define EEPROM_ADR_PARAM_BEGIN 100 |
#define CFG_HOEHENREGELUNG 0x01 |
#define CFG_HOEHEN_SCHALTER 0x02 |
#define CFG_HEADING_HOLD 0x04 |
#define CFG_KOMPASS_AKTIV 0x08 |
#define CFG_KOMPASS_FIX 0x10 |
#define CFG_GPS_AKTIV 0x20 |
//#define SYSCLK |
//extern unsigned long SYSCLK; |
extern volatile int i_Nick[20],i_Roll[20],DiffNick,DiffRoll; |
extern volatile unsigned char SenderOkay; |
extern unsigned char CosinusNickWinkel, CosinusRollWinkel; |
extern void ReadParameterSet (unsigned char number, unsigned char *buffer, unsigned char length); |
extern void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length); |
extern unsigned char GetActiveParamSetNumber(void); |
extern unsigned char EEPromArray[]; |
#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 "gps_ubx.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/matosi/makefile |
---|
0,0 → 1,391 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega644 |
F_CPU = 20000000 |
#------------------------------------------------------------------- |
HAUPT_VERSION = 0 |
NEBEN_VERSION = 60 |
VERSION_KOMPATIBEL = 4 # PC-Kompatibilität |
#------------------------------------------------------------------- |
ifeq ($(MCU), atmega32) |
# FUSE_SETTINGS= -u -U lfuse:w:0xff:m -U hfuse:w:0xcf:m |
HEX_NAME = MEGA32 |
endif |
ifeq ($(MCU), atmega644) |
FUSE_SETTINGS = -u -U lfuse:w:0xff:m -U hfuse:w:0xdf:m |
#FUSE_SETTINGS = -U lfuse:w:0xff:m -U hfuse:w:0xdf:m |
# -u bei neuen Controllern wieder einspielen |
HEX_NAME = MEGA644 |
endif |
ifeq ($(F_CPU), 16000000) |
QUARZ = 16MHZ |
endif |
ifeq ($(F_CPU), 20000000) |
QUARZ = 20MHZ |
endif |
# Output format. (can be srec, ihex, binary) |
FORMAT = ihex |
# Target file name (without extension). |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION) |
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
OPT = s |
########################################################################################################## |
# List C source files here. (C dependencies are automatically generated.) |
SRC = main.c uart.c printf_P.c timer0.c analog.c menu.c |
SRC += twimaster.c rc.c fc.c GPS.c gps_ubx.c |
########################################################################################################## |
# List Assembler source files here. |
# Make them always end in a capital .S. Files ending in a lowercase .s |
# will not be considered source files but generated files (assembler |
# output from the compiler), and will be deleted upon "make clean"! |
# Even though the DOS/Win* filesystem matches both .s and .S the same, |
# it will preserve the spelling of the filenames, and gcc itself does |
# care about how the name is spelled on its command-line. |
ASRC = |
# List any extra directories to look for include files here. |
# Each directory must be seperated by a space. |
EXTRAINCDIRS = |
# Optional compiler flags. |
# -g: generate debugging information (for GDB, or for COFF conversion) |
# -O*: optimization level |
# -f...: tuning, see gcc manual and avr-libc documentation |
# -Wall...: warning level |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create assembler listing |
CFLAGS = -O$(OPT) \ |
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \ |
-Wall -Wstrict-prototypes \ |
-Wa,-adhlns=$(<:.c=.lst) \ |
$(patsubst %,-I%,$(EXTRAINCDIRS)) |
# Set a "language standard" compiler flag. |
# Unremark just one line below to set the language standard to use. |
# gnu99 = C99 + GNU extensions. See GCC manual for more information. |
#CFLAGS += -std=c89 |
#CFLAGS += -std=gnu89 |
#CFLAGS += -std=c99 |
CFLAGS += -std=gnu99 |
CFLAGS += -DVERSION_HAUPTVERSION=$(HAUPT_VERSION) -DVERSION_NEBENVERSION=$(NEBEN_VERSION) -DVERSION_KOMPATIBEL=$(VERSION_KOMPATIBEL) |
# Optional assembler flags. |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create listing |
# -gstabs: have the assembler create line number information; note that |
# for use in COFF files, additional information about filenames |
# and function names needs to be present in the assembler source |
# files -- see avr-libc docs [FIXME: not yet described there] |
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs |
# Optional linker flags. |
# -Wl,...: tell GCC to pass this to linker. |
# -Map: create map file |
# --cref: add cross reference to map file |
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref |
# Additional libraries |
# Minimalistic printf version |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min |
# Floating point printf version (requires -lm below) |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt |
# -lm = math library |
LDFLAGS += -lm |
##LDFLAGS += -T./linkerfile/avr5.x |
# Programming support using avrdude. Settings and variables. |
# Programming hardware: alf avr910 avrisp bascom bsd |
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 |
# |
# Type: avrdude -c ? |
# to get a full listing. |
# |
#AVRDUDE_PROGRAMMER = stk200 |
AVRDUDE_PROGRAMMER = dt006 |
#AVRDUDE_PROGRAMMER = ponyser |
#falls Ponyser ausgewählt wird, muss sich unsere avrdude-Configdatei im Bin-Verzeichnis des Compilers befinden |
#AVRDUDE_PORT = com1 # programmer connected to serial device |
AVRDUDE_PORT = lpt1 # programmer connected to parallel port |
#AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex |
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex $(FUSE_SETTINGS) |
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep |
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) |
# Uncomment the following if you want avrdude's erase cycle counter. |
# Note that this counter needs to be initialized first using -Yn, |
# see avrdude manual. |
#AVRDUDE_ERASE += -y |
# Uncomment the following if you do /not/ wish a verification to be |
# performed after programming the device. |
AVRDUDE_FLAGS += -V |
# Increase verbosity level. Please use this when submitting bug |
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> |
# to submit bug reports. |
#AVRDUDE_FLAGS += -v -v |
# --------------------------------------------------------------------------- |
# Define directories, if needed. |
DIRAVR = c:/winavr |
DIRAVRBIN = $(DIRAVR)/bin |
DIRAVRUTILS = $(DIRAVR)/utils/bin |
DIRINC = . |
DIRLIB = $(DIRAVR)/avr/lib |
# Define programs and commands. |
SHELL = sh |
CC = avr-gcc |
OBJCOPY = avr-objcopy |
OBJDUMP = avr-objdump |
SIZE = avr-size |
# Programming support using avrdude. |
AVRDUDE = avrdude |
REMOVE = rm -f |
COPY = cp |
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
ELFSIZE = $(SIZE) -A $(TARGET).elf |
# Define Messages |
# English |
MSG_ERRORS_NONE = Errors: none |
MSG_BEGIN = -------- begin -------- |
MSG_END = -------- end -------- |
MSG_SIZE_BEFORE = Size before: |
MSG_SIZE_AFTER = Size after: |
MSG_COFF = Converting to AVR COFF: |
MSG_EXTENDED_COFF = Converting to AVR Extended COFF: |
MSG_FLASH = Creating load file for Flash: |
MSG_EEPROM = Creating load file for EEPROM: |
MSG_EXTENDED_LISTING = Creating Extended Listing: |
MSG_SYMBOL_TABLE = Creating Symbol Table: |
MSG_LINKING = Linking: |
MSG_COMPILING = Compiling: |
MSG_ASSEMBLING = Assembling: |
MSG_CLEANING = Cleaning project: |
# Define all object files. |
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) |
# Define all listing files. |
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) |
# Combine all necessary flags and optional flags. |
# Add target processor to flags. |
#ALL_CFLAGS = -mmcu=$(MCU) -DF_CPU=$(F_CPU) -I. $(CFLAGS) |
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) |
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) |
# Default target. |
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
$(TARGET).lss $(TARGET).sym sizeafter finished end |
# Eye candy. |
# AVR Studio 3.x does not check make's exit code but relies on |
# the following magic strings to be generated by the compile job. |
begin: |
@echo |
@echo $(MSG_BEGIN) |
finished: |
@echo $(MSG_ERRORS_NONE) |
end: |
@echo $(MSG_END) |
@echo |
# Display size of file. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi |
# Display compiler version information. |
gccversion : |
@$(CC) --version |
# Convert ELF to COFF for use in debugging / simulating in |
# AVR Studio or VMLAB. |
COFFCONVERT=$(OBJCOPY) --debugging \ |
--change-section-address .data-0x800000 \ |
--change-section-address .bss-0x800000 \ |
--change-section-address .noinit-0x800000 \ |
--change-section-address .eeprom-0x810000 |
coff: $(TARGET).elf |
@echo |
@echo $(MSG_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof |
extcoff: $(TARGET).elf |
@echo |
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof |
# Program the device. |
program: $(TARGET).hex $(TARGET).eep |
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
# Create final output files (.hex, .eep) from ELF output file. |
%.hex: %.elf |
@echo |
@echo $(MSG_FLASH) $@ |
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ |
%.eep: %.elf |
@echo |
@echo $(MSG_EEPROM) $@ |
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ |
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@ |
# Create extended listing file from ELF output file. |
%.lss: %.elf |
@echo |
@echo $(MSG_EXTENDED_LISTING) $@ |
$(OBJDUMP) -h -S $< > $@ |
# Create a symbol table from ELF output file. |
%.sym: %.elf |
@echo |
@echo $(MSG_SYMBOL_TABLE) $@ |
avr-nm -n $< > $@ |
# Link: create ELF output file from object files. |
.SECONDARY : $(TARGET).elf |
.PRECIOUS : $(OBJ) |
%.elf: $(OBJ) |
@echo |
@echo $(MSG_LINKING) $@ |
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) |
# Compile: create object files from C source files. |
%.o : %.c |
@echo |
@echo $(MSG_COMPILING) $< |
$(CC) -c $(ALL_CFLAGS) $< -o $@ |
# Compile: create assembler files from C source files. |
%.s : %.c |
$(CC) -S $(ALL_CFLAGS) $< -o $@ |
# Assemble: create object files from assembler source files. |
%.o : %.S |
@echo |
@echo $(MSG_ASSEMBLING) $< |
$(CC) -c $(ALL_ASFLAGS) $< -o $@ |
# Target: clean project. |
clean: begin clean_list finished end |
clean_list : |
@echo |
@echo $(MSG_CLEANING) |
# $(REMOVE) $(TARGET).hex |
$(REMOVE) $(TARGET).eep |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).cof |
$(REMOVE) $(TARGET).elf |
$(REMOVE) $(TARGET).map |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).a90 |
$(REMOVE) $(TARGET).sym |
$(REMOVE) $(TARGET).lnk |
$(REMOVE) $(TARGET).lss |
$(REMOVE) $(OBJ) |
$(REMOVE) $(LST) |
$(REMOVE) $(SRC:.c=.s) |
$(REMOVE) $(SRC:.c=.d) |
# Automatically generate C source code dependencies. |
# (Code originally taken from the GNU make user manual and modified |
# (See README.txt Credits).) |
# |
# Note that this will work with sh (bash) and sed that is shipped with WinAVR |
# (see the SHELL variable defined above). |
# This may not work with other shells or other seds. |
# |
%.d: %.c |
set -e; $(CC) -MM $(ALL_CFLAGS) $< \ |
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ |
[ -s $@ ] || rm -f $@ |
# Remove the '-' if you want to see the dependency files generated. |
-include $(SRC:.c=.d) |
# Listing of phony targets. |
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \ |
clean clean_list program |
/branches/matosi/menu.c |
---|
0,0 → 1,125 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned int TestInt = 0; |
#define ARRAYGROESSE 10 |
unsigned char Array[ARRAYGROESSE] = {1,2,3,4,5,6,7,8,9,10}; |
char DisplayBuff[80] = "Hallo Welt"; |
unsigned char DispPtr = 0; |
unsigned char RemoteTasten = 0; |
#define KEY1 0x01 |
#define KEY2 0x02 |
#define KEY3 0x04 |
#define KEY4 0x08 |
#define KEY5 0x10 |
void LcdClear(void) |
{ |
unsigned char i; |
for(i=0;i<80;i++) DisplayBuff[i] = ' '; |
} |
void Menu(void) |
{ |
static unsigned char MaxMenue = 11,MenuePunkt=0; |
if(RemoteTasten & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue; LcdClear(); } |
if(RemoteTasten & KEY2) { MenuePunkt++; LcdClear(); } |
if((RemoteTasten & KEY1) && (RemoteTasten & KEY2)) MenuePunkt = 0; |
LCD_printfxy(17,0,"[%i]",MenuePunkt); |
switch(MenuePunkt) |
{ |
case 0: |
LCD_printfxy(0,0,"++ MikroKopter ++"); |
LCD_printfxy(0,1,"V%d.%d",VERSION_HAUPTVERSION, VERSION_NEBENVERSION); |
LCD_printfxy(0,2,"Setting: %d ",GetActiveParamSetNumber()); |
LCD_printfxy(0,3,"(c) Holger Buss"); |
// if(RemoteTasten & KEY3) TestInt--; |
// if(RemoteTasten & KEY4) TestInt++; |
break; |
case 1: |
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
LCD_printfxy(0,0,"Hoehe: %5i",HoehenWert); |
LCD_printfxy(0,1,"SollHoehe: %5i",SollHoehe); |
LCD_printfxy(0,2,"Luftdruck: %5i",MessLuftdruck); |
LCD_printfxy(0,3,"Off : %5i",DruckOffsetSetting); |
} |
else |
{ |
LCD_printfxy(0,1,"Keine "); |
LCD_printfxy(0,2,"Höhenregelung"); |
} |
break; |
case 2: |
LCD_printfxy(0,0,"akt. Lage"); |
LCD_printfxy(0,1,"Nick: %5i",IntegralNick/1024); |
LCD_printfxy(0,2,"Roll: %5i",IntegralRoll/1024); |
LCD_printfxy(0,3,"Kompass: %5i",KompassValue); |
break; |
case 3: |
LCD_printfxy(0,0,"K1:%4i K2:%4i ",PPM_in[1],PPM_in[2]); |
LCD_printfxy(0,1,"K3:%4i K4:%4i ",PPM_in[3],PPM_in[4]); |
LCD_printfxy(0,2,"K5:%4i K6:%4i ",PPM_in[5],PPM_in[6]); |
LCD_printfxy(0,3,"K7:%4i Kanäle ",PPM_in[7]); |
break; |
case 4: |
LCD_printfxy(0,0,"Ni:%4i Ro:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_NICK]],PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]); |
LCD_printfxy(0,1,"Gs:%4i Gi:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_GAS]],PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]); |
LCD_printfxy(0,2,"P1:%4i P2:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]],PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]]); |
LCD_printfxy(0,3,"P3:%4i Kanäle ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]]); |
break; |
case 5: |
LCD_printfxy(0,0,"Gyro - Sensor"); |
LCD_printfxy(0,1,"Nick %4i (%3i)",AccumulateNick / MessanzahlNick, AdNeutralNick); |
LCD_printfxy(0,2,"Roll %4i (%3i)",AccumulateRoll / MessanzahlRoll, AdNeutralRoll); |
LCD_printfxy(0,3,"Gier %4i (%3i)",AccumulateGier / MessanzahlGier, AdNeutralGier); |
break; |
case 6: |
LCD_printfxy(0,0,"ACC - Sensor"); |
LCD_printfxy(0,1,"Nick %4i (%3i)",accumulate_AccNick / messanzahl_AccNick,NeutralAccX); |
LCD_printfxy(0,2,"Roll %4i (%3i)",accumulate_AccRoll / messanzahl_AccRoll,NeutralAccY); |
LCD_printfxy(0,3,"Hoch %4i (%3i)",Aktuell_az/*accumulate_AccHoch / messanzahl_AccHoch*/,(int)NeutralAccZ); |
break; |
case 7: |
LCD_printfxy(0,1,"Spannung: %5i",UBat); |
LCD_printfxy(0,2,"Empf.Pegel:%5i",SenderOkay); |
break; |
case 8: |
LCD_printfxy(0,0,"Kompass "); |
LCD_printfxy(0,1,"Richtung: %5i",KompassRichtung); |
LCD_printfxy(0,2,"Messwert: %5i",KompassValue); |
LCD_printfxy(0,3,"Start: %5i",KompassStartwert); |
break; |
case 9: |
LCD_printfxy(0,0,"Poti1: %3i",Poti1); |
LCD_printfxy(0,1,"Poti2: %3i",Poti2); |
LCD_printfxy(0,2,"Poti3: %3i",Poti3); |
LCD_printfxy(0,3,"Poti4: %3i",Poti4); |
break; |
case 10: |
LCD_printfxy(0,0,"Servo " ); |
LCD_printfxy(0,1,"Setpoint %3i",Parameter_ServoNickControl); |
LCD_printfxy(0,2,"Stellung: %3i",ServoValue); |
LCD_printfxy(0,3,"Range:%3i-%3i",EE_Parameter.ServoNickMin,EE_Parameter.ServoNickMax); |
break; |
case 11: |
LCD_printfxy(0,0,"GPS " ); |
LCD_printfxy(0,1,"GPS_Nick %3i",GPS_Nick); |
LCD_printfxy(0,2,"GPS_Roll: %3i",GPS_Roll); |
break; |
default: MaxMenue = MenuePunkt - 1; |
MenuePunkt = 0; |
break; |
} |
RemoteTasten = 0; |
} |
/branches/matosi/menu.h |
---|
0,0 → 1,5 |
extern void Menu(void); |
extern char DisplayBuff[80]; |
extern unsigned char DispPtr; |
unsigned char RemoteTasten; |
/branches/matosi/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/matosi/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/matosi/printf_P.h |
---|
0,0 → 1,19 |
#ifndef _PRINTF_P_H_ |
#define _PRINTF_P_H_ |
#include <avr/pgmspace.h> |
#define OUT_V24 0 |
#define OUT_LCD 1 |
extern void _printf_P (char, char const *fmt0, ...); |
extern char PrintZiel; |
#define printf_P(format, args...) _printf_P(OUT_V24,format , ## args) |
#define printf(format, args...) _printf_P(OUT_V24,PSTR(format) , ## args) |
#define LCD_printfxy(x,y,format, args...) { DispPtr = y * 20 + x; _printf_P(OUT_LCD,PSTR(format) , ## args);} |
#define LCD_printf(format, args...) { _printf_P(OUT_LCD,PSTR(format) , ## args);} |
#endif |
/branches/matosi/rc.c |
---|
0,0 → 1,85 |
/*####################################################################################### |
Decodieren eines RC Summen Signals |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "rc.h" |
#include "main.h" |
volatile int PPM_in[11]; |
volatile int PPM_diff[11]; // das diffenzierte Stick-Signal |
volatile unsigned char NewPpmData = 1; |
//############################################################################ |
//zum decodieren des PPM-Signals wird Timer1 mit seiner Input |
//Capture Funktion benutzt: |
void rc_sum_init (void) |
//############################################################################ |
{ |
TCCR1B=(1<<CS11)|(1<<CS10)|(1<<ICES1)|(1<<ICNC1);//|(1 << WGM12); //timer1 prescale 64 |
// PWM |
//TCCR1A = (1 << COM1B1) | (1 << WGM11) | (1 << WGM10); |
//TCCR1B |= (1 << WGM12); |
//OCR1B = 55; |
TIMSK1 |= _BV(ICIE1); |
AdNeutralGier = 0; |
AdNeutralRoll = 0; |
AdNeutralNick = 0; |
return; |
} |
//############################################################################ |
//Diese Routine startet und inizialisiert den Timer für RC |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int AltICR=0; |
signed int signal = 0; |
static int index; |
signal = (unsigned int) ICR1 - AltICR; |
AltICR = ICR1; |
//Syncronisationspause? |
if ((signal > 1500) && (signal < 8000)) |
{ |
index = 1; |
NewPpmData = 0; // Null bedeutet: Neue Daten |
// OCR2A = Poti2/2 + 80; |
} |
else |
{ |
if(index < 10) |
{ |
if((signal > 250) && (signal < 687)) |
{ |
signal -= 466; |
// Stabiles Signal |
if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10;} |
signal = (3 * (PPM_in[index]) + signal) / 4; |
//373 entspricht ca. 1.5ms also Mittelstellung |
PPM_diff[index] = signal - PPM_in[index]; |
PPM_in[index] = signal; |
} |
index++; |
/* if(index == 5) PORTD |= 0x20; else PORTD &= ~0x20; // Servosignal an J3 anlegen |
if(index == 6) PORTD |= 0x10; else PORTD &= ~0x10; // Servosignal an J4 anlegen |
if(index == 7) PORTD |= 0x08; else PORTD &= ~0x08; // Servosignal an J5 anlegen */ |
} |
} |
} |
/branches/matosi/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/matosi/std_c.h |
---|
0,0 → 1,49 |
//*---------------------------------------------------------------------------- |
//* ATMEL Microcontroller Software Support - ROUSSET - |
//*---------------------------------------------------------------------------- |
//* The software is delivered "AS IS" without warranty or condition of any |
//* kind, either express, implied or statutory. This includes without |
//* limitation any warranty or condition with respect to merchantability or |
//* fitness for any particular purpose, or against the infringements of |
//* intellectual property rights of others. |
//*---------------------------------------------------------------------------- |
//* File Name : std_c.h |
//* Object : Standard C Header File |
//* |
//* 1.0 01/04/00 JCZ : Creation |
//*---------------------------------------------------------------------------- |
#ifndef std_c_h |
#define std_c_h |
/*----------------*/ |
/* Standard types */ |
/*----------------*/ |
typedef unsigned char uint8; |
typedef unsigned short uint16; |
typedef unsigned long uint32; |
typedef unsigned char bool; |
typedef signed char int8; |
typedef signed short int16; |
typedef signed long int32; |
/* 16-bit Flash Data type */ |
typedef volatile unsigned short flash_word ; |
/* AT91 Register type */ |
typedef volatile unsigned int at91_reg ; |
/*----------------*/ |
/* Boolean values */ |
/*----------------*/ |
#define true 1 |
#define false 0 |
#endif /* std_c_h */ |
/branches/matosi/timer0.c |
---|
0,0 → 1,139 |
#include "main.h" |
volatile unsigned int CountMilliseconds = 0; |
volatile static unsigned int tim_main; |
volatile unsigned char UpdateMotor = 0; |
volatile unsigned int cntKompass = 0; |
volatile unsigned int beeptime = 0; |
int ServoValue = 0; |
enum { |
STOP = 0, |
CK = 1, |
CK8 = 2, |
CK64 = 3, |
CK256 = 4, |
CK1024 = 5, |
T0_FALLING_EDGE = 6, |
T0_RISING_EDGE = 7 |
}; |
SIGNAL (SIG_OVERFLOW0) // 8kHz |
{ |
static unsigned char cnt_1ms = 1,cnt = 0; |
// TCNT0 -= 250;//TIMER_RELOAD_VALUE; |
if(!cnt--) |
{ |
cnt = 9; |
cnt_1ms++; |
cnt_1ms %= 2; |
if(!cnt_1ms) UpdateMotor = 1; |
CountMilliseconds++; |
if(Timeout) Timeout--; |
} |
if(beeptime > 1) |
{ |
beeptime--; |
PORTD |= (1<<2); |
} |
else |
PORTD &= ~(1<<2); |
if(EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV) |
{ |
if(PINC & 0x10) |
{ |
cntKompass++; |
} |
else |
{ |
if((cntKompass) && (cntKompass < 4000)) |
{ |
KompassValue = cntKompass; |
} |
// if(cntKompass < 10) cntKompass = 10; |
// KompassValue = (unsigned long)((unsigned long)(cntKompass-10)*720L + 1L) / 703L; |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
cntKompass = 0; |
} |
} |
} |
void Timer_Init(void) |
{ |
tim_main = SetDelay(10); |
TCCR0B = CK8; |
TCCR0A = (1<<COM0A1)|(1<<COM0B1)|3;//fast PWM |
OCR0A = 0; |
OCR0B = 120; |
TCNT0 = -TIMER_RELOAD_VALUE; // reload |
//OCR1 = 0x00; |
TCCR2A=(1<<COM2A1)|(1<<COM2A0)|3; |
TCCR2B=(0<<CS20)|(1<<CS21)|(1<<CS22); |
// TIMSK2 |= _BV(TOIE2); |
TIMSK2 |= _BV(OCIE2A); |
TIMSK0 |= _BV(TOIE0); |
OCR2A = 10; |
TCNT2 = 0; |
} |
// ----------------------------------------------------------------------- |
unsigned int SetDelay (unsigned int t) |
{ |
// TIMSK0 &= ~_BV(TOIE0); |
return(CountMilliseconds + t + 1); |
// TIMSK0 |= _BV(TOIE0); |
} |
// ----------------------------------------------------------------------- |
char CheckDelay(unsigned int t) |
{ |
// TIMSK0 &= ~_BV(TOIE0); |
return(((t - CountMilliseconds) & 0x8000) >> 9); |
// TIMSK0 |= _BV(TOIE0); |
} |
// ----------------------------------------------------------------------- |
void Delay_ms(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)); |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Servo ansteuern |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(SIG_OUTPUT_COMPARE2A) |
{ |
static unsigned char timer = 10; |
if(!timer--) |
{ |
TCCR2A=(1<<COM2A1)|(0<<COM2A0)|3; |
ServoValue = Parameter_ServoNickControl; |
if(EE_Parameter.ServoNickCompInvert & 0x01) ServoValue += ((long) EE_Parameter.ServoNickComp * (IntegralNick / 128)) / 512; |
else ServoValue -= ((long) EE_Parameter.ServoNickComp * (IntegralNick / 128)) / 512; |
if(ServoValue < EE_Parameter.ServoNickMin) ServoValue = EE_Parameter.ServoNickMin; |
else if(ServoValue > EE_Parameter.ServoNickMax) ServoValue = EE_Parameter.ServoNickMax; |
DebugOut.Analog[10] = ServoValue; |
OCR2A = ServoValue;// + 75; |
timer = EE_Parameter.ServoNickRefresh; |
} |
else |
{ |
TCCR2A =3; |
PORTD&=~0x80; |
} |
} |
/branches/matosi/timer0.h |
---|
0,0 → 1,14 |
#define TIMER_TEILER CK8 |
#define TIMER_RELOAD_VALUE 250 |
void Timer_Init(void); |
void Delay_ms(unsigned int); |
unsigned int SetDelay (unsigned int t); |
char CheckDelay (unsigned int t); |
extern volatile unsigned int CountMilliseconds; |
extern volatile unsigned char UpdateMotor; |
extern volatile unsigned int beeptime; |
extern volatile unsigned int cntKompass; |
extern int ServoValue; |
/branches/matosi/twimaster.c |
---|
0,0 → 1,131 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
unsigned char twi_state = 0; |
unsigned char motor = 0; |
unsigned char motorread = 0; |
unsigned char motor_rx[8]; |
//############################################################################ |
//Initzialisieren der I2C (TWI) Schnittstelle |
void i2c_init(void) |
//############################################################################ |
{ |
TWSR = 0; |
TWBR = ((SYSCLK/SCL_CLOCK)-16)/2; |
} |
//############################################################################ |
//Start I2C |
char i2c_start(void) |
//############################################################################ |
{ |
TWCR = (1<<TWSTA) | (1<<TWEN) | (1<<TWINT) | (1<<TWIE); |
return(0); |
} |
//############################################################################ |
//Start I2C |
void i2c_stop(void) |
//############################################################################ |
{ |
TWCR = (1<<TWEN) | (1<<TWSTO) | (1<<TWINT); |
} |
//############################################################################ |
//Start I2C |
char i2c_write_byte(char byte) |
//############################################################################ |
{ |
TWSR = 0x00; |
TWDR = byte; |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE); |
return(0); |
} |
//############################################################################ |
//Start I2C |
SIGNAL (TWI_vect) |
//############################################################################ |
{ |
switch (twi_state++) |
{ |
case 0: |
i2c_write_byte(0x52+(motor*2)); |
break; |
case 1: |
switch(motor++) |
{ |
case 0: |
i2c_write_byte(Motor_Vorne); |
break; |
case 1: |
i2c_write_byte(Motor_Hinten); |
break; |
case 2: |
i2c_write_byte(Motor_Rechts); |
break; |
case 3: |
i2c_write_byte(Motor_Links); |
break; |
} |
break; |
case 2: |
i2c_stop(); |
if (motor<4) twi_state = 0; |
else motor = 0; |
i2c_start(); |
break; |
//Liest Daten von Motor |
case 3: |
i2c_write_byte(0x53+(motorread*2)); |
break; |
case 4: |
switch(motorread) |
{ |
case 0: |
i2c_write_byte(Motor_Vorne); |
break; |
case 1: |
i2c_write_byte(Motor_Hinten); |
break; |
case 2: |
i2c_write_byte(Motor_Rechts); |
break; |
case 3: |
i2c_write_byte(Motor_Links); |
break; |
} |
break; |
case 5: //1 Byte vom Motor lesen |
motor_rx[motorread] = TWDR; |
case 6: |
switch(motorread) |
{ |
case 0: |
i2c_write_byte(Motor_Vorne); |
break; |
case 1: |
i2c_write_byte(Motor_Hinten); |
break; |
case 2: |
i2c_write_byte(Motor_Rechts); |
break; |
case 3: |
i2c_write_byte(Motor_Links); |
break; |
} |
break; |
case 7: //2 Byte vom Motor lesen |
motor_rx[motorread+4] = TWDR; |
motorread++; |
if (motorread>3) motorread=0; |
i2c_stop(); |
twi_state = 0; |
} |
} |
/branches/matosi/twimaster.h |
---|
0,0 → 1,32 |
/*############################################################################ |
############################################################################*/ |
#ifndef _I2C_MASTER_H |
#define _I2C_MASTER_H |
//############################################################################ |
// I2C Konstanten |
#define SCL_CLOCK 200000L |
#define I2C_TIMEOUT 30000 |
#define I2C_START 0x08 |
#define I2C_REPEATED_START 0x10 |
#define I2C_TX_SLA_ACK 0x18 |
#define I2C_TX_DATA_ACK 0x28 |
#define I2C_RX_SLA_ACK 0x40 |
#define I2C_RX_DATA_ACK 0x50 |
//############################################################################ |
extern unsigned char twi_state; |
extern unsigned char motor; |
extern unsigned char motorread; |
extern unsigned char motor_rx[8]; |
void i2c_init (void); // I2C initialisieren |
char i2c_start (void); // Start I2C |
void i2c_stop (void); // Stop I2C |
char i2c_write_byte (char byte); // 1 Byte schreiben |
#endif |
/branches/matosi/uart.c |
---|
0,0 → 1,331 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "uart.h" |
unsigned char DebugGetAnforderung = 0,DebugDisplayAnforderung = 0,DebugDataAnforderung = 0,GetVersionAnforderung = 0; |
unsigned volatile char SioTmp = 0; |
unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NMEABuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NeuerDatensatzEmpfangen = 0; |
unsigned volatile char NeueKoordinateEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned volatile char CntCrcError = 0; |
unsigned volatile char AnzahlEmpfangsBytes = 0; |
unsigned volatile char PC_DebugTimeout = 0; |
unsigned char PcZugriff = 100; |
unsigned char MotorTest[4] = {0,0,0,0}; |
unsigned char MeineSlaveAdresse; |
struct str_DebugOut DebugOut; |
struct str_Debug DebugIn; |
struct str_VersionInfo VersionInfo; |
int Debug_Timer; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Sende-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_TX) |
{ |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!UebertragungAbgeschlossen) |
{ |
ptr++; // die [0] wurde schon gesendet |
tmp_tx = SendeBuffer[ptr]; |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
{ |
ptr = 0; |
UebertragungAbgeschlossen = 1; |
} |
UDR = tmp_tx; |
} |
else ptr = 0; |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung, incl. CRC-Auswertung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
SioTmp = UDR; |
ubx_push(SioTmp); // push die GPS daten in die GPS routine |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
if(SioTmp == '\r' && UartState == 2) |
{ |
UartState = 0; |
crc -= RxdBuffer[buf_ptr-2]; |
crc -= RxdBuffer[buf_ptr-1]; |
crc %= 4096; |
crc1 = '=' + crc / 64; |
crc2 = '=' + crc % 64; |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; CntCrcError++;}; |
if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet |
{ |
NeuerDatensatzEmpfangen = 1; |
AnzahlEmpfangsBytes = buf_ptr; |
RxdBuffer[buf_ptr] = '\r'; |
if(/*(RxdBuffer[1] == MeineSlaveAdresse || (RxdBuffer[1] == 'a')) && */(RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando |
} |
} |
else |
switch(UartState) |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc = SioTmp; |
break; |
case 1: // Adresse auswerten |
UartState++; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
else UartState = 0; |
crc += SioTmp; |
break; |
default: |
UartState = 0; |
break; |
} |
} |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
{ |
tmpCRC += SendeBuffer[i]; |
} |
tmpCRC %= 4096; |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
SendeBuffer[i++] = '\r'; |
UebertragungAbgeschlossen = 0; |
UDR = SendeBuffer[0]; |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
SendeBuffer[pt++] = '#'; // Startzeichen |
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...) |
SendeBuffer[pt++] = cmd; // Commando |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
} |
AddCRC(pt); |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
} |
} |
// -------------------------------------------------------------------------- |
void BearbeiteRxDaten(void) |
{ |
if(!NeuerDatensatzEmpfangen) return; |
unsigned int tmp_int_arr1[1]; |
unsigned int tmp_int_arr2[2]; |
unsigned int tmp_int_arr3[3]; |
unsigned char tmp_char_arr2[2]; |
unsigned char tmp_char_arr3[3]; |
unsigned char tmp_char_arr4[4]; |
//if(!MotorenEin) |
PcZugriff = 255; |
switch(RxdBuffer[2]) |
{ |
case 'c':// Debugdaten incl. Externe IOs usw |
Decode64((unsigned char *) &DebugIn,sizeof(DebugIn),3,AnzahlEmpfangsBytes); |
/* for(unsigned char i=0; i<4;i++) |
{ |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2], DebugIn.Analog[i]); |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2 + 1], DebugIn.Analog[i] >> 8); |
}*/ |
RemoteTasten |= DebugIn.RemoteTasten; |
DebugDataAnforderung = 1; |
break; |
case 'h':// x-1 Displayzeilen |
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes); |
RemoteTasten |= tmp_char_arr2[0]; |
DebugDisplayAnforderung = 1; |
break; |
case 't':// Motortest |
Decode64((unsigned char *) &MotorTest[0],sizeof(MotorTest),3,AnzahlEmpfangsBytes); |
break; |
case 'v': // Version-Anforderung und Ausbaustufe |
GetVersionAnforderung = 1; |
break; |
case 'g':// "Get"-Anforderung für Debug-Daten |
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
DebugGetAnforderung = 1; |
break; |
case 'q':// "Get"-Anforderung für Settings |
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes); |
if(tmp_char_arr2[0] != 0xff) |
{ |
if(tmp_char_arr2[0] > 5) tmp_char_arr2[0] = 5; |
ReadParameterSet(tmp_char_arr2[0], (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
SendOutData('L' + tmp_char_arr2[0] -1,MeineSlaveAdresse,(unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE); |
} |
else |
SendOutData('L' + GetActiveParamSetNumber()-1,MeineSlaveAdresse,(unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE); |
break; |
case 'l': |
case 'm': |
case 'n': |
case 'o': |
case 'p': // Parametersatz speichern |
Decode64((unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE,3,AnzahlEmpfangsBytes); |
WriteParameterSet(RxdBuffer[2] - 'l' + 1, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], RxdBuffer[2] - 'l' + 1); // aktiven Datensatz merken |
Piep(GetActiveParamSetNumber()); |
break; |
} |
// DebugOut.AnzahlZyklen = Debug_Timer_Intervall; |
NeuerDatensatzEmpfangen = 0; |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
if (c == '\n') |
uart_putchar('\r'); |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
//Ausgabe des Zeichens |
UDR = c; |
return (0); |
} |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
//if (ProgramLocation == IN_RAM) Buffer[pos] = wert; |
// else eeprom_write_byte(&EE_Buffer[pos], wert); |
// Buffer[pos] = wert; |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); |
// TX-Interrupt Freigabe |
UCSRB |= (1<<TXCIE); |
//Teiler wird gesetzt |
UBRR=(SYSCLK / (BAUD_RATE * 8L) - 1); |
//UBRR = 33; |
//öffnet einen Kanal für printf (STDOUT) |
//fdevopen (uart_putchar, 0); |
//sbi(PORTD,4); |
Debug_Timer = SetDelay(200); |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
static char dis_zeile = 0; |
if(!UebertragungAbgeschlossen) return; |
if(DebugGetAnforderung && UebertragungAbgeschlossen) // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
{ |
SendOutData('G',MeineSlaveAdresse,(unsigned char *) &DebugIn,sizeof(DebugIn)); |
DebugGetAnforderung = 0; |
} |
if((CheckDelay(Debug_Timer) || DebugDataAnforderung) && UebertragungAbgeschlossen) |
{ |
SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut)); |
DebugDataAnforderung = 0; |
Debug_Timer = SetDelay(MIN_DEBUG_INTERVALL); |
} |
if(DebugDisplayAnforderung && UebertragungAbgeschlossen) |
{ |
Menu(); |
DebugDisplayAnforderung = 0; |
if(++dis_zeile == 4) dis_zeile = 0; |
SendOutData('0' + dis_zeile,0,&DisplayBuff[20 * dis_zeile],20); // DisplayZeile übertragen |
} |
if(GetVersionAnforderung && UebertragungAbgeschlossen) |
{ |
SendOutData('V',MeineSlaveAdresse,(unsigned char *) &VersionInfo,sizeof(VersionInfo)); |
GetVersionAnforderung = 0; |
} |
} |
/branches/matosi/uart.h |
---|
0,0 → 1,93 |
#ifndef _UART_H |
#define _UART_H |
#define MAX_SENDE_BUFF 150 |
#define MAX_EMPFANGS_BUFF 150 |
extern unsigned char DebugGetAnforderung; |
extern unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
extern unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
extern unsigned volatile char UebertragungAbgeschlossen; |
extern unsigned volatile char PC_DebugTimeout; |
extern unsigned volatile char NeueKoordinateEmpfangen; |
extern unsigned char MeineSlaveAdresse; |
extern unsigned char PcZugriff; |
extern int Debug_Timer; |
extern void UART_Init (void); |
extern int uart_putchar (char c); |
extern void boot_program_page (uint32_t page, uint8_t *buf); |
extern void DatenUebertragung(void); |
extern void DecodeNMEA(void); |
extern unsigned char MotorTest[4]; |
struct str_DebugOut |
{ |
unsigned char Digital[13]; |
unsigned int AnzahlZyklen; |
unsigned int Zeit; |
unsigned char Sekunden; |
unsigned int Analog[16]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
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/matosi/version.txt |
---|
0,0 → 1,57 |
------- |
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 |
++ martosi |
Ich habe den von mart veröffentlichen code 1 zu 1 verbaut und noch das fehlende |
und später erklärte std_c.h hinzugefügt. Das ganze ist ein avrstudio4 Projekt. |
Viel Spass damit und schaut nach Updates. |
Die Lizenz lautet alles geht nix muss ausser bestehende lizenzen beachten!! |
Das ganze ist Beerware also wer möchte darf mart und/oder mir ein Bier spendieren. |
Osiair |