Anda di halaman 1dari 10

LAPORAN PRAKTIKUM MIKROKONTROLER

WatchDog Timer

Oleh:
Andrianto
(3 D4 EA / 1110141010)

PRODI D4 TEKNIK ELEKTRONIKA


POLITEKNIK ELEKTRONIKA NEGERI SURABAYA
KAMPUS ITS KEPUTIH SUKOLILO SURABAYA 60111, INDONESIA
TELP (031) 5947280, 5946114 FAX (031) 5946114
MODUL 5
WatchDog Timer

I. Tujuan
Pada modul ini peserta praktikum diharapkan mampu membuat program dengan
memanfaatkan fasilitas WatchDog Timer pada mikrokontroler AVR
II. Peralatan yang Digunakan
1. Software Eclipse
2. Plugins AVR Eclipse
3. Toolset GCC-AVR compiler
4. AVR Development board Xtal 16 MHz

III. Langkah Percobaan

A. Percobaan-1 WatchDog Timer Basic


Pada percobaan ini peserta praktikum dikenalkan dengan konsep dasar
WatchDog timer pada AVR untuk mereset sistem kembali ke awal. Untuk
mensimulasikan ini dibuat Delay pada counter yang naik secara berkala.
Processor akan mereset WatchDog timer setiap selesai mengerjakan rutin
delay. Bila nilai delay bertambah melebihi sampling yang ditentukan oleh
watchdog timer, maka watchdog timer akan mereset processor.
Number of WDT Typical Timeout
WDP3 WDP2 WDP1 WDP0
Oscillator Cycles At vcc = 5.0V
0 0 0 0 2K cycles 16ms
0 0 0 1 4K cycles 32ms
0 0 1 0 8K cycles 64ms
0 0 1 1 16K cycles 0.125s
0 1 0 0 32K cycles 0.25s
0 1 0 1 64K cycles 0.5s
0 1 1 0 128K cycles 1.0s
0 1 1 1 256K cycles 2.0s
1 0 0 0 512K cycles 4.0s
1 0 0 1 1024K cycles 8.0s
1 0 1 0
1 0 1 1
1 1 0 0
Reserved
1 1 0 1
1 1 1 0
1 1 1 1

Gambar 30. Watchdog Timer Prescaller


WDTON WDE WDIE Mode Action on Tme-out
1 0 0 Stopped None
1 0 1 Interrupt Mode Interrupt
1 1 0 System reset Mode Reset
Interrupt and System Interrupt, then go to
1 1 1
reset mode system reset mode
0 x x System reset mode Reset

Gambar 31. WatchDog Timer Configuration

Langkah Percobaan :
1. Pasang Modul arduino ke komputer
2. Jalankan Eclipse
3. Isi kode berikut pada main.c
#include <avr/io.h>
#include <avr/wdt.h>
#include <util/delay.h>

int cnt = 0;
int vdly=1;

void Delay(int vdly);


int main (void)
{
DDRA = 0xFF;
PORTA = 0xAA;
wdt_enable(WDTO_1S);
while(1)
{
PORTA = ~cnt++;
Delay(vdly++);
wdt_reset();
}
}

void Delay (int vdly){


while (vdly--){
_delay_ms(100);
}
}
4. Compile dan lihat hasilnya
5. Buat kesimpulan
B. Percobaan-2 WatchDog Timer sebagai Timer
Kebanyakan WatchDog timer difungsikan untuk mereset processor jika
mengalami masalah. Tetapi WatchDog timer pada AVR juga bisa difungsikan
sebagai timer yang mempunyai konfigurasi yang lebih sederhana dan waktu
sampling sampai 8 detik. Pada percobaan ini peserta praktikum dikenalkan
tentang konsep dasar WatchDog timer pada AVR dan menggunakannya
sebagai alternatif timer.
Langkah Percobaan :
1. Pasang Modul arduino ke komputer
2. Jalankan Eclipse
3. Isi kode berikut pada main.c

#include <avr/sleep.h>
#include <avr/power.h>
#include <avr/wdt.h>
#include <avr/interrupt.h>
#include <util/delay.h>

volatile int f_wdt = 0;

ISR(WDT_vect)
{
if(f_wdt == 0)
{
f_wdt=1;
}
else
{
}
}

int main (void)


{
DDRB |= (1<<7);
MCUSR &= ~(1<<WDRF);
WDTCSR |= (1<<WDCE) | (1<<WDE);
WDTCSR = 1<<WDP3;
WDTCSR |= _BV(WDIE);
sei();
while(1)
{
if (f_wdt == 1)
{
PORTB ^= (1<<7);
f_wdt=0;
}
else
{}
}
}
4. Compile dan lihat hasilnya
5. Buat kesimpulan
C. Percobaan-3 WatchDog Timer Sleep
Pada percobaan ini peserta praktikum dikenalkan tentang konsep dasar
WatchDog Timer pada AVR dan menggunakannya sebagai alternatif timer dan
menggunakan mode sleep.
Langkah Percobaan :
1. Pasang Modul arduino ke komputer
2. Jalankan Eclipse
3. Isi kode berikut pada main.c

#include <avr/sleep.h>
#include <avr/power.h>
#include <avr/wdt.h>
#include <avr/interrupt.h>
#include <util/delay.h>
volatile int f_wdt = 0;

ISR(WDT_vect)
{
if(f_wdt == 0)
{
f_wdt=1;
}
else
{
}
}

void enterSleep(void)
{
set_sleep_mode(SLEEP_MODE_PWR_SAVE);
sleep_enable();
sleep_mode();
sleep_disable();
power_all_enable();
}

int main (void)


{
DDRB |= (1<<7);
MCUSR &= ~(1<<WDRF);
WDTCSR |= (1<<WDCE) | (1<<WDE);
WDTCSR = 1<<WDP3;
WDTCSR |= _BV(WDIE);
sei();
while(1)
{
if (f_wdt == 1)
{
PORTB ^= (1<<7);
f_wdt=0;
enterSleep();
}
else
{}
}
}
4. Compile dan lihat hasilnya
5. Buat kesimpulan
Percobaan-3 WatchDog Timer Sleep
#include <avr/sleep.h>
#include <avr/power.h>
#include <avr/wdt.h>
#include <avr/interrupt.h>
#include <util/delay.h>

volatile int f_wdt = 0;

ISR(WDT_vect)
{
if(f_wdt == 0)
{
f_wdt=1;
}
else
{
}
}

void enterSleep(void)
{
set_sleep_mode(SLEEP_MODE_PWR_SAVE);
sleep_enable();
sleep_mode();
sleep_disable();
power_all_enable();
}

int main (void)


{
DDRB |= (1<<7);
MCUSR &= ~(1<<WDRF);
WDTCSR |= (1<<WDCE) | (1<<WDE);
WDTCSR = 1<<WDP3; //4.0 seconds
WDTCSR |= _BV(WDIE);
sei();
while(1)
{
if (f_wdt == 1)
{
PORTB ^= (1<<7);
f_wdt=0;
enterSleep();
}
else
{}
}
}

Penjelasan :
Pada percobaan ini menggunakan Watchdog timer menggunakan sleep mode. Hasil
percobaan ini sama seperti percobaan-2, yaitu watchdog dapat digunakan sebagai timer
(lamanya waktu) nyala dan mati LED yang digunakan (PORTB7). Hasilnya yaitu LED
menyala selama 4 detik dan mati selama 4 detik, lalu menyala lagi 4 detik dst. Hal ini
dikarenakan watchdog prescaller yang digunakan adalah WDTCSR = 1<<WDP3. Adapun
fungsi dari sleep mode di sini yaitu untuk mengurangi konsumsi daya karena ketika sleep
mode processor tidak dalam keadaan bekerja.
ANALISA DAN SIMPULAN
A. Analisa
Pada praktikum mikrokontroller kali ini yang berjudul watchdog timer. dikenalkan
dengan konsep dasar WatchDog timer pada AVR untuk mereset sistem kembali ke awal.
Untuk mensimulasikan ini dibuat Delay pada counter yang naik secara berkala. Processor
akan mereset WatchDog timer setiap selesai mengerjakan rutin delay. Bila nilai delay
bertambah melebihi sampling yang ditentukan oleh watchdog timer, maka watchdog timer
akan mereset processor.
Pada praktikum kali ini dilakukan beberapa percobaan yaitu watchdog timer
basic, wathcdog timer sebagai timer dan watchdog timer sleep.
percobaan pertama
percobaan pertama yaitu watchdog timer basic. Pada percobaan ini watchdog
timer berfungsi untuk mereset processor untuk kembali ke awal program seperti
saat tombol reset di tekan. Maksud dari penggunaan watchdog timer yaitu sebagai
pe-reset processor saat processor dalam keadaan hang atau tidak menjalankan
routine program sehingga keseluruhan sistem dapat berjalan sesuai mestinya.
Pada percobaan ini untuk menstimulasikan watchdog timer maka dibuat delay
pada counter up secara berkala. Processor akan mereset watchdog timer setiap
selesai mengerjakan routine delay. Bila nilai delay bertambah melebihi waktu
yang ditentukan oleh watchdog timer maka watchdog timer akan mereset
processor.
percobaan kedua
Pada percobaan kedua yaitu watchdog timer sebagai alternatif timer. Jika pada
umumnya watchdog timer digunakan untuk mereset processor saat processor
merespon melebihi watu dari watchdog timer, berbeda halnya pada praktikum
kali ini. Pada praktikum kali ini watchdog timer digunakan untuk membuat
sebuah led menyala 2 detik dan mati 2 detik, pada waktu yang bersamaan pada
program utama berjalan counter up pada PORTA. Pada percobaan ini dapat
dilihat bahwa watchdog timer juga bisa difungsikan layaknya timer counter pada
mikrokontroller hanya saja crystal dari watchdog timer berbeda dengan yang di
gunakan oleh mikrokontroller.
percobaan ketiga
Pada percobaan ketiga yaitu watchdog timer sleep. Pada percobaan ini
watchdog timer difungsikan sebagai timer dengan tujuan saat waktu tercapai
maka watchdog timer mereset processor dan processor akan membalik logika dari
led pada PB7 kemudian processor kembali ke sleep mode. Saat processor dalam
keadaan sleepmode, watchdog timer terus menghitung waktu hingga 4 detik, saat
4 detik tercapai maka watchdog timer mereset processor dengan tujuan
membangunkan processor.

B. Kesimpulan
Setelah Melakukan praktikum mengenai watchdog timer saya dapat
menyimpulkan bahwa :
1. Karena memiliki crystal sendiri maka watchdog timer juga memungkinkan
digunakan sebagai timer.
2. Pada umumnya watchdog timer digunakan sebagai timer reset processor saat
processor tidak mereset watcdog melebihi waktu tunggu dari watchdog timer.
Saat processor tidak mereset watchdog timer melebihi waktu tunggu
watchdog maka watchdog timer akan mereset processor.
3. Watchdog timer memiliki hardware yang terpisah dengan processor
mikrokontroller, termasuk juga crystal. Watchdog timer memiliki crystal
sendiri yang terpisah dari processor sehingga memungkinkan watchdog timer
berjalan diluar main routine.
4. Saat processor dalam keadaan sleep, watchdog timer tetap akan bekerja
menghitung waktu. Jika dilihat pada percoabaan 3, processor dalam keadaan
sleep, dan watchdog tetap dalam keadaan menghitung waktu, saat waktu
hitung mencapai 4 detik maka watchdog timer akan mereset processor,
sehingga processor akan bangun.

Anda mungkin juga menyukai