Problems with Task Priorities

Hi I have several tasks running in my application. Basically I want them to run periodically in a fix order. Unfortunately the execution seems to mix up so I do not achieve the desired order. Task 1 (priority 6) should execute every 10ms and increments a variable (time base in 10ms steps). It blocks calling vTaskDelayUntil. Task 2 (priority 4) depends on the variable’s value and should also execute every 10ms. It also blocks calling vTaskDelayUntil. As far as I know Task 1 should always enter the running state first due to its higher priority. After Task 1 having blocked, Task 2 should enter the running state (never missing an increment). I assume this scenario should repeat for ever periodically. How can it happen that Task 1 sometimes gets executed twice before Task 2 enters the running state? Is my approach wrong? Can a task leave the blocked state prior to the elapsing of the desired delay time (what reasons are possible)? Thanks for helping. Regards, Mathias

Problems with Task Priorities

If your tasks are at different priorities then it should work I think, but it will depend on what else your system is doing. For example, is it possible that Task 2 is getting starved of processing time? Can you cut your app down to the bare bones and still get this behavior? If so then post the code (pastebin.com seems to be a good place to put source code and keep the formatting).

Problems with Task Priorities

Dave, Thank you for your suggestions. Since my project has become quite big it was the right way to cut it down. I guess to question FreeRTOS was a bit too fast (it works fine as expected). I am using two EVK1100 with ATMEL’s AT32UCA0512. Both boards are using DHCP but unfortunately had the same MAC address. Therefore they got the same IP from the DHCP server!! I believe this troubled my application completely and leaded to getting starved some tasks. Anyway it helped me to discuss the problem with you. Thanks!