TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: zimanka en 30 de Abril de 2006, 14:29:33

Título: comunicacion red de pics
Publicado por: zimanka en 30 de Abril de 2006, 14:29:33
alguien me podria ayudar porfavor con una red entre pics uno maestro y tres esclavos el maestro se comunica por rs232 con un pc y los 3 pic esclavos por i2c o cualquier otro protocolo. en ccs con un 877 maestro y 3 16f873
Título: Re: comunicacion red de pics
Publicado por: maunix en 01 de Mayo de 2006, 10:32:41
alguien me podria ayudar porfavor con una red entre pics uno maestro y tres esclavos el maestro se comunica por rs232 con un pc y los 3 pic esclavos por i2c o cualquier otro protocolo. en ccs con un 877 maestro y 3 16f873

zimanka dime, en qué necesitas ayuda puntualmente. 

¿En consejos sobre la comunicación? ¿en código? ¿en características del hardware?

En Microchip he visto tuna nota de aplicacion sobre el maestro de i2C pero está escrita en ensamblador, pero si entiendes la idea es simple adaptarla al C.  Además es muy similar a escribir datos en cualquier memoria i2C.

Muchas de estas cosas o protocolos uno los diseña a la medida de las necesidades de uno mismo, pudiendo iniciarse con algo simple hasta algo muy complejo que en algunos casos excede lo que realmente uno espera o necesita de una comunicación.

Saludos
Título: Re: comunicacion red de pics
Publicado por: zimanka en 01 de Mayo de 2006, 17:46:43
Gracias....La verdad es que he intentado con muchos códigos....pero no me funciona en proteus...
En si lo que quiero realizar es una red entre pics con topología logica en anillo, es decir un TokenRing.

Mi problema  esta en el codigo pues el hardware es sencillo. Gracias
Título: Re: comunicacion red de pics
Publicado por: BrunoF en 01 de Mayo de 2006, 23:22:35
Gracias....La verdad es que he intentado con muchos códigos....pero no me funciona en proteus...
En si lo que quiero realizar es una red entre pics con topología logica en anillo, es decir un TokenRing.

Mi problema  esta en el codigo pues el hardware es sencillo. Gracias

¿Topología lógica en anillo... y será topología física en estrella? jejeje me suena a LAN eso  :mrgreen:
Bueno,en Proteus me han comentado que algunas comunicaciones I2C no funcionan correctamente(no envia el acknowledge el esclavo).
¿que codigo es el que estas empleando? ¿podemos verlo?
Saludos.
Título: Re: comunicacion red de pics
Publicado por: cucaracha en 02 de Mayo de 2006, 13:58:07
Hola Zimanka, si estás probando en proteus comunicación I2C con dos micros y rs232 no sigas.. no te funcionará. Fallos de proteus. Hace algún tiempo, un amigo estaba con eso mismo, varios micros por I2C y comunicación rs232 y nada... loco. Como no me fio un pelo del proteus, probé en proto y listo. Funcionó perfecto.

Así que imagina.. monta todo en una proto y prueba.

Saludos!!
Título: Re: comunicacion red de pics
Publicado por: pocher en 02 de Mayo de 2006, 15:26:41
Hombre Cuca cuanto tiempo, estuve buscando tu dirección de correo para decirte lo de los moderadores pero no la encontré. Revisa este enlace: http://www.todopic.com.ar/foros/index.php?topic=11394.0 (http://www.todopic.com.ar/foros/index.php?topic=11394.0)

Un abrazo Cuca.
Título: Re: comunicacion red de pics
Publicado por: cucaracha en 02 de Mayo de 2006, 16:09:59
Hola Pocher!!! Es cierto.. he estado offline por un tiempo, pero vuelvo a la carga!!
He picado en el enlace y me sale un error que dice:

"El tema o foro que estás buscando parece que no existe, o fuera de tus límites. "

Saludos y disculpas a zimanka por estos post que nada tienen que ver.
Título: Re: comunicacion red de pics
Publicado por: zimanka en 02 de Mayo de 2006, 20:50:29

 :) si es muy similar a una LAN...lo importante es que sea una topología logica en anillo la fisica puede ser en estrella o en (bus como el I2C) pero en este caso es poner 1 maestro y 3 esclavos.

Primero intente con I2C para hacer la comunicación maestro esclavo con los siguientes codigos:

PARA EL MASTER

#include <16f877.h>
#fuses XT,NOWDT,NOPROTECT,PUT,NOBROWNOUT,NOLVP
#use delay(clock=4000000)
#include <lcd.c>

#use i2c(MASTER, SDA=PIN_C4, SCL=PIN_C3,FAST,FORCE_HW)

void main(void)
{

      int buffer;

      delay_ms(1000);      //retardo, por si acaso no da tiempo al esclavo a "inicializarse" para
                           //poder esperar a la informacion que le puede enviar el master

      lcd_init();


      while(TRUE)
      {
         if((!input(PIN_A0)))
            {
               i2c_start();      //condicion de inicio
               i2c_write(0x08);  //direccion del esclavo con el que haremos la comunicacion

               i2c_write(5);  //enviamos un dato, p.e el entero 5
               i2c_stop();    //finalizacion de la comunicacion

               delay_ms(1000);   //introducimos retardo para que no este constantemte escribiendo

            }

         if((!input(PIN_A1)))
            {
               i2c_start();      //inicio
               i2c_write(0x08);  //direccion del esclavo

               i2c_write(6);     //enviamos un dato, p.e el entero 6
               i2c_stop();       //parada

               delay_ms(1000);

            }
      };
}


PARA EL ESCLAVO

#include <16f877.h>
#fuses XT,NOWDT,NOPROTECT,PUT,NOBROWNOUT,NOLVP
#use delay(clock=4000000)
#include <lcd.c>

#use i2c(SLAVE, SDA=PIN_C4, SCL=PIN_C3, ADDRESS=0X08, FAST , FORCE_HW)


void main(void)
{

      int dato;

      lcd_init();
      lcd_putc("Esperando");

      while(TRUE)
      {
         //i2c_poll solo se puede usar por hardware, detecta un byte en el buffer
         //seguidamente se llama a la funcion i2c_read que devolvera el byte recibido ó 5 ó 6

         if(i2c_poll())
            {
               dato=i2c_read();
               lcd_putc("\f");
               printf(lcd_putc,"El dato es el %i",dato);
            }

      };
}


En proteus no funciono, sin embargo talves si ustedes saben como podria aumentar la cantidad de esclavos donde la comunicación sea en serie entre si como un anillo lógico utilizando RS232?....como  empleo en el codigo tres esclavos y un solo maestro?....esta bien el codigo?...

Gracias....por decirme lo de proteus...pero bueno lo estare armando en protoboard...

Gracias  :lol: