diff --git a/wpilibc/src/main/native/cpp/DMC60.cpp b/wpilibc/src/main/native/cpp/DMC60.cpp new file mode 100644 index 0000000000..a122125aed --- /dev/null +++ b/wpilibc/src/main/native/cpp/DMC60.cpp @@ -0,0 +1,42 @@ +/*----------------------------------------------------------------------------*/ +/* 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 "DMC60.h" + +#include + +using namespace frc; + +/** + * Constructor for a Digilent DMC 60. + * + * @param channel The PWM channel that the DMC 60 is attached to. 0-9 are + * on-board, 10-19 are on the MXP port + */ +DMC60::DMC60(int channel) : PWMSpeedController(channel) { + /** + * Note that the DMC 60 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 DMC 60 User + * Manual available from Digilent. + * + * 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_VictorSP, GetChannel()); + SetName("DMC60", GetChannel()); +} diff --git a/wpilibc/src/main/native/include/DMC60.h b/wpilibc/src/main/native/include/DMC60.h new file mode 100644 index 0000000000..ea4e1089bc --- /dev/null +++ b/wpilibc/src/main/native/include/DMC60.h @@ -0,0 +1,22 @@ +/*----------------------------------------------------------------------------*/ +/* 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 { + +/** + * Digilent DMC 60 Speed Controller. + */ +class DMC60 : public PWMSpeedController { + public: + explicit DMC60(int channel); +}; + +} // namespace frc diff --git a/wpilibc/src/main/native/include/WPILib.h b/wpilibc/src/main/native/include/WPILib.h index 2b8df7c22b..faba3e8b58 100644 --- a/wpilibc/src/main/native/include/WPILib.h +++ b/wpilibc/src/main/native/include/WPILib.h @@ -37,6 +37,7 @@ #include "Compressor.h" #include "ControllerPower.h" #include "Counter.h" +#include "DMC60.h" #include "DigitalInput.h" #include "DigitalOutput.h" #include "DigitalSource.h" diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/DMC60.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/DMC60.java new file mode 100644 index 0000000000..9b6d5436c1 --- /dev/null +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/DMC60.java @@ -0,0 +1,45 @@ +/*----------------------------------------------------------------------------*/ +/* 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; + +/** + * Digilent DMC 60 Speed Controller. + */ +public class DMC60 extends PWMSpeedController { + + /** + * Constructor. + * + *

Note that the DMC 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 DMC 60 User Manual + * available from Digilent + * + *

- 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 - .997ms = + * full "reverse" + * + * @param channel The PWM channel that the DMC60 is attached to. 0-9 are + * on-board, 10-19 are on the MXP port + */ + public DMC60(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_VictorSP, getChannel()); + setName("DMC60", getChannel()); + } +}