8b76a39d5d
- Addressed an issue with backward compatibility with Grbl v0.9-style GUIs. - It still may not work due to new data and states coming back from Grbl v1.1. Regardless, DO NOT TRY TO USE THE COMPATIBILITY MODE UNTIL THERE IS A REALLY GOOD REASON TO. - v0.9 GUI compatibility mode will be removed in future versions. You’ve been warned. It’s highly recommended for GUIs to update to the new v1.1 interface. - Compability mode will only fit on an Arduino Uno due to size increases. - Removed the REPORT_GUI_MODE compile option since it’s part of the v1.1 interface standard. - Updated the documentation to better describe the compatibility mode build option.
508 lines
21 KiB
Plaintext
508 lines
21 KiB
Plaintext
----------------
|
||
Date: 2016-10-17
|
||
Author: Sonny Jeon
|
||
Subject: v1.1d: Tweaked interface a bit. Added realtime spindle speed and build option data. Minor bug fixes.
|
||
|
||
- Increment to v1.1d due to interface tweaks.
|
||
|
||
- Based on GUI dev feedback, the toggle overrides report was removed
|
||
and replace with showing “accessory state”. This shows a character if a
|
||
particular accessory is enabled, like the spindle or flood coolant.
|
||
These can be directly altered by the toggle overrides, so when they
|
||
execute, a GUI will be able to observe the state altering as feedback.
|
||
|
||
- Altered the real-time feed rate to show real-time spindle speed as
|
||
well. It was an over-sight on my part. It’s needed because it’s hard to
|
||
know what the current spindle speed is when overrides are altering it.
|
||
Especially during something like a laser cutting job when its important
|
||
to know how spindle speed overrides are effecting things.
|
||
|
||
- Real-time spindle speed is not shown if VARIABLE_SPINDLE is disabled.
|
||
The old real-time feed rate data field will show instead.
|
||
|
||
- Compile-time option data is now included in another message
|
||
immediately following the build info version string, starting with
|
||
`[OPT:`. A character code follows the data type name with each
|
||
indicating a particular option enabled or disabled. This will help
|
||
immensely with debugging Grbl as well as help GUIs know exactly how
|
||
Grbl was compiled.
|
||
|
||
- These interface changes are detailed in the updated documentation.
|
||
|
||
- Reduced the default planner buffer size from 17 to 16. Needed to free
|
||
up some memory…
|
||
|
||
- For increasing the serial TX buffer size from 90 to 104 bytes. The
|
||
addition of real-time spindle speeds and accessory enable data required
|
||
a bigger buffer. This is to ensure Grbl is performing at optimal levels.
|
||
|
||
- Refactored parts of the spindle and coolant control code to make it
|
||
more consistent to each other and how it was called. It was a little
|
||
messy. The changes made it easier to track what each function call was
|
||
doing based on what was calling it.
|
||
|
||
- Created a couple of new get_state functions for the spindle and
|
||
coolant. These are called by the accessory state report to look
|
||
directly at the pin state, rather than track how it was set. This
|
||
guarantees that the state is reported correctly.
|
||
|
||
- Updated the g-code parser, parking motion, sleep mode, and spindle
|
||
stop calls to refactored spindle and coolant code.
|
||
|
||
- Added a compile-time option to enable homing individual axes, rather
|
||
than having only the main homing cycle. The actual use case for this is
|
||
pretty rare. It’s not recommended you enable this, unless you have a
|
||
specific application for it. Otherwise, just alter the homing cycle
|
||
itself.
|
||
|
||
- Refactored the printFloat() function to not show a decimal point if
|
||
there are no trailing values after it. For example, `1.` now shows `1`.
|
||
|
||
- Fixed an issue regarding spindle speed overrides no being applied to
|
||
blocks without motions.
|
||
|
||
- Removed the toggle_ovr_mask system variable and replaced with
|
||
spindle_stop_ovr system variable. Coolant toggles don’t need to be
|
||
tracked.
|
||
|
||
- Updated README
|
||
|
||
|
||
----------------
|
||
Date: 2016-10-17
|
||
Author: Will Winder
|
||
Subject: Modify code CSV format. (#10)
|
||
|
||
- Wrap value in quotes to avoid issue with embedded commas. This occurs
|
||
in one of the alarm codes.
|
||
|
||
- Change header row format to allow same parsing code as data rows.
|
||
|
||
----------------
|
||
Date: 2016-10-12
|
||
Author: chamnit
|
||
Subject: Merge branch 'dev' into edge
|
||
|
||
|
||
----------------
|
||
Date: 2016-10-12
|
||
Author: chamnit
|
||
Subject: Added settings documentation. Very minor bug fix to step direction handling.
|
||
|
||
- Added v1.1 settings documentation to the markdown folder.
|
||
|
||
- Fixed a very minor bug in the step direction handling upon wakeup.
|
||
The direction mask would temporarily go back to default mask for about
|
||
a millisecond when moving in the same non-default direction. It did not
|
||
effect Grbl behavior before, but fixed for consistency.
|
||
|
||
|
||
----------------
|
||
Date: 2016-10-12
|
||
Author: Sonny Jeon
|
||
Subject: Spindle speed bug fix.
|
||
|
||
- Spindle speed updating wasn’t working in the g-code parser due to
|
||
some borked up logic on my part. Fixed it and should be operating as
|
||
intended for both normal and laser spindle modes.
|
||
|
||
- Elaborated a little more on the new sleep mode in the documentation.
|
||
|
||
|
||
----------------
|
||
Date: 2016-10-11
|
||
Author: Sonny Jeon
|
||
Subject: v1.1c: New sleep mode. Laser mode and other bug fixes.
|
||
|
||
- New $SLP sleep mode that will disable spindle, coolant, and stepper
|
||
enable pins. Allows users to disable their steppers without having to
|
||
alter their settings. A reset is required to exit and re-initializes in
|
||
alarm state.
|
||
|
||
- Laser mode wasn’t updating the spindle PWM correctly (effected
|
||
spindle speed overrides) and not checking for modal states either.
|
||
Fixed both issues.
|
||
|
||
- While in laser mode, parking motions are ignored, since the power off
|
||
delay with the retract motion would burn the material. It will just
|
||
turn off and not move. A restore immediately powers up and resumes. No
|
||
delays.
|
||
|
||
- Changing rpm max and min settings did not update the spindle PWM
|
||
calculations. Now fixed.
|
||
|
||
- Increased default planner buffer from 16 to 17 block. It seems to be
|
||
stable, but need to monitor this carefully.
|
||
|
||
- Removed software debounce routine for limit pins. Obsolete.
|
||
|
||
- Fixed a couple parking motion bugs. One related to restoring
|
||
incorrectly and the other the parking rate wasn’t compatible with the
|
||
planner structs.
|
||
|
||
- Fixed a bug caused by refactoring the critical alarms in a recent
|
||
push. Soft limits weren’t invoking a critical alarm.
|
||
|
||
- Updated the documentation with the new sleep feature and added some
|
||
more details to the change summary.
|
||
|
||
|
||
----------------
|
||
Date: 2016-09-28
|
||
Author: Sonny Jeon
|
||
Subject: New jog cancel real-time command. Parser typo fix from last push.
|
||
|
||
- Added a new jog cancel real-time command. Rather than depending on a
|
||
feed hold to cancel a jogging motion, this realtime command can be used
|
||
instead. The main advantage is if a feed hold is used, you can
|
||
accidentally hold the machine right when Grbl returns to IDLE after
|
||
completing a jog. And the GUI doesn’t have to worry about tracking this
|
||
either.
|
||
|
||
- Fixed a typo in the g-code parser edits from the last push. Was
|
||
causing the G10 set coordinate system command to not work correctly.
|
||
|
||
- Updated the documentation with the jog cancel command.
|
||
|
||
|
||
----------------
|
||
Date: 2016-09-27
|
||
Author: Sonny Jeon
|
||
Subject: Refactored g-code parser. Saved 60bytes flash and some ram. Edited Readme.
|
||
|
||
- Freed up another 60 bytes of flash and 12-24 bytes of stack RAM by
|
||
using the pre-allocated IJK arc offset vector that is guaranteed to be
|
||
not in use. Only G10 and G28/30 require fetching from EEPROM and
|
||
retaining extra data. Both commands use axis words, which rules out
|
||
G2/3 arcs using IJK offsets existing in same block. Not ideal, but
|
||
every byte helps.
|
||
|
||
- Edited README.
|
||
|
||
|
||
----------------
|
||
Date: 2016-09-27
|
||
Author: Sonny Jeon
|
||
Subject: Update README and clarifications in jogging document.
|
||
|
||
|
||
----------------
|
||
Date: 2016-09-26
|
||
Author: Sonny Jeon
|
||
Subject: v1.1b: Tweaked Bf reports, jogging doc, saved another 160 bytes, minor bug fixes
|
||
|
||
- Increment to v1.1b due to status report tweak.
|
||
|
||
- Tweaked the buffer state status reports to show bytes and blocks
|
||
available, rather than in use. This does not require knowing the buffer
|
||
sizes beforehand. It’s implicit.
|
||
|
||
- Also, since buffer states are not used by most devs (after
|
||
inquiries), it is no longer enabled by default and a status mask option
|
||
was added for this.
|
||
|
||
- Fixed some typos and updated for the report tweak in the
|
||
documentation.
|
||
|
||
- Wrote a joystick implementation concept in the jogging markdown
|
||
document. Outlines how to get a low-latency feel to a joystick (and
|
||
other input devices).
|
||
|
||
- Removed XON/XOFF support. It’s not used by anyone because of its
|
||
inherent problems. Remains in older versions for reference.
|
||
|
||
- Added a compile option on how to handle the probe position during a
|
||
check mode.
|
||
|
||
- Fixed a jogging bug. If G93 is the modal state before a jogging
|
||
motion, the feed rate did not get calculated correctly. Fixed the issue.
|
||
|
||
- Refactored some code to save another 160+ bytes. Included an improved
|
||
float vector comparison macro and reducing a few large and repetitive
|
||
function calls.
|
||
|
||
- Fixed a probing bug (existing in v0.9 too) where the target positions
|
||
were not set correct and error handling was improper.
|
||
|
||
|
||
----------------
|
||
Date: 2016-09-25
|
||
Author: Sonny Jeon
|
||
Subject: Addressed much larger flash size with avr-gcc v4.9.2. Refactored reports to save 160KB.
|
||
|
||
- The newest Arduino IDE 1.6.12 has recently updated to avr-gcc v4.9.2.
|
||
Unfortunately, it produces a compiled size almost 0.7KB to 1KB larger
|
||
than prior versions! This can easily cause the base build to exceed the
|
||
Arduino Duemilanove/Nano flash limit of 30.5KB. The Arduino Uno seems
|
||
to be ok still with its 31.5KB flash limit.
|
||
|
||
- Makefile `-flto` compile flag added to cut down on the horrible flash
|
||
size when using the new avr-gcc. (Edit Makefile and remove comment on
|
||
COMPILE definition). This brings it in-line with what the IDE produces.
|
||
|
||
- Functionalized repetitive tasks in report.c to try to reduce overall
|
||
flash size. Successfully cut down about 160bytes.
|
||
|
||
- Removed printFloat_SettingValue() and printFloat_RPMValue()
|
||
functions. These aren’t required and can be replaced with a direct call
|
||
to printFloat() because they don’t require a unit conversion check.
|
||
|
||
|
||
----------------
|
||
Date: 2016-09-24
|
||
Author: Sonny Jeon
|
||
Subject: Serial RX count bug fix. Settings codes CSV. More documentation.
|
||
|
||
- Reverted back the serial RX count function to how it was. The
|
||
variable type was unsigned and cause an integer underflow whenever the
|
||
calculation produced a negative number. The old way was the correct way.
|
||
|
||
- Lots of minor edits to the code CSVs and markdown documents.
|
||
|
||
- Expanded on explaining feedback messages and startup line execution
|
||
feedback.
|
||
|
||
- Created a new settings codes CSV to help GUIs import the values and
|
||
meanings.
|
||
|
||
|
||
----------------
|
||
Date: 2016-09-22
|
||
Author: Sonny Jeon
|
||
Subject: Increment to v1.1a, minor compile bug fix, tweaked communication protocol, more docs.
|
||
|
||
- Incremented to v1.1a, rather than keep 1.0e. This is because there
|
||
are existing v1.0 installations. Don’t want to confuse people further.
|
||
|
||
- Certain version of the Arduino IDE did not like the `inline` in the
|
||
function header. Removed from spindle_control files to fix the problem.
|
||
|
||
- Tweaked the communication protocol slightly. Added message type
|
||
indicators for all `[]`bracketed feedback messages. It’s been
|
||
problematic for GUI dev to try to determine the context of a message
|
||
and how it should be handled. These indictors should help tremendously
|
||
to remove context all together.
|
||
|
||
- Also altered how `$N` startup lines are presented when executed. They
|
||
now start with an open chevron ‘>’ followed by the line and an ‘:ok’ to
|
||
indicate it executed. The ‘ok’ is on the same line intentionally so it
|
||
doesn’t mess up a streaming protocol counter.
|
||
|
||
- Managed to save a 100+KB from refactoring parts of report.c. (Thanks
|
||
Vasilis!) Freed up room to alter the protocol a little.
|
||
|
||
- Wrote a markdown document on interface messaging to make it clear how
|
||
it’s intended to work. See interface.md in /doc/markdown
|
||
|
||
- Started to pull in some Wiki pages from the old grbl site and
|
||
beginning to update them for v1.1.
|
||
|
||
- Created new commit log for v1.1.
|
||
|
||
|
||
----------------
|
||
Date: 2016-09-22
|
||
Author: Sonny Jeon
|
||
Subject: Merge pull request #1 from winder/dev
|
||
|
||
Add locale to code CSVs.
|
||
|
||
----------------
|
||
Date: 2016-09-22
|
||
Author: winder
|
||
Subject: Add locale to code CSVs.
|
||
|
||
|
||
----------------
|
||
Date: 2016-09-21
|
||
Author: chamnit
|
||
Subject: Grbl v1.0e huge beta release. Overrides and new reporting.
|
||
|
||
- Feature: Realtime feed, rapid, and spindle speed overrides. These
|
||
alter the running machine state within tens of milliseconds!
|
||
- Feed override: 100%, +/-10%, +/-1% commands with values 1-200% of
|
||
programmed feed
|
||
- Rapid override: 100%, 50%, 25% rapid rate commands
|
||
- Spindle speed override: 100%, +/-10%, +/-1% commands with values
|
||
50-200% of programmed speed
|
||
- Override values have configurable limits and increments in
|
||
config.h.
|
||
- Feature: Realtime toggle overrides for spindle stop, flood coolant,
|
||
and optionally mist coolant
|
||
- Spindle stop: Enables and disables spindle during a feed hold.
|
||
Automatically restores last spindles state.
|
||
- Flood and mist coolant: Immediately toggles coolant state until
|
||
next toggle or g-code coolant command.
|
||
- Feature: Jogging mode! Incremental and absolute modes supported.
|
||
- Grbl accepts jogging-specific commands like $J=X100F50. An axis
|
||
word and feed rate are required. G20/21 and G90/G91 commands are
|
||
accepted.
|
||
- Jog motions can be canceled at any time by a feed hold `!`
|
||
command. The buffer is automatically flushed. (No resetting required).
|
||
- Jog motions do not alter the g-code parser state so GUIs don’t
|
||
have to track what they changed and correct it.
|
||
- Feature: Laser mode setting. Allows Grbl to execute continuous
|
||
motions with spindle speed and state changes.
|
||
- Feature: Significantly improved status reports. Overhauled to cram in
|
||
more meaningful data and still make it smaller on average.
|
||
- All available data is now sent by default, but does not appear if
|
||
it doesn’t change or is not active.
|
||
- Machine position(MPos) or work position(WPos) is reported but not
|
||
both at the same time. Instead, the work coordinate offsets (WCO)are
|
||
sent intermittently whenever it changes or refreshes after 10-30 status
|
||
reports. Position vectors are easily computed by WPos = MPos - WCO.
|
||
- All data has changed in some way. Details of changes are in the
|
||
markdown documents and wiki.
|
||
- Feature: 16 new realtime commands to control overrides. All in
|
||
extended-ASCII character space.
|
||
- While they are not easily typeable and requires a GUI, they can’t
|
||
be accidentally triggered by some latent character in the g-code
|
||
program and have tons of room for expansion.
|
||
- Feature: New substates for HOLD and SAFETY DOOR. A `:x` is appended
|
||
to the state, where `x` is an integer and indicates a substate.
|
||
- For example, each integer of a door state describes in what phase
|
||
the machine is in during parking. Substates are detailed in the
|
||
documentation.
|
||
- Feature: With the alarm codes, homing and probe alarms have been
|
||
expanded with more codes to provide more exact feedback on what caused
|
||
the alarm.
|
||
- Feature: New hard limit check upon power-up or reset. If detected, a
|
||
feedback message to check the limit switches sent immediately after the
|
||
welcome message.
|
||
- May be disabled in config.h.
|
||
|
||
- OEM feature: Enable/disable `$RST=` individual commands based on
|
||
desired behavior in config.h.
|
||
- OEM feature: Configurable EEPROM wipe to prevent certain data from
|
||
being deleted during firmware upgrade to a new settings version or
|
||
`RST=*` command.
|
||
- OEM feature: Enable/disable the `$I=` build info write string with
|
||
external EEPROM write example sketch.
|
||
- This prevents a user from altering the build info string in
|
||
EEPROM. This requires the vendor to write the string to EEPROM via
|
||
external means. An Arduino example sketch is provided to accomplish
|
||
this. This would be useful for contain product data that is
|
||
retrievable.
|
||
|
||
- Tweak: All feedback has been drastically trimmed to free up flash
|
||
space for the v1.0 release.
|
||
- The `$` help message is just one string, listing available
|
||
commands.
|
||
- The `$$` settings printout no longer includes descriptions. Only
|
||
the setting values. (Sorry it’s this or remove overrides!)
|
||
- Grbl `error:` and `ALARM:` responses now only contain codes. No
|
||
descriptions. All codes are explained in documentation.
|
||
- Grbl’s old feedback style may be restored via a config.h, but
|
||
keep in mind that it will likely not fit into the Arduino’s flash space.
|
||
- Tweak: Grbl now forces a buffer sync or stop motion whenever a g-code
|
||
command needs to update and write a value to EEPROM or changes the work
|
||
coordinate offset.
|
||
- This addresses two old issues in all prior Grbl versions. First,
|
||
an EEPROM write requires interrupts to be disabled, including stepper
|
||
and serial comm. Steps can be lost and data can be corrupted. Second,
|
||
the work position may not be correlated to the actual machine position,
|
||
since machine position is derived from the actual current execution
|
||
state, while work position is based on the g-code parser offset state.
|
||
They are usually not in sync and the parser state is several motions
|
||
behind. This forced sync ensures work and machine positions are always
|
||
correct.
|
||
- This behavior can be disabled through a config.h option, but it’s
|
||
not recommended to do so.
|
||
- Tweak: To make status reports standardized, users can no longer
|
||
change what is reported via status report mask, except for only
|
||
toggling machine or work positions.
|
||
- All other data fields are included in the report and can only be
|
||
disabled through the config.h file. It’s not recommended to alter this,
|
||
because GUIs will be expecting this data to be present and may not be
|
||
compatible.
|
||
- Tweak: Homing cycle and parking motion no longer report a negative
|
||
line number in a status report. These will now not report a line number
|
||
at all.
|
||
- Tweak: New `[Restoring spindle]` message when restoring from a
|
||
spindle stop override. Provides feedback what Grbl is doing while the
|
||
spindle is powering up and a 4.0 second delay is enforced.
|
||
- Tweak: Override values are reset to 100% upon M2/30. This behavior
|
||
can be disabled in config.h
|
||
- Tweak: The planner buffer size has been reduced from 18 to 16 to free
|
||
up RAM for tracking and controlling overrides.
|
||
- Tweak: TX buffer size has been increased from 64 to 90 bytes to
|
||
improve status reporting and overall performance.
|
||
- Tweak: Removed the MOTION CANCEL state. It was redundant and didn’t
|
||
affect Grbl’s overall operation by doing so.
|
||
- Tweak: Grbl’s serial buffer increased by +1 internally, such that 128
|
||
bytes means 128, not 127 due to the ring buffer implementation. Long
|
||
overdue.
|
||
- Tweak: Altered sys.alarm variable to be set by alarm codes, rather
|
||
than bit flags. Simplified how it worked overall.
|
||
- Tweak: Planner buffer and serial RX buffer usage has been combined in
|
||
the status reports.
|
||
- Tweak: Pin state reporting has been refactored to report only the
|
||
pins “triggered” and nothing when not “triggered”.
|
||
- Tweak: Current machine rate or speed is now included in every report.
|
||
- Tweak: The work coordinate offset (WCO) and override states only need
|
||
to be refreshed intermittently or reported when they change. The
|
||
refresh rates may be altered for each in the config.h file with
|
||
different idle and busy rates to lessen Grbl’s load during a job.
|
||
- Tweak: For temporary compatibility to existing GUIs until they are
|
||
updated, an option to revert back to the old style status reports is
|
||
available in config.h, but not recommended for long term use.
|
||
- Tweak: Removed old limit pin state reporting option from config.h in
|
||
lieu of new status report that includes them.
|
||
- Tweak: Updated the defaults.h file to include laser mode, altered
|
||
status report mask, and fix an issue with a missing invert probe pin
|
||
default.
|
||
|
||
- Refactor: Changed how planner line data is generated and passed to
|
||
the planner and onto the step generator. By making it a struct
|
||
variable, this saved significant flash space.
|
||
- Refactor: Major re-factoring of the planner to incorporate override
|
||
values and allow for re-calculations fast enough to immediately take
|
||
effect during operation. No small feat.
|
||
- Refactor: Re-factored the step segment generator for re-computing new
|
||
override states.
|
||
- Refactor: Re-factored spindle_control.c to accommodate the spindle
|
||
speed overrides and laser mode.
|
||
- Refactor: Re-factored parts of the codebase for a new jogging mode.
|
||
Still under development though and slated to be part of the official
|
||
v1.0 release. Hang tight.
|
||
- Refactor: Created functions for computing a unit vector and value
|
||
limiting based on axis maximums to free up more flash.
|
||
- Refactor: The spindle PWM is now set directly inside of the stepper
|
||
ISR as it loads new step segments.
|
||
- Refactor: Moved machine travel checks out of soft limits function
|
||
into its own since jogging uses this too.
|
||
- Refactor: Removed coolant_stop() and combined with
|
||
coolant_set_state().
|
||
- Refactor: The serial RX ISR forks off extended ASCII values to
|
||
quickly assess the new override realtime commands.
|
||
- Refactor: Altered some names of the step control flags.
|
||
- Refactor: Improved efficiency of the serial RX get buffer count
|
||
function.
|
||
- Refactor: Saved significant flash by removing and combining print
|
||
functions. Namely the uint8 base10 and base2 functions.
|
||
- Refactor: Moved the probe state check in the main stepper ISR to
|
||
improve its efficiency.
|
||
- Refactor: Single character printPgmStrings() went converted to direct
|
||
serial_write() commands to save significant flash space.
|
||
|
||
- Documentation: Detailed Markdown documents on error codes, alarm
|
||
codes, messages, new real-time commands, new status reports, and how
|
||
jogging works. More to come later and will be posted on the Wiki as
|
||
well.
|
||
- Documentation: CSV files for quick importing of Grbl error and alarm
|
||
codes.
|
||
|
||
- Bug Fix: Applied v0.9 master fixes to CoreXY homing.
|
||
- Bug Fix: The print float function would cause Grbl to crash if a
|
||
value was 1e6 or greater. Increased the buffer by 3 bytes to help
|
||
prevent this in the future.
|
||
- Bug Fix: Build info and startup string EEPROM restoring was not
|
||
writing the checksum value.
|
||
- Bug Fix: Corrected an issue with safety door restoring the proper
|
||
spindle and coolant state. It worked before, but breaks with laser mode
|
||
that can continually change spindle state per planner block.
|
||
- Bug Fix: Move system position and probe position arrays out of the
|
||
system_t struct. Ran into some compiling errors that were hard to track
|
||
down as to why. Moving them out fixed it.
|
||
|