PIC18f4680 eusart

Gast #3062455
Lesenswert?
• ▲
▼
Hallo

Ich habe probleme mit der eusart Schnittstelle des Pics. Auf meinem 
Board habe ich den Pic mit 24Mhz quarz und ein LTC485 als RS485 wandler 
verbaut.
Zur Verbindung mit dem Computer habe ich ein USB->RS485 Wandler.
Die Verbindung vom Pic zum Computer funktioniert einwandfrei.

Nun habe ich das Problem, wenn ich aber vom PC senden möchte, messe ich 
das Signal am RX pin, doch der Pic löst keinen Interrupt aus und das 
RCIF flag wird auch nicht gesetzt.

In der WriteByte Funktion habe ich zuerst TXIF abgefragt, doch dieses 
bleibt immer auf 1 =(The EUSART transmit buffer, TXREG, is empty).
Desshalb habe ich da ein Delay.

In meinem Versuchen habe ich bereits sichergestellt, dass ich nicht 
gleichzeitig mit beiden Sende.

Hier noch die relevanten Funktionen.


void interruptinit(void){
  RCONbits.IPEN = 1;    //Low und High Priority Interrupt   INTCON = 0;
  INTCONbits.GIEH = 1;  //High Priority Interrupts Enable
  PIE1 = 0;
  PIE1bits.RCIE = 1;    //UART Recieve interrupt zulassen
  IPR1bits.RCIP = 1;    //UART Recieve interrupt  High Prio
}

unsigned char ReadByte(void){  // 1 Byte vom Eingang lesen
    return RCREG;
}

void WriteByte(char byte){   // 1 Byte an den Ausgang senden
    RT = 1;
    TXREG = byte;
    Delay100TCYx(70);  // Senden
    RT = 0;
}
void InitUSART(void){
    RT = 0;
    TXSTA   = 0b00100100;    // 8Bit,async
    SPBRG   = 155;      // Baudraten Generator 9600
    RCSTA   = 0b10010000;     // Seriell ein,8Bit, Asynchron
}
Gast #3062458
Lesenswert?
• ▲
▼
David schrieb:
> void interruptinit(void){
>
>   RCONbits.IPEN = 1;    //Low und High Priority Interrupt   INTCON = 0;
>
>   INTCONbits.GIEH = 1;  //High Priority Interrupts Enable
>
>   PIE1 = 0;
>
>   PIE1bits.RCIE = 1;    //UART Recieve interrupt zulassen
>
>   IPR1bits.RCIP = 1;    //UART Recieve interrupt  High Prio
>
> }

Kleine änderung

RCONbits.IPEN = 1;    //Low und High Priority Interrupt
INTCON = 0;
INTCONbits.GIEH = 1;  //High Priority Interrupts Enable

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.