# USB-1602HS Series

The USB-1602HS Series includes the following devices:

- USB-1602HS
- USB-1602HS-2AO

The USB-1602HS Series supports the following features.

## Analog Input

UL: cbAIn(), cbAInScan(), cbALoadQueue(), cbFileAInScan(), cbAPretrig()*, cbATrig()

UL for .NET: AIn(), AInScan(), ALoadQueue(), FileAInScan(), APretrig()*, ATrig()

Python for Windows: a_in(), a_in_scan(), a_load_queue(), a_pretrig(), a_trig()

*Pretrigger capability is implemented in software. PretrigCount must be less than the TotalCount and cannot exceed 100000 samples. If a trigger occurs while the number of collected samples is less than the PretrigCount, that trigger will be ignored. Requires a call to cbSetTrigger / SetTrigger/set_trigger() for the analog trigger type.

Options

BACKGROUND, BLOCKIO, CONTINUOUS, DMAIO, EXTCLOCK*, EXTTRIGGER, HIGHRESRATE

* With EXTTRIGGER mode, the first channel in the scan is the analog trigger channel.

HighChan

0 to 1

Count

Count must be an integer multiple of the number of channels in the scan.

Rate

Up to 2 MHz

Range

BIP10VOLTS (±10 volts)
BIP2PT5VOLTS (±2.5 volts)
BIPPT5VOLTS (±0.5 volts)

## Analog Output (USB-1602HS-2AO only)

UL: cbAOut(), cbAOutScan()

UL for .NET: AOut(), AOutScan()

Python for Windows: a_out(), a_out_scan()

Options

ADCCLOCK, ADCCLOCKTRIG, BACKGROUND, CONTINUOUS, EXTCLOCK, SIMULTANEOUS

NONSTREAMEDIO can only be used with the number of samples set equal to the size of the FIFO or less. The FIFO holds 524288 samples.

HighChan

0 to 1

Rate

1 MHz each channel

Count

Count must be an integer multiple of the number of channels in the scan.

Range

Ignored - Not programmable; fixed at BIP10VOLTS (±10 volts)

DataValue

0 to 65,535 (Refer to 16-bit values using a signed integer data type for information on 16-bit values using unsigned integers.)

Pacing

Hardware pacing, external or internal clock supported.

## Digital I/O

Port I/O

Functions

UL: cbDIn(), cbDOut(), cbDInScan(), cbDOutScan()

UL for .NET: DIn(), DOut(), DInScan(), DOutScan()

Python for Windows: d_in(), d_out(), d_in_scan(), d_out_scan()

Options

ADCCLOCK, ADCCLOCKTRIG, BACKGROUND, CONTINUOUS, EXTCLOCK, EXTTRIGGER, HIGHRESRATE, NONSTREAMEDIO

- The EXTTRIGGER option can only be used with the cbDInScan() function. You can use the cbSetTrigger() function to program the trigger for rising edge, falling edge, or the level of the digital trigger input (TTL).
- The NONSTREAMEDIO, ADCCLOCKTRIG, and ADCCLOCK options can only be used with the cbDOutScan() function.
- The HIGHRESRATE option can only be used with the cbDInScan() function.

Rate

8 MHz

PortNum

AUXPORT

DataValue

0 to 65,535

Bit I/O

Functions

UL: cbDBitIn(), cbDBitOut()

UL for .NET: DBitIn(), DBitOut()

Python for Windows: d_bit_in(), d_bit_out()

PortType

AUXPORT

BitNum

0 to 15

## Counter Input

UL: cbCIn(), cbCIn32(), cbCConfigScan(), cbCInScan(), cbCClear()

UL for .NET: CIn(), CIn32(), CConfigScan, CInScan(), CClear()

Python for Windows: c_in(), c_in_32(), c_config_scan(), c_in_scan, c_clear()

Note: Counters on these devices are zero-based (the first counter number is "0").

Rate

4 MHz

CounterNum

0 to 3 (general counter use)

4 to 6 (encoder use)

Options

BACKGROUND, CONTINUOUS, EXTTRIGGER, HIGHRESRATE

You can use the cbSetTrigger() function to program the trigger for rising edge, falling edge, or the level of the digital trigger input (TTL).

Mode

- TOTALIZE: BIT_32, CLEAR_ON_READ, DECREMENT_ON, GATING_ON, LATCH_ON_MAP, STOP_AT_MAX
- ENCODER: ENCODER_MODE_CLEAR_ON_Z_ON, ENCODER_MODE_LATCH_ON_Z, ENCODER_MODE_X1, ENCODER_MODE_X2, ENCODER_MODE_X4
- PERIOD: PERIOD_MODE_BIT_32, PERIOD_MODE_BIT_48, PERIOD_MODE_GATING_ON, PERIOD_MODE_X1000
- PULSEWIDTH: PULSEWIDTH_MODE_BIT_32, PULSEWIDTH_MODE_BIT_48, PULSEWIDTH_MODE_GATING_ON

When using Period and PulseWidth modes, note that the initial period is dependent upon the frequency of the signal being measured, a signal is required in order to latch data into the register, and the first sample in a scan is always zero, since it is not data that has been latched by the measured signal.

LoadValue

0 to 65,535

The Visual Basic signed integers guidelines apply when using cbCIn() or CIn() for values greater than 32,767 and when using cbCIn32() or CIn32() for values greater than 2,147,483,647.

## Timers

UL: cbPulseOutStart(), cbPulseOutStop()

UL for .NET: PulseOutStart(), PulseOutStop()

Python for Windows: pulse_out_start(), pulse_out_stop()

TimerNum

0 to 1

Frequency

0.112 Hz to 24 MHz

Duty cycle

0 to 1, non-inclusive

PulseCount

Ignored

## Triggering

UL: cbSetTrigger()

UL for .NET: SetTrigger()

Python for Windows: set_trigger()

TrigType

TRIGABOVE, TRIGBELOW, TRIGHIGH, TRIGLOW, TRIGPOSEDGE, TRIGNEGEDGE

- Digital triggering (TRIGHIGH, TRIGLOW, TRIGPOSEDGE, TRIGNEGEDGE) is not supported for pre-trigger acquisitions (cbAPretrig() function).
- Analog triggering (TRIGABOVE, TRIGBELOW) is not supported for the cbDInScan() function and the cbCInScan() function.

Threshold

Analog hardware triggering, 12-bit resolution: 0 to 4,095 (supported for cbAInScan() only)

Analog software triggering, 16-bit resolution: 0 to 65,535 (supported for cbAPretrig() only)

## DAQ Input

UL: cbDaqInScan()

UL for .NET: DaqInScan()

Python for Windows: daq_in_scan()

Options

BACKGROUND, BLOCKIO, CONTINUOUS, DMAIO, EXTCLOCK, EXTTRIGGER, HIGHRESRATE

ChanTypeArray

ANALOG, DIGITAL16, CTR16, CTR32LOW, CTR32HIGH

- When mixing ANALOG channel types with any other input types, the ANALOG channels should be the first in the list.

ChanArray

ANALOG: 0 to 3

DIGITAL16: AUXPORT

CTR16: 0 to 3 (general purpose), 4 to 6 (encoder)

CTR32LOW: 0 to 3 (general purpose), 4 to 6 (encoder)

CTR32HIGH: 0 to 3 (general purpose), 4 to 6 (encoder)

SETPOINTSTATUS: 16-bit port that indicates the current state of the 16 possible setpoints.

ChanTypeArray flag value:

- SETPOINT_ENABLE: Enables a setpoint. Refer to Setpoints in "Hardware Considerations" below for more information.

Rate

Analog: Up to 2 MHz

Digital: Up to 8 MHz if no analog channel is selected. Otherwise up to 2 MHz.

Counter: Up to 8 MHz if no analog channel is selected. Otherwise up to 2 MHz.

GainArray

ANALOG only; ignore for other ChanTypeArray values.

BIP10VOLTS (±10 volts)

BIP2PT5VOLTS (±2.5 volts)

BIPPT5VOLTS (±0.5 volt)

PretrigCount

100000 max

## DAQ Triggering

UL: cbDaqSetTrigger()

UL for .NET: DaqSetTrigger()

Python for Windows: daq_set_trigger()

TrigSource

