Twitter

MIKROKONTROLER INTERUPSI EKSTERNAL

Author Unknown - -
Home » MIKROKONTROLER INTERUPSI EKSTERNAL







LAPORAN PRAKTIKUM 4

INTERUPSI EKSTERNAL

Nama  : Muhammad Rizki

Nim     : 3211301031


TUJUAN :

1. Mampu membuat program untuk penggunaan fitur interupsi eksternal.

2. Memahami perbedaan mode interupsi eksternal (falling, rising, dan any 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 :

4.1 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 4.1.








Gambar 4.1 Rangkaian percobaan 4.1



2. Tuliskan sintaks program berikut ini, kemudian lakukan kompilasi dan upload

program ke sistem minimum Arduino.

#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.setCursor(0,1); countLoop++; delay(1000);
}

lcd.print("Main Program");
lcd.print("Count Loop "); lcd.print(countLoop);


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);
}







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 ?

2. Jelaskan pada saat kapan terjadinya proses interupsi ?

Jawab :
1.         Awal mulanya program utama akan menghitung naik sesuai dengan program yang kita buat  lcd.setCursor(0,0) MAIN PROGRAM , lcd.setCursor(0,1) HITUNG. Pada saat swich di tekan maka akan mengalami interupsi sesuai dengan yang terhubung dengan swich. Misalnya kita biarkan program count loop increment sampai diatas 5 kemudian tekan swich 0 yang  terhubung dengan INT 0 maka LCD akan menampilkan program rutinInterupsi0 yang isinya lcd.setCursor(0,0) adalah Int0 Program dan lcd.setCursor(0,1) Interrupt INT0 selama 1000mS kemudian akan kembali ke program utama dan jika swichnya dilepas tidak akan berpengaruh apa- apa,tetap pada program utama untuk melanjutkan proses count.
2.         Interupsi mode falling terjadi pada saat keadaan high ke low. Ketika kita menekan swich program akan mengalami proses intrupsi selama 1000mS dan akan kembali ke program utama, ketika kita melepaskan swichnya program tetap.




4.2 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 lakukan kompilasi dan upload program ke sistem minimum Arduino.

#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);
}

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 ?

2. Jelaskan pada saat kapan terjadinya proses interupsi ?

3. Kapankah interupsi mode falling terjadi ? kapankah interupsi mode rising terjadi ?

Jelaskan !

JAWAB:
1.         Awal mulanya program utama akan menghitung naik sesuai dengan program yang kita buat  lcd.setCursor(0,0) MAIN PROGRAM , lcd.setCursor(0,1) HITUNG. Pada saat swich di tekan program belum mengalami proses interupsi,kemudian ketika di lepas maka akan mengalami interupsi sesuai dengan yang terhubung dengan swich. Misalnya kita biarkan program count loop increment sampai diatas 5 kemudian tekan swich 1 yang  terhubung dengan INT 1 maka tampilan LCD  masih di program utama,ketika kita melepaskan swich maka akan menampilkan program rutinInterupsi1 yang isinya lcd.setCursor(0,0) adalah Int1 Program dan lcd.setCursor(0,1) Interrupt INT1 selama 1000mS kemudian akan kembali ke program utama untuk melanjutkan proses count.
2.         Interupsi mode falling terjadi pada saat keadaan high ke low. Ketika Ketika kita menekan swich program akan mengalami proses intrupsi selama 1000mS dan akan kembali ke program utama, ketika kita melepaskan swichnya program tetap. Interupsi mode rising terjadi pada saat keadaan low ke high. Ketika kita menekan swich program utama masih jalan untuk proses count pada saat kita melepaskan swich,program akan mengalami proses intrupsi selama 1000mS dan akan kembali ke program utama utuk melanjutkan proses count.




4.3 Interupsi Eksternal dengan 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.

Prosedur :

1. Gantilah sintaks program pada Percobaan 4.2 dengan sintaks program berikut ini.

Lakukan kompilasi dan upload program ke sistem minimum Arduino.

#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);
}



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 ?

2. Jelaskan pada saat kapan terjadinya proses interupsi ?

3. Kapankah interupsi mode any change terjadi ? Jelaskan !


Jawab
1.         Awal mulanya program utama akan menghitung naik sesuai dengan program yang kita buat  lcd.setCursor(0,0) MAIN PROGRAM , lcd.setCursor(0,1) HITUNG. Pada saat swich di tekan maka akan mengalami interupsi sesuai dengan yang terhubung dengan swich selama 1000mS lalu akan kembali ke program utama,pada saat kita melepaskan swich maka akan mengalami interupsi sesuai dengan yang terhubung dengan swich. Misalnya kita biarkan program count loop increment sampai diatas 5 kemudian tekan swich 0 yang  terhubung dengan INT 0 maka LCD akan menampilkan program rutinInterupsi0 yang isinya lcd.setCursor(0,0) adalah Int0 Program dan lcd.setCursor(0,1) Interrupt INT0 selama 1000mS kemudian akan kembali ke program utama dan jika swichnya dilepas maka akan menampilkan program rutinInterupsi1 yang isinya lcd.setCursor(0,0) adalah Int1 Program dan lcd.setCursor(0,1) Interrupt INT1 selama 1000mS kemudian akan kembali ke program utama untuk melanjutkan proses count.
2.         Ketika keadaan dari 1(HIGH) ke 0 (LOW) dan pada keadaan 0 (LOW) ke 1 HIGH). Misalnya pada saat kita menekan swich maka program akan mengalami proses intrupsi selama 1000mS kemudian akan kembali ke program utama dan pada saat kita melepas swich program juga akan mengalami proses intrupsi selama jangka waktu 1000mS kemudian akan kembali menjaankan program utama.  Jadi interupsi terjadi pada saat switch di tekan dan dilepas.
3.         Ketika kita menekan swich dan pada saat melepaskannya. Ketika kita menekan swich maka program akan mengalami intrupsi dalam jangka waktu 1000mS lalu kembali ke program utama pada saat kita melepaskan swich program akan mengalami intrupsi selama 1000mS setelah itu kembali ke program utama. Jadi any change  adalah pergabungan dari  mode FALLING mode RISING.

















Kesimpulan

Pada praktikum interup ini ki dapat dapat mengetahui bah wa interup pada mode falling interrupts akan terjadi pada saat switch di tekan, dan untuk mode risingintrupts akan terjadi pada saat switch di lepas, sedangkan pada mode change adalah gabungan antara mode falling dan mode rising jadi intrupts terjadi pada saat switch di tekan dan di lepas.