From 4546372dacf1e9405cca6575ccf4fb724bb979c5 Mon Sep 17 00:00:00 2001 From: Vidalcris Date: Sun, 23 Jul 2017 13:49:37 +0200 Subject: [PATCH 1/3] Update pid.c To solve the problem where the quad is stuck in crashrecoverymode because he is stuck on the floor :) --- src/main/flight/pid.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/flight/pid.c b/src/main/flight/pid.c index 016048a54e..d4df9d5b14 100644 --- a/src/main/flight/pid.c +++ b/src/main/flight/pid.c @@ -450,7 +450,7 @@ void pidController(const pidProfile_t *pidProfile, const rollAndPitchTrims_t *an previousRateError[axis] = rD; // if crash recovery is on and accelerometer enabled then check for a crash - if (pidProfile->crash_recovery && sensors(SENSOR_ACC)) { + if (pidProfile->crash_recovery && sensors(SENSOR_ACC) && inCrashRecoveryMode ==false) { if (motorMixRange >= 1.0f && ABS(delta) > crashDtermThreshold && ABS(errorRate) > crashGyroThreshold From c4f3a6101d86cad9d7273e9c1b7f28b5a0e3d21f Mon Sep 17 00:00:00 2001 From: Vidalcris Date: Sun, 23 Jul 2017 13:54:22 +0200 Subject: [PATCH 2/3] Update pid.c --- src/main/flight/pid.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/flight/pid.c b/src/main/flight/pid.c index d4df9d5b14..4a14b5ecd3 100644 --- a/src/main/flight/pid.c +++ b/src/main/flight/pid.c @@ -450,7 +450,7 @@ void pidController(const pidProfile_t *pidProfile, const rollAndPitchTrims_t *an previousRateError[axis] = rD; // if crash recovery is on and accelerometer enabled then check for a crash - if (pidProfile->crash_recovery && sensors(SENSOR_ACC) && inCrashRecoveryMode ==false) { + if (pidProfile->crash_recovery && sensors(SENSOR_ACC) && inCrashRecoveryMode == false) { if (motorMixRange >= 1.0f && ABS(delta) > crashDtermThreshold && ABS(errorRate) > crashGyroThreshold From 3298c3d641df04175248d3feabc44b7acfd39733 Mon Sep 17 00:00:00 2001 From: Vidalcris Date: Sun, 23 Jul 2017 14:14:47 +0200 Subject: [PATCH 3/3] Update pid.c added verification that the quad is armed to detect crash (thanks @martinbudden ;) ) --- src/main/flight/pid.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/flight/pid.c b/src/main/flight/pid.c index 4a14b5ecd3..ea4beaace1 100644 --- a/src/main/flight/pid.c +++ b/src/main/flight/pid.c @@ -450,7 +450,7 @@ void pidController(const pidProfile_t *pidProfile, const rollAndPitchTrims_t *an previousRateError[axis] = rD; // if crash recovery is on and accelerometer enabled then check for a crash - if (pidProfile->crash_recovery && sensors(SENSOR_ACC) && inCrashRecoveryMode == false) { + if (pidProfile->crash_recovery && inCrashRecoveryMode == false && sensors(SENSOR_ACC) && ARMING_FLAG(ARMED)) { if (motorMixRange >= 1.0f && ABS(delta) > crashDtermThreshold && ABS(errorRate) > crashGyroThreshold