Browse Source

AP_HAL_Linux: RCOutput_Navio: allow to have other OE pin

While at it also rename enable_pin to follow the convention of starting
with underscore for private members.
mission-4.1.18
Lucas De Marchi 10 years ago committed by Andrew Tridgell
parent
commit
3beaf34aa1
  1. 2
      libraries/AP_HAL_Linux/HAL_Linux_Class.cpp
  2. 14
      libraries/AP_HAL_Linux/RCOutput_Navio.cpp
  3. 5
      libraries/AP_HAL_Linux/RCOutput_Navio.h

2
libraries/AP_HAL_Linux/HAL_Linux_Class.cpp

@ -94,7 +94,7 @@ static LinuxRCOutput_AioPRU rcoutDriver; @@ -94,7 +94,7 @@ static LinuxRCOutput_AioPRU rcoutDriver;
use the PCA9685 based RCOutput driver on Navio
*/
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO
static LinuxRCOutput_Navio rcoutDriver;
static LinuxRCOutput_Navio rcoutDriver(RPI_GPIO_27);
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ZYNQ
static LinuxRCOutput_ZYNQ rcoutDriver;
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BEBOP

14
libraries/AP_HAL_Linux/RCOutput_Navio.cpp

@ -47,15 +47,15 @@ @@ -47,15 +47,15 @@
using namespace Linux;
#define PWM_CHAN_COUNT 13
#define PCA9685_OUTPUT_ENABLE RPI_GPIO_27
static const AP_HAL::HAL& hal = AP_HAL_BOARD_DRIVER;
LinuxRCOutput_Navio::LinuxRCOutput_Navio():
LinuxRCOutput_Navio::LinuxRCOutput_Navio(uint8_t oe_pin_number) :
_i2c_sem(NULL),
enable_pin(NULL),
_enable_pin(NULL),
_frequency(50),
_pulses_buffer(new uint16_t[PWM_CHAN_COUNT])
_pulses_buffer(new uint16_t[PWM_CHAN_COUNT]),
_oe_pin_number(oe_pin_number)
{
}
@ -79,9 +79,9 @@ void LinuxRCOutput_Navio::init(void* machtnicht) @@ -79,9 +79,9 @@ void LinuxRCOutput_Navio::init(void* machtnicht)
set_freq(0, 50);
/* Enable PCA9685 PWM */
enable_pin = hal.gpio->channel(PCA9685_OUTPUT_ENABLE);
enable_pin->mode(HAL_GPIO_OUTPUT);
enable_pin->write(0);
_enable_pin = hal.gpio->channel(_oe_pin_number);
_enable_pin->mode(HAL_GPIO_OUTPUT);
_enable_pin->write(0);
}
void LinuxRCOutput_Navio::reset_all_channels()

5
libraries/AP_HAL_Linux/RCOutput_Navio.h

@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
class Linux::LinuxRCOutput_Navio : public AP_HAL::RCOutput {
public:
LinuxRCOutput_Navio();
LinuxRCOutput_Navio(uint8_t oe_pin_number);
~LinuxRCOutput_Navio();
void init(void* machtnichts);
void reset_all_channels();
@ -23,10 +23,11 @@ private: @@ -23,10 +23,11 @@ private:
void reset();
AP_HAL::Semaphore *_i2c_sem;
AP_HAL::DigitalSource *enable_pin;
AP_HAL::DigitalSource *_enable_pin;
uint16_t _frequency;
uint16_t *_pulses_buffer;
uint8_t _oe_pin_number;
};
#endif // __AP_HAL_LINUX_RCOUTPUT_NAVIO_H__

Loading…
Cancel
Save