Arduino Watchdog

Watchdog Timer (WDT) adalah salah satu fitur dari mikrokontroler AVR untuk mengatasi kemacetan alur program/Hank yang disebabkan oleh faktor Hardware maupun Software. Dengan menggunakan WDT kita dapat mereset mikrokontroler secara otomatis ketika terjadi macet/hank.Sistem WDT terpisah dari CPU utama sehingga tidak akan terpengaruh dengan kondisi macet/Hank.Untuk lebih jelas tentang WDT kita dapat membuat analogi sebagai berikut: Ada seorang driver berangkat dari kota A ke kota B dengan ketentuan lamanya perjalanan selama 1 detik. Ketika si driver terjebak macet di tengah perjalanan dan waktu perjalanannya melebihi 1 detik maka si driver otomatis tereset ke kota A dan memulai kembali perjalanannya ke kota B.Perlu diketahui bahwa timeout/batas waktu WDT arduino yaitu 250MS, 500MS, 1S, 2S, 4S, dan 8S. Sekarang mari kita simulasikan project arduino ini menggunakan proteus 8.5. silahkan masuk ke source code/VSM studio lalu create project kemudian pilih arduino uno sehingga menjadi
Skema Rangkaian Arduino Uno
Skema Rangkaian
sekarang bagaimana listing programnya?
#include <avr/wdt.h>
void setup() {
Serial.begin(9600);
wdt_enable(WDTO_1S);
}
int i;
void loop() {
  i=i+1;
  Serial.println(i);
  wdt_reset();
}
Program diatas ketika dieksekusi akan mengaktifkan Watchdog dengan timeout 1 detik dan akan dilanjutkan dengan baris program selanjutnya, jika program ini tidak macet/Hank maka pada outpus serial akan muncul seperti dibawah ini
Tampilan Virtual Terminal
Tampilan Virtual Terminal
Listing program 2
#include <avr/wdt.h>
void setup() {
Serial.begin(9600);
wdt_enable(WDTO_1S);
}
int i;
void loop() {
  i=i+1;
  Serial.println(i);
  delay(2000);
  wdt_reset();
}
Mari kita analisa program ke dua ini, disini ada penambahan delay(2000), anggap saja ini bagian hank sistem. ketika program ini dijalankan maka sistem akan mendeteksi bahwa waktu untuk mereset WDT lebih lama daripada 1 detik dikarenakan delay(2000) dan sistem menganggapnya ini sebagai kondisi macet/hank, sehingga sub void loop() hanya dieksekusi sekali dan output serialnya akan menjadi sebagai berikut
Tampilan Virtual Terminal
Tampilan Virtual Terminal

Related Posts:

1 Response to "Arduino Watchdog"

  1. I just found this blog and have high hopes for it to continue. Keep up the great work, its hard to find good ones. I have added to my favorites. Thank You. Proteus Library for Arduino

    ReplyDelete