From ae2fdb95bddc540f65921442754e1b20477624e3 Mon Sep 17 00:00:00 2001 From: 3djc Date: Sat, 24 Jun 2023 09:05:48 +0200 Subject: [PATCH] Fix rounding errors in ADC value calculation for 6POS switch as per Philmoz #3713 --- radio/src/hal/adc_driver.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/radio/src/hal/adc_driver.cpp b/radio/src/hal/adc_driver.cpp index 5fe5ce07a..5dd4dc030 100644 --- a/radio/src/hal/adc_driver.cpp +++ b/radio/src/hal/adc_driver.cpp @@ -400,7 +400,7 @@ void getADC() } #endif - #define ANAFILT_MAX (2 * RESX * JITTER_ALPHA * ANALOG_MULTIPLIER - 1) + #define ANAFILT_MAX (2 * RESX * JITTER_ALPHA * ANALOG_MULTIPLIER) StepsCalibData * calib = (StepsCalibData *) &g_eeGeneral.calib[x]; if (IS_POT_MULTIPOS(x - pot_offset) && IS_MULTIPOS_CALIBRATED(calib)) { // TODO: consider adding another low pass filter to eliminate multipos switching glitches @@ -408,7 +408,7 @@ void getADC() s_anaFilt[x] = ANAFILT_MAX; for (uint32_t i = 0; i < calib->count; i++) { if (vShifted < calib->steps[i]) { - s_anaFilt[x] = (i * ANAFILT_MAX) / calib->count; + s_anaFilt[x] = (i * (ANAFILT_MAX + JITTER_ALPHA * ANALOG_MULTIPLIER)) / calib->count; break; } }