Recepción sin interrupción en USART de PIC18

1

Me gustaría saber cómo recibir datos sin interrupciones en el controlador PIC18. Después de establecer la configuración de USART y la clasificación en baudios, ¿qué se debe hacer para que USART reciba correctamente sin el uso de interrupciones?

Lo estoy usando en modo asíncrono. He probado con éxito el proceso de transmisión al verificar el bit de transmisión en el registro USART TXSTAT.

He visto usar un bit TRMT para rastrear el estado de la transmisión en el registro EUSART. Pero, ¿qué se puede utilizar para recibir?

No vi un pin similar en el registro RXSTAT para el modo asíncrono.

    
pregunta Rookie91

1 respuesta

2

El truco es que cuando las interrupciones están deshabilitadas, el bit de indicador de interrupción RCIF todavía está activado, simplemente no genera una interrupción. Al leer un byte del registro de datos del receptor RCREG , se borra el bit en la mayoría de los chips PIC18 que creo, lo que deja en simple como:

if (PIR1.RCIF)        // We have a byte
   new_data = RCREG;  // Do something with it

Otra cosa es que si obtiene un error de desbordamiento porque llega otro byte antes de leer el primero, también querrá algo como lo siguiente para eliminar la condición de error:

if (RCSTA.OERR)       // We had an overflow error
{
    RCSTA.CREN = 0;   // Clear the CREN bit to reset it
    RCSTA.CREN = 1;   // Re-enable continuous receive
}

La sintaxis probablemente variará en función del compilador que estés usando, pero con suerte te daremos una idea general.

    
respondido por el PeterJ

Lea otras preguntas en las etiquetas