Endstops::update()
Sometimes (not always) while bed leveling is in progress I'm getting error:
"z-probe did not untrigger after going back to start position."
Code for that does:
// Go back to start position
PrintLine::moveRelativeDistanceInSteps(0, 0, lastCorrection - currentPositionSteps[Z_AXIS], 0, EEPROM::zProbeSpeed(), true, true);
if(Endstops::zProbe()) {
Com::printErrorFLN(PSTR("z-probe did not untrigger after going back to start position."));
return ILLEGAL_Z_PROBE;
}
Now my z-probe is induction sensor with LED on it and LED goes off, when bed moves away from sensor, indicating that it *did* untrigger.
While looking at the firmware I see that M119 command is handled this way:
case 119: // M119
Commands::waitUntilEndOfAllMoves();
Endstops::update();
Endstops::update(); // double test to get right signal. Needed for crosstalk protection.
Endstops::report();
break;
Note two Endstops::update(). Bud there are no such precausions in if(Endstops::zProbe()) condition.
My question is - why is that handled differently? Shouldn't there be Endstops::update() twice before testing Endstops::zProbe() condition?
Comments
Z_PROBE_BED_DISTANCE and start a bit higher with leveling and it should work. If you use repetitions, make sure the repetitions distance is also high enough.