MODUL
VII
MENGGUNAKAN
INTERRUPT DALAM MIKROKONTROLLER
ATMEGA8535

- Menjelaskan fitur interrupt dalam mikrokontroler.
- Mengetahui dan memahami bagaimana memrogram mikrokontroler untuk menjalankan interupsi pada saat program utama dijalankan

Interrupt
adalah kondisi di mana pada saat program utama dieksekusi/dikerjakan oleh CPU
kemudian tiba-tiba berhenti untuk sementara waktu karena ada rutin lain yang
harus ditangani terlebih dahulu oleh CPU. Setelah selesai mengerjakan rutin tersebut, CPU
kembali mengerjakan instruksi pada program utama. Port yang berfungsi sebagai interrupt
eksternal adalah:
PORTD.2
(PD2)à External
Interrupt 0 Input (INT0)
PORTD.3
(PD3)à External
Interrupt 1 Input (INT1)
PORTB.2
(PB2)à External
Interrupt 2 Input (INT2)
Di dalam mikrokontroler AVR terdapat 21
interrupt baik eksternal maupun internal. Interrupt tersebut dapat dilihat
dalam tabel berikut.
Register-register
yang digunakan untuk interrupt meliputi:
a.
MCU
Control Register-MCUCR
·
Bit 3,2 – ISC11, ISC10: Interrupt Sense Control 1 Bit 1 dan
Bit 0
·
Bit 1,0 – ISC01, ISC00: Interrupt Sense Control 0 Bit 1 dan
Bit 0
b.
MCU
Control and Status Register-MCUCSR
·
ISC2 = 0, a falling edge on INT2 activates the interrupt
·
ISC2 = 1, a rising
edge on INT2 activates the interrupt
·
Lebar pulsa minimum: 50 ns
c.
Status
Register-SREG
·
Bit 7 –
I: Global Interrupt Enable
·
d.
General Interrupt Control Register-GICR
·
Bit 7 - INT1:eksternal interrupt request 1 enable
·
Bit 6 – INT0 :eksternal interrupt request 0 enable
·
Bit 5 – INT2 : eksternal interrupt request 2 enable
e.
General Interrupt Flag Register-GIFR
·
Bit 7 - INT1:eksternal interrupt flag 1 enable
·
Bit 6 – INT0 :eksternal interrupt flag 0 enable
·
Bit 5 – INT2 : eksternal interrupt flag 2 enable

- 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

A.
MENGGUNAKAN
1 INTERRUPT
1.
Hubungkan PORTC pada minimum system dengan soket jumper
OUTPUT pada trainer dan PORTD.2 (INT0) dari minimum sistem ke soket IS1 pada
trainer.
2.
Buka program Code Vision AVR
3.
Buatlah project baru. Pada tap External IRQ centang INT0
lalu pilih Mode Falling edge dan set PORTC sebagai OUTPUT
4.
Ketik sub routine interrupt seperti sintaks dibawah ini.
5.
Ketik dalam program utama (main program)
6.
Compile dan Build program, jika ada yang error
perbaiki program. Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program.
7.
Amati nyala LED sebelum dan sesudah anda menekan tombol
interupsi (lihat tabel interupsi pada data hasil percobaan)
8.
Ulangi langkah 3-9 untuk mode interupsi (Interrupt Sense Control)Rising Edge, Any Change dan Low Level.
B.
MENGGUNAKAN
3 INTERRUPT SECARA BERSAMAAN
1.
Hubungkan PORTC pada minimum system dengan soket jumper
OUTPUT pada trainer, PORTD.2 (INT0),
PORTD.3 (INT1) dan PORTB.2 (INT2) dari minimum sistem ke soket IS1 pada
trainer.
2.
Buka program Code Vision AVR.
3.
Buatlah project baru. Pada tap External IRQ centang INT0
Enabled, INT1 Enabled dan INT2 Enabled. Kemudian pilih Mode Falling Edge untuk
semua interrupt dan set PORTC sebagai OUTPUT.
4.
Ketik sub routine interrupt seperti sintaks dibawah ini.
5.
Ketik dalam program utama (main program)
6.
Compile dan Build program jika ada yang error
perbaiki program. Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program.
7.
Hubungkan INT0, INT1, dan INT2 menjadi satu dengan IS1 pada
trainer
8.
Amati nyala LED sebelum dan sesudah anda menekan tombol
interupsi tombol IS1

