Categories
Mikrokontroler

Akses EEPROM pada AT89S8253 dan AVR ATMega32

Artikel ini sebenarnya merupakan sambungan dari penjelasan saya tentang EEPROM yang ada di AT89S8253. Pada artikel ini saya bahas sebuah rangkaian dan program sederhana untuk mengakses (tulis/baca) EEPROM yang ada pada AT89S8253 (sebuah mikrokontroler keluarga Atmel AT89) dan ATMega32 (sebuah mikrokontroler keluarga Atmel AVR). Perhatikan gambar hasil-hasil bidikan saya atas eksperimen yang saya lakukan menggunakan AT89S8252 dan ATMega32 (IC ada di sebelah sisi menghadap kebawah)…

Okey, kita awali dengan rangkaian yang digunakan, cukup sederhana, dalam hal ini hanya digunakan sebuah LCD untuk memberitahukan kepada kita apa yang terjadi di-‘dalam’ sana, maksudnya di dalam mikrokontroler yang bersangkutan. Nantinya aplikasi ini hanya akan menuliskan 10 bilangan acak ke EEPROM mulai alamat 0 sampai dengan 9. Cukup sederhana karena yang ditekankan adalah konsep pengaksesan EEPROM yang begitu mudah menggunakan BASCOM 8051 dan/atau BASCOM AVR dari MCSELEC.

Categories
Mikrokontroler

Penanganan Memori EEPROM (uC AT89S8253)

Mikrokontroler AT89S8253 dilengkapi dengan memori EEPROM sebesar 2 Kb (lumayan nich) yang bisa Anda gunakan untuk menyimpan data-data penting walaupun catu daya ke mikrokontroler dimatikan, Atmel memberikan garansi kepada Anda sekitar 100.000 kali penulisan data. Mudah digunakan karena hanya melibatkan beberapa bit kontrol.

Pengontrolan penulisan dan pembacaan data ke/dari EEPROM melalui register khusus EECON. Proses penulisan EEPROM relatif lambat (penulisan ke sebuah register bisa memakan waktu sekitar 4 milidetik), sehingga trik perangkat keras perlu dilakukan untuk meningkatkannya. Saat bit EELD dalam EECON di-set (berlogika “1”), data tidak langsung dituliskan ke EEPROM tetapi disimpan dulu di sebuah buffer sementara (memori sementara) dengan kapasitas 32 byte. Saat bit EELD ini di-nol-kan, data pertama dan seterusnya akan dituliskan secara normal (butuh 4 milidetik), artinya ke-32 byte data tersebut akan ditulis langsung ke EEPROM secara bersamaan dan hanya membutuhkan 4 milidetik BUKAN 32×4 milidetik = 128 milidetik.

Memori EEPROM ini diperlakukan seperti memori eksternal, dengan demikian instruksi khusus untuk penanganan memori tambahan (MOVX) digunakan. Bit EEMEN dalam register EECON menentukan apakah data akan dibaca/ditulis dari/ke EEPROM eksternal beneran atau EEPROM on-chip (di dalam uC).

Register EECON

Register ini berisi bit-bit kontrol untuk mengoperasikan memori EEPROM, perhatikan gambar berikut

WRTINH

Ini bit yang cuman bisa dibaca saja, saat tingkat tegangan catu daya terlalu rendah untuk operasi pemrograman EEPROM, perangkat keras secara otomatis akan me-nol-kan bit ini, artinya pemrograman EEPROM tidak dapat dilakukan atau proses pemrograman yang sedang berlangsung akan dibatalkan.

RDY/BSY

Bit ini hanya dibaca saja:

  • 0 – Sedang proses pemrograman (butuh waktu 4 milidetik).
  • 1 – Proses pemrograman sudah selesai (data dituliskan ke EEPROM).

DPS

  • 0 – Alamat untuk pemrograman atau pembacaan dari EEPROM tersimpan di register DP0H dan DP0L.
  • 1 – Alamat untuk pemrograman atau pembacaan dari EEPROM tersimpan di register DP1H dan DP1L.

EEMEN

  • 0 – Instruksi MOVX digunakan untuk mengakses memori eksternal.
  • 1 – Instruksi MOVX digunakan untuk mengakses memori EEPROM internal. Jika register alamat lebih besar dari 2KB, maka mikrokontroler akan mengakses memori eksternal.

EEMWE

Saat berlogika “1”, bit EEMWE membolehkan penulisan data ke EEPROM. Instruksi MOVX digunakan untuk penulisan/penyimpanan data. Setelah proses penulisan selesai, bit ini harus di-nol-kan secara manual dalam program.

EELD

Saat berlogika “1”, bit EELD ini membolehkan lebih dari 32 byte dituliskan bersamaan. Jika bit-nya di-set, instruksi MOVX tidak akan menginisialisasi pemrograman EEPROM, hanya sekedar menyimpan data ke buffer data dari memori EEPROM. Sebelum menuliskan data terakhir, bit ini harus di-nol-kan dan setelah instruksi MOVX, seluruh isi buffer secara otomatis dituliskan ke EEPROM selama 4 milidetik.