Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 2164 → Rev 2165

/branches/V0.88e_ACC-HH_HR_MartinR/Hex-Files/Flight-Ctrl_MEGA1284P_V0_88e_SVN2093_ACC-HH_20120614.hex
File deleted
/branches/V0.88e_ACC-HH_HR_MartinR/Hex-Files/Flight-Ctrl_MEGA1284P_V0_88e_SVN2093_ACC-HH_20120614_DX7.hex
File deleted
/branches/V0.88e_ACC-HH_HR_MartinR/Hex-Files/Flight-Ctrl_MEGA1284P_V0_88e_SVN2093_ACC-HH_20120614_DX8.hex
File deleted
/branches/V0.88e_ACC-HH_HR_MartinR/fc.c
205,6 → 205,7
signed int ExternStickNick = 0,ExternStickRoll = 0,ExternStickGier = 0, ExternHoehenValue = -20;
//int MaxStickNick = 0,MaxStickRoll = 0; MartinR: so war es
int MaxStickNick = 0,MaxStickRoll = 0,stick_nick_neutral = 0,stick_roll_neutral = 0; // MartinR: stick_.._neutral hinzugefügt
unsigned char stick_p;
 
unsigned int modell_fliegt = 0;
volatile unsigned char FC_StatusFlags = 0, FC_StatusFlags2 = 0;
244,6 → 245,7
DebugOut.Analog[17] = sinus; // MartinR: test zur Einstellung der Pan-Funktion
DebugOut.Analog[18] = ServoPanValue; // MartinR: zur Einstellung der Pan-Funktion
DebugOut.Analog[19] = ServoRollValue; // MartinR: Test
DebugOut.Analog[20] = ServoNickValue;
DebugOut.Analog[22] = Capacity.ActualCurrent;
#ifdef WITH_REMAINCAPACITY // only include functions if DEBUG is defined in main.h
941,6 → 943,7
sollGier = 0;
Mess_Integral_Gier = 0;
// Mess_Integral_Gier2 = 0;
Mess_IntegralNick = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccNick;
Mess_IntegralRoll = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccRoll;
Mess_IntegralNick2 = IntegralNick;
950,6 → 953,13
FC_StatusFlags |= FC_STATUS_START;
// ControlHeading = (((int) EE_Parameter.OrientationAngle * 15 + KompassValue) % 360) / 2;
NeueKompassRichtungMerken = 100; // 2 sekunden
// MartinR: hinzugefügt Anfang
stick_nick_neutral = PPM_in[EE_Parameter.Kanalbelegung[K_NICK]]; // aktueller Stickwert wird als Neutralposition im HH verwendet, MartinR
stick_roll_neutral = PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]; // aktueller Stickwert wird als Neutralposition im HH verwendet, MartinR
SummeNickHH = 0 ; // Zurücksetzen der Integratoren
SummeRollHH = 0 ; // Zurücksetzen der Integratoren
// MartinR: hinzugefügt Ende
}
else
{
995,40 → 1005,31
stick_roll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D;
*/
// MartinR: geändert Anfang
if(Parameter_UserParam1 > 50) // MartinR: zweiter Stick_P Wert nur, wenn HH über Schalter aktiv ist
{
stick_nick = (stick_nick * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * Parameter_UserParam3 - stick_nick_neutral) / 4;
stick_roll = (stick_roll * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * Parameter_UserParam3 - stick_roll_neutral) / 4 ;
//stick_nick = (PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * Parameter_UserParam3 - stick_nick_neutral);
//stick_roll = (PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * Parameter_UserParam3 - stick_roll_neutral);
}
else
{
if(IntegralFaktor) // ACC-Mode
{
stick_nick = (stick_nick * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * stick_p) / 4;
stick_roll = (stick_roll * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * stick_p) / 4;
stick_nick_neutral = stick_nick; // beim Umschalten auf HH wird derletzte Stickwert als Neutralposition verwendet, MartinR
stick_roll_neutral = stick_roll; // beim Umschalten auf HH wird derletzte Stickwert als Neutralposition verwendet, MartinR
}
if(IntegralFaktor)
{
//stick_nick_neutral = stick_nick; // beim Umschalten auf HH wird derletzte Stickwert als Neutralposition verwendet, MartinR
//stick_roll_neutral = stick_roll; // beim Umschalten auf HH wird derletzte Stickwert als Neutralposition verwendet, MartinR
stick_nick_neutral = PPM_in[EE_Parameter.Kanalbelegung[K_NICK]]; // beim Umschalten auf HH wird derletzte Stickwert als Neutralposition verwendet, MartinR
stick_roll_neutral = PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]; // beim Umschalten auf HH wird derletzte Stickwert als Neutralposition verwendet, MartinR
stick_nick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D;
stick_roll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D;
//StickNick = stick_nick - (GPS_Nick + GPS_Nick2); // MartinR: GPS nur im ACC-Mode wirksam
//StickRoll = stick_roll - (GPS_Roll + GPS_Roll2); // MartinR: GPS nur im ACC-Mode wirksam
}
/*else // wenn HH , MartinR
else // HH-Mode
{
//stick_nick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D; // MartinR: eventuell vor if verschieben
//stick_roll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D; // MartinR: eventuell vor if verschieben
//StickNick = stick_nick; // MartinR: GPS nur im ACC-Mode wirksam
//StickRoll = stick_roll; // MartinR: GPS nur im ACC-Mode wirksam
if(Parameter_UserParam1 > 49) // MartinR: zweiter Stick_P Wert nur, wenn HH über Schalter aktiv ist
{
stick_nick = ((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] - stick_nick_neutral) * Parameter_UserParam3);
stick_roll = ((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] - stick_roll_neutral) * Parameter_UserParam3);
}
else
{
stick_nick = ((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] - stick_nick_neutral) * stick_p);
stick_roll = ((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] - stick_roll_neutral) * stick_p);
}
}
*/
// MartinR: geändert Ende
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1068,7 → 1069,7
StickGas = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 127;
 
GyroFaktor = (Parameter_Gyro_P + 10.0);
IntegralFaktor = Parameter_Gyro_I;
// IntegralFaktor = Parameter_Gyro_I; // MartinR: verschoben um Code zu sparen
GyroFaktorGier = (Parameter_Gyro_Gier_P + 10.0);
IntegralFaktorGier = Parameter_Gyro_Gier_I;
 
1193,8 → 1194,27
MittelIntegralNick2 += IntegralNick2;
MittelIntegralRoll2 += IntegralRoll2;
 
if((!IntegralFaktor && (Parameter_UserParam1 < 50) && !(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD))) // MartinR:
// nur im Moment des Umschaltens von HH auf ACC erfolgt ein Reset der Integrale, nicht aber bei normalem HH
// um einen im HH-Mode eventuell schwindelig geflogenen ACC_Mode zu resetten!
// bis zur Umschaltung werden die Integrale für den Kameraausgleich verwendet
{
IntegralNick = 0; // MartinR: Reset der Integratoren beim Zurückschalten vom HH- in den ACC-Mode
IntegralRoll = 0; // MartinR: Reset der Integratoren beim Zurückschalten vom HH- in den ACC-Mode
Mess_IntegralNick = 0; // MartinR: Reset der Integratoren beim Zurückschalten vom HH- in den ACC-Mode
Mess_IntegralRoll = 0; // MartinR: Reset der Integratoren beim Zurückschalten vom HH- in den ACC-Mode
Mess_Integral_Gier = 0; // MartinR: Reset der Integratoren beim Zurückschalten vom HH- in den ACC-Mode
sollGier = 0;
Integral_Gier = 0; // MartinR: Reset der Integratoren beim Zurückschalten vom HH- in den ACC-Mode
//Mess_Integral_Gier2 = 0; // MartinR: Reset der Integratoren beim Zurückschalten vom HH- in den ACC-Mode
KompassSollWert = KompassValue; // MartinR: aktuelle Ausrichtung beibehalten
ErsatzKompass = KompassValue * GIER_GRAD_FAKTOR; // MartinR: aktuelle Ausrichtung beibehalten
NeueKompassRichtungMerken = 1; // MartinR: aktuelle Ausrichtung beibehalten
}
 
// if(Looping_Nick || Looping_Roll) // MartinR: so war es
if(Looping_Nick || Looping_Roll || (!IntegralFaktor & (Parameter_UserParam1 < 50) & !(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD))) // MartinR: erweitert
if(Looping_Nick || Looping_Roll || (!IntegralFaktor && (Parameter_UserParam1 < 50) && !(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD))) // MartinR: erweitert
// MartinR: beim ACC-Loop oder beim zurückschalten von HH auf ACC
{
IntegralAccNick = 0;
IntegralAccRoll = 0;
1209,23 → 1229,6
LageKorrekturRoll = 0;
}
if((!IntegralFaktor && (Parameter_UserParam1 < 50) && !(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD)) ) // MartinR:
// nur im Moment des Umschaltens von HH auf ACC erfolgt ein Reset der Integrale, nicht aber bei normalem HH
// um einen im HH-Mode eventuell schwindelig geflogenen ACC_Mode zu resetten!
// bis zur Umschaltung werden die Integrale für den Kameraausgleich verwendet
{
IntegralNick = 0; // MartinR: Reset der Integratoren beim Zurückschalten vom HH- in den ACC-Mode
IntegralRoll = 0; // MartinR: Reset der Integratoren beim Zurückschalten vom HH- in den ACC-Mode
Mess_IntegralNick = 0; // MartinR: Reset der Integratoren beim Zurückschalten vom HH- in den ACC-Mode
Mess_IntegralRoll = 0; // MartinR: Reset der Integratoren beim Zurückschalten vom HH- in den ACC-Mode
Mess_Integral_Gier = 0; // MartinR: Reset der Integratoren beim Zurückschalten vom HH- in den ACC-Mode
Integral_Gier = 0; // MartinR: Reset der Integratoren beim Zurückschalten vom HH- in den ACC-Mode
//Mess_Integral_Gier2 = 0; // MartinR: Reset der Integratoren beim Zurückschalten vom HH- in den ACC-Mode
KompassSollWert = KompassValue; // MartinR: aktuelle Ausrichtung beibehalten
ErsatzKompass = KompassValue * GIER_GRAD_FAKTOR; // MartinR: aktuelle Ausrichtung beibehalten
}
if((EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) || (Parameter_UserParam1 > 49)) IntegralFaktor = 0; // MartinR geändert und verschoben
else IntegralFaktor = Parameter_Gyro_I; // MartinR: verschoben um Code zu sparen
 
/branches/V0.88e_ACC-HH_HR_MartinR/main.c
85,7 → 85,7
}
else Piep(WinkelOut.CalcState,150);
}
DebugOut.Analog[19] = WinkelOut.CalcState;
//DebugOut.Analog[19] = WinkelOut.CalcState; // MartinR wird in fc.c verwendet
}
 
 
/branches/V0.88e_ACC-HH_HR_MartinR/uart.c
135,11 → 135,11
"Motor 2 ",
"Motor 3 ",
"Motor 4 ", //15
"Motor 5 ",///
"Motor 6 ",///
"nc alt speed ",
"19 ",
"Servo ", //20
"PAN-Cos ",//MartinR
"PAN-Sin ",//MartinR
"PAN-Servo ",//MartinR
"Servo-Roll ",//MartinR
"Servo-Nick ", //20
"Hovergas ",
"Current [0.1A] ",
"Capacity [mAh] ",
174,11 → 174,11
"Motor 2 ",
"Motor 3 ",
"Motor 4 ", //15
"Motor 5 ",///
"Motor 6 ",///
"nc alt speed ",
"19 ",
"Servo ", //20
"PAN-cos ",//MartinR
"PAN-sin ",//MartinR
"PAN-Servo ",//MartinR
"Servo-Roll ",//MartinR
"Servo-Nick ", //20
"Hovergas ",
"Current[0.1A]",
"Capacity[mAh]",