Servo output reverse

Hi,guys.I have a question that has been bothering me for a few days.
My quad run with MATEKF405-STD in ArduCopter V4.4.3, the promblem is when i set the Servo Output reverse funtion in MP,it din’t work,but it is indeed working when i set this on my RC.I have checked other posts with the same issue,but it seems that there is no clear solution.


Does anyone know how to solve this problem?

If you’re using direct RC passthrough (as you are), then the solution is to reverse the transmitter channel, as you’ve discovered. It’s neither feature nor bug. The assumption is that you want to set the PWM value that is coming direct from the transmitter.

If instead you use RCIn7Scaled, which is probably better practice in general, then I think the servo reverse parameter will work as you expect (though I have not tested nor chased the source code to be perfectly sure).

Thanks for replying!It works correctly when i use RCIn7Scaled instead of RCIn7.
So,the RCIn7 is the same means to RCPassThru,which means the channel 7 output will always be equal to channel 7 input,but the RCIn7Scaled will be different.
Thanks again!@ Yuri_Rage

No problem. I understand the potential for confusion, but I also understand why a developer might shy away from assuming user intent in order to implement SERVOx_REVERSED for RC passthrough.

To clarify what’s happening a bit:

SERVOx_FUNCTION=1 (RCPassThru) is direct passthrough of the corresponding RC channel (so SERVO7 would take its cues from RC7). The RC PWM value is passed directly to the servo output with no regard for scaling or trim.

SERVOx_FUNCTION=51 through 66 (RCINx) works almost identically but passes the specified RC channel PWM directly through.

SERVOx_FUNCTION=140 through 155 (RCInxScaled) first scales the corresponding RC channel input to a value between -1 and 1 based on its position relative to the calibrated RCx_MIN, RCx_TRIM, and RCx_MAX parameters. It then passes that on to the servo output relative to SERVOx_MIN, SERVOx_TRIM, and SERVOx_MAX (essentially a percentage of travel).

It’s better practice to use RCInScaled because you can recalibrate your RC transmitter without impacting functionality, and you can also fine tune the servo end points without worrying about recalibrating or re-mixing the radio.

I hope that makes sense…and if it doesn’t, I’ll try to clarify.

1 Like