I am a bit confused over correct handling of Usart errors. From searching across the net and looking through Microchip archives it seems that the code below is what I need to handle reception errors effectively. Is this correct ? Basically each time an RCIF occurs the OERR and FERR errors are checked and if no error then use the RCREG byte. I call RFErrorFree when I initialize the USART at start of program. Also, Do I need to check for Overrun in the main loop as I am not sure if a interrupt will occur in the event of an overrun and if it does not them my error checking routine would never be called and RX would hang ?? Any help much appreciated. Code example below. char RFErrorFree(void) { if(OERR2) { CREN2 = false; RCREG2; RCREG2; RCREG2; CREN2 = true; return false; } else if(FERR2) { RCREG2; return false; } else rf_char = RCREG2; return true; } // Interrupt service if((RC2IF)&&(RC2IE)) { if(RFErrorFree()) GetRF(); } -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist