From 724f8db1b1babb9a44d2e9654656fee5750e1e41 Mon Sep 17 00:00:00 2001 From: Paul Mathieu Date: Sat, 28 Jun 2025 18:21:11 -0700 Subject: [PATCH] mbv: fix async uart2 app. it works! --- mbv/apps/async/uart2.cc | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/mbv/apps/async/uart2.cc b/mbv/apps/async/uart2.cc index f6c9fbb..f00bb60 100644 --- a/mbv/apps/async/uart2.cc +++ b/mbv/apps/async/uart2.cc @@ -45,10 +45,15 @@ void StartReceiving() { } void StartSending() { - if (tx_ring_buffer.AvailableData() > 0 && sending < 1) { - sending += 1; - XUartLite_Send(uart0, tx_ring_buffer.RawReadPointer(), 1); + if (sending > 0) { + return; } + size_t tosend = tx_ring_buffer.ContiguousAvailableData(); + if (tosend < 1) { + return; + } + sending += 1; + XUartLite_Send(uart0, tx_ring_buffer.RawReadPointer(), tosend); } std::byte UartReadByte() { @@ -91,17 +96,14 @@ void UartWriteCrash(std::span data) { } while (XUartLite_IsSending(uart0)) { } + XUartLite_Send(uart0, nullptr, 0); // reset buffer before enabling interrupts XUartLite_EnableInterrupt(uart0); } void UartEcho() { while (1) { - gpio0->data = tx_ring_buffer.AvailableData(); - std::byte c = UartReadByte(); UartWriteByte(c); - - //gpio0->data = uart0->Stats.ReceiveOverrunErrors; } }