Mejor método de usar 2 UARTS a la vez

Estoy programando en el compilador CCS una aplicación sobre un pic18 que hace uso de 2 UARTS hardware. Una estará recibiendo datos de un GPS todo el rato, y otra de mayor prioridad recibirá comandos via puerto serie para que el microcontrolador haga determinadas tareas (por ejemplo desactivar la interrupción del otro puerto para parar de recibir datos GPS).

Quisiera saber cuál es la forma mas adecuada para trabajar con 2 puertos serie hardware, o si alguien dispone de algún ejemplo que pueda ojear :)
 
Hola romancito, puedes empezar a trabajar con las interrupciones de los uarts y desde allí controlar lo que pase en tu programa.
 
Ya bueno, lo de las interrupciones ya lo daba por supuesto. Lo que quería decir es cómo debería plantearlo con los buffers para que no se pisen entre sí ambas UARTS teniendo en cuenta que la del puerto serie tiene mayor prioridad.
 
No he programado pics mas que para monear, siempre he usado 8052 pero para el caso será lo mismo:
Si cada uno tiene una interrupción diferente entonces no hay disputa; una rutina para cada uno.
Si los dos puertos comparten interrupción lo primero que hará la rutina es mirar cual la generó ya que siempre habrá un flag que lo indique, a partir de aquí una rutina para cada uno como antes.
Cada puerto ha de tener un buffer de entrada y uno de salida del tamaño adecuado a los mensajes que envíes.
Respecto a las prioridades, pon de mas prioridad el que mas tráfico tenga, aunque si no desborda va a dar igual que se atienda unos ms antes o después.
 
Última edición:
Atrás
Arriba