Inleiding tot EEPROM in Arduino

Probeer Ons Instrument Voor Het Oplossen Van Problemen





In dit bericht gaan we begrijpen wat EEPROM is, hoe gegevens worden opgeslagen op de ingebouwde EEPROM Arduino-kaarten Microcontroller en test ook praktisch hoe u gegevens op EEPROM kunt schrijven en lezen aan de hand van een paar voorbeelden.

Inleiding tot EEPROM in Arduino

Waarom EEPROM?

Voordat we vragen wat EEPROM is? Het is erg belangrijk om te weten waarom EEPROM in de eerste plaats wordt gebruikt voor opslag. Zodat we een duidelijk idee krijgen over EEPROM's.



Er zijn tegenwoordig veel opslagapparaten beschikbaar, variërend van magnetische opslagapparaten zoals computer harde schijven, old school cassetterecorders, optische opslagmedia zoals cd's, dvd's, Blu-ray-schijven en solid-state geheugen zoals SSD (Solid State Drive) voor computers en geheugenkaarten enz.

Dit zijn apparaten voor massaopslag die gegevens zoals muziek, video's, documenten enz. Kunnen opslaan van slechts enkele kilobytes tot meerdere terabytes. Dit is een niet-vluchtig geheugen, wat betekent dat de gegevens kunnen worden bewaard, zelfs nadat de stroom naar het opslagmedium is uitgeschakeld.



Het apparaat dat rustgevende muziek of oogverblindende video's levert, zoals een computer of smartphone, slaat een aantal kritieke gegevens op, zoals configuratiegegevens, opstartgegevens, wachtwoorden, biometrische gegevens, inloggegevens enz.

Deze genoemde gegevens kunnen om veiligheidsredenen niet worden opgeslagen op massaopslagapparaten en ook deze gegevens kunnen onbedoeld door gebruikers worden gewijzigd, wat kan leiden tot een storing van het apparaat.

Deze gegevens nemen slechts enkele bytes tot enkele megabytes in beslag, waardoor het verbinden van een conventioneel opslagapparaat zoals een magnetisch of optisch medium met processorchips economisch en fysiek niet haalbaar is.

Deze kritische data worden dus opgeslagen in de verwerkingschips zelf.

De Arduino verschilt niet van computer of smartphones. Er zijn verschillende omstandigheden waarin we kritieke gegevens moeten opslaan die niet mogen worden gewist, zelfs niet nadat de stroom is uitgeschakeld, bijvoorbeeld sensorgegevens.

Je zou nu wel een idee hebben waarom we EEPROM nodig hebben op microprocessors en microcontrollerschips.

Wat is EEPROM?

EEPROM staat voor Electrically Erasable Programmable Read Only Memory. Het is ook een niet-vluchtig geheugen dat kan worden gelezen en beschreven byte wijs.

Het lezen en schrijven van byte-niveau maakt het anders dan andere halfgeleidergeheugens. Bijvoorbeeld flash-geheugen: gegevens bloksgewijs lezen, schrijven en wissen.

Een blok kan enkele honderden tot duizenden bits bevatten, wat haalbaar is voor massaopslag, maar niet voor 'Read Only Memory' -bewerkingen in microprocessors en microcontrollers, die byte voor bytegegevens moeten benaderen.

Op het Arduino Uno-bord (ATmega328P) heeft het 1KB of 1024 bytes EEPROM aan boord. Elke byte kan afzonderlijk worden benaderd, elke byte heeft een adres variërend van 0 tot 1023 (dat is in totaal 1024).

Adres (0-1023) is een geheugenlocatie waar onze gegevens worden opgeslagen.

Op elk adres kunt u 8-bits gegevens opslaan, numerieke cijfers van 0 tot 255. Onze gegevens worden in binaire vorm opgeslagen, dus als we nummer 255 in EEPROM schrijven, wordt het cijfer opgeslagen als 11111111 in een adres en als we nul opslaan, het wordt opgeslagen als 00000000.

U kunt ook tekst, speciale tekens, alfanumerieke tekens enz. Opslaan door het juiste programma te schrijven.

De constructiedetails en de werking worden hier niet besproken, waardoor dit artikel lang kan duren en we u misschien slaperig kunnen maken. Ga richting YouTube of Google, daar staan ​​interessante artikelen / video's over de constructie en werking van EEPORM.

Verwar EEPROM niet met EPROM:

Kort gezegd is EPROM een elektrisch programmeerbaar alleen-lezen geheugen, wat betekent dat het elektrisch kan worden geprogrammeerd (geheugen opslaan), maar niet elektrisch kan worden gewist.

Het maakt gebruik van de heldere glans van ultraviolet licht boven de opslagchip waardoor de opgeslagen gegevens worden gewist. EEPROM kwam als vervanging voor EPROM en wordt nu nauwelijks gebruikt in elektronische apparaten.

Verwar Flash-geheugen niet met EEPROM:

Een flash-geheugen is een halfgeleider en niet-vluchtig geheugen dat ook elektrisch uitwisbaar en elektrisch programmeerbaar is, in feite is flash-geheugen afgeleid van EEPROM. Maar de bloksgewijze geheugentoegang of met andere woorden, de manier waarop het geheugen wordt benaderd en de constructie ervan verschilt van EEPROM.

Arduino Uno (ATmega328P Microcontroller) biedt ook 32 KB flash-geheugen voor programma-opslag.

Levensduur van EEPROM:

