From 11fbfe55f03384618bb5fead9e120e6924ca1e28 Mon Sep 17 00:00:00 2001 From: Andrey Date: Thu, 20 Jul 2023 16:34:40 -0400 Subject: [PATCH] GDI4 overlap factor fix #5416 --- firmware/CHANGELOG.md | 1 + firmware/controllers/limp_manager.cpp | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/firmware/CHANGELOG.md b/firmware/CHANGELOG.md index 36d73ecfc3..2e283e5e3c 100644 --- a/firmware/CHANGELOG.md +++ b/firmware/CHANGELOG.md @@ -30,6 +30,7 @@ Release template (copy/paste this for new release): ### Added - Dashpot for return-to-idle from coasting #5303 + - injector duty cycle limited at 50% for GDI engines #5416 ### Fixed - fuel_pump_control is accessible as getOutput("isFuelPumpOn") in Lua #5239 diff --git a/firmware/controllers/limp_manager.cpp b/firmware/controllers/limp_manager.cpp index c0d6fad23e..4fb91a018e 100644 --- a/firmware/controllers/limp_manager.cpp +++ b/firmware/controllers/limp_manager.cpp @@ -151,7 +151,8 @@ void LimpManager::updateState(int rpm, efitick_t nowNt) { // If duty cycle is high, impose a fuel cut rev limiter. // This is safer than attempting to limp along with injectors or a pump that are out of flow. // only reset once below 20% duty to force the driver to lift - if (m_injectorDutyCutHysteresis.test(getInjectorDutyCycle(rpm), 96, 20)) { + float maxAllowedDuty = isGdiEngine() ? 50 : 96; // at the moment GDI means GDI4 and PT2001 which means duty cycle limited at 50% by hardware + if (m_injectorDutyCutHysteresis.test(getInjectorDutyCycle(rpm), maxAllowedDuty, 20)) { allowFuel.clear(ClearReason::InjectorDutyCycle); }