I’m using a STM32F103ZG, Keil µVision (4.21) as Development Environment. The FreeRTOS version I’m using is 8.0.0.
I have a project consisting of multiple tasks (about 20). My problem is, the queue of one task (responsible for triggering ADC measurements and taking the values) is running full. I think this might be either a timing or priority problem.
The queue size is 20 elements, Tick frequency is set to 100. Every 50ms, two elements are written to the queue to trigger the measurements.
I defined some assert functions for traceQUEUE_SEND_FAILED and traceQUEUE_SEND_FROM_ISR_FAILED which consist of
__breakpoint(0) followed by a while() loop so I actually notice that.
My main question here is: Is there a possibility to find out why this is happening without the use of FreeRTOS+ Trace?
What’s driving me crazy: As soon as I include FreeRTOS+ Trace in my build to find out which other task might be responsible for this (by needing too much runtime, having a wrong priority, etc) - the problem is gone! It just doesn’t occur anymore.
I’m pretty much confused about this right now. I have an additinoal build configuration for including the Recorder Library from Perceptio. Only thing it does additionally is setting queue/semaphore names, and also calls to vTraceStoreISRBegin and vTraceStoreISREnd inside ISRs.
So, is there achance for me to find out why this is happening? I don’t see a way now.
Increasing the queue size surely won’t help, it will only delay the problem.
Thanks in advance!