To enable the receiver part of the UART module with protocol support, the
Receive Enable (RXEN) bit of the UxCON0 register must be set. The MODE[3:0] bits should
be programmed with any of the configurations between ‘0000
’ and
‘0011
’ depending on the application. The Baud Rate Generator (BRG)
must also be configured using the UxBRG register and the BRGS bits of UxCON0, to match
the baud rate of the other device. Data is received via the RX pin of the
microcontroller, which can be remapped using PPS by writing the code for the desired
input pin to the RxyPPS register. The UART module must then be enabled by setting the ON
bit of UxCON1.
After configuring the UART module as a receiver, when a received byte of data is transferred from the Receive Shift register to the Receive Buffer (UxRXB) register, the UART Receiver Interrupt Flag (UxRIF) bit becomes set. If the UART Receiver Interrupt Enable (UxRXIE) bit has been set, an interrupt will be generated any time the UxRXB register contains received data. The data received and contained within the UART receive buffer must be read from the UxRXB register and the UxRXIF bit should be cleared before more data can be received. The UART Error Interrupt Flag register can be used to monitor if any errors were detected during the data transfer. Example 15-1 demonstrates the initialization of the UART module as a receiver.
void UART_Initialize(){
U1CON0 = 0x90; // BRGS normal; 8-bit mode; RXEN enabled;
// TXEN disabled
U1CON2 = 0x00; // TXPOL not inverted; FLO off;
U1BRGL = 0x19; // BRGL 25 = 9600 BR @ 1 MHz FOSC
U1BRGH = 0x00;
U1FIFO = 0x00; // STPMD in middle of first Stop bit;
U1UIR = 0x00; // Auto-baud not enabled
U1ERRIR = 0x00;
U1ERRIE = 0x00;
RC6PPS = 0x13; // UART PPS Settings, RC6->UART1:TX1;
U1RXPPS = 0x17; // UART PPS Settings, RC7->UART1:RX1;
U1CON1 = 0x80; // ON enabled;
}