2016-09-27 06:33:19 +02:00
|
|
|
|
----------------
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
2016-09-25 08:05:25 +02:00
|
|
|
|
----------------
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
2016-09-24 22:41:41 +02:00
|
|
|
|
----------------
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
2016-09-23 07:15:55 +02:00
|
|
|
|
----------------
|
|
|
|
|
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.
|
|
|
|
|
|