WPILib 2012
WPILibRoboticsLibraryforFRC
|
#include <PWM.h>
Public Types | |
enum | PeriodMultiplier { kPeriodMultiplier_1X = 1, kPeriodMultiplier_2X = 2, kPeriodMultiplier_4X = 4 } |
Public Member Functions | |
PWM (UINT32 channel) | |
PWM (UINT8 moduleNumber, UINT32 channel) | |
virtual | ~PWM () |
virtual void | SetRaw (UINT8 value) |
virtual UINT8 | GetRaw () |
void | SetPeriodMultiplier (PeriodMultiplier mult) |
void | EnableDeadbandElimination (bool eliminateDeadband) |
void | SetBounds (INT32 max, INT32 deadbandMax, INT32 center, INT32 deadbandMin, INT32 min) |
UINT32 | GetChannel () |
UINT32 | GetModuleNumber () |
Protected Member Functions | |
virtual void | SetPosition (float pos) |
virtual float | GetPosition () |
virtual void | SetSpeed (float speed) |
virtual float | GetSpeed () |
Protected Attributes | |
bool | m_eliminateDeadband |
INT32 | m_maxPwm |
INT32 | m_deadbandMaxPwm |
INT32 | m_centerPwm |
INT32 | m_deadbandMinPwm |
INT32 | m_minPwm |
Static Protected Attributes | |
static const UINT32 | kDefaultPwmPeriod = 774 |
static const UINT32 | kDefaultMinPwmHigh = 102 |
static const INT32 | kPwmDisabled = 0 |
Friends | |
class | DigitalModule |
Class implements the PWM generation in the FPGA.
The values supplied as arguments for PWM outputs range from -1.0 to 1.0. They are mapped to the hardware dependent values, in this case 0-255 for the FPGA. Changes are immediately sent to the FPGA, and the update occurs at the next FPGA cycle. There is no delay.
As of revision 0.1.10 of the FPGA, the FPGA interprets the 0-255 values as follows:
PWM::PWM | ( | UINT32 | channel | ) | [explicit] |
PWM::PWM | ( | UINT8 | moduleNumber, |
UINT32 | channel | ||
) |
PWM::~PWM | ( | ) | [virtual] |
void PWM::EnableDeadbandElimination | ( | bool | eliminateDeadband | ) |
Optionally eliminate the deadband from a speed controller.
eliminateDeadband | If true, set the motor curve on the Jaguar to eliminate the deadband in the middle of the range. Otherwise, keep the full range without modifying any values. |
float PWM::GetPosition | ( | ) | [protected, virtual] |
Get the PWM value in terms of a position.
This is intended to be used by servos.
UINT8 PWM::GetRaw | ( | ) | [virtual] |
float PWM::GetSpeed | ( | ) | [protected, virtual] |
Get the PWM value in terms of speed.
This is intended to be used by speed controllers.
void PWM::SetBounds | ( | INT32 | max, |
INT32 | deadbandMax, | ||
INT32 | center, | ||
INT32 | deadbandMin, | ||
INT32 | min | ||
) |
Set the bounds on the PWM values. This sets the bounds on the PWM values for a particular each type of controller. The values determine the upper and lower speeds as well as the deadband bracket.
max | The Minimum pwm value |
deadbandMax | The high end of the deadband range |
center | The center speed (off) |
deadbandMin | The low end of the deadband range |
min | The minimum pwm value |
void PWM::SetPeriodMultiplier | ( | PeriodMultiplier | mult | ) |
Slow down the PWM signal for old devices.
mult | The period multiplier to apply to this channel |
void PWM::SetPosition | ( | float | pos | ) | [protected, virtual] |
Set the PWM value based on a position.
This is intended to be used by servos.
pos | The position to set the servo between 0.0 and 1.0. |
void PWM::SetRaw | ( | UINT8 | value | ) | [virtual] |
void PWM::SetSpeed | ( | float | speed | ) | [protected, virtual] |
Set the PWM value based on a speed.
This is intended to be used by speed controllers.
speed | The speed to set the speed controller between -1.0 and 1.0. |
Reimplemented in SafePWM.
const UINT32 PWM::kDefaultMinPwmHigh = 102 [static, protected] |
kDefaultMinPwmHigh is "ticks" where each tick is 6.525us
const UINT32 PWM::kDefaultPwmPeriod = 774 [static, protected] |
kDefaultPwmPeriod is "ticks" where each tick is 6.525us
kDefaultPwmPeriod is the 1x period (5.05 ms). In hardware, the period scaling is implemented as an output squelch to get longer periods for old devices.
Set to 5.05 ms period / 6.525us clock = 774