Sadržaj:

Ugrađeni EEPROM vašeg Arduina: 6 koraka
Ugrađeni EEPROM vašeg Arduina: 6 koraka

Video: Ugrađeni EEPROM vašeg Arduina: 6 koraka

Video: Ugrađeni EEPROM vašeg Arduina: 6 koraka
Video: 🔧Arduino изнутри - разбираем схему и компоненты (ATmega328P). Уроки Arduino для начинающих 2024, Studeni
Anonim
Ugrađeni EEPROM vašeg Arduina
Ugrađeni EEPROM vašeg Arduina

U ovom članku ćemo ispitati unutarnji EEPROM na našim Arduino pločama. Što neki od vas možda govore o EEPROM -u? EEPROM je električno izbrisiva programabilna memorija samo za čitanje.

To je oblik nepromjenjive memorije koja može pamtiti stvari s isključenim napajanjem ili nakon resetiranja Arduina. Ljepota ove vrste memorije je u tome što podatke generirane unutar skice možemo pohraniti na trajnijoj osnovi.

Zašto biste koristili unutarnji EEPROM? Za situacije u kojima podaci koji su jedinstveni za određenu situaciju trebaju stalniji dom. Na primjer, pohranjivanje jedinstvenog serijskog broja i datuma proizvodnje komercijalnog projekta zasnovanog na Arduinu-funkcija skice mogla bi prikazati serijski broj na LCD-u ili bi se podaci mogli čitati postavljanjem "skice usluge". Ili ćete možda morati prebrojati određene događaje i ne dopustiti korisniku da ih poništi-poput brojača kilometara ili brojača radnih ciklusa.

Korak 1: Koja se vrsta podataka može pohraniti?

Koja se vrsta podataka može pohraniti?
Koja se vrsta podataka može pohraniti?

Sve što se može predstaviti u bajtovima podataka. Jedan bajt podataka sastoji se od osam bitova podataka. Bit može biti uključen (vrijednost 1) ili isključen (vrijednost 0) i savršen je za predstavljanje brojeva u binarnom obliku. Drugim riječima, binarni broj može koristiti samo nule i jedinice za predstavljanje vrijednosti. Stoga je binarni naziv također poznat kao "baza-2", jer može koristiti samo dvije znamenke.

Kako binarni broj sa samo dvije znamenke može predstavljati veći broj? Koristi mnogo jedinica i nula. Ispitajmo binarni broj, recimo 10101010. Kako je ovo broj baze 2, svaka znamenka predstavlja 2 do stepena x, od x = 0 nadalje.

Korak 2:

Slika
Slika

Pogledajte kako svaka znamenka binarnog broja može predstavljati broj baze-10. Dakle, gornji binarni broj predstavlja 85 u bazi-10-vrijednost 85 je zbroj vrijednosti baze-10. Još jedan primjer - 11111111 u binarnom obliku jednako je 255 u bazi 10.

3. korak:

Sada svaka znamenka u tom binarnom broju koristi jedan 'bit' memorije, a osam bita čini bajt. Zbog unutarnjih ograničenja mikrokontrolera na našim Arduino pločama, možemo pohraniti samo 8-bitne brojeve (jedan bajt) u EEPROM.

To ograničava da decimalna vrijednost broja padne između nule i 255. Na vama je da odlučite kako se vaši podaci mogu prikazati s tim rasponom brojeva. Ne dopustite da vas to odbije - brojevi raspoređeni na ispravan način mogu predstavljati gotovo sve! Postoji jedno ograničenje na koje treba obratiti pažnju - koliko puta možemo čitati ili pisati na EEPROM. Prema proizvođaču Atmel, EEPROM je dobar za 100 000 ciklusa čitanja/pisanja (vidi podatkovnu tablicu).

Korak 4:

Sada znamo naše bitove i i bajtove, koliko se bajtova može pohraniti u mikrokontroler našeg Arduina? Odgovor se razlikuje ovisno o modelu mikrokontrolera. Na primjer:

  • Ploče s Atmel ATmega328, poput Arduino Uno, Uno SMD, Nano, Lilypad itd. - 1024 bajta (1 kilobajt)
  • Ploče s Atmel ATmega1280 ili 2560, poput Arduino Mega serije - 4096 bajtova (4 kilobajta)
  • Ploče s Atmel ATmega168, poput originalnog Arduino Lilypada, starog Nanoa, Diecimile itd. - 512 bajtova.

Ako niste sigurni, pogledajte Arduino hardverski indeks ili pitajte dobavljača ploče. Ako vam je potrebno više prostora za pohranu EEPROM -a nego što je dostupno s vašim mikrokontrolerom, razmislite o upotrebi vanjskog I2C EEPROM -a.

U ovom trenutku sada razumijemo kakve se vrste podataka i koliko mogu pohraniti u naš Arduino EEPROM. Sada je vrijeme da se ovo provede u djelo. Kao što je ranije rečeno, za naše podatke postoji ograničena količina prostora. U sljedećim primjerima koristit ćemo tipičnu Arduino ploču s ATmega328 s 1024 bajta EEPROM memorije.

5. korak:

Za korištenje EEPROM -a potrebna je knjižnica, pa u skicama koristite sljedeću biblioteku:

#include "EEPROM.h"

Ostalo je vrlo jednostavno. Za spremanje dijela podataka koristimo sljedeću funkciju:

EEPROM.pisati (a, b);

Parametar a je položaj u EEPROM -u za spremanje cijelog broja (0 ~ 255) podataka b. U ovom primjeru imamo 1024 bajta memorije za pohranu, pa je vrijednost a između 0 i 1023. Da biste dohvatili dio podataka jednako je jednostavno, upotrijebite:

z = EEPROM.čitaj (a);

Gdje je z cijeli broj za pohranu podataka s položaja EEPROM -a a. Sada da vidimo primjer.

Korak 6:

Slika
Slika

Ova će skica stvoriti slučajne brojeve između 0 i 255, pohraniti ih u EEPROM, zatim ih dohvatiti i prikazati na serijskom monitoru. Varijabla EEsize gornja je granica vaše veličine EEPROM -a, pa bi (na primjer) to bilo 1024 za Arduino Uno ili 4096 za Mega.

// Arduino interna demonstracija EEPROM -a

#uključi

int zz; int EEsize = 1024; // veličina u bajtima EEPROM -a vaše ploče

void setup ()

{Serial.begin (9600); randomSeed (analogRead (0)); } void loop () {Serial.println ("Zapisivanje slučajnih brojeva …"); za (int i = 0; i <EEsize; i ++) {zz = slučajno (255); EEPROM.pisati (i, zz); } Serial.println (); for (int a = 0; a <EEsize; a ++) {zz = EEPROM.read (a); Serial.print ("Položaj EEPROM -a:"); Serijski.ispis (a); Serial.print ("sadrži"); Serijski.println (zz); kašnjenje (25); }}

Pojavit će se izlaz sa serijskog monitora, kao što je prikazano na slici.

Evo ga, još jedan koristan način za pohranu podataka s našim Arduino sustavima. Iako nije najuzbudljiviji vodič, svakako je koristan.

Ovaj post vam donosi pmdway.com - sve za proizvođače i ljubitelje elektronike, uz besplatnu dostavu diljem svijeta.

Preporučeni: