IKI10230 Pengantar Organisasi Komputer Kuliah no. A7: Bahasa Rakitan AVR Interrupt Handler

12
1 IKI10230 Pengantar Organisasi Komputer Kuliah no. A7: Bahasa Rakitan AVR Interrupt Handler 25 April 2003 Bobby Nazief ([email protected]) Qonita Shahab ([email protected]) bahan kuliah: http://www.cs.ui.ac.id/~iki10230/ Sumber : 1. AVR AT90S8515 Data Sheet. 2. Materi kuliah CS152, th. 1997, UCB.

description

IKI10230 Pengantar Organisasi Komputer Kuliah no. A7: Bahasa Rakitan AVR Interrupt Handler. Sumber : 1. AVR AT90S8515 Data Sheet. 2. Materi kuliah CS152, th. 1997, UCB. 25 April 2003 Bobby Nazief ([email protected]) Qonita Shahab ([email protected]) - PowerPoint PPT Presentation

Transcript of IKI10230 Pengantar Organisasi Komputer Kuliah no. A7: Bahasa Rakitan AVR Interrupt Handler

Page 1: IKI10230 Pengantar Organisasi Komputer Kuliah no. A7: Bahasa Rakitan AVR Interrupt Handler

1

IKI10230Pengantar Organisasi Komputer

Kuliah no. A7: Bahasa Rakitan AVRInterrupt Handler

25 April 2003

Bobby Nazief ([email protected])Qonita Shahab ([email protected])

bahan kuliah: http://www.cs.ui.ac.id/~iki10230/

Sumber:1. AVR AT90S8515 Data Sheet.2. Materi kuliah CS152, th. 1997, UCB.

Page 2: IKI10230 Pengantar Organisasi Komputer Kuliah no. A7: Bahasa Rakitan AVR Interrupt Handler

2

Interrupt Handler

Page 3: IKI10230 Pengantar Organisasi Komputer Kuliah no. A7: Bahasa Rakitan AVR Interrupt Handler

3

Enabling/Disabling Interrupt (1)° When an interrupt occurs, the Global Interrupt Enable I-

bit is cleared (zero) and all interrupts are disabled. The user software can set (one) the I-bit to enable nested interrupts (risky!). The I-bit is set (one) when a Return from Interrupt instruction – RETI - is executed.

° Instructions: SEI, CLI

Page 4: IKI10230 Pengantar Organisasi Komputer Kuliah no. A7: Bahasa Rakitan AVR Interrupt Handler

4

Enabling/Disabling Interrupt (2)° The AT90S4414/8515 has two 8-bit Interrupt Mask

control registers:

• GIMSK - General Interrupt Mask registerto enable/disable external interrupts

• TIMSK - Timer/Counter Interrupt Mask registerto enable/disable timer/counter interrupt

Page 5: IKI10230 Pengantar Organisasi Komputer Kuliah no. A7: Bahasa Rakitan AVR Interrupt Handler

5

Remembering Interrupt° The AT90S4414/8515 has two 8-bit Interrupt Flag

registers:

• GIFR - General Interrupt Flag registerto remember external interrupts whenever it is being disabled

• TIFR - Timer/Counter Interrupt Flag registerto remember timer/counter interrupt whenever it is being disabled

Page 6: IKI10230 Pengantar Organisasi Komputer Kuliah no. A7: Bahasa Rakitan AVR Interrupt Handler

6

When Interrupt is Set - SEI° If the interrupting condition occurs, e.g. a change on

the port bit, the processor pushes the actual program counter to the stack

° After that, processing jumps to the predefined location, the interrupt vector, and executes the instructions there.

• Usually this is a JUMP instruction to the interrupt service routine somewhere in the code.

• The interrupt vector is a processor-specific location and depending from the hardware component and the condition that leads to the interrupt

° The service routine must re-enable this flag after it is done with its job. The service routine can end with the command: RETI

Page 7: IKI10230 Pengantar Organisasi Komputer Kuliah no. A7: Bahasa Rakitan AVR Interrupt Handler

7

Interrupt Vector

Vec No Prg Adr Source Interrupt Definition1 $000 RESET Hardware Pin, Power-on Reset and

