From 8dec89c34fe0f074c5dc137e5689420e10476a4f Mon Sep 17 00:00:00 2001 From: rusEfi Date: Fri, 14 Nov 2014 22:04:21 -0600 Subject: [PATCH] auto-sync --- firmware/config/engines/test_engine.cpp | 26 +++++++++++++++++++ .../controllers/algo/auto_generated_enums.cpp | 2 ++ .../controllers/algo/engine_configuration.cpp | 5 +++- firmware/controllers/algo/enum_strings.cpp | 2 ++ firmware/controllers/algo/rusefi_enums.h | 4 ++- .../trigger/main_trigger_callback.cpp | 15 ++++++++++- 6 files changed, 51 insertions(+), 3 deletions(-) diff --git a/firmware/config/engines/test_engine.cpp b/firmware/config/engines/test_engine.cpp index 9b4b21e99d..e9936efbea 100644 --- a/firmware/config/engines/test_engine.cpp +++ b/firmware/config/engines/test_engine.cpp @@ -1,6 +1,8 @@ /** * @file test_engine.cpp * + * set_engine_type 26 + * * @date Nov 14, 2014 * @author Andrey Belomutskiy, (c) 2012-2014 */ @@ -9,5 +11,29 @@ #include "test_engine.h" void setTestEngineConfiguration(engine_configuration_s *engineConfiguration) { + engineConfiguration->triggerConfig.triggerType = TT_TOOTHED_WHEEL_60_2; + + setOperationMode(engineConfiguration, FOUR_STROKE_CRANK_SENSOR); + + engineConfiguration->ignitionMode = IM_ONE_COIL; + setConstantDwell(engineConfiguration, 3); // 50% duty cycle @ 5000 rpm + + board_configuration_s *bc = &engineConfiguration->bc; + bc->malfunctionIndicatorPin = GPIO_UNASSIGNED; + + bc->ignitionPins[0] = GPIOC_7; // #1 + bc->ignitionPins[1] = GPIO_UNASSIGNED; // #2 + bc->ignitionPins[2] = GPIO_UNASSIGNED; // #3 + bc->ignitionPins[3] = GPIO_UNASSIGNED; // #4 + bc->ignitionPins[4] = GPIO_UNASSIGNED; // #5 + bc->ignitionPins[5] = GPIO_UNASSIGNED; // #6 + + bc->logicAnalyzerPins[0] = GPIO_UNASSIGNED; + bc->logicAnalyzerPins[1] = GPIO_UNASSIGNED; + bc->logicAnalyzerPins[2] = GPIO_UNASSIGNED; + bc->logicAnalyzerPins[3] = GPIO_UNASSIGNED; + + engineConfiguration->hasCltSensor = false; + engineConfiguration->hasIatSensor = false; } diff --git a/firmware/controllers/algo/auto_generated_enums.cpp b/firmware/controllers/algo/auto_generated_enums.cpp index 4c1f3a74cc..4a5d177f86 100644 --- a/firmware/controllers/algo/auto_generated_enums.cpp +++ b/firmware/controllers/algo/auto_generated_enums.cpp @@ -247,6 +247,8 @@ case MAZDA_MIATA_NB: return "MAZDA_MIATA_NB"; case BMW_E34: return "BMWe34"; +case TEST_ENGINE: + return "TESTENG"; } return NULL; } diff --git a/firmware/controllers/algo/engine_configuration.cpp b/firmware/controllers/algo/engine_configuration.cpp index 4587d923c1..e37b23c0fc 100644 --- a/firmware/controllers/algo/engine_configuration.cpp +++ b/firmware/controllers/algo/engine_configuration.cpp @@ -51,6 +51,7 @@ #include "rover_v8.h" #include "mitsubishi.h" #include "subaru.h" +#include "test_engine.h" //#define TS_DEFAULT_SPEED 115200 #define TS_DEFAULT_SPEED 38400 @@ -548,9 +549,11 @@ void resetConfigurationExt(Logging * logger, engine_type_e engineType, Engine *e case BMW_E34: setBmwE34(engineConfiguration); break; + case TEST_ENGINE: + setTestEngineConfiguration(engineConfiguration); + break; default: firmwareError("Unexpected engine type: %d", engineType); - } applyNonPersistentConfiguration(logger, engine); diff --git a/firmware/controllers/algo/enum_strings.cpp b/firmware/controllers/algo/enum_strings.cpp index e91c2b7827..1b8f28773c 100644 --- a/firmware/controllers/algo/enum_strings.cpp +++ b/firmware/controllers/algo/enum_strings.cpp @@ -70,6 +70,8 @@ const char* getConfigurationName(engine_type_e engineType) { return "MX596"; case BMW_E34: return "BMWe34"; + case TEST_ENGINE: + return "Test"; default: firmwareError("Unexpected: engineType %d", engineType); return NULL; diff --git a/firmware/controllers/algo/rusefi_enums.h b/firmware/controllers/algo/rusefi_enums.h index f90babd887..2fd08ed08a 100644 --- a/firmware/controllers/algo/rusefi_enums.h +++ b/firmware/controllers/algo/rusefi_enums.h @@ -94,7 +94,9 @@ typedef enum { BMW_E34 = 25, - ET_UNUSED = 26, + TEST_ENGINE = 26, + + ET_UNUSED = 27, Force_4b_engine_type = ENUM_SIZE_HACK, } engine_type_e; diff --git a/firmware/controllers/trigger/main_trigger_callback.cpp b/firmware/controllers/trigger/main_trigger_callback.cpp index 49b1447f7b..cc4d80ef70 100644 --- a/firmware/controllers/trigger/main_trigger_callback.cpp +++ b/firmware/controllers/trigger/main_trigger_callback.cpp @@ -235,7 +235,8 @@ static ALWAYS_INLINE void handleSparkEvent(uint32_t eventIndex, IgnitionEvent *i } } -static ALWAYS_INLINE void handleSpark(uint32_t eventIndex, int rpm, IgnitionEventList *list DECLARE_ENGINE_PARAMETER_S) { +static ALWAYS_INLINE void handleSpark(uint32_t eventIndex, int rpm, + IgnitionEventList *list DECLARE_ENGINE_PARAMETER_S) { if (!isValidRpm(rpm) || !engineConfiguration->isIgnitionEnabled) return; // this might happen for instance in case of a single trigger event after a pause @@ -348,6 +349,18 @@ void mainTriggerCallback(trigger_event_e ckpSignalType, uint32_t eventIndex, Eng float dwellAngle = dwellMs / getOneDegreeTimeMs(rpm); + float maxAllowedDwellAngle = engineConfiguration->engineCycle / 2; + + if (engineConfiguration->ignitionMode == IM_ONE_COIL) { + maxAllowedDwellAngle = engineConfiguration->engineCycle / engineConfiguration->cylindersCount / 1.1; + } + + if (dwellAngle > maxAllowedDwellAngle) { + warning(OBD_PCM_Processor_Fault, "dwell angle too long: %f", dwellAngle); + } + + // todo: add some check for dwell overflow? like 4 times 6 ms while engine cycle is less then that + initializeIgnitionActions(fixAngle(-advance PASS_ENGINE_PARAMETER), dwellAngle, engine->engineConfiguration2, &engine->engineConfiguration2->ignitionEvents[revolutionIndex] PASS_ENGINE_PARAMETER); }