Omega OME-PIO-D144 manual Demo4 Interrupt demo2

Page 43

4.5Demo4: Interrupt demo2

/*

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

: count low pulse of PC0

*/

/* demo 4

*/

/*

(Initial High & active Low)

*/

/* step 1

: run demo4.exe

*/

/*

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

*/

#include "PIO.H"

#define A1_8259 0x20 #define A2_8259 0xA0 #define EOI 0x20

WORD init_high();

WORD wBase,wIrq;

static void interrupt irq_service(); int COUNT,irqmask,now_int_state;

int main()

{

int i,j; WORD wBoards;

WORD wSubVendor,wSubDevice,wSubAux,wSlotBus,wSlotDevice; char c;

DWORD dwVal;

clrscr();

PIO_DriverInit(&wBoards,0x80,0x01,0x00);

printf("\n(1) Threr are %d OME-PIO-D144 Cards in this PC",wBoards); if ( wBoards==0 )

{

putch(0x07); putch(0x07); putch(0x07);

printf("(1) There are no OME-PIO-D144 card in this PC !!!\n");

exit(0);

}

printf("\n(2) Show the Configuration Space of all OME-PIO-D144:"); for(i=0; i<wBoards; i++)

{

PIO_GetConfigAddressSpace(i,&wBase,&wIrq,&wSubVendor,&wSubDevice, &wSubAux,&wSlotBus,&wSlotDevice);

printf("\nCard_%d: wBase=%x,wIrq=%x,subID=[%x,%x,%x],SlotID=[%x,%x]" ,i,wBase,wIrq,wSubVendor,wSubDevice,wSubAux,wSlotBus,wSlotDevice);

}

/* select card_0 */

PIO_GetConfigAddressSpace(0,&wBase,&wIrq,&wSubVendor,&wSubDevice, &wSubAux,&wSlotBus,&wSlotDevice);

printf("\n(3) *** Card_0, wBaseAddr=%x ***",wBaseAddr);

COUNT=0;

outp(wBase+0xc8,0xff); /* CN1 to CN2 port are all input */ printf("\n(4) *** show the count of High_pulse **\n"); init_high();

for (;;)

{

printf("\nCOUNT=%d",COUNT);

if (kbhit()!=0) {getch(); break;}

}

OME-PIO-D144 User’s Manual (Ver.2.1, Sep/2001)

----- 41

Image 43
Contents User’sGuide Czech Republic CanadaMexico BeneluxOME-PIO-D144 Table of Contents Demo Program All signals are TTL compatible SpecificationsProduct Check List Board Layout Hardware configurationI/O Port Location Enable I/O OperationRefer to DEMO1.C for demo program O Architecture Interrupt Operation If INT signal is Low now Æ select the non-inverted inputMake sure the initial level is High or Low Refer to DEMO3.C for source code Refer to DEMO4.C for source code CN1PC0 CN1PC1 CN1PC2 CN1PC3 If PC1 is active OME-DB-8125 Daughter BoardsOME-DB-37 OME-DN-37 & OME-DN-50OME-ADP-37/PCI & OME-ADP-50/PCI OME-PIO-D144 OME-DB-24P/24PD Isolated Input BoardOME-DB-24P OME-DB-24PD OME-DB-24R/24RD Relay Board OME-DB-24PR OME-DB-24PR/24POR/24CCOM OME-DB-24PR Daughter Board Comparison Table VCC Pin AssignmentGND OME-PIO-D144 User’s Manual Ver.2.1, Sep/2001 PC’s physical slot information How to Find the I/O AddressResource-allocated information PIO/PISO identification informationOME-PISO-P8R8 OME-PIO-821OME-PISO-P32C32 OME-PISO-P32A32PIODriverInit&wBoards, wSubVendor,wSubDevice,wSubAux PIODriverInitPIOGetConfigAddressSpace ShowPIOPISO Slot5 0x0A Slot6 0x08 Slot7 0x09 Slot8 0x07 Assignment of I/O AddressOME-PIO-D144 User’s Manual Ver.2.1, Sep/2001 Address Read Write RESET\ Control RegisterRESET\ I/O Address MapCN1PC3 CN1PC2 CN1PC1 CN1PC0 AUX Control RegisterAUX data Register INT Mask Control RegisterInterrupt Polarity Control Register Aux Status RegisterActive I/O Port Control Register Read/Write 8-bit data RegisterCN6PC CN6PB CN6PA CN5PC CN5PB CN5PA 9 I/O Selection Control RegisterCN2PC CN2PB CN2PA CN1PC CN1PB CN1PA CN4PC CN4PB CN4PA CN3PC CN3PB CN3PA\TC\LARGE\LIB\PIO.H \TC\LARGE\\TC\LARGE\LIB\ \TC\LARGE\DEMO?\OME-PIO-D144.H Demo1 Use D/O of CN1 CN3 CN4 Demo2 Use D/O of CN1~CN6 PA/PB/PC COUNT=0 Demo3 Interrupt demo1Refer to Sec .5.1 for more information Demo4 Interrupt demo2 Refer to Sec .5.2 for more information Demo5 Interrupt demo3 CN1PC1 OME-PIO-D144 User’s Manual Ver.2.1, Sep/2001 Demo 6 Outport of CN1-CN6 OME-PIO-D144 User’s Manual Ver.2.1, Sep/2001 Demo10 Find Card Number OME-PIO-D144 User’s Manual Ver.2.1, Sep/2001 WARRANTY/DISCLAIMER Temperature