INTERUPSI EKSTERNAL

on Thursday 17 October 2013
assalamualaikum wr .... wb .... :)
setelah melakukan praktikum mikrokontroller kemaren tepatnya tanggal 11 Oktober 2013. saya mau mem-posting hasil praktikum saya :D .. 
check it out .... 

PRAKTIKUM 4
INTERUPSI EKSTERNAL

TUJUAN
1.      Mampu membuat program untuk pengguna fitue interupsi eksternal.
2.      Memahami perbedaan mode interupsi eksternal (falling,  rising, and any change).

L    LANDASAN TEORI
      Interrupt adalah suatu kondisi yang memicu atau memaksa mikrokontroller untuk menghentkan program dan memaksa untuk menjalan kan program interupsi.
       Sumber Interrupt:
       1. Internal : USART, Timer, Comparator, SPI, TWI, ADC.
       2. Eksternal : RESET, INT0 dan INT1.

       Interrupt Mode :
       1. Falling 
       2. Rising
       3. Any Change

        Program Interrupt :
        1. attachInterrupt(0,nama fungsi,FALLING);
        2. attachInterrupt(0,nama fungsi,RISING);
        3. attachInterrupt(1,nama fungsi,CHANGE);

PERALATAN
1.      Komputer                    : 1 set
2.      Arduino UNO             : 1 pcs
3.      Project Board              : 1 pcs
4.      Kabel Jumper              : 1 pcs
5.      Switch pushbutton      : 2 pcs
6.      LCD                            : 1 pcs
7.      Potensiometer 10K     : 1  pcs

PERCOBAAN:
A Interupsi Eksternal dengan Mode Falling
Pada percobaan  kali ini akan dibuat program untuk memahami penggunaan interupsi eksternal dengan mode falling.dua buah switch akan dihubungkan pada pin interupsi eksternal 0 (INT0) dan interupsi eksternal 1 (INT1). penekanan switch akan menginterupsi program utama (yang berada pada fungsi loop) dan memaksa untuk menjalankan rutin interupsi yang telah dideskripsikan pada program.



Prosedur :
1.      Rangkailah rangkaian pada gambar  dibawah ini.

1.      Tuliskan sintaks program berikut ini,kemudian lakukan compile dan upload program ke system minimum arduino.
#include <LiquidCrystal.h>
LiquidCrystal lcd(A0,A1,A2,A3,A4,A5);
unsigned int countLoop = 0;

void setup() {
pinMode(2, INPUT);
digitalWrite(2, HIGH);
pinMode(3, INPUT);
digitalWrite(3, HIGH);

lcd.begin(16,2);
lcd.clear();
attachInterrupt(0, rutinInterupsi0, FALLING);
attachInterrupt(1, rutinInterupsi1, FALLING);
}

void loop() {
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“Main Program”);
lcd.setCursor(0,1);
 lcd.print(“Count Loop”);
lcd.print(count loop);
countLoop++;
delay(1000);
}

