From bbd855d62b0c32bffb57855237cbe467bd7eac9c Mon Sep 17 00:00:00 2001 From: Andrey Date: Sun, 8 Aug 2021 04:45:40 -0400 Subject: [PATCH] Nissan 4 cylinder QR trigger wheel #3118 --- .../controllers/algo/auto_generated_commonenum.cpp | 4 +++- firmware/controllers/algo/obd_error_codes.h | 1 + firmware/controllers/algo/rusefi_enums.h | 5 ++++- .../controllers/trigger/decoders/trigger_nissan.cpp | 11 +++++++++++ .../controllers/trigger/decoders/trigger_nissan.h | 1 + .../trigger/decoders/trigger_structure.cpp | 1 + 6 files changed, 21 insertions(+), 2 deletions(-) diff --git a/firmware/controllers/algo/auto_generated_commonenum.cpp b/firmware/controllers/algo/auto_generated_commonenum.cpp index 5e6b7bde68..c8d237bf20 100644 --- a/firmware/controllers/algo/auto_generated_commonenum.cpp +++ b/firmware/controllers/algo/auto_generated_commonenum.cpp @@ -1,6 +1,6 @@ #include "global.h" #include "rusefi_enums.h" -// was generated automatically by rusEFI tool from rusefi_enums.h // by enum2string.jar tool on Tue Aug 03 05:50:08 EDT 2021 +// was generated automatically by rusEFI tool from rusefi_enums.h // by enum2string.jar tool on Sun Aug 08 04:18:47 EDT 2021 // see also gen_config_and_enums.bat @@ -968,6 +968,8 @@ case TT_MIATA_VVT: return "TT_MIATA_VVT"; case TT_MITSUBISHI: return "TT_MITSUBISHI"; +case TT_NISSAN_QR25: + return "TT_NISSAN_QR25"; case TT_NISSAN_SR20VE: return "TT_NISSAN_SR20VE"; case TT_NISSAN_SR20VE_360: diff --git a/firmware/controllers/algo/obd_error_codes.h b/firmware/controllers/algo/obd_error_codes.h index 64021b67c0..d10dcad571 100644 --- a/firmware/controllers/algo/obd_error_codes.h +++ b/firmware/controllers/algo/obd_error_codes.h @@ -19,6 +19,7 @@ extern "C" // Back in the day we wanted enums to be 32 bit integers. // as of 2020 preference is with ' __attribute__ ((__packed__))' allowing one-byte enums +#define ENUM_16_BITS 60000 #define ENUM_32_BITS 2000000000 typedef enum { diff --git a/firmware/controllers/algo/rusefi_enums.h b/firmware/controllers/algo/rusefi_enums.h index c493d46cae..ca2d05591e 100644 --- a/firmware/controllers/algo/rusefi_enums.h +++ b/firmware/controllers/algo/rusefi_enums.h @@ -405,6 +405,8 @@ typedef enum { TT_NISSAN_VQ30 = TT_TT_NISSAN_VQ30, + TT_NISSAN_QR25 = TT_TT_NISSAN_QR25, + // do not forget to edit "#define trigger_type_e_enum" line in integration/rusefi_config.txt file to propogate new value to rusefi.ini TS project // do not forget to invoke "gen_config.bat" once you make changes to integration/rusefi_config.txt @@ -412,8 +414,9 @@ typedef enum { // // Another point: once you add a new trigger, run get_trigger_images.bat which would run rusefi_test.exe from unit_tests // - TT_UNUSED = 61, // this is used if we want to iterate over all trigger types + TT_UNUSED = 62, // this is used if we want to iterate over all trigger types + // todo: convert to ENUM_16_BITS? I can see 257 triggers but not 65K triggers Force_4_bytes_size_trigger_type = ENUM_32_BITS, } trigger_type_e; // TriggerProcessor.java has this "trigger_type_e" name hard-coded! diff --git a/firmware/controllers/trigger/decoders/trigger_nissan.cpp b/firmware/controllers/trigger/decoders/trigger_nissan.cpp index d0ff8027c4..ff74ce17e1 100644 --- a/firmware/controllers/trigger/decoders/trigger_nissan.cpp +++ b/firmware/controllers/trigger/decoders/trigger_nissan.cpp @@ -143,6 +143,17 @@ void initializeNissanVQ35crank(TriggerWaveform *s) { } } +void initializeNissanQR25crank(TriggerWaveform *s) { + s->initialize(FOUR_STROKE_SYMMETRICAL_CRANK_SENSOR); + + float currentAngle = 20; + for (int i = 0;i < 16;i++) { + currentAngle += 10; + s->addEventAngle(currentAngle - 5, T_PRIMARY, TV_RISE); + s->addEventAngle(currentAngle, T_PRIMARY, TV_FALL); + } +} + static void addvq30tooth(TriggerWaveform *s, float angle) { s->addEvent360(angle - 4, T_PRIMARY, TV_RISE); s->addEvent360(angle, T_PRIMARY, TV_FALL); diff --git a/firmware/controllers/trigger/decoders/trigger_nissan.h b/firmware/controllers/trigger/decoders/trigger_nissan.h index ec5a5ee62c..42509559b1 100644 --- a/firmware/controllers/trigger/decoders/trigger_nissan.h +++ b/firmware/controllers/trigger/decoders/trigger_nissan.h @@ -14,5 +14,6 @@ void initializeNissanSR20VE_4_360(TriggerWaveform *s); void initializeNissanVQvvt(TriggerWaveform *s); void initializeNissanVQ35crank(TriggerWaveform *s); +void initializeNissanQR25crank(TriggerWaveform *s); void initializeNissanVQ30cam(TriggerWaveform *s); diff --git a/firmware/controllers/trigger/decoders/trigger_structure.cpp b/firmware/controllers/trigger/decoders/trigger_structure.cpp index d7d54efe39..c3970cf4f8 100644 --- a/firmware/controllers/trigger/decoders/trigger_structure.cpp +++ b/firmware/controllers/trigger/decoders/trigger_structure.cpp @@ -552,6 +552,7 @@ void TriggerWaveform::initializeTriggerWaveform(operation_mode_e ambiguousOperat initializeNissanVQvvt(this); break; + case TT_NISSAN_QR25: case TT_NISSAN_VQ30: initializeNissanVQ30cam(this); break;