Përmbajtje:

Leximi dhe Shkrimi i të Dhënave në EEPROM të Jashtme Duke Përdorur Arduino: 5 Hapa
Leximi dhe Shkrimi i të Dhënave në EEPROM të Jashtme Duke Përdorur Arduino: 5 Hapa

Video: Leximi dhe Shkrimi i të Dhënave në EEPROM të Jashtme Duke Përdorur Arduino: 5 Hapa

Video: Leximi dhe Shkrimi i të Dhënave në EEPROM të Jashtme Duke Përdorur Arduino: 5 Hapa
Video: Lesson 06: Arduino Variables Data Types | Robojax Arduino Step By Step Course 2024, Nëntor
Anonim
Leximi dhe Shkrimi i të Dhënave në EEPROM të Jashtme duke përdorur Arduino
Leximi dhe Shkrimi i të Dhënave në EEPROM të Jashtme duke përdorur Arduino

EEPROM qëndron për Memory Electrically Erasable Programmable Read-Only.

EEPROM është shumë e rëndësishme dhe e dobishme sepse është një formë e paqëndrueshme e kujtesës. Kjo do të thotë që edhe kur bordi është i fikur, çipi EEPROM ende ruan programin që i është shkruar. Pra, kur e fikni bordin dhe pastaj e ndizni përsëri, programi që është shkruar në EEPROM mund të ekzekutohet. Pra, në thelb, EEPROM ruan dhe drejton një program pa marrë parasysh çfarë. Kjo do të thotë që ju mund të fikni një pajisje, ta mbani atë për 3 ditë dhe të ktheheni dhe ta ndizni dhe ajo ende mund të ekzekutojë programin që ishte programuar në të. Kështu funksionojnë shumica e pajisjeve elektronike të konsumit.

Ky projekt është i sponsorizuar nga LCSC. Unë kam përdorur komponentë elektronikë nga LCSC.com. LCSC ka një angazhim të fortë për të ofruar një përzgjedhje të gjerë të përbërësve elektronikë të vërtetë, me cilësi të lartë me çmimin më të mirë me një rrjet global të transportit në mbi 200 vende. Regjistrohuni sot dhe përfitoni 8 dollarë zbritje në porosinë tuaj të parë.

EEPROM është gjithashtu shumë efikas në atë që bajtët individualë në një EEPROM tradicional mund të lexohen, fshihen dhe rishkruhen në mënyrë të pavarur. Në shumicën e llojeve të tjera të kujtesës jo të paqëndrueshme, kjo nuk mund të bëhet. Pajisjet serike EEPROM si Microchip 24-seri EEPROM ju lejojnë të shtoni më shumë memorie në çdo pajisje që mund të flasë I²C.

Furnizimet

  1. EEPROM - 24LC512
  2. ATmega328P-PU
  3. Kristal 16 MHz
  4. Breadboard
  5. Rezistencë 4.7k Ohm x 2
  6. Kondensator 22 pF x 2

Hapi 1: Bazat e EEPROM

Bazat e EEPROM
Bazat e EEPROM

Çipi Microchip 24LC2512 mund të blihet në një paketë DIP me 8 pin. Kunjat në 24LC512 janë mjaft të drejtpërdrejta dhe përbëhen nga fuqia (8), GND (4), mbrojtja e shkrimit (7), SCL/SDA (6, 5) dhe tre kunjat e adresave (1, 2, 3).

Një histori e shkurtër e ROM

Kompjuterët e hershëm të tipit "Program i ruajtur" - të tillë si llogaritësit e tavolinës dhe interpretuesit e tastierës - filluan të përdorin ROM në formën e ROM Diodë Matrix. Kjo ishte një kujtesë e përbërë nga dioda gjysmëpërçuese diskrete të vendosura në një PCB të organizuar posaçërisht. Kjo i dha rrugën Mask ROM me ardhjen e qarqeve të integruara. Mask ROM ishte shumë si Diode Matrix ROM vetëm se u zbatua në një shkallë shumë më të vogël. Kjo do të thoshte, megjithatë, se ju nuk mund të lëvizni vetëm disa dioda përreth me një hekur bashkues dhe ta riprogramoni atë. Maska ROM duhej të programohej nga prodhuesi dhe më pas nuk ishte e ndryshueshme.

