Manipulação de EEPROM - parte 2

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.


Não esqueça do like do video e de curtir nossa pagina no facebook no link abaixo:

Nenhum comentário:

Postar um comentário