/branches/V0.68d Code Redesign killagreg/_Settings.h |
---|
2,13 → 2,11 |
// Testmodi |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define MOTOR_OFF 0 |
#define MOTOR_TEST 0 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Abstimmung |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define ACC_AMPLIFY 12 |
#define FAKTOR_P 1 |
#define FAKTOR_I 0.0001 |
/branches/V0.68d Code Redesign killagreg/eeprom.c |
---|
29,15 → 29,15 |
/***************************************************/ |
void ParamSet_DefaultSet1(void) // sport |
{ |
ParamSet.Kanalbelegung[K_NICK] = 1; |
ParamSet.Kanalbelegung[K_ROLL] = 2; |
ParamSet.Kanalbelegung[K_GAS] = 3; |
ParamSet.Kanalbelegung[K_GIER] = 4; |
ParamSet.Kanalbelegung[K_POTI1] = 5; |
ParamSet.Kanalbelegung[K_POTI2] = 6; |
ParamSet.Kanalbelegung[K_POTI3] = 7; |
ParamSet.Kanalbelegung[K_POTI4] = 8; |
ParamSet.GlobalConfig = CFG_ACHSENKOPPLUNG_AKTIV;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV | CFG_KOMPASS_FIX;//0x01; |
ParamSet.ChannelAssignment[CH_NICK] = 1; |
ParamSet.ChannelAssignment[CH_ROLL] = 2; |
ParamSet.ChannelAssignment[CH_GAS] = 3; |
ParamSet.ChannelAssignment[CH_GIER] = 4; |
ParamSet.ChannelAssignment[CH_POTI1] = 5; |
ParamSet.ChannelAssignment[CH_POTI2] = 6; |
ParamSet.ChannelAssignment[CH_POTI3] = 7; |
ParamSet.ChannelAssignment[CH_POTI4] = 8; |
ParamSet.GlobalConfig = CFG_AXIS_COUPLING_ACTIVE;//CFG_HEIGHT_CONTROL | /*CFG_HEIGHT_SWITCH |*/ CFG_COMPASS_ACTIVE | CFG_COMPASS_FIX;//0x01; |
ParamSet.Hoehe_MinGas = 30; |
ParamSet.MaxHoehe = 251; // Wert : 0-250 251 -> Poti1 |
ParamSet.Hoehe_P = 10; // Wert : 0-32 |
53,11 → 53,11 |
ParamSet.KompassWirkung = 128; // Wert : 0-250 |
ParamSet.Gyro_P = 80; // Wert : 0-250 |
ParamSet.Gyro_I = 150; // Wert : 0-250 |
ParamSet.UnterspannungsWarnung = 94; // Wert : 0-250 |
ParamSet.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
ParamSet.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
ParamSet.UfoAusrichtung = 0; // X oder + Formation |
ParamSet.I_Faktor = 32; |
ParamSet.LowVoltageWarning = 94; // Wert : 0-250 |
ParamSet.EmergencyGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
ParamSet.EmergencyGasDuration = 20; // Wert : 0-250 // Zeit bis auf EmergencyGas geschaltet wird, wg. Rx-Problemen |
ParamSet.UfoArrangement = 0; // X oder + Formation |
ParamSet.I_Factor = 32; |
ParamSet.UserParam1 = 32 * 4; //zur freien Verwendung |
ParamSet.UserParam2 = 0; //zur freien Verwendung |
ParamSet.UserParam3 = 0; //zur freien Verwendung |
74,7 → 74,7 |
ParamSet.ServoNickRefresh = 5; |
ParamSet.LoopGasLimit = 50; |
ParamSet.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag |
ParamSet.LoopHysterese = 50; |
ParamSet.LoopHysteresis = 50; |
ParamSet.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
ParamSet.AchsKopplung1 = 90; |
ParamSet.AchsGegenKopplung1 = 5; |
81,7 → 81,7 |
ParamSet.WinkelUmschlagNick = 100; |
ParamSet.WinkelUmschlagRoll = 100; |
ParamSet.GyroAccAbgleich = 16; // 1/k |
ParamSet.Driftkomp = 4; |
ParamSet.DriftComp = 4; |
ParamSet.DynamicStability = 100; |
memcpy(ParamSet.Name, "Sport\0", 12); |
} |
92,15 → 92,15 |
/***************************************************/ |
void ParamSet_DefaultSet2(void) // normal |
{ |
ParamSet.Kanalbelegung[K_NICK] = 1; |
ParamSet.Kanalbelegung[K_ROLL] = 2; |
ParamSet.Kanalbelegung[K_GAS] = 3; |
ParamSet.Kanalbelegung[K_GIER] = 4; |
ParamSet.Kanalbelegung[K_POTI1] = 5; |
ParamSet.Kanalbelegung[K_POTI2] = 6; |
ParamSet.Kanalbelegung[K_POTI3] = 7; |
ParamSet.Kanalbelegung[K_POTI4] = 8; |
ParamSet.GlobalConfig = CFG_ACHSENKOPPLUNG_AKTIV;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV;//0x01; |
ParamSet.ChannelAssignment[CH_NICK] = 1; |
ParamSet.ChannelAssignment[CH_ROLL] = 2; |
ParamSet.ChannelAssignment[CH_GAS] = 3; |
ParamSet.ChannelAssignment[CH_GIER] = 4; |
ParamSet.ChannelAssignment[CH_POTI1] = 5; |
ParamSet.ChannelAssignment[CH_POTI2] = 6; |
ParamSet.ChannelAssignment[CH_POTI3] = 7; |
ParamSet.ChannelAssignment[CH_POTI4] = 8; |
ParamSet.GlobalConfig = CFG_AXIS_COUPLING_ACTIVE;//CFG_HEIGHT_CONTROL | /*CFG_HEIGHT_SWITCH |*/ CFG_COMPASS_ACTIVE;//0x01; |
ParamSet.Hoehe_MinGas = 30; |
ParamSet.MaxHoehe = 251; // Wert : 0-250 251 -> Poti1 |
ParamSet.Hoehe_P = 10; // Wert : 0-32 |
116,11 → 116,11 |
ParamSet.KompassWirkung = 128; // Wert : 0-250 |
ParamSet.Gyro_P = 80; // Wert : 0-250 |
ParamSet.Gyro_I = 120; // Wert : 0-250 |
ParamSet.UnterspannungsWarnung = 94; // Wert : 0-250 |
ParamSet.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
ParamSet.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
ParamSet.UfoAusrichtung = 0; // X oder + Formation |
ParamSet.I_Faktor = 32; |
ParamSet.LowVoltageWarning = 94; // Wert : 0-250 |
ParamSet.EmergencyGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
ParamSet.EmergencyGasDuration = 20; // Wert : 0-250 // Zeit bis auf EmergencyGas geschaltet wird, wg. Rx-Problemen |
ParamSet.UfoArrangement = 0; // X oder + Formation |
ParamSet.I_Factor = 32; |
ParamSet.UserParam1 = 20 * 4; // zur freien Verwendung |
ParamSet.UserParam2 = 0; // zur freien Verwendung |
ParamSet.UserParam3 = 0; // zur freien Verwendung |
137,7 → 137,7 |
ParamSet.ServoNickRefresh = 5; |
ParamSet.LoopGasLimit = 50; |
ParamSet.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag |
ParamSet.LoopHysterese = 50; |
ParamSet.LoopHysteresis = 50; |
ParamSet.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts |
ParamSet.AchsKopplung1 = 90; // Faktor, mit dem Gier die Achsen Roll und Nick verkoppelt |
ParamSet.AchsGegenKopplung1 = 5; |
144,7 → 144,7 |
ParamSet.WinkelUmschlagNick = 100; |
ParamSet.WinkelUmschlagRoll = 100; |
ParamSet.GyroAccAbgleich = 32; // 1/k |
ParamSet.Driftkomp = 4; |
ParamSet.DriftComp = 4; |
ParamSet.DynamicStability = 75; |
memcpy(ParamSet.Name, "Normal\0", 12); |
} |
155,15 → 155,15 |
/***************************************************/ |
void ParamSet_DefaultSet3(void) // beginner |
{ |
ParamSet.Kanalbelegung[K_NICK] = 1; |
ParamSet.Kanalbelegung[K_ROLL] = 2; |
ParamSet.Kanalbelegung[K_GAS] = 3; |
ParamSet.Kanalbelegung[K_GIER] = 4; |
ParamSet.Kanalbelegung[K_POTI1] = 5; |
ParamSet.Kanalbelegung[K_POTI2] = 6; |
ParamSet.Kanalbelegung[K_POTI3] = 7; |
ParamSet.Kanalbelegung[K_POTI4] = 8; |
ParamSet.GlobalConfig = CFG_DREHRATEN_BEGRENZER | CFG_ACHSENKOPPLUNG_AKTIV;///*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV;//0x01; |
ParamSet.ChannelAssignment[CH_NICK] = 1; |
ParamSet.ChannelAssignment[CH_ROLL] = 2; |
ParamSet.ChannelAssignment[CH_GAS] = 3; |
ParamSet.ChannelAssignment[CH_GIER] = 4; |
ParamSet.ChannelAssignment[CH_POTI1] = 5; |
ParamSet.ChannelAssignment[CH_POTI2] = 6; |
ParamSet.ChannelAssignment[CH_POTI3] = 7; |
ParamSet.ChannelAssignment[CH_POTI4] = 8; |
ParamSet.GlobalConfig = CFG_ROTARY_RATE_LIMITER | CFG_AXIS_COUPLING_ACTIVE;///*CFG_HEIGHT_SWITCH |*/ CFG_COMPASS_ACTIVE;//0x01; |
ParamSet.Hoehe_MinGas = 30; |
ParamSet.MaxHoehe = 251; // Wert : 0-250 251 -> Poti1 |
ParamSet.Hoehe_P = 10; // Wert : 0-32 |
179,11 → 179,11 |
ParamSet.KompassWirkung = 128; // Wert : 0-250 |
ParamSet.Gyro_P = 100; // Wert : 0-250 |
ParamSet.Gyro_I = 140; // Wert : 0-250 |
ParamSet.UnterspannungsWarnung = 94; // Wert : 0-250 |
ParamSet.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
ParamSet.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
ParamSet.UfoAusrichtung = 0; // X oder + Formation |
ParamSet.I_Faktor = 16; |
ParamSet.LowVoltageWarning = 94; // Wert : 0-250 |
ParamSet.EmergencyGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
ParamSet.EmergencyGasDuration = 20; // Wert : 0-250 // Zeit bis auf EmergencyGas geschaltet wird, wg. Rx-Problemen |
ParamSet.UfoArrangement = 0; // X oder + Formation |
ParamSet.I_Factor = 16; |
ParamSet.UserParam1 = 20 * 4; // zur freien Verwendung |
ParamSet.UserParam2 = 0; // zur freien Verwendung |
ParamSet.UserParam3 = 0; // zur freien Verwendung |
200,7 → 200,7 |
ParamSet.ServoNickRefresh = 5; |
ParamSet.LoopGasLimit = 50; |
ParamSet.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag |
ParamSet.LoopHysterese = 50; |
ParamSet.LoopHysteresis = 50; |
ParamSet.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts |
ParamSet.AchsKopplung1 = 90; // Faktor, mit dem Gier die Achsen Roll und Nick verkoppelt |
ParamSet.AchsGegenKopplung1 = 5; |
207,7 → 207,7 |
ParamSet.WinkelUmschlagNick = 100; |
ParamSet.WinkelUmschlagRoll = 100; |
ParamSet.GyroAccAbgleich = 32; // 1/k |
ParamSet.Driftkomp = 4; |
ParamSet.DriftComp = 4; |
ParamSet.DynamicStability = 50; |
memcpy(ParamSet.Name, "Beginner\0", 12); |
} |
252,7 → 252,7 |
void ParamSet_ReadFromEEProm(uint8_t setnumber) |
{ |
if (setnumber > 5) setnumber = 5; |
eeprom_read_block((uint8_t *) &ParamSet.Kanalbelegung[0], &EEPromArray[EEPROM_ADR_PARAMSET_BEGIN + PARAMSET_STRUCT_LEN * setnumber], PARAMSET_STRUCT_LEN); |
eeprom_read_block((uint8_t *) &ParamSet.ChannelAssignment[0], &EEPromArray[EEPROM_ADR_PARAMSET_BEGIN + PARAMSET_STRUCT_LEN * setnumber], PARAMSET_STRUCT_LEN); |
} |
/***************************************************/ |
262,7 → 262,7 |
void ParamSet_WriteToEEProm(uint8_t setnumber) |
{ |
if(setnumber > 5) setnumber = 5; |
eeprom_write_block((uint8_t *) &ParamSet.Kanalbelegung[0], &EEPromArray[EEPROM_ADR_PARAMSET_BEGIN + PARAMSET_STRUCT_LEN * setnumber], PARAMSET_STRUCT_LEN); |
eeprom_write_block((uint8_t *) &ParamSet.ChannelAssignment[0], &EEPromArray[EEPROM_ADR_PARAMSET_BEGIN + PARAMSET_STRUCT_LEN * setnumber], PARAMSET_STRUCT_LEN); |
// set this parameter set to active set |
eeprom_write_byte(&EEPromArray[PID_ACTIVE_SET], setnumber); |
} |
/branches/V0.68d Code Redesign killagreg/eeprom.h |
---|
14,36 → 14,36 |
#define EEPROM_ADR_PARAMSET_BEGIN 100 |
// bit mask for mk_param_struct.GlobalConfig |
#define CFG_HOEHENREGELUNG 0x01 |
#define CFG_HOEHEN_SCHALTER 0x02 |
#define CFG_HEADING_HOLD 0x04 |
#define CFG_KOMPASS_AKTIV 0x08 |
#define CFG_KOMPASS_FIX 0x10 |
#define CFG_GPS_AKTIV 0x20 |
#define CFG_ACHSENKOPPLUNG_AKTIV 0x40 |
#define CFG_DREHRATEN_BEGRENZER 0x80 |
#define CFG_HEIGHT_CONTROL 0x01 |
#define CFG_HEIGHT_SWITCH 0x02 |
#define CFG_HEADING_HOLD 0x04 |
#define CFG_COMPASS_ACTIVE 0x08 |
#define CFG_COMPASS_FIX 0x10 |
#define CFG_GPS_ACTIVE 0x20 |
#define CFG_AXIS_COUPLING_ACTIVE 0x40 |
#define CFG_ROTARY_RATE_LIMITER 0x80 |
// bit mask for mk_param_struct.LoopConfig |
#define CFG_LOOP_OBEN 0x01 |
#define CFG_LOOP_UNTEN 0x02 |
#define CFG_LOOP_LINKS 0x04 |
#define CFG_LOOP_RECHTS 0x08 |
#define CFG_LOOP_UP 0x01 |
#define CFG_LOOP_DOWN 0x02 |
#define CFG_LOOP_LEFT 0x04 |
#define CFG_LOOP_RIGHT 0x08 |
// defines for lookup mk_param_struct.Kanalbelegung |
#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 |
// defines for lookup mk_param_struct.ChannelAssignment |
#define CH_NICK 0 |
#define CH_ROLL 1 |
#define CH_GAS 2 |
#define CH_GIER 3 |
#define CH_POTI1 4 |
#define CH_POTI2 5 |
#define CH_POTI3 6 |
#define CH_POTI4 7 |
#define EEPARAM_VERSION 69 // is count up, if EE_Paramater stucture has changed (compatibility) |
typedef struct |
{ |
uint8_t Kanalbelegung[8]; // see upper defines for details |
uint8_t ChannelAssignment[8]; // see upper defines for details |
uint8_t GlobalConfig; // see upper defines for bitcoding |
uint8_t Hoehe_MinGas; // Wert : 0-100 |
uint8_t Luftdruck_D; // Wert : 0-250 |
60,11 → 60,11 |
uint8_t KompassWirkung; // Wert : 0-32 |
uint8_t Gyro_P; // Wert : 10-250 |
uint8_t Gyro_I; // Wert : 0-250 |
uint8_t UnterspannungsWarnung; // Wert : 0-250 |
uint8_t NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust |
uint8_t NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen |
uint8_t UfoAusrichtung; // X oder + Formation |
uint8_t I_Faktor; // Wert : 0-250 |
uint8_t LowVoltageWarning; // Wert : 0-250 |
uint8_t EmergencyGas; // Wert : 0-250 //Gaswert bei Empängsverlust |
uint8_t EmergencyGasDuration; // Wert : 0-250 // Zeitbis auf EmergencyGas geschaltet wird, wg. Rx-Problemen |
uint8_t UfoArrangement; // X oder + Formation |
uint8_t I_Factor; // Wert : 0-250 |
uint8_t UserParam1; // Wert : 0-250 |
uint8_t UserParam2; // Wert : 0-250 |
uint8_t UserParam3; // Wert : 0-250 |
76,13 → 76,13 |
uint8_t ServoNickRefresh; // |
uint8_t LoopGasLimit; // Wert: 0-250 max. Gas während Looping |
uint8_t LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag |
uint8_t LoopHysterese; // Wert: 0-250 Hysterese für Stickausschlag |
uint8_t LoopHysteresis; // Wert: 0-250 Hysterese für Stickausschlag |
uint8_t AchsKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick koppelt (NickRollMitkopplung) |
uint8_t AchsGegenKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick Gegenkoppelt (NickRollGegenkopplung) |
uint8_t WinkelUmschlagNick; // Wert: 0-250 180°-Punkt |
uint8_t WinkelUmschlagRoll; // Wert: 0-250 180°-Punkt |
uint8_t GyroAccAbgleich; // 1/k (Koppel_ACC_Wirkung) |
uint8_t Driftkomp; |
uint8_t DriftComp; |
uint8_t DynamicStability; |
uint8_t UserParam5; // Wert : 0-250 |
uint8_t UserParam6; // Wert : 0-250 |
/branches/V0.68d Code Redesign killagreg/fc.c |
---|
71,7 → 71,6 |
volatile int AdNeutralNick = 0,AdNeutralRoll = 0,AdNeutralGier = 0,StartNeutralRoll = 0,StartNeutralNick = 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 IntegralAccNick = 0,IntegralAccRoll = 0,IntegralAccZ = 0; |
112,7 → 111,7 |
unsigned char Parameter_Gyro_P = 150; // Wert : 10-250 |
unsigned char Parameter_Gyro_I = 150; // Wert : 0-250 |
unsigned char Parameter_Gier_P = 2; // Wert : 1-20 |
unsigned char Parameter_I_Faktor = 10; // Wert : 1-20 |
unsigned char Parameter_I_Factor = 10; // Wert : 1-20 |
unsigned char Parameter_UserParam1 = 0; |
unsigned char Parameter_UserParam2 = 0; |
unsigned char Parameter_UserParam3 = 0; |
156,7 → 155,7 |
CalibrierMittelwert(); |
Delay_ms_Mess(100); |
CalibrierMittelwert(); |
if((ParamSet.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
if((ParamSet.GlobalConfig & CFG_HEIGHT_CONTROL)) // Höhenregelung aktiviert? |
{ |
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
} |
222,7 → 221,7 |
Mess_Integral_Gier += MesswertGier; |
Mess_Integral_Gier2 += MesswertGier; |
// Kopplungsanteil +++++++++++++++++++++++++++++++++++++ |
if(!Looping_Nick && !Looping_Roll && (ParamSet.GlobalConfig & CFG_ACHSENKOPPLUNG_AKTIV)) |
if(!Looping_Nick && !Looping_Roll && (ParamSet.GlobalConfig & CFG_AXIS_COUPLING_ACTIVE)) |
{ |
tmpl = Mess_IntegralNick / 4096L; |
tmpl *= MesswertGier; |
299,7 → 298,7 |
IntegralNick2 = Mess_IntegralNick2; |
IntegralRoll2 = Mess_IntegralRoll2; |
if(ParamSet.GlobalConfig & CFG_DREHRATEN_BEGRENZER && !Looping_Nick && !Looping_Roll) |
if(ParamSet.GlobalConfig & CFG_ROTARY_RATE_LIMITER && !Looping_Nick && !Looping_Roll) |
{ |
if(MesswertNick > 200) MesswertNick += 4 * (MesswertNick - 200); |
else if(MesswertNick < -200) MesswertNick += 4 * (MesswertNick + 200); |
306,10 → 305,10 |
if(MesswertRoll > 200) MesswertRoll += 4 * (MesswertRoll - 200); |
else if(MesswertRoll < -200) MesswertRoll += 4 * (MesswertRoll + 200); |
} |
if(Poti1 < PPM_in[ParamSet.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[ParamSet.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--; |
if(Poti2 < PPM_in[ParamSet.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[ParamSet.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--; |
if(Poti3 < PPM_in[ParamSet.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[ParamSet.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--; |
if(Poti4 < PPM_in[ParamSet.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[ParamSet.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--; |
if(Poti1 < PPM_in[ParamSet.ChannelAssignment[CH_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[ParamSet.ChannelAssignment[CH_POTI1]] + 110 && Poti1) Poti1--; |
if(Poti2 < PPM_in[ParamSet.ChannelAssignment[CH_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[ParamSet.ChannelAssignment[CH_POTI2]] + 110 && Poti2) Poti2--; |
if(Poti3 < PPM_in[ParamSet.ChannelAssignment[CH_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[ParamSet.ChannelAssignment[CH_POTI3]] + 110 && Poti3) Poti3--; |
if(Poti4 < PPM_in[ParamSet.ChannelAssignment[CH_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[ParamSet.ChannelAssignment[CH_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; |
331,10 → 330,10 |
Mittelwert_AccHoch = (long)AdValueAccTop; |
// ADC einschalten |
ADC_Enable(); |
if(Poti1 < PPM_in[ParamSet.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[ParamSet.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--; |
if(Poti2 < PPM_in[ParamSet.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[ParamSet.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--; |
if(Poti3 < PPM_in[ParamSet.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[ParamSet.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--; |
if(Poti4 < PPM_in[ParamSet.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[ParamSet.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--; |
if(Poti1 < PPM_in[ParamSet.ChannelAssignment[CH_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[ParamSet.ChannelAssignment[CH_POTI1]] + 110 && Poti1) Poti1--; |
if(Poti2 < PPM_in[ParamSet.ChannelAssignment[CH_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[ParamSet.ChannelAssignment[CH_POTI2]] + 110 && Poti2) Poti2--; |
if(Poti3 < PPM_in[ParamSet.ChannelAssignment[CH_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[ParamSet.ChannelAssignment[CH_POTI3]] + 110 && Poti3) Poti3--; |
if(Poti4 < PPM_in[ParamSet.ChannelAssignment[CH_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[ParamSet.ChannelAssignment[CH_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; |
388,7 → 387,7 |
CHK_POTI(Parameter_KompassWirkung,ParamSet.KompassWirkung,0,255); |
CHK_POTI(Parameter_Gyro_P,ParamSet.Gyro_P,10,255); |
CHK_POTI(Parameter_Gyro_I,ParamSet.Gyro_I,0,255); |
CHK_POTI(Parameter_I_Faktor,ParamSet.I_Faktor,0,255); |
CHK_POTI(Parameter_I_Factor,ParamSet.I_Factor,0,255); |
CHK_POTI(Parameter_UserParam1,ParamSet.UserParam1,0,255); |
CHK_POTI(Parameter_UserParam2,ParamSet.UserParam2,0,255); |
CHK_POTI(Parameter_UserParam3,ParamSet.UserParam3,0,255); |
403,7 → 402,7 |
CHK_POTI(Parameter_AchsGegenKopplung1,ParamSet.AchsGegenKopplung1,0,255); |
CHK_POTI(Parameter_DynamicStability,ParamSet.DynamicStability,0,255); |
Ki = (float) Parameter_I_Faktor * 0.0001; |
Ki = (float) Parameter_I_Factor * 0.0001; |
MAX_GAS = ParamSet.Gas_Max; |
MIN_GAS = ParamSet.Gas_Min; |
} |
459,11 → 458,11 |
ROT_ON; |
if(modell_fliegt > 2000) // wahrscheinlich in der Luft --> langsam absenken |
{ |
GasMischanteil = ParamSet.NotGas; |
GasMischanteil = ParamSet.EmergencyGas; |
Notlandung = 1; |
PPM_in[ParamSet.Kanalbelegung[K_NICK]] = 0; |
PPM_in[ParamSet.Kanalbelegung[K_ROLL]] = 0; |
PPM_in[ParamSet.Kanalbelegung[K_GIER]] = 0; |
PPM_in[ParamSet.ChannelAssignment[CH_NICK]] = 0; |
PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] = 0; |
PPM_in[ParamSet.ChannelAssignment[CH_GIER]] = 0; |
} |
else MotorenEin = 0; |
} |
474,7 → 473,7 |
if(SenderOkay > 140) |
{ |
Notlandung = 0; |
RcLostTimer = ParamSet.NotGasZeit * 50; |
RcLostTimer = ParamSet.EmergencyGasDuration * 50; |
if(GasMischanteil > 40) |
{ |
if(modell_fliegt < 0xffff) modell_fliegt++; |
486,12 → 485,12 |
Mess_Integral_Gier = 0; |
Mess_Integral_Gier2 = 0; |
} |
if((PPM_in[ParamSet.Kanalbelegung[K_GAS]] > 80) && MotorenEin == 0) |
if((PPM_in[ParamSet.ChannelAssignment[CH_GAS]] > 80) && MotorenEin == 0) |
{ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// auf Nullwerte kalibrieren |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(PPM_in[ParamSet.Kanalbelegung[K_GIER]] > 75) // Neutralwerte |
if(PPM_in[ParamSet.ChannelAssignment[CH_GIER]] > 75) // Neutralwerte |
{ |
if(++delay_neutral > 200) // nicht sofort |
{ |
499,17 → 498,17 |
MotorenEin = 0; |
delay_neutral = 0; |
modell_fliegt = 0; |
if(PPM_in[ParamSet.Kanalbelegung[K_NICK]] > 70 || abs(PPM_in[ParamSet.Kanalbelegung[K_ROLL]]) > 70) |
if(PPM_in[ParamSet.ChannelAssignment[CH_NICK]] > 70 || abs(PPM_in[ParamSet.ChannelAssignment[CH_ROLL]]) > 70) |
{ |
unsigned char setting=1; |
if(PPM_in[ParamSet.Kanalbelegung[K_ROLL]] > 70 && PPM_in[ParamSet.Kanalbelegung[K_NICK]] < 70) setting = 1; |
if(PPM_in[ParamSet.Kanalbelegung[K_ROLL]] > 70 && PPM_in[ParamSet.Kanalbelegung[K_NICK]] > 70) setting = 2; |
if(PPM_in[ParamSet.Kanalbelegung[K_ROLL]] < 70 && PPM_in[ParamSet.Kanalbelegung[K_NICK]] > 70) setting = 3; |
if(PPM_in[ParamSet.Kanalbelegung[K_ROLL]] <-70 && PPM_in[ParamSet.Kanalbelegung[K_NICK]] > 70) setting = 4; |
if(PPM_in[ParamSet.Kanalbelegung[K_ROLL]] <-70 && PPM_in[ParamSet.Kanalbelegung[K_NICK]] < 70) setting = 5; |
if(PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] > 70 && PPM_in[ParamSet.ChannelAssignment[CH_NICK]] < 70) setting = 1; |
if(PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] > 70 && PPM_in[ParamSet.ChannelAssignment[CH_NICK]] > 70) setting = 2; |
if(PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] < 70 && PPM_in[ParamSet.ChannelAssignment[CH_NICK]] > 70) setting = 3; |
if(PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] <-70 && PPM_in[ParamSet.ChannelAssignment[CH_NICK]] > 70) setting = 4; |
if(PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] <-70 && PPM_in[ParamSet.ChannelAssignment[CH_NICK]] < 70) setting = 5; |
SetActiveParamSet(setting); // aktiven Datensatz merken |
} |
if((ParamSet.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
if((ParamSet.GlobalConfig & CFG_HEIGHT_CONTROL)) // Höhenregelung aktiviert? |
{ |
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
} |
519,7 → 518,7 |
} |
} |
else |
if(PPM_in[ParamSet.Kanalbelegung[K_GIER]] < -75) // ACC Neutralwerte speichern |
if(PPM_in[ParamSet.ChannelAssignment[CH_GIER]] < -75) // ACC Neutralwerte speichern |
{ |
if(++delay_neutral > 200) // nicht sofort |
{ |
543,10 → 542,10 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gas ist unten |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(PPM_in[ParamSet.Kanalbelegung[K_GAS]] < 35-120) |
if(PPM_in[ParamSet.ChannelAssignment[CH_GAS]] < 35-120) |
{ |
// Starten |
if(PPM_in[ParamSet.Kanalbelegung[K_GIER]] < -75) |
if(PPM_in[ParamSet.ChannelAssignment[CH_GIER]] < -75) |
{ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Einschalten |
572,7 → 571,7 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Auschalten |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(PPM_in[ParamSet.Kanalbelegung[K_GIER]] > 75) |
if(PPM_in[ParamSet.ChannelAssignment[CH_GIER]] > 75) |
{ |
if(++delay_ausschalten > 200) // nicht sofort |
{ |
593,18 → 592,18 |
int tmp_int; |
static int stick_nick,stick_roll; |
ParameterZuordnung(); |
StickNick = (StickNick * 3 + PPM_in[ParamSet.Kanalbelegung[K_NICK]] * ParamSet.Stick_P) / 4; |
StickNick += PPM_diff[ParamSet.Kanalbelegung[K_NICK]] * ParamSet.Stick_D; |
StickRoll = (StickRoll * 3 + PPM_in[ParamSet.Kanalbelegung[K_ROLL]] * ParamSet.Stick_P) / 4; |
StickRoll += PPM_diff[ParamSet.Kanalbelegung[K_ROLL]] * ParamSet.Stick_D; |
StickNick = (StickNick * 3 + PPM_in[ParamSet.ChannelAssignment[CH_NICK]] * ParamSet.Stick_P) / 4; |
StickNick += PPM_diff[ParamSet.ChannelAssignment[CH_NICK]] * ParamSet.Stick_D; |
StickRoll = (StickRoll * 3 + PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] * ParamSet.Stick_P) / 4; |
StickRoll += PPM_diff[ParamSet.ChannelAssignment[CH_ROLL]] * ParamSet.Stick_D; |
StickGier = -PPM_in[ParamSet.Kanalbelegung[K_GIER]]; |
StickGas = PPM_in[ParamSet.Kanalbelegung[K_GAS]] + 120; |
StickGier = -PPM_in[ParamSet.ChannelAssignment[CH_GIER]]; |
StickGas = PPM_in[ParamSet.ChannelAssignment[CH_GAS]] + 120; |
if(abs(PPM_in[ParamSet.Kanalbelegung[K_NICK]]) > MaxStickNick) |
MaxStickNick = abs(PPM_in[ParamSet.Kanalbelegung[K_NICK]]); else MaxStickNick--; |
if(abs(PPM_in[ParamSet.Kanalbelegung[K_ROLL]]) > MaxStickRoll) |
MaxStickRoll = abs(PPM_in[ParamSet.Kanalbelegung[K_ROLL]]); else MaxStickRoll--; |
if(abs(PPM_in[ParamSet.ChannelAssignment[CH_NICK]]) > MaxStickNick) |
MaxStickNick = abs(PPM_in[ParamSet.ChannelAssignment[CH_NICK]]); else MaxStickNick--; |
if(abs(PPM_in[ParamSet.ChannelAssignment[CH_ROLL]]) > MaxStickRoll) |
MaxStickRoll = abs(PPM_in[ParamSet.ChannelAssignment[CH_ROLL]]); else MaxStickRoll--; |
if(Notlandung) {MaxStickNick = 0; MaxStickRoll = 0;} |
GyroFaktor = ((float)Parameter_Gyro_P + 10.0) / 256.0; |
648,36 → 647,36 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Looping? |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if((PPM_in[ParamSet.Kanalbelegung[K_ROLL]] > ParamSet.LoopThreshold) && ParamSet.LoopConfig & CFG_LOOP_LINKS) Looping_Links = 1; |
if((PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] > ParamSet.LoopThreshold) && ParamSet.LoopConfig & CFG_LOOP_LEFT) Looping_Links = 1; |
else |
{ |
{ |
if((PPM_in[ParamSet.Kanalbelegung[K_ROLL]] < (ParamSet.LoopThreshold - ParamSet.LoopHysterese))) Looping_Links = 0; |
if((PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] < (ParamSet.LoopThreshold - ParamSet.LoopHysteresis))) Looping_Links = 0; |
} |
} |
if((PPM_in[ParamSet.Kanalbelegung[K_ROLL]] < -ParamSet.LoopThreshold) && ParamSet.LoopConfig & CFG_LOOP_RECHTS) Looping_Rechts = 1; |
if((PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] < -ParamSet.LoopThreshold) && ParamSet.LoopConfig & CFG_LOOP_RIGHT) Looping_Rechts = 1; |
else |
{ |
if(Looping_Rechts) // Hysterese |
{ |
if(PPM_in[ParamSet.Kanalbelegung[K_ROLL]] > -(ParamSet.LoopThreshold - ParamSet.LoopHysterese)) Looping_Rechts = 0; |
if(PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] > -(ParamSet.LoopThreshold - ParamSet.LoopHysteresis)) Looping_Rechts = 0; |
} |
} |
if((PPM_in[ParamSet.Kanalbelegung[K_NICK]] > ParamSet.LoopThreshold) && ParamSet.LoopConfig & CFG_LOOP_OBEN) Looping_Oben = 1; |
if((PPM_in[ParamSet.ChannelAssignment[CH_NICK]] > ParamSet.LoopThreshold) && ParamSet.LoopConfig & CFG_LOOP_UP) Looping_Oben = 1; |
else |
{ |
if(Looping_Oben) // Hysterese |
{ |
if((PPM_in[ParamSet.Kanalbelegung[K_NICK]] < (ParamSet.LoopThreshold - ParamSet.LoopHysterese))) Looping_Oben = 0; |
if((PPM_in[ParamSet.ChannelAssignment[CH_NICK]] < (ParamSet.LoopThreshold - ParamSet.LoopHysteresis))) Looping_Oben = 0; |
} |
} |
if((PPM_in[ParamSet.Kanalbelegung[K_NICK]] < -ParamSet.LoopThreshold) && ParamSet.LoopConfig & CFG_LOOP_UNTEN) Looping_Unten = 1; |
if((PPM_in[ParamSet.ChannelAssignment[CH_NICK]] < -ParamSet.LoopThreshold) && ParamSet.LoopConfig & CFG_LOOP_DOWN) Looping_Unten = 1; |
else |
{ |
if(Looping_Unten) // Hysterese |
{ |
if(PPM_in[ParamSet.Kanalbelegung[K_NICK]] > -(ParamSet.LoopThreshold - ParamSet.LoopHysterese)) Looping_Unten = 0; |
if(PPM_in[ParamSet.ChannelAssignment[CH_NICK]] > -(ParamSet.LoopThreshold - ParamSet.LoopHysteresis)) Looping_Unten = 0; |
} |
} |
745,7 → 744,7 |
tmp_long /= 3; |
tmp_long2 /= 3; |
} |
if(abs(PPM_in[ParamSet.Kanalbelegung[K_GIER]]) > 25) |
if(abs(PPM_in[ParamSet.ChannelAssignment[CH_GIER]]) > 25) |
{ |
tmp_long /= 3; |
tmp_long2 /= 3; |
785,7 → 784,7 |
LageKorrekturNick = ausgleichNick / ABGLEICH_ANZAHL; |
LageKorrekturRoll = ausgleichRoll / ABGLEICH_ANZAHL; |
if((MaxStickNick > 15) || (MaxStickRoll > 15) || (abs(PPM_in[ParamSet.Kanalbelegung[K_GIER]]) > 25)) |
if((MaxStickNick > 15) || (MaxStickRoll > 15) || (abs(PPM_in[ParamSet.ChannelAssignment[CH_GIER]]) > 25)) |
{ |
LageKorrekturNick /= 2; |
LageKorrekturNick /= 2; |
849,7 → 848,7 |
else last_n_n = 1; |
} else last_n_n = 0; |
} else cnt = 0; |
if(cnt > ParamSet.Driftkomp) cnt = ParamSet.Driftkomp; |
if(cnt > ParamSet.DriftComp) cnt = ParamSet.DriftComp; |
if(IntegralFehlerNick > FEHLER_LIMIT) AdNeutralNick += cnt; |
if(IntegralFehlerNick < -FEHLER_LIMIT) AdNeutralNick -= cnt; |
886,7 → 885,7 |
cnt = 0; |
} |
if(cnt > ParamSet.Driftkomp) cnt = ParamSet.Driftkomp; |
if(cnt > ParamSet.DriftComp) cnt = ParamSet.DriftComp; |
if(IntegralFehlerRoll > FEHLER_LIMIT) AdNeutralRoll += cnt; |
if(IntegralFehlerRoll < -FEHLER_LIMIT) AdNeutralRoll -= cnt; |
DebugOut.Analog[27] = ausgleichRoll; |
920,7 → 919,7 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(abs(StickGier) > 20) // war 35 |
{ |
if(!(ParamSet.GlobalConfig & CFG_KOMPASS_FIX)) NeueKompassRichtungMerken = 1; |
if(!(ParamSet.GlobalConfig & CFG_COMPASS_FIX)) NeueKompassRichtungMerken = 1; |
} |
tmp_int = (long) ParamSet.Gier_P * ((long)StickGier * abs(StickGier)) / 512L; // expo y = ax + bx² |
tmp_int += (ParamSet.Gier_P * StickGier) / 4; |
932,7 → 931,7 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Kompass |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(KompassValue && (ParamSet.GlobalConfig & CFG_KOMPASS_AKTIV)) |
if(KompassValue && (ParamSet.GlobalConfig & CFG_COMPASS_ACTIVE)) |
{ |
int w,v; |
static int SignalSchlecht = 0; |
1028,10 → 1027,10 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//OCR0B = 180 - (Poti1 + 120) / 4; |
//DruckOffsetSetting = OCR0B; |
if((ParamSet.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung |
if((ParamSet.GlobalConfig & CFG_HEIGHT_CONTROL)) // Höhenregelung |
{ |
int tmp_int; |
if(ParamSet.GlobalConfig & CFG_HOEHEN_SCHALTER) // Regler wird über Schalter gesteuert |
if(ParamSet.GlobalConfig & CFG_HEIGHT_SWITCH) // Regler wird über Schalter gesteuert |
{ |
if(Parameter_MaxHoehe < 50) |
{ |
/branches/V0.68d Code Redesign killagreg/fc.h |
---|
6,7 → 6,6 |
#define _FC_H |
extern volatile unsigned int I2CTimeout; |
extern unsigned char Sekunde,Minute; |
extern volatile long IntegralNick,IntegralNick2; |
extern volatile long IntegralRoll,IntegralRoll2; |
extern volatile long Mess_IntegralNick,Mess_IntegralNick2; |
35,8 → 34,7 |
void Piep(unsigned char Anzahl); |
extern unsigned char h,m,s; |
extern volatile unsigned char Timeout ; |
extern unsigned char CosinusNickWinkel, CosinusRollWinkel; |
extern volatile unsigned char Timeout; |
extern volatile long IntegralNick,IntegralNick2; |
extern volatile long IntegralRoll,IntegralRoll2; |
extern volatile long Integral_Gier; |
/branches/V0.68d Code Redesign killagreg/main.c |
---|
108,7 → 108,7 |
BeepTime = 2000; |
PPM_in[K_GAS] = 0; |
PPM_in[CH_GAS] = 0; |
StickGier = 0; |
StickRoll = 0; |
StickNick = 0; |
144,7 → 144,7 |
} |
if(ParamSet.GlobalConfig & CFG_HOEHENREGELUNG) |
if(ParamSet.GlobalConfig & CFG_HEIGHT_CONTROL) |
{ |
printf("\n\rAbgleich Luftdrucksensor.."); |
timer = SetDelay(1000); |
215,7 → 215,7 |
else BearbeiteRxDaten(); |
if(CheckDelay(timer)) |
{ |
if(UBat < ParamSet.UnterspannungsWarnung) |
if(UBat < ParamSet.LowVoltageWarning) |
{ |
if(BeepModulation == 0xFFFF) |
{ |
/branches/V0.68d Code Redesign killagreg/main.h |
---|
26,22 → 26,10 |
#define GRN_FLASH PORTB ^= 0x02 |
#include <inttypes.h> |
extern volatile int16_t i_Nick[20],i_Roll[20],DiffNick,DiffRoll; |
extern uint8_t CosinusNickWinkel, CosinusRollWinkel; |
extern uint8_t BoardRelease; |
#define DEBUG_DISPLAY_INTERVALL 123 // in ms |
#define DELAY_US(x) ((uint16_t)( (x) * 1e-6 * F_CPU )) |
#endif //_MAIN_H |
/branches/V0.68d Code Redesign killagreg/menu.c |
---|
88,7 → 88,7 |
LCD_printfxy(0,3,"(c) Holger Buss"); |
break; |
case 1:// Hight Control Menu Item |
if(ParamSet.GlobalConfig & CFG_HOEHENREGELUNG) |
if(ParamSet.GlobalConfig & CFG_HEIGHT_CONTROL) |
{ |
LCD_printfxy(0,0,"Hoehe: %5i",HoehenWert); |
LCD_printfxy(0,1,"SollHoehe: %5i",SollHoehe); |
115,10 → 115,10 |
LCD_printfxy(0,3,"K7:%4i K8:%4i ",PPM_in[7],PPM_in[8]); |
break; |
case 4:// Remote Control Mapping Menu Item |
LCD_printfxy(0,0,"Ni:%4i Ro:%4i ",PPM_in[ParamSet.Kanalbelegung[K_NICK]],PPM_in[ParamSet.Kanalbelegung[K_ROLL]]); |
LCD_printfxy(0,1,"Gs:%4i Gi:%4i ",PPM_in[ParamSet.Kanalbelegung[K_GAS]],PPM_in[ParamSet.Kanalbelegung[K_GIER]]); |
LCD_printfxy(0,2,"P1:%4i P2:%4i ",PPM_in[ParamSet.Kanalbelegung[K_POTI1]],PPM_in[ParamSet.Kanalbelegung[K_POTI2]]); |
LCD_printfxy(0,3,"P3:%4i P4:%4i ",PPM_in[ParamSet.Kanalbelegung[K_POTI3]],PPM_in[ParamSet.Kanalbelegung[K_POTI4]]); |
LCD_printfxy(0,0,"Ni:%4i Ro:%4i ",PPM_in[ParamSet.ChannelAssignment[CH_NICK]],PPM_in[ParamSet.ChannelAssignment[CH_ROLL]]); |
LCD_printfxy(0,1,"Gs:%4i Gi:%4i ",PPM_in[ParamSet.ChannelAssignment[CH_GAS]],PPM_in[ParamSet.ChannelAssignment[CH_GIER]]); |
LCD_printfxy(0,2,"P1:%4i P2:%4i ",PPM_in[ParamSet.ChannelAssignment[CH_POTI1]],PPM_in[ParamSet.ChannelAssignment[CH_POTI2]]); |
LCD_printfxy(0,3,"P3:%4i P4:%4i ",PPM_in[ParamSet.ChannelAssignment[CH_POTI3]],PPM_in[ParamSet.ChannelAssignment[CH_POTI4]]); |
break; |
case 5:// Gyro Sensor Menu Item |
LCD_printfxy(0,0,"Gyro - Sensor"); |
/branches/V0.68d Code Redesign killagreg/rc.c |
---|
13,7 → 13,6 |
#include <avr/interrupt.h> |
#include "rc.h" |
#include "fc.h" |
volatile int16_t PPM_in[11]; |
volatile int16_t PPM_diff[11]; |
62,10 → 61,6 |
TIMSK1 &= ~((1<<OCIE1B)|(1<<OCIE1A)|(1<<TOIE1)); |
TIMSK1 |= (1<<ICIE1); |
AdNeutralGier = 0; |
AdNeutralRoll = 0; |
AdNeutralNick = 0; |
SREG = sreg; |
} |
/branches/V0.68d Code Redesign killagreg/rc.h |
---|
4,7 → 4,6 |
#include <inttypes.h> |
extern void rc_sum_init (void); |
extern volatile int16_t PPM_in[11]; // the RC-Signal |
extern volatile int16_t PPM_diff[11]; // the differentiated RC-Signal |
extern volatile uint8_t NewPpmData; |
/branches/V0.68d Code Redesign killagreg/timer0.c |
---|
111,7 → 111,7 |
} |
// update compass value if this option is enabled in the settings |
if(ParamSet.GlobalConfig & CFG_KOMPASS_AKTIV) |
if(ParamSet.GlobalConfig & CFG_COMPASS_ACTIVE) |
{ |
if(PINC & 0x10) |
{ |
/branches/V0.68d Code Redesign killagreg/uart.c |
---|
342,10 → 342,10 |
{ |
if(tmp_char_arr2[0] > 5) tmp_char_arr2[0] = 5; |
ParamSet_ReadFromEEProm(tmp_char_arr2[0]); |
SendOutData('L' + tmp_char_arr2[0] -1,MeineSlaveAdresse,(uint8_t *) &ParamSet.Kanalbelegung[0],PARAMSET_STRUCT_LEN); |
SendOutData('L' + tmp_char_arr2[0] -1,MeineSlaveAdresse,(uint8_t *) &ParamSet.ChannelAssignment[0],PARAMSET_STRUCT_LEN); |
} |
else |
SendOutData('L' + GetParamByte(PID_ACTIVE_SET)-1,MeineSlaveAdresse,(uint8_t *) &ParamSet.Kanalbelegung[0],PARAMSET_STRUCT_LEN); |
SendOutData('L' + GetParamByte(PID_ACTIVE_SET)-1,MeineSlaveAdresse,(uint8_t *) &ParamSet.ChannelAssignment[0],PARAMSET_STRUCT_LEN); |
break; |
354,7 → 354,7 |
case 'n': |
case 'o': |
case 'p': // Parametersatz speichern |
Decode64((uint8_t *) &ParamSet.Kanalbelegung[0],PARAMSET_STRUCT_LEN,3,AnzahlEmpfangsBytes); |
Decode64((uint8_t *) &ParamSet.ChannelAssignment[0],PARAMSET_STRUCT_LEN,3,AnzahlEmpfangsBytes); |
ParamSet_WriteToEEProm(rxd_buffer[2] - 'l' + 1); |
//SetActiveParamSet(rxd_buffer[2] - 'l' + 1); // is alredy done in ParamSet_WriteToEEProm() |
Umschlag180Nick = (int32_t) ParamSet.WinkelUmschlagNick * 2500L; |