From 8de31cbb78f98eb4d3c5b7232e85337b15f294e5 Mon Sep 17 00:00:00 2001
From: Dean Camera <dean@fourwalledcubicle.com>
Date: Mon, 12 Jul 2010 07:11:50 +0000
Subject: [PATCH] Reduce prescaler of the flush timer in the USBtoSerial demo,
 so that buffer overruns will not occur regardless of hardware and baud rate
 settings.

---
 Projects/USBtoSerial/USBtoSerial.c   | 4 ++--
 Projects/XPLAINBridge/Lib/SoftUART.c | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/Projects/USBtoSerial/USBtoSerial.c b/Projects/USBtoSerial/USBtoSerial.c
index 918986883..145047cbc 100644
--- a/Projects/USBtoSerial/USBtoSerial.c
+++ b/Projects/USBtoSerial/USBtoSerial.c
@@ -124,8 +124,8 @@ void SetupHardware(void)
 	LEDs_Init();
 	USB_Init();
 
-	/* Configure the UART flush timer - run at Fcpu/1024 for maximum interval before overflow */
-	TCCR0B = ((1 << CS02) | (1 << CS00));
+	/* Start the flush timer so that overflows occur rapidly to push received bytes to the USB interface */
+	TCCR0B = (1 << CS02);
 }
 
 /** Event handler for the library USB Connection event. */
diff --git a/Projects/XPLAINBridge/Lib/SoftUART.c b/Projects/XPLAINBridge/Lib/SoftUART.c
index 90c23b71d..4ec8dcdc8 100644
--- a/Projects/XPLAINBridge/Lib/SoftUART.c
+++ b/Projects/XPLAINBridge/Lib/SoftUART.c
@@ -124,7 +124,7 @@ ISR(TIMER1_COMPA_vect, ISR_BLOCK)
 }
 
 /** ISR to manage the transmission of bits via the software UART. */
-ISR(TIMER3_COMPA_vect, ISR_NOBLOCK)
+ISR(TIMER3_COMPA_vect, ISR_BLOCK)
 {
 	/* Check if transmission has finished */
 	if (TX_BitsRemaining)
-- 
GitLab