15. Watchdog Timer AVR ATmega16/32/8535
15. Watchdog Timer AVR ATmega16/32/8535

Pendahuluan

  • Watchdog Timer (WDT) dapat digunakan untuk mereset system secara otomatis saat terjadi timeout
  • Reset pada system ini dibutuhkan untuk mencegah kegagalan system saat terjadi kesalahan pada hardware atau eror dalam program
  • Terdapat banyak aplikasi dimana sebuah system tidak boleh berhenti pada titik tertentu (bahkan tidak boleh berhenti dalam waktu yang singkat) contoh: Dalam system radar, jika system radar tidak bekerja selama 5 menit, maka hal ini akan mengakibatkan dampak buruk (seperti: pesawat atau roket musuh tidak akan terdeteksi yang akhirnya akan mengakibatkan kerugian/kesalahan yang fatal)
  • System harus cukup handal dalam mendeteksi kegagalan secara otomatis dengan cepat & mereset system itu sendiri agar dapat terhindar dari kegagalan & berfungsi secara normal tanpa eror
  • Salah satu cara adalah anda dapat menggunakan tombol reset saat terjadi kegagalan system. Tetapi cara ini tidak efektif diterapkan pada system yang sudah terpasang & berjalan, sehingga penggunaan WDT akan lebih efektif karena WDT mereset system secara otomatis & tanpa ada campur tangan manusia

Bagaimana cara kerja WDT?

  • WDT berisi periode/waktu timeout yang tergantung pada aplikasi/program
  • WDT dapat bekerja secara mandiri (tidak tergantung pada clock system karena WDT memiliki oscillator internal)
  • WDT dikosongkan/direset oleh software setiap kali sebelum waktu timeout terjadi
  • Jika software gagal dalam mengosongkan/mereset WDT sebelum waktu timeout-nya, maka WDT akan mereset system.
  • Untuk tujuan inilah WDT digunakan untuk mengatasi kegagalan software dalam aplikasi-aplikasi realtime
  • WDT juga digunakan untuk “membangunkan” MCU dari mode “Sleep”

Register Watchdog Timer

Untuk mengaktifkan, me-nonaktifkan dan memeriksa status WDT, Gunakan register-register ini:

MCU Control and Status Register (MCUCSR):

  • Bit 3 – WDRF: Watchdog Reset Flag. Bit ini digunakan untuk memeriksa status WDT, bit ini = ‘1’ jika terjadi reset WDT.

.

Watchdog Timer Control Register (WDTCR):

  • Bit 4 – WDTOE: Watchdog Turn-off Enable. Bit ini digunakan untuk me-nonaktifkan WDT. Bit ini bernilai = ‘1’ hanya jika bit WDE = ‘0’. Jika sebaliknya maka WDT diaktifkan.
  • Bit 3 – WDE: Watchdog Enable. Bit ini digunakan untuk mengaktifkan WDT. Saat bit WDE = ‘1’ maka WDT aktif dan jika sebaliknya maka WDT tidak aktif.

 Untuk me-nonaktifkan WDT:

  1. Tulis ‘1’ pada bit WDTOE &WDE
  2. Dalam waktu 4 sistem clock selanjutnya, tulis nilai ‘0’ pada bit WDE maka cara  ini akan me-nonaktifkan WDT
  • Bits 2..0 – WDP2, WDP1, WDP0: Watchdog Timer Prescaler 2, 1, and 0. Bit-bit WDP2, WDP1 & WDP0 menunjukkan prescaler WDT saat diaktifkan.

,

Program Watchdog Timer Versi 1

  • Disini, kita akan mendesain aplikasi sederhana untuk menunjukkan kegunaan WDT pada ATmega16
  • Pada aplikasi ini, WDT mereset program utama setelah waktu timeout = 2,1 detik. Led akan nyala dan mati setiap 2,1 detik karena WDT

Program:

.

Video Demo:

.

.

Program Watchdog Timer Versi 2

  • Disini, kita akan mendesain aplikasi sederhana untuk menunjukkan kegunaan WDT pada ATmega16
  • Pada aplikasi ini, WDT mereset program utama setelah waktu timeout = 2,1 detik. Led akan nyala dan mati setiap 2,1 detik karena WDT

Program:

Video Demo:

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *