diff options
Diffstat (limited to 'os/hal/ports/TIVA/LLD/st_lld.h')
-rw-r--r-- | os/hal/ports/TIVA/LLD/st_lld.h | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/os/hal/ports/TIVA/LLD/st_lld.h b/os/hal/ports/TIVA/LLD/st_lld.h index 0db601a..aadc966 100644 --- a/os/hal/ports/TIVA/LLD/st_lld.h +++ b/os/hal/ports/TIVA/LLD/st_lld.h @@ -206,7 +206,8 @@ extern "C" { static inline systime_t st_lld_get_counter(void) { #if OSAL_ST_MODE == OSAL_ST_MODE_FREERUNNING - return (systime_t) TIVA_ST_TIM->TAV/((ST_CLOCK_SRC / OSAL_ST_FREQUENCY) - 1); + return (systime_t) 0xffffffff - TTIVA_ST_TIM->TAV; + //return (systime_t) TIVA_ST_TIM->TAV/((ST_CLOCK_SRC / OSAL_ST_FREQUENCY) - 1); //return (systime_t) ((TIVA_ST_TIM->TAV >> 16) | (TIVA_ST_TIM->TAPV << 16))/((ST_CLOCK_SRC / OSAL_ST_FREQUENCY) - 1); #else return (systime_t) 0; @@ -238,10 +239,18 @@ static inline void st_lld_start_alarm(systime_t time) // TIVA_ST_TIM->ICR = 0xffffffff; // TIVA_ST_TIM->IMR = GPTM_IMR_TAMIM; - uint64_t settime = time * ((ST_CLOCK_SRC / OSAL_ST_FREQUENCY) - 1); +// uint64_t settime = time * ((ST_CLOCK_SRC / OSAL_ST_FREQUENCY) - 1); +// +// TIVA_ST_TIM->TAPMR = (uint16_t) ((settime >> 32) & 0xffff); +// TIVA_ST_TIM->TAMATCHR = (uint32_t) (settime); +// +// TIVA_ST_TIM->ICR = TIVA_ST_TIM->MIS; +// TIVA_ST_TIM->IMR = GPTM_IMR_TAMIM; + + //uint64_t settime = time * ((ST_CLOCK_SRC / OSAL_ST_FREQUENCY) - 1); - TIVA_ST_TIM->TAPMR = (uint16_t) ((settime >> 32) & 0xffff); - TIVA_ST_TIM->TAMATCHR = (uint32_t) (settime); + //TIVA_ST_TIM->TAPMR = (uint16_t) ((settime >> 32) & 0xffff); + TIVA_ST_TIM->TAMATCHR = (uint32_t) 0xffffffff - settime; TIVA_ST_TIM->ICR = TIVA_ST_TIM->MIS; TIVA_ST_TIM->IMR = GPTM_IMR_TAMIM; @@ -282,10 +291,15 @@ static inline void st_lld_set_alarm(systime_t time) // // TIVA_ST_TIM->TAPMR = (uint16_t) temp; - uint64_t settime = time * ((ST_CLOCK_SRC / OSAL_ST_FREQUENCY) - 1); +// uint64_t settime = time * ((ST_CLOCK_SRC / OSAL_ST_FREQUENCY) - 1); +// +// TIVA_ST_TIM->TAPMR = (uint16_t) ((settime >> 32) & 0xffff); +// TIVA_ST_TIM->TAMATCHR = (uint32_t) (settime); + + //uint64_t settime = time * ((ST_CLOCK_SRC / OSAL_ST_FREQUENCY) - 1); - TIVA_ST_TIM->TAPMR = (uint16_t) ((settime >> 32) & 0xffff); - TIVA_ST_TIM->TAMATCHR = (uint32_t) (settime); + //TIVA_ST_TIM->TAPMR = (uint16_t) ((settime >> 32) & 0xffff); + TIVA_ST_TIM->TAMATCHR = (uint32_t) (0xffffffff - settime); #else (void)time; #endif @@ -312,7 +326,9 @@ static inline systime_t st_lld_get_alarm(void) // return (systime_t) temp; //return (systime_t) (TIVA_ST_TIM->TAPR << 16 | TIVA_ST_TIM->TAR >> 16); - return (systime_t) ((TIVA_ST_TIM->TAV >> 16) | (TIVA_ST_TIM->TAPV << 16))/((ST_CLOCK_SRC / OSAL_ST_FREQUENCY) - 1); + //return (systime_t) ((TIVA_ST_TIM->TAV >> 16) | (TIVA_ST_TIM->TAPV << 16))/((ST_CLOCK_SRC / OSAL_ST_FREQUENCY) - 1); + + return (systime_t) TIVA_ST_TIM->TAR; #else return (systime_t) 0; #endif |