Browse Source

HAL_ChibiOS: fixed UART send from TX complete IRQ

mission-4.1.18
Andrew Tridgell 7 years ago
parent
commit
85acbcb21d
  1. 5
      libraries/AP_HAL_ChibiOS/UARTDriver.cpp

5
libraries/AP_HAL_ChibiOS/UARTDriver.cpp

@ -211,13 +211,16 @@ void UARTDriver::tx_complete(void* self, uint32_t flags) @@ -211,13 +211,16 @@ void UARTDriver::tx_complete(void* self, uint32_t flags)
{
UARTDriver* uart_drv = (UARTDriver*)self;
if (!uart_drv->tx_bounce_buf_ready) {
uart_drv->dma_handle->unlock_from_IRQ();
uart_drv->_last_write_completed_us = AP_HAL::micros();
uart_drv->tx_bounce_buf_ready = true;
if (uart_drv->unbuffered_writes) {
//kickstart the next write
uart_drv->write_pending_bytes_DMA_from_irq();
}
if (uart_drv->tx_bounce_buf_ready) {
// we didn't launch a new DMA
uart_drv->dma_handle->unlock_from_IRQ();
}
}
}

Loading…
Cancel
Save