Hi all,
There have been so many postings on this topic I won't be able to individually reply to all of them. I will try to address everything in this posting.
I purchased a USB analyzer to help identify the source of the communications problem. While using it I found a path in the software that would allow it to get into an infinite loop, but only if the data was corrupt. I instituted an integrity check and now the data is discarded if that happens. Data corruption isn't supposed to happen in the Bulk mode of USB. The communications dropout usually happens when something noisy happens in the system, leading me to believe it is related to FTDI's driver. I think the new plugin will help a lot of systems where noise is an issue. The latest plugin is not ready for prime time yet, but you can try it out if you are having trouble and hopefully you will not have any lockups due to noise. Here is a link:
http://www.warp9td.com/files/SmoothStepper_v16bd.m3p
The filtering for debounce in the SS isn't very complicated. At 33 MHz it cycles through 24 inputs, spending two clock cycles on each input. If an input is asserted, it counts up by one until it reaches the debounce threshold and sets the internal input value to '1'. If it is de-asserted it counts down by one until at zero, at which time the internal input value is set to '0'. This behavior kind of mimics the charging and discharging of a capacitor.
As for ground loops, I seriously doubt the SS has any internal ground loop problems. I agree that PCBs can have ground loops on the board, but the SmoothStepper PCB is a 4-layer board with solid ground and power planes. Planes have very low inductance, ensuring low impedance access to ground anywhere on the board. Any component that needs to connect to ground has less than 10 mils of distance before it reaches the ground plane. Ground loops of the type we're concerned with are formed over greater distances with impedances between the two grounds. As Henrik has pointed out, mounting the SS inside of the PC case with a short USB cable is very effective at keeping the ground of the SS and the ground of the PC at the same potential. A number of people have done this and it works very well. Even if it is not inside the case, a 6-inch USB cable works well. Wolfram has done an excellent job of designing the SmoothStepper Pro. As far as I know, he never has any reports of communications problems. In his design he decouples every input and output with ferrites, capacitors, and resistors. I would recommend his product to anyone, especially those that are having trouble with my SmoothStepper.
Hood and Jeff Birt did a lot of testing on their systems, trying to figure out where the noise was coming in. In Jeff's case, he found the noise from his spindle motor was coming in on the cable connected to the 26-pin header of the SS. Shielding that cable fixed the problem. He was also able to make the problem go away by using the new plugin (without shielding the cable). Hood also reported success with the new plugin, but a startup condition is faulting his drives, and that is one reason why I say the plugin is not ready yet. I am thinking the noise raised or lowered the voltage of the ground of the SS, which caused communication problems since the ground of the PC was at a different potential. USB is not a purely differential signaling standard. There are parts of the protocol that are single-ended, and I suspect that might explain the problems. Many people have found success by connecting a heavy duty ground wire between the SS and the computer. Thinking about the grounding arrangement from a "star ground" point of view, where would you say the center of the star is with a SmoothStepper installation? Assuming the USB cable is not zero impedance, it might be somewhere in the middle of the cable. I think it is best to maintain a low impedance connection between the SS and the PC. That makes the center of the star less ambiguous. It would be really cool if we could put on special glasses that would allow us to watch the flow of current. I'm sure it would be flowing in places you wouldn't expect. One thing is for sure, it will follow the path of least impedance.
I know I haven't been producing new plugins for the SmoothStepper often enough. I'm slowly un-burying myself and working towards a release. I want to get all of the promised features finished so that I can move on to future products. An Ethernet SmoothStepper won't be far away, and I promise that it will not lose communications like the USB version does. You will be able to light a torch next to it and it won't skip a beat. I will also make sure it has enough resources so that I will not be constrained like I am now.
More updates soon, since I have been working on the plugin lately.
Thanks,
Greg