Orodha ya maudhui:

Kusoma na Kuandika Takwimu kwa EEPROM ya Nje Kutumia Arduino: Hatua 5
Kusoma na Kuandika Takwimu kwa EEPROM ya Nje Kutumia Arduino: Hatua 5

Video: Kusoma na Kuandika Takwimu kwa EEPROM ya Nje Kutumia Arduino: Hatua 5

Video: Kusoma na Kuandika Takwimu kwa EEPROM ya Nje Kutumia Arduino: Hatua 5
Video: Output DC or AC Voltage using MCP4725 DAC with LCD and PWM to Voltage Converter with Arduino 2024, Julai
Anonim
Kusoma na Kuandika Takwimu kwa EEPROM ya Nje Kutumia Arduino
Kusoma na Kuandika Takwimu kwa EEPROM ya Nje Kutumia Arduino

EEPROM inasimama kwa Kumbukumbu ya Kusoma-Inayoweza Kusambazwa kwa Umeme.

EEPROM ni muhimu sana na ni muhimu kwa sababu ni aina isiyo ya tete ya kumbukumbu. Hii inamaanisha kwamba hata wakati bodi imezimwa, chip ya EEPROM bado inabaki na mpango ambao uliandikiwa. Kwa hivyo ukizima bodi na kisha kuiwasha tena, mpango ambao uliandikiwa EEPROM unaweza kuendeshwa. Kwa hivyo kimsingi, EEPROM huhifadhi na kuendesha programu bila kujali ni nini. Hii inamaanisha unaweza kuzima kifaa, kukizima kwa siku 3, na kurudi na kuiwasha na bado inaweza kuendesha programu iliyowekwa ndani yake. Hivi ndivyo vifaa vingi vya umeme vya watumiaji hufanya kazi.

Mradi huu umefadhiliwa na LCSC. Nimekuwa nikitumia vifaa vya elektroniki kutoka LCSC.com. LCSC ina dhamira thabiti ya kutoa chaguzi anuwai ya vifaa vya elektroniki vyenye ubora wa hali ya juu kwa bei bora na mtandao wa usafirishaji wa kimataifa kwa zaidi ya nchi 200. Jisajili leo na upate punguzo la $ 8 kwa agizo lako la kwanza.

EEPROM pia ni nzuri sana kwa kuwa kaiti binafsi katika EEPROM ya jadi inaweza kusomwa kwa uhuru, kufutwa, na kuandikwa tena. Katika aina nyingine nyingi za kumbukumbu zisizo na tete, hii haiwezi kufanywa. Vifaa vya serial EEPROM kama Microchip 24-mfululizo EEPROM hukuruhusu kuongeza kumbukumbu zaidi kwa kifaa chochote kinachoweza kuzungumza I²C.

Vifaa

  1. EEPROM - 24LC512
  2. ATmega328P-PU
  3. Kioo cha 16 MHz
  4. Bodi ya mkate
  5. Resistor 4.7k Ohm x 2
  6. Capacitor 22 pF x 2

Hatua ya 1: Misingi ya EEPROM

Misingi ya EEPROM
Misingi ya EEPROM

Chip ya Microchip 24LC2512 inaweza kununuliwa katika kifurushi cha 8 cha DIP. Pini kwenye 24LC512 ni sawa mbele na zina nguvu (8), GND (4), andika ulinzi (7), SCL / SDA (6, 5), na pini tatu za anwani (1, 2, 3).

Historia Fupi ya ROM

Kompyuta za aina ya "Stored-Program" za mapema - kama vile hesabu za dawati na wakalimani wa kibodi - zilianza kutumia ROM kwa njia ya Diode Matrix ROM. Hii ilikuwa kumbukumbu iliyoundwa na diode za semiconductor zenye kuwekwa kwenye PCB maalum. Hii ilitoa njia ya Mask ROM na ujio wa nyaya zilizounganishwa. Mask ya ROM ilikuwa kama Diode Matrix ROM tu ilitekelezwa kwa kiwango kidogo sana. Hii ilimaanisha, hata hivyo, kwamba huwezi kusonga diode kadhaa karibu na chuma cha kutengeneza na kuibadilisha. Mask ya ROM ililazimika kusanidiwa na mtengenezaji na baadaye haibadiliki.

