mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-01-24 01:28:29 -04:00
AP_HAL_Linux: RCOutput_Navio: allow to have other offset
This commit is contained in:
parent
3beaf34aa1
commit
6c042b6666
@ -94,7 +94,7 @@ static LinuxRCOutput_AioPRU rcoutDriver;
|
|||||||
use the PCA9685 based RCOutput driver on Navio
|
use the PCA9685 based RCOutput driver on Navio
|
||||||
*/
|
*/
|
||||||
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO
|
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO
|
||||||
static LinuxRCOutput_Navio rcoutDriver(RPI_GPIO_27);
|
static LinuxRCOutput_Navio rcoutDriver(3, RPI_GPIO_27);
|
||||||
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ZYNQ
|
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ZYNQ
|
||||||
static LinuxRCOutput_ZYNQ rcoutDriver;
|
static LinuxRCOutput_ZYNQ rcoutDriver;
|
||||||
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BEBOP
|
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BEBOP
|
||||||
|
@ -50,11 +50,13 @@ using namespace Linux;
|
|||||||
|
|
||||||
static const AP_HAL::HAL& hal = AP_HAL_BOARD_DRIVER;
|
static const AP_HAL::HAL& hal = AP_HAL_BOARD_DRIVER;
|
||||||
|
|
||||||
LinuxRCOutput_Navio::LinuxRCOutput_Navio(uint8_t oe_pin_number) :
|
LinuxRCOutput_Navio::LinuxRCOutput_Navio(uint8_t channel_offset,
|
||||||
|
uint8_t oe_pin_number) :
|
||||||
_i2c_sem(NULL),
|
_i2c_sem(NULL),
|
||||||
_enable_pin(NULL),
|
_enable_pin(NULL),
|
||||||
_frequency(50),
|
_frequency(50),
|
||||||
_pulses_buffer(new uint16_t[PWM_CHAN_COUNT]),
|
_pulses_buffer(new uint16_t[PWM_CHAN_COUNT]),
|
||||||
|
_channel_offset(channel_offset),
|
||||||
_oe_pin_number(oe_pin_number)
|
_oe_pin_number(oe_pin_number)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -169,7 +171,7 @@ void LinuxRCOutput_Navio::write(uint8_t ch, uint16_t period_us)
|
|||||||
|
|
||||||
uint8_t data[2] = {length & 0xFF, length >> 8};
|
uint8_t data[2] = {length & 0xFF, length >> 8};
|
||||||
uint8_t status = hal.i2c->writeRegisters(PCA9685_ADDRESS,
|
uint8_t status = hal.i2c->writeRegisters(PCA9685_ADDRESS,
|
||||||
PCA9685_RA_LED0_OFF_L + 4 * (ch + 3),
|
PCA9685_RA_LED0_OFF_L + 4 * (ch + _channel_offset),
|
||||||
2,
|
2,
|
||||||
data);
|
data);
|
||||||
|
|
||||||
|
@ -6,7 +6,8 @@
|
|||||||
|
|
||||||
class Linux::LinuxRCOutput_Navio : public AP_HAL::RCOutput {
|
class Linux::LinuxRCOutput_Navio : public AP_HAL::RCOutput {
|
||||||
public:
|
public:
|
||||||
LinuxRCOutput_Navio(uint8_t oe_pin_number);
|
LinuxRCOutput_Navio(uint8_t channel_offset,
|
||||||
|
uint8_t oe_pin_number);
|
||||||
~LinuxRCOutput_Navio();
|
~LinuxRCOutput_Navio();
|
||||||
void init(void* machtnichts);
|
void init(void* machtnichts);
|
||||||
void reset_all_channels();
|
void reset_all_channels();
|
||||||
@ -27,6 +28,8 @@ private:
|
|||||||
uint16_t _frequency;
|
uint16_t _frequency;
|
||||||
|
|
||||||
uint16_t *_pulses_buffer;
|
uint16_t *_pulses_buffer;
|
||||||
|
|
||||||
|
uint8_t _channel_offset;
|
||||||
uint8_t _oe_pin_number;
|
uint8_t _oe_pin_number;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user