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.
Atmega8535 menyediakan 21 macam sumber interupsi yang masing-masing memiliki alamata vektor interupsi seperti pada tabel 19. Setiap interupsi yang aktif akan dilayani segera setelah terjadi permintaan interupsi, tapi jika dalam waktu bersamaan terjadi lebih dari satu interupsi maka perioritas yang akan diselesaikan terlebih dahulu adalah interupsi yang memiliki urut lebih kecil sesuai tabel 19 berikut.

Pada AVR terdapat 3 pin interupsi eksternal, yaitu INT0,INT1,dan INT2. Interupsi eksternal 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 diatur oleh 2 buah register I/O yaitu MCUCR dan register MCUCSR

MCUCR ( MCU Control Register), mengatur pemicu interupsi dan fungsi MCU secara umum.


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 :


MCUCSR ( MCU Control and Status Register)


Bit 6 – ISC2 : interrupt sense control INT2
Untuk interupsi INT2 hanya memiliki satu bit ISC, sehingga hanya memiliki 2 kondisi pemicu interupsi yaitu:
‘0’ = interupsi terjadi jika terjadi transisi turun pada pin INT2
‘1’= interupsi terjadi jika terjadi transisi naik pada pin INT2
Untuk sumber interupsi INT2, perubahan/transisi sinyal yang dapat membangkitkan intrupsi harus memiliki lebar pulsa minimal sekitar 50 ns.

GICR

Pemilihan pengaktifan interupsi eksternal diatur oleh register GICR ( General Interrupt Control Register ) yang terlihat pada gambar berikut :


Bit penyusunnya dapat dijelaskan sebagai berikut:

  •  Bit INT1 adalah bit untuk mengaktifkan interupsi eksternal 1. Apabila bit tersebut diberi logika 1 dan bit I pada SREG (status register) juga satu , maka interupsi eksternal 1 akan aktif.
  •  Bit INT0 adalah bit untuk mengaktifkan interupsi eksternal 0. Apabila bit tersebut diberi logika 1 dan bit I pada SREG (status register) juga satu , maka interupsi eksternal 0 akan aktif.
  • Bit INT2 adalah bit untuk mengaktifkan interupsi eksternal 2. Apabila bit tersebut diberi logika 1 dan bit I pada SREG (status register) juga satu , maka interupsi eksternal 2 akan aktif.

SREG (Status Register)

Digunakan untuk menyimpan informasi dan hasil operasi aritmatika terakhir. Data SREG selalu berubah setiap instruksi atau operasi pad ALU dan datanya tidak otomatis tersimpan apabila terjadi instruksi percabangan baik karena interupsi maupun lompatan.


Bit 7 – I : Global interrupt enable
Bit I digunakan untuk mengaktifkan interupsi secara umum (interupsi global). Jika bit I bernilai ‘1’ maka interupsi secara umum aktif, tetapi jika ‘0’ maka tidak satupun interupsi yang aktif.

Untuk contoh aplikasinya bisa dilihat stopwatch digital
sumber gambar: http://media.viva.co.id/

Tinggalkan Balasan

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.