SN8F2250B Series
USB 2.0 Full-Speed 8-Bit Micro-Controller
6.14 MULTI-INTERRUPT OPERATION
Under certain condition, the software designer uses more than one interrupt requests. Processing multi-interrupt
request requires setting the priority of the interrupt requests. The IRQ flags of interrupts are controlled by the interrupt
event. Nevertheless, the IRQ flag “1” doesn’t mean the system will execute the interrupt vector. In addition, which
means the IRQ flags can be set “1” by the events without enable the interrupt. Once the event occurs, the IRQ will be
logic “1”. The IRQ and its trigger event relationship is as the below table.
Interrupt Name
P00IRQ
Trigger Event Description
P0.0 trigger controlled by PEDGE
T0IRQ
T0C overflow
T1IRQ
T1C overflow
USBIRQ
WAEKIRQ
SIOIRQ
USB process finished
I/O port0 & port1 wakeup MCU
SIO process finished
For multi-interrupt conditions, two things need to be taking care of. One is to set the priority for these interrupt requests.
Two is using IEN and IRQ flags to decide which interrupt to be executed. Users have to check interrupt control bit and
interrupt request flag in interrupt routine.
¾
Example: Check the interrupt request under multi-interrupt operation
ORG
JMP
8
; Interrupt vector
INT_SERVICE
INT_SERVICE:
…
; Push routine to save ACC and PFLAG to buffers.
INTP00CHK:
INTT0CHK:
INTT1CHK:
INTUSBCHK:
INTWAKECHK:
INTSIOCHK:
INT_EXIT:
; Check INT0 interrupt request
; Check P00IEN
; Jump check to next interrupt
; Check P00IRQ
B0BTS1
JMP
B0BTS0
JMP
FP00IEN
INTT0CHK
FP00IRQ
INTP00
; Check T0 interrupt request
; Check T0IEN
; Jump check to next interrupt
; Check T0IRQ
; Jump to T0 interrupt service routine
; Check T1 interrupt request
; Check T1IEN
; Jump check to next interrupt
; Check T1IRQ
; Jump to T1 interrupt service routine
; Check USB interrupt request
; Check USBIEN
; Jump check to next interrupt
; Check USBIRQ
; Jump to USB interrupt service routine
; Check USB interrupt request
; Check WAKEIEN
; Jump check to next interrupt
; Check WAKEIRQ
B0BTS1
JMP
B0BTS0
JMP
FT0IEN
INTT1CHK
FT0IRQ
INTT0
B0BTS1
JMP
B0BTS0
JMP
FT1IEN
INTTC1CHK
FT1IRQ
INTT1
B0BTS1
JMP
B0BTS0
JMP
FUSBIEN
INTWAKECHK
FUSBIRQ
INTUSB
B0BTS1
JMP
B0BTS0
JMP
FWAKEIEN
INTSIOCHK
FWAKEIRQ
INTWAKEUP
; Jump to WAKEUP interrupt service routine
; Check SIO interrupt request
; Check SIOIEN
; Jump check to next interrupt
; Check SIOIRQ
B0BTS1
JMP
B0BTS0
JMP
FSIOIEN
INT_EXIT
FSIOIRQ
INTSIO
; Jump to SIO interrupt service routine
…
; Pop routine to load ACC and PFLAG from buffers.
; Exit interrupt vector
RETI
SONiX TECHNOLOGY CO., LTD
Page 69
Version 1.1