usart: higher incoming traffic capabilities

This commit is contained in:
King Kévin 2017-12-16 13:24:31 +01:00
parent 5773f62be2
commit 0cfbb1b4d8
1 changed files with 5 additions and 4 deletions

View File

@ -134,14 +134,15 @@ void USART_ISR(USART_ID)(void)
tx_used--; // update used size
}
}
if (usart_get_flag(USART(USART_ID), USART_SR_RXNE)) { // data has been received
while (usart_get_flag(USART(USART_ID), USART_SR_RXNE)) { // data has been received (repeat while receiving)
char c = usart_recv(USART(USART_ID)); // save character and free USART buffer
// only save data if there is space in the buffer
while (rx_used>=LENGTH(rx_buffer)) { // if buffer is full
if (rx_used>=LENGTH(rx_buffer)) { // if buffer is full
rx_i = (rx_i+1)%LENGTH(rx_buffer); // drop oldest data
rx_used--; // update used buffer information
}
rx_buffer[(rx_i+rx_used)%LENGTH(rx_buffer)] = usart_recv(USART(USART_ID)); // put character in buffer
rx_buffer[(rx_i+rx_used)%LENGTH(rx_buffer)] = c; // put character in buffer
rx_used++; // update used buffer
usart_received = (rx_used!=0); // update available data
usart_received = true; // update available data
}
}