Omega Engineering OME-PIO-D96 manual Initialhigh, activelow Interrupt source, Countl++

Page 14

2.5.3Initial_high, active_low Interrupt source

If the P2C0 is an initial_high, active_low signal, the interrupt service routine should use INV0 to invert or not to invert the P2C0 for high_pulse generation as follows: (Refer to DEMO4.C)

Initial set:

 

 

now_int_state=1;

/* initial state for P2C0

*/

 

 

 

 

 

 

 

 

outportb(wBase+0x2a,0);

/* select the inverted P2C0 */

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

void interrupt irq_service()

 

 

 

 

 

 

 

 

 

{

 

 

 

 

 

/* now P2C0 is changed to LOW

 

 

*/(a)

if (now_int_state==1)

 

 

 

{

 

 

 

/* --> INT_CHAN_0=!P2C0=HIGH now

*/

 

 

 

 

COUNT_L++;

 

/* find a LOW_pulse (P2C0)

 

 

*/

 

 

 

 

If((inport(wBase+7)&1)==0)/* the P2C0 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=P2C0=LOW -->

 

 

*/

 

 

 

 

now_int_state=0;

 

/*

INT_CHAN_0 generate a high_pulse

*/

 

 

 

 

 

/* now P2C0=LOW

 

 

 

 

*/

 

 

}

 

 

 

/* now P2C0=HIGH

 

 

 

 

*/

 

 

 

 

else now_int_state=1;

 

 

 

 

 

 

}

 

 

 

/* don’t have to generate high_pulse

*/

 

 

 

 

 

/* now P2C0 is changed to HIGH

 

 

*/(c)

else

 

 

 

{

 

 

 

/* --> INT_CHAN_0=P2C0=HIGH now

 

 

*/

 

 

 

 

COUNT_H++;

 

/* find a HIGH_pulse (P2C0)

 

 

*/

 

 

 

 

If((inport(wBase+7)&1)==1)/* the P2C0 is still fixed in HIGH

*/

 

 

{

 

 

 

/* need to generate a high_pulse

*/

 

 

 

 

outportb(wBase+0x2a,0);/* INV0 select the inverted input */(d)

 

 

 

 

 

 

/* INT_CHAN_0=!P2C0=LOW -->

 

 

*/

 

 

 

 

now_int_state=1;

 

/* INT_CHAN_0 generate a high_pulse

*/

 

 

 

 

 

/* now P2C0=HIGH

 

 

 

 

*/

 

 

}

 

 

 

/* now P2C0=LOW

 

 

 

 

*/

 

 

 

 

else now_int_state=0;

 

 

 

 

 

 

}

 

 

 

/* don’t have to generate high_pulse

*/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

if (wIrq>=8) outportb(A2_8259,0x20);

 

 

 

 

 

 

 

outportb(A1_8259,0x20);

 

 

 

 

 

 

 

 

 

 

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(a)

(b)

 

 

(c)

(d)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P2C0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

INV0

INT_CHAN_0

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

---- 12

Image 14
Contents User’sGuide Benelux CanadaMexico Czech RepublicOME-PIO-D96 Table of Contents Features IntroductionOptions SpecificationsOrder Description OME-PISO-series cost-effective generation, isolated cards PCI Data Acquisition FamilyProduct Check List Hardware configuration Board LayoutRefer to DEMO1.C for demo program Enable I/O OperationI/O port Location 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 OME-DN-37 & OME-DN-50 Daughter BoardsOME-DB-37 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 OME-PIO/PISO identification information How to Find the I/O AddressResource-allocated information PC’s physical slot informationWSubVendor=0x80 wSubDevice=1 wSubAux=0x10 /* for PIOD96 PIODriverInitPIODriverInit&wBoards, wSubVendor,wSubDevice,wSubAux Current sinking Enable all D/I/O operation of card1 PIOGetConfigAddressSpaceEnable all D/I/O operation of card0 ShowPIOPISO ShowPIOPISOwSubVendor,wSubDevice,wSubAuxAssignment of I/O Address Slot5 0x0A Slot6 0x08 Slot7 0x09 Slot8 0x07I/O Address Map Address Read WriteAUX data Register RESET\ Control RegisterAUX Control 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