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 1 (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. Saatrising 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 fallingatau pun dari kondisi rising.
3. Kapankah
interupsi mode any change terjadi? jelaskan?
Jawab :
Interupsi mode any change terjadi apabila terjadi
perubahankondisi high (1) ke low
(0) (Falling) maupun dari kondisi low
(0)ke high (1) (Rising).


Tidak ada komentar:
Posting Komentar