Archive for April 18, 2012

Teman-teman pasti sering bingung jika telah membeli mikrokontroler (atmega) terus kecepatannya tidak sesuai dengan yang diinginkan. Hal ini dikarenakan mikrokontroler ATMEGA yang ada dipasaran disetel oleh pabrikannya menggunakan internal clock (1MHz). Agar dapat menggunakan clock yang lebih tinggi maka mikrokontroler bisa disetel menggunakan eksternal clock (biasanya menggunakan kristal frekuensi).

Kali ini saya akan menjelaskan bagaimana mengubah internal clock ATMEGA menjadi ekstenal clock. Adapun mikrokontroler yang digunakan adalah adalah ATMEGA164A (512Byte eeprom, 1KB SRAM, 16KB flash memori, max clock sampai 20MHz). Namun, jika anda menggunakan ATMEGA8535, ATMEGA16, ATMEGA 164PA, cara ini masih dapat digunakan. Dan masih banyak lagi seri ATMEGA yang bisa menggunakan cara ini.

Untuk mengetahui apakah clock sudah berpindah dari internal ke eksternal maka saya membuat program LED berkedip sederhana (menggunakan BASCOM) seperti di bawah ini.

$regfile = “m164pdef.dat”
$crystal = 1000000

Config Portd = Output

Do
Set Portd.7
Waitms 1500
Reset Portd.7
Waitms 1500
Loop
End

Regfile yang digunakan menggunakan atmega164p karena tidak ada pilihan atmega164a di BASCOM. Namun, program dapat berjalan di mikrokontroler ATMEGA164A. Outputnya adalah portd.7 (kaki ke-21) dan terhubung ke LED melalui resistor 1K ohm. Karena masih menggunakan clock internal maka crystal dideklarasikan 1juta (1MHz). Kemudian download lah program tersebut ke mikrokontroler anda. LED akan nyala dan mati dengan perioda 3 detik.

Untuk menentukan fuse bit yang digunakan agar dapat beralih ke eksternal clock, kita bisa masuk halaman ini http://www.engbedded.com/fusecalc/.

Pada AVR part name, piling ATmega164P atau ATmega164PA untuk menggantikan ATmega164A. Setelah terpilih, halaman akan otomatis terefresh lalu ada pilihan clock seperti di bawah ini.

Lebih baik selalu menggunakan pilihan terbawah. Karena menunjukan clock eksternal dengan range 1MHz – clock tertingginya. Setelah dipilih maka keterangan di bawahnya akan terlihat seperti di bawah ini.


Defaultnya akan ada tiga pilihan yang tercentang. Ubah semua pilihan yang lain dan sisakan Serial program downloading (tercentang). Pada ATMEGA yang lain juga berlaku seperti itu hanya mencentang SPI-nya saja. Maka pada keterangan di bawahnya lagi akan terlihat seperti di bawah ini.

Untuk mengubah sumber clock maka hasilnya hanya ada tiga pilihan yang tercentang seperti gambar di atas. Sehingga nilai dari command avrdude-nya dapat dilihat di keterangan di bawahnya.

Anda bisa mengkopi rumus yang dilingkari merah ke dalam avrdude, atau yang di dalam kotak hijau saja karena default semua fuse adalah 0xff sehingga kita cukup memasukan yang 0xd9 saja.

Pastika pada avrdude gui yang digunakan setingannya seperti gambar di atas. Karena menggunakan ATMEGA164A maka device yang dipilih menggunakan ATMEGA16. Jika anda menggunakan ATMEGA yang lain bisa disesuaikan.

Pada command line yang saya gunakan kodenya adalah

“D:\Document\kuliah\Kontroler\usbasp\avrdude_gui_usbasp\bin\avrdude.exe” -p m16 -c usbasp -P lpt1 -U flash:w:”D:\Document\SINYALIMPULSE.HEX”:a -U flash:v:”D:\Document\SINYALIMPULSE.HEX”:a -F

Ini adalah kode untuk mengirim (download) program LED berkedip seperti yang telah dijelaskan di atas ke mikrokontroler. Untuk mengfuse mikrokontroler ke eksternal clock tambahkan kode dari website calculator fuse tadi (jangan lupa tambahkan spasi di antaranya). Maka command-nya akan menjadi sebagai berikut.

“D:\Document\kuliah\Kontroler\usbasp\avrdude_gui_usbasp\bin\avrdude.exe” -p m16 -c usbasp -P lpt1 -U flash:w:”D:\Document\SINYALIMPULSE.HEX”:a -U flash:v:”D:\Document\SINYALIMPULSE.HEX”:a -F -U lfuse:w:0xff:m -U hfuse:w:0xd9:m -U efuse:w:0xff:m

Atau anda bisa memasukan yang bernilai 0xd9 saja

“D:\Document\kuliah\Kontroler\usbasp\avrdude_gui_usbasp\bin\avrdude.exe” -p m16 -c usbasp -P lpt1 -U flash:w:”D:\Document\SINYALIMPULSE.HEX”:a -U flash:v:”D:\Document\SINYALIMPULSE.HEX”:a -F -U hfuse:w:0xd9:m

Kemudian klik tombol Execute dan anda bisa lihat LED akan berkedit lebih cepat dari awalnya (sebelumnya jangan lupa untuk memasang terlebih dahulu crystal eksternal yang lebih tinggi dari 1MHz agar terlihat perbedaannya, penulis menggunakan 20MHz). Untuk membuktikan apakah mikrokontroler sudah benar-benar menggunakan clock eksternal, cabut crystal frekuensi yang digunakan. Maka terlihat LED akan berhenti berkedip. Kemudian pasang kembali crystal frekuensi. Maka LED akan kembali berkedip.

Demikian cara untuk mengubah clcok mikrokontroler ATMEGA menjadi eksternal. Namun, intinya adalah seperti mendownload program biasa menggunakan avrdude dan menambahkan command -U hfuse:w:0xd9:m pada command line. Hal ini berlaku untuk kebanyakan produk ATMEGA.

Akhir kata terima kasih atas kunjungannya dan semoga infonya bermanfaat. Pertanyaan, komentar atau saran dapat dilayangkan di kotak komentar di bawah ini.

Good Luck

Good Read

nb: harap baca baik-baik petunjuk yang diberikan. Berhati-hatilah dengan fungsi Lock FUSE karena dapat mengakibatkan mikrokontroler anda tidak dapat dimasuki program yang lain. Kerusakan akibat kecerobohan tidak akan ditanggung penulis.