Autor Tema: Problema en bus i2c entre 18f4550 y 24lc256  (Leído 1606 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado rodrigo_control2009

  • PIC12
  • **
  • Mensajes: 54
    • Blog  de la  Orden del  temple
Problema en bus i2c entre 18f4550 y 24lc256
« en: 20 de Marzo de 2009, 02:31:30 »
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>>8);
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>>8);
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++;
}
}


“El hombre ideal, sería persa de origen, árabe de religión, iraquí por cultura, hebreo por experiencia, cristiano por conducta, hindú por perspicacia, sufí por su estilo de vida, angélico por su moral y divino por sus ideas y conocimiento, destinado a la eternidad”