assalamualaikum wr .... wb .... :)
B.
Interupsi
Eksternal dengan mode Rising
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 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.
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).
- 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 :) ..
Wassalam :) ..
#NHS