Releases: Paciente8159/uCNC
µCNC v1.3.b
[1.3.b] - 2021-12-13
Version 1.3 is a major revision an targets add SAMD21 (Arduino Zero and M0) support. This is still in beta version for SAMD21. All other MCU are unchanged.
The following things were changed:
Added
- added SAMD21 (Arduino Zero and M0 boards) initial support. This is still an early release so there are still limitations for SAMD21. These are: (#72)
- Interrupt driven inputs not implemented (only working via soft pooling)
- Serial port COM not implemented. (limited to Virtual COM port via USB)
- Analog inputs not implemented. (this feature is outside of the Grbl scope)
- AVR and STM32 remain unchanged.
Changed
- modified setting $0=val to work the same way has Grbl (#71)
µCNC v1.2.4
Version 1.2.4 is a minor revision and improves a couple of functionalities.
The following things were changed:
Added
-
new set of settings commands to control EEPROM/Flash storing (optional build setting ENABLE_SETTING_EXTRA_CMDS in cnc_config.h active by default) (#70)
This set of new commands allow a more granular control over the settings stored in EEPROM/Flash to prevent wearing.
When enabled all grbl $x=val are only changed in SRAM. To set them in non volatile memory a save command must be issued.
3 additional commands are added:
$SS - Settings save. This stores all values to EEPROM/Flash
$SL - Settings load. This loads all values from EEPROM/Flash
$SR - Settings reset. This loads all default values from ROM
Changed
µCNC v1.2.3
µCNC v1.2.2
Version 1.2.2 is a minor revision an targets a couple of issues on the STM32.
The following things were changed:
Changed
- minor modification to startup blocks calling. They are now executed as soon as they are called. On error the next block is not executed. (#67)
- improved SMT32F1 EEPROM-Flash emulation. Now uses a single page that is copied to RAM before being stored. This also fixes EEPROM using on STM32F1 making it fully functional. HAL was readapted for mcu.h. On AVR added dummy function to support new HAL. (#66)
Fixed
- fixed flash eeprom reading that caused SMT32F1 to hang with USB virtual COM port. SMT32F1 default value for erased flash is 0xFF and not 0x00. This caused the startup blocks to read a sequence of 0xFF chars. This was fixed by filtering the accepted values to standard ascii only. Both serial versions of SMT32F1 and AVR were not affected. (#65)
µCNC v1.2.1
Version 1.2.1 is a minor revision from the previous version. This version aims mainly to improve the overall response of µCNC and fix a few bugs.
The following things were changed:
Added
- added support for G10 L2 P0 (current coordinate system) (#61)
- implemented codes M0 and M1. M60 is also supported but behave like M0 (#58)
Changed
- revised and improved interlocking system that is more straight forward (code flow). Also this makes µCNC act more inline with the interface described by Grbl (#63)
- all hard/soft limit alarms cause the firmware to lock until software reset is issued as described by Grbl (#63)
- readapted homing and probing to the new interlocking logic (#63)
- startup code improvements (#62)
- modified µCNC to execute synchronous motions at motion control level. This reduces the pipeline travelling of the code at the expense of additional restart delay that is neglectable (#59)
- dropped the Abort status in favor of the Alarm status to be more Grbl compliant (#59)
- blocked status reports during startup blocks to prevent startup block ill-formated strings that were causing the interface software to correctly recognize the responses (#59)
Fixed
- fixed axis drifting after homing. This happened on all motions until an explicit coordinate was set for that axis (#63)
- fixed hidden probe alarm status that only showed if other input alarms were active (#63)
- G92 and G5x.x offset calculations (#61)
- fixed inch report mode converted values output (#60)
µCNC v1.2.0
µCNC
µCNC is stable and can be used for production work with some care like described in the FAQ of the Wiki. Currently available MCU implementations only support Arduino Uno, and the Rambo/RAMPS board. Also STM32F1 is available. An example boardmap for Blue Pill board is available.
An hex with a configuration similar to Grbl 1.1 is available.
- Note: All input pins are internally held high by weak pull-up configuration.
[1.2.0] - 2021-07-31
Version 1.2.0 is a major revision from the previous version that packs lots of new features and bug fixes.
Some of the major new features of this version are:
- the new HAL configuration file that introduces a more flexible way to modify the HAL and give customization power of LinuxCNC.
- the addition off new PID and encoder modules to be used by the new HAL config, powered by an internal RTC clock.
- integration tinyUSB, a complete USB stack frame that simplifies the creation of HAL code for new MCU.
- the addition of an option for a 16-bit version of the bresenham line algorithm that can improve step rate for weak 8-bit processors or for specific applications like laser engraving.
- several revisions, improvements and important bug fixes in the core of µCNC to generate reliable stepping code.
Added
- added basic settings for Grbl if startup emulation enabled (this includes $1-it's not used and always returns 0 and $11-that sets the G64-cosine factor. This value should be between -1 and 1. If 0 it acts as G61-exact path mode and -1 acts as G61.1 exact stop mode) (#55)
- $0-max step rate is now used to top limit stepping frequency (#55)
- implemented stm32f1 EEPROM emulation in flash (with limitations) (#54)
- added new option for the 16-bit bresenham (instead of the 32-bit) version of the stepping generator algorithm (#49)
- added new PID and encoder modules. PID parameters can be stored via commands $2x0 - Kp, $2x1 - Ki and $2x2 - Kd (#42)
- integrated tinyUSB and adapted the core to use it (optional) (#41)
- new HAL configuration file
- added internal RTC (#38)
Changed
- cleaned code, redundant function call, unnecessary volatile attributes from variables and unused variable in the motion control, planner and interpolator stages of the core code (#52)
- modified planner paths of motion and motionless actions (#51)
- added main stepping and idle information to speed up general stepping calculations in the stepping ISR (#51)
- optimization for synchronous serial TX with direct serial output without buffer (#50)
- modified ring buffer in TX to consume chars without waiting for a CR or LF (#49)
- modified motion control to reduce number of planner blocks for motions of length 0 (#49)
- improved real time status report (?) (no longer needing and empty buffer to send report-more responsive) (#48)
- response protocol collisions avoidance (#48)
- report will now always report at least 3 axis even if less than 3 are configured (to keep report structure needed by interface softwares) (#48)
- virtual MCU update to reflect current µCNC interface (#47)
- added option to disable controls or limits IO globally (#45)
- completely new file structure
Fixed
- fixed planner speed profile calculations that was missing speed change between blocks and was causing random miss stepping calculations (#52)
- added initial NULL char sending after configuration of UART to force TXE hardware set for STM32 and deleted duplicate SYNC TX config for STM32 (#50)
- fixed inch report mode setting that was hidden (#49)
- fixed error message on disabling soft limits command with homing disabled (#49)
- small step ISR code fixing (#46)
- fixed stepper enable pin set/reset to match most stepper drivers (negative logic) (#42)
v1.1.2
µCNC
µCNC is fairly stable and can be used for production work with extreme care. Currently available mcu implementations only support Arduino Uno, and the Rambo/RAMPS board. Also STM32F1 is available. An example boardmap for Blue Pill board is available.
An hex with a configuration similar to Grbl 1.1 is available.
- Note: All input pins are internally held high by weak pull-up configuration.
[1.1.2] - 2021-06-23
Version 1.1.2 fixes an critical error on the STM32 HAL that cause several IO problems. µCNC core and AVR have no changes from the previous version.
Fixed
- fixed STM32 HAL pin configuration macros caused bad pin configurations leading to unpredictable behavior. (#40)
v1.1.1
µCNC
µCNC is fairly stable and can be used for production work with extreme care. Currently available mcu implementations only support Arduino Uno, and the Rambo/RAMPS board. Also STM32F1 is available. An example boardmap for Blue Pill board is available.
An hex with a configuration similar to Grbl 1.1 is available.
- Note: All input pins are internally held high by weak pull-up configuration.
[1.1.1] - 2021-06-17
Version 1.1.1 comes with added features and improvements over the previous version. It also fixes a couple of bugs of the previous implementation. These are:
Added
- new mcu internal RTC to provide a running time reference (#38)
- new build option to emulate Grbl startup message so that it can be recognized by several Grbl GUI applications like Candle (#36)
- new software limit switch debouncing delay configurable via EEPROM (option/command $26=) (#34)
Changed
- improved laser mode to be compliant to Grbl's laser mode. Laser mode also has auto shutdown feature when motion stops (#29)
- checks if DSS setting value is valid (#30)
- improved fast math functions (more stability) and added new fast math pow2 function (#33)
Fixed
- fixed AVR HAL output pin toggle function. (#38)
- fixed hardware serial on ST32F10x HAL to work in sync mode (in async the communication breaks) (#37).
- coolant/mist on/off functions and overrides (#28)
- fixed parser active modal groups report (#28)
- fixed active tools report (#28)
- fixed DSS oversampling that was not reseted after motion end (#30)
- fixed probing ISR tripping at startup by forcing probe_isr_disable after mcu_init (#32)
v1.1.0
µCNC
µCNC is fairly stable and can be used for production work with extreme care. Currently available mcu implementations only support Arduino Uno, and the Rambo/RAMPS board. Also STM32F1 is available. An example boardmap for Blue Pill board is available.
An hex with a configuration similar to Grbl 1.1 is available.
- Note: All input pins are internally held high by weak pull-up configuration.
[1.1.0] - 2020-08-09
Version 1.1.0 comes with many added features and improvements over the previous version. It also fixes many of the bugs and limitations of the previous implementation. These are:
Added
- new planner mode (linear actuator driven) that can be enabled via config file. This plans acceleration and deceleration based on the motion change in the linear actuators and not the cartesian axis. This should be advantageous on mechanically heavy machines. Also an option to enforce cold start motions (if any linear actuator starts at velocity 0 all other go to a full stop when ending the previous move - hybrid G61 and G61.1) (#23)
- new backlash compensation (enabled via config file) with configurable via parameters
$140´(X),
$141´(Y),$142´(Z),
$143´(A),$144´(B) and
$145´ (C) (#23) - new axis skew compensation (enabled via config file) with configurable via parameters
$37´(XY),
$38´(XZ) and `$39´(YZ) (#23) - new DSS (dynamic step spread) algorithm (similar to Grbl's AMASS (enabled via config file). This distributes step execution at lower step rates so that the vibration noise produced is reduced. (#22) (#18)
- new STM32F10x HAL (#15). Although not all features are available it is usable. Boardmap for blue pill board available.
Changed
- modified distribution of main (to follow #15)
- improved C99 standard compliance of code
- new completely redesigned parser/gcode interpreter (easier to debug). A single functions is called to read and execute both gcode and grbl commands. (#21)
- complete active modal codes report (#20)
- improved separation of comment message processing and command echo (debug purposes only)
Fixed
- fixed AVR HAL pwm generation was not working for all channels. Also analog reading is now available. (#25)
- fixed overflow serial error that occur if 128 bytes (Grbl's limit) were sent to the buffer.
- fixed several compilation errors with other configurations
- fixed avr mapfile for grbl
v1.0.0
µCNC
µCNC is fairly stable and can be used for production work with extreme care. Currently available mcu implementations only support Arduino Uno, and the Rambo board. A hex with a configuration similar to Grbl 1.1 is available.
- Note: All input pins are internally held high by weak pull-up configuration.
[1.0.0] - 2020-07-30
Changed
- modified makefile and instructions for AVR
Fixed
- fixed parsing error in check mode (planner position not updated after linear motions)
- fixed feed override caused feed to go to 0 above 180% feed override value
- change macro and library dependencies so that the option for fast Sqrt function works (AVR problem only)
- fixed feed issue while G20(inches) was active that made the internal feed state value to always be converted from inches to mm even if not explicitly declared in the gcode command. This caused the feed rate to decay to 0.
- fixed jog state that was permanently on after a finnished (not aborted) jog motion. New jog commands were also not accepted while in this state
- fixed parsing of reset commands ($RST=) that accepted non regular/incomplete forms of the command
- fixed README
- fixed devCpp project file (compilation errors)
- fixed parser reset state to match RS274 standard