diff --git a/tmk_core/common/avr/uart.c b/tmk_core/common/avr/uart.c index d9d42390..0fec705f 100644 --- a/tmk_core/common/avr/uart.c +++ b/tmk_core/common/avr/uart.c @@ -66,7 +66,7 @@ // These buffers may be any size from 2 to 256 bytes. #define RX_BUFFER_SIZE 64 -#define TX_BUFFER_SIZE 40 +#define TX_BUFFER_SIZE 256 static volatile uint8_t tx_buffer[TX_BUFFER_SIZE]; static volatile uint8_t tx_buffer_head; @@ -95,6 +95,8 @@ void uart_putchar(uint8_t c) i = tx_buffer_head + 1; if (i >= TX_BUFFER_SIZE) i = 0; + // return immediately to avoid deadlock when interrupt is disabled(called from ISR) + if (tx_buffer_tail == i && (SREG & (1<