From 5c2931e9ec84ae3cad7a8a4be1e1ed36a0de822e Mon Sep 17 00:00:00 2001 From: Mark Haslinghuis Date: Wed, 30 Sep 2020 14:24:22 +0200 Subject: [PATCH] Fix Dshot range --- src/main/drivers/dshot.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/drivers/dshot.c b/src/main/drivers/dshot.c index 039447ae8a..54ab1d77aa 100644 --- a/src/main/drivers/dshot.c +++ b/src/main/drivers/dshot.c @@ -65,7 +65,7 @@ void dshotInitEndpoints(const motorConfig_t *motorConfig, float outputLimit, flo float dshotConvertFromExternal(uint16_t externalValue) { - uint16_t motorValue; + float motorValue; externalValue = constrain(externalValue, PWM_RANGE_MIN, PWM_RANGE_MAX); @@ -73,15 +73,15 @@ float dshotConvertFromExternal(uint16_t externalValue) if (externalValue == PWM_RANGE_MIDDLE) { motorValue = DSHOT_CMD_MOTOR_STOP; } 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 { - 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 { - 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) @@ -92,12 +92,12 @@ uint16_t dshotConvertToExternal(float motorValue) if (motorValue == DSHOT_CMD_MOTOR_STOP || motorValue < DSHOT_MIN_THROTTLE) { externalValue = PWM_RANGE_MIDDLE; } 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 { - 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 { - 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;