github prusa3d/Prusa-Firmware-MMU v3.0.0
3.0.0 Firmware for MMMU3

latest releases: v3.0.3, v3.0.2, v3.0.1...
16 months ago

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

Full Changelog: https://github.com/prusa3d/Prusa-Firmware-MMU-Private/commits/v3.0.0

Don't miss a new Prusa-Firmware-MMU release

NewReleases is sending notifications on new releases.