Kamis, 19 Desember 2013

PRAKTIKUM 9

SLEEP MODE DAN WATCHDOG TIMER

TUJUAN :
1.  Memahami penggunaan mode sleep pada mikrokontroler.
2.  Memahami penggunaan watchdog timer pada program.

PERALATAN :
1.  Komputer               : 1 set
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.
2. Tuliskan  sintaks  program  berikut  ini  pada  Arduino  IDE, kompilasi dan upload program.
#include  <avr/sleep.h>
#include  <avr/power.h>
#define  LED_PIN  (13)
volatile  int  f_timer=0;
kemudian  lakukan
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();
}
}

Tugas dan Pertanyaan :
1.  Amati hasil Percobaan 9.1, buatlah kesimpulan !
            Dari percobaan 9.1 dapat diketahui bahwa setiap 8 detik, led yang ada pada pin 13 akan mengalami toogle.
2.  Apakah manfaat penggunaan sleep mode pada mikrokontroler ? Jelaskan !
            Manfaat penggunaan sleep mode yaitu untuk menghemat daya atau power, ketika mikrokontroller tidak digunakan dapat dengan mudah untuk mengaktifkan mikrokontroller dengan cepat.


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 berikut ini, lakukan kompilasi dan upload 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();
}
}

Tugas dan Pertanyaan :
1.  Amati hasil Percobaan 9.2, buatlah kesimpulan !
            Dari percobaan 9.2 dapat diketahui bahwa apabila program yang dijalankan HANG maka watchdog akan aktif setelah 8 detik , hal ini dapat dibuktikan dengan berkedipnya led  dan watchdog akan me-reset ulang program tersebut.
2.  Apakah manfaat penggunaan watchdog timer pada mikrokontroler ? Jelaskan !
            Manfaat penggunaan watchdog timer pada mikrokontroller adalah untuk menghindari program dari HANG permanen sehingga program masih dapat melakukan eksekusi program.

0 komentar:

Posting Komentar