Diterbitkan Nopember 2008, di-update 27 Januari 2010

Pewaktu watchdog merupakan piranti pewaktuan perangkat keras yang bisa memicu reset sistem pada saat program utama, karena ada beberapa keasalahan, seperti hang, mengabaikan layanan rutin ke watchdog (biasanya seperti pemberian pulsa secara rutin), atau gampangannya kalo Anda punya anjing atau kucing kemudian lupa memberikan makan, apa yang terjadi? Ya jegog atau ngeong khan?? Dalam hal ini, saat jegog atau ngeong, pewaktu watchdog akan mereset sistem. Intinya, mengembalikan sistem ke awal mula (kondisi normal) karena telah terjadi kesalahan atau hang tadi…

Watchdog pada keluarga AT89 (khususnya seri AT89S52 ke atas) terdiri dari sebuah pencacah 13-bit dan Watchdog Timer Reset (WDTRST). WDT atau pewaktu watchdog biasanya tidak (belum) diaktifkan. Untuk mengaktifkan WDT, pengguna harus menuliskan 0×1E dan 0xE1 secara berurutn ke register WDTRST (lokasi SFR alamat 0xA6). Saat WDT diaktifkan, nilainya akan selalu dinaikkan setiap siklus mesin selama osliator juga bekerja. Timeout pada WDT bergantung pada frekuensi kristal atau detak yang digunakan. Tidak ada jalan lain untuk menon-aktifkan WDT kecuali melalui RESET (baik reset secara perangkat keras atau reset karena WDT melimpah atau overflow). Pada saat WDT melimpah, maka akan menghasilkan luaran pulsa RESET HIGH pada pin RST.

Instruksi Watchdog pada BASCOM51/BASCOM-AVR

Sintaks:

START WATCHDOG ' untuk menjalankan pewaktu watchdog
STOP WATCHDOG  ' untuk menghentikan pewaktu watchdog
RESET WATCHDOG ' untuk mereset nilai pewaktu Watchdog

Catatan:

  • AT89S8252 memiliki pewaktu Watchdog internal.
  • Pewaktu watchdog adalah pewaktu yang bisa me-RESET mikrokontroler saat mencapai nilai tertentu.
  • Selama jalannya program, pewaktu ini harus di-reset (secara manual) sebelum mencapai nilai maksimum-nya. Hal ini untuk memastikan bahwa program berjalan dengan baik dan benar (kayak bahasa Indonesia aja ya…).
  • Saat program mengalami masalah (hang, crash) atau diam saja pada suatu kalang, maka tidak terjadi proses reset pewaktu Watchdog sehingga RESET sistem secara otomatis akan terjadi.

Anda perlu mengkonfigurasi waktu reset Watchdog dengan perintah…

CONFIG WATCHDOG = waktu

Waktu, yang dinyatakan dalam milidetik, jika watchdog tidak direset, akan menyebabkan limpahan (overflow) yang kemudian me-RESET sistem, nilainya antara lain: 16, 32, 64, 128, 256, 512, 1024 atau 2048

Contoh dan penjelasan

$regfile="89s8252.dat"
$crystal = 12000000
$baud = 2400

Config Watchdog = 2048           ' lakukan reset setelah 2048 milidetik
Start Watchdog                   ' jalankan pewaktu watchdog
Dim I As Word
For I = 1 To 10000
   Print I                         ' tampilkan nilai I
'  Reset Watchdog
'
' jika Anda perhatikan, perintah FOR-NEXT
' tidak akan selesai karena keburu di-RESET
' tetapi jika perintah Reset Watchdog diaktifkan...
' instruksi FOR-NEXT akan berjalan dengan normal,
' karena pewaktu WDT akan di-reset sebelum
' mencapai 2048 milidetik
Next
End

Semoga bermanfaat…

Tags: , , , , ,

