Sistem ini jika diibaratkan pada kehidupan nyata yaitu ketika seorang pengajar berhenti menjelaskan dikarenakan ada salah seorang muridnya mengacungkan tangan untuk pergi keluar atau mengatakan interupsi dan setelah menyelesaikan interupsi tersebut pengajar tersebut melanjutkan kembali mengajarnya tetapi bukan mengulang dari awal.
ATMega 16 menyediakan 3 interupsi eksternal, yaitu INT0, INT1 dan INT2. Interupsi eksternal bisa dilakukan dengan memberikan logika 0 atau perubahan logika (rissing edge dan falling edge) pada pin interupsi yang bersangkutan
Jenis
Interup
|
PIN
|
INT0
|
PORTD.2
|
INT1
|
PORTD.3
|
INT2
|
PORTB.2
|
Terdapat dua register yang mengatur kondisi dan cara pengaktifan interup, yaitu register MCUCR dan GICR.
Register GICR
Register GICR untuk menentukan register eksternal yang aktif.
INT1
|
INT0
|
INT2
|
-
|
-
|
-
|
IVSEL
|
IVCE
|
|
Bit
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
Bit 5 - 7 merepresentasikan bit interupsi eksternal akan aktif jika bit yang bersangkutan diberi logika 1.
Register MCUCR
SM2
|
SE
|
SM0
|
ISC11
|
ISC10
|
ISC10
|
ISC01
|
ISC00
|
|
Bit
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
Register MCUCR adalah register yang mengatur mode, seperti low level, Any change, Falling edge, Rissing edge.
Berikut cara pembuatan interupt pada Code Vision AVR :
Berikut cara pembuatan interupt pada Code Vision AVR :
Langkah pertama adalah buka Code vision AVR, kemudian new project kemudian pilih Tab External IRQ seperti terlihat pada gambar diatas.
Pilih interupt mana yang akan dipakai :
Jenis
Interup
|
PIN
|
INT0
|
PORTD.2
|
INT1
|
PORTD.3
|
INT2
|
PORTB.2
|
Isikan program apa saja untuk melaksanakan interupsi atau memberhentikan sejenak program utama ketika ada logika 0 atau perubahan logika pada pin interupt.
Disini isi program yang akan dilaksanakan :
Disini isi program yang akan dilaksanakan :
#define LED PORTA.0
interrupt [EXT_INT0] void ext_int0_isr(void)
{
LED = 1;
}
disini register yang berubah :
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Falling Edge
// INT1: Off
// INT2: Off
GICR|=0x40; //bit yang aktif INT0 01000000 Pada register GICR
MCUCR=0x02; //mode yag dipilih Falling edge
MCUCSR=0x00;
GIFR=0x40;
0 komentar:
Post a Comment
Please correct and comment