Watchdog Timer Testing – FlashForth ATmega328P


Watchdog Timer (WDT) merupakan fitur mikrokontroler AVR yang ampuh untuk mengatasi kondisi HANG pada mikrokontroler. Kondisi HANG pada mikrokontroler dapat disebabkan oleh beberapa faktor antara lain: gangguan secara elektronik (noise) dan bug pada firmware. Dan seperti yang dinyatakan dalam catatan aplikasi ATMEL, The Watchdog Timer

“No piece of software, save the very smallest, is free from bugs.”

Dengan WDT, kita dapat memastikan bahwa CPU akan direset secara otomatis ketika CPU mengalami kondisi HANG.

Bagaimana Caranya?

Caranya adalah dengan mengaktifkan WDT sebelum program memasuki loop utama. Dan program pada loop utama memiliki kewajiban untuk mereset counter WDT, karena jika tidak direset maka counter WDT akan mencapai batas waktunya (TIMEOUT) dan mereset CPU.

Jadi, dengan cara seperti ini, jika sewaktu-waktu terjadi kondisi HANG pada loop utama, maka counter WDT akan mencapai batasnya dan WDT akan secara otomatis mereset CPU.

Berikut adalah contoh pemrograman sederhana versi AVR-GCC

   #include <avr/wdt.h>

   int main(void)
   {
      wdt_enable(WDTO_2S); //aktifkan WDT 2 detik

      // loop utama
      while(1) 
      {
         _delay_ms(100);
         wdt_reset();  //pastikan counter WDT direset
      }
   }

FlashForth

Pada eksperimen ini, saya melakukan pengujian fungsi WDT menggunakan program Forth. Saya menggunakan sistem operasi FlashForth yang saya sematkan dalam AVR ATmega328P.

FlashForth menyediakan kata wd+ untuk mengaktifkan WDT dan kata cwd untuk mereset counter WDT.

Langsung saja, berikut ini adalah kode program pengujian fungsi WDT dalam bahasa FlashForth.

\ Testing Watchdog Timer
\ FlashForth ATmega328P
\ Chandra MDE - Teknik Elektro Links

variable QUIT
false QUIT c!

: get-ready
   cr
   ." Testing AVR Watchdog Timer Functionality" cr cr
   ." WDT is set to 2 seconds." cr
   ." You have to press ENTER within less than 2 seconds," cr
   ." otherwise WDT will reset the controller." cr
   ." Press Q + ENTER to quit test." cr cr
   ." Press ENTER when you are ready..." 
   key drop cr
;

: wdt-test
   get-ready
   ." WDT Test is starting." cr
   7 wd+ \ wdt enable

   begin
     key?
     if
       key 81 = \ Q = Quit test
       if 
         true QUIT c!
       else 
         ." Key is pressed --> WDT reset" cr
         cwd
       then
     then
     QUIT c@
   until
   ." WDT Test end." cr cr
;


Menjalankan Program wdt-test.fs

ffwdt

Program pengujian yang saya buat ini terdiri dari 2 fungsi yakni: get-ready dan wdt-test.

Fungsi get-ready berfungsi menampilkan judul dan instruksi/prosedur testing. Intruksi/prosedur pengujian yang ditampilkan adalah sebagai berikut:

   Testing AVR Watchdog Timer Functionality

   WDT is set to 2 seconds.
   You have to press ENTER within less than 2 seconds,
   otherwise WDT will reset the controller.
   Press Q + ENTER to quit test.

   Press ENTER when you are ready...

Fungsi wdt-test akan mengaktifkan WDT dengan timeout 2 detik

   7 wd+

Dalam perulangan begin .. until, WDT akan direset jika tombol ENTER ditekan. Peresetan WDT dilakukan dengan perintah

   cwd

Jika ENTER tidak ditekan dalam 2 detik, maka WDT akan secara otomatis mereset CPU.

Dari hasil pengujian (screenshot), WDT sukses direset ketika kita menekan ENTER sebelum masa timeout WDT berakhir (2 detik). Mikrokontroler pun sukses direset oleh WDT ketika kita tidak menekan ENTER hingga melebihi batas waktu WDT (2 detik). Dan jika kita menekan tombol Q+ENTER, maka program akan berakhir.

Dengan demikian, dapat disimpulkan bahwa fungsi-fungsi WDT pada FlashForth bekerja dengan baik.

Selamat belajar dan selamat berkarya.

Iklan
Perihal

Cek situs kami di http://teknikelektrolinks.com. Blog Raspberry Pi: http://raspi.teknikelektrolinks.com

Tagged with: , , ,
Ditulis dalam AVR, Forth

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

Kategori

Bergabunglah dengan 2.501 pengikut lainnya

Hot Links




Display Counter 3-Digit Dengan Koneksi Wi-Fi
Display Nomor Antrian WiFi Android
Mengontrol Relay Via USB/Serial dan Wi-Fi
USB Relay USB-2REL
USB Relay USB-4REL
Water Level Control WLC-02
Serial Relay SER-4REL
NEO STARDUINO SMS ALARM

Alarm SMS Berbasis NEO STARDUINO

1 PC – 6 Unit USB-2REL

Testing 6 USB-2REL Pada 1 Komputer

Standard Pengujian USB-2REL

Pengujian USB-2REL Sebelum Dikirim

LPT-4REL on Knoppix 7.0.5

Testing LPT-4REL on Knoppix Linux

T101 Inkubator Telur

T101 Inkubator Penetas Telur

KONTROL PERALATAN LISTRIK VIA PORT LPT KOMPUTER

Demo Kontrol Kontaktor via Port LPT

STARDUINO meets ANDROID

Demo Kontrol Bluetooth Relay Android

STARDUINO SMS RELAY

Kontrol Relay Via SMS Dengan Starduino

STARDUINO WEB RELAY

Demo Kontrol Relay Via Web/Internet

JustBASIC USB-2REL Control

Demo Kontrol USB-2REL + JustBASIC

STARDUINO + GPS + LCD

Demo Starduino GPS Dengan LCD

USB-2REL EXTREME TEST

Demo Kontrol On/Off Lampu USB-2REL

THERMOSTAT T101 IN ACTION

Demo Thermostat T101 Pada SV=37.5°C

WATER LEVEL CONTROL WLC-02

Demo Kontrol Level Air Tandon WLC-02

HUMIDITY CONTROLLER H103

Demo Kontrol Kelembaban H103 (DHT11)

%d blogger menyukai ini: