I wanted to update you on my DC receiver progress. While I'm still operationally proficient in CW, many of my friends are not. So I thought it would be fun to add a CW decoder to my DC receiver.
In my research for a solution, I ran across a sweet decoder I thought might be of interest to the SolderSmoke listeners. OZ1JHM developed a totally software based decoder for Arduino that uses the Goertzel Algorithm. This algorithm performs similarly to a Fast Fourier Transform but only for tone decoding at specific frequencies. This limitation keeps the code small and fast making it perfect for microcontrollers like the Arduino.
I was able to hack Hjalmar's code into mine and the result is CW decoder functionality in the receiver with no additional hardware! But, the Arduino Uno's performance is limited so I need to dynamically switch between receiver VFO/control code and the CW decoder in order to preserve real-time performance. This is only my first pass so perhaps I will find a way to optimize the code to more fully integrate the two. I currently switch back and forth based on whether the VFO knob has been rotated or is idle. This at least gives the illusion of real-time integration but makes it harder to tune in a signal for the decoder.
Now that the Arduino Zero is available, I've been considering moving that direction to dramatically improve available horsepower. This isn't the first time I've run out of gas with the Uno. Now it's time to start working on a transmitter module for the radio :). You know, even though I have an operational K3, I find myself reaching for this radio first. Something magical about using something you've created :). But hey, preaching to the choir!
Be sure to check out Hjalmar's site (http://www.skovholm.com andhttp://skovholm.com/cwdecoder) for details on his design and a video demo.