mirror of https://github.com/rusefi/rusefi.git
parent
1b5e455188
commit
ef2fe9e33c
|
@ -39,7 +39,7 @@ static Map3D<TRACTION_CONTROL_ETB_DROP_SIZE, TRACTION_CONTROL_ETB_DROP_SIZE, int
|
|||
/**
|
||||
* @return ignition timing angle advance before TDC
|
||||
*/
|
||||
static angle_t getRunningAdvance(int rpm, float engineLoad) {
|
||||
angle_t getRunningAdvance(int rpm, float engineLoad) {
|
||||
if (engineConfiguration->timingMode == TM_FIXED) {
|
||||
return engineConfiguration->fixedTiming;
|
||||
}
|
||||
|
@ -120,7 +120,7 @@ static angle_t getRunningAdvance(int rpm, float engineLoad) {
|
|||
return advanceAngle;
|
||||
}
|
||||
|
||||
static angle_t getAdvanceCorrections(float engineLoad) {
|
||||
angle_t getAdvanceCorrections(float engineLoad) {
|
||||
auto iat = Sensor::get(SensorType::Iat);
|
||||
|
||||
if (!iat) {
|
||||
|
@ -151,7 +151,7 @@ static angle_t getAdvanceCorrections(float engineLoad) {
|
|||
/**
|
||||
* @return ignition timing angle advance before TDC for Cranking
|
||||
*/
|
||||
static angle_t getCrankingAdvance(int rpm, float engineLoad) {
|
||||
angle_t getCrankingAdvance(int rpm, float engineLoad) {
|
||||
// get advance from the separate table for Cranking
|
||||
if (engineConfiguration->useSeparateAdvanceForCranking) {
|
||||
return interpolate2d(rpm, config->crankingAdvanceBins, config->crankingAdvance);
|
||||
|
|
|
@ -15,6 +15,10 @@ angle_t getCylinderIgnitionTrim(size_t cylinderNumber, int rpm, float ignitionLo
|
|||
* this method is used to build default advance map
|
||||
*/
|
||||
float getInitialAdvance(int rpm, float map, float advanceMax);
|
||||
// public only for unit tests
|
||||
angle_t getCrankingAdvance(int rpm, float engineLoad);
|
||||
angle_t getRunningAdvance(int rpm, float engineLoad);
|
||||
angle_t getAdvanceCorrections(float engineLoad);
|
||||
|
||||
size_t getMultiSparkCount(int rpm);
|
||||
void initIgnitionAdvanceControl();
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
*/
|
||||
|
||||
#include "pch.h"
|
||||
#include "defaults.h"
|
||||
#include "spark_logic.h"
|
||||
|
||||
using ::testing::_;
|
||||
|
@ -148,3 +149,26 @@ TEST(ignition, CylinderTimingTrim) {
|
|||
EXPECT_NEAR(engine->engineState.timingAdvance[2], unadjusted + 2, EPS4D);
|
||||
EXPECT_NEAR(engine->engineState.timingAdvance[3], unadjusted + 4, EPS4D);
|
||||
}
|
||||
|
||||
TEST(ignition, negativeAdvance) {
|
||||
EngineTestHelper eth(engine_type_e::TEST_ENGINE);
|
||||
|
||||
int rpm = 0;
|
||||
float load = 50;
|
||||
|
||||
engineConfiguration->fixedTiming = -13;
|
||||
engineConfiguration->timingMode = TM_FIXED;
|
||||
// run the ignition math
|
||||
engine->periodicFastCallback();
|
||||
|
||||
eth.assertRpm(0);
|
||||
|
||||
ASSERT_EQ(DEFAULT_CRANKING_ANGLE, getCrankingAdvance(rpm, load));
|
||||
ASSERT_EQ(-13, getRunningAdvance(rpm, load));
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue