Cuando realizamos un programa o sketch tenemos la necesidad de almacenarlo en la memoria de Arduino.
A la vez, cuando ejecutamos este programa también va generando datos que también debemos ir almacenado para cogerlos cuando los necesitemos.
En esta entrada vamos a dar un repaso a las diferentes tipos de memoria de Arduino: semiconductoras y magnéticas.
La memoria de Arduino es la parte del sistema que almacena datos binario en grandes cantidades. Las memorias semiconductoras están formadas por matrices de elementos de almacenamiento que pueden ser latches o condensadores.
Indice de contenidos
RAM o memoria de Arduino volátiles de acceso aleatorio
Las RAM es una memoria de Arduino de lectura-escritura en las que los datos se pueden escribir o leer en cualquier dirección seleccionada en cualquier orden.
Cuando se escriben los datos en una determinada dirección de la RAM, los datos almacenados previamente son reemplazados por la nueva unidad de datos.
Cuando una unidad de datos se lee de una determinada dirección de la RAM, los datos de esa dirección permanecen almacenados y no son destruidos por la operación de lectura.
Esta operación no destructiva de lectura se puede entender como una copia del contenido de una dirección, dejando dicho contenido intacto.
La RAM se utiliza habitualmente para almacenamiento de datos a corto plazo, ya que no puede conservar los datos almacenados cuando se desconecta la alimentación, es una memoria volátil.
Dentro de estas memorias tenemos dos categorias:
- RAM estática (SRAM): Utilizan flip-flops como elementos de almacenamiento y, por lo tanto, pueden almacenar datos de forma indefinida siempre que se aplique una alimentación continua. Es la más rápida para leer los datos.
- RAM dinámica (DRAM): Utilizan condensadores como elemento de almacenamiento y no pueden mantener los datos mucho tiempo sin recargar los condesadores mediante el proceso de refresco. Puede almacenar muchos más datos que las SRAM para un tamaño fisico y coste, ya que cada celda es mucho más sencilla y por lo tanto puede incluir más celdas en el mismo tamaño que una SRAM.
Ambos tipos de memorias perderan los datos cuando pierdan la alimentación continua a diferencia de los siguientes tipos de memoria que vamos a ver.
ROM o memoria de Arduino de solo lectura
Como ya se ha mencionado, una ROM mantiene de forma permanente o semipermanente los datos almacenados, que pueden ser leídos, pero, o no se pueden cambiar en absoluto, o se requiere un equipo especial para ello.
Almacena datos que se utilizan repetidamente en las aplicaciones como instrucciones programadas para la inicialización y el funcionamiento de un sistema.
Las ROM mantienen los datos almacenados cuando se desconecta la alimentación. Para este tipo de memorias disponemos de varios tipos:
- ROM: Los datos se almacenan permanentemente en la memoria durante el proceso de fabricación para proporcionar funciones estándar de uso extendido.
- PROM o ROM programable: El usuario, con ayuda de equipos especializados, almacena eléctricamente los datos. Se utiliza algún tipo de mecanismo de fundición para almacenar bits, donde un «hilo» de memoria (fusible) se funde o queda intacto para representar un 0 o un 1. El proceso de fundición es irreversible, una vez que una PROM ha sido programada no puede cambiarse.
- EPROM o PROM borrable: Es una memoria PROM pero borrable. Este tipo de memorias pueden ser reprogramadas si antes se borra el programa existente. Almacena cargas electricas en sus celdas durante un periodo de tiempo indefinido. La presencia o ausencia de esta carga representan los bits de datos. Los dos tipos fundamentales de estas memorias son las UV EPROM y las EEPROM:
- UV EPROM: Este tipo de memorias se pueden borrar aplicandole una exposición de luz ultravioleta durante un periodo de varios minutos.
- EEPROM o PROM borrable eléctricamente: A diferencia de la anterior, se puede borrar en unos pocos milisegundos. Se realiza a través de impulsos eléctricos y se pueden reprogramar dentro del propio circuito final, lo que permite reconfigurar cualquier sistema.
Memoria de Arduino Flash
La memoria ideal debería tener una alta capacidad de almacenamiento, ser no volátil, disponer de capacidad de lectura y escritura en el propio sistema, tener una velocidad de operación comparativamente rápida y ser efectiva en términos de coste.
Las tecnologías de almacenamiento de memorias tradicionales, como las que hemos visto anteriormente, tienen alguna de estas características, pero ninguna las tiene todas, salvo las memorias flash.
Las memorias Flash son memorias de lectura/escritura de alta densidad (alta capacidad de almacenamiento en espacio reducido), y son no volátiles.
Esta alta densidad se consigue con una célula de almacenamiento compuesta por un único transistor MOS de puerta flotante.
El bit de datos se almacena como una carga o una ausencia de carga en la puerta flotante, dependiendo de si se desea almacenar un 0 o un 1
Más información sobre memorias aquí.