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, Novembar
Anonim
Ugrađeni EEPROM vašeg Arduina
Ugrađeni EEPROM vašeg Arduina

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

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

Zašto biste koristili interni EEPROM? Za situacije u kojima podaci koji su jedinstveni za određenu situaciju trebaju stalniji dom. Na primjer, spremanje 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 „servisne skice“. 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 vrsta podataka se može pohraniti?

Koja vrsta podataka se može pohraniti?
Koja vrsta podataka se 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 binarno ime poznato i kao "baza-2", jer može koristiti samo dvije znamenke.

Kako binarni broj koji koristi 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:

Image
Image

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

Korak 3:

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

Ovo ograničava da decimalna vrijednost broja padne između nule i 255. Na vama je da odlučite kako se vaši podaci mogu predstaviti u tom rasponu 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 -u. Prema proizvođaču Atmel, EEPROM je dobar za 100 000 ciklusa čitanja/pisanja (pogledajte tehnički list).

Korak 4:

Sada znamo naše bitove i i bajtove, koliko se bajtova može pohraniti u naš Arduino mikrokontroler? 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, kao što su originalni Arduino Lilypad, stari Nano, Diecimila itd. - 512 bajtova.

Ako niste sigurni, pogledajte Arduino hardverski indeks ili pitajte dobavljača ploče. Ako vam je potrebno više EEPROM prostora za pohranu od onog koji je dostupan 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 sprovede u djelo. Kao što je ranije rečeno, postoji ograničena količina prostora za naše podatke. U sljedećim primjerima koristit ćemo tipičnu Arduino ploču s ATmega328 s 1024 bajta EEPROM memorije.

Korak 5:

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

#include "EEPROM.h"

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

EEPROM.write (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 pozicije EEPROM -a a. Sada da vidimo primjer.

Korak 6:

Image
Image

Ova skica će stvoriti slučajne brojeve između 0 i 255, pohraniti ih u EEPROM, zatim ih dohvatiti i prikazati na serijskom monitoru. Varijabla EEsize je gornja 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

#include

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

void setup ()

{Serial.begin (9600); randomSeed (analogRead (0)); } void loop () {Serial.println ("Pisanje slučajnih brojeva …"); 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 ("Položaj EEPROM -a:"); Serial.print (a); Serial.print ("sadrži"); Serial.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 sistemima. Iako nije najuzbudljiviji vodič, svakako je koristan.

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

Preporučuje se: