# USB-1808 Series

The USB-1808 Series includes the following devices:

- USB-1808, USB-1808-OEM
- USB-1808X, USB-1808X-OEM

The USB-1808 Series supports the following features. Unless otherwise indicated, OEM versions support the same features as the equivalent standard versions.

## Analog input

Functions

UL: cbAIn32(), cbAInScan(), cbALoadQueue(), cbVIn32()

UL for .NET: AIn32(), AInScan(), ALoadQueue(), VIn32()

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

Options

BACKGROUND, BLOCKIO, CONTINUOUS, EXTCLOCK, EXTTRIGGER, HIGHRESRATE, NOCALIBRATEDATA, RETRIGMODE, SCALEDATA, SINGLEIO

Packet size

Rate dependent. The default packet size is 128 samples. At higher rates, the packet size increases by a multiple of 128.

Mode

Single-ended and differential

HighChan

0 to 7 in single-ended and differential mode

Count

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

Rate

USB-1808: 50 kS/s max

USB-1808X: 200 kS/s max

Range

BIP10VOLTS (±10 volts) | UNI10VOLTS (0 to 10 volts)
BIP5VOLTS (±5 volts) | UNI5VOLTS (0 to 5 volts)

Pacing

Hardware pacing, external or internal clock supported.

## Analog output

Functions

UL: cbAOut(), cbAOutScan(), cbVOut()

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

Python for Windows: a_out(), a_out_scan(), v_out()

Options

BACKGROUND, CONTINUOUS, EXTCLOCK, EXTTRIGGER, HIGHRESRATE, RETRIGMODE, SCALEDATA

Range

BIP10VOLTS (±10 Volts)

HighChan

0 to 1

Count

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

Rate

USB-1808: 125 kS/s max

USB-1808X: 500 kS/s max

Packet size

Rate dependent.

## Digital I/O

##### Configuration

Functions

UL: cbDConfigBit(), cbDConfigPort()

UL for .NET: DConfigBit(), DConfigPort()

Python for Windows: d_config_bit(), d_config_port()

PortNum

AuxPort

PortType

AuxPort

##### Port I/O

Functions

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

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

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

Options

BACKGROUND, BLOCKIO, CONTINUOUS, DWORDXFER, EXTCLOCK, EXTTRIGGER, HIGHRESRATE, RETRIGMODE, SINGLEIO

Rate

USB-1808: 50 kHz input, 125 kHz output, max

USB-1808X: 200 kHz input, 500 kHz output, max

PortNum

AuxPort (four bits, bit-configurable)

DataValue

0 to 15

##### 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 3 on AuxPort

## Counter

UL: cbCClear(), cbCConfigScan(), cbCIn(), cbCIn32(), cbCInScan(), cbCLoad(), cbCLoad32()**

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

Python for Windows: c_clear(), c_config_scan(), c_in(), c_in_32(), c_load(), c_load_32()**

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

Rate

USB-1808: 50 kS/s max

USB-1808X: 200 kS/s max

CounterNum

0 to 1 (general purpose)
2 to 3 (encoder)

Options

BACKGROUND, BLOCKIO, CONTINUOUS, CTR32BIT, EXTCLOCK, EXTTRIGGER, HIGHRESRATE, NOCLEAR, RETRIGMODE, SINGLEIO

Use cbSetTrigger() to program the trigger for rising edge, falling edge, or the level of the digital trigger input (TTL).

Mode

- TOTALIZE: CLEAR_ON_READ, COUNT_DOWN_ON, NO_RECYCLE_ON, RANGE_LIMIT_ON
- PERIOD: PERIOD_MODE_X1, PERIOD_MODE_X10, PERIOD_MODE_X100, PERIOD_MODE_X1000
- PULSEWIDTH
- ENCODER: ENCODER_MODE_CLEAR_ON_Z_ON, ENCODER_MODE_LATCH_ON_Z, ENCODER_MODE_RANGE_LIMIT_ON, ENCODER_MODE_X1, ENCODER_MODE_X2, ENCODER_MODE_X4

TOTALIZE, PERIOD, and PULSEWIDTH modes are not valid for encoder use. ENCODER mode is valid for encoder use only.

When using PERIOD and PULSEWIDTH modes, 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.

Count

232 when reading the counter.

LoadValue

0 to 232 – 1

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.

Visual Basic does not handle values larger than 32-bit. Try to avoid using larger values, or use Visual Basic .NET.

RegNum

LOADREG0 to LOADREG3, MINLIMITREG0 to MINLIMITREG3, MAXLIMITREG0 to MAXLIMITREG3

TickSize

CTR_TICK20ns, CTR_TICK200ns, CTR_TICK2000ns, CTR_TICK20000ns

## Timer Output

Functions

