Arduino EEPROM y sus funciones.

,Éste tutorial fue realizado para ver el funcionamiento de Arduino EEPROM y sus funciones.

Arduino mega 2560.

Fig-1. Arduino mega 2560.

Para empezar, el micro-controlador en el Arduino tiene EEPROM (Electrically Erasable Programmable Read-Only Memory (ROM Programable y Borrable Eléctricamente)). Una memoria en la cual los datos son guardados aun cuando la tarjeta es apagada.

DETALLES.

En general, los distintos micro-controladores en las distintas tarjetas de Arduino contienen diferentes cantidades de EEPROM:

– 4kb (4096 bytes) en ATmega1280 y ATmega2560.
– 1kb (1024 bytes) en ATmega328P.
– 512 bytes en Atmega168 y ATmega8.
– 1kb (1024 bytes) emulados en Arduino 101.

FUNCIONES.

En primer lugar, las funciones de EEPROM te permiten leer y escribir en esos bytes y se pueden usar gracias a la librería EEPROM.h, éstas funciones son:

– EEPROM Read: La cual lee EEPROM y envía sus valores a la ventana serial del software de Arduino.

– EEPROM Write: La cual guarda valores de una entrada analógica a EEPROM.

– Limpiar EEPROM: No existe una función específica. Por lo tanto, se cambian los bytes en EEPROM a 0 usando EEPROM_write.

– EEPROM Put: La cual pone valores en EEPROM usando variables.

– EEPROM Get: La cual obtiene valores de EEPROM y los imprime como flotantes en la ventana serial del software de Arduino.

– Iteración de EEPROM: No existe una función específica. Por lo tanto, se recorre todas las locaciones de EEPROM usando EEPROM_write.

– EEPROM Update: La cual guarda valores leídos de A0 en EEPROM, escribiendo el valor sólo si este es diferente del anterior.

– EEPROM CRC: No existe una función específica. Por lo tanto, se calcula el CRC (Cyclic Redundancy Check (Verificación de redundancia Cíclica)) de los contenidos en EEPROM para encontrar un error usando un algoritmo.

FUNCIÓN Arduino EEPROM READ.

Para empezar, mostramos el código de EEPROM READ. Primeramente, permite leer el valor de cada byte de EEPROM usando la función EEPROM.read(), estos valores pueden ser visualizados en la ventana serial del software de Arduino.

Código.

Representación serial de Arduino EEPROM read.

Fig-2. Representación serial de EEPROM_read.

FUNCIÓN Arduino EEPROM WRITE.

Además, mostramos el código de la función EEPROM WRITE. En primer lugar, permite guardar valores de una entrada analógica en EEPROM usando la función EEPROM.write(), estos valores se conservarán en EEPROM, aunque la tarjeta sea apagada.

Código.

Representación serial de EEPROM_write.

Fig-3. Representación serial de EEPROM_write.

Estos valores fueron obtenidos usando la siguiente conexión:

Conexión utilizada para obtener valores de arduino.

Fig-4. Conexión utilizada para obtener valores de arduino.

Y alternando con:

Segunda conexión utilizada para obtener valores más variados.

Fig-5. Segunda conexión utilizada para obtener valores más variados.

Así como con GND.

FUNCIÓN Arduino EEPROM CLEAR.

En sí, EEPROM no tiene una función clear. Por lo tanto, se cambian todos los bytes a cero usando una iteración y la función EEPROM.write().

Código.

Representación serial de EEPROM clear.

Fig-6. Representación serial de EEPROM clear.

FUNCIÓN Arduino EEPROM PUT.

A continuación mostramos el código de la función EEPROM PUT. La cual se usa normalmente en conjunto con EEPROM.get, el número de bytes escritos se relaciona al tipo de dato de la variable en la que se van a guardar.

Código.

Representación serial de EEPROM_put.

Fig-7. Representación serial de EEPROM_put.

FUNCIÓN Arduino EEPROM GET.

Además, mostramos el código de la función EEPROM GET. Primeramente, obtiene diferentes variables de EEPROM y recupera un número de bytes que se relaciona al tipo de dato de la variable.

Código.

Representación serial de EEPROM_get.

Fig-8. Representación serial de EEPROM_get.

Función Arduino EEPROM UPDATE.

Además, m0stramos el código de la función EEPROM UPDATE. Para empezar, escribe valores sólo si estos son diferentes a los contenidos de las localizaciones en las que se está por escribir. En consecuencia, se evita escribir el mismo dato en una misma localización. Por lo tanto, se incrementa la vida útil de la EEPROM.

Código.

Representación serial de EEPROM_update.

Fig-9. Representación serial de EEPROM_update.

ITERACIÓN DE Arduino EEPROM.

También, no existe una función para iterar. Por lo tanto, se usan diferentes métodos para recorrer toda la EEPROM. Lo que puede usarse para cambiar el valor de todos los bytes de la EEPROM y es lo que se usa para limpiarla.

Código.

Arduino EEPROM CRC.

Por último, no existe una función CRC (Cyclic Redundancy Check (Verificación de redundancia Cíclica)). Por lo tanto, se usa un algoritmo que es una forma simple de revisar si algún dato ha cambiado o si se ha corrompido.

Código.

Para empezar, antes de ejecutar el programa:

Representación serial de EEPROM_CRC_1.

Fig-10. Representación serial de EEPROM_CRC_1.

Finalmente, después de ejecutar el programa:

Representación serial de EEPROM_CRC_2.

Fig-11. Representación serial de EEPROM_CRC_2.

*Nota: Para empezar, para la representación serial de las secciones: Arduino EEPROM WRITE, Arduino EEPROM CLEAR y Arduino EEPROM UPDATE se usó el código de la sección Arduino EEPROM READ.

*Nota: Finalmente, para obtener los valores que se obervan en las secciones, se usó la misma conexión que se muestra en EEPROM_write.

Links.

Finalmente, se muestran links para las tarjetas Arduino que ofrecemos en Hetpro:

Tarjetas originales.

Tarjetas genéricas.

 

Escríbenos tus dudas o comentarios

Usamos Cookies en nuestro sitio WEB

Por favor confirma, si aceptas nuestras cookies de rastreo. También puedes negar el uso de cookies de rastreo y seguir navegando sin que ninguna información sea enviada a servicios de terceros.