diff --git a/src/main/cli/settings.c b/src/main/cli/settings.c index 60d11e01bc..cf436f2da7 100644 --- a/src/main/cli/settings.c +++ b/src/main/cli/settings.c @@ -988,7 +988,7 @@ const clivalue_t valueTable[] = { { "pid_at_min_throttle", VAR_UINT8 | PROFILE_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OFF_ON }, PG_PID_PROFILE, offsetof(pidProfile_t, pidAtMinThrottle) }, { "anti_gravity_mode", VAR_UINT8 | PROFILE_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_ANTI_GRAVITY_MODE }, PG_PID_PROFILE, offsetof(pidProfile_t, antiGravityMode) }, { "anti_gravity_threshold", VAR_UINT16 | PROFILE_VALUE, .config.minmaxUnsigned = { 20, 1000 }, PG_PID_PROFILE, offsetof(pidProfile_t, itermThrottleThreshold) }, - { "anti_gravity_gain", VAR_UINT16 | PROFILE_VALUE, .config.minmaxUnsigned = { 1000, 30000 }, PG_PID_PROFILE, offsetof(pidProfile_t, itermAcceleratorGain) }, + { "anti_gravity_gain", VAR_UINT16 | PROFILE_VALUE, .config.minmaxUnsigned = { ITERM_ACCELERATOR_GAIN_OFF, ITERM_ACCELERATOR_GAIN_MAX }, PG_PID_PROFILE, offsetof(pidProfile_t, itermAcceleratorGain) }, { "feedforward_transition", VAR_UINT8 | PROFILE_VALUE, .config.minmaxUnsigned = { 0, 100 }, PG_PID_PROFILE, offsetof(pidProfile_t, feedForwardTransition) }, { "acc_limit_yaw", VAR_UINT16 | PROFILE_VALUE, .config.minmaxUnsigned = { 0, 500 }, PG_PID_PROFILE, offsetof(pidProfile_t, yawRateAccelLimit) }, { "acc_limit", VAR_UINT16 | PROFILE_VALUE, .config.minmaxUnsigned = { 0, 500 }, PG_PID_PROFILE, offsetof(pidProfile_t, rateAccelLimit) }, diff --git a/src/main/cms/cms_menu_imu.c b/src/main/cms/cms_menu_imu.c index 13d089c1fb..2c6c3e6b08 100644 --- a/src/main/cms/cms_menu_imu.c +++ b/src/main/cms/cms_menu_imu.c @@ -456,7 +456,7 @@ static const OSD_Entry cmsx_menuProfileOtherEntries[] = { { "ANGLE STR", OME_UINT8, NULL, &(OSD_UINT8_t) { &cmsx_angleStrength, 0, 200, 1 } , 0 }, { "HORZN STR", OME_UINT8, NULL, &(OSD_UINT8_t) { &cmsx_horizonStrength, 0, 200, 1 } , 0 }, { "HORZN TRS", OME_UINT8, NULL, &(OSD_UINT8_t) { &cmsx_horizonTransition, 0, 200, 1 } , 0 }, - { "AG GAIN", OME_UINT16, NULL, &(OSD_UINT16_t) { &cmsx_itermAcceleratorGain, 1000, 30000, 10 } , 0 }, + { "AG GAIN", OME_UINT16, NULL, &(OSD_UINT16_t) { &cmsx_itermAcceleratorGain, ITERM_ACCELERATOR_GAIN_OFF, ITERM_ACCELERATOR_GAIN_MAX, 10 } , 0 }, { "AG THR", OME_UINT16, NULL, &(OSD_UINT16_t) { &cmsx_itermThrottleThreshold, 20, 1000, 1 } , 0 }, #ifdef USE_THROTTLE_BOOST { "THR BOOST", OME_UINT8, NULL, &(OSD_UINT8_t) { &cmsx_throttleBoost, 0, 100, 1 } , 0 }, diff --git a/src/main/flight/pid.h b/src/main/flight/pid.h index 691bcb7e02..107b12d91b 100644 --- a/src/main/flight/pid.h +++ b/src/main/flight/pid.h @@ -48,6 +48,8 @@ #define ITERM_RELAX_SETPOINT_THRESHOLD 40.0f #define ITERM_RELAX_CUTOFF_DEFAULT 20 +#define ITERM_ACCELERATOR_GAIN_OFF 1000 +#define ITERM_ACCELERATOR_GAIN_MAX 30000 typedef enum { PID_ROLL, PID_PITCH, diff --git a/src/main/msp/msp_box.c b/src/main/msp/msp_box.c index a6779a0944..a9872e5fde 100644 --- a/src/main/msp/msp_box.c +++ b/src/main/msp/msp_box.c @@ -34,6 +34,7 @@ #include "fc/runtime_config.h" #include "flight/mixer.h" +#include "flight/pid.h" #include "sensors/sensors.h" @@ -171,7 +172,13 @@ void initActiveBoxIds(void) BME(BOXAIRMODE); } - if (!featureIsEnabled(FEATURE_ANTI_GRAVITY)) { + bool acceleratorGainsEnabled = false; + for (unsigned i = 0; i < PID_PROFILE_COUNT; i++) { + if (pidProfiles(i)->itermAcceleratorGain != ITERM_ACCELERATOR_GAIN_OFF) { + acceleratorGainsEnabled = true; + } + } + if (acceleratorGainsEnabled && !featureIsEnabled(FEATURE_ANTI_GRAVITY)) { BME(BOXANTIGRAVITY); }