/* * This file is a collection of register level AT-DIO-32HS functions * Included in this file are: * DAQ_DIO_Windowed_Mode_Write8 * DAQ_DIO_Windowed_Mode_Read8 * DAQ_DIO_Windowed_Mode_Write16 * DAQ_DIO_Windowed_Mode_Read16 * DAQ_DIO_Windowed_Mode_Write32 * DAQ_DIO_Windowed_Mode_Read32 * Board_Write8 * Board_Read8 * Board_Write16 * Board_Read16 * Board_Write32 * Board_Read32 * */ /* this file has been modified for use with borlandc by Bernd Mielke */ /*for use with Microsoft C use the original file from NI atfnct.c*/ #include #include "dio32rlp.h" #include extern unsigned Board_Base_Address, Read_Port_Address; void DAQ_DIO_Windowed_Mode_Write8(unsigned uRegister_Address, unsigned uData) { outp(Board_Base_Address + WINDOW_ADDRESS,uRegister_Address); outp(Board_Base_Address + WINDOW_DATA_0+(uRegister_Address%4),uData); } void DAQ_DIO_Windowed_Mode_Write16(unsigned uRegister_Address, unsigned uData) { outp(Board_Base_Address + WINDOW_ADDRESS,uRegister_Address); outpw(Board_Base_Address + WINDOW_DATA_0+(uRegister_Address%4),uData); } void DAQ_DIO_Windowed_Mode_Write32(unsigned uRegister_Address, unsigned long uData) { unsigned Hi_Data,Lo_Data; Lo_Data=uData & 0xffff; Hi_Data=(uData >> 16) & 0xffff; DAQ_DIO_Windowed_Mode_Write16(uRegister_Address, Lo_Data); DAQ_DIO_Windowed_Mode_Write16((uRegister_Address+2), Hi_Data); } unsigned DAQ_DIO_Windowed_Mode_Read8(unsigned uRegister_Address) { outp(Board_Base_Address + WINDOW_ADDRESS,uRegister_Address); return(inp(Board_Base_Address + WINDOW_DATA_0+(uRegister_Address%4))); } unsigned DAQ_DIO_Windowed_Mode_Read16(unsigned uRegister_Address) { outp(Board_Base_Address + WINDOW_ADDRESS,uRegister_Address); return(inpw(Board_Base_Address + WINDOW_DATA_0+(uRegister_Address%4))); } unsigned long DAQ_DIO_Windowed_Mode_Read32(unsigned uRegister_Address) { unsigned long Hi_inData,Lo_inData,inData; Lo_inData=DAQ_DIO_Windowed_Mode_Read16(uRegister_Address); Hi_inData=DAQ_DIO_Windowed_Mode_Read16((uRegister_Address+2)); inData=Lo_inData | (Hi_inData<<16); return inData; } void Board_Write8(unsigned uRegister_Address, unsigned uData) { outp(Board_Base_Address + uRegister_Address,uData); } void Board_Write16(unsigned uRegister_Address, unsigned uData) { outpw(Board_Base_Address + uRegister_Address,uData); } void Board_Write32(unsigned uRegister_Address, unsigned long uData) { unsigned Hi_Data,Lo_Data; Lo_Data=uData & 0xffff; Hi_Data=(uData >> 16) & 0xffff; Board_Write16(uRegister_Address, Lo_Data); Board_Write16((uRegister_Address+2), Hi_Data); } unsigned Board_Read8(unsigned uRegister_Address) { return(inp(Board_Base_Address + uRegister_Address)); } unsigned Board_Read16(unsigned uRegister_Address) { return(inpw(Board_Base_Address + uRegister_Address)); } unsigned long Board_Read32(unsigned uRegister_Address) { unsigned long Hi_inData,Lo_inData,inData; Lo_inData=Board_Read16(uRegister_Address); Hi_inData=Board_Read16((uRegister_Address+2)); inData=Lo_inData | (Hi_inData<<16); return inData; }