Commit Graph

4840 Commits

Author SHA1 Message Date
D.R.racer 18423685b6 Cleanup ExpectsResponse usage 2022-09-16 10:22:39 +02:00
D.R.racer d5377c1781 Remove extra "scopeState = ScopeState::FINDAReqSent"
saves ~20B in total
2022-09-16 10:22:39 +02:00
D.R.racer e205d0ee2f Autoretry Idle scope: transf. into Finished, should stay in Processing 2022-09-16 10:22:39 +02:00
D.R.racer 78cbea08e6 Fix pgm_read* usage 2022-09-16 10:22:39 +02:00
D.R.racer 6c0d3b0b78 Optimize MMU protocol logic 2022-09-16 10:22:39 +02:00
D.R.racer 05ad1dc2f6 Refactoring of protocol logic to lower RAM consumption
Should also place the statistics request to the right spot in the state machine.
2022-09-16 10:22:39 +02:00
Guðni Már Gilbert dfddf3eaa5 Initial commit for MMU statistics 2022-09-16 10:22:39 +02:00
Guðni Már Gilbert 2616df66af PFW-1386 st_get_position_mm() is more accurate when using endstops (not homed printer)
If the endstops kick in, then st_get_position_mm shows the actual travel distance. current_position[Z-AXIS] does not get updated correctly thus we cannot use it when unhomed.

current_position[Z-AXIS] is later set to Z_MAX_POS,
we cannot use that either to calculate the travel distance
2022-09-16 10:22:39 +02:00
Guðni Már Gilbert f409426bdc PFW-1386 Refactor raise_z
Removed the "plan" parameter.
We were incorrectly returning from the function if the printer was homed,
but plan = false. This would leave current_position with an incorrect value

If the printer is homed => finish the move and return the travel distance

If the printer is not homed => rely on end stop to prevent damage,
return travel distance even if the endstop stopped the move.
2022-09-16 10:22:39 +02:00
Guðni Már Gilbert 4a1479b5bc PFW-1386 Clamp Z-axis when homed 2022-09-16 10:22:39 +02:00
Guðni Már Gilbert fa6e30389a PFW-1386 Add a TODO
When recovering the Z-axis in M600, we'd like the Z move to
happen after the XY move.
2022-09-16 10:22:39 +02:00
Guðni Már Gilbert 0a90c7ffda PFW-1386 Use Marlin 2 unload sequence for single material
The current unload sequence does not give good results.
The Marlin 2 sequence looks good on my end. This can be later
used to improve M600

Added all the constants from Marlin 2
2022-09-16 10:22:39 +02:00
Guðni Már Gilbert ff91b4670d PFW-1386 Use same code for Z-lift in M600 as in M701/M702
This reduces flash usage by 128 bytes!
2022-09-16 10:22:39 +02:00
Guðni Már Gilbert 099c3a1f1f PFW-1386 fixup 2022-09-16 10:22:39 +02:00
Guðni Már Gilbert 38952f1f33 PFW-1386 Optimisation: st_synchronize is not needed after raise_z_above
Saves 16 bytes of flash
2022-09-16 10:22:39 +02:00
Guðni Már Gilbert 214b6a9220 PFW-1386 M701, M702: Move Z-axis using relative position
* Created a new function raise_z() which will move the Z axis by some
X millimeters. If plan = false, the function will return the
actual travel distance since the move is blocking.
* raise_z_above() is refactored to call raise_z()

Now the M701 and M702 will move the Z-axis relatively, and also
when done, revert the Z axis position when done.
This is a similar behavior as in Marlin 2.
2022-09-16 10:22:39 +02:00
Guðni Már Gilbert 217b537961 PFW-1386 Remove old debug message to save space
Saves 34 bytes of flash
2022-09-16 10:22:39 +02:00
Guðni Már Gilbert bb0bbfb45f PFW-1386 Minor correction to M707 and M708 useage example 2022-09-16 10:22:39 +02:00
Guðni Már Gilbert d78c575399 PFW-1386 Address should accept hexidecimal values
Now these are equal:
M707 A255 C1
M707 A0xFF C1

