richpainter wrote on Sunday, July 20, 2008:
I am running 5.0.0, Microchip MPLAB 8.10, C30 3.10
I have 3 tasks: Task 1 is a 1 millisec period one that gathers data and places on a q, Task 2 does removes from this q with:
if(xQueueReceive(queue, &buf1p, portTICK_RATE_MS * 10) == pdTRUE {}
which effectively runs at a 10 millisec period, and Task 3 runs at a 2 second period can put on the q also with:
if(xQueueSendToFront(queue, &buf2p, 0) != pdTRUE){}
In addition, when I perform the queue send from the 2 second Task 3 I set a flag that indicates I have preformed this queuing. I also report in all uses of the sending and receiving queue API calls whether they succeed or fail.
The fast task, Task 1, even though runs at 1 ms period, it only produces and enqueues about 1 per second.
I never get any queue API failure indications. My flags indicate my entries are on the queue. Yet all of the enqueued entries done from the 2 second task never get received. New ones sent from Task 1 all appear.
Task priorities:
Task 1 = 6
Task 2 = 3
Task 3 = 2
I am using heap1.c and
#define configUSE_MUTEXES 1
#define configUSE_CO_ROUTINES 0
Any ideas?
Also, in the MPLAB debugger, I examine the handle returned from the queue create and all it displays is a single hex number. I see that the handle typedef is a structure pointer, typedef xQUEUE * xQueueHandle, (I dont like this kind since it hides the fact that it is a pointer).
So, MPLAB won’t show me the structure elements which I was hoping to see to prove (or not) that these entries are there.
Any suggestions on both examining this queue and why the entries are not receiving?
thanks,
rich