Changed the Tiva tickless timer implementation to use the timer in down mode. It's working for WGPT5 now.
This commit is contained in:
parent
930d2d6de0
commit
87e99fedd8
|
@ -248,14 +248,13 @@ void st_lld_init(void)
|
|||
TIVA_ST_TIM->CTL = 0;
|
||||
TIVA_ST_TIM->CFG = GPTM_CFG_CFG_SPLIT; /* Timer split mode */
|
||||
TIVA_ST_TIM->TAMR = (GPTM_TAMR_TAMR_PERIODIC | /* Periodic mode */
|
||||
GPTM_TAMR_TACDIR | /* Count up */
|
||||
/*GPTM_TAMR_TACDIR |*/ /* Count up */
|
||||
GPTM_TAMR_TAMIE | /* Match interrupt enable */
|
||||
GPTM_TAMR_TASNAPS); /* Snapshot mode */
|
||||
//TIVA_ST_TIM->TAPR = (ST_CLOCK_SRC / OSAL_ST_FREQUENCY) - 1;
|
||||
TIVA_ST_TIM->TAPR = (ST_CLOCK_SRC / OSAL_ST_FREQUENCY) - 1;
|
||||
/* in up mode (used by tickless mode) the prescaler register extends the TAV
|
||||
* and TAR registers. How to solve this? In down mode it is working better
|
||||
* because the prescaler really works as prescaler. */
|
||||
//TIVA_ST_TIM->CTL = (GPTM_CTL_TAEN | GPTM_CTL_TASTALL);
|
||||
TIVA_ST_TIM->CTL = (GPTM_CTL_TAEN | /* Timer A enable */
|
||||
GPTM_CTL_TASTALL); /* Timer A stall when paused */
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
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) 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);
|
||||
|
||||
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) (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
|
||||
|
|
Loading…
Reference in New Issue