Using the shortcut button presses might work. Actually, you would only need one, used as a toggle,
say button 1 long press, then button 4 could still be used normally, or even used for a new function
altogether. Could make BOTH V/div and Time/div menus flash while in this mode to identify it. Would
have to check for any possible interaction issues with other controls, implement a memory of where
the menu was before engaging, etc…
As far as implementing a code generator within the program, as a basic function there should be no
problem. Issues would undoubtedly arise when integrating this so the scope function can simultaneously
function. First of all, I would not run this though a DAC. The risetime is poor, and artifacts such as you have
already noted on ending/starting of buffers abound. I’ve also noted some delay in the DACs to respond
after sitting at 0 level for a while. It just doesn’t make sense to use an analog function to generate digital
data. The data should be output directly through a digital port, allowing much better control, speed and
quality of waveform. Not sure if there is a way to have the processor read a buffer and output the data
in the background, like it does with the DACs, would have to check over the STM32 programming guide
for this, but if not, this could be done with an interrupt, since the timing critical part of an RS232 signal
is within each byte frame, each INT call could do a whole byte, so any INT timing delays would only
affect inter-frame timing, which is not so important for this protocol. INT calls for the sweep gen functions
already implemented at 1000 sweeps/sec are at 10uS interval, and while it does slow the program down,
it’s still fast enough to function adequately. This is where the “speed optimized” versions really help,
nearly doubling frame rate. Calling at this rate would provide 100,000 byte/sec or 1Meg Baud code output.
The sector buffer for file operations holds 4096 bytes and could possibly be used as the read buffer. What I
envision is perhaps 2 new positions for the output generator, “BIN” and “HEX” each reading a file
of the same name in the format of 0’s and 1’s for the BIN file and hex byte values for the HEX file. Baud
rate could be adjusted with the frequency range and fine adjust controls. Depending on how “complete”
the function is to be, you could also set data size in bits, parity and perhaps even polarity as well…