Both address inputs are interpreted as FF
2022-09-16 10:22:39 +02:00
Guðni Már Gilbert ba7dae5c79 PFW-1386 I don't see a reason for these lines
So I'm removing them
2022-09-16 10:22:39 +02:00
Guðni Már Gilbert 3192a95e78 PFW-1386 Optimise default value assign z_target 2022-09-16 10:22:39 +02:00
Guðni Már Gilbert 20c865c2d4 PFW-1386 Implement 'U' parameter for M702
Similar to 'L' in M701, this does not apply to the MMU
The U parameter controls how much mm the extruder will unload
Default value is 80mm
2022-09-16 10:22:39 +02:00
Guðni Már Gilbert 7e9166976f PFW-1386 Implement 'L' parameter for M701
It is only used when the MMU is disabled. With the MMU we use a defined ramming sequence.

When the MMU is disabled I borrowed the usages from Marlin 2.
The L parameter only defines the length for the "fast" load length.
Default value is 70mm, same as M600
2022-09-16 10:22:39 +02:00
Guðni Már Gilbert 94dd4aec73 PFW-1386 M701 now loads to nozzle with MMU 2022-09-16 10:22:39 +02:00
Guðni Már Gilbert 8462b38446 PFW-1386 Create a common function for M704 to M706
Saves 36 bytes of flash
2022-09-16 10:22:38 +02:00
Guðni Már Gilbert d6564d3617 PFW-1386 if automatic = false, raising Z-axis is done via gcode 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 32ec1587b9 PFW-1386 Implement changes to M702 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 9b0d89213b PFW-1386 Raising Z-axis during M701 is now done via Gcode
If the Z-parameter is not issued, then default behavior will raise
the Z-axis by MIN_Z_FOR_LOAD
2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 5bb36546b4 PFW-1386 Implement changes to M701 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert fb087fc535 PFW-1386 Add M707 and M708
WriteRegister and ReadRegister function will create new compiler
warnings due to unused parameters, we can ignore it for now.
2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 3664d29b21 PFW-1386 Add M709 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert de0539b630 PFW-1386 Implement M704, M705, and M706 2022-09-16 10:22:38 +02:00
D.R.racer 70532333dc Optimize filament sensor implementation
- remove virtual methods (we only have one fsensor implementation at a time)
- comment out some of the debugging texts
- remove volatile and replace them with proper synchronized access to relevant variables
2022-09-16 10:22:38 +02:00
D.R.racer 2662e09f1e Another message remove from RAM 2022-09-16 10:22:38 +02:00
D.R.racer 0e036b9d8a Save some more RAM in protocol_logic 2022-09-16 10:22:38 +02:00
D.R.racer 022aa53b2d Remove active_extruder completely
we only use 1 extruder + saves ~800B
2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 0889109760 Fix corrupted chars in "Engaging Idler" message 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert bac3168ca4 Optimise power_on and power_off
eeprom_update_byte only updates the EEPROM if the value is different

Saves 40 bytes of flash memory
2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 0d64cfa2e5 extruder variable should be one byte
Saves 1 byte of SRAM and 132 bytes of flash
2022-09-16 10:22:38 +02:00
D.R.racer 87a4f58e66 PFW-1363 Change MMU Error parking position 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 703c463a49 Optimize unload
Toolchange during print is now much quieter.
Excessive E-motor movement during print is now gone
2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 47e57646ea Optimize load
Don't start moving the E-motor immediately

