WPILibC++ 2023.4.3
PWM Output Functions

Functions

HAL_DigitalHandle HAL_InitializePWMPort (HAL_PortHandle portHandle, const char *allocationLocation, int32_t *status)
 Initializes a PWM port. More...
 
void HAL_FreePWMPort (HAL_DigitalHandle pwmPortHandle, int32_t *status)
 Frees a PWM port. More...
 
HAL_Bool HAL_CheckPWMChannel (int32_t channel)
 Checks if a pwm channel is valid. More...
 
void HAL_SetPWMConfig (HAL_DigitalHandle pwmPortHandle, double maxPwm, double deadbandMaxPwm, double centerPwm, double deadbandMinPwm, double minPwm, int32_t *status)
 Sets the configuration settings for the PWM channel. More...
 
void HAL_SetPWMConfigRaw (HAL_DigitalHandle pwmPortHandle, int32_t maxPwm, int32_t deadbandMaxPwm, int32_t centerPwm, int32_t deadbandMinPwm, int32_t minPwm, int32_t *status)
 Sets the raw configuration settings for the PWM channel. More...
 
void HAL_GetPWMConfigRaw (HAL_DigitalHandle pwmPortHandle, int32_t *maxPwm, int32_t *deadbandMaxPwm, int32_t *centerPwm, int32_t *deadbandMinPwm, int32_t *minPwm, int32_t *status)
 Gets the raw pwm configuration settings for the PWM channel. More...
 
void HAL_SetPWMEliminateDeadband (HAL_DigitalHandle pwmPortHandle, HAL_Bool eliminateDeadband, int32_t *status)
 Sets if the FPGA should output the center value if the input value is within the deadband. More...
 
HAL_Bool HAL_GetPWMEliminateDeadband (HAL_DigitalHandle pwmPortHandle, int32_t *status)
 Gets the current eliminate deadband value. More...
 
void HAL_SetPWMRaw (HAL_DigitalHandle pwmPortHandle, int32_t value, int32_t *status)
 Sets a PWM channel to the desired value. More...
 
void HAL_SetPWMSpeed (HAL_DigitalHandle pwmPortHandle, double speed, int32_t *status)
 Sets a PWM channel to the desired scaled value. More...
 
void HAL_SetPWMPosition (HAL_DigitalHandle pwmPortHandle, double position, int32_t *status)
 Sets a PWM channel to the desired position value. More...
 
void HAL_SetPWMDisabled (HAL_DigitalHandle pwmPortHandle, int32_t *status)
 Sets a PWM channel to be disabled. More...
 
int32_t HAL_GetPWMRaw (HAL_DigitalHandle pwmPortHandle, int32_t *status)
 Gets a value from a PWM channel. More...
 
double HAL_GetPWMSpeed (HAL_DigitalHandle pwmPortHandle, int32_t *status)
 Gets a scaled value from a PWM channel. More...
 
double HAL_GetPWMPosition (HAL_DigitalHandle pwmPortHandle, int32_t *status)
 Gets a position value from a PWM channel. More...
 
void HAL_LatchPWMZero (HAL_DigitalHandle pwmPortHandle, int32_t *status)
 Forces a PWM signal to go to 0 temporarily. More...
 
void HAL_SetPWMPeriodScale (HAL_DigitalHandle pwmPortHandle, int32_t squelchMask, int32_t *status)
 Sets how how often the PWM signal is squelched, thus scaling the period. More...
 
int32_t HAL_GetPWMLoopTiming (int32_t *status)
 Gets the loop timing of the PWM system. More...
 
uint64_t HAL_GetPWMCycleStartTime (int32_t *status)
 Gets the pwm starting cycle time. More...
 

Detailed Description

Function Documentation

◆ HAL_CheckPWMChannel()

HAL_Bool HAL_CheckPWMChannel ( int32_t  channel)

Checks if a pwm channel is valid.

Parameters
channelthe channel to check
Returns
true if the channel is valid, otherwise false

◆ HAL_FreePWMPort()

void HAL_FreePWMPort ( HAL_DigitalHandle  pwmPortHandle,
int32_t *  status 
)

