Commit Graph

266 Commits

Author SHA1 Message Date
Alex Voinea
b52597f1b2
Merge branch 'MK3_3.11.1' into MK3_3.10.2 2022-04-07 14:05:34 +02:00
Guðni Már Gilbert
c62c412cc3 Remove unused setting PID_ADD_EXTRUSION_RATE
Even if the setting was turned on, it doesn't do anything useful.
2022-03-30 19:03:41 +01:00
Guðni Már Gilbert
d42ef4784c Optimise checkFanSpeed()
Changes save 28 bytes of flash
2022-03-06 12:54:24 +00:00
Alex Voinea
4ec8781df2 Fix usb print timer 2022-02-13 22:52:49 +01:00
Alex Voinea
fb1c8ee0a3 Change the pullup test 2022-02-08 10:53:47 +01:00
Alex Voinea
c06ec9d05b Add pullup error test to define 2022-02-07 13:56:46 +01:00
Alex Voinea
b7806bf25f Crash if pullups get enabled on the thermistor inputs 2022-02-01 12:34:07 +01:00
Alex Voinea
67e6361ff1 Fix temperature runaway variable types (merge conflict) 2022-01-30 13:16:05 +01:00
Guðni Már Gilbert
9bf45773f9 Merge remote-tracking branch 'upstream/MK3' into rebase-testing-ground-v2 2022-01-30 11:43:16 +00:00
Guðni Már Gilbert
a940c364c9 Create enum class for heating_status variable 2022-01-30 11:39:27 +00:00
Alex Voinea
fb10b4398e Merge pull request #6 from gudnimg/gudni-PR1
Purged some `int`s for `uint8_t` when using the axis enum
2022-01-30 11:30:25 +00:00
Guðni Már Gilbert
f81db56793 temp_runaway_check() parameter _heater_id should be uint8_t
Saves 58 bytes of flash
2022-01-30 11:22:45 +00:00
Guðni Már Gilbert
261f311825 Change two arrays from int to uint8_t
__preheat_counter has max value of 16
__preheat_errors has max value of 5

Saves 58 bytes of flash memory and 4 bytes of SRAM
2022-01-30 11:22:45 +00:00
Voinea Dragos
42c393764f Adjust temperature runaway extruder count 2022-01-30 11:22:43 +00:00
DRracer
0be90dc5d1
Merge pull request #3320 from prusa3d/MK3_3.10.1
Merge MK3_3.10.1 into MK3 after release
2021-12-17 14:02:13 +01:00
Yuri D'Elia
320835a1b7 Do not cancel wait-for-temperature loops in disable_heaters()
Partially revert previous change: cancelling a single loop would often
advance the gcode stream to the next wait-for loop if executed at the
beginning of an SD print, implicitly turning off the flag again.

Cancel the loop directly in UnconditionalStop() which stops the command
queue as well in an atomic way, handling this correctly.
2021-12-10 01:46:20 +01:00
Yuri D'Elia
7ff117d0c4 temp_runaway_stop: remove spourious space in error message 2021-12-07 19:27:18 +01:00
Yuri D'Elia
a3915b57b9 Improve temp_runaway_stop robustness
Remove most of the duplicated code inside temp_runaway_stop(),
making it identical to the other temperature handlers.

Move the lower-level functions required to stop the entirety of the
machine into UnconditionalStop(). Reuse this function inside
lcd_print_stop().

Set the LCD alert message before calling Stop(), as done in other safety
handlers, so that the error is visible while the printer is stopping.

This also avoids other temporary status messages to appear before
the real issue is shown and/or STEALING the first CRITICAL alert
level before we do.
2021-12-07 19:25:34 +01:00
Yuri D'Elia
57abffda1b Update temperature-related error message to use LCD_STATUS_CRITICAL 2021-12-07 11:09:58 +01:00
Guðni Már Gilbert
e6a7abf2c1 Change temp_runaway_timer from float to uint32_t
Saves 32 bytes of flash

Also change temp_runaway_error_counter from int to
uint16_t to be specific
2021-08-06 15:08:46 +00:00
Guðni Már Gilbert
db1e5a203b Change temp_runaway_status from float to uint8_t and its enum
Saves 90 bytes of flash, and 12 bytes of SRAM
2021-08-06 15:03:35 +00:00
Guðni Már Gilbert
d853c19a21 Use fabs() instead of abs() when using floats
This saves 514 bytes of flash memory
2021-07-20 08:16:18 +02:00
Yuri D'Elia
53fcd6fc8f Work-around GCC LTO codegen bug in process_commands()
When building with GCC 4.9.2 (bundled with PF-build-env-1.0.6.*), -Os
and LTO enabled, PID_autotune gets automatically inlined into
process_commands().

Sadly, due to the massive size of process_commands(), it results in
codegen bug doing a partial stack overwrite in process_commands()
itself, manifesting as random behavior depending on the timing of
interrupts and the codepath taken inside the merged function.

Mark the function as noinline and add a note about the affected compiler
version in order to be checked again in the future.
2021-06-24 07:39:28 +02:00
DRracer
6188870c2e
Merge pull request #3157 from wavexx/improve_d2
Add extra debugging functions & crash analysis
2021-06-22 07:37:30 +02:00
Yuri D'Elia
f2fe57bfc0 Fix unused static declaration warnings
Guard declarations using the appropriate defines
2021-06-21 06:52:52 +02:00
Yuri D'Elia
eafdf6c216 Also move host_keepalive to manage_inactivity()
This avoids the "busy" output interleaving with regular output in very
rare scenarios.

We should focus in finding which calls are not using manage_inactivity()
properly instead of working it around.
2021-06-21 06:46:24 +02: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
449510392d Untangle a bit some recursive include mess 2021-06-12 15:09:03 +02:00
Yuri D'Elia
019c818c05 Insert babysteps using CRITICAL_SECTION instead of cli/sei 2021-02-25 16:44:16 +01:00
Voinea Dragos
ea44d78d68 Merge branch 'MK3' into PFW-1171-EEPROM_SN 2021-01-31 17:19:00 +02:00
Voinea Dragos
698499f00d split timer0 and timer2 initialization. Move timer2 init early 2021-01-31 17:18:32 +02:00
3d-gussner
a064ce4722 Add gcode M123 Tachometer value 2021-01-10 15:15:44 +01:00
DRracer
0ed6b537a8
Merge branch 'MK3' into MK3_3.9.3 2021-01-07 13:27:51 +01:00
3d-gussner
4b510fef0a Add PINDA_TEMP_COMP variable to enable SuperPINDA toggle menu/function 2020-12-23 20:59:08 +01:00
3d-gussner
732b6e0cad Cleanup 2020-12-23 20:58:20 +01:00
3d-gussner
62c36f718b Add SuperPINDA support for MK2.5/S
- Changed DETECT_SUPERPINDA to SUPERPINDA_SUPPORT as on miniRAMo the thermistor readings below 30°C
  aren't accurate egnough to determine if SUPERPINDA is connected or not
- Add LCD toggle menu Settings -> HW Setup -> SuperPINDA [Yes/No] to overwrite SuperPINDA detection
  - If EEPROM_PINDA_TEMP_COMPENSTATION is empty = 0xff then detect SuperPINDA by checking thermistor
  - If EEPROM_PINDA_TEMP_COMPENSTAION is 0 then forec enable for temperature compensation menues and functions
  - If EEPROM_PINDA_TEMP_COMPENSATION is 1 then force disable for temperature compensation menues and functions
2020-12-23 20:56:50 +01:00
Alex Voinea
4abf1f436a Gracefully dump the queue + fixes to fancheck 2020-11-09 21:49:56 +02:00
DRracer
772844678f
Merge pull request #2809 from leptun/PFW-1134-ALTFAN_KILLSWITCH
Pfw 1134
2020-08-20 15:42:03 +02:00
Alex Voinea
6b853a4cc3
Auto-detect ALTFAN after fw. update 2020-08-12 12:19:08 +03:00
DRracer
89ecf2ce3a
Merge pull request #2791 from wavexx/stack_protect_reentrant_isr
Fix stack smashing in temperature/fsensor ISR
2020-08-06 13:26:33 +02:00
DRracer
22a8c18551
Merge pull request #2784 from leptun/PFW-1134-ALTFAN_KILLSWITCH
altfan killswitch
2020-08-06 08:15:42 +02:00
Yuri D'Elia
b3af08d94a Fix stack smashing in temperature/fsensor ISR
The temperature and fsensor ISR re-enable interrupts while executing.

However, we still need to protect the epilogue of the ISR so that
the saved return address is not altered while returning.

We hoist the body of the function out of the isr in both cases for
clarity (and to avoid a stray return bypassing the lock/cli), so that
the re-entrant portion is clearly indicated.

This should fix the "STATIC MEMORY OVERWRITTEN" error messages randomly
happening when stepping at high frequency (where either isr is
preempted more frequently).
2020-08-05 17:47:46 +02:00
Yuri D'Elia
a2c7dcbbf8 Fix indentation 2020-08-04 13:14:35 +02:00
Alex Voinea
654a3a0d79
Other requested changes 2020-08-04 10:43:30 +03:00
Alex Voinea
e0bf92cd4e
Change bool literal to int 2020-08-04 09:54:57 +03:00
Yuri D'Elia
a8ce9358e5 Avoid redundant temperature error strings
Factor-out MIN/MAXTEMP [BED/AMB] out of the error message, which is now
built at runtime instead.

