From 59ad38193a88d3d9279dafaa6365a790717c8c0c Mon Sep 17 00:00:00 2001 From: XGudron Date: Fri, 7 May 2021 16:50:28 +0300 Subject: [PATCH] Enc2 and tooltips update --- STM32/Core/Src/front_unit.c | 22 ++++++++++++++++++---- STM32/Core/Src/lcd.c | 6 +++--- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/STM32/Core/Src/front_unit.c b/STM32/Core/Src/front_unit.c index b4f9b5a..61cf422 100644 --- a/STM32/Core/Src/front_unit.c +++ b/STM32/Core/Src/front_unit.c @@ -178,6 +178,8 @@ void FRONTPANEL_ENCODER_checkRotate(void) void FRONTPANEL_ENCODER2_checkRotate(void) { + static int8_t enc2_slowler = 0; + #define enc2_slowler_val 2 uint8_t ENCODER2_DTVal = HAL_GPIO_ReadPin(ENC2_DT_GPIO_Port, ENC2_DT_Pin); uint8_t ENCODER2_CLKVal = HAL_GPIO_ReadPin(ENC2_CLK_GPIO_Port, ENC2_CLK_Pin); @@ -187,12 +189,24 @@ void FRONTPANEL_ENCODER2_checkRotate(void) if (!CALIBRATE.ENCODER_ON_FALLING || ENCODER2_CLKVal == 0) { if (ENCODER2_DTVal != ENCODER2_CLKVal) - { // If pin A changed first - clockwise rotation - FRONTPANEL_ENCODER2_Rotated(CALIBRATE.ENCODER2_INVERT ? 1 : -1); + { + // If pin A changed first - clockwise rotation + enc2_slowler--; + if(enc2_slowler <= -enc2_slowler_val) + { + FRONTPANEL_ENCODER2_Rotated(CALIBRATE.ENCODER2_INVERT ? 1 : -1); + enc2_slowler = 0; + } } else - { // otherwise B changed its state first - counterclockwise rotation - FRONTPANEL_ENCODER2_Rotated(CALIBRATE.ENCODER2_INVERT ? -1 : 1); + { + // otherwise B changed its state first - counterclockwise rotation + enc2_slowler++; + if(enc2_slowler >= enc2_slowler_val) + { + FRONTPANEL_ENCODER2_Rotated(CALIBRATE.ENCODER2_INVERT ? -1 : 1); + enc2_slowler = 0; + } } } ENCODER2_AValDeb = HAL_GetTick(); diff --git a/STM32/Core/Src/lcd.c b/STM32/Core/Src/lcd.c index 8cc7df7..50c7b39 100644 --- a/STM32/Core/Src/lcd.c +++ b/STM32/Core/Src/lcd.c @@ -817,10 +817,10 @@ void LCD_showInfo(char text[], bool autohide) void LCD_showTooltip(char text[]) { Tooltip_DiplayStartTime = HAL_GetTick(); - strcpy(Tooltip_string, text); - Tooltip_first_draw = true; - if(LCD_UpdateQuery.Tooltip) //redraw old tooltip + if(LCD_UpdateQuery.Tooltip && strlen(Tooltip_string) != strlen(text)) //redraw old tooltip LCD_UpdateQuery.FreqInfoRedraw = true; + Tooltip_first_draw = true; + strcpy(Tooltip_string, text); LCD_UpdateQuery.Tooltip = true; }