1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-23 16:25:31 +03:00

Improved the naming of the digital idle offset getter.

This commit is contained in:
Michael Keller 2020-10-30 16:12:04 +01:00
parent 9aae36b5e5
commit 3d7ac0dc6b
7 changed files with 16 additions and 13 deletions

View file

@ -1475,7 +1475,7 @@ static bool blackboxWriteSysinfo(void)
#endif #endif
#if defined(USE_DYN_IDLE) #if defined(USE_DYN_IDLE)
BLACKBOX_PRINT_HEADER_LINE("dynamic_idle_offset", "%d", currentPidProfile->idle_min_rpm ? lrintf(getDynamicIdleOffset()) : 0); BLACKBOX_PRINT_HEADER_LINE("dynamic_idle_min_rpm", "%d", currentPidProfile->idle_min_rpm);
#endif #endif
default: default:

View file

@ -50,15 +50,15 @@
#include "dshot.h" #include "dshot.h"
void dshotInitEndpoints(const motorConfig_t *motorConfig, float outputLimit, float *outputLow, float *outputHigh, float *disarm, float *deadbandMotor3dHigh, float *deadbandMotor3dLow) { void dshotInitEndpoints(const motorConfig_t *motorConfig, float outputLimit, float *outputLow, float *outputHigh, float *disarm, float *deadbandMotor3dHigh, float *deadbandMotor3dLow) {
float outputLimitOffset = (DSHOT_MAX_THROTTLE - DSHOT_MIN_THROTTLE) * (1 - outputLimit); float outputLimitOffset = DSHOT_RANGE * (1 - outputLimit);
*disarm = DSHOT_CMD_MOTOR_STOP; *disarm = DSHOT_CMD_MOTOR_STOP;
if (featureIsEnabled(FEATURE_3D)) { if (featureIsEnabled(FEATURE_3D)) {
*outputLow = DSHOT_MIN_THROTTLE + ((DSHOT_3D_FORWARD_MIN_THROTTLE - 1 - DSHOT_MIN_THROTTLE) / 100.0f) * CONVERT_PARAMETER_TO_PERCENT(motorConfig->digitalIdleOffsetValue); *outputLow = DSHOT_MIN_THROTTLE + getDigitalIdleOffset(motorConfig) * (DSHOT_3D_FORWARD_MIN_THROTTLE - 1 - DSHOT_MIN_THROTTLE);
*outputHigh = DSHOT_MAX_THROTTLE - outputLimitOffset / 2; *outputHigh = DSHOT_MAX_THROTTLE - outputLimitOffset / 2;
*deadbandMotor3dHigh = DSHOT_3D_FORWARD_MIN_THROTTLE + ((DSHOT_MAX_THROTTLE - DSHOT_3D_FORWARD_MIN_THROTTLE) / 100.0f) * CONVERT_PARAMETER_TO_PERCENT(motorConfig->digitalIdleOffsetValue); *deadbandMotor3dHigh = DSHOT_3D_FORWARD_MIN_THROTTLE + getDigitalIdleOffset(motorConfig) * (DSHOT_MAX_THROTTLE - DSHOT_3D_FORWARD_MIN_THROTTLE);
*deadbandMotor3dLow = DSHOT_3D_FORWARD_MIN_THROTTLE - 1 - outputLimitOffset / 2; *deadbandMotor3dLow = DSHOT_3D_FORWARD_MIN_THROTTLE - 1 - outputLimitOffset / 2;
} else { } else {
*outputLow = DSHOT_MIN_THROTTLE + ((DSHOT_MAX_THROTTLE - DSHOT_MIN_THROTTLE) / 100.0f) * CONVERT_PARAMETER_TO_PERCENT(motorConfig->digitalIdleOffsetValue); *outputLow = DSHOT_MIN_THROTTLE + getDigitalIdleOffset(motorConfig) * DSHOT_RANGE;
*outputHigh = DSHOT_MAX_THROTTLE - outputLimitOffset; *outputHigh = DSHOT_MAX_THROTTLE - outputLimitOffset;
} }
} }

