- G38.x was not printing correctly in the $G g-code state reports. Now
fixed.
- Potential bug regarding volatile variables inside a struct. It has
never been a problem in v0.9, but ran into this during v1.0
development. Just to be safe, the fixes are applied here.
- Updated pre-built firmwares with these two bug fixes.
- Tweaked the previous EEPROM restore implementation and added new
functionality.
- `$RST=$` restores the `$$` grbl settings back to firmware defaults,
which are set when compiled.
- `$RST=#` restores the `$#` parameters in EEPROM. At times it’s useful
to clear these and start over, rather than manually writing each entry.
-`$RST=*` wipe all of the data in EEPROM that Grbl uses and restores
them to defaults. This includes `$$` settings, `$#` parameters, `$N`
startup lines, and `$i` build info string.
NOTE: This doesn’t write zeros throughout the EEPROM. It only writes
where Grbl looks for data. For a complete wipe, please use the Arduino
IDE’s EEPROM clear example.
- Refactored the restore and wipe functions in settings.c to
accommodate the new commands.
- New restore setting defaults command. Only wipes ‘$$’ setting in
EEPROM and reloads them based on the defaults used when Grbl was
compiled. Used with a `$RST` command
NOTE: `$RST` is intentionally not listed in the Grbl ‘$’ help message.
- Updated new homing cycle to error out when a pull-off motion detects
the limit is still active.
- Created a limits_get_state() function to centralize it. It reports
state as a bit-wise booleans according to axis numbering.
- Updated the print uint8 functions. Generalized it to allow both base2
and base10 printouts, while allowing base2 prints with N_AXIS digits
for limit state status reports. Doing this saved about 100bytes of
flash as well.
- Applied CoreXY status reporting bug fix by @phd0. Thanks!
- New configuration option at compile-time:
- Force alarm upon power-up or hard reset. When homing is enabled,
this is already the default behavior. This simply forces this all of
the time.
- GUI reporting mode. Removes most human-readable strings that GUIs
don’t need. This saves nearly 2KB in flash space that can be used for
other features.
- Hard limit force state check: In the hard limit pin change ISR, Grbl
by default sets the hard limit alarm upon any pin change to guarantee
the alarm is set. If this option is set, it’ll check the state within
the ISR, but can’t guarantee the pin will be read correctly if the
switch is bouncing. This option makes hard limit behavior a little less
annoying if you have a good buffered switch circuit that removes
bouncing and electronic noise.
- Software debounce bug fix. It was reading the pin incorrectly for the
setting.
- Re-factored some of the ‘$’ settings code.
- Homing cycle failure reports alarm feedback when the homing cycle is
exited via a reset, interrupted by a safety door switch, or does not
find the limit switch.
- Homing cycle bug fix when not finding the limit switch. It would just
idle before, but now will exit with an alarm.
- Licensing update. Corrected licensing according to lawyer
recommendations. Removed references to other Grbl versions.
- Overhauled the state machine and cleaned up its overall operation.
This involved creating a new ‘suspend’ state for what all external
commands, except real-time commands, are ignored. All hold type states
enter this suspend state.
- Removed ‘auto cycle start’ setting from Grbl. This was not used by
users in its intended way and is somewhat redundant, as GUI manage the
cycle start by streaming. It also muddled up how Grbl should interpret
how and when to execute a g-code block. Removing it made everything
much much simpler.
- Fixed a program pause bug when used with other buffer_sync commands.
- New safety door feature for OEMs. Immediately forces a feed hold and
then de-energizes the machine. Resuming is blocked until the door is
closed. When it is, it re-energizes the system and then resumes on the
normal toolpath.
- Safety door input pin is optional and uses the feed hold pin on A1.
Enabled by config.h define.
- Spindle and coolant re-energizing upon a safety door resume has a
programmable delay time to allow for complete spin up to rpm and
turning on the coolant before resuming motion.
- Safety door-style feed holds can be used instead of regular feed hold
(doesn’t de-energize the machine) with a ‘@‘ character. If the safety
door input pin is not enabled, the system can be resumed at any time.
- Re-organized source code files into a ‘grbl’ directory to lessen one
step in compiling Grbl through the Arduino IDE.
- Added an ‘examples’ directory with an upload .INO sketch to further
simplify compiling and uploading Grbl via the Arduino IDE.
- Updated the Makefile with regard to the source code no longer being
in the root directory. All files generated by compiling is placed in a
separate ‘build’ directory to keep things tidy. The makefile should
operate in the same way as it did before.