Autor Tema: ESCRIBIR EN EEPROM 24LC256  (Leído 4463 veces)

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

Desconectado palermo

  • PIC10
  • *
  • Mensajes: 24
ESCRIBIR EN EEPROM 24LC256
« en: 08 de Junio de 2006, 20:57:25 »
Código: [Seleccionar]
//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: [Seleccionar]
    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: [Seleccionar]
    long dir; //dir=mas de 250
    WRITE_EXT_EEPROM( dir, 'a' );
entonces no lo escribe... y a veces se bloquea.

¿q esta pasando?



Desconectado palermo

  • PIC10
  • *
  • Mensajes: 24
Re: ESCRIBIR EN EEPROM 24LC256
« Respuesta #1 en: 12 de Junio de 2006, 18:06:50 »
muchachos,
¿sera q funciona mejor si lo hago en asm pero dentro del codigo en c?

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: ESCRIBIR EN EEPROM 24LC256
« Respuesta #2 en: 14 de Junio de 2006, 07:37:02 »
Hola!
No uso C, pero....que el error te lo de cuando excedes la posicion "mas o menos 250" me suena muy a que pasas de 8 bits a 9 o mas, es decir, hasta 255 es un byte, mas estas en un word. No vendra por ese lado tu problema?  :shock:

Saludos!

Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado palermo

  • PIC10
  • *
  • Mensajes: 24
Re: ESCRIBIR EN EEPROM 24LC256
« Respuesta #3 en: 14 de Junio de 2006, 12:57:21 »
eso pense yo tambien, pero si te das cuenta, yo declare la variable q guarda la
direccion como long, y long es de 16 bits, osea q no es eso.

....,por eso queria saber la opinion de las personas q ya han usado esto para
ver de q modo lo hacen ellos.

gracias compañero....

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: ESCRIBIR EN EEPROM 24LC256
« Respuesta #4 en: 14 de Junio de 2006, 13:16:14 »
Ahh! Long es el equivalente de word en mi basic. :? Sorry.
Espero lo soluciones. Perdon.

Saludos.
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado Luis_Chogi

  • PIC10
  • *
  • Mensajes: 44
Re: ESCRIBIR EN EEPROM 24LC256
« Respuesta #5 en: 15 de Junio de 2006, 03:02:32 »
Solo como apunte........

CCS en sus librerias no deja mapear toda la memoria, por ejemplo en este caso 32768 / 1024 = 32K y no 256 como deberia ser, en este caso eso de querer mapear mas memoria de la que te deja CCS no tendria nada que ver con tu problema pero quise poner ese apunte por si a alguien le interese.

Saludos :D

Desconectado palermo

  • PIC10
  • *
  • Mensajes: 24
Re: ESCRIBIR EN EEPROM 24LC256
« Respuesta #6 en: 15 de Junio de 2006, 09:29:41 »
luis_chogi, aunque no te comprendi bien lo q trataste de decir, me parecio
muy interesante y es por eso q me gustaria q explicaras mejor tu apuente.

gracias !!!

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: ESCRIBIR EN EEPROM 24LC256
« Respuesta #7 en: 15 de Junio de 2006, 15:15:56 »
Extraido del datasheet:

The Microchip Technology Inc. 24AA256/24LC256/
24FC256 (24XX256*) is a 32K x 8 (256 Kbit) Serial
Electrically Erasable PROM.

Por consiguiente tiene 32K x 8 bits de tamaño.

Un saludo.
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado Luis_Chogi

  • PIC10
  • *
  • Mensajes: 44
Re: ESCRIBIR EN EEPROM 24LC256
« Respuesta #8 en: 15 de Junio de 2006, 17:02:41 »
Esta memoria al comprarla pareceria que fuera de 256K sin embargo solo la memoria que esta habilitada es de 32K, yo pense que si se podian mapear los 256K pero como apunta  jfh900 y lo cual ya cheque es que en verdad la memoria es 24LC256 es en verdad de 32K X 8 Bits, es por eso que CCS menciona en su libreria "#define EEPROM_SIZE   32768" que es el total de la memoria que se puede mapear.


Esto lo comento solo porque tal vez alguien quiera almacenar informacion que sobrepase los 32K "No se va a poder", o no se si exista alguna forma, pero por lo pronto CCS no lo permitira.

Espero me de a entender. "En pocas palabras la memoria 24LC256 no es de 256K..... es de 32K"

o no  jfh900?

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: ESCRIBIR EN EEPROM 24LC256
« Respuesta #9 en: 15 de Junio de 2006, 17:22:26 »
Efectivamente la memoria es de 32 Kbyte o lo que es lo mismo 256 Kbit. El error biene por que no esta puesto explicitamente que los 256K son bits y como normalmente trabajamos en byte pues damos por sentado que cualquier valor esta expresado en esta medida. Como la memoria es de 32 Kbyte no se pude leer ni escribir mas alla, simplemente por que no existe la memoria.

Un saludo.

* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado Luis_Chogi

  • PIC10
  • *
  • Mensajes: 44
Re: ESCRIBIR EN EEPROM 24LC256
« Respuesta #10 en: 16 de Junio de 2006, 00:25:19 »
Claro ya termino de entender,,,,  Jeje

Hay que tener cuidado en leer bien las hojas de caracteristicas..

Saludos

Desconectado palermo

  • PIC10
  • *
  • Mensajes: 24
Re: ESCRIBIR EN EEPROM 24LC256
« Respuesta #11 en: 16 de Junio de 2006, 11:26:59 »

yo ya sabia q la memoria era de 32k y q ademas esta dividida en
128 bancos de 256 casillas de memoria cada uno, es decir: 128x256=32768.

y q para escribir/leer un dato hay q especificarle el banco y la casilla de memoria.
...,pero se suponia q la funcion de la libreria deberia saber cuando le mando un
direccion mayor a 256 y calcular el incremento del banco y la casilla y todo eso.

¿alguien de ustedes ha grabado en una EEPROM?
¿me podrian decir como lo hacen?

Gracias muchachos !!!


 

anything