From e18a3b5e645aeb41eb0a62843a33a59976d83547 Mon Sep 17 00:00:00 2001 From: Andrey Date: Mon, 8 Apr 2024 22:44:52 -0400 Subject: [PATCH] odd fire timing_offset_cylinder not accounted by injection #6095 flipping adjustment direction --- firmware/CHANGELOG.md | 1 + firmware/controllers/algo/advance_map.cpp | 2 +- .../tests/ignition_injection/test_odd_firing_engine.cpp | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/firmware/CHANGELOG.md b/firmware/CHANGELOG.md index d494d6bfb8..c585bc2f24 100644 --- a/firmware/CHANGELOG.md +++ b/firmware/CHANGELOG.md @@ -51,6 +51,7 @@ Release template (copy/paste this for new release): ### Breaking Changes - wrong trigger naming for missing teeth #6258 + - flipping timing_offset_cylinder direction #6095 ## March 2024 "Day 740" diff --git a/firmware/controllers/algo/advance_map.cpp b/firmware/controllers/algo/advance_map.cpp index c739987013..e069ed3db4 100644 --- a/firmware/controllers/algo/advance_map.cpp +++ b/firmware/controllers/algo/advance_map.cpp @@ -213,7 +213,7 @@ angle_t getCylinderIgnitionTrim(size_t cylinderNumber, int rpm, float ignitionLo // Plus or minus any adjustment if this is an odd-fire engine auto adjustment = engineConfiguration->timing_offset_cylinder[cylinderNumber]; - return adjustment + interpolate3d( + return -adjustment + interpolate3d( config->ignTrims[cylinderNumber].table, config->ignTrimLoadBins, ignitionLoad, config->ignTrimRpmBins, rpm diff --git a/unit_tests/tests/ignition_injection/test_odd_firing_engine.cpp b/unit_tests/tests/ignition_injection/test_odd_firing_engine.cpp index 806fd5eec0..54875dd282 100644 --- a/unit_tests/tests/ignition_injection/test_odd_firing_engine.cpp +++ b/unit_tests/tests/ignition_injection/test_odd_firing_engine.cpp @@ -14,8 +14,8 @@ TEST(OddFireRunningMode, hd) { // let's pretend to have a 32 degree V odd fire engine. float cylinderOne = -19; float cylinderTwo = 13; - engineConfiguration->timing_offset_cylinder[0] = -cylinderOne; - engineConfiguration->timing_offset_cylinder[1] = -cylinderTwo; + engineConfiguration->timing_offset_cylinder[0] = cylinderOne; + engineConfiguration->timing_offset_cylinder[1] = cylinderTwo; angle_t timing = 1; setTable(config->ignitionTable, timing); // run mode timing