ignition timing clamping settings

This commit is contained in:
rusefi 2023-07-22 00:07:15 -04:00
parent 4fbc9d7b06
commit 0099de49af
3 changed files with 10 additions and 0 deletions

View File

@ -33,6 +33,7 @@ Release template (copy/paste this for new release):
- injector duty cycle limited at 50% for GDI engines #5416
- STM32Cube v2.14 #5418
- turning coils and injectors off in case of extremely unexpected errors #5429
- Configurable ignition timing limits, adding safety particularly for engines running wasted spark with a large cam FOME#211
### Fixed
- fuel_pump_control is accessible as getOutput("isFuelPumpOn") in Lua #5239

View File

@ -92,6 +92,12 @@ static void prepareCylinderIgnitionSchedule(angle_t dwellAngleDuration, floatms_
finalIgnitionTiming -= 720;
}
// Clamp the final ignition timing to the configured limits
// finalIgnitionTiming is deg BTDC
// minimumIgnitionTiming limits maximium retard
// maximumIgnitionTiming limits maximum advance
finalIgnitionTiming = clampF(engineConfiguration->minimumIgnitionTiming, finalIgnitionTiming, engineConfiguration->maximumIgnitionTiming);
engine->outputChannels.ignitionAdvanceCyl[event->cylinderIndex] = finalIgnitionTiming;
angle_t sparkAngle =

View File

@ -84,6 +84,8 @@ TEST(trigger, test1995FordInline6TriggerDecoder) {
EngineTestHelper eth(engine_type_e::FORD_INLINE_6_1995);
engineConfiguration->isFasterEngineSpinUpEnabled = false;
engineConfiguration->minimumIgnitionTiming = -15;
setWholeTimingTable(-13);
Sensor::setMockValue(SensorType::Iat, 49.579071f);
@ -190,6 +192,7 @@ TEST(misc, testRpmCalculator) {
efiAssertVoid(ObdCode::CUSTOM_ERR_6670, engineConfiguration!=NULL, "null config in engine");
engineConfiguration->minimumIgnitionTiming = -15;
setWholeTimingTable(-13);
engineConfiguration->trigger.customTotalToothCount = 8;