- The `x` in `$x=val` would overflow when a value larger than 255 was
entered and passed to Grbl. This resulted with unintended parameters
being set by the overflow value. To fix, simply check for values larger
than 255 and error out.
- Sometime I HATE github. This push is just here to be able to describe
the last two pushes today that had a merging conflict and lost all of
the commit comments before.
- Setting $10 would cause $11 to be the same value. Missed a break
statement in the switch-case. Oops! Now fixed.
- CPU pin map for the future versions of Grbl introduced, but not yet
finalized. Still working on it and it’s subject to change.
- Added a new high-speed machining test g-code routine written by Todd
Fleming. Mills a pocket at 15,000mm/min. Do not use when connected to
your machine! You’ve been warned!
- Updated ShapeOko2 defaults based on machine testing of the basic
model provided by Inventables. (or close to it.) Should be pretty
conservative but much faster than before. For example, X and Y axes are
set at (10x) faster at 5000mm/min. It can run much faster than this,
but this seems like a safe speed for everyone.
- Updated README for master release.
- Added some new settings methods for clearing the EEPROM when changing
versions. Needs some more work, but it should ok for master release.
Should work on it more for the next version.
- When updating from v0.8, the settings will wipe the startup lines and
build info locations so that it won’t use whatever is already there in
the EEPROM. Parameters (coord offsets) are retained. They should be ok
during an upgrade.
- A G28/30 bug would cause it to move to machine coordinate [0,0,0] if
no axis words were sent. It was a typo in the new g-code parser. Fixed
and slightly re-written to be more consistent with the program flow.
- Updated the ShapeOko2 defaults based on testing on the real machine.
A little conservative, but it might change again after some more
testing.
- Now blocks ‘$$’ command during a motion, because the printout takes
too long and can starve the segment buffer.
- A very very low feed rate command like `G1 X100 F0.01` would cause
some floating-point round-off error and freeze Grbl into an infinite
loop. To fix it, introduced a MINIMUM_FEED_RATE parameter in config.h
to ensure motions always complete.
- MINIMUM_FEED_RATE is set at 1.0 mm/min by default. It’s recommended
that no rates are below this value, but 0.1mm/min may be ok in some
situations.
- Restored probe position syncing. Had removed a pull-off motion after
a probe cycle completes, but ended up de-synchronizing the g-code
parser and probing cycle positions. Putting the pull-off motion back
fixed the problem.
- Probing cycle would drop into a QUEUED state, if multiple G38.2 are
sent. It would not honor the auto cycle start flags. To fix, the auto
cycle start state is saved at the beginning of the probing cycle and
restored at the end, since the feed hold it uses to stop a triggered
probe will disable the auto start flag. For now it’s a patch, rather
than a permanent fix.
- protocol_buffer_synchronize() also has a failure case. Auto cycle
start does not get executed when the system is waiting in here, so if
it’s in a QUEUED state already, it won’t resume. Patched here, but not
fully resolved.
- Fixed a problem with the “view build info” command. The EEPROM write
would do weird things and corrupt the EEPROM. Not sure exactly what
caused it, but it’s likely a compiler problem with an improperly
defined EEPROM address. It didn’t have enough room to store a full
string. To fix, the build info EEPROM range was increased and the max
number of STARTUP_BLOCKS was reduced to 2 from 3.
- Lastly, when a $I view build info is used for the first time, it
would normally show an EEPROM read error, since it wasn’t cleared or
wasn’t therein the first place. It will now not show that error. A
patch rather than a permanent fix again.
- Bug fix for step and direction invert masks not immediately being in
effect. Now regenerates the masks when a user changes this setting.
- Bug fix for probing cycle. G-code standard mandates that there is an
error if the probe is already triggered when the cycle is commanded.
However, Grbl may have motions to pull off a previous probing cycle in
queue and can falsely lead to errors. To fix this, the triggered check
is performed within the probing cycle itself, right after the planner
buffer is synced. If there is an error, it will now alarm out as a
probe fail.
- `$I` prints the Grbl build info and version number. NOTE: `$I=xxx`
stores an additional 30 character string into EEPROM, which will be
printed with the build info the next time it’s run. This is for
identification purposes for users that have more than one system using
Grbl.
- Only minor changes were required to make the Arduino IDE compile all
of the Grbl’s source code (correctly using the C-compiler). Tested in
Windows and Mac and with the normal USB upload and with a programmer.