We need to reshuffle timing calculation a bit, add one more gauge #5235
This commit is contained in:
parent
97d6313924
commit
0470953cb8
|
@ -164,7 +164,14 @@ void EngineState::periodicFastCallback() {
|
||||||
injectionOffset = getInjectionOffset(rpm, fuelLoad);
|
injectionOffset = getInjectionOffset(rpm, fuelLoad);
|
||||||
|
|
||||||
float ignitionLoad = getIgnitionLoad();
|
float ignitionLoad = getIgnitionLoad();
|
||||||
float advance = getAdvance(rpm, ignitionLoad) * engine->ignitionState.luaTimingMult + engine->ignitionState.luaTimingAdd;
|
float baseAdvance = getAdvance(rpm, ignitionLoad) * engine->ignitionState.luaTimingMult + engine->ignitionState.luaTimingAdd;
|
||||||
|
float correctedIgnitionAdvance = baseAdvance
|
||||||
|
// Pull any extra timing for knock retard
|
||||||
|
+ engine->module<KnockController>()->getKnockRetard();
|
||||||
|
// these fields are scaled_channel so let's only use for observability, with a local variables holding value while it matters locally
|
||||||
|
engine->ignitionState.baseIgnitionAdvance = baseAdvance;
|
||||||
|
engine->ignitionState.correctedIgnitionAdvance = correctedIgnitionAdvance;
|
||||||
|
|
||||||
|
|
||||||
// compute per-bank fueling
|
// compute per-bank fueling
|
||||||
for (size_t i = 0; i < STFT_BANK_COUNT; i++) {
|
for (size_t i = 0; i < STFT_BANK_COUNT; i++) {
|
||||||
|
@ -181,7 +188,7 @@ void EngineState::periodicFastCallback() {
|
||||||
// Apply both per-bank and per-cylinder trims
|
// Apply both per-bank and per-cylinder trims
|
||||||
engine->engineState.injectionMass[i] = injectionMass * bankTrim * cylinderTrim;
|
engine->engineState.injectionMass[i] = injectionMass * bankTrim * cylinderTrim;
|
||||||
|
|
||||||
timingAdvance[i] = advance + getCombinedCylinderIgnitionTrim(i, rpm, ignitionLoad);
|
timingAdvance[i] = correctedIgnitionAdvance + getCombinedCylinderIgnitionTrim(i, rpm, ignitionLoad);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: calculate me from a table!
|
// TODO: calculate me from a table!
|
||||||
|
|
|
@ -101,8 +101,6 @@ static void prepareCylinderIgnitionSchedule(angle_t dwellAngleDuration, floatms_
|
||||||
angle_t correctedSparkAngle =
|
angle_t correctedSparkAngle =
|
||||||
// Negate because timing *before* TDC, and we schedule *after* TDC
|
// Negate because timing *before* TDC, and we schedule *after* TDC
|
||||||
- getEngineState()->timingAdvance[event->cylinderNumber]
|
- getEngineState()->timingAdvance[event->cylinderNumber]
|
||||||
// Pull any extra timing for knock retard
|
|
||||||
+ engine->module<KnockController>()->getKnockRetard()
|
|
||||||
// Degrees of timing REMOVED from actual timing during soft RPM limit window
|
// Degrees of timing REMOVED from actual timing during soft RPM limit window
|
||||||
+ getLimpManager()->getLimitingTimingRetard();
|
+ getLimpManager()->getLimitingTimingRetard();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue