AN2109 Freescale Semiconductor / Motorola, AN2109 Datasheet - Page 34

no-image

AN2109

Manufacturer Part Number
AN2109
Description
MPC555 Interrupts
Manufacturer
Freescale Semiconductor / Motorola
Datasheet
; ===================================================================
; Branch table for the different SIVEC Interrupt Code values:
IRQ_table:
irq_0:
level_0: b
irq_1:
level_1: b
irq_2:
level_2: b
irq_3:
level_3: b
irq_4:
level_4: b
irq_5:
irq_6:
level_6: b
irq_7:
level_7: b
; ===================================================================
; SCI interrupt service routine
SCI_Int:
receive_buffer_not_full:
SCI_transmit_int:
lwz
mtsrr1
lwz
addi
rfi
b
b
b
b
b
b
b
b
b
lis
lhz
andi.
beq
lhz
lis
ori
lwz
lwz
stbx
addi
lwz
cmp
bne
li
stw
blr
irq_0
level_0
irq_1
level_1
irq_2
level_2
irq_3
level_3
irq_4
level_4
irq_5
SCI_Int
irq_6
level_6
irq_7
level_7
r3,
r4,
SCI_transmit_int
r3,
r3,
r6,
r6,
r6,
r3
r4,
r4,
r5,
r4,
r6,
r5,
r5,
receive_buffer_not_full
r3,
sp,
r3,
Freescale Semiconductor, Inc.
sp, 36
24 (sp)
SCI_BASE@ha
SC1SR@l (r3)
Rec_Buf@h
0 (r3)
r6, 1
4 (r3)
8 (r3)
16 (sp)
r4, 0x40
SC1DR@l (r3)
r3, Rec_Buf@l
8 (r3)
r6
0
r6, r5
For More Information On This Product,
Rev. 0, 26 July 2001
; Branch forever if routine is not written
; Branch to SCI assembler routine
MPC555 Interrupts
Go to: www.freescale.com
; Get SRR1 from stack
; and restore SRR1
; Restore R3
; Restore stack
; STEP 7:
; End of Interrupt
; Load upper 16 bits of pointer to SCI
; Read status register
; Test RDRF bit
; If RDRF not set, IRQ is a transmit
; Service receive IRQ:
; Read data from SCI,
; which automatically clears RDRF
; Store data in buffer
; Prepare pointer to the buffer descriptor
; Load buffer pointer from buf. descriptor
; Load actual index
; Update index
; Get buffer size
; End of buffer reached, due to
; ringbuffer start at offset 0 again
; Get '0'
; Store current index
; (TX interrupt not implemented)
; Finished, return to main IRQ handler
; Put data into buffer
RETURN TO PROGRAM
MOTOROLA
34

Related parts for AN2109