From 8438697955d6972a14944a4dea860bafc880dcf8 Mon Sep 17 00:00:00 2001 From: Michael Keller Date: Tue, 23 May 2017 14:23:35 +1200 Subject: [PATCH] Fixed inconsistency introducec by #2880. --- src/main/flight/mixer.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/flight/mixer.c b/src/main/flight/mixer.c index cc88c8f058..3386eff730 100755 --- a/src/main/flight/mixer.c +++ b/src/main/flight/mixer.c @@ -676,10 +676,12 @@ uint16_t convertMotorToExternal(uint16_t motorValue) #ifdef USE_DSHOT if (isMotorProtocolDshot()) { if (feature(FEATURE_3D) && motorValue >= DSHOT_MIN_THROTTLE && motorValue <= DSHOT_3D_DEADBAND_LOW) { - motorValue = DSHOT_MIN_THROTTLE + (DSHOT_3D_DEADBAND_LOW - motorValue); + // Subtract 1 to compensate for imbalance introduced in convertExternalToMotor() + motorValue = DSHOT_MIN_THROTTLE + (DSHOT_3D_DEADBAND_LOW - motorValue) - 1; } - externalValue = motorValue < DSHOT_MIN_THROTTLE ? EXTERNAL_CONVERSION_MIN_VALUE : constrain((motorValue / EXTERNAL_DSHOT_CONVERSION_FACTOR) + EXTERNAL_DSHOT_CONVERSION_OFFSET, EXTERNAL_CONVERSION_MIN_VALUE + 1, EXTERNAL_CONVERSION_MAX_VALUE); + // Subtract 1 to compensate for imbalance introduced in convertExternalToMotor() + externalValue = motorValue < DSHOT_MIN_THROTTLE ? EXTERNAL_CONVERSION_MIN_VALUE : constrain(((motorValue - 1)/ EXTERNAL_DSHOT_CONVERSION_FACTOR) + EXTERNAL_DSHOT_CONVERSION_OFFSET, EXTERNAL_CONVERSION_MIN_VALUE + 1, EXTERNAL_CONVERSION_MAX_VALUE); if (feature(FEATURE_3D) && motorValue == DSHOT_DISARM_COMMAND) { externalValue = EXTERNAL_CONVERSION_3D_MID_VALUE;