diff --git a/wpilibc/src/main/native/cpp/PWMVictorSPX.cpp b/wpilibc/src/main/native/cpp/PWMVictorSPX.cpp new file mode 100644 index 0000000000..c8ff1f6b73 --- /dev/null +++ b/wpilibc/src/main/native/cpp/PWMVictorSPX.cpp @@ -0,0 +1,40 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) 2008-2017 FIRST. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +#include "PWMVictorSPX.h" + +#include + +using namespace frc; + +/** + * Construct a PWMVictorSPX connected via PWM. + * + * @param channel The PWM channel that the PWMVictorSPX is attached to. 0-9 are + * on-board, 10-19 are on the MXP port + */ +PWMVictorSPX::PWMVictorSPX(int channel) : PWMSpeedController(channel) { + /* Note that the PWMVictorSPX uses the following bounds for PWM values. These + * values should work reasonably well for most controllers, but if users + * experience issues such as asymmetric behavior around the deadband or + * inability to saturate the controller in either direction, calibration is + * recommended. The calibration procedure can be found in the VictorSPX User + * Manual available from Cross The Road Electronics. + * 2.004ms = full "forward" + * 1.52ms = the "high end" of the deadband range + * 1.50ms = center of the deadband range (off) + * 1.48ms = the "low end" of the deadband range + * 0.997ms = full "reverse" + */ + SetBounds(2.004, 1.52, 1.50, 1.48, .997); + SetPeriodMultiplier(kPeriodMultiplier_1X); + SetSpeed(0.0); + SetZeroLatch(); + + // HAL_Report(HALUsageReporting::kResourceType_PWMVictorSPX, GetChannel()); + SetName("PWMVictorSPX", GetChannel()); +} diff --git a/wpilibc/src/main/native/include/PWMVictorSPX.h b/wpilibc/src/main/native/include/PWMVictorSPX.h new file mode 100644 index 0000000000..52ea5d4a20 --- /dev/null +++ b/wpilibc/src/main/native/include/PWMVictorSPX.h @@ -0,0 +1,23 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) 2008-2017 FIRST. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +#pragma once + +#include "PWMSpeedController.h" + +namespace frc { + +/** + * Cross the Road Electronics (CTRE) Victor SPX Speed Controller with PWM + * control. + */ +class PWMVictorSPX : public PWMSpeedController { + public: + explicit PWMVictorSPX(int channel); +}; + +} // namespace frc diff --git a/wpilibc/src/main/native/include/WPILib.h b/wpilibc/src/main/native/include/WPILib.h index 2b9e6698a9..2b8df7c22b 100644 --- a/wpilibc/src/main/native/include/WPILib.h +++ b/wpilibc/src/main/native/include/WPILib.h @@ -63,6 +63,7 @@ #include "PWM.h" #include "PWMSpeedController.h" #include "PWMTalonSRX.h" +#include "PWMVictorSPX.h" #include "PowerDistributionPanel.h" #include "Preferences.h" #include "Relay.h" diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/PWMVictorSPX.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/PWMVictorSPX.java new file mode 100644 index 0000000000..51b7049563 --- /dev/null +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/PWMVictorSPX.java @@ -0,0 +1,46 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) 2008-2017 FIRST. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +package edu.wpi.first.wpilibj; + +//import edu.wpi.first.wpilibj.hal.FRCNetComm.tResourceType; +//import edu.wpi.first.wpilibj.hal.HAL; + +/** + * Cross the Road Electronics (CTRE) Victor SPX Speed Controller with PWM control. + */ +public class PWMVictorSPX extends PWMSpeedController { + + /** + * Constructor for a PWMVictorSPX connected via PWM. + * + *

Note that the PWMVictorSPX uses the following bounds for PWM values. These values should + * work reasonably well for most controllers, but if users experience issues such as asymmetric + * behavior around the deadband or inability to saturate the controller in either direction, + * calibration is recommended. The calibration procedure can be found in the VictorSPX User + * Manual available from CTRE. + * + *

- 2.0004ms = full "forward" - 1.52ms = the "high end" of the deadband range - 1.50ms = + * center + * of the deadband range (off) - 1.48ms = the "low end" of the deadband range - .997ms = full + * "reverse" + * + * @param channel The PWM channel that the PWMVictorSPX is attached to. 0-9 are on-board, 10-19 + * are on the MXP port + */ + public PWMVictorSPX(final int channel) { + super(channel); + + setBounds(2.004, 1.52, 1.50, 1.48, .997); + setPeriodMultiplier(PeriodMultiplier.k1X); + setSpeed(0.0); + setZeroLatch(); + + //HAL.report(tResourceType.kResourceType_PWMVictorSPX, getChannel()); + setName("PWMVictorSPX", getChannel()); + } +}