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 }
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
Am Aufruf der Interrupt Routine kann es nicht liegen, ich habe soeben versuchsweise mit dem Timer0 Interrupts ausgelöst.
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.