https://forum.pjrc.com/threads/27093-Fix-for-9-bit-serial-receive-bugteensy4-core
| @@ -337,8 +337,11 @@ void uart0_status_isr(void) | |||
| head = rx_buffer_head; | |||
| tail = rx_buffer_tail; | |||
| do { | |||
| n = UART0_D; | |||
| if (use9Bits && (UART0_C3 & 0x80)) n |= 0x100; | |||
| if (use9Bits && (UART0_C3 & 0x80)) { | |||
| n = UART0_D | 0x100; | |||
| } else { | |||
| n = UART0_D; | |||
| } | |||
| newhead = head + 1; | |||
| if (newhead >= RX_BUFFER_SIZE) newhead = 0; | |||
| if (newhead != tail) { | |||
| @@ -342,8 +342,11 @@ void uart1_status_isr(void) | |||
| head = rx_buffer_head; | |||
| tail = rx_buffer_tail; | |||
| do { | |||
| n = UART1_D; | |||
| if (use9Bits && (UART1_C3 & 0x80)) n |= 0x100; | |||
| if (use9Bits && (UART1_C3 & 0x80)) { | |||
| n = UART1_D | 0x100; | |||
| } else { | |||
| n = UART1_D; | |||
| } | |||
| newhead = head + 1; | |||
| if (newhead >= RX_BUFFER_SIZE) newhead = 0; | |||
| if (newhead != tail) { | |||
| @@ -251,8 +251,11 @@ void uart2_status_isr(void) | |||
| uint8_t c; | |||
| if (UART2_S1 & UART_S1_RDRF) { | |||
| n = UART2_D; | |||
| if (use9Bits && (UART2_C3 & 0x80)) n |= 0x100; | |||
| if (use9Bits && (UART2_C3 & 0x80)) { | |||
| n = UART2_D | 0x100; | |||
| } else { | |||
| n = UART2_D; | |||
| } | |||
| head = rx_buffer_head + 1; | |||
| if (head >= RX_BUFFER_SIZE) head = 0; | |||
| if (head != rx_buffer_tail) { | |||