I have a FreeRTOS application with three tasks which exhibits funny timing behavior. My first task is derived from the flashing LED task in the demo (some changes to use vTaskDelayUntil). This task makes a good visual indication that I haven’t broken anything.
My other two tasks implement a Queued LCD driver and a test task that sends it strings to be displayed. The queue is similar to the pollQ demo task. Functionally, both tasks seem to be OK by themselves.
I am using pre-emptive mode and no co-tasks. I am running on a Silabs C8051F120 using the Silabs IDE and the SDCC compiler.
When I run only the flashing LED task, the timing looks just as I would expect. When I add the LCD driver and test task, the LED task speeds up. Not just a little, but a lot. It also becomes very irregular. It looks as though some ticks are happening very much faster than others.
Obviously this is more likely to be a problem I have caused than a bug in the FreeRTOS code, but at this point I don’t know where to look next. Any suggestions would be welcome.