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