The fundamental weakness of the serial communication code presented in Chapter 5 is that unless the user code is constantly polling the USART and is prepared to receive characters as soon as they arrive, there is a high probability that the (single) receive buffer will overflow and characters will be lost. Ideally, we want a solution that does not require such a high degree of attention from the user code and which also can guarantee that characters are not lost. Similarly, when the user code wishes to transmit a string it must
wait for the transmit buffer to empty after each character sent