Releases: Paciente8159/uCNC
µCNC v1.3.5
µCNC version 1.3.5 added major improvements to the virtual HAL. Although this HAL is only for testing purposes this in an invaluable tool for diagnostics.
It also adds a couple of important fixes that affected step generation with Dynamic Step Spreading enabled and sporadic stack overflow errors caused by nested loops in the cnc delay function.
Added
- redesigned virtual MCU HAL (Windows OS only) (#122)
- virtual MCU HAL can be connected via sockets (default port 34000) (must be configured) (#122)
- virtual MCU HAL new GUI in C# that enables to interact with the IO (via named pipes) (#122)
Changed
- on parser reset next status report will print WCO
- modified dual endstop behavior when dual endstops option is not active (#123)
- modified status report to yield better refresh rate (#125)
- modified/simplified realtime commands (reduced code size) (#126)
Fixed
- cnc delay will be executed without exit even if there is an fault condition in dotasks loop. On input debounce the delay could be shortcuted and a fault condition could be triggered without being real (#125)
- removed deprecated preprocessor condition that was causing delay on motion restart even with laser mode active
- fixed some typos with option FORCE_GLOBALS_TO_0
Fixed
- clearing interpolator now also resets DSS previous value and clears running segment pointer to prevent step contamination from canceled motions (#124)
µCNC v1.3.4
µCNC version 1.3.4 adds a few improvements and also fixes some issues with inverse feedrate mode G93
and realtime feed overrides.
Changed
- added
G43.1
again for back compatibility with Grbl. Will work the same way hasG43
(#115) - added
G43
andG43.1
violation check against MOTION group commands (#115) M2
can be now cleared with$X
or$H
commands (#119)- modified DSS to force step ISR frequency to update on DSS change (#121)
- removed DSS minimum step limitation to prevent DSS algorithm on/off oscillation resulting in a smoother motion (#121)
- added configurable DSS cutoff frequency (#121)
Fixed
µCNC v1.3.3
µCNC version 1.3.3 aims to addresses several critical bug fixes in the gcode parsing (some of them introduced in the current major release):
It also removes G43.1
(non compliant RS274NGC command) and replaces it with the G43
compliant version. It still accepts the Z
word. For tool lengths the H
word should be used.
Tool lengths can be set and stored in settings $41=<Tool1 offset>..$42=<Tool2 offset>...etc
. Also the default tool loaded at start/reset is stored via setting $40
.
Encoders are also working in uni and bidirectional mode. Each encoder position is also reported by command $P
available via config.h
Added
- added configurable default loading tool and tools offset (#109)
Changed
- modified encoder module to allow it work has a unidirectional encoder (simple counter) (#107)
- added reset calls for motors encoders (#107)
- moved encoder and PID definitions to cnc_hal_config.h (#107)
- modified removed
G43.1
command and addedG43
command has defined in the RS274NGC. A similar command to previousG43.1
is possible withG43 Z<value>
(#109) - probe command returns report like Grbl (#112)
- modified alarm locking and report messages on alarm status. Soft stop alarm require unlock only. Hard stops will cause soft reset on unlock (#111)
- homing motions adjusted to adapt to alarm modifications done in (#111) (#113)
Fixed
- fixed tool length offset was not affecting the
WCO
position report (#109) - tool length is set to 0 after reset (#109)
- modified settings change code (smaller and more efficient) (#110)
- fixed feed validation in motion group 0 to include probing commands (
G38.x
) (#112) - fixed probing commands (
G38.4
andG38.5
) reverse probe logic triggering (#112) - fixed fail to probe target message and alarm (#112)
- fixed check mode position update of motion control preventing invalid target errors (#111)
- fixed sticky check mode even after soft-reset (#111)
- partially reverted modifications (#98) and (#84) that caused the the machine real position to diverge due to error accumulation with G91 (relative distance) active (#114)
µCNC v1.3.2
µCNC version 1.3.2 aims to address several critical bug fixes in the gcode parsing (some of them introduced in the current major release):
Changed
- removed atomic blocks added with (#85) and relocated global ISR unlocking inside step ISR to be executed only in the step calculation section of the code (#101)
- simplified global ISR unlocking inside cnc_scheduletasks (#101)
- included limits and control in a configurable scheduled checking (ISR fail safe) (#101)
- modified SAMD21 compilation flags and board configurations (#101)
- reviewed SAMD21 and STM32 ISR to ensure they run in block mode (only one ISR at the time). ISR unlocking is controller by µCNC to make it more predictable (#101)
- removed duplicate tool pid call (#101)
- modified feed override flags so M48/M49 will only affect at code execution order (#102)
- modified tool speed update and read functions and integrated HAL tool in the core of µCNC (#106)
Fixed
- fixed feed override after reaching top speed feed was reset to normal (100%) neglecting feed override value (#102)
- fixed M48/M49 parsing error (after calling overrides were always turned off) (#102)
- fixed spindle override max and min values limits (#100)
- fixed arc commands G2/G3 with G18 active parsing validation errors and mirrored motion error (#103)
- fixed motion commands (G0,G1, etc) with active offset (G92 or G5x) introduced with (#83) and a given axis is omitted was reapplying the offset (#103)
- fixed G4 P word was not convert from seconds to milliseconds on the parser (#103)
- fixed G53 with active G91 (ignores G91) and now travels to the absolute position (#103)
- fixed interpolator speed calculations for slow movements with instant max speed that and speed was set to 0 causing µCNC to stop generating steps and not moving (#105)
µCNC v1.3.1
[1.3.1] - 2022-01-02
µCNC version 1.3.1 has the following modifications:
Added
- added generic inputs ISR to AVR and STM32 (#94)
- added encoder specific reset function (#94)
- added extra command $P to list the state of all pins. This output each configured pin state a formatted message (#97)
Changed
- modified the preprocessor definitions for step generation algorithm and undefined step actuator pins (virtual steppers for servo+encoder) (#92)
- modified makefiles to read a few command options (#96)
- modified ADC sampling frequencies on devices to make them more similar. The sample rate on all devices should be aprox. 125~100KHz (#93)
- modified bresenham algorithm variables initialization. Produces the same result but keeps variables with half the value (doubles the number of supported steps) (#98)
Fixed
- added tool PID to cnc scheduled tasks (#95)
- fixed encoder module missing dir function and pulse previous state not being stored (#94)
- fixed input/limits/control ISR reentrancy in SAMD21 and STM32 (#94)
- call missing encoder update on input isr callback (#94)
- return argument on get_encoder_pos (#94)
- removed LIMITS_ISR configurations for M0 board since LIMIT_Y and ESTOP share the same exti masking the ESTOP change
µCNC v1.3.0
Version 1.3 is a major revision an targets add SAMD21 (Arduino Zero and M0) support.
It also adds the new tool HAL that allows to have multiple tools in the µCNC and support for gcode M6 command.
File structure as changed and tinyUSB was modified and integrated to allow compiling code using Arduino IDE.
The final version implements/adds the following improvements to the release candidate:
Added
- implemented SAMD21 digital input ISR and io_inputs_isr (#89)
- implemented STM32F1 analog input reading (#88)
- implemented io_control analog reading function (#88)
- implemented SAMD21 analog reading function (#90)
- implemented io_inputs_isr on AVR and STM32 (#91)
Changed
- modified file structure and tinyUSB was modified and integrated to allow compiling code using Arduino IDE (#87)
µCNC v1.3.rc
Version 1.3 is a major revision an targets add SAMD21 (Arduino Zero and M0) support. It also adds the new tool HAL that allows to have multiple tools in the µCNC and support for gcode M6 command.
This is a release candidate version. It should be used with caution.
RC adds/modifies/fixes the following issues from previous versions:
Added
- added the new tool HAL. This new HAL sacrifices a bit of step rate performance in favor of the possibility of being able to use multiple tools. (#77) (#80)
- added extra delay for coolant on resume from any hold (hold, safety-door) to emulate Grbl (#76)
- implemented Hardware UART in SAMD21 (#75)
- real line number status (ignores N word and outputs the real line number of the command) (#81)
Changed
- modified some NVIC IRQ and global interrupt enable and disable inside ISR code in STM32 and SAMD21 (#75)
- modified RTC to prevent reentrancy inside ISR code in STM32 and SAMD21 (#75)
- modified planner buffer size in AVR size to prevent memory errors (#77)
- planner and interpolator block and segment buffer slots are cleaned before writting data to prevent errors from previous data. (#77)
- step ISR optimizations (for main stepper and idle steppers) are now optional. (#77)
- new AVR make file (#82)
- modified/simplified parser G90/G91 (absolute/relative coordinates) (#83)
- removed planner position tracking. Modified/simplified position tracking inside motion control. This is more memory effective and prevents desynchronization problems between the motion controller and the interpolator (#84)
- moved scheduled code running from hardware implementation to cnc (common) compilation unit. Makes code (pid update or other) architecture agnostic. (#86)
Fixed
- fixed issue with active CS_RES input that caused resume condition (delay) without active hold present (#75)
- fixed SAMD21 PWM frequency configuration (now is aprox 976Hz like AVR) (#78)
- real line number (N word) processing was not being read (#81)
- fixed welcome message not being sent after soft reset (#79)
- fixed step generation ISR random problems (stop working). This was caused by problems in the segment buffer read write. Solved by adding atomic lock blocks to the code (#85)
- G28 and G30 now perform in whatever coordinate mode before travelling home (RS274NGC compliant) (#83)
µCNC v1.3.b2
Version 1.3 is a major revision an targets add SAMD21 (Arduino Zero and M0) support.
Beta2 fixes the following issue:
Added
- added SAMD21 extra debug flags for GDB (#74)
Changed
- cnc spindle speed and resume delay bypass if set to 0 (#73)
- cnc spindle at cnc stop has now moved to the interpolator unit (#74)
Fixed
- while executing real time commands with the CS_RES pin always active caused and infinite loop inside the tool delay (caused stack overflow error on SAMD21) (#73)
- executing a soft reset caused unowned exception fault on SAMD21. Recoded alarm to prevent calling itself. This also repeats the emergency stop message while the ESTOP is pressed. (#74)
- removed generic clock output code(used to debug the generic clock working). (#74)
µ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