diff --git a/firmware/controllers/algo/algo.cpp b/firmware/controllers/algo/algo.cpp index 9db0a03aec..46f7d38050 100644 --- a/firmware/controllers/algo/algo.cpp +++ b/firmware/controllers/algo/algo.cpp @@ -41,8 +41,4 @@ void initAlgo(Logging *sharedLogger, engine_configuration_s *engineConfiguration // todo: this is a mess, remove code duplication with PROD initSettings(engineConfiguration); #endif - -#if EFI_PROD_CODE || EFI_SIMULATOR - initSignalExecutor(); -#endif } diff --git a/firmware/controllers/engine_controller.cpp b/firmware/controllers/engine_controller.cpp index f510a15afc..6dd077fef5 100644 --- a/firmware/controllers/engine_controller.cpp +++ b/firmware/controllers/engine_controller.cpp @@ -488,6 +488,9 @@ void commonInitEngineController(Logging *sharedLogger DECLARE_ENGINE_PARAMETER_S void initEngineContoller(Logging *sharedLogger DECLARE_ENGINE_PARAMETER_S) { addConsoleAction("analoginfo", printAnalogInfo); +#if EFI_PROD_CODE || EFI_SIMULATOR + initSignalExecutor(); +#endif commonInitEngineController(sharedLogger); if (hasFirmwareError()) { diff --git a/firmware/hw_layer/microsecond_timer.cpp b/firmware/hw_layer/microsecond_timer.cpp index f50b6be4de..d91ab01a5e 100644 --- a/firmware/hw_layer/microsecond_timer.cpp +++ b/firmware/hw_layer/microsecond_timer.cpp @@ -37,6 +37,8 @@ static const char * msg; static char buff[32]; +extern bool hasFirmwareErrorFlag; + /** * sets the alarm to the specified number of microseconds from now. * This function should be invoked under kernel lock which would disable interrupts. @@ -49,6 +51,9 @@ void setHardwareUsTimer(int32_t timeUs) { if (GPTDEVICE.state == GPT_ONESHOT) gptStopTimerI(&GPTDEVICE); + efiAssertVoid(GPTDEVICE.state == GPT_READY, "hw timer"); + if (hasFirmwareError()) + return; gptStartOneShotI(&GPTDEVICE, timeUs); lastSetTimerTimeNt = getTimeNowNt();