Omega Vehicle Security OME-PIO-D56 manual CNTL1=CNTL2=CNTL3=CNTL4=0

Page 50

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);

outportb(A1_8259+1,irqmask & 0xfb);/* IRQ2 */ irqmask=inportb(A2_8259+1);

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

}

invert=0x05;

 

/* PC0

= non-inverte input */

outportb(wBase+0x2a,invert);

 

 

 

 

/* PC1

=

inverte input */

 

 

 

/* PC2

= non-inverte input */

 

 

 

/* PC3

=

inverte input */

now_int_state=0x0a;

 

/* PC0

= Low

 

*/

 

 

 

/* PC1

= High

 

*/

 

 

 

/* PC2

= Low

 

*/

 

 

 

/* PC3

= 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 PC0,PC1

*/

outportb(wBase+5,0x0f);

 

enable();

 

/* PC2,PC3

 

*/

}

 

 

 

 

 

*/

/* --------------------------------------------------------------

 

 

 

 

/* 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()

 

 

 

 

 

{

 

 

 

 

 

 

char c;

 

 

 

 

 

 

int_num++;

 

/* read all interrupt state */

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

int_c=new_int_state^now_int_state;

/* compare which interrupt

*/

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

 

/* signal be change

*/

 

/* INT_CHAN_0 is active

*/

{

 

 

 

 

 

*/

if ((new_int_state&0x1)!=0)/* now PC0 is change to high

{

 

 

 

 

 

 

CNT_H1++;

 

 

 

 

 

}

 

/* now PC0 is change to low

*/

else

 

{

 

 

 

 

 

 

CNT_L1++;

 

 

 

 

 

}

 

/* to generate a high pulse

*/

invert=invert^1;

}

 

 

/* INT_CHAN_1 is active

*/

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

 

{

 

 

 

 

 

*/

if ((new_int_state&0x2)!=0)/* now PC1 is change to high

{

 

 

 

 

 

 

CNT_H2++;

}

PIO-D56/PIO-D24 User Manual (Ver.2.1, Oct/2003, PPH-005-21)

---- 48

Image 50
Contents User’sGuide Benelux CanadaMexico Czech RepublicOME-PIO-D56/D24 Table of Contents Features IntroductionOptions SpecificationsOrder Description OME-PISO-series cost-effective generation, isolated cards Product ChecklistPCI Data Acquisition Family Hardware configuration Board Layout1 DI/DO Port Architecture CON3 I/O Port LocationEnabling I/O Operation Select Sec RESET\ Sec DI Port Architecture CON2 Do Port Architecture CON1 Make sure the initial level is High or Low If INT signal is Low now Æ select the non-inverted inputInterrupt Operation Interrupt Block Diagram of OME-PIO D56/D24 Interrupt output signal of OME-PIO-D56/OME-PIO-D24, INT\ isINTCHAN0/1/2/3 Initialhigh, activelow Interrupt source COUNTL++Initiallow, activehigh Interrupt source Muliti-Interrupt Source PC0 PC1 PC2 PC3Read all interrupt state OME-DN-37 Daughter BoardsOME-DB-37 OME-DB-8125OME-ADP-20/PCI OME-DB-24PD Isolated Input Board OME-DB-24RD Relay Board OME-DB-24PRD, OME-DB-24POR, OME DB-24C Daughter Board Comparison Table All signals are TTL compatible Pin AssignmentDI0 DI1 DI2 DI3 DI4 DI5 DI6 DI7 DI8 DI9 PIO/PISO identification information How to Find the I/O AddressResource-allocated information PC’s physical slot informationWSubVendor=0x80 wSubDevice=1 wSubAux=0x40 For PIODriverInitPIODriverInit&wBoards, wSubVendor,wSubDevice,wSubAux D56/D24Printf\nThrer are %d Piopiso Cards in this PC,wBoards OME-PISO-P32C32 Enable all D/I/O operations of card1 PIOGetConfigAddressSpaceEnable all D/I/O operations 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 7 I/O Selection Control RegisterRead/Write 8-bit data Register How to install software & utility? Demo programPiopiso PIOPISO.EXE for Windows DEMO1 DEMO2 DEMO3 COUNT=0COUNT++ DEMO4 COUNT++ DEMO5 PC3CNTL1=CNTL2=CNTL3=CNTL4=0 Page WARRANTY/DISCLAIMER Temperature