Kwa bahati mbaya, Mask ROM ilikuwa ghali na ilichukua muda mrefu kutoa kwa sababu kila programu mpya ilihitaji kifaa kipya kabisa kutengenezwa na msingi. Mnamo 1956, hata hivyo, shida hii ilitatuliwa na uvumbuzi wa PROM (Programmable ROM) ambayo iliruhusu watengenezaji kupanga chip wenyewe. Hiyo ilimaanisha wazalishaji wangeweza kutoa mamilioni ya kifaa hicho ambacho hakijapangiliwa ambacho kiliifanya iwe rahisi na iwe ya vitendo. PROM, hata hivyo, inaweza kuandikwa mara moja tu kwa kutumia kifaa cha programu ya voltage ya juu. Baada ya kifaa cha PROM kusanidiwa, hakukuwa na njia ya kurudisha kifaa katika hali yake isiyopangwa.

Hii ilibadilika mnamo 1971 na uvumbuzi wa EPROM (Erasable Programmable ROM) ambayo - kando na kuongeza barua nyingine kwa kifupi - ilileta uwezo wa kufuta kifaa na kuirudisha kwa hali "tupu" kwa kutumia chanzo chenye nguvu cha nuru ya UV. Hiyo ni kweli, ilibidi uangaze taa kali kwenye IC ili kuipanga upya, ni vipi baridi? Kweli, inageuka kuwa nzuri sana isipokuwa wewe ni msanidi programu anayefanya kazi kwenye firmware katika hali ambayo ungependa kuweza kupanga tena kifaa kwa kutumia ishara za umeme. Hii hatimaye ikawa ukweli mnamo 1983 na maendeleo ya EEPROM (ROM inayoweza kusuluhishwa kwa umeme) na kwa hiyo, tunafika katika kifupi cha siku ya sasa isiyo na maana.

Hatua ya 2: Quirks za EEPROM

Kuna mapungufu mawili makubwa kwa EEPROM kama njia ya kuhifadhi data. Katika matumizi mengi, faida huzidi hasara, lakini unapaswa kuzijua kabla ya kuingiza EEPROM katika muundo wako unaofuata.

Kwanza kabisa, teknolojia inayofanya EEPROM ifanye kazi pia inapunguza idadi ya nyakati ambazo inaweza kuandikwa tena. Hii inahusiana na elektroni zinazonaswa katika transistors ambazo hufanya ROM na kujenga hadi tofauti ya malipo kati ya "1" na "0" haijulikani. Lakini usijali, EEPROM nyingi zina idadi kubwa ya kuandika tena milioni 1 au zaidi. Kwa muda mrefu ikiwa hauandikii EEPROM kuendelea kuna uwezekano wa kufikia kiwango hiki cha juu. Pili, EEPROM haitafutwa ikiwa utaondoa nguvu kutoka kwayo, lakini haitashikilia data yako bila kikomo. Elektroni zinaweza kutoka kwa transistors na kupitia kizio, ikifuta vizuri EEPROM kwa muda. Hiyo ilisema, hii kawaida hufanyika kwa kipindi cha miaka (ingawa inaweza kuharakishwa na joto). Watengenezaji wengi wanasema kuwa data yako iko salama kwa EEPROM kwa miaka 10 au zaidi kwa joto la kawaida. Na kuna jambo moja zaidi unapaswa kukumbuka wakati wa kuchagua kifaa cha EEPROM kwa mradi wako. Uwezo wa EEPROM hupimwa kwa bits na sio ka. EEPROM ya 512K itashikilia 512Kbits za data, kwa maneno mengine, 64KB tu.

