diff --git a/src/main/cli/settings.c b/src/main/cli/settings.c index 8669b1372d..bde1b2dfbf 100644 --- a/src/main/cli/settings.c +++ b/src/main/cli/settings.c @@ -1015,7 +1015,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 53f9639950..702cb51be6 100644 --- a/src/main/cms/cms_menu_imu.c +++ b/src/main/cms/cms_menu_imu.c @@ -487,7 +487,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 0adb72e202..ba0c0d76a4 100644 --- a/src/main/flight/pid.h +++ b/src/main/flight/pid.h @@ -51,6 +51,8 @@ // Anti gravity I constant #define AG_KI 21.586988f; +#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 205fc2733e..12ac9f048e 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" @@ -184,7 +185,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); }