From 974f6f540d6b2123ba234cf31dfb398ce4a53462 Mon Sep 17 00:00:00 2001 From: rusefillc Date: Tue, 27 Sep 2022 22:41:26 -0400 Subject: [PATCH] VVT minimum RPM fix #4545 --- firmware/CHANGELOG.md | 2 +- firmware/controllers/actuators/vvt.cpp | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/firmware/CHANGELOG.md b/firmware/CHANGELOG.md index dbe1ecd4ac..a83e602ed3 100644 --- a/firmware/CHANGELOG.md +++ b/firmware/CHANGELOG.md @@ -14,7 +14,7 @@ Release template (copy/paste this for new release): - ### Added - - + - VVT minimum RPM setting #4545 ### Fixed - Enforce board configuration overrides more strictly #4614 diff --git a/firmware/controllers/actuators/vvt.cpp b/firmware/controllers/actuators/vvt.cpp index de80e5668e..f6181b7210 100644 --- a/firmware/controllers/actuators/vvt.cpp +++ b/firmware/controllers/actuators/vvt.cpp @@ -105,7 +105,7 @@ expected VvtController::getClosedLoop(angle_t target, angle_t observa void VvtController::setOutput(expected outputValue) { float rpm = Sensor::getOrZero(SensorType::Rpm); #if EFI_SHAFT_POSITION_INPUT - bool enabled = rpm > engineConfiguration->cranking.rpm /* todo: make this configurable? */ + bool enabled = rpm > engineConfiguration->vvtControlMinRpm && engine->rpmCalculator.getSecondsSinceEngineStart(getTimeNowNt()) > engineConfiguration->vvtActivationDelayMs / MS_PER_SECOND ; @@ -150,6 +150,9 @@ void stopVvtControlPins() { } void initVvtActuators() { + if (engineConfiguration->vvtControlMinRpm < engineConfiguration->cranking.rpm) { + engineConfiguration->vvtControlMinRpm = engineConfiguration->cranking.rpm; + } vvtTable1.init(config->vvtTable1, config->vvtTable1LoadBins, config->vvtTable1RpmBins);