Zitat Zitat von neo98 Beitrag anzeigen
[...]
Code:
  {
    /*
      Die Funktion wird auf alle Faelle erst nach dem Empfang von der
      vorgegebenen Anzahl Zeichen verlassen. blocking mode
    */
    while (i < length)
    {
      while(!(UCSRA & (1<<RXC)));
        data [i++] = UDR;
    }
Da ist der Fehler: In der While-Schleife prüfst du, ob das RXC-Bit NICHT (!!!) gesetzt ist, du möchtest eigentlich das Gegenteil machen (Abbruch wenn das Bit gelöscht ist, sonst weitermachen).

mfG
Markus