From addb1a981342e4dd666d547e06f058d325ad186e Mon Sep 17 00:00:00 2001 From: Sonny Jeon Date: Mon, 12 Nov 2018 08:25:32 -0700 Subject: [PATCH] Update system.c Correct control pin state checking within pin change interrupt. Improper if-else statements could lead to missed signal. --- grbl/system.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/grbl/system.c b/grbl/system.c index d1665ff..b9ece56 100644 --- a/grbl/system.c +++ b/grbl/system.c @@ -66,13 +66,15 @@ ISR(CONTROL_INT_vect) if (pin) { if (bit_istrue(pin,CONTROL_PIN_INDEX_RESET)) { mc_reset(); - } else if (bit_istrue(pin,CONTROL_PIN_INDEX_CYCLE_START)) { + } + if (bit_istrue(pin,CONTROL_PIN_INDEX_CYCLE_START)) { bit_true(sys_rt_exec_state, EXEC_CYCLE_START); + } #ifndef ENABLE_SAFETY_DOOR_INPUT_PIN - } else if (bit_istrue(pin,CONTROL_PIN_INDEX_FEED_HOLD)) { + if (bit_istrue(pin,CONTROL_PIN_INDEX_FEED_HOLD)) { bit_true(sys_rt_exec_state, EXEC_FEED_HOLD); #else - } else if (bit_istrue(pin,CONTROL_PIN_INDEX_SAFETY_DOOR)) { + if (bit_istrue(pin,CONTROL_PIN_INDEX_SAFETY_DOOR)) { bit_true(sys_rt_exec_state, EXEC_SAFETY_DOOR); #endif }