diff --git a/changelog.md b/changelog.md index 9c5a5a8..b87965e 100644 --- a/changelog.md +++ b/changelog.md @@ -1,17 +1,33 @@ ## grblHAL changelog +20251105 + +Core: + +* Added field for programmed timer period to HAL timer struct. + +Drivers: + +* STM32F4xx: implemented accurate continuous timer mode in timer HAL API. Fix for incorrect clock tree setup for BTT Octopus Board. + +Plugins: + +* Spindle, stepper: changed to use continuous timer mode, when available, for accurate RPM. Ref. issue [#41](https://github.com/grblHAL/Plugins_spindle/issues/41) + +--- + Build 20251023 Core: * Workaround for POS (Power on self-test) failure messages(s) not output on "native" USB connect. -* Fixed handling of NVS buffer allocation, size was not increased as expected when physical NVS is capable of holding more than 2 Kbytes. +* Fixed handling of NVS buffer allocation, size was not increased as expected when physical NVS is capable of holding more than 2 Kbytes. This could lead to POS failure or plugins not initializing when a large tool table is configured. Drivers: -* Simulator: fix for double free bug, ref. issue [#17](https://github.com/grblHAL/Simulator/issues/17) and block reporting not working. +* Simulator: fix for double free bug, ref. issue [#17](https://github.com/grblHAL/Simulator/issues/17), and block reporting not working. Plugins: diff --git a/hal.h b/hal.h index 69ba0a0..26bbe71 100644 --- a/hal.h +++ b/hal.h @@ -76,7 +76,8 @@ typedef union { rtc :1, rtc_set :1, bltouch_probe :1, - unassigned :4; + modbus_rtu :1, // Modbus RTU stream is enabled. + unassigned :3; }; } driver_cap_t; @@ -522,6 +523,7 @@ typedef void (*timer_irq_handler_ptr)(void *context); typedef struct { void *context; //!< Pointer to data to be passed on to the interrupt handlers bool single_shot; //!< Set to true if timer is single shot + uint32_t period; //!< Current value for period register timer_irq_handler_ptr timeout_callback; //!< Pointer to main timeout callback uint32_t irq0; //!< Compare value for compare interrupt 0 timer_irq_handler_ptr irq0_callback; //!< Pointer to compare interrupt 0 callback