Mündəricat:
- Təchizat
- Addım 1: EEPROM əsasları
- Addım 2: EEPROM -un qəribəlikləri
- Addım 3: Arduino Hardware Hookup
- Addım 4: Oxu və Yaz
- Addım 5: Şemalar və Kod
Video: Arduino istifadə edərək Xarici EEPROM -a məlumatların oxunması və yazılması: 5 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:45
EEPROM, Elektriklə Silinə bilən Proqramlaşdırıla bilən Yalnız Oxunan Yaddaş deməkdir.
EEPROM çox vacib və faydalıdır, çünki yaddaşın dəyişməz bir formasıdır. Bu o deməkdir ki, lövhə söndürüldükdə belə, EEPROM çipi hələ də ona yazılmış proqramı saxlayır. Beləliklə, lövhəni söndürdükdən sonra yenidən işə saldığınız zaman, EEPROM -a yazılmış proqram işləyə bilər. EEPROM, nə olursa olsun, bir proqramı saxlayır və idarə edir. Bu o deməkdir ki, bir cihazı söndürə, 3 gün saxlaya və geri qayıdıb yandıra bilərsiniz və hələ də proqramlaşdırılmış proqramı işlədə bilər. İstehlakçı elektron cihazlarının əksəriyyəti belə işləyir.
Bu layihə LCSC tərəfindən maliyyələşdirilir. LCSC.com elektron komponentlərindən istifadə edirəm. LCSC, 200-dən çox ölkəyə qlobal göndərmə şəbəkəsi ilə ən yaxşı qiymətə orijinal, yüksək keyfiyyətli elektron komponentlərin geniş seçimini təqdim etmək üçün güclü bir öhdəliyə malikdir. Bu gün qeydiyyatdan keçin və ilk sifarişinizdə 8 dollar endirim əldə edin.
EEPROM, ənənəvi EEPROM -dəki fərdi baytların müstəqil olaraq oxunması, silinməsi və yenidən yazılması baxımından da çox səmərəlidir. Qalan olmayan yaddaş növlərinin əksəriyyətində bunu etmək mümkün deyil. Microchip 24 seriyalı EEPROM kimi seriyalı EEPROM cihazları, I²C danışa bilən hər hansı bir cihaza daha çox yaddaş əlavə etməyə imkan verir.
Təchizat
- EEPROM - 24LC512
- ATmega328P-PU
- 16 MHz Kristal
- Çörək lövhəsi
- Rezistor 4.7k Ohm x 2
- Kondansatör 22 pF x 2
Addım 1: EEPROM əsasları
Microchip 24LC2512 çipi 8 pinli DIP paketində əldə edilə bilər. 24LC512 üzərindəki sancaqlar olduqca düzdür və güc (8), GND (4), yazma qorunması (7), SCL/SDA (6, 5) və üç ünvan pinindən (1, 2, 3) ibarətdir.
ROM -un qısa tarixi
İş masası kalkulyatorları və klaviatura tərcüməçiləri kimi erkən "Saxlanılan Proqram" tipli kompüterlər DOM Matrix ROM şəklində ROMdan istifadə etməyə başladılar. Bu, xüsusi olaraq təşkil edilmiş bir PCB üzərində yerləşdirilmiş diskret yarımkeçirici diodlardan ibarət bir yaddaş idi. Bu, inteqral sxemlərin yaranması ilə Mask ROM -un yerini verdi. Mask ROM, Diode Matrix ROM -a çox bənzəyirdi, yalnız daha kiçik miqyasda tətbiq edildi. Ancaq bu, bir neçə diodu bir lehimləmə dəmiri ilə hərəkət etdirib yenidən proqramlaşdıra bilməyəcəyiniz mənasına gəlirdi. Mask ROM, istehsalçı tərəfindən proqramlaşdırılmalı idi və bundan sonra dəyişdirilmədi.
Təəssüf ki, Mask ROMu bahalı idi və istehsal üçün uzun vaxt lazım idi, çünki hər yeni proqramda tökmə zavodu tərəfindən istehsal olunmaq üçün yeni bir cihaz tələb olunurdu. Ancaq 1956 -cı ildə bu problem, inkişaf etdiricilərə fişləri özləri proqramlaşdırmağa imkan verən PROM (Programlanabilir ROM) ixtirası ilə həll edildi. Bu, istehsalçıların milyonlarla eyni proqramlaşdırılmamış cihazı istehsal etməsi demək idi ki, bu da onu daha ucuz və praktik hala gətirdi. PROM, ancaq yüksək gərginlikli proqramlaşdırma cihazı istifadə edərək yalnız bir dəfə yazıla bilər. PROM cihazı proqramlaşdırıldıqdan sonra cihazı proqramlaşdırılmamış vəziyyətə qaytarmaq üçün heç bir yol yox idi.
Bu, 1971 -ci ildə qısaltmaya başqa bir hərf əlavə etməklə birlikdə cihazı silmək və güclü bir UV işığı mənbəyindən istifadə edərək "boş" vəziyyətə qaytarmaq qabiliyyətini gətirən EPROM (Silinə bilən Programlanabilir ROM) ixtirası ilə dəyişdi. Düzdü, yenidən proqramlaşdırmaq üçün IC -yə parlaq bir işıq yandırmalı idiniz, bu nə qədər sərindir? Firmware üzərində işləyən bir inkişaf etdirici olmadığınız təqdirdə, həqiqətən də elektrik siqnallarından istifadə edərək cihazı yenidən proqramlaşdırmaq istədiyiniz olduqca gözəl görünür. Bu, nəhayət 1983 -cü ildə EEPROM (Elektriklə Silinə bilən Proqramlaşdırıla bilən ROM) inkişafı ilə gerçəkləşdi və bununla da indiki günə uyğun olmayan qısaltmalara gəldik.
Addım 2: EEPROM -un qəribəlikləri
Məlumat saxlama üsulu olaraq EEPROM -un iki əsas çatışmazlığı var. Əksər tətbiqlərdə üstünlüklər mənfi cəhətlərdən üstündür, lakin EEPROM -u növbəti dizaynınıza daxil etməzdən əvvəl onlardan xəbərdar olmalısınız.
Hər şeydən əvvəl, EEPROM-un işləməsini təmin edən texnologiya, yenidən yazılmaq sayını da məhdudlaşdırır. Bu, elektronların ROMu təşkil edən tranzistorlarda ilişib qalması və "1" ilə "0" arasındakı yük fərqi tanınmayana qədər yığılması ilə əlaqədardır. Ancaq narahat olmayın, əksər EEPROMların maksimum 1 milyon və ya daha çox təkrar yazma sayı var. EEPROM -a davamlı yazmadığınız müddətcə bu maksimuma çatacağınız ehtimalı yoxdur. İkincisi, EEPROM ondan güc çıxarsanız silinməyəcək, ancaq məlumatlarınızı sonsuza qədər saxlamayacaq. Elektronlar zaman keçdikcə EEPROM -u effektiv şəkildə silərək tranzistorlardan və izolyatordan çıxa bilərlər. Dedi ki, bu ümumiyyətlə illər ərzində baş verir (baxmayaraq ki, istiliklə sürətlənə bilər). Əksər istehsalçılar, məlumatlarınızın EEPROM -da otaq temperaturunda 10 il və ya daha çox müddətdə təhlükəsiz olduğunu söyləyirlər. Layihəniz üçün bir EEPROM cihazı seçərkən nəzərə almalı olduğunuz başqa bir şey var. EEPROM tutumu baytlarla deyil, bitlərlə ölçülür. 512K EEPROM, 512Kbit məlumatı, başqa sözlə, yalnız 64KB tutacaq.
Addım 3: Arduino Hardware Hookup
Tamam, indi EEPROM -un nə olduğunu bildiyimiz üçün gəlin birini bağlayaq və görək nə edə bilər! Cihazımızın danışması üçün I²C seriyalı xətləri olduğu kimi gücə də bağlamalıyıq. Bu cihaz, xüsusən də 5VDC -də işləyir, buna görə Arduino UNO -nun 5V çıxışına bağlayacağıq. Ayrıca, I²C xətlərinin ünsiyyətin düzgün qurulması üçün çəkmə rezistorlarına ehtiyacı olacaq. Bu rezistorların dəyəri onu çatdırmaq istədiyiniz xətlərin tutumundan və tezliyindən asılıdır, lakin kritik olmayan tətbiqlər üçün yaxşı bir qayda k just aralığında saxlanılır. Bu nümunədə 4.7kΩ çəkmə rezistorlarından istifadə edəcəyik.
I²C ünvanını seçmək üçün bu cihazda üç pin var, beləliklə avtobusda birdən çox EEPROM ola bilər və hər birinə fərqli şəkildə müraciət edə bilərsiniz. Hamısını torpaqlaya bilərsiniz, ancaq daha sonra tutorialda daha yüksək tutumlu bir cihaza düşə biləcəyimiz üçün tellər çəkəcəyik.
Hər şeyi bir -birinə bağlamaq üçün çörək taxtasından istifadə edəcəyik. Aşağıdakı diaqram, satdığımız Microchip 24 seriyalı EEPROM daxil olmaqla əksər I²C EEPROM cihazları üçün düzgün bağlamanı göstərir.
Addım 4: Oxu və Yaz
Çox vaxt bir mikro nəzarətçi ilə birlikdə bir EEPROM istifadə edərkən, yaddaşın bütün məzmununu bir anda görmək lazım olmayacaq. Lazım olduğu kimi burada və orda bayt oxuyub yazacaqsınız. Ancaq bu nümunədə, bütün bir faylı EEPROM -a yazacağıq və sonra hamısını kompüterimizdə görə bilməyimiz üçün yenidən oxuyacağıq. Bu, bizi EEPROM istifadə etmək fikri ilə rahatlaşdırmalı və eyni zamanda kiçik bir cihaza nə qədər çox məlumatın sığa biləcəyi hissini verməlidir.
Bir şey yazmaq
Nümunə eskizimiz, seriya limanı üzərindən daxil olan və yaddaşa yazdığımız baytı izləyən EEPROM -a yazan hər hansı bir baytı götürəcəkdir.
EEPROM -a bir bayt yaddaş yazmaq ümumiyyətlə üç mərhələdə baş verir:
- Yazmaq istədiyiniz yaddaş ünvanının Ən Önəmli Baytını göndərin.
- Yazmaq istədiyiniz yaddaş ünvanının ən az əhəmiyyətli baytını göndərin.
- Bu yerdə saxlamaq istədiyiniz məlumat baytını göndərin.
Yəqin ki, orada izah edə bilməyən bir neçə açar söz var:
Yaddaş Ünvanları
512 Kbit EEPROM -da bütün baytları 0 -dan 64000 -ə qədər bir xətt üzərində dayandığını xəyal edirsinizsə - çünki baytda 8 bit var və buna görə də 512 Kbit EEPROM -da 64000 bayt yerləşdirə bilərsiniz - onda yaddaş ünvanı müəyyən bir bayt tapacağınız xətt. Göndərdiyimiz baytı hara qoyacağımızı bilməsi üçün həmin ünvanı EEPROM -a göndərməliyik.
Ən Əhəmiyyətli və Ən Az Əhəmiyyətli Baytlar
256 Kbit EEPROM -da 32000 mümkün yer olduğu üçün - və 255 bir baytda kodlaya biləcəyiniz ən böyük rəqəm olduğu üçün bu ünvanı iki baytla göndərməliyik. Birincisi, Ən Əhəmiyyətli Baytı (MSB) göndəririk - bu vəziyyətdə ilk 8 bit. Sonra ən az əhəmiyyətli baytı (LSB) göndəririk - ikinci 8 bit. Niyə? Cihazın bu cür qəbul etməyi gözlədiyi üçün hamısı budur.
Səhifə Yazısı
Bir anda bir bayt yazmaq yaxşıdır, lakin əksər EEPROM cihazlarında "bayt yazma tamponu" adlı bir şey var ki, bu da tək baytda olduğu kimi eyni anda birdən çox bayt yazmağa imkan verir. Nümunə eskizimizdə bundan istifadə edəcəyik. EEPROM, aldığı hər bir məlumat baytı ilə yaddaş yerini avtomatik olaraq artıran daxili sayğacdan istifadə edir. Yaddaş ünvanı göndərildikdən sonra onu 64 bayta qədər məlumatla izləyə bilərik. EEPROM, 312 ünvanını və 10 baytı izləyən bir ünvanın 312 ünvanında 0 baytı, 313 ünvanında 1 baytı, 314 ünvanında 2 baytı və s.
Nəsə oxuyun
EEPROM-dan oxumaq əsasən EEPROM-a yazmaqla eyni üç addımlı prosesi izləyir:
- Yazmaq istədiyiniz yaddaş ünvanının Ən Önəmli Baytını göndərin.
- Yazmaq istədiyiniz yaddaş ünvanının ən az əhəmiyyətli baytını göndərin.
- Həmin yerdəki məlumat baytını istəyin.
Addım 5: Şemalar və Kod
Kod:
#daxil edin
#define eeprom 0x50 // EEPROM -un əsas ünvanını təyin edir
boş quraşdırma () {
Wire.begin (); // Wire obyekti yaradır
Serial.begin (9600);
imzasız int ünvanı = 0; // EEPROM -un ilk ünvanı
Serial.println ("22222 poçt kodunu, poçt kodunu yazırıq"); for (ünvan = 0; ünvan <5; ünvan ++) writeEEPROM (eeprom, ünvan, '2'); // EEPROM -a 22222 yazır
üçün (ünvan = 0; ünvan <5; ünvan ++) {Serial.print (readEEPROM (eeprom, ünvan), HEX); }}
boşluq döngəsi () {
/*loop () funksiyasında heç bir şey yoxdur, çünki arduino -nun eyni şeyi dəfələrlə EEPROM -a dəfələrlə yazmasını istəmirik. Yalnız birdəfəlik yazmaq istəyirik, buna görə də loop () funksiyasından EEPROMs istifadə etməklə qaçınılır.*/}
// writeEEPROM funksiyasını təyin edir
etibarsız writeEEPROM (int deviceaddress, unsigned int eeaddress, byte data) {Wire.beginTransmission (deviceaddress); Wire.write ((int) (eeaddress >> 8)); // MSB Wire.write ((int) (eeaddress & 0xFF)) yazır; // LSB Wire.write yazır (məlumatlar); Wire.endTransmission (); }
// readEEPROM funksiyasını təyin edir
bayt readEEPROM (int cihaz ünvanı, imzasız int eaddress) {bayt rdata = 0xFF; Wire.beginTransmission (cihaz ünvanı); Wire.write ((int) (eeaddress >> 8)); // MSB Wire.write ((int) (eeaddress & 0xFF)) yazır; // LSB Wire.endTransmission () yazır; Wire.requestFrom (cihaz ünvanı, 1); if (Wire.available ()) rdata = Wire.read (); rdata qayıt; }
Tövsiyə:
Android / Arduino / PfodApp istifadə edərək sadə uzaqdan məlumatların tərtib edilməsi: 6 addım
Android/Arduino/PfodApp -dan istifadə edərək sadə Uzaqdan Məlumat Planlaması: Yalnız Arduino millisini () istifadə edərək Tarixə/Zamana qarşı Məlumat Planlaşdırmaq üçün bu InstructableArduino Tarixi/Millis () və PfodApp -dan istifadə edərək Planlaşdırma/Qeydiyyata baxın.Bu Təlimat Arduino sensor məlumatlarını necə quracağınızı göstərir. Android mobil və onu ələ keçirin
Arduino Uno ilə LM35 Temperatur Sensorundan İstifadə İstiliyinin Oxunması: 4 Addım
Arduino Uno ilə LM35 Temperatur Sensorundan İstifadə İstiliyinin Oxunması: Salam uşaqlar bu təlimatlarda LM35 -in Arduino ilə necə istifadə olunacağını öyrənəcəyik. Lm35, -55 ° C ilə 150 ° C arasındakı temperatur dəyərlərini oxuya bilən bir temperatur sensoru. İstiliklə mütənasib olaraq analog gərginlik verən 3 terminallı bir cihazdır. Yüksək
RFID və Arduino Ethernet Shield istifadə edərək Google elektron cədvəlində məlumatların saxlanması ilə iştirak sistemi: 6 addım
RFID və Arduino Ethernet Shield istifadə edərək Google Elektron Cədvəlində Məlumatların Saxlanması ilə İştirak Sistemi: Salam Uşaqlar, burada çox maraqlı bir layihə hazırlayırıq və bu, Arduino istifadə edərək rfid məlumatlarını google elektron cədvəlinə necə göndərəcəyimizdir. Bir sözlə, rfid oxucuya əsaslanaraq iştirak məlumatlarını real vaxt rejimində saxlayacaq bir iştirak sistemi quracağıq
CSR1010 və Dragonboard 410c istifadə edərək BLE Cihazından Dəyərlərin Oxunması: 6 Addım
CSR1010 və Dragonboard 410c istifadə edən bir BLE Cihazından Dəyərlərin Oxunması: Bu dərslik Linaro ilə Dragonboard 410c istifadə edərək BLE cihazından CSR1010 -dan dəyərlərin necə oxunacağını göstərir Bu nümunədə CSR1010 nəbz sensoru emulyasiya edir
Köhnə Xarici CD/RW -dən Xarici HDD hazırlayın: 5 addım
Köhnə Xarici CD/RW -dən Xarici HDD hazırlayın: Köhnə bir xarici cd/rw -in daha faydalı bir xarici sabit diskinə düz bir şəkildə çevrilməsi. Təchizatlar1-xarici cd/rw (tercihen daha çox qutu tipli) 1 sabit disk (sürücü korpusunun daxili konnektoru ilə uyğun olmalıdır, formatlanmalı/sistemləşdirilməlidir) 1-sm