small-can FW is not well #5787

seems to be about EFI_ENGINE_CONTROL guarding too much of default settings
only:small-can-board
This commit is contained in:
rusefillc 2023-12-12 22:05:29 -05:00
parent 030728fea3
commit c7b155d97f
10 changed files with 58 additions and 45 deletions

View File

@ -22,7 +22,7 @@ DDEFS += -DEFI_TCU=FALSE
DDEFS += -DEFI_ENGINE_EMULATOR=FALSE
DDEFS += -DEFI_SHAFT_POSITION_INPUT=FALSE
DDEFS += -DEFI_ALTERNATOR_CONTROL=FALSE
DDEFS += -DEFI_ENGINE_CONTROL=FALSE
# temp DDEFS += -DEFI_ENGINE_CONTROL=FALSE
DDEFS += -DEFI_VVT_PID=FALSE
DDEFS += -DEFI_EMULATE_POSITION_SENSORS=FALSE
DDEFS += -DEFI_MAP_AVERAGING=FALSE

View File

@ -108,7 +108,6 @@ void startIdleBench(void) {
#if EFI_IDLE_CONTROL
void setDefaultIdleParameters() {
engineConfiguration->idleRpmPid.pFactor = 0.01f;
engineConfiguration->idleRpmPid.iFactor = 0.05f;

View File

@ -206,7 +206,7 @@ public:
SoftSparkLimiter ALSsoftSparkLimiter;
#endif /* EFI_ANTILAG_SYSTEM */
#if EFI_ENGINE_CONTROL
#if EFI_SHAFT_POSITION_INPUT
LambdaMonitor lambdaMonitor;
#endif // EFI_ENGINE_CONTROL

View File

@ -319,7 +319,7 @@ void setTargetRpmCurve(int rpm) {
setLinearCurve(config->cltIdleRpm, rpm, rpm, 10);
}
void setDefaultGppwmParameters() {
static void setDefaultGppwmParameters() {
// Same config for all channels
for (size_t i = 0; i < efi::size(engineConfiguration->gppwm); i++) {
auto& cfg = engineConfiguration->gppwm[i];
@ -362,6 +362,31 @@ static void setDefaultEngineNoiseTable() {
}
#endif // EFI_ENGINE_CONTROL
static void setDefaultCanSettings() {
// OBD-II default rate is 500kbps
engineConfiguration->canBaudRate = B500KBPS;
engineConfiguration->can2BaudRate = B500KBPS;
engineConfiguration->canSleepPeriodMs = 50;
engineConfiguration->canReadEnabled = true;
engineConfiguration->canWriteEnabled = true;
engineConfiguration->canVssScaling = 1.0f;
// Don't enable, but set default address
engineConfiguration->verboseCanBaseAddress = CAN_DEFAULT_BASE;
}
static void setDefaultScriptParameters() {
setLinearCurve(config->scriptTable1LoadBins, 20, 120, 10);
setRpmTableBin(config->scriptTable1RpmBins);
setLinearCurve(config->scriptTable2LoadBins, 20, 120, 10);
setRpmTableBin(config->scriptTable2RpmBins);
setLinearCurve(config->scriptTable3LoadBins, 20, 120, 10);
setRpmTableBin(config->scriptTable3RpmBins);
setLinearCurve(config->scriptTable4LoadBins, 20, 120, 10);
setRpmTableBin(config->scriptTable4RpmBins);
}
/**
* @brief Global default engine configuration
* This method sets the global engine configuration defaults. These default values are then
@ -379,12 +404,23 @@ static void setDefaultEngineNoiseTable() {
* This method should NOT be setting any default pinout
*/
static void setDefaultEngineConfiguration() {
#if EFI_ENGINE_CONTROL
#if (! EFI_UNIT_TEST)
efi::clear(persistentState.persistentConfiguration);
#endif
prepareVoidConfiguration(engineConfiguration);
#if EFI_BOOST_CONTROL
setDefaultBoostParameters();
#endif
setDefaultCanSettings();
engineConfiguration->sdCardLogFrequency = 50;
setDefaultGppwmParameters();
setDefaultScriptParameters();
#if EFI_ENGINE_CONTROL
setDefaultBaseEngine();
setDefaultFuel();
setDefaultIgnition();
@ -402,6 +438,8 @@ static void setDefaultEngineConfiguration() {
engineConfiguration->isCylinderCleanupEnabled = true;
engineConfiguration->auxPid[0].minValue = 10;
engineConfiguration->auxPid[0].maxValue = 90;
engineConfiguration->auxPid[1].minValue = 10;
engineConfiguration->auxPid[1].maxValue = 90;
@ -415,30 +453,13 @@ static void setDefaultEngineConfiguration() {
setDefaultEtbParameters();
setDefaultEtbBiasCurve();
#endif /* EFI_ELECTRONIC_THROTTLE_BODY */
#if EFI_BOOST_CONTROL
setDefaultBoostParameters();
#endif
// OBD-II default rate is 500kbps
engineConfiguration->canBaudRate = B500KBPS;
engineConfiguration->can2BaudRate = B500KBPS;
engineConfiguration->mafSensorType = Bosch0280218037;
setBosch0280218037();
engineConfiguration->canSleepPeriodMs = 50;
engineConfiguration->canReadEnabled = true;
engineConfiguration->canWriteEnabled = true;
engineConfiguration->canVssScaling = 1.0f;
// Don't enable, but set default address
engineConfiguration->verboseCanBaseAddress = CAN_DEFAULT_BASE;
engineConfiguration->sdCardLogFrequency = 50;
engineConfiguration->mapMinBufferLength = 1;
engineConfiguration->vvtActivationDelayMs = 6000;
engineConfiguration->startCrankingDuration = 3;
engineConfiguration->maxAcRpm = 5000;
@ -447,9 +468,6 @@ static void setDefaultEngineConfiguration() {
initTemperatureCurve(IAT_FUEL_CORRECTION_CURVE, 1);
engineConfiguration->auxPid[0].minValue = 10;
engineConfiguration->auxPid[0].maxValue = 90;
engineConfiguration->alternatorControl.minValue = 0;
engineConfiguration->alternatorControl.maxValue = 90;
@ -481,14 +499,6 @@ static void setDefaultEngineConfiguration() {
setRpmTableBin(config->vvtTable1RpmBins);
setLinearCurve(config->vvtTable2LoadBins, 20, 120, 10);
setRpmTableBin(config->vvtTable2RpmBins);
setLinearCurve(config->scriptTable1LoadBins, 20, 120, 10);
setRpmTableBin(config->scriptTable1RpmBins);
setLinearCurve(config->scriptTable2LoadBins, 20, 120, 10);
setRpmTableBin(config->scriptTable2RpmBins);
setLinearCurve(config->scriptTable3LoadBins, 20, 120, 10);
setRpmTableBin(config->scriptTable3RpmBins);
setLinearCurve(config->scriptTable4LoadBins, 20, 120, 10);
setRpmTableBin(config->scriptTable4RpmBins);
setDefaultEngineNoiseTable();
@ -536,8 +546,6 @@ static void setDefaultEngineConfiguration() {
setLinearCurve(config->iacCoastingRpmBins, 0, 8000, 1);
setDefaultGppwmParameters();
#if !EFI_UNIT_TEST
engineConfiguration->analogInputDividerCoefficient = 2;
#endif

View File

@ -5,7 +5,7 @@
*
* If you edit this file, please update rusEFI_CAN_verbose.dbc!
* Kvaser Database Editor works well for this task, and is free.
*
*
* @author Matthew Kennedy, (c) 2020
*/
@ -46,9 +46,9 @@ static void populateFrame(Status& msg) {
msg.fuelPump = enginePins.fuelPumpRelay.getLogicValue();
msg.checkEngine = enginePins.checkEnginePin.getLogicValue();
msg.o2Heater = enginePins.o2heater.getLogicValue();
#if EFI_ENGINE_CONTROL
#if EFI_SHAFT_POSITION_INPUT
msg.lambdaProtectActive = engine->lambdaMonitor.isCut();
#endif // EFI_ENGINE_CONTROL
#endif // EFI_SHAFT_POSITION_INPUT
msg.fan = enginePins.fanRelay.getLogicValue();
msg.fan2 = enginePins.fanRelay2.getLogicValue();

View File

@ -526,6 +526,7 @@ bool validateConfig() {
ensureArrayIsAscending("Batt Lag", engineConfiguration->injector.battLagCorrBins);
#if EFI_ENGINE_CONTROL
// Fueling
{
ensureArrayIsAscending("VE load", config->veLoadBins);
@ -567,6 +568,7 @@ bool validateConfig() {
ensureArrayIsAscendingOrDefault("Map estimate TPS", config->mapEstimateTpsBins);
ensureArrayIsAscendingOrDefault("Map estimate RPM", config->mapEstimateRpmBins);
#endif // EFI_ENGINE_CONTROL
ensureArrayIsAscendingOrDefault("Script Curve 1", config->scriptCurve1Bins);
ensureArrayIsAscendingOrDefault("Script Curve 2", config->scriptCurve2Bins);
@ -615,9 +617,11 @@ bool validateConfig() {
ensureArrayIsAscendingOrDefault("fuel ALS RPM", config->alsFuelAdjustmentrpmBins);
#endif // EFI_ANTILAG_SYSTEM
#if EFI_ELECTRONIC_THROTTLE_BODY
// ETB
ensureArrayIsAscending("Pedal map pedal", config->pedalToTpsPedalBins);
ensureArrayIsAscending("Pedal map RPM", config->pedalToTpsRpmBins);
#endif // EFI_ELECTRONIC_THROTTLE_BODY
if (isGdiEngine()) {
ensureArrayIsAscending("HPFP compensation", engineConfiguration->hpfpCompensationRpmBins);

View File

@ -8,6 +8,7 @@
#define CLEANUP_MODE_TPS 90
#if EFI_SHAFT_POSITION_INPUT
static bool noFiringUntilVvtSync(vvt_mode_e vvtMode) {
auto operationMode = getEngineRotationState()->getOperationMode();
@ -40,6 +41,7 @@ static bool noFiringUntilVvtSync(vvt_mode_e vvtMode) {
operationMode == FOUR_STROKE_THREE_TIMES_CRANK_SENSOR ||
operationMode == FOUR_STROKE_TWELVE_TIMES_CRANK_SENSOR;
}
#endif // EFI_SHAFT_POSITION_INPUT
void LimpManager::onFastCallback() {
updateState(Sensor::getOrZero(SensorType::Rpm), getTimeNowNt());
@ -64,7 +66,7 @@ void LimpManager::updateState(int rpm, efitick_t nowNt) {
Clearable allowFuel = engineConfiguration->isInjectionEnabled;
Clearable allowSpark = engineConfiguration->isIgnitionEnabled;
#if !EFI_UNIT_TEST
#if EFI_SHAFT_POSITION_INPUT && !EFI_UNIT_TEST
if (!m_ignitionOn
&& !engine->triggerCentral.directSelfStimulation // useful to try things on real ECU even without ignition voltage
) {
@ -101,6 +103,7 @@ void LimpManager::updateState(int rpm, efitick_t nowNt) {
}
}
#if EFI_SHAFT_POSITION_INPUT
if (engine->lambdaMonitor.isCut()) {
allowFuel.clear(ClearReason::LambdaProtection);
}
@ -181,6 +184,7 @@ void LimpManager::updateState(int rpm, efitick_t nowNt) {
Sensor::getOrZero(SensorType::DriverThrottleIntent) > CLEANUP_MODE_TPS) {
allowFuel.clear(ClearReason::FloodClear);
}
#endif // EFI_SHAFT_POSITION_INPUT
if (!engine->isMainRelayEnabled()) {
/*
@ -189,7 +193,7 @@ todo AndreiKA this change breaks 22 unit tests?
allowSpark.clear();
*/
}
#if EFI_LAUNCH_CONTROL
// Fuel cut if launch control engaged
if (engine->launchController.isLaunchFuelRpmRetardCondition()) {

View File

@ -124,9 +124,6 @@ void adc_in_out(McpAdcState *state) {
}
void init_adc_mcp3208(McpAdcState *state, SPIDriver *driver) {
// initSpiModules();
state->driver = driver;
state->tx_buff[2] = 0;

View File

@ -194,4 +194,4 @@ Usages:
java: LambdaMonitor.java
folder: controllers/math
constexpr: "___engine.lambdaMonitor"
conditional_compilation: "EFI_ENGINE_CONTROL"
conditional_compilation: "EFI_SHAFT_POSITION_INPUT"

View File

@ -3685,6 +3685,7 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_
field = "SPI3 SCK", spi3sckPin, {is_enabled_spi_3 == 1}
field = "SPI3sck mode", spi3SckMode, {is_enabled_spi_3 == 1}
field = "LIS302DLCsPin", LIS302DLCsPin
field = "SPI4 enable", is_enabled_spi_4
dialog = stftPartitioning, "Region Configuration"
field = "Idle region RPM", stft_maxIdleRegionRpm