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:
parent
9aae36b5e5
commit
3d7ac0dc6b
7 changed files with 16 additions and 13 deletions
|
@ -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:
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -117,4 +117,3 @@ bool isFixedWing(void);
|
||||||
|
|
||||||
float getMotorOutputLow(void);
|
float getMotorOutputLow(void);
|
||||||
float getMotorOutputHigh(void);
|
float getMotorOutputHigh(void);
|
||||||
float getDynamicIdleOffset(void);
|
|
||||||
|
|
|
@ -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();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue