diff --git a/src/main/flight/mixer.c b/src/main/flight/mixer.c index 3840c45dc..aef38122d 100755 --- a/src/main/flight/mixer.c +++ b/src/main/flight/mixer.c @@ -644,13 +644,15 @@ uint16_t convertExternalToMotor(uint16_t externalValue) uint16_t motorValue = externalValue; #ifdef USE_DSHOT if (isMotorProtocolDshot()) { - motorValue = externalValue <= EXTERNAL_CONVERSION_MIN_VALUE ? DSHOT_DISARM_COMMAND : constrain((externalValue - EXTERNAL_DSHOT_CONVERSION_OFFSET) * EXTERNAL_DSHOT_CONVERSION_FACTOR, DSHOT_MIN_THROTTLE, DSHOT_MAX_THROTTLE); + // Add 1 to the value, otherwise throttle tops out at 2046 + motorValue = externalValue <= EXTERNAL_CONVERSION_MIN_VALUE ? DSHOT_DISARM_COMMAND : constrain((externalValue - EXTERNAL_DSHOT_CONVERSION_OFFSET) * EXTERNAL_DSHOT_CONVERSION_FACTOR + 1, DSHOT_MIN_THROTTLE, DSHOT_MAX_THROTTLE); if (feature(FEATURE_3D)) { if (externalValue == EXTERNAL_CONVERSION_3D_MID_VALUE) { motorValue = DSHOT_DISARM_COMMAND; } else if (motorValue >= DSHOT_MIN_THROTTLE && motorValue <= DSHOT_3D_DEADBAND_LOW) { - motorValue = DSHOT_MIN_THROTTLE + (DSHOT_3D_DEADBAND_LOW - motorValue); + // Add 1 to the value, otherwise throttle tops out at 2046 + motorValue = DSHOT_MIN_THROTTLE + (DSHOT_3D_DEADBAND_LOW - motorValue) + 1; } } }