From 5cb6cad9b9156443f59f1e289e409fc74d4df9be Mon Sep 17 00:00:00 2001 From: rusEfi Date: Tue, 30 May 2017 21:56:56 -0400 Subject: [PATCH] nicer ETB properties change --- firmware/controllers/electronic_throttle.cpp | 10 ++++++++++ firmware/controllers/electronic_throttle.h | 1 + firmware/hw_layer/hardware.cpp | 9 +++++++-- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/firmware/controllers/electronic_throttle.cpp b/firmware/controllers/electronic_throttle.cpp index a173ffb0a8..6975bc48a7 100644 --- a/firmware/controllers/electronic_throttle.cpp +++ b/firmware/controllers/electronic_throttle.cpp @@ -184,6 +184,16 @@ void setDefaultEtbParameters(void) { engineConfiguration->etbFreq = 300; } +bool isETBRestartNeeded(void) { + /** + * We do not want any interruption in HW pin while adjusting other properties + */ + return engineConfiguration->bc.etbControlPin1 != activeConfiguration.bc.etbControlPin1 || + engineConfiguration->bc.etbControlPin2 != activeConfiguration.bc.etbControlPin2 || + engineConfiguration->bc.etbDirectionPin1 != activeConfiguration.bc.etbDirectionPin1 || + engineConfiguration->bc.etbDirectionPin2 != activeConfiguration.bc.etbDirectionPin2; +} + void stopETBPins(void) { unmarkPin(activeConfiguration.bc.etbControlPin1); unmarkPin(activeConfiguration.bc.etbControlPin2); diff --git a/firmware/controllers/electronic_throttle.h b/firmware/controllers/electronic_throttle.h index 3605929ca3..666be69cde 100644 --- a/firmware/controllers/electronic_throttle.h +++ b/firmware/controllers/electronic_throttle.h @@ -13,6 +13,7 @@ void initElectronicThrottle(void); void setDefaultEtbParameters(void); void setEtbPFactor(float value); void setEtbIFactor(float value); +bool isETBRestartNeeded(void); void stopETBPins(void); void startETBPins(void); void onConfigurationChangeElectronicThrottleCallback(engine_configuration_s *previousConfiguration); diff --git a/firmware/hw_layer/hardware.cpp b/firmware/hw_layer/hardware.cpp index 719c07e14c..7f46721897 100644 --- a/firmware/hw_layer/hardware.cpp +++ b/firmware/hw_layer/hardware.cpp @@ -234,7 +234,10 @@ void applyNewHardwareSettings(void) { stopInjectionPins(); stopIgnitionPins(); stopCanPins(); - stopETBPins(); + bool etbRestartNeeded = isETBRestartNeeded(); + if (etbRestartNeeded) { + stopETBPins(); + } stopVSSPins(); stopAuxPins(); @@ -293,7 +296,9 @@ void applyNewHardwareSettings(void) { startInjectionPins(); startIgnitionPins(); startCanPins(); - startETBPins(); + if (etbRestartNeeded) { + startETBPins(); + } startVSSPins(); startAuxPins();