f = oe
Perangkat Interupsi
Mikrokontroler AVR
Sasaran:
Setelah membaca bab ini, peribaca akan mampu:
* — Memahami arsitektur perangkat interupsi Mikrokontroler AVR.
¢. Mampu menggunakan fitur interupsi dalam berbagai aplikasi
Pada subbab ini akan menguraikan secara lengkap arsitektur perangkat interupsi
Mikrokontroler AVR. Pembahasan dimulai dengan suatu pengenalan konsep interupsi, dan
lanjutkan dengan memberikan contoh aplikasi dengan bahasa assembly dan bahasa C. Pada
bab ini lebih ditekankan pada interupsi yang berasal dati eksternal. Untuk interupsi timer, serial,
ADC, dan lainnya akan dibabas secara lebih mendalam dalam bab berikutnya.
11.1 Arsitektur Perangkat Interupsi Mikrokontroler AVR
lah dijelaskan seat membabas pesangkat interupsi mikrokontroler
alu. Seperti pada MCS51, Mikrokontroler AVR juga memiliki
Perangkat yang cara kerjanya sama, tetapi mempunyai tambahan beberapa fitur. Program yang
dijalankan dengan cara interupsi dinamakan sebagai program layanan interupsi (ISR - Interrupe
Service Routiné). Saat prosesor menjalankan ISR, pekerjaan yang sedang dikerjakan pada program
Utama sementara ditinggallsan, Selesai menjalankan ISR, peosesor Kembali menjalankan program
tama, seperti yang digambatkan dalam Gambar 111.
Pengertian interupsi t
MCS51 pada bab VII yang |:240 EG) 48 Jam Kupas Tuntas Mikrokontroler MCS51 & AVR
Tabel 11.2 Register mcuCcR
Bit Nama Bit Keterangan
7] sila] Steep ode Select-> meni mode SLEEP MCU.
‘SM2
Smt
6 Smt | sao
Sleep Mode
3 | sio i
0
0
Idle
0
0
7
ADC Noise Reduction
°
1
0
Power down
o
1
1
Power save
1
°
Reserved .
1
0
Reserved 7
1
1
Standby 0
1
1
Extended Standby 1
‘ SE ‘Sleep Enable. Bit inl untuk men
r
sebelum SLEEP djalankan, Setteh vows SLEEP dengan memberikan logika 1’ pada SE
harus diberi logika’0',Perangkat Interupsi Mikrokontroler AVR t
Bit_| Nama Bit
3] SCH | TarTupE Sense Corer TET ama eT
interupsi ‘ake
iene erste 1 diakttkan dengan pin eksternal INT4jika bit I pada SREG dan inferrupt
Ten Na een sUaian pada GICR diset. Nila pada pin INT! disampel sebelum mendeteks!
mmengheelleay transis atau toggle cpl, pulsa yang lebih panjang dar sikus clock akan
interepal “2” Seba Interupsi, Pusa yang fein peek tidak djamin dapat membangktkan
1SC10 "
7 Isctt
isc10
Keterangan
0
0
Level rendah pada INT1 membangkitkan permintaan interupsi
0
1
Perubahan logika pada INT1 membangkitkan permintaan interupsi
1
0
Transisi dari high ke low pada INT1 membangkitkan permintaan interupsi
1
1
Transisi darl low ke high pada INT1 membangkitkan permintaan interupsi
T [1scor | Taterrapt Sense Contol TERT and BAT —
Interupsi eksternal 0 diaktifkan dengan pin eksternal INTO jika bit I pada SREG dan interrupt
‘mask yang bersesuaian pada GICR diset. Nilai pada pin INT( disampel sebelum mendeteksi
tepi. dika interupsitransisi atau toggle dipith, pulsa yang lebih panjang dari 1 siklus clock akan
menghasilkan sebuah interupsl. Pulsa yang lebih pendek tidak dljamin dapat membanghitkan
interupsi. Iscot
Iscoc
0 1SCO0 Keterangan
o
o
Level rendah pada INTO membangkitkan permintaan interupsi
0
1
Perubahan logika pada INTO membangkitkan permintaan interupst
1
0
dari high ke low pada INTO membangkitkan permintaan Interupsl
1
1
‘Transfst darlfow ke high pada INTO membangkitkan permlntaan laterupst
Transisi
Bp 24242° £1 El) 48 Jam Kupas Tuntas Mikrokontroler MCS51 & AVR
Bit 7 3 2 1 0
eee woe [sore | even | Fone Hives
Read Write aw AW F aOR AW
Initial Valve ° ° ° See Bit Description
Gambar 11.3 Register MCUCSR
Tabel 11.3 Register MCUCSR
Bit_|_Nama Bit Keterangan
6 | 1scz Interrupt Sense Control 2
Interupsi sinkron eksternal 2 diaktfkan dengan pin eksternal INT‘12 ka bit
| pada SREG dan interrupt mask yang bersesuaian pada GICR diset. Pulsa
INT2 harus lebih panjang dari syarat pulsa minimum sebesar 50 nanosekon
akan membangkitkan interupsi.
sca
Keterangan
0
‘Transisi dari high ke fow pada INT2 membangkitkan permintaan interupsi
1
‘Transisi dari low ke high pada INT2 membangkitkan permintaan interupsi
11.1.2 General Interrupt Control Register (GICR)
Register GICR mengatus pemilihan pengaktifan interupsi eksternal. Selengkapnya ditunjukkan pads Gambac 14
dan dijelaskan pada tabel 11.4.
Bit Z : a 7
2 1 9.
LE “
a ee
Peadirite 7 we ° : a S
rial Valve 9 2 ° cao 3 _
°
Gambar 11.4 Register GICR
Tabel 11.4 Register GICR
Bit_| Nama Bit
lama Bit Keterangan
7 | itt | External interrupt Request] Enable
SaatbitNT4 diset dan bit d
napeeaas esa SREG juga diset, pin interupsi eksternal diaktihan-
7 wa Eterna Taegan ase bit ISC11 dan ISC10 di tabel 11.2.
Saat bt INTO disct d
Neuere esas Slide, pin interupsi eksternal diaktifkan-
dan 1SCO0 di tabel 11.2,Perangkat Interupsi Mikrokontroler AVA io 243
it_| Nama Bit Keterangan
5 wra | External intemupt Request 2 Enable
Saat bit NT2 diset dan bit dalam SREG juga diset, pin Interupsi eksteral diaktikan,
Konfigurasinya telah dijelaskan pada bit ISC2 di tabel 11.3,
42 5 reserved
iy WSEL | Interrupt Vector Select.
vika IVSEL = 0 maka vektor Interupsi ditempatkan pada start address flash
memory.
ia SEL = 1 maka vektor interupsi ditempatkan pada aval bootloader dalam
as
memory.
0 CE Inferupt Vector Change Enable, cgunakan untuk mengaklan perubahan veltor
interupsi,
11.1.3 General Interrupt Flag Register (GIFR)
Register GIFR adalah penanda adanya interupsi eksternal. Selengkapnya ditunjukkan pada
Gembar 11.5 dan dijelaskan pada tabel 11.5.
E 7 6 5 4 3 2
[arene aire
eet tite AW v RW a a Rg R 2
0 o oO oO 0 oO 0
Gambar 11.5 Register GIFR
Tabel 11.5 Register GIFR yang berkaitan dengan interupsi eksternal
Bit_| Nama Bit Keterangan.
7 | INTRA ‘External interrupt Flag 1 : ;
Saat ada perubahan transisi atau logika pada pin INT1 menyulut permintaan interupsi,
flag INTF1 menjadi’ Jika bit pada SREG dan bit INT4 pada GICR juga set, MCU akan
lompat ke vektor interupsi yang bersesuaian. Flag ini di-clear saat ISR diekseskusi,
‘Suatu alternative, flag dapat di-clear dengan menulis logika ‘t° pada flag ini. Flag ini
selalu di-clear saat INT1 dikonfigurasikan sebagai level interrupt.
it Flag 0
fag INTFO menjadi’, Jika bit pada SREG dan bit INTO pada GICR juga sat, MCU shan
Jompat ke vektor interupsi yang bersesuaian. Flag ini di cheat Gaat ISR divkseshusi,
Suaty alternative, flag dapat di-clear dengan merulis fogika "t' pada flag inl Flag inl
telalu di-clear saat INT1 dikonfigurasikan sebagai fuve! interrupt _
NUTFO menjadi’ Jika bit} pada SREG dan bit INT2 pada GICR juga set, MCU akan
lompat ke vektor interupsi yang bersesuaian, Flag in Geelear saat ISA diekseskusl,
Suatu alternative, flag dapat di-clear dengan menulis lagika "1 pada flag iol,244 MIMD 48.Jor Kupas Tuntos Mirokontrler MCSS1 & AVR
11.2 Aplikasi Menggunakan Perangkat Interupsi
‘Contoh program sederhana berikut adalah menggunakan interupsi eksternal 0 (INTO) 1
‘yang pada saat menerima transisi dari high ke low akan memanggil ISR ext_int0. Setelah melakukg
ini maka akan kembali ke program utama di mana lokasi memori program yang ditinggalkan,
Bahasa Keterangan Bahasa C (dengan Code Vision) "
“include “m826etiine™ File pustaka ATMEGA32 include File pustaka ATMEGAS2
289 00000 ‘Alamat awal memori program include File pustaka delay
Lompat ke main interrupt [EXT_INTO] void ext_ } Rutin layanan interups!
— int_isr(void) 0
‘Alamat vektor interupsieksteral
0
amo Port=0001010101
simp ext_intd ort¢=0800000000
main: Menentukan isi Stack Pointer PortC=0b01010101,
{316 ow RAMEND) ‘dengan address terakhir RAM PortC=0b00000000
out SPL (RAMEND)
Udi r16,high(RAMEND) Untuk ATMega32 a5Fh void main(voig) {
out SPH, Inisialisasi Port C PORTC=0300; Inisiaisasi Port C
Port C sebagai ouput DDRC=O4FF; Port C sebagai ouput
ti 00FF Inisiaisasi Port D PORTD=0100; Inisiaisasi Port
tdi 17,0100 Port C sebagai input INTO pada | DDRD=0x00; i
Bia pots Pat sobon input INTO pada
out Pon 17
out re 18 AXtikaninterups GICRI-Ox40 sialissiinerps ckstomal |
ut Ponta . MCUCR=0x02; Neon
‘seat INTO= Natit MCUCSR=0x00; ‘Mode: Falling Edge
1 17,0001000000 Mode : faling edge GIFR=0140; Enable interupsi
oa GICR A? fasm(ser)
‘ch t7,0200000010 Aktien interpsi
@& MOUOR AT Selama belum ada interupsi
tunggu 6 sii while (1)
Scans itenps: :
k
song: a 0p
)
Ponc=0001010101