TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: micronet3 en 24 de Septiembre de 2018, 11:55:59
-
saludos.
me parece interesante recepecionar datos por medio de kbhit() sin la necesidad de usar interrupciones, pero que pasaria si llega datos al puerto serial y este no es leido, y mas adelante cuando se lee, el kbhit parece ya no responder.
he usado este codigo que encontre en el foro para limpiar el buffer, pero nada
while(kbhit()){c=getc();};
saludos
-
Suponiendo que sea una UART por hardware:
El problema es que la PICs gamas bajas solo tiene espacio para un caracter.
Si llegan 2, el modulo de la UART procede a bloquearse manteniendo el valor del primer caracter que llego, y avisa con una de las flags que ocurrio un OVERRUN, La forma de salir de este estado esta explicado en el datasheet, y es desactivar y volver a activar la recepcion. En el caso de CCS, creo que poniendo en la directiva ERRORS hace que el compilador agregue codigo para el manejo de esos errores y asi no se bloquee.
El problema esta en que ya los caracteres los perdiste.
Otras gamas de PIC posee buffers mas grandes. Pero esa es la desventaja que posee hacer la recepcion sin interrupcion, por eso lo mejor siempre es interrupcion en la recepcion.
-
Efectivamente KILLERJC, poniendo ERRORS se soluciono el problemaaa :-/ :-/ :-/
un saludo, gracias