From 1fc8a7163027773aa58f62da573d7ff12f89a3ec Mon Sep 17 00:00:00 2001 From: rusEfi Date: Fri, 11 Nov 2016 23:02:49 -0500 Subject: [PATCH] auto-sync --- .../controllers/trigger/trigger_central.cpp | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/firmware/controllers/trigger/trigger_central.cpp b/firmware/controllers/trigger/trigger_central.cpp index 8cc34b8cdc..49a6ec170f 100644 --- a/firmware/controllers/trigger/trigger_central.cpp +++ b/firmware/controllers/trigger/trigger_central.cpp @@ -76,6 +76,9 @@ uint32_t triggerMaxDuration = 0; extern bool isInsideTriggerHandler; +efitick_t previousVvtCamTime = 0; +efitick_t previousVvtCamDuration = 0; + void hwHandleVvtCamSignal(trigger_value_e front) { if (ENGINE(isEngineChartEnabled)) { // this is a performance optimization - array index is cheaper then invoking a method with 'switch' @@ -88,7 +91,27 @@ void hwHandleVvtCamSignal(trigger_value_e front) { TriggerCentral *tc = &engine->triggerCentral; - efitick_t offsetNt = getTimeNowNt() - tc->timeAtVirtualZeroNt; + efitick_t nowNt = getTimeNowNt(); + + + if (boardConfiguration->miataNb2) { + uint32_t currentDuration = nowNt - previousVvtCamTime; + float ratio = ((float) currentDuration) / previousVvtCamDuration; + + + previousVvtCamDuration = currentDuration; + previousVvtCamTime = nowNt; + + if (engineConfiguration->isPrintTriggerSynchDetails) { + scheduleMsg(logger, "vvt ratio %f", ratio); + } + if (ratio < boardConfiguration->nb2ratioFrom || ratio > boardConfiguration->nb2ratioTo) { + return; + } + } + + + efitick_t offsetNt = nowNt - tc->timeAtVirtualZeroNt; angle_t vvtPosition = NT2US(offsetNt) / engine->rpmCalculator.oneDegreeUs;