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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.