TRIG_IMMEDIATE, TRIG_EXTTTL, TRIG_ANALOGHW, TRIG_ANALOGSW, TRIG_DIGPATTERN, TRIG_COUNTER, TRIG_SCANCOUNT

TrigSense

RISING_EDGE, FALLING_EDGE, ABOVE_LEVEL, BELOW_LEVEL, EQ_LEVEL, NE_LEVEL

TrigEvent

START_EVENT, STOP_EVENT

## DAQ Setpoint

UL: cbDaqSetSetpoints()

UL for .NET: DaqSetSetpoints()

Python for Windows: daq_set_setpoints()

SetpointFlagsArray

SF_EQUAL_LIMITA, SF_LESSTHAN_LIMITA, SF_GREATERTHAN_LIMITB, SF_OUTSIDE_LIMITS, SF_HYSTERESIS, SF_UPDATEON_TRUEONLY, SF_UPDATEON_TRUEANDFALSE

SetpointOutputArray

SO_NONE, SO_DIGITALPORT

Also available for USB-1602HS-2AO:

SO_DAC0, SO_DAC1

LimitAArray

Any value valid for the associated input channel.
Ignored for SF_GREATERTHAN_LIMITB

LimitBArray

Any value valid for the associated input channel and less than LimitA.
Ignored for SF_EQUAL_LIMITA, SF_LESSTHAN_LIMITA

Output#Array

For SetpointOutputArray = SO_NONE: Ignored

For SetpointOutputArray = SO_DIGITALPORT: 0 to 65,535

For SetpointOutputArray = SO_DAC#: Voltage values between –10 and +10

OutputMask#Array

For SetpointOutputArray = SO_DIGITALPORT: 0 to 65,535

For SetpointOutputArray = all other values: Ignored

SetpointCount

0 (to disable setpoints) to 16

## DAQ Output (USB-1602HS-2AO only)

UL: cbDaqOutScan()

UL for .NET: DaqOutScan()

Python for Windows: daq_out_scan()

Options

BACKGROUND, CONTINUOUS, EXTCLOCK, SIMULTANEOUS, ADCCLOCKTRIG, ADCCLOCK

ChanType

ANALOG, DIGITAL16

ChanArray

ANALOG: 0 to 1

DIGITAL16: AUXPORT

Rate

Analog: Up to 2 MHz

Digital16: Up to 8 MHz (system-dependent) if no analog channel is selected. Otherwise up to 2 MHz.

Range

BIP10VOLTS (±10 volts)

## Configuration

This hardware supports device detection with the API. Refer to the InstaCal, API Detection, or Both? section for information about whether to use InstaCal or the API to detect and configure hardware.

#### InstaCal

Factory serial number

Listed as Serial # (read only)

Calibration coefficients table

Calibration Coefficients drop-down combo box.

Input pacer clock edge

XAPCR Edge drop-down combo box.

Input pacer clock direction

XAPCR Pin Direction drop-down combo box.

Output pacer clock edge

XDPCR Edge drop-down combo box.

Output pacer clock direction

XDPCR Pin Direction drop-down combo box.

#### Programmable API Functions

Factory serial number

UL: cbGetConfigString()

ConfigItem = BIDEVSERIALNUM

UL for .NET: GetDeviceSerialNum()

Python for Windows: get_config_string()

config_item = DEVSERIALNUM

Calibration coefficients table

UL: cbGetConfig(), cbSetConfig()

ConfigItem = BICALTABLETYPE

ConfigVal = CAL_TABLE_FACTORY, CAL_TABLE_FIELD

UL for .NET: GetCalTableType(), SetCalTableType()

Python for Windows: get_config(), set_config()

config_item = CALTABLETYPE

config_val = FACTORY, FIELD

Input pacer clock edge

UL: cbGetConfig(), cbSetConfig()

ConfigItem = BIEXTINPACEREDGE

ConfigVal = EXT_PACER_EDGE_RISING, EXT_PACER_EDGE_FALLING

UL for .NET: GetExtInPacerEdge(), SetExtInPacerEdge()

Python for Windows: get_config(), set_config()

config_item = EXTINPACEREDGE

config_val = ExtPacerEdge enum

Input pacer clock direction

UL: cbGetConfig(), cbSetConfig()

ConfigItem = BIINPUTPACEROUT

ConfigVal = ENABLED, DISABLED

UL for .NET: GetInputPacerOut(), SetInputPacerOut()

Python for Windows: get_config(), set_config()

info_type = BOARDINFO

config_item = INPUTPACEROUT

config_val = State enum

Output pacer clock edge

UL: cbGetConfig(), cbSetConfig()

ConfigItem = BIEXTOUTPACEREDGE

ConfigVal = EXT_PACER_EDGE_RISING, EXT_PACER_EDGE_FALLING

UL for .NET: GetExtOutPacerEdge(), SetExtOutPacerEdge()

Python for Windows: get_config(), set_config()

config_item = EXTOUTPACEREDGE

config_val = ExtPacerEdgeType

Output pacer clock direction

UL: cbGetConfig(), cbSetConfig()

ConfigItem = BIOUTPUTPACEROUT

ConfigVal = ENABLED, DISABLED

UL for .NET: GetOutputPacerOut(), SetOutputPacerOut()

Python for Windows: get_config(), set_config()

config_item = OUTPUTPACEROUT

config_val = ENABLED (output), DISABLED

## Hardware considerations

##### Channel count

For input and output scans, the count must be set to an integer multiple of the number of channels in the scan or a BADCOUNT error is returned.

##### Sampling and update rates

Sampling and update rates are system-dependent. Data overruns/underruns may occur with higher sampling rates when using BACKGROUND and CONTINUOUS modes. To avoid this, use a larger buffer/count size, or use NONSTREAMEDIO mode, if supported.

The minimum size buffer is 256 for cbAOutScan(). Values less than that result in a BADBUFFERSIZE error.

##### Setpoints

You enable setpoints with the SETPOINT_ENABLE flag. This flag must be OR'ed with the ChanTypeArray argument values. You set the setpoint criteria with cbDaqSetSetpoints()/DaqSetSetpoints(). The number of channels set with the SETPOINT_ENABLE flag must match the number of setpoints set by the SetpointCount argument (cbDaqSetSetpoints()/DaqSetSetpoints()).

##### Output non-streamed data to a DAC output channel

With NONSTREAMEDIO mode, you can output non-streamed data to a specific DAC output channel. The aggregate size of the data output buffer must be less than or equal to the size of the internal data output FIFO in the device. The FIFO holds 524288 samples. This allows the data output buffer to be loaded into the device's internal output FIFO. Once the sample updates are transferred or downloaded to the device, the device is responsible for outputting the data. You can't change the output buffer once the output begins.

##### Trigger DAC output operations with the ADC clock

Specify the ADCCLOCK option to trigger a data output operation upon the start of the ADC clock.

##### Quadrature encoder operations

To configure a counter channel as a multi-axis quadrature encoder, use the cbCConfigScan()/ CConfigScan() Mode argument values to set a specified counter to encoder mode, set the encoder measurement mode to X1, X2, or X4, and then set the count to be latched either by the internal "start of scan" signal (default) or by the signal on the mapped channel.

You can optionally perform the following operations:

- Enable gating, so that the counter is enabled when the mapped channel to gate the counter is high. When the mapped channel is low, the counter is disabled but holds the count value.
- Enable "latch on Z" to latch counter outputs using the Encoder Z mapped signal.
- Enable "clear on Z" so that the counter is cleared on the rising edge of the mapped (Z) channel. By default, "clear on Z" is disabled, and the counter is not cleared.

##### Asynchronous reads

The CConfigScan() method's Bit32 counter mode option only affects counter resolution for asynchronous calls (CIn() and CIn32()), and only when the counter is configured for StopAtMax.
This mode is recommended for use only with CIn32(). Using the Bit32 option with CIn() is not very useful, since the value returned by CIn() is only 16 bits. The effect is that the value returned by CIn() rolls over 65,535 times before stopping.

##### PERIOD and PULSEWIDTH counter modes

When using Period and PulseWidth modes, note that the initial period is dependent upon the frequency of the signal being measured, a signal is required in order to latch data into the register, and the first sample in a scan is always zero, since it is not data that has been latched by the measured signal.

##### Concurrent operations

Concurrent operations are not allowed. If you invoke a function while another function is already running on the device, the ALREADYACTIVE error is returned.