Fatkeqësisht, Mask ROM ishte e shtrenjtë dhe u desh shumë kohë për tu prodhuar sepse çdo program i ri kërkonte një pajisje krejt të re që do të prodhohej nga një shkritore. Sidoqoftë, në vitin 1956, ky problem u zgjidh me shpikjen e PROM (Programableable ROM) e cila lejoi zhvilluesit të programonin vetë çipat. Kjo do të thoshte se prodhuesit mund të prodhonin miliona të njëjtat pajisje të paprogramuara të cilat e bënë atë më të lirë dhe më praktike. PROM, megjithatë, mund të shkruhej vetëm një herë duke përdorur një pajisje programimi të tensionit të lartë. Pasi u programua një pajisje PROM, nuk kishte asnjë mënyrë për ta kthyer pajisjen në gjendjen e saj të paprogramuar.

Kjo ndryshoi në vitin 1971 me shpikjen e EPROM (Erasable Programmable ROM) e cila - përveç shtimit të një shkronje tjetër në akronim - solli me vete aftësinë për të fshirë pajisjen dhe për ta kthyer atë në një gjendje "bosh" duke përdorur një burim të fortë të dritës UV. Kjo është e drejtë, ju duhej të ndriçonit një dritë të ndritshme në IC për ta riprogramuar atë, sa mirë është kjo? Epo, rezulton se është shumë mirë nëse nuk jeni një zhvillues që punon në firmware, në këtë rast ju me të vërtetë dëshironi të jeni në gjendje të riprogramoni pajisjen duke përdorur sinjale elektrike. Kjo më në fund u bë realitet në 1983 me zhvillimin e EEPROM (Electromically Erasable Programmable ROM) dhe me këtë, ne arrijmë në akronimin e vështirë të ditëve të sotme.

Hapi 2: Karakteristikat e EEPROM

Ekzistojnë dy pengesa kryesore për EEPROM si një metodë e ruajtjes së të dhënave. Në shumicën e aplikacioneve, të mirat tejkalojnë disavantazhet, por duhet të jeni të vetëdijshëm për to para se të përfshini EEPROM në modelin tuaj të ardhshëm.

Para së gjithash, teknologjia që e bën EEPROM të funksionojë gjithashtu kufizon numrin e herëve që mund të rishkruhet. Kjo ka të bëjë me bllokimin e elektroneve në transistorët që përbëjnë ROM dhe ndërtimin derisa diferenca e ngarkesës midis "1" dhe "0" të jetë e panjohshme. Por mos u shqetësoni, shumica e EEPROM-ve kanë një numër maksimal të rishkrimit prej 1 milion ose më shumë. Për sa kohë që nuk i shkruani vazhdimisht EEPROM -it, nuk ka gjasa që ta arrini këtë maksimum. Së dyti, EEPROM nuk do të fshihet nëse hiqni energjinë prej tij, por nuk do t'i mbajë të dhënat tuaja pafundësisht. Elektronet mund të largohen nga transistorët dhe përmes izolatorit, duke fshirë në mënyrë efektive EEPROM me kalimin e kohës. Thënë kështu, kjo zakonisht ndodh gjatë viteve (megjithëse mund të përshpejtohet nga nxehtësia). Shumica e prodhuesve thonë se të dhënat tuaja janë të sigurta në EEPROM për 10 vjet ose më shumë në temperaturën e dhomës. Dhe ka një gjë tjetër që duhet të keni parasysh kur zgjidhni një pajisje EEPROM për projektin tuaj. Kapaciteti i EEPROM matet në bit dhe jo në byte. Një EEPROM 512K do të mbajë 512Kbit të dhëna, me fjalë të tjera, vetëm 64KB.

