Problem with timeout

Posted by Oliver on December 9, 2009
Hello everybody, i have a problem when i use the timeout in a semaphore.

I use EVK1100(AVR 32), freertos 1mseg tick, and i have written this code

if( xSemaphoreTake(xSemaphoreReceived,1) == pdTRUE )
{
.....
}

I have measured this time Timeout and it's variable, never 1 mili second that i want.The obtained values are 600microsecond, 400microsecond , 768microsecond

anybody can help me?

thanks
Oliver


RE: Problem with timeout

Posted by Richard Damon on December 9, 2009
A 1 ms tic rate means delays are only accurate to 1ms, and in fact, the way FreeRTOS works, the time out will expire in no more than the specified time, so a 1ms delay is 0-1ms, a 2 ms delay is 1-2ms, and so on. (The task may not start immediately on that next tick if some higher priority task is running).

basically time steps in 1 ms intervals, so by its measure anything in "tick 10" is 1 tick before anything in "tick 11", so a 1 tick delay means until the next tick, which might be almost a full tick in time if the interrupt just happended and might be almost no time if the tick interrupt is about ready to happen.

RE: Problem with timeout

Posted by Oliver on December 9, 2009
thank you very much

Oliver