void rutinInterupsi0( ){
lcd.setCursor(0,0);  lcd.print(lcd.print(“Int0 Program”);
lcd.setCursor(0,1);  lcd.print( lcd.print(“Interrupt INT0”);
delay(2000);
}

void rutinInterupsi1( ) {
lcd.setCursor(0,0); lcd.print(“Int1 Program”);
lcd.setCursor(0,1); lcd.print(“Interrupt INT1”);
delay(2000);
}
Tugas dan pertanyaan :
1.      Biarkan program berjalan sehingga pada LCD nilai count loop increment sampai diatas 5. Kemudian tekan salah satu switch yang terhubung pada INT0 atau INT1 selama 5 detik kemudian lepaskan. Amati teks yang ditampilkan pada LCD. Apakah yang akan terjadi jika switch ditekan? Apakah yang akan terjadi jika switch dilepas?
Jawab:
Ketika Switch ditekan maka akan muncul di lcd (Interrupt INT0) dan ketika switch dilepas maka akan menghitung (Count loop) muncul di LCD dan pada fungsi untuk memanggil interupsi tidak ada  delay.

2.      Jelaskan pada saat kapan terjadinya proses interupsi?
Jawab:
Interupsi terjadi saat input-an dalam kondisi (high) menuju ke 0 (low). Antara INT0 atau INT1, proses itu terjadi ketika switch ditekan .saat terjadi falling program interupsi dieksekusi, setelah dieksekusi kembali menghitung atau count loop.

B.  Interupsi Eksternal dengan mode Rising
Dua buah switch akan dihubungkan pada pin INT0 dan INT1 sama seperti percobaan 4.1. penekanan switch akan menginterupsi program utama ( yang berada pada fungsi loop) dan memaksa untuk menjalankan rutin interupsi yang telah dideskripsikan pada program.pada percobaan mode interupsi yang digunakan adalah rising.

Prosedur:
1.      Gantilah program pada percobaan 4.2 dengan sintaks program berikut ini, kemudian laukan compile dan upload program ke system minimum arduino.
#include <LiquidCrystal.h>
LiquidCrystal lcd(A0,A1,A2,A3,A4,A5);
unsigned int countLoop = 0;

void setup() {
pinMode(2, INPUT);
digitalWrite(2, HIGH);
pinMode(3, INPUT);
digitalWrite(3, HIGH);
lcd.begin(16,2);
lcd.clear();
attachInterrupt(0, rutinInterupsi0, RISING);
attachInterrupt(1, rutinInterupsi1, RISING);
}

void loop() {
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“Main Program”);
lcd.setCursor(0,1);
 lcd.print(“Count Loop”);
lcd.print(count loop);
countLoop++;
delay(1000);
}

void rutinInterupsi0( ){
lcd.setCursor(0,0);  lcd.print(lcd.print(“Int0 Program”);
lcd.setCursor(0,1);  lcd.print( lcd.print(“Interrupt INT0”);
delay(2000);
}

void rutinInterupsi1( ) {
lcd.setCursor(0,0); lcd.print(“Int1 Program”);
lcd.setCursor(0,1); lcd.print(“Interrupt INT1”);
delay(2000);
}
Tugas dan pertanyaan :
1.      Biarkan program berjalan sehingga pada LCD nilsi count loop sampai di atas 5. Kemudian tekan salah satu switch yang terhubung pada  INT0 atau INT1 selama 5 detik  kemudian lepaskan. Amati teks yang di tampilkan pada LCD. Apakah yang akan terjadi jika switch di tekan ? apakah yang akan terjadi jika switch di lepas?
Jawab:
Saat switch ditekan LCD masih menghitung (Count Loop)  saat switch dilepas maka LCD menampilkan “Interrupt INT0”.

2.      Jelaskan pada saat kapan terjadinya proses interupsi?
Jawab :
Pada saat switch dilepas sehingga terjadi perubahan interupsi kondisi dari low ke high. Saat rising program interupsi dieksekusi, setelah eksekusi kembali menghitung (count loop).

3.      Kapankah interupsi mode falling terjadi? kapankah interupsi mode rising terjadi?jelaskan?
Jawab :
Proses interupsi pada mode falling terjadi pada perubahan dari kondisi high (1)  ke low (0). Sedangjkan pada mode rising terjadi pada perubahan kondisi dari low (0)  ke high (1).

  1. C. Interupsi Eksternal dengan mode Any Change

Pada percobaan mode interupsi yang digunakan adalah any change.dua buah switch akan dihubungkan pada pin INT0 atau INT1. Penekanan switch akan membuat program utama pada fungsi loop terhenti dan mengeksekusi rutin interupsi.

Prosedur :
1.      Gantilah sintaks  program pada Percobaan 4.2 dengan sintaks program berikut ini. Lakukan compile dan upload program ke system minimum arduino.
#include <LiquidCrystal.h>
LiquidCrystal lcd(A0,A1,A2,A3,A4,A5);
unsigned int countLoop = 0;

void setup() {
pinMode(2, INPUT);
digitalWrite(2, HIGH);
pinMode(3, INPUT);
digitalWrite(3, HIGH);
lcd.begin(16,2);
lcd.clear();
attachInterrupt(0, rutinInterupsi0, CHANGE);
attachInterrupt(1, rutinInterupsi1, CHANGE);
}

void loop() {
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“Main Program”);
lcd.setCursor(0,1);
 lcd.print(“Count Loop”);
lcd.print(count loop);
countLoop++;
delay(1000);
}
void rutinInterupsi0( ){
lcd.setCursor(0,0);  lcd.print(lcd.print(“Int0 Program”);
lcd.setCursor(0,1);  lcd.print( lcd.print(“Interrupt INT0”);
delay(2000);
}
void rutinInterupsi1( ) {
lcd.setCursor(0,0); lcd.print(“Int1 Program”);
lcd.setCursor(0,1); lcd.print(“Interrupt INT1”);
delay(2000);
}

Tugas dan pertanyaan :
1.      Biarkan program berjalan sehingga pada LCD nilai count loop increment sampai di atas 5. Kemudian tekan salah satu switch yang terhubung pada INT0 atau INT1 selama 5 detik kemudian lepaskan. Amati teks yang ditampilkan pada LCD. Apakah yang akan terjadi jika switch di tekan?apakah yang akan terjadi jika switch di lepas ?
Jawab :
Mode Change ini merupakan gabungan antara interupsi falling dan rising yaitu jika switch ditekan maka LCD akan menampilkan “Interrupt INT0” dan pada saat switch dilepas maka LCD juga akan menampilkan “Interrupt INT0”.

2.      Jelaskan pada saat kapan terjadinya proses interupsi?
Jawab :
Proses interupsi terjadi ketika switch ditekan maupun saat dilepas..  Maka terjadi perubahan baik dari kondisi falling atau pun dari kondisi rising.

3.      Kapankah interupsi mode any change terjadi? jelaskan?
Jawab :
Interupsi mode any change terjadi apabila terjadi perubahan kondisi high (1) ke  low (0)  (Falling) maupun dari kondisi low (0) ke high (1) (Rising).

itu dia hasil praktikum saya :) .. mohon maaf apabila ada kesalahan dalam menjawab pertanyaan nya :D
terimakasih :) ..
Wassalam :) ..
#NHS