Commit Graph

120 Commits

Author SHA1 Message Date
Sonny Jeon
420c7c2584 Added coolant control (M7*, M8, M9). Mist control can be enabled via config.h.
- Added coolant control! Flood control (M8) functions on analog pin 0.
Mist control (M7) is compile-time optional and is on analog pin 1. (Use
only if you have multiple coolants on your system). Based on work by
@openpnp.

- Fixed some variable assignments in spindle control.
2012-09-21 11:14:13 -06:00
Sonny Jeon
4d3c720bcc M30 minor bug fix.
Order of operations was off. Now works as intended,
2012-09-19 20:50:24 -06:00
Sonny Jeon
1720484d76 No changes. Github commit bug. 2012-06-27 07:06:24 -06:00
Sonny Jeon
d3be216931 Minor fix related to spindle_stop() crashing abort in certain cases.
- Updated spindle_stop() to fix abort bug and to be more in line with
v0.8.
2012-03-10 12:34:09 -07:00
Sonny Jeon
86cdae0060 Minor updates.
- Updated makefile to be more universally compatible by not requiring
grep or ruby.

- Edited XON/XOFF flow control usage, noting that FTDI-based Arduinos
are known to work, but not Atmega8U2-based Arduino. Still officially
not supported, but added for advanced users.

- Minor edits.
2012-03-05 12:01:02 -07:00
Sonny Jeon
567fbf93ed G54 work coordinate support (w/ G10,G92.1). Re-factored g-code parser with error checking. Minor compiler compatibility changes.
- G54 work coordinate system support. Up to 6 work coordinate systems
(G54-G59) available as a compile-time option.

- G10 command added to set work coordinate offsets from machine
position.

- G92/G92.1 position offsets and cancellation support. Properly follows
NIST standard rules with other systems.

- G53 absolute override now works correctly with new coordinate systems.

- Revamped g-code parser with robust error checking. Providing user
feedback with bad commands. Follows NIST standards.

- Planner module slightly changed to only expected position movements
in terms of machine coordinates only. This was to simplify coordinate
system handling, which is done solely by the g-code parser.

- Upon grbl system abort, machine position and work positions are
retained, while G92 offsets are reset per NIST standards.

- Compiler compatibility update for _delay_us().

- Updated README.
2012-02-11 11:59:35 -07:00
Sonny Jeon
b51e902530 Program stop support (M0,M1*,M2,M30*), proper position retainment upon reset, misc minor updates.
- Program stop support (M0,M1*,M2,M30*). *Optional stop to be done.
*Pallet shuttle not supported.

- Work position is set equal to machine position upon reset, as
according to NIST RS274-NGC guidelines. G92 is disabled.

- Renamed mc_set_current_position() to mc_set_coordinate_offset().

- Fixed bug in plan_synchronize(). Would exit right before last step is
finished and caused issues with program stops. Now fixed.

- Spindle now stops upon a run-time abort command.

- Updated readme and misc upkeeping.
2012-01-28 20:41:08 -07:00
Sonny Jeon
e8a6bfd179 Position reporting, refactored system variables, serial print fixes, updated streaming scripts.
- Added machine position reporting to status queries. This will be
further developed with part positioning/offsets and maintaining
location upon reset.

- System variables refactored into a global struct for better
readability.

- Removed old obsolete Ruby streaming scripts. These were no longer
compatible. Updated Python streaming scripts.

- Fixed printFloat() and other printing functions.

- Decreased planner buffer back to 18 blocks and increased TX serial
buffer to 64 bytes. Need the memory space for future developments.

