WPILibC++  2020.2.2-33-g65eab93
PWM Output Functions

Functions

HAL_DigitalHandle HAL_InitializePWMPort (HAL_PortHandle portHandle, 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
pwmPortHandlethe pwm handle

◆ 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
pwmPortHandlethe PWM handle
maxPwmthe maximum PWM value
deadbandMaxPwmthe high range of the center deadband
centerPwmthe center PWM value
deadbandMinPwmthe low range of the center deadband
minPwmthe minimum PWM value

◆ HAL_GetPWMCycleStartTime()

uint64_t HAL_GetPWMCycleStartTime ( int32_t *  status)

Gets the pwm starting cycle time.

This time is relative to the FPGA time.

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
pwmPortHandlethe PWM handle
Returns
true if set, otherwise false

◆ HAL_GetPWMLoopTiming()

int32_t HAL_GetPWMLoopTiming ( int32_t *  status)

Gets the loop timing of the PWM system.

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
pwmPortHandlethe PWM handle
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
pwmPortHandlethe PWM handle
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
pwmPortHandlethe PWM handle
Returns
the current speed PWM value

◆ HAL_InitializePWMPort()

HAL_DigitalHandle HAL_InitializePWMPort ( HAL_PortHandle  portHandle,
int32_t *  status 
)

Initializes a PWM port.

Parameters
portHandlethe port to initialize
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
pwmPortHandlethe PWM handle.

◆ 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
pwmPortHandlethe PWM handle
maxPwmthe maximum PWM value
deadbandMaxPwmthe high range of the center deadband
centerPwmthe center PWM value
deadbandMinPwmthe low range of the center deadband
minPwmthe minimum PWM value

◆ 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
pwmPortHandlethe PWM handle
maxPwmthe maximum PWM value
deadbandMaxPwmthe high range of the center deadband
centerPwmthe center PWM value
deadbandMinPwmthe low range of the center deadband
minPwmthe minimum PWM value

◆ 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 signalling on the channel.

Parameters
pwmPortHandlethe PWM handle.

◆ 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
pwmPortHandlethe PWM handle
eliminateDeadbandtrue to eliminate deadband, otherwise false

◆ 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
pwmPortHandlethe PWM handle.
squelchMaskthe 2-bit mask of outputs to squelch

◆ 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
pwmPortHandlethe PWM handle
valuethe positional PWM value to set

◆ 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
pwmPortHandlethe PWM handle
valuethe PWM value to set

◆ 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
pwmPortHandlethe PWM handle
valuethe scaled PWM value to set