Mundarija:

Arduino Duega 24LC256 EEPROM qo'shish: 3 qadam
Arduino Duega 24LC256 EEPROM qo'shish: 3 qadam

Video: Arduino Duega 24LC256 EEPROM qo'shish: 3 qadam

Video: Arduino Duega 24LC256 EEPROM qo'shish: 3 qadam
Video: Memory card kharab ho gaya To Aisa kijiye 2024, Noyabr
Anonim
Arduino Duega 24LC256 EEPROM qo'shilishi
Arduino Duega 24LC256 EEPROM qo'shilishi

Arduino tufayli eeprom yo'q. Bu ko'rsatma bittasini qo'shadi va arduino dasturiy ta'minotining yangilanishidan omon qoladigan qiymatlarni doimiy xotirada saqlashga imkon beradi.

1 -qadam: Breadboard

Breadboard
Breadboard

Bu erda juda yaxshi ko'rsatmalar bor: https://www.hobbytronics.co.uk/arduino-external-eeprom Men ularga ergashdim, rasmda taxtali sxemasi ko'rsatilgan. pinlar 1 dan 4 gacha va pin 7 yerga ulangan. pin 8 tegishli kartadagi 3.3V quvvat manbaiga ulangan, sariq karta (pin 6) va oq (pin 5) simlar i2c SDA (ma'lumotlar) va SCL (soat) pinlariga ulangan (21 va 20 raqamli).).

2 -qadam: Kod vaqti

Kod vaqti
Kod vaqti

Mana men eskizlarimda ishlatadigan ba'zi kod parchalari. Birinchidan, eskizning yuqori qismiga yaqin Wire kutubxonasi sarlavhalarini kiriting: / * Sozlamalarni saqlash uchun 24LC256 EEPROM -dan foydalaning * / #include Keyin EEPROM -dan baytlarni o'qish va yozish uchun ba'zi funktsiyalarni qo'shing (men faqat alohida baytlarga g'amxo'rlik qilaman, lekin chipda sahifa yozish xususiyati ham). E'tibor bering, 0x50 makro ta'rifi bor.. bu i2c avtobusidagi chipning manzili (siz i2c avtobusida bir nechta i2c narsalarini ulashingiz va manzilni o'zgartirish orqali qaysi biri bilan gaplashmoqchi ekanligingizni tanlashingiz mumkin). / * Bu ikkita funktsiya bizga 24LC256 EEPROM chipiga yozishga yordam beradi */ #define EEPROM_ADDR 0x50 bo'sh EEPROM_write (imzosiz int addr, bayt ma'lumotlari) {int rdata = ma'lumotlar; Wire.beginTransmission (EEPROM_ADDR); Wire.write ((int) (addr >> 8)); // MSB Wire.write ((int) (addr & 0xFF)); // LSB Wire.write (rdata); Wire.endTransmission (); //Serial.print("EEPROM yozish: addr: "); //Serial.print(addr); //Serial.print (""); //Serial.println(ma'lumotlar); kechikish (5); } bayt EEPROM_read (imzosiz int addr) {bayt ma'lumotlari = 0xFF; Wire.beginTransmission (EEPROM_ADDR); Wire.write ((int) (addr >> 8)); // MSB Wire.write ((int) (addr & 0xFF)); // LSB Wire.endTransmission (); Wire.requestFrom (EEPROM_ADDR, 1); if (Wire.available ()) data = Wire.read (); //Serial.print("EEPROM o'qildi: addr: "); //Serial.print(addr); //Serial.print (""); //Serial.println(ma'lumotlar); kechikish (5); ma'lumotlarni qaytarish; } Agar siz disk raskadrovka chiqishini ko'rishni xohlasangiz, Serial.print (…) satrlariga izoh qoldirishingiz mumkin. Arduinos setup () funktsiyasida siz simli kutubxonani ishga tushirasiz va uni dastlabki qiymatlarda o'qiy olasiz. Bu erda men ikki baytda (bayroqlar va max_cc), ikkita so'zda (lean_min va lean_max) va sd_max so'zlar majmuasini [3] o'qidim: // EEPROM Wire.begin () da saqlangan qiymatlarni o'qish; bayroqlar = EEPROM_read (0); max_cc = EEPROM_read (1); lean_min = so'z (EEPROM_read (3), EEPROM_read (2)); lean_max = so'z (EEPROM_read (5), EEPROM_read (4)); uchun (int j = 0; j <3; j) {sd_max [j] = so'z (EEPROM_read (7 j*2), EEPROM_read (6 j*2)); } Mana, ularni EEPROMga yozadigan kod biti: EEPROM_write (0, bayroqlar); EEPROM_write (1, max_cc); EEPROM_write (2, lowByte (lean_min)); EEPROM_write (3, highByte (lean_min)); EEPROM_write (4, lowByte (lean_max)); EEPROM_write (5, highByte (lean_max)); uchun (int j = 0; j <3; j) {EEPROM_write (6 j*2, lowByte (sd_max [j])); EEPROM_write (7 j*2, highByte (sd_max [j])); } Bu, albatta.

3 -qadam: simni ulang

Ulanish
Ulanish

Qoplamani va bajarilgan ishlarni burab qo'yish uchun uni veroboardga mahkamlang.

Tavsiya: