Forum: Mikrocontroller und Digitale Elektronik LPC2368 String in UART einlesen


von Andreas (Gast)


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

von tuppes (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.