Kali ini saya akan membahas tentang Osilator. Pada tutorial saya sebelumnya mungkin anda sudah bisa membuat LED berkedip. Selamat!! Sekarang saatnya membuat LED tersebut berkedip lebih cepat.
Yang sampai saat ini anda lakukan adalah
memasukan kode – kode mesin kedalam mikrokontroler lalu menjalankan kode
– kode program tersebut, tapi tahukah anda bagaimana program tersebut
berjalan? Dan seberapa cepat?
Baiklah saya jelaskan. Semua mikrokontroler memerlukan sumber clock.
Bayangkan ini seperti “bit musik” atau detak jantung yang
mikrokontroler gunakan untuk mengeksekusi kode dalam satu langkah. Tanpa
clock, mikrokontroler tidak akan bisa menjalankan kode program dan dengan clock yang buruk ( clock yang tidak tetap) maka program akan dijalankan pada laju yang tidak dapat ditentukan. Anda harus memiliki clock yang sejenis dan juga anda memerlukan clock yang akurat.
Ada banyak cara untuk menghasilkan “detak” untuk mikrokontroler. Mikrokontroler AVR memberikan banyak pilihan. Disini akan saya jelaskan bermacam – macam jenis dari pembangkit detak tersebut
- External RC- ini umumnya digunakan untuk penerapan yang sangat murah meriah. Menggunakan resistor dan kapasitor. Laju pengisian dan pengosongam bisa digunakan sebagai masukan clock. Saya tidak pernah menggunakan jenis clock seperti ini untuk mikrokontroler.
- Internal RC – ini adalah osilator yang sangat keren. Ditemukan pada mikrokontroler jenis baru – seperti halnya AVR. Anda tinggal meminta mikrokontroler membangkitkan clock-nya sendiri. Maka IC ini akan menghasilkan sendiri clocknya. Sayang ini tidak begitu akurat
- External Oscillator – merupakan standar defacto. Dengan menggunakan crystal quartz (atau sering disebut “kristal” saja) pada dua pin oscilator maka program akan dieksekusi dengan frekuensi kristal tersebut.
- External Resonator. Sebuah resonator lebih murah ketimbang osilator namun dengan toleransi yang lebih buruk
- External Clock – selain osilator, bisa digunakan powered clock driver. Lebih mudah dilakukan jika anda memiliki banyak perangkat yang perlu dijalankan dengan frekuensi yang sama. Saya tidak pernah menggunakan opsi ini.
Saya menggunakan opsi 2 dan 3 dari 5 pilihan tersebut. Maka saya akan jelaskan saja opsi yang saya pilih tersebut
Internal RC
Atmel
sangatlah cerdas. Mikrokontroler ATMEGA8- sebagai contoh memiliki
prekonfigurasi 1MHz osilator internal. Jadi ATMEGA8 bisa beroperasi pada
1 instruksi per clock per cycle. Ini berarti setiap osilator melalui satu cycle
maka satu instruksi dilaksanakan ( ini hanya anggapan kasar saja – pada
kenyataannya ada lebih banyak instruksi yang bisa dilaksankan dalam
satu cycle). Anda bisa gunakan mikrokontroler AVR jenis apa
saja, namun intinya adalah sama. Saya hanya mengambil contoh pada
mikrokontroler ATMEGA8, (mungkin mikrokontroler AVR varian yang lain
memiliki osilator internal prekonfigurasi yang sama, silahkan cek datasheet lebih lanjut) yang menjalankan kodenya pada 1MHZ atau 1MIPS (million instructions per second). Ya benar, 1 juta instruksi tiap detik. Itu nilai yang begitu mengagumkan.
Lalu apa masalah dari oscillator
internal ? Osilator internal memiliki toleransi ±5% dan memiliki
maksimal kecepatan 8MHz. Toleransi ± 5% berarti mikrokontroler ATMEGA8
anda mungkin akan bekerja secara aktual pada 1.000.000 * 1,05 =
1.050.000 IPS ketika ATMEGA8 yang lain berjalan dengan 1.000.000 * 0,95
=950.000 IPS. Mungkin ini kelihatannya tidak begitu berbeda, namun dalam
dunia digital perbedaan ini sangat besar. Selain itu ATMEGA8 memiliki
kecepatan maksimal 20Mhz (sedangkan osilator internal berjalan maksimal
8Mhz) jadi jika ada ingin memacu mikrokontroler anda pada kecepatan
maksimal. Gunakan osilator eksternal J
Osilator Eksternal.
Ini adalah jenis yang umum digunakan sebagai sumber clock
Osilator kristal quartz hadir tersedia dalam berbagai bentuk dan frekuensi. Beberapa frekuensi yang umum adalah 20 MHz,
16 MHz, 10 MHz, 4 MHz. Kemudian terdapat sejumlah frekuensi seperti
14,7456 MHz, 9,216 MHz, 32,768kHz yang tersedia karena frekuensi
tersebut adalah frekuensi kelipatan kecepatan yang dibutuhkan untuk
komunikasi serial dan untuk pewaktu.
Didalam metal housing tersebut terdapat crystal quartz
yang kecil yang bergetar dengan frekuensi tertentu. Jika osilator
internal memiliki toleransi ±5% maka pada sisi lain kristal biasanya
memiliki toleransi ± 20 ppm. Jadi kristal 16 MHz mungkin memiliki
frekuensi aktual 16,000,020 MHz dan yang lainnya mungkin memiliki
frekuensi 15,999,980 Mhz. Ini sama dengan ±0,00000125%. Jadi kristal 4
juta kali lebih akurat ketimbang osilator internal
Catatan teknis :
Saya meminta maaf jika mengisi otak anda
sekumpulan hal teknis yang detil. Namun ini sangatlah penting. Perangkat
berbentuk metal perak pada gambar diatas adalah crystal dan secara teknis bukanlah oscillator. Crystal memiliki harga yang murah sedangkan oscillator sebenarnya berharga mahal (sekitar $2- $4). Lalu apa perbedaanya? Sebuah oscillator menggunakan daya dan menghasilkan frekuensi pulsa sebenarnya. Pulsa ini bisa digunakan untuk men-drive sejumlah peripheral. Sedangkan crystal adalah murni komponen pasif yang membutuhkan driver eksternal untuk menjadi sebuah oscillator. Untungnya 99% dari semua mikrokontroler memiliki rangkaian built in sehingga hanya dengan men-attach crystal yang murah pada dua pin masukan osc, maka driver internal pada mikrokontroler akan mendrive crystal sehingga menghasilkan sebuah oscillator dan mikrokontroler memiliki sumber clock
Beberapa kekurangan dari kristal
- Kristal lebih mahal ketimbang resonator.
- Tidak bisa dibuat sekecil resonator.
- Kristal membutuhkan “load capacitors”. Load capacitors memulai kristal berosilasi, Tanpa load capacitors, kristal anda mungkin berfungsi sekarang, tetapi mungkin nanti tidak.
Pada tulisan berikutnya akan dibahas mengenai pengaturan fuse bit. Apa itu fuse bit? Tunggu pada tulisan saya berikutnya
Tidak ada komentar:
Posting Komentar