Omega OME-PIO-D56 User Manual page 16

Pci-bus digital i/o board
Table of Contents

Advertisement

2.4.3
Initial_high, active_low Interrupt source
If the PC0 is a initial_high, active_low signal, the interrupt service routine
should use INV0 to invert/non-invert the PC0 for high_pulse generation as follows:
(Refer to DEMO4.C)
Initial setting:
now_int_state=1;
outportb(wBase+0x2a,0); /* select the inverted PC0 */
void interrupt irq_service()
{
if (now_int_state==1)
{
COUNT_L++;
If((inport(wBase+7)&1)==0)/* the PC0 is still fixed in LOW
{
outportb(wBase+0x2a,1);/* INV0 select the non-inverted input */(b)
now_int_state=0;
}
else now_int_state=1;
}
else
{
COUNT_H++;
If((inport(wBase+7)&1)==1)/* the PC0 is still fixed in HIGH
{
outportb(wBase+0x2a,0);/* INV0 select the inverted input
now_int_state=1;
}
else now_int_state=0;
}
if (wIrq>=8) outportb(A2_8259,0x20);
outportb(A1_8259,0x20);
}
PC0
INV0
INT_CHAN_0
OME-PIO-D56/PIO-D24 User Manual (Ver.2.1, Oct/2003, PPH-005-21)
/* initial state for PC0
/* now PC0 is changed to LOW
/* --> INT_CHAN_0=!PC0=HIGH now
/* find a LOW_pulse (PC0)
/*
need to generate a high_pulse
/* INT_CHAN_0=PC0=LOW -->
/* INT_CHAN_0 generate a high_pulse
/* now PC0=LOW
/* now PC0=HIGH
/* don't have to generate high_pulse
/* now PC0 is changed to HIGH
/* --> INT_CHAN_0=PC0=HIGH now
/* find a HIGH_pulse (PC0)
/* need to generate a high_pulse
/* INT_CHAN_0=!PC0=LOW -->
/* INT_CHAN_0 generate a high_pulse
/* now PC0=HIGH
/* now PC0=LOW
/* don't have to generate high_pulse
(a)
(b)
*/
(c)
(d)
*/(a)
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/(c)
*/
*/
*/
*/
*/(d)
*/
*/
*/
*/
*/
---- 14

Advertisement

Table of Contents
loading

This manual is also suitable for:

Ome-pio-d24

Table of Contents