Programación Específica > Programación en C

 Escribir En Eeprom 24lc256

(1/1)

jpaler:

--- Código: Text --- //LIBRERIA PARA LA EEPROM 24LC256.c#ifndef EEPROM_SDA#define EEPROM_SDA  PIN_B1#define EEPROM_SCL  PIN_B0#endif #use i2c(master, sda=EEPROM_SDA, scl=EEPROM_SCL)#define EEPROM_ADDRESS long int#define EEPROM_SIZE   32768 void init_ext_eeprom(){   output_float(EEPROM_SCL);   output_float(EEPROM_SDA);} void write_ext_eeprom(long int address, BYTE data){   short int status;   i2c_start();   i2c_write(0xa0);   i2c_write(address>>8);   i2c_write(address);   i2c_write(data);   i2c_stop();   i2c_start();   status=i2c_write(0xa0);   while(status==1)   {       i2c_start();       status=i2c_write(0xa0);   }} BYTE read_ext_eeprom(long int address) {   BYTE data;   i2c_start();   i2c_write(0xa0);   i2c_write(address>>8);   i2c_write(address);   i2c_start();   i2c_write(0xa1);   data=i2c_read(0);   i2c_stop();   return(data);}  
muchachos, esa es la libreria de ccs para escribir en la eeprom de 24lc256.
hasta el momento me habia escrito todo los datos q le mandaba correctamente, pero
ahora q he tenido la necesidad de escribir datos en localidades altas de la memoria,
me esta colocando problemas.

si le mando esto (dir puede estar entre 0 y 250 mas o menos):

--- Código: Text ---     long dir;     WRITE_EXT_EEPROM( dir, 'a' );  no pone problema para nada, es decir, lo guarda bien.

...,pero si le mando a q escriba un dato despues de dir mayor a 250:

--- Código: Text ---     long dir; //dir=mas de 250    WRITE_EXT_EEPROM( dir, 'a' );  entonces no lo escribe... y a veces se bloquea.

¿q esta pasando?

overnat:
Creo que el problema viene por que tienes que poner una resistencia pull up en la memoria .

Si no la tienes puesta no te funcionará .

Salu2

jpaler:
...jejeje... gracias overnat... efectivamente ese era el problemita en ese entonces.

...,pero... ¿ya miraste la fecha en q inicie el post?

salu2 !!!

Navegación

[0] Índice de Mensajes

Ir a la versión completa