Blog Archive

Arduino Indonesia. Gambar tema oleh Storman. Diberdayakan oleh Blogger.

Supported by Electronics 3 in 1

1. Jasa pencetakan PCB single layer dengan harga paling murah.

(Metode Pembuatan dengan Transfer Toner)
>PCB design sendiri (siap cetak) : Rp.150,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

(Metode Sablon Full Masking dan Silk Screen minimal pemesanan 100 Pcs)
>PCB design sendiri (siap cetak) : Rp.200,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

2. Jasa perancangan, perakitan, dan pembuatan trainer pembelajaran elektronika untuk SMK dan Mahasiswa.

3. Jasa perancangan, perakitan, dan pembuatan berbagai macam kontroller, sensor, aktuator, dan tranduser.
>Design Rangkaian / Sistem Elektronika
>Design Rangkaian / Sistem Instrumentasi
>Design Rangkaian / Sistem Kendali
>Kerjasama Riset (data atau peralatan)
>Kerjasama Produksi Produk-Produk KIT Elektronika
>Produksi Instrumentasi Elektronika

4. Jasa Pembuatan Proyek, Tugas Akhir, Tugas Laboratorium, PKM, Karya Ilmiah, SKRIPSI, dll

Like My Facebook

Popular Posts

Kamis, 28 Agustus 2025

Watchdog Timer (WDT) di Raspberry Pi Pico: Fungsi, Konsep, dan Cara Menggunakannya

Watchdog Timer (WDT) adalah sebuah fitur penting yang terintegrasi pada mikrokontroler, termasuk Raspberry Pi Pico. Fitur ini dirancang untuk memastikan sistem tetap responsif dan beroperasi secara andal, terutama dalam aplikasi yang memerlukan stabilitas tinggi.


Apa itu Watchdog Timer?

 

Secara harfiah, watchdog berarti "anjing penjaga". Analoginya sangat tepat: seperti anjing penjaga yang mengawasi rumah, Watchdog Timer mengawasi program yang sedang berjalan. Jika program macet karena loop tak terbatas, hang, atau error, WDT akan mereset mikrokontroler agar kembali ke kondisi awal yang stabil. Pada dasarnya, WDT adalah sebuah timer independen yang berjalan di latar belakang, terpisah dari kode utama. Program utama harus secara berkala 'menepuk' timer agar hitungannya kembali ke awal. Proses ini disebut "feeding the watchdog", yaitu memanggil fungsi wdt.feed() di MicroPython dan watchdog_update() di C/C++ untuk mengulang hitungan timer. Jika program gagal memberi makan WDT dalam batas waktu yang ditentukan, timer akan meluap (overflow). Saat itu WDT akan secara otomatis mereset mikrokontroler sebagai mekanisme proteksi.

 

Konsep Dasar WDT pada Raspberry Pi Pico

 

Raspberry Pi Pico, yang ditenagai oleh mikrokontroler RP2040, memiliki dua jenis WDT:

1.  Hardware Watchdog: Ini adalah fitur fisik pada chip RP2040 itu sendiri. Ia beroperasi secara independen dari program dan akan selalu melakukan reset jika timer-nya meluap.

2.  Software Watchdog: Ini adalah fitur yang diimplementasikan dalam kode, biasanya menggunakan timer software yang melacak waktu dan melakukan tindakan tertentu jika waktu habis.

Namun pada RP2040, penggunaan yang umum adalah hardware watchdog.  

 

Bagaimana WDT Bekerja di RP2040?

 

Pada RP2040, WDT dapat dikonfigurasi dengan batas waktu (timeout) dalam milidetik, yaitu durasi maksimum sebelum harus 'ditepuk' ulang agar tidak meluap.

Prosesnya adalah sebagai berikut:

1. Inisialisasi: Saat program dimulai, WDT diaktifkan dan dikonfigurasi dengan batas waktu tertentu.

2. Penghitungan: Timer WDT mulai menghitung mundur dari nilai yang telah ditentukan.

3. Feeding: Secara berkala, dalam kode program, Anda harus memanggil fungsi wdt.feed() (MicroPython) atau watchdog_update() (C/C++) untuk mengulang hitungan timer.

4. Reset: Jika kode gagal memanggil wdt.feed() tepat waktu, WDT akan mereset mikrokontroler secara otomatis.

Ini memastikan bahwa, bahkan jika program Anda mengalami kegagalan, sistem akan secara otomatis mencoba untuk memulai kembali dalam kondisi yang bersih.

 

Mengapa Watchdog Timer Penting?

 

Penggunaan WDT sangat krusial dalam banyak aplikasi, terutama yang memerlukan operasi tanpa pengawasan manusia (unattended operation). Berikut adalah beberapa alasan mengapa WDT sangat penting:

- Pemulihan Otomatis: WDT memungkinkan sistem untuk pulih dari hang atau lockup tanpa intervensi manual. Bayangkan sebuah stasiun cuaca yang terpasang di lokasi terpencil. Jika programnya macet karena bug atau gangguan eksternal, WDT akan me-resetnya, memungkinkan stasiun tersebut untuk melanjutkan pengumpulan data.

- Stabilitas Sistem: Dalam sistem yang real-time atau kritis, seperti robotika atau kontrol industri, kegagalan sesaat dapat menyebabkan konsekuensi serius. WDT memastikan sistem selalu dalam keadaan responsif.

