diff --git a/firmware/config/boards/Prometheus/board_configuration.cpp b/firmware/config/boards/Prometheus/board_configuration.cpp index b070a25f65..b7f2623a95 100644 --- a/firmware/config/boards/Prometheus/board_configuration.cpp +++ b/firmware/config/boards/Prometheus/board_configuration.cpp @@ -171,7 +171,7 @@ void setBoardConfigurationOverrides(void) { engineConfiguration->communicationLedPin = GPIO_UNASSIGNED;// GPIOA_13; // yellow LED engineConfiguration->runningLedPin = GPIOA_13; //GPIOA_13; // yellow LED - engineConfiguration->fatalErrorLedPin = GPIOA_13; + engineConfiguration->fatalErrorPin = GPIOA_13; engineConfiguration->warninigLedPin = GPIO_UNASSIGNED; engineConfiguration->configResetPin = GPIO_UNASSIGNED; diff --git a/firmware/hw_layer/sensors/CJ125.cpp b/firmware/hw_layer/sensors/CJ125.cpp index d206a46e02..d066e05707 100644 --- a/firmware/hw_layer/sensors/CJ125.cpp +++ b/firmware/hw_layer/sensors/CJ125.cpp @@ -23,7 +23,7 @@ #include "backup_ram.h" -#define CJ125_DEBUG +//#define CJ125_DEBUG //#define CJ125_DEBUG_SPI EXTERN_ENGINE; @@ -525,7 +525,7 @@ static bool cjCheckConfig(void) { static void cjStartCalibration(void) { if (!cjCheckConfig()) return; - if (state != CJ125_IDLE) { + if (cjIsWorkingState()) { // todo: change this later for the normal thread operation (auto pre-heating) scheduleMsg(logger, "cj125: Cannot start calibration. Please restart the board and make sure that your sensor is not heating"); return; diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index cc3d6115d8..dbf1efeaa7 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -89,6 +89,7 @@ struct_no_prefix engine_configuration_s #define CRANKING_CURVE_SIZE 8 #define IGN_LOAD_COUNT 16 +#define IGN_TPS_COUNT 16 #define IGN_RPM_COUNT 16 #define INJECTION_PIN_COUNT 12 @@ -132,6 +133,7 @@ custom baro_corr_table_t 64 array, F32, @OFFSET@, [@@BARO_CORR_SIZE@@x@@BARO ! please note that 1024 here is 4 * IGN_LOAD_COUNT * IGN_RPM_COUNT custom ignition_table_t 1024 array, F32, @OFFSET@, [16x16],"deg", 1, 0, -20, 90, 2 +custom ignition_tps_table_t 512 array, S16, @OFFSET@, [16x16],"deg", 0.01, 0, -20, 90, 2 custom angle_table_t 1024 array, F32, @OFFSET@, [16x16],"deg", 1, 0, -720, 720, 2 @@ -690,7 +692,7 @@ custom idle_mode_e 4 bits, U32, @OFFSET@, [0:0], "Automatic", "Manual" bit useFixedBaroCorrFromMap bit useSeparateAdvanceForCranking bit useAdvanceCorrectionsForCranking -bit unused_1484_bit_19 +bit useTPSAdvanceTable bit unused_1484_bit_20 bit unused_1484_bit_21 @@ -908,8 +910,21 @@ float[CRANKING_ADVANCE_CURVE_SIZE] crankingAdvance ;Optional timing advance t float[CLT_CURVE_SIZE] iacCoastingBins;CLT-based idle position for coasting (used in Auto-PID Idle mode);"C", 1, 0, -100.0, 250.0, 2 float[CLT_CURVE_SIZE] iacCoasting; CLT-based idle position for coasting (used in Auto-PID Idle mode);"%", 1, 0, 0.0, 100.0, 2 + +ignition_tps_table_t ignitionTpsTable; +float[IGN_TPS_COUNT] ignitionTpsBins;;"TPS", 1, 0.0, 0, 100.0, 2 + +float tChargeAirCoefMin;;"Min tCharge Coeff.", 1, 0, 0.0, 1.0, 4 +float tChargeAirCoefMax;;"Max tCharge Coeff.", 1, 0, 0.0, 1.0, 4 +float tChargeAirFlowMax;;"Max Air Flow, kg/h", 1, 0, 0.0, 1000.0, 1 +float tChargeAirIncrLimit;;"tChange Increment Limit, deg/sec", 1, 0, 0.0, 100.0, 1 +float tChargeAirDecrLimit;;"tChange Decrement Limit, deg/sec", 1, 0, 0.0, 100.0, 1 + +#define tChargeMode_e_enum "RPM+TPS (Default)", "Air Mass Interpolation" +custom tChargeMode_e 4 bits, U32, @OFFSET@, [0:0], @@tChargeMode_e_enum@@ +tChargeMode_e tChargeMode; - int[741] unusedEnd; + int[591] unusedEnd; end_struct diff --git a/firmware/tunerstudio/rusefi.input b/firmware/tunerstudio/rusefi.input index d89f049b9a..0f65eda0e7 100644 --- a/firmware/tunerstudio/rusefi.input +++ b/firmware/tunerstudio/rusefi.input @@ -636,6 +636,15 @@ fileVersion = { 20171101 } gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = ignitionTpsTableTbl, ignitionTableMap, "Ignition TPS Table", 1 + ; constant, variable + xBins = ignitionRpmBins, RPMValue + yBins = ignitionTpsBins, TPSValue + + zBins = ignitionTpsTable + gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. + upDownLabel = "(RICHER)", "(LEANER)" + table = ignitionIatCorrTableTbl, ignitionIatCorrTableMap, "Ignition Intake Air Temp correction", 1 ; constant, variable xBins = ignitionIatCorrRpmBins, RPMValue @@ -1009,7 +1018,8 @@ menuDialog = main subMenu = dwellSettings, "Dwell time" subMenu = ignitionCylExtra, "Ignition Cylinder Extra" subMenu = std_separator - subMenu = ignitionTableTbl, "Ignition Advance Table" + subMenu = ignitionTableTbl, "Ignition Advance Table", 0, {useTPSAdvanceTable == 0} + subMenu = ignitionTpsTableTbl, "Ignition Advance TPS-based Table", 0, {useTPSAdvanceTable == 1} subMenu = std_separator subMenu = cltTimingCorrCurve, "Warmup timing correction" subMenu = ignitionIatCorrTableTbl, "Ignition IAT correction Table" @@ -1181,7 +1191,7 @@ cmd_stop_engine = "w\x00\x99\x00\x00" panel = fuelTableGaugesPanel panel = fuelTableRight - dialog = tChargeSettings, "tCharge Settings" + dialog = tChargeRpmTpsSettings, "RPM+TPS Mode Settings" field = "We use these coefficients to approximate air/fuel charge temperate" field = "based on CLT and IAT, depending on RPM and TPM" field = "minRPM minTPS", tChargeMinRpmMinTps @@ -1189,6 +1199,22 @@ cmd_stop_engine = "w\x00\x99\x00\x00" field = "maxRPM minTPS", tChargeMaxRpmMinTps field = "maxRPM maxTPS", tChargeMaxRpmMaxTps + dialog = tChargeGeneralSettings, "" + field = "tCharge Mode", tChargeMode + field = "tChange Increment Limit, deg/sec", tChargeAirIncrLimit + field = "tChange Decrement Limit, deg/sec", tChargeAirDecrLimit + field = "" + + dialog = tChargeAirInterpSettings, "Air Interpolation Mode Settings" + field = "Min tCharge Coeff.", tChargeAirCoefMin + field = "Max tCharge Coeff.", tChargeAirCoefMax + field = "Max Air Flow, kg/h", tChargeAirFlowMax + + dialog = tChargeSettings, "tCharge Settings" + panel = tChargeGeneralSettings + panel = tChargeRpmTpsSettings, { tChargeMode == 0} + panel = tChargeAirInterpSettings, { tChargeMode == 1} + dialog = baseInjection, "General" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} @@ -1201,6 +1227,7 @@ cmd_stop_engine = "w\x00\x99\x00\x00" field = "#Wasted spark with individual coils" field = "Two wire wasted", twoWireBatchIgnition, {isIgnitionEnabled == 1 && ignitionMode == 2} field = "Timing Mode", timingMode, {isIgnitionEnabled == 1} + field = "Use TPS-based Advance Table", useTPSAdvanceTable, {isIgnitionEnabled == 1 && fuelAlgorithm == LM_SPEED_DENSITY} field = "#Use fixed timing while validating with a timing gun" field = "Fixed Timinig", fixedTiming, {isIgnitionEnabled == 1 && timingMode == 1} diff --git a/java_tools/enum_to_string/src/com/rusefi/EnumToString.java b/java_tools/enum_to_string/src/com/rusefi/EnumToString.java index 64e8463baa..9091e58389 100644 --- a/java_tools/enum_to_string/src/com/rusefi/EnumToString.java +++ b/java_tools/enum_to_string/src/com/rusefi/EnumToString.java @@ -65,7 +65,7 @@ public class EnumToString { System.out.println("Reading from " + inFileName); String simpleFileName = f.getName(); - result.append("#include \"main.h\"\r\n"); + result.append("#include \"global.h\"\r\n"); result.append("#include \"" + simpleFileName + "\"\r\n"); EnumToString.header.append("#include \"" + simpleFileName + "\"\r\n");