Materi 9: AVR Interrupt I Nyoman Kusuma Wardana Sistem Komputer STMIK STIKOM Bali
Kusuma Wardana, M.Sc.
1
AVR Interrupt Interrupt vs Polling Programming Timer Interrupt
Kusuma Wardana, M.Sc.
2
Interrupt vs Polling 1 buah uC dapat melayani beberapa divais (alat) Terdapat 2 metode bgmn suatu divais menerima layanan dr uC, sbb: 1. Interrupt 2. Polling
Kusuma Wardana, M.Sc.
4
Interrupt Pd mode ini, kapanpun divais ingin menerima layanan dr uC divais mengirim sinyal interupsi ke uC Setelah menerima sinyal interupsi, apapun yg sedang dilakukan oleh uC uC akan menghentikan sementara kegiatannya dan melayani divais Program utk melakukan hal ini dsbt: interrupt service routine (ISR) Kusuma Wardana, M.Sc.
5
Polling uC secara kontinu melakukan monitoring status dr setiap divais Ketika kondisi tertentu dipenuhi, maka uC akan melakukan pelayanan Selanjutnya, uC akan memonitor divais selanjutnya, sampai semua layanan dipenuhi Wlpn polling dpt memonitor status dr setiap divais dan melayani divais ketika syarat terpenuhi metode ini tidak efisien utk uC Kusuma Wardana, M.Sc.
6
Keuntungan dr interupsi uC dpt melayani banyak divais (tentunya tidak bersamaan) Divais mendapatkan pelayanan berdasarkan prioritas Metode polling tdk dpt mengetahui prioritas karena uC mengecek semua divais
Kusuma Wardana, M.Sc.
7
Keuntungan dlm metode interupsi, uC dpt mengabaikan (mask) request dr divais (tdk bisa dilakukan oleh polling) Lebih penting lg, polling menghabiskan lebih banyak waktu drpd interupsi dlm melakukan pelayanan ke divais Polling uC jg akan menanyakan divais yg tidak memerlukan pelayanan
Kusuma Wardana, M.Sc.
8
Ingat perintah: SBRS R20, TOV0 Merupakan instruksi bit test akan sangat membuang waktu krn kita hrs menunggu sampai timer overflow Selama menunggu kita tdk dpt melakukan kegiatan yg lain
Kusuma Wardana, M.Sc.
9
Interrupt Service Routine (ISR) Setiap interupsi hrs dlm layanan ISR, atau interrupt handler Umumnya, setiap interupsi pd mikroprosesor memiliki lokasi fix utk menyimpan alamat dr ISR Alamat ini dsb sbg : Interrupt Vector Table
Kusuma Wardana, M.Sc.
10
Kusuma Wardana, M.Sc.
11
Langkah-langkah dlm mengeksekusi interupsi Selama mengaktifkan suatu interupsi, uC melakukan beberapa langkah sbb: 1. uC menyelesaikan Intsruksi terakhir dan instruksi selanjutnya (Program counter) akan disimpan pd stack 2. uC akan melompat pd lokasi fix di memori yg dsb sbg interrupt vector table. Table ini akan mengarahkan uC alamat ISR
Kusuma Wardana, M.Sc.
12
uC akan mulai mengeksekusi subrutin pd interupsi tsb sampai instruksi terakhir, yaitu RETI (return from interrupt) 4. Dlm mengeksekusi RETI uC kembali ke tempat dimana terintrupsi sebelumnya. Pertama, uC akan mendapatkan alamat PC dr stack dgn mem-pop byte teratas ke PC, kemudian kembali mengeksekusi alamat tsb Ingat, langkah 4 sangat krusial!!!! 3.
Kusuma Wardana, M.Sc.
13
Sumber-sumber Interupsi pd AVR Beberapa sumber interupsi yg sering digunakan pd AVR, sbb: 1. Timer : Paling tdk terdpt 2 interrupt pd setiap timer overflow dan compare match 2. Eksternal hardware : memiliki 3 interrupt. Pin PD2, PD3, dan PB2, masing2 utk INT0, INT1, dan INT2
Kusuma Wardana, M.Sc.
14
USART: memiliki 3 1 utk receive, 2 utk transmit 4. SPI interrupt 5. ADC interrupt 3.
Kusuma Wardana, M.Sc.
15
Enabling & Disabling an Interrupt Selama di-reset : semua interupsi akan disable (masked) tidak satupun akan direspon oleh uC jika mereka aktif Interupsi hrs di-enable (unmasked) oleh program agar dpt direspon
Kusuma Wardana, M.Sc.
16
Bit D7 pd SREG bertanggung jwb dlm enabling dan disabling interupsi scr global
Kusuma Wardana, M.Sc.
17
Langkah2 dlm mengaktifkan interupsi Bit D7 SREG hrs diset HIGH. Hal ini dilakuan dgn instruksi SEI (Set Interrupt) Jika I = 1, setiap interupsi di enable-kan dgn cara menset flag IE (interrupt enable) pd interupsi tsb. Trdp bbrp I/O register yg meng-handle bit interrupt enable msl TIMSK utk Timer
Kusuma Wardana, M.Sc.
18
Ingat!! jika bit I pd SREG bernilai LOW TIDAK akan ada interupsi yg di-enable, wlpn setiap IE pd register tertentu bernilai HIGH
Kusuma Wardana, M.Sc.
19
Sblmnya kita telah belajar ttg pemrograman Timer mengamati sampai TOV0 bernilai HIGH Ini disebut polling Masalahnya uC hrs menunggu sampai TOV0 bernilai 1 dan kita tdk dpt melakukan operasi lainnya
Kusuma Wardana, M.Sc.
21
Menggunakan iterrupt menghindari hal ini Jika timer interrupt di-enable-kan TOV0 akan HIGH ketika overflow, dan uC akan melompat ke interrupt vector table utk selanjutnya melayani ISR Dlm keadaan ini, uC dpt melakukan hal lain sampai notifikasi timer diperoleh Utk melakukan hal ini, set bit TOIEx pd register TIMSK Kusuma Wardana, M.Sc.
22
Amati tabel berikut:
Kusuma Wardana, M.Sc.
23
Kusuma Wardana, M.Sc.
24
Kusuma Wardana, M.Sc.
25
Mazidi, Naimi and Naimi, 2011, The AVR Microcontroller and Embedded System: Using Assembly and C, Prentice Hall www.atmel.com/ Morton, John, 2007, AVR: An Introductory Course, Newnes Publisher Gadre, Dhananjaya, 2001, Programming and Customizing the AVR Microcontroller, McGrawHill Daniel J.Pack and Steven F.Barrettt, 2008, Atmel AVR Microcontroller Primer: Programming and Interfacing, Morgan & Claypool Publisher Kusuma Wardana, M.Sc.
26