From c7b155d97fb086f104b7b1d302f6fdcd73851a0d Mon Sep 17 00:00:00 2001 From: rusefillc Date: Tue, 12 Dec 2023 22:05:29 -0500 Subject: [PATCH] small-can FW is not well #5787 seems to be about EFI_ENGINE_CONTROL guarding too much of default settings only:small-can-board --- .../boards/hellen/small-can-board/board.mk | 2 +- .../controllers/actuators/idle_thread_io.cpp | 1 - firmware/controllers/algo/engine.h | 2 +- .../controllers/algo/engine_configuration.cpp | 74 ++++++++++--------- firmware/controllers/can/can_verbose.cpp | 6 +- firmware/controllers/engine_controller.cpp | 4 + firmware/controllers/limp_manager.cpp | 8 +- firmware/hw_layer/adc/mcp3208.cpp | 3 - firmware/integration/LiveData.yaml | 2 +- firmware/tunerstudio/rusefi.input | 1 + 10 files changed, 58 insertions(+), 45 deletions(-) diff --git a/firmware/config/boards/hellen/small-can-board/board.mk b/firmware/config/boards/hellen/small-can-board/board.mk index 22b4c51895..25905fd629 100644 --- a/firmware/config/boards/hellen/small-can-board/board.mk +++ b/firmware/config/boards/hellen/small-can-board/board.mk @@ -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 diff --git a/firmware/controllers/actuators/idle_thread_io.cpp b/firmware/controllers/actuators/idle_thread_io.cpp index d326f6ff27..6d76fcec25 100644 --- a/firmware/controllers/actuators/idle_thread_io.cpp +++ b/firmware/controllers/actuators/idle_thread_io.cpp @@ -108,7 +108,6 @@ void startIdleBench(void) { #if EFI_IDLE_CONTROL - void setDefaultIdleParameters() { engineConfiguration->idleRpmPid.pFactor = 0.01f; engineConfiguration->idleRpmPid.iFactor = 0.05f; diff --git a/firmware/controllers/algo/engine.h b/firmware/controllers/algo/engine.h index a5ba655eec..5f7482b392 100644 --- a/firmware/controllers/algo/engine.h +++ b/firmware/controllers/algo/engine.h @@ -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 diff --git a/firmware/controllers/algo/engine_configuration.cpp b/firmware/controllers/algo/engine_configuration.cpp index 4df48bbf7e..45c7239b76 100644 --- a/firmware/controllers/algo/engine_configuration.cpp +++ b/firmware/controllers/algo/engine_configuration.cpp @@ -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 diff --git a/firmware/controllers/can/can_verbose.cpp b/firmware/controllers/can/can_verbose.cpp index 55fe2c49a2..1d06ebafd2 100644 --- a/firmware/controllers/can/can_verbose.cpp +++ b/firmware/controllers/can/can_verbose.cpp @@ -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(); diff --git a/firmware/controllers/engine_controller.cpp b/firmware/controllers/engine_controller.cpp index d2644a84e3..3981200fd8 100644 --- a/firmware/controllers/engine_controller.cpp +++ b/firmware/controllers/engine_controller.cpp @@ -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); diff --git a/firmware/controllers/limp_manager.cpp b/firmware/controllers/limp_manager.cpp index 299ef1c222..c2782f5508 100644 --- a/firmware/controllers/limp_manager.cpp +++ b/firmware/controllers/limp_manager.cpp @@ -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()) { diff --git a/firmware/hw_layer/adc/mcp3208.cpp b/firmware/hw_layer/adc/mcp3208.cpp index 0816126e3e..7228690880 100644 --- a/firmware/hw_layer/adc/mcp3208.cpp +++ b/firmware/hw_layer/adc/mcp3208.cpp @@ -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; diff --git a/firmware/integration/LiveData.yaml b/firmware/integration/LiveData.yaml index c011661d61..fb58b7f6fd 100644 --- a/firmware/integration/LiveData.yaml +++ b/firmware/integration/LiveData.yaml @@ -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" diff --git a/firmware/tunerstudio/rusefi.input b/firmware/tunerstudio/rusefi.input index 9f837f3bd9..046d319837 100644 --- a/firmware/tunerstudio/rusefi.input +++ b/firmware/tunerstudio/rusefi.input @@ -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