Hapi 3: Arduino Hardware Lidhja

Lidhja e harduerit Arduino
Lidhja e harduerit Arduino
Lidhja e harduerit Arduino
Lidhja e harduerit Arduino

Mirë, tani që e dimë se çfarë është EEPROM, le të lidhim një dhe të shohim se çfarë mund të bëjë! Në mënyrë që pajisja jonë të flasë, do të na duhet të lidhim rrymën, si dhe linjat serike I²C. Kjo pajisje, në veçanti, funksionon në 5VDC kështu që ne do ta lidhim atë me daljen 5V të Arduino UNO -s tonë. Gjithashtu, linjat I²C do të kenë nevojë për rezistorë tërheqës që komunikimi të ndodhë në mënyrë korrekte. Vlera e këtyre rezistencave varet nga kapaciteti i linjave dhe frekuenca që dëshironi t'i komunikoni, por një rregull i mirë për aplikimet jo kritike thjesht mbahet në intervalin kΩ. Në këtë shembull, ne do të përdorim rezistenca tërheqëse 4.7kΩ.

Ekzistojnë tre kunja në këtë pajisje për të zgjedhur adresën I²C, në këtë mënyrë ju mund të keni më shumë se një EEPROM në autobus dhe t'i adresoni secilën ndryshe. Ju thjesht mund t'i vendosni të gjitha, por ne do t'i lidhim ato në mënyrë që të mund të lëshojmë një pajisje me kapacitet më të lartë më vonë në tutorial.

Ne do të përdorim një dërrasë buke për të lidhur gjithçka së bashku. Diagrami më poshtë tregon lidhjen e duhur për shumicën e pajisjeve I²C EEPROM, duke përfshirë Microchip 24-seri EEPROM që ne shesim.

Hapi 4: Lexim dhe Shkrim

Shumicën e kohës kur jeni duke përdorur një EEPROM në lidhje me një mikrokontrollues nuk do të keni nevojë të shihni të gjitha përmbajtjet e kujtesës menjëherë. Thjesht do të lexoni dhe shkruani byte këtu dhe atje sipas nevojës. Në këtë shembull, megjithatë, ne do të shkruajmë një skedar të tërë në EEPROM dhe pastaj do t'i lexojmë të gjitha përsëri në mënyrë që ta shikojmë në kompjuterin tonë. Kjo do të na bëjë të ndihemi rehat me idenë e përdorimit të EEPROM dhe gjithashtu të na japë një ndjenjë se sa të dhëna mund të përshtaten vërtet në një pajisje të vogël.

Shkruaj diçka

Skica jonë e shembullit thjesht do të marrë çdo bajt që hyn mbi portën serike dhe e shkruan atë në EEPROM, duke mbajtur gjurmët gjatë rrugës se sa bajtë i kemi shkruar në kujtesë.

Shkrimi i një bajti kujtese në EEPROM ndodh në përgjithësi në tre hapa:

  1. Dërgoni Bajtin Më Domethënës të adresës së kujtesës në të cilën dëshironi t'i shkruani.
  2. Dërgoni Bajtin më të Rëndësishëm të adresës së kujtesës në të cilën dëshironi t'i shkruani.
  3. Dërgoni bajtin e të dhënave që dëshironi të ruani në këtë vendndodhje.

Ka ndoshta disa fjalë kyçe që shpjegojnë:

Adresat e kujtesës

Nëse i imagjinoni të gjithë bajtët në një EEPROM 512 Kbit duke qëndruar në një linjë nga 0 në 64000 - sepse ka 8 bit në një byte dhe për këtë arsye ju mund të përshtatni 64000 byte në një EEPROM 512 Kbit - atëherë një adresë memorie është vendi në linjë ku do të gjeni një bajt të veçantë. Ne duhet ta dërgojmë atë adresë në EEPROM në mënyrë që të dijë se ku ta vendosim bajtin që po dërgojmë.

Bitet më domethënëse dhe më pak të rëndësishme

