Anda tentu bertanya, kalau begitu bagaimana program utama kita bisa berjalan sampai akhir kalau selalu terjadi reset terus menerus? Baiklah saya akan jelaskan konsep penggunaan watchdog timer dengan ilustrasi berikut ini.
Anggaplah saya memiliki sebuah mikrokontroler dengan sumber clock eksternal 1 MHz. Ini berarti satu detak clock setara dengan 1 us. Jika mikrokontroler saya memiliki register watchdog timer dengan ukuran 14-bit maka register watchdog timer ini akan mencapai maksimum (terjadi overflow) setiap 214 = 4096 us. Dengan demikian anda harus menyediakan sebuah subrutin yang fungsinya untuk mencegah agar isi register watchdog timer tersebut tidak sampai terjadi overflow. Misalnya, anda buat subrutin untuk membuat isi register watchdog timer menjadi nol setiap 1000 us, 2000 us atau 3000 us. Sehingga sebelum register watchdog timer mencapai overflow isinya sudah direset/di-nol-kan terlebih dahulu. Dengan demikian kejadian overflow ini tidak akan pernah terjadi dan reset secara otomatis tidak akan terjadi pula.
Selanjutnya pada suatu kondisi dimana terjadi hang-up (program kita macet oleh karena suatu hal), maka subrutin yang kita gunakan untuk menge-nol-kan isi register watchdog timer ini juga pasti tidak akan bekerja (ikut berhenti karena kondisi sudah hang-up). Nah pada saat inilah isi register watchdog timer akan terus mencacah naik dan tidak dapat dihentikan. Ketika register watchdog timer sudah mencapai maksimum (terjadi overflow) maka mikrokontroler akan mereset dirinya sendiri dan secara otomatis program akan direset kembali ke awal program. Dengan demikian program terbebas dari keadaan macet walaupun harus memulai progrmamnya dari awal lagi.
Sekarang anda telah mengerti tentang konsep dan penggunaan watchdog timer. Selanjutnya apakah anda akan menggunakannya dalam program anda? Anda perlu mempertimbangkannya sesuai dengan kebutuhan anda. Sekedar saya mengingatkan bahwa dalam penggunaan watchdog timer diatas ada sedikit waktu dan memory yang tersita oleh subrutin yang diciptakan untuk mendukung penggunaan watchdog timer tersebut. Namun karena jumlah waktu dan memory yang tesita ini sangatlah kecil sementara efek/manfaatnya terhadap kehandalan sistem sangat terasa sehingga bisa saja anda abaikan. Setidaknya anda sudah mengerti tentang hal ini, jadi silahkan anda pertimbangan !

Anda tentu bertanya, kalau begitu bagaimana program utama kita bisa berjalan sampai akhir kalau selalu terjadi reset terus menerus? Baiklah saya akan jelaskan konsep penggunaan watchdog timer dengan ilustrasi berikut ini.
Anggaplah saya memiliki sebuah mikrokontroler dengan sumber clock eksternal 1 MHz. Ini berarti satu detak clock setara dengan 1 us. Jika mikrokontroler saya memiliki register watchdog timer dengan ukuran 14-bit maka register watchdog timer ini akan mencapai maksimum (terjadi overflow) setiap 214 = 4096 us. Dengan demikian anda harus menyediakan sebuah subrutin yang fungsinya untuk mencegah agar isi register watchdog timer tersebut tidak sampai terjadi overflow. Misalnya, anda buat subrutin untuk membuat isi register watchdog timer menjadi nol setiap 1000 us, 2000 us atau 3000 us. Sehingga sebelum register watchdog timer mencapai overflow isinya sudah direset/di-nol-kan terlebih dahulu. Dengan demikian kejadian overflow ini tidak akan pernah terjadi dan reset secara otomatis tidak akan terjadi pula.
Selanjutnya pada suatu kondisi dimana terjadi hang-up (program kita macet oleh karena suatu hal), maka subrutin yang kita gunakan untuk menge-nol-kan isi register watchdog timer ini juga pasti tidak akan bekerja (ikut berhenti karena kondisi sudah hang-up). Nah pada saat inilah isi register watchdog timer akan terus mencacah naik dan tidak dapat dihentikan. Ketika register watchdog timer sudah mencapai maksimum (terjadi overflow) maka mikrokontroler akan mereset dirinya sendiri dan secara otomatis program akan direset kembali ke awal program. Dengan demikian program terbebas dari keadaan macet walaupun harus memulai progrmamnya dari awal lagi.
Sekarang anda telah mengerti tentang konsep dan penggunaan watchdog timer. Selanjutnya apakah anda akan menggunakannya dalam program anda? Anda perlu mempertimbangkannya sesuai dengan kebutuhan anda. Sekedar saya mengingatkan bahwa dalam penggunaan watchdog timer diatas ada sedikit waktu dan memory yang tersita oleh subrutin yang diciptakan untuk mendukung penggunaan watchdog timer tersebut. Namun karena jumlah waktu dan memory yang tesita ini sangatlah kecil sementara efek/manfaatnya terhadap kehandalan sistem sangat terasa sehingga bisa saja anda abaikan. Setidaknya anda sudah mengerti tentang hal ini, jadi silahkan anda pertimbangan !
No comments:
Post a Comment
Terima kasih atas komentar yang anda sampaikan , sehingga dapat menambah wawasan saya sebagai penulis dan membuat blog ini semakin berguna banyak orang