İçindekiler:

Arduino Due'a 24LC256 EEPROM Eklemek: 3 Adım
Arduino Due'a 24LC256 EEPROM Eklemek: 3 Adım

Video: Arduino Due'a 24LC256 EEPROM Eklemek: 3 Adım

Video: Arduino Due'a 24LC256 EEPROM Eklemek: 3 Adım
Video: Подключение внешней EEPROM к Ардуино на примере памяти 24LC512 2024, Kasım
Anonim
Arduino Due'a 24LC256 EEPROM Ekleme
Arduino Due'a 24LC256 EEPROM Ekleme

Arduino nedeniyle bir eepromdan yoksun. Bu talimat, bir tane ekler ve bir arduino üretici yazılımı güncellemesinden kurtulacak, kalıcı olmayan bellekte değerleri saklamanıza izin verir.

Adım 1: Breadboarding

Breadboarding
Breadboarding

Burada gerçekten iyi talimatlar var: https://www.hobbytronics.co.uk/arduino-external-eepromOnları az önce takip ettim. Fotoğraf, devre tahtası devresini gösteriyor. 1'den 4'e kadar olan pinler ve pin 7 topraklanmıştır. pin 8, vade kartı üzerindeki 3.3V beslemeye bağlanır. Sarı (pin 6) ve beyaz (pin 5) teller, Due board (21 ve 20 numaralı) üzerindeki i2c SDA (veri) ve SCL (saat) pinlerine bağlanır.).

Adım 2: Kod Zamanı

Kod Zamanı
Kod Zamanı

İşte eskizlerimde kullandığım bazı kod parçacıkları. İlk olarak, Wire kitaplığı başlıklarını çiziminizin üst kısmına yakın bir yere ekleyin: /* Ayarları kaydetmek için 24LC256 EEPROM kullanın */ #include Ardından, EEPROM'dan bayt okumak ve yazmak için bazı işlevler ekleyin (yalnızca bireysel baytlarla ilgilenirim, ancak çipte de sayfa yazma özelliği). Not 0x50 makro tanımı vardır.. bu i2c bus'ındaki chipin adresidir (bir i2c bus'ına birden fazla i2c şey bağlayabilir ve adresi değiştirerek hangisiyle konuşmak istediğinizi seçebilirsiniz). /* Bu iki işlev, 24LC256 EEPROM yongasına yazmamıza yardımcı olur */ #define EEPROM_ADDR 0x50 void EEPROM_write(unsigned int addr, byte data) { int rdata = data; Wire.beginTransmission(EEPROM_ADDR); Wire.write((int)(adr >> 8); // MSB Wire.write((int)(addr & 0xFF)); // LSB Wire.write(rdata); Wire.endTransmission(); //Serial.print("EEPROM yaz: adres: "); //Seri.baskı(adr); //Seri.print(" "); //Serial.println(veri); gecikme(5); } bayt EEPROM_read(işaretsiz int adres) { bayt veri = 0xFF; Wire.beginTransmission(EEPROM_ADDR); Wire.write((int)(adr >> 8); // MSB Wire.write((int)(addr & 0xFF)); // LSB Wire.endTransmission(); Wire.requestFrom(EEPROM_ADDR, 1); if (Wire.available()) data = Wire.read(); //Serial.print("EEPROM okuma: adres: "); //Seri.baskı(adr); //Seri.print(" "); //Serial.println(veri); gecikme(5); dönüş verileri; } Bazı hata ayıklama çıktılarını görmek istiyorsanız Serial.print(…) satırlarının yorumunu kaldırabilirsiniz. arduinos setup() işlevinde tel kitaplığını başlatırsınız ve başlangıç değerlerini okuyabilirsiniz. Burada iki bayt (baytlar ve max_cc), iki sözcük (lean_min ve yalın_max) ve bir dizi sözcük sd_max[3] okudum: // EEPROM'da kayıtlı değerleri oku Wire.begin(); flags=EEPROM_read(0); max_cc=EEPROM_read(1); yalın_min=kelime(EEPROM_read(3), EEPROM_read(2)); yalın_max=kelime(EEPROM_read(5), EEPROM_read(4)); for(int j=0;j<3;j) { sd_max[j]=kelime(EEPROM_read(7 j*2), EEPROM_read(6 j*2)); } İşte onları EEPROM'a yazan kod parçası: EEPROM_write(0, flags); 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)); for(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 konuda gerçekten.

Adım 3: Bağlayın

Bağla
Bağla

Bir muhafazaya vidalamak ve yapılan işler için bir veroboard üzerine bağlayın.

Önerilen: