Gast
#3062455
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 }