I have a question regarding FreeRTOS with high Frequency Interrupts and Queues/Semaphores.
Cortex M4 (NXP LPC4337)
UART Interrupt with high data rates
One Semaphore as new data notify
Given by the UART ISR with:
configASSERT(uart3NewDataSemaphore); xSemaphoreGiveFromISR(uart3NewDataSemaphore, &higherPriorityTaskWokenUart3); portEND_SWITCHING_ISR(higherPriorityTaskWokenUart3);
The counterpart tries to take this semaphore wit:
With no or small data rate (e.g. with manual serial input through putty) everything works fine. But if we connect a peripheral with a lot of data we get in trouble and often the programm hangs up in the function vListInsert in FreeRTOS/list.c.
The following IRQs are activated:
CAN1 with priority 6
ADC0 with priority 6
UART3 with priority 6
configPRIO_BITS is set to __NVIC_PRIO_BITS which equals 3
Maybe someone here as an idea about the problem?
Edit: Updated IRQ Priorities