Instead of starting the E-motor move when the load to extruder starts,
we can start when we are loading to the fsensor. At that stage
the MMU has changed from a fast load to a slow load.
2022-09-16 10:22:38 +02:00
D.R.racer 2f0ceabce5 Upgrade protocol to v2.1 - read/write registers + CRC 2022-09-16 10:22:38 +02:00
D.R.racer f18721bee3 Fix unintentional typo 2022-09-16 10:22:38 +02:00
D.R.racer 6d6f9583ea Initialize retryAttempts in constructor 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 485ed4a213 Fix issue where logs show two corrupted chars
Issue only appears when LANG_MODE = 1
2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 938fac4058 Remove old comment, button is acknowledged now 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert f717aa161c Remove TODO in ActivatePlannedRequest 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert b9d9308f9f Support 3x Retry in Idle state machine 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert ab32769487 Send button from current state machine 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 4f30cf0ba3 Add missing ProtocolError 2022-09-16 10:22:38 +02:00
Alex Voinea bc85a41059 Fix xflash flashing 2022-09-16 10:22:38 +02:00
D.R.racer 53e2d68183 Retry up to 6x in case of incorrect MMU FW version
Because it looks like the communication drop outs are caused by some electrical issues and we can loose even a byte from the version response, which is deadly for future operation.
2022-09-16 10:22:38 +02:00
D.R.racer 6e5fcb5838 Tune a few MMU progress codes' texts to fit on the LCD 2022-09-16 10:22:38 +02:00
D.R.racer 14b2befb7d Switch from Start Seq into Idle immediately + disable FS autoload on MMU 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 400fec5d9f Reset CustomMsg when Command in progress is None
When a Progress report is started, we set the CustomMsg to MMUProgress.

But there was an issue where, once the reported "Progress" action was done.
We did not reset the CustomMsg to Status. So if we are printing from the
SD card, the file name is not displayed on the LCD.
2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 5b184d885c Add LCD_BUTTON_TIMEOUT to enum 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert e59651a279 Remove description in header file
The description are more detailed in the ultralcd.cpp file

No need to document the function in two places :)
2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 2fc8b50f11 Fix lcd_show_multiscreen_message_yes_no_and_wait_P after rebase 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert be3f9376ba Add missing break 2022-09-16 10:22:38 +02:00
D.R.racer 09cb9c6ecd Fixup after rebase + discussion 2022-09-16 10:22:38 +02:00
D.R.racer 1d2acb5bd6 Bump MMU FW version to 2.0.19 to match/enforce the necessary compatibility level 2022-09-16 10:22:38 +02:00
D.R.racer fa176c69db Fix protocol error recovery
Communication timeout and Protocol Errors are now distinguished.
In case of a Protocol Error, the printer waits for heartBeatTimeout to allow filling up the input UART buffer (we expect the MMU still produces some bytes).
Once the timeout elapsed, the input UART buffer is cleared and a new Start Sequence is initiated.
2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 6bf2aebf04 Fix typo 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 80c640deb9 PFW-1373
Fix the unload procedure when the user has paused a print
then stopped the print after the temperature has reached below 175°C
Now the E-motor will move as expected
2022-09-16 10:22:38 +02:00
VintagePC ba52430e1d Magic numbers are bad... 2022-09-16 10:22:38 +02:00
VintagePC 69c39e2281 An attempt at fixing the retry. Discussion needed. 2022-09-16 10:22:38 +02:00
D.R.racer c412f062c8 Perform 3xRetry automatically
This is a draft PR showing the potential 3x retry implementation on the printer's side.
It is much less code and looks more reliable than the same functionality in the MMU FW.

Still, more work needs to be done:
- [ ] Button is sent to the MMU even before returning from the parking position
- [ ] Then the button is sent again
- [ ] Then the printer runs out of retryAttempts

We need to find a better spot to check for "automatic" retry and issuing of the buttons
2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 999320f671 Limit build number to uint8_t (#49)
Currently the MMU only sends one byte so there is no need
in storing the version with two bytes
2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 6b7a018f9b PFW-1354 Fix slow button processing (#37)
* Fix MK3S buttons being processed too slowly

After a button is selected on the MK3S MMU error screen, we need to process it before asking for another MMU Query.

Because the MMU Query will make the Error screen return and overwrite the status screen

* Add back CheckUserInput for ButtonPushed event
2022-09-16 10:22:38 +02:00
Guðni Már Gilbert d420b20bd9 Add a missing break
I don't see any difference in behaviour but this should be more correct
2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 3520020b24 * Correct the unload length on the MK3S side
* Pull all numbers into global constants
2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 6eb2767dd2 PFW-1334 Distinguish between a retry unload and U0 unload
U0 unload uses the ramming sequence, while the retry unload does not because the MMU starts unloading much sooner
2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 9a52bb5d04 Add MMU2_UNLOAD_TO_FINDA_FEED_RATE 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 59d19a8330 PFW-1334 Move E-motor on FSENSOR error retry 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert b8432e6bf2 Partial fix for PFW-1334
When a FSENSOR error happens, the first step for the MK3S should be to stop any loading by stopping the E-motor.

From this point, the buttons should determine what the MK3S does next.
2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 2aa6cfc1ab Optimise mmu_cut_filament_menu (#40)
preheat_or_continue should be used here to reduce copying code
2022-09-16 10:22:38 +02:00
VintagePC 8eb054e789 Fix trying to use serial before it's intiialized 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert ace5130d9f PFW-1375 MMU error reported by MK3S does not appear on LCD 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 7d3a50450d PFW-1340 Hide Done button for two errors
* FSENSOR_DIDNT_TRIGGER
* FSENSOR_DIDNT_GO_OFF

The Done button does not Move the E-motor because it
expects the user to have manually resolved the problem

Also if the filament is in the gears, we cannot pull the filament out.
In this case the Retry button is more suited as it will unload the filament.
2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 4dd689ba9a Fix PFW-1357 (#35)
lcd_encoder_diff would be set to 0 if lcd_update_enable(true)
is called outside ReportErrorHookMonitor
This would put enc_dif out of sync with lcd_encoder_diff and could cause false rotation triggering
2022-09-16 10:22:38 +02:00
vintagepc d7d6885765 PFW-1351 Cooldown timeout (#33)
* PFW-1351 WIP

* Fix bug with cooldown timing due to bad bitfield.

* Use default safety timer value for timeout
2022-09-16 10:22:38 +02:00
D.R.racer d1b216da0d Disable fsensor newVolt debug reporting 2022-09-16 10:22:38 +02:00
D.R.racer f94c2cba46 Fix rendering temp. + toolchange on MMU error screen 2022-09-16 10:22:38 +02:00
D.R.racer a004273e8f Avoid drawing MMU Error screen while MMU moves manually 2022-09-16 10:22:38 +02:00
D.R.racer 98adcbaff2 Bump required MMU FW version to 2.0.18 2022-09-16 10:22:38 +02:00
D.R.racer dab26fe50b Report detected MMU version in the Support menu
It was just subtly broken, all the functionality had already been implemented.
2022-09-16 10:22:38 +02:00
D.R.racer 121d43f896 Add a Try-Load-to-Bondtech operation
PFW-1347
2022-09-16 10:22:38 +02:00
VintagePC 0e96169bb3 remove logspam 2022-09-16 10:22:38 +02:00
VintagePC 4ea53ad4bf fix bug I introduced 2022-09-16 10:22:38 +02:00
VintagePC c07a5f396d Fix button enum 2022-09-16 10:22:38 +02:00
VintagePC d9676eff25 Fixed buged temperature resume. 2022-09-16 10:22:38 +02:00
VintagePC f9bedc3c94 Button handling WIP 2022-09-16 10:22:38 +02:00
VintagePC 9a20c85a5d First pass, improving the error recovery. 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 1e391f303c PFW-1344 Fullscreen message Loading Filament
When loading a filament through the LCD,
show a full screen message:

Loading Filament N

Where N can range from 0 to 5.
2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 8aa16a6429 Write documentation for lcdui_print_extruder 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 8fd1653b84 PFW-1343 initial commit 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert ed04c24ba0 Implement 'Filament not loaded' option for M600 with MMU 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert caf98936e3 Minor cleanup 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert b9c23cd6b8 Add Unloading message to LCD
Also made mmu_M600_load_filament static to limit its scope
2022-09-16 10:22:38 +02:00