WPILibC++ 2023.4.3
Analog Input Functions

Functions

HAL_AnalogInputHandle HAL_InitializeAnalogInputPort (HAL_PortHandle portHandle, const char *allocationLocation, int32_t *status)
 Initializes the analog input port using the given port object. More...
 
void HAL_FreeAnalogInputPort (HAL_AnalogInputHandle analogPortHandle)
 Frees an analog input port. More...
 
HAL_Bool HAL_CheckAnalogModule (int32_t module)
 Checks that the analog module number is valid. More...
 
HAL_Bool HAL_CheckAnalogInputChannel (int32_t channel)
 Checks that the analog output channel number is valid. More...
 
void HAL_SetAnalogInputSimDevice (HAL_AnalogInputHandle handle, HAL_SimDeviceHandle device)
 Indicates the analog input is used by a simulated device. More...
 
void HAL_SetAnalogSampleRate (double samplesPerSecond, int32_t *status)
 Sets the sample rate. More...
 
double HAL_GetAnalogSampleRate (int32_t *status)
 Gets the current sample rate. More...
 
void HAL_SetAnalogAverageBits (HAL_AnalogInputHandle analogPortHandle, int32_t bits, int32_t *status)
 Sets the number of averaging bits. More...
 
int32_t HAL_GetAnalogAverageBits (HAL_AnalogInputHandle analogPortHandle, int32_t *status)
 Gets the number of averaging bits. More...
 
void HAL_SetAnalogOversampleBits (HAL_AnalogInputHandle analogPortHandle, int32_t bits, int32_t *status)
 Sets the number of oversample bits. More...
 
int32_t HAL_GetAnalogOversampleBits (HAL_AnalogInputHandle analogPortHandle, int32_t *status)
 Gets the number of oversample bits. More...
 
int32_t HAL_GetAnalogValue (HAL_AnalogInputHandle analogPortHandle, int32_t *status)
 Gets a sample straight from the channel on this module. More...
 
int32_t HAL_GetAnalogAverageValue (HAL_AnalogInputHandle analogPortHandle, int32_t *status)
 Gets a sample from the output of the oversample and average engine for the channel. More...
 
int32_t HAL_GetAnalogVoltsToValue (HAL_AnalogInputHandle analogPortHandle, double voltage, int32_t *status)
 Converts a voltage to a raw value for a specified channel. More...
 
double HAL_GetAnalogVoltage (HAL_AnalogInputHandle analogPortHandle, int32_t *status)
 Gets a scaled sample straight from the channel on this module. More...
 
double HAL_GetAnalogAverageVoltage (HAL_AnalogInputHandle analogPortHandle, int32_t *status)
 Gets a scaled sample from the output of the oversample and average engine for the channel. More...
 
int32_t HAL_GetAnalogLSBWeight (HAL_AnalogInputHandle analogPortHandle, int32_t *status)
 Gets the factory scaling least significant bit weight constant. More...
 
int32_t HAL_GetAnalogOffset (HAL_AnalogInputHandle analogPortHandle, int32_t *status)
 Gets the factory scaling offset constant. More...
 
double HAL_GetAnalogValueToVolts (HAL_AnalogInputHandle analogPortHandle, int32_t rawValue, int32_t *status)
 Get the analog voltage from a raw value. More...
 

Detailed Description

Function Documentation

◆ HAL_CheckAnalogInputChannel()

HAL_Bool HAL_CheckAnalogInputChannel ( int32_t  channel)

Checks that the analog output channel number is valid.

Verifies that the analog channel number is one of the legal channel numbers. Channel numbers are 0-based.

Parameters
channelThe analog output channel number.
Returns
Analog channel is valid

◆ HAL_CheckAnalogModule()

HAL_Bool HAL_CheckAnalogModule ( int32_t  module)

Checks that the analog module number is valid.

Parameters
moduleThe analog module number.
Returns
Analog module is valid and present

◆ HAL_FreeAnalogInputPort()

void HAL_FreeAnalogInputPort ( HAL_AnalogInputHandle  analogPortHandle)

Frees an analog input port.

Parameters
analogPortHandleHandle to the analog port.

