So vielleicht:

static inline uint8_t uart_getc_wait (void)
{ // Warten, bis etwas empfangen wird
int timeout=0;
while (!(UCSRA & (1 << RXC)) && (timeout++ < 10000));

if(timeout < 10000) return UDR; // Das empfangene Zeichen zurückliefern
else return 0; // timeout aufgetreten
}