Daftar Isi:

Membaca dan Menulis Data ke EEPROM Eksternal Menggunakan Arduino: 5 Langkah
Membaca dan Menulis Data ke EEPROM Eksternal Menggunakan Arduino: 5 Langkah

Video: Membaca dan Menulis Data ke EEPROM Eksternal Menggunakan Arduino: 5 Langkah

Video: Membaca dan Menulis Data ke EEPROM Eksternal Menggunakan Arduino: 5 Langkah
Video: CARA SIMPAN NILAI DATA DI EEPROM ARDUINO 2024, Juli
Anonim
Membaca dan Menulis Data ke EEPROM Eksternal Menggunakan Arduino
Membaca dan Menulis Data ke EEPROM Eksternal Menggunakan Arduino

EEPROM adalah singkatan dari Electrically Erasable Programmable Read-Only Memory.

EEPROM sangat penting dan berguna karena merupakan bentuk memori yang tidak mudah menguap. Ini berarti bahwa bahkan ketika papan dimatikan, chip EEPROM masih menyimpan program yang ditulis padanya. Jadi ketika Anda mematikan papan dan menyalakannya kembali, program yang ditulis ke EEPROM dapat dijalankan. Jadi pada dasarnya, EEPROM menyimpan dan menjalankan program apa pun yang terjadi. Ini berarti Anda dapat mematikan perangkat, mematikannya selama 3 hari, dan kembali dan menyalakannya dan masih dapat menjalankan program yang telah diprogram di dalamnya. Ini adalah cara kerja sebagian besar perangkat elektronik konsumen.

Proyek ini disponsori oleh LCSC. Saya telah menggunakan komponen elektronik dari LCSC.com. LCSC memiliki komitmen kuat untuk menawarkan berbagai pilihan komponen elektronik asli berkualitas tinggi dengan harga terbaik dengan jaringan pengiriman global ke lebih dari 200 negara. Daftar hari ini dan dapatkan diskon $8 untuk pesanan pertama Anda.

EEPROM juga sangat efisien karena byte individu dalam EEPROM tradisional dapat dibaca, dihapus, dan ditulis ulang secara independen. Di sebagian besar jenis memori non-volatil lainnya, ini tidak dapat dilakukan. Perangkat EEPROM serial seperti Microchip 24-series EEPROM memungkinkan Anda menambahkan lebih banyak memori ke perangkat apa pun yang dapat berbicara I²C.

Perlengkapan

  1. EEPROM - 24LC512
  2. ATmega328P-PU
  3. Kristal 16 MHz
  4. Papan tempat memotong roti
  5. Resistor 4.7k Ohm x 2
  6. Kapasitor 22 pF x 2

Langkah 1: Dasar-dasar EEPROM

Dasar-dasar EEPROM
Dasar-dasar EEPROM

Chip Microchip 24LC2512 dapat dibeli dalam paket DIP 8 pin. Pin pada 24LC512 cukup lurus dan terdiri dari power(8), GND(4), write protection(7), SCL/SDA(6, 5), dan tiga pin alamat(1, 2, 3).

Sejarah Singkat ROM

Komputer jenis "Program Tersimpan" awal - seperti kalkulator meja dan juru keyboard - mulai menggunakan ROM dalam bentuk Diode Matrix ROM. Ini adalah memori yang terdiri dari dioda semikonduktor diskrit yang ditempatkan pada PCB yang diatur secara khusus. Ini memberi jalan ke Mask ROM dengan munculnya sirkuit terintegrasi. Mask ROM sangat mirip dengan Diode Matrix ROM hanya saja diimplementasikan pada skala yang jauh lebih kecil. Ini berarti, bagaimanapun, bahwa Anda tidak bisa begitu saja memindahkan beberapa dioda dengan besi solder dan memprogram ulang. Mask ROM harus diprogram oleh pabrikan dan setelah itu tidak dapat diubah.

Sayangnya, Mask ROM mahal dan membutuhkan waktu lama untuk diproduksi karena setiap program baru membutuhkan perangkat baru untuk diproduksi oleh pengecoran. Namun, pada tahun 1956, masalah ini diselesaikan dengan penemuan PROM (Programmable ROM) yang memungkinkan pengembang untuk memprogram chip itu sendiri. Itu berarti produsen dapat memproduksi jutaan perangkat tidak terprogram yang sama yang membuatnya lebih murah dan lebih praktis. PROM, bagaimanapun, hanya dapat ditulis sekali menggunakan perangkat pemrograman tegangan tinggi. Setelah perangkat PROM diprogram, tidak ada cara untuk mengembalikan perangkat ke keadaan tidak terprogram.

