User manual

114 Register-Based Programming Appendix B
/* Open a device session for the E1460A at laddr 112. */
e1460a = iopen(E1460A);
/* Map in the A16 registers */
dev_ptr=(DEVICE_REGISTERS *) imap(e1460a, I_MAP_VXIDEV, 0, 1, 0);
/* Check card ID */
id=dev_ptr->>devtype_reg;
if(id==0x0100)
printf("Card identified as E1460A\n");
else
{
printf("Card not an E1460A - ID code: %hu\n",id);
}
/* Open all relays */
while(((dev_ptr->>statcntl_reg)&BUSY)==0); dev_ptr->>bank0_reg=0x000;
while(((dev_ptr->>statcntl_reg)&BUSY)==0); dev_ptr->>bank1_reg=0x000;
while(((dev_ptr->>statcntl_reg)&BUSY)==0); dev_ptr->>bank2_reg=0x000;
while(((dev_ptr->>statcntl_reg)&BUSY)==0); dev_ptr->>bank3_reg=0x000;
while(((dev_ptr->>statcntl_reg)&BUSY)==0); dev_ptr->>bank4_reg=0x000;
while(((dev_ptr->>statcntl_reg)&BUSY)==0); dev_ptr->>bank5_reg=0x000;
while(((dev_ptr->>statcntl_reg)&BUSY)==0); dev_ptr->>bank6_reg=0x000;
while(((dev_ptr->>statcntl_reg)&BUSY)==0); dev_ptr->>bank7_reg=0x000;
while(((dev_ptr->>statcntl_reg)&BUSY)==0); dev_ptr->>bank99_reg=0x000;
while(((dev_ptr->>statcntl_reg)&BUSY)==0);
/* Close control relays 0992, 0993 & 0995 for 2X64 2-wire mode. */
while(((dev_ptr->>statcntl_reg)&BUSY)==0);
dev_ptr->>bank99_reg=0x02c;
printf("Scanning bank 0, channels 0-7\n");
rly = 1;
for(i=0; iL8; i++)
{
while(((dev_ptr->>statcntl_reg)&BUSY)==0);
dev_ptr->>bank0_reg=rly;
printf("Scanned bank 0 channel %d\n",i);
rly = 2 * rly;
}
printf("Done\n");
exit(0);
}