diff --git a/firmware/controllers/math/engine_math.cpp b/firmware/controllers/math/engine_math.cpp index 6fdd102f33..e064ac30a3 100644 --- a/firmware/controllers/math/engine_math.cpp +++ b/firmware/controllers/math/engine_math.cpp @@ -152,7 +152,7 @@ void FuelSchedule::addFuelEvents(injection_mode_e mode DECLARE_ENGINE_PARAMETER_ ; list->reset(); - float baseAngle = engineConfiguration->globalTriggerAngleOffset + engineConfiguration->injectionAngle; + float baseAngle = tdcPosition() + engineConfiguration->injectionAngle; switch (mode) { case IM_SEQUENTIAL: @@ -251,7 +251,7 @@ static int findAngleIndex(float angleOffset DECLARE_ENGINE_PARAMETER_S) { } void findTriggerPosition(event_trigger_position_s *position, angle_t angleOffset DECLARE_ENGINE_PARAMETER_S) { - angleOffset += CONFIG(globalTriggerAngleOffset); + angleOffset += tdcPosition(); fixAngle(angleOffset); int index = TRIGGER_SHAPE(triggerIndexByAngle[(int)angleOffset]); diff --git a/firmware/controllers/math/engine_math.h b/firmware/controllers/math/engine_math.h index b774f666bf..9e9c9fe551 100644 --- a/firmware/controllers/math/engine_math.h +++ b/firmware/controllers/math/engine_math.h @@ -70,4 +70,7 @@ void setTimingLoadBin(engine_configuration_s *engineConfiguration, float l, floa void setSingleCoilDwell(engine_configuration_s *engineConfiguration); +#define tdcPosition() \ + (ENGINE(triggerShape.tdcPosition) + CONFIG(globalTriggerAngleOffset)) + #endif /* ENGINE_MATH_H_ */ diff --git a/firmware/controllers/trigger/rpm_calculator.cpp b/firmware/controllers/trigger/rpm_calculator.cpp index e03dd96a15..da02a03512 100644 --- a/firmware/controllers/trigger/rpm_calculator.cpp +++ b/firmware/controllers/trigger/rpm_calculator.cpp @@ -200,7 +200,7 @@ static void tdcMarkCallback(trigger_event_e ckpSignalType, uint32_t index0 DECLA int revIndex2 = engine->rpmCalculator.getRevolutionCounter() % 2; int rpm = getRpm(); // todo: use event-based scheduling, not just time-based scheduling - scheduleByAngle(rpm, &tdcScheduler[revIndex2], engineConfiguration->globalTriggerAngleOffset, + scheduleByAngle(rpm, &tdcScheduler[revIndex2], tdcPosition(), (schfunc_t) onTdcCallback, NULL); } } diff --git a/firmware/controllers/trigger/trigger_structure.h b/firmware/controllers/trigger/trigger_structure.h index 1035404569..62dbe065bd 100644 --- a/firmware/controllers/trigger/trigger_structure.h +++ b/firmware/controllers/trigger/trigger_structure.h @@ -50,6 +50,7 @@ public: /** * that's the angle distance from trigger event #0 and actual engine TDC + * see also globalTriggerAngleOffset */ float tdcPosition;