Сіздің Arduino кіріктірілген EEPROM: 6 қадам
Сіздің Arduino кіріктірілген EEPROM: 6 қадам
Anonim
Сіздің Arduino кіріктірілген EEPROM
Сіздің Arduino кіріктірілген EEPROM

Бұл мақалада біз Arduino тақталарындағы ішкі EEPROM -ды қарастырамыз. Сіздердің кейбіреулеріңіз EEPROM деген не? EEPROM-бұл электрмен өшіруге болатын бағдарламаланатын оқуға арналған жады.

Бұл энергияны өшіргенде немесе Arduino қалпына келтірілгеннен кейін есте сақтай алатын тұрақты емес жадтың бір түрі. Мұндай жадтың ерекшелігі - біз эскизде жасалған деректерді тұрақты түрде сақтай аламыз.

Неліктен ішкі EEPROM қолданасыз? Жағдайға тән деректерге тұрақты үй қажет болған жағдайларда. Мысалы, Arduino-ға негізделген коммерциялық жобаның бірегей сериялық нөмірі мен өндіріс күнін сақтау-эскиздің функциясы сериялық нөмірді СКД-де көрсете алады немесе деректерді «қызмет нобайын» жүктеу арқылы оқуға болады. Немесе белгілі бір оқиғаларды санап, пайдаланушыға оларды қалпына келтіруге рұқсат бермеу қажет болуы мүмкін-мысалы, одометр немесе жұмыс циклінің есептегіші.

1 -қадам: Деректердің қандай түрін сақтауға болады?

Деректердің қандай түрін сақтауға болады?
Деректердің қандай түрін сақтауға болады?

Деректердің байттары ретінде ұсынылуы мүмкін кез келген нәрсе. Бір байт мәліметтер сегіз бит мәліметтерден тұрады. Бит қосулы (мән 1) немесе өшірулі (мән 0) болуы мүмкін және сандарды екілік түрде көрсету үшін өте қолайлы. Басқаша айтқанда, екілік сан мәнді білдіру үшін тек нөл мен бірді ғана қолдана алады. Сонымен, екілік «базалық-2 ″ деп те аталады, себебі ол тек екі цифрды қолдана алады.

Екілік сан тек екі цифрды қолдану арқылы үлкен санды қалай көрсете алады? Ол үшін нөлдер мен нөлдер көп қолданылады. Екілік санды қарастырайық, айталық 10101010. Бұл базалық-2 сан болғандықтан, әрбір цифр x-тен 0-ге дейін 2-ге тең.

2 -қадам:

Кескін
Кескін

Екілік санның әрбір цифры қалай 10-санды көрсете алатынын қараңыз. Сонымен, жоғарыдағы екілік сан 10-да 85-ті білдіреді-85 мәні-10 мәндерінің қосындысы. Тағы бір мысал - екілік жүйеде 11111111 10 базасында 255 -ке тең.

3 -қадам:

Енді екілік санның әрбір цифрында бір «бит» жады пайдаланылады, ал сегіз бит байтты құрайды. Біздің Arduino тақталарындағы микроконтроллерлердің ішкі шектеулеріне байланысты біз EEPROM-де тек 8 биттік сандарды (бір байтты) сақтай аламыз.

Бұл санның ондық мәнін нөлден 255 -ке дейін шектейді. Деректерді сол сандар диапазонында қалай көрсету керектігін өзіңіз шешесіз. Бұған жол бермеңіз - дұрыс орналастырылған сандар кез келген нәрсені білдіруі мүмкін! Назар аударуға болатын бір шектеу бар - біз EEPROM -ге қанша рет оқи аламыз және жаза аламыз. Атмель өндірушісінің айтуынша, EEPROM 100 000 оқу/жазу циклі үшін жақсы (деректер парағын қараңыз).

4 -қадам:

Енді біз биттер мен байттарды білеміз, біздің Arduino микроконтроллерінде қанша байтты сақтауға болады? Жауап микроконтроллер моделіне байланысты өзгереді. Мысалға:

  • Atmel ATmega328 бар тақталар, мысалы Arduino Uno, Uno SMD, Nano, Lilypad және т.б. - 1024 байт (1 килобайт)
  • Atmel ATmega1280 немесе 2560 бар тақталар, мысалы Arduino Mega сериясы - 4096 байт (4 килобайт)
  • Atmel ATmega168 бар тақталар, мысалы, түпнұсқа Arduino Lilypad, ескі Нано, Диецимила және т.б. - 512 байт.

Егер сіз сенімді болмасаңыз, Arduino аппараттық құралдарының индексін қараңыз немесе тақта жеткізушісінен сұраңыз. Егер сізге микроконтроллерге қарағанда EEPROM жады қажет болса, сыртқы I2C EEPROM қолдануды қарастырыңыз.

Осы сәтте біз Arduino EEPROM -да қандай деректер мен қанша көлемде сақтауға болатынын түсінеміз. Енді осыны іске қосатын кез келді. Жоғарыда айтылғандай, біздің деректер үшін бос орын бар. Келесі мысалдарда 1024 байт EEPROM жады бар ATmega328 бар әдеттегі Arduino тақтасын қолданамыз.

5 -қадам:

EEPROM пайдалану үшін кітапхана қажет, сондықтан эскиздерде келесі кітапхананы пайдаланыңыз:

#«EEPROM.h» қосыңыз

Қалғаны өте қарапайым. Деректерді сақтау үшін келесі функцияны қолданамыз:

EEPROM.write (a, b);

A параметрі - b мәліметтерінің бүтін санын (0 ~ 255) сақтау үшін EEPROM ішіндегі орны. Бұл мысалда бізде 1024 байт жады бар, сондықтан а мәні 0 -ден 1023 -ке дейін болады. Деректерді алу үшін бірдей қарапайым:

z = EEPROM.read (a);

Мұндағы z - EEPROM позициясының деректерін сақтайтын бүтін сан а. Енді мысалды көру үшін.

6 -қадам:

Кескін
Кескін

Бұл эскиз 0 мен 255 аралығындағы кездейсоқ сандарды жасайды, оларды EEPROM -да сақтайды, содан кейін шығарып алып, сериялық мониторда көрсетеді. EEsize айнымалысы сіздің EEPROM өлшемінің жоғарғы шегі болып табылады, сондықтан (мысалы) Arduino Uno үшін бұл 1024 немесе мега үшін 4096 болады.

// Arduino ішкі EEPROM демонстрациясы

#қосу

int zz; int EEsize = 1024; // өлшемі тақтаның EEPROM байтында

жарамсыз орнату ()

{Serial.begin (9600); randomSeed (analogRead (0)); } void loop () {Serial.println («Кездейсоқ сандарды жазу …»); for (int i = 0; i <EEsize; i ++) {zz = кездейсоқ (255); EEPROM.write (i, zz); } Serial.println (); for (int a = 0; a <EEsize; a ++) {zz = EEPROM.read (a); Serial.print («EEPROM позициясы:»); Serial.print (a); Serial.print («құрамында»); Serial.println (zz); кешіктіру (25); }}

Сериялық монитордан шығыс суретте көрсетілгендей пайда болады.

Біздің Arduino жүйесінде деректерді сақтаудың тағы бір пайдалы әдісі бар. Бұл ең қызықты нұсқаулық болмаса да, бұл пайдалы.

Бұл хабарламаны pmdway.com сізге жеткізді - бұл өндірушілер мен электроникаға әуесқойлар үшін, бүкіл әлем бойынша ақысыз жеткізу.

Ұсынылған: