diff --git a/locales/en/messages.json b/locales/en/messages.json index c9bf1edb..4e4cb0a8 100644 --- a/locales/en/messages.json +++ b/locales/en/messages.json @@ -3917,7 +3917,7 @@ "message": "Dynamic Notch Filter tracks peak gyro noise frequencies and places one to five notch filters with their center at these frequencies on every axis." }, "pidTuningDynamicNotchFilterDisabledWarning": { - "message": "Notice: The dynamic notch filter is disabled. In order to configure and use it, please enable the 'DYNAMIC_FILTER' feature in the '$t(configurationFeatures.message)' section of the '$t(tabConfiguration.message)' tab." + "message": "Notice: The dynamic notch filter is disabled. In order to configure and use it, please enable the 'DYNAMIC_FILTER' feature in the '$t(configurationFeatures.message)' section of the '$t(tabConfiguration.message)' tab. Also make sure the PID looprate is at least 2kHz." }, "pidTuningDynamicNotchRange": { "message": "Dynamic Notch Filter Range" diff --git a/src/js/tabs/pid_tuning.js b/src/js/tabs/pid_tuning.js index 9b9092cc..f21cf5c5 100644 --- a/src/js/tabs/pid_tuning.js +++ b/src/js/tabs/pid_tuning.js @@ -381,8 +381,14 @@ TABS.pid_tuning.initialize = function (callback) { $('.smartfeedforward').hide(); // Dynamic Notch Filter + const sampleRateHz = FC.CONFIG.sampleRateHz / FC.PID_ADVANCED_CONFIG.pid_process_denom; + + let isDynamicNotchActive = FC.FEATURE_CONFIG.features.isEnabled('DYNAMIC_FILTER'); + isDynamicNotchActive = isDynamicNotchActive || FC.FILTER_CONFIG.dyn_notch_count !== 0; + isDynamicNotchActive = isDynamicNotchActive && sampleRateHz >= 2000; + if (semver.lt(FC.CONFIG.apiVersion, API_VERSION_1_44)) { - if (FC.FEATURE_CONFIG.features.isEnabled('DYNAMIC_FILTER')) { + if (isDynamicNotchActive) { $('.dynamicNotch span.inputSwitch').hide(); } else { $('.dynamicNotch').hide(); @@ -409,12 +415,10 @@ TABS.pid_tuning.initialize = function (callback) { $('.dynamicNotchMaxHz').hide(); } - const dynamicNotchSwitch_e = $('.pid_filter input[id="dynamicNotchEnabled"]'); + $('.pid_filter input[id="dynamicNotchEnabled"]').on('change', function() { - dynamicNotchSwitch_e.on('change', function() { - - const checked = $(this).is(':checked'); const count = parseInt(dynamicNotchCount_e.val()); + const checked = $(this).is(':checked'); if (checked && !count) { dynamicNotchCount_e.val(FILTER_DEFAULT.dyn_notch_count); @@ -426,7 +430,7 @@ TABS.pid_tuning.initialize = function (callback) { $('.dynamicNotchWidthPercent').toggle(semver.lt(FC.CONFIG.apiVersion, API_VERSION_1_44) && checked); $('.dynamicNotchCount').toggle(semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44) && checked); - }).prop('checked', FC.FILTER_CONFIG.dyn_notch_count !== 0 || FC.FEATURE_CONFIG.features.isEnabled('DYNAMIC_FILTER')).trigger('change'); + }).prop('checked', isDynamicNotchActive).trigger('change'); // RPM Filter $('.rpmFilter').toggle(FC.MOTOR_CONFIG.use_dshot_telemetry);