nicer ETB properties change

This commit is contained in:
rusEfi 2017-05-30 21:56:56 -04:00
parent 206658663c
commit 79ceb0420d
3 changed files with 18 additions and 2 deletions

View File

@ -184,6 +184,16 @@ void setDefaultEtbParameters(void) {
engineConfiguration->etbFreq = 300; 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) { void stopETBPins(void) {
unmarkPin(activeConfiguration.bc.etbControlPin1); unmarkPin(activeConfiguration.bc.etbControlPin1);
unmarkPin(activeConfiguration.bc.etbControlPin2); unmarkPin(activeConfiguration.bc.etbControlPin2);

View File

@ -13,6 +13,7 @@ void initElectronicThrottle(void);
void setDefaultEtbParameters(void); void setDefaultEtbParameters(void);
void setEtbPFactor(float value); void setEtbPFactor(float value);
void setEtbIFactor(float value); void setEtbIFactor(float value);
bool isETBRestartNeeded(void);
void stopETBPins(void); void stopETBPins(void);
void startETBPins(void); void startETBPins(void);
void onConfigurationChangeElectronicThrottleCallback(engine_configuration_s *previousConfiguration); void onConfigurationChangeElectronicThrottleCallback(engine_configuration_s *previousConfiguration);

View File

@ -234,7 +234,10 @@ void applyNewHardwareSettings(void) {
stopInjectionPins(); stopInjectionPins();
stopIgnitionPins(); stopIgnitionPins();
stopCanPins(); stopCanPins();
stopETBPins(); bool etbRestartNeeded = isETBRestartNeeded();
if (etbRestartNeeded) {
stopETBPins();
}
stopVSSPins(); stopVSSPins();
stopAuxPins(); stopAuxPins();
@ -293,7 +296,9 @@ void applyNewHardwareSettings(void) {
startInjectionPins(); startInjectionPins();
startIgnitionPins(); startIgnitionPins();
startCanPins(); startCanPins();
startETBPins(); if (etbRestartNeeded) {
startETBPins();
}
startVSSPins(); startVSSPins();
startAuxPins(); startAuxPins();