PCI-1002 Series Card
12-bit, 110 kS/s or 44 kS/s Multi-function Board
User Manual, Ver. 3.0, Jun. 2018, PMH-015-30, Page: 42
Here’s the sample program source code:
/* Step1: Detect all PCI-1002 cards first */
wRetVal=P1002_DriverInit(&wBoards);
printf("Threr are %d PCI
-1002 Cards in this PC\n",wBoards);
/* Step2: Save resources of all PCI-1002 cards installed in this PC */
for (i=0; i<wBoards; i++)
{
P1002_GetConfigAddressSpace(i,&wBase,&wIrq,&wPLX);
printf("\
nCard_%d: wBase=%x, wIrq=%x, wPLX=%x", i,wBase,wIrq,wPLX);
wConfigSpace[i][0]=wBaseAddress;
/* save all resource of this card */
wConfigSpace[i][1]=wIrq;
/* save all resource of this card */
wConfigSpace[i][2]=wPLX;
/* save all resource of this card */
}
/* Step3: Control the PCI-1002 directly */
wBase=wConfigSpace[0][0];
/* get base address the card_0 */
outpw(wBase+0x20,wDoValue);
/* control the DO states of card_0 */
wDiValue=inpw(wBase+0x20);
/* read the DI states of card_0 */
wBase=wConfigSpace[1][0];
/* get base address of card_1 */
outpw(wBase+0x20,wDoValue);
/* control the DO states of card_1 */
wDiValue=inpw(wBase+0x20);
/* read the DI states of card_1 */
wPLX=wConfigSpace[2][2];
/* get PCI-interface base address of card-2 */
_outpd(wPLX+0x4c,0x41);
/* channel_1, interrupt active_Low */
…
…
_outpd(wPLX+0x4c,0);
/* disable all interrupt */