Oleh : SGO Aplikasi Mikrokontroler (DTG2K3) INTERUPSI Oleh : SGO Aplikasi Mikrokontroler (DTG2K3)
Pengertian Sistem Interupsi adalah menghentikan aliran program akibat terjadinya triger tertentu dan memaksa eksekusi rutin/fungsi layanan interupsi, setelah selesai maka aliran program akan kembali ke pernyataan program sebelum terjadinya interupsi.
Interupt.h ISR (nama_vector) { …………. …………… } Untuk menangani interupsi, dalam library winavr telah disediakan file : #include <avr/interupt.h> Dalam file di atas telah disediakan aturan khusus dalam membuat fungsi layanan interupsi (ISR = Interupt Service Routine), dengan format: ISR (nama_vector) { …………. …………… }
Pengaktifan Interupsi Untuk menge-set gunakan pernyataan: sei (); set I Untuk meng-clear gunakan pernyataan: cli (); clear I jangan lupa memberikan spasi setelah sei atau cli, karena sifat intruksinya makro bukan merupakan suatu fungsi.
Interupsi Eksternal Adalah sebuah peripheral dalam chip yang bertugas mendeteksi triger dari luar yang akan membangkitkan interupsi yang bersangkutan.
Register Pengendali Interupsi SREG register tempat bit-I berada Bit ke-7 I : Global Interupt Enable Bit ini (jika set) bertugas mengaktifkan semua interupsi setelah interupsi pheriperal yang bersangkutan diaktifkan. Bit ini akan di clear ketika terjadi interupsi dan kembali set ketika menemui intruksi RETI (akhir rutin interupsi)
Register Interupsi 2. MCU Control Register – MCUCR Hanya 4 bit yang berhubungan dengan interupsi eksternal, dimana bit tersebut digunakan untuk mendefinisikan input triger yang digunakakan
Keterangan PIN INT1 yang membangkitkan interupsi Bit 3,2 – ISC11 dan ISC10 kontrol triger interupsi eksternal 1 (INT1) ISC 11 ISC10 Keterangan PIN INT1 yang membangkitkan interupsi Level rendah (low level) 1 Toggle Falling Edge (perpindahan 1 ke 0) Rising Edge (perpindahan 0 ke 1)
Keterangan PIN INT0 yang membangkitkan interupsi Bit 1,0 – ISC01 dan ISC00 kontrol triger interupsi eksternal 0 (INT0) ISC 01 ISC00 Keterangan PIN INT0 yang membangkitkan interupsi Level rendah (low level) 1 Toggle Falling Edge (perpindahan 1 ke 0) Rising Edge (perpindahan 0 ke 1)
Register Interupt 3. General Interupt Control Register – GICR Bit -7 INT1 : Mengaktifkan interupsi eksternal satu Bit -6 INT0 : Mengaktifkan interupsi eksternal nol Bit -5 INT2 : Mengaktifkan interupsi eksternal dua 0 = disable dan 1 = enable
Register Interupt 4. General Interupt Flag Register – GIFR Akan set ketika mendeteksi adanya interupsi eksternal dan akan clear ketika cpu meng-eksekusi vektor interupsi
Keterangan PIN INT2 yang membangkitkan interupsi Register Interupt 5. MCU Control and Status Register – MCUCSR Bit ke-6 ISC2 merupakan kontrol triger interupsi eksternal 2 (INT2) yang dimiliki selain ATMEGA8. ISC 2 Keterangan PIN INT2 yang membangkitkan interupsi Falling Edge (perpindahan 1 ke 0) 1 Rising Edge (perpindahan 0 ke 1)
Contoh Interupsi Eksternal Buat Program Program utama yaitu LED berjalan, ketika ada interupsi maka led akan berkedip 10 kali
Lanj..
Lanj..
Program // External Interrupt 0 service routine interrupt [EXT_INT0] void ext_int0_isr(void) { // Place your code here unsigned char rr=0; while(rr<5) PORTA=0x0f; delay_ms(100); PORTA=0xf0; rr++; }