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

  • (testing od todays 1.0.0dev btw)
  • This can happen if you start measuring to low. Increase 





    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.

Sign In or Register to comment.