Académique Documents
Professionnel Documents
Culture Documents
Avr Interrupt
Avr Interrupt
Tujuan:
• Dapat membuat program interrupsi pada mikrokontroller AVR
• Dapat menganalisa tujuan dari program
Dasar Teori
Interrupt adalah suatu kejadian atau peristiwa yang menyebabkan mikrokontroler berhenti
sejenak untuk melayani interrupt tersebut. Yang harus diperhatikan untuk menguanakan interupsi
adalah, kita harus tau sumber-sumber interupsi, vektor layanan interupsi dan yang terpenting
rutin lyanan interupsi, yaitu subrutin yang akan dikerjakan bila terjadi interupsi . Interrupt
Service Routine.
Analoginya adalah sebagai berikut, seorang guru sedang menerangkan pelajaran di kelas
kemudian tiba-tiba ada siswanya yang mengacungkan tangan memohon ijin untuk bertanya,
setelah anak itu bertanya dan dijawab oleh gurunya kemudian guru tersebut menerangkan
pelajaran kembali. Siswa menanyakan pertanyaan setelah mengacungkan tangan yang dalam
hal ini adalah merupakan analogi dari Interrupt Service Routine selesai maka seorang guru
tersebyt kembali meneruskan pekerjaanya menerangkan pelajaran. 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 di bawah, 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.
AVR menyediakan beberapa sumber interupsi yang berbeda. Tiap-tiap interupsi dan reset
memiliki vektor program yang berbeda. Semua interupsi didasari satu bit tunggal yang harus
diberi logika tinggi sebagai Global Interrupt Enable pada Status Register untuk mengaktifkan
interupsi.
Gambar dibawah ini adalah sumber interrupsi pada ATmega2560
Bit penyusunnya:
Bit ISC11 dan ISC10 bersama-sama menentukan kodisi yang dapat menyebakan interupsi
eksternal pada pin INT1. Dan Bit ISC01 dan ISC00 bersama-sama menentukan kodisi yang dapat
menyebakan interupsi eksternal pada pin INT0. keadaan selengkapnya terlihat pada table berikut :
AVR interrupsi
1. Pasang Modul arduino pada komputer
2. jalankan Eclipse
3. isi koding yang terlampir percobaan 1,2 dan 4 pada main.c
ANALISA
Praktikum minggu lalu yaitu tentang AVR interrupsi. Pada praktikum tersebut ada 3
percobaan program yang digunakan. Yang pertama ialah program seperti yang terlampir, pada
program koding tersebut menunjukkan interrupt dari falling edge, dimana LED yang bergantian
menyala dari bit ke-0 menuju bit ke-7 (running led) dan apabila ditekan tombol manual yang
didesain sebagai tombol interrupt yang ada pada function generator yang sebelumnya sudah
disetting,maka akan mereset running led ke bit ke-0 dengan delay 500ms dan ditandai dengan
tegangan pada pin 21 berubah dari 5v menjadi 0v. Dan percobaan pertama di desain sedemikian
rupa seperti perintah pada buku, maka akan menghasilkan interrupt rising edge. Pada percobaan
tersebut terjadi perubahan logika 0 ke 1 akan mengaktifkan sistem interruptsi seperti halnya
falling edge akan tetapi tegangan yang berubah dari 0v ke 5v.
Pada pervcobaan ke dua yaitu tentang Efek delay. Pada percobaan tersebut yaitu mengatur
delay waktu untuk interrupt sesuai yang diinginkan. Pada program tersebut terlihat ketika di
inteerupt, program utama berhenti sesuai delay waktu dan akan dilanjutkan ke program utama
lagi, jadi interrupt memberhentikan program sejenak lalu dilanjutkan lagi.
Pada percobaan ketiga yatu tentang multiple interrupt. Pada percobaan tersebut program
didesain sedemikian rupa sehingga menjalankan interrupt lebih dari satu dalam waktu yang
bersamaan. Dari hasil percobaan tersebut, semakin rendah nilai biner interrupsi maka semakin
tinggi prioritas interrupt nya.
Yang terakhir ialah tugas yang membuat running LED yang ketika diinterupt akan muncul
Blink. Pada tugas tersebut Interrupt yang digunakan berbeda beda pada masing masing kelompok.
Pada kelompok saya yaitu INT2, sehingga butuh kabel jumper yang bisa mengaktifkan INT2
tersebut seperti pada data yang ada dibuku yaitu jumper antara VCC dan pin 19 pada
arduinomega2560 dan ada perubahan koding yang digunakan seperti yang terlampir yaitu
_BV(PD2) dan EICRA, EICRA untuk INT0,INT1,INT2.
KESIMPULAN