Anda di halaman 1dari 5

AVR Interupsi

1. Tujuan :

Setelah melakukan percobaan ini mahasiswa diharapkan mampu :


a. Untuk membuat program interupsi pada mikrokontroler AVR.
b. Untuk memahami tentang basic INT, INT0, PCINT dan Multiple Intterupt.

2. Dasar Teori :

Interupsi adalah suatu permintaan khusus pada mikrokontroler untuk melakukan


sesuatu, jika terjadi interupsi maka program akan menghentikan dahulu apa yang sedang
dikerjakan dan melakukan apa yang diminta oleh yang menginterupsi 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 tersebut.

Seperti yang terlihat pada gambar di bawah, sebuah program yang seharusnya berjalan
terus lurus, tiba-tiba terjadi interrupt dan harus melayani interrupt tersebut terlebih
dahulu hingga selesai sebelum 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.

Arduino Mega 2560 menyediakan 29 macam sumber interupsi yang masing-masing


memiliki alamat vektor interupsi seperti pada tabel 1. Setiap interupsi yang aktif akan
dilayani segera setelah terjadi permintaan interupsi, tapi jika dalam waktu bersamaan
terjadi lebih dari satu interupsi maka prioritas yang akan diselesaikan terlebih dahulu
adalah interupsi yang memiliki urut lebih kecil atau semakin rendah vektor interupsi akan
semakin tinggi prioritas interrupt, seperti yang terlihat pada tabel di bawah ini.
Tabel 1. Vektor Interupsi pada Arduino Mega 2560

Pada AVR memiliki interupsi eksternal yang dapat dibangkitkan apabila ada
perubahan logika baik transisi naik (rising edge) maupun transisi turun (falling edge) pada
pin interupsi. Pengaturan kondisi keadaan yang menyebabkan terjadinya interupsi
eksternal dari attachInterrupt () adalah bukan dikendalikan oleh EICRA dan EICRB
register. Setiap INT memiliki dua bit yang sesuai di register yang digunakan untuk
mengatur mode, seperti pada tabel 2 di bawah ini :

Tabel 2. Intterupt Sense Control


3. Peralatan yang digunakan :
1. Software Eclipse
2. Plugins AVR Eclipse
3. ToolSet GCC-AVR compiler
4. AVR development board Xtal 16 MHz, BarLED portA, PushBtn1
5. Datasheet mikrokontroler ATMega 2560
6. Pinout Diagram Arduino Mega 2560
7. Function Generator
8. Jumper (2)

4. Langkah Percobaan :
1. Menyiapakan peralatan yang dibutuhkan dan menyalakan laptop.
2. Membuka software program Eclips dan menutup tampilan welcome.
3. Memilih New C Project.
4. Mengisi avrMega2560-intterupt pada nama project .
5. Meng-uncheck pilihan debug, kemudian klik Next.
6. Memilih tipe mikrokontroller yang digunakan pada MCU type dan memilih frekuensi
Xtal external pada MCU frequency, misalnya MCU Type : ATmega2560; MCU
Frequency (Hz) : 16000000.
7. Meng-klik kanan project New Source File.
8. Mengisi Source File dengan main.c Finish.
9. Mengetik program percobaan yang akan di jalankan (terlampir) pada main.c.
10. Menyimpan program yang telah diketik dengan pilih Window Preferences
General Workspace Centang (save automatically before build) Apply
OK.
11. Mengatur avrdude dengan cara klik kanan project anda dan kemudian pilih
properties New pilih wiring pilih /dev/ttyACM0 Pilih –D kemudian klik
OK.
12. Bila sudah selesai meng-klik Apply OK.
13. Mengupload program dengan cara klik project anda dan kemudian klik icon upload.
14. Menghubungkan probe merah function generator dengan pin 21 dan probe hitam
function generator dengan pin GND arduino (untuk percobaan 1).
5. Analisa
Pada praktikum ini digunakan untuk memahami tentang vektor interupsi dan kontrol
(pengaturan) interupsi eksternal sehingga mampu membuat program interupsi pada
mikrokontroler AVR. Pada praktikum ini membahas mengenai interupsi, yang dimana
interupsi adalah suatu permintaan / kondisi khusus pada mikrokontroler untuk
melakukan sesuatu, jika terjadi interupsi maka program akan menghentikan dahulu apa
yang sedang dikerjakan dan melakukan apa yang diminta oleh yang menginterupsi 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
tersebut. Setiap interupsi yang aktif akan dilayani segera setelah terjadi permintaan
interupsi, tapi jika dalam waktu bersamaan terjadi lebih dari satu interupsi maka interupsi
yang dijalankan bergantung pada semakin rendah vektor interupsi akan semakin tinggi
prioritas interrupt.
Pada praktikum ini akan dilakukan 4 percobaan. Untuk percobaan pertama hanya
menggunakan single interrupt yang menghubungkan probe merah function generator
dengan pin 21 dan probe hitam function generator dengan pin GND arduino yang mana
jenis interrupt yang digunakan adalah falling edge, interupsi ini terjadi ketika saat inputan
terjadi perubahan dalam kondisi HIGH menuju ke LOW sehingga ketika push button “MAN”
pada function generator ditekan maka terjadilah perubahan nilai dari 1 ke 0 (falling)
dikarenakan push button “MAN” terhubung dengan ground. Saat terjadinya peristiwa
falling program akan mengeksekusi program interupsi tersebut dan setelah program
menginterupsi, maka program akan melanjutkan program utama kembali (count loop)
secara terus menerus. Untuk percobaan kedua sama halnya dengan percobaan pertama
hanya saja jenis interrupt yang digunakan adalah rising edge, interupsi ini terjadi ketika
saat inputan terjadi perubahan nilai dari 1 ke 0 (rising) sehingga program interrupt akan
bekerja saat melepaskan push button dimana interupsi 0 akan dijalankan yaitu suatu
kejadian yang akan menghentikan sementara jalannya program itu kemudian program
akan berjalan seperti semula (akan menghitung loop dari 0).
Untuk percobaan ketiga ini menggunakan program pertama hanya saja mengubah
delay interrupt dari 200 ms menjadi 1000 ms sehingga

Anda mungkin juga menyukai