Isi kandungan:

Menambah EEPROM 24LC256 ke Arduino Due: 3 Steps
Menambah EEPROM 24LC256 ke Arduino Due: 3 Steps

Video: Menambah EEPROM 24LC256 ke Arduino Due: 3 Steps

Video: Menambah EEPROM 24LC256 ke Arduino Due: 3 Steps
Video: BELAJAR ARDUINO #84 - External EEPROM Dengan IC AT24C256 2024, Julai
Anonim
Menambah EEPROM 24LC256 ke Arduino Due
Menambah EEPROM 24LC256 ke Arduino Due

Arduino kerana kekurangan eeprom. Instruksional ini menambahkan satu dan membolehkan anda menyimpan nilai dalam memori tidak stabil yang akan bertahan daripada kemas kini firmware arduino.

Langkah 1: Papan roti

Papan Roti
Papan Roti

Terdapat beberapa arahan yang sangat baik di sini: https://www.hobbytronics.co.uk/arduino-external-eepromSaya hanya mengikutinya. Foto menunjukkan rangkaian papan roti. pin 1 hingga 4 dan pin 7 dibumikan. pin 8 disambungkan ke bekalan 3.3V pada papan waktunya. Kabel kuning (pin 6) dan putih (pin 5) disambungkan ke pin SDA (data) dan SCL (jam) i2c pada papan waktunya (bernombor 21 dan 20).

Langkah 2: Masa Kod

Masa Kod
Masa Kod

Berikut adalah beberapa coretan kod yang saya gunakan dalam lakaran saya. Pertama, sertakan header perpustakaan Wire di suatu tempat berhampiran bahagian atas lakaran anda: / * Gunakan EEPROM 24LC256 untuk menyimpan tetapan * / #include Kemudian tambahkan beberapa fungsi untuk membaca dan menulis bait dari EEPROM (Saya hanya mementingkan bait individu tetapi ada ciri penulisan halaman dalam cip juga). Perhatikan terdapat definisi makro 0x50.. ini adalah alamat cip pada bas i2c (anda boleh menyambungkan lebih dari satu benda i2c pada bas i2c dan memilih mana yang ingin anda bicarakan dengan menukar alamat). / * Kedua fungsi ini membantu kami menulis kepada cip EEPROM 24LC256 * / #tentukan EEPROM_ADDR 0x50 membatalkan EEPROM_write (data int addr, byte yang tidak ditandatangani) {int rdata = data; Wire.beginTransmission (EEPROM_ADDR); Wire.write ((int) (addr >> 8)); // MSB Wire.write ((int) (addr & 0xFF)); // LSB Wire.write (rdata); Wire.endTransmission (); //Serial.print("EEPROM write: addr: "); //Serial.print(addr); //Serial.print (""); //Serial.println(data); kelewatan (5); } byte EEPROM_read (int addr yang tidak ditandatangani) {data bait = 0xFF; Wire.beginTransmission (EEPROM_ADDR); Wire.write ((int) (addr >> 8)); // MSB Wire.write ((int) (addr & 0xFF)); // LSB Wire.endTransmission (); Wire.requestFrom (EEPROM_ADDR, 1); jika (Wire.available ()) data = Wire.read (); //Serial.print("EEPROM baca: addr: "); //Serial.print(addr); //Serial.print (""); //Serial.println(data); kelewatan (5); mengembalikan data; } Anda boleh melepaskan garis Serial.print (…) jika anda ingin melihat beberapa output debug. Dalam fungsi persediaan arduino () anda memulakan perpustakaan wayar dan dapat membaca dalam nilai awal. Di sini saya membaca dalam dua bait (flag dan max_cc), dua perkataan (lean_min dan lean_max) dan susunan kata sd_max [3]: // nilai baca yang disimpan dalam EEPROM Wire.begin (); bendera = EEPROM_read (0); max_cc = EEPROM_read (1); lean_min = perkataan (EEPROM_read (3), EEPROM_read (2)); lean_max = perkataan (EEPROM_read (5), EEPROM_read (4)); untuk (int j = 0; j <3; j) {sd_max [j] = word (EEPROM_read (7 j * 2), EEPROM_read (6 j * 2)); } Inilah sedikit kod yang menulisnya ke dalam EEPROM: 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)); untuk (int j = 0; j <3; j) {EEPROM_write (6 j * 2, lowByte (sd_max [j])); EEPROM_write (7 j * 2, highByte (sd_max [j])); } Itu betul-betul.

Langkah 3: Wire It Up

Wire It Up
Wire It Up

Kabelkan ke beberapa papan kenyataan untuk memasukkan ke dalam kandang dan kerja yang telah dilakukan.

Disyorkan: