Commit Graph

1353 Commits

Author SHA1 Message Date
Voinea Dragos
8e667a8acd bad ISR catch 2021-06-14 11:30:38 +03:00
Yuri D'Elia
050cf72e98 Move stack checking to the temperature ISR
Now that the stack_error function is truly minimal,
we can check for stack errors much more frequently.

Also move away stack_error from ultralcd to Marlin_main.
2021-06-12 15:23:33 +02:00
Yuri D'Elia
01934b89e9 xflash_dump is now always required in all variants 2021-06-12 15:13:32 +02:00
Yuri D'Elia
449510392d Untangle a bit some recursive include mess 2021-06-12 15:09:03 +02:00
Yuri D'Elia
e28301f391 Report crash also in MK2.5, fix stack_error abuse
Rename EEPROM_CRASH_ACKNOWLEDGED to EEPROM_FW_CRASH_FLAG.

Use EEPROM_FW_CRASH_FLAG to always set the last crash reason, which
simplifies handling between the online/offline variants.

Make stack_error safe, by setting the flag and restarting immediately,
so that the error can be shown after restart.
2021-06-12 14:41:54 +02:00
Yuri D'Elia
bd57e00448 Implement an online crash dumper for MK2.5 boards
When XFLASH is not available, allow users to request _online_ crash
dumps by using D23 (since these require active user cooperation).

Once enabled, instead of just rebooting, dump memory directly to
the serial.

As similarly done with EMERGENCY_DUMP, we have two features that can be
enabled:

EMERGENCY_SERIAL_DUMP: enables dumping on crash after being requested
MENU_SERIAL_DUMP: allow triggering the same manually through the support
menu.
2021-06-12 13:37:20 +02:00
Yuri D'Elia
3187b96ca4 xfdump: report to the host that a dump is available
As suggested by @3d-gussner, announce to the host that a dump is
available for retrieval using an action "dump_available".

Any kind of dump is announced (even if manually triggered).

To avoid reading from xflash twice, remove some duplication and return
the crash reason directly in xfdump_check_state().
2021-06-11 19:21:51 +02:00
Yuri D'Elia
31f416fd5e Rename dump_crash_source to dump_crash_reason 2021-06-10 17:35:49 +02:00
Yuri D'Elia
c375610668 Move "WDR dump" inside EMERGENGENCY_DUMP 2021-06-10 17:02:41 +02:00
Voinea Dragos
1e786c7f55 WDR crash initial 2021-06-09 13:59:26 +03:00
Yuri D'Elia
c089ac5341 Implement EMERGENCY_DUMP for offline analysis
If EMERGENCY_DUMP is defined, crash and dump using the new xflash dump
functionality instead of just continuing with an error message.

When an emergency crash is stored, the first restart after a crash
displays a message that debug data is available and to contact support
to submit the crash for analysis.
2021-06-08 16:42:43 +02:00
Yuri D'Elia
30402e0404 Dcodes: add D20/D21/D22 to generate/read/clear dumps 2021-06-08 15:34:39 +02:00
Yuri D'Elia
f9371146d0 Implement reading XFLASH with D6
This requires expanding the dcode_core address type to 32bit type,
thus enlarges the D2/D3 implementation as a result.

