diff --git a/firmware/config/engines/honda_accord.cpp b/firmware/config/engines/honda_accord.cpp index bc0c38fcac..96ef46e319 100644 --- a/firmware/config/engines/honda_accord.cpp +++ b/firmware/config/engines/honda_accord.cpp @@ -14,6 +14,10 @@ * set_engine_type 17 * 1+24 signal, JM Predule * + * + * set_engine_type 48 + * debug configuration to reproduce https://sourceforge.net/p/rusefi/tickets/319/ + * * @date Jan 12, 2014 * @author Andrey Belomutskiy, (c) 2012-2016 */ @@ -190,3 +194,13 @@ void setHondaAccordConfiguration1_24(DECLARE_ENGINE_PARAMETER_F) { engineConfiguration->trigger.type = TT_HONDA_ACCORD_1_24; setHondaAccordConfigurationCommon(PASS_ENGINE_PARAMETER_F); } + +void setHondaAccordConfiguration1_24_shifted(DECLARE_ENGINE_PARAMETER_F) { + engineConfiguration->engineType = HONDA_ACCORD_1_24_SHIFTED; + engineConfiguration->trigger.type = TT_HONDA_ACCORD_1_24_SHIFTED; + setHondaAccordConfigurationCommon(PASS_ENGINE_PARAMETER_F); + + // set_global_trigger_offset_angle 0 + engineConfiguration->globalTriggerAngleOffset = 0; + +} diff --git a/firmware/config/engines/honda_accord.h b/firmware/config/engines/honda_accord.h index 9e86151989..8481de4113 100644 --- a/firmware/config/engines/honda_accord.h +++ b/firmware/config/engines/honda_accord.h @@ -14,5 +14,6 @@ void setHondaAccordConfigurationTwoWires(DECLARE_ENGINE_PARAMETER_F); void setHondaAccordConfigurationThreeWires(DECLARE_ENGINE_PARAMETER_F); void setHondaAccordConfigurationDip(DECLARE_ENGINE_PARAMETER_F); void setHondaAccordConfiguration1_24(DECLARE_ENGINE_PARAMETER_F); +void setHondaAccordConfiguration1_24_shifted(DECLARE_ENGINE_PARAMETER_F); #endif /* HONDA_ACCORD_H_ */ diff --git a/firmware/controllers/algo/auto_generated_enums.cpp b/firmware/controllers/algo/auto_generated_enums.cpp index edd3f0749c..884020efbf 100644 --- a/firmware/controllers/algo/auto_generated_enums.cpp +++ b/firmware/controllers/algo/auto_generated_enums.cpp @@ -86,6 +86,8 @@ case HONDA_ACCORD_CD_DIP: return "HONDA_ACCORD_CD_DIP"; case HONDA_ACCORD_CD_TWO_WIRES: return "HONDA_ACCORD_CD_TWO_WIRES"; +case HONDA_ACCORD_1_24_SHIFTED: + return "HONDA_ACCORD_1_24_SHIFTED"; case MAZDA_323: return "MAZDA_323"; case MAZDA_626: @@ -159,6 +161,8 @@ case TT_HONDA_ACCORD_CD: return "TT_HONDA_ACCORD_CD"; case TT_HONDA_ACCORD_1_24: return "TT_HONDA_ACCORD_1_24"; +case TT_HONDA_ACCORD_1_24_SHIFTED: + return "ACCORD_1_24_SHIFTED"; case TT_DODGE_STRATUS: return "TT_DODGE_STRATUS"; case TT_36_2_2_2: diff --git a/firmware/controllers/algo/engine_configuration.cpp b/firmware/controllers/algo/engine_configuration.cpp index 99caadfc3b..c0eeaf4be0 100644 --- a/firmware/controllers/algo/engine_configuration.cpp +++ b/firmware/controllers/algo/engine_configuration.cpp @@ -882,6 +882,9 @@ void resetConfigurationExt(Logging * logger, engine_type_e engineType DECLARE_EN case HONDA_ACCORD_CD_TWO_WIRES: setHondaAccordConfiguration1_24(PASS_ENGINE_PARAMETER_F); break; + case HONDA_ACCORD_1_24_SHIFTED: + setHondaAccordConfiguration1_24_shifted(PASS_ENGINE_PARAMETER_F); + break; case HONDA_ACCORD_CD_DIP: setHondaAccordConfigurationDip(PASS_ENGINE_PARAMETER_F); break; diff --git a/firmware/controllers/algo/rusefi_enums.h b/firmware/controllers/algo/rusefi_enums.h index fe70bff673..20a35b0ffa 100644 --- a/firmware/controllers/algo/rusefi_enums.h +++ b/firmware/controllers/algo/rusefi_enums.h @@ -138,7 +138,9 @@ typedef enum { MAZDA_MIATA_2003 = 47, - ET_UNUSED = 48, + HONDA_ACCORD_1_24_SHIFTED = 48, + + ET_UNUSED = 49, Force_4b_engine_type = ENUM_32_BITS, } engine_type_e; @@ -203,7 +205,13 @@ typedef enum { TT_MIATA_VVT = 33, - TT_UNUSED = 34, // this is used if we want to iterate over all trigger types + /** + * This is a different version of TT_HONDA_ACCORD_1_24 + * See https://sourceforge.net/p/rusefi/tickets/319/ + */ + TT_HONDA_ACCORD_1_24_SHIFTED = 34, + + TT_UNUSED = 35, // this is used if we want to iterate over all trigger types Force_4b_trigger_type = ENUM_32_BITS, } trigger_type_e; diff --git a/firmware/controllers/settings.cpp b/firmware/controllers/settings.cpp index ff83925a72..cc4865ae82 100644 --- a/firmware/controllers/settings.cpp +++ b/firmware/controllers/settings.cpp @@ -135,6 +135,8 @@ const char* getConfigurationName(engine_type_e engineType) { return "Accord3"; case HONDA_ACCORD_CD_TWO_WIRES: return "Accord2"; + case HONDA_ACCORD_1_24_SHIFTED: + return "Accord24sh"; case HONDA_ACCORD_CD_DIP: return "HondaD"; case FORD_INLINE_6_1995: diff --git a/firmware/controllers/trigger/trigger_decoder.cpp b/firmware/controllers/trigger/trigger_decoder.cpp index 9646a3096a..df4c098b97 100644 --- a/firmware/controllers/trigger/trigger_decoder.cpp +++ b/firmware/controllers/trigger/trigger_decoder.cpp @@ -555,6 +555,10 @@ void TriggerShape::initializeTriggerShape(Logging *logger DECLARE_ENGINE_PARAMET configureHondaAccordCD(triggerShape, true, false, T_PRIMARY, T_PRIMARY, 10); break; + case TT_HONDA_ACCORD_1_24_SHIFTED: + configureHondaAccordShifter(triggerShape); + break; + case TT_HONDA_ACCORD_CD_DIP: configureHondaAccordCDDip(triggerShape); break; diff --git a/firmware/controllers/trigger/trigger_honda.cpp b/firmware/controllers/trigger/trigger_honda.cpp index 8ff010e084..7a5b8ed6f9 100644 --- a/firmware/controllers/trigger/trigger_honda.cpp +++ b/firmware/controllers/trigger/trigger_honda.cpp @@ -243,5 +243,29 @@ void configureHondaCbr600custom(TriggerShape *s DECLARE_ENGINE_PARAMETER_S) { } +void configureHondaAccordShifter(TriggerShape *s) { + float w = 720 / 2 / 24; + s->initialize(FOUR_STROKE_CAM_SENSOR, true); + + float sb = S24; + + s->addEvent(S24 + 0.001, T_PRIMARY, TV_RISE); + s->addEvent(S24 + 0.1, T_SECONDARY, TV_RISE); + sb += S24; + s->addEvent(sb, T_SECONDARY, TV_FALL); + sb += S24; + + s->addEvent(S24 + 22, T_PRIMARY, TV_FALL); + + + for (int i = 0;i<23;i++) + sb = addAccordPair(s, sb, T_SECONDARY); + + + + s->useOnlyPrimaryForSync = true; + s->isSynchronizationNeeded = false; +} + diff --git a/firmware/controllers/trigger/trigger_honda.h b/firmware/controllers/trigger/trigger_honda.h index bfcfa5bcb2..052f74a7ca 100644 --- a/firmware/controllers/trigger/trigger_honda.h +++ b/firmware/controllers/trigger/trigger_honda.h @@ -11,6 +11,7 @@ #include "trigger_structure.h" void configureHondaAccordCDDip(TriggerShape *s); +void configureHondaAccordShifter(TriggerShape *s); void configureHondaAccordCD(TriggerShape *s, bool withOneEventSignal, bool withFourEventSignal, trigger_wheel_e const oneEventWave, trigger_wheel_e const fourEventWave,