diff --git a/cores/esp8266/HardwareSerial.cpp b/cores/esp8266/HardwareSerial.cpp index 970b16c50..fcca84687 100644 --- a/cores/esp8266/HardwareSerial.cpp +++ b/cores/esp8266/HardwareSerial.cpp @@ -608,6 +608,7 @@ size_t HardwareSerial::write(uint8_t c) { while(_tx_buffer->room() == 0) { yield(); + uart_arm_tx_interrupt(_uart); } _tx_buffer->write(c); diff --git a/cores/esp8266/cbuf.h b/cores/esp8266/cbuf.h index 87642510b..ceb6a7b6d 100644 --- a/cores/esp8266/cbuf.h +++ b/cores/esp8266/cbuf.h @@ -39,8 +39,12 @@ class cbuf { } size_t room() const { - if(_end >= _begin) return _size - (_end - _begin) - 1; - + if(_end >= _begin) { + return _size - (_end - _begin) - 1; + } + if(_begin == _end) { + return _size; + } return _begin - _end - 1; }