From 11753450ae4c0137e3b35f761c8305578da60c89 Mon Sep 17 00:00:00 2001 From: tmertelj Date: Wed, 30 Sep 2015 21:28:30 +0200 Subject: [PATCH] Fixes#2750__Mega2560_ST7920_mixer_freq_too_slow --- radio/src/gui/9X/lcd.h | 3 +++ radio/src/main_avr.cpp | 46 +++++++++++++++++++----------------------- radio/src/mixer.cpp | 2 +- 3 files changed, 25 insertions(+), 26 deletions(-) diff --git a/radio/src/gui/9X/lcd.h b/radio/src/gui/9X/lcd.h index f196b313e..6503e93bc 100755 --- a/radio/src/gui/9X/lcd.h +++ b/radio/src/gui/9X/lcd.h @@ -265,6 +265,9 @@ void lcdRefresh(); #if defined(LCD_ST7920) uint8_t lcdRefresh_ST7920(uint8_t full); +#define IS_LCD_REFRESH_ALLOWED() (0==lcdstate) +#else +#define IS_LCD_REFRESH_ALLOWED() (1) #endif #if defined(BOOT) diff --git a/radio/src/main_avr.cpp b/radio/src/main_avr.cpp index bc813c6b6..0423d5ea4 100644 --- a/radio/src/main_avr.cpp +++ b/radio/src/main_avr.cpp @@ -45,7 +45,7 @@ void perMain() doMixerCalculations(); #endif #if defined(LCD_ST7920) - uint8_t lcdstate=0; + uint8_t lcdstate=0; #endif uint16_t t0 = getTmr16KHz(); int16_t delta = (nextMixerEndTime - lastMixerDuration) - t0; @@ -132,35 +132,31 @@ void perMain() const char *warn = s_warning; uint8_t menu = s_menu_count; -#if defined(LCD_ST7920) - if(0==lcdstate){//No need to redraw until lcdRefresh_ST7920(0) below completely refreshes the display. -#endif - lcd_clear(); - if (menuEvent) { - m_posVert = menuEvent == EVT_ENTRY_UP ? g_menuPos[g_menuStackPtr] : 0; - m_posHorz = 0; - evt = menuEvent; - menuEvent = 0; - AUDIO_MENUS(); - } - g_menuStack[g_menuStackPtr]((warn || menu) ? 0 : evt); + if(IS_LCD_REFRESH_ALLOWED()){//No need to redraw until lcdRefresh_ST7920(0) below completely refreshes the display. + lcd_clear(); + if (menuEvent) { + m_posVert = menuEvent == EVT_ENTRY_UP ? g_menuPos[g_menuStackPtr] : 0; + m_posHorz = 0; + evt = menuEvent; + menuEvent = 0; + AUDIO_MENUS(); + } + g_menuStack[g_menuStackPtr]((warn || menu) ? 0 : evt); - if (warn) DISPLAY_WARNING(evt); + if (warn) DISPLAY_WARNING(evt); #if defined(NAVIGATION_MENUS) - if (menu) { - const char * result = displayMenu(evt); - if (result) { - menuHandler(result); - putEvent(EVT_MENU_UP); - } - } + if (menu) { + const char * result = displayMenu(evt); + if (result) { + menuHandler(result); + putEvent(EVT_MENU_UP); + } + } #endif - - drawStatusLine(); - -#if defined(LCD_ST7920) + drawStatusLine(); } +#if defined(LCD_ST7920) lcdstate=lcdRefresh_ST7920(0); #else lcdRefresh(); diff --git a/radio/src/mixer.cpp b/radio/src/mixer.cpp index fcb871da1..1e78b3c46 100644 --- a/radio/src/mixer.cpp +++ b/radio/src/mixer.cpp @@ -1098,7 +1098,7 @@ void evalMixes(uint8_t tick10ms) } } -#if (defined(PCBMEGA2560) || defined(PCBGRUVIN9X)) && defined(DEBUG) && !defined(VOICE) +#if (defined(CPU2560) && defined(DEBUG) && !defined(VOICE)) PORTH &= ~0x40; // PORTH:6 HIGH->LOW signals end of mixer interrupt #endif }