On Thu, Jan 27, 2000 at 11:56:32AM +0100, [EMAIL PROTECTED] wrote:
> I have a home made intelligent, Z80 based intelligent I/O card.
> In the test configuration Z80 asks an interrupt
> from the main 486DX4 in every 5 ms. In the PC a short
> interrupt routine increments a counter only and sends
> an acknowledge to the Z80.
> Z80 maintains some statistical counters as number of IT
> requests and number of acks.
> A periodic task on the PC reads these counters in every
> second and display them.
>
> I can see, that a lot of interrups remains undetected by 486.
> I lost 0-20 IRQs within a 10 s interval. The actual number
> depends on the rate of IT requests, the IRQ pulse length
> (tipically 3+ microsec) and the IRQ number.
This is the problem. ISA IRQs are level-triggered, so if the
IRQ disappears before the processor/interrupt controller decide
that it's going to get handled, it gets lost. There's also
a race condition in the 8259A that causes the controller to
"forget" which interrupt happened, if the IRQ line changes at
the right time during CPU handshaking.
Basically, you need to find an ISA spec. ISA IRQs need to be
activated, and kept activated until the interrupt routine
acknowledges them.
dave...
--- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
----
For more information on Real-Time Linux see:
http://www.rtlinux.org/~rtlinux/