diff --git a/firmware/src_simtrace/mode_cardemu.c b/firmware/src_simtrace/mode_cardemu.c index 9ee31ca7..10b5c4c3 100644 --- a/firmware/src_simtrace/mode_cardemu.c +++ b/firmware/src_simtrace/mode_cardemu.c @@ -106,16 +106,16 @@ void usart_irq_rx(uint8_t uart) #endif csr = usart->US_CSR; - if (csr & US_CSR_TXRDY) { - if (card_emu_tx_byte(ch) == 0) - USART_DisableIt(usart, US_IER_TXRDY); - } - if (csr & US_CSR_RXRDY) { byte = (usart->US_RHR) & 0xFF; rbuf_write(&ch1_rb, byte); } + if (csr & US_CSR_TXRDY) { + if (card_emu_tx_byte(ch) == 0) + USART_DisableIt(usart, US_IER_TXRDY); + } + if (csr & (US_CSR_OVRE|US_CSR_FRAME|US_CSR_PARE| US_CSR_TIMEOUT|US_CSR_NACK|(1<<10))) { usart->US_CR = US_CR_RSTSTA | US_CR_RSTIT | US_CR_RSTNACK;