diff --git a/corrections.ino b/corrections.ino index 0457a1a4..84efb54a 100644 --- a/corrections.ino +++ b/corrections.ino @@ -22,6 +22,8 @@ byte correctionsTotal() if (currentStatus.wueCorrection != 100) { sumCorrections = div((sumCorrections * currentStatus.wueCorrection), 100).quot; } result = correctionASE(); if (result != 100) { sumCorrections = div((sumCorrections * result), 100).quot; } + result = correctionCranking(); + if (result != 100) { sumCorrections = div((sumCorrections * result), 100).quot; } currentStatus.TAEamount = correctionAccel(); if (currentStatus.TAEamount != 100) { sumCorrections = div((sumCorrections * currentStatus.TAEamount), 100).quot; } result = correctionFloodClear(); @@ -44,6 +46,16 @@ byte correctionWUE() return table2D_getValue(WUETable, currentStatus.coolant + CALIBRATION_TEMPERATURE_OFFSET); } +/* +Cranking Enrichment +Additional fuel % to be added when the engine is cranking +*/ +byte correctionCranking() +{ + if ( BIT_CHECK(currentStatus.engine, BIT_ENGINE_CRANK) ) { return 100 + configPage1.crankingPct; } + else { return 100; } +} + /* After Start Enrichment This is a short period (Usually <20 seconds) immediately after the engine first fires (But not when cranking) @@ -51,8 +63,10 @@ where an additional amount of fuel is added (Over and above the WUE amount) */ byte correctionASE() { - - if (currentStatus.runSecs < configPage1.aseCount) + //Two checks are requiredL: + //1) Is the negine run time less than the configured ase time + //2) Make sure we're not still cranking + if ( (currentStatus.runSecs < configPage1.aseCount) && !(BIT_CHECK(currentStatus.engine, BIT_ENGINE_CRANK)) ) { BIT_SET(currentStatus.engine, BIT_ENGINE_ASE); //Mark ASE as active. return 100 + configPage1.asePct; @@ -60,8 +74,6 @@ byte correctionASE() BIT_CLEAR(currentStatus.engine, BIT_ENGINE_ASE); //Mark ASE as inactive. return 100; - - } /* diff --git a/globals.h b/globals.h index 850156bd..09b56875 100644 --- a/globals.h +++ b/globals.h @@ -89,7 +89,10 @@ struct config1 { byte asePct; //Afterstart enrichment (%) byte aseCount; //Afterstart enrichment cycles. This is the number of ignition cycles that the afterstart enrichment % lasts for byte wueValues[10]; //Warm up enrichment array (10 bytes) - byte taeBins[4]; //TPS based acceleration enrichment bin 1 of 4 (ms) + byte crankingPct; //Cranking enrichment + byte unused95; + byte unused96; + byte unused97; byte taeColdA; byte tpsThresh; byte taeTime; diff --git a/reference/speeduino 0.2.ini b/reference/speeduino 0.2.ini index 35341049..d3020f5d 100644 --- a/reference/speeduino 0.2.ini +++ b/reference/speeduino 0.2.ini @@ -90,7 +90,7 @@ page = 1 asePct = scalar, U08, 82, "%", 1.0, 0.0, 0.0, 95.0, 0 aseCount = scalar, U08, 83, "s", 1.0, 0.0, 0.0, 255, 0 wueBins = array, U08, 84, [ 10], "%", 1.0, 0.0, 0.0, 255, 0 - unused94 = scalar, U08, 94, "ms", 0.1, 0.0, 0.0, 25.5, 1 + crankingPct= scalar, U08, 94, "%", 1.0, 0.0, 0.0, 255, 0 unused95 = scalar, U08, 95, "ms", 0.1, 0.0, 0.0, 25.5, 1 unused96 = scalar, U08, 96, "ms", 0.1, 0.0, 0.0, 25.5, 1 unused97 = scalar, U08, 97, "ms", 0.1, 0.0, 0.0, 25.5, 1 @@ -427,8 +427,7 @@ page = 3 field = "Pulsewidth at -40°C", crankCold field = "Pulsewidth at 77°C", crankHot field = "" - field = "Cranking Enrichment %", asePct - field = "Number of seconds to run", aseCount + field = "Cranking Enrichment %", crankingPct #else field = "Cranking RPM (Max)", crankRPM field = "Flood Clear level", tpsflood @@ -437,8 +436,7 @@ page = 3 field = "Pulsewidth at -40°F", crankCold field = "Pulsewidth at 170°F", crankHot field = "" - field = "Cranking Enrichment %", asePct - field = "Number of seconds to run", aseCount + field = "Cranking Enrichment %", crankingPct #endif dialog = aseSettings, "Afterstart Enrichment" @@ -775,7 +773,7 @@ help = helpEnrichments, "Enrichments Help" indicator = { mapaccaen }, "MAP Accel", "MAP Accel", white, black, green, black indicator = { tpsaccden }, "TPS Decel", "TPS Decel", white, black, green, black indicator = { mapaccden }, "MAP Decel", "MAP Decel", white, black, green, black - indicator = { tps > tpsflood }, "FLOOD OFF", "FLOOD CLEAR", white, black, red, black + indicator = { (tps > tpsflood) && (rpm < crankRPM) }, "FLOOD OFF", "FLOOD CLEAR", white, black, red, black ;-------------------------------------------------------------------------------