Still allow to save all the original space if D6 is disabled, for now.
2021-06-07 16:41:25 +02:00
Yuri D'Elia
62f496e1d6 Allow D2 to be enabled selectively 2021-06-07 16:37:34 +02:00
D.R.racer
6bb7c0e3d3 Farm workaround M1 message
Farmers want to abuse a bug from the previous firmware releases
- they need to see the filename on the status screen instead of "Wait for user..."
So we won't update the message in farm mode...
2021-05-25 09:45:42 +02:00
DRracer
80e248662c
Merge pull request #3079 from 3d-gussner/PFW-1189
PFW-1189 Pre-release tasks
2021-04-29 16:33:18 +02:00
DRracer
89386036e6
Merge pull request #3137 from leptun/PFW-1239_fix_M23_subroutine_issue
Do not allow M23 to run subroutines
2021-04-29 15:06:33 +02:00
DRracer
a3b392d96c
Merge pull request #3130 from DRracer/move-alldata-2-end
Move All Data into last position in Factory Reset menu
2021-04-29 10:08:32 +02:00
Voinea Dragos
8610d0a850 Do not allow M23 to run subroutines 2021-04-29 10:59:21 +03:00
DRracer
7c914ec2d1
Merge pull request #3125 from leptun/PFW-1238_fix_M105_from_SD
Fix M105 from SD
2021-04-29 09:12:05 +02:00
D.R.racer
5089b2cddb Move All Data into last position in Factory Reset menu 2021-04-28 06:43:54 +02:00
3d-gussner
686054b95e Changed x of 4 and y of 9 to x/4 and y/4
Added `Iteration` translation
2021-04-27 20:22:28 +02:00
3d-gussner
b8ae08fd3d Update x of 4 and x of 9 messages so longer text can be used. 2021-04-27 07:18:52 +02:00
3d-gussner
af519626aa Define MSG_FS_V_04_OR_NEWER and MSG_FS_V_03_OR_OLDER c=14 2021-04-26 14:21:33 +02:00
3d-gussner
466de83ae0 Remove white spaces in messags which saves ~62bytes 2021-04-26 07:22:22 +02:00
Marek Bel
aa45091400
Scale extruder motor current linearly with speed. (#2813)
Scale extruder motor current linearly with speed.

49% less heating when running at low speed and standstill, 4% more torque at maximum extrusion rate (15mm^3/s), 15% more torque in high speed movements (un/retractions).

StealthChop mode is used for low speeds (below 900mm/min)
spreadCycle is used above. Transition speed is well above maximum extrusion rate of 15mm^3/s (275mm/min) so mode transition is not expected to be visible on printed surface.

StealthChop is expected to improve printed surface quality (less artifacts).

Warning you can burn extruder motor if it is not the same impedance as original Prusa i3 Extruder stepper motor. There is no current feedback in low speed so lower impedance motor can be burned by over current.

Even there is no direct current feedback, there is no risk for original motor thermal runaway, as motor resistance increases with temperature, current decreases.

Standstill peak phase current is expected to be 500 mA and linearly increase with speed to 970 mA at 900mm/min where spreadCycle constant current regulation takes over and keeps peak current at 805 mA to maximum speed possible.

As motor heating increases with current squared, lowering low speed current from 700mA to 500mA decreases heating 49% in thate mode, where motor spends most of the time.

Enable E-motor cool mode in farm mode only (and experimental menu) - the experimental menu is visible AND the EEPROM_ECOOL variable has a value of the universal answer to all problems of the universe - i.e. two conditions must be met at the start of the FW to enable the E-cool mode. If the user enables the experimental menu, sets the E-cool mode and disables the menu afterwards, on the next start of the FW the E-cool mode will be DISABLED. This is still subject to discussion how much obscure (security through obscurity) we'd like this option to have .

Additional stuff:
* Add serial debug msg to verify if E-cool mode is on
* Avoid access to E-cool mode switch on machines without TMC2130
* Do not allow only M907 E in case of E-cool mode+warn the user on the serial line that the command was skipped

Co-authored-by: D.R.racer <drracer@drracer.eu>
2021-04-23 16:06:28 +02:00
3d-gussner
403b340f19 Added EXTENDED_M20 to RepRap Gcode wiki M115 see https://reprap.org/mediawiki/index.php?title=G-code&type=revision&diff=189034&oldid=189033 2021-04-23 11:02:42 +02:00
Voinea Dragos
635bc442d6 Fix M105 from SD 2021-04-23 11:14:16 +03:00
3d-gussner
e18d688b64 Fix merge issues 2021-04-22 20:48:26 +02:00
3d-gussner
681bc560c9 Merge remote-tracking branch 'upstream/MK3_3.10.0' into PFW-1189 2021-04-22 20:43:54 +02:00
DRracer
00ce16ee55
Merge pull request #3121 from wavexx/reduce_m600_min_height
Revert/cleanup mininum extruder height during M600
2021-04-22 11:43:18 +02:00
Yuri D'Elia
daef5428d2 Rework gcode_M600_filament_change_z_shift to make it consistent
gcode_M600_filament_change_z_shift is almost useless, since it performs
what is already been done internally by filament_unload().

However it *does* cause the carriage to raise earlier during unload
compared to making the user wait after "press for unload".

Change it so the calculated Z height matches MIN_Z_FOR_SWAP.
2021-04-21 19:12:26 +02:00
Yuri D'Elia
8d04316497 Revert/cleanup mininum extruder height during M600
This change restores the minimum extruder height for filament purge
during M600 from the current 50mm back to 27mm from FW 3.9.

We do this by introducing a new option for unload_filament() to indicate
that the unload is part of an automatic swap, and in such cases avoid
raising more than absolutely necessary (this will _also_ come in handy
to avoid the extra purge in PR #2318 during M600).

A new define MIN_Z_FOR_SWAP is introduced for this purpose.
MIN_Z_FOR_UNLOAD is still used for manual lcd unload and for M702 and
hasn't been changed.
2021-04-21 19:07:58 +02:00
Alex Voinea
7d82cab125
Update doxygen 2021-04-20 09:16:56 +03:00
Alex Voinea
c4b70b82f3
Document M20 T parameter 2021-04-20 09:13:38 +03:00
Alex Voinea
1c0383c48f
Add capability report for extended M20 2021-04-20 09:03:22 +03:00
D.R.racer
7011014abb Save 16 bytes - pass ls_param by value to functions
... as ls_param is a 1-byte structure it is more conservative to pass it
to functions by value than by a pointer
2021-04-20 06:50:37 +02:00
Voinea Dragos
2129bcf315 M20 T 2021-04-19 14:48:50 +03:00
Yuri D'Elia
a5e4df390d Sync before/after setting mesh_bed_leveling_flag/homing_flag
mesh_bed_leveling_flag and homing_flag should be set only when the
planner is empty as a consequence of #3100, since any operation executed
*while* the mbl/homing flag is set is considered part of the compound
instruction that generated it (G80, G28, G30, G76).

Failure in doing so can result in instructions just prior being lost,
since they're incorrectly discarded (assumed to be redone).

G1  ; lost ..
G80 ; .. if PP happens here
2021-04-19 06:31:57 +02:00
DRracer
f9f6284c50
Merge pull request #3100 from wavexx/powerpanic_state_fixes
Fix PowerPanic and Crash Detection during homing and bed leveling
2021-04-07 18:19:50 +02:00
Yuri D'Elia
61faa49cbb Fix buffer overflow in buf
Fix cmd overflow introduced in 186ce0f.

With a precision of %f being .6 and assuming a maximum (theoretical)
acceleration of 99999 we need 47 bytes including terminating byte.

Round it to 48
2021-04-07 15:57:50 +02:00
Alex Voinea
9454f9d8ec Rename w25x20cl to xflash 2021-04-06 10:16:47 +02:00
Yuri D'Elia
449d181971 G80: handle power panic
This is handled in the same way crash detection is handled: homing/mbl
invalidates saved_target _and_ current position.

Fixes PP recovery during MBL and homing.
2021-04-06 02:20:00 +02:00
Yuri D'Elia
b46a52ffa8 G80: Handle crash detection
At a higher level, crash detection will repeat the last gcode command.

Some commands such as G28 or G80 need to be repeated in full and require
special handling.

In such cases, do not store the saved target coordinate (which is fake
in such cases) and invalidate the saved position.

This fixes the last coordinate of the first G1 move after recovery.

We also avoid moving from the origin when the saved position is
invalidated, which is not strictly necessary, but saves some time.
2021-04-06 02:00:47 +02:00
Yuri D'Elia
a5530593fa G80: preserve lcd status and message when aborting
Restore the old status just before returning, so that the subsequent G80
can restore the first (initial) message correctly.
2021-04-06 00:31:56 +02:00
Yuri D'Elia
5923276a86 G80: correctly abort during crash detection
Crash detection is handled at a higher level (which automatically
repeats the current command), however we still need to abort the current
command correctly.

Handle XY crashes by checking the planner status after st_synchronize().
2021-04-06 00:31:29 +02:00
Yuri D'Elia
5da39df968 G80: Use consistent XY axis feedrate 2021-04-06 00:10:33 +02:00
Yuri D'Elia
ce2e35d14d Move G80 into it's own function
No actual changes done in the function in this, besides break->return.

In G28, simply call the new function instead of using goto, making the
code more readable.

Also remove the senseless comments in G28 about command queuing (dating
back to when G80 was queued instead of being executed).
2021-04-05 23:35:17 +02:00
Yuri D'Elia
d2be40491b PP recovery: clamp initial position to software endstops
As done when initializing the printer from a cold start, we need to
clamp the starting position to software endstops before setting the
planner position since 0,0 is frequently out-of-bounds.

This avoids an useless move during recovery that can cause a crash:

- Initial X is set to be 0
- G1 performed by homing will clamp X>=0, resulting in a positive shift
- If X is already at max X (extruder being parked due to PP), this will
  slam at X+, causing an immediate crash.
2021-04-05 22:11:06 +02:00
Yuri D'Elia
6a61c26955 Removed unused crashdet_stop_and_save_print2 2021-04-05 20:04:50 +02:00