Introduce two missing ultralcd functions lcd_setalertstatus and
lcd_updatestatus to handle regular strings.

246272 -> 246084 = 188 bytes saved
2020-08-01 17:47:42 +02:00
Yuri D'Elia
e1c79c342d Re-introduce redundant disable_heaters() calls
Partially revert 285b505c73a54e9af01816e3a614de73ad181851 so that
we ensure heaters are disabled ASAP in case of potential bugs
in the max_*_error functions.
2020-08-01 17:47:20 +02:00
Yuri D'Elia
a60ed81a35 Implement MIN/MAX AMBIENT safety checks
Take advantage of the NTC thermistor found on the Einsy as an additional
safety measure, following the steps of the other MIN/MAXTEMP errors.

Introduce two configurable params AMBIENT_MINTEMP and AMBIENT_MAXTEMP
in the variant defines and set them for the MK3/MK3S to -30/+100
respectively.

AMBIENT_MINTEMP is primarily intended to catch a defective board
thermistor (to ensure MAXTEMP would be properly triggered) and thus the
trigger temperature is set just above the sensing limit and well below
the operating range.

AMBIENT_MAXTEMP is set at 100C, which is instead 20C above the maximum
recommended operating temperature of the Einsy. The NTC thermistor is
located just above the main power connector on the bottom of the board,
and could also help in detecting a faulty connection which can result in
rapid overheating of the contacts.

As for MAXTEMP, we cut power to the heaters, print fan and motors to
reduce power draw. Resume is not possible except by resetting the
printer, since the user is highly advised to inspect the board for
problems before attempting to continue.
2020-08-01 17:38:10 +02:00
Yuri D'Elia
3336db7954 Add some important notes about thermistor ADC handling 2020-08-01 17:36:43 +02:00
Yuri D'Elia
65f25b0d7e Remove redundant disable_heater() calls in max/min_temp handling
In max/min_temp handlers remove the redundant disable_heater() call.
Handlers already need to call Stop(), which will disable all heaters
as the first step.

Fix comments in order to mention that all heaters get disabled.
Use "MAX/MINTEMP BED" correctly in both the LCD and serial.
2020-08-01 17:36:43 +02:00
Yuri D'Elia
942fca5b66 Remove useless assignment
target_temperature_bed is already reset by disable_heaters() in Stop()
2020-08-01 17:36:43 +02:00
Yuri D'Elia
87bc5a78b6 Remove bogus comment (BED_MINTEMP *is* implemented) 2020-08-01 17:36:43 +02:00
Alex Voinea
a95feb56d9
ALTFAN override 2020-07-20 19:35:25 +03:00
Marek Bel
9838be8512 Do not compile, if PINDA temperature compensation start point is lower than PINDA_MINTEMP. Document. 2020-06-16 02:03:14 +02:00
Marek Bel
23cc22bc22 Move has_temperature_compensation() into temperature.cpp.
No change in FLASH usage.
2020-06-16 00:41:21 +02:00
Alex Voinea
751f810dd7
ALTFAN implementation (#2692)
* ALTFAN implementation

* Use CRITICAL_SECTION macros

* Use uint16_t instead of unsigned int

* Add forgotten CRITICAL_SECTION

* Documentation
2020-06-01 17:58:15 +02:00
DRracer
67e9b4c096
IR fsensor fixes (#2632)
* MK3S IR sensor detection and safe operational range fix
* debug, change of fsensor_IR_check behavior
* more doc + disable debug print voltage
* fix displaying MSG_04_OR_NEWER and MSG_03.... kudos to @ovariludovit
* better handling of fsensor not responding scenario
2020-04-28 10:20:21 +02:00
DRracer
65228a046e
Merge pull request #2520 from MRprusa3d/PFW-x001bPR
FS PCB auto-detect
2020-03-26 17:36:18 +01:00
D.R.racer
34ac2917ae fix. warning "Macro expansion producing 'defined' has undefined
behavior"
update screen layout comments
2020-03-26 14:40:47 +01:00
MRprusa3d
f09323a78f heaters-checking update 2020-03-03 14:57:45 +01:00
Alex Voinea
f1ccfd481a
HEATER -> HOTEND 2020-02-04 17:30:44 +02:00
Alex Voinea
886c2fdc4e
Show correct fixed message 2020-01-30 17:24:32 +02:00
Alex Voinea
b05ee33fc9
Merge branch 'MK3' into MK3_BED_LEVELING_PWM 2020-01-07 07:58:32 +02:00
Alex Voinea
e7f2577233
Fix kill messages 2019-11-29 22:49:22 +02:00
MRprusa3d
6e2793566c
Merge branch 'MK3' into PFW-943 2019-11-18 14:43:46 +01:00
Alex Voinea
e559a6b67f Merge branch 'MK3' into MK3_BED_LEVELING_PWM 2019-11-13 14:32:57 +02:00
leptun
d432c3644d Enable beeping after fan error is fixed 2019-10-18 09:13:19 +03:00
leptun
ea8d9ae49d Merge branch 'MK3' into MK3_Octoprint_fIxes 2019-10-18 08:45:22 +03:00
leptun
ace1d7049a Reenable command processing when issue is fixed if printer not active 2019-10-17 17:49:15 +03:00
leptun
7650e2b60c Handle disable_heater() 2019-10-06 12:43:03 +03:00
leptun
b39f09b68e Merge branch 'MK3' into MM_lay1_cal 2019-10-01 19:20:50 +03:00
leptun
61c7479579 Code cleanup: Move texts to messages.c/h 2019-09-30 20:16:01 +03:00
leptun
ff9a6c8177 Prevent fan error while checking fan functionality 2019-09-26 20:52:29 +03:00
leptun
fd01942db8 FAN Error fix - Initial 2019-09-19 20:48:59 +03:00
Marek Bel
027b6238fd Mark code unused when PINDA_THERMISTOR is defined by macro. Saves 1B of RAM and 4B of FLASH memory. 2019-09-17 20:26:03 +02:00
MRprusa3d
0e1d559f03
Merge branch 'MK3' into PFW-943 2019-09-16 15:29:28 +02:00
MRprusa3d
011468598e IR sensor gen. II
disconnected PCB detection
2019-09-16 00:43:37 +02:00
Marek Bel
269aef1696 Remove unused code guarded by WATCH_TEMP_PERIOD macro as most of the functionality is duplicate to what is implemented in temp_runaway_check(). This will release us from porting setWatch() to unified preheat menu and maintaining it. 2019-08-27 20:05:10 +02:00
NotaRobotexe
64115fb146 fixed redundant OK messages in serial 2019-07-24 18:08:14 +02:00
NotaRobotexe
756ce51b5e
Merge branch 'MK3' into octoprint_fix 2019-07-17 20:06:06 +02:00
NotaRobotexe
b8fec59f21 octoprint fan error fix 2019-07-17 19:59:31 +02:00
NotaRobotexe
e6255e8451 octoprint fan error work 2019-07-16 19:18:31 +02:00
DRracer
0422713b29
Merge pull request #2005 from prusa3d/MK3_3.7.2
Mk3 3.7.2
2019-07-16 08:50:38 +02:00
NotaRobotexe
8fb30f886a octoprint stop fix 2019-07-15 14:30:21 +02:00
Marek Běl
d3dd0ad271
Merge pull request #1952 from NotaRobotexe/sound
new sound
2019-07-10 18:06:32 +02:00
DRracer
a16de83535 heatbed audible noise suppression using short fast PWM pulses with
variable duty
2019-07-08 16:42:21 +02:00
NotaRobotexe
b5168bd6c2 fan error fix 2019-06-24 17:30:56 +02:00
Marek Bel
24cec4091b Merge branch 'MK3' into sound 2019-06-17 17:28:19 +02:00
Marek Bel
e393d91b12 Use first letter capital camel case for enum class members. 2019-06-12 16:20:21 +02:00
Marek Bel
49f172a7b9 Convert uint8_t cycle control varibles changed in previous commit to uint_least8_t to be potentially more portable. 2019-06-12 15:01:57 +02:00
DRracer
b15bbaf177 for cycles' variables: int -> uint8_t where appropriate, part1 2019-06-12 14:58:15 +02:00
NotaRobotexe
bb980e2fca sound edit, delete mute mode, add blind mode 2019-06-10 15:03:52 +02:00
DRracer
83578c3389 documentation + minor code cleanup based on code review 2019-06-06 15:50:13 +02:00
DRracer
09fee4e64d remove fan error simulation automaton 2019-05-31 11:30:30 +02:00
DRracer
6755791778 Fix repeated fan error checking 2019-05-31 11:29:11 +02:00
DRracer
253087a4c5 Code cleanup 2019-05-27 16:18:21 +02:00
DRracer
4d020d99f6 Code cleanup 2019-05-27 14:57:02 +02:00
DRracer
9cb0bc7bcf Fix MINTEMP errors and fsensor runout 2019-05-24 08:46:44 +02:00
Ondrej Tuma
63235625ab pause printer by flag 2019-05-23 13:13:11 +02:00
Marek Běl
084c6f2700
Merge pull request #1805 from DRracer/MK3
PFW-844
2019-05-10 13:41:59 +00:00