LPC2368 String in UART einlesen

Gast #1380037
Lesenswert?

Hallo zusammen,

ich hoffe einer von Euch kann mir mit meinem aktuellen Problem helfen.
Ich möchte über den UART meines LPC23648 einen kompletten String 
einlesen,
bspw. wie folgt: 43 1<cr><lf>.

Hier der Teil des C Code meines Programms: Ein Interrupt wird aktiviert 
nach Erhalt des Strings

Hier die Uart Init:
U0FCR = 0x01;
U0LCR = 0x87;
U0LDM = 0;
U0DLL = 0x4A;
U0FDR = 0xC7;
U0LCR = 0x07;
U0IER = 0x05;

Hier die Funktion:
unsigned char array[16];  //Global definiert in main file
unsigned char x;         //Global definiert in main file
unsigned char New_Data; //Global definiert in main file

__irq void UARTinterrupt(void)
{
 while(U0LSR & (1 <<0)
 {
  array[x]=U0RBR;
  if(array[x]==0x0A)
  {
   New_Data=0x01;
  }
  x++;
 }
}


Mein Problem ist jetzt, dass zwar der Interrupt ausgelöst wird, aber 
nach Abarbeitung im Array nur noch das letzte Zeichen 0x0A (<lf>) drin 
steht und das an erster Position. Der Rest ist irgendwie verloren 
gegangen.
Das RX FIFO habe ich übrigens aktiviert.
Was ist hier passiert?
Schon mal Dank im Voraus
Gast #1380122
Lesenswert?

Wenn ich das richtig sehe, hast du zwei Stopbits eingestellt (U0LCR = 
7). Stimmt das mit dem Sender überein?

Ansonsten dürfte das die Ursache sein: Das letzte übertragene Zeichen 
ist wegen des anschließenden Ruhepegels das einzige mit gültigem Format, 
die anderen werden alle wegen Frame Error (zu wenig Stopbits) verworfen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren