beautypg.com

Sample drivers, 2 sample drivers – Sensoray 118 User Manual

Page 14

background image

Sensoray Model 118 Smart A/D™ Instruction Manual

12

Programming

#define CMD_SET_GAGEZERO 176 /* SET GAGE ZERO */

#define CMD_SET_COEFFS 192 /* SET COEFFICIENTS */

#define CMD_SET_GAGESPAN 208 /* SET GAGE SPAN */

#define CMD_EXTENDED 240 /* EXTENDED OPCODE PREFIX */

// ====== EXTENDED COMMAND OPCODES ======

#define XCMD_GET_PRODUCTID 4 /* GET MODEL NUMBER */

#define XCMD_GET_VERSION 5 /* GET FIRMWARE VERSION */

#define XCMD_SET_HISPEED 8 /* SWITCH TO HIGH SPEED MODE */

// ====== STATUS REGISTER BIT MASKS ======

#define STATUS_CRMT 0x80 /* Command Register eMpTy */

#define STATUS_DAV 0x40 /* Data AVailable */

#define STATUS_ALRM 0x20 /* ALaRM sounding */

#define STATUS_FLT 0x10 /* board FauLT or reset */

// ====== SENSOR DEFINITION CODES ======

#define TYPE_TC_K 0x1C /* K thermocouple, 0.1 C/bit */

// ====== SENSOR SCALARS ======

#define SCALAR_VOLTS_5 0.0002 /* 5V range, 200uV/bit */

#define SCALAR_TC_K 0.1000 /* K thermocouple, 0.1C/bit */

5.3.2 Sample Drivers

// Handshake a command byte to the command register.

VOID SendByte( USHORT BasePort, UCHAR cmd_byte )

{

while ( !( inp( BasePort + 1 ) & STATUS_CRMT ) ); // wait for CRMT

outp( BasePort, cmd_byte ); // send command byte

}

// Handshake a response byte from the data register.

UCHAR ReadByte( USHORT BasePort )

{

while ( !( inp( BasePort + 1 ) & STATUS_DAV ) ); // wait for DAV

return inp( BasePort ); // read response byte

}

// Send a 16-bit integer value to Smart A/D board.

VOID SendWord( USHORT BasePort, SHORT Value )

{

SendByte( BasePort, ( Value >> 8 ) & 0xFF ) // send high byte

SendByte( BasePort, Value & 0xFF ) // send low byte

}

// Fetch a 16-bit integer value from Smart A/D board.

SHORT ReadWord( USHORT BasePort )

{

SHORT val = (SHORT) ReadByte( BasePort ) << 8; // read high byte

return val | (SHORT) ReadByte( BasePort ) ); // read low byte

{

// Reset Smart A/D board.

VOID ResetBoard( USHORT BasePort )

{

outp( BasePort + 1, 0 ); // reset the board

while ( inp( BasePort + 1 ) & STATUS_FLT ); // wait for FLT to clear

{

This manual is related to the following products: