![](http://datasheet.mmic.net.cn/390000/SYM53C896_datasheet_16836343/SYM53C896_72.png)
2-46
Functional Description
2.2.16.5 Stacked Interrupts
The SYM53C896 will stack interrupts, if they occur, one after the other.
If the SIP or DIP bits in the
Interrupt Status Zero (ISTAT0)
register are set
(first level), then there is already at least one pending interrupt, and any
future interrupts are stacked in extra registers behind the
SCSI Interrupt
Status Zero (SIST0)
,
SCSI Interrupt Status One (SIST1)
, and
DMA Status
(DSTAT)
registers (second level). When two interrupts have occurred and
the two levels of the stack are full, any further interrupts set additional
bits in the extra registers behind SIST0, SIST1, and DSTAT. When the
first level of interrupts are cleared, all the interrupts that came in
afterward move into SIST0, SIST1, and DSTAT. After the first interrupt is
cleared by reading the appropriate register, the INTA/ (or INTB/) pin is
deasserted for a minimum of three CLKs; the stacked interrupts move
into SIST0, SIST1, or DSTAT; and the INTA/ (or INTB/) pin is asserted
once again.
Since a masked nonfatal interrupt does not set the SIP or DIP bits,
interrupt stacking does not occur. A masked, nonfatal interrupt still posts
the interrupt in
SCSI Interrupt Status Zero (SIST0)
, but does not assert the
INTA/ (or INTB/) pin. Since no interrupt is generated, future interrupts
move into SIST0 or
SCSI Interrupt Status One (SIST1)
instead of being
stacked behind another interrupt. When another condition occurs that
generates an interrupt, the bit corresponding to the earlier masked
nonfatal interrupt is still set.
A related situation to interrupt stacking is when two interrupts occur
simultaneously. Since stacking does not occur until the SIP or DIP bits
are set, there is a small timing window in which multiple interrupts can
occur but are not stacked. These could be multiple SCSI interrupts (SIP
set), multiple DMA interrupts (DIP set), or multiple SCSI and multiple
DMA interrupts (both SIP and DIP set).
As previously mentioned, DMA interrupts do not attempt to flush the
FIFOs before generating the interrupt. It is important to set either the
Clear DMA FIFO (CLF) and Clear SCSI FIFO (CSF) bits if a DMA
interrupt occurs and the DMA FIFO Empty (DFE) bit is not set. This is
because any future SCSI interrupts are not posted until the DMA FIFO
is cleared of data. These ‘locked out’ SCSI interrupts are posted as soon
as the DMA FIFO is empty.