From 6798352dfd945d21787bc3fa52f4d44614e648ec Mon Sep 17 00:00:00 2001 From: rusefi Date: Tue, 7 Mar 2017 01:26:58 -0500 Subject: [PATCH] #368 progress --- firmware/controllers/trigger/spark_logic.cpp | 27 ++++++++++++++++++++ firmware/controllers/trigger/spark_logic.h | 2 ++ firmware/svnversion.h | 4 +-- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/firmware/controllers/trigger/spark_logic.cpp b/firmware/controllers/trigger/spark_logic.cpp index 4fe3a0a065..b6a3f3158c 100644 --- a/firmware/controllers/trigger/spark_logic.cpp +++ b/firmware/controllers/trigger/spark_logic.cpp @@ -354,3 +354,30 @@ void handleSpark(bool limitedSpark, uint32_t trgEventIndex, int rpm void initSparkLogic(Logging *sharedLogger) { logger = sharedLogger; } + +/** + * Number of sparks per physical coil + * @see getNumberOfInjections + */ +int getNumberOfSparks(ignition_mode_e mode DECLARE_ENGINE_PARAMETER_S) { + switch (mode) { + case IM_ONE_COIL: + return engineConfiguration->specs.cylindersCount; + case IM_INDIVIDUAL_COILS: + return 1; + case IM_WASTED_SPARK: + return 2; + default: + firmwareError(CUSTOM_ERR_6108, "Unexpected ignition_mode_e %d", mode); + return 1; + } +} + +/** + * @see getInjectorDutyCycle + */ +percent_t getCoilDutyCycle(int rpm DECLARE_ENGINE_PARAMETER_S) { + floatms_t totalPerCycle = 1/**getInjectionDuration(rpm PASS_ENGINE_PARAMETER)*/ * getNumberOfSparks(engineConfiguration->ignitionMode PASS_ENGINE_PARAMETER); + floatms_t engineCycleDuration = getCrankshaftRevolutionTimeMs(rpm) * (engineConfiguration->operationMode == TWO_STROKE ? 1 : 2); + return 100 * totalPerCycle / engineCycleDuration; +} diff --git a/firmware/controllers/trigger/spark_logic.h b/firmware/controllers/trigger/spark_logic.h index 9c90c5542f..79ac7c93bb 100644 --- a/firmware/controllers/trigger/spark_logic.h +++ b/firmware/controllers/trigger/spark_logic.h @@ -15,5 +15,7 @@ void handleSpark(bool limitedSpark, uint32_t trgEventIndex, int rpm DECLARE_ENGI void initSparkLogic(Logging *sharedLogger); void turnSparkPinHigh(IgnitionEvent *event); void turnSparkPinLow(IgnitionEvent *event); +int getNumberOfSparks(ignition_mode_e mode DECLARE_ENGINE_PARAMETER_S); +percent_t getCoilDutyCycle(int rpm DECLARE_ENGINE_PARAMETER_S); #endif /* CONTROLLERS_TRIGGER_SPARK_LOGIC_H_ */ diff --git a/firmware/svnversion.h b/firmware/svnversion.h index da2179333a..42c68a1de9 100644 --- a/firmware/svnversion.h +++ b/firmware/svnversion.h @@ -1,5 +1,5 @@ // This file was generated by Version2Header -// Mon Feb 27 13:00:19 EST 2017 +// Mon Mar 06 19:03:42 EST 2017 #ifndef VCS_VERSION -#define VCS_VERSION "13021" +#define VCS_VERSION "13123" #endif