Dos puerto rs232 mediante 16f877

estoy aciendo un proyecto en el que necesito utilizar dos usart. uno es tan solo para leer, el otro es para escribir y para leer. el problemas es que este pic tan solo tiene un uart y no me lo permite. ¿Que solucion puedo tener? ¿utilizar un multiplezador? ¿ hay alguna otra manera?.
 
mi proposito es leer los datos que me envia un gps (mediante puerto serie rs 232 a 4800.....) y enviar sms y llamads mediatne un modulo gsm la información del gps y diversos avisos tambine por rs232 pero a 115.200..
 
Me pregunto...

... y usar un serie tal cual trae el micro y otro emulado como se hace con los 16f84 (que no lo traen)...?

No se si funciona pero con intentar...
 
KUDOX_DANY dijo:
mi proposito es leer los datos que me envia un gps (mediante puerto serie rs 232 a 4800.....) y enviar sms y llamads mediatne un modulo gsm la información del gps y diversos avisos tambine por rs232 pero a 115.200..

Utiliza un MUX 2 a 1, deja siempre seleccionado el canal que te interesa más que es el del GSM me supongo, y solo lee el GPS cuando lo necesites, cada que cambies la dirección del MUX tendrias que cambiar la velocidad de la UART. Yo utilicé un 74LS157 para el multiplexado.
 
me parece buena idea el simularlo ( usart por software). pero tengo algun problema con como se deberia de hacer el codigo. alguien lo a utitizado alguan vez? lo de multiplexar me parece una opcion pero de momento voy a probar a utiliazarlo por software.
 
Una vez hice andar dos UART a la vez en un 16F628. Uno es el que trae implementado por hard que se interrumpe cuando llega un dato y el otro lo implementé por software y utilizé RB0 como entrada (RX) parar poder utilizar la interrupción cuando recibe un dato.
Implementar una UART por software es sencillo, solamente tenés que tener un control de los tiempos que depende de la velocidad del puerto. Por ejemplo, si es a 9600bps el bittime es de 104 microsegundos entonces lo que tenés que hacer es, una vez activada la interrupción en RB0 el primer bit que entra va a ser el de start entonces muestreás medio-bittime después para asegurarte que esté en 0 y a partir de ahí chequeas cada un bittime si es 1 o 0. Así 8 veces seguidas (hasta formar el byte) después va a venir el bit de stop que tiene que ser un 1, si no es un 1 entonces hay error y empezás de nuevo.

Espero haber sido claro.
 
Lo mejor es utilizar el mikrobasic o mikroC para pic u otro micro, este trae ya las librerias hechas y hasta con ejemplos y entre ellos tiene la uart por hard y la otra por soft.

suerte!
 
no tendreis ningun ejemplo de como se podria implementar un uast por software con interrupciones?. he intentado hacerlo y lo que recibo es un dato guardado, 2 datos perdidos, un dato guardado, 2 datos pedidos, etc etc
 
oscareev, sigue al pie de la letra las normas de participación de la comunidad, es indispensable para poder participar:

2.9 Los usuarios no pueden publicar, solicitar ni difundir información que promueva el plagio, la piratería, la divulgación de números de serie, crack o similares, o copias no autorizadas de material protegido por derechos de autor.
 
oscareev, KUDOX_DANY, Sres:

He intentado hacer un programa con mikropascal 8.1 sobre un 16F648A que posea 2 seriales, uno por el uart físico que posee el micro y otro emulado.
Lo he probado con el proteus 7.4 sp3 , con Pic simulator IDE 6.65 y armando el circuito, ver proteus.jpg y oshon.jpg
El circuito en .DSN para emular está en proteus.zip.
En vtoVirtual.zip está el proyecto en Mikropascal.

El programa funciona de la siguiente forma:
Al encender emite por cada puerto serie un string, en el caso del uart físico emite "Real:", por el serie emulado emite un "Virtual:".
En caso de recibir un dato por el rx de un puerto lo devuelve por el tx del mismo puerto y por el otro tx y viceversa.

Los resultados que obtuve:

En proteus funciona el puerto virtual en tx y rx, el real solo funciona la tx (solo bufferea 2 caracteres, lo cual es un defecto del proteus)

En Pic Simulator Ide funciona el Real en tx y rx , el virtual funciona solo tx.

hasta acá los resultados son contradictorios... entonces

Armé el circuito y funcionó como la simulacion de Pic simulator IDE ( lo cual fué una doble decepción ya que el proteus no emuló correctamente y en la realidad tampoco funcionó como esperaba.

Seguiré buscando como hacerlo... si alguien tiene alguna idea, será muy bien recibida.


Definiciones
Rx recepcion de dato desde la pc
tx transmision de dato hacia la pc

Jalva...
 
Última edición:
Atrás
Arriba