Skip to content

Latest commit

 

History

History
874 lines (542 loc) · 29.3 KB

File metadata and controls

874 lines (542 loc) · 29.3 KB

CHANGELOG

v0.21.1 (2026-02-01)

Bug Fixes

  • Remove unused state machine cleanup code in TmcMotionControlStepPio (8e71a47)

  • Update coverage omit patterns to exclude additional pio files (84c17b1)

Chores

  • Moved pyserial to optional dep and changed casing of optional-dependencies (b8de0ea)

  • Moved unittest files back into tests folder (4ef6c78)

Documentation

  • Update installation instructions for Raspberry Pi support (5d9dbaa)

Refactoring

  • Changed pio implementation to easier add Circuitpython #143 (76d075b)

Testing

  • Add wait_for_movement_finished_threaded to run_to_position_steps_threaded (28ac61a)

  • Fix test path in workflow (5adb9b1)

v0.21.0 (2026-01-28)

Bug Fixes

  • Improve soft stop handling in PIO motion control (5e05fa6)

  • Reduce maximum block size for cruise steps in PIO motion control (13849a5)

  • Update logging levels for movement completion in PIO motion control (55c0e20)

Chores

  • Exclude *_pio.py from coverage report (85fd355)

Features

  • Add PIO-based motion control for TMC stepper drivers (working, but not perfect) #143 (f716439)

Refactoring

  • Remove unused state machine tracking and related attributes in PIO motion control (c35a920)

Testing

  • Added micropython (UNIX-Port) unittest (57e561c)

  • Update test description for TMC modules (b9d1a94)

v0.20.0 (2026-01-25)

Chores

  • Remove outdated CHANGELOG.BAK.md file (7cadaba)

  • Update markdownlint configuration for improved formatting (ec410c6)

Features

  • Test changelog updating (dfab353)

v0.19.0 (2026-01-25)

Bug Fixes

  • Correct speed_fullstep calculations in TmcMotionControl class (a0a4d04)

  • Pylint (c4497a1)

  • Update import statement to use TmcComSpiMicroPython instead of TmcComUartMicroPython (c0c330d)

  • Use direct import instead of init.py on micropython and circuitpython (init.py imports everything which needs to much ram) (19d7109)

Chores

  • Renamed changelog, so python semantic release can create a new one (with the correct format) (b2d20cf)

  • Set minimum coverage thresholds for code coverage comments (be3e152)

Features

  • Moved run_to_position_revolutions method to TmcMotionControl class (420546b)

  • Only validate submodule on CPython (not on Micropython/Circuitpython to save memory) (fe4a0ce)

Refactoring

  • Remove unused speed_fullstep property from TmcMotionControlStepDir class (916d18f)

v0.18.4 (2026-01-22)

Bug Fixes

  • Correct GPIO pin reference in event detection methods in GpiozeroWrapper (1827ffe)

Chores

  • Add coverage report omission for specific test files (e0aa951)

  • Remove version declaration from init.py (42e6ba7)

  • Update coverage report configuration to exclude additional lines (2a073e2)

  • Update coverage report to exclude additional test files and add new test for Tmc2209 with gpiozero (c429e30)

v0.18.3 (2026-01-21)

Bug Fixes

  • Remove redundant assignment in pin check logic (7293032)

  • Remove unused lazy import for TmcEnableControl (b40bc08)

  • Rename workflow from 'Test' to 'CI Pipeline' (4954905)

  • Update CI badge in README.md (368c292)

  • Update coverage badge link in README.md (f3cd647)

Continuous Integration

  • Update Python version to 3.13 in CI workflow (b8300f1)

Testing

  • Add unit test for TMC pin functionality and fake I/O class (8ae956c)

  • Add unit test for TMC5160 set current RMS functionality (bbd3827)

  • Add unit tests for different import methods (8f6126b)

  • Add unit tests for TMC move (intramp) (d1ea07e)

  • Add unit tests for TMC move functionality in test_tmc_move_vactual.py (e616d02)

  • Add unit tests for TMC move with step PWM direction and step register (9070ae0)

  • Update import statements in TMC test files (895f928)

v0.18.2 (2026-01-20)

Bug Fixes

v0.18.1 (2026-01-20)

Bug Fixes

  • Readd token to pypi publish (3456775)

v0.18.0 (2026-01-20)

Bug Fixes

  • Add missing job names for grype-scan and release jobs in CI workflow (a05c286)

  • Add Python setup and dependency installation steps for semantic release (821cc90)

  • Update build command in pyproject.toml and remove redundant steps in CI workflow (ccb5b2c)

Features

  • Add fetch-depth option to checkout step in release job (db1f46e)

  • Implement semantic release and package publishing steps in CI workflow (c279abc)

v0.17.0 (2026-01-20)

Bug Fixes

  • Split unittest and code coverage step (4e64ab9)

  • Update import statements for TMC2209 usage in README (7e75e6f)

  • Update Python version matrix in unittest job (toml support needed for coverage) (9a15f1d)

Documentation

  • Update README to include test and code coverage badges Unittest and coverage badge (f30bd13)

Features

  • Add artifact upload step for coverage comment in unittest job (2cb9d6b)

  • Add coverage configuration to pyproject.toml (ad90b4f)

  • Add example for special register access with TMC2209 in README (cf1006f)

  • Update unittest job to enable coverage reporting and adjust permissions (bf56353)

v0.16.0 (2026-01-18)

Bug Fixes

  • Add dummy _thread implementation for environments without threading support (CircuitPython) #141 (dac75ad)

  • Add missing classifiers for Python implementations in pyproject.toml (7e063b3)

  • Add safety check before disabling motor in deinit method (f94a478)

  • Changed msres_ms setter to use a lookup table, because math.log2 is not available on CircuitPython #141 (1646aad)

  • Implement lazy import for FtdiWrapper to optimize module loading (760b224)

  • Pylint (f154f97)

  • Reorder reset check for consistency (95bac7d)

  • Simplify gpio_add_event_detect docstring and raise NotImplementedError for CircuitPython (6a099f5)

Features

  • Add UART and SPI communication classes for CircuitPython #141 (5daa241)

  • Enhance get_time_us function to support CircuitPython #141 (6addc04)

Testing

  • Add assertions for motor position after movement in TestTMCModules (c04864e)

  • Enhance TMC2209 and TMC2240 tests with additional assertions for register checks (15b30a8)

  • Put Spi test in try-except block to prevent errors, if spidev is not available (4bcf206)

v0.15.0 (2026-01-17)

Bug Fixes

  • Change acceleration_fullstep calculation to use integer division (e3d3fda)

  • Change mres_ms type from bool to int in ChopConf class (834f07c)

  • TmcStepperDriver init docstring (dde9be1)

  • Update max_speed_fullstep calculation to use integer division (37e6c9d)

Chores

  • Update action versions in python-publish workflow (14a31fa)

Features

  • Add current_pos_fullstep property for fullstep position handling (5c51150)

  • Add dynamic attribute forwarding for TmcStepperDriver (5e8e873)

Refactoring

  • Consolidate microstepping resolution logic in TmcXXXX class (8a1d619)

Testing

  • Add assertions for microstepping resolution and motor speed in TestTMCModules (75aa164)

v0.14.0 (2026-01-17)

Bug Fixes

  • Add missing import for Gpio in TmcXXXX driver module (f598955)

  • Add missing import for MovementPhase in demo script (cd07408)

  • Pass ioin argument to test_com method in TmcXXXX class (1456cd6)

  • Pylint (a1a16aa)

  • Pylint (d6c6620)

  • Pylint (f52ca2a)

Refactoring

  • Added init.py in tmc_drvier module (4d38270)

  • Clean up unused imports and reorganize exception imports in driver files (90657bf)

  • Remove empty demo module files for tmc2240 and main demo (19e4186)

  • Remove unused imports (9c121ef)

  • Remove unused tmc_com property and imports from motion control modules (c5c5e8e)

  • Update demo script descriptions for clarity (a4eabd4)

  • Update import statements and remove wildcard imports (78a5484)

v0.13.0 (2026-01-11)

Bug Fixes

  • Changed get_bit_width method to calculate bit width manually (micropython compatibility) (c2689b7)

  • Cleaned up demo scripts (93f88d5)

  • Correct duration calculation from milliseconds to microseconds in set_vactual_dur method (185d96f)

  • Moved gpiozero pwm switching into _tmc_gpio_board_gpiozero.py (c580131)

  • Pylint (d2254a3)

  • Remove unnecessary cs_count parameter from SPI configuration (22277eb)

  • Remove unnecessary loglevel and movement settings from demo script (f28f71a)

  • Streamline movement handling in motion control classes (ef02b52)

  • Update motion control to use TmcMotionControlVActual in demo script (09b6fa9)

  • Update SGT threshold to be signed (a3e7224)

  • Update VActual register to support signed values for vactual (3462873)

