Negative timing is not displayed correctly fix #5250
This commit is contained in:
parent
ef2fe9e33c
commit
5d46bb1074
|
@ -40,6 +40,7 @@ Release template (copy/paste this for new release):
|
|||
- hellen128 better ETB pin choice between rev A/B and C
|
||||
- Base map values for Open Loop Boost Duty should be 0% #6188
|
||||
- HPFP control on cam with variable timing #6245
|
||||
- Negative timing is not displayed correctly fix #5250
|
||||
|
||||
### Breaking Changes
|
||||
- wrong trigger naming for missing teeth #6258
|
||||
|
|
|
@ -95,6 +95,8 @@ void EngineState::updateSparkSkip() {
|
|||
#endif // EFI_LAUNCH_CONTROL
|
||||
}
|
||||
|
||||
#define MAKE_HUMAN_READABLE_ADVANCE(advance) (advance > getEngineState()->engineCycle / 2 ? advance - getEngineState()->engineCycle : advance)
|
||||
|
||||
void EngineState::periodicFastCallback() {
|
||||
ScopePerf perf(PE::EngineStatePeriodicFastCallback);
|
||||
|
||||
|
@ -172,8 +174,8 @@ void EngineState::periodicFastCallback() {
|
|||
// Degrees of timing REMOVED from actual timing during soft RPM limit window
|
||||
- getLimpManager()->getLimitingTimingRetard();
|
||||
// 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;
|
||||
engine->ignitionState.baseIgnitionAdvance = MAKE_HUMAN_READABLE_ADVANCE(baseAdvance);
|
||||
engine->ignitionState.correctedIgnitionAdvance = MAKE_HUMAN_READABLE_ADVANCE(correctedIgnitionAdvance);
|
||||
|
||||
|
||||
// compute per-bank fueling
|
||||
|
|
|
@ -168,7 +168,26 @@ TEST(ignition, negativeAdvance) {
|
|||
ASSERT_EQ(0, getAdvanceCorrections(load));
|
||||
ASSERT_EQ(707, getAdvance(rpm, load));
|
||||
|
||||
ASSERT_NEAR(-603.72, engine->ignitionState.baseIgnitionAdvance, EPS4D);
|
||||
ASSERT_NEAR(-603.72, engine->ignitionState.correctedIgnitionAdvance, EPS4D);
|
||||
ASSERT_NEAR(-13, engine->ignitionState.baseIgnitionAdvance, EPS4D);
|
||||
ASSERT_NEAR(-13, engine->ignitionState.correctedIgnitionAdvance, EPS4D);
|
||||
}
|
||||
|
||||
TEST(ignition, negativeAdvance2stroke) {
|
||||
EngineTestHelper eth(engine_type_e::SACHS);
|
||||
|
||||
int rpm = 0;
|
||||
float load = 50;
|
||||
|
||||
ASSERT_EQ(360, getEngineState()->engineCycle);
|
||||
|
||||
engineConfiguration->fixedTiming = -13;
|
||||
engineConfiguration->timingMode = TM_FIXED;
|
||||
// run the ignition math
|
||||
engine->periodicFastCallback();
|
||||
|
||||
eth.assertRpm(0);
|
||||
ASSERT_EQ(347, getAdvance(rpm, load));
|
||||
|
||||
ASSERT_NEAR(-13, engine->ignitionState.correctedIgnitionAdvance, EPS4D);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue