Tickless (low power) mode

moto95 wrote on Tuesday, November 20, 2012:

After reading various sources on this subject, it seems to promise what I am after (used to). Is there a definitive guide/documentation on how to implement this with the latest version of FreeRTOS and a PIC24/32?

rtel wrote on Tuesday, November 20, 2012:

Is there a definitive guide/documentation on how to implement this with the latest version of FreeRTOS and a PIC24/32

No, just what is on the website (which I think is quite a lot).

I was hoping to have the default PIC32 low power code implemented before the FreeRTOS V7.3.0 release, but it was not to be.  I did however make some changes to the PIC32 port layer to allow application defined implementations.

By default the tick interrupt is generated from a 16 bit timer 0.  16-bits severely limits the maximum obtainable tickless period, so to allow users to override the default timer implementation the following changes were made:

+ The user can define configTICK_INTERRUPT_VECTOR to say which interrupt the tick handler should be installed on.  It defaults to _TIMER_1_VECTOR, but can be defined in FreeRTOSConfig.h.

+ The tick interrupt is configured by vApplicationSetupTickTimerInterrupt(), which is now a weakly defined symbol so the application writer can define their own (and then set configTICK_INTERRUPT_VECTOR appropriately for the clock source used).  For long tickless periods the timer should be a slow 32 bit timer (two 16 bit timers can be chained).

Regards.

moto95 wrote on Tuesday, November 20, 2012:

Many thanks, Richard. Does the same apply to the PIC24 port?

rtel wrote on Tuesday, November 20, 2012:

Not yet, but you could rig something up yourself in the port layer using the same principals.

Regards.