From cc0552d1a2c943d7ed0e949fada1fce640e27e77 Mon Sep 17 00:00:00 2001 From: bsongis Date: Tue, 10 Jun 2014 09:06:53 +0200 Subject: [PATCH] Fixes #1227 - Constant INSTANT_TRIM_MARGIN set to 1%, needs to be checked and adjusted! --- radio/src/opentx.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 5c2e2f75c..641ef220f 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -3007,6 +3007,8 @@ ISR(USART0_UDRE_vect) #endif #endif +#define INSTANT_TRIM_MARGIN 10 /* around 1% */ + void instantTrim() { evalInputs(e_perout_mode_notrainer); @@ -3016,11 +3018,14 @@ void instantTrim() // don't instant trim the throttle stick uint8_t trim_phase = getTrimFlightPhase(s_current_mixer_flight_mode, i); #if defined(PCBTARANIS) - int16_t trim = limit(TRIM_EXTENDED_MIN, (calibratedStick[i] + trims[i]) / 2, TRIM_EXTENDED_MAX); + int16_t delta = calibratedStick[i]; #else - int16_t trim = limit(TRIM_EXTENDED_MIN, (anas[i] + trims[i]) / 2, TRIM_EXTENDED_MAX); + int16_t delta = anas[i]; #endif - setTrimValue(trim_phase, i, trim); + if (abs(delta) >= INSTANT_TRIM_MARGIN) { + int16_t trim = limit(TRIM_EXTENDED_MIN, (delta + trims[i]) / 2, TRIM_EXTENDED_MAX); + setTrimValue(trim_phase, i, trim); + } } }