Ohne vollständigen Code kann man ja nur Raten, aber beim Überfliegen ist mir gleich folgendes aufgefallen:
Code:
do
{
c=USART_Receive();
if(c==stern) return 0;
if(c==komma) return i;
if(c!=end) //Buchstaben sammeln
{
line[i]=(char)c;
i++;
line[i]=0; //End of String updaten
}
}while(c!=end);
i wird nicht überwacht. Fehler auf der UART Seite -> Array kann Überlaufen. Sowas kann dir schon passieren wenn der Controller mal zu lange in einem Interrupt braucht und das entscheidente UART Zeichen verpasst wird!
Lesezeichen