Arduino: Escribir varios bytes en la memoria EEPROM

Pensaba hablar sobre las finales de la NBA, pero creo que me voy a esperar a que acaben y voy a volver con el tema del Arduino y seguir con la EEPROM de la que ya hablamos en otro artículo.

Si en el primer artículo veíamos cómo escribir en esta memoria no volátil, en este veremos otro punto ¿Cómo guardamos información mayor de un byte? En ese caso tenemos que distribuirla entre varios ¿recuerdas el tema de los punteros en C? Pues es similar.

En el ejemplo vamos a guardar un entero largo, de 32 bits. Empezaremos por volcarlo a una variable auxiliar que servirá de contenedor del valor original, y declararemos también una variable byte para la operación de escritura. Lo que haremos será ir guardando en cada byte de la EEPROM el byte más significativo de nuestra variable auxiliar y luego aplico un desplazamiento de 8 bits hacia la izquierda a la variable auxiliar para que el siguiente byte pase a ser el más significativo. Todo esto dentro de un bucle for que repita la operación tantas veces como bytes tenga nuestra variable. En el código explicado paso a paso lo verás mejor:

   long Numero = 666777999;   

   //Usamos el contenedor para no perder el dato.
   long Contenedor = Numero;

   //Definimos una variable byte
   //para trocear el dato largo
   byte X;

   //Bucle: recorremos tantas veces como
   //bytes tiene el tipo de dato
   //que queremos almacenar
   for (int i = 0; i < sizeof(Numero); i++){
     //Guardamos la fracción más
     //a la izquierda. Es el byte
     //más significativo
     X = highByte(Contenedor);
     EEPROM.write(i, X);
     //Aplicamos un desplazamiento
     //de un byte (8 bits)
     // hacia la izquierda.
     //De esta forma en cada iteración
     //la siguiente porción pasa a ser
     //el byte más significativo
     Contenedor = Contenedor << 8;
   }

Es importante tener claras las operaciones de desplazamiento de bit en Arduino para trabajar con múltiples bytes. Próximamente hablaré de esos temas (operaciones a nivel de bit y cómo recuperar estos datos escritos).

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s