Hello,
I was wondering if anyone has a modified version of Kevin’s encoder code with support for 3 (or more) quadrature encoders. If you do I’d be quite thankful :rolleyes:. My Email address is "[email protected]" if you’re willing to share your code. Thank you very much,
Stephen
As far I am informed we only have two (available) hardware interrupts to use for the encoders, which would seem to indicate that we can only use 2 encoders.
However I also said nobody would hang last year
Without knowing the details of the code or of the implementation, could you use an auxillary processor to take encoder information (from several sources), then pass it back to the RC processor as a package, using one (RC) interrupt?
I think I heard of someone actually designing something to do this. Wow if one device could somehow keep track of those values and send it to the RC, that would be pretty sweet.
If I remember right, I thought that digitals 3-6 support interrupting, it’s just they’re banned together somehow.
Stephen,
Last year we used 2 encoders plus a gear-tooth counter. All three devices were driven by interrupts. I’ve attached the encoder.c file showing the initialization, and interrupt service routines. I’ve also included user_routines_fast.c which shows the handler InterruptHandlerLow ().
In short, interrupts are available in digital inputs 1-6. The caveat is inputs 3-6 can only be enabled or disabled as an entire block. You either get all or none. This also means that we chose to modify Kevin’s code further, and move the phase B encoder signals to inputs 7 and 8. Leaving them on 5 and 6 would have caused unnecessary interrupts (this was done in encoder.h).
-SlimBoJones…
encoder.c (17.3 KB)
user_routines_fast.c (12.2 KB)
encoder.h (3.58 KB)
encoder.c (17.3 KB)
user_routines_fast.c (12.2 KB)
encoder.h (3.58 KB)
Thank you very much! I’m going to get going and start working with this. thanks everyone for the help!