From f58abb75502a362340c36624c93d6dec2a67beb7 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 5 Nov 2012 23:37:25 +1100 Subject: [PATCH] RC_Channel: added pwm_to_angle_dz() function will be used by k_aileron in APM --- libraries/RC_Channel/RC_Channel.cpp | 22 +++++++++++++++++----- libraries/RC_Channel/RC_Channel.h | 1 + 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/libraries/RC_Channel/RC_Channel.cpp b/libraries/RC_Channel/RC_Channel.cpp index c505cd2fa3..8b086e876c 100644 --- a/libraries/RC_Channel/RC_Channel.cpp +++ b/libraries/RC_Channel/RC_Channel.cpp @@ -217,13 +217,15 @@ RC_Channel::update_min_max() radio_max = max(radio_max.get(), radio_in); } -// ------------------------------------------ - +/* + return an "angle in centidegrees" (normally -4500 to 4500) from + the current radio_in value using the specified dead_zone + */ int16_t -RC_Channel::pwm_to_angle() +RC_Channel::pwm_to_angle_dz(int16_t dead_zone) { - int16_t radio_trim_high = radio_trim + _dead_zone; - int16_t radio_trim_low = radio_trim - _dead_zone; + int16_t radio_trim_high = radio_trim + dead_zone; + int16_t radio_trim_low = radio_trim - dead_zone; // prevent div by 0 if ((radio_trim_low - radio_min) == 0 || (radio_max - radio_trim_high) == 0) @@ -237,6 +239,16 @@ RC_Channel::pwm_to_angle() return 0; } +/* + return an "angle in centidegrees" (normally -4500 to 4500) from + the current radio_in value + */ +int16_t +RC_Channel::pwm_to_angle() +{ + return pwm_to_angle_dz(_dead_zone); +} + int16_t RC_Channel::angle_to_pwm() diff --git a/libraries/RC_Channel/RC_Channel.h b/libraries/RC_Channel/RC_Channel.h index a39ce86db8..61ead5027b 100644 --- a/libraries/RC_Channel/RC_Channel.h +++ b/libraries/RC_Channel/RC_Channel.h @@ -78,6 +78,7 @@ public: // includes offset from PWM //int16_t get_radio_out(void); + int16_t pwm_to_angle_dz(int16_t dead_zone); int16_t pwm_to_angle(); float norm_input(); float norm_output();