From cef40b1350e27406f4003923b104bf6477d6049c Mon Sep 17 00:00:00 2001 From: Benjamin Maus Date: Fri, 7 Jun 2013 15:22:52 +0200 Subject: [PATCH] Fix for Serial::flush() deadlock with high baud rates. --- hardware/arduino/cores/arduino/HardwareSerial.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hardware/arduino/cores/arduino/HardwareSerial.cpp b/hardware/arduino/cores/arduino/HardwareSerial.cpp index eb2365f3337..92ec1c31f7c 100644 --- a/hardware/arduino/cores/arduino/HardwareSerial.cpp +++ b/hardware/arduino/cores/arduino/HardwareSerial.cpp @@ -470,10 +470,12 @@ size_t HardwareSerial::write(uint8_t c) _tx_buffer->buffer[_tx_buffer->head] = c; _tx_buffer->head = i; - sbi(*_ucsrb, _udrie); // clear the TXC bit -- "can be cleared by writing a one to its bit location" transmitting = true; sbi(*_ucsra, TXC0); + + // enabling interrupts after the TXC bit has been set + sbi(*_ucsrb, _udrie); return 1; }