Gast
#2849454
Hallo,
ich habe einen PIC18f, an den habe ich einen RS232 und einen RS485
Treiber an den beiden UARTs angeschlossen. RS232 funktioniert auch. Bei
der RS485 kann ich Zeichen senden, aber es kann nix empfangen werden.
die initialisierung sieht wie folgt aus für den UART2 mit RS485
void UART2_init(word wBaudrate, byte bLaenge)
{
BAUDCON2bits.ABDEN = 0; // Auto baud detect disable
BAUDCON2bits.WUE = 0; // Wake-up disable
BAUDCON2bits.BRG16 = 0; // 8 bit baud rate generator
BAUDCON2bits.TXCKP = 0; // Idle state for transmit Tx is high
BAUDCON2bits.RXDTP = 0;
SPBRG2 = 17;
TXSTA2bits.BRGH = 0; // Low speed baud rate select bit (Fosc/64)
TXSTA2bits.SENDB = 0; // Sync break transmission completed
TXSTA2bits.SYNC = 0; // Asynchronous mode
TXSTA2bits.TXEN = 1; // Transmit Enabled
if(bLaenge == 9)
{
TXSTA2bits.TX9 = 1; // Selects 9 bit transmission
RCSTA2bits.RX9 = 1; // reception
}
else
{
TXSTA2bits.TX9 = 0; // Selects 8 bit transmission
RCSTA2bits.RX9 = 0; // reception
}
RCSTA2bits.ADDEN = 0; // disables addresss detection
RCSTA2bits.CREN = 1; // enables receiver
RCSTA2bits.SPEN = 1; // Serial port enabled
IPR3bits.RC2IP = 0; // Receive high priority interrupt
PIE3bits.RC2IE = 1; // Interrupt enable
TRISGbits.TRISG1 = 0; // TX Port as output
TRISGbits.TRISG2 = 1; // RX as input
bReadPtr2 = 0;
bWritePtr2 = 0;
}
Kann mir jemand helfen?