Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 689 → Rev 690

/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;