0% encontró este documento útil (0 votos)
26 vistas5 páginas

EEPROM Arduino

Cargado por

Starman OK
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
26 vistas5 páginas

EEPROM Arduino

Cargado por

Starman OK
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

CURSO ARDUINO BOTS 2

TALLER AULAROBOT
Electrónica, Programación y Arduino
Profesor a cargo: Tec. Julián Andrés Goinhex

2° Cuatrimestre 2020

Practicas:
Memoria EEPROM
EEPROM
(Electrically Erasable Programmable Read-Only Memory)

Arduino incorpora tres tipos de memorias:

• FLASH: no volátil, donde grabamos el sketch (incluido el bootloader).


• SRAM: volátil, donde se almacenan las variables durante el funcionamiento.
• EEPROM: no volátil, que podemos usar para almacenar información entre reinicios.

En este apunte vamos a abordar la memoria EEPROM (Electrically Erasable Programable Read-
Only Memory). Es un tipo de memoria ROM que puede ser programada, borrada y reprogramada
eléctricamente.

Para entender su funcionamiento, primero vamos a repasar brevemente su historia y como fueron
evolucionando estos tipos de memorias.

• ROM (Memoria de Sólo Lectura): es un tipo de almacenamiento empleado en computadoras


y otros dispositivos electrónicos, que se caracteriza por ser únicamente de acceso para
lectura y nunca para escritura, es decir, que se la puede recuperar pero no modificar o
intervenir.
• PROM (Memoria de Sólo Lectura Programable): es de tipo digital y puede ser programada
una única vez, ya que cada unidad de memoria depende de un fusible que se quema al
hacerlo.
• EPROM (Memoria de Sólo Lectura Borrable y Programable): es una forma de memoria
PROM que puede borrarse al exponerse a luz ultravioleta o altos niveles de voltaje, borrando
la información contenida y permitiendo su remplazo.
• EEPROM (Memoria de Sólo Lectura Borrable y Programable Eléctricamente): es una
variante del EPROM que no requiere rayos ultravioletas y puede reprogramarse en el propio
circuito, pudiendo acceder a los bits de información de manera individual y no en conjunto.
Características de la memoria EEPROM

La memoria EEPROM tiene sus propias características y peculiaridades que la distinguen del resto de
memorias. En primer lugar, y más evidente, es no volatil, es decir, mantiene los valores almacenados
cuando se pierde la alimentación.

Por otro lado, la memoria EEPROM es un recurso más escaso que el resto de memorias. La mayoría
de modelos de Arduino disponen de 1KB, mientras que el Mega tiene 4KB.

Una desventaja de la memoria EEPROM es que es mucho más lenta que la memoria SRAM. El
proceso de escritura de una celda (byte) tarda en torno a 3.3 ms. Mientras que el proceso de
lectura es mucho más rápido (aunque sigue siendo más lento que la SRAM), leer 1024 bytes cuesta
en torno a 0.3ms.

Otra particularidad de la memoria EEPROM es que tiene una vida limitada, que se reduce con cada
operación de escritura. No existen límites para las operaciones de lectura.

Las especificaciones garantizan que cada celda tiene una vida útil de al menos 100.000. Aunque
en la práctica puede llegar a ser muy superior, hasta un millón de operaciones, por encima de 100.000
el funcionamiento no está garantizado.

Estas 100.000 operaciones de lectura pueden parecer muchas, pero hay que tener en cuenta que son:

• 5 minutos si grabamos 1 vez por cada instrucción del micro.


• Aproximadamente un día, si grabamos cada segundo.
• Unos 27 años si grabamos 10 veces al día.

Es decir, la memoria EEPROM está pensada para realizar escrituras con tiempos largos entre
ellas, no un uso constante de la misma.

Librería de EEPROM
El IDE Standard de Arduino posee una librería EEPROM.h que incorpora las funciones necesarias
para manipular la memoria no volátil de Arduino.

Las funciones más simples son la función read y write que, respectivamente, leen y escriben un byte
en una dirección de la memoria. La dirección de memoria podrá tener valores de 0 a N-1, siendo N el
número de bytes disponibles (ejemplo, 0 a 1023 en Arduino Uno y Nano, 0 a 4095 en Arduino Mega).
Frecuentemente, necesitaremos guardar variables que tienen un tamaño superior a un byte. Para ello
disponemos de las funciones put, get y update, que son las que usaremos con mayor frecuencia.

Las funciones put, get y update tienen en cuenta el tamaño de la variable, y funcionan incluso con
variables y estructuras definidas por nosotros. Sin embargo, tendremos que tener en cuenta el tamaño
de la variable para saber cuál es la siguiente dirección a escribir, y evitar que se "solapen" las variables.

Escribiendo variable en la EEPROM


Como hemos comentado, la función update() comprueba antes de escribir el valor existente en la
memoria, y escribe únicamente si el valor es diferente del almacenado.

Esto supone una pequeña pérdida de rendimiento (pequeña, porque la operación de lectura es mucho
más rápida que la de escritura) pero contribuye a alargar la vida útil de la memoria.
Escribiendo una estructura en la EEPROM
En C++ y, por tanto, en Arduino, podemos definir nuestros propios tipos de variables y estructuras. Las
funciones de la EEPROM funcionan igualmente con estas variables propias.

En este ejemplo grabamos una estructura, de una forma similar a la de cualquier otra variable.

Leyendo en la EEPROM
Finalmente, tenemos que recuperar las variables guardadas, para lo cual usaremos la función get().
Por supuesto necesitaremos saber la dirección en la que está guardada la variable, así como su tipo.

El siguiente ejemplo realiza la lectura de una variable float, y una estructura de ejemplo, que
previamente deberemos haber guardado en la memoria EEPROM.

También podría gustarte