No. The FPGA handles the polling of the encoder pulses. It is separate from the CPU. The FPGA counts and times the pulses, then provides that info to the CPU (when your software asks for it).
What is the maximum pulse rate from an encoder that the cRio can read?
The FPGA polls the DIO channels at 153257 Hz, so the FPGA can count edges that are no less than 6.525 microseconds apart.
Also, for a quadrature signal, the edges from both channels must be at least that far apart from each other, or the FPGA will not be able to tell which channel’s rising edge occurred first.
So the max rpm depends on how your encoder is configured. For example:
US Digital 360 CPR E4P encoder.
Each encoder channel is connected to a separate DIO channel.
The encoder has 360 rising edges plus 360 falling edges on each channel (total 720 edges per channel)
Assume perfect 90 degrees phase between the 2 encoder channels.
Instantiated from the Encoder class as 4X.
Theoretical maximum encoder speed that the FPGA can process with the encoder in this configuration:
60153257/(4360) = 6386 RPM
However, per the encoder datasheet, the typical installed tolerance for the
quadrature phase is 90 +/- 10 degrees. Assuming it’s 10 degrees off:
60*153257/((180/(90-10))2360) = 5676 RPM
Per the encoder datasheet, the maximum installed tolerance for the
quadrature phase is 90 +/- 60 degrees. Assuming it’s 60 degrees off:
60*153257/((180/(90-60))2360) = 2129 RPM