Commit Graph

8 Commits

Author SHA1 Message Date
Guðni Már Gilbert 4342217159 Add comment about planner_aborted = false 2023-03-26 09:00:34 +00:00
Guðni Már Gilbert 6bdc3c5cfb Improve MMU toolchange when E-cool mode is enabled
Currently we are queuing many small 2 mm E-moves until the filament
sensor triggers. We do this because we never abort any queued moves,
so making small 2 mm moves ensures we do not move the E-motor more than
2 mm past the filament sensor.

Unfortunately, when E-cool mode is enabled, the E-motor will create
audible clicking sounds (similar one hears during jam or a loose grub
screw). A workaround for this is to queue one or more very long moves.
Where very long is something of the order of hundreds of millimeters. I
have it set to 350 mm but it's just a random constant really. Keep in
mind the firmware will block too large E-moves, if I recall correctly
it was anything above > 450 mm (see PREVENT_LENGTHY_EXTRUDE)

In order to use very long moves, we must somehow stop the E-motor from
moving once the filament sensor triggers. In other words, throw away
what's left of the current E-motor move. For this simple purpose we can
use planner_abort_hard() but we must set planner_aborted to false
afterwards because the code architecture does not allow the main loop()
to run until the Toolchange command is done processing.

Change in memory:
Flash: +18 bytes
SRAM: 0 bytes
2023-03-26 08:57:59 +00:00
Guðni Már Gilbert 59e1ac0396 PFW-1504 implement stepper_get_machine_position_E_mm()
This function should be used when reading the current machine
position while a move is ongoing

No change in memory
2023-03-13 06:47:08 +01:00
Guðni Már Gilbert bbfc4b9f78 PFW-1504 initial commit
Change in memory:
Flash: +162 bytes
SRAM: 0 bytes
2023-03-13 06:47:08 +01:00
D.R.racer ba34661b62 Fixup after rebase onto MK3 2023-02-01 08:28:23 +01:00
D.R.racer d2f3835b2c Fixup after review 2023-01-31 09:35:22 +01:00
D.R.racer 43ae2c78e5 Fix cmake build 2023-01-31 09:35:22 +01:00
D.R.racer 0555376502 Refactor mmu2.cpp and related interfaces
The general idea is to keep platform specific implementation away from the MMU state machines as much as we can.
That would enable unit testing the top level MMU state machine and integration into other project as well (if needed).
2023-01-31 09:35:22 +01:00