auto-sync

This commit is contained in:
rusEfi 2017-01-06 09:03:33 -05:00
parent d967f24d95
commit 3337b9a756
18 changed files with 95 additions and 58 deletions

View File

@ -26,7 +26,7 @@ void setCamaro4(DECLARE_ENGINE_PARAMETER_F) {
engineConfiguration->injectionMode = IM_BATCH;
engineConfiguration->twoWireBatchInjection = true;
// set_ignition_mode 2
// set ignition_mode 2
engineConfiguration->ignitionMode = IM_WASTED_SPARK;
setOperationMode(engineConfiguration, FOUR_STROKE_CRANK_SENSOR);

View File

@ -170,7 +170,7 @@ void setDodgeNeon1995EngineConfiguration(DECLARE_ENGINE_PARAMETER_F) {
// set_cranking_rpm 550
engineConfiguration->cranking.rpm = 550;
// set_cranking_fuel 5
// set cranking_fuel 5
engineConfiguration->cranking.baseFuel = 5;
// engineConfiguration->useOnlyRisingEdgeForTrigger = true;
@ -183,16 +183,16 @@ void setDodgeNeon1995EngineConfiguration(DECLARE_ENGINE_PARAMETER_F) {
setWholeFuelMap(9 PASS_ENGINE_PARAMETER);
setWholeTimingTable(12 PASS_ENGINE_PARAMETER);
// set_cranking_injection_mode 0
// set cranking_injection_mode 0
engineConfiguration->crankingInjectionMode = IM_SIMULTANEOUS;
// set_injection_mode 1
// set injection_mode 1
engineConfiguration->injectionMode = IM_SEQUENTIAL;
// this is needed for injector lag auto-tune research if switching to batch
// enable two_wire_batch_injection
engineConfiguration->twoWireBatchInjection = true;
// set_ignition_mode 2
// set ignition_mode 2
engineConfiguration->ignitionMode = IM_WASTED_SPARK;
// set_firing_order 2
engineConfiguration->specs.firingOrder = FO_1_3_4_2;
@ -208,9 +208,9 @@ void setDodgeNeon1995EngineConfiguration(DECLARE_ENGINE_PARAMETER_F) {
* that's 1995 config
*/
// set_cranking_charge_angle 70
// set cranking_charge_angle 70
engineConfiguration->crankingChargeAngle = 70;
// set_cranking_timing_angle 0
// set cranking_timing_angle 0
engineConfiguration->crankingTimingAngle = 0;
// Frankenstein: low side - out #1: PC14
@ -310,9 +310,9 @@ void setDodgeNeonNGCEngineConfiguration(DECLARE_ENGINE_PARAMETER_F) {
copyFuelTable(veDodgeNeon2003Table, config->veTable);
//setMap(config->veTable, 50);
// set_cranking_charge_angle 70
// set cranking_charge_angle 70
engineConfiguration->crankingChargeAngle = 70;
// set_cranking_timing_angle 710
// set cranking_timing_angle 710
engineConfiguration->crankingTimingAngle = -710;
/**

View File

@ -25,7 +25,7 @@ void setDodgeRam1996(DECLARE_ENGINE_PARAMETER_F) {
engineConfiguration->map.sensor.type = MT_DODGE_NEON_2003;
setAlgorithm(LM_SPEED_DENSITY PASS_ENGINE_PARAMETER);
// set_cranking_charge_angle 30
// set cranking_charge_angle 30
engineConfiguration->crankingChargeAngle = 30;
// set_whole_fuel_map 6
@ -60,7 +60,7 @@ void setDodgeRam1996(DECLARE_ENGINE_PARAMETER_F) {
engineConfiguration->engineChartSize = 450;
// set_cranking_fuel 7
// set cranking_fuel 7
engineConfiguration->cranking.baseFuel = 7;
// set_global_trigger_offset_angle -50

View File

@ -109,9 +109,9 @@ void setFordAspireEngineConfiguration(DECLARE_ENGINE_PARAMETER_F) {
setDefaultAspireMaps(PASS_ENGINE_PARAMETER_F);
// set_cranking_rpm 550
engineConfiguration->cranking.rpm = 550;
// set_cranking_charge_angle 70
// set cranking_charge_angle 70
engineConfiguration->crankingChargeAngle = 70;
// set_cranking_timing_angle 37
// set cranking_timing_angle 37
engineConfiguration->crankingTimingAngle = -37;
setSingleCoilDwell(engineConfiguration);

View File

@ -139,10 +139,10 @@ void setFordEscortGt(DECLARE_ENGINE_PARAMETER_F) {
engineConfiguration->extraInjectionOffset = 0;
// todo: change to 15?
// set_cranking_timing_angle 3
// set cranking_timing_angle 3
engineConfiguration->crankingTimingAngle = 3;
engineConfiguration->crankingChargeAngle = 70;
// set_cranking_fuel 9
// set cranking_fuel 9
engineConfiguration->cranking.baseFuel = 9;
setTableBin2(config->ignitionLoadBins, IGN_LOAD_COUNT, 20, 105, 5);

View File

@ -37,9 +37,9 @@ static void setHondaAccordConfigurationCommon(DECLARE_ENGINE_PARAMETER_F) {
engineConfiguration->map.sensor.type = MT_DENSO183;
boardConfiguration->isFastAdcEnabled = true;
// set_ignition_mode 0
// set ignition_mode 0
engineConfiguration->ignitionMode = IM_ONE_COIL;
// set_injection_mode
// set injection_mode
engineConfiguration->injectionMode = IM_BATCH;
engineConfiguration->idleMode = IM_MANUAL;
@ -68,9 +68,9 @@ static void setHondaAccordConfigurationCommon(DECLARE_ENGINE_PARAMETER_F) {
setCommonNTCSensor(&engineConfiguration->iat);
engineConfiguration->iat.config.bias_resistor = 1500; // same as OEM ECU
// set_cranking_charge_angle 35
// set cranking_charge_angle 35
engineConfiguration->crankingChargeAngle = 70;
// set_cranking_timing_angle 0
// set cranking_timing_angle 0
engineConfiguration->crankingTimingAngle = -45;
// set_global_trigger_offset_angle 34

View File

@ -47,14 +47,14 @@ void setMazda626EngineConfiguration(DECLARE_ENGINE_PARAMETER_F) {
// set_global_trigger_offset_angle 106
engineConfiguration->globalTriggerAngleOffset = 106;
// set_ignition_mode 2
// set ignition_mode 2
engineConfiguration->ignitionMode = IM_WASTED_SPARK;
// set_cranking_timing_angle 15
// set cranking_timing_angle 15
engineConfiguration->crankingTimingAngle = 8;
engineConfiguration->crankingChargeAngle = 70;
// set_cranking_fuel 9
// set cranking_fuel 9
engineConfiguration->cranking.baseFuel = 2.5;
engineConfiguration->rpmHardLimit = 7400;

View File

@ -121,7 +121,7 @@ static const ignition_table_t miata_maf_advance_table = { {/*0 engineLoad=1.200
static void setDefaultCrankingFuel(engine_configuration_s *engineConfiguration) {
// todo: set cranking parameters method based on injectors and displacement?
// set_cranking_fuel 5
// set cranking_fuel 5
engineConfiguration->cranking.baseFuel = 5;
}
@ -174,9 +174,9 @@ void common079721_2351(engine_configuration_s *engineConfiguration, board_config
boardConfiguration->fuelPumpPin = GPIO_UNASSIGNED; // fuel pump is not controlled by ECU on this engine
// set_cranking_injection_mode 0
// set cranking_injection_mode 0
engineConfiguration->crankingInjectionMode = IM_SIMULTANEOUS;
// set_injection_mode 2
// set injection_mode 2
engineConfiguration->injectionMode = IM_BATCH;
// Frankenstein analog input #1: adc1
@ -235,7 +235,7 @@ static void setMiata1994_common(DECLARE_ENGINE_PARAMETER_F) {
commonMiataNa(PASS_ENGINE_PARAMETER_F);
engineConfiguration->specs.displacement = 1.839;
// set_cranking_timing_angle 0
// set cranking_timing_angle 0
engineConfiguration->crankingTimingAngle = 0;
engineConfiguration->crankingChargeAngle = 70;

View File

@ -127,13 +127,13 @@ void setMiataNA_1_6_Configuration(DECLARE_ENGINE_PARAMETER_F) {
engineConfiguration->injector.flow = 230;
// set_cranking_timing_angle 10
// set cranking_timing_angle 10
engineConfiguration->crankingTimingAngle = 10;
// chartsize 200
engineConfiguration->engineChartSize = 200;
// set_cranking_fuel 5
// set cranking_fuel 5
engineConfiguration->cranking.baseFuel = 5;
engineConfiguration->trigger.type = TT_MAZDA_MIATA_NA;

View File

@ -23,11 +23,11 @@ void setMazdaMiataNb1EngineConfiguration(DECLARE_ENGINE_PARAMETER_F) {
engineConfiguration->trigger.type = TT_MAZDA_MIATA_NB1;
// set_cranking_injection_mode 0
// set cranking_injection_mode 0
engineConfiguration->crankingInjectionMode = IM_SIMULTANEOUS;
// set_injection_mode 1
// set injection_mode 1
engineConfiguration->injectionMode = IM_SEQUENTIAL;
// set_ignition_mode 2
// set ignition_mode 2
engineConfiguration->ignitionMode = IM_WASTED_SPARK;
// set_firing_order 2
engineConfiguration->specs.firingOrder = FO_1_3_4_2;

View File

@ -118,9 +118,9 @@ void setMazdaMiata2003EngineConfiguration(DECLARE_ENGINE_PARAMETER_F) {
engineConfiguration->isPrintTriggerSynchDetails = false;
// todo: change to 15?
// set_cranking_timing_angle 0
// set cranking_timing_angle 0
engineConfiguration->crankingTimingAngle = 3;
// set_cranking_fuel 9
// set cranking_fuel 9
engineConfiguration->cranking.baseFuel = 9;
boardConfiguration->ignitionPins[0] = GPIOE_14;

View File

@ -23,7 +23,7 @@ void setMitsubishiConfiguration(DECLARE_ENGINE_PARAMETER_F) {
engineConfiguration->specs.cylindersCount = 4;
engineConfiguration->specs.displacement = 1.800;
// set_ignition_mode 2
// set ignition_mode 2
engineConfiguration->ignitionMode = IM_WASTED_SPARK;
engineConfiguration->specs.firingOrder = FO_1_3_4_2;
@ -32,15 +32,15 @@ void setMitsubishiConfiguration(DECLARE_ENGINE_PARAMETER_F) {
// set_cranking_rpm 550
engineConfiguration->cranking.rpm = 550;
// set_cranking_charge_angle 70
// set cranking_charge_angle 70
engineConfiguration->crankingChargeAngle = 70;
// set_cranking_timing_angle 715
// set cranking_timing_angle 715
engineConfiguration->crankingTimingAngle = -715;
// set_whole_fuel_map 3
setWholeFuelMap(3 PASS_ENGINE_PARAMETER);
// set_cranking_fuel 4
// set cranking_fuel 4
engineConfiguration->cranking.baseFuel = 4;
// /**

View File

@ -45,12 +45,12 @@ void setRoverv8(DECLARE_ENGINE_PARAMETER_F) {
// set_whole_fuel_map 3
setWholeFuelMap(3 PASS_ENGINE_PARAMETER);
// set_cranking_injection_mode 0
// set cranking_injection_mode 0
engineConfiguration->crankingInjectionMode = IM_SIMULTANEOUS;
// set_injection_mode 1
// set injection_mode 1
engineConfiguration->injectionMode = IM_SEQUENTIAL;
// set_ignition_mode 2
// set ignition_mode 2
engineConfiguration->ignitionMode = IM_WASTED_SPARK;
// set_ignition_channels

View File

@ -29,7 +29,7 @@ static void common2jz(DECLARE_ENGINE_PARAMETER_F) {
engineConfiguration->specs.displacement = 3.0;
engineConfiguration->specs.cylindersCount = 6;
engineConfiguration->specs.firingOrder = FO_1_5_3_6_2_4;
// set_ignition_mode 1
// set ignition_mode 1
engineConfiguration->ignitionMode = IM_INDIVIDUAL_COILS;
boardConfiguration->ignitionPins[0] = GPIOE_14;

View File

@ -20,7 +20,7 @@ void setVwAba(DECLARE_ENGINE_PARAMETER_F) {
setWholeTimingTable(20 PASS_ENGINE_PARAMETER);
engineConfiguration->cranking.baseFuel = 12;
// set_cranking_timing_angle 10
// set cranking_timing_angle 10
engineConfiguration->crankingTimingAngle = 10;
engineConfiguration->isCylinderCleanupEnabled = true;

View File

@ -953,10 +953,38 @@ static void getValue(const char *paramStr) {
#endif
}
typedef struct {
const char *token;
VoidInt callback;
} command_i_s;
command_i_s commandsI[] = {{"ignition_mode", setIgnitionMode},
{"cranking_rpm", setCrankingRpm},
{"cranking_injection_mode", setCrankingInjectionMode},
{"injection_mode", setInjectionMode},
// {"", },
// {"", },
// {"", },
// {"", },
// {"", },
// {"", },
// {"", },
};
static void setValue(const char *paramStr, const char *valueStr) {
float valueF = atoff(valueStr);
int valueI = atoi(valueStr);
command_i_s *current = &commandsI[0];
while (current < commandsI + sizeof(commandsI)/sizeof(commandsI[0])) {
if (strEqualCaseInsensitive(paramStr, current->token)) {
current->callback(valueI);
return;
}
current++;
}
if (strEqualCaseInsensitive(paramStr, "vsscoeff")) {
engineConfiguration->vehicleSpeedCoef = valueF;
#if EFI_PROD_CODE || defined(__DOXYGEN__)
@ -970,8 +998,20 @@ static void setValue(const char *paramStr, const char *valueStr) {
} else if (strEqualCaseInsensitive(paramStr, "alt_p")) {
setAltPFactor(valueF);
#endif
// } else if (strEqualCaseInsensitive(paramStr, "cranking_rpm")) {
// } else if (strEqualCaseInsensitive(paramStr, "cranking_rpm")) {
// } else if (strEqualCaseInsensitive(paramStr, "cranking_rpm")) {
// } else if (strEqualCaseInsensitive(paramStr, "cranking_rpm")) {
// } else if (strEqualCaseInsensitive(paramStr, "cranking_rpm")) {
// } else if (strEqualCaseInsensitive(paramStr, "cranking_rpm")) {
} else if (strEqualCaseInsensitive(paramStr, "warningPeriod")) {
engineConfiguration->warningPeriod = valueI;
} else if (strEqualCaseInsensitive(paramStr, "cranking_fuel")) {
setCrankingFuel(valueF);
} else if (strEqualCaseInsensitive(paramStr, "cranking_timing_angle")) {
setCrankingTimingAngle(valueF);
} else if (strEqualCaseInsensitive(paramStr, "cranking_charge_angle")) {
setCrankingChargeAngle(valueF);
} else if (strEqualCaseInsensitive(paramStr, "dwell")) {
setConstantDwell(valueF PASS_ENGINE_PARAMETER);
} else if (strEqualCaseInsensitive(paramStr, "engineSnifferRpmThreshold")) {
@ -1027,18 +1067,15 @@ void initSettings(engine_configuration_s *engineConfiguration) {
addConsoleActionF("set_global_fuel_correction", setGlobalFuelCorrection);
addConsoleActionF("set_cranking_fuel", setCrankingFuel);
addConsoleActionI("set_cranking_rpm", setCrankingRpm);
addConsoleActionF("set_cranking_timing_angle", setCrankingTimingAngle);
addConsoleActionF("set_cranking_fuel", setCrankingFuel); // todo: remove
addConsoleActionF("set_cranking_timing_angle", setCrankingTimingAngle);// todo: remove
addConsoleActionF("set_cranking_charge_angle", setCrankingChargeAngle);
addConsoleAction("set_one_coil_ignition", setOneCoilIgnition);
addConsoleAction("set_wasted_spark_ignition", setWastedIgnition);
addConsoleAction("set_individual_coils_ignition", setIndividualCoilsIgnition);
addConsoleActionI("set_ignition_mode", setIgnitionMode);
addConsoleActionI("set_cranking_injection_mode", setCrankingInjectionMode);
addConsoleActionI("set_injection_mode", setInjectionMode);
addConsoleActionF("set_whole_phase_map", setWholePhaseMapCmd);

View File

@ -106,7 +106,7 @@ end_struct
struct cranking_parameters_s
float baseFuel;+Fuel squirt duration while cranking\nA number of curves adjust this value according to CLT/IAT/TPS etc;"ms", 1, 0, 0, 200, 1
int16_t rpm;+Cranking mode threshold. Special cranking logic controls fuel and spark while RPM is below this threshold\nset_cranking_rpm X;"RPM", 1, 0, 0, 3000, 0
int16_t rpm;+Cranking mode threshold. Special cranking logic controls fuel and spark while RPM is below this threshold\nset cranking_rpm X;"RPM", 1, 0, 0, 3000, 0
end_struct
#define debug_mode_e_enum "Alternator_PID", "TPS accel enrich", "Warmup PID", "IDLE", "EL accl enrich", "Trigger Counters", "FSIO_ADC", "AUX_PID_1", "VVT", "post-crank enrich", "mode10", "mode11", "mode12", "mode13", "mode14", "mode15"
@ -229,7 +229,7 @@ int16_t tpsErrorDetectionTooHigh;;"%", 1, 0, -40, 200, 0
cranking_parameters_s cranking
float primingSquirtDurationMs;;"*C", 1, 0, -40, 200, 1
float ignitionDwellForCrankingMs;;"ms", 1, 0, 0, 200, 1
float crankingChargeAngle;+While cranking (which causes battery voltage to drop) we can calculate dwell time in shaft\ndegrees, not in absolute time as in running mode.\nset_cranking_charge_angle X;"deg", 1, 0, 0, 3000.0, 0
float crankingChargeAngle;+While cranking (which causes battery voltage to drop) we can calculate dwell time in shaft\ndegrees, not in absolute time as in running mode.\nset cranking_charge_angle X;"deg", 1, 0, 0, 3000.0, 0
MAP_sensor_config_s map;@see hasMapSensor\n@see isMapAveragingEnabled
@ -280,7 +280,7 @@ custom injection_mode_e 4 bits, U32, @OFFSET@, [0:1], "Simultaneous", "Sequentia
injection_mode_e crankingInjectionMode;
injection_mode_e injectionMode;+'batched' means two injectors are wired together\nset_injection_mode X
angle_t extraInjectionOffset;+this is about deciding when the injector starts it's squirt\nSee also injectionPhase map\ntodo: do we need even need this since we have the map anyway?;"deg", 1, 0.0, -720, 720, 2
angle_t crankingTimingAngle;+Timing advance while engine cranking\nset_cranking_timing_angle X; "deg", 1, 0.0, -360, 360, 2
angle_t crankingTimingAngle;+Timing advance while engine cranking\nset cranking_timing_angle X; "deg", 1, 0.0, -360, 360, 2
custom ignition_mode_e 4 bits, U32, @OFFSET@, [0:1], "One coil", "Individual Coils", "Wasted", "INVALID"
ignition_mode_e ignitionMode;+'wasted' means one coil is driving two spark plugs in two cylinders, with one of the aparks not doing anything since it's happening on the exhaust cycle\nset_ignition_mode X

View File

@ -270,7 +270,7 @@ public class AutoTest {
String msg;
EngineChart chart;
// todo: interesting changeRpm(100);
sendComplexCommand("set_cranking_rpm 500");
sendComplexCommand("set cranking_rpm 500");
IoUtil.changeRpm(200);
double x;
@ -287,27 +287,27 @@ public class AutoTest {
IoUtil.changeRpm(200);
sendCommand("set_cranking_charge_angle 65");
sendCommand("set_cranking_timing_angle -31");
sendCommand("set cranking_charge_angle 65");
sendCommand("set cranking_timing_angle -31");
chart = nextChart();
x = 55;
assertWave("aspire cranking", chart, EngineChart.SPARK_1, 0.18, x, x + 180, x + 360, x + 540);
sendCommand("set_cranking_timing_angle -40");
sendCommand("set cranking_timing_angle -40");
chart = nextChart();
x = 64;
assertWave("aspire", chart, EngineChart.SPARK_1, 0.18, x, x + 180, x + 360, x + 540);
sendCommand("set_cranking_timing_angle 149");
sendCommand("set cranking_timing_angle 149");
sendCommand("set_cranking_charge_angle 40");
sendCommand("set cranking_charge_angle 40");
chart = nextChart();
x = 80;
assertWave("aspire", chart, EngineChart.SPARK_1, 40.0 / 360, x, x + 180, x + 360, x + 540);
sendCommand("set_cranking_charge_angle 65");
sendCommand("set cranking_charge_angle 65");
IoUtil.changeRpm(600);
sendComplexCommand("set_cranking_rpm 700");
sendComplexCommand("set cranking_rpm 700");
chart = nextChart();
x = 55;
assertWave("cranking@600", chart, EngineChart.SPARK_1, 0.18, x, x + 180, x + 360, x + 540);