diff --git a/firmware/controllers/trigger/trigger_central.cpp b/firmware/controllers/trigger/trigger_central.cpp index dcdc166e21..0f3f099fc1 100644 --- a/firmware/controllers/trigger/trigger_central.cpp +++ b/firmware/controllers/trigger/trigger_central.cpp @@ -133,6 +133,14 @@ static void turnOffAllDebugFields(void *arg) { } static angle_t adjustCrankPhase(int camIndex) { + float maxSyncThreshold = engineConfiguration->maxCamPhaseResolveRpm; + if (maxSyncThreshold != 0 && Sensor::getOrZero(SensorType::Rpm) > maxSyncThreshold) { + // The user has elected to stop trying to resolve crank phase after some RPM. + // Maybe their cam sensor only works at low RPM or something. + // Anyway, don't try to change crank phase at all, and return that we made no change. + return 0; + } + TriggerCentral *tc = &engine->triggerCentral; operation_mode_e operationMode = engine->getOperationMode(); diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index 6cd4034059..6ee5256842 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -1429,7 +1429,9 @@ tChargeMode_e tChargeMode; float[GAP_TRACKING_LENGTH iterate] triggerGapOverrideFrom;;"from", 1, 0, 0, 20, 2 - int8_t[12] unused4080;;"",1,0,0,0,0 + uint8_t autoscale maxCamPhaseResolveRpm;Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank.;"rpm", 50, 0, 0, 12500, 0 + + int8_t[11] unused4080;;"",1,0,0,0,0 float[GAP_TRACKING_LENGTH iterate] triggerGapOverrideTo;;"to", 1, 0, 0, 20, 2 diff --git a/firmware/tunerstudio/rusefi.input b/firmware/tunerstudio/rusefi.input index 39e37d0deb..077aecc72c 100644 --- a/firmware/tunerstudio/rusefi.input +++ b/firmware/tunerstudio/rusefi.input @@ -1989,9 +1989,10 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@\x00\x31\x00\x00" field = "#Set offset so VVT indicates 0 degrees in default position" field = "VVT offset bank 1 intake", vvtOffsets1, { camInputs1 != 0 } field = "VVT offset bank 1 exhaust", vvtOffsets2, { camInputs2 != 0 } - field = "VVT offset bank 2 intake", vvtOffsets3, { camInputs3 != 0 } + field = "VVT offset bank 2 intake", vvtOffsets3, { camInputs3 != 0 } field = "VVT offset bank 2 exhaust", vvtOffsets4, { camInputs4 != 0 } - field = "Require CAM/VVT sync for ignition", isPhaseSyncRequiredForIgnition + field = "Require CAM/VVT sync for ignition", isPhaseSyncRequiredForIgnition + field = "Maximum cam/VVT sync RPM", maxCamPhaseResolveRpm field = "Print verbose VVT sync details to console",verboseVVTDecoding field = "Print verbose trigger sync to console", verboseTriggerSynchDetails field = "Do not print messages in case of sync error", silentTriggerError