PEX/PIO/PISO-DA Series Card
Analog Output Boards
User Manual/ Ver. 3.1/ Oct. 2013/ PMH-0010-31/ Page: 17
2.3.3 Initial_High, Ative_Low Interrupt Source
If INT0 (8254 counter0 output) is an initial_high, active_low signal (depending on 8254
counter mode), the interrupt service routine should use INV0 to invert/non-invert INT0 to
generate a high_pulse in the following manner: (Refer to DEMO3.C)
Initial settings:
void interrupt irq_service()
{
if (now_int_state==1)
/* now INT0 is changed to LOW */(a)
{
/* --> INT_CHAN_0=!INT0=HIGH now */
+;
/* find a LOW_pulse (INT0) */
If((inport(wBase+7)&1)==0)
/* the INT0 is still fixed in LOW */
{
/*
need to generate a high_pulse */
outportb(wBase+0x2a,1);
/* INV0 select the non-inverted input */(b)
/* INT_CHAN_0=INT0=LOW --> */
/* INT_CHAN_0 generate a high_pulse */
now_int_state=0;
/* now INT0=LOW */
}
else now_int_state=1;
/* now INT0=HIGH */
/* don’t have to generate h
igh_pulse */
}
else
/* now INT0 is changed to HIGH */(c)
{
/* --> INT_CHAN_0=INT0=HIGH now */
+;
/* find a HIGH_pulse (INT0) */
If((inport(wBase+7)&1)==1)
/* the INT0 is still fixed in HIGH */
{
/* need to generate a high_pulse */
outportb(wBase+0x2a,0);
/* INV0 select the inverted input */(d)
/* INT_CHAN_0=!INT0=LOW --> */
/* INT_CHAN_0 generate a high_pulse */
now_int_state=1;
/* now INT0=HIGH */
}
else now_int_state=0;
/* now INT0=LOW */
/* don’t have to generate high_pulse */
}
if (wIrq>=8) outportb(A2_8259,0x20);
outportb(A1_8259,0x20);
}
INT0
INV0
INT_CHAN_0
(a)
(b)
(c)
(d)
now_int_state=1;
/* initial state for INT0 */
outportb(wBase+0x2a,0);
/* select the inverted INT0 */
ГК
Атлант
Инжиниринг
–
официальный
представитель
в
РФ
и
СНГ
+7(495)109-02-08 [email protected] www.bbrc.ru