How to decide on the configTICK_RATE_HZ value

shashank2388 wrote on Tuesday, April 16, 2013:


I am developing an application based on PIC24 where am trying to interface ADC sensors, UART and some GPIOs. The problem is when I am going to implement each one of these in different tasks. I know that the scheduler does the task swap in and out process based on the priority of the tasks and the time for execution is based on configCPU_CLOCK_HZ value which in turn depends on the frequency at which the controller is running. I modified the sample code in which the default value of configTICK_RATE_HZ was set to 1000 i.e 100 ms. But 100 ms is too much value for my project.

So what is the criteria to decide the value of configTICK_RATE_HZ for a particular application?

Thanks in advance….

rtel wrote on Tuesday, April 16, 2013:

configTICK_RATE_HZ sets a couple of things:

1) The granularity of the timing.  For example, if you want to block for 125ms then you can block for exactly 125ms if the tick is every 1ms, but only for either 120 or 130ms if the tick is every 10ms.

2) How long each time slice will be if you have more than one task running at the same priority.

Generally you want the frequency to be as low as viable for your application so as not to waist time processing unnecessary tick interrupts.


richard_damon wrote on Wednesday, April 17, 2013:

What I use to set this is to look at the lowest tick rate that gives me acceptable resolution for timeouts (which normally don’t need to be very good), and suitable activation for events that need to occur on a periodic basis that can not be based on some other interrupt.