Sisällysluettelo:

Arduinosi sisäänrakennettu EEPROM: 6 vaihetta
Arduinosi sisäänrakennettu EEPROM: 6 vaihetta

Video: Arduinosi sisäänrakennettu EEPROM: 6 vaihetta

Video: Arduinosi sisäänrakennettu EEPROM: 6 vaihetta
Video: Kuinka tehdä LDmicro Arduino PLC I2C -nestekidenäytöllä 2024, Marraskuu
Anonim
Arduinon sisäänrakennettu EEPROM
Arduinon sisäänrakennettu EEPROM

Tässä artikkelissa aiomme tarkastella Arduino -korttiemme sisäistä EEPROMia. Mitä EEPROM jotkut teistä saattavat sanoa? EEPROM on sähköisesti pyyhittävä ohjelmoitava, vain luku -muisti.

Se on haihtumattoman muistin muoto, joka muistaa asiat virran ollessa sammutettuna tai Arduinon nollaamisen jälkeen. Tällaisen muistin kauneus on se, että voimme tallentaa luonnoksessa luotuja tietoja pysyvämmin.

Miksi käytät sisäistä EEPROMia? Tilanteissa, joissa tilanteeseen liittyvät tiedot tarvitsevat pysyvämmän kodin. Esimerkiksi kaupallisen Arduino-pohjaisen projektin ainutlaatuisen sarjanumeron ja valmistuspäivän tallentaminen-luonnoksen toiminto voi näyttää sarjanumeron nestekidenäytöllä tai tiedot voidaan lukea lataamalla "palveluluonnos". Tai sinun on ehkä laskettava tietyt tapahtumat, älä anna käyttäjän nollata niitä, kuten matkamittari tai toimintajaksolaskuri.

Vaihe 1: Millaisia tietoja voidaan tallentaa?

Millaisia tietoja voidaan tallentaa?
Millaisia tietoja voidaan tallentaa?

Kaikki mitä voidaan esittää datatavuina. Yksi tavu dataa koostuu kahdeksasta bitistä. Bitti voi olla joko päällä (arvo 1) tai pois päältä (arvo 0), ja se on täydellinen numeroiden esittämiseen binäärimuodossa. Toisin sanoen binääriluku voi käyttää vain nollia ja numeroita arvon esittämiseen. Siten binaari tunnetaan myös nimellä "base-2", koska se voi käyttää vain kahta numeroa.

Kuinka binaariluku, jossa käytetään vain kahta numeroa, voi edustaa suurempaa lukua? Se käyttää paljon yhtä ja nollia. Tarkastellaan binäärilukua, esimerkiksi 10101010. Koska tämä on perus-2-luku, jokainen numero edustaa 2: tä x: n potenssiin x = 0: sta eteenpäin.

Vaihe 2:

Kuva
Kuva

Katso, kuinka binääriluvun jokainen numero voi edustaa 10-peruslukua. Joten yllä oleva binääriluku edustaa 85: tä perus-10: ssä-arvo 85 on perus-10-arvojen summa. Toinen esimerkki - binäärinen 11111111 on 255 tukiasemassa 10.

Vaihe 3:

Nyt jokainen binääriluvun numero käyttää yhtä "bittiä" muistia ja kahdeksan bittiä muodostaa tavun. Arduino-korttiemme mikro-ohjaimien sisäisten rajoitusten vuoksi voimme tallentaa vain 8-bittisiä numeroita (yksi tavu) EEPROMiin.

Tämä rajoittaa luvun desimaaliarvon laskemisen nollan ja 255 välillä. Sitten voit itse päättää, miten tietosi voidaan esittää kyseisellä numeroalueella. Älä anna sen häiritä sinua - oikein järjestetyt numerot voivat edustaa melkein mitä tahansa! On otettava huomioon yksi rajoitus - kuinka monta kertaa voimme lukea tai kirjoittaa EEPROMille. Valmistajan Atmelin mukaan EEPROM on hyvä 100 000 luku/kirjoitusjaksoa varten (katso tietolomake).

