diff --git a/libraries/AP_HAL_Linux/RCOutput_PCA9685.cpp b/libraries/AP_HAL_Linux/RCOutput_PCA9685.cpp index 4198df15cf..f64005ac14 100644 --- a/libraries/AP_HAL_Linux/RCOutput_PCA9685.cpp +++ b/libraries/AP_HAL_Linux/RCOutput_PCA9685.cpp @@ -48,7 +48,6 @@ * and https://github.com/adafruit/Adafruit-PWM-Servo-Driver-Library/issues/11 */ #define PCA9685_INTERNAL_CLOCK (1.04f * 25000000.f) -#define PCA9685_EXTERNAL_CLOCK 24576000.f using namespace Linux; @@ -57,7 +56,7 @@ using namespace Linux; extern const AP_HAL::HAL& hal; RCOutput_PCA9685::RCOutput_PCA9685(AP_HAL::OwnPtr dev, - bool external_clock, + uint32_t external_clock, uint8_t channel_offset, int16_t oe_pin_number) : _dev(std::move(dev)), @@ -68,10 +67,11 @@ RCOutput_PCA9685::RCOutput_PCA9685(AP_HAL::OwnPtr dev, _channel_offset(channel_offset), _oe_pin_number(oe_pin_number) { - if (_external_clock) - _osc_clock = PCA9685_EXTERNAL_CLOCK; - else + if (_external_clock > 0) { + _osc_clock = _external_clock; + } else { _osc_clock = PCA9685_INTERNAL_CLOCK; + } } RCOutput_PCA9685::~RCOutput_PCA9685() diff --git a/libraries/AP_HAL_Linux/RCOutput_PCA9685.h b/libraries/AP_HAL_Linux/RCOutput_PCA9685.h index c9bbb4c6c3..8e43aa2fa6 100644 --- a/libraries/AP_HAL_Linux/RCOutput_PCA9685.h +++ b/libraries/AP_HAL_Linux/RCOutput_PCA9685.h @@ -15,7 +15,7 @@ namespace Linux { class RCOutput_PCA9685 : public AP_HAL::RCOutput { public: RCOutput_PCA9685(AP_HAL::OwnPtr dev, - bool external_clock, + uint32_t external_clock, uint8_t channel_offset, int16_t oe_pin_number); @@ -42,7 +42,7 @@ private: uint16_t *_pulses_buffer; - bool _external_clock; + uint32_t _external_clock; bool _corking = false; uint8_t _channel_offset; int16_t _oe_pin_number;