Kuidas kasutada Arduino EEPROM -i andmete salvestamiseks voolutsüklite vahel

Kuidas kasutada Arduino EEPROM -i andmete salvestamiseks voolutsüklite vahel

Kas teadsite, et Arduino saab salvestada andmeid, kui see on välja lülitatud? Mitte välkmällu salvestatud visand. Ma räägin muutuvatest andmetest EEPROMis. Liituge minuga, sest ma näitan teile, kuidas seda lugeda ja kirjutada ning mida see teie projektide jaoks saab teha.





Kui olete Arduino uus, vaadake kindlasti meie algajate juhend .





Mis on EEPROM?

EEPROM tähistab elektriliselt kustutatav programmeeritav kirjutuskaitstud mälu . See on püsimälu tüüp. Ärge muretsege, kui te ei saa aru, mida see kõik tähendab. See lihtsalt salvestab andmeid isegi siis, kui toide on eemaldatud (erinevalt RAM , mis vajab andmete säilitamiseks elektrit).



EEPROM on sisse ehitatud lugematu arvesse protsessoritesse, näiteks Matrix Creator Pi HAT-is kasutatav väliprogrammeeritav väravamassiiv (FPGA). Kõigil Arduinodel on saadaval EEPROM, kuid mahutavus on mudeliti erinev. Vaadake kindlasti meie ostujuhendit, et saada rohkem teavet iga tahvli kohta.

Kuidas see töötab?

EEPROM kustutatakse ja programmeeritakse elektriliselt Fowler-Nordheimi tunnelimine . Selle kasutamiseks ei pea te teadma tehnilisi üksikasju. Põhieeldus on see, et binaarsete andmete (mis on binaarsed) muutmiseks kasutatakse elektrit. Seda saab elektrooniliselt lugeda, kustutada ja uuesti kirjutada.



Õnneks, Arduino keel muudab andmete muutmise lihtsaks, ilma arvutiteaduste kraadita.

Oodatav eluiga

Ehkki EEPROMi on Arduinos lihtne kasutada, on selle kasutusiga piiratud. EEPROM on määratud töötlema 100 000 lugemis-/kustutamistsüklit. See tähendab, et saate kirjutada ja seejärel kustutada/uuesti kirjutada andmeid 100 000 korda, enne kui EEPROM muutub ebastabiilseks. Reaalsuses, Atmel (Arduino 'Chip' tootjad) võivad pooljuhid käsitseda suuremat või väiksemat tsüklite arvu, sõltuvalt iga protsessori tolerantsidest.





Kui asukoht on liiga palju kordi kirjutatud ja kustutatud, võib see muutuda ebausaldusväärseks. See ei pruugi tagastada õigeid andmeid või tagastab väärtuse naaberbitist.

See võib tunduda palju kirjutamistena, kuid selle piirini jõudmine võib olla lihtne, kui lugeda ja kirjutada programmiliselt (a silmus , näiteks). Andmete lugemine ei halvenda räni, teeb ainult kirjutamine . Saate EEPROMi andmeid ilma hirmuta lugeda nii palju kui soovite!





Oluline on märkida, et see piirang kehtib iga mälukoha kohta. Teie Arduino võib EEPROMis saada 1000 või enamat mälu asukohta, nii et kui kirjutate ühte kohta liiga palju kordi, mõjutab see ainult seda asukohta, mitte ühtegi teist. Hiljem hakkan arutama kulumise tasandamine , mis võib vähendada EEPROM -i kulumist, jaotades andmeid ühtlaselt - seda kasutavad SSD -d.

Milleks see kasulik on?

EEPROM on teie Arduino projektide jaoks uskumatult kasulik. Kuna see mäletab andmeid isegi siis, kui toide on eemaldatud, võite salvestada Arduino oleku. Võib -olla võiksite ehitada laseritorni, mis mäletab oma positsiooni või kui palju „laskemoona” on alles. Saate seda kasutada oma seadmete juhtimiseks ja registreerida, mitu korda teie seade aktiveeriti.

EEPROM sobib kõige paremini seadete või kõrgete tulemuste jaoks. Kui soovite regulaarselt keerulisi andmeid kirjutada, kaaluge võib-olla Etherneti kilpi (sisseehitatud SD-pesaga) või Raspberry Pi-d.

Loe ja kirjuta

Nüüd, kui teooria on välistatud, vaatame, kuidas mõnda teavet lugeda ja kirjutada! Esiteks lisage raamatukogu (see on kaasas Arduino IDE -ga):

#include

Nüüd kirjutage mõned andmed:

EEPROM.write(0, 12);

