Omega OME-PIO-D144 manual Demo5 Interrupt demo3

Page 45

4.6

Demo5: Interrupt demo3

 

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

*/

/* demo 5 : four interrupt source

*/

/*

CN1_PC0: initial Low, active High

*/

/*

CN1_PC1: initial High, active Low

*/

/*

CN1_PC2: initial Low, active High

*/

/*

CN1_PC3: initial High, active Low

*/

/* step 1 : run demo5.exe

*/

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

*/

#include "PIO.H"

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

WORD init_low();

WORD wBase,wIrq;

static void interrupt irq_service();

int irqmask,now_int_state,invert,new_int_state,int_c,int_num; int CNT_L1,CNT_L2,CNT_L3,CNT_L4;

int CNT_H1,CNT_H2,CNT_H3,CNT_H4;

int main()

{

int i,j;

WORD wBoards,wRetVal;

WORD wBase,wIrq,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);

outp(wBase+0xc8,0xff);

/* CN1 to CN2 port are all input */

 

printf("\n(4) *** show the count of High_pulse **\n");

 

init_low();

 

 

 

 

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

----- 43

Image 45
Contents User’sGuide Mexico CanadaBenelux Czech RepublicOME-PIO-D144 Table of Contents Demo Program Specifications All signals are TTL compatibleProduct Check List Board Layout Hardware configurationEnable I/O Operation I/O Port LocationRefer to DEMO1.C for demo program O Architecture If INT signal is Low now Æ select the non-inverted input Interrupt OperationMake 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-37 Daughter BoardsOME-DN-37 & OME-DN-50 OME-DB-8125OME-ADP-37/PCI & OME-ADP-50/PCI OME-DB-24P/24PD Isolated Input Board OME-PIO-D144OME-DB-24P OME-DB-24PD OME-DB-24R/24RD Relay Board OME-DB-24PR/24POR/24C OME-DB-24PRCOM OME-DB-24PR Daughter Board Comparison Table Pin Assignment VCCGND OME-PIO-D144 User’s Manual Ver.2.1, Sep/2001 Resource-allocated information How to Find the I/O AddressPIO/PISO identification information PC’s physical slot informationOME-PISO-P32C32 OME-PIO-821OME-PISO-P32A32 OME-PISO-P8R8PIODriverInit&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 RESET\ RESET\ Control RegisterI/O Address Map Address Read WriteAUX data Register AUX Control RegisterINT Mask Control Register CN1PC3 CN1PC2 CN1PC1 CN1PC0Interrupt Polarity Control Register Aux Status RegisterActive I/O Port Control Register Read/Write 8-bit data RegisterCN2PC CN2PB CN2PA CN1PC CN1PB CN1PA 9 I/O Selection Control RegisterCN4PC CN4PB CN4PA CN3PC CN3PB CN3PA CN6PC CN6PB CN6PA CN5PC CN5PB CN5PA\TC\LARGE\LIB\ \TC\LARGE\\TC\LARGE\DEMO?\ \TC\LARGE\LIB\PIO.HOME-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