Frees a PWM port.

Parameters
[in]pwmPortHandlethe pwm handle
[out]statusError status variable. 0 on success.

◆ HAL_GetPWMConfigRaw()

void HAL_GetPWMConfigRaw ( HAL_DigitalHandle  pwmPortHandle,
int32_t *  maxPwm,
int32_t *  deadbandMaxPwm,
int32_t *  centerPwm,
int32_t *  deadbandMinPwm,
int32_t *  minPwm,
int32_t *  status 
)

Gets the raw pwm configuration settings for the PWM channel.

Values are in raw FPGA units. These units have the potential to change for any FPGA release.

Parameters
[in]pwmPortHandlethe PWM handle
[in]maxPwmthe maximum PWM value
[in]deadbandMaxPwmthe high range of the center deadband
[in]centerPwmthe center PWM value
[in]deadbandMinPwmthe low range of the center deadband
[in]minPwmthe minimum PWM value
[out]statusError status variable. 0 on success.

◆ HAL_GetPWMCycleStartTime()

uint64_t HAL_GetPWMCycleStartTime ( int32_t *  status)

Gets the pwm starting cycle time.

This time is relative to the FPGA time.

Parameters
[out]statusError status variable. 0 on success.
Returns
the pwm cycle start time

◆ HAL_GetPWMEliminateDeadband()

HAL_Bool HAL_GetPWMEliminateDeadband ( HAL_DigitalHandle  pwmPortHandle,
int32_t *  status 
)

Gets the current eliminate deadband value.

Parameters
[in]pwmPortHandlethe PWM handle
[out]statusError status variable. 0 on success.
Returns
true if set, otherwise false

◆ HAL_GetPWMLoopTiming()

int32_t HAL_GetPWMLoopTiming ( int32_t *  status)

Gets the loop timing of the PWM system.

Parameters
[out]statusError status variable. 0 on success.
Returns
the loop time

◆ HAL_GetPWMPosition()

double HAL_GetPWMPosition ( HAL_DigitalHandle  pwmPortHandle,
int32_t *  status 
)

Gets a position value from a PWM channel.

The values range from 0 to 1.

Parameters
[in]pwmPortHandlethe PWM handle
[out]statusError status variable. 0 on success.
Returns
the current positional PWM value

◆ HAL_GetPWMRaw()

int32_t HAL_GetPWMRaw ( HAL_DigitalHandle  pwmPortHandle,
int32_t *  status 
)

Gets a value from a PWM channel.

The values are in raw FPGA units, and have the potential to change with any FPGA release.

Parameters
[in]pwmPortHandlethe PWM handle
[out]statusError status variable. 0 on success.
Returns
the current raw PWM value

◆ HAL_GetPWMSpeed()

double HAL_GetPWMSpeed ( HAL_DigitalHandle  pwmPortHandle,
int32_t *  status 
)

Gets a scaled value from a PWM channel.

The values range from -1 to 1.

Parameters
[in]pwmPortHandlethe PWM handle
[out]statusError status variable. 0 on success.
Returns
the current speed PWM value

◆ HAL_InitializePWMPort()

HAL_DigitalHandle HAL_InitializePWMPort ( HAL_PortHandle  portHandle,
const char *  allocationLocation,
int32_t *  status 
)

Initializes a PWM port.

Parameters
[in]portHandlethe port to initialize
[in]allocationLocationthe location where the allocation is occurring (can be null)
[out]statusError status variable. 0 on success.
Returns
the created pwm handle

◆ HAL_LatchPWMZero()

void HAL_LatchPWMZero ( HAL_DigitalHandle  pwmPortHandle,
int32_t *  status 
)

Forces a PWM signal to go to 0 temporarily.

Parameters
[in]pwmPortHandlethe PWM handle.
[out]statusError status variable. 0 on success.

◆ HAL_SetPWMConfig()

void HAL_SetPWMConfig ( HAL_DigitalHandle  pwmPortHandle,
double  maxPwm,
double  deadbandMaxPwm,
double  centerPwm,
double  deadbandMinPwm,
double  minPwm,
int32_t *  status 
)

