On Thu, 7 Apr 94 20:59:57 EDT, "Jim Stevens" <ki4hn@Cybernetics.NET> wrote:
> >From KM9P:
> >This needs some clarification. Two devices can share IRQ's if one of the
> >devices is not polling the IRQ in the first place.
>
> I'll throw my 2 cents worth into the discussion.
>
> Bill, I don't understand what you mean by "Two devices can share IRQ's if
> one ... is not polling the IRQ ...". Devices don't poll IRQ lines. Device
> drivers might poll devices in which case the device is normally not
> considered to be interrupt driven. The whole point of interrupts is so
> that the device driver does not tie up the rest of the system by polling
> the device.
>
> However, I agree that it is not impossible to share IRQ's between multiple
> devices on ISA. It just is more difficult than on EISA or MCA. The reason
> for the increased difficulty has to do with the manner in which devices
> indicate to the interrupt controller that they have an interrupt. On ISA,
> IRQ lines are level driven. The device must raise the IRQ line from a
> low voltage to a high voltage and hold it until the interrupt is
> acknowledged by the device driver or operating system. While a given
> device is holding the IRQ line high, no other device can signal an interrupt
> on the same IRQ, so we have a window for missing interrupts. How big the
> window is depends on the device driver or operating system. On MCA (and
> I believe EISA), interrupts are edge triggered. The interrupt signal is
> latched on a falling edge (I think. I don't have MCA specs handy at this
> time). Once the interrupt controller has latched the edge another device
> could generate an interrupt on the same IRQ.
>
> Now putting on my armor and ducking.
>
> 73, Jim Stevens (device driver writer by trade), KI4HN
> ki4hn@cybernetics.net
>
ISA bus interrupts are edge triggered, however, they do remain
asserted until cleared by the interrupt handler. Most importantly,
the ISA bus drivers are not open collector. This means that two
devices cannot be enabled on the bus at the same time, or they
fight. ISA cards share interrupts, but not simultaneously because they
have tristate line drivers. Only one device at a time may be enabled.
I made a key mistake in the DVP design. The IRQ bus driver device is
not disabled (tri-stated) when when no TSR is loaded. If it were,
OS2 could use the IRQ for printing as long as the DVP was not in use.
Under DOS, this doesn't matter, since printer drivers normally don't
use interrupts. Some programs, such as Lap Link do use interrupts, and
won't work via the printer port when in conflict with the DVP.
If I could do it again, I'd make the DVP a 16 bit board supporting all the
high numbered interrupts.
CT supports two com boards which have multiple ports per interrupt. The
first is the DFI MU440 and it's clones. This supports four ports off of
one interrupt (not a high interrupt). The second is a Digiboard 8 port
dumb card. This supports 8 ports on a single interrupt. Both allow the
existing two com ports to remain in place. Use the special comtsr named
MU440.EXE or DIGI.EXE. They are on CT-BBS. Start CT with the -DIGI for
the Digiboard or -SHARED for the MU440. We use the Digiboard at the
K1AR and KY1H M/M operations. It allows all the other computers to
wire to a central point. Best of all, the other computers only need
two com ports: one for the radio, one for the network.
I hope this helps explain some things.
--
Ken Wolff K1EA
|