From 1f181a949afcd0995960c12aad662197447602e9 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Sun, 23 Apr 2023 09:48:09 +0200 Subject: [PATCH] Fix `lcd_encoder_diff` getting out of sync with the knob hard steps Flash: +18B SRAM: 0B --- Firmware/lcd.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Firmware/lcd.cpp b/Firmware/lcd.cpp index 2fe042588..0e042e322 100644 --- a/Firmware/lcd.cpp +++ b/Firmware/lcd.cpp @@ -684,9 +684,11 @@ void lcd_knob_update() { if (lcd_backlight_wake_trigger) { lcd_backlight_wake_trigger = false; backlight_wake(); - if (abs(lcd_encoder_diff) >= ENCODER_PULSES_PER_STEP) { - lcd_encoder += lcd_encoder_diff / ENCODER_PULSES_PER_STEP; - lcd_encoder_diff = 0; + int8_t enc_diff = lcd_encoder_diff; + if (abs(enc_diff) >= ENCODER_PULSES_PER_STEP) { + lcd_encoder += enc_diff / ENCODER_PULSES_PER_STEP; + enc_diff %= ENCODER_PULSES_PER_STEP; + lcd_encoder_diff = enc_diff; Sound_MakeSound(e_SOUND_TYPE_EncoderMove); } else { Sound_MakeSound(e_SOUND_TYPE_ButtonEcho);