View file

@ -27,6 +27,7 @@
#define DSHOT_MIN_THROTTLE 48 #define DSHOT_MIN_THROTTLE 48
#define DSHOT_MAX_THROTTLE 2047 #define DSHOT_MAX_THROTTLE 2047
#define DSHOT_3D_FORWARD_MIN_THROTTLE 1048 #define DSHOT_3D_FORWARD_MIN_THROTTLE 1048
#define DSHOT_RANGE (DSHOT_MAX_THROTTLE - DSHOT_MIN_THROTTLE)
#define MIN_GCR_EDGES 7 #define MIN_GCR_EDGES 7
#define MAX_GCR_EDGES 22 #define MAX_GCR_EDGES 22

View file

@ -321,9 +321,15 @@ timeMs_t motorGetMotorEnableTimeMs(void)
#endif #endif
#ifdef USE_DSHOT_BITBANG #ifdef USE_DSHOT_BITBANG
bool isDshotBitbangActive(const motorDevConfig_t *motorDevConfig) { bool isDshotBitbangActive(const motorDevConfig_t *motorDevConfig)
{
return motorDevConfig->useDshotBitbang == DSHOT_BITBANG_ON || return motorDevConfig->useDshotBitbang == DSHOT_BITBANG_ON ||
(motorDevConfig->useDshotBitbang == DSHOT_BITBANG_AUTO && motorDevConfig->useDshotTelemetry && motorDevConfig->motorPwmProtocol != PWM_TYPE_PROSHOT1000); (motorDevConfig->useDshotBitbang == DSHOT_BITBANG_AUTO && motorDevConfig->useDshotTelemetry && motorDevConfig->motorPwmProtocol != PWM_TYPE_PROSHOT1000);
} }
#endif #endif
float getDigitalIdleOffset(const motorConfig_t *motorConfig)
{
return CONVERT_PARAMETER_TO_PERCENT(motorConfig->digitalIdleOffsetValue * 0.01f);
}
#endif // USE_MOTOR #endif // USE_MOTOR

View file

@ -100,3 +100,5 @@ struct motorDevConfig_s;
typedef struct motorDevConfig_s motorDevConfig_t; typedef struct motorDevConfig_s motorDevConfig_t;
bool isDshotBitbangActive(const motorDevConfig_t *motorConfig); bool isDshotBitbangActive(const motorDevConfig_t *motorConfig);
#endif #endif
float getDigitalIdleOffset(const motorConfig_t *motorConfig);

View file

@ -117,4 +117,3 @@ bool isFixedWing(void);
float getMotorOutputLow(void); float getMotorOutputLow(void);
float getMotorOutputHigh(void); float getMotorOutputHigh(void);
float getDynamicIdleOffset(void);

View file

@ -396,11 +396,6 @@ static void mixerConfigureOutput(void)
} }
#endif // USE_QUAD_MIXER_ONLY #endif // USE_QUAD_MIXER_ONLY
float getDynamicIdleOffset(void)
{
return motorConfig()->digitalIdleOffsetValue * 0.0001f * PWM_RANGE;
}
void mixerInit(mixerMode_e mixerMode) void mixerInit(mixerMode_e mixerMode)
{ {
currentMixerMode = mixerMode; currentMixerMode = mixerMode;
@ -415,7 +410,7 @@ void mixerInit(mixerMode_e mixerMode)
#endif #endif
#ifdef USE_DYN_IDLE #ifdef USE_DYN_IDLE
mixerRuntime.idleThrottleOffset = getDynamicIdleOffset(); mixerRuntime.idleThrottleOffset = getDigitalIdleOffset(motorConfig()) * PWM_RANGE;
#endif #endif
mixerConfigureOutput(); mixerConfigureOutput();