This commit is contained in:
Matthew Kennedy 2023-06-24 20:14:37 -07:00
parent 9e979e973b
commit b0c3357cba
14 changed files with 5 additions and 36 deletions

View File

@ -36,6 +36,7 @@ Release template (copy/paste this for new release):
- Improved bench test resolution (more usable for testing injectors, dwell, etc)
- Maximum knock retard table displays correct Y axis values in TunerStudio
- 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

View File

@ -28,7 +28,7 @@ void setCamaro4() {
engineConfiguration->triggerInputPins[1] = Gpio::C6;
engineConfiguration->injectionMode = IM_BATCH;
engineConfiguration->twoWireBatchInjection = true;
// set ignition_mode 2
engineConfiguration->ignitionMode = IM_WASTED_SPARK;

View File

@ -46,10 +46,6 @@ void setDodgeNeon1995EngineConfiguration() {
// 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
engineConfiguration->ignitionMode = IM_WASTED_SPARK;
// set_firing_order 2

View File

@ -27,8 +27,6 @@ void setFordInline6() {
engineConfiguration->firingOrder = FO_1_5_3_6_2_4;
engineConfiguration->crankingInjectionMode = IM_SIMULTANEOUS;
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

View File

@ -11,10 +11,6 @@
void setGmLs4() {
engineConfiguration->globalTriggerAngleOffset = 86;
// would not hurt just in case no cam
engineConfiguration->twoWireBatchInjection = true;
engineConfiguration->fuelReferencePressure = 400; // 400 kPa, 58 psi
engineConfiguration->injectorCompensationMode = ICM_FixedRailPressure;
engineConfiguration->injector.flow = 440;

View File

@ -264,9 +264,6 @@ void setMiataNA6_MAP_MRE() {
engineConfiguration->fuelPumpPin = Gpio::Unassigned;
engineConfiguration->twoWireBatchInjection = true;
engineConfiguration->useIacTableForCoasting = true;
engineConfiguration->idlePidDeactivationTpsThreshold = 90;

View File

@ -416,8 +416,6 @@ void setMazdaMiata2003EngineConfiguration() {
// engineConfiguration->is_enabled_spi_1 = true;
engineConfiguration->twoWireBatchInjection = true; // this is needed for #492 testing
engineConfiguration->alternatorControlPin = Gpio::E10;
engineConfiguration->alternatorControlPinMode = OM_OPENDRAIN;

View File

@ -86,7 +86,6 @@ void setToyota_2jz_vics() {
engineConfiguration->ignitionMode = IM_WASTED_SPARK; // just for now
engineConfiguration->injectionMode = IM_BATCH; // just for now
engineConfiguration->twoWireBatchInjection = true;
strcpy(engineConfiguration->engineMake, ENGINE_MAKE_TOYOTA);
strcpy(engineConfiguration->engineCode, "2JZ");

View File

@ -127,22 +127,13 @@ bool FuelSchedule::addFuelEventsForCylinder(int i) {
injection_mode_e mode = getCurrentInjectionMode();
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;
if (mode == IM_SIMULTANEOUS || mode == IM_SINGLE_POINT) {
// These modes only have one injector
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)
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 {
firmwareError(ObdCode::CUSTOM_OBD_UNEXPECTED_INJECTION_MODE, "Unexpected injection mode %d", mode);
injectorIndex = 0;
@ -150,7 +141,7 @@ bool FuelSchedule::addFuelEventsForCylinder(int i) {
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
*/

View File

@ -389,9 +389,6 @@ static void enableOrDisable(const char *param, bool isEnabled) {
#endif // EFI_PROD_CODE
} else if (strEqualCaseInsensitive(param, "stepperidle")) {
engineConfiguration->useStepperIdle = isEnabled;
} else if (strEqualCaseInsensitive(param, "two_wire_batch_injection")) {
engineConfiguration->twoWireBatchInjection = isEnabled;
incrementGlobalConfigurationVersion();
} else if (strEqualCaseInsensitive(param, "boardUseTempPullUp")) {
engineConfiguration->boardUseTempPullUp = isEnabled;
incrementGlobalConfigurationVersion();

View File

@ -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 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 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 unused1200b14
bit useFixedBaroCorrFromMap

View File

@ -2158,7 +2158,6 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_
field = "Enabled", isInjectionEnabled
field = "Mode", injectionMode, {isInjectionEnabled == 1}
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 AFR table load axis", afrOverrideMode, { isInjectionEnabled }
field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled }

View File

@ -56,8 +56,6 @@ TEST(fuelControl, transitionIssue1592) {
// Test the transition from batch cranking to sequential running
engineConfiguration->crankingInjectionMode = IM_BATCH;
engineConfiguration->twoWireBatchInjection = true;
// First sync point will schedule cranking pulse since we're in "faster spin up" mode
doRevolution(eth, 240);

View File

@ -795,7 +795,6 @@ TEST(big, testTwoWireBatch) {
.WillRepeatedly(Return(AirmassResult{0.1008f, 50.0f}));
engineConfiguration->injectionMode = IM_BATCH;
engineConfiguration->twoWireBatchInjection = true;
eth.fireTriggerEventsWithDuration(20);
// still no RPM since need to cycles measure cycle duration