An ATMega328p-powered Si5351a VFO controller and CW keyer. This could be used in VFO only mode but also can also send a key signal for use in an actual transmitter/amplifier circuit. This is my intended end goal, but you could do something different, or swap out the Si5351a code for another device, etc..
There’s currently no way to cancel WSPR transmission. This could be bad if you’re feeding a PA, and it’s a full 2 minute Tx, so I’m classifying it as a bug.
I need to try integrating poll_inputs() checking into the WSPR loop. Like cancelling the CW stored message transmit this will work off any button input/knob rotation.
Buttons sometimes aren't read. The rotary controller seems to work all the time but other buttons seem to not have their state picked up properly. Resetting works sometimes. I need to try this on a breadboard maybe and see if the code is at fault or my hardware build.
Also there's no debouncing, which may be why I have issues.
After selecting a sub menu item, such as sending the stored CW message or changing the drive current of the clock generator the next button push after the action is completed/cancelled seems to be lost. The main UI is drawn and the expected behaviour is to re-enter main() and then move to sleep().
I am not sure if the code is even reading the input and entering the poll_inputs() function. It may be stalling elsewhere. If it IS entering it then it may not be being caught by the conditionals, perhaps?