54 lines
1.1 KiB
C
54 lines
1.1 KiB
C
#include "Enuns.h"
|
|
#include "EEPROM.h"
|
|
|
|
#ifndef MemoryService
|
|
#define MemoryService
|
|
|
|
int MaxMemoria = 254;
|
|
int DigitosValor = 5;
|
|
#define EEPROM_SIZE 512
|
|
|
|
void IniciarMemoria() {
|
|
EEPROM.begin(EEPROM_SIZE);
|
|
}
|
|
|
|
void LimparMemoria() {
|
|
for (int i = 0; i < MaxMemoria; i++) {
|
|
EEPROM.write(i, '0');
|
|
EEPROM.commit();
|
|
}
|
|
}
|
|
|
|
int LerMemoria(int Endereco) {
|
|
int ValorLido = 0;
|
|
String ValorLidoStr = "";
|
|
for (int i = Endereco; i < (Endereco + DigitosValor); i++) {
|
|
ValorLidoStr += (char)EEPROM.read(i);
|
|
}
|
|
ValorLido = ValorLidoStr.toInt();
|
|
return ValorLido;
|
|
}
|
|
|
|
bool GravarMemoria(int Endereco, int Valor) {
|
|
String ValorGravar = (String)Valor;
|
|
|
|
if (Endereco < 0 || (Endereco + ValorGravar.length()) > MaxMemoria || Endereco > MaxMemoria) {
|
|
return false;
|
|
}
|
|
|
|
int idx = 0;
|
|
for (int i = Endereco; i < (Endereco + DigitosValor); i++) {
|
|
char V = '0';
|
|
int PIndex = (DigitosValor - ValorGravar.length());
|
|
if (PIndex <= idx) {
|
|
V = ValorGravar[idx - PIndex];
|
|
}
|
|
EEPROM.write(i, V);
|
|
idx++;
|
|
}
|
|
EEPROM.commit();
|
|
|
|
return true;
|
|
}
|
|
|
|
#endif |