From 5d63f83f6ca8cf8d9e1fabdd3f1319872b18f5e7 Mon Sep 17 00:00:00 2001 From: Martin Budden Date: Fri, 30 Dec 2016 23:30:23 +0000 Subject: [PATCH] Fixed use of uninitialised currentPidSetpoint --- src/main/flight/pid.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/flight/pid.c b/src/main/flight/pid.c index 319448d44e..3e7dcc9872 100644 --- a/src/main/flight/pid.c +++ b/src/main/flight/pid.c @@ -170,7 +170,7 @@ float calcHorizonLevelStrength(const pidProfile_t *pidProfile) { return horizonLevelStrength; } -float pidLevel(int axis, const pidProfile_t *pidProfile, const rollAndPitchTrims_t *angleTrim) { +float pidLevel(int axis, const pidProfile_t *pidProfile, const rollAndPitchTrims_t *angleTrim, float currentPidSetpoint) { // calculate error angle and limit the angle to the max inclination float errorAngle = pidProfile->levelSensitivity * rcCommand[axis]; #ifdef GPS @@ -178,7 +178,6 @@ float pidLevel(int axis, const pidProfile_t *pidProfile, const rollAndPitchTrims #endif errorAngle = constrainf(errorAngle, -pidProfile->max_angle_inclination, pidProfile->max_angle_inclination); errorAngle = (errorAngle - ((attitude.raw[axis] + angleTrim->raw[axis]) / 10.0f)); - float currentPidSetpoint; if(FLIGHT_MODE(ANGLE_MODE)) { // ANGLE mode - control is angle based, so control loop is needed currentPidSetpoint = errorAngle * levelGain; @@ -220,7 +219,7 @@ void pidController(const pidProfile_t *pidProfile, const rollAndPitchTrims_t *an // Yaw control is GYRO based, direct sticks control is applied to rate PID if ((FLIGHT_MODE(ANGLE_MODE) || FLIGHT_MODE(HORIZON_MODE)) && axis != YAW) { - currentPidSetpoint = pidLevel(axis, pidProfile, angleTrim); + currentPidSetpoint = pidLevel(axis, pidProfile, angleTrim, currentPidSetpoint); } const float gyroRate = gyro.gyroADCf[axis]; // Process variable from gyro output in deg/sec