Hatua ya 3: Arduino Hardware Hookup

Kuunganishwa kwa Vifaa vya Arduino
Kuunganishwa kwa Vifaa vya Arduino
Kuunganishwa kwa Vifaa vya Arduino
Kuunganishwa kwa Vifaa vya Arduino

Sawa, sasa kwa kuwa tunajua EEPROM ni nini, wacha tuunganishe moja na tuone inaweza kufanya nini! Ili kufanya kifaa chetu kiongee, tutahitaji kuunganisha nguvu na vile vile laini za I²C. Kifaa hiki, haswa, kinaendesha kwa 5VDC kwa hivyo tutaiunganisha na pato la 5V la Arduino UNO yetu. Pia, laini za I²C zitahitaji vipinga-vuta ili mawasiliano yatokee kwa usahihi. Thamani ya vipinga hivi inategemea uwezo wa mistari na masafa unayotaka kuiwasiliana nayo, lakini sheria nzuri ya kidole gumba kwa programu ambazo sio muhimu sana imewekwa kwenye safu ya kΩ. Katika mfano huu, tutatumia vipinga-nguvu vya 4.7kΩ.

Kuna pini tatu kwenye kifaa hiki kuchagua anwani ya I²C, kwa njia hii unaweza kuwa na EEPROM zaidi ya moja kwenye basi na kuziwasilisha tofauti. Unaweza kuziacha zote, lakini tutawaunganisha ili tuweze kushuka kwenye kifaa chenye uwezo zaidi baadaye kwenye mafunzo.

Tutatumia ubao wa mkate kuunganisha kila kitu pamoja. Mchoro hapa chini unaonyesha muunganiko sahihi wa vifaa vingi vya I²C EEPROM, pamoja na Microchip 24-mfululizo EEPROM ambayo tunauza.

Hatua ya 4: Kusoma na Kuandika

Wakati mwingi unapotumia EEPROM kwa kushirikiana na mdhibiti mdogo hautahitaji kuona yaliyomo kwenye kumbukumbu mara moja. Utasoma tu na kuandika ka hapa na pale kama inahitajika. Katika mfano huu, hata hivyo, tutaandika faili nzima kwa EEPROM na kisha tusome yote mbali ili tuweze kuiona kwenye kompyuta yetu. Hii inapaswa kutupendeza na wazo la kutumia EEPROM na pia itupe hisia ya ni data ngapi inaweza kutoshea kwenye kifaa kidogo.

Andika kitu

Mchoro wetu wa mfano utachukua tu Byte yoyote ambayo inakuja juu ya bandari ya serial na kuiandikia EEPROM, ikifuatilia njia ya kaiti ngapi tumeandika kwa kumbukumbu.

Kuandika kumbukumbu ya kumbukumbu kwa EEPROM kawaida hufanyika kwa hatua tatu:

  1. Tuma Byte Muhimu zaidi ya anwani ya kumbukumbu ambayo unataka kuandika.
  2. Tuma Kitambulisho Kidogo muhimu cha anwani ya kumbukumbu ambayo unataka kuiandikia.
  3. Tuma baiti ya data ambayo ungependa kuhifadhi katika eneo hili.

Labda kuna maneno kadhaa muhimu ambayo yanaelezea wazi:

Anwani za Kumbukumbu

Ikiwa unafikiria kaiti zote kwenye 512 Kbit EEPROM iliyosimama kwenye mstari kutoka 0 hadi 64000 - kwa sababu kuna bits 8 kwa ka na kwa hivyo unaweza kutoshea ka 64000 kwenye 512 Kbit EEPROM - basi anwani ya kumbukumbu ni mahali pa mstari ambapo utapata baiti fulani. Tunahitaji kutuma anwani hiyo kwa EEPROM kwa hivyo inajua mahali pa kuweka baiti ambayo tunatuma.

Baiti Muhimu na Isiyofaa Zaidi

