File tree 1 file changed +13
-5
lines changed
1 file changed +13
-5
lines changed Original file line number Diff line number Diff line change @@ -85,7 +85,7 @@ static void IRAM_ATTR _uart_isr(void *arg)
85
85
uart -> dev -> int_clr .rxfifo_tout = 1 ;
86
86
while (uart -> dev -> status .rxfifo_cnt || (uart -> dev -> mem_rx_status .wr_addr != uart -> dev -> mem_rx_status .rd_addr )) {
87
87
c = uart -> dev -> fifo .rw_byte ;
88
- if (uart -> queue != NULL && ! xQueueIsQueueFullFromISR ( uart -> queue )) {
88
+ if (uart -> queue != NULL ) {
89
89
xQueueSendFromISR (uart -> queue , & c , & xHigherPriorityTaskWoken );
90
90
}
91
91
}
@@ -285,10 +285,18 @@ void uartRxFifoToQueue(uart_t* uart)
285
285
{
286
286
uint8_t c ;
287
287
UART_MUTEX_LOCK ();
288
- while (uart -> dev -> status .rxfifo_cnt || (uart -> dev -> mem_rx_status .wr_addr != uart -> dev -> mem_rx_status .rd_addr )) {
289
- c = uart -> dev -> fifo .rw_byte ;
290
- xQueueSend (uart -> queue , & c , 0 );
291
- }
288
+ //disable interrupts
289
+ uart -> dev -> int_ena .val = 0 ;
290
+ uart -> dev -> int_clr .val = 0xffffffff ;
291
+ while (uart -> dev -> status .rxfifo_cnt || (uart -> dev -> mem_rx_status .wr_addr != uart -> dev -> mem_rx_status .rd_addr )) {
292
+ c = uart -> dev -> fifo .rw_byte ;
293
+ xQueueSend (uart -> queue , & c , 0 );
294
+ }
295
+ //enable interrupts
296
+ uart -> dev -> int_ena .rxfifo_full = 1 ;
297
+ uart -> dev -> int_ena .frm_err = 1 ;
298
+ uart -> dev -> int_ena .rxfifo_tout = 1 ;
299
+ uart -> dev -> int_clr .val = 0xffffffff ;
292
300
UART_MUTEX_UNLOCK ();
293
301
}
294
302
You can’t perform that action at this time.
0 commit comments