Check probes only when deployed
Aim: Test probes in update_endstops only when activated Changes: Configurations Add define for FIX_MOUNTED_PROBE to handle the situation where formerly ENDSTOPS_ONLY_FOR_HOMING had to be set, or lowering the nozzle below Z_PROBE_OFFSET_FROM_EXTRUDER could give an "endstop hit" message. Add define for Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to indicate a common situation, that we have a probe but it is connected to an endstop pin Add some comments Shift some entries to have related things together. Conditionals.h We have a probe (HAS_Z_MIN_PROBE) if one of the pins is defined AND one of the probes is defined. SanityCheck.h Add some tests if the probe is connected and if we have defined a probe. stepper.cpp Changes to test the probe only when it is deployed (z_probe_is_active). Test update_endstops() when the probe is deployed. MarlinMain.cpp a. set and reset z_probe_is_active in deploy_z_probe(), stow_z_probe() and dock_sled() b. set and reset z_probe_is_active in the case a z-servo is moved to a defined position. The only remaining unhandled servo move is in M280 where we do not end in a defined position. If you want to handle a probe use M401/402 c. skip deploying/stowing when already deployed/stowed in the dedicated deploy/stow functions. d. Handle the new FIX_MOUNTED_PROBE in parallel to a servo driven probe/endstop. To do: In another PR. handle all probes in deploy/stow_z_probe. Sort out SERVO_LEVELING vs. HAS_SERVO_ENDSTOPS.
This commit is contained in:
@@ -127,6 +127,34 @@
|
||||
#error MESH_BED_LEVELING is required for MANUAL_BED_LEVELING.
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Probes
|
||||
*/
|
||||
|
||||
/**
|
||||
* A probe needs a pin
|
||||
*/
|
||||
#if (!((HAS_Z_MIN && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)) || HAS_Z_PROBE )) && ( ENABLED(FIX_MOUNTED_PROBE) || defined(Z_ENDSTOP_SERVO_NR) || ENABLED(Z_PROBE_ALLEN_KEY) || ENABLED(Z_PROBE_SLED))
|
||||
#error A probe needs a pin! [Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN || HAS_Z_PROBE]
|
||||
#endif
|
||||
|
||||
#if ((HAS_Z_MIN && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)) && HAS_Z_PROBE) && ( ENABLED(FIX_MOUNTED_PROBE) || defined(Z_ENDSTOP_SERVO_NR) || ENABLED(Z_PROBE_ALLEN_KEY) || ENABLED(Z_PROBE_SLED))
|
||||
#error A probe should not be connected to more then one pin! [Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN || HAS_Z_PROBE]
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Require one kind of probe
|
||||
*/
|
||||
#if ENABLED(AUTO_BED_LEVELING_FEATURE) && !( ENABLED(FIX_MOUNTED_PROBE) || defined(Z_ENDSTOP_SERVO_NR) || ENABLED(Z_PROBE_ALLEN_KEY) || ENABLED(Z_PROBE_SLED))
|
||||
#error For AUTO_BED_LEVELING_FEATURE define one kind of probe! {Servo | Z_PROBE_ALLEN_KEY | Z_PROBE_SLED | FIX_MOUNTED_PROBE]
|
||||
#endif
|
||||
|
||||
#if ENABLED(Z_SAFE_HOMING)&& !( ENABLED(FIX_MOUNTED_PROBE) || defined(Z_ENDSTOP_SERVO_NR) || ENABLED(Z_PROBE_ALLEN_KEY) || ENABLED(Z_PROBE_SLED))
|
||||
#error For Z_SAFE_HOMING define one kind of probe! {Servo | Z_PROBE_ALLEN_KEY | Z_PROBE_SLED | FIX_MOUNTED_PROBE]
|
||||
#endif
|
||||
|
||||
// To do: Fail with more then one probe defined
|
||||
|
||||
/**
|
||||
* Auto Bed Leveling
|
||||
*/
|
||||
|
Reference in New Issue
Block a user