Features

  • Add clear_rampstat method to reset ramp status after stall (997b16c)

  • Add demo script for TMC5160 internal ramp generator homing (ddd1b61)

  • Add PWM class protocol to GPIOModuleProtocol (138a9bb)

  • Add reset_positions method to reset position counters (aa14d29)

  • Add stallguard and limit switch event handling in ramp generator (0b43224)

  • Added method to set hybrid threshold speed in TmcXXXX class for hybrid switching between Stealthchop and Spreadcycle (81e6f11)

  • Implement target position property and update current position handling (e7dc520)

  • Unify position reset method naming and functionality across drivers (ccd9999)

Refactoring

  • Consolidate stallguard setup logic in TMC drivers (9498d36)

  • Streamline GPIO handling and error checking across wrappers (b20faab)

v0.12.0 (2026-01-06)

Documentation

  • Update installation instructions in README.md for editable install (5686580)

Refactoring

  • Add setter for speed_fullstep in TmcMotionControl class (418028f)

  • Centralize initialization logic in TmcXXXX class (a806283)

  • Enhance TmcStepperDriver properties with type hints and error handling (e0d585d)

  • Implement clear_gstat_verify method for GSTAT register management #118 (326ba4b)

v0.11.0 (2026-01-01)

Bug Fixes

  • TMC2240: fixed THigh reg addr

Features

  • added support for TMC5160
  • changed set_current to set_current_rms and set_current_peak
  • added typehints
  • refactor logger (split micropython and cpython implementation into their own files)
  • added clear function for regs
  • added str function for regs
  • added demo script for homing
  • replaced individual register read function with unified read_register method
  • TMC5160: added reg defs
  • TMC5160: added MotionControl for internal Ramp Generator

Refactoring

  • Remove sys dependency and centralize time function for MicroPython compatibility (2be9b80)

  • Replace individual register read functions with a unified read_register method (1e8e41a)

v0.10.0 (2025-12-30)

Bug Fixes

  • fixed pwm cleanup
  • fixed reg definition (seimin in Coolconf of TMC2209)

Features

  • added unittests for submodule combinations
  • renamed drv_enn to enn in reg def for consistency
  • added class TmcXXXX for code shared between all TMC drivers
  • changed reg definitions (Tuple of TmcRegFields instead of Array of Arrays)
  • moved do_homing() to_tmc_stallguard.py
  • do_homing -> added args cb_success and cb_failure
  • do_homing now uses tmc_mc instead of static internal motion controller
  • removed do_homing2()
  • removed driver_address from constructor of COM submodules
  • removed _deinit_finished

v0.9.3 (2025-12-27)

Bug Fixes

  • fixed reg access in submodules (with callback)

v0.9.2 (2025-12-27)

Bug Fixes

  • fixed wrong reg access (TMC2209 iholddelay and en_spreadcycle)

Features

  • added validation of submodules
  • enhanced TMC2240 set_current function (added rref as argument)

Refactoring

  • Changed TmcCom classes, so i does not know the exakt reg defintions and added more Exceptions (12fdd47)
  • formatting and linting
  • added typehints for register definitions

v0.9.1 (2025-12-22)

Refactoring

  • refactored tmc_gpio modules
  • refactored tmc_com modules
  • dropped support for python 3.9 and older
  • added more typehints
  • added MicroPico project files for better Micropython support
  • moved all project metadata into pyproject.toml

v0.9.0 (2025-12-20)

Features

  • added support for MicroPython
  • added support for relative movements in TmcMotionControlVActual
  • added TmcMotionControlException in TmcMotionControlVActual if the VActual reg is not available (TMC2240)
  • removed statistics dependency
  • added property current_pos_fullstep

v0.8.0 (2025-12-13)

Features

  • added support for FT232H (can be used on Windows; currently only with TMC2240 and SPI)
  • added missing deinit in TmcEnableControl

v0.7.8 (2025-11-23)

Bug Fixes

  • fixed RPi4 using wrong gpio lib
  • changed init/deinit of classes

v0.7.7 (2025-11-09)

Bug Fixes

  • fixed wrong reg adress of IOIN for TMC220X

v0.7.6 (2025-05-17)

Bug Fixes

  • fixed driver addr in demo/demo_script_06_multiple_drivers.py
  • fixed doubled log output when using multiple drivers
  • fixed VActual bit mask

Features

  • added PwmConf reg
  • added initial value to gpio_setup when using gpiozero (RPi5)

v0.7.5 (2025-05-01)

Bug Fixes

  • fixed gstat Exception on TMC2240

Refactoring

  • removed spidev dependency from TMC220X
  • added TPwmThrs reg

v0.7.4 (2025-04-12)

Features

  • added custom exceptions
  • added TmcMotionControlStepPwmDir
  • fixed homing

v0.7.3 (2025-03-15)

Features

  • increased SPI speed (from 5khz to 8mhz)
  • added SPI speed to TmcComSpi constructor
  • return status flags as dict received with every SPI read access

v0.7.2 (2025-03-14)

Features

  • moved StallGuard code into own mixin class
  • renamed sgresult and sgthrs reg values in order to have them consistend between drivers

Bug Fixes

  • fixed StallGuard on TMC2240 (diag0_pushpull and diag0_stall needed to be activated)

v0.7.1 (2025-03-10)

Features

  • added Support for TMC2240
  • changed registers to be initialized as Lists (Bitmasks and Bitpositions)
  • added Support for SPI
  • Split code for EnableControl and MotionControl into their own classes
  • added Classes for EnableControl TmcEnableControlPin
  • added Classes for EnableControl TmcEnableControlToff
  • added Classes for MotionControl TmcMotionControlStepDir
  • added Classes for MotionControl TmcMotionControlStepReg
  • added Classes for MotionControl TmcMotionControlVActual
  • added support for coolstep
  • changed library name to PyTmcStepper
  • refactored deserialisation and serialisation of register values to use classes
  • changed file names according to PEP8
  • changed class names according to PEP8

v0.5.7 (2025-02-05)

Bug Fixes

  • fixed print output in test_uart()
  • use mapping table for mapping gpio library to the board
  • make fullsteps_per_rev configurable in constructor

Refactoring

  • refactored GPIO access to use inherited classes

v0.5.6 (2024-12-19)

Bug Fixes

  • Return status instead of hardcoded True in test_uart (5e57e2c)
  • fixed links in readme
  • switched to python 3.13 in unittests

Refactoring

  • refactored test_dir_step_en function

v0.5.5 (2024-10-06)

Features

  • changed Nvidia Jetson detection

v0.5.4 (2024-08-31)

Features

  • added Orange Pi Support

v0.5.3 (2024-08-25)

Features

  • added math function constrain
  • added function set_speed
  • added function set_speed_fullstep
  • added demo_script_11_continous_movement
  • reworked github actions pipeline (one multi-staged-pipeline)

v0.5.2 (2024-08-01)

Features

  • added extra error handling for when the UART serial is not set

v0.5.1 (2024-07-23)

Features

  • added toff setting
  • added support for controlling direction during movement over UART
  • added demo script for motor movement using only the STEP pin
  • decoupled gpio access from gpio library
  • added support for Raspberry Pi5 (gpiozero)
  • added support for Luckfox Pico (python-periphery)

v0.4.5 (2024-04-17)

Features

  • enhancement of logging module

Bug Fixes

  • small bugfix

v0.4.4 (2024-04-13)

Features

  • change logger to use logging module

v0.4.3 (2024-02-09)

Bug Fixes

  • small bugfix

v0.4.2 (2024-01-15)

Features

  • added support for Nvidia Jetson
  • added seperate file for GPIO board imports
  • changed min python version to 3.7

v0.4.1 (2023-11-26)

Features

  • removed dependency enum34
  • removed dependency bitstring
  • changed min python version to 3.6
  • changed docstring format to google
  • split code into different files
  • added logger class
  • moved demo scripts into demo folder
  • added unittest
  • switched all string to f-strings

v0.3.4 (2023-11-13)

Features

  • fixed do_homing()
  • added minspeed to do_homing()
  • added TMC_2209_math.py

v0.3.3 (2023-11-11)

Features

  • added correct StallGuard min_speed calculation

v0.3.2 (2023-11-07)

Features

  • add pylint github action
  • fixed code to pass pylint check

v0.3.1

Features

  • Added threaded movement
  • Added test_script_07_threads.py
  • Added softstop
  • Added get_movement_phase()

v0.3.0

Refactoring

  • Change code to snake_case

v0.2.2

Features

  • Added set_deinitialize_true
  • Fixed ifcnt wrap around from 255 to 0

v0.2.1

Features

  • Added setPDNdisable
  • Added setMaxSpeed_fullstep and setAcceleration_fullstep

v0.2.0

Features

  • Pin parameter order in constructor changed to EN, STEP, DIR
  • STEP and DIR pins are optional parameters
  • CRC check for read access reply datagrams
  • If only zeroes are received an error will be thrown
  • Added ignore_delay to StallGuard callback
  • Implemented write access retry
  • Implemented velocity ramping with VActual
  • Add ability to print StallGuard results and TStep in VActual
  • If write or read access fails, GSTAT will be checked for driver errors
  • Added CHANGELOG.md

v0.1.7

Features

  • Updated README
  • Added number of revolutions as parameter for doHoming
  • Added output whether doHoming was successful or not

v0.1.6

Features

  • Added ability to invert direction in setVActual_rps with negative revolutions