Data EEPROM

Odpovědět
Ludek
Příspěvky: 291
Registrován: 02 pro 2019, 08:14
Reputation: 0
Bydliště: České Budějovice

Data EEPROM

Příspěvek od Ludek » 08 srp 2020, 21:40

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.

AstroMiK
Příspěvky: 593
Registrován: 08 pro 2017, 19:05
Reputation: 0

Re: Data EEPROM

Příspěvek od AstroMiK » 08 srp 2020, 22:26

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.

jankop
Příspěvky: 1030
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Data EEPROM

Příspěvek od jankop » 09 srp 2020, 01:54

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.

Ludek
Příspěvky: 291
Registrován: 02 pro 2019, 08:14
Reputation: 0
Bydliště: České Budějovice

Re: Data EEPROM

Příspěvek od Ludek » 09 srp 2020, 06:49

Pánové děkuji MOC !!!!!!! Šlape oboje, ale to Put a Get se mi MOC líbí.
Genialita je v jednoduchosti...

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti