This is a heads-up to anyone working on BeagleBone based interfaces for
LinuxCNC. I am working on code to support encoders on the BeagleBone,
allowing true servo operation (within limits). Encoders can be
supported on the BeagleBone via hardware or software (via the PRU).
There are three hardware encoders on the BeagleBone:
* eQEP2, on P8 pins 11, 12, 15, 16
* eQEP0, on P9 pins 25, 27, 41.1, 42.1 (BeagleBone Black only)
* eQEP1, on P8 pins 31, 31, 33, 35 (conflicts with HDMI)
The eQEP2 pins conflict with the typical BeBoPr step/dir pinout (re-used
by several CNC capes), but could be used if desired, since step/dir pins
from the PRU can be freely assigned.
The eQEP0 pins do not conflict with the standard BeBoPr pinout, and
might make a good primary encoder input for the spindle or other
Sadly, eQEP1 cannot be used without disabling HDMI. :( I don't
generally intend to run without a display, but I'll make sure the HAL
BeagleBone encoder logic will support all three hardware encoders if you
don't need a display.
In addition to physical hardware support for encoders, it is possible to
support encoders via the PRU. I expect to be able to fairly easily
support up to 100 KHz or so count rates (25 KHz encoder A/B signals),
and may be able to go as much as 10x faster, depending on how complex
the PRU code becomes and how many channels are enabled. Regardless, the
encoder A/B/Index signals will need to be on direct PRU input pins. On
the BeagleBone Black, PRU0 has 9 direct inputs available on P9 (only 7
for the BeagleBone White), meaning it would be possible to support 3
encoders with index, or 4 plain encoders on the 'Black.
Feel free to contact me directly if you are working on a design and are
concerned about your pinout.