Vaihe 4:

Nyt tiedämme bitit ja tavut, kuinka monta tavua voidaan tallentaa Arduinon mikrokontrolleriimme? Vastaus vaihtelee mikro -ohjaimen mallin mukaan. Esimerkiksi:

  • Levyt, joissa on Atmel ATmega328, kuten Arduino Uno, Uno SMD, Nano, Lilypad jne. - 1024 tavua (1 kilotavu)
  • Levyt, joissa on Atmel ATmega1280 tai 2560, kuten Arduino Mega -sarja - 4096 tavua (4 kilotavua)
  • Levyt, joissa on Atmel ATmega168, kuten alkuperäinen Arduino Lilypad, vanha Nano, Diecimila jne. - 512 tavua.

Jos olet epävarma, katso Arduinon laitteistohakemisto tai kysy neuvoa korttitoimittajalta. Jos tarvitset enemmän EEPROM -tallennustilaa kuin mitä mikrokontrolleriisi on saatavana, harkitse ulkoisen I2C EEPROM -laitteen käyttöä.

Tässä vaiheessa ymmärrämme nyt, millaisia tietoja ja kuinka paljon voidaan tallentaa Arduinon EEPROMiin. Nyt on aika toteuttaa tämä. Kuten aiemmin keskustelimme, tiedoillemme on rajallinen määrä tilaa. Seuraavissa esimerkeissä käytämme tyypillistä Arduino -korttia ATmega328: n kanssa, jossa on 1024 tavua EEPROM -tallennustilaa.

Vaihe 5:

EEPROMin käyttäminen edellyttää kirjastoa, joten käytä luonnoksissa seuraavaa kirjastoa:

#include "EEPROM.h"

Loput ovat hyvin yksinkertaisia. Tietojen tallentamiseen käytämme seuraavaa toimintoa:

EEPROM.write (a, b);

Parametri a on sijainti EEPROMissa datan b kokonaisluvun (0 ~ 255) tallentamiseksi. Tässä esimerkissä meillä on 1024 tavua muistia, joten a: n arvo on välillä 0 ja 1023. Jos haluat hakea datan, se on yhtä yksinkertainen, käytä:

z = EEPROM.luku (a);

Jossa z on kokonaisluku tietojen tallentamiseksi EEPROM -paikasta a. Katso nyt esimerkki.

Vaihe 6:

Kuva
Kuva

Tämä luonnos luo satunnaislukuja välillä 0 ja 255, tallentaa ne EEPROM -muistiin ja hakee ja näyttää ne sarjamonitorissa. Muuttuva EEsize on EEPROM -koosi yläraja, joten (esimerkiksi) tämä olisi 1024 Arduino Uno -laitteella tai 4096 Mega -laitteella.

// Arduinon sisäinen EEPROM -esittely

#sisältää

int zz; int EEsize = 1024; // koko korttisi EEPROM -muodossa tavuina

mitätön asennus ()

{Serial.begin (9600); randomSeed (analoginenLue (0)); } void loop () {Serial.println ("Satunnaislukujen kirjoittaminen …"); for (int i = 0; i <EEsize; i ++) {zz = satunnainen (255); EEPROM.write (i, zz); } Sarja.println (); for (int a = 0; a <EEsize; a ++) {zz = EEPROM.read (a); Serial.print ("EEPROM -asema:"); Sarjanjälki (a); Serial.print ("sisältää"); Sarja.println (zz); viive (25); }}

Sarjamonitorin lähtö tulee näkyviin, kuten kuvassa näkyy.

Joten sinulla on se, toinen hyödyllinen tapa tallentaa tietoja Arduino -järjestelmiemme kanssa. Vaikka se ei ole jännittävin opetusohjelma, se on varmasti hyödyllinen.

Tämän viestin toi sinulle pmdway.com - kaikki valmistajille ja elektroniikan harrastajille, ilmainen toimitus maailmanlaajuisesti.

Suositeltava: