mirror of https://github.com/rusefi/rusefi-1.git
auto-sync
This commit is contained in:
parent
421235be41
commit
54873240ce
|
@ -527,14 +527,17 @@ static OutputPin communicationPin;
|
||||||
OutputPin warningPin;
|
OutputPin warningPin;
|
||||||
OutputPin runningPin;
|
OutputPin runningPin;
|
||||||
|
|
||||||
static OutputPin *leds[] = { &warningPin, &runningPin, &enginePins.errorLedPin, &communicationPin, &enginePins.checkEnginePin };
|
static OutputPin *leds[] = { &warningPin, &runningPin, &enginePins.checkEnginePin,
|
||||||
|
&enginePins.errorLedPin, &communicationPin, &enginePins.checkEnginePin };
|
||||||
|
|
||||||
extern pin_output_mode_e DEFAULT_OUTPUT;
|
extern pin_output_mode_e DEFAULT_OUTPUT;
|
||||||
|
|
||||||
static void initStatisLeds() {
|
static void initStatusLeds(void) {
|
||||||
#if EFI_PROD_CODE || defined(__DOXYGEN__)
|
#if EFI_PROD_CODE || defined(__DOXYGEN__)
|
||||||
outputPinRegisterExt2("led: comm status", &communicationPin,
|
outputPinRegisterExt2("led: comm status", &communicationPin,
|
||||||
engineConfiguration->communicationPin, &DEFAULT_OUTPUT);
|
engineConfiguration->communicationPin, &DEFAULT_OUTPUT);
|
||||||
|
// we initialize this here so that we can blink it on start-up
|
||||||
|
outputPinRegisterExt2("MalfunctionIndicator", &enginePins.checkEnginePin, boardConfiguration->malfunctionIndicatorPin, &DEFAULT_OUTPUT);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if EFI_WARNING_LED || defined(__DOXYGEN__)
|
#if EFI_WARNING_LED || defined(__DOXYGEN__)
|
||||||
|
@ -829,7 +832,7 @@ void startStatusThreads(Engine *engine) {
|
||||||
// todo: refactoring needed, this file should probably be split into pieces
|
// todo: refactoring needed, this file should probably be split into pieces
|
||||||
chThdCreateStatic(lcdThreadStack, sizeof(lcdThreadStack), NORMALPRIO, (tfunc_t) lcdThread, engine);
|
chThdCreateStatic(lcdThreadStack, sizeof(lcdThreadStack), NORMALPRIO, (tfunc_t) lcdThread, engine);
|
||||||
#if EFI_PROD_CODE || defined(__DOXYGEN__)
|
#if EFI_PROD_CODE || defined(__DOXYGEN__)
|
||||||
initStatisLeds();
|
initStatusLeds();
|
||||||
chThdCreateStatic(blinkingStack, sizeof(blinkingStack), NORMALPRIO, (tfunc_t) blinkingThread, NULL);
|
chThdCreateStatic(blinkingStack, sizeof(blinkingStack), NORMALPRIO, (tfunc_t) blinkingThread, NULL);
|
||||||
#endif /* EFI_PROD_CODE */
|
#endif /* EFI_PROD_CODE */
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,8 @@
|
||||||
|
|
||||||
EXTERN_ENGINE;
|
EXTERN_ENGINE;
|
||||||
|
|
||||||
|
extern TunerStudioOutputChannels tsOutputChannels;
|
||||||
|
|
||||||
static ign_Map3D_t advanceMap("advance");
|
static ign_Map3D_t advanceMap("advance");
|
||||||
static ign_Map3D_t iatAdvanceCorrectionMap("iat corr");
|
static ign_Map3D_t iatAdvanceCorrectionMap("iat corr");
|
||||||
|
|
||||||
|
@ -80,8 +82,14 @@ static angle_t getRunningAdvance(int rpm, float engineLoad DECLARE_ENGINE_PARAME
|
||||||
} else {
|
} else {
|
||||||
iatCorrection = iatAdvanceCorrectionMap.getValue((float) rpm, engine->engineState.iat);
|
iatCorrection = iatAdvanceCorrectionMap.getValue((float) rpm, engine->engineState.iat);
|
||||||
}
|
}
|
||||||
|
if (engineConfiguration->debugMode == DBG_TIMING) {
|
||||||
|
tsOutputChannels.debugFloatField1 = iatCorrection;
|
||||||
|
tsOutputChannels.debugFloatField2 = engine->engineState.cltTimingCorrection;
|
||||||
|
}
|
||||||
|
|
||||||
float result = advanceMap.getValue((float) rpm, engineLoad) + iatCorrection
|
float result = advanceMap.getValue((float) rpm, engineLoad)
|
||||||
|
+ iatCorrection
|
||||||
|
+ engine->engineState.cltTimingCorrection
|
||||||
// todo: uncomment once we get useable knock - engine->knockCount
|
// todo: uncomment once we get useable knock - engine->knockCount
|
||||||
;
|
;
|
||||||
engine->m.advanceLookupTime = GET_TIMESTAMP() - engine->m.beforeAdvance;
|
engine->m.advanceLookupTime = GET_TIMESTAMP() - engine->m.beforeAdvance;
|
||||||
|
|
|
@ -139,6 +139,7 @@ EngineState::EngineState() {
|
||||||
targetAFR = 0;
|
targetAFR = 0;
|
||||||
tpsAccelEnrich = 0;
|
tpsAccelEnrich = 0;
|
||||||
tChargeK = 0;
|
tChargeK = 0;
|
||||||
|
cltTimingCorrection = 0;
|
||||||
runningFuel = baseFuel = currentVE = 0;
|
runningFuel = baseFuel = currentVE = 0;
|
||||||
timeOfPreviousWarning = -10;
|
timeOfPreviousWarning = -10;
|
||||||
baseTableFuel = iat = iatFuelCorrection = 0;
|
baseTableFuel = iat = iatFuelCorrection = 0;
|
||||||
|
@ -188,9 +189,11 @@ void EngineState::periodicFastCallback(DECLARE_ENGINE_PARAMETER_F) {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
cltFuelCorrection = getCltCorrection(clt PASS_ENGINE_PARAMETER);
|
cltFuelCorrection = getCltFuelCorrection(clt PASS_ENGINE_PARAMETER);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cltTimingCorrection = getCltTimingCorrection(clt PASS_ENGINE_PARAMETER);
|
||||||
|
|
||||||
engineNoiseHipLevel = interpolate2d(rpm, engineConfiguration->knockNoiseRpmBins,
|
engineNoiseHipLevel = interpolate2d(rpm, engineConfiguration->knockNoiseRpmBins,
|
||||||
engineConfiguration->knockNoise, ENGINE_NOISE_CURVE_SIZE);
|
engineConfiguration->knockNoise, ENGINE_NOISE_CURVE_SIZE);
|
||||||
|
|
||||||
|
|
|
@ -91,6 +91,9 @@ public:
|
||||||
int lastErrorCode;
|
int lastErrorCode;
|
||||||
efitimesec_t timeOfPreviousWarning;
|
efitimesec_t timeOfPreviousWarning;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* speed-density logic, calculated air mass in gramms
|
||||||
|
*/
|
||||||
float airMass;
|
float airMass;
|
||||||
|
|
||||||
float engineNoiseHipLevel;
|
float engineNoiseHipLevel;
|
||||||
|
@ -118,6 +121,8 @@ public:
|
||||||
*/
|
*/
|
||||||
angle_t dwellAngle;
|
angle_t dwellAngle;
|
||||||
|
|
||||||
|
angle_t cltTimingCorrection;
|
||||||
|
|
||||||
// fuel-related;
|
// fuel-related;
|
||||||
float iatFuelCorrection;
|
float iatFuelCorrection;
|
||||||
float cltFuelCorrection;
|
float cltFuelCorrection;
|
||||||
|
|
|
@ -174,12 +174,19 @@ void prepareFuelMap(DECLARE_ENGINE_PARAMETER_F) {
|
||||||
/**
|
/**
|
||||||
* @brief Engine warm-up fuel correction.
|
* @brief Engine warm-up fuel correction.
|
||||||
*/
|
*/
|
||||||
float getCltCorrection(float clt DECLARE_ENGINE_PARAMETER_S) {
|
float getCltFuelCorrection(float clt DECLARE_ENGINE_PARAMETER_S) {
|
||||||
if (cisnan(clt))
|
if (cisnan(clt))
|
||||||
return 1; // this error should be already reported somewhere else, let's just handle it
|
return 1; // this error should be already reported somewhere else, let's just handle it
|
||||||
return interpolate2d(clt, config->cltFuelCorrBins, config->cltFuelCorr, CLT_CURVE_SIZE) / PERCENT_MULT;
|
return interpolate2d(clt, config->cltFuelCorrBins, config->cltFuelCorr, CLT_CURVE_SIZE) / PERCENT_MULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
angle_t getCltTimingCorrection(float clt DECLARE_ENGINE_PARAMETER_S) {
|
||||||
|
if (cisnan(clt))
|
||||||
|
return 0; // this error should be already reported somewhere else, let's just handle it
|
||||||
|
return interpolate2d(clt, engineConfiguration->cltTimingBins, engineConfiguration->cltTimingExtra, CLT_TIMING_CURVE_SIZE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
float getIatCorrection(float iat DECLARE_ENGINE_PARAMETER_S) {
|
float getIatCorrection(float iat DECLARE_ENGINE_PARAMETER_S) {
|
||||||
if (cisnan(iat))
|
if (cisnan(iat))
|
||||||
return 1; // this error should be already reported somewhere else, let's just handle it
|
return 1; // this error should be already reported somewhere else, let's just handle it
|
||||||
|
|
|
@ -30,7 +30,8 @@ int getNumberOfInjections(injection_mode_e mode DECLARE_ENGINE_PARAMETER_S);
|
||||||
angle_t getinjectionOffset(float rpm DECLARE_ENGINE_PARAMETER_S);
|
angle_t getinjectionOffset(float rpm DECLARE_ENGINE_PARAMETER_S);
|
||||||
float getIatCorrection(float iat DECLARE_ENGINE_PARAMETER_S);
|
float getIatCorrection(float iat DECLARE_ENGINE_PARAMETER_S);
|
||||||
floatms_t getInjectorLag(float vBatt DECLARE_ENGINE_PARAMETER_S);
|
floatms_t getInjectorLag(float vBatt DECLARE_ENGINE_PARAMETER_S);
|
||||||
float getCltCorrection(float clt DECLARE_ENGINE_PARAMETER_S);
|
float getCltFuelCorrection(float clt DECLARE_ENGINE_PARAMETER_S);
|
||||||
|
angle_t getCltTimingCorrection(float clt DECLARE_ENGINE_PARAMETER_S);
|
||||||
floatms_t getCrankingFuel(DECLARE_ENGINE_PARAMETER_F);
|
floatms_t getCrankingFuel(DECLARE_ENGINE_PARAMETER_F);
|
||||||
floatms_t getCrankingFuel3(float coolantTemperature, uint32_t revolutionCounterSinceStart DECLARE_ENGINE_PARAMETER_S);
|
floatms_t getCrankingFuel3(float coolantTemperature, uint32_t revolutionCounterSinceStart DECLARE_ENGINE_PARAMETER_S);
|
||||||
floatms_t getInjectionDuration(int rpm DECLARE_ENGINE_PARAMETER_S);
|
floatms_t getInjectionDuration(int rpm DECLARE_ENGINE_PARAMETER_S);
|
||||||
|
|
|
@ -652,7 +652,7 @@ typedef enum {
|
||||||
AUX_PID_1 = 7,
|
AUX_PID_1 = 7,
|
||||||
DBG_VVT = 8,
|
DBG_VVT = 8,
|
||||||
DBG_POST_CRANKING_ENRICH = 9,
|
DBG_POST_CRANKING_ENRICH = 9,
|
||||||
DM_10 = 10,
|
DBG_TIMING = 10,
|
||||||
DM_11 = 11,
|
DM_11 = 11,
|
||||||
DM_12 = 12,
|
DM_12 = 12,
|
||||||
DM_13 = 13,
|
DM_13 = 13,
|
||||||
|
|
|
@ -110,7 +110,6 @@ void initOutputPins(void) {
|
||||||
// outputPinRegister("ext led 2", LED_EXT_2, EXTRA_LED_2_PORT, EXTRA_LED_2_PIN);
|
// outputPinRegister("ext led 2", LED_EXT_2, EXTRA_LED_2_PORT, EXTRA_LED_2_PIN);
|
||||||
// outputPinRegister("ext led 3", LED_EXT_3, EXTRA_LED_2_PORT, EXTRA_LED_3_PIN);
|
// outputPinRegister("ext led 3", LED_EXT_3, EXTRA_LED_2_PORT, EXTRA_LED_3_PIN);
|
||||||
// outputPinRegister("alive1", LED_DEBUG, GPIOD, 6);
|
// outputPinRegister("alive1", LED_DEBUG, GPIOD, 6);
|
||||||
outputPinRegisterExt2("MalfunctionIndicator", &enginePins.checkEnginePin, boardConfiguration->malfunctionIndicatorPin, &DEFAULT_OUTPUT);
|
|
||||||
|
|
||||||
// todo: are these needed here? todo: make configurable
|
// todo: are these needed here? todo: make configurable
|
||||||
// outputPinRegister("spi CS1", SPI_CS_1, SPI_CS1_PORT, SPI_CS1_PIN);
|
// outputPinRegister("spi CS1", SPI_CS_1, SPI_CS1_PORT, SPI_CS1_PIN);
|
||||||
|
|
|
@ -42,7 +42,7 @@ enable2ndByteCanID = false
|
||||||
|
|
||||||
; see PAGE_0_SIZE in C source code
|
; see PAGE_0_SIZE in C source code
|
||||||
; CONFIG_DEFINITION_START
|
; CONFIG_DEFINITION_START
|
||||||
; this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Mon Jan 02 18:37:17 EST 2017
|
; this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Thu Jan 05 20:49:12 EST 2017
|
||||||
|
|
||||||
pageSize = 16376
|
pageSize = 16376
|
||||||
page = 1
|
page = 1
|
||||||
|
@ -980,6 +980,14 @@ fileVersion = { 20161225 }
|
||||||
yBins = iatFuelCorr
|
yBins = iatFuelCorr
|
||||||
gauge = IATGauge
|
gauge = IATGauge
|
||||||
|
|
||||||
|
curve = cltTimingCorrCurve, "Warmup timing correction"
|
||||||
|
columnLabel = "Coolant", "Extra"
|
||||||
|
xAxis = -40, 120, 10
|
||||||
|
yAxis = 0, 50, 100
|
||||||
|
xBins = cltTimingBins, coolant
|
||||||
|
yBins = cltTimingExtra
|
||||||
|
gauge = CLTGauge
|
||||||
|
|
||||||
curve = cltFuelCorrCurve, "Warmup fuel manual Multiplier"
|
curve = cltFuelCorrCurve, "Warmup fuel manual Multiplier"
|
||||||
columnLabel = "Coolant", "Multiplier"
|
columnLabel = "Coolant", "Multiplier"
|
||||||
xAxis = -40, 120, 10
|
xAxis = -40, 120, 10
|
||||||
|
@ -1388,6 +1396,7 @@ fileVersion = { 20161225 }
|
||||||
subMenu = cltFuelCorrCurve, "Warmup fuel manual Multiplier", 0, {useWarmupPidAfr == 0}
|
subMenu = cltFuelCorrCurve, "Warmup fuel manual Multiplier", 0, {useWarmupPidAfr == 0}
|
||||||
subMenu = warmupTargetAfrCurve, "Warmup fuel auto correction AFR target", 0, {useWarmupPidAfr == 1}
|
subMenu = warmupTargetAfrCurve, "Warmup fuel auto correction AFR target", 0, {useWarmupPidAfr == 1}
|
||||||
subMenu = cltIdleCurve, "Warmup IAC position manual Multiplier"
|
subMenu = cltIdleCurve, "Warmup IAC position manual Multiplier"
|
||||||
|
subMenu = cltTimingCorrCurve, "Warmup timing correction"
|
||||||
subMenu = std_separator
|
subMenu = std_separator
|
||||||
subMenu = fuelTableTbl, "Fuel Table", 0, {fuelAlgorithm != 3}
|
subMenu = fuelTableTbl, "Fuel Table", 0, {fuelAlgorithm != 3}
|
||||||
subMenu = veTableTbl, "VE Table", 0, {fuelAlgorithm == 3}
|
subMenu = veTableTbl, "VE Table", 0, {fuelAlgorithm == 3}
|
||||||
|
|
|
@ -925,6 +925,14 @@ fileVersion = { 20161225 }
|
||||||
yBins = iatFuelCorr
|
yBins = iatFuelCorr
|
||||||
gauge = IATGauge
|
gauge = IATGauge
|
||||||
|
|
||||||
|
curve = cltTimingCorrCurve, "Warmup timing correction"
|
||||||
|
columnLabel = "Coolant", "Extra"
|
||||||
|
xAxis = -40, 120, 10
|
||||||
|
yAxis = 0, 50, 100
|
||||||
|
xBins = cltTimingBins, coolant
|
||||||
|
yBins = cltTimingExtra
|
||||||
|
gauge = CLTGauge
|
||||||
|
|
||||||
curve = cltFuelCorrCurve, "Warmup fuel manual Multiplier"
|
curve = cltFuelCorrCurve, "Warmup fuel manual Multiplier"
|
||||||
columnLabel = "Coolant", "Multiplier"
|
columnLabel = "Coolant", "Multiplier"
|
||||||
xAxis = -40, 120, 10
|
xAxis = -40, 120, 10
|
||||||
|
@ -1333,6 +1341,7 @@ fileVersion = { 20161225 }
|
||||||
subMenu = cltFuelCorrCurve, "Warmup fuel manual Multiplier", 0, {useWarmupPidAfr == 0}
|
subMenu = cltFuelCorrCurve, "Warmup fuel manual Multiplier", 0, {useWarmupPidAfr == 0}
|
||||||
subMenu = warmupTargetAfrCurve, "Warmup fuel auto correction AFR target", 0, {useWarmupPidAfr == 1}
|
subMenu = warmupTargetAfrCurve, "Warmup fuel auto correction AFR target", 0, {useWarmupPidAfr == 1}
|
||||||
subMenu = cltIdleCurve, "Warmup IAC position manual Multiplier"
|
subMenu = cltIdleCurve, "Warmup IAC position manual Multiplier"
|
||||||
|
subMenu = cltTimingCorrCurve, "Warmup timing correction"
|
||||||
subMenu = std_separator
|
subMenu = std_separator
|
||||||
subMenu = fuelTableTbl, "Fuel Table", 0, {fuelAlgorithm != 3}
|
subMenu = fuelTableTbl, "Fuel Table", 0, {fuelAlgorithm != 3}
|
||||||
subMenu = veTableTbl, "VE Table", 0, {fuelAlgorithm == 3}
|
subMenu = veTableTbl, "VE Table", 0, {fuelAlgorithm == 3}
|
||||||
|
|
|
@ -90,7 +90,7 @@ void testFuelMap(void) {
|
||||||
assertEquals(NAN, getIntakeAirTemperature(PASS_ENGINE_PARAMETER_F));
|
assertEquals(NAN, getIntakeAirTemperature(PASS_ENGINE_PARAMETER_F));
|
||||||
float iatCorrection = getIatCorrection(-KELV PASS_ENGINE_PARAMETER);
|
float iatCorrection = getIatCorrection(-KELV PASS_ENGINE_PARAMETER);
|
||||||
assertEqualsM("IAT", 2, iatCorrection);
|
assertEqualsM("IAT", 2, iatCorrection);
|
||||||
float cltCorrection = getCltCorrection(getCoolantTemperature(PASS_ENGINE_PARAMETER_F) PASS_ENGINE_PARAMETER);
|
float cltCorrection = getCltFuelCorrection(getCoolantTemperature(PASS_ENGINE_PARAMETER_F) PASS_ENGINE_PARAMETER);
|
||||||
assertEqualsM("CLT", 1, cltCorrection);
|
assertEqualsM("CLT", 1, cltCorrection);
|
||||||
float injectorLag = getInjectorLag(getVBatt(PASS_ENGINE_PARAMETER_F) PASS_ENGINE_PARAMETER);
|
float injectorLag = getInjectorLag(getVBatt(PASS_ENGINE_PARAMETER_F) PASS_ENGINE_PARAMETER);
|
||||||
assertEqualsM("injectorLag", 0, injectorLag);
|
assertEqualsM("injectorLag", 0, injectorLag);
|
||||||
|
|
Loading…
Reference in New Issue