Prusa-Firmware/Firmware
Yuri D'Elia 15548958e9 Remove cumulative error in segments without cruising (take 1)
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.
2020-06-21 16:32:22 +02:00
..
variants Disable temperature compensation and temperature calibration menu if superPINDA is detected. 2020-06-16 00:19:06 +02:00
adc.c IR sensor gen. II 2019-09-16 00:43:37 +02:00
adc.h Fix ADC index overflow 2018-07-17 17:55:04 +02:00
AutoDeplete.cpp Comment. 2019-01-04 19:56:15 +01:00
AutoDeplete.h Add filament auto deplete engine for multi-material prints with MMUv2. 2019-01-03 22:58:25 +01:00
backlight.cpp General fixes and improvements to code 2019-10-31 19:07:20 +02:00
backlight.h General fixes and improvements to code 2019-10-31 19:07:20 +02:00
BlinkM.cpp Build 109 2017-11-16 22:03:36 +01:00
BlinkM.h Build 109 2017-11-16 22:03:36 +01:00
boards.h MK3 configuration files, renamed EINY to EINSY 2018-02-01 17:10:41 +01:00
bootapp.c New lang, arduino 1.8.5 - boot_app debug output 2018-10-18 16:20:14 +02:00
bootapp.h New lang, arduino 1.8.5 - boot_app debug output 2018-10-18 16:20:14 +02:00
cardreader.cpp Code size optimization: 2KB down (#2687) 2020-06-01 17:51:28 +02:00
cardreader.h Use combined creation/modification file time stamps for sorting 2020-02-14 09:09:15 +01:00
cmdqueue.cpp Fix kill messages 2019-11-29 22:49:22 +02:00
cmdqueue.h Fix repeated power panic restarted print from beginning or jumped at most 65536 B back in file printed from SD card. 2019-08-23 19:30:20 +02:00
config.h Merge pull request #2520 from MRprusa3d/PFW-x001bPR 2020-03-26 17:36:18 +01:00
Configuration_adv.h Parametrize LA limits and threshold values 2020-04-28 17:31:42 +02:00
Configuration.cpp some improvements 2019-07-10 16:29:40 +02:00
Configuration.h Version changed (3.9.0 build 3421) - sync 2020-05-18 16:56:32 +02:00
ConfigurationStore.cpp Fixup prefix echomagic for the LA config report 2019-05-24 17:08:32 +02:00
ConfigurationStore.h Adding the microstepping resolution for all axis to the eprom config which is persisted during M500 for Mk3 and Mk3S 2019-03-19 21:39:59 +00:00
conv2str.cpp LCD menu optimalization - conversion functions - source separation 2018-07-16 17:23:35 +02:00
conv2str.h LCD menu optimalization - conversion functions - source separation 2018-07-16 17:23:35 +02:00
Dcodes.cpp Merge pull request #2568 from 3d-gussner/MK3_Dcodes_move 2020-04-03 11:12:30 +02:00
Dcodes.h Bugfix for last PR 2020-04-07 11:22:48 +02:00
doxyfile Updated doxygen docs to work better with confluence. 2019-07-19 13:51:55 +02:00
eeprom.cpp EEPROM_BABYSTEP_Z using removal 2019-10-01 16:57:37 +02:00
eeprom.h MK3s IR sensor improvement (#2698) 2020-06-03 16:14:56 +02:00
fastio.h WRITE_NC macro for non-critical (non-synchronized) access to 2018-01-12 20:15:59 +01:00
Firmware.ino LCD menu optimalization - LiquidCrystal_Prusa removed 2018-07-16 23:23:15 +02:00
first_lay_cal.cpp Rename lay1cal_preheat() to lay1cal_wait_preheat(). 2019-09-12 00:19:20 +02:00
first_lay_cal.h Rename lay1cal_preheat() to lay1cal_wait_preheat(). 2019-09-12 00:19:20 +02:00
fsensor.cpp MK3s IR sensor improvement (#2698) 2020-06-03 16:14:56 +02:00
fsensor.h MK3s IR sensor improvement (#2698) 2020-06-03 16:14:56 +02:00
heatbed_pwm.cpp Fix compiler warning enumeration value 'ONE_TO_FALL' not handled in switch. 2020-06-08 13:07:19 +02:00
io_atmega2560.h "disable_z()" for Delta PSU II 2019-03-25 23:28:25 +01:00
la10compat.cpp Increase E-jerk LA10->15 flattened zone 2020-05-18 01:22:49 +02:00
la10compat.h Adjust E-jerk in LA10 compatibility mode 2020-02-03 15:42:27 +01:00
language.c Fix language related warnings in LANG_MODE 0 2019-07-29 15:55:42 +03:00
language.h Hard reset and readded change 2020-01-31 14:47:44 +01:00
lcd.cpp fix the knob long-press causing hang in modal dialogs 2019-10-01 17:13:36 +02:00
lcd.h Merge branch 'MK3' into MK3_Translations 2019-09-12 16:28:36 +03:00
le.sh make all shell scripts executable 2018-12-10 07:09:03 -07:00
Marlin_main.cpp Do not compile, if PINDA temperature compensation start point is lower than PINDA_MINTEMP. Document. 2020-06-16 02:03:14 +02:00
Marlin.h Remove temp_cal_active variable. 2020-06-11 20:00:55 +02:00
MarlinSerial.cpp Optimized LiquidCrystal class 2018-06-08 14:35:47 +02:00
MarlinSerial.h More than 7.5KB saved by slight refactoring of printing to serial line 2019-07-12 10:10:56 +02:00
menu.cpp Merge remote-tracking branch 'upstream/MK3' into MK3_LA15 2019-12-04 17:27:23 +01:00
menu.h Fix Live K, allow "Advance K" to be translated 2019-12-05 15:18:24 +01:00
mesh_bed_calibration.cpp Code size optimization: 2KB down (#2687) 2020-06-01 17:51:28 +02:00
mesh_bed_calibration.h Mesh by 3d-gussner, fixed difference between mbl points coordinates and coordinates used in planner for corrections, mbl settings menu update 2019-03-14 01:52:44 +01:00
mesh_bed_leveling.cpp 7x7 points mesh bed leveling 2019-02-14 10:57:58 +02:00
mesh_bed_leveling.h 3.0.6 sync 2016-08-11 10:42:53 +02:00
messages.c MK3s IR sensor improvement (#2698) 2020-06-03 16:14:56 +02:00
messages.h MK3s IR sensor improvement (#2698) 2020-06-03 16:14:56 +02:00
mmu.cpp Code size optimization: 2KB down (#2687) 2020-06-01 17:51:28 +02:00
mmu.h Show FINDA state as N/A if last received response is older than 1s. 2019-10-31 17:45:22 +01:00
motion_control.cpp 3.0.6 sync 2016-08-11 10:42:53 +02:00
motion_control.h 3.0.6 sync 2016-08-11 10:42:53 +02:00
optiboot_w25x20cl.cpp Handle second serial port correctly 2020-05-27 17:40:14 +03:00
optiboot_w25x20cl.h Fix missing start on MK3/S 2020-05-27 09:44:28 +03:00
pat9125.c Return correct status from pat9125_update_bs 2020-02-06 16:39:08 +01:00
pat9125.h FS: Improve reliability on speeds with poor optical tracking 2020-02-06 15:27:22 +01:00
pins_Einsy_1_0.h Merge branch 'MK3' into MK3-PFW-1024 2019-11-29 13:07:45 +02:00
pins_Rambo_1_0.h MK2.5 IR_SENSOR_PIN modified 2019-02-11 14:32:21 +01:00
pins_Rambo_1_3.h debug gcodes (fans, bed analysis) moved to Dcodes, HOST_KEEPALIVE_FEATURE simplified 2019-03-06 19:56:48 +01:00
pins.h Fix compiler warnings macro redefined. 2019-03-05 15:56:20 +01:00
planner.cpp Remove cumulative error in segments without cruising (take 1) 2020-06-21 16:32:22 +02:00
planner.h Code size optimization: 2KB down (#2687) 2020-06-01 17:51:28 +02:00
printers.h Remove commented out defines. 2019-07-10 17:40:33 +02:00
qr_solve.cpp 3.0.6 sync 2016-08-11 10:42:53 +02:00
qr_solve.h 3.0.6 sync 2016-08-11 10:42:53 +02:00
rbuf.c T-codes for MMU_V2: initial version 2018-07-09 13:57:36 +02:00
rbuf.h T-codes for MMU_V2: initial version 2018-07-09 13:57:36 +02:00
Sd2Card.cpp reinitialize the timestamp to ensure enough time to receive response for 0xFF sent. 2019-08-11 17:57:41 -04:00
Sd2Card.h Fix for Toshiba FlashAir (or other) SD card initialization - add clock cycles between sending CMD0 and CMD8. Redone for MK3 branch) 2019-08-08 15:45:59 -04:00
Sd2PinMap.h 3.0.12-RC2 sync 2017-06-29 18:35:43 +02:00
SdBaseFile.cpp Support for more special characters allowed in file names (^ + = [ ] ; 2019-08-27 13:47:58 +02:00
SdBaseFile.h 3.0.12-RC2 sync 2017-06-29 18:35:43 +02:00
SdFatConfig.h 3.0.6 sync 2016-08-11 10:42:53 +02:00
SdFatStructs.h 3.0.6 sync 2016-08-11 10:42:53 +02:00
SdFatUtil.cpp Fix compiler warning: sketch/SdFatUtil.cpp:49:7: warning: unused variable 'i' [-Wunused-variable] 2018-07-25 15:19:10 +02:00
SdFatUtil.h 3.0.12-RC2 sync 2017-06-29 18:35:43 +02:00
SdFile.cpp 3.0.12-RC2 sync 2017-06-29 18:35:43 +02:00
SdFile.h Optimized LiquidCrystal class 2018-06-08 14:35:47 +02:00
SdInfo.h 3.0.12-RC2 sync 2017-06-29 18:35:43 +02:00
SdVolume.cpp 3.0.12-RC2 sync 2017-06-29 18:35:43 +02:00
SdVolume.h 3.0.6 sync 2016-08-11 10:42:53 +02:00
Servo.cpp 3.0.6 sync 2016-08-11 10:42:53 +02:00
Servo.h 3.0.6 sync 2016-08-11 10:42:53 +02:00
sm4.c Merge remote-tracking branch 'prusa3d/MK3_dev' into simplify_EEPROM_M500 2018-10-08 15:58:49 +02:00
sm4.h New XYZ calibration with image processing 2018-03-13 12:55:35 +01:00
sound.cpp General fixes and improvements to code 2019-10-31 19:07:20 +02:00
sound.h Toggle Sound 2019-08-31 16:56:14 +03:00
speed_lookuptable.cpp Move speed lookup defs into a separate source 2019-05-24 17:08:32 +02:00
speed_lookuptable.h Move calc_timer into speed_lookup_table for planner reuse 2019-05-24 17:08:32 +02:00
spi.c New SPI (do not use Arduino SPI class) 2018-03-29 17:42:41 +02:00
spi.h New ML support - W25X20CL external spi flash support 2018-06-08 00:20:28 +02:00
static_assert.h static_assert - portable solution compatible with C++98 2018-09-27 19:59:29 +02:00
stepper.cpp Move reset LA state from G80 to M84 2020-04-29 22:51:23 +02:00
stepper.h Move reset LA state from G80 to M84 2020-04-29 22:51:23 +02:00
stk500.h Added support for a secondary boot loader, based on the OptiBoot project, 2018-06-14 15:13:21 +02:00
swi2c.c Fix compiler warning arduino-1.6.9/hardware/tools/avr/avr/include/avr/delay.h:36:2: warning: #warning "This file has been moved to <util/delay.h>." [-Wcpp] 2018-07-23 13:47:15 +02:00
swi2c.h SWI2C for PAT9125 simplified/optimized 2018-07-12 17:55:38 +02:00
swspi.cpp PAT9125 I2C, hardware SG homing 2017-08-17 15:23:34 +02:00
swspi.h PAT9125 I2C, hardware SG homing 2017-08-17 15:23:34 +02:00
system_timer.h ALTFAN implementation (#2692) 2020-06-01 17:58:15 +02:00
temperature.cpp Do not compile, if PINDA temperature compensation start point is lower than PINDA_MINTEMP. Document. 2020-06-16 02:03:14 +02:00
temperature.h Move has_temperature_compensation() into temperature.cpp. 2020-06-16 00:41:21 +02:00
thermistortables.h New ML support - menu tunning, startup 2018-06-10 16:04:32 +02:00
timer02.c Merge branch 'MK3' into MK3_TONE 2019-11-29 23:16:46 +02:00
timer02.h Re-enable Tone 2019-07-30 16:05:40 +03:00
Timer.cpp Fix Timer_test broken by conditional translation for SYSTEM_TIMER_2. 2019-01-28 19:29:31 +01:00
Timer.h Store timer period in TimerRemaining. 2018-06-11 23:41:36 +02:00
TimerRemaining.h Fix Timer_test broken by conditional translation for SYSTEM_TIMER_2. 2019-01-28 19:29:31 +01:00
tmc2130.cpp ♻️Code optimization 2020-04-02 14:44:44 +03:00
tmc2130.h Fix compiler warnings 2019-07-16 17:31:56 +02:00
tone04.c ALTFAN implementation (#2692) 2020-06-01 17:58:15 +02:00
tone04.h ALTFAN implementation (#2692) 2020-06-01 17:58:15 +02:00
uart2.c Merge remote-tracking branch 'prusa3d/MK3_dev' into simplify_EEPROM_M500 2018-10-08 15:58:49 +02:00
uart2.h MMU - communication, check after start, code cleaning 2018-08-07 20:37:59 +02:00
ultralcd.cpp Merge pull request #2748 from mkbel/detect_superpinda 2020-06-16 14:07:12 +02:00
ultralcd.h MK3s IR sensor improvement (#2698) 2020-06-03 16:14:56 +02:00
uni_avr_rpi.h Revert "Revert "Save 80B of flash and 8B of RAM and fix compiler warning:"" 2018-07-23 13:35:38 +02:00
util.cpp default nozzle diameter for farm mode 2019-09-23 17:13:33 +02:00
util.h default nozzle diameter for farm mode 2019-09-23 17:13:33 +02:00
vector_3.cpp 3.0.6 sync 2016-08-11 10:42:53 +02:00
vector_3.h 3.0.6 sync 2016-08-11 10:42:53 +02:00
w25x20cl.c Added support for a secondary boot loader, based on the OptiBoot project, 2018-06-14 15:13:21 +02:00
w25x20cl.h Added support for a secondary boot loader, based on the OptiBoot project, 2018-06-14 15:13:21 +02:00
xyzcal.cpp Conditional translation for SYSTEM_TIMER_2 because we want to have posibility to switch between old/new implementation. 2019-01-27 22:48:51 +01:00
xyzcal.h XYZ calibration - accuracy improvement 2018-03-27 17:27:41 +02:00