TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Javicho en 01 de Febrero de 2008, 18:51:07
-
Saludos:
Quisiera comunicar varios pic's por RS485 usando el SN75176. Tengo una duda con este chip: Si hago DE=1 y RE=0 entonces esto habilitará tanto el bloque de transmisión como el de recepción del SN75176?
Si esto es asi entonces al conectar el USART del PIC con el SN75176 (RX y TX del USART del PIC con el RX y TX del SN75176) el PIC recibirá por RX lo que envia por TX? osea podrá "escuchar" lo que él "habla" por el bus?
Javicho.
-
Javicho,
Lo que mencionas efectivamente sucede, lo unico que tienes que tener en cuenta es que si haces eso no sobrepases las 32 unidades carga que deben estar en el bus RS-485.
Saludos.
Elreypic.
-
Date una vuelta por este link. Esta muy bien explicado.
http://www.todopic.com.ar/foros/index.php?topic=19057.0
Saludos
-
Gracias el reypic, es la respuesta que esperaba simple y concisa.
Otra duda: como puedo evitar las colisiones cuando 2 o mas pic's (por cosas del destino) justo quieren enviar al mismo tiempo info a algún otro pic (en modo multi-master, sin tener un solo master que haga un polling atodos los demas)?
Cuando un pic (o varios) envia un 1 y otro(s) pic(s) envia un 0 al bus al mismo tiempo que pasa con el chip? se daña por el cruce de niveles? está protegido para estos casos? o sucede lo mismo que en el bus CAN que predomina el bit dominante osea el 0 frente al 1?
Javicho.
-
Javicho,
En el caso de RS-485 no existe de forma "natural" algun protocolo anticolision como sucede con el bus CAN. Cuando usas este tipo de bus (RS-485) debes verificar si el bus esta libre antes de comenzar a transmitir asi como tambien implementer algun checksum en tu protocolo. A los drivers no les pasa nada, pero los datos obviamente se pierden ya que existe la colision de datos.
Saludos.
Elreypic.
-
Entonces de que forma puedo evitar colisiones (que no sea por polling) ?
Si un pic envia un 1 y otro envia un 0 al bus RS485 (cada pic con su respectivo SN75176) que obtengo en el RX de cada SN75176? es indeterminado? a veces 0 a veces 1?
Edison.
-
Javicho, el RS485 esta pensado para funcionar por polling de un master y a los demás slaves, que solo hablan cuando se les pregunta. Ese es su modo "natural" de funcionar. Cuando varios pueden hablar al mismo tiempo los resultados son aleatorios.
-
Ni modo entonces haré un polling, ojalá no salgan mas problemas. Gracias por todo.
Javicho.