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
Ir a la versión completa