Ini berubah pada tahun 1971 dengan penemuan EPROM (Erasable Programmable ROM) yang - selain menambahkan huruf lain ke akronim - membawa serta kemampuan untuk menghapus perangkat dan mengembalikannya ke keadaan "kosong" menggunakan sumber sinar UV yang kuat. Itu benar, Anda harus menyorotkan cahaya terang pada IC untuk memprogram ulang, betapa kerennya itu? Yah, ternyata itu cukup keren kecuali Anda seorang pengembang yang mengerjakan firmware dalam hal ini Anda benar-benar ingin dapat memprogram ulang perangkat menggunakan sinyal listrik. Ini akhirnya menjadi kenyataan pada tahun 1983 dengan pengembangan EEPROM (Electrically Erasable Programmable ROM) dan dengan itu, kita sampai pada akronim yang berat saat ini.

Langkah 2: Keunikan EEPROM

Ada dua kelemahan utama EEPROM sebagai metode penyimpanan data. Di sebagian besar aplikasi, pro lebih besar daripada kontra, tetapi Anda harus menyadarinya sebelum memasukkan EEPROM ke dalam desain Anda berikutnya.

Pertama-tama, teknologi yang membuat EEPROM bekerja juga membatasi berapa kali EEPROM dapat ditulis ulang. Ini berkaitan dengan elektron yang terperangkap dalam transistor yang membentuk ROM dan menumpuk sampai perbedaan muatan antara "1" dan "0" tidak dapat dikenali. Tapi jangan khawatir, kebanyakan EEPROM memiliki jumlah penulisan ulang maksimum 1 juta atau lebih. Selama Anda tidak terus-menerus menulis ke EEPROM, kemungkinan Anda tidak akan mencapai maksimum ini. Kedua, EEPROM tidak akan terhapus jika Anda menghapus daya darinya, tetapi tidak akan menyimpan data Anda tanpa batas waktu. Elektron dapat melayang keluar dari transistor dan melalui isolator, secara efektif menghapus EEPROM dari waktu ke waktu. Konon, ini biasanya terjadi selama bertahun-tahun (meskipun dapat dipercepat oleh panas). Sebagian besar produsen mengatakan bahwa data Anda aman di EEPROM selama 10 tahun atau lebih pada suhu kamar. Dan ada satu hal lagi yang harus Anda ingat ketika memilih perangkat EEPROM untuk proyek Anda. Kapasitas EEPROM diukur dalam bit dan bukan byte. EEPROM 512K akan menampung data 512Kbits, dengan kata lain, hanya 64KB.

Langkah 3: Sambungan Perangkat Keras Arduino

Sambungan Perangkat Keras Arduino
Sambungan Perangkat Keras Arduino
Sambungan Perangkat Keras Arduino
Sambungan Perangkat Keras Arduino

Oke, sekarang kita tahu apa itu EEPROM, mari kita kaitkan satu dan lihat apa yang bisa dilakukannya! Agar perangkat kita dapat berbicara, kita perlu menyambungkan daya serta saluran serial I²C. Perangkat ini, khususnya, berjalan pada 5VDC sehingga kami akan menghubungkannya ke output 5V dari Arduino UNO kami. Selain itu, jalur I²C akan membutuhkan resistor pull-up agar komunikasi terjadi dengan benar. Nilai resistor ini tergantung pada kapasitansi saluran dan frekuensi yang ingin Anda komunikasikan, tetapi aturan praktis yang baik untuk aplikasi non-kritis hanya menyimpannya dalam kisaran kΩ. Dalam contoh ini, kita akan menggunakan resistor pull-up 4.7kΩ.

Ada tiga pin pada perangkat ini untuk memilih alamat I²C, dengan cara ini Anda dapat memiliki lebih dari satu EEPROM di bus dan menangani masing-masing secara berbeda. Anda bisa saja meng-ground-kan semuanya, tapi kami akan memasang kabelnya sehingga kami bisa memasukkan perangkat berkapasitas lebih tinggi nanti di tutorial.

Kami akan menggunakan papan tempat memotong roti untuk menghubungkan semuanya bersama-sama. Diagram di bawah menunjukkan sambungan yang benar untuk sebagian besar perangkat EEPROM I²C, termasuk EEPROM Microchip 24-seri yang kami jual.

Langkah 4: Membaca dan Menulis

Sebagian besar waktu ketika Anda menggunakan EEPROM bersama dengan mikrokontroler, Anda sebenarnya tidak perlu melihat semua isi memori sekaligus. Anda cukup membaca dan menulis byte di sana-sini sesuai kebutuhan. Dalam contoh ini, bagaimanapun, kita akan menulis seluruh file ke EEPROM dan kemudian membaca semuanya kembali sehingga kita dapat melihatnya di komputer kita. Ini seharusnya membuat kita nyaman dengan ide menggunakan EEPROM dan juga memberi kita perasaan tentang seberapa banyak data yang benar-benar dapat ditampung pada perangkat kecil.

Menulis sesuatu

