Estoy tratando de recibir datos a un PIC24FJ256DA210 desde otro dispositivo utilizando la comunicación UART.
Configuré el UART como se describe a continuación:
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
}
Mi problema es que cada vez que ejecuto la depuración (estoy trabajando con MPLAB X IDE), la Interrupción de RX U1 sigue activándose aunque no se haya enviado nada al PIC.
¿Hice algo mal al inicializar UART? Puede ser un error tonto pero realmente no puedo resolverlo.
Gracias.