Cuprins:

EEPROM-ul încorporat al Arduino: 6 pași
EEPROM-ul încorporat al Arduino: 6 pași

Video: EEPROM-ul încorporat al Arduino: 6 pași

Video: EEPROM-ul încorporat al Arduino: 6 pași
Video: PM - Cursul 6 Arduino 2024, Noiembrie
Anonim
EEPROM incorporată a Arduino
EEPROM incorporată a Arduino

În acest articol vom examina EEPROM internă pe plăcile noastre Arduino. Ce este o EEPROM pe care unii dintre voi ar putea să o spună? O EEPROM este o memorie numai în citire programabilă, ștearsă electric.

Este o formă de memorie nevolatilă care poate aminti lucruri cu alimentarea oprită sau după resetarea Arduino. Frumusețea acestui tip de memorie este că putem stoca date generate într-o schiță pe o bază mai permanentă.

De ce ați folosi EEPROM internă? Pentru situațiile în care datele unice pentru o situație au nevoie de o locuință mai permanentă. De exemplu, stocarea numărului de serie unic și a datei de fabricație a unui proiect comercial bazat pe Arduino - o funcție a schiței ar putea afișa numărul de serie pe un LCD sau datele ar putea fi citite prin încărcarea unei „schițe de serviciu”. Sau poate fi necesar să numărați anumite evenimente și să nu permiteți utilizatorului să le reseteze - cum ar fi un contor de parcurs sau un contor de cicluri de funcționare.

Pasul 1: Ce fel de date pot fi stocate?

Ce fel de date pot fi stocate?
Ce fel de date pot fi stocate?

Orice poate fi reprezentat ca octeți de date. Un octet de date este format din opt biți de date. Un bit poate fi activat (valoarea 1) sau dezactivat (valoarea 0) și este perfect pentru reprezentarea numerelor în formă binară. Cu alte cuvinte, un număr binar poate folosi doar zerouri și unele pentru a reprezenta o valoare. Astfel binarul este, de asemenea, cunoscut sub numele de „bază-2 ″, deoarece poate folosi doar două cifre.

Cum poate un număr binar cu doar două cifre să reprezinte un număr mai mare? Folosește o mulțime de unii și zerouri. Să examinăm un număr binar, să zicem 10101010. Deoarece acesta este un număr de bază-2, fiecare cifră reprezintă 2 la puterea lui x, de la x = 0 încoace.

Pasul 2:

Imagine
Imagine

Vedeți cum fiecare cifră a numărului binar poate reprezenta un număr de bază 10. Deci numărul binar de mai sus reprezintă 85 în baza-10 - valoarea 85 este suma valorilor de bază-10. Un alt exemplu - 11111111 în binar este egal cu 255 în baza 10.

Pasul 3:

Acum fiecare cifră din acel număr binar folosește un „bit” de memorie, iar opt biți fac un octet. Datorită limitărilor interne ale microcontrolerelor de pe plăcile noastre Arduino, putem stoca numai numere pe 8 biți (un octet) în EEPROM.

Aceasta limitează valoarea zecimală a numărului să se încadreze între zero și 255. Depinde apoi de dvs. să decideți cum pot fi reprezentate datele dvs. cu acea gamă de numere. Nu lăsați acest lucru să vă dezamăgească - numerele aranjate în mod corect pot reprezenta aproape orice! Există o singură limitare de care trebuie să ținem cont - de câte ori putem citi sau scrie în EEPROM. Potrivit producătorului Atmel, EEPROM este bun pentru 100 000 de cicluri de citire / scriere (vezi fișa tehnică).

Pasul 4:

Acum ne cunoaștem biții și octeții, câte octeți pot fi stocate în microcontrolerul Arduino? Răspunsul variază în funcție de modelul microcontrolerului. De exemplu:

  • Plăci cu un Atmel ATmega328, cum ar fi Arduino Uno, Uno SMD, Nano, Lilypad etc. - 1024 octeți (1 kilobyte)
  • Placi cu un Atmel ATmega1280 sau 2560, cum ar fi seria Arduino Mega - 4096 bytes (4 kilobytes)
  • Plăci cu un Atmel ATmega168, cum ar fi Arduino Lilypad original, Nano vechi, Diecimila etc - 512 octeți.

Dacă nu sunteți sigur, aruncați o privire la indexul hardware Arduino sau întrebați furnizorul de bord. Dacă aveți nevoie de mai mult spațiu de stocare EEPROM decât ceea ce este disponibil cu microcontrolerul dvs., luați în considerare utilizarea unei EEPROM I2C externe.

În acest moment, înțelegem ce fel de date și cât de mult pot fi stocate în EEPROM-ul nostru Arduino. Acum este timpul să punem acest lucru în acțiune. După cum sa discutat mai devreme, există o cantitate finită de spațiu pentru datele noastre. În exemplele următoare, vom folosi o placă tipică Arduino cu ATmega328 cu 1024 octeți de stocare EEPROM.

Pasul 5:

Pentru a utiliza EEPROM, este necesară o bibliotecă, deci utilizați următoarea bibliotecă în schițe:

#include „EEPROM.h”

Restul este foarte simplu. Pentru a stoca o bucată de date, folosim următoarea funcție:

EEPROM.write (a, b);

Parametrul a este poziția din EEPROM pentru a stoca numărul întreg (0 ~ 255) al datelor b. În acest exemplu, avem 1024 octeți de memorie, deci valoarea lui este între 0 și 1023. Pentru a prelua o bucată de date este la fel de simplu, utilizați:

z = EEPROM.read (a);

Unde z este un număr întreg pentru a stoca datele din poziția EEPROM a. Acum, pentru a vedea un exemplu.

Pasul 6:

Imagine
Imagine

Această schiță va crea numere aleatorii între 0 și 255, le va stoca în EEPROM, apoi le va prelua și le va afișa pe monitorul serial. Variabila EEsize este limita superioară a dimensiunii EEPROM, deci (de exemplu) aceasta ar fi 1024 pentru un Arduino Uno sau 4096 pentru un Mega.

// Demonstrație EEPROM internă Arduino

#include

int zz; int EEsize = 1024; // dimensiunea în octeți a EEPROM a plăcii dvs.

configurare nulă ()

{Serial.begin (9600); randomSeed (analogRead (0)); } void loop () {Serial.println ("Scrierea numerelor aleatorii …"); 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 ("poziția EEPROM:"); Serial.print (a); Serial.print („conține”); Serial.println (zz); întârziere (25); }}

Ieșirea de pe monitorul serial va apărea, așa cum se arată în imagine.

Așa că aveți, un alt mod util de a stoca date cu sistemele noastre Arduino. Deși nu este cel mai interesant tutorial, este cu siguranță un util.

Această postare ți-a fost adusă de pmdway.com - totul pentru producătorii și pasionații de electronice, cu livrare gratuită în toată lumea.

Recomandat: