Caracteres por I2C a una eeprom externa; PIC18F4550

#1
hola a todos

quería ver si podrían ayudarme en un problema que tengo en la transmisión de caracteres a una eeprom externa (24LC512) por I2C.
Simulandolo en proteus (que por cierto adjunto mi simulacion en el .rar viene el .dsn de proteus) me muestra en la lcd un cuadro negro como caracter en lugar del mío.
no sé si el error es al enviarlo y guardarlo en la eeprom o al recibirlo. ¿Se pueden enviar datos tipo char a la memoria externa?¿qué tipos de datos se pueden guardan en la eeprom y como?

la verdad es que ni siquiera se bien como son las sentencias de envio y lectura i2c_write() ni i2c_read() ni como usarlas bien

los delay los puse para asegurarme que los errores no eran por falta de tiempo para responder o escribir o leer por parte de la eeprom externa

mi codigo esta compilado en el pswhd v.4.088

gracias de antemano

Código:
#include <18F4550.h>

#use delay(clock=48000000)

#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,NOPBADEN

#use i2c(master,FORCE_HW, sda=PIN_C7, scl=PIN_C6)

#define LCD_DATA_PORT getenv("SFRORTD")

#include <lcd.c>

void main(){
   char str = 'a',str2;
   lcd_init();
   i2c_start();
   i2c_write(0x00);
   delay_ms(100);
   i2c_write(str);
   i2c_stop();
   delay_ms(100);
   i2c_start();
   delay_ms(100);
   i2c_write(0x00);
   delay_ms(100);
   str2=i2c_read();
   lcd_putc(str2);
}
 

Adjuntos

#3
Los comandos de I2C son ejecutados por el pic inmediatamente que cargas el buffer (SSPBUFFER), pero veo que tu comando de stop, start y read no presentas nada en parentesis () asi que al no cargar nada en el buffer no generas la salida de pulsos que iran al SCK de la memoria, intenta poner un 0 entre parentesis algo asi como I2c_read(0); de esta manera el buffer recibe un dato e inicia un proceso de transmisión/recepcion emitiendo pulsos por el pin SCK, de la otra forma al no colocar nada en el buffer no se generan dichos pulsos.
 
Arriba