HOLA ENCONTRE ESTE CODIGO PARA EXPERIMENTAR CON EL BUS I2C Y EL MASTER ENVIA LOS DATOS PERO NO HAY RESPUESTA DEL ESCLAVO LEVANTO LA RESISTENCIA DE LA LINEA DE DATOS Y COMIENZA A ENVIAR PERO SE DETIENE CUANDO LA RECONECTO Y EL LED C1 SE MANTIENE ENCENDIDO EN MUESTRA Q NO HAY RESPUESTA DEL ESCLAVO
ESTE EL CODIGO GRACIAS POR SU AYUDA
#include <18f4550.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use i2c(Master,sda=PIN_B0,SCL=PIN_B1)
#include <lcd.c>
#use standard_io(c)
#define EEPROM_ADDRESS long int
void WRITE_EXT_EEPROM(long int address, BYTE data)
{
short int status;
output_high(PIN_C1);
i2c_start();
i2c_write(0xa0);
i2c_write(address>>
;
i2c_write(data);
i2c_stop();
i2c_start();
status=i2c_write(0xa0);
output_low(PIN_C1);
while(status==1)
{
i2c_start();
status=i2c_write(0xa0);
}
}
BYTE READ_EXT_EEPROM(long int address){
BYTE data;
output_high(PIN_C0);
i2c_start();
i2c_write(0xa0);
i2c_write(address>>
;
i2c_start();
i2c_write(0xa1);
data=i2c_read(0);
i2c_stop();
output_low(PIN_C0);
return(data);
}
void main () {
int8 valor=0,dato;
EEPROM_ADDRESS address;;
lcd_init();
for (address=0;address<=100;address++){
WRITE_EXT_EEPROM(address,valor);
lcd_gotoxy(1,1);
printf(lcd_putc,"ENVIANDO =%1D",valor);
delay_ms(500);
valor++;
}
for (address=0;address<=100;address++){
dato=READ_EXT_EEPROM(address);
lcd_gotoxy(1,2);
printf(lcd_putc,"RECIBIENDO =%1D",data);
delay_ms(500);
valor++;
}
}