Net als elk ander elektronisch opslagmedium heeft EEPROM ook eindige lees-, schrijf- en wiscycli. Maar het probleem is dat het een van de kortste levensduur heeft in vergelijking met elk ander soort halfgeleidergeheugen.

Op de EEPROM van Arduino claimde Atmel ongeveer 100.000 (één lakh) schrijfcyclus per cel. Als uw kamertemperatuur lager is, hoe langer de levensduur van EEPROM.

Houd er rekening mee dat het lezen van gegevens van EEPROM de levensduur niet significant beïnvloedt.

Er zijn externe EEPROM IC's die met gemak Arduino kunnen worden aangesloten met een geheugencapaciteit variërend van 8 KB, 128 KB, 256 KB enz. Met een levensduur van ongeveer 1 miljoen schrijfcycli per cel.

Dat is de conclusie van de EEPROM, nu zou u voldoende theoretische kennis over EEPROM's hebben opgedaan.

In de volgende sectie zullen we leren hoe we de EEPROM praktisch op arduino kunnen testen.

Hoe EEPROM in Arduino te testen

Om dit te implementeren, heb je alleen een USB-kabel en een Arduino Uno-bord nodig, je bent klaar om te gaan.

Uit de bovenstaande uitleg hebben we begrepen dat EEPROM's een adres hebben waar we onze gegevens opslaan. We kunnen 0 tot 1023 locaties opslaan in Arduino Uno. Elke locatie is geschikt voor 8 bits of één byte.

In dit voorbeeld gaan we gegevens opslaan in een adres. Om de complexiteit van het programma te verminderen en het programma zo kort mogelijk te houden, gaan we een geheel getal van één cijfer (0 tot 9) opslaan op een adres van 0 tot 9.

Programmacode # 1

Upload nu de code naar Arduino:

UITGANG:

Open de seriële monitor zodra de code is geüpload.

Het zal je vragen een adres in te voeren variërend van 0 tot 9. Van de bovenstaande uitvoer heb ik adres 3 ingevoerd. Dus ik zal een geheel getal opslaan op de locatie (adres) 3.

Nu wordt u gevraagd om een ​​geheel getal van één cijfer in te voeren, variërend van 0 tot 9. Uit de bovenstaande uitvoer heb ik waarde 5 ingevoerd.

Dus nu wordt de waarde 5 opgeslagen in de adreslocatie 3.

Nadat u de waarde hebt ingevoerd, wordt de waarde op EEPROM geschreven.

Er wordt een succesbericht weergegeven, wat betekent dat de waarde is opgeslagen.

Na een paar seconden leest het de waarde die is opgeslagen op het becommentarieerde adres en toont het de waarde op de seriële monitor.

Tot slot hebben we de waarden van EEPROM van Arduino's microcontroller geschreven en gelezen.

Nu gaan we de EEPROM gebruiken om het wachtwoord op te slaan.

We zullen een wachtwoord van 6 cijfers invoeren (niet minder of niet meer), het zal worden opgeslagen op 6 verschillende adressen (elk adres voor elk cijfer) en een extra adres voor het opslaan van '1' of '0'.

Nadat u het wachtwoord hebt ingevoerd, slaat het extra adres de waarde '1' op, wat aangeeft dat het wachtwoord is ingesteld en het programma zal u vragen het wachtwoord in te voeren om de LED aan te zetten.

Als de extra opgeslagen waarde van het adres '0' is of als er een andere waarde aanwezig is, wordt u gevraagd om een ​​nieuw wachtwoord van 6 cijfers te maken.

Door de bovenstaande methode kan het programma bepalen of u al een wachtwoord heeft ingesteld of dat u een nieuw wachtwoord moet maken.

Als het ingevoerde wachtwoord correct is, licht de ingebouwde LED op pin # 13 op, als het ingevoerde wachtwoord onjuist is, gaat de LED niet branden en zal de seriële monitor aangeven dat uw wachtwoord onjuist is.

Programmacode # 2

Upload nu de code:

UITGANG:

Open de seriële monitor en u wordt gevraagd om een ​​wachtwoord van 6 cijfers te maken.

Voer een wachtwoord van 6 cijfers in, noteer het en druk op enter. Nu is het wachtwoord opgeslagen.

U kunt op de resetknop drukken of de USB-kabel loskoppelen van de pc, waardoor de voeding naar het Arduino-bord wordt onderbroken.

Sluit nu de USB-kabel opnieuw aan, open de seriële monitor, waarna u wordt gevraagd het opgeslagen wachtwoord van 6 cijfers in te voeren.

Voer het juiste wachtwoord in, de LED gaat branden.

Als u het wachtwoord wilt wijzigen, wijzigt u het cijfer van de code:

int passExistAdd = 200

De bovenstaande regel is het aanvullende adres dat we eerder hebben besproken. Verander ergens van 6 tot 1023. 0 tot 5 adressen zijn gereserveerd voor het opslaan van een wachtwoord van 6 cijfers.

Als u dit extra adres wijzigt, houdt het programma voor de gek dat het wachtwoord nog niet is gemaakt en wordt u gevraagd een nieuw wachtwoord van 6 cijfers te maken.

Als u vragen heeft over deze EEPROM in Arduino-zelfstudie, geef dit dan aan in de opmerkingen, u krijgt mogelijk snel antwoord.




Een paar: Overstroomonderbrekingsvoeding met Arduino Vervolg: Mobiele telefoongestuurde robotauto met behulp van DTMF-module