diff --git a/README.md b/README.md index c2f7e31..aab14fd 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![GitHub Logo](/doc/logo/Grbl Logo 250px.png) +![GitHub Logo](/doc/media/Grbl Logo 250px.png) *** @@ -27,8 +27,8 @@ Grbl includes full acceleration management with look ahead. That means the contr *** _**Master Branch:**_ -* [Grbl v0.9i Atmega328p 16mhz 115200baud with generic defaults](http://bit.ly/1EiviDk) _(2015-03-15)_ -* [Grbl v0.9i Atmega328p 16mhz 115200baud with ShapeOko2 defaults](http://bit.ly/1NYIfKl) _(2015-03-15)_ +* [Grbl v0.9i Atmega328p 16mhz 115200baud with generic defaults](http://bit.ly/1EiviDk) _(2015-03-29)_ +* [Grbl v0.9i Atmega328p 16mhz 115200baud with ShapeOko2 defaults](http://bit.ly/1NYIfKl) _(2015-03-29)_ - **IMPORTANT INFO WHEN UPGRADING TO GRBL v0.9i:** - Baudrate is now **115200** (Up from 9600). - Variable spindle is now enabled by default. Z-limit(D12) and spindle enable(D11) have switched to access the hardware PWM on D11. Homing will not work if you do not re-wire your Z-limit switch to D12. diff --git a/doc/log/commit_log_v0.7.txt b/doc/log/commit_log_v0.7.txt new file mode 100644 index 0000000..5d536a3 --- /dev/null +++ b/doc/log/commit_log_v0.7.txt @@ -0,0 +1,433 @@ +---------------- +Date: 2012-01-17 +Author: Sonny Jeon +Subject: Update readme.textile + +---------------- +Date: 2012-01-17 +Author: Sonny Jeon +Subject: Merge pull request #47 from chamnit/v0_7 + +Merging chamnit/v0_7 to grbl/master + +---------------- +Date: 2012-01-17 +Author: Sonny Jeon +Subject: Merge chamnit/v0_7 with grbl/master + + +---------------- +Date: 2012-01-17 +Author: Sonny Jeon +Subject: Update readme.textile + +---------------- +Date: 2012-01-17 +Author: Sonny Jeon +Subject: Merge pull request #39 from chamnit/edge + +Merging chamnit/grbl edge v0.8a to grbl/grbl edge + +---------------- +Date: 2012-01-15 +Author: Sonny Jeon +Subject: Propagated premature step end bug fix from the edge branch. Updated printFloat() function. + +- Will not be uploading a hex build of this, unless asked. + + +---------------- +Date: 2012-01-15 +Author: Sonny Jeon +Subject: Fix bug with premature step end. Refactored _delay_ms() and square() for better portability. + +- Fixed a premature step end bug dating back to Simen's 0.7b edge +version is fixed, from which this code is forked from. Caused by Timer2 +constantly overflowing calling the Step Reset Interrupt every 128usec. +Now Timer2 is always disabled after a step end and should free up some +cycles for the main program. Could be more than one way to fix this +problem. I'm open to suggestions. + +- _delay_ms() refactored to accept only constants to comply with +current compilers. square() removed since not available with some +compilers. + + +---------------- +Date: 2012-01-10 +Author: Sonny Jeon +Subject: Extended position reporting with both home and work coordinates. Home position now retained after reset. Other minor changes/fixes. + +- Grbl now tracks both home and work (G92) coordinate systems and does +live updates when G92 is called. +- Rudimentary home and work position status reporting. Works but still +under major construction. +- Updated the main streaming script. Has a disabled periodic timer for +querying status reports, disabled only because the Python timer doesn't +consistently restart after the script exits. Add here only for user +testing. +- Fixed a bug to prevent an endless serial_write loop during status +reports. +- Refactored the planner variables to make it more clear what they are +and make it easier for clear them. + + +---------------- +Date: 2012-01-09 +Author: Sonny Jeon +Subject: Corrected a minor streaming script character counting bug. + +---------------- +Date: 2012-01-09 +Author: Sonny Jeon +Subject: Updated line in streaming script. + +---------------- +Date: 2012-01-06 +Author: Sonny Jeon +Subject: 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. + + +---------------- +Date: 2011-12-10 +Author: Sonny Jeon +Subject: Various minor updates and variable definition corrections. Removed deprecated acceleration manager. + +- Removed deprecated acceleration manager (non-functional since v0.7b) +- Updated variable types and function headers. - Updated stepper +interrupt to ISR() from SIGNAL()+sei(). - General code cleanup. + + +---------------- +Date: 2011-12-08 +Author: Sonny Jeon +Subject: 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. + + +---------------- +Date: 2011-11-19 +Author: Sonny Jeon +Subject: Updated README and reordered branch versions. + + +---------------- +Date: 2011-11-19 +Author: Sonny Jeon +Subject: Re-ordered stepper idle function to first disable interrupt. + +---------------- +Date: 2011-11-11 +Author: Sonny Jeon +Subject: Corrected clearing of target and position variable for the go home routine. Thanks Jens! + +---------------- +Date: 2011-10-11 +Author: Sonny Jeon +Subject: Delete a new work file shouldn't have been synced. + + +---------------- +Date: 2011-10-11 +Author: Sonny Jeon +Subject: 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. + + +---------------- +Date: 2011-10-07 +Author: Sonny Jeon +Subject: Forgot something! Comments on what the last change does. + + +---------------- +Date: 2011-10-06 +Author: Sonny Jeon +Subject: Minor update to further eliminate the ole long slope deceleration issue. New update note! + +- Added another way to further ensure the long slope deceleration issue +is eliminated. If the stepper rate change is too great near zero, the +stepper rate is adjusted at half increments to the end of travel, +creating a smooth transition. - If the new STEPPER_IDLE_LOCK_TIME is +set as zero, this delay is not compiled at compile-time. - NOTE: The +next update is likely going to be major, involving a full re-write of +the stepper.c program to integrate a simple way to apply pauses, +jogging, e-stop, and feedrate overrides. The interface should be +flexible enough to be easily modified for use with either hardware +switches or software commands. Coming soon. + + +---------------- +Date: 2011-09-29 +Author: Sonny Jeon +Subject: Added complete stop delay at the end of all motion. Moved grbl preprocessor script into a new repository. + +Added a very short (25 ms) user-definable delay before the steppers are +disabled at the motors are disabled and grbl goes idle. This ensures +any residual inertia at the end of the last motion does not cause the +axes to drift and grbl to lose its position when manually entering +g-code or when performing a tool change and starting the next +operation. + + +---------------- +Date: 2011-09-25 +Author: Sonny Jeon +Subject: Updated some comments and fixed a bug in the new stepper logic. + +- The stepper logic was not initiating the decelerations for certain +cases. Just re-arranged the logic to fix it. + + +---------------- +Date: 2011-09-24 +Author: Sonny Jeon +Subject: 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. + + +---------------- +Date: 2011-09-18 +Author: Sonny J +Subject: 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. + + +---------------- +Date: 2011-09-15 +Author: Sonny J +Subject: 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. + + +---------------- +Date: 2011-09-13 +Author: Sonny J +Subject: 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. + + +---------------- +Date: 2011-09-06 +Author: Sonny J +Subject: 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. + + +---------------- +Date: 2011-09-04 +Author: Sonny J +Subject: Minor update for memory savings in ring buffer and fleshed out commenting. + +No changes in functionality. Path vectors moved from ring buffer to +local planner static variables to save 3*(BUFFER_SIZE - 1) doubles in +memory. Detailed comments. Really need to stop micro-updating. Should be +the last until a planner optimization (ala Jens Geisler) has been +completed. + + +---------------- +Date: 2011-09-04 +Author: Sonny J +Subject: More minor bug fixes in planner. + +Reverse planner was over-writing the initial/buffer tail entry speed, +which reset the forward planner and caused it to lose track of its +speed. Should now accelerate into short linear segments much nicer now. + + +---------------- +Date: 2011-09-03 +Author: Sonny J +Subject: Minor bug fixes in planner. + + +---------------- +Date: 2011-09-03 +Author: Sonny J +Subject: Add G02/03 arc conversion/pre-processor script and example streaming script + +Beta pre-processor script used to clean and streamline g-code for +streaming and converts G02/03 arcs into linear segments. Allows for full +acceleration support if the pre-processed g-code is then streamed to +grill, sans G02/03 arcs. Added a simple example streaming script for +Python users. + + +---------------- +Date: 2011-09-03 +Author: Sonny J +Subject: Significantly improved junction control and fixed computation bugs in planner + +- Junction jerk now re-defined as junction_deviation. The distance from +the junction to the edge of a circle tangent to both previous and +current path lines. The circle radii is used to compute the maximum +junction velocity by centripetal acceleration. More robust and +simplified way to compute jerk. - Fixed bugs related to entry and exit +factors. They were computed based on the current nominal speeds but not +when computing exit factors for neighboring blocks. Removed factors and +replaced with entry speeds only. Factors now only computed for stepper +trapezoid rate conversions. - Misc: Added min(), next_block_index, +prev_block_index functions for clarity. + + +---------------- +Date: 2011-08-15 +Author: Sonny J +Subject: 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. + + +---------------- +Date: 2011-08-15 +Author: Sonny J +Subject: Revert ea5b8942db2616e93fc0478922010c3bab7c0481^..HEAD + + +---------------- +Date: 2011-08-15 +Author: Sonny J +Subject: 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. + + +---------------- +Date: 2011-08-15 +Author: Sonny J +Subject: Revert 517a0f659a06182c89cafe27ee371edccad777a4^..HEAD + + +---------------- +Date: 2011-08-15 +Author: Sonny J +Subject: Revert "Moved comment and block delete handling to be done in protocol.c rather than gcode.c. Prevents these from being held in memory. Also, fixes bug when comments and block delete character are mixed with g-code." + +This reverts commit ea5b8942db2616e93fc0478922010c3bab7c0481. + + +---------------- +Date: 2011-08-15 +Author: Sonny J +Subject: Revert fdc90f1821f1f5edb7756fcddce75b4b4fbf6bbf^..HEAD + + +---------------- +Date: 2011-08-15 +Author: chamnit +Subject: Removed comment and block delete handling from gcode.c. Parser expects clean gcode. + +---------------- +Date: 2011-08-15 +Author: chamnit +Subject: Moved comment and block delete handling to be done in protocol.c rather than gcode.c. Prevents these from being held in memory. Also, fixes bug when comments and block delete character are mixed with g-code. diff --git a/doc/log/commit_log_v0.8c.txt b/doc/log/commit_log_v0.8c.txt new file mode 100644 index 0000000..f62cf89 --- /dev/null +++ b/doc/log/commit_log_v0.8c.txt @@ -0,0 +1,831 @@ +---------------- +Date: 2012-11-25 +Author: Sonny Jeon +Subject: G28/G30 post move bug fix. Altered file permissions. + + +---------------- +Date: 2012-11-25 +Author: Sonny Jeon +Subject: G28/G30 post move bug fix. + +- Fixed a bug when after moving to a pre-defined position G28/G30, the +next move would go someplace unexpected. The g-code parser position +vector wasn't getting updated. + + +---------------- +Date: 2012-11-20 +Author: Sonny Jeon +Subject: Merge error fix. + + +---------------- +Date: 2012-11-20 +Author: Sonny Jeon +Subject: Merge v0.8 edge to master + + +---------------- +Date: 2012-11-19 +Author: Sonny Jeon +Subject: Updated interface protocol. Fixed M2 bug. + +- Updated interface protocol to play nicer with interface programs. All +Grbl responses beginning with '$' signifies a setting. Bracketed '[]' +responses are feedback messages containing either state, parameter, or +general messages. Chevron '<>' response are from the real-time status +messages, i.e. position. + +- M2 Program end command was causing a system alarm. Fixed. Thanks +@blinkenlight ! + + +---------------- +Date: 2012-11-18 +Author: Sonny Jeon +Subject: Updated readme + + +---------------- +Date: 2012-11-18 +Author: Sonny Jeon +Subject: Homing search sequence now compile-time option. New defaults.h file. Tidying up. + +- The homing sequence is now a compile-time option, where a user can +choose which axes(s) move in sequence during the search phase. Up to 3 +sequences. Works with the locating phase and the pull-off maneuver. + +- New defaults.h file to store user generated default settings for +different machines. Mainly to be used as a central repo, but each set +may be select to be compiled in as a config.h define. + + +---------------- +Date: 2012-11-15 +Author: Sonny Jeon +Subject: Added Grbl state in status report. Removed switch support. + +- Added Grbl state (Idle, Running, Queued, Hold, etc) to the real-time +status reporting feature as feedback to the user of what Grbl is doing. +Updated the help message to reflect this change. + +- Removed switches (dry run, block delete, single block mode). To keep +Grbl simple and not muddled up from things that can easily be taken +care of by an external interface, these were removed. + +- Check g-code mode was retained, but the command was moved to '$C' +from '$S0'. + + +---------------- +Date: 2012-11-14 +Author: Sonny Jeon +Subject: Re-factored system states and alarm management. Serial baud support greater than 57600. + +- Refactored system states to be more clear and concise. Alarm locks +processes when position is unknown to indicate to user something has +gone wrong. + +- Changed mc_alarm to mc_reset, which now manages the system reset +function. Centralizes it. + +- Renamed '$X' kill homing lock to kill alarm lock. + +- Created an alarm error reporting method to clear up what is an alarm: +message vs a status error: message. For GUIs mainly. Alarm codes are +negative. Status codes are positive. + +- Serial baud support upto 115200. Previous baudrate calc was unstable +for 57600 and above. + +- Alarm state locks out all g-code blocks, including startup scripts, +but allows user to access settings and internal commands. For example, +to disable hard limits, if they are problematic. + +- Hard limits do not respond in an alarm state. + +- Fixed a problem with the hard limit interrupt during the homing +cycle. The interrupt register is still active during the homing cycle +and still signal the interrupt to trigger when re-enabled. Instead, +just disabled the register. + +- Homing rate adjusted. All axes move at homing seek rate, regardless +of how many axes move at the same time. This is unlike how the stepper +module does it as a point to point rate. + +- New config.h settings to disable the homing rate adjustment and the +force homing upon powerup. + +- Reduced the number of startup lines back down to 2 from 3. This +discourages users from placing motion block in there, which can be very +dangerous. + +- Startup blocks now run only after an alarm-free reset or after a +homing cycle. Does not run when $X kill is called. For satefy reasons + + +---------------- +Date: 2012-11-10 +Author: Sonny Jeon +Subject: Tweaks. Seek rate updates when set. CCW arc full circle fix. + +- Fixed a minor issue where the seek rates would not immediately be +used and only would after a reset. Should update live now. + +- A full circle IJ offset CCW arc would not do anything. Fixed bug via +a simple if-then statement. + +- Radius mode tweaks to check for negative value in sqrt() rather than +isnan() it. Error report updated to indicate what actually happened. + + +---------------- +Date: 2012-11-09 +Author: Sonny Jeon +Subject: Added note that D13 can't be used as input, pulled-high. + + +---------------- +Date: 2012-11-09 +Author: Sonny Jeon +Subject: Fixed homing cycle hanging after locating switches. + + +---------------- +Date: 2012-11-08 +Author: Sonny Jeon +Subject: Housekeeping. + +- Added some more notes to config.h. + +- Added the ability to override some of the #defines around Grbl in +config.h, like planner buffer size, line buffer size, serial +send/receive buffers. Mainly to centralize the configurations to be +able to port to different microcontrollers later. + + +---------------- +Date: 2012-11-08 +Author: Sonny Jeon +Subject: Sanguino compile patch + +@daapp : Sanguino compile serial USART path. Thanks! + + +---------------- +Date: 2012-11-07 +Author: Sonny Jeon +Subject: More tweaks. Removed dry run. Trimmed all messages to save flash space. + +- Removed the dry run switch. It was getting overly complicated for +what it needed to do. In practice, single block mode and feed rate +overrides (coming in next release) does a much better job with dry runs +than 'dry run'. + +- Trimmed all of Grbl's messages from help, status, feedback to +settings. Saved 0.6KB+ of flash space that could be used for v0.9 +features. + +- Removed some settings inits when set. Will depend on user to power +cycle to get some of these to reload. + +- Fixed a bug with settings version not re-writing old settings, when +it should. Thanks Alden! + + +---------------- +Date: 2012-11-06 +Author: Sonny Jeon +Subject: Merge pull request #132 from hin/header_dependencies + +Header dependencies + +---------------- +Date: 2012-11-05 +Author: Sonny Jeon +Subject: Tweaks and bug fixes. Increase to 3 startup blocks. Remove purge/added unlock command + +- Increased the number of startup blocks to 3 for no good reason other +than it doesn't increase the flash size. + +- Removed the purge buffer command and replaced with an disable homing +lock command. + +- Homing now blocks all g-code commands (not system commands) until the +homing cycle has been performed or the disable homing lock is sent. +Homing is required upon startup or if Grbl loses it position. This is +for safety reasons. + +- Cleaned up some of the Grbl states and re-organized it to be little +more cohesive. + +- Cleaned up the feedback and status messages to not use so much flash +space, as it's a premium now. + + - Check g-code and dry run switches how are mutually exclusive and +can't be enabled when the other is. And automatically resets Grbl when +disabled. + +- Some bug fixes and other minor tweaks. + + +---------------- +Date: 2012-11-05 +Author: Hans Insulander +Subject: Ignore dependency files + + +---------------- +Date: 2012-11-05 +Author: Hans Insulander +Subject: Generate header dependencies and use them in Makefile + + +---------------- +Date: 2012-11-05 +Author: Sonny Jeon +Subject: Tweaked dry run and check g-code switches. Now resets when toggled off. + +- To make managing the code easier and to help ensure a user starts +with a fresh reset, the functionality of check g-code and dry run has +been changed to automatically perform a soft reset when toggled off. +Position will not be lost, unless there is a cycle active. Feed hold +before toggling off it needed. + +This is mainly a safety issue. If a user dry runs a program and kills +it mid-program, and then restarts it thinking to run it as normal, the +g-code modes that we're set may not be what they expect, and very bad +things can happen. + +- NOTE: Grbl is at 83.5% of flash capacity. Not a lot of room left, but +I think we can squeeze in some more! + + +---------------- +Date: 2012-11-04 +Author: Sonny Jeon +Subject: Runtime command pinned out! Re-organized coolant pins. + +- Pinned out cycle start(A2), feed hold(A1), and reset(A0) runtime +commands. These pins are held high with the internal pull-up resistor +enabled. All you have to do is connect a normally-open switch to the +pin and ground. That's it. + +- Moved the coolant control pins to A3 (and the optional mist control +to A4). + +- Moved all of the MASK defines into the config.h file to centralize +them. + + +---------------- +Date: 2012-11-04 +Author: Sonny Jeon +Subject: Tweaks and minor bug fixes. Added purge buffer command. + +- Added a purge buffer (and lock) command. This is an advanced option +to clear any queued blocks in the buffer in the event of system +position being lost or homed. These queued blocks will likely not move +correctly if not purged. In typical use, the purging command releases +the homing axes lock in case a user need to move the axes off their +hard limit switches, but position is not guaranteed. Homing is advised +immediately after. + +- Created a system-wide sync current position function. Cleans up some +of the repetitive tasks in various places in the code that do the same +thing. + +- Removed the clear all switches command '$S'. Not really needed and +helped clean up a sync call. + +- Other minor tweaks. Readme updated slightly.. + + +---------------- +Date: 2012-11-03 +Author: Sonny Jeon +Subject: New startup script setting. New dry run, check gcode switches. New system state variable. Lots of reorganizing. + +(All v0.8 features installed. Still likely buggy, but now thourough +testing will need to start to squash them all. As soon as we're done, +this will be pushed to master and v0.9 development will be started. +Please report ANY issues to us so we can get this rolled out ASAP.) + +- User startup script! A user can now save one (up to 5 as compile-time +option) block of g-code in EEPROM memory. This will be run everytime +Grbl resets. Mainly to be used as a way to set your preferences, like +G21, G54, etc. + +- New dry run and check g-code switches. Dry run moves ALL motions at +rapids rate ignoring spindle, coolant, and dwell commands. For rapid +physical proofing of your code. The check g-code switch ignores all +motion and provides the user a way to check if there are any errors in +their program that Grbl may not like. + +- Program restart! (sort of). Program restart is typically an advanced +feature that allows users to restart a program mid-stream. The check +g-code switch can perform this feature by enabling the switch at the +start of the program, and disabling it at the desired point with some +minimal changes. + +- New system state variable. This state variable tracks all of the +different state processes that Grbl performs, i.e. cycle start, feed +hold, homing, etc. This is mainly for making managing of these task +easier and more clear. + +- Position lost state variable. Only when homing is enabled, Grbl will +refuse to move until homing is completed and position is known. This is +mainly for safety. Otherwise, it will let users fend for themselves. + +- Moved the default settings defines into config.h. The plan is to +eventually create a set of config.h's for particular as-built machines +to help users from doing it themselves. + +- Moved around misc defines into .h files. And lots of other little +things. + + +---------------- +Date: 2012-11-01 +Author: Sonny Jeon +Subject: Added block delete, opt stop, single block mode. New parser state and parameter feedback. Overhauled '$' command. + +NOTE: Another incremental update. Likely buggy, still a ways to go +before everything is installed, such as startup blocks. + +- Changed the '$' command to print help. '$$' now prints Grbl settings. +The help now instructs the user of runtime commands, switch toggling, +homing, etc. Jogging will be added to these in v0.9. + +- Added switches: block delete, opt stop, and single block mode. + +- Now can print the g-code parser state and persistent parameters +(coord sys) to view what Grbl has internally. + +- Made the gc struct in the g-code parser global to be able to print +the states. Also moved coordinate system tracking from sys to gc struct. + +- Changed up the welcome flag and updated version to v0.8c. + +- Removed spindle speed from gcode parser. Not used. + + +---------------- +Date: 2012-11-01 +Author: Sonny Jeon +Subject: New report module. 6 persistent work coordinates. New G-codes and settings. README and minor bug updates + +(NOTE: This push is likely buggy so proceed with caution. Just +uploading to let people know where we're going.) + +- New report.c module. Moved all feedback functions into this module to +centralize these processes. Includes realtime status reports, status +messages, feedback messages. + +- Official support 6 work coordinate systems (G54-G59), which are +persistently held in EEPROM memory. + +- New g-code support: G28.1, G30.1 stores current machine position as a +home position into EEPROM. G10 L20 Px stores current machine position +into work coordinates without needing to explicitly send XYZ words. + +- Homing performed with '$H' command. G28/G30 no longer start the +homing cycle. This is how it's supposed to be. + +- New settings: Stepper enable invert and n_arc correction installed. + +- Updated and changed up some limits and homing functionality. Pull-off +travel will now move after the homing cycle regardless of hard limits +enabled. Fixed direction of pull-off travel (went wrong way). + +- Started on designing an internal Grbl command protocol based on the +'$' settings letter. Commands with non numeric characters after '$' +will perform switch commands, homing cycle, jogging, printing +paramters, etc. Much more to do here. + +- Updated README to reflect all of the new features. + + +---------------- +Date: 2012-10-21 +Author: Sonny Jeon +Subject: Added misc message to indicate how to exit ALARM mode. + + +---------------- +Date: 2012-10-21 +Author: Sonny Jeon +Subject: New alarm method. Re(re)organized status messages. + +- Installed a new 'alarm' method to centralize motion kills across +alarm or reset events. Right now, this is controlled by system abort +and hard limits. But, in the future, a g-code parser error may call +this too as a safety feature. + +- Re(re)organized status messages to just print all errors, regardless +from where it was called. This centralizes them into one place. + +- Misc messages method installed for any user feedback that is not a +confirmation or error. Mainly so that there is a place to perform +warnings and such. + +- New stuff installed and still made the flash size smaller by saving +flash space from clearing out repeated '\r\n' pgmstrings. + +- Fixed a bug where hard limits message would print everytime a system +abort was sent. + + +---------------- +Date: 2012-10-21 +Author: Sonny Jeon +Subject: Re-organized status messages to be more coherent and centralized. + +- Reorganized all of the status message feedback from both the g-code +parser and settings modules to be centralized into two message modules: +status feedback from executing a line and warnings for misc feedback. + +- Pulled out the printPgmString() messages in settings.c and placed it +into the new module. (settings_dump() not moved). + +- Some other minor edits. Renaming defines, comment updates, etc. + + +---------------- +Date: 2012-10-18 +Author: Sonny Jeon +Subject: Hard limits code minor updates. + +- Fixed a bug that would not disable the steppers if a user issues a +system abort during a homing cycle. + +- Updated the hard limit interrupt to be more correct and to issue a +shutdown for the right situations when the switch has been triggered. + +- Added a status message to indicate to the user what happened and what +to do upon a hard limit trigger. + + +---------------- +Date: 2012-10-16 +Author: Sonny Jeon +Subject: Hard limits, homing direction, pull-off limits after homing, status reports in mm or inches, system alarm, and more. + +- Thank you statement added for Alden Hart of Synthetos. + +- Hard limits option added, which also works with homing by pulling off +the switches to help prevent unintended triggering. Hard limits use a +interrupt to sense a falling edge pin change and immediately go into +alarm mode, which stops everything and forces the user to issue a reset +(Ctrl-x) or reboot. + +- Auto cycle start now a configuration option. + +- Alarm mode: A new method to kill all Grbl processes in the event of +something catastrophic or potentially catastropic. Just works with hard +limits for now, but will be expanded to include g-code errors (most +likely) and other events. + +- Updated status reports to be configurable in inches or mm mode. Much +more to do here, but this is the first step. + +- New settings: auto cycle start, hard limit enable, homing direction +mask (which works the same as the stepper mask), homing pulloff +distance (or distance traveled from homed machine zero to prevent +accidental limit trip). + +- Minor memory liberation and calculation speed ups. + + +---------------- +Date: 2012-10-13 +Author: Sonny Jeon +Subject: Minor updates, improvements, and bug fixes. + +- Allowed status_message function to be called by others. This is to +centralize all feedback into protocol.c. + +- Fixed a bug where line number words 'N' were causing the parser to +error out. + +- Allowed homing routine feed rates to move slower than the +MINIMUM_STEP_RATE parameter in config.h. + +- Homing performs idle lock at the end of the routine. + +- Stepper idle lock time will now not disable the steppers when the +value is set at 255. This is accomodate users who prefer to keep their +axes enabled at all times. + +- Moved some defines around to where they need to be. + + +---------------- +Date: 2012-10-12 +Author: Sonny Jeon +Subject: Updated delay_us() function to accept long integers + + +---------------- +Date: 2012-10-11 +Author: Sonny Jeon +Subject: (2x) speed increase in printFloat() function. Decimal places setting added. + +- printFloat() function execution doubled in speed. This is a precursor +to status reporting, since GUIs may query real-time position rapidly. + +- Decimal places added to settings (for now). This may disappear in +future pushes, but here for testing purposes. + + +---------------- +Date: 2012-10-11 +Author: Sonny Jeon +Subject: Homing stepper enable bit fix. + + +---------------- +Date: 2012-10-10 +Author: Sonny Jeon +Subject: Homing direction pin bits fixed. Lite refactoring of settings. + + +---------------- +Date: 2012-10-09 +Author: Sonny Jeon +Subject: Improved homing cycle. New settings: homing enable/rates, debounce and step idle lock time. + +- Homing cycle will now cycle twice (spec more/less in config) to +improve repeatability and accuracy by decreasing overshoot. + +- New Grbl settings added: Enable/disable homing cycles, homing seek +and feed rates, switch debounce delay, and stepper idle lock time. + +- Please note that these settings may change upon the next push, since +there will be more added soon. Grbl *should* not re-write your old +settings, just re-write the new ones. So, make sure you keep these +written down somewhere in case they get lost from a code bug. + +- Refactored settings migration to be a little smaller and managable +going forward. + + +---------------- +Date: 2012-10-08 +Author: Sonny Jeon +Subject: Fixed an issue with leaving the limit switches during a homing cycle. + + +---------------- +Date: 2012-10-08 +Author: Sonny Jeon +Subject: Updated version number to v0.8b to reflect changes. + + +---------------- +Date: 2012-10-08 +Author: Sonny Jeon +Subject: Limit pin internal pull-resistors enabled. Re-wrote read_double() function. Correctly changed all 'double's to 'float's. + +- Limit pin internal pull-resistors now enabled. Normal high operation. +This will be the standard going forward. + +- Updated all of the 'double' variable types to 'float' to reflect what +happens when compiled for the Arduino. Also done for compatibility +reasons to @jgeisler0303 's Grbl simulator code. + +- G-code parser will now ignore 'E' exponent values, since they are +reserved g-code characters for some machines. Thanks @csdexter! + +- The read_double() function was re-written and optimized for use in +Grbl. The strtod() avr lib was removed. + + +---------------- +Date: 2012-09-30 +Author: Sonny Jeon +Subject: Updated limit/homing routine. Works, but needs more TLC. + +- Added acceleration to the homing routine. + +- Homing now accounts for different step rates when moving multiple +axes without exceeding acceleration limits. + +- Homing now updates all internal positioning variables to machine zero +after completion. + +- "Poor-man's" debounce delay added. + +- Updated the delay_us() function to perform faster and more accurate +microsecond delays. Previously, the single increments would add +noticeable time drift for larger delays. + +- Fix a bug in the stepper.c prescalar calculations that was changed in +the last commit. + +- Other minor fixes. + + +---------------- +Date: 2012-09-21 +Author: Sonny Jeon +Subject: Minor prescalar optimization. Changed up some defines. + + +---------------- +Date: 2012-09-21 +Author: Sonny Jeon +Subject: 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. + + +---------------- +Date: 2012-09-21 +Author: Sonny Jeon +Subject: Merge pull request #120 from tmpvar/configurable-makefile + +Add support for overriding DEVICE and PROGRAMMER + +---------------- +Date: 2012-09-21 +Author: Elijah Insua +Subject: Add support for overriding DEVICE and PROGRAMMER + +By setting environment variables. + +example: PROGRAMMER=-c arduino -P /dev/tty.usbmodemfa131 make flash + + +---------------- +Date: 2012-09-19 +Author: Sonny Jeon +Subject: M30 minor bug fix. + +Order of operations was off. Now works as intended, + + +---------------- +Date: 2012-06-27 +Author: Sonny Jeon +Subject: No changes. Github commit bug. + + +---------------- +Date: 2012-06-26 +Author: Sonny Jeon +Subject: Added step pulse delay after direction set (Compile-time option only). Updated read me. + +Added a compile-time only experimental feature that creates a +user-specified time delay between a step pulse and a direction pin set +(in config.h). This is for users with hardware-specific issues +(opto-couplers) that need more than a few microseconds between events, +which can lead to slowly progressing step drift after many many +direction changes. We suggest to try the hack/fix posted in the Wiki +before using this, as this experimental feature may cause Grbl to take +a performance hit at high step rates and about complex curves. + + +---------------- +Date: 2012-03-10 +Author: Sonny Jeon +Subject: 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. + + +---------------- +Date: 2012-03-05 +Author: Sonny Jeon +Subject: 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. + + +---------------- +Date: 2012-02-25 +Author: Sonny Jeon +Subject: Minor include related compile fix. Added experimental XON/XOFF flow control. Not officially supported! + +- A latency issue related to USB-to-serial converters on the Arduino +does not allow for XON/XOFF flow control to work correctly on standard +terminal programs. It seems that only specialized UI's or avoiding the +USB port all together solves this problem. However, XON/XOFF flow +control is added for advanced users only as a compile-time option. This +feature is officially *NOT* supported by grbl, but let us know of any +successes with it! + + +---------------- +Date: 2012-02-12 +Author: Sonny Jeon +Subject: Spindle DDR pins init minor fix. + + +---------------- +Date: 2012-02-11 +Author: Sonny Jeon +Subject: Fix to enable spindle DDR ports. + +---------------- +Date: 2012-02-11 +Author: Sonny Jeon +Subject: Minor compiler compatibility update for _delay_us(). + + +---------------- +Date: 2012-02-11 +Author: Sonny Jeon +Subject: 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. + + +---------------- +Date: 2012-01-31 +Author: Sonny Jeon +Subject: printFloat rounding fix. Affected settings. Recommend using new build. + +printFloat was printing incorrectly and adding a value of 5 to every +float instead of 0.0005 when rounding to 3 decimal places. The printed +settings values do not accurately portray the actual stored value. +Recommend using newly posted build. + + +---------------- +Date: 2012-01-28 +Author: Sonny Jeon +Subject: 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. + + +---------------- +Date: 2012-01-27 +Author: Sonny Jeon +Subject: Streaming script argparse bugfix. + + +---------------- +Date: 2012-01-27 +Author: Sonny Jeon +Subject: Updated streaming scripts. Compiler compatibility for _delay_ms(). + +- Moved obsolete streaming scripts to folder for reference. + +- Added a more complex Python streaming script which uses the serial +buffer as an additional streaming buffer. + +- Removed all references to a _delay_ms(variable) to allow for better +porting across different compilers. + diff --git a/doc/log/commit_log_v0.9g.txt b/doc/log/commit_log_v0.9g.txt new file mode 100644 index 0000000..bb9f107 --- /dev/null +++ b/doc/log/commit_log_v0.9g.txt @@ -0,0 +1,2409 @@ +---------------- +Date: 2014-09-05 +Author: Sonny Jeon +Subject: Minor bug fix and CPU pin map update. + +- Sometime I HATE github. This push is just here to be able to describe +the last two pushes today that had a merging conflict and lost all of +the commit comments before. + +- Setting $10 would cause $11 to be the same value. Missed a break +statement in the switch-case. Oops! Now fixed. + +- CPU pin map for the future versions of Grbl introduced, but not yet +finalized. Still working on it and it’s subject to change. + +- Added a new high-speed machining test g-code routine written by Todd +Fleming. Mills a pocket at 15,000mm/min. Do not use when connected to +your machine! You’ve been warned! + + +---------------- +Date: 2014-09-05 +Author: Sonny Jeon +Subject: Updated README.md + + +---------------- +Date: 2014-09-05 +Author: Sonny Jeon +Subject: Merge branch 'master' of https://github.com/grbl/grbl + +Conflicts: + README.md + + +---------------- +Date: 2014-08-24 +Author: Sonny Jeon +Subject: Merge pull request #472 from BinaryConstruct/edge + +Add defaults for OX CNC + +---------------- +Date: 2014-08-24 +Author: BinaryConstruct +Subject: Add defaults for OX CNC + + +---------------- +Date: 2014-08-22 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2014-08-22 +Author: Sonny Jeon +Subject: Updated build date. + + +---------------- +Date: 2014-08-22 +Author: Sonny Jeon +Subject: WPos report bug fix when MPos disabled. + + +---------------- +Date: 2014-08-18 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2014-08-17 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2014-08-17 +Author: Sonny Jeon +Subject: Updated bitly link to master firmware + + +---------------- +Date: 2014-08-17 +Author: Sonny Jeon +Subject: Merge branch 'master' into edge + + +---------------- +Date: 2014-08-17 +Author: Sonny Jeon +Subject: Final minor updates for master release. + +- Updated ShapeOko2 defaults based on machine testing of the basic +model provided by Inventables. (or close to it.) Should be pretty +conservative but much faster than before. For example, X and Y axes are +set at (10x) faster at 5000mm/min. It can run much faster than this, +but this seems like a safe speed for everyone. + +- Updated README for master release. + +- Added some new settings methods for clearing the EEPROM when changing +versions. Needs some more work, but it should ok for master release. +Should work on it more for the next version. + + +---------------- +Date: 2014-08-13 +Author: Sonny Jeon +Subject: Added EEPROM force clear. + +- When updating from v0.8, the settings will wipe the startup lines and +build info locations so that it won’t use whatever is already there in +the EEPROM. Parameters (coord offsets) are retained. They should be ok +during an upgrade. + + +---------------- +Date: 2014-08-13 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2014-08-13 +Author: Sonny Jeon +Subject: G28/30 bug fix. Block '$$' during cycle. SO2 defaults. + +- A G28/30 bug would cause it to move to machine coordinate [0,0,0] if +no axis words were sent. It was a typo in the new g-code parser. Fixed +and slightly re-written to be more consistent with the program flow. + +- Updated the ShapeOko2 defaults based on testing on the real machine. +A little conservative, but it might change again after some more +testing. + +- Now blocks ‘$$’ command during a motion, because the printout takes +too long and can starve the segment buffer. + + +---------------- +Date: 2014-08-08 +Author: Sonny Jeon +Subject: XON/XOFF flow control variable typo. + + +---------------- +Date: 2014-08-07 +Author: Sonny Jeon +Subject: Moved Grbl Sim to its own repo. + + +---------------- +Date: 2014-08-07 +Author: Sonny Jeon +Subject: Updated licensing + + +---------------- +Date: 2014-08-05 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2014-08-05 +Author: Sonny Jeon +Subject: Fixed bug related to very very low feed rates. + +- A very very low feed rate command like `G1 X100 F0.01` would cause +some floating-point round-off error and freeze Grbl into an infinite +loop. To fix it, introduced a MINIMUM_FEED_RATE parameter in config.h +to ensure motions always complete. + +- MINIMUM_FEED_RATE is set at 1.0 mm/min by default. It’s recommended +that no rates are below this value, but 0.1mm/min may be ok in some +situations. + + +---------------- +Date: 2014-08-04 +Author: Sonny Jeon +Subject: Allow '$$' in check mode. + +- Now allows the ‘$$’ view Grbl settings while in check mode + +- Updated the version build date + + +---------------- +Date: 2014-08-04 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2014-08-04 +Author: Sonny Jeon +Subject: Fixed probe position sync error. + +- Restored probe position syncing. Had removed a pull-off motion after +a probe cycle completes, but ended up de-synchronizing the g-code +parser and probing cycle positions. Putting the pull-off motion back +fixed the problem. + + +---------------- +Date: 2014-08-03 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2014-08-03 +Author: Sonny Jeon +Subject: Probing cycle and view build info bug fixes. + +- Probing cycle would drop into a QUEUED state, if multiple G38.2 are +sent. It would not honor the auto cycle start flags. To fix, the auto +cycle start state is saved at the beginning of the probing cycle and +restored at the end, since the feed hold it uses to stop a triggered +probe will disable the auto start flag. For now it’s a patch, rather +than a permanent fix. + +- protocol_buffer_synchronize() also has a failure case. Auto cycle +start does not get executed when the system is waiting in here, so if +it’s in a QUEUED state already, it won’t resume. Patched here, but not +fully resolved. + +- Fixed a problem with the “view build info” command. The EEPROM write +would do weird things and corrupt the EEPROM. Not sure exactly what +caused it, but it’s likely a compiler problem with an improperly +defined EEPROM address. It didn’t have enough room to store a full +string. To fix, the build info EEPROM range was increased and the max +number of STARTUP_BLOCKS was reduced to 2 from 3. + +- Lastly, when a $I view build info is used for the first time, it +would normally show an EEPROM read error, since it wasn’t cleared or +wasn’t therein the first place. It will now not show that error. A +patch rather than a permanent fix again. + + +---------------- +Date: 2014-08-01 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2014-08-01 +Author: Sonny Jeon +Subject: Minor bug fixes. + +- Bug fix for step and direction invert masks not immediately being in +effect. Now regenerates the masks when a user changes this setting. + +- Bug fix for probing cycle. G-code standard mandates that there is an +error if the probe is already triggered when the cycle is commanded. +However, Grbl may have motions to pull off a previous probing cycle in +queue and can falsely lead to errors. To fix this, the triggered check +is performed within the probing cycle itself, right after the planner +buffer is synced. If there is an error, it will now alarm out as a +probe fail. + + +---------------- +Date: 2014-07-28 +Author: Sonny Jeon +Subject: Compile in Atmel Studio fix. + + +---------------- +Date: 2014-07-28 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2014-07-27 +Author: Sonny Jeon +Subject: Added build info feedback in help + +- `$I` prints the Grbl build info and version number. NOTE: `$I=xxx` +stores an additional 30 character string into EEPROM, which will be +printed with the build info the next time it’s run. This is for +identification purposes for users that have more than one system using +Grbl. + + +---------------- +Date: 2014-07-26 +Author: Sonny Jeon +Subject: Updates to allow Arduino IDE direct compiling. + +- Only minor changes were required to make the Arduino IDE compile all +of the Grbl’s source code (correctly using the C-compiler). Tested in +Windows and Mac and with the normal USB upload and with a programmer. + + +---------------- +Date: 2014-07-26 +Author: Sonny Jeon +Subject: Settings refactoring. Bug fixes. Misc new features. + +This is likely the last major change to the v0.9 code base before push +to master. Only two minor things remain on the agenda (CoreXY support, +force clear EEPROM, and an extremely low federate bug). + +- NEW! Grbl is now compile-able and may be flashed directly through the +Arduino IDE. Only minor changes were required for this compatibility. +See the Wiki to learn how to do it. + +- New status reporting mask to turn on and off what Grbl sends back. +This includes machine coordinates, work coordinates, serial RX buffer +usage, and planner buffer usage. Expandable to more information on user +request, but that’s it for now. + +- Settings have been completely renumbered to allow for future new +settings to be installed without having to constantly reshuffle and +renumber all of the settings every time. + +- All settings masks have been standardized to mean bit 0 = X, bit 1 = +Y, and bit 2 = Z, to reduce confusion on how they work. The invert +masks used by the internal Grbl system were updated to accommodate this +change as well. + +- New invert probe pin setting, which does what it sounds like. + +- Fixed a probing cycle bug, where it would freeze intermittently, and +removed some redundant code. + +- Homing may now be set to the origin wherever the limit switches are. +Traditionally machine coordinates should always be in negative space, +but when limit switches on are on the opposite side, the machine +coordinate would be set to -max_travel for the axis. Now you can always +make it [0,0,0] via a compile-time option in config.h. (Soft limits +routine was updated to account for this as well.) + + - Probe coordinate message immediately after a probing cycle may now +be turned off via a compile-time option in config.h. By default the +probing location is always reported. + +- Reduced the N_ARC_CORRECTION default value to reflect the changes in +how circles are generated by an arc tolerance, rather than a fixed arc +segment setting. + +- Increased the incoming line buffer limit from 70 to 80 characters. +Had some extra memory space to invest into this. + +- Fixed a bug where tool number T was not being tracked and reported +correctly. + +- Added a print free memory function for debugging purposes. Not used +otherwise. + +- Realtime rate report should now work during feed holds, but it hasn’t +been tested yet. + +- Updated the streaming scripts with MIT-license and added the simple +streaming to the main stream.py script to allow for settings to be sent. + +- Some minor code refactoring to improve flash efficiency. Reduced the +flash by several hundred KB, which was re-invested in some of these new +features. + + +---------------- +Date: 2014-07-17 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2014-07-12 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2014-07-12 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2014-07-12 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2014-07-12 +Author: Sonny Jeon +Subject: Updated README + + +---------------- +Date: 2014-07-11 +Author: Sonny Jeon +Subject: Updated README + + +---------------- +Date: 2014-07-11 +Author: Sonny Jeon +Subject: Merge pull request #441 from ashelly/edge-simfix + +Fixes for simulator in alternate configurations. + +---------------- +Date: 2014-07-10 +Author: ashelly +Subject: Restore changes made only for testing. + + +---------------- +Date: 2014-07-10 +Author: ashelly +Subject: Bug fixes for timers, added some wdt support for limit debounce. + +- Typo in timer def, +- Handle 8 bit timers correctly, +- Don't skip TOP count in CTC mode +- added SREG for atomic bit operations + + +---------------- +Date: 2014-07-09 +Author: Sonny Jeon +Subject: Merge branch 'dev' into edge + +Conflicts: + sim/simulator.c + sim/simulator.h + + +---------------- +Date: 2014-07-09 +Author: Sonny Jeon +Subject: Added test g-code programs. + + +---------------- +Date: 2014-07-06 +Author: Sonny Jeon +Subject: Version and build update. + +- Incremented from v0.9e to v0.9f due to the new g-codes, velocity +reporting option, decimal printing refactoring, grbl-sim updates, and +G0/G1 bug fix. + +- Settings version was also incremented since settings.decimal_places +is now gone. + + +---------------- +Date: 2014-07-06 +Author: Sonny Jeon +Subject: Isolate atomic bit flag for execution. + +- Denoted bit_true_atomic only for sys.execute bit settings. All other +bit_true type calls are for local variables only and don’t need atomic +access. Still looking into other ways of setting these flags without +requiring atomic access, but this is a patch for now. + + +---------------- +Date: 2014-07-06 +Author: Sonny Jeon +Subject: Merge pull request #436 from kfoltman/dev + +Fixed atomic access to flags in sys.execute. + +---------------- +Date: 2014-07-06 +Author: Sonny Jeon +Subject: Syntax fix for gcode.c + +- Whoops! Missed a bracket and it wasn’t compiling. Now fixed. + +- Updated the unsupported gcodes listed at the end of the gcode.c file. + + +---------------- +Date: 2014-07-06 +Author: Sonny Jeon +Subject: G43.1/G49 tool length offset installed. Minor bug fix. + +- Minor bug fix that caused G92.1 not to work. The mantissa of G92.1 +was not computed correctly due to floating point round-off errors and +the use of trunc(). Fixed it by changing the computation with round(). + +- Installed tool length offsets with G43.1 and G49! True tool length +offsets via G43 are not supported, because these require us to store +tool data that we don’t have space for. But we’ve come up with a good +solution for users that need this. Instead we are strictly using the +dynamic version G43.1 via linuxcnc.org. Visit their website for more +details on the command. + +- G43.1 operates by requiring an axis word and value to offset the +configured tool length axis, which can be configured for any axis +(default Z-axis) in config.h. For example, ```G43.1 Z0.5``` will offset +the work coordinates from Z0.0 to Z-0.5. + +- G49 will cancel the last tool length offset value and reset it to +zero. + +- Tweaked the ‘$#’ parameters report. `Probe` is now `PRB` and a new +value `TLO` states the tool length offset value. + + +---------------- +Date: 2014-07-05 +Author: Sonny Jeon +Subject: Merge branch 'ashelly-sim-update' into dev + + +---------------- +Date: 2014-07-05 +Author: Sonny Jeon +Subject: Merge grbl-sim updates for v0.9. + +- Removed some conflicting code in the main Grbl firmware source. + +- Temporary patch for coolant and spindle control with streaming +applied. + + +---------------- +Date: 2014-07-05 +Author: Sonny Jeon +Subject: New G43.1/G49 gcodes. Not working yet!! + +- Pushed this uncompleted code to merge a conflicting pull request. + +- New G43.1 and G49 g-codes to be installed. The beginnings of it are +in place. These g-codes are intended to be used in conjunction with +probing and allow GUIs to set tool length offsets without Grbl needing +to store a tool table. + +- G43.1 is defined as a dynamic tool length offset that is not stored +in memory. Rather, when commanded, these are applied to the work +coordinates until a reset or disabled by G49. This works much like G92. + + +---------------- +Date: 2014-07-05 +Author: ashelly +Subject: formatting + +---------------- +Date: 2014-07-05 +Author: ashelly +Subject: Update readme.md + +---------------- +Date: 2014-07-04 +Author: ashelly +Subject: Don't need kbhit.h + +---------------- +Date: 2014-07-04 +Author: Adam Shelly +Subject: minor tweaks for mingw. + + +---------------- +Date: 2014-07-04 +Author: Sonny Jeon +Subject: Realtime rate reporting. Updated decimal places. + +- Added a new optional compile-time feature for ‘realtime’ (within +50ms) feed rate reporting. When querying for a status report, a new +data value will state the current operating rate. It’s only beta at the +moment and has some kinks to work out. + +- Updated the code for printing floating point values to N decimal +places. Generalized the main floating point print code to accept a new +decimal places value and created a set of handler functions to print +certain floating point value types used in Grbl, like position, rates, +coordinate offsets, etc. All of these have different decimal +requirements and change when printed in mm or inches mode. + +- Number of decimal places for the different value types can be +re-defined in config.h, but there shouldn’t be a need for this, as +these are physically limited. + +- Removed the decimal places settings, as this was now obsoleted by the +new decimal places code. + +- The new decimal places code also saves almost 300kB in flash space, +as it’s more efficient. + + +---------------- +Date: 2014-07-04 +Author: ashelly +Subject: reduce diffs with dev branch + + +---------------- +Date: 2014-07-04 +Author: ashelly +Subject: Total rework of simulator for dev branch. Create separate thread for interrupt processes. Tick-accurate simulation of timers. Non-blocking character input for running in realtime mode. Decouple hardware sim from grbl code as much as possible. Expanded command line options. Provisions for cross-platform solution. + + +---------------- +Date: 2014-07-03 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2014-07-03 +Author: Sonny Jeon +Subject: G18 reporting bug fix. + +- G18 wasn’t getting reported back to the user correctly, even though +it has been set internally. Fixed the reporting code to reflect this +accurately. + + +---------------- +Date: 2014-07-03 +Author: Sonny Jeon +Subject: G-code parser G0/G1 bug fix. + +- Although stated as invalid in the NIST g-code standard, most g-code +parsers, including linuxcnc, allow G0 and G1 to be commanded without +axis words present. For example, something like ‘G1 F100.0’ to preset +the motion mode and feed rate without a motion commanded. Older CNC +controllers actually required this for feed rate settings. This update +should now allow this type of behavior. + + +---------------- +Date: 2014-07-02 +Author: Sonny Jeon +Subject: Minor bug fixes and updates. Line number tracking. + +- Line number tracking was getting truncated at 255, since it was using +wrong variable type. Fixed it with a trunc(). + +- Increased the max number line allowed by Grbl to 9999999 from the +g-code standard 99999. The latter seems to be an arbitrary number, so +we are allowing larger ones for at least one known use case scenario. + +- Created a new test directory to contain some testing g-code to proof +the firmware. Only got started with one test case so far. More will be +inserted as needed. + +- Some other commenting updates to clarify certain aspects of the code. + + +---------------- +Date: 2014-06-26 +Author: Krzysztof Foltman +Subject: Fixed atomic access to flags in sys.execute. + +This seems to fix the bug that caused Grbl to hang during some operations, +especially jogging. + + +---------------- +Date: 2014-05-31 +Author: Sonny Jeon +Subject: Arc error-checking update. + +- Updated offset-mode arc error-checking to EMC2’s version: The old +NIST definition required the radii to the current location and target +location to differ no more than 0.002mm. This proved to be problematic +and probably why LinuxCNC(EMC2) updated it to be 0.005mm AND 0.1% +radius OR 0.5mm. + + +---------------- +Date: 2014-05-31 +Author: Sonny Jeon +Subject: Various minor g-code parser fixes. + +- Updated the mantissa calculation that checks for non-integer values +and GXX.X commands that aren’t supported. There was a potential uint8 +overflow issue. + +- Fixed g-code parser bug related to not using the correct modal +struct. G10 P0 not selecting the current coordinate system when a +G55-59 is issued in the same line. + +- Fixed g-code parser bug related to not using the correct modal +struct. Target position locations were not computed correctly when +G90/91 distance modes were changed in the same line. It was using the +previous state, rather than the current block. + + +---------------- +Date: 2014-05-29 +Author: Sonny Jeon +Subject: Fixed spindle/coolant/dwell state check. + + +---------------- +Date: 2014-05-25 +Author: Sonny Jeon +Subject: Major g-code parser overhaul. 100%* compliant. Other related updates. + +- Completely overhauled the g-code parser. It’s now 100%* compliant. (* +may have some bugs). Being compliant, here are some of the major +differences. + +- SMALLER and JUST AS FAST! A number of optimizations were found that +sped things up and allowed for the more thorough error-checking to be +installed without a speed hit. Trimmed a lot of ‘fat’ in the parser and +still was able to make it significantly smaller than it was. + +- No default feed rate setting! Removed completely! This doesn’t exist +in the g-code standard. So, it now errors out whenever it’s undefined +for motions that require it (G1/2/3/38.2). + +- Any g-code parser error expunges the ENTIRE block. This means all +information is lost and not passed on to the running state. Before some +of the states would remain, which could have led to some problems. + +- If the g-code block passes all of the error-checks, the g-code state +is updated and all motions are executed according to the order of +execution. + +- Changes in spindle speed, when already running, will update the +output pin accordingly. This fixes a bug, where it wouldn’t update the +speed. + +- Update g-code parser error reporting. Errors now return detailed +information of what exact went wrong. The most common errors return a +short text description. For less common errors, the parser reports +‘Invalid gcode ID:20’, where 20 is a error ID. A list of error code IDs +and their descriptions will be documented for user reference elsewhere +to save flash space. + +- Other notable changes: + +- Added a print integer routine for uint8 variables. This saved +significant flash space by switching from a heavier universal print +integer routine. + +- Saved some flash space with our own short hypotenuse calculation + +- Some arc computation flash and memory optimizations. + + +---------------- +Date: 2014-05-18 +Author: Jens Geisler +Subject: Merge pull request #408 from chamnit/master + +MIT-Licensing change. + +---------------- +Date: 2014-05-18 +Author: Sonny Jeon +Subject: MIT-licensing change. + + +---------------- +Date: 2014-05-18 +Author: Sonny Jeon +Subject: MIT-licensing change + + +---------------- +Date: 2014-04-28 +Author: Sonny Jeon +Subject: Merge pull request #391 from paulkaplan/master + +Update Shapeoko 2 defaults + +---------------- +Date: 2014-04-14 +Author: Paul Kaplan +Subject: updated shapeoko2 defaults + + +---------------- +Date: 2014-03-14 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2014-03-13 +Author: Sonny Jeon +Subject: Comment corrections and function call update. + + +---------------- +Date: 2014-03-13 +Author: Sonny Jeon +Subject: Merge pull request #373 from EliteEng/dev + +Added Probing to Mega2560 and fixed Shapeoko2 compile error + +---------------- +Date: 2014-03-11 +Author: Rob Brown +Subject: Added Probing to Mega2560 and fixed Shapeoko2 compile error + + +---------------- +Date: 2014-03-07 +Author: henols +Subject: Probing command gets stuck in hold if several g38.2 are submitted +Ex. +G0 X0 Y0 Z0 +G38.2 Z-10 F100 +G10 L20 P0 Z0 +G0 Z2 +G38.2 Z-1 F50 +G10 L20 P0 Z0 +G0 Z2 +G0 X0 Y0 +G38.2 Z-1 F100 +G0 Z2 + + +---------------- +Date: 2014-03-10 +Author: Sonny Jeon +Subject: Merge pull request #372 from martinstingl/master + +Corrected units of default acceleration values + +---------------- +Date: 2014-03-10 +Author: Martin Stingl +Subject: Corrected units of default acceleration values + + +---------------- +Date: 2014-03-07 +Author: Sonny Jeon +Subject: Merge pull request #368 from henols/dev + +Probing command gets stuck in hold if several g38.2 are submitted + +---------------- +Date: 2014-03-07 +Author: henols +Subject: Probing command gets stuck in hold if several g38.2 are submitted +Ex. +G0 X0 Y0 Z0 +G38.2 Z-10 F100 +G10 L20 P0 Z0 +G0 Z2 +G38.2 Z-1 F50 +G10 L20 P0 Z0 +G0 Z2 +G0 X0 Y0 +G38.2 Z-1 F100 +G0 Z2 + + +---------------- +Date: 2014-02-28 +Author: Sonny Jeon +Subject: G38.2 probe feature rough draft installed. Working but needs testing. + +- G38.2 straight probe now supported. Rough draft. May be tweaked more +as testing ramps up. + +- G38.2 requires at least one axis word. Multiple axis words work too. +When commanded, the probe cycle will move at the last ‘F’ feed rate +specified in a straight line. + +- During a probe cycle: If the probe pin goes low (normal high), Grbl +will record that immediate position and engage a feed hold. Meaning +that the CNC machine will move a little past the probe switch point, so +keep federates low to stop sooner. Once stopped, Grbl will issue a move +to go back to the recorded probe trigger point. + +- During a probe cycle: If the probe switch does not engage by the time +the machine has traveled to its target coordinates, Grbl will issue an +ALARM and the user will be forced to reset Grbl. (Currently G38.3 probe +without error isn’t supported, but would be easy to implement later.) + +- After a successful probe, Grbl will send a feedback message +containing the recorded probe coordinates in the machine coordinate +system. This is as the g-code standard on probe parameters specifies. + +- The recorded probe parameters are retained in Grbl memory and can be +viewed with the ‘$#’ print parameters command. Upon a power-cycle, not +a soft-reset, Grbl will re-zero these values. + +- Moved ‘$#’ command to require IDLE or ALARM mode, because it accesses +EEPROM to fetch the coordinate system offsets. + +- Updated the Grbl version to v0.9d. + +- The probe cycle is subject to change upon testing or user-feedback. + + +---------------- +Date: 2014-02-27 +Author: Sonny Jeon +Subject: Probe cycle line numbers ifdef fixes to get it to compile. + +- Updated some of the ifdefs when disabling line numbers feature. +Getting messy with this compile-time option. This will likely get +cleaned up later. + +- This is just a push to get the new probing code to compile. Testing +and optimization of the code will soon follow and be pushed next. + + +---------------- +Date: 2014-02-27 +Author: Sonny Jeon +Subject: Merge pull request #362 from robgrz/dev + +Minimal probing cycle working. Supports both G38.2 for error and G38.3 ... + +---------------- +Date: 2014-02-26 +Author: Sonny Jeon +Subject: Added grbl planner Matlab simulator for test reference. Updated line number compile-time option. + +- Added a grbl planner simulation tool that was written in Matlab and +Python. It was used to visualize the inner workings of the planner as a +program is streamed to it. The simulation assumes that the planner +buffer is empty, then filled, and kept filled. This is mainly for users +to see how the planner works. + +- Updated some of the compile-time ifdefs when enabling line numbers. +The leaving the un-used line numbers in the function calls eats a +non-neglible amount of flash memory. So the new if-defs remove them. + + +---------------- +Date: 2014-02-25 +Author: Robert Grzesek +Subject: Minimal probing cycle working. Supports both G38.2 for error and G38.3 when no errors are desired. + + +---------------- +Date: 2014-02-19 +Author: Sonny Jeon +Subject: Minor updates to line number feature. + +- Changed line number integer types from unsigned to signed int32. +G-code mandates values cannot exceed 99999. Negative values can be used +to indicate certain modes. + +- Homing cycle line number changed to -1, as an indicator. + +- Fixed a reporting define for the spindle states that was broken by +the last merge. + + +---------------- +Date: 2014-02-19 +Author: Sonny Jeon +Subject: Merge pull request #356 from robgrz/dev + +Line number reporting as compile-time option. + +---------------- +Date: 2014-02-19 +Author: Sonny Jeon +Subject: Commenting updates. Minor bug fix with exit of soft limit event. + + +---------------- +Date: 2014-02-18 +Author: Robert Grzesek +Subject: Merge commit 'cd71a90ce8a770e0030ed6c9bac805b89724e275' into dev + +Conflicts: + limits.c + motion_control.c + report.c + + +---------------- +Date: 2014-02-15 +Author: Sonny Jeon +Subject: Homing and feed hold bug fixes. + +WARNING: Bugs may still exist. This branch is a work in progress and +will be pushed to the edge branch when at beta stability. Use at your +own risk. + +- Homing freezing issue fixed. Had to do with the cycle stop flag being +set incorrectly after the homing cycles and before the pull-off +maneuver. Now resets the stepper motors before this can happen. + +- Fixed an issue with a rare feed hold failure. Had to do with feed +hold ending exactly at the end of a block. The runtime protocol now +sets the QUEUED and IDLE states appropriately when this occurs. Still +need to clean this code up however, as it’s patched rather than written +well. + +- Updated version build via $I command. + +- Forgot to comment on a new feature for the last commit. Since steps +are integers and millimeters traveled are floats, the old step segment +generator ignored the step fraction differences in generating the +segment velocities. Didn’t see like it would be much of a big deal, but +there were instances that this would be a problem, especially for very +slow feed rates. The stepper algorithm now micro-adjusts the segment +velocities based on the step fractions not executed from the previous +segment. This ensures that Grbl generates the velocity profiles EXACTLY +and noticeably improves overall acceleration performance. + + +---------------- +Date: 2014-02-09 +Author: Sonny Jeon +Subject: Refactoring and lots of bug fixes. Updated homing cycle. + +WARNING: There are still some bugs to be worked out. Please use caution +if you test this firmware. + +- Feed holds work much better, but there are still some failure +conditions that need to be worked out. This is the being worked on +currently and a fix is planned to be pushed next. + +- Homing cycle refactoring: Slight adjustment of the homing cycle to +allow for limit pins to be shared by different axes, as long as the +shared limit pins are not homed on the same cycle. Also, removed the +LOCATE_CYCLE portion of the homing cycle configuration. It was +redundant. + +- Limit pin sharing: (See above). To clear up one or two limit pins for +other IO, limit pins can now be shared. For example, the Z-limit can be +shared with either X or Y limit pins, because it’s on a separate homing +cycle. Hard limit will still work exactly as before. + +- Spindle pin output fixed. The pins weren’t getting initialized +correctly. + +- Fixed a cycle issue where streaming was working almost like a single +block mode. This was caused by a problem with the spindle_run() and +coolant_run() commands and issuing an unintended planner buffer sync. + +- Refactored the cycle_start, feed_hold, and other runtime routines +into the runtime command module, where they should be handled here +only. These were redundant. + +- Moved some function calls around into more appropriate source code +modules. + +- Fixed the reporting of spindle state. + + +---------------- +Date: 2014-02-06 +Author: Robert Grzesek +Subject: Made line number reporting optional via config.h + + +---------------- +Date: 2014-02-06 +Author: Robert Grzesek +Subject: Initial line number reporting + + +---------------- +Date: 2014-02-02 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2014-01-28 +Author: Jens Geisler +Subject: Merge pull request #337 from michmerr/edge + +Make sure that cycle_start state is set before simulating steps. + +---------------- +Date: 2014-01-28 +Author: michmerr +Subject: Simplify setting of STATE_CYCLE and ISR interval. + +Set sys.state to STATE_CYCLE directly instead of calling back to +st_wakeup(). + +Convert get_step_time() to a constant and rename it to ISR_INTERVAL. + + +---------------- +Date: 2014-01-22 +Author: michmerr +Subject: Make sure that cycle_start state is set before simulating steps. + + +---------------- +Date: 2014-01-15 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2014-01-14 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2014-01-10 +Author: Sonny Jeon +Subject: Lots of re-organization and cleaning-up. Some bug fixes. + +- Added a new source and header file called system. These files contain +the system commands and variables, as well as all of the system headers +and standard libraries Grbl uses. Centralizing some of the code. + +- Re-organized the include headers throughout the source code. + +- ENABLE_M7 define was missing from config.h. Now there. + +- SPINDLE_MAX_RPM and SPINDLE_MIN_RPM now defined in config.h. No +uncommenting to prevent user issues. Minimum spindle RPM now provides +the lower, near 0V, scale adjustment, i.e. some spindles can go really +slow so why use up our 256 voltage bins for them? + +- Remove some persistent variables from coolant and spindle control. +They were redundant. + +- Removed a VARIABLE_SPINDLE define in cpu_map.h that shouldn’t have +been there. + +- Changed the DEFAULT_ARC_TOLERANCE to 0.002mm to improve arc tracing. +Before we had issues with performance, no longer. + +- Fixed a bug with the hard limits and the software debounce feature +enabled. The invert limit pin setting wasn’t honored. + +- Fixed a bug with the homing direction mask. Now is like it used to +be. At least for now. + +- Re-organized main.c to serve as only as the reset/initialization +routine. Makes things a little bit clearer in terms of execution +procedures. + +- Re-organized protocol.c as the overall master control unit for +execution procedures. Not quite there yet, but starting to make a +little more sense in how things are run. + +- Removed updating of old settings records. So many new settings have +been added that it’s not worth adding the code to migrate old user +settings. + +- Tweaked spindle_control.c a bit and made it more clear and consistent +with other parts of Grbl. + +- Tweaked the stepper disable bit code in stepper.c. Requires less +flash memory. + + +---------------- +Date: 2014-01-05 +Author: Sonny Jeon +Subject: Updates to some stepper algorithm commenting + + +---------------- +Date: 2014-01-05 +Author: Sonny Jeon +Subject: New build info feature. (per @Analogreality request) + +- New build info feature. Hidden command ‘$I’ will print the build info +for your Grbl firmware. Users may also write an identifying message +within it via ‘$I=‘ with up to 32 characters. (no more, or else it will +break). + +- Adjusted the max number of startup lines to 3. Majority of people +will only need one. + +- Fixed a compile error with spindle_control.c. A rogue #endif was +causing problems. + + +---------------- +Date: 2014-01-04 +Author: Sonny Jeon +Subject: Variable spindle output. Resolved conflicts in last push. + +Resolve conflicts. + + +---------------- +Date: 2014-01-04 +Author: Sonny Jeon +Subject: Cleaned up variable spindle output (PWM). Code and config comments. + +- Variable spindle speed output as a configuration option. Thanks +@EliteEng! When enabled, the Z-limit (D11) and spindle enable(D12) pins +switch to allow access to the hardware PWM output on pin D11. +Otherwise, everything should work as it does. + +- Removed option for inverting the spindle and coolant enable pins. +This is a safety hazard, especially for the spindle. When Grbl +initializes, all pins are momentarily low until it finishes booting. If +an invert is enabled, this means the spindles can be energized briefly +during this time. If users need signal inversion, it’s recommended to +just wire in an inversion circuit instead. + +- Cleared out references to spindle variable output in terms of step +signal. This isn’t complete and requires more deliberation before +installing. + +- Cleared up and cleaned up some code and config comments. + + +---------------- +Date: 2014-01-03 +Author: Sonny Jeon +Subject: Merge pull request #322 from EliteEng/dev + +Update to fix compile error + +---------------- +Date: 2014-01-03 +Author: Rob Brown +Subject: Update to fix compile error + +Update to fix compile error + + +---------------- +Date: 2014-01-02 +Author: Sonny Jeon +Subject: Merge pull request #318 from EliteEng/dev + +PWM Spindle Control and Invert Spindle & Coolant Pins + +---------------- +Date: 2014-01-03 +Author: Rob Brown +Subject: Update spindle_control.c + +Updated spindle_control.c due to compile error. + +---------------- +Date: 2014-01-02 +Author: Sonny Jeon +Subject: Fix for M7/8/9 modal group checks. Updated AMASS frequency cutoffs and code cleaned. + +- Updated Grbl version to 0.9c and build number. + +- G-code parser was missing modal group violation checks for M7/8/9 +commands. Added them. + +- Updated the Adaptive Multi-Axis Step Smoothing (AMASS) cutoff +frequencies so that the trade between the 16-bit Timer1 accuracy and +the level step smoothing are somewhat better balanced. (Smoothing isn’t +free, but a higher accuracy timer would provide high cutoff +frequencies.) + + +---------------- +Date: 2014-01-02 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2014-01-02 +Author: Rob Brown +Subject: PWM Spindle Control and Invert Spindle & Coolant Pins + +PWM Spindle Control and Invert Spindle & Coolant Pins + + +---------------- +Date: 2013-12-30 +Author: Sonny Jeon +Subject: Minor bug fixes: Homing travel calculations. Cycle resuming after spindle and dwell commands. + +- Homing travel calculations fixed. It was computing the min travel +rather than max. + +- Auto-start disable and pausing after spindle or dwell commands. +Related to plan_synchronize() function call. Now fixed, but still need +to work on the system state. + +- Pushed a fix to make this branch more Arduino IDE compatible. Removed +extern call in nuts_bolts.c + +- Updated the stepper configuration option of enabling or disabling the +new Adaptive Multi-Axis Step Smoothing Algorithm. Now works either way. + +- Updated some copyright info. + + +---------------- +Date: 2013-12-30 +Author: Sonny Jeon +Subject: Merge pull request #201 from Protoneer/master + +Made a few changes to make the code compatible with the Arduino IDE. Sorry about the tardiness! + +---------------- +Date: 2013-12-30 +Author: Sonny Jeon +Subject: Incomplete push but working. Lots more stuff. More to come. + +- NEW! An active multi-axis step smoothing algorithm that automatically +adjusts dependent on step frequency. This solves the long standing +issue to aliasing when moving with multiple axes. Similar in scheme to +Smoothieware, but more advanced in ensuring a more consistent CPU +overhead throughout all frequencies while maintaining step exactness. + +- Switched from Timer2 to Timer0 for the Step Port Reset Interrupt. +Mainly to free up hardware PWM pins. + +- Seperated the direction and step pin assignments, so we can now move +them to seperate ports. This means that we can more easily support 4+ +axes in the future. + +- Added a setting for inverting the limit pins, as so many users have +request. Better late than never. + +- Bug fix related to EEPROM calls when in cycle. The EEPROM would kill +the stepper motion. Now protocol mandates that the system be either in +IDLE or ALARM to access or change any settings. + +- Bug fix related to resuming the cycle after a spindle or dwell +command if auto start has been disabled. This fix is somewhat temporary +or more of a patch. Doesn’t work with a straight call-response +streaming protocol, but works fine with serial buffer pre-filling +streaming that most clients use. + +- Renamed the pin_map.h to cpu_map.h to more accurately describe what +the file is. + +- Pushed an auto start bug fix upon re-initialization. + +- Much more polishing to do! + + +---------------- +Date: 2013-12-29 +Author: Sonny Jeon +Subject: Incomplete dev code push, but working. Lots of updates/fixes/improvements. Much still to polish. + +- Ugh. Github just erased my list of improvements and changes due to a +conflict and forcing me to resolve it. Hope this goes through. + +- Major stepper algorithm change. Trashed the old v0.9 edge +branch-style stepper algorithm. It’s fine, but it was susceptible to +aliasing noise when moving very slow or very fast. It also had a bit of +CPU overhead. It was written to solve a standing issue with v0.8 +master, where it couldn’t generate a smooth acceleration abocve +10-15kHz. But, with new step segment buffer in v0.9c, it inadvertently +fixed the acceleration problem with v0.8 stepper algorithm. So, what +does it mean for you? Smoother stepper pulses and likely higher step +frequencies. + +- Stepper algorithm now uses Timer1 and Timer2, instead of Timer0 and +Timer2. Timers 0 and 2 can be swapped if there is an issue. + +- With the old v0.8 stepper algorithm, the STEP_DELAY_PULSE +configuration option is also back. + +- NEW! Hard limit software debouncing. Grbl now employs the AVR’s +watchdog timer as a way to monitor the hard limit pins and checking +their states after a delay. This is a simple software debouncing +technique and may help alleviate some of the false trigger some users +have been complaining about. BUT, this won’t fix electric noise issues! + +- Fixed an issue with the new homing cycle routine where it wasn’t +honoring the acceleration and axis speed limits depending on the homing +cycle mask. Now does. Also, updated the homing direction mask code to +be a little cleaner. + +- Moved the main part of the homing cycle control and execution to +motion_control.c, where it fits better. + +- Removed the STATE_INIT system state as it was redundant. Made the +system states into bitflags so multiple system states can be checked +via one if statement. + +- Reorganized the power-up routine to work with the new system states. + + +---------------- +Date: 2013-12-29 +Author: Sonny Jeon +Subject: Merge branch 'dev' of https://github.com/grbl/grbl into dev + +Conflicts: + limits.c + + +---------------- +Date: 2013-12-29 +Author: Sonny Jeon +Subject: Merge branch 'dev' of https://github.com/grbl/grbl into dev + +Conflicts: + limits.c + + +---------------- +Date: 2013-12-27 +Author: Sonny Jeon +Subject: Merge pull request #312 from scottrcarlson/dev + +Fixed homing_dir_mask functionality in the re-written homing_cycle. + +---------------- +Date: 2013-12-27 +Author: Scott R Carlson +Subject: Hard Limits configured for active high. + +Added the use of homing_dir_mask to homing_cycle + + +---------------- +Date: 2013-12-10 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2013-12-10 +Author: Sonny Jeon +Subject: Revamped homing cycle. Axis limits and max travel bug fixes. Build info. Refactored config.h. + +- Revamped and improved homing cycle. Now tied directly into the main +planner and stepper code, which enables much faster homing seek rates. +Also dropped the compiled flash size by almost 1KB, meaning 1KB more +for other features. + +- Refactored config.h. Removed obsolete defines and configuration +options. Moved lots of “advanced” options into the advanced area of the +file. + +- Updated defaults.h with the new homing cycle. Also updated the +Sherline 5400 defaults and added the ShapeOko2 defaults per user +submissions. + +- Fixed a bug where the individual axes limits on velocity and +acceleration were not working correctly. Caused by abs() returning a +int, rather than a float. Corrected with fabs(). Duh. + +- Added build version/date to the Grbl welcome message to help indicate +which version a user is operating on. + +- Max travel settings were not being defaulted into the settings EEPROM +correctly. Fixed. + +- To stop a single axis during a multi-axes homing move, the stepper +algorithm now has a simple axis lock mask which inhibits the desired +axes from moving. Meaning, if one of the limit switches engages before +the other, we stop that one axes and keep moving the other. + + +---------------- +Date: 2013-12-10 +Author: Sonny Jeon +Subject: Merge pull request #301 from shapeoko/master + +added shapeoko2 profile + +---------------- +Date: 2013-12-10 +Author: Edward +Subject: added shapeoko2 profile + +shapeoko 2 uses 2mm GT2 belting and 20tooth pulleys + + +---------------- +Date: 2013-12-07 +Author: Sonny Jeon +Subject: Deceleration to zero speed improvements. Update defaults. + +- A minor issue with deceleration ramps when close to zero velocity. +Should be virtually unnoticeable for most CNC systems, but fixed in +this push and accurate to physics. + +- Updated some of the junction deviation defaults. Because the new +stepper algorithm can easily maximize a CNC machine’s capabilities or +simply go much faster, this means the speed in which it enters +junctions has to be a little more constrained. Meaning that, we have to +slow a little bit down more so that we don’t exceed the acceleration +limits of the stepper motors. + + +---------------- +Date: 2013-12-07 +Author: Sonny Jeon +Subject: Pushed bug fixes. Updated readme. + +- G18 plane select fix from XZ-plane to ZX-plane per right hand rule. + +- Added volatile declaration for rx_buffer_tail in serial.c. No real +effect to operation as avr-gcc adds this upon compilation. Helps with +porting issues when using a different compiler. + + +---------------- +Date: 2013-12-07 +Author: Sonny Jeon +Subject: Pushed limits active high option. Updated defaults.h. Misc bug fixes. Cleaned up codebase. + +- Pushed limit switch active high option (i.e. NC switches). + +- Updated defaults.h to be in-line with the new settings. + +- Refactored feed hold handling and step segment buffer to be more +generalized in effort to make adding feedrate overrides easier in the +future. Also made it a little more clean. + +- Fixed G18 plane select issue. Now ZX-plane, rather than XZ-plane, per +right hand rule. + +- Cleaned some of the system settings by more accurately renaming some +of the variables and removing old obsolete ones. + +- Declared serial.c rx_buffer_tail to be volatile. No effect, since +avr-gcc automatically does this during compilation. Helps with porting +when using other compilers. + +- Updated version number to v0.9b. + +- Updates to README.md + + +---------------- +Date: 2013-12-04 +Author: Sonny Jeon +Subject: Reinstated feed holds into new stepper algorithm and planner. Rough draft, but working. + +- Reinstated the feed hold feature with the new stepper algorithm and +new optimized planner. It works, but will be re-factored a bit soon to +clean up the code. + +- At this point, feedrate overrides may need to be installed in the +v1.0 version of grbl, while this version will likely be pushed to the +edge branch soon and pushed to master after the bugs have been squashed. + +- Measured the overall performance of the new planner and stepper +algorithm on an oscilloscope. The new planner is about 4x faster than +before, where it is completing a plan in around 1ms. The stepper +algorithm itself is minutely faster, as it is a little lighter. The +trade-off in the increased planner performance comes from the new step +segment buffer. However, even in the worse case scenario, the step +segment buffer generates a new segment with a typical 0.2 ms, and the +worse case is 1ms upon a new block or replanning the active block. +Added altogether, it’s argubly still twice as efficient as the old one. + + +---------------- +Date: 2013-11-23 +Author: Sonny Jeon +Subject: Merge pull request #289 from Travis-Snoozy/master + +Add support for active-high limit switches + +---------------- +Date: 2013-11-22 +Author: Travis Snoozy +Subject: Add support for active-high limit switches + + +---------------- +Date: 2013-11-22 +Author: Sonny Jeon +Subject: Yet another major stepper algorithm and planner overhaul. + +- Overhauled the stepper algorithm and planner again. This time +concentrating on the decoupling of the stepper ISR completely. It is +now dumb, relying on the segment generator to provide the number of +steps to execute and how fast it needs to go. This freed up lots of +memory as well because it made a lot tracked variables obsolete. + +- The segment generator now computes the velocity profile of the +executing planner block on the fly in floating point math, instead of +allowing the stepper algorithm to govern accelerations in the previous +code. What this accomplishes is the ability and framework to (somewhat) +easily install a different physics model for generating a velocity +profile, i.e. s-curves. + +- Made some more planner enhancements and increased efficiency a bit. + +- The changes also did not increase the compiled size of Grbl, but +decreased it slightly as well. + +- Cleaned up a lot of the commenting. + +- Still much to do, but this push works and still is missing feedholds +(coming next.) + + +---------------- +Date: 2013-10-29 +Author: Sonny Jeon +Subject: Another merge fix. + + +---------------- +Date: 2013-10-29 +Author: Sonny Jeon +Subject: Merge fixes. + + +---------------- +Date: 2013-10-29 +Author: Sonny Jeon +Subject: Merge branch 'dev_2' into dev + +Conflicts: + README.md + gcode.c + motion_control.c + planner.c + planner.h + protocol.c + report.c + settings.c + settings.h + stepper.c + stepper.h + + +---------------- +Date: 2013-10-29 +Author: Sonny Jeon +Subject: Merge branch 'dev_2' into dev + +Conflicts: +README.md +gcode.c +motion_control.c +planner.c +planner.h +protocol.c +report.c +settings.c +settings.h +stepper.c +stepper.h + + +---------------- +Date: 2013-10-29 +Author: Sonny Jeon +Subject: Planner function call fix. More clean up. + + +---------------- +Date: 2013-10-29 +Author: Sonny Jeon +Subject: Updated comments. Changed stepper variable names to be more understandable. Added step locking note. + +- Updated config comments and stepper code comments for the new changes. + +- Changed stepper algorithm variable names to be more understandable in +what they actually do. + +- Added a stepper lock note in default.h per user request. + +- Started some code layout in handling feed holds and refactoring the +homing routine to use the main stepper algorithm instead of a seperate +version. + + +---------------- +Date: 2013-10-24 +Author: Sonny Jeon +Subject: Cleaned up stepper and planner code. + +- Added some compile-time error checking. Will add more in future +pushes to ensure settings are correct and within parameters that won't +break anything. + +- Pushed some master branch changes with MEGA pin settings. + +- Cleaned up planner code and comments to clarify some of the new +changes. Still much to do here. + +- Cleaned up the new stepper code. May need to abstract some of the +segment buffer more to fix the feed holds (and integrate homing into +the main stepper routine). With what's planned, this should make the +stepper algorithm easier to attach other types of processes to it, +where it is now tightly integrated with the planner buffer and nothing +else. + + +---------------- +Date: 2013-10-21 +Author: Sonny Jeon +Subject: Merge pull request #279 from EliteEng/master + +Changed Stepper Pins + +---------------- +Date: 2013-10-18 +Author: Rob Brown +Subject: Changed Stepper Pins + +Changed Stepper Pins so the Step Port Invert Mask matches the UNO + + +---------------- +Date: 2013-10-17 +Author: Sonny Jeon +Subject: Merge pull request #278 from EliteEng/master + +Update Pin Change Interrupts on Mega 2560 + +---------------- +Date: 2013-10-17 +Author: Rob Brown +Subject: Update Pin Change Interrupts so it works + +PCIE1 - Interrupt 8 on the Mega is attached to USART0 RX so when any +serial communication was transmitted it was triggering the Reset +Interrupt + + +---------------- +Date: 2013-10-14 +Author: Sonny Jeon +Subject: Fine tuning of new stepper algorithm with protected planner. Adaptive step prediction for segment buffer. + +- Cleaned up the new stepper algorithm code with more commenting and +better logic flow. + +- The new segment buffer now predicts the number of steps each segment +should have to execute over about 8 milliseconds each (based on the +ACCELERATION_TICKS_PER_SECOND setting). So, for when the whole segment +buffer is full, the stepper algorithm has roughly 40 milliseconds of +steps queued before it needs to refilled by the main program. + +- Readjusted the max supported step rate back to 30kHz from the lower +development 20kHz. Everything still works amazing great and the test +CNC machine still runs twice as fast with the new stepper algorithm and +planner. + +- Upped the standard serial baudrate to 115200 baud, as it is clear +that the bottleneck is the serial interface. Will now support this, as +well as the old 9600 baud, in new firmware builds. + + +---------------- +Date: 2013-10-12 +Author: Sonny Jeon +Subject: New stepper subsystem bug fixes. + +- New stepper algorithm with the new optimized planner seems to be +working nearly twice as fast as the previous algorithm. + +- For one, the planner computation overhead is probably a fraction of +what it used to be with the worst case being about half still. + +- Secondly, anytime the planner plans back to the first executing +block, it no longer overwrites the block conditions and allows it to +complete without lost steps. So no matter if the streams slows, the +protected planner should keep the steppers moving without risk of lost +steps (although this still needs to be tested thoroughly and may +audibly sound weird when this happens.) + +- It now seems that the bottleneck is the serial baudrate (which is +good!) + + +---------------- +Date: 2013-10-09 +Author: Sonny Jeon +Subject: Protected buffer works! Vast improvements to planner efficiency. Many things still broken with overhaul. + +Development push. Lots still broken. + +- Protected planner concept works! This is a critical precursor to +enabling feedrate overrides in allowing the planner buffer and the +stepper execution operate atomically. This is done through a +intermediary segment buffer. + +- Still lots of work to be done, as this was a complete overhaul of the +planner and stepper subsystems. The code can be cleaned up quite a bit, +re-enabling some of the broken features like feed holds, and finishing +up some of the concepts + +- Pushed some of the fixes from the master and edge branch to here, as +this will likely replace the edge branch when done. + + +---------------- +Date: 2013-08-25 +Author: Sonny Jeon +Subject: Merge pull request #263 from 0xPIT/master + +remove mcu argument for avr-size in makefile as it is not present in GNU... + +---------------- +Date: 2013-08-25 +Author: 0xPIT +Subject: remove mcu argument for avr-size in makefile as it is not present in GNU Binutils 2.22 + + +---------------- +Date: 2013-08-20 +Author: Sonny Jeon +Subject: Pin map definition cleanup. + + +---------------- +Date: 2013-08-19 +Author: Sonny Jeon +Subject: Processor-independent pin mapping feature. + +- Cleaned up and organized pin mapping concept by @elmom. + +- pin_map.h allows for user-supplied pin mapping and port vector +definitions in a centralized file. With more processor types, more +definitions could be added. + + +---------------- +Date: 2013-08-19 +Author: Sonny Jeon +Subject: Merge pull request #260 from elmom/master + +Thanks for the contribution! Looks good. Will update some of the semantics shortly, but the idea is solid. + +---------------- +Date: 2013-08-19 +Author: Sonny Jeon +Subject: Push old dev_2 draft to work on other things. + +- **NON-FUNCTIONAL** +- Contains an old draft of separating the stepper driver direct access +to the planner buffer. This is designed to keep the stepper and planner +modules independent and prevent overwriting or other complications. In +this way, feedrate override should be able to be installed as well. +- A number of planner optimizations are installed too. +- Not sure where the bugs are. Either in the new planner optimizations, +new stepper module updates, or in both. Or it just could be that the +Arduino AVR is choking with the new things it has to do. + + +---------------- +Date: 2013-08-19 +Author: Sonny Jeon +Subject: Merge pull request #229 from 0xPIT/patch-1 + +fix command line parameter for avr-size + +---------------- +Date: 2013-07-21 +Author: Elmo Mäntynen +Subject: Refactor config.h to allow defaults for chips/boards with different pin mappings + + +---------------- +Date: 2013-07-21 +Author: Elmo Mäntynen +Subject: Added pin mapping list to docs, useful for porting + + +---------------- +Date: 2013-07-21 +Author: Elmo Mäntynen +Subject: Make serial work with most chips by default + + +---------------- +Date: 2013-05-16 +Author: 0xPIT +Subject: fix command line parameter for avr-size + +---------------- +Date: 2013-04-05 +Author: Sonny Jeon +Subject: Updated readme + + +---------------- +Date: 2013-04-05 +Author: Sonny Jeon +Subject: Increased g-code parser line buffer. Added line overflow feedback. + +- Increased g-code parser line buffer from 50 to 70 characters. Should +fix most all issues with long arc statements, provided that they are 8 +digits(float) long only. + +- Added a line buffer overflow feedback error to let the user know when +it encounters this problem. Resets the line whenever this occurs. +(Thanks @BHSPitMonkey!) + + +---------------- +Date: 2013-04-05 +Author: Sonny Jeon +Subject: Updates to edge/dev. Line buffer increased/planner buffer decreased. Line overflow feedback. + +- Increased g-code parser line buffer to 70 characters (from 50) to +prevent some long arc commands from getting truncated. + +- Decreased planner buffer from 18 to 17 blocks to free up memory for +line buffer. + +- Added a line buffer overflow feedback error (Thanks @BHSPitMonkey!) + + +---------------- +Date: 2013-03-28 +Author: Sonny Jeon +Subject: Minor updates to code and commenting. + + +---------------- +Date: 2013-03-22 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2013-03-21 +Author: Sonny Jeon +Subject: Untested! Soft limits, max travel, homing changes, new settings. + +- WARNING: Completely untested. Will later when there is time. Settings +WILL be overwritten, as there are new settings. + +- Soft limits installed. Homing must be enabled for soft limits to work +correctly. Errors out much like a hard limit, locking out everything +and bringing up the alarm mode. Only difference is it forces a feed +hold before doing so. Position is not lost. + +- IMPORTANT: Homing had to be updated so that soft limits work better +with less CPU overhead. When homing completes, all axes are assumed to +exist in negative space. If your limit switch is other side, the homing +cycle with set this axis location to the max travel value, rather than +zero. + +- Update mc_line() to accept an array, rather than individual variables. + +- Added an mc_auto_cycle_start() function handle this feature. +Organization only. + +- + + +---------------- +Date: 2013-03-19 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2013-03-19 +Author: Sonny Jeon +Subject: G-code updates for G10 L2 and L20 + +- Updated g-codes G10 L2 and G10 L20 to the new descriptions on +linuxcnc.org + + +---------------- +Date: 2013-03-19 +Author: Sonny Jeon +Subject: G-code updates for G10 L2 and L20. + +- LinuxCNC's g-code definitions changed for G10. Updated to their +descriptions. + + +---------------- +Date: 2013-03-13 +Author: Bertus Kruger +Subject: Update planner.c + +Removed inline from all functions. + +If this is really needed is there another way that we can get +around using it? (The Arduino IDE does not recognize it)  + +---------------- +Date: 2013-03-13 +Author: Bertus Kruger +Subject: Update nuts_bolts.c + +Removed __floatunsisf and used normal casting on line 81. +This makes it compatible with the Arduino IDE. + +---------------- +Date: 2013-03-12 +Author: Sonny Jeon +Subject: Pushed minor changes. Thanks @Protoneer! + + +---------------- +Date: 2013-03-12 +Author: Sonny Jeon +Subject: Merge pull request #200 from Protoneer/master + +Fixed small bug. + +---------------- +Date: 2013-03-13 +Author: Bertus Kruger +Subject: Update gcode.c + +Removed the home_select variable. + +---------------- +Date: 2013-03-13 +Author: Bertus Kruger +Subject: Update eeprom.h + +Fixed the function signature. + +---------------- +Date: 2013-03-13 +Author: Bertus Kruger +Subject: Update eeprom.c + +Changed back + +---------------- +Date: 2013-03-12 +Author: Bertus Kruger +Subject: Update gcode.c + +home_select defined out of scope. Moved it outside the switch +so the rest of the switch can see it properly.  + +---------------- +Date: 2013-03-12 +Author: Bertus Kruger +Subject: Update eeprom.c + +Function eeprom_put_char's parameters did not align with the .h file. + +---------------- +Date: 2013-03-01 +Author: Sonny Jeon +Subject: Bug fix to-do note on soft limit checks. Not yet completed. + + +---------------- +Date: 2013-03-01 +Author: Sonny Jeon +Subject: Minor changes and added notes to soft limits routines. + +- Changed up mc_line to accept an array rather than individual x,y,z +coordinates. Makes some of the position data handling more effective, +especially for a 4th-axis later on. + +- Changed up some soft limits variable names. + + +---------------- +Date: 2013-02-26 +Author: Sonny Jeon +Subject: Merge pull request #193 from bungao/soft_limts + +integrating soft limits + +---------------- +Date: 2013-02-26 +Author: Jens Geisler +Subject: bugfix: uninitiallized curr_block->new_entry_speed_sqr lead to step loss +in some cases + +---------------- +Date: 2013-02-26 +Author: bungao +Subject: integrating soft limits + + +---------------- +Date: 2013-02-22 +Author: Sonny Jeon +Subject: Added some prelimary notes to new changes. + + +---------------- +Date: 2013-02-22 +Author: Sonny Jeon +Subject: Push additional updates from @jgeisler0303 + + +---------------- +Date: 2013-02-22 +Author: Jens Geisler +Subject: changed atomic access for updating the acceleration profile +the stepper interrupt is only halted when necessary and for the shortest +time possible (8% cycle time) + +---------------- +Date: 2013-02-20 +Author: Sonny Jeon +Subject: Merge pull request #188 from jgeisler0303/new_planner + +New planner commits merge into dev branch. + +---------------- +Date: 2013-02-20 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2013-02-20 +Author: Jens Geisler +Subject: added counter for planner steps + +---------------- +Date: 2013-02-20 +Author: Jens Geisler +Subject: implemented a mixture of Sonny's MATLAB and my previous grbl planner +ontop of the edge planner +examples run byte for byte identical old and new version + +---------------- +Date: 2013-01-18 +Author: Sonny Jeon +Subject: Merge pull request #169 from silasb/fix-execute-bit-on-files + +Removing executable bit on the files + +---------------- +Date: 2013-01-18 +Author: Sonny Jeon +Subject: Merge bug fixes from recent v0.8c push. Added readme for Grbl Sim. + + +---------------- +Date: 2013-01-18 +Author: Sonny Jeon +Subject: Merge pull request #167 from tmpvar/simulator-mac + +Fix sim makefile so it works on mac + +---------------- +Date: 2013-01-18 +Author: Elijah Insua +Subject: Fix sim makefile so it works on mac + +These changes include a path separator fix and the removal of --gc-sections which causes ld failures, and is not needed on a pc. + +This patch also changes how a compiler is selected. The makefile will now select the system compiler , which should work fine +under mingw and linux. + + +---------------- +Date: 2013-01-17 +Author: Silas Baronda +Subject: Removing executable bit on the files + + +---------------- +Date: 2013-01-17 +Author: Sonny Jeon +Subject: Merge pull request #112 from jgeisler0303/simulator + +Grbl Simulator. Oh yeah. + +---------------- +Date: 2013-01-17 +Author: Jens Geisler +Subject: relaunch ontop of latest grbl edge +code very messy but tested + +---------------- +Date: 2013-01-09 +Author: Sonny Jeon +Subject: Merge pull request #160 from daapp/edge + +Replace some constants with N_AXIS. + +---------------- +Date: 2013-01-10 +Author: Alexander Danilov +Subject: Replace some constants with N_AXIS. + + +---------------- +Date: 2013-01-06 +Author: Sonny Jeon +Subject: Fixed bug with homing and polling at the same time. Updated readme. + + +---------------- +Date: 2013-01-06 +Author: Sonny Jeon +Subject: Minor changes. + +- Changed some names up and removed a plan_reset() function that is +never used. + + +---------------- +Date: 2012-12-21 +Author: Sonny Jeon +Subject: Readme link to edge build 2012-12-21 + + +---------------- +Date: 2012-12-21 +Author: Sonny Jeon +Subject: Updated README. Max step rate back at 30kHz. Acceleration minor bug fix. + +- Returned the max step rate to 30kHz. The new arc algorithm works uses +so much less CPU overhead, because the segments are longer, that the +planner has no problem computing through them. + +- Fixed an issue with the acceleration independence scaling. Should now +work with accelerations above 400mm/sec^2 or so. + +- Updated README + + +---------------- +Date: 2012-12-19 +Author: Sonny Jeon +Subject: Arc mm_per_segment removed, now in terms of tolerance. Stepper ramp counter variable type corrected. + +- Arc mm_per_segment parameter was removed and replaced with an +arc_tolerance parameter, which scales all arc segments automatically to +radius, such that the line segment error doesn't exceed the tolerance. +Significantly improves arc performance through larger radius arc, +because the segments are much longer and the planner buffer has more to +work with. + +- Moved n_arc correction from the settings to config.h. Mathematically +this doesn't need to be a setting anymore, as the default config value +will work for all known CNC applications. The error does not accumulate +as much anymore, since the small angle approximation used by the arc +generation has been updated to a third-order approximation and how the +line segment length scale with radius and tolerance now. Left in +config.h for extraneous circumstances. + +- Corrected the st.ramp_count variable (acceleration tick counter) to a +8-bit vs. 32-bit variable. Should make the stepper algorithm just a +touch faster overall. + + +---------------- +Date: 2012-12-16 +Author: Sonny Jeon +Subject: Slow trailing steps fix. Added more defaults. + +- Fixed an issue (hopefully) with slow trailing steps after a +triangular velocity profile move. Sets the trapezoid tick cycle counter +to the correct value for an accurate reproduction of the deceleration +curve. Keeps it from arriving too early to the target position, which +causes the slow trailing steps. + +- Added Zen Toolworks 7x7 to default settings. + +- Updated readme with new edge build. + + +---------------- +Date: 2012-12-16 +Author: Sonny Jeon +Subject: Max velocity axes independence installed. Fixed intermittent slow trailing steps. Timer0 disable fix. + +- Maximum velocity for each axis is now configurable in settings. All +rapids/seek move at these maximums. All feed rates(including rapids) +may be limited and scaled down so that no axis does not exceed their +limits. + +- Moved around auto-cycle start. May change later, but mainly to ensure +the planner buffer is completely full before cycle starting a streaming +program. Otherwise it should auto-start when there is a break in the +serial stream. + +- Reverted old block->max_entry_speed_sqr calculations. Feedrate +overrides not close to ready at all. + +- Fixed intermittent slow trailing steps for some triangle velocity +profile moves. The acceleration tick counter updating was corrected to +be exact for that particular transition. Should be ok for normal +trapezoidal profiles. + +- Fixed the Timer0 disable after a step pulse falling edge. Thanks +@blinkenlight! + + +---------------- +Date: 2012-12-14 +Author: Sonny Jeon +Subject: Acceleration independence installed. Initial re-work of planner for feedrate overrides. + +NOTE: This push is a work-in-progress and there are known bugs that +need to be fixed, like homing acceleration being incompatible. Released +for testing. Settings will definitely be overwritten, as new settings +were needed. + +- Acceleration independence installed in planner. Each axis can now +have different accelerations and Grbl will maximize the accelerations +depending on the direction its moving. Very useful for users like on +the ShapeOko with vastly different Z-axis properties. + +- More planner optimizations and re-factoring. Slightly improved some +of the older calculations, but new acceleration calculations offset +these improvements. Overall no change in processing speed. + +- Removed planner nominal length checks. It was arguable whether or not +this improved planner efficiency, especially in the worst case scenario +of arcs. + +- Updated readme and changed to markdown format. + + +---------------- +Date: 2012-12-12 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2012-12-12 +Author: Sonny Jeon +Subject: Changed README to markdown + + +---------------- +Date: 2012-12-12 +Author: Sonny Jeon +Subject: Added download links to README. + + +---------------- +Date: 2012-12-12 +Author: Sonny Jeon +Subject: Moved compiled builds to different repo. + + +---------------- +Date: 2012-12-11 +Author: Sonny Jeon +Subject: Added builds folder. + +Because the Downloads section has been removed, added a builds folder +for users to download pre-compiled firmware without needing to compile +it themselves. + + +---------------- +Date: 2012-12-11 +Author: Sonny Jeon +Subject: Added builds folder. + +In light of the downloads section in Github being removed, added a +builds folder for all of the .hex files. Hopefully these won't be +removed either. + + +---------------- +Date: 2012-12-11 +Author: Sonny Jeon +Subject: Planner optimizations. + +- Improved planner execution speed by 5% or more. Re-factored most of +the calculations in terms of the square of velocity. This removed a lot +of sqrt() calculations for every planner_recalculate. + + +---------------- +Date: 2012-12-10 +Author: Sonny Jeon +Subject: (Another) Planner bug fix. + +- Oops again. Thought the new planner changes made things much better, +but there was a bug. Improvements we on the order of 20% execution time +reduction, rather than half. The increase to 30kHz Ranade timer +frequency also increased the overall overhead, so the total planner +change? Zero. But, it's still better. + + +---------------- +Date: 2012-12-10 +Author: Sonny Jeon +Subject: Planner bug fix. + +- Oops! Misplace an if-then statement. Should work as advertised now. +(Hopefully) + + +---------------- +Date: 2012-12-10 +Author: Sonny Jeon +Subject: Planner execution time halved and bug fixes. Increased step rate limit to 30kHz. + +- Planner execute speed has been more than halved from 4ms to 1.9ms +when computing a plan for a single line segment during arc generation. +This means that Grbl can now run through an arc (or complex curve) +twice as fast as before without starving the buffer. For 0.1mm arc +segments, this means about the theoretical feed rate limit is about +3000mm/min for arcs now. + +- Increased the Ranade timer frequency to 30kHz, as there doesn't seem +to be any problems with increasing the frequency. This means that the +maximum step frequency is now back at 30kHz. + +- Added Zen Toolworks 7x7 defaults. + + +---------------- +Date: 2012-12-08 +Author: Sonny Jeon +Subject: New stepper algorithm. Optimized planner. + +- Brand-new stepper algorithm. Based on the Pramod Ranade inverse time +algorithm, but modified to ensure step events are exact. Currently +limited to about 15kHz step rates, much more to be done to enable 30kHz +again. + +- Removed Timer1. Stepper algorithm now uses Timer0 and Timer2. + +- Much improved step generation during accelerations. Smoother. Allows +much higher accelerations (and speeds) than before on the same machine. + +- Cleaner algorithm that is more easily portable to other CPU types. + +- Streamlined planner calculations. Removed accelerate_until and +final_rate variables from block buffer since the new stepper algorithm +is that much more accurate. + +- Improved planner efficiency by about 15-20% during worst case +scenarios (arcs). + +- New config.h options to tune new stepper algorithm. + diff --git a/doc/log/commit_log_v0.9i.txt b/doc/log/commit_log_v0.9i.txt new file mode 100644 index 0000000..49aba2c --- /dev/null +++ b/doc/log/commit_log_v0.9i.txt @@ -0,0 +1,596 @@ +---------------- +Date: 2015-03-27 +Author: Sungeun Jeon +Subject: 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. + + +---------------- +Date: 2015-03-27 +Author: Sungeun Jeon +Subject: 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. + + +---------------- +Date: 2015-03-27 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2015-03-26 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2015-03-16 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2015-03-15 +Author: Sungeun Jeon +Subject: Updated README + + +---------------- +Date: 2015-03-15 +Author: Sonny Jeon +Subject: Create README.md + +---------------- +Date: 2015-03-15 +Author: Sungeun Jeon +Subject: Merge branch 'edge' + + +---------------- +Date: 2015-03-15 +Author: Sungeun Jeon +Subject: Updated README. + +- Also altered the G38.X reporting to save some bytes. + + +---------------- +Date: 2015-03-14 +Author: Sungeun Jeon +Subject: 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. + + +---------------- +Date: 2015-03-07 +Author: Sonny Jeon +Subject: Another homing cycle fix. + +- The homing cycle should be working again. Reverted it back to how it +was about a month ago before I started to fiddle with it. Turns out +that my past self knew what he was doing. + + +---------------- +Date: 2015-03-04 +Author: Sonny Jeon +Subject: 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. + + +---------------- +Date: 2015-02-25 +Author: Sonny Jeon +Subject: G91.1 support. Fixed a config.h option. + +- G91.1 support added. This g-code sets the arc IJK distance mode to +incremental, which is the default already. This simply helps reduce +parsing errors with certain CAM programs that output this command. + +- Max step rate checks weren’t being compiled in if the option was +enabled. Fixed now. + +- Alarm codes were not displaying correctly when GUI reporting mode was +enabled. Due to unsigned int problem. Changed codes to positive values +since they aren’t shared with other codes. + + +---------------- +Date: 2015-02-23 +Author: Sonny Jeon +Subject: Fixed config.h to Grbl release defaults. + +- REPORT_GUI_MODE was accidentally enabled, when it shouldn’t have. + + +---------------- +Date: 2015-02-23 +Author: Sonny Jeon +Subject: 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. + + +---------------- +Date: 2015-02-15 +Author: Sonny Jeon +Subject: Improved homing limit search handling. + +- Instead of a single overall max travel for a search distance for the +homing limit switches. The homing cycle now applies the max travel of +each axis to the search target. Generally makes more sense this way and +saved more than a 100bytes of flash too. + + +---------------- +Date: 2015-02-15 +Author: Sonny Jeon +Subject: 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. + + +---------------- +Date: 2015-02-13 +Author: Sonny Jeon +Subject: Merge pull request #593 from poelstra/fix_makefile_deps + +Fix generating header dependencies, merge with 'normal' compile, force r... + +---------------- +Date: 2015-02-13 +Author: Sonny Jeon +Subject: Updated README with new logo sized for github. + + +---------------- +Date: 2015-02-13 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2015-02-13 +Author: Sonny Jeon +Subject: Doc re-org. New Grbl Logos! + + +---------------- +Date: 2015-02-13 +Author: Sonny Jeon +Subject: Merge pull request #591 from EliteEng/edge + +Safety Door Update for Mega2560 + +---------------- +Date: 2015-02-13 +Author: Sonny Jeon +Subject: Merge pull request #592 from poelstra/fix_softlimit + +Fix EXEC_ALARM_* flags: soft limit would lead to hard limit error. + +---------------- +Date: 2015-02-13 +Author: Sonny Jeon +Subject: Merge pull request #594 from poelstra/fix_sim_build + +Fix function signature of print_uint32_base10(), necessary for compiling simulator. + +---------------- +Date: 2015-02-13 +Author: Martin Poelstra +Subject: Fix function signature of print_uint32_base10(), necessary for compiling simulator. + + +---------------- +Date: 2015-02-13 +Author: Martin Poelstra +Subject: Fix generating header dependencies, merge with 'normal' compile, force recompile when files are removed. + + +---------------- +Date: 2015-02-13 +Author: Martin Poelstra +Subject: Fix EXEC_ALARM_* flags: soft limit would lead to hard limit error. + + +---------------- +Date: 2015-02-13 +Author: Rob Brown +Subject: Safety Door Update for Mega2560 + + +---------------- +Date: 2015-02-11 +Author: Sonny Jeon +Subject: 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. + + +---------------- +Date: 2015-02-10 +Author: Sonny Jeon +Subject: Git fix for empty directory. Makefile updated. + +- ‘build’ directory was not being synced by git because it was empty. +Added a .gitignore file in the ‘build’ directory to force git to sync +it but keep it empty. + +- Updated the Makefile to not erase the .gitignore. + + +---------------- +Date: 2015-02-10 +Author: Sonny Jeon +Subject: 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. + + +---------------- +Date: 2015-02-10 +Author: Sonny Jeon +Subject: Bug fix for certain motions. Re-org of includes. + +- Critical bug fix for diagonal motions that continue on the same +direction or return in the exact opposite direction. This issue could +cause Grbl to crash intermittently due to a numerical round-off error. +Grbl versions prior to v0.9g shouldn’t have this issue. + +- Reorganized all of the includes used by Grbl. Centralized it into a +single “grbl.h” include. This will help simplify the compiling and +uploading process through the Arduino IDE. + +- Added an example .INO file for users to simply open and run when +compiling and uploading through the IDE. More to come later. + + +---------------- +Date: 2015-02-06 +Author: Sonny Jeon +Subject: Limit/control pin state reporting option + +- As a setup feature, users can compile-in input pin status reporting. +Doesn’t do anything special, just prints the binary for the port. 0’s +and 1’s indicate low and high signals on the pins. It’s a bit cryptic +right now, but it’s just a start. + +- Added a max step rate check when writing step/mm and max rate +settings. Should help avoid people misdiagnosing problems associated +with going over the 30kHz step rate limit. Right now not enabled. Takes +up over 100k of flash. Need that room for other things right now. + + +---------------- +Date: 2015-02-04 +Author: Sonny Jeon +Subject: Rare planner bug fix and added simulator defaults. + +- Planner bug when moving along a diagonal back and forth on the same +path. Rare for the fact that most CAM programs don’t program this type +of motion, neither does jogging. Fixed in this update. + +- Added grbl_sim defaults for testing purposes. + + +---------------- +Date: 2015-01-17 +Author: Sonny Jeon +Subject: Fully configurable pins for NO or NC switches. + +- All pins, which include limits, control command, and probe pins, can +now all be configured to trigger as active-low or active-high and +whether the pin has its internal pull-up resistor enabled. This should +allow for just about all types of NO and NC switch configurations. + +- The probe pin invert setting hasn’t been added to the Grbl settings, +like the others, and will have to wait until v1.0. But for now, it’s +available as a compile-time option in config.h. + +- Fixed a variable spindle bug. + + +---------------- +Date: 2015-01-14 +Author: Sonny Jeon +Subject: Lot of refactoring for the future. CoreXY support. + +- Rudimentary CoreXY kinematics support. Didn’t test, but homing and +feed holds should work. See config.h. Please report successes and +issues as we find bugs. + +- G40 (disable cutter comp) is now “supported”. Meaning that Grbl will +no longer issue an error when typically sent in g-code program header. + +- Refactored coolant and spindle state setting into separate functions +for future features. + +- Configuration option for fixing homing behavior when there are two +limit switches on the same axis sharing an input pin. + +- Created a new “grbl.h” that will eventually be used as the main +include file for Grbl. Also will help simply uploading through the +Arduino IDE + +- Separated out the alarms execution flags from the realtime (used be +called runtime) execution flag variable. Now reports exactly what +caused the alarm. Expandable for new alarms later on. + +- Refactored the homing cycle to support CoreXY. + +- Applied @EliteEng updates to Mega2560 support. Some pins were +reconfigured. + +- Created a central step to position and vice versa function. Needed +for non-traditional cartesian machines. Should make it easier later. + +- Removed the new CPU map for the Uno. No longer going to used. There +will be only one configuration to keep things uniform. + + +---------------- +Date: 2014-11-05 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2014-10-29 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2014-10-28 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2014-10-28 +Author: Sonny Jeon +Subject: Update README.md + +---------------- +Date: 2014-10-01 +Author: Sonny Jeon +Subject: Updated variable spindle and new probing. Minor bug fixes. + +- Minor bug fix for variable spindle PWM output. Values smaller than +the minimum RPM for the spindle would overflow the PWM value. Thanks +Rob! + +- Created an optional minimum spindle PWM low-mark value as a +compile-time option. This is for special circumstances when the PWM has +to be at a certain level to be read by the spindle controller. + +- Refactored the new probing commands (G38.3, G38.4, G38.5) code to +work better with the rest of Grbl’s systems. + +- Refactored mc_probe() and mc_arc() to accept the mode of the command, +i.e. clockwise vs counter, toward vs away, etc. This is to make these +functions independent of gcode state variables. + +- Removed the pull off motion in the probing cycle. This is not an +official operation and was added for user simplicity, but wrongly did +so. So bye bye. + +- Created a configure probe invert mask function to handle the +different probe pin setting and probing cycle modes with a single mask. + + - Minor bug fix with reporting motion modes via $G. G38.2 wasn’t +showing up. It now does, along with the other new probing commands. + +- Refactored some of the new pin configurations for the future of Grbl. + +- + + +---------------- +Date: 2014-09-25 +Author: Sonny Jeon +Subject: Merge pull request #491 from tmpvar/G38.2+ + +G38.2+ + +---------------- +Date: 2014-09-22 +Author: Elijah Insua +Subject: report probe_succeeded with probe status + + +---------------- +Date: 2014-09-22 +Author: Elijah Insua +Subject: add probe_finalize to keep things DRY + +this allows the PRB report to be valid when in "no errors" mode and the probe fails + +---------------- +Date: 2014-09-22 +Author: Elijah Insua +Subject: hop over probe pull-off sequence after probe miss + +and while "no errors" is enabled (G38.3, G38.5) + + +---------------- +Date: 2014-09-22 +Author: Elijah Insua +Subject: add/install probe_errors_enabled in mc_probe_cycle + + +---------------- +Date: 2014-09-22 +Author: Elijah Insua +Subject: bump mantissa to uint16_t to enable G38.5 + +---------------- +Date: 2014-09-22 +Author: Elijah Insua +Subject: test only for & PROBE_ACTIVE + + +---------------- +Date: 2014-09-22 +Author: Elijah Insua +Subject: cleanup global var and push probe mode into probe_get_state + + +---------------- +Date: 2014-09-20 +Author: Sonny Jeon +Subject: Edit hard limit check at start of homing cycle + + +---------------- +Date: 2014-09-20 +Author: Sonny Jeon +Subject: Merge pull request #494 from ashelly/homing-alarm + +Alarm if limits engaged on homing start. + +---------------- +Date: 2014-09-20 +Author: Sonny Jeon +Subject: Merge pull request #493 from alpharesearch/edge + +If variable spindle is defined print S value via $G command. + +---------------- +Date: 2014-09-20 +Author: Sonny Jeon +Subject: Minor settings number overflow bug fix. + +- The `x` in `$x=val` would overflow when a value larger than 255 was +entered and passed to Grbl. This resulted with unintended parameters +being set by the overflow value. To fix, simply check for values larger +than 255 and error out. + + +---------------- +Date: 2014-09-17 +Author: ashelly +Subject: No false alarm if other bits in port are set. + +---------------- +Date: 2014-09-17 +Author: Markus Schulz +Subject: If variable spindle is defined print S value via $G command. + + +---------------- +Date: 2014-09-14 +Author: Elijah Insua +Subject: utilize MOTION_MODE_PROBE_NO_ERROR + + +---------------- +Date: 2014-09-14 +Author: Elijah Insua +Subject: install G38.{3,4,5} + + +---------------- +Date: 2014-09-14 +Author: Elijah Insua +Subject: add MOTION_MODE_PROBE_NO_ERROR + + +---------------- +Date: 2014-09-08 +Author: ashelly +Subject: Alarm if limits engaged on homing + diff --git a/doc/media/COPYING b/doc/media/COPYING new file mode 100644 index 0000000..ee26e19 --- /dev/null +++ b/doc/media/COPYING @@ -0,0 +1,2 @@ + +Copyright (c) 2015 Gnea Research LLC. All Rights Reserved. diff --git a/doc/logo/Grbl Logo 150px.png b/doc/media/Grbl Logo 150px.png similarity index 100% rename from doc/logo/Grbl Logo 150px.png rename to doc/media/Grbl Logo 150px.png diff --git a/doc/logo/Grbl Logo 250px.png b/doc/media/Grbl Logo 250px.png similarity index 100% rename from doc/logo/Grbl Logo 250px.png rename to doc/media/Grbl Logo 250px.png diff --git a/doc/logo/Grbl Logo 320px.png b/doc/media/Grbl Logo 320px.png similarity index 100% rename from doc/logo/Grbl Logo 320px.png rename to doc/media/Grbl Logo 320px.png diff --git a/doc/logo/Grbl Logo 640px.png b/doc/media/Grbl Logo 640px.png similarity index 100% rename from doc/logo/Grbl Logo 640px.png rename to doc/media/Grbl Logo 640px.png diff --git a/doc/logo/Grbl Logo.pdf b/doc/media/Grbl Logo.pdf similarity index 100% rename from doc/logo/Grbl Logo.pdf rename to doc/media/Grbl Logo.pdf diff --git a/doc/logo/Grbl Logo.svg b/doc/media/Grbl Logo.svg similarity index 100% rename from doc/logo/Grbl Logo.svg rename to doc/media/Grbl Logo.svg diff --git a/grbl/config.h b/grbl/config.h index d45b260..878b341 100644 --- a/grbl/config.h +++ b/grbl/config.h @@ -294,6 +294,16 @@ // bogged down by too many trig calculations. #define N_ARC_CORRECTION 12 // Integer (1-255) +// The arc G2/3 g-code standard is problematic by definition. Radius-based arcs have horrible numerical +// errors when arc at semi-circles(pi) or full-circles(2*pi). Offset-based arcs are much more accurate +// but still have a problem when arcs are full-circles (2*pi). This define accounts for the floating +// point issues when offset-based arcs are commanded as full circles, but get interpreted as extremely +// small arcs with around machine epsilon (1.2e-7rad) due to numerical round-off and precision issues. +// This define value sets the machine epsilon cutoff to determine if the arc is a full-circle or not. +// NOTE: Be very careful when adjusting this value. It should always be greater than 1.2e-7 but not too +// much greater than this. The default setting should capture most, if not all, full arc error situations. +#define ARC_ANGULAR_TRAVEL_EPSILON 5E-7 // Float (radians) + // Time delay increments performed during a dwell. The default value is set at 50ms, which provides // a maximum time delay of roughly 55 minutes, more than enough for most any application. Increasing // this delay will increase the maximum dwell time linearly, but also reduces the responsiveness of @@ -369,9 +379,9 @@ // Force Grbl to check the state of the hard limit switches when the processor detects a pin // change inside the hard limit ISR routine. By default, Grbl will trigger the hard limits // alarm upon any pin change, since bouncing switches can cause a state check like this to -// misread the pin. When hard limits are triggers, this should be 100% reliable, which is the +// misread the pin. When hard limits are triggered, they should be 100% reliable, which is the // reason that this option is disabled by default. Only if your system/electronics can guarantee -// the pins don't bounce, we recommend enabling this option. If so, this will help prevent +// that the switches don't bounce, we recommend enabling this option. This will help prevent // triggering a hard limit when the machine disengages from the switch. // NOTE: This option has no effect if SOFTWARE_DEBOUNCE is enabled. // #define HARD_LIMIT_FORCE_STATE_CHECK // Default disabled. Uncomment to enable. diff --git a/grbl/grbl.h b/grbl/grbl.h index c12769e..cc7765d 100644 --- a/grbl/grbl.h +++ b/grbl/grbl.h @@ -23,7 +23,7 @@ // Grbl versioning system #define GRBL_VERSION "0.9i" -#define GRBL_VERSION_BUILD "20150327" +#define GRBL_VERSION_BUILD "20150329" // Define standard libraries used by Grbl. #include diff --git a/grbl/motion_control.c b/grbl/motion_control.c index bfd42d7..ad10a74 100644 --- a/grbl/motion_control.c +++ b/grbl/motion_control.c @@ -100,9 +100,9 @@ // CCW angle between position and target from circle center. Only one atan2() trig computation required. float angular_travel = atan2(r_axis0*rt_axis1-r_axis1*rt_axis0, r_axis0*rt_axis0+r_axis1*rt_axis1); if (is_clockwise_arc) { // Correct atan2 output per direction - if (angular_travel >= 0) { angular_travel -= 2*M_PI; } + if (angular_travel >= -ARC_ANGULAR_TRAVEL_EPSILON) { angular_travel -= 2*M_PI; } } else { - if (angular_travel <= 0) { angular_travel += 2*M_PI; } + if (angular_travel <= ARC_ANGULAR_TRAVEL_EPSILON) { angular_travel += 2*M_PI; } } // NOTE: Segment end points are on the arc, which can lead to the arc diameter being smaller by up to