fbpixel
Etiquetas:
5
(1)

La EEPROM es una memoria interna del microcontrolador que permite almacenar datos después de reiniciar la tarjeta. Cuando se trabaja con microcontroladores, es útil mantener los datos en la memoria, especialmente cuando la tarjeta se apaga, ya sea intencionalmente o no, como en el caso de una pérdida de energía eléctrica.

Hardware

  • Computador
  • Arduino UNO
  • Cable USB A macho a B macho

Principio de funcionamiento

La EEPROM es una ubicación de memoria especial del microcontrolador. Es un conjunto de registros en los que se almacenan datos que permanecen en la memoria incluso después de apagar la tarjeta. Es una memoria de «sólo lectura» comparada con la memoria de «acceso aleatorio» (como la RAM) que se borra en cada ciclo de encendido. El tamaño de la memoria varía según el microprocesador de la tarjeta.

Limitación de la EEPROM

Una cosa importante a tener en cuenta es que la EEPROM tiene un tamaño y una vida útil limitados. Las células de memoria pueden ser leídas tantas veces como sea necesario, pero el número de ciclos de escritura está limitado a 100.000. Es aconsejable prestar atención al tamaño de los datos almacenados y a la frecuencia con que se desea actualizarlos.
Si desea registrar los datos de una flota de sensores en tiempo real para trazar curvas, lo mejor es recurrir a un módulo de tarjeta SD para almacenar los datos.

Código

Para interactuar con la EEPROM, usamos la biblioteca EEPROM.h que permite escribir y leer datos en la memoria. Para esto usaremos dos funciones:

  • put() para escribir
  • get() para leer
  • No lo usaremos aquí, pero, EEPROM.update() permite escribir un valor sólo si es diferente para salvar la vida del EEPROM.

Se pueden utilizar otras funciones de la biblioteca dependiendo de cómo se utilice la EEPROM.

//Libraries
#include <EEPROM.h>//https://www.arduino.cc/en/Reference/EEPROM

void setup(){
//Init Serial USB
Serial.begin(9600);
Serial.println(F("Initialize System"));
//Write data into eeprom
  int address = 0;
  int boardId = 18; 
  EEPROM.put(address, boardId);
  address += sizeof(boardId); //update address value

  float param = 26.5;
  EEPROM.put(address, param); 
  
  //Read data from eeprom
  address = 0;
  int readId;
  EEPROM.get(address, readId);
  Serial.print("Read Id = ");
  Serial.println(readId);
  address += sizeof(readId); //update address value
  
  float readParam;
  EEPROM.get(address, readParam);
  Serial.print("Read param = ");
  Serial.println(readParam);
  

 }

void loop(){}

Resultado

Los valores leídos se corresponden bien con los valores registrados. Puedes quitar la parte de escritura y reiniciar el código para comprobar que los valores están almacenados.

Aplicaciones

  • Manteniendo la dirección IP o I2C de una tarjeta Arduino en la memoria

Fuentes

Encuentre otros tutoriales y ejemplos en el generador de código automático
Arquitecto de Código

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 5 / 5. Recuento de votos: 1

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en los medios sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?