Baiklah, mari kita mulai bagaimana cara mensetting fuse bits. Meskipun banyak diinternet menyediakan fuse calculator sehingga dengan mudahnya kita bisa mensetting fuse bit. Tapi tak ada salahnya mempelajari cara manualnya sehingga kita bisa paham filosofinya.
Fuse bit memiliki 2 byte, 1 byte pertama berupa High Fuse
Byte dan 1 byte yang kedua berupa Low Fuse Byte. Pertama akan kita
tampilkan cara setting pada low fuse byte. Berikut ini isi dari low fuse byte :
Low fuse byte seperti yang tampil diatas,
dari 8 bit tadi akan kita cascade lagi dengan penjelasan dimulai dari CKSEL3..0
(3 sampai 0). Berikut ini beberapa mode dari CKSEL (clock source
select/pemilihan sumber clock);
Dari tabel diatas dijelaskan
nilai CKSEL3..0 ada diantara nilai 1111-1010 (maksudnya pada range ini terdapat
nilai yang berkaitan dengan frekuensi clock yang kita inginkan, hanya tabel ini
masih ada penjabaran berikutnya). Tetapi untuk menentukan pada nilai yang mana
frekuensi yang kita inginkan kita harus melihat lagi tabel berikutnya :
Bisa dilihat pada tabel diatas, dari
CKSEL3..1 (CKSEL 0 ada pada penjelasan berikutnya) dan kombinasinya dengan
CKOPT (digunakan pada range frekuensi yang tinggi,dibutuhkannya ayunan sinyal
secara penuh,atau saat akan men drive sebuah buffer dimana buffer tersebut
memiliki port output yang sama dengan clock). INGAT!!!!, PADA SETTING FUSE
BITS INI “1” BERARTI UNPROGRAMMED,”0” BERARTI PROGRAMMED. Semisal kita
ingin mengeset clock dengan sumber eksternal berupa kristal 12 Mhz maka kita
set CKOPT 0 dan CKSEL3..1 111 boleh juga 110 kecuali 101 ya!!,101 untuk
pemakaian ceramic resonator.
Mari kita lanjutkan dengan pengesetan bit berikutnya yaitu
CKSEL 0,SUT0..1. Berikut ini tabel dari
CKSEL 0,SUT0..1 :
Okeh bisa dilihat kan,3 bit tadi berfungsi untuk mengatur
waktu start up mikrokontroller untuk mencapai keadaan stabilnya. Agar lebih
mudah dipahami akan saya beri sebuah contoh. Semisal, kita memiliki chip ATMega
16 dan ingin menggunakan clock eksternal dengan kristal 12 Mhz. Maka, bagaimana
cara mensetting low fuse byte nya agar chip benar2 bisa mendapat suplai clock
dari kristal 12 Mhz ?. Pertama buka datasheet ATMega16 atau lihat tabel yang
sudah saya tampilkan diatas.
·
Kita tentukan fuse untuk sumber clocknya, lihat tabel 2
kemudian tabel 4, kita pilih untuk CKOPT =0 (ada di high fuse byte) dan CKSEL
3=1 ; CKSEL 2=1 ; CKSEL 0 =1, alasan kenapa saya pilih 111 karena eksternal
clock yang kita pasang berfrekuensi tinggi.
·
Lihat tabel 5 untuk menentukan start up time, misal kita
ingin waktu startup paling cepat maka bisa dipilih CKSEL = 1; SUT 1 = 1 ; SUT 0
=1.
·
Jika kita ingin mengaktifkan fitur brownout detection
maka bit BODEN = 0 (ingat,”0” berarti unprogrammed, dan kita bisa mengaktifkan
berapa level trigger brown out detection akan aktif, pada chip ATMega 16 ada
dua opsi 2.7 V atau 4.0 V. Opsi 2.7 V BODLEVEL = 1,BODLEVEL = 0. Anggap saja
kita akan mengaktifkan BOD ya. Pada chip ATTiny 2313 BOD level lebih bervariasi
sampai Vcc 1.7 V, tapi akan kita bahas di tempat lain.
3 step diatas selesai, berarti kita
sudah mengeset sisi low fuse byte, dibawah ini bisa dilihat hasil setting low
fuse byte dengan eksternal kristal :
BODLEVEL
|
BODEN
|
SUT1
|
SUT0
|
CKSEL3
|
CKSEL2
|
CKSEL1
|
CKSEL0
|
1
|
0
|
1
|
1
|
1
|
1
|
1
|
1
|
Atau dalam hexa
nya :0xBF.
Berikutnya
adalah mensetting high fuse byte, dibawah ini isi dari high fuse byte:
Hati hati dengan
bit OCD (On Chip Debug) dan SPIEN (Serial Programming Interface Enable).
Pastikan OCD = 1 dan SPIEN = 0, jika sampai keliru bisa-bisa chip mikro tidak
bisa diprogram dari luar. Karena kita memakai eksternal programmer maka fitur
bootloader kita nonaktifkan, maka bit BOOTRST = 1,untuk BOOTSZ0..1 = 0 saja.
Dan jangan lupa ya, CKOPT bit tadi sudah di set = 0.
Begini jelasnya :
OCDEN
|
JTAGEN
|
SPIEN
|
CKOPT
|
EESAVE
|
BOOTSZ1
|
BOOTSZ0
|
BOOTRST
|
1
|
0
|
0
|
0
|
1
|
1
|
1
|
1
|
Atau hexanya : 0X8F
Berikut ini
beberapa cara setting fuse byte dari beberapa aplikasi :
1.CodeVision AVR
Pilih pada Chip
Programmer maka akan muncul tampilan seperti di atas. Untuk catatan, saat ingin
memprogram fuse bits pada CVAVR, “centang” berarti programmed (pada
datasheet atmel berarti di set 0) sedangkan “tidak dicentang” berarti
unprogrammed (pada datasheet atmel berarti di set 1).
Kemudian klik tab”program”
pilih fuse bits atau kalau ingin sekalian memasukkan application program
jua bisa klik “program all”.
2.Extreme burner
AVR
Buka aplikasi
Extreme burner AVR pilih tab “Fuse Bits/Settings”. Centang checkbox low
fuse dan high fuse, kemudian kita masukkan nilai setting fuse yang sudah kita
tentukan tadi. Kemudian klik button Write.
3. AVRDUDE
Pilih jenis MCU
nya, atau langsung klik detect saja bisa langsung muncul jenis chip kita pakai,
dan pastinya minimum sistem mikro dan programmer sudah connect ke komputer.
Lalu masukkan nilai Low dan High fuse pada textbox L dan H. Kemudian tekan
write.
Demikian lah
sedikit yang saya tahu yang bisa bagikan buat para pembaca blog ini. Semoga
bisa bermanfaat dan barokah. Saya mohon maaf dan koreksinya jika ada hal hal
yang perlu dikoreksi. Mohon untuk segera di protes,,hehehe...kalau ada hal yang
keliru.