Perhatikan Fuse pada AVR Burn-O-Mat
Jangan sepelekan hal yang sepele. Pepatah lama itu berlaku dimana-mana termasuk diranah mikroelektronik. Baru-baru ini sy menemukan akar dari permasalahan ketika mengerjakan proyek AVR.
Asal Usulnya begini, tujuan dari proyek AVR yang dikerjakan adalah untuk menjenerate sinyal dalam order KHz. AVR yang digunakan adalah ATMEGA 8L-16PU. Fasilatas register AVR yang digunakan adalah 16 bit Timer 1A/B dan register Output Compare(OCR). Mode Wave Generator yang di-setting adalah mode 9 (PWM Fast, Frequency Correct) dimana keluarannya melalui pin OC1A atau pin 15.
Langkah selanjutnya adalah men-set nilai register output compare pada OCR 1 byte dengan nilai maksimum 255. Penentuan nilai OCR ini akan menentukan frekuensi yang kita inginkan, dengan menggunakan persamaan dibawah solusi bisa didapatkan :
OCRn = [ F_clk/(2*N*F_des) ] – 1 (Rumus 1)
dimana :: F_clk = Frekuensi Clock yg digunakan ; N = Prescaller Clock ; F_des = Frekeunsi yg ingin dihasilkan.
Pada prakteknya Sumber Clock nya adalah eksternal oleh Crystal 8 MHz , Pre-Scale nya 1, dan frequency yang diinginkan sebesar 17 KHz. Dengan memasukan nilai dari parameter rumus diatas didapatlah bahwa nilai register yang harus di-isikan adalah 118 desimal.
Teknik tersebut telah teruji sampai…
ketika klien minta dibuatkan ulang dengan chip yg lain yg sejenis, tanpa pikir panjang lagi sy download hex program yg lama kedalam chip yg baru namun hasilnya tidak sama…frekuensi yg dihasilkan terlalu rendah sampai akhirnya disimpulkan bahwa F_clk sistem menurun sampai 500 KhZ !!! Lantas chip-nya lah yg dikambinghitamkan sampai akhirnya memesan ke-digi key namun, tetap saja hasilnya sama.
Karena sudah saturasi akhirnya pandangan bahwa chips yg bermasalah dipertanyakan kembali, bukan hal yg gampang merubah pandangan ini mengingat didukung oleh fakta bahwa di-chip sebelumnya yg di-impor dari luar berjalan dengan baik. Beruntunglah krn ditemukan satu chip lokal yg pernah diprogram sebelumnya, dialah ‘black swan’ chip lokal .
Ketika melihat ‘angsa hitam’ ini akhirnya teringat bahwa prosedure memprogram file hex nya adalah berbeda saat pertama dan sekarang. Perbedaan mencoloknya adalah dahulu tidak digunakan AVR Burn-O-Mat untuk memprogram chip. Besar dugaan fuses-lah biang keroknya.
Fuses digunakan untuk memprogram konfigurasi dari bit-bit tertentu dalam hal ini adalah konfigurasi bit-bit clock pada AVR. Dipikirnya kondisi default bit-bit clock AVR Burn-O-Mat adalah konfigurasi untuk sumber clock eksternal, namun nyatanya tidak. Sebaliknya, konfigurasi default dari AVR Burn-O-Mat clock yg diimplementasikan adalah clock internal, pantas saja frekuensi clock nya tidak sama dengan frekuensi kristal yg diterapkan.
Setelah fuse dituliskan bukan dengan konfigurasi default hasilnya……begitulah akar permalahan ditumpas.
Perkara ini disepelekan karena secara historis belum pernah menemukan masalah yg diakibatkan oleh fuse, ketika melakukan programming kode-kode hex .
Sekalilagi nilai moral yg bisa diambil adalah: Jangan Sepelekan hal yg Sepele.
