Skip to content
This repository
branch: edge

Jul 11, 2014

  1. Sonny Jeon

    Updated README

    chamnit authored
  2. Sonny Jeon

    Merge pull request #441 from ashelly/edge-simfix

    Fixes for simulator in alternate configurations.
    chamnit authored

Jul 10, 2014

  1. ashelly

    Restore changes made only for testing.

    ashelly authored
  2. ashelly

    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
    ashelly authored

Jul 09, 2014

  1. Sonny Jeon

    Merge branch 'dev' into edge

    chamnit authored
  2. Sonny Jeon

    Added test g-code programs.

    chamnit authored

Jul 07, 2014

  1. Sonny Jeon

    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.
    chamnit authored
  2. Sonny Jeon

    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.
    chamnit authored
  3. Sonny Jeon

    Merge pull request #436 from kfoltman/dev

    Fixed atomic access to flags in sys.execute.
    chamnit authored

Jul 06, 2014

  1. Sonny Jeon

    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.
    chamnit authored
  2. Sonny Jeon

    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 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
    - Tweaked the ‘$#’ parameters report. `Probe` is now `PRB` and a new
    value `TLO` states the tool length offset value.
    chamnit authored

Jul 05, 2014

  1. Sonny Jeon

    Merge branch 'ashelly-sim-update' into dev

    chamnit authored
  2. Sonny Jeon

    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
    chamnit authored
  3. Sonny Jeon

    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.
    chamnit authored
  4. ashelly


    ashelly authored
  5. ashelly


    ashelly authored
  6. ashelly

    Don't need kbhit.h

    ashelly authored
  7. ashelly

    minor tweaks for mingw.

    ashelly authored

Jul 04, 2014

  1. Sonny Jeon

    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.
    chamnit authored
  2. ashelly

    reduce diffs with dev branch

    ashelly authored
  3. ashelly

    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.
    ashelly authored
  4. Sonny Jeon

    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.
    chamnit authored

Jul 02, 2014

  1. Sonny Jeon

    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.
    chamnit authored

Jun 26, 2014

  1. Krzysztof Foltman

    Fixed atomic access to flags in sys.execute.

    This seems to fix the bug that caused Grbl to hang during some operations,
    especially jogging.
    kfoltman authored

Jun 01, 2014

  1. Sonny Jeon

    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.
    chamnit authored
  2. Sonny Jeon

    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.
    chamnit authored

May 29, 2014

  1. Sonny Jeon

    Fixed spindle/coolant/dwell state check.

    chamnit authored

May 25, 2014

  1. Sonny Jeon

    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
    - 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
    - Changes in spindle speed, when already running, will update the
    output pin accordingly. This fixes a bug, where it wouldn’t update the
    - 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.
    chamnit authored

Mar 13, 2014

  1. Sonny Jeon

    Comment corrections and function call update.

    chamnit authored
  2. Sonny Jeon

    Merge pull request #373 from EliteEng/dev

    Added Probing to Mega2560 and fixed Shapeoko2 compile error
    chamnit authored

Mar 11, 2014

  1. Rob Brown

    Added Probing to Mega2560 and fixed Shapeoko2 compile error

    EliteEng authored
  2. Henrik Olsson

    Probing command gets stuck in hold if several g38.2 are submitted

    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
    henols authored EliteEng committed

Mar 07, 2014

  1. Sonny Jeon

    Merge pull request #368 from henols/dev

    Probing command gets stuck in hold if several g38.2 are submitted
    chamnit authored
  2. Henrik Olsson

    Probing command gets stuck in hold if several g38.2 are submitted

    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
    henols authored

Mar 01, 2014

  1. Sonny Jeon

    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.
    chamnit authored
Something went wrong with that request. Please try again.