From 86a10dc459056cfb49055758e3fed0e0825043ae Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Mon, 5 Dec 2022 16:38:23 +1300 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fix=20Fast=20PWM=20on=20AVR=20(#?= =?UTF-8?q?25030)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25005 --- Marlin/src/HAL/AVR/fast_pwm.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Marlin/src/HAL/AVR/fast_pwm.cpp b/Marlin/src/HAL/AVR/fast_pwm.cpp index e440315e00..d361aaab38 100644 --- a/Marlin/src/HAL/AVR/fast_pwm.cpp +++ b/Marlin/src/HAL/AVR/fast_pwm.cpp @@ -146,11 +146,11 @@ void MarlinHAL::set_pwm_frequency(const pin_t pin, const uint16_t f_desired) { LIMIT(res_pc_temp, 1U, maxtop); // Calculate frequencies of test prescaler and resolution values - const int f_diff = ABS(f - int(f_desired)), - f_fast_temp = (F_CPU) / (p * (1 + res_fast_temp)), - f_fast_diff = ABS(f_fast_temp - int(f_desired)), - f_pc_temp = (F_CPU) / (2 * p * res_pc_temp), - f_pc_diff = ABS(f_pc_temp - int(f_desired)); + const uint16_t f_fast_temp = (F_CPU) / (p * (1 + res_fast_temp)), + f_pc_temp = (F_CPU) / (2 * p * res_pc_temp); + const int f_diff = _MAX(f, f_desired) - _MIN(f, f_desired), + f_fast_diff = _MAX(f_fast_temp, f_desired) - _MIN(f_fast_temp, f_desired), + f_pc_diff = _MAX(f_pc_temp, f_desired) - _MIN(f_pc_temp, f_desired); if (f_fast_diff < f_diff && f_fast_diff <= f_pc_diff) { // FAST values are closest to desired f // Set the Wave Generation Mode to FAST PWM