TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Palomino86 en 25 de Mayo de 2011, 13:41:24
-
Hola foro;
Tengo una duda.... Es posible limpiar el buffer del modulo EUSART :?? Estoy utilizando un PIC18F4553.
En caso de ser posible, con que registro ó instrucción se realiza? Ya que le estado buscando y no he dado con el clavo.
Saludos
-
Con readUSART() o data = RCREG;
Saludos!
-
Hola foro;
Tengo una duda.... Es posible limpiar el buffer del modulo EUSART :?? Estoy utilizando un PIC18F4553.
En caso de ser posible, con que registro ó instrucción se realiza? Ya que le estado buscando y no he dado con el clavo.
Saludos
¿El Buffer de Salida o de Entrada?
-
Si es el de recepción y ya ha ocurrido un overflow, debes resetear la recepción trabajando sobre el bti CREN.
Saludos!
-
Es en la repeción, estoy trabajandola con interrupción y por seguridad quiero limpiar el buffer una vez que la cadena se haya completado.
Para esto me imagino que debe de bastar con poner lo siguiente:
RCREG=0; // Para el caso de la recepción
TXREG=0; // Para el caso de la transmision
o hay algo mas que deba considerar?
Saludos y gracias por las prontas respuestas :)
-
Para enviar no deberías escribir nada, ahora para recibir debes leer el buffer, no escribir.
Saludos!
-
Es en la repeción, estoy trabajandola con interrupción y por seguridad quiero limpiar el buffer una vez que la cadena se haya completado.
Para esto me imagino que debe de bastar con poner lo siguiente:
RCREG=0; // Para el caso de la recepción
TXREG=0; // Para el caso de la transmision
o hay algo mas que deba considerar?
Saludos y gracias por las prontas respuestas :)
El RCREG es solo lectura, con hacerlo 0 no lo limpias. Para limpiarlo (y su correspondiente flag) debes leerlo como te indicó suky.
El de transmisión, si lo pones en 0 y tienes la usart habilitada, estas transmitiendo un hermoso 0 por el pin TX :mrgreen: así que cuidado con eso.
La pregunta de como limpiar el buffer de salida es porque creo recordar en los micros con EUSART había un par de cositas a tener en cuenta para evitar que se envie el primer byte erroneo. Como en mis aplicaciones las transmisiones son constantes y con chequeo de error en ambos extremos no me preocupa si el primer byte sale o no al encender el pic, pero si esa es tu pregunta se puede ahondar en el tema. No obstante si lo que queres es asegurarte de no tener "basura" cuando estas procesando el mensaje podes o bien leer todo el buffer varias veces (tiene hasta 3 bytes de capacidad) o bien apagar la usart de recepción y la de transmisión mientras haces lo que queires hacer con esa información