◆ HAL_GetAnalogAverageBits()

int32_t HAL_GetAnalogAverageBits ( HAL_AnalogInputHandle  analogPortHandle,
int32_t *  status 
)

Gets the number of averaging bits.

This gets the number of averaging bits from the FPGA. The actual number of averaged samples is 2**bits. The averaging is done automatically in the FPGA.

Parameters
[in]analogPortHandleHandle to the analog port to use.
[out]statusthe error code, or 0 for success
Returns
Bits to average.

◆ HAL_GetAnalogAverageValue()

int32_t HAL_GetAnalogAverageValue ( HAL_AnalogInputHandle  analogPortHandle,
int32_t *  status 
)

Gets a sample from the output of the oversample and average engine for the channel.

The sample is 12-bit + the value configured in SetOversampleBits(). The value configured in SetAverageBits() will cause this value to be averaged 2**bits number of samples. This is not a sliding window. The sample will not change until 2**(OversamplBits + AverageBits) samples have been acquired from the module on this channel. Use GetAverageVoltage() to get the analog value in calibrated units.

Parameters
[in]analogPortHandleHandle to the analog port to use.
[out]statusthe error code, or 0 for success
Returns
A sample from the oversample and average engine for the channel.

◆ HAL_GetAnalogAverageVoltage()

double HAL_GetAnalogAverageVoltage ( HAL_AnalogInputHandle  analogPortHandle,
int32_t *  status 
)

Gets a scaled sample from the output of the oversample and average engine for the channel.

The value is scaled to units of Volts using the calibrated scaling data from GetLSBWeight() and GetOffset(). Using oversampling will cause this value to be higher resolution, but it will update more slowly. Using averaging will cause this value to be more stable, but it will update more slowly.

Parameters
[in]analogPortHandleHandle to the analog port to use.
[out]statusthe error code, or 0 for success
Returns
A scaled sample from the output of the oversample and average engine for the channel.

◆ HAL_GetAnalogLSBWeight()

int32_t HAL_GetAnalogLSBWeight ( HAL_AnalogInputHandle  analogPortHandle,
int32_t *  status 
)

Gets the factory scaling least significant bit weight constant.

The least significant bit weight constant for the channel that was calibrated in manufacturing and stored in an eeprom in the module.

Volts = ((LSB_Weight * 1e-9) * raw) - (Offset * 1e-9)

Parameters
[in]analogPortHandleHandle to the analog port to use.
[out]statusthe error code, or 0 for success
Returns
Least significant bit weight.

◆ HAL_GetAnalogOffset()

int32_t HAL_GetAnalogOffset ( HAL_AnalogInputHandle  analogPortHandle,
int32_t *  status 
)

Gets the factory scaling offset constant.

The offset constant for the channel that was calibrated in manufacturing and stored in an eeprom in the module.

Volts = ((LSB_Weight * 1e-9) * raw) - (Offset * 1e-9)

Parameters
[in]analogPortHandleHandle to the analog port to use.
[out]statusError status variable. 0 on success.
Returns
Offset constant.

◆ HAL_GetAnalogOversampleBits()

int32_t HAL_GetAnalogOversampleBits ( HAL_AnalogInputHandle  analogPortHandle,
int32_t *  status 
)

Gets the number of oversample bits.

This gets the number of oversample bits from the FPGA. The actual number of oversampled values is 2**bits. The oversampling is done automatically in the FPGA.

Parameters
[in]analogPortHandleHandle to the analog port to use.
[out]statusthe error code, or 0 for success
Returns
Bits to oversample.

◆ HAL_GetAnalogSampleRate()

double HAL_GetAnalogSampleRate ( int32_t *  status)

Gets the current sample rate.

This assumes one entry in the scan list. This is a global setting for the Athena and effects all channels.

Parameters
[out]statusthe error code, or 0 for success
Returns
Sample rate.

◆ HAL_GetAnalogValue()

int32_t HAL_GetAnalogValue ( HAL_AnalogInputHandle  analogPortHandle,
int32_t *  status 
)

Gets a sample straight from the channel on this module.

