El microcontrolador en las placas Arduino y Genuino tiene 512 bytes de: memoria EEPROM cuyos
valores se mantienen cuando la placa está apagada (como un pequeño disco
duro).
El propósito de este
ejemplo es mostrar el método EEPROM.update () que escribe datos sólo si
estos son diferentes del contenido anterior de las ubicaciones a ser
escritas. Esta solución puede ahorrar tiempo de ejecución debido a que cada
operación de escritura tarda 3,3 ms; la EEPROM tiene un límite de 100.000
ciclos de escritura por ubicación, por lo tanto, evitar volver a escribir el
mismo valor en cualquier ubicación para prolongar la vida de la EEPROM.
Hardware necesario
- Arduino o Genuino
No hay circuito para este ejemplo.
Esquema
Código
// Metodo EEPROM Update
// Almacena en la EEPROM valores leídos desde la entrada analógica 0.
// Estos valores se mantendrán en la EEPROM cuando la placa está desconectada y
// pueden ser recuperados más tarde por otro programa.
// Si un valor no ha cambiado en la EEPROM, no se sobrescribe lo que reduciría
// la vida útil de la EEPROM innecesariamente.
// Publicado bajo licencia MIT.
#include <EEPROM.h>
/** la direccion actual de la EEPROM (Por ejemplo, en que byte vamos a escribir) **/
int address = 0;
void setup() {
/** Setuo vacio **/
}
void loop() {
// Necesitamos dividir por 4 el valor de las entradas analógicas, porque van
// de 0 a 1023 y cada byte de la EPROM sólo puede contener un valor de 0 a 255.
int val = analogRead(0) / 4;
// Actualización de la célula EEPROM particular. estos valores permanecerán allí
// cuando la placa este desconectada.
EEPROM.update(address, val);
// La funcion EEPROM.update(address, val) es equivalente a lo siguiente:
// if( EEPROM.read(address) != val ){
// EEPROM.write(address, val);
// Avanza a la siguiente dirección, cuando llega al final empieza desde el
//principio.
// Los procesadore AVRs más grandes tienen tamaños más grandes de EEPROM, por ejemplo:
// - Arduno Duemilanove: tiene 512 bytes de EEPROM .
// - Arduino Uno: tiene 1 KB de EEPROM.
// - Arduino Mega: tiene 4 KB de EEPROM.
// En lugar de la codificación dura de la longitud, se debe utilizar la función
// de longitud pre-proporcionada.
// Esto hará que su código sea portable para todos los procesadores AVR.
address = address + 1;
if (address == EEPROM.length()) {
address = 0;
}
// Como los tamaños de EEPROM son potencias de dos, es posible e desbordamiento
// de una dirección de la EEPROM como también es factible con un bit a bit de
//longitud - 1.
// ++address &= EEPROM.length() - 1;
delay(100);
}
No hay comentarios:
Publicar un comentario