See kirjutab numbri 12 EEPROMi asukohta 0 . Iga kirjutamine võtab aega 3,3 millisekundit ( Prl , 1000 ms = 1 sekund). Pange tähele, kuidas te ei saa tähti kirjutada ( süsi ), lubatud on ainult numbrid nullist 255 -ni. Seetõttu on EEPROM ideaalne seadete või kõrgete tulemuste jaoks, kuid mitte nii hea mängija nimede või sõnade jaoks. Selle meetodi abil on võimalik teksti salvestada (võite tähestiku iga tähe kaardistada numbriks), kuid teil peab olema mitu mälukohta - üks koht iga tähe jaoks.

Neid andmeid saate lugeda järgmiselt.

ühendatud, kuid puudub Interneti -ühendus Windows 7
EEPROM.read(0);

Null on aadress, millele varem kirjutasite. Kui te pole varem aadressile kirjutanud, tagastab see maksimaalse väärtuse ( 255 ).

Saadaval on mõned veidi kasulikumad meetodid. Oletame, et soovite salvestada kümnendkoha või stringi:

EEPROM.put(2,'12.67');

See kirjutab andmed mitmesse asukohta - midagi, mida oleks lihtne ise kirjutada, kuid siiski mugav. Peate ikkagi jälgima, kui paljudesse asukohtadesse see on kirjutatud, nii et te ei kirjuta kogemata oma andmeid üle! Peate kasutama saada meetod nende andmete uuesti hankimiseks:

float f = 0.00f;
EEPROM.get(2, f);

Saadud väärtus salvestatakse ujukisse f muutuja. Pange tähele, kuidas seda lähtestatakse 0,00f väärtusena. The f annab kompilaatorile teada, et soovite sellesse muutujale salvestada suure hulga, nii et see seadistab kompileerimise ajal mõned täiendavad konfiguratsioonid.

The EEPROMi dokumentatsioon kohta Arduino veebisait on veel palju näiteid.

Kulumise tasandamine

Kulumise tasandamine on tehnika, mida kasutatakse EEPROMi kulumise vähendamiseks ja eluea pikendamiseks. Kui töötate ainult väikese projekti kallal, ei pruugi te selle pärast muretseda.

Lihtsaim asi, mida saate EEPROM -i elu säilitamiseks teha, on piirata oma kirjutamist teatud asukohaga. Seda saate teha, lugedes kõigepealt aadressi ja kui väärtus, mida soovite kirjutada, on juba olemas, pole vaja seda uuesti kirjutada (pidage meeles, et andmete lugemine ei kahjusta). Seda teeksite järgmiselt.

int safeWrite(int data, address) {
if(EEPROM.read(address) != data) {
EEPROM.write(address, data);
}
}

See on üsna lihtne kood, kuid see töötab ainult täisarvude puhul! Ratta uuesti leiutamise asemel kasutage Arduino EEPROM raamatukogusse sisseehitatud funktsiooni:

EEPROM.update(address, val);

Sellel meetodil on täpselt sama allkiri kui kirjutada meetodit, kuigi see võib oluliselt vähendada vajalike kirjutamiste arvu!

Kui peate kirjutama palju andmeid ja olete mures räni kulumise pärast, saate jälgida, kui palju kirjutate, kuigi see kasutab rohkem andmeid. Siin on umbkaudne rakendamine pseudokood :

var address = 0
var writeCount = 0
if(writeCount > 75,000)
writeCount = 0
address += 1
EEPROM.write(address, data)

Peate aadressi ja writeCount EEPROM -i salvestama (ja writeCount tuleb jagada aadresside vahel). Enamasti ei ole selline kaitsetase vajalik. Arduinod on samuti nii odavad, nii et teil võib olla lihtsam varukoopiat osta!

Nüüd peaksite teadma piisavalt häid projekte. Andke meile teada, kui teete midagi lahedat! Kas tunnete ära kõik piltidel olevad seadmed? Jäta meile kommentaar allpool!

Jaga Jaga Piiksuma E -post 5 näpunäidet VirtualBox Linuxi masinate ülelaadimiseks

Kas olete väsinud virtuaalmasinate halvast jõudlusest? Siin on, mida peaksite tegema oma VirtualBoxi jõudluse suurendamiseks.

Loe edasi
Seotud teemad
  • DIY
  • Arduino
  • Elektroonika
Autori kohta Joe Coburn(136 artiklit avaldatud)

Joe on lõpetanud arvutiteaduse Ühendkuningriigi Lincolni ülikoolis. Ta on professionaalne tarkvaraarendaja ja kui ta ei lennuta droonidega ega kirjuta muusikat, võib teda sageli leida pildistamas või videoid tootmas.

Rohkem Joe Coburnilt

Telli meie uudiskiri

Liituge meie uudiskirjaga, et saada tehnilisi näpunäiteid, ülevaateid, tasuta e -raamatuid ja eksklusiivseid pakkumisi!

Tellimiseks klõpsake siin
Kategooria Diy