Conforme discutido em nossa postagem Manipulação de EEPROM, os dados são gravados em formato de Byte o que gera um problema porque em 1 Byte, só é possível armazenar valor de 255 em decimal.
11111111 = 255
Quando precisamos guardar valores maiores que 255 é preciso fazer uma adaptação para que seja possível recuperar os valores armazenado. Para isso precisaremos de duas posições de memoria, onde iremos dividir o valor por 256 e armazenar o valor do Quociente numa posição da memória e o valor do resto em outra posição de memória. No exemplo abaixo, iremos armazenas o numero 72010.
Após realizar o calculo de 72010/256, iremos armazenar o valor 281 na primeira posição de memória e 74 na segunda posição de memoria. O programa abaixo mostra o codificação do caso apresentado.
#include <EEPROM.h>
void setup()
{
Serial.begin(9600);
}
int Q;
int resto;
void loop()
{
Serial.print("Gravando 72010 na memoria EEPROM : ");
Q= 72010/256;
resto = 72010%256;
EEPROM.write(0, Q);
Serial.printDado 1 : ");
Serial.println(Q);
EEPROM.write(1, resto); // % operador para extrair o resto da divisão
Serial.print("Dado 2 : ");
Serial.println(resto);
}
Para realizar a leitura da memória, precisaremos realizar a operação inversa, onde precisaremos ler as duas posições de memoria onde os números foram gravados, recuperar os valores e aplicar a seguinte fórmula:
Valor original = (dado1 * 256) + dado2
Segue codificação do exemplo acima.
#include <EEPROM.h>
void setup()
{
Serial.begin(9600);
}
int Q;
int resto;
void loop()
{
Serial.println("\nLendo numero da memoria EEPROM... ");
Q = EEPROM.read(0);// lendo valor do Quociente da divisão no endereço 0 da memória
resto = EEPROM.read(1); // lendo valor do resto da divisão no endereço 1 da memória
Serial.print("Valor = ");
int x = (Q * 256) + resto;
Serial.println(x);
}e
Pratique:
Exercício 1 - Faça que se comunique com o usuário através da USB e receba um numero via USB e salve na memória EEPROM, como sabemos que a EEPROM tem um tempo de vida, voce deve criar controles para que a memória só seja acessada quando realmente houver um dado a ser gravado.
Nenhum comentário:
Postar um comentário