From 703fd24d18e2ffd1fa5335a4607e8a8765b38979 Mon Sep 17 00:00:00 2001 From: rusEfi Date: Tue, 11 Nov 2014 08:03:18 -0600 Subject: [PATCH] auto-sync --- firmware/controllers/algo/engine.cpp | 8 ++++---- firmware/controllers/algo/engine.h | 4 ++-- firmware/controllers/trigger/trigger_central.cpp | 11 ++++++----- firmware/rusefi.cpp | 2 +- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/firmware/controllers/algo/engine.cpp b/firmware/controllers/algo/engine.cpp index 5605e758c0..39c7c937c3 100644 --- a/firmware/controllers/algo/engine.cpp +++ b/firmware/controllers/algo/engine.cpp @@ -32,9 +32,9 @@ void Engine::updateSlowSensors() { engineState.clt = getCoolantTemperature(this); } -void Engine::onTriggerEvent(uint64_t nowUs) { +void Engine::onTriggerEvent(uint64_t nowNt) { isSpinning = true; - lastTriggerEventTimeUs = nowUs; + lastTriggerEventTimeNt = nowNt; } Engine::Engine() { @@ -76,7 +76,7 @@ void Engine::watchdog() { } return; } - uint64_t nowUs = getTimeNowUs(); + uint64_t nowNt = getTimeNowNt(); /** * Lowest possible cranking is about 240 RPM, that's 4 revolutions per second. * 0.25 second is 250000 uS @@ -84,7 +84,7 @@ void Engine::watchdog() { * todo: better watch dog implementation should be implemented - see * http://sourceforge.net/p/rusefi/tickets/96/ */ - if (nowUs - lastTriggerEventTimeUs < 250000) { + if (nowNt - lastTriggerEventTimeNt < US2NT(250000LL)) { return; } isSpinning = false; diff --git a/firmware/controllers/algo/engine.h b/firmware/controllers/algo/engine.h index 4d29f7dd1f..24965a0eb6 100644 --- a/firmware/controllers/algo/engine.h +++ b/firmware/controllers/algo/engine.h @@ -35,9 +35,9 @@ public: Thermistor iat; Thermistor clt; - void onTriggerEvent(uint64_t nowUs); + void onTriggerEvent(uint64_t nowNt); EngineState engineState; - uint64_t lastTriggerEventTimeUs; + uint64_t lastTriggerEventTimeNt; /** * This coefficient translates ADC value directly into voltage adjusted according to diff --git a/firmware/controllers/trigger/trigger_central.cpp b/firmware/controllers/trigger/trigger_central.cpp index 8e965887cf..0212ca1774 100644 --- a/firmware/controllers/trigger/trigger_central.cpp +++ b/firmware/controllers/trigger/trigger_central.cpp @@ -29,7 +29,7 @@ WaveChart waveChart; static histogram_s triggerCallback; // we need this initial to have not_running at first invocation -static volatile uint64_t previousShaftEventTime = (efitimems_t) -10 * US_PER_SECOND; +static volatile uint64_t previousShaftEventTimeNt = (efitimems_t) -10 * US2NT(US_PER_SECOND_LL); TriggerCentral triggerCentral; @@ -98,12 +98,13 @@ static void reportEventToWaveChart(trigger_event_e ckpSignalType, int index) { void TriggerCentral::handleShaftSignal(Engine *engine, trigger_event_e signal) { efiAssertVoid(engine!=NULL, "configuration"); - uint64_t nowUs = getTimeNowUs(); + uint64_t nowNt = getTimeNowNt(); + uint64_t nowUs = NT2US(nowNt); efiAssertVoid(engine->engineConfiguration!=NULL, "engineConfiguration"); efiAssertVoid(engine->engineConfiguration2!=NULL, "engineConfiguration2"); - engine->onTriggerEvent(nowUs); + engine->onTriggerEvent(nowNt); #if EFI_HISTOGRAMS && EFI_PROD_CODE int beforeCallback = hal_lld_get_counter_value(); @@ -112,14 +113,14 @@ void TriggerCentral::handleShaftSignal(Engine *engine, trigger_event_e signal) { efiAssertVoid(eventIndex >= 0 && eventIndex < HW_EVENT_TYPES, "signal type"); hwEventCounters[eventIndex]++; - if (nowUs - previousShaftEventTime > US_PER_SECOND) { + if (nowNt - previousShaftEventTimeNt > US2NT(US_PER_SECOND_LL)) { /** * We are here if there is a time gap between now and previous shaft event - that means the engine is not runnig. * That means we have lost synchronization since the engine is not running :) */ triggerState.shaft_is_synchronized = false; } - previousShaftEventTime = nowUs; + previousShaftEventTimeNt = nowNt; trigger_shape_s * triggerShape = &engine->engineConfiguration2->triggerShape; diff --git a/firmware/rusefi.cpp b/firmware/rusefi.cpp index a9d5eed41d..89d9cd48be 100644 --- a/firmware/rusefi.cpp +++ b/firmware/rusefi.cpp @@ -252,5 +252,5 @@ void firmwareError(const char *fmt, ...) { } int getRusEfiVersion(void) { - return 20141110; + return 20141111; }