PIC USART: rcreg leer

OP #1432030
Lesenswert?
• ▲
▼
Hallo

Ich möchte Zeichen vom PC auf den PIC übertragen und da an LED's 
ausgeben.
Leider ist das RCREG Register immer leer.

Weiss jemand weiter?

Freundliche Grüsse und Danke



#include <pic18.h>


void init (void)
{
  /* PortE (X4) */

  TRISE=0x00;          // PORTE = Output (Data Direction Register)
  LATE=0x00;          // Data Outpt Register
  PORTE=0x00;          // Clear PORTE

  /* PortC (X7) */

  TRISC=0xFF;          // PORTC = Input

  /* PortF (X2) */

  TRISF=0xFF;          // PORTF = Input

  /* Init USART */

  SYNC=0;            // asynchronous mode
  SPEN=1;            // set serial port enable bit
  BRGH=1;            //
  BRG16=1;          // enable BRGH
  SPBRG=520;          // Baudrate = 19200

  /* USART reception */

  RCIE=1;            // enables the USART receive Interrupt
  RX9=0;            // 8bit
  CREN=1;            // continuos receive enable bit

  /* USART transmission */

  TXIE=1;            // enables the USART transmit Interrupt
  TXEN=1;            // continuos receive enable bit

  /* Interrupts */

  PEIE=1;            // enable Peripheral Interrupt
  GIE=1;            // enable all Interrupts
}


void main (void)
{
  init();
  while(1);

}


void interrupt isr (void)
{

  GIE=0;            // disable all Interrtupts

  if (RCIF)
  {
    PORTE=RCREG;        // USART value to output

  }

  GIE=1;            // enable all Interrupts
}
Gast #1432189
Lesenswert?
• ▲
▼
ist im datenblatt des PIC18f6680 so ersichtlich.auf seite 237.
und das signal habe ich auch mit dem K.O. gemessen.. bei einer Baudrate 
von 19200 ergibt sich eine zeit von 52us.

Der Fehler muss irgendwo im RCREG liegen..
Gast #1432445
Lesenswert?
• ▲
▼
> du meinst das RCREG ins TXREG schreiben oder wie?
Super Idee, oder nich?

Aber:
> mit der baudrate ist auch alles in Ordnung.
> ist im datenblatt des PIC18f6680 so ersichtlich.auf seite 237.
Das sehe ich anders.
Du hast einen 8-Bit-PIC, Du kannst also keinen 16-Bit-Register mit einem 
Schwung beschreiben (es sei denn, Dein Compiler, den wir nicht kennen, 
bietet hier ein Macro). Das Baudratenregister ist aber ein 
16-Bit-Register (bestehend aus SPBRG und SPBRGH), also solltest Du die 
520 auch entsprechend gerecht auf beide Register aufteilen.

Solltest Du den C18 verwenden, so ist SPBRG definitiv als 8-Bit-Register 
definiert und von den 520 werden nur die ersten 8 Bit in SPBRG 
übernommen.
Auszug aus p18f6680.h:
1
extern volatile near unsigned char       SPBRG;
OP #1432467
Lesenswert?
• ▲
▼
Zwirbeljupp schrieb:
>> du meinst das RCREG ins TXREG schreiben oder wie?
> Super Idee, oder nich?
>
> Aber:
>> mit der baudrate ist auch alles in Ordnung.
>> ist im datenblatt des PIC18f6680 so ersichtlich.auf seite 237.
> Das sehe ich anders.
> Du hast einen 8-Bit-PIC, Du kannst also keinen 16-Bit-Register mit einem
> Schwung beschreiben (es sei denn, Dein Compiler, den wir nicht kennen,
> bietet hier ein Macro). Das Baudratenregister ist aber ein
> 16-Bit-Register (bestehend aus SPBRG und SPBRGH), also solltest Du die
> 520 auch entsprechend gerecht auf beide Register aufteilen.
>
> Solltest Du den C18 verwenden, so ist SPBRG definitiv als 8-Bit-Register
> definiert und von den 520 werden nur die ersten 8 Bit in SPBRG
> übernommen.
> Auszug aus p18f6680.h:
>
1
> extern volatile near unsigned char       SPBRG;
2
>

danke für deine antwort

da hast du recht. ja ich verwende den C18.habs jetzt aufgeteilt,
aber es hat auch vorher funktioniert, habs ja mit dem KO gemessen.

bei einer Baudrate von 19200--> t=1/baudrate=52us


auf dem bild sieht man schön wie die Daten übertragen werden.


und auch das rücksenden funktionert(auch mit dem KO gemessen)

nur das ausgeben der Daten an dem Port funktioniert nicht.
Angehängte Dateien:

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.