I'm hoping the problem is one that I can fix in firmware. The RS485
comms *should* be completely solid, and it's kind of befuddling that
they're not. (The comms lines are terminated with 100-ohm resistors
at either end, which should approximately match the impedance of a
short cable.) It could be noise coming in over the power pins to the
rs485 chip, or any one of dozens of things. If I had a capture scope,
this would probably be a lot easier. :/ Anyway, for now, I'll just
try to improve error handling on the comms (we have CRCs on every
packet, so it shouldn't be hard to force resends).
The firmware should be watching endstops both during control panel
movement and builds, so you can test that they're working by
triggering them by hand while moving the platform in the control
panel. The LED on the endstop should illuminate when the endstop is
triggered. If it's not triggering reliably, try putting a bit of
black electrical tape on the endstop flag to help block the light.
The platform shouldn't move at all in the wrong direction while the
endstop is triggered; I've just tested this, but I'm using v1.6 (which
is going to be released in a few hours); it's possible this was a bug
in the last revision that got fixed during some of the refactoring.
Try v1.6 later today and see if you still have that problem.
-a
-a
I wasn't expecting the termination resistors to make the situation
that much worse, but it's entirely possible. I'll be playing around
with those as well.
-a
Moving to git is definitely in the works. Our codebase is currently
spread between several repositories (replicatorG on google code;
firmware on makerbot svn), and I'd like to get everything on github
soon.
The packet format makes debugging a little goofy, but I'm comfortable
with adding some debug polling to the protocol.
The easiest solution I see to the interactive jogging problem at the
moment would to be to essentially send the equivalent of "keydown" and
"keyup" commands. They could be implemented as queries rather than
queued commands to keep the response times low. The only tricky bit
would be ensuring that they don't stomp on queued commands that are
being run and vice versa (it would probably make sense to ignore these
commands while the buffer is not empty).
-a