diff --git a/src/main/fc/fc_rc.c b/src/main/fc/fc_rc.c index 2511fcfd5c..bf2def8ba9 100755 --- a/src/main/fc/fc_rc.c +++ b/src/main/fc/fc_rc.c @@ -189,7 +189,7 @@ void processRcCommand(void) } } - if (rxConfig()->rcInterpolation || flightModeFlags) { + if (rxConfig()->rcInterpolation) { // Set RC refresh rate for sampling and channels to filter switch(rxConfig()->rcInterpolation) { case(RC_SMOOTHING_AUTO): diff --git a/src/main/flight/pid.c b/src/main/flight/pid.c index 09d7a18e3b..46411982ec 100644 --- a/src/main/flight/pid.c +++ b/src/main/flight/pid.c @@ -436,9 +436,9 @@ void pidController(const pidProfile_t *pidProfile, const rollAndPitchTrims_t *an float gyroRateFiltered = dtermNotchFilterApplyFn(dtermFilterNotch[axis], gyroRate); gyroRateFiltered = dtermLpfApplyFn(dtermFilterLpf[axis], gyroRateFiltered); - float dynC = dtermSetpointWeight; - if (pidProfile->setpointRelaxRatio < 100) { - dynC *= MIN(getRcDeflectionAbs(axis) * relaxFactor, 1.0f); + float dynC = 0; + if ( (pidProfile->setpointRelaxRatio < 100) && (!flightModeFlags) ) { + dynC = dtermSetpointWeight * MIN(getRcDeflectionAbs(axis) * relaxFactor, 1.0f); } const float rD = dynC * currentPidSetpoint - gyroRateFiltered; // cr - y // Divide rate change by dT to get differential (ie dr/dt)