Indholdsfortegnelse:

Din Arduinos indbyggede EEPROM: 6 trin
Din Arduinos indbyggede EEPROM: 6 trin

Video: Din Arduinos indbyggede EEPROM: 6 trin

Video: Din Arduinos indbyggede EEPROM: 6 trin
Video: Контроллер автоматического пуска-останова с часами реального времени DS3231 2024, November
Anonim
Din Arduinos indbyggede EEPROM
Din Arduinos indbyggede EEPROM

I denne artikel vil vi undersøge den interne EEPROM i vores Arduino -tavler. Hvad er en EEPROM, som nogle af jer måske siger? En EEPROM er en elektrisk sletbar programmerbar skrivebeskyttet hukommelse.

Det er en form for ikke-flygtig hukommelse, der kan huske ting med strømmen slukket eller efter nulstilling af Arduino. Skønheden ved denne form for hukommelse er, at vi kan gemme data genereret inden for en skitse på et mere permanent grundlag.

Hvorfor ville du bruge den interne EEPROM? I situationer, hvor data, der er unikke for en situation, har brug for et mere permanent hjem. For eksempel lagring af det unikke serienummer og fremstillingsdato for et kommercielt Arduino-baseret projekt-en funktion af skitsen kan vise serienummeret på en LCD, eller dataene kan læses ved at uploade en 'serviceskitse'. Eller du skal muligvis tælle bestemte hændelser og ikke tillade brugeren at nulstille dem-f.eks. Et kilometertæller eller en cyklustæller.

Trin 1: Hvilken slags data kan gemmes?

Hvilken slags data kan gemmes?
Hvilken slags data kan gemmes?

Alt, hvad der kan repræsenteres som bytes af data. En byte data består af otte bits data. En bit kan enten være tændt (værdi 1) eller fra (værdi 0) og er perfekte til at repræsentere tal i binær form. Med andre ord kan et binært tal kun bruge nuller og et til at repræsentere en værdi. Således er binær også kendt som base-2 ″, da det kun kan bruge to cifre.

Hvordan kan et binært tal med kun brug af to cifre repræsentere et større tal? Det bruger mange af dem og nuller. Lad os undersøge et binært tal, f.eks. 10101010. Da dette er et basis-2-tal, repræsenterer hvert ciffer 2 til x ved hjælp af x, fra x = 0 og fremefter.

Trin 2:

Billede
Billede

Se, hvordan hvert ciffer i det binære tal kan repræsentere et base-10-tal. Så det binære tal ovenfor repræsenterer 85 i base-10-værdien 85 er summen af basis-10-værdierne. Et andet eksempel - 11111111 i binær er lig med 255 i base 10.

Trin 3:

Nu bruger hvert ciffer i det binære tal en 'bit' hukommelse, og otte bits laver en byte. På grund af interne begrænsninger af mikrokontrollerne i vores Arduino-kort kan vi kun gemme 8-bit tal (en byte) i EEPROM.

Dette begrænser decimalværdien af tallet til at falde mellem nul og 255. Det er derefter op til dig at beslutte, hvordan dine data kan repræsenteres med dette talinterval. Lad det ikke afskrække dig - tal arrangeret på den rigtige måde kan repræsentere næsten alt! Der er en begrænsning at tage hensyn til - antallet af gange, vi kan læse eller skrive til EEPROM. Ifølge producenten Atmel er EEPROM god til 100.000 læse/skrive cyklusser (se databladet).

Trin 4:

Nu kender vi vores bits og og bytes, hvor mange bytes kan gemmes i vores Arduinos mikrokontroller? Svaret varierer afhængigt af modellen af mikrokontroller. For eksempel:

  • Tavler med en Atmel ATmega328, såsom Arduino Uno, Uno SMD, Nano, Lilypad osv. - 1024 bytes (1 kilobyte)
  • Tavler med en Atmel ATmega1280 eller 2560, f.eks. Arduino Mega -serien - 4096 bytes (4 kilobytes)
  • Tavler med en Atmel ATmega168, såsom den originale Arduino Lilypad, gamle Nano, Diecimila osv. - 512 bytes.

Hvis du er i tvivl, kan du kigge på Arduino hardware -indekset eller spørge din bordleverandør. Hvis du har brug for mere EEPROM -lagerplads, end hvad der er tilgængeligt med din mikrokontroller, kan du overveje at bruge en ekstern I2C EEPROM.

På dette tidspunkt forstår vi nu, hvilken slags data og hvor meget der kan gemmes i vores Arduinos EEPROM. Nu er det tid til at sætte dette i værk. Som diskuteret tidligere er der en begrænset mængde plads til vores data. I de følgende eksempler vil vi bruge et typisk Arduino -kort med ATmega328 med 1024 bytes EEPROM -lager.

Trin 5:

For at bruge EEPROM kræves et bibliotek, så brug følgende bibliotek i dine skitser:

#include "EEPROM.h"

Resten er meget enkel. For at gemme et stykke data bruger vi følgende funktion:

EEPROM.write (a, b);

Parameteren a er positionen i EEPROM til lagring af heltalet (0 ~ 255) for data b. I dette eksempel har vi 1024 bytes hukommelseslagring, så værdien af a er mellem 0 og 1023. For at hente et stykke data er lige så enkelt, brug:

z = EEPROM.read (a);

Hvor z er et heltal for at gemme dataene fra EEPROM -positionen a. Nu for at se et eksempel.

Trin 6:

Billede
Billede

Denne skitse vil oprette tilfældige tal mellem 0 og 255, gemme dem i EEPROM og derefter hente og vise dem på den serielle skærm. Variablen EEsize er den øvre grænse for din EEPROM -størrelse, så (f.eks.) Ville dette være 1024 for en Arduino Uno eller 4096 for en Mega.

// Arduino intern EEPROM -demonstration

#omfatte

int zz; int EEsize = 1024; // størrelse i bytes af dit tavles EEPROM

ugyldig opsætning ()

{Serial.begin (9600); randomSeed (analogRead (0)); } void loop () {Serial.println ("Skrivning af tilfældige tal …"); for (int i = 0; i <EEsize; i ++) {zz = random (255); EEPROM.write (i, zz); } Serial.println (); for (int a = 0; a <EEsize; a ++) {zz = EEPROM.read (a); Serial.print ("EEPROM -position:"); Serial.print (a); Serial.print ("indeholder"); Serial.println (zz); forsinkelse (25); }}

Outputtet fra den serielle skærm vises, som vist på billedet.

Så her har du det, en anden nyttig måde at gemme data med vores Arduino -systemer. Selvom det ikke er den mest spændende vejledning, er det bestemt en nyttig.

Dette indlæg blev bragt til dig af pmdway.com - alt for producenter og elektronikentusiaster, med gratis levering over hele verden.

Anbefalede: