Skip to main content

Timer (Colibri)

HW Timers

The Colibri modules all provide HW timers which can be used to generate interrupts etc. Due to a bug in the Marvell PXA3xx silicons the normal usage of a timer on any Colibri PXA3xx is restricted. To avoid problems, Marvell suggests to use one timer only. Since Windows CE is already using an timer (OST), using a second timer for an application could lead to crashes. There is a special handling needed in order to use multiple timers. Toradex recommends to not use additional HW timers on PXA3xx modules whenever possible. For more details please take a look at Marvell's errata FEr#22:

Marvell Specification Update (Erratas)

For information about the timers on the Tegra modules see: Colibri T20 Timers

Creating a SW Timer at 1ms

For most applications it is enough to have a 1ms periodical timer. This can be achieved quite easy under WinCE. Just create a thread at high priority and use the Windows CE API SleepTillTick(). This function is not declared in a public header file, so just create your own declaration.


#ifdef __cplusplus
extern "C" {
#endif
void SleepTillTick();
#ifdef __cplusplus
}
#endif
// your high priority thread
while (1)
{
SleepTillTick(); // returns at every tick which occurs every 1ms in WinCE
// do your periodic stuff
}

Send Feedback!