mbv: fix async uart2 app. it works!

This commit is contained in:
Paul Mathieu 2025-06-28 18:21:11 -07:00
parent 269a04d5f5
commit 724f8db1b1

View File

@ -45,10 +45,15 @@ void StartReceiving() {
} }
void StartSending() { void StartSending() {
if (tx_ring_buffer.AvailableData() > 0 && sending < 1) { if (sending > 0) {
sending += 1; return;
XUartLite_Send(uart0, tx_ring_buffer.RawReadPointer(), 1);
} }
size_t tosend = tx_ring_buffer.ContiguousAvailableData();
if (tosend < 1) {
return;
}
sending += 1;
XUartLite_Send(uart0, tx_ring_buffer.RawReadPointer(), tosend);
} }
std::byte UartReadByte() { std::byte UartReadByte() {
@ -91,17 +96,14 @@ void UartWriteCrash(std::span<const std::byte> data) {
} }
while (XUartLite_IsSending(uart0)) { while (XUartLite_IsSending(uart0)) {
} }
XUartLite_Send(uart0, nullptr, 0); // reset buffer before enabling interrupts
XUartLite_EnableInterrupt(uart0); XUartLite_EnableInterrupt(uart0);
} }
void UartEcho() { void UartEcho() {
while (1) { while (1) {
gpio0->data = tx_ring_buffer.AvailableData();
std::byte c = UartReadByte(); std::byte c = UartReadByte();
UartWriteByte(c); UartWriteByte(c);
//gpio0->data = uart0->Stats.ReceiveOverrunErrors;
} }
} }