Multiple UART Virtual



Como utilizar mas de un puerto de comunicación serial.
No es de lo más común pero es posible que se quieran utilizar más de un puerto serial en el mismo micro.
Comúnmente para un solo puerto configuramos el mismo de la siguiente forma:

#use RS232(BAUD=9600, XMIT=PIN_C1, RCV=PIN_C2,FORCE_SW)

De esta forma le decimos la velocidad y los pines que utilizaremos como TX y RX, luego para enviar un dato por serial utilizamos la función printf(); por ejemplo:

printf(“VALOR1: %d\n”,valor1);

donde mostramos el valor1 en la salida serial.
Ahora si queremos incluir otra salida serial podríamos hacerlo de la siguiente forma:

#use RS232(BAUD=9600, XMIT=PIN_B1,RCV=PIN_B2,FORCE_SW)

Aquí vemos que es igual a la otra forma pero cambiamos los pines C1 y C2 por B1 y B2, pero hay algo que sigue quedando mal, cuando llamemos a la función printf(); para que nos muestre el valor2 será:

printf(“VALOR2: %d\n”,valor2);

pero esto por que puerto saldrá? Bueno aquí esta la diferencia, para que podamos incluir mas de un puerto de transmisión debemos incluir en su configuración la directiva STREAM donde la igualaremos al nombre del puerto, por ejemplo: STREAM=SERIAL1, ahora ambas directivas quedaran de la siguiente forma:

#use RS232(BAUD=9600, XMIT=PIN_C1,RCV=PIN_C2,FORCE_SW,STREAM=SERIAL1)
#use RS232(BAUD=9600, XMIT=PIN_B1,RCV=PIN_B2,FORCE_SW,STREAM=SERIAL2)

Y para terminar esto los llamados a la función printf(); quedaran:

fprintf(SERIAL1,"VALOR1: %d\n”,valor1);
fprintf(SERIAL2,"VALOR2: %d\n”,valor2);

Y esto se repetirá según la cantidad de puertos a utilizar.

Tener en cuenta que el protocolo SPI/EUSART del MCU por Hardware será uno solo, esta forma de crear puertos es netamente virtual por ende los tiempos del procesador será más lento, es recomendable para procesadores de gama media alta.

No hay comentarios.:

Publicar un comentario