Watchdog Reset2 $001 INT0 External Interrupt Request 03 $002 INT1 External Interrupt Request 14 $003 TIMER1 CAPT Timer/Counter1 Capture Event5 $004 TIMER1 COMPA Timer/Counter1 Compare Match A6 $005 TIMER1 COMPB Timer/Counter1 Compare Match B7 $006 TIMER1 OVF Timer/Counter1 Overflow8 $007 TIMER0,OVF Timer/Counter0 Overflow9 $008 SPI, STC Serial Transfer Complete10 $009 UART, RX UART, RX Complete11 $00A UART, UDRE UART Data Register Empty12 $00B UART, TX UART, TX Complete13 $00C ANA_COMP Analog Comparator

Prioritas Tertinggi

Page 8: IKI10230 Pengantar Organisasi Komputer Kuliah no. A7: Bahasa Rakitan AVR Interrupt Handler

8

Interrupt Vector Initialization

Address Code Comments$000 rjmp RESET ; Reset Handler

$001 rjmp EXT_INT0 ; IRQ0 Handler

$002 rjmp EXT_INT1 ; IRQ1 Handler

$003 rjmp TIM1_CAPT ; Timer1 Capture Handler

$004 rjmp TIM1_COMPA ; Timer1 CompareA Handler

$005 rjmp TIM1_COMPB ; Timer1 CompareB Handler

$006 rjmp TIM1_OVF ; Timer1 Overflow Handler

$007 rjmp TIM0_OVF ; Timer0 Overflow Handler

$008 rjmp SPI_STC ; SPI Transfer Complete Handler

$009 rjmp UART_RXC ; UART RX Complete Handler

$00a rjmp UART_DRE ; UDR Empty Handler

$00b rjmp UART_TXC ; UART TX Complete Handler

$00c rjmp ANA_COMP ; Analog Comparator Handler

Page 9: IKI10230 Pengantar Organisasi Komputer Kuliah no. A7: Bahasa Rakitan AVR Interrupt Handler

9

Kerangka Program

rjmp RESETrjmp EXT_INT0

RESET:;init stack pointer;init any ports used;other initsei;do things, main loop, etc

EXT_INT0:;do thingsreti

Page 10: IKI10230 Pengantar Organisasi Komputer Kuliah no. A7: Bahasa Rakitan AVR Interrupt Handler

10

Contoh: Main Program

.cseg

.org INT0addr

rjmp ext_int0 ;External interrupt handler

.org OVF0addr

rjmp tim0_ovf ;Timer0 overflow handler

main:

Do some initializations

rcall uart_init ;Init UART

sei ;Enable interrupts

idle:

sbrs u_status,RDR ;Wait for Character

rjmp idle

Do the work

wait:

sbrc u_status,TD ;Wait until data is sent

rjmp wait

Wrap it up

Page 11: IKI10230 Pengantar Organisasi Komputer Kuliah no. A7: Bahasa Rakitan AVR Interrupt Handler

11

Contoh: Interrupt Handlerext_int0:

ldi u_status,1<<BUSY;Set busy-flag (clear all others)

Do some work

ldi u_tmp,1<<TOIE0 ;Set bit 1 in u_tmp

out TIFR,u_tmp ; to clear T/C0 overflow flag

out TIMSK,u_tmp ; and enable T/C0 overflow interrupt

Do more work

clr u_bit_cnt ;Clear bit counter

out GIMSK,u_bit_cnt ;Disable external interrupt

reti

tim0_ovf:

sbrs u_status,TD ;if transmit-bit set

Do something

ldi u_tmp,1<<INT0 ;(u_bit_cnt==9):

out GIMSK,u_tmp ;Enable external interrupt

clr u_tmp

out TIMSK,u_tmp ;Disable timer interrupt

cbr u_status,(1<<BUSY)|(1<<TD) ;Clear busy-flag and transmit-flag

reti

Page 12: IKI10230 Pengantar Organisasi Komputer Kuliah no. A7: Bahasa Rakitan AVR Interrupt Handler

12

Referensi° AVR Assembler User Guide

° http://www.avr-asm-tutorial.net

° Contoh program: int-exmp.asm