Hallo Leuchtturm,
die main scheint richtig zu sein, es liegt also wahrscheinlich an der uart_init. Ich weiss zwar nicht genau, was da falsch ist, aber vllt klapp es so:
Code:
void uart_init()
{	
	UBRRL=23;
	UBRRH=0;
	UCSRC=(1<<URSEL)|(3<<UCSZ0);
	UCSRB=(1<<TXEN)|(1<<RXEN);
}
kann auch sein, dass die Baudrate beim Terminal irgendwiwe falsch generiert wird bzw andere Einstellungen wie Parity, Databits oder Stopbits nicht richtig eingestellt sind.

MfG Mark