The sample is a 12-bit value representing the 0V to 5V range of the A/D converter in the module. The units are in A/D converter codes. Use GetVoltage() to get the analog value in calibrated units.

Parameters
[in]analogPortHandleHandle to the analog port to use.
[out]statusthe error code, or 0 for success
Returns
A sample straight from the channel on this module.

◆ HAL_GetAnalogValueToVolts()

double HAL_GetAnalogValueToVolts ( HAL_AnalogInputHandle  analogPortHandle,
int32_t  rawValue,
int32_t *  status 
)

Get the analog voltage from a raw value.

Parameters
[in]analogPortHandleHandle to the analog port the values were read from.
[in]rawValueThe raw analog value
[out]statusError status variable. 0 on success.
Returns
The voltage relating to the value

◆ HAL_GetAnalogVoltage()

double HAL_GetAnalogVoltage ( HAL_AnalogInputHandle  analogPortHandle,
int32_t *  status 
)

Gets a scaled sample straight from the channel on this module.

The value is scaled to units of Volts using the calibrated scaling data from GetLSBWeight() and GetOffset().

Parameters
[in]analogPortHandleHandle to the analog port to use.
[out]statusthe error code, or 0 for success
Returns
A scaled sample straight from the channel on this module.

◆ HAL_GetAnalogVoltsToValue()

int32_t HAL_GetAnalogVoltsToValue ( HAL_AnalogInputHandle  analogPortHandle,
double  voltage,
int32_t *  status 
)

Converts a voltage to a raw value for a specified channel.

This process depends on the calibration of each channel, so the channel must be specified.

Todo:
This assumes raw values. Oversampling not supported as is.
Parameters
[in]analogPortHandleHandle to the analog port to use.
[in]voltageThe voltage to convert.
[out]statusthe error code, or 0 for success
Returns
The raw value for the channel.

◆ HAL_InitializeAnalogInputPort()

HAL_AnalogInputHandle HAL_InitializeAnalogInputPort ( HAL_PortHandle  portHandle,
const char *  allocationLocation,
int32_t *  status 
)

Initializes the analog input port using the given port object.

Parameters
[in]portHandleHandle to the port to initialize.
[in]allocationLocationthe location where the allocation is occurring (can be null)
[out]statusthe error code, or 0 for success
Returns
the created analog input handle

◆ HAL_SetAnalogAverageBits()

void HAL_SetAnalogAverageBits ( HAL_AnalogInputHandle  analogPortHandle,
int32_t  bits,
int32_t *  status 
)

Sets the number of averaging bits.

This sets the number of averaging bits. The actual number of averaged samples is 2**bits. Use averaging to improve the stability of your measurement at the expense of sampling rate. The averaging is done automatically in the FPGA.

Parameters
[in]analogPortHandleHandle to the analog port to configure.
[in]bitsNumber of bits to average.
[out]statusthe error code, or 0 for success

◆ HAL_SetAnalogInputSimDevice()

void HAL_SetAnalogInputSimDevice ( HAL_AnalogInputHandle  handle,
HAL_SimDeviceHandle  device 
)

Indicates the analog input is used by a simulated device.

Parameters
handlethe analog input handle
devicesimulated device handle

◆ HAL_SetAnalogOversampleBits()

void HAL_SetAnalogOversampleBits ( HAL_AnalogInputHandle  analogPortHandle,
int32_t  bits,
int32_t *  status 
)

Sets the number of oversample bits.

This sets the number of oversample bits. The actual number of oversampled values is 2**bits. Use oversampling to improve the resolution of your measurements at the expense of sampling rate. The oversampling is done automatically in the FPGA.

Parameters
[in]analogPortHandleHandle to the analog port to use.
[in]bitsNumber of bits to oversample.
[out]statusthe error code, or 0 for success

◆ HAL_SetAnalogSampleRate()

void HAL_SetAnalogSampleRate ( double  samplesPerSecond,
int32_t *  status 
)

Sets the sample rate.

This is a global setting for the Athena and effects all channels.

Parameters
[in]samplesPerSecondThe number of samples per channel per second.
[out]statusthe error code, or 0 for success