From 50038167d8337d550ae8824dc20a1c43b80d4182 Mon Sep 17 00:00:00 2001 From: Andrey Date: Tue, 7 Dec 2021 21:08:25 -0500 Subject: [PATCH] MAP phase sensing #3544 new implementation seems complete? --- firmware/config/engines/test_engine.cpp | 11 +++++++++-- firmware/config/engines/test_engine.h | 3 ++- firmware/console/binary/tunerstudio_outputs.h | 5 +++++ .../algo/auto_generated_enginetypes.cpp | 6 +++--- firmware/controllers/algo/engine_configuration.cpp | 6 ++++-- firmware/controllers/algo/engine_types.h | 2 +- firmware/controllers/trigger/trigger_central.cpp | 9 +++++---- firmware/controllers/trigger/trigger_central.h | 1 - .../main/java/com/rusefi/enums/engine_type_e.java | 2 +- unit_tests/tests/trigger/test_map_cam.cpp | 14 +++++++++----- 10 files changed, 39 insertions(+), 20 deletions(-) diff --git a/firmware/config/engines/test_engine.cpp b/firmware/config/engines/test_engine.cpp index df4a8ea68c..32106ed404 100644 --- a/firmware/config/engines/test_engine.cpp +++ b/firmware/config/engines/test_engine.cpp @@ -15,7 +15,7 @@ #include "test_engine.h" // TEST_ENGINE -void setTestEngineConfiguration() { +void setTestCamEngineConfiguration() { setDefaultFrankensoConfiguration(); setOperationMode(engineConfiguration, FOUR_STROKE_CAM_SENSOR); @@ -50,6 +50,13 @@ void setTestEngineConfiguration() { engineConfiguration->ignitionPins[5] = GPIO_UNASSIGNED; // #6 } + +void setTestCrankEngineConfiguration() { + setTestCamEngineConfiguration(); + + setOperationMode(engineConfiguration, FOUR_STROKE_CRANK_SENSOR); +} + void setTestVVTEngineConfiguration() { setDefaultFrankensoConfiguration(); setOperationMode(engineConfiguration, FOUR_STROKE_CRANK_SENSOR); @@ -72,7 +79,7 @@ void setTestVVTEngineConfiguration() { #if EFI_UNIT_TEST void setTestEngineIssue366both() { - setTestEngineConfiguration(); + setTestCamEngineConfiguration(); engineConfiguration->useOnlyRisingEdgeForTrigger = false; diff --git a/firmware/config/engines/test_engine.h b/firmware/config/engines/test_engine.h index 052835c76f..a038515c7d 100644 --- a/firmware/config/engines/test_engine.h +++ b/firmware/config/engines/test_engine.h @@ -9,7 +9,8 @@ #include "engine_configuration.h" -void setTestEngineConfiguration(); +void setTestCamEngineConfiguration(); +void setTestCrankEngineConfiguration(); void setTestVVTEngineConfiguration(); void setTestEngineIssue366both(); diff --git a/firmware/console/binary/tunerstudio_outputs.h b/firmware/console/binary/tunerstudio_outputs.h index 970f33364b..a67f6ce87b 100644 --- a/firmware/console/binary/tunerstudio_outputs.h +++ b/firmware/console/binary/tunerstudio_outputs.h @@ -15,6 +15,11 @@ #include "tunerstudio_debug_struct.h" #include "ts_outputs_generated.h" +#ifndef WITH_TS_STATE +// do we ever see a case of compiling without TSOutputChannels? Shall we wipe out all '#if EFI_TUNER_STUDIO' or replace with '#if WITH_TS_STATE' +#define WITH_TS_STATE TRUE +#endif + enum class TsCalMode : uint8_t { None = 0, Tps1Max = 1, diff --git a/firmware/controllers/algo/auto_generated_enginetypes.cpp b/firmware/controllers/algo/auto_generated_enginetypes.cpp index 098a1aac46..29fa5c1a2e 100644 --- a/firmware/controllers/algo/auto_generated_enginetypes.cpp +++ b/firmware/controllers/algo/auto_generated_enginetypes.cpp @@ -1,6 +1,6 @@ #include "global.h" #include "engine_types.h" -// was generated automatically by rusEFI tool from engine_types.h // by enum2string.jar tool on Mon Dec 06 21:27:50 EST 2021 +// was generated automatically by rusEFI tool from engine_types.h // by enum2string.jar tool on Tue Dec 07 20:56:44 EST 2021 // see also gen_config_and_enums.bat @@ -325,6 +325,8 @@ case TEST_110: return "TEST_110"; case TEST_33816: return "TEST_33816"; +case TEST_CRANK_ENGINE: + return "TEST_CRANK_ENGINE"; case TEST_ENGINE: return "TEST_ENGINE"; case TEST_ENGINE_VVT: @@ -351,8 +353,6 @@ case UNUSED101: return "UNUSED101"; case UNUSED18: return "UNUSED18"; -case UNUSED28: - return "UNUSED28"; case UNUSED30: return "UNUSED30"; case UNUSED39: diff --git a/firmware/controllers/algo/engine_configuration.cpp b/firmware/controllers/algo/engine_configuration.cpp index cdee7ce0cf..a59a23dc96 100644 --- a/firmware/controllers/algo/engine_configuration.cpp +++ b/firmware/controllers/algo/engine_configuration.cpp @@ -852,7 +852,10 @@ void resetConfigurationExt(configuration_callback_t boardCallback, engine_type_e // nothing to do - we do it all in setBoardDefaultConfiguration break; case TEST_ENGINE: - setTestEngineConfiguration(); + setTestCamEngineConfiguration(); + break; + case TEST_CRANK_ENGINE: + setTestCrankEngineConfiguration(); break; #if EFI_UNIT_TEST case TEST_ISSUE_366_BOTH: @@ -1056,7 +1059,6 @@ void resetConfigurationExt(configuration_callback_t boardCallback, engine_type_e setHonda600(); break; case UNUSED9: - case UNUSED28: case FORD_ESCORT_GT: setFordEscortGt(); break; diff --git a/firmware/controllers/algo/engine_types.h b/firmware/controllers/algo/engine_types.h index 0b08617122..f532c427d1 100644 --- a/firmware/controllers/algo/engine_types.h +++ b/firmware/controllers/algo/engine_types.h @@ -89,7 +89,7 @@ typedef enum { // see TriggerWaveform::bothFrontsRequired TEST_ISSUE_898 = 27, - UNUSED28 = 28, + TEST_CRANK_ENGINE = 28, SACHS = 29, diff --git a/firmware/controllers/trigger/trigger_central.cpp b/firmware/controllers/trigger/trigger_central.cpp index b7f9a740e5..0b82a4af60 100644 --- a/firmware/controllers/trigger/trigger_central.cpp +++ b/firmware/controllers/trigger/trigger_central.cpp @@ -676,17 +676,18 @@ void TriggerCentral::handleShaftSignal(trigger_event_e signal, efitick_t timesta float map = Sensor::getOrZero(SensorType::Map); if (map > mapCamPrevCycleValue) { - mapCamCounter++; +#if WITH_TS_STATE + engine->outputChannels.TEMPLOG_map_peak++; +#endif // WITH_TS_STATE efitick_t stamp = getTimeNowNt(); hwHandleVvtCamSignal(TV_RISE, stamp, /*index*/0); hwHandleVvtCamSignal(TV_FALL, stamp, /*index*/0); } -#if EFI_TUNER_STUDIO +#if WITH_TS_STATE engine->outputChannels.TEMPLOG_MAP_INSTANT_AVERAGE = map; - engine->outputChannels.TEMPLOG_map_peak = mapCamCounter; engine->outputChannels.TEMPLOG_MAP_AT_DIFF = map - mapCamPrevCycleValue; -#endif // EFI_TUNER_STUDIO +#endif // WITH_TS_STATE mapCamPrevCycleValue = map; diff --git a/firmware/controllers/trigger/trigger_central.h b/firmware/controllers/trigger/trigger_central.h index 31805894ca..8f4c693bb0 100644 --- a/firmware/controllers/trigger/trigger_central.h +++ b/firmware/controllers/trigger/trigger_central.h @@ -80,7 +80,6 @@ public: angle_t mapCamPrevToothAngle = -1; float mapCamPrevCycleValue = 0; - uint8_t mapCamCounter = 0; /** * true if a recent configuration change has changed any of the trigger settings which diff --git a/java_console/io/src/main/java/com/rusefi/enums/engine_type_e.java b/java_console/io/src/main/java/com/rusefi/enums/engine_type_e.java index e3ca6d62d6..4a7065a318 100644 --- a/java_console/io/src/main/java/com/rusefi/enums/engine_type_e.java +++ b/java_console/io/src/main/java/com/rusefi/enums/engine_type_e.java @@ -32,7 +32,7 @@ public enum engine_type_e { PROTEUS_LUA_DEMO, TEST_ENGINE, TEST_ISSUE_898, - UNUSED28, + TEST_CRANK_ENGINE, SACHS, UNUSED30, MRE_BOARD_NEW_TEST, diff --git a/unit_tests/tests/trigger/test_map_cam.cpp b/unit_tests/tests/trigger/test_map_cam.cpp index 0b38a46303..9c88470ceb 100644 --- a/unit_tests/tests/trigger/test_map_cam.cpp +++ b/unit_tests/tests/trigger/test_map_cam.cpp @@ -72,7 +72,7 @@ TEST(trigger, map_cam) { TEST(trigger, map_cam_by_magic_point) { - EngineTestHelper eth(TEST_ENGINE); + EngineTestHelper eth(TEST_CRANK_ENGINE); engineConfiguration->camInputs[0] = GPIOA_0; engineConfiguration->vvtMode[0] = VVT_MAP_V_TWIN_ANOTHER; @@ -82,13 +82,17 @@ TEST(trigger, map_cam_by_magic_point) { engineConfiguration->mapCamDetectionAnglePosition = 90; eth.smartFireTriggerEvents2(/*count*/10, /*delayMs*/200); - ASSERT_EQ( 150, GET_RPM()) << "RPM"; - ASSERT_EQ(1, engine->triggerCentral.mapCamCounter); + ASSERT_EQ( 75, GET_RPM()) << "RPM"; + + ASSERT_EQ(1, engine->outputChannels.TEMPLOG_map_peak); + ASSERT_EQ(0, engine->outputChannels.vvtSyncCounter); Sensor::setMockValue(SensorType::Map, 120); - eth.smartFireTriggerEvents2(/*count*/2, /*delayMs*/200); - ASSERT_EQ(2, engine->triggerCentral.mapCamCounter); + eth.smartFireTriggerEvents2(/*count*/4, /*delayMs*/200); + + ASSERT_EQ(2, engine->outputChannels.TEMPLOG_map_peak); + ASSERT_EQ(1, engine->outputChannels.vvtSyncCounter); }