added a limit to range output

This commit is contained in:
Jason Short 2012-02-18 21:08:17 -08:00
parent 1b46daa12e
commit 1e37a0ec17
2 changed files with 7 additions and 3 deletions

View File

@ -111,6 +111,8 @@ static const AP_Param::Info var_info[] PROGMEM = {
GSCALAR(camera_roll_gain, "CAM_R_G"),
GSCALAR(stabilize_d, "STAB_D"),
GSCALAR(acro_p, "ACRO_P"),
GSCALAR(axis_lock_p, "AXIS_P"),
GSCALAR(axis_enabled, "AXIS_ENABLE"),
// PID controller
//---------------

View File

@ -108,6 +108,8 @@ RC_Channel::set_pwm(int pwm)
if(_type == RC_CHANNEL_RANGE){
//Serial.print("range ");
control_in = pwm_to_range();
//control_in = constrain(control_in, _low, _high);
control_in = min(control_in, _high);
control_in = (control_in < _dead_zone) ? 0 : control_in;
if (fabs(scale_output) != 1){
@ -211,9 +213,9 @@ RC_Channel::pwm_to_angle()
{
int radio_trim_high = radio_trim + _dead_zone;
int radio_trim_low = radio_trim - _dead_zone;
// prevent div by 0
if ((radio_trim_low - radio_min) == 0 || (radio_max - radio_trim_high) == 0)
if ((radio_trim_low - radio_min) == 0 || (radio_max - radio_trim_high) == 0)
return 0;
if(radio_in > radio_trim_high){
@ -269,7 +271,7 @@ float
RC_Channel::norm_output()
{
int16_t mid = (radio_max + radio_min) / 2;
if(radio_out < mid)
return (float)(radio_out - mid) / (float)(mid - radio_min);
else