diff --git a/src/drivers/linux_pwm_out/CMakeLists.txt b/src/drivers/linux_pwm_out/CMakeLists.txt index 38ee56b94a..0d91192aba 100644 --- a/src/drivers/linux_pwm_out/CMakeLists.txt +++ b/src/drivers/linux_pwm_out/CMakeLists.txt @@ -37,6 +37,8 @@ px4_add_module( COMPILE_FLAGS SRCS linux_pwm_out.cpp + MODULE_CONFIG + module.yaml DEPENDS output_limit ) diff --git a/src/drivers/linux_pwm_out/linux_pwm_out.cpp b/src/drivers/linux_pwm_out/linux_pwm_out.cpp index d19da24c67..538626e95a 100644 --- a/src/drivers/linux_pwm_out/linux_pwm_out.cpp +++ b/src/drivers/linux_pwm_out/linux_pwm_out.cpp @@ -44,8 +44,10 @@ LinuxPWMOut::LinuxPWMOut() : _cycle_perf(perf_alloc(PC_ELAPSED, MODULE_NAME": cycle")), _interval_perf(perf_alloc(PC_INTERVAL, MODULE_NAME": interval")) { - _mixing_output.setAllMinValues(PWM_DEFAULT_MIN); - _mixing_output.setAllMaxValues(PWM_DEFAULT_MAX); + if (!_mixing_output.useDynamicMixing()) { + _mixing_output.setAllMinValues(PWM_DEFAULT_MIN); + _mixing_output.setAllMaxValues(PWM_DEFAULT_MAX); + } } LinuxPWMOut::~LinuxPWMOut() @@ -154,8 +156,8 @@ void LinuxPWMOut::update_params() { updateParams(); - // skip update when armed - if (_mixing_output.armed().armed) { + // skip update when armed or dynamic mixing enabled + if (_mixing_output.armed().armed || _mixing_output.useDynamicMixing()) { return; } diff --git a/src/drivers/linux_pwm_out/module.yaml b/src/drivers/linux_pwm_out/module.yaml new file mode 100644 index 0000000000..8869e7b2f9 --- /dev/null +++ b/src/drivers/linux_pwm_out/module.yaml @@ -0,0 +1,12 @@ +module_name: PWM Output +actuator_output: + output_groups: + - param_prefix: PWM + channel_label: 'PWM Actuator' + standard_params: + disarmed: { min: 800, max: 2200, default: 900 } + min: { min: 800, max: 1400, default: 1000 } + max: { min: 1600, max: 2200, default: 2000 } + failsafe: { min: 800, max: 2200 } + num_channels: 8 +