-
Notifications
You must be signed in to change notification settings - Fork 3.2k
Master #1172
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- 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.
…t 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.
- Oops! Misplace an if-then statement. Should work as advertised now. (Hopefully)
- 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.
- 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.
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.
…eedrate 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.
…iling 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!
…ounter 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.
- 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
- Changed some names up and removed a plan_reset() function that is never used.
Replace some constants with N_AXIS.
code very messy but tested
Grbl Simulator. Oh yeah.
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.
Fix sim makefile so it works on mac
ontop of the edge planner examples run byte for byte identical old and new version
New planner commits merge into dev branch.
the stepper interrupt is only halted when necessary and for the shortest time possible (8% cycle time)
integrating soft limits
- Moved cpu_map files to a cpu_map directory, like the defaults file organization.
- CoreXY motions were moving to the negative value of the intended target. Now fixed.
Merge edge branch.
Otherwise compilation fails on linux, or other case sensitive systems Signed-off-by: Michel Pollet <buserror@gmail.com>
Rename Grbl to grbl
- Added X-Carve 500mm and 1000mm default files. - Tweaked all default files. Removed obsolete AUTO_START and updated some JUNCTION_DEVIATION defaults after testing showed these needed to be reduced slightly.
- I’m now officially annoyed.
- G61 exact path is the Grbl default path control mode, so it’s now added as a supported g-code.
- New restore setting defaults command. Only wipes ‘$$’ setting in EEPROM and reloads them based on the defaults used when Grbl was compiled. Used with a `$RST` command NOTE: `$RST` is intentionally not listed in the Grbl ‘$’ help message.
- Tweaked the previous EEPROM restore implementation and added new functionality. - `$RST=$` restores the `$$` grbl settings back to firmware defaults, which are set when compiled. - `$RST=#` restores the `$#` parameters in EEPROM. At times it’s useful to clear these and start over, rather than manually writing each entry. -`$RST=*` wipe all of the data in EEPROM that Grbl uses and restores them to defaults. This includes `$$` settings, `$#` parameters, `$N` startup lines, and `$i` build info string. NOTE: This doesn’t write zeros throughout the EEPROM. It only writes where Grbl looks for data. For a complete wipe, please use the Arduino IDE’s EEPROM clear example. - Refactored the restore and wipe functions in settings.c to accommodate the new commands.
- `$RST=#` was not wiping the G30 positions from EEPROM. Minor but now fixed.
- Version bump requested by OEMs to easily determine whether the firmware supports the new EEPROM reset feature. Other than that, no significant changes.
- Control pins may be individually inverted through a CONTROL_INVERT_MASK macro. This mask is define in the cpu_map.h file.
- G38.x was not printing correctly in the $G g-code state reports. Now fixed. - Potential bug regarding volatile variables inside a struct. It has never been a problem in v0.9, but ran into this during v1.0 development. Just to be safe, the fixes are applied here. - Updated pre-built firmwares with these two bug fixes.
- Planner was under-estimating maximum speeds through straight junctions in certain cases. The calculations have been updated to be more accurate. - Type declaration fix in probe.c. - Commit log for v0.9j generated separately from v0.9i’s. - Incremented version and updated pre-built firmware link.
- Strange sizeof() bug in the most recent releases. Manifested as an alarm upon a power up even when homing was disabled. Fixed by declaring sizeof() with struct types, rather than variable names, even though they were validated to give the same value. - Spindle speed zero should disable the spindle. Now fixed. - New configuration option for inverting certain limit pins. Handy for mixed NO and NC switch machines. See config.h for details. - Incremented version and pre-build firmware link.
- Soft limit errors were stuck in a feed hold without notifying the user why it was in a hold. When resumed, the soft limit error would kick in. Issue should be fixed to behave as intended to automatically hold and issue a soft limit alarm once the machine has come to a stop.
- When VARIABLE_SPINDLE output is disabled in config.h, the last commit would keep the spindle enable pin disabled when spindle speed is not defined (S0). This is now ignored and will enable with S0, as spindle speed is ignored in this mode.
- The homing routine for CoreXY/H-Bot CNC machines has been fixed. - Version date bumped, but this update does NOT effect any normal users. Only CoreXY users.
Member
|
FOR THE FOURTH TIME! STOP TRYING TO PUSH THIS ANCIENT CODE TO THE MAIN GRBL REPOSITORY! YOU WILL BE BLOCKED. |
|
@MSLLT you need to review how to use git properly. You keep creating unwanted pull requests to the upstream repository, when I think you probably just want to commit to your own repository. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.