diff --git a/firmware/config/engines/mazda_miata_1_6.cpp b/firmware/config/engines/mazda_miata_1_6.cpp index 13e8de2da6..73578ca2a0 100644 --- a/firmware/config/engines/mazda_miata_1_6.cpp +++ b/firmware/config/engines/mazda_miata_1_6.cpp @@ -147,8 +147,12 @@ void setMiataNA6_MAP_Configuration(DECLARE_ENGINE_PARAMETER_SIGNATURE) { // chartsize 200 engineConfiguration->engineChartSize = 200; - // set cranking_fuel 5 - engineConfiguration->cranking.baseFuel = 5; + engineConfiguration->idleMode == IM_AUTO; + + // cold start works better with baseFuel = 8 + // maybe adjust CLT correction? + // set cranking_fuel 8 + engineConfiguration->cranking.baseFuel = 8; engineConfiguration->specs.displacement = 1.6; diff --git a/firmware/controllers/algo/engine_configuration.cpp b/firmware/controllers/algo/engine_configuration.cpp index 25c7a0c4d3..bf3e2a7958 100644 --- a/firmware/controllers/algo/engine_configuration.cpp +++ b/firmware/controllers/algo/engine_configuration.cpp @@ -818,8 +818,8 @@ void setDefaultConfiguration(DECLARE_ENGINE_PARAMETER_SIGNATURE) { engineConfiguration->idleRpmPid.pFactor = 0.05; engineConfiguration->idleRpmPid.iFactor = 0.002; - engineConfiguration->idleRpmPid.minValue = 5; - engineConfiguration->idleRpmPid.maxValue = 95; + engineConfiguration->idleRpmPid.minValue = 0.1; + engineConfiguration->idleRpmPid.maxValue = 99; boardConfiguration->idlePidDeactivationTpsThreshold = 2; boardConfiguration->idle.solenoidFrequency = 200; diff --git a/firmware/controllers/idle_thread.cpp b/firmware/controllers/idle_thread.cpp index 16eda7b506..f70d38a328 100644 --- a/firmware/controllers/idle_thread.cpp +++ b/firmware/controllers/idle_thread.cpp @@ -315,10 +315,13 @@ private: if (cisnan(clt)) cltCorrection = 1.0f; // Use separate CLT correction table for cranking - else if (engineConfiguration->overrideCrankingIacSetting && !isRunning) + else if (engineConfiguration->overrideCrankingIacSetting && !isRunning) { cltCorrection = interpolate2d("cltCrankingT", clt, config->cltCrankingCorrBins, config->cltCrankingCorr, CLT_CRANKING_CURVE_SIZE) / PERCENT_MULT; - else + } else { + // this value would be ignored if running in AUTO mode + // but we need it while cranking in AUTO mode cltCorrection = interpolate2d("cltT", clt, config->cltIdleCorrBins, config->cltIdleCorr, CLT_CURVE_SIZE) / PERCENT_MULT; + } percent_t iacPosition;