Upload
a-insya-ansori
View
117
Download
14
Embed Size (px)
Citation preview
MODUL VII MENGGUNAKAN INTERRUPTDALAM MIKROKONTROLLER ATMEGA8535
Akhmad Insya Ansori (110534406810)
Tanggal Percobaan: 29 November 2012PTE408 - Praktikum Mikroprosesor - I
Laboratorium Mikroprosesor S1 Pendidikan Teknik Elektro–Fakultas Teknik Universitas Negeri Malang
Abstrak
Praktikum menggunakan interrupt yang
menggunakan ATMega8535 bertujuan
untuk mengetahui dan memahami cara
menggunakan interupsi pada
mikrokontroler selain itu juga untuk
mengetahui dan memahami bagaimana
cara memrogram mikrokontroler untuk
menjalankan interupsi pada saat
program utama dijalankan.
Kata kunci : Interrupt, Mikrokontroler.
1. PENDAHULUAN
Interrupt adalah suatu kejadian atau
peristiwa yang menyebabkan
mikrokontroler berhenti sejenak untuk
melayani interrupt tersebut. Program
yang dijalankan pada saat melayani
interrupt disebut Interrupt Service
Routine. Analoginya adalah sebagai
berikut, seseorang sedang mengetik
laporan, mendadak telephone berdering
dan menginterrupsi orang tersebut
sehingga menghentikan pekerjaan
mengetik dan mengangkat telephone.
Setelah pembicaraan telephone yang
dalam hal ini adalah merupakan analogi
dari Interrupt Service Routine selesai
maka orang tersebut kembali
meneruskan pekerjaanya mengetik.
Demikian
pula pada sistem mikrokontroler yang
sedang menjalankan programnya, saat
terjadi interrupt, program akan berhenti
sesaat, melayani interrupt tersebut
dengan menjalankan program yang
berada pada alamat yang ditunjuk oleh
vektor dari interrupt yang terjadi hingga
selesai dan kembali meneruskan
program yang terhenti oleh interrupt
tadi. Seperti yang terlihat Gambar 4.1,
sebuah program yang seharusnya
berjalan terus lurus, tiba-tiba terjadi
interrupt dan harus melayani interrupt
tersebut terlebih dahulu hingga selesai
sebelum ia kembali meneruskan
pekerjaannya.
2. STUDI PUSTAKA
Interrupt
Interrupt/Interupsi ialah suatu kondisi
dimana CPU (Central Processing Unit)
mikrokontroler berhenti dari rutinitas
yang sedang dikerjakan dan
mengerjakan rutinitas lain yang ditunjuk
oleh interupsi tersebut. Ketika rutinitas
yang ditunjuk interupsi telah selesai
dieksekusi, maka CPU akan mulai
mengekseskusi rutinitas awal sebelum
adanya interupsi yang terhenti dari
tempat terakhir.
Tabel interrupt pada AVR ATmega8535
Pada bagian ini jenis interrupt
yang akan dibahas ialah external
interrupt. ATmega8535 memiliki tiga
buah eksternal interrupt yaitu INT0,
INT1, dan INT2. Ketiga interrupt ini yaitu
INT0 s.d INT2 akan tertrigger walaupun
portnya dikonfigurasi sebagai output.
Fitur ini memungkinkan interrupt yang
dikondisikan oleh software. Semua
interrupt akan tertrigger jika terdapat
perubahan rising edge atau falling
edge. Mode any change tidak dimiliki
INT2, sedangkan INT0 dan INT1
memilikinya. Mode any change
memungkinkan interrupt terpanggil
baik ketika rising dan falling edge.
Register-register yang harus di
setting untuk mengaktifkan eksternal
interupsi ialah GICR (General Interrupt
Control Register), GIFR (General
Interrupt Flag Register), MCUCR (MCU
Control Register), dan MCUCSR (MCU
Control and Status Register).
GICR (General Interrupt Control
Register)
• Bit 7 – INT1: External Interrupt Request
1 Enable
Untuk meng-enable kan External
Interrupt 1
• Bit 6 – INT0: External Interrupt Request
0 Enable
Untuk meng-enable kan External
Interrupt 0
• Bit 5 – INT2: External Interrupt Request
2 Enable
Untuk meng-enable kan External
Interrupt 2
GIFR (General Interrupt Flag
Register)
• Bit 7 – INTF1: External Interrupt Flag 1
Ketika terjadi eksternal interrupt pada
INT1, maka Flag INTF1 diset 1. Setelah
routine eksternal interrupt selesai di
eksekusi maka Flag INTF1 diset 0.
• Bit 6 – INTF0: External Interrupt Flag 0
Ketika terjadi eksternal interrupt pada
INT0, maka Flag INTF0 diset 1. Setelah
routine eksternal interrupt selesai di
eksekusi maka Flag INTF0 diset 0.
• Bit 5 – INTF2: External Interrupt Flag 2
Ketika terjadi eksternal interrupt pada
INT2, maka Flag INTF2 diset 1. Setelah
routine eksternal interrupt selesai di
eksekusi maka Flag INTF2 diset 0.
MCUCR (MCU Control Register)
• Bit 3, 2 – ISC11, ISC10: Interrupt Sense
Control 1 Bit 1 and Bit 0
Bit ini mengatur sensitifitas yang akan
dimiliki oleh port eksternal interrupt 1.
pilihan sensitifitas dapat dilihat pada
tabel dibawah:
• Bit 1, 0 – ISC01, ISC00: Interrupt Sense
Control 0 Bit 1 and Bit 0
Bit ini mengatur sensitifitas yang akan
dimiliki oleh port eksternal interrupt 0.
pilihan sensitifitas dapat dilihat pada
tabel dibawah:
MCUCSR (MCU Control and Status
Register)
• Bit 6 – ISC2: Interrupt Sense Control 2
Jika ISC2 ditulis 0 maka falling edge pada
INT2 akan mengaktifasi interupsi. Jika
ISC2 ditulis 1, maka rising edge
pada INT2 akan mengaktifasi interupsi.
3. METODE
3.1 Alat dan bahan yang
digunakan
1 set PC/Laptop yang sudah berisi
program Code Vision dan
Khazama
1 buah catu daya DC +5V
1 buah multimeter
1 buah ISP Downloader AVR
1 buah sistem minimum AVR
1 buah I/O
1 buah kabel printer USB
2 buah kabel pita hitam
3.2 Prosedur
1. Menghubungkan PORTC pada
minimum system dengan soket
jumper OUTPUT pada trainer dan
PORTD.2 (INT0) dari minimum
sistem ke soket IS1 pada trainer.
2. Membuka program Code Vision
AVR
3. Membuat project baru. Pada tap
External IRQ centang INT0 lalu
pilih Mode Falling edge dan set
PORTC sebagai OUTPUT
4. Mengetik program interrupt pada
blok Interrupt seperti sintaks
dibawah ini.
#include <mega8535.h>
#include <delay.h>
// External Interrupt 0 service
routine
interrupt [EXT_INT0] void
ext_int0_isr(void)
// disini hanya menggunakan 1
interrup saja
{
// Place your code here
PORTC = 0b10101010;
delay_ms(1000);
PORTC = 0b11111111;
delay_ms(1000);
}
5. Mengetik dalam program utama
(main program)
while (1) // program utama
{
PORTC = 0b11110000;
}
6. Mengamati nyala LED sebelum
dan sesudah anda menekan
tombol interupsi
7. Mengulangi langkah 3-6 untuk
mode interupsi (Interrupt Sense
Control) Rising Edge, Any Change
dan Low Level.
4. Hasil dan Analisa
4.1.Data Hasil Percobaan
Tabel Interupsi
N
o
Mode
Interru
pt
Program yang dijalankan (Interrupt / Main Program) Saat tombol IS1 belum ditekan (Low)
Saat tombol IS1 ditekan dan ditahan (Rising
)
Saat tombol IS1 dilepaskan (Falling)
1. Falling
Edge
11110000
11110000
101010101111111
2. Raising
Edge
11110000
101010101111111
11110000
3. Any
Chang
11110000
1010101011111
10101010111111
e 11 1
4. Low
Level
101010101111111
11110000
101010101111111
Analisa:
Setelah melihat table hasil
praktikum yang telah dilakukan dapat
dianalisa sbb :
a. Rising edge interupt
Terjadi apabila ada perubahan
dari tegangan rendah ke
tegangan yang lebih tinggi,
dengan nyala LED bergantian
dan delay 1000 ms.
b. Any change
LED akan menyala secara
bergantian dengan delay 1000
ms jika terjadi perubahan
tegangan, tanpa memperdulikan
arah perubahan tegangan tsb.
Dikarenakan pada program
utama dideklarasikan apabila int0 maka
akan mejalankan interupsi, maka LED
akan menyala secara bergantian dengan
delay 1000 ms.
Kesimpulan
Berdasarkan percobaan diatas dapat disimpulkan bahwa:
Untuk menggunakan fasalitas interupsi pada ATMega8535 kita harus melakukan inisialisasi pada progam utama, agar dapat dibaca oleh mikrokontroler.
Ketika terjadi perubahan tegangan Any change akan menjalankan interupsi.
Pada ATmega8535 pin yang digunakan untuk interupsi eksternal yaitu : int0, int1, int2.
Daftar Pustaka
Modul VII Menggunakan
Interrupt Dalam Mikrokontroler
ATMega8535.
http://
hendawan.files.wordpress.com
/2008/01/basic-avr-
microcontroller-tutorial_v3.pdf
Diakses pada 5 Desember
2012