Kwa sababu kuna maeneo 32000 katika 256 Kbit EEPROM - na kwa sababu 255 ndio nambari kubwa zaidi ambayo unaweza kusimba kwa ka moja - tunahitaji kutuma anwani hii kwa ka mbili. Kwanza, tunatuma Byte Muhimu Zaidi (MSB) - bits 8 za kwanza katika kesi hii. Kisha tunatuma Byte muhimu sana (LSB) - bits 8 za pili. Kwa nini? Kwa sababu hii ndio jinsi kifaa kinatarajia kuzipokea, ndio tu.

Kuandika Ukurasa

Kuandika kau moja kwa wakati ni sawa, lakini vifaa vingi vya EEPROM vina kitu kinachoitwa "bafa ya kuandika ukurasa" ambayo hukuruhusu kuandika ka nyingi kwa wakati kwa njia ile ile ambayo ungetumia baiti moja. Tutatumia hii kwa mchoro wetu wa mfano. EEPROM hutumia kaunta ya ndani ambayo huongeza kiotomatiki eneo la kumbukumbu na kila data inayofuata inayopokea. Mara tu anwani ya kumbukumbu imetumwa tunaweza kuifuata hadi ka 64 za data. EEPROM inachukua (sawa) kuwa anwani ya 312 ikifuatiwa na ka 10 itaandika byte 0 kwenye anwani 312, byte 1 kwenye anwani 313, byte 2 kwenye anwani 314, na kadhalika.

Soma Kitu

Kusoma kutoka EEPROM kimsingi hufuata mchakato huo wa hatua tatu kama kuandikia EEPROM:

  1. Tuma Byte Muhimu zaidi ya anwani ya kumbukumbu ambayo unataka kuandika.
  2. Tuma Kitambulisho Kidogo muhimu cha anwani ya kumbukumbu ambayo unataka kuiandikia.
  3. Uliza data ya data mahali hapo.

Hatua ya 5: Skematiki na Nambari

Skimu na Kanuni
Skimu na Kanuni

Nambari:

# pamoja

#fafanua eeprom 0x50 // inafafanua anwani ya msingi ya EEPROM

usanidi batili () {

Wire.begin (); // huunda kitu cha waya

Kuanzia Serial (9600);

anwani ya int isiyoingia = 0; // anwani ya kwanza ya EEPROM

Serial.println ("Tunaandika nambari ya zip 22222, nambari ya zip"); kwa (anwani = 0; anwani <5; anwani ++) andikaEEPROM (eeprom, anwani, '2'); // Anaandika 22222 kwa EEPROM

kwa (anwani = 0; anwani <5; anwani ++) {Serial.print (somaEEPROM (eeprom, anwani), HEX); }}

kitanzi batili () {

/ * hakuna chochote katika kazi ya kitanzi () kwa sababu hatutaki arduino iandike kitu kimoja kwa EEPROM mara kwa mara. Tunataka tu kuandika mara moja, kwa hivyo kitanzi () kazi inaepukwa na EEPROMs. * /}

// inafafanua kazi ya kuandikaEEPROM

batili writeEEPROM (int deviceadress, unsigned int eeaddress, data byte) {Wire.beginTransmission (kifaa cha anwani); Andika waya ((int) (eeaddress >> 8)); // anaandika MSB Wire.write ((int) (eeaddress & 0xFF)); // anaandika LSB Wire.write (data); Uwasilishaji wa waya (); }

// inafafanua kazi ya kusomaEEPROM

kusoma byteEEPROM (anwani ya kifaa, anwani ya barua isiyosajiliwa) {byte rdata = 0xFF; Uwasilishaji wa waya (anwani ya kifaa); Andika waya ((int) (eeaddress >> 8)); // anaandika MSB Wire.write ((int) (eeaddress & 0xFF)); // anaandika waya wa LSB. End Transmission (); Ombi la Waya.kutoka (kifaa cha anwani, 1); ikiwa (Waya haipatikani ()) rdata = Wire.read (); kurudi rdata; }

Ilipendekeza: