March 28, 2014 at 7:37 am #21826
The problem with the pre-2.2.3 analog code was that each time any command needed an ADC conversion, it would set up the ADC, start the necessary conversion, wait for it to be done, then print out the result.
The problem with this method is that it fundamentally conflicted with the existing interrupt based analog conversion code brought over from the UBW codebase when I started the EBB. For the UBW, I keep a list of all active analog channels, and convert them all (one every 5ms) and store them in a FIFO. Then, when any command needs to read an ADC, it simply uses the latest value(s) from the FIFO, as the ISR is taking care of doing all of the conversions.
So the change I made was that a adopted the QC command to use the existing UBW interrupt based analog conversion functions. You can see the changes yourself if you compare SVN 289 with SVN 290.
As for the problems with the pen arm code – I’m very happy to hear that you are having good success with it! Other testers have reported problems, although we have not yet really worked on understanding exactly what those problems are – they may have been phantoms. Right now, there are some remaining bugs with the functions I’m working on at present – getting ‘long moves’ to work. This is where the SM command will be able to take times and step values much larger than it currently can. Several folks have requested this, and it’s taken me longer to get everything working than I thought it would.
Once I have all of the new features in, I’ll publish a call for people to test out the new version. Then we’ll really see exactly what the pen arm problems are.
Thanks again for your great work on this!