38 Responses to “Watchdog dengan BASCOM-51 atau BASCOM-AVR”

  1. mas…bisa beritau contoh sintax program untuk on dan off, program. dalam artian ketika tombol on aktif maka semua progam yang di inginkan beroperasi. saya baru pepula dalam mengoprasikan program bascom jadi saya mohon bantuannya..terimakasih kirim ke email aq aja..

  2. mas…bisa beritau contoh sintax program untuk on dan off, program AVR . dalam artian ketika tombol on aktif maka semua progam yang di inginkan beroperasi. saya baru pepula dalam mengoprasikan program bascom jadi saya mohon bantuannya..terimakasih kirim ke email aq aja..

  3. pak agfi saya mau tanya..
    saya sedang mengerjakan tugas akhir menggunakan bascom 8051 dengan mikrokontroler AT89S52,saya terkendala dengan pewaktuannya.. untuk menghasilkan waktu 60 detik pada keadaan sebenarnya saya menuliskam “wait 38″ pada programnya, dan hasilnya nyaris mendekati 60 detik..
    jika saya menginginkan 2 menit kan saya tinggal mengalikan saja
    contoh:
    time = waktu * 38
    jika saya memberikan nilai 2 pada variabel “waktu” maka pada variabel “time” dihasilkan waktu selama 2 x 38 = 76 ( 2 menit pd waktu sebenarnya )
    nah pertanyaan saya…
    kenapa jika diberikan nilai diatas 6 tidak dihasilkan waktu yang seharusnya (hanya berlaku untuk nilai 1 sampai 6 saja)? jika diberikan nilai 7 atau lebih, waktu yang didapatkan malah kurang dari 5 menit..
    saya menggunakan bascom 8051 demo + crack, bukan yang asli…
    apa hal tersebut pengaruh dari software yang saya gunakan?
    mohon penjelasanya..
    terimakasih..

  4. mmm kenapa kok harus “wait 38″, apakah Anda sudah menuliskan pernyataan:

    $crystal =

    sehingga harus menggunakan “wait 38″?

  5. pada inisialisasi saya sudah tuliskan

    $regfile=”89s8252.dat”
    $crystal = 12000000
    $large

    ‘——-lalu deklarasi variable nya——–

    dim waktu as integer
    dim time as integer

    ‘——setting menu pewaktuannya———

    do
    cls
    lcd “set waktu=”
    locate 1 , 16 : lcd ” ”
    locate 2 , 1 : lcd waktu ; ” menit ”
    waitms 200

    if tambah = 0 then
    waitms 50
    incr waktu
    end if

    if kurang = 0 then
    waitms 50
    decr waktu
    end if
    loop

    ‘———–inti programnya———

    time = waktu * 38
    servo1 = 9
    wait time ‘disini yang membutuhkan pewaktuan hasil dari
    pengalian waktu dengan wait 38
    servo1 = 15
    wait 1
    loop

    tapi untuk mendapatkan waktu 1 menit keadaan sebenarnya, saya hitung2 dengan stopwatch kok ya “wait 38″ itu yang paling mendekati pak..
    apa kemungkinan crystal yang saya pakai mati atau tidak bekerja seperti seharusnya?
    dan kalau bukan menggunakan “wait 38″ biasanya bagaimana pak untuk mendapatkan waktu 1 menit..
    sebelumnya terima kasih dan maaf kalau saya bertanya terus..

  6. @Aryo:
    ya memang betul ternyata perintah “wait” tidak akurat untuk angka-angka >1 detik, coba aja Anda ikuti informasi atau contoh program yang menggunakan interupsi timer disini, semoga bisa membantu, terima kasih.

  7. bagaimana cara mensetting timer menggunakan rtc 1307 dengn pemrograman avr 16 please yaaaa

  8. sugeng enjang pak agfi…

    sejenak saya mampir menyapa panjenengan… saat ini saya sedang mencoba belajar bahasa basic. pareng riyin pak…

    salam,
    unggul

  9. ayo belajar bascom
    http://www.yosefindra.webs.com

  10. mas bisa dak kirimkan cara penggunaan program BASCOM dan fungsi masing2 karakter, solanya saya baru pemula menggunakan Program BASCOM.
    kirim ja di E-mail saya.Thanks

  11. maaf tanya…
    gimana cara konfigurasi $regfile untuk at89s52 di bascom 8051 saya belum teridentifikasi

  12. bisa gak mas lok misalnya ku punya program pemindai su nah kan lok suhunya lebih dari 60 erajat ventilasi membuka begtu sebaliknya. proses ini mau tak kasih waktu jadi setelah proses ini berjalan lima jam buzzer bunyi gmana caranya apakah harus nbambah mikro lagi buat itu

    thank be4

  13. Kalau ada yang perlu modul RF 2,4GHz (TRFG 2,4) aku jual miring bonus hardware testernya, emailku penyimpan73@yahoo.com

  14. Salam kenal Pak Dosen….

  15. pak udah pernah coba micro untuk komunikasi eternet ngak pak???
    pake program bascom…. coz pengen coba…

    makasih pak

  16. pak agfi, tanya syntax bascom
    $hwstack=32
    $swstack=10
    $framesize=40

    kirim lewat e-mail ya pak
    sebelumnya terima kasih

  17. Artikel yang bagus. Ada yang binggung mikrokontroller? jangan khawatir. Sekarang ada basic compiler. Dengan bascom, memrogram mikrokontroler jadi mudah. kunjungi blog saya http://iswanto.staff.umy.ac.id.....scom-8051/

  18. terima kasih mas Iswanto atas link-nya… langsung silahkan menuju TKP!

  19. mantap pak artikelnya

  20. 1. mas saya mau tanya gimana cara ngerjakan sensor ultrasonik secara bersamaan. . .
    2. bagaimana cara mereset timer pada bascom 8051

  21. bagus artikelnya
    trus gmn cara memberi intrupsi timer setiap 30 detik??
    jd setiap 30 detik mk akan mengecek tombol gtu gan??
    dgn crystal 11059200 dan AT89S52

    balas di email saya gan

  22. mas afgi ! saya sering baca artikelnya mas, sekarang saya lagi bikin sebuah rangkaian elektroik untuk pengontrol beban menggunakan atmega 8535, tapi saya masih bingung klo diartikelkan yang dibahas inputna kebanyakan dari sebuah saklar atau pontensio, sedangkan yang saya gunakan sebagai innput berupa frekuensi sinusoidal yang sudah melalui sebuah rangkain komparator.
    saya minta tolong dong mas listting program awalnya seperti apa, saya pake bascom avr mas Afgi, terimakasih.

  23. mas saya buat line follower dan disaat dipersimpangan jalan akan nyala led d LF nya, coding ny pke timer gmna yah??

  24. mas, saya masih kurang paham nih, ijin nyimak aja dulu ya, tq

  25. hai, I just want to tell you that I am just very new to blogs and seriously loved this website. More than likely I’m planning to bookmark your blog post .
    You amazingly come with really good posts. Thanks a lot for sharing your blog.

  26. ko saya pake program diatas simulasi isis proteus dan asli rangkaian pun ga ngereset2 mikronya lanjut terus sampai itungan 1000 walau kutip reset watchdognya tidak dihapus. saya pake mikro at89s52. bisa bantu tolong?

  27. Good article

  28. Nice post

  29. Great article

  30. Very nice article

  31. mantap gan artikelnya, terima kasih banyak ya

  32. Haloo, I just want to tell you that I am just very new to blogs and seriously loved this website

  33. Digital signal processing is very effective technology in health care field. Here in MaxCure Hospitals in Hyderabad we are using best equipment made with this technology.

  34. Yes I agree with your post, Signal processing is key factor in communication era. The Big data technology helps a lot in all domains.

Trackbacks/Pingbacks

  1. Memulai Belajar Mikrokontroler - Quick, Easy and Harmless!
  2. Membuat Aplikasi Mikrokontroler AVR/AT89: Khusus Pemula!
  3. Membuat Aplikasi Mikrokontroler AVR/AT89: Khusus Pemula! « Rakhmat Blog's
  4. Membuat Aplikasi Mikrokontroler AVR/AT89 | Kebidanan

Leave a Reply

You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>