UL: cbPulseOutStart(), cbPulseOutStop()

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

Python for Windows: pulse_out_start(), pulse_out_stop()

TimerNum

0 to 1

Frequency

50 MHz

DutyCycle

0 to 1, non-inclusive

InitialDelay

0 to 42.94 sec

IdleState

IDLE_LOW, IDLE_HIGH

PulseCount

0 to 232 – 1 (Refer to 16-bit values using a signed integer data type for information on 16-bit values using unsigned integers.)

Set to 0 to continuously generate pulses until PulseOutStop() is called.

Options

EXTTRIGGER, RETRIGMODE

Use cbSetTrigger() to program the trigger for rising edge, falling edge, or the level of the digital trigger input (TTL).

The timer does not support pattern trigger types.

The external trigger can be used to trigger the timer. Refer to Retriggering in the Hardware Considerations section below for information about triggering timer operations.

## Triggering

Functions

UL: cbSetTrigger()

UL for .NET: SetTrigger()

Python for Windows: set_trigger()

TrigType

Digital triggering: TRIG_POS_EDGE, TRIG_NEG_EDGE, TRIG_HIGH, TRIG_LOW

Pattern triggering: TRIG_PATTERN_EQ, TRIG_PATTERN_NE, TRIG_PATTERN_ABOVE, TRIG_PATTERN_BELOW

Use the cbSetTrigger() LowThreshold argument to set the pattern value. The pattern is a number between 0 and 15.
Use the cbSetTrigger() HighThreshold argument to set the port mask. Set the value of each bit to 1 to include it in the pattern to detect, or 0 to exclude it from the pattern.

External digital (TTL) hardware input and output triggering is supported. Use the ITRIG pin to trigger input scans, and the OTRIG pin to trigger output scans.

Timer operations do not support pattern trigger types.

Retriggering is supported. For information about how to set up repetitive trigger events, refer to Retriggering in the Hardware Considerations section below.

## DAQ Input

UL: cbDaqInScan()

UL for .NET: DaqInScan()

Python for Windows: daq_in_scan()

Options

BACKGROUND, BLOCKIO, CONTINUOUS, EXTCLOCK, EXTTRIGGER, HIGHRESRATE, NOCALIBRATEDATA, NOCLEAR, RETRIGMODE, SCALEDATA

ChanTypeArray

ANALOG, ANALOG_DIFF, ANALOG_SE, CTR, DIGITAL

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

ChanArray

ANALOG: 0 to 7

DIGITAL: AUXPORT

CTR: 0 to 1 (general purpose), 2 to 3 (encoder)

Rate

USB-1808: 50 kS/s max

USB-1808X: 200 kS/s max

GainArray

ANALOG only; ignore for other ChanTypeArray values.

BIP10VOLTS (±10 volts) | UNI10VOLTS (0 to 10 volts)
BIP5VOLTS (±5 volts) | UNI5VOLTS (0 to 5 volts)

## DAQ Triggering

UL: cbDaqSetTrigger()

UL for .NET: DaqSetTrigger()

Python for Windows: daq_set_trigger()

TrigSource

TRIG_EXTTTL, TRIG_DIGPATTERN

TrigSense

ABOVE_LEVEL, BELOW_LEVEL, EQ_LEVEL, NE_LEVEL, FALLING_EDGE, RISING_EDGE, HIGH_LEVEL, LOW_LEVEL

TrigEvent

START_EVENT

## DAQ Output

UL: cbDaqOutScan()

UL for .NET: DaqOutScan()

Python for Windows: daq_out_scan()

Options

BACKGROUND, CONTINUOUS, EXTCLOCK, EXTTRIGGER, HIGHRESRATE, NOCALIBRATEDATA, RETRIGMODE, SCALEDATA, SIMULTANEOUS

ChanType

ANALOG, DIGITAL

ChanArray

ANALOG: 0 to 1

DIGITAL: AUXPORT

Rate

USB-1808: 125 kS/s max

USB-1808X: 500 kS/s max

Range

BIP10VOLTS (±10 volts)

## Event Notification

Functions

UL: cbEnableEvent() cbDisableEvent()

UL for .NET: EnableEvent() DisableEvent()

Python for Windows: enable_event(), disable_event()

Event types

UL: ON_DATA_AVAILABLE, ON_END_OF_INPUT_SCAN, ON_END_OF_OUTPUT_SCAN, ON_SCAN_ERROR

UL for .NET: OnDataAvailable, OnEndOfInputScan, OnEndOfOutputScan, OnScanError

## Miscellaneous

Functions

UL: cbFlashLED()

UL for .NET: FlashLED()

Python for Windows: flash_led()

Causes the LED on a USB device to blink. When you have several USB devices connected, use this function to identify a particular device.

