ARM LPC2134 Uart Empfangsprobleme

OP (Firma: ARM LPC2134, uVision3, in C) #1255052
Hallo,
ich arbeite mit einem LPC2134 mit einer RS485-Schnittstelle.
Habe Probleme mit void receive():Bei Emfang von Byte leuchtet die
receive-Lämchen nicht, d.h. das Byte nicht empangen wird.
void transmit(void) funktioniert.
Ideen?
Vielen Dank imm Voraus.

Mit dieser Zuweisung wird doch aus dem UART Byte geholt und damit auch
gelesen. Also das Lämchen muss doch kurz aufleuchten.  (x = U0RBR);
Auf dem Modul sind UARTS ich sende von einem zum anderem über RS485



/*************** System Initialization ***************/

void Initialize (void)
{
  PINSEL0  =  0x00050005;    /*Enable TxD1,TxD0,RxD1,RxD0*/
  IODIR0  =  0x10400410;    /*OUT: RTS0_P0.4, RTS1_P0.14,
COM1_P0.22,COM0_P0.28*/
  IOSET0  =  0x10400010;    /*LOW auf 0 COM = 0(RS485), RTS0=0(Sender)*/
  IOCLR0  =  0x00000000;    /*HIGH auf 1 RTS1=1(Empfänger)*/

  U1LCR    =  0x83;    /*8 bits, 1 stopbit, no Parity, enable DLAB*/
  U1DLM    =  0x01;    /*9600 Baud Rate, 55.296.000 PCLK*/
  U1DLL    =  0x68;    /*360dez=0x0168*/
  U1LCR    =  0x03;    /*disable DLAB*/
  U1FCR    =  0x01;    /*enable UART1-FIFO*/

  U0LCR    =  0x83;    /*8 bits, 1 stopbit, no Parity, enable DLAB*/
  U0DLM    =  0x01;    /*9600 Baud Rate, 55.296.000 PCLK*/
  U0DLL    =  0x68;    /*360dez=0x0168*/
  U0LCR    =  0x03;    /*disable DLAB*/
  U0FCR    =  0x01;    /*enable UART1-FIFO*/
}



/* Write character to Serial Port    */

void transmit(void)              /*while ist eine Warteschleife*/
{
     while (!(U1LSR & 0x20));
    (U1THR = 0x89);
}

/* Read character from Serial Port    */

unsigned char x;

void receive(void)
{
  while ((U0LSR & 0x01));
   (x = U0RBR);

}
Persönliche Seite
Was soll "das Receive-Lämchen" sein?

Warum verwendest du gleich zwei serielle Schnittstellen?

Das solltest Du Dir nochmal ansehen:
1
void transmit(void)              /*while ist eine Warteschleife*/
2
{
3
     while (!(U1LSR & 0x20));
4
    (U1THR = 0x89);
5
}

Diese Funktion gibt immer denselben Wert aus, ist das sinnvoll? Was 
sollen die Klammern um die Zeile mit der Zuweisung an U1THR?

Deine "Empfangsroutine" ist auch merkwürdig; warum wird das empfangene 
Zeichen in einer globalen Variablen abgelegt und nicht als Rückgabewert 
zurückgegeben?
OP (Firma: ARM LPC2134, uVision3, in C)
Danke für die schnelle Antwort
Ich bin ein Anfänger und arbeite mich ein. Das Lämpchen leuchtet denke 
ich wenn was versand bzw. empfangen wird. Vielleicht ist auch irgendein 
Port falsche gesetzt. Ich fins nicht.

Ich sende Zeichen von UART1 und empfange dieses Zeichen auf UART0.

void transmit(void)
{
     while (!(U1LSR & 0x20));
    U1THR = 0x89;
}

so die Klammern sind weg.
Ich will auch nur ein Zeichen senden und mit dem anderem UART empfangen.

meinst du so?
void receive(void)
{
  while ((U0LSR & 0x01));
   return (U0RBR);

}
allerdings bekomme ich von Keil uVersion folgende Meldung:
Initialize.c(58): error:  #118: a void function may not return a value
OP (Firma: ARM LPC2134, uVision3, in C)
hat sich erledigt.

ich habe die PINS falsch gesetzt:

  IOSET0  =  0x10400010;    /*LOW auf 0 COM = 0(RS485), RTS0=0(Sender)*/
  IOCLR0  =  0x00000000;    /*HIGH auf 1 RTS1=1(Empfänger)*/


richtig wäre:
  IOCLR0  =  0x10400010;
  IOSET0  =  0x00000400;
Gast
I würde umbedingt mal ein C Tutorial lesen


meinst du so?
void receive(void)
{
  while ((U0LSR & 0x01));
   return (U0RBR);

}
allerdings bekomme ich von Keil uVersion folgende Meldung:
Initialize.c(58): error:  #118: a void function may not return a value



dann wird das klar sein.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.