mirror of https://github.com/FOME-Tech/fome-fw.git
This commit is contained in:
parent
9e979e973b
commit
b0c3357cba
|
@ -36,6 +36,7 @@ Release template (copy/paste this for new release):
|
||||||
- Improved bench test resolution (more usable for testing injectors, dwell, etc)
|
- Improved bench test resolution (more usable for testing injectors, dwell, etc)
|
||||||
- Maximum knock retard table displays correct Y axis values in TunerStudio
|
- Maximum knock retard table displays correct Y axis values in TunerStudio
|
||||||
- Make errors about fuel pressure sensors less aggressive #111 #117
|
- Make errors about fuel pressure sensors less aggressive #111 #117
|
||||||
|
- Always operate in "two wire" mode for batch fuel, fixing batch firing order #23
|
||||||
|
|
||||||
## May 2023 Release
|
## May 2023 Release
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ void setCamaro4() {
|
||||||
engineConfiguration->triggerInputPins[1] = Gpio::C6;
|
engineConfiguration->triggerInputPins[1] = Gpio::C6;
|
||||||
|
|
||||||
engineConfiguration->injectionMode = IM_BATCH;
|
engineConfiguration->injectionMode = IM_BATCH;
|
||||||
engineConfiguration->twoWireBatchInjection = true;
|
|
||||||
// set ignition_mode 2
|
// set ignition_mode 2
|
||||||
engineConfiguration->ignitionMode = IM_WASTED_SPARK;
|
engineConfiguration->ignitionMode = IM_WASTED_SPARK;
|
||||||
|
|
||||||
|
|
|
@ -46,10 +46,6 @@ void setDodgeNeon1995EngineConfiguration() {
|
||||||
// set injection_mode 1
|
// set injection_mode 1
|
||||||
engineConfiguration->injectionMode = IM_SEQUENTIAL;
|
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;
|
engineConfiguration->ignitionMode = IM_WASTED_SPARK;
|
||||||
// set_firing_order 2
|
// set_firing_order 2
|
||||||
|
|
|
@ -27,8 +27,6 @@ void setFordInline6() {
|
||||||
engineConfiguration->firingOrder = FO_1_5_3_6_2_4;
|
engineConfiguration->firingOrder = FO_1_5_3_6_2_4;
|
||||||
engineConfiguration->crankingInjectionMode = IM_SIMULTANEOUS;
|
engineConfiguration->crankingInjectionMode = IM_SIMULTANEOUS;
|
||||||
engineConfiguration->injectionMode = IM_BATCH;
|
engineConfiguration->injectionMode = IM_BATCH;
|
||||||
engineConfiguration->twoWireBatchInjection = true;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 0.5ms dwell time just to be sure it would fit within camshaft revolution, dwell is not controlled by us anyway
|
* 0.5ms dwell time just to be sure it would fit within camshaft revolution, dwell is not controlled by us anyway
|
||||||
|
|
|
@ -11,10 +11,6 @@
|
||||||
void setGmLs4() {
|
void setGmLs4() {
|
||||||
engineConfiguration->globalTriggerAngleOffset = 86;
|
engineConfiguration->globalTriggerAngleOffset = 86;
|
||||||
|
|
||||||
// would not hurt just in case no cam
|
|
||||||
engineConfiguration->twoWireBatchInjection = true;
|
|
||||||
|
|
||||||
|
|
||||||
engineConfiguration->fuelReferencePressure = 400; // 400 kPa, 58 psi
|
engineConfiguration->fuelReferencePressure = 400; // 400 kPa, 58 psi
|
||||||
engineConfiguration->injectorCompensationMode = ICM_FixedRailPressure;
|
engineConfiguration->injectorCompensationMode = ICM_FixedRailPressure;
|
||||||
engineConfiguration->injector.flow = 440;
|
engineConfiguration->injector.flow = 440;
|
||||||
|
|
|
@ -264,9 +264,6 @@ void setMiataNA6_MAP_MRE() {
|
||||||
|
|
||||||
engineConfiguration->fuelPumpPin = Gpio::Unassigned;
|
engineConfiguration->fuelPumpPin = Gpio::Unassigned;
|
||||||
|
|
||||||
|
|
||||||
engineConfiguration->twoWireBatchInjection = true;
|
|
||||||
|
|
||||||
engineConfiguration->useIacTableForCoasting = true;
|
engineConfiguration->useIacTableForCoasting = true;
|
||||||
engineConfiguration->idlePidDeactivationTpsThreshold = 90;
|
engineConfiguration->idlePidDeactivationTpsThreshold = 90;
|
||||||
|
|
||||||
|
|
|
@ -416,8 +416,6 @@ void setMazdaMiata2003EngineConfiguration() {
|
||||||
|
|
||||||
// engineConfiguration->is_enabled_spi_1 = true;
|
// engineConfiguration->is_enabled_spi_1 = true;
|
||||||
|
|
||||||
engineConfiguration->twoWireBatchInjection = true; // this is needed for #492 testing
|
|
||||||
|
|
||||||
engineConfiguration->alternatorControlPin = Gpio::E10;
|
engineConfiguration->alternatorControlPin = Gpio::E10;
|
||||||
engineConfiguration->alternatorControlPinMode = OM_OPENDRAIN;
|
engineConfiguration->alternatorControlPinMode = OM_OPENDRAIN;
|
||||||
|
|
||||||
|
|
|
@ -86,7 +86,6 @@ void setToyota_2jz_vics() {
|
||||||
|
|
||||||
engineConfiguration->ignitionMode = IM_WASTED_SPARK; // just for now
|
engineConfiguration->ignitionMode = IM_WASTED_SPARK; // just for now
|
||||||
engineConfiguration->injectionMode = IM_BATCH; // just for now
|
engineConfiguration->injectionMode = IM_BATCH; // just for now
|
||||||
engineConfiguration->twoWireBatchInjection = true;
|
|
||||||
|
|
||||||
strcpy(engineConfiguration->engineMake, ENGINE_MAKE_TOYOTA);
|
strcpy(engineConfiguration->engineMake, ENGINE_MAKE_TOYOTA);
|
||||||
strcpy(engineConfiguration->engineCode, "2JZ");
|
strcpy(engineConfiguration->engineCode, "2JZ");
|
||||||
|
|
|
@ -127,22 +127,13 @@ bool FuelSchedule::addFuelEventsForCylinder(int i) {
|
||||||
injection_mode_e mode = getCurrentInjectionMode();
|
injection_mode_e mode = getCurrentInjectionMode();
|
||||||
engine->outputChannels.currentInjectionMode = static_cast<uint8_t>(mode);
|
engine->outputChannels.currentInjectionMode = static_cast<uint8_t>(mode);
|
||||||
|
|
||||||
// We need two outputs if:
|
|
||||||
// - we are running batch fuel, and have "use two wire batch" enabled
|
|
||||||
// - running mode is sequential, but cranking mode is batch, so we should run two wire batch while cranking
|
|
||||||
// (if we didn't, only half of injectors would fire while cranking)
|
|
||||||
bool isTwoWireBatch = engineConfiguration->twoWireBatchInjection || (engineConfiguration->injectionMode == IM_SEQUENTIAL);
|
|
||||||
|
|
||||||
int injectorIndex;
|
int injectorIndex;
|
||||||
if (mode == IM_SIMULTANEOUS || mode == IM_SINGLE_POINT) {
|
if (mode == IM_SIMULTANEOUS || mode == IM_SINGLE_POINT) {
|
||||||
// These modes only have one injector
|
// These modes only have one injector
|
||||||
injectorIndex = 0;
|
injectorIndex = 0;
|
||||||
} else if (mode == IM_SEQUENTIAL || (mode == IM_BATCH && isTwoWireBatch)) {
|
} else if (mode == IM_SEQUENTIAL || mode == IM_BATCH) {
|
||||||
// Map order index -> cylinder index (firing order)
|
// Map order index -> cylinder index (firing order)
|
||||||
injectorIndex = getCylinderId(i) - 1;
|
injectorIndex = getCylinderId(i) - 1;
|
||||||
} else if (mode == IM_BATCH) {
|
|
||||||
// Loop over the first half of the firing order twice
|
|
||||||
injectorIndex = i % (engineConfiguration->cylindersCount / 2);
|
|
||||||
} else {
|
} else {
|
||||||
firmwareError(ObdCode::CUSTOM_OBD_UNEXPECTED_INJECTION_MODE, "Unexpected injection mode %d", mode);
|
firmwareError(ObdCode::CUSTOM_OBD_UNEXPECTED_INJECTION_MODE, "Unexpected injection mode %d", mode);
|
||||||
injectorIndex = 0;
|
injectorIndex = 0;
|
||||||
|
@ -150,7 +141,7 @@ bool FuelSchedule::addFuelEventsForCylinder(int i) {
|
||||||
|
|
||||||
InjectorOutputPin *secondOutput;
|
InjectorOutputPin *secondOutput;
|
||||||
|
|
||||||
if (mode == IM_BATCH && isTwoWireBatch) {
|
if (mode == IM_BATCH) {
|
||||||
/**
|
/**
|
||||||
* also fire the 2nd half of the injectors so that we can implement a batch mode on individual wires
|
* also fire the 2nd half of the injectors so that we can implement a batch mode on individual wires
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -389,9 +389,6 @@ static void enableOrDisable(const char *param, bool isEnabled) {
|
||||||
#endif // EFI_PROD_CODE
|
#endif // EFI_PROD_CODE
|
||||||
} else if (strEqualCaseInsensitive(param, "stepperidle")) {
|
} else if (strEqualCaseInsensitive(param, "stepperidle")) {
|
||||||
engineConfiguration->useStepperIdle = isEnabled;
|
engineConfiguration->useStepperIdle = isEnabled;
|
||||||
} else if (strEqualCaseInsensitive(param, "two_wire_batch_injection")) {
|
|
||||||
engineConfiguration->twoWireBatchInjection = isEnabled;
|
|
||||||
incrementGlobalConfigurationVersion();
|
|
||||||
} else if (strEqualCaseInsensitive(param, "boardUseTempPullUp")) {
|
} else if (strEqualCaseInsensitive(param, "boardUseTempPullUp")) {
|
||||||
engineConfiguration->boardUseTempPullUp = isEnabled;
|
engineConfiguration->boardUseTempPullUp = isEnabled;
|
||||||
incrementGlobalConfigurationVersion();
|
incrementGlobalConfigurationVersion();
|
||||||
|
|
|
@ -989,7 +989,7 @@ bit skippedWheelOnCam,"On camshaft","On crankshaft";Where is your primary skippe
|
||||||
bit useSeparateVeForIdle;This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling.
|
bit useSeparateVeForIdle;This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling.
|
||||||
bit verboseTriggerSynchDetails;Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details
|
bit verboseTriggerSynchDetails;Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details
|
||||||
bit isManualSpinningMode;Usually if we have no trigger events that means engine is stopped\nUnless we are troubleshooting and spinning the engine by hand - this case a longer\ndelay is needed
|
bit isManualSpinningMode;Usually if we have no trigger events that means engine is stopped\nUnless we are troubleshooting and spinning the engine by hand - this case a longer\ndelay is needed
|
||||||
bit twoWireBatchInjection;This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection
|
bit unused1200b12
|
||||||
bit neverInstantRpm
|
bit neverInstantRpm
|
||||||
bit unused1200b14
|
bit unused1200b14
|
||||||
bit useFixedBaroCorrFromMap
|
bit useFixedBaroCorrFromMap
|
||||||
|
|
|
@ -2158,7 +2158,6 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_
|
||||||
field = "Enabled", isInjectionEnabled
|
field = "Enabled", isInjectionEnabled
|
||||||
field = "Mode", injectionMode, {isInjectionEnabled == 1}
|
field = "Mode", injectionMode, {isInjectionEnabled == 1}
|
||||||
field = "#Batch injection with individual wiring"
|
field = "#Batch injection with individual wiring"
|
||||||
field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == @@injection_mode_e_IM_BATCH@@ }
|
|
||||||
field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled }
|
field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled }
|
||||||
field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled }
|
field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled }
|
||||||
field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled }
|
field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled }
|
||||||
|
|
|
@ -56,8 +56,6 @@ TEST(fuelControl, transitionIssue1592) {
|
||||||
|
|
||||||
// Test the transition from batch cranking to sequential running
|
// Test the transition from batch cranking to sequential running
|
||||||
engineConfiguration->crankingInjectionMode = IM_BATCH;
|
engineConfiguration->crankingInjectionMode = IM_BATCH;
|
||||||
engineConfiguration->twoWireBatchInjection = true;
|
|
||||||
|
|
||||||
|
|
||||||
// First sync point will schedule cranking pulse since we're in "faster spin up" mode
|
// First sync point will schedule cranking pulse since we're in "faster spin up" mode
|
||||||
doRevolution(eth, 240);
|
doRevolution(eth, 240);
|
||||||
|
|
|
@ -795,7 +795,6 @@ TEST(big, testTwoWireBatch) {
|
||||||
.WillRepeatedly(Return(AirmassResult{0.1008f, 50.0f}));
|
.WillRepeatedly(Return(AirmassResult{0.1008f, 50.0f}));
|
||||||
|
|
||||||
engineConfiguration->injectionMode = IM_BATCH;
|
engineConfiguration->injectionMode = IM_BATCH;
|
||||||
engineConfiguration->twoWireBatchInjection = true;
|
|
||||||
|
|
||||||
eth.fireTriggerEventsWithDuration(20);
|
eth.fireTriggerEventsWithDuration(20);
|
||||||
// still no RPM since need to cycles measure cycle duration
|
// still no RPM since need to cycles measure cycle duration
|
||||||
|
|
Loading…
Reference in New Issue