add probe_finalize to keep things DRY

this allows the PRB report to be valid when in "no errors" mode and the probe fails
This commit is contained in:
Elijah Insua 2014-09-22 14:40:21 -07:00
parent 5f1eece67d
commit 0beacbbb11
3 changed files with 10 additions and 3 deletions

View File

@ -320,6 +320,7 @@ void mc_homing_cycle()
bit_true_atomic(sys.execute, EXEC_CRIT_EVENT); bit_true_atomic(sys.execute, EXEC_CRIT_EVENT);
} else { } else {
perform_pull_off = 0; perform_pull_off = 0;
probe_finalize();
} }
} }
protocol_execute_runtime(); // Check and execute run-time commands protocol_execute_runtime(); // Check and execute run-time commands

10
probe.c
View File

@ -50,6 +50,12 @@ uint8_t probe_errors_enabled(uint8_t mode) {
return !(mode & PROBE_NO_ERROR); return !(mode & PROBE_NO_ERROR);
} }
void probe_finalize() {
sys.probe_state = PROBE_OFF;
memcpy(sys.probe_position, sys.position, sizeof(float)*N_AXIS);
bit_true(sys.execute, EXEC_FEED_HOLD);
}
// Monitors probe pin state and records the system position when detected. Called by the // Monitors probe pin state and records the system position when detected. Called by the
// stepper ISR per ISR tick. // stepper ISR per ISR tick.
// NOTE: This function must be extremely efficient as to not bog down the stepper ISR. // NOTE: This function must be extremely efficient as to not bog down the stepper ISR.
@ -57,9 +63,7 @@ void probe_state_monitor()
{ {
if (sys.probe_state != PROBE_OFF) { if (sys.probe_state != PROBE_OFF) {
if (probe_get_state(sys.probe_state)) { if (probe_get_state(sys.probe_state)) {
sys.probe_state = PROBE_OFF; probe_finalize();
memcpy(sys.probe_position, sys.position, sizeof(float)*N_AXIS);
bit_true(sys.execute, EXEC_FEED_HOLD);
} }
} }
} }

View File

@ -40,6 +40,8 @@ uint8_t probe_get_state(uint8_t mode);
uint8_t probe_errors_enabled(uint8_t mode); uint8_t probe_errors_enabled(uint8_t mode);
void probe_finalize();
// Monitors probe pin state and records the system position when detected. Called by the // Monitors probe pin state and records the system position when detected. Called by the
// stepper ISR per ISR tick. // stepper ISR per ISR tick.
void probe_state_monitor(); void probe_state_monitor();