Commit Graph

16 Commits

Author SHA1 Message Date
chamnit
3854d200bb Mandate all probe cycles ignore feed overrides.
- For repeatability reasons, all G38.x probe cycles ignore feed rate
overrides and move at their programmed speed.

- The mandate can be removed with a new config.h option.

- Updated the documentation to reflect the change.
2016-10-25 20:03:30 -06:00
chamnit
a6f6431515 Resolved parking accessory handling issue.
- Yikes. Totally borked the last parking “fix”. Testing shows that all
accessories are now properly handled when retracting and restoring. It
was caused by not accounting for the planner re-factoring correctly in
the parking code.
2016-10-25 19:43:06 -06:00
Sonny Jeon
f8ca08ad66 Minor re-factoring. Fix an issue with parking and spindle restore.
- Altered the report counters to be count down, rather than count up.
Simplified some of the logic.

- Fixed an issue with parking restore. The spindle state would disable
then reenable.

- Clarified some of the config.h descriptions.

- Moved the compile-time checks from config.h to grbl.h. They don’t
belong in the config.h file.

- Refactored the initialization of the system variables in main.c.
System position and probe position were undefined when power cycled,
but were zero anyway. Added clear vector code to make it explicit.
2016-10-24 22:18:13 -06:00
Sonny Jeon
498dd62572 Spindle speed close to minimum fix.
- When spindle speed is close to the minimum rpm, the PWM value would
be zero or lower than allowed. The computation error was caused by
setting the minimum PWM value to zero, when it should have been 1.

- Added a compiler check for minimum PWM to be greater than zero.

- Moved some of the spindle PWM macros to a more appropriate place in
the cpu_map.h.
2016-10-23 13:55:50 -06:00
Sonny Jeon
8b76a39d5d Improved option for v0.9 GUI compatibility.
- 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.
2016-10-18 22:58:52 -06:00
Sonny Jeon
ed790c9fa2 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
2016-10-17 23:48:25 -06:00
chamnit
a0e96eb11a 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.
2016-10-12 19:18:05 -06:00
Sonny Jeon
6ab3cfbe7d 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.
2016-10-12 09:14:23 -06:00
Sonny Jeon
d1037268c8 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.
2016-10-11 17:07:44 -06:00
Sonny Jeon
e2e2bb5242 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.
2016-09-28 21:17:02 -06:00
Sonny Jeon
bf5fc48074 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.
2016-09-27 23:05:43 -06:00
Sonny Jeon
669735bea9 Update README and clarifications in jogging document. 2016-09-27 10:55:32 -06:00
Sonny Jeon
d21e06a201 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.
2016-09-26 22:33:19 -06:00
Sonny Jeon
b04faaf0d3 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 00:05:25 -06:00
Sonny Jeon
c0f61e4aac 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 14:41:41 -06:00
Sonny Jeon
e51e691eeb 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-22 23:15:55 -06:00