I'm trying to receive data to a PIC24FJ256DA210 from another device using UART communication.
I set up the UART as described below:
void InitUART(void)
{
uint32_t baudRate = 312500;
int brg = FCY/(16*baudRate)-1;
/* Assign UART 1 signal onto pin 4 of PortF (RP10) using PPS */
TRISFbits.TRISF4 = 1;
__builtin_write_OSCCONL(OSCCON&0xbf); // clear bit to allow re-map
RPINR18bits.U1RXR = 10; //Assign U1RX to RP10
__builtin_write_OSCCONL(OSCCON | 0x40); // lock pin re-map
CloseUART1(); //disable UART if enabled previously
/*Enable UART interrupts*/
IEC0bits.U1RXIE = 1; // interrupt on reception allowed
IEC0bits.U1TXIE = 0; // no interrupt on transmition
IEC4bits.U1ERIE = 1; // interrupts on errors allowed
IPC2bits.U1RXIP = 5; // interrupt level of reception
IPC16bits.U1ERIP = 6; // interrupt level on errors
U1STAbits.URXISEL = 0; // interrupt when any character is received
/* Initialize UART1 */
U1BRG = brg;
U1MODEbits.STSEL = 0; // 1 stop bit
U1MODEbits.PDSEL = 0; //8 bit data, no parity
U1MODEbits.BRGH = 0; //Standard speed mode
U1MODEbits.RXINV = 0; //UxRX idle state is '1'
U1MODEbits.ABAUD = 0; //Auto-Baud disabled
U1MODEbits.LPBACK = 0; //Loopback disabled
U1MODEbits.WAKE = 1; //Wake up on start bit detect
U1MODEbits.UEN = 0; //UTx and URx enabled
U1MODEbits.IREN = 0; //IrDA disabled
U1STAbits.ADDEN = 0; //Adress detec mode disabled
U1RX_Clear_Intr_Status_Bit; //clear RX interrupt falg
U1MODEbits.UARTEN = 1; //UART enable
}
My problem is that every time I launch debug (I'm working with MPLAB X IDE), the U1 RX Interrupt keeps getting triggered even though nothing is yet sent to the PIC.
Did I do something wrong while initializing UART? It migth be a silly mistake but I really can't figure it out.
Thank you.