Foro de elhacker.net

Informática => Electrónica => Mensaje iniciado por: @synthesize en 17 Julio 2010, 05:55 am



Título: EEPROM y Arduino
Publicado por: @synthesize en 17 Julio 2010, 05:55 am
¿Qué es EEPROM?

(Wikipedia) EEPROM o E²PROM son las siglas de Electrically-Erasable Programmable Read-Only Memory (ROM  programable y borrable eléctricamente). Es un tipo de memoria ROM  que puede ser programado, borrado y reprogramado eléctricamente, a diferencia de la EPROM que ha de borrarse mediante un aparato que emite rayos ultravioletas. Son memorias no volátiles.

Las celdas de memoria de una EEPROM están constituidas por un transistor MOS, que tiene una compuerta flotante (estructura SAMOS), su estado normal esta cortado y la salida proporciona un 1 lógico.

Aunque una EEPROM puede ser leída un número ilimitado de veces, sólo puede ser borrada y reprogramada entre 100.000 y un millón de veces.

Estos dispositivos suelen comunicarse mediante protocolos como I²C, SPI y Microwire. En otras ocasiones, se integra dentro de chips como microcontroladores y DSPs para lograr una mayor rapidez.

(http://r.i.elhacker.net/cache?url=http://upload.wikimedia.org/wikipedia/commons/thumb/2/2a/Arduino-logo.svg/150px-Arduino-logo.svg.png)


Añadir la cabecera EEPROM


Basta con incluir la directiva #include <EEPROM.h> en nuestro código.

Funciones:



 EEPROM.write(dirección, valor)


Escribe un valor en la EEPROM.

Dirección (Address): Disponemos de 511 celdas (int)
Valor (Value): Disponemos de 0 a 255 Tipo Byte)

 EEPROM.read(dirección)


Lee un valor de la EEPROM

Value (Address): Disponemos de 511 celdas (int)

Retorna: Byte. (Podemos hacer cast a int)

Código de ejemplo (Desde la página oficial de Arduino)

   WRITE

Código
  1. #include <EEPROM.h>
  2.  
  3. void setup()
  4. {
  5.  for (int i = 0; i < 512; i++)
  6.    EEPROM.write(i, i);
  7. }
  8.  
  9. void loop()
  10. {
  11. }

   READ
Código
  1. #include <EEPROM.h>
  2.  
  3. int a = 0;
  4. int value;
  5.  
  6. void setup()
  7. {
  8.  Serial.begin(9600);
  9. }
  10.  
  11. void loop()
  12. {
  13.  value = EEPROM.read(a);
  14.  
  15.  Serial.print(a);
  16.  Serial.print("\t");
  17.  Serial.print(value);
  18.  Serial.println();
  19.  
  20.  a = a + 1;
  21.  
  22.  if (a == 512)
  23.    a = 0;
  24.  
  25.  delay(500);
  26. }
  27.  

*Aviso:   Como bien se avisa en la página de Arduino, el datasheet del EEPROM del microcontrolador Atmega 168 solo soporta unos 100000 ciclos de escritura/sobreescritura. Ahora la mayoría de los Arduinos vienen con Atmega328p, me imagino que la vida de EEPROM se habrá alargado, aún así agradecería que alguien buscara en el datasheet.


Título: Re: EEPROM y Arduino
Publicado por: Banti en 17 Julio 2010, 20:29 pm
Interesante thread.

Yo pense con los Arduinos no tenian EEPROM y por eso se vendian las SD shield :P


Título: Re: EEPROM y Arduino
Publicado por: Debci en 18 Julio 2010, 12:41 pm
Interesante thread.

Yo pense con los Arduinos no tenian EEPROM y por eso se vendian las SD shield :P

Que yo sepa no se peuden cargar progrmas desde una microSD...

Por cierto daemon, gran documentacion, solo un añadido, dispone de 512 celdas, aunque se empieze a contar desde 0, son 512.

Saludos