From e4258d6b86e3e0c28288575308ba00ffde200979 Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Wed, 3 Apr 2024 14:18:52 -0700 Subject: [PATCH] proper fix for flex temp sensing --- firmware/CHANGELOG.md | 1 + firmware/init/sensor/init_flex.cpp | 16 ++++++++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/firmware/CHANGELOG.md b/firmware/CHANGELOG.md index 86a0e869e7..b46a25552b 100644 --- a/firmware/CHANGELOG.md +++ b/firmware/CHANGELOG.md @@ -44,6 +44,7 @@ or - Improve performance with Lua CAN reception of a high volume of frames - Displayed units in TunerStudio change when switching between volume vs. mass injector flow modes #42 - Make Toyota "3 Tooth Cam" decoder more robust #382 + - Flex sensor-derived fuel temperature indication works properly ## December 2023 Release diff --git a/firmware/init/sensor/init_flex.cpp b/firmware/init/sensor/init_flex.cpp index 236021d944..bb831d6523 100644 --- a/firmware/init/sensor/init_flex.cpp +++ b/firmware/init/sensor/init_flex.cpp @@ -15,14 +15,8 @@ static Biquad flexTempFilter; static Timer flexFreq, flexPulse; static void flexCallback(efitick_t nowNt, bool value) { - if (!value) { - float frequency = 1 / flexFreq.getElapsedSecondsAndReset(nowNt); - flexSensor.postRawValue(frequency, nowNt); - - // Start timing pulse width on rising edge - flexPulse.reset(nowNt); - } else { - // End pulse timing on falling edge + if (value) { + // End pulse timing on rising edge float pulseWidthUs = flexPulse.getElapsedUs(nowNt); if (pulseWidthUs < 900) { @@ -36,6 +30,12 @@ static void flexCallback(efitick_t nowNt, bool value) { tempC = flexTempFilter.filter(tempC); flexFuelTemp.setValidValue(tempC, nowNt); } + } else { + float frequency = 1 / flexFreq.getElapsedSecondsAndReset(nowNt); + flexSensor.postRawValue(frequency, nowNt); + + // Start timing pulse width on falling edge + flexPulse.reset(nowNt); } }