Estoy utilizando PIC18F46K80, a una velocidad en baudios de 115200, un bit de parada de 1 y sin paridad. Estoy enviando datos desde una aplicación de C # (Baud Rate 115200, Stop Bit-1 y No Parity) al PIC. Después de enviar algunos bytes de datos, recibo un error de sobre-ejecución en el PIC. He insertado retrasos antes de recibir los datos en el PIC.
T_UINT8 UARTReceive(T_UINT8 *t_ret)
{
*t_ret = 0;
T_UINT8 temp;
while(!PIR1bits.RC1IF)
{
/* Wait till the data is received */
if((RCSTA1bits.FERR) || (RCSTA1bits.OERR) )
{
temp=RCREG1;
temp=RCREG1;
temp=RCREG1;
temp=RCREG1;
temp=RCREG1;
// EUSART1 error - restart
RCSTA1bits.CREN = 0;
asm("NOP");
RCSTA1bits.CREN = 1;
*t_ret = 1;
return 0;
}
}
if(RCSTA1bits.OERR==1)
{
k=30;
}
/* Return the received data */
Delay100TCYX(0);
asm("NOP");
asm("NOP");
return RCREG1;
}
Incluso después de insertar una gran demora, recibo un error de sobre-ejecución, al mantener la misma velocidad de transmisión en la aplicación C #. ¿Cómo evito errores de ejecución excesiva al recibir datos en mi PIC?