Sketsa contoh kami hanya akan mengambil byte apa pun yang masuk melalui port serial dan menulisnya ke EEPROM, melacak berapa banyak byte yang telah kami tulis ke memori.

Menulis satu byte memori ke EEPROM umumnya terjadi dalam tiga langkah:

  1. Kirim Byte Paling Signifikan dari alamat memori yang ingin Anda tulis.
  2. Kirim Byte Terkecil dari alamat memori yang ingin Anda tulis.
  3. Kirim byte data yang ingin Anda simpan di lokasi ini.

Mungkin ada beberapa kata kunci di sana yang menjelaskan secara terbuka:

Alamat Memori

Jika Anda membayangkan semua byte dalam EEPROM 512 Kbit berdiri dalam baris dari 0 hingga 64000 - karena ada 8 bit hingga satu byte dan oleh karena itu Anda dapat memuat 64000 byte pada EEPROM 512 Kbit - maka alamat memori adalah tempatnya baris di mana Anda akan menemukan byte tertentu. Kita perlu mengirim alamat itu ke EEPROM sehingga tahu di mana harus meletakkan byte yang kita kirim.

Byte Paling Signifikan dan Paling Tidak Signifikan

Karena ada 32000 kemungkinan tempat dalam EEPROM 256 Kbit - dan karena 255 adalah angka terbesar yang dapat Anda encode dalam satu byte - kami perlu mengirimkan alamat ini dalam dua byte. Pertama, kami mengirim Most Significant Byte (MSB) - 8 bit pertama dalam kasus ini. Kemudian kami mengirim Least Significant Byte (LSB) - 8 bit kedua. Mengapa? Karena begitulah harapan perangkat untuk menerimanya, itu saja.

Penulisan Halaman

Menulis satu byte pada satu waktu baik-baik saja, tetapi sebagian besar perangkat EEPROM memiliki sesuatu yang disebut "buffer penulisan halaman" yang memungkinkan Anda untuk menulis beberapa byte sekaligus dengan cara yang sama seperti yang Anda lakukan pada satu byte. Kami akan mengambil keuntungan dari ini dalam sketsa contoh kami. EEPROM menggunakan penghitung internal yang secara otomatis meningkatkan lokasi memori dengan setiap byte data berikut yang diterimanya. Setelah alamat memori telah dikirim, kami dapat mengikutinya dengan data hingga 64 byte. EEPROM mengasumsikan (dengan benar) bahwa alamat 312 diikuti oleh 10 byte akan mencatat byte 0 pada alamat 312, byte 1 pada alamat 313, byte 2 pada alamat 314, dan seterusnya.

Baca Sesuatu

Membaca dari EEPROM pada dasarnya mengikuti proses tiga langkah yang sama seperti menulis ke EEPROM:

  1. Kirim Byte Paling Signifikan dari alamat memori yang ingin Anda tulis.
  2. Kirim Byte Terkecil dari alamat memori yang ingin Anda tulis.
  3. Minta byte data di lokasi itu.

Langkah 5: Skema dan Kode

Skema dan Kode
Skema dan Kode

Kode:

#termasuk

#define eeprom 0x50 //mendefinisikan alamat dasar EEPROM

batalkan pengaturan() {

Kawat.mulai(); //membuat objek Kawat

Serial.begin(9600);

alamat int yang tidak ditandatangani = 0; //alamat pertama EEPROM

Serial.println("Kami menulis kode pos 22222, kode pos"); for(alamat = 0; alamat< 5; alamat++) writeEEPROM(eeprom, alamat, '2'); // Menulis 22222 ke EEPROM

for(alamat = 0; alamat< 5; alamat++) { Serial.print(readEEPROM(eeprom, alamat), HEX); } }

lingkaran kosong() {

/*tidak ada apa-apa dalam fungsi loop() karena kita tidak ingin arduino menulis hal yang sama berulang kali ke EEPROM berulang kali. Kami hanya ingin menulis satu kali, jadi fungsi loop() dihindari dengan EEPROMs.*/ }

//mendefinisikan fungsi writeEEPROM

void writeEEPROM(int deviceaddress, unsigned int eeaddress, byte data) { Wire.beginTransmission(deviceaddress); Wire.write((int)(eeaddress >> 8)); //menulis MSB Wire.write((int)(eeaddress & 0xFF)); //menulis LSB Wire.write(data); Kawat.endTransmisi(); }

//mendefinisikan fungsi readEEPROM

byte readEEPROM(int deviceaddress, unsigned int eeaddress) { byte rdata = 0xFF; Wire.beginTransmission(alamat perangkat); Wire.write((int)(eeaddress >> 8)); //menulis MSB Wire.write((int)(eeaddress & 0xFF)); // menulis LSB Wire.endTransmission(); Wire.requestFrom(alamat perangkat, 1); if (Wire.available()) rdata = Wire.read(); kembali rdata; }

Direkomendasikan: