Part of the initialization of the 8259 is to set the type of signal (level
or edge) that it will respond to. If you haven't set it, then you almost
certainly don't know what it was set to by either the BIOS or the Linux
Kernel. I've found from (hard) experience that reprogramming it from level
to edge has solved (almost) all of my problems and it sounds like it might
do you some good too.
BTW, as an edge-triggered detector, the 8259 has responded to interrupt
pulses as short as a few (2-5) microseconds long.
Norm
At 02:07 PM 1/27/2000 -0800, David Schleef wrote:
>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/
>
--- [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/