Interrumption problems

nobody wrote on Monday, April 16, 2007:


I’m working some days ago with the FREErtos and PIC18F8621…i have to work with 3 metal sensor, we use the timer0 to create the interruption each 800ms. This process is periodic so each 800ms one of this 3 sensor will turn on and make some operation and after the other and the other. I tried to use the vTaskDelay but the program didn’t work well…

So I don’t know if i can do use it with the Freertos… I mean use the timer0 for interruption into the freertos… can you help me with some ideas?? I really need your help!!..

Thanks so much for your help, have a nice day!!  


nobody wrote on Monday, April 16, 2007:

How does vTaskDelay() interact with your timer?  You could use vTaskDelayUntil() to cause a task to run every 800ms.  Alternatively if the function is short you could use a tick hook function in place of a task.


nobody wrote on Monday, April 16, 2007:

Thanks so much for your help, it looks really fine!!!

I found example for the vtaskdelayuntil:

void vTaskFunction( void * pvParameters )
portTickType xLastWakeTime;
const portTickType xFrequency = 10;

     // Initialise the xLastWakeTime variable with the current time.
     xLastWakeTime = xTaskGetTickCount();
     for( ;; )
         // Wait for the next cycle.
         vTaskDelayUntil( &xLastWakeTime, xFrequency );

         // Perform action here.

and also it said that we can use the constant portTICK_RATE_MS to calculate real time… but i only found this constant:

#define portTICK_RATE_HZ ( ( portTickType ) 400 )

so i can use it for calculation 800ms? or  can I say that my const portTickType xFrequency = 0.800;…

Thanks so much for your help!!!..i can’t understand the relation betwen ticks and constant… thanks again for your help…