Sets the configuration settings for the PWM channel.

All values are in milliseconds.

Parameters
[in]pwmPortHandlethe PWM handle
[in]maxPwmthe maximum PWM value
[in]deadbandMaxPwmthe high range of the center deadband
[in]centerPwmthe center PWM value
[in]deadbandMinPwmthe low range of the center deadband
[in]minPwmthe minimum PWM value
[out]statusError status variable. 0 on success.

◆ HAL_SetPWMConfigRaw()

void HAL_SetPWMConfigRaw ( HAL_DigitalHandle  pwmPortHandle,
int32_t  maxPwm,
int32_t  deadbandMaxPwm,
int32_t  centerPwm,
int32_t  deadbandMinPwm,
int32_t  minPwm,
int32_t *  status 
)

Sets the raw configuration settings for the PWM channel.

We recommend using HAL_SetPWMConfig() instead, as those values are properly scaled. Usually used for values grabbed by HAL_GetPWMConfigRaw().

Values are in raw FPGA units.

Parameters
[in]pwmPortHandlethe PWM handle
[in]maxPwmthe maximum PWM value
[in]deadbandMaxPwmthe high range of the center deadband
[in]centerPwmthe center PWM value
[in]deadbandMinPwmthe low range of the center deadband
[in]minPwmthe minimum PWM value
[out]statusError status variable. 0 on success.

◆ HAL_SetPWMDisabled()

void HAL_SetPWMDisabled ( HAL_DigitalHandle  pwmPortHandle,
int32_t *  status 
)

Sets a PWM channel to be disabled.

The channel is disabled until the next time it is set. Note this is different from just setting a 0 speed, as this will actively stop all signaling on the channel.

Parameters
[in]pwmPortHandlethe PWM handle.
[out]statusError status variable. 0 on success.

◆ HAL_SetPWMEliminateDeadband()

void HAL_SetPWMEliminateDeadband ( HAL_DigitalHandle  pwmPortHandle,
HAL_Bool  eliminateDeadband,
int32_t *  status 
)

Sets if the FPGA should output the center value if the input value is within the deadband.

Parameters
[in]pwmPortHandlethe PWM handle
[in]eliminateDeadbandtrue to eliminate deadband, otherwise false
[out]statusError status variable. 0 on success.

◆ HAL_SetPWMPeriodScale()

void HAL_SetPWMPeriodScale ( HAL_DigitalHandle  pwmPortHandle,
int32_t  squelchMask,
int32_t *  status 
)

Sets how how often the PWM signal is squelched, thus scaling the period.

Parameters
[in]pwmPortHandlethe PWM handle.
[in]squelchMaskthe 2-bit mask of outputs to squelch
[out]statusError status variable. 0 on success.

◆ HAL_SetPWMPosition()

void HAL_SetPWMPosition ( HAL_DigitalHandle  pwmPortHandle,
double  position,
int32_t *  status 
)

Sets a PWM channel to the desired position value.

The values range from 0 to 1 and the period is controlled by the PWM Period and MinHigh registers.

Parameters
[in]pwmPortHandlethe PWM handle
[in]positionthe positional PWM value to set
[out]statusError status variable. 0 on success.

◆ HAL_SetPWMRaw()

void HAL_SetPWMRaw ( HAL_DigitalHandle  pwmPortHandle,
int32_t  value,
int32_t *  status 
)

Sets a PWM channel to the desired value.

The values are in raw FPGA units, and have the potential to change with any FPGA release.

Parameters
[in]pwmPortHandlethe PWM handle
[in]valuethe PWM value to set
[out]statusError status variable. 0 on success.

◆ HAL_SetPWMSpeed()

void HAL_SetPWMSpeed ( HAL_DigitalHandle  pwmPortHandle,
double  speed,
int32_t *  status 
)

Sets a PWM channel to the desired scaled value.

The values range from -1 to 1 and the period is controlled by the PWM Period and MinHigh registers.

Parameters
[in]pwmPortHandlethe PWM handle
[in]speedthe scaled PWM value to set
[out]statusError status variable. 0 on success.