Minggu, 13 Oktober 2013

interupsi pada arduino

Pada entri kali ini saya akan sedikit membahas mengenai program intrupsi ekternal, pengertian intrupsi adalah  suatu permintaan khusus pada mikrokontroller untuk melakukan sesuatu, jika terjadi interupsi maka program akan menghentikan dahulu apa yang sedang dikerjakan dan melakukan apa yang diminta oleh yang menginterupsi. 
Pada Board arduino uno terdapat 3 intrupsi eksternal yaitu 
1. Intrupsi Eksternal dengan Mode Falling
2. Intrupsi Eksternal dengan Mode Rising
3. Intrupsi Eksternal dengan Mode Any Change

LANGKAH PERCOBAAN
1. Intrupsi Eksternal dengan Mode Falling
    Pada percobaan ini program dibuat untuk memahami penggunaan interupsi eksternal dengan Mode Falling. Dua buah switch akan dih ubungkan pada pin interupsi eksternal 0 (INT0) dan interupsi eksternal 1 (INT1). Pen ekanan switch akan menginterupsi program utama (yang berada pada fungsi loop) d an memaksa untuk menjalankan rutin interupsi yang telah dideskripsikan pada program.
`   Prosedur :
1. Rangkai sesuai gambar dibawah



2. Lalu buat program sintak seperti sintaks dibawah :

#include <LiquidCrystal.h> LiquidCrystal lcd(A0,A1,A2,A3,A4,A5); unsigned int countLoop = 0;

void setup() { lcd.begin(16,2); lcd.clear();

attachInterrupt(0, rutinInterupsi0, FALLING); attachInterrupt(1, rutinInterupsi1, FALLING);

}

void loop() {

lcd.setCursor(0,0);   lcd.print("Main Program");

lcd.setCursor(0,1); lcd.print("Count Loop "); lcd.print(countLoop); countLoop++;

delay(1000);
}

void rutinInterupsi0() {

lcd.setCursor(0,0); lcd.print("Int0 Program"); lcd.setCursor(0,1); 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);

}





3. Lalu jalankan simulator proteus untuk mengamati proses intrupsi mode falling


   kondisi awal 

kondisi saat switch ditekan

Penjelasan :
         Pada mode falling proses intrupsi terjadi jika switch ditekan karena switch terhubung dengan              ground jika switch terhubung dengan pin maka nilai inputan akan bernilai 0 jadi kesimpulannya          proses falling terjadi jika perubahan input dari 1 ke 0.


2. Intrupsi Eksternal Mode Rising
Dua buah switch akan dihubungkan pada pin INT0 dan I NT1 sama seperti Percobaan 1 Peneka nan switch akan menginterupsi program utama (yang berada pada fungsi loop) da n memaksa untuk menjalankan rutin in terupsi yang telah dideskripsikan pada program. Pada Percobaan mode interupsi yan g digunakan adalah rising

    1. ganti sintaks program seperti dibawah :

#include <LiquidCrystal.h> LiquidCrystal lcd(A0,A1,A2,A3,A4,A5); unsigned int countLoop = 0;

void setup() {

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

}
void loop() {

lcd.setCursor(0,0);   lcd.print("Main Program");

lcd.setCursor(0,1);   lcd.print("Count Loop ");  lcd.print (countLoop);

countLoop++;   delay(1000);
}

void rutinInterupsi0() {

lcd.setCursor(0,0);   lcd.print("Int0 Program");
lcd.setCursor(0,1);   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);

}



  2.  Gunakan proteus untuk mengamati program intrupsi rising :

Kondisi Awal

Kondisi saat pushbutton ditekan

Kondis saat pushbutton dilepas

Penjelasan:
          Program intrupsi rising terjadi jika saat switch dilepas, jadi saat switch di tekan proram                     intrupsi tidak akan berjalan namu saat switch diepas maka program intrupsi akan aktif jadi                 skesimpulan intrupsi ekternal mode rising akan aktif jika perubahan input dari 0 ke 1.

3. Intrupsi Eksternal Mode Any Change
    Pada Percobaan mode interupsi yang digunakan adalah any change. Dua buah switch akan dihubungkan pada pin INT0 dan INT1. Penekanan switch akan membuat program utama pada fungsi loop terhenti dan mengeksekusi rutin interupsi.

   1. Ganti sintak program seperti dibawah :

         #include <LiquidCrystal.h>
       LiquidCrystal lcd(A0,A1,A2,A3,A4,A5);
unsigned int countLoop = 0;

void setup() {

lcd.begin(16,2);
lcd.clear();

attachInterrupt(0, rutinInterupsi0, CHANGE);

attachInterrupt(1, rutinInterupsi1, CHANGE);

}
void loop() {

lcd.setCursor(0,0);   lcd.print("Main Program");

lcd.setCursor(0,1);   lcd.print("Count Loop ");  lcd.print(countLoop);
countLoop++;   delay(1000);

}

void rutinInterupsi0() {
lcd.setCursor(0,0);   lcd.print("Int0 Program");
lcd.setCursor(0,1);   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);

}
  
  2. Amati proses pengintrupsian menggunakan mode any change dengan menggunakan simulator proteus :

Kondisi saat switch ditekan
                                 


Kondi saat switch di lepas


Penjelasan :
Karena mode any change ini adalah gabungan dari mode falling dan rising maka saat perubahan masukan input dari 1 ke 0 (falling) maka program akan menjalankan proses intrupsi dan saat perubahan input dari 0 ke 1 maka layar lcd akan menampilkan INT0 atua INT1








3 komentar: