Autor Tema: Duda eeprom 24LC512 con las paginas en las que esta dividido  (Leído 1794 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado redep

  • PIC12
  • **
  • Mensajes: 75
Duda eeprom 24LC512 con las paginas en las que esta dividido
« en: 08 de Enero de 2009, 07:53:12 »
Hola
 Tengo una duda sobre el funcionamiento de la eeprom, en mi placa tengo puestas 8 conectadas al mismo bus, en el datasheep pone que cada una de ellas esta dividida en 8 paginas de 64, en mi programa guardo datos de byte a byte, al igual que cuando toca leerla.

Me gustaria saber que limitacion crea que la memoria este paginada en mi caso, si cuando fuese a leerla lo hiciese en bloques de 19 bytes esto cambiaria algo.

Pregunto esto porque en uno de esos dias en los que te pones a leer como un tonto en to los laos lei algo sobre lo que os pregunto pero no me pare a meditarlo, y oy buscandolo en el google no encuentro nada

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Duda eeprom 24LC512 con las paginas en las que esta dividido
« Respuesta #1 en: 08 de Enero de 2009, 10:40:33 »
Hola, una cosa es la paginación interna de la memoria, es decir depende de la geometria de la misma y otra cosa es la posibilidad de que sea cascadeable, son cosas diferentes. Para direccionarlas se colocan los pines de Address de cada memoria ( A0-A1-A2 ) a 0 y 1 según corresponda, en tu caso al tener 8, cubris todo el rango. Cuando el firmware accede solo llena el correspondiente valor en el Slave Address y solo la que este programada sera visible en el bus. Por otro lado la paginación interna implica que no podes superar el limite de 128 bytes dentro de una pagina, sino una sobreescritura se produce, te pongo un ejemplo de como manejar estas situaciones.

Código: C
  1. void WriteBytesToI2C( dword Address, byte *UserBuffer, word Length )
  2. {
  3.   /* Compute remain space in page boundaty */
  4.   word RemainBytesinPage = 128  - ( word ) ( Address % 128 );
  5.  
  6.   if ( Length > RemainBytesinPage )
  7.   {
  8.     /* Save partial data */
  9.     LowLevelWriteBytesToI2C( Address, UserBuffer, RemainBytesinPage );
  10.  
  11.     /* Adjust to new Page boundary */
  12.     Address += ( dword )RemainBytesinPage;
  13.     UserBuffer += RemainBytesinPage;
  14.     Length -= RemainBytesinPage;
  15.  
  16.     /* Save remanider data */
  17.     LowLevelWriteBytesToI2C( Address, UserBuffer, Length );
  18.   }
  19.   else
  20.   {
  21.     /* Save total data */
  22.     LowLevelWriteBytesToI2C( Address, UserBuffer, Length );
  23.   }
  24. }

Lo que hace esta función es checkear que no se supere el limite de la página, si esto puede ocurrir, entonces graba lo que puede en la pagina correspondiente y el resto de la información en la pagina sgte.

Saludos !

Desconectado redep

  • PIC12
  • **
  • Mensajes: 75
Re: Duda eeprom 24LC512 con las paginas en las que esta dividido
« Respuesta #2 en: 12 de Enero de 2009, 23:26:50 »
Vale la rutina de abajo solo seria necesaria cuando guardas cadena de caracteres no richy, yo guardo paquetes de 19byte pero los hago uno a uno es decir---- escribo un byte---rutina de incremento de puntero------escribo un byte...La rutina para incrementar el puntero esta preparada para pasar de una memoria a otra. Crees que tendre algun problema o voy por buen camino.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Duda eeprom 24LC512 con las paginas en las que esta dividido
« Respuesta #3 en: 13 de Enero de 2009, 11:53:32 »
Hola, si grabas byte a byte en la memoria no tendras problemas, el tema aparece cuando intentas grabar en modo burst.

Saludos !