From 172479e2af63e6884725a171fbc8c0c927720102 Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Sat, 18 Jun 2022 02:20:47 +0100 Subject: [PATCH] fix (#4254) --- firmware/controllers/algo/engine2.cpp | 11 +++++------ firmware/controllers/algo/engine_state.h | 3 +-- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/firmware/controllers/algo/engine2.cpp b/firmware/controllers/algo/engine2.cpp index e689438a1d..8097577194 100644 --- a/firmware/controllers/algo/engine2.cpp +++ b/firmware/controllers/algo/engine2.cpp @@ -92,12 +92,13 @@ void EngineState::periodicFastCallback() { warning(CUSTOM_SLOW_NOT_INVOKED, "Slow not invoked yet"); } efitick_t nowNt = getTimeNowNt(); + if (engine->rpmCalculator.isCranking()) { - crankingTime = nowNt; - timeSinceCranking = 0.0f; - } else { - timeSinceCranking = nowNt - crankingTime; + crankingTimer.reset(nowNt); } + + running.timeSinceCrankingInSecs = crankingTimer.getElapsedSeconds(nowNt); + recalculateAuxValveTiming(); int rpm = Sensor::getOrZero(SensorType::Rpm); @@ -114,8 +115,6 @@ void EngineState::periodicFastCallback() { // post-cranking fuel enrichment. // for compatibility reasons, apply only if the factor is greater than unity (only allow adding fuel) if (engineConfiguration->postCrankingFactor > 1.0f) { - // convert to microsecs and then to seconds - running.timeSinceCrankingInSecs = NT2US(timeSinceCranking) / US_PER_SECOND_F; // use interpolation for correction taper running.postCrankingFuelCorrection = interpolateClamped(0.0f, engineConfiguration->postCrankingFactor, engineConfiguration->postCrankingDurationSec, 1.0f, running.timeSinceCrankingInSecs); diff --git a/firmware/controllers/algo/engine_state.h b/firmware/controllers/algo/engine_state.h index 0554ff33da..429228b1d8 100644 --- a/firmware/controllers/algo/engine_state.h +++ b/firmware/controllers/algo/engine_state.h @@ -30,8 +30,7 @@ public: FuelConsumptionState fuelConsumption; - efitick_t crankingTime = 0; - efitick_t timeSinceCranking = 0; + Timer crankingTimer; WarningCodeState warnings;