auto-sync

This commit is contained in:
rusEfi 2015-03-22 13:12:45 -05:00
parent b41b708d81
commit 887b641f5c
12 changed files with 46 additions and 39 deletions

View File

@ -711,18 +711,21 @@ void prepareShapes(DECLARE_ENGINE_PARAMETER_F) {
#endif #endif
void setOperationMode(engine_configuration_s *engineConfiguration, operation_mode_e mode) { float getRpmMultiplier(operation_mode_e mode) {
if (mode == FOUR_STROKE_CAM_SENSOR) { if (mode == FOUR_STROKE_CAM_SENSOR) {
engineConfiguration->rpmMultiplier = 0.5; return 0.5;
} else if (mode == FOUR_STROKE_CRANK_SENSOR) { } else if (mode == FOUR_STROKE_CRANK_SENSOR) {
engineConfiguration->rpmMultiplier = 1; return 1;
} }
return 1;
}
void setOperationMode(engine_configuration_s *engineConfiguration, operation_mode_e mode) {
engineConfiguration->operationMode = mode;
} }
operation_mode_e getOperationMode(engine_configuration_s const *engineConfiguration) { operation_mode_e getOperationMode(engine_configuration_s const *engineConfiguration) {
if (engineConfiguration->rpmMultiplier == 1) return engineConfiguration->operationMode;
return FOUR_STROKE_CRANK_SENSOR;
return FOUR_STROKE_CAM_SENSOR;
} }
void commonFrankensoAnalogInputs(engine_configuration_s *engineConfiguration) { void commonFrankensoAnalogInputs(engine_configuration_s *engineConfiguration) {

View File

@ -35,6 +35,7 @@
* todo: re-arrange this structure one we have a stable code version * todo: re-arrange this structure one we have a stable code version
*/ */
float getRpmMultiplier(operation_mode_e mode);
void setOperationMode(engine_configuration_s *engineConfiguration, operation_mode_e mode); void setOperationMode(engine_configuration_s *engineConfiguration, operation_mode_e mode);
operation_mode_e getOperationMode(engine_configuration_s const *engineConfiguration); operation_mode_e getOperationMode(engine_configuration_s const *engineConfiguration);

View File

@ -1,4 +1,4 @@
// this section was generated by config_definition.jar on Tue Mar 17 17:32:00 EDT 2015 // this section was generated by config_definition.jar on Sun Mar 22 13:03:07 EDT 2015
// begin // begin
#include "rusefi_types.h" #include "rusefi_types.h"
typedef struct { typedef struct {
@ -789,10 +789,9 @@ typedef struct {
*/ */
ignition_mode_e ignitionMode; ignition_mode_e ignitionMode;
/** /**
* todo: refactor this, see operation_mode_e
* offset 736 * offset 736
*/ */
float rpmMultiplier; operation_mode_e operationMode;
/** /**
* offset 740 * offset 740
*/ */
@ -1185,4 +1184,4 @@ typedef struct {
} engine_configuration_s; } engine_configuration_s;
// end // end
// this section was generated by config_definition.jar on Tue Mar 17 17:32:00 EDT 2015 // this section was generated by config_definition.jar on Sun Mar 22 13:03:07 EDT 2015

View File

@ -12,7 +12,7 @@
#include "engine_configuration.h" #include "engine_configuration.h"
#include "engine.h" #include "engine.h"
#define FLASH_DATA_VERSION 7442 #define FLASH_DATA_VERSION 7500
void readFromFlash(void); void readFromFlash(void);
void initFlash(Logging *sharedLogger, Engine *engine); void initFlash(Logging *sharedLogger, Engine *engine);

View File

@ -214,8 +214,8 @@ void printConfiguration(engine_configuration_s *engineConfiguration) {
// appendMsgPrefix(&logger); // appendMsgPrefix(&logger);
scheduleMsg(&logger, "rpmHardLimit: %d/rpmMultiplier=%f", engineConfiguration->rpmHardLimit, scheduleMsg(&logger, "rpmHardLimit: %d/operationMode=%d", engineConfiguration->rpmHardLimit,
engineConfiguration->rpmMultiplier); engineConfiguration->operationMode);
scheduleMsg(&logger, "tpsMin: %d/tpsMax: %d", engineConfiguration->tpsMin, engineConfiguration->tpsMax); scheduleMsg(&logger, "tpsMin: %d/tpsMax: %d", engineConfiguration->tpsMin, engineConfiguration->tpsMax);
@ -353,8 +353,8 @@ static void setAnalogChartMode(int value) {
doPrintConfiguration(engine); doPrintConfiguration(engine);
} }
static void setRpmMultiplier(int value) { static void setOM(int value) {
engineConfiguration->rpmMultiplier = value; engineConfiguration->operationMode = (operation_mode_e)value;
doPrintConfiguration(engine); doPrintConfiguration(engine);
} }
@ -903,7 +903,7 @@ void initSettings(engine_configuration_s *engineConfiguration) {
addConsoleActionI("set_idle_pin_mode", setIdlePinMode); addConsoleActionI("set_idle_pin_mode", setIdlePinMode);
addConsoleActionI("set_fuel_pump_pin_mode", setFuelPumpPinMode); addConsoleActionI("set_fuel_pump_pin_mode", setFuelPumpPinMode);
addConsoleActionI("set_malfunction_indicator_pin_mode", setMalfunctionIndicatorPinMode); addConsoleActionI("set_malfunction_indicator_pin_mode", setMalfunctionIndicatorPinMode);
addConsoleActionI("set_rpm_multiplier", setRpmMultiplier); addConsoleActionI("set_operation_mode", setOM);
// todo: start saving values into flash right away? // todo: start saving values into flash right away?
addConsoleActionF("set_global_fuel_correction", setGlobalFuelCorrection); addConsoleActionF("set_global_fuel_correction", setGlobalFuelCorrection);

View File

@ -231,7 +231,6 @@ float getEngineCycle(operation_mode_e operationMode) {
return operationMode == TWO_STROKE ? 360 : 720; return operationMode == TWO_STROKE ? 360 : 720;
} }
void initializeSkippedToothTriggerShapeExt(TriggerShape *s, int totalTeethCount, int skippedCount, void initializeSkippedToothTriggerShapeExt(TriggerShape *s, int totalTeethCount, int skippedCount,
operation_mode_e operationMode) { operation_mode_e operationMode) {
efiAssertVoid(totalTeethCount > 0, "totalTeethCount is zero"); efiAssertVoid(totalTeethCount > 0, "totalTeethCount is zero");
@ -250,19 +249,20 @@ void initializeSkippedToothTriggerShapeExt(TriggerShape *s, int totalTeethCount,
float engineCycle = getEngineCycle(operationMode); float engineCycle = getEngineCycle(operationMode);
for (int i = 0; i < totalTeethCount - skippedCount - 1; i++) { for (int i = 0; i < totalTeethCount - skippedCount - 1; i++) {
float angleDown = 720.0 / totalTeethCount * (i + toothWidth); float angleDown = engineCycle / totalTeethCount * (i + toothWidth);
float angleUp = 720.0 / totalTeethCount * (i + 1); float angleUp = engineCycle / totalTeethCount * (i + 1);
s->addEvent(angleDown, T_PRIMARY, TV_HIGH); s->addEvent(angleDown, T_PRIMARY, TV_HIGH);
s->addEvent(angleUp, T_PRIMARY, TV_LOW); s->addEvent(angleUp, T_PRIMARY, TV_LOW);
} }
float angleDown = 720.0 / totalTeethCount * (totalTeethCount - skippedCount - 1 + toothWidth); float angleDown = engineCycle / totalTeethCount * (totalTeethCount - skippedCount - 1 + toothWidth);
s->addEvent(angleDown, T_PRIMARY, TV_HIGH); s->addEvent(angleDown, T_PRIMARY, TV_HIGH);
s->addEvent(720, T_PRIMARY, TV_LOW); s->addEvent(engineCycle, T_PRIMARY, TV_LOW);
} }
static void configureOnePlusOne(TriggerShape *s) { static void configureOnePlusOne(TriggerShape *s, operation_mode_e operationMode) {
float engineCycle = getEngineCycle(operationMode);
s->reset(FOUR_STROKE_CAM_SENSOR, true); s->reset(FOUR_STROKE_CAM_SENSOR, true);
s->addEvent(180, T_PRIMARY, TV_HIGH); s->addEvent(180, T_PRIMARY, TV_HIGH);
@ -322,7 +322,7 @@ void initializeTriggerShape(Logging *logger, engine_configuration_s const *engin
break; break;
case TT_ONE_PLUS_ONE: case TT_ONE_PLUS_ONE:
configureOnePlusOne(triggerShape); configureOnePlusOne(triggerShape, engineConfiguration->operationMode);
break; break;
case TT_MAZDA_SOHC_4: case TT_MAZDA_SOHC_4:

View File

@ -89,6 +89,7 @@ private:
bool thirdWheelState; bool thirdWheelState;
}; };
float getEngineCycle(operation_mode_e operationMode);
void initializeSkippedToothTriggerShapeExt(TriggerShape *s, int totalTeethCount, int skippedCount, operation_mode_e operationMode); void initializeSkippedToothTriggerShapeExt(TriggerShape *s, int totalTeethCount, int skippedCount, operation_mode_e operationMode);
uint32_t findTriggerZeroEventIndex(TriggerShape * shape, trigger_config_s const*triggerConfig DECLARE_ENGINE_PARAMETER_S); uint32_t findTriggerZeroEventIndex(TriggerShape * shape, trigger_config_s const*triggerConfig DECLARE_ENGINE_PARAMETER_S);

View File

@ -86,7 +86,8 @@ void setTriggerEmulatorRPM(int rpm, Engine *engine) {
if (rpm == 0) { if (rpm == 0) {
triggerSignal.periodNt = NAN; triggerSignal.periodNt = NAN;
} else { } else {
float gRpm = rpm * engineConfiguration->rpmMultiplier / 60.0; // per minute converted to per second float rpmM = getRpmMultiplier(engineConfiguration->operationMode);
float gRpm = rpm * rpmM / 60.0; // per minute converted to per second
triggerSignal.periodNt = US2NT(frequency2periodUs(gRpm)); triggerSignal.periodNt = US2NT(frequency2periodUs(gRpm));
} }
#if EFI_WAVE_CHART #if EFI_WAVE_CHART

View File

@ -213,11 +213,13 @@ void TriggerShape::addEvent(float angle, trigger_wheel_e const waveIndex, trigge
state = stateParam; state = stateParam;
} }
float engineCycle = getEngineCycle(operationMode);
/** /**
* While '720' value works perfectly it has not much sense for crank sensor-only scenario. * While '720' value works perfectly it has not much sense for crank sensor-only scenario.
* todo: accept angle as a value in the 0..1 range? * todo: accept angle as a value in the 0..1 range?
*/ */
angle /= 720; angle /= engineCycle;
expectedEventCount[waveIndex]++; expectedEventCount[waveIndex]++;

View File

@ -186,7 +186,7 @@ int canSleepPeriod;;"ms", 1, 0, 0, 1000.0, 2
custom ignition_mode_e 4 bits, U32, @OFFSET@, [0:1], "One coil", "Individual Coils", "Wasted", "INVALID" custom ignition_mode_e 4 bits, U32, @OFFSET@, [0:1], "One coil", "Individual Coils", "Wasted", "INVALID"
ignition_mode_e ignitionMode; ignition_mode_e ignitionMode;
float rpmMultiplier;todo: refactor this, see operation_mode_e operation_mode_e operationMode
custom display_mode_e 4 bits, U32, @OFFSET@, [0:1], "none", "hd44780", "hd44780 over pcf8574", "INVALID" custom display_mode_e 4 bits, U32, @OFFSET@, [0:1], "none", "hd44780", "hd44780 over pcf8574", "INVALID"
display_mode_e displayMode; display_mode_e displayMode;

View File

@ -41,7 +41,7 @@ enable2ndByteCanID = false
; see PAGE_0_SIZE in C source code ; see PAGE_0_SIZE in C source code
; CONFIG_DEFINITION_START ; CONFIG_DEFINITION_START
; this section was generated by ConfigDefinition.jar on Tue Mar 17 17:32:01 EDT 2015 ; this section was generated by ConfigDefinition.jar on Sun Mar 22 13:03:09 EDT 2015
page = 1 page = 1
engineType = bits, S32, 0, [0:2], "AUDI_AAN", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "FORD_FIESTA", "NISSAN_PRIMERA", "HONDA_ACCORD", "FORD_INLINE_6_1995", "GY6_139QMB" engineType = bits, S32, 0, [0:2], "AUDI_AAN", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "FORD_FIESTA", "NISSAN_PRIMERA", "HONDA_ACCORD", "FORD_INLINE_6_1995", "GY6_139QMB"
@ -51,9 +51,9 @@ page = 1
injector_battLagCorrBins = array, F32, 16, [8], "V", 1, 0, 0.0, 20.0, 2 injector_battLagCorrBins = array, F32, 16, [8], "V", 1, 0, 0.0, 20.0, 2
injector_battLagCorr = array, F32, 48, [8], "ms/V", 1, 0, 0.0, 50.0, 2 injector_battLagCorr = array, F32, 48, [8], "ms/V", 1, 0, 0.0, 50.0, 2
cltFuelCorrBins = array, F32, 80, [16], "C", 1, 0, -100.0, 250.0, 2 cltFuelCorrBins = array, F32, 80, [16], "C", 1, 0, -100.0, 250.0, 2
cltFuelCorr = array, F32, 144, [16], "coeff", 1, 0, 0.0, 5.0, 2 cltFuelCorr = array, F32, 144, [16], "%", 100, 0, 0.0, 500.0, 2
iatFuelCorrBins = array, F32, 208, [16], "C", 1, 0, -100.0, 250.0, 2 iatFuelCorrBins = array, F32, 208, [16], "C", 1, 0, -100.0, 250.0, 2
iatFuelCorr = array, F32, 272, [16], "coeff", 1, 0, 0.0, 5.0, 2 iatFuelCorr = array, F32, 272, [16], "%", 100, 0, 0.0, 500.0, 2
;skipping directSelfStimulation offset 336 ;skipping directSelfStimulation offset 336
tpsMin = scalar, S16, 338, "ADC", 1, 0, 0, 1023, 0 tpsMin = scalar, S16, 338, "ADC", 1, 0, 0, 1023, 0
tpsMax = scalar, S16, 340, "ADC", 1, 0, 0, 1023, 0 tpsMax = scalar, S16, 340, "ADC", 1, 0, 0, 1023, 0
@ -116,7 +116,7 @@ page = 1
canNbcType = bits, U32, 724, [0:1], "BMW", "FIAT", "VAG" , "INVALID" canNbcType = bits, U32, 724, [0:1], "BMW", "FIAT", "VAG" , "INVALID"
canSleepPeriod = scalar, S32, 728, "ms", 1, 0, 0, 1000.0, 2 canSleepPeriod = scalar, S32, 728, "ms", 1, 0, 0, 1000.0, 2
ignitionMode = bits, U32, 732, [0:1], "One coil", "Individual Coils", "Wasted", "INVALID" ignitionMode = bits, U32, 732, [0:1], "One coil", "Individual Coils", "Wasted", "INVALID"
;skipping rpmMultiplier offset 736 ;skipping operationMode offset 736
displayMode = bits, U32, 740, [0:1], "none", "hd44780", "hd44780 over pcf8574", "INVALID" displayMode = bits, U32, 740, [0:1], "none", "hd44780", "hd44780 over pcf8574", "INVALID"
logFormat = bits, U32, 744, [0:0], "native", "Mega Log Viewer" logFormat = bits, U32, 744, [0:0], "native", "Mega Log Viewer"
firmwareVersion = scalar, S32, 748, "index", 1, 0, 0, 300, 0 firmwareVersion = scalar, S32, 748, "index", 1, 0, 0, 300, 0
@ -413,9 +413,9 @@ page = 1
isManualSpinningMode = bits, U32, 4888, [12:12], "false", "true" isManualSpinningMode = bits, U32, 4888, [12:12], "false", "true"
twoWireBatch = bits, U32, 4888, [13:13], "false", "true" twoWireBatch = bits, U32, 4888, [13:13], "false", "true"
digitalChartSize = scalar, U32, 4892, "count", 1, 0, 0, 300, 0 digitalChartSize = scalar, U32, 4892, "count", 1, 0, 0, 300, 0
crankingFuelCoef = array, F32, 4896, [8], "coeff", 1, 0, 0.0, 7.0, 2 crankingFuelCoef = array, F32, 4896, [8], "%", 100, 0, 0.0, 700.0, 2
crankingFuelBins = array, F32, 4928, [8], "C", 1, 0, -80.0, 170.0, 2 crankingFuelBins = array, F32, 4928, [8], "C", 1, 0, -80.0, 170.0, 2
crankingCycleCoef = array, F32, 4960, [8], "coeff", 1, 0, 0.0, 5.0, 2 crankingCycleCoef = array, F32, 4960, [8], "%", 100, 0, 0.0, 500.0, 2
crankingCycleBins = array, F32, 4992, [8], "C", 1, 0, -80.0, 170.0, 2 crankingCycleBins = array, F32, 4992, [8], "C", 1, 0, -80.0, 170.0, 2
ignitionDwellForCrankingMs = scalar, F32, 5024, "ms", 1, 0, 0, 200, 1 ignitionDwellForCrankingMs = scalar, F32, 5024, "ms", 1, 0, 0, 200, 1
;skipping targetIdleRpm offset 5028 ;skipping targetIdleRpm offset 5028
@ -468,7 +468,7 @@ page = 1
;skipping unused3 offset 5208 ;skipping unused3 offset 5208
accelLength = scalar, S32, 5780, "len", 1, 0, 0, 200, 3 accelLength = scalar, S32, 5780, "len", 1, 0, 0, 200, 3
deaccelEnrichmentThreshold = scalar, F32, 5784, "roc", 1, 0, 0, 200, 3 deaccelEnrichmentThreshold = scalar, F32, 5784, "roc", 1, 0, 0, 200, 3
deaccelEnrichmentMultiplier = scalar, F32, 5788, "coeff", 1, 0, 0, 2, 3 deaccelEnrichmentMultiplier = scalar, F32, 5788, "coeff", 1, 0, 0, 200, 3
accelEnrichmentThreshold = scalar, F32, 5792, "roc", 1, 0, 0, 200, 3 accelEnrichmentThreshold = scalar, F32, 5792, "roc", 1, 0, 0, 200, 3
accelEnrichmentMultiplier = scalar, F32, 5796, "coeff", 1, 0, 0, 200, 3 accelEnrichmentMultiplier = scalar, F32, 5796, "coeff", 1, 0, 0, 200, 3
timingMultiplier = array, U08, 5800, [200],"char", 1, 0, 0.0, 3.0, 2 timingMultiplier = array, U08, 5800, [200],"char", 1, 0, 0.0, 3.0, 2
@ -481,11 +481,11 @@ page = 1
ignitionTable = array, F32, 9400, [16x16],"deg", 1, 0, -360, 360, 2 ignitionTable = array, F32, 9400, [16x16],"deg", 1, 0, -360, 360, 2
ignitionLoadBins = array, F32, 10424, [16], "Load", 1, 0.0, 0, 300.0, 2 ignitionLoadBins = array, F32, 10424, [16], "Load", 1, 0.0, 0, 300.0, 2
ignitionRpmBins = array, F32, 10488, [16], "RPM", 1, 0.0, 0, 18000.0, 2 ignitionRpmBins = array, F32, 10488, [16], "RPM", 1, 0.0, 0, 18000.0, 2
veTable = array, F32, 10552, [16x16],"coeff", 1, 0, 0, 200.0, 2 veTable = array, F32, 10552, [16x16],"%", 1, 0, 0, 200.0, 2
veLoadBins = array, F32, 11576, [16], "map", 1, 0.0, 0, 300.0, 2 veLoadBins = array, F32, 11576, [16], "%", 1, 0.0, 0, 300.0, 2
veRpmBins = array, F32, 11640, [16], "RPM", 1, 0.0, 0, 18000.0, 2 veRpmBins = array, F32, 11640, [16], "RPM", 1, 0.0, 0, 18000.0, 2
afrTable = array, F32, 11704, [16x16],"deg", 1, 0, 0, 25.0, 2 afrTable = array, F32, 11704, [16x16],"deg", 1, 0, 0, 25.0, 2
afrLoadBins = array, F32, 12728, [16], "map", 1, 0.0, 0, 300.0, 2 afrLoadBins = array, F32, 12728, [16], "%", 1, 0.0, 0, 300.0, 2
afrRpmBins = array, F32, 12792, [16], "RPM", 1, 0.0, 0, 18000.0, 2 afrRpmBins = array, F32, 12792, [16], "RPM", 1, 0.0, 0, 18000.0, 2
injectionPhase = array, F32, 12856, [16x16],"ms", 1, 0, 0.0, 300.0, 2 injectionPhase = array, F32, 12856, [16x16],"ms", 1, 0, 0.0, 300.0, 2
injPhaseLoadBins = array, F32, 13880, [16], "Load", 1, 0.0, 0, 300.0, 2 injPhaseLoadBins = array, F32, 13880, [16], "Load", 1, 0.0, 0, 300.0, 2
@ -917,7 +917,7 @@ fileVersion = { 20150314 }
field = "accel length", accelLength field = "accel length", accelLength
field = "Accel threshold", accelEnrichmentThreshold field = "Accel threshold", accelEnrichmentThreshold
field = "Accel Mult", accelEnrichmentMultiplier field = "Accel Mult", accelEnrichmentMultiplier
; field = "RPM Multiplier", rpmMultiplier ; field = "Operation Mode", operationMode
; Engine->Trigger configuration ; Engine->Trigger configuration
dialog = triggerConfiguration, "Trigger configuration" dialog = triggerConfiguration, "Trigger configuration"

View File

@ -30,7 +30,7 @@ void testEngineMath(void) {
Engine * engine = &eth.engine; Engine * engine = &eth.engine;
engine_configuration_s *engineConfiguration = engine->engineConfiguration; engine_configuration_s *engineConfiguration = engine->engineConfiguration;
engineConfiguration->rpmMultiplier = 0.5; engineConfiguration->operationMode = FOUR_STROKE_CAM_SENSOR;
assertEqualsM("600 RPM", 50, getOneDegreeTimeMs(600) * 180); assertEqualsM("600 RPM", 50, getOneDegreeTimeMs(600) * 180);
assertEqualsM("6000 RPM", 5, getOneDegreeTimeMs(6000) * 180); assertEqualsM("6000 RPM", 5, getOneDegreeTimeMs(6000) * 180);