Initial release
- Stale issue workflow by @vintagepc in #2
- Build enviroment by @DRracer in #1
- Add first unit test by @DRracer in #7
- Minor changes to CMakeLists.txt by @leptun in #8
- GPIO hal prototype by @leptun in #9
- SPI hal by @leptun in #11
- Protocol implementation by @DRracer in #10
- USART hal prototype by @leptun in #14
- Buttons module implementation by @DRracer in #12
- Add interface module for driving LEDs by @DRracer in #13
- Add vscode configuration by @DRracer in #16
- Take over permanent storage implementation from MM-control-01 by @DRracer in #15
- Add basic motion API by @DRracer in #17
- Finda by @DRracer in #18
- Logic layer prototype by @DRracer in #19
- Toolchain path fixes by @wavexx in #20
- Define missing definition of CMAKE_OBJDUMP by @wavexx in #22
- Add global state hive by @DRracer in #21
- SHR16 by @leptun in #24
- Fix usart not working by @leptun in #25
- SHR16 tmc control by @leptun in #28
- Logic layer unit tests by @DRracer in #23
- Logic layer Eject filament unit tests by @DRracer in #26
- Logic layer Unload filament unit tests by @DRracer in #27
- Qualify leds::Mode in LED to fix build by @wavexx in #31
- Define the global Timebase instance by @wavexx in #30
- Remove invalid/useless test sizeof(ptr) == 4 by @wavexx in #34
- Clean up circular buffer implementation by @DRracer in #35
- Add prototypes of remaining logic layer's unit tests by @DRracer in #29
- Call LED::Step() correctly by @wavexx in #32
- Simple config header with example by @vintagepc in #39
- Verify and fix Tool Change state machine + unit tests by @DRracer in #38
- Verify Cut filament state machine + update unit tests by @DRracer in #37
- Cut filament - test all filament slots by @DRracer in #40
- Add initial AVR PROGMEM abstraction in hal::progmem by @wavexx in #44
- Revise the TMC2130 interface for stepping by @wavexx in #43
- GPIO improvements and stub by @wavexx in #42
- Start using config.h by @DRracer in #41
- Split CircularBuffer into CircularIndex+CircularBuffer by @wavexx in #45
- Disable preprocessor code indentation by @dragomirecky in #49
- Reformat CMake by @dragomirecky in #50
- Fix CMake "files" expression in pre-commit by @wavexx in #51
- Add this project to Holly by @dragomirecky in #52
- Shim on AVR by @wavexx in #48
- CMake-related changes by @dragomirecky in #53
- pre-commit: handle cmake files in subdirectories by @wavexx in #55
- GPIO fixes by @wavexx in #54
- Code coverage profiling using gcov and lcov by @vintagepc in #36
- HAL adc by @leptun in #56
- Fix buttons unit tests after ADC update by @DRracer in #58
- Add sending of response messages by @DRracer in #59
- WIP: Motion API by @wavexx in #47
- Fix TMC2130 stub by @DRracer in #60
- Fix FW build - define (empty) TMC2130::Init by @DRracer in #61
- Fix dependency downloading (clang-format) by @dragomirecky in #62
- Add error handling and reporting documentation by @DRracer in #68
- buttons: Fix comment by @leptun in #70
- Support CR XOR LF in protocol's line ending implementation by @DRracer in #75
- Rename ISR -> Isr to avoid clash with AVR libc ISR #define by @DRracer in #73
- Add support for reporting MMU errors via S3 msg by @DRracer in #72
- Avoid repeated Enable/Disable on an axis if already in desired state by @DRracer in #74
- Motion units by @wavexx in #71
- [WIP] tmc2130 implementation by @leptun in #65
- Allow units to be scaled by an unitless quantity by @wavexx in #76
- Improve error codes by @DRracer in #66
- Set real slot positions for the Idler and Selector by @DRracer in #69
- millis interrupt by @leptun in #78
- Introduce short namespace aliases by @DRracer in #77
- Allow configurable LED's blinking period by @DRracer in #79
- Do not blink the left LED on start by @DRracer in #81
- Handle slot indices out of range correctly at top level by @DRracer in #80
- Fix encoding of Query responses for high numbers of errors by @DRracer in #83
- Improve documentation of the startup process by @DRracer in #82
- Complete high-level Motion tests by @wavexx in #84
- Make cmake show verbose errors on failure by @wavexx in #85
- Correct motor pins by @wavexx in #87
- Fix LEDs orienation by @leptun in #92
- Add -fno-rtti to ensure no RTTI is generated by @wavexx in #88
- Add (and fix) axis enable tests in Motion/TMC2130 by @wavexx in #94
- Fix physical axis units for all axes by @wavexx in #96
- Implement an initial Motion ISR for AVR by @wavexx in #89
- Extract feedrates of Idler and Selector into config.h by @DRracer in #102
- Fix gpio::TogglePin on AVR by @wavexx in #104
- Use operators for min/max by @wavexx in #103
- Optimize timer multiplexing and increase stepTimerQuantum by @wavexx in #105
- Silence motion::Isr() unused variable warning by @wavexx in #106
- Update motor currents by @wavexx in #107
- Implement move chaining and end-speed control by @wavexx in #108
- Fix stepsPerUnit for the Pulley by @wavexx in #97
- Turn off green LED after load/unload finished successfully by @DRracer in #100
- Change FINDA from ADC to digital by @3d-gussner in #93
- Add globa Panic() function by @DRracer in #109
- Fix reporting progress of running commands by @DRracer in #99
- Motion: Panic if queue is full by @wavexx in #111
- Fix Motion::SetMode(axis, mode) and introduce SetMode(mode) by @wavexx in #112
- Force Tool Change to load the filament if same slot but not loaded by @DRracer in #101
- Add support for M0/M1 messages by @DRracer in #110
- Add LUFA by @dragomirecky in #114
- Change M0/M1 into a command by @DRracer in #117
- Motion: allow to abort movement on a single axis by @wavexx in #118
- Add homing capability to Idler and Selector by @DRracer in #116
- Improve motion tests/infrastructure by @wavexx in #119
- Updated motor currents and added freewheeling by @leptun in #113
- Add watchdog implementation + use it in main() by @DRracer in #67
- Fix right button issue on some hardware by @3d-gussner in #120
- Fix unit test compatibility with mingw by @leptun in #121
- Change LED modes to be consistent. by @3d-gussner in #123
- Add cmake project for LUFA by @DRracer in #115
- Simple debug logging via USART1 by @DRracer in #124
- Add more error codes for the printer's perspective by @DRracer in #98
- Positions by @3d-gussner in #122
- Usb stdout by @leptun in #125
- Fixes for loading filament into nozzle by @DRracer in #126
- Add HAL AVR EEPROM implementation by @DRracer in #130
- Fix (workaround) LED blink when millis overflow + unit test by @DRracer in #127
- Tag all source files with @file for doxygen by @DRracer in #131
- Homing by @leptun in #129
- Make all SHR16 public functions "thread-safe" by @DRracer in #132
- Avoid trying to unload filament when not loaded by @DRracer in #128
- Avoid repeated writes into the shift register by @DRracer in #133
- Fix start MMU with filament blocking the selector by @DRracer in #135
- AVR: Do not use __builtin_abs() for long types by @wavexx in #137
- Fix Right button handling for Load/Unload by @DRracer in #136
- Swap buttons left<->right by @DRracer in #138
- Introduce intelligent homing of Idler and Selector by @DRracer in #140
- Shr16 correct signal timing by @leptun in #142
- Add Homing/Stalled error codes for Pulley, Idler, Selector by @DRracer in #148
- Enforce MMU flash space limits by @wavexx in #149
- Check Filament Sensor earlier + fix Unload recovery by @DRracer in #146
- Fix motion timer reset by @wavexx in #152
- Improved runtime conversions for UnloadToFinda by @wavexx in #153
- Homing on both ends of axes by @DRracer in #150
- Invalidate currentSlot while homing by @DRracer in #154
- Fix mulU24X24toH16 by @DRracer in #155
- Guard critical sections in modules::motion by @wavexx in #156
- Make idler less sensitive SGT=5 -> SGT=7 by @leptun in #162
- Include to build test_protocol on gcc 12 by @wavexx in #163
- Repeated unload by @DRracer in #158
- Introduce manual operation of MMU by @DRracer in #160
- Make LoadFilament retract even when stopped with a button by @DRracer in #165
- motion: Fix motion::triple_move step count limit by @wavexx in #164
- motion: Handle overflow PlanMove without direction inversion by @wavexx in #167
- Try to recover FINDA pressed + no EEPROM record at start by @DRracer in #159
- Perform a re-check (LoadFilamentLimited) after successful LoadFilament by @DRracer in #166
- pulse_gen: Fix acceleration_rate block calculations by @wavexx in #171
- Distinguish between fast and slow FeedToBondtech stage by @DRracer in #173
- Distinguish fast and slow feed stage by @DRracer in #174
- Tune debounce timeout of buttons by @DRracer in #175
- Clear EEPROM filament state upon start when FINDA is off by @DRracer in #177
- Avoid runtime floats in Pulley::PlanMove by @wavexx in #184
- Reject LoadFilament if filament state > AtPulley by @DRracer in #179
- Increment MMU error count with every new error ocurred by @DRracer in #182
- Make sure the selector never moves if FINDA is pressed by @DRracer in #180
- "Printer in Charge" mode: report buttons into the printer for processing by @DRracer in #186
- Bump MMU FW version to 2.0.18 by @DRracer in #187
- Improve restart ToolChange -> FeedToFINDA by @DRracer in #181
- Defer setting error until ErrDisengagingIdler finishes by @DRracer in #189
- Bump version to 2.0.19 by @DRracer in #190
- Add cmake code to prepend the Prusa Magic™ by @vintagepc in #191
- Fix build on gcc 7.x by @wavexx in #183
- Upgrade build system by @wavexx in #193
- Avoid homing Idler and Selector at the same time by @DRracer in #194
- Introduce Idler::PartiallyDisengage by @DRracer in #195
- Generic Read/Write register operations by @DRracer in #178
- Change layout of registers - avoid empty registers by @DRracer in #196
- Fix selector's homing feedrate by @DRracer in #197
- Fix computation of CRC by @DRracer in #198
- Fix computation of CRC for Write requests (non-zero value2) by @DRracer in #199
- Implement Idler moves via registers by @DRracer in #200
- Update Register documentation by @3d-gussner in #201
- Configurable SGTHRS by @leptun in #202
- Change TIMSK1 atomically in mm::IsrSetEnabled by @wavexx in #206
- Add module to check for sketchy electronics by @vintagepc in #203
- Don't detach USB before entering bootloader by @gudnimg in #208
- hooks: Update cmake-format to 0.6.13 by @wavexx in #214
- Restore Hardware Error check axis bits by @vintagepc in #215
- cmake build tweaks by @wavexx in #207
- Tmc errors by @leptun in #212
- Fix unit tests on windows by @DRracer in #213
- Prevent filament creep in activeSlot+1 by @DRracer in #205
- Fix test_motion_ramp on Windows by @gudnimg in #216
- Increase version to 2.1.4 by @DRracer in #217
- build: Set -mrelax to remove trampolines while linking by @wavexx in #220
- cmake: Uniform Avr toolchain build with MK3 by @wavexx in #219
- user input test: Register enum with Catch by @gudnimg in #221
- Idler parked current by @leptun in #218
- Revert accidental change by @leptun in #224
- Update Catch2 to v3.1.1 by @wavexx in #229
- Empty the entire block_index queue when planned moves are aborted by @gudnimg in #228
- Run unit tests in parallel when possible by @gudnimg in #226
- hwSanity: Disable the steppers after test by @leptun in #225
- motion: Add tests for unscheduled moves in AbortPlannedMoves by @wavexx in #230
- circular_buffer: implement
reset()
by @gudnimg in #231 - Fix issue where firmware panic error code is overwritten by @gudnimg in #232
- PFW-1428 Enable UART1 receiver when the MMU is ready to process incoming messages by @gudnimg in #234
- Selector: use freewheeling by @leptun in #237
- Add bootloader hex to build products by @vintagepc in #238
- Generate exactly 1 userInput event when button pressed (and held) by @DRracer in #240
- Fix bootloader file generation by @leptun in #241
- Invalidate Idler+Selector homing flags when Retry from ToolChange Error by @DRracer in #236
- Report Selector refused to move as FINDA_DIDNT_SWITCH_OFF by @DRracer in #239
- optimisation: compiler should not inline
SetFilamentLoaded()
by @gudnimg in #244 - Make sure ToolChange moves Selector to desired slot by @DRracer in #242
- Distinguish among different error states when recovering ToolChange by @DRracer in #243
- optimisation: inline a few specific functions to reduce code size by @gudnimg in #245
- Bump prusa3dboards and don't build with debug symbols when using VScode by @gudnimg in #250
- Fix: make sure VerifyEnvironmentState checks filamentLoaded reliably by @DRracer in #251
- Improve logging in unit tests' helpers.ipp by @DRracer in #252
- PFW-1423 add Retry handling in NoCommand for init error #2 by @DRracer in #253
- Fix and tune CutFilament + unit tests by @DRracer in #246
- Compute vSense dynamically from iRun/iHold by @DRracer in #255
- Allow runtime config/register motor/axis iRun current by @DRracer in #254
- Finish Eject Filament operation by @DRracer in #256
- Remove handling of left+right buttons in error states by @DRracer in #235
- Increase Idler SG_THRS to 7 by @leptun in #258
- Introduce TMC2130 currents doxy group by @DRracer in #257
- MMU EEPROM reset support by @DRracer in #260
- Suspend all moves of Idler and Selector when entering an Error screen by @DRracer in #261
- Idler+Selector homing speeds: writeable registers by @DRracer in #262
- Allow cutting current >31 by @DRracer in #264
- VCC runtime undervoltage detection (module + logic) by @leptun in #265
- Adaptive Idler homing by @DRracer in #266
- Hold Idler and Selector even in logic::StartUp error handling by @DRracer in #267
- Hold/Resume Idler+Selector even after their homing errors by @DRracer in #268
- Disable register 0x21 by @DRracer in #269
- Fix compiler error on GCC 12 by @gudnimg in #273
- logic: eject_filament: reset LED state on OK event by @gudnimg in #272
- Remove redundant call to SetPairButOffOthers by @gudnimg in #274
- New Pulley values by @3d-gussner in #275
- Update doxygen pulley values by @3d-gussner in #276
- cleanup: unit tests: Remove unused Catch namespace by @gudnimg in #279
- MMU-238 Fix false positive
FINDA_FLICKERS
by @gudnimg in #277 - MMU-239 Implement unit test for ejecting slots 0 to 4 (and FINDA flickering recovery) by @gudnimg in #278
- Optimise CircularIndex count() method by @gudnimg in #280
- Update build server config by @DRracer in #282
- Tag 2.1.9 as 3.0.0 by @DRracer in #281
Contributors
- @vintagepc made their first contribution in #2
- @DRracer made their first contribution in #1
- @leptun made their first contribution in #8
- @wavexx made their first contribution in #20
- @dragomirecky made their first contribution in #49
- @3d-gussner made their first contribution in #93
- @gudnimg made their first contribution in #208
Full Changelog: https://github.com/prusa3d/Prusa-Firmware-MMU-Private/commits/v3.0.0