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