From d90ef9aa2f97a5f8b5fd2cf0bd9564025d069f6e Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Tue, 15 Jul 2014 21:23:51 +1000 Subject: [PATCH] Only deque from the USBtoSerial's USB->USART buffer when the USART is idle. --- LUFA/DoxygenPages/ChangeLog.txt | 1 + Projects/USBtoSerial/USBtoSerial.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/LUFA/DoxygenPages/ChangeLog.txt b/LUFA/DoxygenPages/ChangeLog.txt index a03d389b413..e16fcbec180 100644 --- a/LUFA/DoxygenPages/ChangeLog.txt +++ b/LUFA/DoxygenPages/ChangeLog.txt @@ -22,6 +22,7 @@ * - Fixed missing HID report ID prefix on HID class driver GetReport request responses (thanks to Bert van Hall) * - Library Applications: * - Fixed spurious 0xFE USART byte sent in the USBtoSerial project when the baud rate is changed (thanks to Carl Kjeldsen) + * - Fixed blocking USART reads causing low throughput on slow baud rates in the USBtoSerial project (thanks to Nevada Smith) * * \section Sec_ChangeLog140302 Version 140302 * New: diff --git a/Projects/USBtoSerial/USBtoSerial.c b/Projects/USBtoSerial/USBtoSerial.c index 1c791d95d31..b51c7c2584f 100644 --- a/Projects/USBtoSerial/USBtoSerial.c +++ b/Projects/USBtoSerial/USBtoSerial.c @@ -133,8 +133,8 @@ int main(void) } } - /* Load the next byte from the USART transmit buffer into the USART */ - if (!(RingBuffer_IsEmpty(&USBtoUSART_Buffer))) + /* Load the next byte from the USART transmit buffer into the USART if transmit buffer space is available */ + if (Serial_IsSendReady() && !(RingBuffer_IsEmpty(&USBtoUSART_Buffer))) Serial_SendByte(RingBuffer_Remove(&USBtoUSART_Buffer)); CDC_Device_USBTask(&VirtualSerial_CDC_Interface);