- Rudimentary CoreXY kinematics support. Didn’t test, but homing and
feed holds should work. See config.h. Please report successes and
issues as we find bugs.
- G40 (disable cutter comp) is now “supported”. Meaning that Grbl will
no longer issue an error when typically sent in g-code program header.
- Refactored coolant and spindle state setting into separate functions
for future features.
- Configuration option for fixing homing behavior when there are two
limit switches on the same axis sharing an input pin.
- Created a new “grbl.h” that will eventually be used as the main
include file for Grbl. Also will help simply uploading through the
Arduino IDE
- Separated out the alarms execution flags from the realtime (used be
called runtime) execution flag variable. Now reports exactly what
caused the alarm. Expandable for new alarms later on.
- Refactored the homing cycle to support CoreXY.
- Applied @EliteEng updates to Mega2560 support. Some pins were
reconfigured.
- Created a central step to position and vice versa function. Needed
for non-traditional cartesian machines. Should make it easier later.
- Removed the new CPU map for the Uno. No longer going to used. There
will be only one configuration to keep things uniform.
- Completely overhauled the g-code parser. It’s now 100%* compliant. (*
may have some bugs). Being compliant, here are some of the major
differences.
- SMALLER and JUST AS FAST! A number of optimizations were found that
sped things up and allowed for the more thorough error-checking to be
installed without a speed hit. Trimmed a lot of ‘fat’ in the parser and
still was able to make it significantly smaller than it was.
- No default feed rate setting! Removed completely! This doesn’t exist
in the g-code standard. So, it now errors out whenever it’s undefined
for motions that require it (G1/2/3/38.2).
- Any g-code parser error expunges the ENTIRE block. This means all
information is lost and not passed on to the running state. Before some
of the states would remain, which could have led to some problems.
- If the g-code block passes all of the error-checks, the g-code state
is updated and all motions are executed according to the order of
execution.
- Changes in spindle speed, when already running, will update the
output pin accordingly. This fixes a bug, where it wouldn’t update the
speed.
- Update g-code parser error reporting. Errors now return detailed
information of what exact went wrong. The most common errors return a
short text description. For less common errors, the parser reports
‘Invalid gcode ID:20’, where 20 is a error ID. A list of error code IDs
and their descriptions will be documented for user reference elsewhere
to save flash space.
- Other notable changes:
- Added a print integer routine for uint8 variables. This saved
significant flash space by switching from a heavier universal print
integer routine.
- Saved some flash space with our own short hypotenuse calculation
- Some arc computation flash and memory optimizations.
- Added a new source and header file called system. These files contain
the system commands and variables, as well as all of the system headers
and standard libraries Grbl uses. Centralizing some of the code.
- Re-organized the include headers throughout the source code.
- ENABLE_M7 define was missing from config.h. Now there.
- SPINDLE_MAX_RPM and SPINDLE_MIN_RPM now defined in config.h. No
uncommenting to prevent user issues. Minimum spindle RPM now provides
the lower, near 0V, scale adjustment, i.e. some spindles can go really
slow so why use up our 256 voltage bins for them?
- Remove some persistent variables from coolant and spindle control.
They were redundant.
- Removed a VARIABLE_SPINDLE define in cpu_map.h that shouldn’t have
been there.
- Changed the DEFAULT_ARC_TOLERANCE to 0.002mm to improve arc tracing.
Before we had issues with performance, no longer.
- Fixed a bug with the hard limits and the software debounce feature
enabled. The invert limit pin setting wasn’t honored.
- Fixed a bug with the homing direction mask. Now is like it used to
be. At least for now.
- Re-organized main.c to serve as only as the reset/initialization
routine. Makes things a little bit clearer in terms of execution
procedures.
- Re-organized protocol.c as the overall master control unit for
execution procedures. Not quite there yet, but starting to make a
little more sense in how things are run.
- Removed updating of old settings records. So many new settings have
been added that it’s not worth adding the code to migrate old user
settings.
- Tweaked spindle_control.c a bit and made it more clear and consistent
with other parts of Grbl.
- Tweaked the stepper disable bit code in stepper.c. Requires less
flash memory.
- Variable spindle speed output as a configuration option. Thanks
@EliteEng! When enabled, the Z-limit (D11) and spindle enable(D12) pins
switch to allow access to the hardware PWM output on pin D11.
Otherwise, everything should work as it does.
- Removed option for inverting the spindle and coolant enable pins.
This is a safety hazard, especially for the spindle. When Grbl
initializes, all pins are momentarily low until it finishes booting. If
an invert is enabled, this means the spindles can be energized briefly
during this time. If users need signal inversion, it’s recommended to
just wire in an inversion circuit instead.
- Cleared out references to spindle variable output in terms of step
signal. This isn’t complete and requires more deliberation before
installing.
- Cleared up and cleaned up some code and config comments.
- Homing travel calculations fixed. It was computing the min travel
rather than max.
- Auto-start disable and pausing after spindle or dwell commands.
Related to plan_synchronize() function call. Now fixed, but still need
to work on the system state.
- Pushed a fix to make this branch more Arduino IDE compatible. Removed
extern call in nuts_bolts.c
- Updated the stepper configuration option of enabling or disabling the
new Adaptive Multi-Axis Step Smoothing Algorithm. Now works either way.
- Updated some copyright info.
NOTE: Another incremental update. Likely buggy, still a ways to go
before everything is installed, such as startup blocks.
- Changed the '$' command to print help. '$$' now prints Grbl settings.
The help now instructs the user of runtime commands, switch toggling,
homing, etc. Jogging will be added to these in v0.9.
- Added switches: block delete, opt stop, and single block mode.
- Now can print the g-code parser state and persistent parameters
(coord sys) to view what Grbl has internally.
- Made the gc struct in the g-code parser global to be able to print
the states. Also moved coordinate system tracking from sys to gc struct.
- Changed up the welcome flag and updated version to v0.8c.
- Removed spindle speed from gcode parser. Not used.
- Added coolant control! Flood control (M8) functions on analog pin 0.
Mist control (M7) is compile-time optional and is on analog pin 1. (Use
only if you have multiple coolants on your system). Based on work by
@openpnp.
- Fixed some variable assignments in spindle control.