EEPROM Escritura

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).
Este ejemplo ilustra cómo leer el valor de cada uno de esos bytes mediante la  función EEPROM.wtite (). Estos valores permanecerán en la EEPROM cuando la placa está apagada y pueden ser recuperados más tarde por otro programa.

Hardware necesario

  • Arduino o Genuino

Circuito

No hay circuito para este ejemplo.

 

Esquema

Código


/*
 * Escritura en la EEPROM 
 *
 * Almacena valores leídos de la entrada analógica 0 en la EEPROM. 
* Estos valores se mantendrán en la EEPROM cuando la placa está 
* desconectada y pueden ser recuperados más tarde por otro programa.
 */

#include <EEPROM.h>

/** la dirección actual en la EEPROM (por ejemplo, el byte que vamos a escribir a continuacion) **/
int addr = 0;

void setup() {
  /** Setup vacio. **/
}

void loop() {
  /***
    Es necesario 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 tener un valor de 0 a 255.
  ***/

  int val = analogRead(0) / 4;

  /***
    Escribe el valor en el correspondiente byte de la EEPROM. Estos valores 
    permanecerán allí cuando la placa está apagada.
  ***/

  EEPROM.write(addr, val);

  /***
    Avanza a la siguiente dirección, cuando llega al final regresa de nuevo 
    al principio.

     Los procesadores AVR más grandes tienen tamaños más grandes de EEPROM, por ejemplo: 
   - Arduino Duemilanove: 512 bytes de EEPROM.
   - Arduino Uno: 1 KB de EEPROM. 
   - Arduino Mega: 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.
  ***/
  addr = addr + 1;
  if (addr == EEPROM.length()) {
    addr = 0;
  }

  /***
    Como los tamaños de EEPROM son potencias de dos, es posible el desbordamiento 
    de una dirección de la EEPROM con un bit a bit de longitud - 1.

    ++addr &= EEPROM.length() - 1;
  ***/

  delay(100);
}

No hay comentarios:

Publicar un comentario