From e479fb39412f9fb7b1110facd6867997ef839e5d Mon Sep 17 00:00:00 2001 From: bsekisser Date: Sat, 10 Oct 2020 17:40:59 -0400 Subject: [PATCH] Set udre flag when (re)enabling uart transmitter. modified: sim/avr_uart.c Previously, disabling the uart transmitter cleared the udrc interrupt and cleared the udre (udrc.raised) flag. Upon reenabling the transmitter, the udre flag is still clear signifying the buffer is full, thus waiting for the udr to clear via udre flag hangs. --- simavr/sim/avr_uart.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/simavr/sim/avr_uart.c b/simavr/sim/avr_uart.c index 4e3db86..5594170 100644 --- a/simavr/sim/avr_uart.c +++ b/simavr/sim/avr_uart.c @@ -405,6 +405,8 @@ avr_uart_write( if (new_txen != txen) { if (p->udrc.vector && !new_txen) { avr_uart_clear_interrupt(avr, &p->udrc); + } else { + avr_regbit_set(avr, p->udrc.raised); } } } -- 2.39.5