## 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 Factory Serial No. (read only)

Identifier

Identifier text box

Input mode

Independent SE and DIFF buttons for Ch 0 through Ch 7

Set All Single-Ended button

Set All Differential button

Hardware version

Listed as Firmware Version (read only)

Listed as FPGA Version (read only)

#### Programmable API Functions

Factory serial number

UL: cbGetConfigString()

ConfigItem = BIDEVSERIALNUM

UL for .NET: GetDeviceSerialNum()

Python for Windows: get_config_string()

config_item = DEVSERIALNUM

Identifier

UL: cbGetConfig()

ConfigItem = BIUSERDEVID

maxConfigLen = up to 64 characters

UL for .Net: GetUserDeviceId(), SetUserDeviceId()

Python for Windows: get_config_string(), set_config_string()

config_item = USERDEVID

max_config_len = up to 64 characters

Input mode

UL: cbAChanInputMode(), cbAInputMode()

UL for .NET: AChanInputMode(), AInputMode()

Python for Windows: a_chan_input_mode(), a_input_mode

Pattern trigger port

UL: cbGetConfig(), cbSetConfig()

ConfigItem = BIPATTERNTRIGPORT

UL for .Net: GetPatternTrigPort(), SetPatternTrigPort()

Python for Windows: get_config(), set_config()

config_item = PATTERNTRIGPORT

config_val = DigitalPortType

Retrigger count

UL: cbGetConfig(), cbSetConfig()

ConfigItem = BIDITRIGCOUNT, BIDOTRIGCOUNT

Use these ConfigItems when the RETRIGMODE scanOption is enabled.

UL for .Net: GetDiRetrigCount(), SetDiRetrigCount(), GetDoRetrigCount(), SetDoRetrigCount()

Use these methods when MccDaq.ScanOptions.RetrigMode is set.

Python for Windows: get_config(), set_config()

config_item = DITRIGCOUNT, DOTRIGCOUNT

Use these config_item when the RETRIGMODE option is enabled.

Hardware version

UL: cbGetConfigString()

ConfigItem = BIDEVVERSION

DevNum = VER_FW_MAIN

DevNum = VER_FPGA

UL for .NET: GetDeviceVersion()

Type = VersionType.FW_MAIN

Type = VersionType.FPGA

Python for Windows: get_config_string()

config_item = DEVVERSION

dev_num = MAIN

dev_num = FPGA

## Hardware Considerations

##### Channel-gain queue

The channel-gain queue is limited to 8 elements. The channel gains may be any valid value. The channels must be unique and listed in consecutive order; duplicate channel are not allowed.

##### HIGHRESRATE

Specify the HIGHRESRATE scan option to acquire data at a high resolution rate. When specified, the rate at which samples are acquired is in "samples per 1,000 seconds per channel".

##### Retriggering

Use the RETRIGMODE scan option to set up repetitive trigger events for each subsystem. Set the trigger count with a cbSetConfig() ConfigItem. Retriggering is not supported by pattern trigger types.

- Analog I/O operations: use RETRIGMODE with analog scan functions; set the A/D trigger count with the BIADTRIGCOUNT ConfigItem, and the D/A trigger count with the BIDATRIGCOUNT ConfigItem. Python users: set the trigger counts with the ADTRIGCOUNT and DATRIGCOUNT config_items.
  Set the count value to an integer multiple of the number of channels in the scan to ensure that the entire buffer, or the portion of the buffer defined by BIADTRIGCOUNT or BIDACTRIGCOUNT, will contain updated data.
- Digital I/O operations: Use RETRIGMODE() with digital scan functions; set the retrigger count with the BIDITRIGCOUNT and BIDOTRIGCOUNT ConfigItems. Python users, set the retrigger count with DITRIGCOUNT and DOTRIGCOUNT config_items.
- Counter input operations: Use RETRIGMODE with counter scan functions. Set the trigger count with the BICTRTRIGCOUNT ConfigItem. Python users, set the retrigger count with CTRTRIGCOUNT config_item.

##### Digital scanning

The entire digital port must be configured for either input or output when scanning.

##### Triggering timer operations

The external trigger can be used to trigger the timer, either independent of the scan or as part of the scan. Use cbPulseOutStart() with the ExtTrigger option to trigger the timer when a scan is not running.

##### Output scan restriction

You cannot access cbSetTrigger()/ SetTrigger() or call BIUSERDEVID while an analog output scan is in progress.

##### Retrieving input data from the Windows buffer

The USB-1808 Series are high resolution (18-bit) devices. Use cbWinBufAlloc32()/WinBufAlloc32Ex() to specify the buffer size when scanning data, and cbWinBufToArray32()/WinBufToArray32() to retrieve data from the buffer.