d21e06a201
- 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.
281 lines
13 KiB
Plaintext
281 lines
13 KiB
Plaintext
----------------
|
||
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.
|
||
|