Commit Graph

68 Commits

Author SHA1 Message Date
Sonny Jeon
5eee10845b Pin state reporting of all pins. Flash optimization.
- New pin state realtime reporting feature. Instead of `Lim:000` for
limit state reports, the new feature shows `Pin:000|0|0000`, or
something similar. The `|` delimited fields indicate xyz limits, probe,
and control pin states, where 0 is always not triggered, and 1 is
triggered. Invert masks ARE accounted for.
  Each field may be enabled or disabled via the `$10` status report
setting. The probe and control pin flags are bits 5 and 6, respectively.

- Remove the now deprecated `REPORT_CONTROL_PIN_STATE` option in
config.h

- The old limit pin reports `Lim:000` may be re-enabled by commenting
out `REPORT_ALL_PIN_STATES` in config.h.

- Incremented the version letter (v1.0c) to indicate the change in
reporting style.

- Replaced all bit_true_atomic and bit_false_atomic macros with
function calls. This saved a couple hundred bytes of flash.
2015-11-09 21:54:26 -07:00
Sonny Jeon
9575199183 Optional line number reporting bug fix.
- Fixed a bug where it would not compile when USE_LINE_NUMBERS was
enabled.
2015-08-29 16:28:29 -06:00
Sonny Jeon
b3a53a4683 v1.0 Beta Release.
- Tons of new stuff in this release, which is fairly stable and well
tested. However, much more is coming soon!

- Real-time parking motion with safety door. When this compile option
is enabled, an opened safety door will cause Grbl to automatically feed
hold, retract, de-energize the spindle/coolant, and parks near Z max.
After the door is closed and resume is commanded, this reverses and the
program continues as if nothing happened. This is also highly
configurable. See config.h for details.

- New spindle max and min rpm ‘$’ settings! This has been requested
often. Grbl will output 5V when commanded to turn on the spindle at its
max rpm, and 0.02V with min rpm. The voltage and the rpm range are
linear to each other. This should help users tweak their settings to
get close to true rpm’s.

- If the new max rpm ‘$’ setting is set = 0 or less than min rpm, the
spindle speed PWM pin will act like a regular on/off spindle enable
pin. On pin D11.

- BEWARE: Your old EEPROM settings will be wiped! The new spindle rpm
settings require a new settings version, so Grbl will automatically
wipe and restore the EEPROM with the new defaults.

- Control pin can now be inverted individually with a
CONTROL_INVERT_MASK in the cpu_map header file. Not typical for users
to need this, but handy to have.

- Fixed bug when Grbl receive too many characters in a line and
overflows. Previously it would respond with an error per overflow
character and another acknowledge upon an EOL character. This broke the
streaming protocol. Now fixed to only respond with an error after an
EOL character.

- Fixed a bug with the safety door during an ALARM mode. You now can’t
home or unlock the axes until the safety door has been closed. This is
for safety reasons (obviously.)

- Tweaked some the Mega2560 cpu_map settings . Increased segment buffer
size and fixed the spindle PWM settings to output at a higher PWM
frequency.

- Generalized the delay function used by G4 delay for use by parking
motion. Allows non-blocking status reports and real-time control during
re-energizing of the spindle and coolant.

- Added spindle rpm max and min defaults to default.h files.

- Added a new print float for rpm values.
2015-08-27 21:37:19 -06:00
Sonny Jeon
3a68c22fab Individual control pin invert compile-option.
- Control pins may be individually inverted through a
CONTROL_INVERT_MASK macro. This mask is define in the cpu_map.h file.
2015-08-14 14:13:52 -06:00
Sonny Jeon
0427fd5b9f Version bump to v0.9j
- Version bump requested by OEMs to easily determine whether the
firmware supports the new EEPROM reset feature. Other than that, no
significant changes.
2015-07-17 08:19:57 -06:00
Sonny Jeon
8a84f8987d Updated README 2015-05-26 10:49:37 -06:00
Sonny Jeon
664854b9df Critical M0/2/30 fix. Homing updates.
- Critical fix for M0 program pause. Due to its recent change, it would
cause Grbl to suspend but wouldn’t notify the user of why Grbl was not
doing anything. The state would show IDLE and a cycle start would
resume it. Grbl now enters a HOLD state to better indicate the state
change.

- Critical fix for M2 and M30 program end. As with M0, the state
previously would show IDLE while suspended. Grbl now does not suspend
upon program end and leaves job control to the GUI. Grbl simply reports
a `[Pgm End]` as a feedback message and resets certain g-code modes.

- M2/30 g-code reseting fix. Previously Grbl would soft-reset after an
M2/30, but this was not complaint to the (linuxcnc) g-code standard. It
simply resets [G1,G17,G90,G94,G40,G54,M5,M9,M48] and keeps all other
modes the same.

- M0/M2/M30 check-mode fix. It now does not suspend the machine during
check-mode.

- Minor bug fix related to commands similar to G90.1, but not G90.1,
not reporting an unsupported command.

- Homing cycle refactoring. To help reduce the chance of users
misunderstanding their limit switch wiring, Grbl only moves a short
distance for the locate cycles only. In addition, the homing cycle
pulls-off the limit switch by the pull-off distance to re-engage and
locate home. This should improve its accuracy.

- HOMING_FORCE_ORIGIN now sets the origin to the pull-off location,
rather than where the limit switch was triggered.

- Updated default junction deviation to 0.01mm. Recent tests showed
that this improves Grbl’s cornering behavior a bit.

- Added the ShapeOko3 defaults.

- Added new feedback message `[Pgm End]` for M2/30 notification.

- Limit pin reporting is now a $10 status report option. Requested by
OEMs to help simplify support troubleshooting.
2015-05-17 13:25:36 -06:00
Sonny Jeon
4c20a2173f Commit history, logo license, full-arc fix.
- Commit history added to repo, as an easier way for people to see view
the changes over time.

- Grbl logo copyright license added. All rights reserved with regards
to the Grbl logo.

- G2/3 full circles would sometime not execute. The problem was due to
numerical round-off of a trig calculation. Added a machine epsilon
define to help detect and correct for this problem. Tested and should
not effect general operation of arcs.
2015-03-29 11:35:16 -06:00
Sungeun Jeon
234195e721 Compile-option for inverting spindle enable.
- Installed a compile-option for inverting the spindle enable pin for
certain electronics boards users have reported needing this.
2015-03-27 19:59:34 -06:00
Sungeun Jeon
ed29d8a122 New compile options and inverse time bug fix.
- Apparently inverse time motion were not working for quite some time.
Goes to show how many people actually use it. The calculation was bad
and is now fixed in this update. It should now work correctly.

- `;` comment type is now supported. This is standard on LinuxCNC and
common on 3d printers. It was previously not supported due to not
existing in the NIST standard, which is out-dated.

- New compile-option to ECHO the line received. This should help users
experiencing very weird problems and help diagnose if there is
something amiss in the communication to Grbl.

- New compile-option to use the spindle direction pin D13 as a spindle
enable pin with PWM spindle speed on D11. This feature has been
requested often from the laser cutter community. Since spindle
direction isn’t really of much use, it seemed like good good trade.
Note that M4 spindle enable counter-clock-wise support is removed for
obvious reasons, while M3 and M5 still work.
2015-03-27 18:13:21 -06:00
Sungeun Jeon
24ce518fda Cleaned-up limit pin reporting and comments.
- Cleaned up the limit pin state reporting option to display only the
state per axis, rather than the whole port. It’s organized by an XYZ
order, 0(low)-1(high), and generally looks like `Lim:001`.

- Separated the control pin state reporting from limit state reporting
as a new compile option. This stayed the same in terms of showing the
entire port in binary, since it’s not anticipated that this will be
used much, if at all.

- Updated some of the gcode source comments regarding supported g-codes.
2015-03-14 09:27:48 -06:00
Sonny Jeon
76730176da Arduino IDE compatibility and minor homing fixes
- Added an include in the right spot, if a user tries to compile and
upload Grbl through the Arduino IDE with the old way.

- Fixed a minor bug with homing max travel calculations. It was causing
simultaneous axes homing to move slow than it did before.
2015-03-04 06:50:26 -07:00
Sonny Jeon
d4ae8f94af Fixed config.h to Grbl release defaults.
- REPORT_GUI_MODE was accidentally enabled, when it shouldn’t have.
2015-02-23 18:50:32 -07:00
Sonny Jeon
c7db1c4546 New configuration options.
- New configuration option at compile-time:
 - Force alarm upon power-up or hard reset. When homing is enabled,
this is already the default behavior. This simply forces this all of
the time.
 - GUI reporting mode. Removes most human-readable strings that GUIs
don’t need. This saves nearly 2KB in flash space that can be used for
other features.
 - Hard limit force state check: In the hard limit pin change ISR, Grbl
by default sets the hard limit alarm upon any pin change to guarantee
the alarm is set. If this option is set, it’ll check the state within
the ISR, but can’t guarantee the pin will be read correctly if the
switch is bouncing. This option makes hard limit behavior a little less
annoying if you have a good buffered switch circuit that removes
bouncing and electronic noise.

- Software debounce bug fix. It was reading the pin incorrectly for the
setting.

- Re-factored some of the ‘$’ settings code.
2015-02-23 18:45:26 -07:00
Sonny Jeon
8c9fc7943e Homing alarm upon no switch. Licensing update.
- Homing cycle failure reports alarm feedback when the homing cycle is
exited via a reset, interrupted by a safety door switch, or does not
find the limit switch.

- Homing cycle bug fix when not finding the limit switch. It would just
idle before, but now will exit with an alarm.

- Licensing update. Corrected licensing according to lawyer
recommendations. Removed references to other Grbl versions.
2015-02-15 17:36:08 -07:00
Sonny Jeon
565519c144 Doc re-org. New Grbl Logos! 2015-02-13 18:39:37 -07:00
Sonny Jeon
4bdc20ffb9 Overhauled state machine. New safety door feature.
- Overhauled the state machine and cleaned up its overall operation.
This involved creating a new ‘suspend’ state for what all external
commands, except real-time commands, are ignored. All hold type states
enter this suspend state.

- Removed ‘auto cycle start’ setting from Grbl. This was not used by
users in its intended way and is somewhat redundant, as GUI manage the
cycle start by streaming. It also muddled up how Grbl should interpret
how and when to execute a g-code block. Removing it made everything
much much simpler.

- Fixed a program pause bug when used with other buffer_sync commands.

- New safety door feature for OEMs. Immediately forces a feed hold and
then de-energizes the machine. Resuming is blocked until the door is
closed. When it is, it re-energizes the system and then resumes on the
normal toolpath.

- Safety door input pin is optional and uses the feed hold pin on A1.
Enabled by config.h define.

- Spindle and coolant re-energizing upon a safety door resume has a
programmable delay time to allow for complete spin up to rpm and
turning on the coolant before resuming motion.

- Safety door-style feed holds can be used instead of regular feed hold
(doesn’t de-energize the machine) with a ‘@‘ character. If the safety
door input pin is not enabled, the system can be resumed at any time.
2015-02-11 21:19:00 -07:00
Sonny Jeon
b237ad566a File re-organization. New Makefile.
- Re-organized source code files into a ‘grbl’ directory to lessen one
step in compiling Grbl through the Arduino IDE.

- Added an ‘examples’ directory with an upload .INO sketch to further
simplify compiling and uploading Grbl via the Arduino IDE.

- Updated the Makefile with regard to the source code no longer being
in the root directory. All files generated by compiling is placed in a
separate ‘build’ directory to keep things tidy. The makefile should
operate in the same way as it did before.
2015-02-10 19:30:40 -07:00