65,8 → 65,8 |
unsigned char IamMaster = 0; |
unsigned char Delete_Stoppflag_Timer = 0; |
unsigned char OEM_String[17] = "Booting... \0\0\0\0\0"; |
unsigned char TouchDownTimer = 0; |
|
|
void PrintLine(void) |
{ |
printf("\r\n==================================="); |
712,6 → 712,9 |
// Sekundentakt |
if(++second == 49) |
{ |
static long altitudeOld = 0; |
static char threeseconds = 3; |
|
second = 0; |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
if(ShowSettingNameTime) ShowSettingNameTime--; |
720,6 → 723,50 |
if(ShowCmpsCalibrateTime) ShowCmpsCalibrateTime--; |
if(Delete_Stoppflag_Timer) Delete_Stoppflag_Timer--; else FC_StatusFlags3 &= ~FC_STATUS3_MOTORS_STOPPED_BY_RC; |
#endif |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + for auto switch - off |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(--threeseconds == 0) |
{ |
int AltitudeDeviationPer3Seconds = 0; |
threeseconds = 3; |
AltitudeDeviationPer3Seconds = HoehenWert - altitudeOld; |
altitudeOld = HoehenWert; |
if(abs(AltitudeDeviationPer3Seconds) > 90) TouchDownTimer = 0; |
if(!MotorenEin) TouchDownTimer = 0; |
} |
if(ACC_AltitudeControl && HoehenReglerAktiv && (SollHoehe < (HoehenWert-1100)) && !(VersionInfo.HardwareError[0] & FC_ERROR0_PRESSURE)) // 11m unter Sollwert |
{ |
if(TouchDownTimer < 255) TouchDownTimer++; |
} |
else TouchDownTimer = 0; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if( (NC_To_FC_Flags & NC_TO_FC_SWITCHOFF_IF_LANDED) || // for auto landing waypoints points |
(NC_To_FC_Flags & NC_TO_FC_FAILSAFE_LANDING) || // for RC failsafe |
(LowVoltageLandingActive) || // undervoltage |
(FC_StatusFlags2 & FC_STATUS2_AUTO_LANDING) // Auto landing by switch |
) |
{ |
if(TouchDownTimer == 6) SpeakHoTT = SPEAK_SINKING; |
else |
if(TouchDownTimer == 9) |
{ |
SpeakHoTT = SPEAK_LANDING; |
} |
else |
if(TouchDownTimer == 16) |
{ |
FC_StatusFlags3 |= FC_STATUS3_MOTORS_STOPPED_BY_RC; // that informs the slave to disarm the Motors |
Delete_Stoppflag_Timer = 2; // 1-2 seconds |
MotorenEin = 0; |
modell_fliegt = 0; |
FC_StatusFlags &= ~(FC_STATUS_EMERGENCY_LANDING | FC_STATUS_FLY); |
SpeakHoTT = SPEAK_MK_OFF; |
} |
} |
else TouchDownTimer = 0; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|
if(SerialChannelDataOkay) if(--SerialChannelDataOkay == 0) InitSerialPoti(); |
if(NC_To_FC_Flags & NC_TO_FC_FAILSAFE_LANDING) ServoFailsafeActive = SERVO_FS_TIME; |
else |