Fix floating point tpa bug
This commit is contained in:
parent
ad0acf3f5f
commit
2689208408
|
@ -305,7 +305,7 @@ void resetSerialConfig(serialConfig_t *serialConfig)
|
||||||
|
|
||||||
static void resetControlRateConfig(controlRateConfig_t *controlRateConfig) {
|
static void resetControlRateConfig(controlRateConfig_t *controlRateConfig) {
|
||||||
controlRateConfig->rcRate8 = 100;
|
controlRateConfig->rcRate8 = 100;
|
||||||
controlRateConfig->rcExpo8 = 20;
|
controlRateConfig->rcExpo8 = 60;
|
||||||
controlRateConfig->thrMid8 = 50;
|
controlRateConfig->thrMid8 = 50;
|
||||||
controlRateConfig->thrExpo8 = 0;
|
controlRateConfig->thrExpo8 = 0;
|
||||||
controlRateConfig->dynThrPID = 0;
|
controlRateConfig->dynThrPID = 0;
|
||||||
|
|
|
@ -60,7 +60,6 @@ int32_t axisPID_P[3], axisPID_I[3], axisPID_D[3];
|
||||||
|
|
||||||
// PIDweight is a scale factor for PIDs which is derived from the throttle and TPA setting, and 100 = 100% scale means no PID reduction
|
// PIDweight is a scale factor for PIDs which is derived from the throttle and TPA setting, and 100 = 100% scale means no PID reduction
|
||||||
uint8_t dynP8[3], dynI8[3], dynD8[3], PIDweight[3];
|
uint8_t dynP8[3], dynI8[3], dynD8[3], PIDweight[3];
|
||||||
float tpaFactor;
|
|
||||||
|
|
||||||
static int32_t errorGyroI[3], errorGyroILimit[3];
|
static int32_t errorGyroI[3], errorGyroILimit[3];
|
||||||
static float errorGyroIf[3], errorGyroIfLimit[3];
|
static float errorGyroIf[3], errorGyroIfLimit[3];
|
||||||
|
@ -137,6 +136,8 @@ static void pidLuxFloat(pidProfile_t *pidProfile, controlRateConfig_t *controlRa
|
||||||
int axis;
|
int axis;
|
||||||
float horizonLevelStrength = 1;
|
float horizonLevelStrength = 1;
|
||||||
|
|
||||||
|
float tpaFactor = PIDweight[0] / 100.0f; // tpa is now float
|
||||||
|
|
||||||
if (FLIGHT_MODE(HORIZON_MODE)) {
|
if (FLIGHT_MODE(HORIZON_MODE)) {
|
||||||
// Figure out the raw stick positions
|
// Figure out the raw stick positions
|
||||||
const int32_t stickPosAil = ABS(getRcStickDeflection(FD_ROLL, rxConfig->midrc));
|
const int32_t stickPosAil = ABS(getRcStickDeflection(FD_ROLL, rxConfig->midrc));
|
||||||
|
|
|
@ -113,7 +113,6 @@ static uint32_t disarmAt; // Time of automatic disarm when "Don't spin the m
|
||||||
|
|
||||||
extern uint32_t currentTime;
|
extern uint32_t currentTime;
|
||||||
extern uint8_t dynP8[3], dynI8[3], dynD8[3], PIDweight[3];
|
extern uint8_t dynP8[3], dynI8[3], dynD8[3], PIDweight[3];
|
||||||
extern float tpaFactor;
|
|
||||||
extern bool antiWindupProtection;
|
extern bool antiWindupProtection;
|
||||||
|
|
||||||
uint16_t filteredCycleTime;
|
uint16_t filteredCycleTime;
|
||||||
|
@ -233,7 +232,6 @@ void annexCode(void)
|
||||||
prop2 = 100 - (uint16_t)currentControlRateProfile->dynThrPID * (rcData[THROTTLE] - currentControlRateProfile->tpa_breakpoint) / (2000 - currentControlRateProfile->tpa_breakpoint);
|
prop2 = 100 - (uint16_t)currentControlRateProfile->dynThrPID * (rcData[THROTTLE] - currentControlRateProfile->tpa_breakpoint) / (2000 - currentControlRateProfile->tpa_breakpoint);
|
||||||
} else {
|
} else {
|
||||||
prop2 = 100 - currentControlRateProfile->dynThrPID;
|
prop2 = 100 - currentControlRateProfile->dynThrPID;
|
||||||
tpaFactor = prop2 / 100.0f;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue