mirror of https://github.com/ArduPilot/ardupilot
AP_IOMCU: account for possibility of SBUS_OUT in PWM structures
This commit is contained in:
parent
abb94b03f9
commit
2a786616b1
|
@ -346,7 +346,7 @@ void AP_IOMCU::thread_main(void)
|
||||||
// update failsafe pwm
|
// update failsafe pwm
|
||||||
if (pwm_out.failsafe_pwm_set != pwm_out.failsafe_pwm_sent) {
|
if (pwm_out.failsafe_pwm_set != pwm_out.failsafe_pwm_sent) {
|
||||||
uint8_t set = pwm_out.failsafe_pwm_set;
|
uint8_t set = pwm_out.failsafe_pwm_set;
|
||||||
if (write_registers(PAGE_FAILSAFE_PWM, 0, IOMCU_MAX_CHANNELS, pwm_out.failsafe_pwm)) {
|
if (write_registers(PAGE_FAILSAFE_PWM, 0, IOMCU_MAX_RC_CHANNELS, pwm_out.failsafe_pwm)) {
|
||||||
pwm_out.failsafe_pwm_sent = set;
|
pwm_out.failsafe_pwm_sent = set;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -372,7 +372,7 @@ void AP_IOMCU::send_servo_out()
|
||||||
if (rate.sbus_rate_hz == 0) {
|
if (rate.sbus_rate_hz == 0) {
|
||||||
n = MIN(n, 8);
|
n = MIN(n, 8);
|
||||||
} else {
|
} else {
|
||||||
n = MIN(n, IOMCU_MAX_CHANNELS);
|
n = MIN(n, IOMCU_MAX_RC_CHANNELS);
|
||||||
}
|
}
|
||||||
uint32_t now = AP_HAL::micros();
|
uint32_t now = AP_HAL::micros();
|
||||||
if (now - last_servo_out_us >= 2000 || AP_BoardConfig::io_dshot()) {
|
if (now - last_servo_out_us >= 2000 || AP_BoardConfig::io_dshot()) {
|
||||||
|
|
|
@ -966,7 +966,7 @@ bool AP_IOMCU_FW::handle_code_write()
|
||||||
}
|
}
|
||||||
/* copy channel data */
|
/* copy channel data */
|
||||||
uint16_t i = 0, num_values = rx_io_packet.count;
|
uint16_t i = 0, num_values = rx_io_packet.count;
|
||||||
while ((i < IOMCU_MAX_CHANNELS) && (num_values > 0)) {
|
while ((i < IOMCU_MAX_RC_CHANNELS) && (num_values > 0)) {
|
||||||
/* XXX range-check value? */
|
/* XXX range-check value? */
|
||||||
if (rx_io_packet.regs[i] != PWM_IGNORE_THIS_CHANNEL) {
|
if (rx_io_packet.regs[i] != PWM_IGNORE_THIS_CHANNEL) {
|
||||||
reg_direct_pwm.pwm[i] = rx_io_packet.regs[i];
|
reg_direct_pwm.pwm[i] = rx_io_packet.regs[i];
|
||||||
|
|
|
@ -93,17 +93,17 @@ public:
|
||||||
|
|
||||||
// PAGE_SERVO values
|
// PAGE_SERVO values
|
||||||
struct {
|
struct {
|
||||||
uint16_t pwm[IOMCU_MAX_CHANNELS];
|
uint16_t pwm[IOMCU_MAX_RC_CHANNELS]; // size has to account for virtual channels via SBUS_OUT
|
||||||
} reg_servo;
|
} reg_servo;
|
||||||
|
|
||||||
// PAGE_DIRECT_PWM values
|
// PAGE_DIRECT_PWM values
|
||||||
struct {
|
struct {
|
||||||
uint16_t pwm[IOMCU_MAX_CHANNELS];
|
uint16_t pwm[IOMCU_MAX_RC_CHANNELS];
|
||||||
} reg_direct_pwm;
|
} reg_direct_pwm;
|
||||||
|
|
||||||
// PAGE_FAILSAFE_PWM
|
// PAGE_FAILSAFE_PWM
|
||||||
struct {
|
struct {
|
||||||
uint16_t pwm[IOMCU_MAX_CHANNELS];
|
uint16_t pwm[IOMCU_MAX_RC_CHANNELS];
|
||||||
} reg_failsafe_pwm;
|
} reg_failsafe_pwm;
|
||||||
|
|
||||||
// output rates
|
// output rates
|
||||||
|
|
Loading…
Reference in New Issue