ATMEGA-128 UART issue

Hi! I am trying to use both UARTS in ATMEGA128 port of the kernel (compiled with GCC). I have the following  situation: in one task, I send a message through UART0 to one node and I use xQueueReceive with timeout to receive an answer from the node. While this task is blocked on the queue, another task is sending a message to another node through UART1. The reception on both UARTS is done in an ISR. The problem is, that in this configuration the ISR is not always being entered. I have checked this using the following method: on evey entrance/exit of the ISR, I am toggling a pin of the MCU, thus counting the received symbols. With one channel of the scope I am tracing the received data (at the RX pin of the MCU) and with another channel I am tracing the toggling of the above mentioned pin. I found, that  not on evey byte I get an interupt. Also, when I disable one of the tasks, transmitting through the USART, the picture is just fine. I have 4 additional tasks, so the problem is not in the count of tasks. Do you have any idea where this problem comes from? Thank you! P.S. I have tried this without the kernel (sending through UART0 in the main() and receiving through UART1 in an ISR). There was no such problem.

ATMEGA-128 UART issue

How are you sending to UART1?  Is this also using a Q?  A Q sounds good for the receive as it can be used to wake the task.  For Tx maybe the overhead is too much and as you don’t need to automatically wake a task a simply buffer could be used instead?

ATMEGA-128 UART issue

I am sending to UART1 in a task, whcich is woken periodicaly (at about 100ms). The transmitting and the receiving in none of the UARTS occurs at the same time.