Sommario:

La EEPROM integrata di Arduino: 6 passaggi
La EEPROM integrata di Arduino: 6 passaggi

Video: La EEPROM integrata di Arduino: 6 passaggi

Video: La EEPROM integrata di Arduino: 6 passaggi
Video: Realizziamo insieme software e hardware di un programmatore di EEPROM con Arduino MEGA - Parte 1 2024, Novembre
Anonim
La EEPROM integrata del tuo Arduino
La EEPROM integrata del tuo Arduino

In questo articolo esamineremo la EEPROM interna nelle nostre schede Arduino. Che cos'è una EEPROM che alcuni di voi potrebbero dire? Una EEPROM è una memoria di sola lettura programmabile cancellabile elettricamente.

È una forma di memoria non volatile che può ricordare cose con l'alimentazione spenta o dopo aver ripristinato l'Arduino. La bellezza di questo tipo di memoria è che possiamo memorizzare i dati generati all'interno di uno schizzo su una base più permanente.

Perché dovresti usare la EEPROM interna? Per situazioni in cui i dati che sono unici per una situazione necessitano di una sede più permanente. Ad esempio, memorizzando il numero di serie univoco e la data di produzione di un progetto commerciale basato su Arduino: una funzione dello schizzo potrebbe visualizzare il numero di serie su un LCD o i dati potrebbero essere letti caricando uno "schizzo di servizio". Oppure potrebbe essere necessario contare determinati eventi e non consentire all'utente di ripristinarli, ad esempio un contachilometri o un contacicli di funzionamento.

Passaggio 1: che tipo di dati possono essere archiviati?

Che tipo di dati possono essere archiviati?
Che tipo di dati possono essere archiviati?

Tutto ciò che può essere rappresentato come byte di dati. Un byte di dati è composto da otto bit di dati. Un bit può essere attivato (valore 1) o disattivato (valore 0) e sono perfetti per rappresentare i numeri in forma binaria. In altre parole, un numero binario può utilizzare solo zero e uno per rappresentare un valore. Quindi il binario è anche noto come "base-2", poiché può utilizzare solo due cifre.

Come può un numero binario con solo l'uso di due cifre rappresentare un numero più grande? Usa molti uno e zero. Esaminiamo un numero binario, diciamo 10101010. Poiché si tratta di un numero in base 2, ogni cifra rappresenta 2 alla potenza di x, da x=0 in poi.

Passo 2:

Immagine
Immagine

Guarda come ogni cifra del numero binario può rappresentare un numero in base 10. Quindi il numero binario sopra rappresenta 85 in base-10: il valore 85 è la somma dei valori in base-10. Un altro esempio: 11111111 in binario è uguale a 255 in base 10.

Passaggio 3:

Ora ogni cifra in quel numero binario usa un "bit" di memoria e otto bit formano un byte. A causa delle limitazioni interne dei microcontrollori nelle nostre schede Arduino, possiamo memorizzare solo numeri a 8 bit (un byte) nella EEPROM.

Questo limita il valore decimale del numero a cadere tra zero e 255. Sta poi a te decidere come i tuoi dati possono essere rappresentati con quell'intervallo di numeri. Non lasciarti scoraggiare: i numeri disposti nel modo corretto possono rappresentare quasi tutto! C'è una limitazione a cui prestare attenzione: il numero di volte che possiamo leggere o scrivere nella EEPROM. Secondo il produttore Atmel, la EEPROM è valida per 100.000 cicli di lettura/scrittura (vedere la scheda tecnica).

Passaggio 4:

Ora conosciamo i nostri bit e byte, quanti byte possono essere archiviati nel microcontrollore del nostro Arduino? La risposta varia a seconda del modello di microcontrollore. Per esempio:

  • Schede con un Atmel ATmega328, come Arduino Uno, Uno SMD, Nano, Lilypad, ecc. – 1024 byte (1 kilobyte)
  • Schede con un Atmel ATmega1280 o 2560, come la serie Arduino Mega – 4096 byte (4 kilobyte)
  • Schede con un Atmel ATmega168, come l'originale Arduino Lilypad, il vecchio Nano, Diecimila ecc. – 512 byte.

Se non sei sicuro, dai un'occhiata all'indice hardware Arduino o chiedi al fornitore della tua scheda. Se hai bisogno di più memoria EEPROM di quella disponibile con il tuo microcontrollore, considera l'utilizzo di una EEPROM I2C esterna.

A questo punto capiamo ora che tipo di dati e quanti possono essere memorizzati nella EEPROM del nostro Arduino. Ora è il momento di metterlo in atto. Come discusso in precedenza, c'è una quantità finita di spazio per i nostri dati. Negli esempi seguenti, utilizzeremo una tipica scheda Arduino con l'ATmega328 con 1024 byte di memoria EEPROM.

Passaggio 5:

Per utilizzare la EEPROM, è necessaria una libreria, quindi usa la seguente libreria nei tuoi schizzi:

#include "EEPROM.h"

Il resto è molto semplice. Per memorizzare un dato, utilizziamo la seguente funzione:

EEPROM.write(a, b);

Il parametro a è la posizione nella EEPROM per memorizzare l'intero (0~255) dei dati b. In questo esempio, abbiamo 1024 byte di memoria, quindi il valore di a è compreso tra 0 e 1023. Per recuperare un dato è altrettanto semplice, usa:

z = EEPROM.leggi(a);

Dove z è un numero intero per memorizzare i dati dalla posizione EEPROM a. Ora per vedere un esempio.

Passaggio 6:

Immagine
Immagine

Questo schizzo creerà numeri casuali tra 0 e 255, li memorizzerà nella EEPROM, quindi li recupererà e li visualizzerà sul monitor seriale. La variabile EEsize è il limite superiore della dimensione della tua EEPROM, quindi (ad esempio) questo sarebbe 1024 per un Arduino Uno o 4096 per un Mega.

// Dimostrazione della EEPROM interna di Arduino

#includere

int zz; int EEsize = 1024; // dimensione in byte della EEPROM della tua scheda

configurazione nulla()

{ Serial.begin(9600); randomSeed(analogRead(0)); } void loop() { Serial.println("Scrittura di numeri casuali…"); 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("Posizione EEPROM: "); Serial.print(a); Serial.print(" contiene "); Serial.println(zz); ritardo(25); } }

Apparirà l'output dal monitor seriale, come mostrato nell'immagine.

Ecco qua, un altro modo utile per archiviare i dati con i nostri sistemi Arduino. Sebbene non sia il tutorial più entusiasmante, è sicuramente utile.

Questo post ti è stato presentato da pmdway.com: tutto per produttori e appassionati di elettronica, con consegna gratuita in tutto il mondo.

Consigliato: