Re: ubitx #v6 Screen Speed Mod, and interrupt driven encoder wheel mod #v6

Smitty, KR6ZY

I'm not entirely sure which you meant, so let me answer the question you MIGHT have been asking in case others are similarly confused.  :-)

Does it work with the existing encoder wheel hardware?  Yes.  No hardware mods are required.  This is a software-only mod that improves the responsiveness of the encoder wheel.  Instead of the code saying "I want to know what the user is doing with the encoder, let me sit here and spend 200ms watching the encoder wheel to see whether it's turning, and not doing anything else."   Instead, it uses hardware interrupts.  Every time the state of one of the pins changes, the program pauses and runs my function instead, called an Interrupt Service Routine, or ISR.  All the ISR does is look at the current state of the pins and compares it to the previous state of the pins, figures out which way you turned the knob, and either adds 1 or subtracts 1 from a counter.  Then, when the program says "what's the encoder doing?" instead of waiting around 200ms to count, it just returns the existing counter and sets it to zero.   So the program no longer has that 200ms pause every time it wants to see what the encoder is doing.

Does it work on the stock software, or does it require Reed's display mods?  It'll work on the stock software, but the merge requires a bit of work.  Reed's changes changed some code my code also changed, so I had to manually merge them.  It's not a HARD merge, but it's also not automatic.

If someone wants a branch that uses this code against Farhan's stock code, I can produce that too.


On 1/11/20 1:05 PM, Joel Caulkins/N6ALT wrote:
Forget that last question, I loaded up Marks's code and the encoder works great. Thanks to those who know how to code we are getting closer everyday to a usable V6 UBITX.


Join to automatically receive all group messages.