2018-11-22 06:51 AM
Hello Everyone,
I have a requirement to track time and generate timestamps when an event occurs.
I have tried time_base, input capture methods and trying with chaining two timers now.
I wanted to know if it is possible to chain 2 timers in STM32L0 and keep counting the pulses without generating interrupts (normally as done in Time_base).
And when i need the timestamp, i should be able to access the counter registers from the two timers and calculate the time on my own.
Any ideas or suggestions would be of great help. :)
thanks and good day. :)
2018-11-22 07:54 AM
Timers only interrupt if you enable that functionality.
Yes, you can chain two timers together in master/slave mode. Reading the CNT values can't be don't atomically, so consider how you read them. You might want to latch the value in a CCRx channel register, so you should look for a combination that would permit a common trigger source for the capture.
Look for examples under the CubeL0 HAL trees.
2018-11-22 08:12 AM
Thank you for the reply.
I understand that i need to use input capture method to latch the counter values to CC register when there is an event. And using a Read_reg on counter register cannot fetch the counter value at that instant.
2018-11-23 02:52 AM
Today i came across an option of LL_TIM_GET_COUNTER.
/**
* @brief Get the counter value.
* @rmtoll CNT CNT LL_TIM_GetCounter
* @param TIMx Timer instance
* @retval Counter value (between Min_Data=0 and Max_Data=0xFFFF)
*/
__STATIC_INLINE uint32_t LL_TIM_GetCounter(TIM_TypeDef *TIMx)
{
return (uint32_t)(READ_REG(TIMx->CNT));
}
Will this function be able to return the counter values without latching them to capture registers or channels ?