- remove the UI and related stuff to setting a farm number (the
communication protocol must remain intact)
- remove confirmation after print finished ("Print OK")
Both requests are highly welcome, since they allow for lowering the code
size by >1KB
PFW-963, PFW-927
Prevent bad readings/issues if someone changes the bed thermistor that is "better" with lower min values and creates a custom firmware.
The firmware will now be in the range of the PINDAv2 thermistor independant from the bed thermistor (which may change and need adjustments)
- 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
When unloading + preheat immediately followed by a load, the carriage is
raised first up to 20mm, then again to 50mm.
With PR #2318 it makes sense to make more space for the extra extrusion
anyway, so make them the same. This moves the carriage only once _while_
preheating, which is nice.
Preheating already raised Z to avoid scorching the PEI sheet, as does
filament loading/unloading to allow for excess material to be removed.
However, when loading/autoloading/unloading via the LCD with a cold
nozzle the preheating menu is performed before the carriage is raised,
leaving the carriage close to the sheet while heating the nozzle.
Pre-raise the carriage already while waiting, so that the subsequent
move is automagically skipped.
Set bFilamentWaitingFlag only once to perform both the LCD
initialization and raising to the appropriate height.
Should fix#2761
The wiring for the PAT9125 on RAMBo10a boards is not directly connected
to the SCL pin and requires the sw mode.
Detect this requirement by checking the definition for the SWI2C_SCL pin
in the board definition.
Remove SWI2C_SCL/SDA from the other boards to use the HW mode.
* Add missing translations
* Add missing CZ and IT translations
* Update CZ, FR, IT, ES translations
CZ thanks to @DRracer
FR thanks to Carlin Dcustom
ES tried myself
IT thanks to @wavexx
Only missing is PL
* Improve wording +change keys
* Add missing PL translations
* Fix copy paste error in Italian
fix double translations
* Make PL translation shorter
* Fix some length issues and capital letters
* Fixed again translations length issues
updated po files
* Update FR translation - thanks @awenelo
* Fix execution of lang-check.py
- Make lang-check.py executable
- Execute directly instead of specifying the python interpreter manually
("python" is no longer available on Debian, and would default to
version 2 prior to that despite being written for python 3)
* Fix permissions of translation files
Co-authored-by: D.R.racer <drracer@drracer.eu>
Co-authored-by: Yuri D'Elia <wavexx@thregr.org>
After fixing some LA15 issues, the strenght of LA15 increased.
As such, re-adjust the conversion factor so that:
Start K10 => 0.01 (previous minimum was K15)
PLA K30 => 0.05 (was 0.07, optimal 0.045-0.06)
PETG K45 => 0.08 (was 0.13, optimal 0.07-0.11 depending on material/temp)
- Only implement a single syncronous read/write function to read a byte,
since that's all we need currently
- Implement a compact IR_SENSOR probe for PAT9125
- Saves 242 bytes compared to PAT9125_SWI2C
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).
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
Partially revert 285b505c73a54e9af01816e3a614de73ad181851 so that
we ensure heaters are disabled ASAP in case of potential bugs
in the max_*_error functions.
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.
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.
Remove most of the original complexity from advance_spread.
Instead of accumulating time to be scheduled, plan ahead of time each
eISR tick using the next main interval + an accumulator (eISR_Err),
which keeps everything much simpler.
The distribution of the advance ticks is now using the real LA
frequency, which leaves a bit more time between the last LA tick and
the main stepper isr.
We take advantage of the accumulator to force a LA tick right after the
first main tick, which removes a +/- 1 scheduling error at higher step
rates.
When decompressing, we force 2 steps instead, so that the direction
reversal happens immediately (first tick zeros esteps, second inverts
the sign), removing another +/- 1 error at higher step rates.
If you're using flow to correct for an incorrect source diameter, which
is probably the main usage when using the LCD, then LA shouldn't be
adjusted.
It's still unclear what the effect of M221 in gcode should be regarding
overall extrusion width. If M221 means "thicker lines", then LA should
also be adjusted accordingly.
This stems from the fact that the source diameter/length needs to be
known in order to determine a compression factor which is independent of
the extrusion width, but the FW only ever sees one value currently (the
extrusion length) which combines both.
This makes it impossible for the FW to adjust for one OR the other
scenario, depending on what you expect for M221 to mean.
The e/D ratio should be calculated using the extrusion length.
As such, purify the e_D_ratio from the current extruder multiplier in
order to account correctly for flow adjustments.
Turns out for high-res curved models the numerical error and the
SLOWDOWN handling in the planner can cause enough variance in the
calculated pressure to trigger LA to continuosly, making matters worse.
Clamp LA again, but only during extrusion, so that the runaway error is
limited by the current segment length.
Add constants for the various required delays in tmc2130.h,
which will come in handy for stepper.cpp as well.
Move the delays in the _set functions and remove the pauses
from the various calling points and macros.
Note that the hard-coded pause wouldn't cut it for the stepper ISR,
but it's fine for other use cases.
Introduce new wrapper macros to tick the stepper pins.
Default to the original raising-edge stepping mode.
When using the TMC double-edge stepping mode (aka half-wave or
square-wave mode) the _LO macros become no-ops.
Before PR #2591 LA was automatically capped during cruising or
deceleration. However we now rely on reaching the current pressure state
exactly to stop. When dual/quad stepping inside the eISR we might incur
in oscillating behavior if we do not handle it correctly.
This might be the cause behind #2757
This now changes e_step_loops to be a phase-local variable, so we now
reset it each phase too (instead of per-segment).
When switching to a new trapezoid step with the right pressure, cancel
any pending eISR right away.
Similarly do not schedule another eISR if the pressure will be reached
by the end of the eISR.
This was done in the past to preserve the current LA_phase. This is not
needed anymore, since it will be reset at each trapezoid step when LA
is re-initialized.
There used to be a single stage where an extruder reversal could occur,
but since PR #2591 reversals can happen up to two times per trapezoid.
Reset LA_phase when ADV_INIT is set, since it is re-inizialized only
when needed a few lines afterward. This improves performance by avoiding
to check the phase continuosly to the end of the trapezoid.
Likewise, always set ADV_INIT during the first cruising step, also to
force a LA_phase reset.
PR #2591 made LA compression always account for retractions instead of
discarding the current compression steps. While this fixed overextrusion
in short segments followed by wipes, it uncovered another issue in how
the compression steps are spread during the trapezoid calculations
leading to gaps in segments followed by retractions (as highlighted by
/some/ prints in #2693).
LA1.5 always computes the required target compression steps for a
segment at nominal speed. Because of how the extra steps are allocated
using multiples of the accelerating frequency, if the segment is
truncated before cruising is reached, an additional cycle of steps can
be inserted before deceleration starts. Deceleration is also not
guaranteed to be symmetric where up to _two_ cycles can be skipped
depending on the stepping cycle, leading to a situation where a
symmetric acceleration/deceleration block will lead up to a cycle of
accumulated compression.
While forcing an the extra step during deceleration is possible by
tweaking the error term (eISR_Err), this doesn't guarantee balance in
all cases. The underlying issue is that the function is aiming a
compression which cannot be reached (nominal speed), and not at the
effective max speed reached in the trapezoid, thus moving the average
result higher over time.
We fix this by calculating the effective maximum speed (and compression)
reached during the trapezoid, which stops compression on the required
cycle irregardless of the error term, balancing the result.
This is the first unoptimized POC: this is not for production: a lot of
calculations are redundand and could work directly in steps/s^2.
This saves nearly all of additional FLASH usage of previous commit. It is only 70B worse than if no skipping is done in temperature compensation gcode G76.
There is no known purpose of this call.
lcd_temp_calibration_set() is switching on/off pinda temperature compensation from LCD settings menu (this is called "Temp. cal." on LCD).
st_current_init() does nothing on Einsy board, it enables and sets motor current selecting outputs on Rambo board (it used to be called digipot in history)
* Update EEPROM_FSENSOR_PCB documentation
* Update IR sensor check
* Rename IR messags and add UNKNOWN state
* Update code to use new messages
* To be continued
* Move fsensor related things from ultralcd.h to fsensor.h
* Use defined Thresholds
* IR sensor auto detection "0.3 or older" and "0.4 or newer" when trigger status changes.
Typo fixes
Doxygen documentation
* Cleanup spaces
* Revert PF-build.sh changes
* re-add space in messages
* revert doxygen snytax
* Remove double _Undef
* Fix indentation and doxygen syntax
* Fix indentation
* Better message handling
* Fix indentation
* Fix indentation
* More indentation fixwa
* Extract common code into manage_inactivity_IR_ANALOG_Check
Saves ~60B of code
* Revert indentation changes on fsensor.cpp
* Keep the selftest IR sensor part disabled
Everything shall happen at runtime
* Fix indentation fsensor_update
* Fix another misleading indentation in fsensor_update
Co-authored-by: Alex Voinea <voinea.dragos.alexandru@gmail.com>
Co-authored-by: D.R.racer <drracer@drracer.eu>
* Combine repeated calls into functions with much less parameters -> 2KB
down.
* Save some bytes by removing unnecessary 1-character strings: "x" -> 'x'
used in SERIAL_xxx printing macros.
This is also saves some CPU cycles
* Fix compilation for MK25S and MK3
* Copy surrounding indentation
* Fix compilation for a rare HW setup
* rename mesh_planXX_buffer_line back to mesh_plan_buffer_line
* Remove active_extruder from remaining plan_buffer_line_destinationXYZE
calls and one more fix of indentation
Increase the flattened response in the e-jerk conversion from the 1-4.5
region to 0.3-4.5 (same slope). This brings a 0.3 LA10 e-jerk to a 3.45
LA15 equivalent.
This will better handle the legacy Pretty PETG/CFPETG v3 profiles.
* Add and update missing translations
- updated in Firmware/ files the missing `c=xx` column and `r=yy` rows.
- added missing translations to lang/lang_en*.txt
Everyone is developing and adding messages to serial and especially to LCD PLEASE add `//// c=xx` or `//// c=xx r=yy` comments.
Preparing translations files without that information is a pain in the ... and takes way more time for somebody else
to review to code as it would take you.
* No need to have `MSG_abcde` again in comments `////` in `messages.c`
* German translation
* Missed a space
* Use the same format as somewhere else
* French translation.
I am not a native French speaking person, so please excuse my mistakes I may have done.
* Spanish translation.
I am not a native Spanish speaking person, so please excuse my mistakes I may have done.
* CZ translation
* Fix typos
* Another fix
It is
Dimmwert and not Dim Wert
* Fix issues reported by `lang-check.py`
* Add "difficult" messages containing `%`
* Updated MSG and German translation
* removed a translation as it breaks the language selection
* No need to wait until any-key is pressed
* No need to wait any-key is pressed
* Fixed two LF issues
* Updated PO files
ready to be send to translators
* Add missing italian translations
* Improve some existing italian translations
* More italian fixes
* More italian fixes
* Add exceptions in editorconfig for po files to avoid recoding
* Fix typo
Thanks @DRracer for pointing out
* Italian translation by @wavexx
* Update po/new/*.po files
* Update after merging MK3 branch
* Update French translation and some c=xx comments
Big thanks to @awenelo @carlin57 for helping with the french translations and their comments.
* Update po files after French translation
* Fixed most `lang-check.py` reported translation errors for Czech and German.
Two Czech have to be reviewed as these are too long.
One German is correct as it is shown in c=20 r=2 but is 1 char longer than this to split the message.
One German translation seams to be to long but have to review the actual max length
* Fix `lang-check.py` Spanish translation errors
There have been quite lot TOO long messages,
Can't imagine that nobody every complained about that.
* Fix `lang-check.py` Italian translations errors
* Update not_tran and not_used files after fixing several translations
* Some more error fixes and update of `po` files
* Polish translation
* Czech updated
* Fix typo
* no need to translate `\x00` if it is the same
* Polish: Runouts->Koniec
* Polish: Runouts->Konce f ... hopefully the last change
* Added MK2.5/s auto power mode to eeprom doxygen
* Final updates.
- Compiled all versions with multi-languages
- Compiled all versions with EN_ONLY
- updated all /lang/po/Firmware*.* files
* Add crlf attributes for po files
As done for editorconfig, this similarly forces git to handle
po files consistently in DOS format.
* Further improvent of IT translations
* Updated translation
Added cleanup to PF-build.sh
* remove lang/not_tran* and lang/not_used mistakenly added into the PR
Co-authored-by: DRracer <drracer@seznam.cz>
Co-authored-by: Yuri D'Elia <wavexx@thregr.org>
Co-authored-by: D.R.racer <drracer@drracer.eu>
As pointed out by @leptun, with MMUs the combination of old/new filament
profiles in the same print is a likely scenario as we transition towards
LA1.5. Reset the detection state also with K0.
Move la10c_reset into finishAndDisableStepper, which is called in both
via lcd_print_stop() and indirectly via M84, saving some space.
M84 is checked-for to determine a complete file, so it's a superior
candidate to G80 (which some people avoid due to MBL issues).
Allow the LA 1.5 MAX value to be configured in Configuration_adv.h.
Define a customizable LA10<>15 detection threshold in function of the
above limit.
Clamp the result of of the LA10->15 return value to always
respect the new LA_K_MAX.
* 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