A modern RC encoder, whether it be for an AM or FM system, would typically produce of a number of pulses corresponding to the number of channels, plus a longer sync pulse to enable the decoder at the receiver end to extract the pulses in the correct order.
This combined pulse train is called a Frame, and is approximately 20 milliseconds long. A typical channel pulse at neutral is 1.5 milliseconds long, and consists of a variable high for 1100 microseconds, and a fixed low of 400 microseconds. The fixed low is required by most AM receivers for automatic gain control.
The decoder circuit will look at the pulse length from rising edge to rising edge, so we only need to vary the high, giving a combined pulse from 1000 microseconds to 2000 microseconds, for full travel of the control stick.
An actual control stick only moves about 90 degrees, so the voltage swing is small. This is the reason for the rather complicated maths done on the ADC value.
I’ve also scaled the equation to enable an eight bit A to D pic to be used. ( 16C711) A great advantage of using the ADIN function instead of POT, is that the channels can be mixed or reversed externally. Obviously this could also be done in software, but that is beyond my abilities at this moment ( nor with 30 lines of code !!!).
Another issue to address is the terms Fixed Frame Rate, and Variable Frame Rate. This code produces a Variable Frame Rate, as the varying pulse lengths add or subtract from the total Frame time. This would be easy to fix with more code. Most modern decoders are quite happy with both, but a “nice to have” would be a link on the encoder board, to change from one to the other.
Visit Here for more.