Për shkak se ka 32000 vende të mundshme në një EEPROM 256 Kbit - dhe sepse 255 është numri më i madh që mund të kodoni në një bajt - ne duhet ta dërgojmë këtë adresë në dy bajt. Së pari, ne dërgojmë Bajtin më të Rëndësishëm (MSB) - 8 bitët e parë në këtë rast. Pastaj dërgojmë Bajtin më të Rëndësishëm (LSB) - 8 bitët e dytë. Pse? Sepse kjo është mënyra se si pajisja pret t'i marrë ato, kjo është e gjitha.

Shkrimi i faqeve

Shkrimi i një bajti në të njëjtën kohë është mirë, por shumica e pajisjeve EEPROM kanë diçka të quajtur "tampon i shkrimit të faqeve" i cili ju lejon të shkruani shumë bajtë në të njëjtën kohë në të njëjtën mënyrë si një bajt i vetëm. Ne do të përfitojmë nga kjo në skicën tonë të shembullit. EEPROM përdor një numërues të brendshëm që rrit automatikisht vendndodhjen e kujtesës me çdo bajt të dhënash që merr. Pasi të jetë dërguar një adresë memorie, ne mund ta ndjekim atë me deri në 64 bajt të dhëna. EEPROM supozon (me të drejtë) që një adresë prej 312 e ndjekur nga 10 bajt do të regjistrojë bajt 0 në adresën 312, bajt 1 në adresën 313, bajt 2 në adresën 314, etj.

Lexoni Diçka

Leximi nga EEPROM në thelb ndjek të njëjtin proces me tre hapa si shkrimi në EEPROM:

  1. Dërgoni Bajtin Më Domethënës të adresës së kujtesës në të cilën dëshironi t'i shkruani.
  2. Dërgoni Bajtin më të Rëndësishëm të adresës së kujtesës në të cilën dëshironi t'i shkruani.
  3. Kërkoni bajtin e të dhënave në atë vend.

Hapi 5: Skemat dhe Kodi

Skemat dhe Kodi
Skemat dhe Kodi

Kodi:

#përfshi

#define eeprom 0x50 // përcakton adresën bazë të EEPROM

void setup () {

Wire.begin (); // krijon një objekt Wire

Serial.filloj (9600);

adresë int pa shenjë = 0; // adresa e parë e EEPROM

Serial.println ("Ne shkruajmë kodin postar 22222, një kod postar"); për (adresa = 0; adresa <5; adresa ++) shkruajEEPROM (eeprom, adresa, '2'); // I shkruan 22222 EEPROM -it

për (adresa = 0; adresa <5; adresa ++) {Serial.print (lexoEEPROM (eeprom, adresa), HEX); }}

lak void () {

/*nuk ka asgjë në funksionin loop () sepse ne nuk duam që arduino të shkruajë në mënyrë të përsëritur të njëjtën gjë në EEPROM pa pushim. Ne duam vetëm një shkrim një herë, kështu që funksioni loop () shmanget me EEPROM.*/}

// përcakton funksionin writeEEPROM

shkrim i pavlefshëm EEPROM (adresa e pajisjes int, adresa e pa shenuar int, e dhëna byte) {Wire.beginTransmission (adresa e pajisjes); Wire.write ((int) (eeaddress >> 8)); // shkruan MSB Wire.write ((int) (eeaddress & 0xFF)); // shkruan LSB Wire.write (të dhëna); Wire.endTransmission (); }

// përcakton funksionin readEEPROM

byte readEEPROM (adresa e pajisjes int, veshja e panënshkruar int) {byte rdata = 0xFF; Wire.beginTransmetimi (adresa e pajisjes); Wire.write ((int) (veshja e veshit >> 8)); // shkruan MSB Wire.write ((int) (eeaddress & 0xFF)); // shkruan LSB Wire.endTransmission (); Tela. Kërkohet Nga (adresa e pajisjes, 1); nëse (Wire.available ()) rdata = Wire.read (); të dhënat e kthimit; }

Recommended: