Popular Posts

Other Menu

SLEEP MODE DAN WATCHDOG TIMER




PERALATAN :

1.
Komputer
: 1 s et
2.
Arduino Uno
: 1 pcs
3.
Kabel USB tipe B : 1 pcs
4.
Project board
: 1 pcs
5.
Kabel jumper
: 1 pcs
6.
LED
: 1 pcs
7.
Resistor 330 Ohm : 1 pcs


PERCOBAAN :

9.1 Sleep Mode  Selama 4 Detik dan Wake Up Saat Terjadi Timer Overflow

Pada percobaan kali ini akan dibuat program untuk mengakses mode sleep pada mikrokontroler. Mode sleep akan terjadi selama 4 detik, kemudian mikrokontroler akan aktif kembali (wake up). Pada saat wake up, mikrokontroler akan melakukan perubahan terhadap kondisi LED yang terhubung pada pin 12. Sehingga jika program dijalankan, seakan-akan LED akan berkedip dengan selang waktu 4 detik. Namun, sebenarnya selama 4 detik tersebut mikrokontroler sedang dalam sleep mode (tidak melakukan apa-apa).

Prosedur :

1.  Rangkailah rangkaian pada Gambar 9.1 berikut ini.



















Gambar 9.1 Rangkaian Percobaan 9.1


2.   Tuliskan sintaks p rogram berikut ini pada Arduino IDE, kemudian lakukan kompilasi dan upload program.

#include <avr/sleep.h> #include <avr/power.h> #define LED_PIN (13) volatile int f_timer=0;

ISR(TIMER1_OVF_vect) { if(f_timer == 0) {

f_timer = 1;

}
}

void enterSleep(void) { set_sleep_mode(SLEEP_MODE_IDLE); sleep_enable();
power_adc_disable();
power_spi_disable();
power_timer0_disable();
power_timer2_disable();
power_twi_disable();
sleep_mode();
sleep_disable();

power_all_enable();
}


void setup() {


pinMode(LED_PIN, OUTPUT);

TCCR1A = 0x00;
TCNT1=0x0000;

TCCR1B = 0x05;
TIMSK1=0x01;

}


void loop() {


if(f_timer==1) {



f_timer = 0;

digitalWrite(LED_PIN, !digitalRead(LED_PIN)); enterSleep();

}
}



KESIMPULAN

Mode sleep akan terjadi selama 4 detik, kemudian mikrokontroler akan aktif kembali (wake up). Pada saat wake up, mikrokontroler akan melakukan perubahan terhadap kondisi LED yang terhubung pada pin 12. Sehingga jika program dijalankan, seakan-akan LED akan berkedip dengan selang waktu 4 detik. Namun, sebenarnya selama 4 detik tersebut mikrokontroler sedang dalam sleep mode (tidak melakukan apa-apa).
Manfaat sleep mode adalah menghemat daya. Saat sleep mode beberapa fungsi pada mikrokontroller yang tidak digunakan dinonaktifkan. Sehingga daya yang terpakai berkurang.


9.2  Sleep Mode  Selama 8 Detik dan Wake Up Saat Watchdog Timer Aktif

Pada percobaan kali ini akan dibuat program untuk mengakses watchdog timer pada mikrokontroler. Watchdog timer akan digunakan untuk mengaktifkan kembali mikrokontroler dari mode sleep. Watchdog timer akan terjadi tiap 8 detik.

Prosedur :

1.   Gantilah sintaks program pada Percoban 9.1 menjadi seperti b erikut ini, lakukan kompilasi dan uplo ad program ke mikrokontroler.

#include <avr/sleep.h> #include <avr/power.h> #include <avr/wdt.h> #define LED_PIN (13) volatile int f_wdt=1; ISR(WDT_vect) {

if(f_wdt == 0) { f_wdt=1; }

else { Serial.println("WDT Overrun!!!"); }

}

void enterSleep(void) { set_sleep_mode(SLEEP_MODE_PWR_SAVE);

sleep_enable();      sleep_mode();
sleep_disable();   power_all_enable();

}

void setup() {

Serial.begin(9600); Serial.println("Initialising..."); delay(100); pinMode(LED_PIN,OUTPUT);
MCUSR &= ~(1<<WDRF);

WDTCSR |= (1<<WDCE) | (1<<WDE); WDTCSR = 1<<WDP0 | 1<<WDP3; WDTCSR |= _BV(WDIE);

Serial.println("Initialisation complete."); delay(100);
}

void loop() { if(f_wdt == 1) {
digitalWrite(LED_PIN, !digitalRead(LED_PIN));

f_wdt = 0;       enterSleep();

}

}




KESIMPULAN :

Watchdog timer akan digunakan untuk mengaktifkan kembali mikrokontroler dari mode sleep. Saat Watchdog timer aktif, fungsi pada mikrokontroller yang dinonaktifka saat sleep akan aktif kembali. Watchdog timer digunakan untuk mengatasi sebuah situasi dimana program yang sedang kita jalankan mengalami kemacetan sehingga menyebabkan sistem berhenti bekerja. Analoginya adalah seperti kejadian hang-up pada komputer PC. Kemacetan program ini bisa disebabkan oleh beberapa hal baik secara software maupun secara hardware. Sebenarnya konsep watchdog timer itu sangatlah sederhana, Seperti halnya timer pada umumnya, watchdog timer terdiri dari sebuah register yang akan selalu mencacah naik (count up) setiap satu siklus mesin (1 detak clock). Yang membedakan watchdog timer dengan timer biasa adalah bahwa pada watchdog timer proses mencacah naik ini akan selalu terus berjalan dan tidak akan bisa dihentikan oleh kondisi apapun sekalipun dalam kondisi program macet. Dan setelah register watchdog timer mencapai maksimum (terjadi overflow) maka secara otomatis mikrokontroler akan mereset dirinya sendiri sehingga program akan melompat menuju ke awal program lagi.
 




< >

Tidak ada komentar:

Posting Komentar