https://forum.pjrc.com/threads/27093-Fix-for-9-bit-serial-receive-bugmain
@@ -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) { |