From 88b38eafd89cede5c02bb6040f6cdb49635cf0aa Mon Sep 17 00:00:00 2001
From: AnHardt <github@kitelab.de>
Date: Tue, 15 Nov 2016 16:41:13 +0100
Subject: [PATCH] Endstop interrupt refinement

At the start of a move, check if the endstops are already triggered.
The 'change' interrupts will not see a change if already triggered.
---
 Marlin/stepper.cpp | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/Marlin/stepper.cpp b/Marlin/stepper.cpp
index 7e0c744f19..974dbad0e9 100644
--- a/Marlin/stepper.cpp
+++ b/Marlin/stepper.cpp
@@ -359,6 +359,11 @@ void Stepper::isr() {
 
       step_events_completed = 0;
 
+      #if ENABLED(ENDSTOP_INTERRUPTS_FEATURE)
+        e_hit = 2; // Needed for the case an endstop is already triggered before the new move begins.
+                   // No 'change' can be detected.
+      #endif
+
       #if ENABLED(Z_LATE_ENABLE)
         if (current_block->steps[Z_AXIS] > 0) {
           enable_z();