This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

FreeRTOS using xQueueSendFromISR and xQueueReceive

Other Parts Discussed in Thread: HALCOGEN

Hello TI!

I have a performance problem.

I am using the TMS570 USB Kit to investigate the performance of the TMS570 together with FreeRTOS. If we feel that this OS and micro is working well for us, we will use this in our new platform for all lot of our products, meaning TI will sell a lot of micros to us.


I am using HalCoGEN to generate the code.

 

This is what I do and what happen.

 

In a task I call xQueueReceive to wait for a message that will be sent from an interrupt. In the interrupt routine I call xQueueSendFromISR and after that I am supposed to call taskYIELD_FROM_ISR before I leave the interrupt. First problem is that I can find a #define for the taskYIELD_FROM_ISR. Instead I have tried to call a lot of other #defines, portYIELD, portYIELD_FROM_ISR without success. From the xQueueSendFromISR function I receive that a task with higher priority needs to be executed.

 

The issue is that task with the xQueueReceive never get called directly after the interrupt.

 

If I skip the “YIELD” from the interrupt the task will receive the message next OS tick interrupt. That is not good enough for us.

 

What am I doing wrong here?

Is it possible with TMS570 and FreeRTOS to send a message from an interrupt  and receive it in a task before the OS tick interrupts occur?

 

 

Regards

Magnus