From f19761d278bc725289615983564169f4801e74e1 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 10 Mar 2016 15:26:23 +1100 Subject: [PATCH] px4iofirmware: support setting the SBUS output frame rate this allows for helicopters and multicopters with SBUS output --- src/modules/px4iofirmware/protocol.h | 2 ++ src/modules/px4iofirmware/px4io.h | 1 + src/modules/px4iofirmware/registers.c | 6 ++++++ 3 files changed, 9 insertions(+) diff --git a/src/modules/px4iofirmware/protocol.h b/src/modules/px4iofirmware/protocol.h index 1267b48853..accd25206f 100644 --- a/src/modules/px4iofirmware/protocol.h +++ b/src/modules/px4iofirmware/protocol.h @@ -239,6 +239,8 @@ enum { /* DSM bind states */ #define PX4IO_P_SETUP_TRIM_PITCH 17 /**< Pitch trim, in actuator units */ #define PX4IO_P_SETUP_TRIM_YAW 18 /**< Yaw trim, in actuator units */ +#define PX4IO_P_SETUP_SBUS_RATE 19 /* frame rate of SBUS1 output in Hz */ + /* autopilot control values, -10000..10000 */ #define PX4IO_PAGE_CONTROLS 51 /**< actuator control groups, one after the other, 8 wide */ #define PX4IO_P_CONTROLS_GROUP_0 (PX4IO_PROTOCOL_MAX_CONTROL_COUNT * 0) /**< 0..PX4IO_PROTOCOL_MAX_CONTROL_COUNT - 1 */ diff --git a/src/modules/px4iofirmware/px4io.h b/src/modules/px4iofirmware/px4io.h index 73d222bbb8..0d394778a9 100644 --- a/src/modules/px4iofirmware/px4io.h +++ b/src/modules/px4iofirmware/px4io.h @@ -122,6 +122,7 @@ extern uint16_t r_page_servo_disarmed[]; /* PX4IO_PAGE_DISARMED_PWM */ #define r_setup_trim_roll r_page_setup[PX4IO_P_SETUP_TRIM_ROLL] #define r_setup_trim_pitch r_page_setup[PX4IO_P_SETUP_TRIM_PITCH] #define r_setup_trim_yaw r_page_setup[PX4IO_P_SETUP_TRIM_YAW] +#define r_setup_sbus_rate r_page_setup[PX4IO_P_SETUP_SBUS_RATE] #define r_control_values (&r_page_controls[0]) diff --git a/src/modules/px4iofirmware/registers.c b/src/modules/px4iofirmware/registers.c index 55126134ed..de7615a8ab 100644 --- a/src/modules/px4iofirmware/registers.c +++ b/src/modules/px4iofirmware/registers.c @@ -48,6 +48,7 @@ #include #include #include +#include #include "px4io.h" #include "protocol.h" @@ -157,6 +158,7 @@ volatile uint16_t r_page_setup[] = { [PX4IO_P_SETUP_PWM_RATES] = 0, [PX4IO_P_SETUP_PWM_DEFAULTRATE] = 50, [PX4IO_P_SETUP_PWM_ALTRATE] = 200, + [PX4IO_P_SETUP_SBUS_RATE] = 72, #ifdef CONFIG_ARCH_BOARD_PX4IO_V1 [PX4IO_P_SETUP_RELAYS] = 0, #else @@ -682,6 +684,10 @@ registers_set_one(uint8_t page, uint8_t offset, uint16_t value) r_page_setup[offset] = value; break; + case PX4IO_P_SETUP_SBUS_RATE: + sbus1_set_output_rate_hz(value); + break; + default: return -1; }