Hi,
For a time constrained application I need a freerunning 32bit microsecond time base timer to trigger alarm at given 32bit timestamp.
Currently I use the two 64bit timers of a timer group as follow :
The first timer is used to generate one shot alarm at a given absolute 32bit timestamp. The second timer is setup at the same speed with auto-reload and with an alarm at 0xFFFFFFFF (32bit max). When the second timer IRQ is triggered, I set the first timer counter back to 0 (simulate overflow). The second counter is automatically reset thanks to auto-reload, but I still re-enable the alarm for the next overflow.
Is there a better way to do this? I'm afraid this solution add overhead and that I might miss an alarm set for example at 0xFFFFFFFF on the first timer. I don't know how to ensure the 2 timers are in sync.
How to use the 64bit timer as a 32bit counter (overflow at 0xFFFFFFFF), but keep alarm function available
-
- Posts: 22
- Joined: Mon Jul 22, 2019 2:29 pm
Re: How to use the 64bit timer as a 32bit counter (overflow at 0xFFFFFFFF), but keep alarm function available
I don't understand the advantage of the 32-bit rollover
-
- Posts: 22
- Joined: Mon Jul 22, 2019 2:29 pm
Re: How to use the 64bit timer as a 32bit counter (overflow at 0xFFFFFFFF), but keep alarm function available
I’m connected to a system which expect 32bit timestamp and send me 32bit alarm. I can send a 32bit timestamp easily from the 64bit timer, but I can’t set a 64bit alarm from a 32bit one. The remote system expect that my time base rollover at 32bit.
Re: How to use the 64bit timer as a 32bit counter (overflow at 0xFFFFFFFF), but keep alarm function available
When you send the timestamp you ignore the high 32 bits and when you receive the alarm you add them as an offset. The lower 32 bits should always be in sync.
Code: Select all
alarm_64 = alarm_32 + counter & 0xffffffff00000000ull + (alarm < counter & 0xffffffff)?1ull <<32:0;
Who is online
Users browsing this forum: No registered users and 74 guests