void interrupt interrupciones(void)
{
if ( PIR1bits.RCIF )
{
if ( RCSTAbits.FERR )
{
t_byte caracter; // lcd
unsigned char datoRec = RCREG;
datoRec = RCREG;
caracter.byte = _LCD_L1_C_01_;
enviaComandoLCD( caracter );
escribeLineaLCD( "FERR", 0 );
RCSTAbits.CREN = 0;
RCSTAbits.CREN = 1;
}
else if ( RCSTAbits.OERR )
{
t_byte caracter; // lcd
caracter.byte = _LCD_L1_C_01_;
enviaComandoLCD( caracter );
escribeLineaLCD( "OERR", 0 );
RCSTAbits.CREN = 0;
RCSTAbits.CREN = 1;
}
else
{
unsigned char datoRec = RCREG;
// procesa cada byte y retorna true si el empaquetado es correcto
/*******************************************************************************
*
* sincronia inicio direccion datos checksum fin de trama
* buffer[0..3] buffer[4] buffer[5] buffer[6] buffer[7] buffer[8]
* 0xAA 0x7E 0x11 0xXX 0xXX+0x11 0xCC
*
*******************************************************************************/
if ( usartRecibirDatos(datoRec) )
{
t_byte caracter; // lcd
caracter.byte = _LCD_L2_C_01_;
enviaComandoLCD( caracter );
escribeLineaLCD( "Recibido ", 0 );
enviaCaracterLCD( dt_usart.dato );
}
}
PIR1bits.RCIF = 0;
}
}