Tabel
Interupsi
No
|
Mode Interupsi
|
Program yang dijalankan (Interrupt / Main Program)
|
||
Saat tombol IS1 belum ditekan (Low)
|
Saat tombol IS1 ditekan dan ditahan
(Raising)
|
Saat tombol IS1 dilepaskan
(Falling)
|
||
1
|
Falling
Edge
|
11110000
|
11110000
|
10101010
11111111
|
2
|
Rising
Edge
|
11110000
|
10101010
11111111
|
10101010
11111111
|
3
|
Any
Change
|
11110000
|
10101010
11111111
|
10101010
11111111
|
4
|
Low
Level
|
10101010
11111111
|
11110000
|
10101010
11111111
|
|
|
|
|
|

1.
Analisa data hasil pada Tabel Interupsi
Dari tabel interupsi terdapat 4 jenis mode interupsi,
seperti pada teori yang sudah dipelajari. Dalam praktikum ini adalah bagaimana
kita tahu fungsi dari setiap mode interup, yang mana fungsi interup adalah
sebegai penyela dalam suatu program. Keadaan awal pada lampu LED adalah 11110000, pada mode pertama adalah mode falling. Mode
falling adalah interup akan diterapkan pada suatu program ketika keadaan 1
berubah atau menjadi 0. Dari hasil tabel interup dapat dilihat yang mula nyala
LED 11110000 dan diberi keadaan raising tetap 11110000, selanjutnya ketika
diberi keadaan falling menjadi 10101010 & 1111111 seperti isi program yang
terdapat pada interup. Mengapa dapat berubah? Dikarenakan perpindahan dari
raising ke falling adalah syarat dari keadaan mode Falling Edge bekerja.
Pada mode kedua adalah mode raising. Mode
raising adalah interup akan diterapkan pada suatu program ketika keadaan 0
berubah atau menjadi 1. Dari hasil tabel interup dapat dilihat yang mula nyala
LED 11110000 dan diberi keadaan raising menjadi 10101010 & 1111111 seperti
isi program yang terdapat pada interup, selanjutnya ketika diberi keadaan
falling menjadi 10101010 & 1111111 seperti isi program yang terdapat pada
interup. Seharusnya ketika diberi keadaan falling nyala LED akan berubah menjadi
11110000, karena ketika falling tidak memenuhi syarat dalam mode raising.
Kenapa nyala LED dapat berubah & tidak seperti pada teori? Dikarenakan
perpindahan dari falling ke raising adalah syarat dari keadaan mode Raising
Edge bekerja. Dalam hal ini belum mendapat solusi terhadap masalah tersebut.
Pada mode ketiga adalah mode any change. Mode
any change adalah interup akan diterapkan pada suatu program ketika keadaan 0
berubah atau menjadi 1 ataupun sebaliknya. Dari hasil tabel interup dapat
dilihat yang mula nyala LED 11110000 dan diberi keadaan raising menjadi
10101010 & 1111111 seperti isi program yang terdapat pada interup,
selanjutnya ketika diberi keadaan falling menjadi 10101010 & 1111111
seperti isi program yang terdapat pada interup. Kenapa hal tersebut terjadi?
Dikarenakan perpindahan dari raising ke falling adalah syarat dari keadaan mode
Any Change bekerja. Dan perpindahan dari falling ke raising adalah syarat dari
keadaan mode Any Change bekerja.
Pada mode keempat adalah mode Low level. Low
level adalah interup akan bekerja ketika kondisinya = 0. Dari hasil tabel
interup dapat dilihat yang mula nyala LED 10101010 & 1111111 dan diberi keadaan raising menjadi 11110000
seperti isi program yang terdapat pada interup, selanjutnya ketika diberi keadaan
falling menjadi 10101010 & 1111111 seperti isi program yang terdapat pada
interup. Kenapa pada moe ini dalam keadaan awal interup bekerja? Dikarenakan
dalam kodisi awal yang diberikan adalah 0, sehingga pada awal program interup
bekerja dan memenuhi syarat dari mode Low Level. Pada saat diberi keadaan
falling pun interup bekerja, karena sudah memenuhi syarat dari mode Low level.
2.
Ketika ke dua interupt diaktifkan secara bersamaan tuliskan
urutan terjadinya interupt
Dalam kondisi ini, urutan terjadinya interup tergantung dari
mode interup mana yang terpenuhi syaratnya. Untuk praktikum ini kelompok kami
menggunakan mode yang sama, yaitu Falling Edge akan tetapi menggunakan 2
interup yang berbeda dan program berbeda, yaitu INT0 & INT1. Ketika syarat
dari Falling Edge terpenuhi, interup yang bekerja adalah interup yang lebih
dulu menerima keadaan atau syarat yang diberikan. Seperti
yang terlihat pada gambar
Tidak ada komentar:
Posting Komentar