Omega Engineering OME-PIO-D96 manual CNTL1=CNTL2=CNTL3=CNTL4=0

Page 48

disable();

/* disable all interrupt */

outportb(wBase+5,0);

if (wIrq<8)

 

 

 

 

 

{

 

 

 

 

 

irqmask=inportb(A1_8259+1);

 

 

 

 

 

outportb(A1_8259+1,irqmask & 0xff ^ (1<<wIrq));

 

 

 

setvect(wIrq+8,irq_service);

 

 

 

 

 

}

 

 

 

 

else

 

 

 

 

 

{

 

 

 

 

 

irqmask=inportb(A1_8259+1);

 

 

/* IRQ2 */

 

outportb(A1_8259+1,irqmask & 0xfb);

 

 

irqmask=inportb(A2_8259+1);

 

 

 

 

 

outportb(A2_8259+1,irqmask & 0xff ^ (1<<(wIrq-8)));

 

 

setvect(wIrq-8+0x70,irq_service);

 

 

 

 

}

 

 

 

 

invert=0x05;

/* P2C0 = non-inverte input */

outportb(wBase+0x2a,invert);

 

 

/* P5C0

=

inverte input */

 

 

/* P8C0 = non-inverte input */

 

 

/* P11C0 =

inverte input */

now_int_state=0x0a;

/* P2C0

= Low

 

*/

 

 

/* P5C0

= High

 

*/

 

 

/* P8C0

= Low

 

*/

 

 

/* P11C0 = High

 

*/

CNT_L1=CNT_L2=CNT_L3=CNT_L4=0;

/* Low_pulse counter

*/

CNT_H1=CNT_H2=CNT_H3=CNT_H4=0;

/* High_pulse counter

*/

int_num=0;

/* enable interrupt P2C0

*/

outportb(wBase+5,0x0f);

enable();

/* P5C0, P8C0, P11C0

*/

}

 

 

 

 

 

/*

--------------------------------------------------------------

 

 

*/

/* NOTE:1.The hold-time of INT_CHAN_0/1/2/3 must long enough

*/

/*

2.The ISR must read the interrupt status again to the

*/

/*

active interrupt sources.

 

 

*/

/*

3.The INT_CHAN_0&INT_CHAN_1 can be active at the same time*/

/*

--------------------------------------------------------------

 

 

*/

void interrupt irq_service()

 

 

 

 

{

 

 

 

 

 

int_num++;

 

 

 

 

new_int_state=inportb(wBase+7)&0x0f;

 

 

 

int_c=new_int_state^now_int_state;

 

 

 

if ((int_c&0x1)!=0)

 

 

 

 

 

{

/* now P2C0 change to high

*/

 

if ((new_int_state&0x01)!=0)

 

{

 

 

 

 

 

CNT_H1++;

 

 

 

 

 

}

/* now P2C0 change to low

*/

 

else

 

{

 

 

 

 

 

CNT_L1++;

 

 

 

 

 

}

/* generate a high pulse

*/

 

invert=invert^1;

 

}

 

 

 

 

if ((int_c&0x2)!=0)

 

 

 

 

 

{

/* now P5C0 change to high

*/

 

if ((new_int_state&0x02)!=0)

 

{

 

 

 

 

 

CNT_H2++;

 

 

 

 

 

}

 

 

 

 

OME-PIO-D96 User Manual (Ver.1.1, Mar/2003)

 

 

---- 46

Image 48
Contents User’sGuide Canada MexicoBenelux Czech RepublicOME-PIO-D96 Table of Contents Features IntroductionSpecifications Order DescriptionOptions PCI Data Acquisition Family Product Check ListOME-PISO-series cost-effective generation, isolated cards Hardware configuration Board LayoutEnable I/O Operation I/O port LocationRefer to DEMO1.C for demo program D/I/O Architecture Interrupt Operation Make sure the initial level is High or LowInterrupt Block Diagram of OME-PIO-D96 INTCHAN3INTCHAN0/1/2/3 Initialhigh, activelow Interrupt source COUNTL++Initiallow, activehigh Interrupt source Muliti Interrupt Source Read all interrupt state Daughter Boards OME-DB-37OME-DN-37 & OME-DN-50 OME-DB-8125OME-ADP-37/PCI & OME-ADP-50/PCI OME-DB-24P/24PD Isolated Input Board OME-DB-24R/24RD Relay Board OME-DB-24PR/24POR/24C Daughter Boards Comparison Table All signals are TTL compatible Pin AssignmentVCC GND How to Find the I/O Address Resource-allocated informationOME-PIO/PISO identification information PC’s physical slot informationPIODriverInit PIODriverInit&wBoards, wSubVendor,wSubDevice,wSubAuxWSubVendor=0x80 wSubDevice=1 wSubAux=0x10 /* for PIOD96 Current sinking PIOGetConfigAddressSpace Enable all D/I/O operation of card0Enable all D/I/O operation of card1 ShowPIOPISO ShowPIOPISOwSubVendor,wSubDevice,wSubAuxAssignment of I/O Address Slot5 0x0A Slot6 0x08 Slot7 0x09 Slot8 0x07I/O Address Map Address Read WriteRESET\ Control Register AUX Control RegisterAUX data Register INT Mask Control Register Aux Status RegisterInterrupt Polarity Control Register INV3 INV2 INV1 INV07 I/O Selection Control Register Read/Write 8-bit data Register How to install software & utility? Demo programPiopiso PIOPISO.EXE for Windows DEMO1 DEMO2 DEMO3 COUNTL++ DEMO4 COUNTL++ DEMO5 CNTL1=CNTL2=CNTL3=CNTL4=0 Page WARRANTY/DISCLAIMER Temperature