- RingBuffer_AtomicInsert(&USBtoUSART_Buffer, (uint8_t)ReceivedByte);
-
- /* Check if the UART receive buffer flush timer has expired */
- if (TIFR0 & (1 << TOV0))
+ RingBuffer_Insert(&USBtoUSART_Buffer, ReceivedByte);
+
+ /* Check if the UART receive buffer flush timer has expired or the buffer is nearly full */
+ RingBuff_Count_t BufferCount = RingBuffer_GetCount(&USARTtoUSB_Buffer);
+ if ((TIFR0 & (1 << TOV0)) || (BufferCount > 200))