Commit Graph

4799 Commits

Author SHA1 Message Date
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
Guðni Már Gilbert d5cdb412ba Introduce a way to read the previous tool used 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 2d02877686 Disable automatic in M600 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert e39bc3f12d During Tx, temporarily allow cold extrusion
This prevents a FSENSOR DIDNT TRIGGER error
and allows the bondtech gears to grab the filament.
2022-09-16 10:22:38 +02:00
D.R.racer 45a5e719a2 Disable filRunout when MMU.Enabled()
It turned out the runout is caused by the ramming sequence in the G-code, which is interpreted before the actual MMU command gets into processing.
The frequency of these errors/runouts differed one machine from another and was really hard to track down.
Therefore - once the MMU is enabled (active and running) we'll disable filament runout handling caused by the printer's filament sensor.
2022-09-16 10:22:38 +02:00
Guðni Már Gilbert a1881b4a07 Disable filament runout when MMU is unloading 2022-09-16 10:22:38 +02:00
VintagePC 762080ab1a Fix some partking and recovery bugs 2022-09-16 10:22:38 +02:00
D.R.racer 8b6941d493 Temporarily disable runout
There are still printers which suffer from spurious runouts for no reason.
For testing purposes, runout will be disabled until the real cause is found.
2022-09-16 10:22:38 +02:00
D.R.racer 01f926f074 Fix build MK25S 2022-09-16 10:22:38 +02:00
VintagePC f155c7664d Add missing CheckUserInput calls, fix bad array entry for FW_update 2022-09-16 10:22:38 +02:00
VintagePC e8088b0161 Allow reset if the EEPROM is set to "on" 2022-09-16 10:22:38 +02:00
VintagePC 888a37450b Fix wrong return 2022-09-16 10:22:38 +02:00
VintagePC 73c486cc2f - Fix DisableMMU button on FW incompat
5823c14
- Implement eeprom var, fix reset
2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 204b43dce4 PFW-1336
The following situation is now fixed, steps:
1. Load filament through LCD
2. Load to nozzle through LCD
3. Before filament reaches Fsensor => turn off the printer
4. Wait a few seconds and then turn the printer on again
5. Start a print through the SD card
6. Printer will unload and then re-load the filament

Previously in step 6, the printer would start a print without any
filament loaded.
2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 46184a9447 Update printer name if M862.3 is called but not M862.2 2022-09-16 10:22:38 +02:00
D.R.racer 236098dbca Make init MMU error screens send buttons (Idle mode) 2022-09-16 10:22:38 +02:00
D.R.racer b880559ba7 Reset MMU upon start + fix reporting its start errors 2022-09-16 10:22:38 +02:00
D.R.racer 1ff7459743 Re-enable filament runout + add debug msgs
Needs a fix on the MMU side (report FeedToBondtech::DisengageIdler)
2022-09-16 10:22:38 +02:00
D.R.racer b6b265e371 Hack around old MMU FW's msgs 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert c1134e7e68 Cleanup: Remove an old comment 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert bd932b3b10 Cleanup: Fix two compiler warnings 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert cfc56af95c Cleanup: fix parameter comments 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 268c96334b Cleanup: Pull out PrusaErrorCodeIndex
Saves 8 bytes of flash
2022-09-16 10:22:38 +02:00
Guðni Már Gilbert d49e858cf7 PFW-1323 Fix MMU error screen doesn't disappear when error resolved on the MMU 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 7b91e73c8b Fix issue where error screen updates too slowly in manage_response 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 98d07e6a09 Call lcd_set_custom_characters_nextpage 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 5ced30d8ca Cleanup: Add comments and reduce code size slightly 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 352a22c22e Cleanup: Remove unused callback
Remove unused callback in lcd_show_multiscreen_message_with_choices_and_wait_P
2022-09-16 10:22:38 +02:00
Guðni Már Gilbert ecb4d08049 PFW-1318 Rewrite the implementation to be non-blocking 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert dc87bbae11 Fix compile error 2022-09-16 10:22:38 +02:00
D.R.racer 0e75a03c8c Reuse FSensor runout blocking impl. throughout the whole FW 2022-09-16 10:22:38 +02:00
D.R.racer eed816d9de Fix build 2022-09-16 10:22:38 +02:00
D.R.racer d7270e0b80 Fix lang build 2022-09-16 10:22:38 +02:00
D.R.racer f04d83fc4c Update printer's type (MMU/non-MMU) at runtime
+ reformat utils.cpp
2022-09-16 10:22:38 +02:00
D.R.racer 5082da78d2 Convert button on LCD into button for MMU
- Dependent on current MMU error being processed
- Includes rename of LEFT_BUTTON_CHOICE -> LCD_LEFT_BUTTON_CHOICE (and right, middle as well) to avoid confusion with MMU buttons' ordering
2022-09-16 10:22:38 +02:00
D.R.racer a0e9a302b8 Suppress communication drop-out < 8s (MMU in bootloader)
PFW-1327
2022-09-16 10:22:38 +02:00
D.R.racer ba8332cd3e Fix MK25 build 2022-09-16 10:22:38 +02:00
D.R.racer d628525a94 Fix build MK25S 2022-09-16 10:22:38 +02:00
D.R.racer f3f2086f29 Fix compilation MK3 2022-09-16 10:22:38 +02:00
D.R.racer 0bd3dfdcf7 This starts to print ;)
Temporarily disabled filament runout as this breaks ToolChange operation
yet for unknown reason.
2022-09-16 10:22:38 +02:00
D.R.racer 456ddbb538 Handle the new MMU states (slow load to fsensor) 2022-09-16 10:22:38 +02:00
D.R.racer 5f9ca6a6f3 Reorder errors list according to Prusa-Error-Codes #61 2022-09-16 10:22:37 +02:00