Vous êtes sur la page 1sur 6

AVR Interrupsi

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 :

Alat Yang Digunakan


• Software Eclipse
• Plugins AVR Eclipse
• Toolset GCC-AVR compailer
• AVR development board Xtal 16Mhz,barled portA,pushbutton1
• Programmer
Langkah percobaan

Membuat pushbutton dari Function Generator


1. set pada FG 100hz dengan tegangan 2,5v
2. ukur dengan Multimeter sampai tegangan 5v
3. sambungkan dengan kabel jumper dengan arduinomega2560

Memulai AVR dengan Eclipse

1. buka eclipse,pilih New C project


2. beri nama project, dan pilih next
3. pilih MCU tipe ATmega2560 dan Xtal 16MHz,finish
4. klik kanan project,new,dan source file. Source file isi dengan “main.c” finish
5. ketikkan program yang ada pada buku
6. stting avrdude,dengan klik kanan project dan pilih properties
7. pilihdownloader pada AVR ke avrdude, bla masih kosong klik avrdude dan new
8. pilih STK500 dan ketikkan /dev/ttyACM0 klik ok
9. aplly program dan klik icon upload.

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

Dari praktikum diatas dapat disimpulkan yaitu:


• Pada percobaan ketiga yatu tentang multiple interrupt,semakin rendah nilai biner interrupsi
maka semakin tinggi prioritas interrupt nya.
• Pada percobaan pertama tentang falling dan rising edge,yang membedakkan ialah
tegangan yang keluar dari pin 21. untuk falling 5v ke 0v dan raising 0v ke 5v,sehingga
LED yang menyala jugaterdapat perbedaan.
• Pada pervcobaan ke dua yaitu tentang Efek delay, program utama berhenti sesuai delay
waktu dan akan dilanjutkan ke program utama lagi, jadi interrupt memberhentikan
program sejenak lalu dilanjutkan lagi.
• Pada tugas, untuk membuat interrupt harus sesuai pada data sheet yang ada dibuku, seperti
yang dijelaskan pada analisa, karena pada masing-masing INT memiliki PIN dan mapped
pin yang berbeda.

Vous aimerez peut-être aussi