diff --git a/README.md b/README.md index 2cf1570..4ee4102 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ It has been written to complement grblHAL and has features such as proper keyboa --- -Latest build date is 20230718, see the [changelog](changelog.md) for details. +Latest build date is 20230729, see the [changelog](changelog.md) for details. __NOTE:__ A settings reset will be performed on an update of builds earlier than 20230125. Backup and restore of settings is recommended. __IMPORTANT!__ A new setting has been introduced for ganged axes motors in build 20211121. I have only bench tested this for a couple of drivers, correct function should be verified after updating by those who have more than three motors configured. diff --git a/changelog.md b/changelog.md index 1aed1f1..4530916 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,13 @@ ## grblHAL changelog +20230729 + +Core: + +* Fix for ioSender issue [#319](https://github.com/terjeio/ioSender/issues/319), improved handling of sycle start input signal had side-effects. + +--- + 20230724 Core: @@ -136,6 +144,8 @@ To be addressed in a later revision if someone with a Modbus TCP capable spindle * Motors and encoder: updated for core setting handling improvements. +--- + Build 20230607 Core: diff --git a/grbl.h b/grbl.h index 23e5e7a..bed5b38 100644 --- a/grbl.h +++ b/grbl.h @@ -42,7 +42,7 @@ #else #define GRBL_VERSION "1.1f" #endif -#define GRBL_BUILD 20230724 +#define GRBL_BUILD 20230729 #define GRBL_URL "https://github.com/grblHAL" diff --git a/report.c b/report.c index d7ffcf9..486d14d 100644 --- a/report.c +++ b/report.c @@ -1205,8 +1205,7 @@ void report_realtime_status (void) axes_signals_t lim_pin_state = limit_signals_merge(hal.limits.get_state()); control_signals_t ctrl_pin_state = hal.control.get_state(); - if(sys.report.cycle_start) - ctrl_pin_state.cycle_start = On; + ctrl_pin_state.cycle_start |= sys.report.cycle_start; if (lim_pin_state.value | ctrl_pin_state.value | probe_state.triggered | !probe_state.connected | sys.flags.block_delete_enabled) { @@ -1214,16 +1213,16 @@ void report_realtime_status (void) strcpy(buf, "|Pn:"); - if (probe_state.triggered) + if(probe_state.triggered) *append++ = 'P'; if(!probe_state.connected) *append++ = 'O'; - if (lim_pin_state.value && !hal.control.get_state().limits_override) + if(lim_pin_state.value && !ctrl_pin_state.limits_override) append = axis_signals_tostring(append, lim_pin_state); - if (ctrl_pin_state.value) + if(ctrl_pin_state.value) append = control_signals_tostring(append, ctrl_pin_state); *append = '\0'; diff --git a/state_machine.c b/state_machine.c index e56d5fc..46a6c26 100644 --- a/state_machine.c +++ b/state_machine.c @@ -193,8 +193,6 @@ void state_update (rt_exec_t rt_exec) { if((rt_exec & EXEC_SAFETY_DOOR) && sys_state != STATE_SAFETY_DOOR) state_set(STATE_SAFETY_DOOR); - else if(rt_exec & EXEC_CYCLE_START) - sys.report.cycle_start = settings.status_report.pin_state; stateHandler(rt_exec); } diff --git a/stream.c b/stream.c index 56c2f50..ef1b6eb 100644 --- a/stream.c +++ b/stream.c @@ -159,7 +159,12 @@ ISR_CODE bool ISR_FUNC(stream_buffer_all)(char c) ISR_CODE bool ISR_FUNC(stream_enqueue_realtime_command)(char c) { - return hal.stream.enqueue_rt_command ? hal.stream.enqueue_rt_command(c) : protocol_enqueue_realtime_command(c); + bool drop = hal.stream.enqueue_rt_command ? hal.stream.enqueue_rt_command(c) : protocol_enqueue_realtime_command(c); + + if(drop && (c == CMD_CYCLE_START || c == CMD_CYCLE_START_LEGACY)) + sys.report.cycle_start = settings.status_report.pin_state; + + return drop; } static bool is_connected (void) diff --git a/system.c b/system.c index fc1c8bb..47f61b4 100644 --- a/system.c +++ b/system.c @@ -140,8 +140,10 @@ ISR_CODE void ISR_FUNC(control_interrupt_handler)(control_signals_t signals) } } else if (signals.feed_hold) system_set_exec_state_flag(EXEC_FEED_HOLD); - else if (signals.cycle_start) + else if (signals.cycle_start) { system_set_exec_state_flag(EXEC_CYCLE_START); + sys.report.cycle_start = settings.status_report.pin_state; + } } } }