Doc. # 1-0000149 | |||
---|---|---|---|
Date Updated | 07-27-2005 | Date Created | 07-27-2000 |
Document Type | Knowledge Base | Related OS | |
Related Product | PCL-746+/ PCL-846/ PCL-847/ PCL-849/ PCL-858 |
How to use vector address of ICOM cards? | |||
---|---|---|---|
Solution:
Communication cards with more than 4 ports usually support IRQ sharing in order to avoid the lack of IRQ provided by the system. As you know, when something is received from comm port, it can generate an interrupt to inform the system, but several comm ports share one IRQ under IRQ sharing mode, it is necessary to distinguish which comm port generates this interrupt. Here are two ways for your information:
A. Poll each comm port:
Because we don't know which comm port generates this interrupt, the easy way to distinguish is to poll each port's register directly in ISR ( Interrupt Service Routine ), just like Win95. As you know, Win95 can support IRQ sharing function, it just uses this way to distinguish which comm port receives data or message.
B. Poll interrupt status register ( vector address ):
Usually, interrupt status register just occupies 1 byte space and one bit is for one port, the following list can give you an overview about interrupt status register:
Interrupt status register Comm port
Bit 0 Port1
Bit 1 Port2
Bit 2 Port3
Bit 3 Port4
Bit 4 Port5
Bit 5 Port6
Bit 6 Port7
Bit 7 Port8
When certain comm port receives data and generates an interrupt, the corresponding bit of interrupt status register will be changed from 0 to 1. What we need to do is to poll interrupt status register instead of each port's register. Compare with A, polling interrupt status register is convenient and saves time. WinNT just adopts this way.
|