auto-sync

This commit is contained in:
rusEfi 2015-03-22 12:13:27 -05:00
parent 6697121f32
commit f1164af456
5 changed files with 13 additions and 2 deletions

View File

@ -17,6 +17,7 @@ void setSachs(engine_configuration_s *engineConfiguration) {
engineConfiguration->specs.cylindersCount = 1; engineConfiguration->specs.cylindersCount = 1;
engineConfiguration->engineCycle = 360; engineConfiguration->engineCycle = 360;
// setOperationMode(engineConfiguration, TWO_STROKE);
engineConfiguration->specs.firingOrder = FO_ONE_CYLINDER; engineConfiguration->specs.firingOrder = FO_ONE_CYLINDER;
/** /**

View File

@ -286,6 +286,8 @@ case FOUR_STROKE_CAM_SENSOR:
return "FOUR_STROKE_CAM_SENSOR"; return "FOUR_STROKE_CAM_SENSOR";
case FOUR_STROKE_CRANK_SENSOR: case FOUR_STROKE_CRANK_SENSOR:
return "FOUR_STROKE_CRANK_SENSOR"; return "FOUR_STROKE_CRANK_SENSOR";
case TWO_STROKE:
return "TWO_STROKE";
case Force_4b_operation_mode_e: case Force_4b_operation_mode_e:
return "Force_4b_operation_mode_e"; return "Force_4b_operation_mode_e";
case OM_NONE: case OM_NONE:

View File

@ -279,6 +279,7 @@ typedef enum {
OM_NONE = 0, OM_NONE = 0,
FOUR_STROKE_CRANK_SENSOR = 1, FOUR_STROKE_CRANK_SENSOR = 1,
FOUR_STROKE_CAM_SENSOR = 2, FOUR_STROKE_CAM_SENSOR = 2,
TWO_STROKE = 3,
Force_4b_operation_mode_e = ENUM_32_BITS, Force_4b_operation_mode_e = ENUM_32_BITS,
} operation_mode_e; } operation_mode_e;

View File

@ -165,8 +165,8 @@ void rpmShaftPositionCallback(trigger_event_e ckpSignalType, uint32_t index DECL
if (diffNt == 0) { if (diffNt == 0) {
rpmState->setRpmValue(NOISY_RPM); rpmState->setRpmValue(NOISY_RPM);
} else { } else {
// todo: interesting what is this *2 about? four stroke magic constant? int mult = engineConfiguration->engineCycle / 360;
int rpm = (int) (60 * US2NT(US_PER_SECOND_LL) * 2 / diffNt); int rpm = (int) (60 * US2NT(US_PER_SECOND_LL) * mult / diffNt);
rpmState->setRpmValue(rpm > UNREALISTIC_RPM ? NOISY_RPM : rpm); rpmState->setRpmValue(rpm > UNREALISTIC_RPM ? NOISY_RPM : rpm);
} }
} }

View File

@ -227,6 +227,11 @@ void TriggerState::decodeTriggerEvent(trigger_event_e const signal, uint64_t now
toothed_previous_time = nowNt; toothed_previous_time = nowNt;
} }
float getEngineCycle(operation_mode_e operationMode) {
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");
@ -242,6 +247,8 @@ void initializeSkippedToothTriggerShapeExt(TriggerShape *s, int totalTeethCount,
float toothWidth = 0.5; float toothWidth = 0.5;
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 = 720.0 / totalTeethCount * (i + toothWidth);
float angleUp = 720.0 / totalTeethCount * (i + 1); float angleUp = 720.0 / totalTeethCount * (i + 1);