8000 _uart_isr use wr_addr != rd_addr as test for internal queue not empty… · evansjames/arduino-esp32@a6a9a51 · GitHub
[go: up one dir, main page]

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit a6a9a51

Browse files
qt1me-no-dev
authored andcommitted
_uart_isr use wr_addr != rd_addr as test for internal queue not empty (espressif#1849)
1 parent 02ee799 commit a6a9a51

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

cores/esp32/esp32-hal-uart.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ static void IRAM_ATTR _uart_isr(void *arg)
8080
uart->dev->int_clr.rxfifo_full = 1;
8181
uart->dev->int_clr.frm_err = 1;
8282
uart->dev->int_clr.rxfifo_tout = 1;
83-
while(uart->dev->status.rxfifo_cnt) {
83+
while(uart->dev->status.rxfifo_cnt || (uart->dev->mem_rx_status.wr_addr != uart->dev->mem_rx_status.rd_addr)) {
8484
c = uart->dev->fifo.rw_byte;
8585
if(uart->queue != NULL && !xQueueIsQueueFullFromISR(uart->queue)) {
8686
xQueueSendFromISR(uart->queue, &c, &xHigherPriorityTaskWoken);

0 commit comments

Comments
 (0)
0