Problema de recepción de USART en PIC16F877A

0

El indicador de interrupción de recepción ( RCIF ) no se borra incluso después de leer RCREG (¡varias veces!). Debido a esto no pude recibir más datos. ¿Cómo deshacerse de este problema?

PIC16F877A

    
pregunta raforanz

2 respuestas

1

¿Cómo sabes que RCIF no se está limpiando? ¿Porque su programa perfecto no se ejecutará y la única explicación posible es que el hardware debe estar equivocado?

Como dijo m.Alin, un error de saturación requiere un reinicio completo del receptor, pero eso no puede ocurrir debido a la recepción de un solo carácter. Configura una prueba para que puedas enviar caracteres individuales al PIC y ver cómo los maneja. Luego puedes caminar a través de tu código y ver lo que está arruinando.

¿Estás utilizando interrupciones? Si es así, hay varias cosas que podría haber arruinado en la rutina de interrupción independiente de la UART. Para ver cómo funciona algo inicialmente, escriba un simple bucle de sondeo que busque RCIF, lea RCREG y escriba el resultado en un registro de puerto o algo así. Hacer que alternar un pin cada vez reciba un personaje para que puedas saber si está sucediendo a la hora esperada.

Algunos errores probables son que no configuró el banco correctamente para acceder a PIR1 o RCREG.

    
respondido por el Olin Lathrop
0

el bit FERR debe ser leído antes de leer el RCREG.

    
respondido por el rudi

Lea otras preguntas en las etiquetas