Stránka 1 z 1

Data EEPROM

Napsal: 08 srp 2020, 21:40
od Ludek
Zdravím, zasekl jsem se na triviálnosti.
Potřebuji uložit a číst do EEPROM Arduina číslo do 65536 - tedy unsignet int. Jak se ukládají a čtou 16bit čísla?
Mám proměnnou např. Suma = 50 000. Chci jí uložit do EPROM, třeba na adresu 100 a pak zase načíst do proměnné Kontrola.
díky za radu.

Re: Data EEPROM

Napsal: 08 srp 2020, 22:26
od AstroMiK
V principu to velké číslo rozložíš na dva bajty takhle:

Kód: Vybrat vše

void EEPROM_write_int(unsigned int adresa, unsigned int data)
  {
    EEPROM.write(adresa    , data >> 8);
    EEPROM.write(adresa + 1, data % 256);
  }

  
Zpátky to pak složíš takhle:

Kód: Vybrat vše

unsigned int EEPROM_read_int(unsigned int adresa)
  {
    return (256 * EEPROM.read(adresa))  +   EEPROM.read(adresa + 1);
  }
  
Pak už jen musíš dávat pozor, abys ukládal a četl jen ze sudých adres.

Re: Data EEPROM

Napsal: 09 srp 2020, 01:54
od jankop
Existuje lepší metoda

Kód: Vybrat vše

EEPROM.put(address, data)
EEPROM.get(address, data)
První uloží do EEPROM ve formátu deklarovaném pro "data" a druhé přečte do formátu deklarovaného pro "data".
Může to být třeba struct nebo float nebo cokoliv jiného. Bonusem je, že funkce EEPROM.put(address, data) používá funkci EEPROM.update() a tak dochází k menšímu opotřebení EEPROM.

Re: Data EEPROM

Napsal: 09 srp 2020, 06:49
od Ludek
Pánové děkuji MOC !!!!!!! Šlape oboje, ale to Put a Get se mi MOC líbí.
Genialita je v jednoduchosti...