- Deteksi Deadlock: WDT efektif dalam mendeteksi deadlock, kondisi di mana dua atau lebih proses saling menunggu tanpa ada yang berjalan, sehingga sistem berhenti merespons. Karena tidak ada proses yang berjalan, tidak ada yang dapat "menepuk" WDT, yang pada akhirnya memicu reset.

 

Cara Menggunakan Watchdog Timer pada Raspberry Pi Pico

 

Ada dua cara utama untuk menggunakan WDT di Raspberry Pi Pico, tergantung pada bahasa pemrograman yang Anda gunakan: MicroPython dan C/C++ SDK.

1. Menggunakan WDT dengan MicroPython

MicroPython adalah pilihan yang populer untuk Raspberry Pi Pico karena kemudahannya. Modul machine menyediakan antarmuka langsung ke WDT.

Langkah-langkahnya:

- Impor Modul: Impor kelas WDT dari modul machine.

- Inisialisasi: Buat objek WDT dengan menentukan batas waktu timeout dalam milidetik.

- Feeding: Panggil metode feed() pada objek WDT Anda secara berkala dalam loop utama.

Contoh Kode MicroPython:


from machine import Pin, WDT

import time


# Inisialisasi LED internal

led = Pin("LED", Pin.OUT)


# Aktifkan WDT dengan timeout 5 detik (5000 ms)

wdt = WDT(timeout=5000)


print("Program dimulai. WDT diaktifkan.")


while True:

    # Program utama

    led.toggle()

    print("LED toggle, memberi makan watchdog...")


    # Reset hitungan watchdog

    wdt.feed()


    # Delay 1 detik

    time.sleep(1)

 

Analisis Kode:

- Menginisialisasi WDT dengan timeout 5000 ms.

- Dalam loop while True, kita memanggil wdt.feed() setiap 1 detik. Ini jauh di bawah batas 5 detik, jadi WDT akan terus diperbarui dan sistem berjalan normal.

- Jika Anda sengaja menghapus baris wdt.feed() atau menambahkan time.sleep(6) (yang lebih dari 5 detik), program akan berhenti merespons dan WDT pun akan mereset mikrokontroler secara otomatis.

2. Menggunakan WDT dengan C/C++ SDK

Untuk proyek yang memerlukan performa tinggi, C/C++ adalah pilihan yang lebih baik. SDK Raspberry Pi Pico menyediakan API yang komprehensif untuk mengelola WDT.

Langkah-langkahnya:

- Sertakan Header: Sertakan file header pico/watchdog.h.

- Inisialisasi: Panggil watchdog_enable(). Parameter timeout_ms adalah batas waktu, dan pause_on_debug dapat diatur ke true jika Anda ingin WDT berhenti saat debugger terhubung.

- Feeding: Panggil watchdog_update() secara berkala.

Contoh Kode C/C++:

 

#include <stdio.h>

#include "pico/stdlib.h"

#include "pico/watchdog.h"


int main() {

    // Inisialisasi serial

    stdio_init_all();


    // Inisialisasi LED internal

    const uint LED_PIN = PICO_DEFAULT_LED_PIN;

    gpio_init(LED_PIN);

    gpio_set_dir(LED_PIN, GPIO_OUT);


    // Aktifkan Watchdog dengan timeout 5 detik

    printf("Program dimulai. WDT diaktifkan.\n");

    watchdog_enable(5000, 1); // timeout ms, pause_on_debug = true


    while (1) {

        gpio_put(LED_PIN, 1);

        printf("LED ON, feeding watchdog...\n");

        sleep_ms(500);


        gpio_put(LED_PIN, 0);

        printf("LED OFF, feeding watchdog...\n");

        sleep_ms(500);


        // Feed watchdog

        watchdog_update();

    }


    return 0;

}


Analisis Kode:

- watchdog_enable(5000, 1) mengaktifkan WDT dengan timeout 5 detik. watchdog_enable adalah fungsi utama untuk mengaktifkan WDT, sedangkan watchdog_hw_enable() tersedia untuk kontrol tingkat rendah.

- watchdog_update() dipanggil setiap 500 ms untuk mencegah reset.

- Jika fungsi ini tidak dipanggil, Raspberry Pi Pico akan reset otomatis.

- Parameter '1' membuat WDT berhenti saat debugging aktif (opsional). 

 

Dengan memanfaatkan Watchdog Timer, Raspberry Pi Pico dapat beroperasi lebih andal, terutama pada aplikasi penting yang harus berjalan terus-menerus tanpa pengawasan. Baik melalui MicroPython maupun C/C++, penggunaan WDT memberikan lapisan keamanan tambahan untuk mencegah sistem hang atau deadlock. Dengan demikian, WDT adalah salah satu fitur yang wajib diaktifkan dalam proyek IoT, sistem tertanam, maupun perangkat penting yang dituntut untuk selalu aktif. Oleh karena itu, mengaktifkan WDT sebagai fitur wajib sebaiknya menjadi standar praktik dalam setiap proyek berbasis Raspberry Pi Pico, khususnya .

 

 

 

 

 

 

 

 

 

Siap Untuk Membuat Proyek Impianmu Menjadi Kenyataan?

Klik di sini untuk chat langsung via WhatsApp dan dapatkan dukungan langsung dari tim ahli kami! 

 

0 on: "Watchdog Timer (WDT) di Raspberry Pi Pico: Fungsi, Konsep, dan Cara Menggunakannya"