mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-21 15:25:36 +03:00
Fix Dshot range
This commit is contained in:
parent
575460ac52
commit
5c2931e9ec
1 changed files with 8 additions and 8 deletions
|
@ -65,7 +65,7 @@ void dshotInitEndpoints(const motorConfig_t *motorConfig, float outputLimit, flo
|
||||||
|
|
||||||
float dshotConvertFromExternal(uint16_t externalValue)
|
float dshotConvertFromExternal(uint16_t externalValue)
|
||||||
{
|
{
|
||||||
uint16_t motorValue;
|
float motorValue;
|
||||||
|
|
||||||
externalValue = constrain(externalValue, PWM_RANGE_MIN, PWM_RANGE_MAX);
|
externalValue = constrain(externalValue, PWM_RANGE_MIN, PWM_RANGE_MAX);
|
||||||
|
|
||||||
|
@ -73,15 +73,15 @@ float dshotConvertFromExternal(uint16_t externalValue)
|
||||||
if (externalValue == PWM_RANGE_MIDDLE) {
|
if (externalValue == PWM_RANGE_MIDDLE) {
|
||||||
motorValue = DSHOT_CMD_MOTOR_STOP;
|
motorValue = DSHOT_CMD_MOTOR_STOP;
|
||||||
} else if (externalValue < PWM_RANGE_MIDDLE) {
|
} else if (externalValue < PWM_RANGE_MIDDLE) {
|
||||||
motorValue = scaleRange(externalValue, PWM_RANGE_MIN, PWM_RANGE_MIDDLE - 1, DSHOT_3D_FORWARD_MIN_THROTTLE - 1, DSHOT_MIN_THROTTLE);
|
motorValue = scaleRangef(externalValue, PWM_RANGE_MIN, PWM_RANGE_MIDDLE - 1, DSHOT_3D_FORWARD_MIN_THROTTLE - 1, DSHOT_MIN_THROTTLE);
|
||||||
} else {
|
} else {
|
||||||
motorValue = scaleRange(externalValue, PWM_RANGE_MIDDLE + 1, PWM_RANGE_MAX, DSHOT_3D_FORWARD_MIN_THROTTLE, DSHOT_MAX_THROTTLE);
|
motorValue = scaleRangef(externalValue, PWM_RANGE_MIDDLE + 1, PWM_RANGE_MAX, DSHOT_3D_FORWARD_MIN_THROTTLE, DSHOT_MAX_THROTTLE);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
motorValue = (externalValue == PWM_RANGE_MIN) ? DSHOT_CMD_MOTOR_STOP : scaleRange(externalValue, PWM_RANGE_MIN + 1, PWM_RANGE_MAX, DSHOT_MIN_THROTTLE, DSHOT_MAX_THROTTLE);
|
motorValue = (externalValue == PWM_RANGE_MIN) ? DSHOT_CMD_MOTOR_STOP : scaleRangef(externalValue, PWM_RANGE_MIN + 1, PWM_RANGE_MAX, DSHOT_MIN_THROTTLE, DSHOT_MAX_THROTTLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (float)motorValue;
|
return motorValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t dshotConvertToExternal(float motorValue)
|
uint16_t dshotConvertToExternal(float motorValue)
|
||||||
|
@ -92,12 +92,12 @@ uint16_t dshotConvertToExternal(float motorValue)
|
||||||
if (motorValue == DSHOT_CMD_MOTOR_STOP || motorValue < DSHOT_MIN_THROTTLE) {
|
if (motorValue == DSHOT_CMD_MOTOR_STOP || motorValue < DSHOT_MIN_THROTTLE) {
|
||||||
externalValue = PWM_RANGE_MIDDLE;
|
externalValue = PWM_RANGE_MIDDLE;
|
||||||
} else if (motorValue <= DSHOT_3D_FORWARD_MIN_THROTTLE - 1) {
|
} else if (motorValue <= DSHOT_3D_FORWARD_MIN_THROTTLE - 1) {
|
||||||
externalValue = scaleRange(motorValue, DSHOT_MIN_THROTTLE, DSHOT_3D_FORWARD_MIN_THROTTLE - 1, PWM_RANGE_MIDDLE - 1, PWM_RANGE_MIN);
|
externalValue = scaleRangef(motorValue, DSHOT_MIN_THROTTLE, DSHOT_3D_FORWARD_MIN_THROTTLE - 1, PWM_RANGE_MIDDLE - 1, PWM_RANGE_MIN);
|
||||||
} else {
|
} else {
|
||||||
externalValue = scaleRange(motorValue, DSHOT_3D_FORWARD_MIN_THROTTLE, DSHOT_MAX_THROTTLE, PWM_RANGE_MIDDLE + 1, PWM_RANGE_MAX);
|
externalValue = scaleRangef(motorValue, DSHOT_3D_FORWARD_MIN_THROTTLE, DSHOT_MAX_THROTTLE, PWM_RANGE_MIDDLE + 1, PWM_RANGE_MAX);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
externalValue = (motorValue < DSHOT_MIN_THROTTLE) ? PWM_RANGE_MIN : scaleRange(motorValue, DSHOT_MIN_THROTTLE, DSHOT_MAX_THROTTLE, PWM_RANGE_MIN + 1, PWM_RANGE_MAX);
|
externalValue = (motorValue < DSHOT_MIN_THROTTLE) ? PWM_RANGE_MIN : scaleRangef(motorValue, DSHOT_MIN_THROTTLE, DSHOT_MAX_THROTTLE, PWM_RANGE_MIN + 1, PWM_RANGE_MAX);
|
||||||
}
|
}
|
||||||
|
|
||||||
return externalValue;
|
return externalValue;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue