diff --git a/src/drivers.cpp b/src/drivers.cpp index 2cbf78297..2d592e20d 100644 --- a/src/drivers.cpp +++ b/src/drivers.cpp @@ -146,8 +146,8 @@ void killEvents(uint8_t event) if (event < (int)DIM(keys)) keys[event].killEvents(); } -volatile uint16_t g_tmr10ms; -volatile uint8_t g_blinkTmr10ms; +volatile tmr10ms_t g_tmr10ms; +volatile uint8_t g_blinkTmr10ms; void per10ms() { diff --git a/src/ersky9x/diskio.c b/src/ersky9x/diskio.c index 96e8610cb..4f1854d36 100644 --- a/src/ersky9x/diskio.c +++ b/src/ersky9x/diskio.c @@ -513,6 +513,7 @@ const char * sdSwReset(uint32_t retry) #define OCR_SDIO_MP (1UL << 27) #define OCR_SDIO_NF (7UL << 28) +#if 0 const char * sdIdentify() { uint8_t mem = 0, io = 0, f8 = 0, mp = 1; @@ -608,7 +609,6 @@ const char * sdIdentify() return 0; } -#if 0 const char * sdEnum() { uint8_t mem , io; @@ -709,9 +709,7 @@ const char * sdEnum() if (bwExec || hsExec) SdMmcUpdateInformation(pSd, hsExec, 1); return 0; } -#endif -#if 0 void sdInit() { const char * result; diff --git a/src/logs.cpp b/src/logs.cpp index 77e68d068..2e74f4fcb 100644 --- a/src/logs.cpp +++ b/src/logs.cpp @@ -129,7 +129,7 @@ void writeLogs() { if (isFunctionActive(FUNC_LOGS) && logDelay > 0) { uint16_t tmr10ms = get_tmr10ms(); - if (lastLogTime == 0 || tmr10ms - lastLogTime >= 10*logDelay) { + if (lastLogTime == 0 || (tmr10ms_t)(tmr10ms - lastLogTime) >= (tmr10ms_t)logDelay*10) { lastLogTime = tmr10ms; if (!g_oLogFile.fs) { diff --git a/src/menus.cpp b/src/menus.cpp index 6ead388ee..3fba651b7 100644 --- a/src/menus.cpp +++ b/src/menus.cpp @@ -643,30 +643,33 @@ const char * displayMenu(uint8_t event) } char statusLineMsg[STATUS_LINE_LENGTH]; -uint16_t statusLineTimeout = 0; +tmr10ms_t statusLineTime = 0; uint8_t statusLineHeight = 0; void showStatusLine() { statusLineHeight = 0; - statusLineTimeout = get_tmr10ms() + 3*100; /* 3 seconds */ + statusLineTime = get_tmr10ms(); } +#define STATUS_LINE_DELAY (3 * 100) /* 3s */ void drawStatusLine() { - if (get_tmr10ms() < statusLineTimeout) { - if (statusLineHeight < 8) statusLineHeight++; - } - else if (statusLineHeight) { - statusLineHeight--; - } - else { - return; - } + if (statusLineTime) { + if ((tmr10ms_t)(get_tmr10ms() - statusLineTime) <= (tmr10ms_t)STATUS_LINE_DELAY) { + if (statusLineHeight < 8) statusLineHeight++; + } + else if (statusLineHeight) { + statusLineHeight--; + } + else { + statusLineTime = 0; + } - lcd_filled_rect(0, 7*FH+8-statusLineHeight, DISPLAY_W, 8, SOLID, WHITE); - lcd_putsAtt(5, 7*FH+1+8-statusLineHeight, statusLineMsg, BSS); - lcd_filled_rect(0, 7*FH+8-statusLineHeight, DISPLAY_W, 8, SOLID); + lcd_filled_rect(0, 8*FH-statusLineHeight, DISPLAY_W, 8, SOLID, WHITE); + lcd_putsAtt(5, 8*FH+1-statusLineHeight, statusLineMsg, BSS); + lcd_filled_rect(0, 8*FH-statusLineHeight, DISPLAY_W, 8, SOLID); + } } #endif diff --git a/src/open9x.cpp b/src/open9x.cpp index 93a5e398c..153212d3b 100644 --- a/src/open9x.cpp +++ b/src/open9x.cpp @@ -754,7 +754,7 @@ bool getSwitch(int8_t swtch, bool nc) uint8_t switches_states = 0; int8_t getMovedSwitch() { - static uint16_t s_last_time = 0; + static tmr10ms_t s_last_time = 0; int8_t result = 0; @@ -783,7 +783,7 @@ int8_t getMovedSwitch() } } - if (get_tmr10ms() - s_last_time > 10) + if ((tmr10ms_t)(get_tmr10ms() - s_last_time) > 10) result = 0; s_last_time = get_tmr10ms(); @@ -983,7 +983,7 @@ void doSplash() #if defined(PCBSTD) lcdSetRefVolt(g_eeGeneral.contrast); #else - uint16_t curTime = get_tmr10ms() + 10; + tmr10ms_t curTime = get_tmr10ms() + 10; uint8_t contrast = 10; lcdSetRefVolt(contrast); #endif @@ -995,7 +995,7 @@ void doSplash() uint16_t inacSum = stickMoveValue(); - uint16_t tgtime = get_tmr10ms() + SPLASH_TIMEOUT; + tmr10ms_t tgtime = get_tmr10ms() + SPLASH_TIMEOUT; while (tgtime != get_tmr10ms()) { #ifdef SIMU @@ -2215,7 +2215,7 @@ char userDataDisplayBuf[TELEM_SCREEN_BUFFER_SIZE]; #if defined(SIMU) #define TIME_TO_WRITE s_eeDirtyMsk #else -#define TIME_TO_WRITE (s_eeDirtyMsk && (get_tmr10ms() - s_eeDirtyTime10ms) >= WRITE_DELAY_10MS) +#define TIME_TO_WRITE (s_eeDirtyMsk && (tmr10ms_t)(get_tmr10ms() - s_eeDirtyTime10ms) >= (tmr10ms_t)WRITE_DELAY_10MS) #endif #ifdef BOLD_FONT @@ -2517,9 +2517,9 @@ inline void doMixerCalculations(uint16_t tmr10ms, uint8_t tick10ms) void perMain() { - static uint16_t lastTMR; - uint16_t tmr10ms = get_tmr10ms(); - uint8_t tick10ms = (tmr10ms - lastTMR); + static tmr10ms_t lastTMR; + tmr10ms_t tmr10ms = get_tmr10ms(); + uint8_t tick10ms = (tmr10ms > lastTMR ? tmr10ms - lastTMR : 1); lastTMR = tmr10ms; #if defined(PCBSTD) || defined(SIMU) @@ -2733,9 +2733,9 @@ ISR(TIMER5_COMPA_vect, ISR_NOBLOCK) // mixer interrupt uint16_t t0 = getTmr16KHz(); - static uint16_t lastTMR; - uint16_t tmr10ms = get_tmr10ms(); - uint8_t tick10ms = (tmr10ms - lastTMR); + static tmr10ms_t lastTMR; + tmr10ms_t tmr10ms = get_tmr10ms(); + uint8_t tick10ms = (tmr10ms > lastTMR ? tmr10ms - lastTMR : 1); lastTMR = tmr10ms; if (s_current_protocol < PROTO_NONE) { @@ -3158,9 +3158,9 @@ void mixerTask(void * pdata) if (!s_pulses_paused) { uint16_t t0 = getTmr2MHz(); - static uint16_t lastTMR; - uint16_t tmr10ms = get_tmr10ms(); - uint8_t tick10ms = (tmr10ms - lastTMR); + static tmr10ms_t lastTMR; + tmr10ms_t tmr10ms = get_tmr10ms(); + uint8_t tick10ms = (tmr10ms > lastTMR ? tmr10ms - lastTMR : 1); lastTMR = tmr10ms; if (s_current_protocol < PROTO_NONE) { diff --git a/src/open9x.h b/src/open9x.h index b50765d2e..53dd409b2 100644 --- a/src/open9x.h +++ b/src/open9x.h @@ -803,12 +803,14 @@ inline int16_t calc100toRESX(int8_t x) extern int16_t calc1000toRESX(int16_t x); #endif -extern volatile uint16_t g_tmr10ms; - #if defined(PCBARM) // This doesn't need protection on this processor +#define tmr10ms_t uint32_t +extern volatile tmr10ms_t g_tmr10ms; #define get_tmr10ms() g_tmr10ms #else +#define tmr10ms_t uint16_t +extern volatile tmr10ms_t g_tmr10ms; extern inline uint16_t get_tmr10ms() { uint16_t time ; @@ -827,7 +829,6 @@ extern const char stamp3[]; extern const char stamp4[]; extern uint8_t g_vbat100mV; -extern volatile uint16_t g_tmr10ms; extern volatile uint8_t g_blinkTmr10ms; extern uint8_t g_beepCnt; extern uint8_t g_beepVal[5];