Ja. Es können Verluste an mehreren Stellen auftreten.
1/ Die ISR läuft und es kommt ein neues Zeichen in der UART Hardware an.
Wenn das nicht gespeichert werden kann, geht es verloren. Eher
unwahrscheinlich bei Baudrate = 19,200 bits/s, Quarz = 8 MHz, aber je
nach dem Restcode kann man das provozieren.
2/ user_application() wird zu selten ausgeführt. Der Puffer
receive_uart_data ist nur ein Byte gross. Wenn zwischen zwei ISR
Aufrufen kein user_application() Aufruf ist, geht das ältere Byte
verloren.
3/ Man sieht die Definition von new_receive_uart_data nicht,
insbesondere ob es volatile typisiert ist. Der Compiler kann in
user_application() Code produzieren, der nicht berücksichtigt, dass eine
ISR diese Variable zu einem beliebigen Zeitpunkt ändert.