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.
Untuk versi BASCOM dan pemasangan LCD mengikuti ketentuan berikut (baik untuk AT89S8253 maupun ATmega32…
- Menggunakan BASCOM 8051 versi 2.0.14.0 (tahun 2007);
- Menggunakan BASCOM AVR versi 1.11.9.5 (tahun 2009);
- Menggunakan Min MCS51/AVR dan Sistem Minimum ATMega32 dan juga modul LCD 2×16;
- Pin RS dan E LCD masing-masing dihubungkan ke:
- AT89S8253:PORT3.0 dan PORT3.1
- ATMega32: PORTA.0 dan PORTA.1
- AT89S8253:PORT3.0 dan PORT3.1
- Pin DATA 4, 5, 6 dan 7 pada LCD masing-masing dihubungkan ke:
- AT89S8253: PORT3.4, PORT3.5, PORT3.6 dan PORT3.7
- ATMega32: PORTB.3, PORTB.2, PORTB.1 dan PORTB.0
Langkah berikutnya adalah menuliskan program BASCOM AVR dan/atau BASCOM 8051-nya. Diawali dengan deklarasi berkas pustaka untuk AT89S8253:
$regfile = “89s8253.dat”
$crystal = 12000000
Atau untuk ATMega32 gunakan deklarasi berikut…
$regfile = “m32def.dat”
$crystal = 7372800
Selanjutnya badan program-nya sama semua. Kita awali dengan mendeklarasikan konfigurasi LCD sesuai dengan ketentuan yang saya berikan sebelumnya, sekaligus mendefinisikan beberapa variabel yang terkait atau terlibat…
Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E = Porta.1 , Rs = Porta.0
Config Lcd = 16 * 2
Dim X As Byte , I As Byte , D As Byte
Berikutnya menampilkan layar pembuka pada LCD dengan tundaan sekitar 3 detik…
Cls
Locate 1 , 1
Lcd “ATMega-32″
Locate 2 , 1
Lcd “Demo EEPROM”
Wait 3
Perintah LOCATE digunakan untuk menempatkan kursor pada LCD, sehingga LOCATE 2,1 artinya tempatkan kursor LCD pada posisi baris 2, kolom 1 demikian seterusnuya. Sedangkan perintah LCD diikuti dengan parameter teks yang akan ditampilkan pada LCD, karena LCD-nya ukuran 2 baris x16 karakter, jika teks lebih dari 16 akan terpotong. Berikutnya menyiapkan tampilan proses untuk penulisan data dan pembacaan data ke/dari EEPROM melalui LCD 2×16 karakter…
Cls
Locate 1 , 1
Lcd “menulis EEPROM..”
Locate 2 , 1
Lcd “datanya=”
Untuk penulisan data-data acak ke EEPROM yang bersangkutan, mulai dari alamat 0 sampai dengan 9 gunakan potongan program berikut…
For I = 0 To 9
Locate 2 , 9
D = Rnd(100)
Lcd D
Writeeeprom D , I
Wait 1
Next I
Instruksi WRITEEEPROM diikuti dengan parameter DATA dan ALAMAT eeprom, sedangkan untuk mendapatkan data-data acak digunakan fungsi RND(100), artinya hasilkan bilangan acak dengan bilangan maksimum 100. Berikutnya menyiapkan tampilan pada LCD untuk pembacaan data…
Locate 2 , 1
Lcd “selesai menulis!”
Wait 2
Cls
Locate 1 , 1
Lcd “membaca EEPROM..”
Locate 2 , 1
Lcd “data ke-”
Untuk pembacaan data-data yang sudah kita tuliskan sebelumnya (10 bilangan acak mulai lokasi 0 sampai dengan 9) gunakan potongan program berikut…
For I = 0 To 9
Locate 2 , 9
Readeeprom X , I
Lcd I ; ” = ” ; X
Wait 1
Next I
End
Jangan lupa akhiri program dengan pernyataan END!
That’s all, begitu mudah bukan? Menggunakan BASCOM Anda tidak perlu pusing-pusing mikiran pengaturan berbagai macam register yang berkaitan dengan EEPROM. Ada pertanyaan atau komentar? Silahkan…
Tags: at89, at89s8252, at89s8253, atmega, atmega32, avr, bascom, eeprom
December 14th, 2009 at 7:03 pm
pa saya punya pengalaman dengan eeprom internal atmega xx, jika terjadi salah penulisan yang diakibatkan karena tegangan nge drop, maka datanya akan berubah semuanya menjadi 0XFF. semua alamat.
secara software saya sudah tidak bisa menanggulanginya, mau pakai cheksum, crc atau lain sebagainya.
kalo secara hardware gimana ya pa cara penanggulangannya?
terima kasih sebelumnya
December 17th, 2009 at 12:19 pm
@dhani:
maaf saya belum tahu solusi-nya bagaimana…
December 18th, 2009 at 3:09 pm
@dhani:
Jika tegangan kurang dari yg diperlukan mikro, memang mikro akan salah menjalankan program. Salah ini bisa berupa mengendalikan port2 yg salah, salah data komunikasi dan juga dapat mengganti data pada EEPROM. Parahnya lagi kesalahan itu random!!! tdk bisa ditanggulangi dgn program. HAL INI SANGAT BERBAHAYA JIKA MENYANGKUT SISTEM YG SENSITIF.
Sulusinya adalah dengan menggunakan Brown-out Detection(BOD). Kalo pada mikro klan MCS51 sepertinya kita harus membuat rangkaian BOD sendiri di luar mikro, kalo mikro klan AVR sudah menyediakan BOD on-chip.
Cara kerja BOD adalah; mikro akan berhenti bekerja jika tegangan sumber melewati batas bawah tegangan BOD (VBOD-) dan akan bekerja lagi(dianggap reset) jika tegangan telah melebihi batas atas tegangan BOD (VBOD+). selisih VBOD- dan VBOD+ disebut tegangan histerisis (VHYST). Dengan adanya fasilitas BOD ngak ada lagi mikro yg ngawur…..
Lalu bagaimana menggunakannya?
Contoh: ATmega8
Kita tinggal mengaktifkan fuse BODEN, maka BOD akan bekerja dengan VBOD- = 3.7V dan VBOD+ = 4.5V.
Artinya jika VCC kurang dari 4.5V, mikro tdk bekerja. Jika di atas 4.5V, mikro akan mulai bekerja. Setelah bekerja jika VCC turun di bawah 3.7V, mikro akan berhenti bekerja. Untuk dapat bekerja kembali tegangan VCC harus di atas 4.5V. Jika terpenuhi maka mikro akan bekerja kembali dari awal program, bukan melanjutkan program sebelumnya pada waktu tegangan turun.
Satu lagi fuse yg berhubungan dengan BOD yaitu BODLEVEL. tapi fuse ini bekerja untuk ATmega8L. Untuk lengkapnya lihat ATmega8.pdf hal:38
trimakasih.
December 31st, 2009 at 9:57 pm
thanks for info,,,mayan nambah info lagi nih ..
January 6th, 2010 at 3:35 pm
tolong soft bascomx yang bisa di sedot,
aq pengen belajar juga…
keep it up!
June 4th, 2010 at 11:35 am
Saya baru belajar tentang Mikro, Sekarang saya ingin membuat minimum system ATMega 32, dimana saya bisa mendapatkan panduan secara detail tentang pembuatannya, karna saya masih sangat awam sekali tentang mikro,terimakasih sebelumnya.
June 4th, 2010 at 3:06 pm
@dedy:
maksudnya rangkaian apa yach? kalao rangkaian minimum silahkan search AVR tutorial di website ini…
July 15th, 2010 at 2:22 pm
pak klo nyimpan data ke eeprom serta baca lagi data yag disimpan dieeprom avr atmega16 dg bhs C gemana?
January 23rd, 2011 at 1:37 pm
mas,beri solusi untuk download program ke at89s8253 dengan usbasp atmega8 dengan software progisp v1.68 selalu tampil ”chip enable program error” saat download berlangsung,tapi sudah dicoba untuk at89s51,at89s52 berhasil & berjalan objeknya.jadi dimana letak kesalahannya?thanks.
March 20th, 2012 at 1:26 pm
pak klo tulis eeprom utuk time (jam, menit, detik) dengan keypad bagaimana ya pak?
May 25th, 2012 at 6:35 pm
kalo dengan bahasa cv avr ada gak gan??
boleh minta tolong gak gan buat dikirim..
October 4th, 2012 at 5:49 pm
Akses EEPROM pada modul AVR ATMega328 punya? bisa bli, dan bisa minta contoh program, DRIVER nya ada?
Trims
November 12th, 2012 at 9:36 pm
Akses EEPROM pada AT89S8253 dan AVR ATMega32
Cara beli board nya bagemana? ada contoh program nya?
January 10th, 2014 at 6:40 pm
kira - kira itu smuanya habis biaya berapa kalo saya mau buat kayak gitu pak ??
April 5th, 2014 at 9:57 am
thank you very much to share info.
June 10th, 2017 at 8:07 pm
Artikel yang sangat Bagus dan Bermanfaat.. Update terus dan sukses selalu ya Gan…
March 29th, 2018 at 9:42 am
Wah ternyata mudah ya
April 18th, 2018 at 9:58 am
thank u for sharing
May 16th, 2018 at 2:14 pm
thank you for sharing it’s so helpful
December 9th, 2018 at 12:10 am
thank you for sharing, im so interested.
October 14th, 2019 at 2:13 pm
Good explanation about a series and a simple program to access the EEPROM on AT89S8253 and ATMega32.ipad rental