diff --git a/firmware/controllers/algo/advance_map.cpp b/firmware/controllers/algo/advance_map.cpp index 5776371678..bb88e98e57 100644 --- a/firmware/controllers/algo/advance_map.cpp +++ b/firmware/controllers/algo/advance_map.cpp @@ -21,9 +21,7 @@ #include "main.h" #include "advance_map.h" #include "interpolation.h" -// that's for 'max' function -#include "idle_controller.h" - +#include "efilib2.h" #include "engine_configuration.h" #include "engine_math.h" @@ -38,8 +36,14 @@ float getBaseAdvance(int rpm, float engineLoad DECLARE_ENGINE_PARAMETER_S) { } efiAssert(!cisnan(engineLoad), "invalid el", NAN); efiAssert(!cisnan(engineLoad), "invalid rpm", NAN); - return advanceMap.getValue(engineLoad, engineConfiguration->ignitionLoadBins, (float) rpm, + engine->m.beforeZeroTest = GET_TIMESTAMP(); + engine->m.zeroTestTime = GET_TIMESTAMP() - engine->m.beforeZeroTest; + + engine->m.beforeAdvance = GET_TIMESTAMP(); + float result = advanceMap.getValue(engineLoad, engineConfiguration->ignitionLoadBins, (float) rpm, engineConfiguration->ignitionRpmBins); + engine->m.advanceTime = GET_TIMESTAMP() - engine->m.beforeAdvance; + return result; } float getAdvance(int rpm, float engineLoad DECLARE_ENGINE_PARAMETER_S) { diff --git a/firmware/controllers/algo/engine.h b/firmware/controllers/algo/engine.h index 1d512c2094..977e34bd13 100644 --- a/firmware/controllers/algo/engine.h +++ b/firmware/controllers/algo/engine.h @@ -100,6 +100,12 @@ typedef struct { uint32_t beforeInjectonSch; uint32_t injectonSchTime; + + uint32_t beforeZeroTest; + uint32_t zeroTestTime; + + uint32_t beforeAdvance; + uint32_t advanceTime; } monitoring_timestamps_s; class Engine { diff --git a/firmware/controllers/trigger/trigger_central.cpp b/firmware/controllers/trigger/trigger_central.cpp index fe50258c67..16c86cbecd 100644 --- a/firmware/controllers/trigger/trigger_central.cpp +++ b/firmware/controllers/trigger/trigger_central.cpp @@ -265,11 +265,13 @@ void triggerInfo(Engine *engine) { #endif #if EFI_PROD_CODE - scheduleMsg(logger, "sn=%s ignitionMathTime=%d schTime=%d injectonSchTime=%d triggerMaxDuration=%d", + scheduleMsg(logger, "sn=%s ignitionMathTime=%d schTime=%d injectonSchTime=%d zeroTestTime=%d advanceTime=%d triggerMaxDuration=%d", boolToString(ts->isSynchronizationNeeded), engine->m.ignitionMathTime, engine->m.ignitionSchTime, engine->m.injectonSchTime, + engine->m.zeroTestTime, + engine->m.advanceTime, triggerMaxDuration); triggerMaxDuration = 0;