Danke für die schnelle Antwort Mobius.
Habe den Code wie du beschrieben hast geändert. Leider hat sich nichts an meinem Problem geändert.
Mein Code schaut nun so aus:

Code:
void uart_putc(char c)
{
  while( (UCSRA & 1<<UDRE) == 0 );
  UDR = c;
}

void uart_puts (char *s)
{
   while (*s != 0) // wait until tx register is empty
      uart_putc(*s++);
}
Der String wird immer noch nicht übertragen.
Kann das an AVR-GCC liegen, das die Strings irgendwie falsch interpretiert werden?
Habe mal als Versuch aus dem String nur ein Zeichen in eine Char-Variable gespeichert und dann mit der funktionierenden Funktion uart_putc das Zeichen ausgegeben. Resultat war ein falsches Zeichen. Daher nehme ich an das mein µC irgendwie keine Strings mag.

Hat jemand schon mal so etwas gehabt, oder weis woran das liegt?

MfG HAL2004