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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren