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?
“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).
Many thanks, Richard. Does the same apply to the PIC24 port?
Not yet, but you could rig something up yourself in the port layer using the same principals.