LA LIBRERÍA EEPROM

Facebooktwittergoogle_pluslinkedinmailFacebooktwittergoogle_pluslinkedinmail

Las plaquitas de Arduino cuentan con una zona de memoria de un tipo conocido como EEPROM (Electrically Erasable Read Only Memory, Memoria de Sólo Lectura, Borrable Eléctricamente). Aunque el nombre pueda no parecer muy afortunado, se trata de una memoria no volátil, es decir, cuyo contenido no se pierde cuando se desconecta la alimentación. Sin embargo, se puede borrar y reescribir mediante las adecuadas señales eléctricas. Podemos considerar estas memorias como diminutísimos discos duros (la capacidad varía de unas versiones de Arduino a otras, pero oscila entre 1 y 4 Kb). Si bien es muy poco, para determinados usos es adecuada.

La librería EEPROM incorpora las instrucciones necesarias para gestionar estas memorias. ESTA LIBRERÍA FORMA PARTE DEL IDE DE ARDUINO. NO ES NECESARIO DESCARGARLA.

Esta librería está formada por métodos que pueden ser usados directamente, sin necesidad de instanciar un objeto. Los métodos con los que cuenta aparecen a continuación:

LA PROPIEDAD EEPROM[]

Es una matriz que se refiere a las celdas (unidades donde se almacena la información; en la práctica, cada celda contiene un byte) de la EEPROM de nuestra plaquita. Se trata de una matriz que puede ser leida y/o escrita, apuntando, con el índice, a la celda en la que queremos escribir, o de la que queremos leer.

Un ejemplo genérico de uso obedecería al siguiente esquema:

#include <EEPROM.h>
byte valor;

void setup(){
  // Leer la primera celda (el primer byte).
  valor = EEPROM[0];
  //Escribir en el primer byte.
  EEPROM[0] = 65;
  //Comparar contenidos
  if (EEPROM[0] >20){
    // Líneas de código
  }
}
void loop(){ /* Sección loop sin contenido */ }

EL MÉTODO read()

Se usa como forma de leer una posición de memoria de la EEPROM. La sintaxis general obedece a EEPROM.read(posicion);. Observa que, como esta clase no se instancia en objeto, referenciamos el método (lo haremos así con todos) directamente a través del nombre de la clase.

Un ejemplo de uso que lee una y otra ves los primeros 512 bytes de la memoria EEPROM es el siguiente código:

EL MÉTODO write()

Este es complementario del anterior. Nos permite escribir un byte específico en una posición de la memoria EEPROM. La sintaxis general obedece al esquema EEPROM.write(posición, valor);. Vemos un ejemplo a continuación:

Observa que usamos una sola variable para referirnos a la posición y al valor. Como el método se encuentra en un bucle que itera entre 0 y 254, lo que hará será escribir el valor 0 en la posición 0, el valor 1 en la posición 1, y así sucesivamente. No es muy útil, pero, a efectos de referencia se entiende muy claro.

Observa también que el bucle se encuentra en la sección setup, no en loop. Esto no es lo habitual en entorno Arduino, pero viene muy bien cuando queremos que un grupo de instrucciones (en este caso el bucle) no se esté ejecutando permanetemente.

EL MÉTODO update()

Su funcionamiento y uso es el mismo que el anterior. La diferencia es que este método sólo escribe el valor en la celda indicada, si el que hay es diferente, no si ya es igual. La sintaxis es la misma que la del método anterior.

EL MÉTODO put()

Este método se emplea cuando se hace necesario escribir en la memoria datos que exceden del límite de un solo carácter. Por supuesto, tales datos ocupan más de un byte y se almacenan del modo que vemos a continuación:

Este código coloca el valor de la variable valorFlotante en la EEPROM, a partir de la celda especificada en la variable direccion (en el ejemplo, 0). Si queremos saber el número de bytes que ocupa el valor (y, por ende, el número de celdas), podemos usar la función de Arduino sizeof(), como se ve a continuación:

numBytes = sizeof(valorFlotante);

Recuerda: un número de tipo float se almacena en 32 bits (cuatro bytes).

EL MÉTODO get()

Este es complementario del anterior. Se usa para leer un dato de la EEPROM, de cualquier tamaño. Especificamos la dirección de inicio, y nombre de la variable donde se almacenará la lectura. De este modo, según el tipo de variable, el método “sabe” cuantas posiciones de memoria consecutivas debe leer.

Este código leerá cuatro bytes y almacenará el contenido en forma de valor numérico flotante en la variable valorFlotante.

 

     

Un comentario:

  1. Julio Florentino

    Esta interesante lo que aquí se publica

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *