From 3705b7f8204afa67da414a5d44adeb364112f8f8 Mon Sep 17 00:00:00 2001 From: Andrey Gusakov Date: Sun, 30 Jun 2024 20:15:41 +0300 Subject: [PATCH] Get rid of knockDetectionWindowEnd that was used by HIP9011 only Use knockSamplingDuration instead --- firmware/controllers/algo/engine_configuration.cpp | 7 +------ firmware/hw_layer/sensors/hip9011.cpp | 4 ++-- firmware/hw_layer/sensors/hip9011_logic.cpp | 4 +--- firmware/hw_layer/sensors/hip9011_logic.h | 6 +++--- firmware/integration/rusefi_config.txt | 2 +- firmware/tunerstudio/tunerstudio.template.ini | 13 +++++++------ 6 files changed, 15 insertions(+), 21 deletions(-) diff --git a/firmware/controllers/algo/engine_configuration.cpp b/firmware/controllers/algo/engine_configuration.cpp index b9cd880238..1e5ef3445e 100644 --- a/firmware/controllers/algo/engine_configuration.cpp +++ b/firmware/controllers/algo/engine_configuration.cpp @@ -331,6 +331,7 @@ static void setDefaultBoostOpenLoopParameters() { static void setDefaultEngineNoiseTable() { setRpmTableBin(config->knockNoiseRpmBins); + engineConfiguration->knockDetectionWindowStart = 15.0 + 5.0; engineConfiguration->knockSamplingDuration = 45; setArrayValues(config->knockBaseNoise, -20); @@ -600,12 +601,6 @@ static void setDefaultEngineConfiguration() { engineConfiguration->nitrousDeactivationRpm = engine_configuration_defaults::NITROUS_DEACTIVATION_RPM; engineConfiguration->nitrousDeactivationRpmWindow = engine_configuration_defaults::NITROUS_DEACTIVATION_RPM_WINDOW; - /* these two are used for HIP9011 only - * Currently this is offset from fire event, not TDC */ - /* TODO: convert to offset from TDC */ - engineConfiguration->knockDetectionWindowStart = 15.0 + 5.0; - engineConfiguration->knockDetectionWindowEnd = 15.0 + 45.0; - engineConfiguration->triggerSimulatorRpm = DEFAULT_SELT_STIM_RPM; engineConfiguration->simulatorCamPosition[0] = DEFAULT_SELT_STIM_VVT0; diff --git a/firmware/hw_layer/sensors/hip9011.cpp b/firmware/hw_layer/sensors/hip9011.cpp index 63a629643e..95ba0b7b2d 100644 --- a/firmware/hw_layer/sensors/hip9011.cpp +++ b/firmware/hw_layer/sensors/hip9011.cpp @@ -303,7 +303,7 @@ void hip9011_onFireEvent(uint8_t cylinderNumber, efitick_t nowNt) { { startIntegration, &instance }); scheduleByAngle(&hardware.endTimer, nowNt, - engineConfiguration->knockDetectionWindowEnd, + engineConfiguration->knockDetectionWindowStart + engineConfiguration->knockSamplingDuration, { endIntegration, &instance }); } else { #if EFI_HIP_9011_DEBUG @@ -658,7 +658,7 @@ static void showHipInfo() { efiPrintf(" Window start %.2f end %.2f", engineConfiguration->knockDetectionWindowStart, - engineConfiguration->knockDetectionWindowEnd); + engineConfiguration->knockDetectionWindowStart + engineConfiguration->knockSamplingDuration); if (!instance.adv_mode) { efiPrintf(" Adc input %d (%.2f V)", diff --git a/firmware/hw_layer/sensors/hip9011_logic.cpp b/firmware/hw_layer/sensors/hip9011_logic.cpp index 7e12d1d753..ba5b4e8bef 100644 --- a/firmware/hw_layer/sensors/hip9011_logic.cpp +++ b/firmware/hw_layer/sensors/hip9011_logic.cpp @@ -138,9 +138,7 @@ int HIP9011::getIntegrationIndexByRpm(float rpm) { } void HIP9011::setAngleWindowWidth(DEFINE_HIP_PARAMS) { - float new_angleWindowWidth = - GET_CONFIG_VALUE(knockDetectionWindowEnd) - - GET_CONFIG_VALUE(knockDetectionWindowStart); + float new_angleWindowWidth = GET_CONFIG_VALUE(knockSamplingDuration); if (new_angleWindowWidth < 0) { #if EFI_PROD_CODE warning(ObdCode::CUSTOM_KNOCK_WINDOW, "invalid knock window"); diff --git a/firmware/hw_layer/sensors/hip9011_logic.h b/firmware/hw_layer/sensors/hip9011_logic.h index caac0bf883..ac88cdf5fb 100644 --- a/firmware/hw_layer/sensors/hip9011_logic.h +++ b/firmware/hw_layer/sensors/hip9011_logic.h @@ -56,21 +56,21 @@ public: engineConfiguration->hip9011Gain, \ engineConfiguration->hip9011Prescaler, \ engineConfiguration->knockDetectionWindowStart, \ - engineConfiguration->knockDetectionWindowEnd + engineConfiguration->knockSamplingDuration #define FORWARD_HIP_PARAMS \ cylinderBore, \ hip9011Gain, \ hip9011Prescaler, \ knockDetectionWindowStart, \ - knockDetectionWindowEnd + knockSamplingDuration #define DEFINE_HIP_PARAMS \ float cylinderBore, \ float hip9011Gain, \ uint8_t hip9011Prescaler, \ float knockDetectionWindowStart, \ - float knockDetectionWindowEnd + float knockSamplingDuration #define GET_CONFIG_VALUE(x) x diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index 9eb878fb57..4a7efca780 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -1130,7 +1130,7 @@ bit watchOutForLinearTime int16_t warningPeriod;set warningPeriod X;"seconds", 1, 0, 0, 60, 0 float knockDetectionWindowStart;;"angle", 1, 0, -1000, 1000, 2 - float knockDetectionWindowEnd;;"angle", 1, 0, -1000, 1000, 2 + uint32_t unusedKnockWindow float idleStepperReactionTime;;"ms", 1, 0, 1, 300, 0 diff --git a/firmware/tunerstudio/tunerstudio.template.ini b/firmware/tunerstudio/tunerstudio.template.ini index a126c28b78..7d4a4ae3be 100644 --- a/firmware/tunerstudio/tunerstudio.template.ini +++ b/firmware/tunerstudio/tunerstudio.template.ini @@ -4093,7 +4093,7 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_ panel = knockThresholdCurve, Center ; Engine->hip9011 Settings - dialog = hipHardware + dialog = hipHardware, "HIP9011 hardware settings" field = "SPI device", hip9011SpiDevice, {isHip9011Enabled == 1} field = "ChipSelect pin", hip9011CsPin, {isHip9011Enabled == 1} field = "ChipSelect mode", hip9011CsPinMode, {isHip9011Enabled == 1} @@ -4101,13 +4101,14 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_ field = "IntHold pin mode", hip9011IntHoldPinMode, {isHip9011Enabled == 1} field = "hip Output/stm input", hipOutputChannel, {isHip9011Enabled == 1} - dialog = hipSettings + dialog = hipSettings, "HIP9011 software settings" field = "prescaler", hip9011Prescaler, {isHip9011Enabled == 1} - field = "knockDetectionWindowStart", knockDetectionWindowStart, {isHip9011Enabled == 1} - field = "knockDetectionWindowEnd", knockDetectionWindowEnd, {isHip9011Enabled == 1} - field = "Cylinder bore", cylinderBore, {isHip9011Enabled == 1} - dialog = hipCurve, "Knock threshold" + dialog = hipCurve, "Knock sensing" + field = "Cylinder bore", cylinderBore + field = "Band Freq override", knockBandCustom + field = "knockDetectionWindowStart", knockDetectionWindowStart + field = "knockSamplingDuration", knockSamplingDuration panel = knockThresholdCurve dialog = hipFunction, "HIP9011 Settings (knock decoder)"