- Begun adding run-time modes to grbl, where block delete toggle, mm/in
reporting modes, jog modes, etc can be set during runtime. Will be
fleshed out and placed into EEPROM when everything is added.
2012-01-06 10:10:41 -07:00
Sonny Jeon
03e2ca7cd5 Initial v0.8 ALPHA commit. Features multi-tasking run-time command execution (feed hold, cycle start, reset, status query). Extensive re-structuring of code for future features.
- ALPHA status. - Multitasking ability with run-time command executions
for real-time control and feedback. - Decelerating feed hold and resume
during operation. - System abort/reset, which immediately kills all
movement and re-initializes grbl. - Re-structured grbl to easily allow
for new features: Status reporting, jogging, backlash compensation. (To
be completed in the following releases.) - Resized TX/RX serial buffers
(32/128 bytes) - Increased planner buffer size to 20 blocks. - Updated
documentation.
2011-12-08 18:47:48 -07:00
Sonny Jeon
b5cc033150 Corrected clearing of target and position variable for the go home routine. Thanks Jens! 2011-11-11 13:36:42 -07:00
Sonny Jeon
9141ad2825 Third time's a charm! No more deceleration issues! Updated grbl version and settings. General cleanup.
- Fleshed out the original idea to completely remove the long slope at
the end of deceleration issue. This third time should absolutely
eliminate it.
- Changed the acceleration setting to kept as mm/min^2 internally,
since this was creating unneccessary additional computation in the
planner. Human readable value kept at mm/sec^2.
- Updated grbl version 0.7d and settings version to 4. NOTE: Please
check settings after update. These may have changed, but shouldn't.
- Before updating the new features (pause, e-stop, federate override,
etc), the edge branch will soon be merged with the master, barring any
immediate issues that people may have, and the edge branch will be the
testing ground for the new grbl version 0.8.
2011-10-11 20:51:04 -06:00
Sonny Jeon
2be0d66872 Fixed long slope at deceleration issue. Moved things into config.h. New MINIMUM_PLANNER_SPEED parameter.
- The long standing issue of a long slope at deceleration is likely
fixed. The stepper program was not tracking and timing the end of
acceleration and start of deceleration exactly and now is fixed to
start and stop on time. Also, to ensure a better acceleration curve fit
used by the planner, the stepper program delays the start of the
accelerations by a half trapezoid tick to employ the midpoint rule. -
Settings version 3 migration (not fully tested, but should work) -
Added a MINIMUM_PLANNER_SPEED user-defined parameter to planner to let
a user change this if problems arise for some reason. - Moved all
user-definable #define parameters into config.h with clear comments on
what they do and recommendations of how to change them. - Minor
housekeeping.
2011-09-24 07:46:41 -06:00
Sonny J
6de805441f Fixed minor bugs in planner. Increased max dwell time. Long slope bug stop-gap solution note.
- Fixed the planner TODO regarding minimum nominal speeds. Re-arranged
calculations to be both more efficient and guaranteed to be greater
than zero. - Missed a parenthesis location on the rate_delta
calculation. Should fix a nearly in-perceptible issue with incorrect
acceleration ramping in diagonal directions. - Increased maximum dwell
time from 6.5sec to an 18hour max. A crazy amount more, but that's how
the math works out. - Converted the internal feedrate values to mm/min
only, as it was switching between mm/min to mm/sec and back to mm/min.
Also added a feedrate > 0 check in gcode.c. - Identified the long slope
at the end of rapid de/ac-celerations noted by stephanix. Problem with
the numerical integration truncation error between the exact solution
of estimate_acceleration_distance and how grbl actually performs the
acceleration ramps discretely. Increasing the
ACCELERATION_TICKS_PER_SECOND in config.h helps fix this problem.
Investigating further.
2011-09-18 05:36:55 -06:00
Sonny J
110faae986 More '%' modulo opertor removals and some housecleaning.
- Serial functions contained quite a few modulo operations that would
be executed with high frequency when streaming. AVR processors are very
slow when operating these. In one test on the Arduino forums, it showed
about a 15x slow down compared to a simple if-then statement. -
Clarified some variable names and types and comments.
2011-09-15 20:32:15 -06:00
Sonny J
4d03c4febc Further planner improvements and misc minor bug fixes. Memory savings and increased buffer size.
- Update grbl version and settings version to automatically reset
eeprom. FYI, this will reset your grbl settings. - Saved
3*BLOCK_BUFFER_SIZE doubles in static memory by removing obsolete
variables: speed_x, speed_y, and speed_z. - Increased buffer size
conservatively to 18 from 16. (Probably can do 20). - Removed expensive!
modulo operator from block indexing function. Reduces significant
computational overhead. - Re-organized some sqrt() calls to be more
efficient during time critical planning cases, rather than non-time
critical. - Minor bug fix in planner max junction velocity logic. -
Simplified arc logic and removed need to multiply for CW or CCW
direction.
2011-09-13 21:57:16 -06:00
Sonny J
ffcc3470a3 Optimized planner re-write. Significantly faster. Full arc support enabled by rotation matrix approach.
- Significant improvements in the planner. Removed or reordered
repetitive and expensive calculations by order of importance:
recalculating unchanged blocks, trig functions [sin(), cos(), tan()],
sqrt(), divides, and multiplications. Blocks long enough for nominal
speed to be guaranteed to be reached ignored by planner. Done by
introducing two uint8_t flags per block. Reduced computational overhead
by an order of magnitude.   - Arc motion generation completely
re-written and optimized. Now runs with acceleration planner. Removed
all but one trig function (atan2) from initialization. Streamlined
computations. Segment target locations generated by vector
transformation and small angle approximation. Arc path correction
implemented for accumulated error of approximation and single precision
calculation of Arduino. Bug fix in message passing.
2011-09-06 19:39:14 -06:00
Sonny J
badb638df9 Moved comment and block delete handling into protocol.c from gcode.c. Fixes bug when comment and block delete are not isolated. Blank lines ignored.
Comments, block delete characters, and blank lines are no longer passed
to the gcode parser and should free up some memory by ignoring these
characters. Gcode parser now expects clean gcode only. There was a bug
if there were block deletes or comments not in the first character (i.e.
spindle on/off for proofing geode without turning it on, or a NXX
followed by a comment). This should fix it by bypassing the problem.
Left a commented line for easily turning on and off block deletes for a
later feature, if desired.
2011-08-15 19:39:44 -06:00
Sonny J
ed5e5d1181 Revert ea5b8942db2616e93fc0478922010c3bab7c0481^..HEAD 2011-08-15 19:37:22 -06:00
Sonny J
896a6b9199 Moved comment and block delete handling into protocol.c from gcode.c. Fixes bug when comment and block delete are not isolated. Blank lines ignored.
Comments, block delete characters, and blank lines are no longer passed
to the gcode parser and should free up some memory by ignoring these
characters. Gcode parser now expects clean gcode only. There was a bug
if there were block deletes or comments not in the first character (i.e.
spindle on/off for proofing geode without turning it on, or a NXX
followed by a comment). This should fix it by bypassing the problem.
Left a commented line for easily turning on and off block deletes for a
later feature, if desired.
2011-08-15 19:28:14 -06:00
Sonny J
8b0556bcfd Revert fdc90f1821f1f5edb7756fcddce75b4b4fbf6bbf^..HEAD 2011-08-15 19:14:25 -06:00
chamnit
fdc90f1821 Removed comment and block delete handling from gcode.c. Parser expects clean gcode. 2011-08-15 17:10:08 -06:00
Simen Svale Skogsrud
74dcf58c5c simplification in gcode.c also thanks to etienne 2011-02-25 15:02:55 +01:00
Simen Svale Skogsrud
87b6364aa0 added missing line from G92 patch 2011-02-24 15:03:45 +01:00
Simen Svale Skogsrud
ef20be9f4c result of G92 also affects planner 2011-02-21 22:32:42 +01:00
Simen Svale Skogsrud
c491324e89 added support for G92 2011-02-21 22:26:02 +01:00
Simen Svale Skogsrud
2c913a00bd acceleration-Grbl now works with atmega 168 by disabling arc motion 2011-02-20 22:13:31 +01:00
Simen Svale Skogsrud
d5d6298de3 added support for limit switches and homing action 2011-02-20 00:29:56 +01:00
Simen Svale Skogsrud
9c8c259153 made most internal function static to allow gcc to inline them 2011-02-19 23:03:10 +01:00
Simen Svale Skogsrud
6edbbe322c lowercased boolean constants 2011-02-18 23:04:12 +01:00
Simen Svale Skogsrud
9876e14f0b refactored handling of settings '$' command out of gcode module and into settings module 2011-02-18 22:59:16 +01:00
Simen Svale Skogsrud
85f62111b5 renamed serial_protocol -> protocol 2011-02-18 22:11:53 +01:00
Simen Svale Skogsrud
124bc363bd removed inline-keywords because gcc ignores them anyway 2011-02-17 23:59:10 +01:00
Simen Svale Skogsrud
977c4948bd syntax tweak 2011-02-11 23:53:33 +01:00
Simen Svale Skogsrud
33f014aa74 eliminated an abstraction violation where motion_control needed position information from the planner (untested) 2011-02-11 23:01:16 +01:00
Simen Svale Skogsrud
fd18ab455f config command prevents gcode parsing 2011-02-10 13:05:53 +01:00
Simen Svale Skogsrud
7092b0e1fe renamed public methods of settings module to include module name 2011-02-05 01:00:41 +01:00
Simen Svale Skogsrud
d00947a23a renamed config.* to settings.* 2011-02-05 00:45:41 +01:00
Simen Svale Skogsrud
9f5365aac9 fixed a bug where F-commands never would modify feed-rate of G0-operations 2011-02-04 23:48:10 +01:00
Simen Svale Skogsrud
dad9db1b02 formatting 2011-01-31 23:19:51 +01:00
Simen Svale Skogsrud
bf4f75d632 cleaned up formatting gcode.c 2011-01-31 21:32:36 +01:00
Simen Svale Skogsrud
4562ee7fe9 merged master 2011-01-31 19:42:56 +01:00
Simen Svale Skogsrud
35064b53e9 made local variables static 2011-01-25 23:33:19 +01:00
Simen Svale Skogsrud
25383790e2 updated struct types to use typedefs and conform to Micael Barrs Embedded C Coding Standard 2011-01-25 22:51:37 +01:00
Simen Svale Skogsrud
49a16cb777 refactored block buffer into separate module motion_plan pending the addition of the actual look ahead planner 2011-01-14 16:45:18 +01:00
Simen Svale Skogsrud
b628a4aabf added basic accelleration management with trapezoid accelleration profiles but no look ahead optimization (coming next patch) 2011-01-14 12:10:18 +01:00
Simen Svale Skogsrud
0ac1731488 minor edits 2010-07-08 14:55:43 +02:00
Simen Svale Skogsrud
d0f64d8f65 fixed the inches->mm conversion bug and some general cleanup 2010-07-03 00:23:28 +02:00
Simen Svale Skogsrud
f93d0e8132 completed support for separate feed-rate for G0-operations 2010-07-03 00:04:10 +02:00
Simen Svale Skogsrud
b8ba8a4231 Added runtime configurable global settings with eeprom persitence 2010-03-07 20:29:18 +01:00
Simen Svale Skogsrud
01ad93fbed minor edit 2010-03-03 18:03:21 +01:00
Simen Svale Skogsrud
898b4ca99d further refactoring debris extraction 2010-03-03 17:52:56 +01:00
Simen Svale Skogsrud
9a41b3a4fb deleted more code following line-buffer refactoring 2010-03-03 13:12:16 +01:00
Simen Svale Skogsrud
49ca861dc0 added segmented arc support with configurable segmentation 2010-03-03 01:39:44 +01:00
Simen Svale Skogsrud
df243d2490 successfully maintained 30khz, lots of optimization of code and buffering allocation 2010-03-03 00:26:48 +01:00
Simen Svale Skogsrud
a42c03601d Fixed a number of bugs caused by using abs() on floats and long ints. Added support for selectively inverting bits of the stepping port. Debugged, optimized and cleaned up timing code for the step-pulses. 2010-02-27 19:55:09 +01:00
Simen Svale Skogsrud
2b0e19993d removed support for echoing of steps via serial 2010-01-05 22:07:16 +01:00
Simen Svale Skogsrud
2bd984a734 configurations and adjustments to protocol 2009-02-15 12:56:07 +01:00
Simen Svale Skogsrud
9e6d62e531 tiny edit that saved a lot of bytes 2009-02-11 00:40:03 +01:00
Simen Svale Skogsrud
e257fc195c support for helical motion 2009-02-11 00:37:33 +01:00
Simen Svale Skogsrud
2992683c8d optimized for size and did some housekeeping 2009-02-08 22:08:27 +01:00
Simen Svale Skogsrud
3e5e866115 shaved ~100 bytes of code space 2009-02-08 21:25:36 +01:00
Simen Svale Skogsrud
05bacc436e optimized for size, shaved 2k 2009-02-08 21:22:54 +01:00
Simen Svale Skogsrud
c07a322589 fixed buffering of pace changes and general cleaning 2009-02-08 20:40:24 +01:00
Simen Svale Skogsrud
6c3a6a25d5 pace calculation correct, arc algorithm correct, support for negative R 2009-02-08 12:24:52 +01:00
Simen Svale Skogsrud
50a9f78088 lots and lots of bugfixes after running on reals hardware for the first time 2009-02-03 09:56:45 +01:00
Simen Svale Skogsrud
9799955555 arc code complete with support for both R and IJK style blocks 2009-02-01 11:58:21 +01:00
Simen Svale Skogsrud
e21064bd86 gcode support for offset arcs 2009-01-30 16:14:48 +01:00
Simen Svale Skogsrud
02f6699b0a minor edits 2009-01-30 11:26:21 +01:00
Simen Svale Skogsrud
a9d41c6c64 tweaks and bugfixes 2009-01-29 09:58:29 +01:00
Simen Svale Skogsrud
9df29ad3b3 version 0.1 2009-01-25 00:48:56 +01:00