mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-17 13:25:30 +03:00
Fix DSHOT off-by-one error preventing maximum throttle, closes #2879
This commit is contained in:
parent
9ab02f1d38
commit
06dba20efc
1 changed files with 4 additions and 2 deletions
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue