Hogyan használhatjuk az Arduino EEPROM -ot az adatok tárolására az áramkörök között

Hogyan használhatjuk az Arduino EEPROM -ot az adatok tárolására az áramkörök között

Tudta, hogy az Arduino képes tárolni az adatokat, amikor ki van kapcsolva? Nem a flash memóriában tárolt vázlat. Az EEPROM változó adatairól beszélek. Csatlakozz hozzám, mert megmutatom, hogyan kell olvasni és írni, és mit tehet a projektjeidért.





Ha még nem ismeri az Arduino -t, nézze meg a mi oldalunkat kezdő útmutató .





Mi az EEPROM?

Az EEPROM jelentése: elektromosan törölhető, programozható, csak olvasható memória . Ez egyfajta nem felejtő memória. Ne aggódjon, ha nem érti, mit jelent ez. Egyszerűen tárolja az adatokat még kikapcsolt áram mellett is (ellentétben RAM , amely áramot igényel az adatok megőrzéséhez).



Az EEPROM számtalan processzorba épül, mint például a Matrix Creator Pi HAT-ban használt terepi programozható kapu tömb (FPGA). Minden Arduino rendelkezik EEPROM -tal, de a kapacitás típusonként változik. Feltétlenül nézze meg vásárlási útmutatónkat, ahol további részleteket találhat az egyes táblákról.

Hogyan működik?

Az EEPROM elektromosan törlődik és programozható Fowler-Nordheim alagút . Ahhoz, hogy használni tudja, nem kell ismernie a műszaki részleteket. Az alapfeltevés az, hogy a bináris adatok (ami bináris) megváltoztatására villamos energiát használnak. Elektronikusan olvasható, törölhető és újraírható.



Szerencsére a Arduino nyelv megkönnyíti az adatok megváltoztatását, mindezt számítástechnikai végzettség nélkül.

Várható élettartam

Bár az EEPROM könnyen használható az Arduino -ban, korlátozott élettartamú. Az EEPROM 100 000 olvasási/törlési ciklust kezel. Ez azt jelenti, hogy 100 000 alkalommal írhat, majd törölhet/írhat újra adatokat, mielőtt az EEPROM instabillá válik. A valóságban, Atmel (az Arduino 'Chip' gyártói) a félvezetők nagyobb vagy alacsonyabb ciklusszámokat tudnak kezelni, az egyes processzorok tűréseitől függően.





Ha egy helyet túl sokszor írtak és töröltek, az megbízhatatlanná válhat. Előfordulhat, hogy nem adja vissza a helyes adatokat, vagy nem adja vissza az értéket egy szomszédos bitről.

Ez sok írásnak tűnhet, de könnyen elérheti ezt a korlátot, ha programozottan olvas és ír (pl hurok , például). Az adatok olvasása nem rontja a szilíciumot, csak az írás teszi . Félelem nélkül olvashat adatokat az EEPROM -ból, amennyit csak akar!





Fontos megjegyezni, hogy ez a korlát minden memóriahelyre vonatkozik. Előfordulhat, hogy az Arduino készülékén 1000 vagy több memóriahely áll rendelkezésre az EEPROM -ban, így ha túl sokszor ír egy helyre, akkor csak az adott hely érintett, és nem a többi. Később megbeszélem kopás kiegyenlítése , amely az adatok egyenletes elosztásával csökkentheti az EEPROM kopását - ezt az SSD -k használják ki.

Mire hasznos?

Az EEPROM hihetetlenül hasznos az Arduino projektekhez. Mivel az áramellátás megszüntetésekor is emlékszik az adatokra, tárolhatja az Arduino állapotát. Talán építhet egy lézertornyot, amely emlékszik a helyzetére, vagy mennyi 'lőszer' van hátra. Segítségével vezérelheti készülékeit, és naplózhatja, hogy a készülék hányszor aktiválódott.

Az EEPROM a legalkalmasabb például beállításokhoz vagy magas pontszámokhoz. Ha rendszeresen szeretne összetett adatokat írni, fontolja meg egy ethernet pajzsot (beépített SD-foglalattal) vagy egy Raspberry Pi-t.

Olvass és írj

Most, hogy az elmélet félreáll, nézzük meg, hogyan kell olvasni és írni néhány adatot! Először is vegye be a könyvtárat (ez az Arduino IDE -vel jár):

#include

Most írjon néhány adatot:

EEPROM.write(0, 12);

