-               /* Read bytes from the USB OUT endpoint into the USART transmit buffer */
-               int16_t ReceivedByte = CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface);
-               if (!(ReceivedByte < 0) && !(RingBuffer_IsFull(&USBtoUSART_Buffer)))
-                 RingBuffer_AtomicInsert(&USBtoUSART_Buffer, (uint8_t)ReceivedByte);           
+               /* Only try to read in bytes from the CDC interface if the transmit buffer is not full */
+               if (!(RingBuffer_IsFull(&USBtoUSART_Buffer)))
+               {
+                       int16_t ReceivedByte = CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface);
+
+                       /* Read bytes from the USB OUT endpoint into the USART transmit buffer */
+                       if (!(ReceivedByte < 0))
+                         RingBuffer_Insert(&USBtoUSART_Buffer, ReceivedByte);
+               }