From bbaf76a1fa523348a741927a9d003c1546b6b30e Mon Sep 17 00:00:00 2001 From: Korneliusz Osmenda Date: Thu, 8 Sep 2022 17:07:56 +0200 Subject: [PATCH] read/write more bytes per irq --- src/uart.hpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/uart.hpp b/src/uart.hpp index f6e6a0c..e4ad5d6 100644 --- a/src/uart.hpp +++ b/src/uart.hpp @@ -28,13 +28,14 @@ private: } void isr() { - if (!uart_irq_update(dev) || !uart_irq_is_pending(dev)) + if (!uart_irq_update(dev)) return; - if(uart_irq_rx_ready(dev)) + while(uart_irq_rx_ready(dev)) { uint8_t recvData; - uart_fifo_read(dev, &recvData, 1); + if(uart_fifo_read(dev, &recvData, 1)!=1) + break; if(rx_callback) { if(rx_callback(rx_callback_obj,&recvData)) @@ -45,7 +46,7 @@ private: fifo_rx.put(recvData); } } - if(uart_irq_tx_ready(dev)) + while(uart_irq_tx_ready(dev)) { uint8_t val; intptr_t cnt = fifo_tx.get(&val);