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);