From ce550aaa3d0aed4531ab9adbe62aaf43e0f4259c Mon Sep 17 00:00:00 2001 From: Andrey Date: Wed, 16 Nov 2022 15:45:32 -0500 Subject: [PATCH] new trigger wheel shape for Benelli 3-cylinder engines #4744 --- .../algo/auto_generated_enginetypes.cpp | 4 ++-- firmware/controllers/algo/engine_types.h | 2 +- .../controllers/trigger/decoders/trigger_misc.cpp | 14 ++++++++++++++ .../trigger/decoders/trigger_structure.cpp | 2 +- firmware/integration/rusefi_config.txt | 2 +- 5 files changed, 19 insertions(+), 5 deletions(-) diff --git a/firmware/controllers/algo/auto_generated_enginetypes.cpp b/firmware/controllers/algo/auto_generated_enginetypes.cpp index ddbdacdf5b..26f46c6e69 100644 --- a/firmware/controllers/algo/auto_generated_enginetypes.cpp +++ b/firmware/controllers/algo/auto_generated_enginetypes.cpp @@ -376,8 +376,8 @@ case TT_3_1_CAM: return "TT_3_1_CAM"; case TT_60_2_VW: return "TT_60_2_VW"; -case TT_BENELLI: - return "TT_BENELLI"; +case TT_BENELLI_TRE: + return "TT_BENELLI_TRE"; case TT_CHRYSLER_NGC_36_2_2: return "TT_CHRYSLER_NGC_36_2_2"; case TT_DAIHATSU: diff --git a/firmware/controllers/algo/engine_types.h b/firmware/controllers/algo/engine_types.h index 62a83e17fd..dc444190b4 100644 --- a/firmware/controllers/algo/engine_types.h +++ b/firmware/controllers/algo/engine_types.h @@ -356,7 +356,7 @@ typedef enum { */ TT_60_2_VW = 20, - TT_BENELLI = 21, + TT_BENELLI_TRE = 21, TT_DODGE_STRATUS = 22, diff --git a/firmware/controllers/trigger/decoders/trigger_misc.cpp b/firmware/controllers/trigger/decoders/trigger_misc.cpp index fc7437281b..70b7a1a62a 100644 --- a/firmware/controllers/trigger/decoders/trigger_misc.cpp +++ b/firmware/controllers/trigger/decoders/trigger_misc.cpp @@ -163,4 +163,18 @@ void configureBarra3plus1cam(TriggerWaveform *s) { void configureBenelli(TriggerWaveform *s) { s->initialize(FOUR_STROKE_CRANK_SENSOR, SyncEdge::RiseOnly); + constexpr float magic = 15; + + float angle = 3 * magic; + + s->addEvent360(angle / 2 /* 22.5 */, TriggerValue::RISE); + s->addEvent360(angle /* 45 */, TriggerValue::FALL); + + for (int i = 0;i< 24 - 3;i++) { + angle += magic / 2; + s->addEvent360(angle, TriggerValue::RISE); + + angle += magic / 2; + s->addEvent360(angle, TriggerValue::FALL); + } } diff --git a/firmware/controllers/trigger/decoders/trigger_structure.cpp b/firmware/controllers/trigger/decoders/trigger_structure.cpp index bcd689ffb6..f2fb595c96 100644 --- a/firmware/controllers/trigger/decoders/trigger_structure.cpp +++ b/firmware/controllers/trigger/decoders/trigger_structure.cpp @@ -627,7 +627,7 @@ void TriggerWaveform::initializeTriggerWaveform(operation_mode_e triggerOperatio initializeMazdaSkyactivCam(this); break; - case TT_BENELLI: + case TT_BENELLI_TRE: configureBenelli(this); break; diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index e3cbba69d7..a6ce8ec021 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -583,7 +583,7 @@ adc_channel_e fuelLevelSensor;This is the processor pin that your fuel level sen struct trigger_config_s @brief Trigger wheel(s) configuration -#define trigger_type_e_enum "custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "INVALID", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Mercedes Two Segment", "Mitsubishi 4G93", "EZ30", "INVALID", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Benelli", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM 24x 5 degree", "Honda CBR 600", "INVALID", "Honda CBR 600 custom", "3/1 skipped", "Dodge Neon 2003 crank", "Miata NB", "INVALID", "INVALID", "Subaru 7+6", "Jeep 18-2-2-2", "12 tooth crank", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "INVALID", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "INVALID", "36/2", "Subaru SVX", "1+16", "Subaru 7 without 6", "INVALID", "TriTach", "GM 60/2/2/2", "Skoda Favorit", "Barra 3+1 Cam", "Kawa KX450F", "Nissan VQ35", "INVALID", "Nissan VQ30", "Nissan QR25", "Mitsubishi 3A92", "Subaru SVX Crank 1", "Subaru SVX Cam VVT", "Ford PIP", "Suzuki G13B", "Honda K 4+1", "Nissan MR18 Crank", "32/2", "36-2-1", "36-2-1-1", "INVALID", "INVALID", "GM 24x 3 degree", "trg75" +#define trigger_type_e_enum "custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "INVALID", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Mercedes Two Segment", "Mitsubishi 4G93", "EZ30", "INVALID", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Benelli Tre", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM 24x 5 degree", "Honda CBR 600", "INVALID", "Honda CBR 600 custom", "3/1 skipped", "Dodge Neon 2003 crank", "Miata NB", "INVALID", "INVALID", "Subaru 7+6", "Jeep 18-2-2-2", "12 tooth crank", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "INVALID", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "INVALID", "36/2", "Subaru SVX", "1+16", "Subaru 7 without 6", "INVALID", "TriTach", "GM 60/2/2/2", "Skoda Favorit", "Barra 3+1 Cam", "Kawa KX450F", "Nissan VQ35", "INVALID", "Nissan VQ30", "Nissan QR25", "Mitsubishi 3A92", "Subaru SVX Crank 1", "Subaru SVX Cam VVT", "Ford PIP", "Suzuki G13B", "Honda K 4+1", "Nissan MR18 Crank", "32/2", "36-2-1", "36-2-1-1", "INVALID", "INVALID", "GM 24x 3 degree", "trg75" custom trigger_type_e 4 bits, U32, @OFFSET@, [0:6], @@trigger_type_e_enum@@ trigger_type_e type;https://github.com/rusefi/rusefi/wiki/All-Supported-Triggers\nset trigger_type X