Ez írja a számot 12 az EEPROM helyre 0 . Minden írás 3,3 milliszekundumot vesz igénybe ( Kisasszony , 1000 ms = 1 másodperc). Figyeld meg, hogy nem tudsz leveleket írni ( char ), csak a nullától a 255 -ig terjedő számok megengedettek. Ezért az EEPROM ideális beállításokhoz vagy magas pontszámokhoz, de nem annyira jó játékosnevekhez vagy szavakhoz. Lehetőség van szöveg tárolására ezzel a módszerrel (az ábécé minden betűjét leképezheti egy számra), azonban több memóriahelyet kell megadnia - egy helyet minden betűhöz.

Így olvassa el ezeket az adatokat:

egy másik számítógép ezen a hálózaton ugyanazzal az ip címmel rendelkezik
EEPROM.read(0);

A nulla az a cím, amelyre korábban írtál. Ha korábban nem írt egy címre, akkor a maximális értéket adja vissza ( 255 ).

Vannak valamivel hasznosabb módszerek. Tegyük fel, hogy egy tizedesjegyet vagy karakterláncot szeretne tárolni:

EEPROM.put(2,'12.67');

Ez több helyre írja az adatokat - ezt könnyű lenne saját maga írni, de ennek ellenére hasznos. Továbbra is nyomon kell követnie, hogy ez hány helyre írt, így véletlenül nem írja felül az adatait! Használnia kell a kap módszer az adatok újbóli lekérésére:

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

A get értékét az úszó tárolja f változó. Figyelje meg, hogyan inicializálják ezt 0,00f mint az érték. Az f tudatja a fordítóval, hogy esetleg nagy számot szeretne tárolni ebben a változóban, így néhány további konfigurációt is beállít a fordítás során.

Az EEPROM dokumentáció a Arduino weboldal még sok példa van.

Viselet kiegyenlítése

A kopás kiegyenlítése az EEPROM kopásának csökkentése és élettartamának növelése. Ha csak egy kis projekten dolgozik, akkor nem kell aggódnia emiatt.

A legegyszerűbb dolog, amit tehetünk az EEPROM életének megőrzése érdekében, ha korlátozhatjuk írásainkat egy adott helyre. Ezt úgy teheti meg, hogy először elolvassa a címet, és ha az írni kívánt érték már megvan, akkor nem kell újra írnia (ne feledje, az adatok olvasása nem árt). Ezt a következőképpen teheti meg:

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

Ez egy nagyon egyszerű kódrészlet, de csak egész számokra működik! A kerék újrafeltalálása helyett használja az Arduino EEPROM könyvtárba épített funkciót:

EEPROM.update(address, val);

Ennek a módszernek pontosan ugyanaz az aláírása, mint a ír módszer, bár drasztikusan csökkentheti a szükséges írások számát!

Ha sok adatot kell írnia, és aggódik a szilícium elhasználódása miatt, nyomon követheti, hogy hány írást végez, bár ez több adatot használ. Itt egy durva megvalósítás pszeudokód :

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

A címet és a writeCount -ot az EEPROM -ban kell tárolnia (és az writeCount -ot fel kell osztani a címhelyekre). Az idő nagy részében ilyen szintű védelemre nincs szükség. Az Arduinos is nagyon olcsó, így könnyebb lehet biztonsági másolatot vásárolni!

Most már kellőképpen tudnia kell néhány fantasztikus projekt megvalósításához. Tudassa velünk, ha valami jót készít! Felismeri az összes készüléket a képeken? Hagyjon nekünk egy megjegyzést alább!

Részvény Részvény Csipog Email 5 tipp a VirtualBox Linux gépek feltöltéséhez

Unod már a virtuális gépek által kínált gyenge teljesítményt? Íme, mit kell tennie a VirtualBox teljesítményének növelése érdekében.

Olvassa tovább
Kapcsolódó témák
  • DIY
  • Arduino
  • Elektronika
A szerzőről Joe Coburn(136 megjelent cikk)

Joe az Egyesült Királyságban, a Lincoln Egyetemen végzett informatikából. Professzionális szoftverfejlesztő, és amikor nem repül drónokkal és nem ír zenét, gyakran előfordul, hogy fényképeket készít vagy videókat készít.

Joe Coburn további alkotásai

Iratkozzon fel hírlevelünkre

Csatlakozz hírlevelünkhöz, ahol technikai tippeket, véleményeket, ingyenes e -könyveket és exkluzív ajánlatokat találsz!

Feliratkozáshoz kattintson ide
Kategória Diy