![North Atlantic 75DS2 Operation Manual Download Page 33](http://html.mh-extra.com/html/north-atlantic/75ds2/75ds2_operation-manual_1707616033.webp)
General Use Register Memory Map
75DS2 Operations Manual
North Atlantic Industries, Inc.
11/11/2011
Rev: 2011-11-11-1000
www.naii.com
Page 33 of 43
Interrupt Flow for PCI/cPCI
The following strategy has been added improve robustness of interrupt generation on the family of PCI boards. By
moving all interrupt discovery and acknowledgment to the low-level driver, synchronization problems will be
avoided.
The interrupt vector is available in the Interrupt Status register. This register will remain at PCI address 0x3400.
The Interrupt Status register will be redefined as follows:
REGISTER
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
FUNCTION
INTERRUPT FLOW
D
D
D
D
D
D
D
D
X
X
X
X
X
X
X
D
D=DATA BIT
Interrupt Vector (0x00..0xBF)
Unused
*
* 1= Active Interrupt
The register is read only. If it is read while an interrupt is not pending, the least significant bit will be zero, and the
remaining bits will be unknown. If it is read while an interrupt is pending, the least significant bit will be 1 and bits
15..8 will contain the interrupt vector number.
Reading this register clears it and prepares for the next interrupt. As such, the interrupt service routine must read
it only once per interrupt.
Because the interrupt is now cleared in the acknowledgement, multiple interrupts may occur before the
application is able to acknowledge them. For this reason a queuing mechanism is needed in the interrupt service
routine. As the maximum number of simultaneous interrupts is 192, the mechanism need be no deeper than this.
In actual operation, the number of queued interrupts will typically be much lower than 192.
When the application interrupt callback is called by the driver, the vector should be removed from the queue and
passed as a calling parameter. The application must not access the Interrupt Status register directly.