TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: rachelies en 08 de Marzo de 2013, 12:32:59

Título: Conexión de 3 Pic por 232 entre ellos
Publicado por: rachelies en 08 de Marzo de 2013, 12:32:59
Hola:

Estoy tratando de conectar 3 Pic entre sí usando la usart. El sistema se compone de una placa con un PIC que hará de "maestro" y será el que reciba y envíe datos al pc, y a la vez envía ciertos datos recibidos del PC a otros 2 PIC en otras placas. Esto me funciona bien, los otros 2 Pic reciben los datos correctamente. Lo que no me funciona nada bien es cuando alguno de estos dos "esclavos" mandan algo al maestro, muchas veces no llegan estos datos, seguramente por problemas de colisiones o no se.

Las placas están bastante cerca y no utilizo max232, va conectado directamente uno a otro. ¿Cómo puedo controlar que no está enviando ninguno para poder utilizar el bus?

Un saludo y gracias
Título: Re: Conexión de 3 Pic por 232 entre ellos
Publicado por: KALLITOS en 08 de Marzo de 2013, 12:50:37
Hola, estas frente a dos cuestiones
1: ambos micros esclavos envian simultaneamente, utiliza un control de flujo o protocolo para evitar las colisiones.
2: electricamente ambos son salidas y en estado de reposo estan a 1, entonces por alli que cuando uno pone el "bus" a 0 se producen problemas, te sugiero coloques un diodo a cada salida de TX de los esclavos y unidos por el catodo al RX del master.

saludos.
Título: Re: Conexión de 3 Pic por 232 entre ellos
Publicado por: rachelies en 08 de Marzo de 2013, 13:02:11
Simulando con el Proteus, si coloco los diodos solo envía uno de ellos, el contrario que sin diodos.... :?
Título: Re: Conexión de 3 Pic por 232 entre ellos
Publicado por: KALLITOS en 08 de Marzo de 2013, 13:03:34
Simulando con el Proteus, si coloco los diodos solo envía uno de ellos, el contrario que sin diodos.... :?

Y si pruebas en fisico??

Edito: cambia los diodos por una compuerta AND, en la misma simulacion.

saludos
Título: Re: Conexión de 3 Pic por 232 entre ellos
Publicado por: planeta9999 en 08 de Marzo de 2013, 13:21:02
Las placas están bastante cerca y no utilizo max232, va conectado directamente uno a otro. ¿Cómo puedo controlar que no está enviando ninguno para poder utilizar el bus?


No creo que RS232 esté diseñado para lo que pretendes hacer (una red compartida entre varios dispositivos), yo utilizaría I2C o SPI.
Título: Re: Conexión de 3 Pic por 232 entre ellos
Publicado por: rachelies en 08 de Marzo de 2013, 13:33:05
Con la puerta AND tampoco funciona, ahora envia el otro. No lo puedo probar físicamente porque no estoy en casa
Título: Re: Conexión de 3 Pic por 232 entre ellos
Publicado por: AngelGris en 08 de Marzo de 2013, 14:01:18
  Puedes intentar con una llave comandada mediante un pin del pic. Si dicho pin se encuentra en 1, se comunicará al pic maestro con el esclavo 1, si el pin de control se encuentra a 0 se comunicará el maestro con el esclavo 2. Si utilizas dos llaves comandadas por el mismo pin, lograrías conmutar tanto RX como TX
Título: Re: Conexión de 3 Pic por 232 entre ellos
Publicado por: rachelies en 08 de Marzo de 2013, 16:47:41
Mañana probaré en el circuito físico a ver si funciona o que falla, porque con el proteus no va. Si no funciona, tendré que hacerlo en i2c...
Saludos
Título: Re: Conexión de 3 Pic por 232 entre ellos
Publicado por: Palomino86 en 08 de Marzo de 2013, 16:48:52
Estoy de acuerdo con planeta9999, mejor utiliza otro protocolo, SPI me parece lo mas ideal
Título: Re: Conexión de 3 Pic por 232 entre ellos
Publicado por: rachelies en 08 de Marzo de 2013, 17:17:20
Pero con SPI tengo que utilizar un pin de enable en el master para cada esclavo, ¿no?
Título: Re: Conexión de 3 Pic por 232 entre ellos
Publicado por: KALLITOS en 08 de Marzo de 2013, 18:15:27
Yo creo que con un correcto orden y flujo se puede utilizar el uart sin problemas.

saludos.
Título: Re: Conexión de 3 Pic por 232 entre ellos
Publicado por: RALF2 en 08 de Marzo de 2013, 21:03:04
Pero con SPI tengo que utilizar un pin de enable en el master para cada esclavo, ¿no?

No necesariamente, eso depende de lo que quieras hacer y si te sobran dos pines podrias utilizarlos para habilitar el esclavo con quien desees intercambiar datos   :mrgreen:

Como te dicen los compañeros SPI es una excelente opcion   :mrgreen:
Título: Re: Conexión de 3 Pic por 232 entre ellos
Publicado por: AngelGris en 08 de Marzo de 2013, 21:54:41
  SPI e I2C ¿no están pensados para comunicaciones en una misma placa? Pienso, como comunicación entre un micro y un periférico dentro de un mismo producto.
Título: Re: Conexión de 3 Pic por 232 entre ellos
Publicado por: PalitroqueZ en 08 de Marzo de 2013, 22:30:12
también podrías controlar el bus de datos con un buffer tri-estado desde el pic master

Título: Re: Conexión de 3 Pic por 232 entre ellos
Publicado por: RALF2 en 08 de Marzo de 2013, 22:58:33
  SPI e I2C ¿no están pensados para comunicaciones en una misma placa? Pienso, como comunicación entre un micro y un periférico dentro de un mismo producto.

Asi es puedes emplear o I2C o SPI, dependiendo tambien de la velocidad a que quieres intercambiar informacion y el tipo de comunciacion que soporte el periferico, podrias enotnces utilizar una u otra  :mrgreen:
Título: Re: Conexión de 3 Pic por 232 entre ellos
Publicado por: planeta9999 en 08 de Marzo de 2013, 23:00:07
Pero con SPI tengo que utilizar un pin de enable en el master para cada esclavo, ¿no?


Con SPI necesitas 4 hilos para cada esclavo, con I2C 2 hilos, longitud máxima 4-5 metros, siendo muy optimistas.
Si necesitas longitudes mayores, para trabajar en Red, puedes probar Ethernet.
RS485, podría ser una alternativa para largas distancias, en red, con hasta 32 dispositivos.

Otra alternativa podría ser CAN bus, en automoción se usa para gestionar en red multiples centralitas, pudiendo trabajar con varios master, tienes muchos PIC que incorporan CAN bus, solo tendrías que añadir el chip que gestione la capa física.

Sin son varias placas, que no distan más de 1 metro, entre ellas, yo usaría I2C si no necesitas mucha velocidad, y SPI para para comunicaciones más rápidas.



Título: Re: Conexión de 3 Pic por 232 entre ellos
Publicado por: rachelies en 09 de Marzo de 2013, 17:33:55
¿Y el 485 de CCS alguien lo ha utilizado y sabe como funciona? No soy capaz de hacer nada con el