Merge pull request #4053 from vintagepc/2477-redux
#2477 Improved M-code control for stealth mode/normal mode
This commit is contained in:
commit
07d7bfa8a4
|
|
@ -173,6 +173,7 @@ void manage_inactivity(bool ignore_stepper_queue=false);
|
||||||
#define enable_z() poweron_z()
|
#define enable_z() poweron_z()
|
||||||
#define disable_z() poweroff_z()
|
#define disable_z() poweroff_z()
|
||||||
#else
|
#else
|
||||||
|
extern bool bEnableForce_z; // Used by ultralcd stealth toggle
|
||||||
void init_force_z();
|
void init_force_z();
|
||||||
void check_force_z();
|
void check_force_z();
|
||||||
void enable_force_z();
|
void enable_force_z();
|
||||||
|
|
@ -440,6 +441,7 @@ extern int8_t busy_state;
|
||||||
#define FORCE_HIGH_POWER_END force_high_power_mode(false)
|
#define FORCE_HIGH_POWER_END force_high_power_mode(false)
|
||||||
|
|
||||||
void force_high_power_mode(bool start_high_power_section);
|
void force_high_power_mode(bool start_high_power_section);
|
||||||
|
void change_power_mode_live(uint8_t mode);
|
||||||
|
|
||||||
#endif //TMC2130
|
#endif //TMC2130
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2409,25 +2409,30 @@ void retract(bool retracting, bool swapretract = false) {
|
||||||
|
|
||||||
|
|
||||||
#ifdef TMC2130
|
#ifdef TMC2130
|
||||||
void force_high_power_mode(bool start_high_power_section) {
|
|
||||||
#ifdef PSU_Delta
|
|
||||||
if (start_high_power_section == true) enable_force_z();
|
|
||||||
#endif //PSU_Delta
|
|
||||||
uint8_t silent;
|
|
||||||
silent = eeprom_read_byte((uint8_t*)EEPROM_SILENT);
|
|
||||||
if (silent == 1) {
|
|
||||||
//we are in silent mode, set to normal mode to enable crash detection
|
|
||||||
|
|
||||||
// Wait for the planner queue to drain and for the stepper timer routine to reach an idle state.
|
void change_power_mode_live(uint8_t mode)
|
||||||
|
{
|
||||||
|
// Wait for the planner queue to drain and for the stepper timer routine to reach an idle state.
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
cli();
|
cli();
|
||||||
tmc2130_mode = (start_high_power_section == true) ? TMC2130_MODE_NORMAL : TMC2130_MODE_SILENT;
|
tmc2130_mode = mode;
|
||||||
update_mode_profile();
|
update_mode_profile();
|
||||||
tmc2130_init(TMCInitParams(FarmOrUserECool()));
|
tmc2130_init(TMCInitParams(FarmOrUserECool()));
|
||||||
// We may have missed a stepper timer interrupt due to the time spent in the tmc2130_init() routine.
|
// We may have missed a stepper timer interrupt due to the time spent in the tmc2130_init() routine.
|
||||||
// Be safe than sorry, reset the stepper timer before re-enabling interrupts.
|
// Be safe than sorry, reset the stepper timer before re-enabling interrupts.
|
||||||
st_reset_timer();
|
st_reset_timer();
|
||||||
sei();
|
sei();
|
||||||
|
}
|
||||||
|
|
||||||
|
void force_high_power_mode(bool start_high_power_section) {
|
||||||
|
#ifdef PSU_Delta
|
||||||
|
if (start_high_power_section == true) enable_force_z();
|
||||||
|
#endif //PSU_Delta
|
||||||
|
uint8_t silent;
|
||||||
|
silent = eeprom_read_byte((uint8_t*)EEPROM_SILENT);
|
||||||
|
if (silent == 1 || tmc2130_mode == TMC2130_MODE_SILENT) {
|
||||||
|
//we are in silent mode, set to normal mode to enable crash detection
|
||||||
|
change_power_mode_live((start_high_power_section == true) ? TMC2130_MODE_NORMAL : TMC2130_MODE_SILENT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif //TMC2130
|
#endif //TMC2130
|
||||||
|
|
@ -8172,30 +8177,64 @@ Sigma_Exit:
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/*!
|
#endif // TMC2130_SERVICE_CODES_M910_M918
|
||||||
|
/*!
|
||||||
### M914 - Set TMC2130 normal mode <a href="https://reprap.org/wiki/G-code#M914:_Set_TMC2130_normal_mode">M914: Set TMC2130 normal mode</a>
|
### M914 - Set TMC2130 normal mode <a href="https://reprap.org/wiki/G-code#M914:_Set_TMC2130_normal_mode">M914: Set TMC2130 normal mode</a>
|
||||||
Not active in default, only if `TMC2130_SERVICE_CODES_M910_M918` is defined in source code.
|
Updates EEPROM only if "P" is given, otherwise temporary (lasts until reset or motor idle timeout)
|
||||||
|
#### Usage
|
||||||
|
|
||||||
|
M914 [ P | R ]
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
- `P` - Make the mode change permanent (write to EEPROM)
|
||||||
|
- `R` - Revert to EEPROM value
|
||||||
*/
|
*/
|
||||||
case 914:
|
|
||||||
{
|
|
||||||
tmc2130_mode = TMC2130_MODE_NORMAL;
|
|
||||||
update_mode_profile();
|
|
||||||
tmc2130_init(TMCInitParams(false, FarmOrUserECool()));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
### M915 - Set TMC2130 silent mode <a href="https://reprap.org/wiki/G-code#M915:_Set_TMC2130_silent_mode">M915: Set TMC2130 silent mode</a>
|
### M915 - Set TMC2130 silent mode <a href="https://reprap.org/wiki/G-code#M915:_Set_TMC2130_silent_mode">M915: Set TMC2130 silent mode</a>
|
||||||
Not active in default, only if `TMC2130_SERVICE_CODES_M910_M918` is defined in source code.
|
Updates EEPROM only if "P" is given, otherwise temporary (lasts until reset or motor idle timeout)
|
||||||
|
#### Usage
|
||||||
|
|
||||||
|
M915 [ P | R ]
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
- `P` - Make the mode change permanent (write to EEPROM)
|
||||||
|
- `R` - Revert to EEPROM value
|
||||||
*/
|
*/
|
||||||
|
#ifdef TMC2130
|
||||||
|
case 914:
|
||||||
case 915:
|
case 915:
|
||||||
{
|
{
|
||||||
tmc2130_mode = TMC2130_MODE_SILENT;
|
uint8_t newMode = (mcode_in_progress==914) ? TMC2130_MODE_NORMAL : TMC2130_MODE_SILENT;
|
||||||
update_mode_profile();
|
//printf_P(_n("tmc2130mode/smm/eep: %d %d %d %d"),tmc2130_mode,SilentModeMenu,eeprom_read_byte((uint8_t*)EEPROM_SILENT), bEnableForce_z);
|
||||||
tmc2130_init(TMCInitParams(false, FarmOrUserECool()));
|
if (code_seen('R'))
|
||||||
|
{
|
||||||
|
newMode = eeprom_read_byte((uint8_t*)EEPROM_SILENT);
|
||||||
|
}
|
||||||
|
else if (code_seen('P'))
|
||||||
|
{
|
||||||
|
uint8_t newMenuMode = (mcode_in_progress==914) ? SILENT_MODE_NORMAL : SILENT_MODE_STEALTH;
|
||||||
|
eeprom_update_byte((unsigned char *)EEPROM_SILENT, newMenuMode);
|
||||||
|
SilentModeMenu = newMenuMode;
|
||||||
|
//printf_P(_n("tmc2130mode/smm/eep: %d %d %d %d"),tmc2130_mode,SilentModeMenu,eeprom_read_byte((uint8_t*)EEPROM_SILENT), bEnableForce_z);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tmc2130_mode != newMode
|
||||||
|
#ifdef PSU_Delta
|
||||||
|
|| !bEnableForce_z
|
||||||
|
#endif
|
||||||
|
)
|
||||||
|
{
|
||||||
|
#ifdef PSU_Delta
|
||||||
|
enable_force_z();
|
||||||
|
#endif
|
||||||
|
change_power_mode_live(newMode);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
#endif // TMC2130
|
||||||
|
#ifdef TMC2130_SERVICE_CODES_M910_M918
|
||||||
/*!
|
/*!
|
||||||
### M916 - Set TMC2130 Stallguard sensitivity threshold <a href="https://reprap.org/wiki/G-code#M916:_Set_TMC2130_Stallguard_sensitivity_threshold">M916: Set TMC2130 Stallguard sensitivity threshold</a>
|
### M916 - Set TMC2130 Stallguard sensitivity threshold <a href="https://reprap.org/wiki/G-code#M916:_Set_TMC2130_Stallguard_sensitivity_threshold">M916: Set TMC2130 Stallguard sensitivity threshold</a>
|
||||||
Not active in default, only if `TMC2130_SERVICE_CODES_M910_M918` is defined in source code.
|
Not active in default, only if `TMC2130_SERVICE_CODES_M910_M918` is defined in source code.
|
||||||
|
|
|
||||||
|
|
@ -953,7 +953,12 @@ bool find_bed_induction_sensor_point_z(float minimum_z, uint8_t n_iter, int
|
||||||
bool high_deviation_occured = false;
|
bool high_deviation_occured = false;
|
||||||
bedPWMDisabled = 1;
|
bedPWMDisabled = 1;
|
||||||
#ifdef TMC2130
|
#ifdef TMC2130
|
||||||
FORCE_HIGH_POWER_START;
|
bool bHighPowerForced = false;
|
||||||
|
if (tmc2130_mode == TMC2130_MODE_SILENT)
|
||||||
|
{
|
||||||
|
FORCE_HIGH_POWER_START;
|
||||||
|
bHighPowerForced = true;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
//printf_P(PSTR("Min. Z: %f\n"), minimum_z);
|
//printf_P(PSTR("Min. Z: %f\n"), minimum_z);
|
||||||
#ifdef SUPPORT_VERBOSITY
|
#ifdef SUPPORT_VERBOSITY
|
||||||
|
|
@ -1047,7 +1052,7 @@ bool find_bed_induction_sensor_point_z(float minimum_z, uint8_t n_iter, int
|
||||||
enable_z_endstop(endstop_z_enabled);
|
enable_z_endstop(endstop_z_enabled);
|
||||||
// SERIAL_ECHOLNPGM("find_bed_induction_sensor_point_z 3");
|
// SERIAL_ECHOLNPGM("find_bed_induction_sensor_point_z 3");
|
||||||
#ifdef TMC2130
|
#ifdef TMC2130
|
||||||
FORCE_HIGH_POWER_END;
|
if (bHighPowerForced) FORCE_HIGH_POWER_END;
|
||||||
#endif
|
#endif
|
||||||
bedPWMDisabled = 0;
|
bedPWMDisabled = 0;
|
||||||
return true;
|
return true;
|
||||||
|
|
@ -1057,7 +1062,7 @@ error:
|
||||||
enable_endstops(endstops_enabled);
|
enable_endstops(endstops_enabled);
|
||||||
enable_z_endstop(endstop_z_enabled);
|
enable_z_endstop(endstop_z_enabled);
|
||||||
#ifdef TMC2130
|
#ifdef TMC2130
|
||||||
FORCE_HIGH_POWER_END;
|
if (bHighPowerForced) FORCE_HIGH_POWER_END;
|
||||||
#endif
|
#endif
|
||||||
bedPWMDisabled = 0;
|
bedPWMDisabled = 0;
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -477,11 +477,11 @@ void lcdui_print_time(void)
|
||||||
print_t = print_tc;
|
print_t = print_tc;
|
||||||
suff = 'C';
|
suff = 'C';
|
||||||
} else
|
} else
|
||||||
//#endif //CLOCK_INTERVAL_TIME
|
//#endif //CLOCK_INTERVAL_TIME
|
||||||
if (print_tr != PRINT_TIME_REMAINING_INIT) {
|
if (print_tr != PRINT_TIME_REMAINING_INIT) {
|
||||||
print_t = print_tr;
|
print_t = print_tr;
|
||||||
suff = 'R';
|
suff = 'R';
|
||||||
} else
|
} else
|
||||||
print_t = (_millis() - starttime) / 60000;
|
print_t = (_millis() - starttime) / 60000;
|
||||||
|
|
||||||
if (feedmultiply != 100 && (print_t == print_tr || print_t == print_tc)) {
|
if (feedmultiply != 100 && (print_t == print_tr || print_t == print_tc)) {
|
||||||
|
|
@ -555,7 +555,7 @@ void lcdui_print_status_line(void) {
|
||||||
{
|
{
|
||||||
return; // Nothing to do, waiting for delay to expire
|
return; // Nothing to do, waiting for delay to expire
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (custom_message_type) {
|
switch (custom_message_type) {
|
||||||
case CustomMsg::M117: // M117 Set the status line message on the LCD
|
case CustomMsg::M117: // M117 Set the status line message on the LCD
|
||||||
case CustomMsg::Status: // Nothing special, print status message normally
|
case CustomMsg::Status: // Nothing special, print status message normally
|
||||||
|
|
@ -1064,7 +1064,7 @@ void lcd_menu_extruder_info() // NOT static due to using ins
|
||||||
|
|
||||||
lcd_timeoutToStatus.stop(); //infinite timeout
|
lcd_timeoutToStatus.stop(); //infinite timeout
|
||||||
lcd_home();
|
lcd_home();
|
||||||
lcd_printf_P(PSTR("%-15.15S%-5d\n" "%-15.15S%-5d\n"), _T(MSG_HOTEND_FAN_SPEED), 60*fan_speed[0], _T(MSG_PRINT_FAN_SPEED), 60*fan_speed[1] );
|
lcd_printf_P(PSTR("%-15.15S%-5d\n" "%-15.15S%-5d\n"), _T(MSG_HOTEND_FAN_SPEED), 60*fan_speed[0], _T(MSG_PRINT_FAN_SPEED), 60*fan_speed[1] );
|
||||||
menu_back_if_clicked();
|
menu_back_if_clicked();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1188,12 +1188,12 @@ static void lcd_menu_fails_stats_total()
|
||||||
{
|
{
|
||||||
lcd_timeoutToStatus.stop(); //infinite timeout
|
lcd_timeoutToStatus.stop(); //infinite timeout
|
||||||
lcd_home();
|
lcd_home();
|
||||||
lcd_printf_P(failStatsFmt,
|
lcd_printf_P(failStatsFmt,
|
||||||
_T(MSG_TOTAL_FAILURES),
|
_T(MSG_TOTAL_FAILURES),
|
||||||
_T(MSG_POWER_FAILURES), clamp999( eeprom_read_word((uint16_t*)EEPROM_POWER_COUNT_TOT) ),
|
_T(MSG_POWER_FAILURES), clamp999( eeprom_read_word((uint16_t*)EEPROM_POWER_COUNT_TOT) ),
|
||||||
_T(MSG_FIL_RUNOUTS), clamp999( eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT) ),
|
_T(MSG_FIL_RUNOUTS), clamp999( eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT) ),
|
||||||
_T(MSG_CRASH),
|
_T(MSG_CRASH),
|
||||||
clamp999( eeprom_read_word((uint16_t*)EEPROM_CRASH_COUNT_X_TOT) ),
|
clamp999( eeprom_read_word((uint16_t*)EEPROM_CRASH_COUNT_X_TOT) ),
|
||||||
clamp999( eeprom_read_word((uint16_t*)EEPROM_CRASH_COUNT_Y_TOT) ));
|
clamp999( eeprom_read_word((uint16_t*)EEPROM_CRASH_COUNT_Y_TOT) ));
|
||||||
menu_back_if_clicked();
|
menu_back_if_clicked();
|
||||||
}
|
}
|
||||||
|
|
@ -1226,11 +1226,11 @@ static void lcd_menu_fails_stats_print()
|
||||||
}
|
}
|
||||||
|
|
||||||
//! @brief Open fail statistics menu
|
//! @brief Open fail statistics menu
|
||||||
//!
|
//!
|
||||||
//! This version of function is used, when there is filament sensor,
|
//! This version of function is used, when there is filament sensor,
|
||||||
//! power failure and crash detection.
|
//! power failure and crash detection.
|
||||||
//! There are Last print and Total menu items.
|
//! There are Last print and Total menu items.
|
||||||
//!
|
//!
|
||||||
//! @code{.unparsed}
|
//! @code{.unparsed}
|
||||||
//! |01234567890123456789|
|
//! |01234567890123456789|
|
||||||
//! | Main | MSG_MAIN c=18
|
//! | Main | MSG_MAIN c=18
|
||||||
|
|
@ -1251,12 +1251,12 @@ static void lcd_menu_fails_stats()
|
||||||
|
|
||||||
#elif defined(FILAMENT_SENSOR)
|
#elif defined(FILAMENT_SENSOR)
|
||||||
static const char failStatsFmt[] PROGMEM = "%S\n" " %-16.16S%-3d\n" "%S\n" " %-16.16S%-3d\n";
|
static const char failStatsFmt[] PROGMEM = "%S\n" " %-16.16S%-3d\n" "%S\n" " %-16.16S%-3d\n";
|
||||||
//!
|
//!
|
||||||
//! @brief Print last print and total filament run outs
|
//! @brief Print last print and total filament run outs
|
||||||
//!
|
//!
|
||||||
//! This version of function is used, when there is filament sensor,
|
//! This version of function is used, when there is filament sensor,
|
||||||
//! but no other sensors (e.g. power failure, crash detection).
|
//! but no other sensors (e.g. power failure, crash detection).
|
||||||
//!
|
//!
|
||||||
//! Example screen:
|
//! Example screen:
|
||||||
//! @code{.unparsed}
|
//! @code{.unparsed}
|
||||||
//! |01234567890123456789|
|
//! |01234567890123456789|
|
||||||
|
|
@ -1272,7 +1272,7 @@ static void lcd_menu_fails_stats()
|
||||||
uint8_t filamentLast = eeprom_read_byte((uint8_t*)EEPROM_FERROR_COUNT);
|
uint8_t filamentLast = eeprom_read_byte((uint8_t*)EEPROM_FERROR_COUNT);
|
||||||
uint16_t filamentTotal = clamp999( eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT) );
|
uint16_t filamentTotal = clamp999( eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT) );
|
||||||
lcd_home();
|
lcd_home();
|
||||||
lcd_printf_P(failStatsFmt,
|
lcd_printf_P(failStatsFmt,
|
||||||
_T(MSG_LAST_PRINT_FAILURES),
|
_T(MSG_LAST_PRINT_FAILURES),
|
||||||
_T(MSG_FIL_RUNOUTS), filamentLast,
|
_T(MSG_FIL_RUNOUTS), filamentLast,
|
||||||
_T(MSG_TOTAL_FAILURES),
|
_T(MSG_TOTAL_FAILURES),
|
||||||
|
|
@ -1327,7 +1327,7 @@ static void lcd_menu_debug()
|
||||||
//! @param [in] ipgmLabel pointer to string in PROGMEM
|
//! @param [in] ipgmLabel pointer to string in PROGMEM
|
||||||
//! @param [in] value to be printed behind the label
|
//! @param [in] value to be printed behind the label
|
||||||
static void lcd_menu_temperatures_line(const char *ipgmLabel, int value){
|
static void lcd_menu_temperatures_line(const char *ipgmLabel, int value){
|
||||||
static const size_t maxChars = 15;
|
static const size_t maxChars = 15;
|
||||||
char tmp[maxChars];
|
char tmp[maxChars];
|
||||||
pgmtext_with_colon(ipgmLabel, tmp, maxChars);
|
pgmtext_with_colon(ipgmLabel, tmp, maxChars);
|
||||||
lcd_printf_P(PSTR(" %s%3d\x01 \n"), tmp, value); // no need to add -14.14 to string alignment
|
lcd_printf_P(PSTR(" %s%3d\x01 \n"), tmp, value); // no need to add -14.14 to string alignment
|
||||||
|
|
@ -1407,7 +1407,7 @@ static void lcd_menu_belt_status()
|
||||||
}
|
}
|
||||||
#endif //TMC2130
|
#endif //TMC2130
|
||||||
|
|
||||||
#ifdef RESUME_DEBUG
|
#ifdef RESUME_DEBUG
|
||||||
extern void stop_and_save_print_to_ram(float z_move, float e_move);
|
extern void stop_and_save_print_to_ram(float z_move, float e_move);
|
||||||
extern void restore_print_from_ram_and_continue(float e_move);
|
extern void restore_print_from_ram_and_continue(float e_move);
|
||||||
|
|
||||||
|
|
@ -1420,7 +1420,7 @@ static void lcd_menu_test_restore()
|
||||||
{
|
{
|
||||||
restore_print_from_ram_and_continue(0.8);
|
restore_print_from_ram_and_continue(0.8);
|
||||||
}
|
}
|
||||||
#endif //RESUME_DEBUG
|
#endif //RESUME_DEBUG
|
||||||
|
|
||||||
//! @brief Show Preheat Menu
|
//! @brief Show Preheat Menu
|
||||||
static void lcd_preheat_menu()
|
static void lcd_preheat_menu()
|
||||||
|
|
@ -1508,54 +1508,54 @@ void TestPullupCrash() {
|
||||||
//! | MMM DD YYYY | __DATE__
|
//! | MMM DD YYYY | __DATE__
|
||||||
//! | ------------------ | STR_SEPARATOR
|
//! | ------------------ | STR_SEPARATOR
|
||||||
//! @endcode
|
//! @endcode
|
||||||
//!
|
//!
|
||||||
//! If MMU is connected
|
//! If MMU is connected
|
||||||
//!
|
//!
|
||||||
//! @code{.unparsed}
|
//! @code{.unparsed}
|
||||||
//! | MMU connected | c=18
|
//! | MMU connected | c=18
|
||||||
//! | FW: 1.0.6-7064523 |
|
//! | FW: 1.0.6-7064523 |
|
||||||
//! @endcode
|
//! @endcode
|
||||||
//!
|
//!
|
||||||
//! If MMU is not connected
|
//! If MMU is not connected
|
||||||
//!
|
//!
|
||||||
//! @code{.unparsed}
|
//! @code{.unparsed}
|
||||||
//! | MMU N/A | c=18
|
//! | MMU N/A | c=18
|
||||||
//! @endcode
|
//! @endcode
|
||||||
//!
|
//!
|
||||||
//! If Flash Air is connected
|
//! If Flash Air is connected
|
||||||
//!
|
//!
|
||||||
//! @code{.unparsed}
|
//! @code{.unparsed}
|
||||||
//! | ------------------ | STR_SEPARATOR
|
//! | ------------------ | STR_SEPARATOR
|
||||||
//! | FlashAir IP Addr: | c=18
|
//! | FlashAir IP Addr: | c=18
|
||||||
//! | 192.168.1.100 |
|
//! | 192.168.1.100 |
|
||||||
//! @endcode
|
//! @endcode
|
||||||
//!
|
//!
|
||||||
//! @code{.unparsed}
|
//! @code{.unparsed}
|
||||||
//! | ------------------ | STR_SEPARATOR
|
//! | ------------------ | STR_SEPARATOR
|
||||||
//! | XYZ cal. details | MSG_XYZ_DETAILS c=18
|
//! | XYZ cal. details | MSG_XYZ_DETAILS c=18
|
||||||
//! | Extruder info | MSG_INFO_EXTRUDER
|
//! | Extruder info | MSG_INFO_EXTRUDER
|
||||||
//! | XYZ cal. details | MSG_INFO_SENSORS
|
//! | XYZ cal. details | MSG_INFO_SENSORS
|
||||||
//! @endcode
|
//! @endcode
|
||||||
//!
|
//!
|
||||||
//! If TMC2130 defined
|
//! If TMC2130 defined
|
||||||
//!
|
//!
|
||||||
//! @code{.unparsed}
|
//! @code{.unparsed}
|
||||||
//! | Belt status | MSG_BELT_STATUS
|
//! | Belt status | MSG_BELT_STATUS
|
||||||
//! @endcode
|
//! @endcode
|
||||||
//!
|
//!
|
||||||
//! @code{.unparsed}
|
//! @code{.unparsed}
|
||||||
//! | Temperatures | MSG_MENU_TEMPERATURES
|
//! | Temperatures | MSG_MENU_TEMPERATURES
|
||||||
//! @endcode
|
//! @endcode
|
||||||
//!
|
//!
|
||||||
//! If Voltage Bed and PWR Pin are defined
|
//! If Voltage Bed and PWR Pin are defined
|
||||||
//!
|
//!
|
||||||
//! @code{.unparsed}
|
//! @code{.unparsed}
|
||||||
//! | Voltages | MSG_MENU_VOLTAGES
|
//! | Voltages | MSG_MENU_VOLTAGES
|
||||||
//! @endcode
|
//! @endcode
|
||||||
//!
|
//!
|
||||||
//!
|
//!
|
||||||
//! If DEBUG_BUILD is defined
|
//! If DEBUG_BUILD is defined
|
||||||
//!
|
//!
|
||||||
//! @code{.unparsed}
|
//! @code{.unparsed}
|
||||||
//! | Debug | c=18
|
//! | Debug | c=18
|
||||||
//! @endcode
|
//! @endcode
|
||||||
|
|
@ -1596,7 +1596,7 @@ static void lcd_support_menu()
|
||||||
#if (FW_DEV_VERSION != FW_VERSION_GOLD) && (FW_DEV_VERSION != FW_VERSION_RC)
|
#if (FW_DEV_VERSION != FW_VERSION_GOLD) && (FW_DEV_VERSION != FW_VERSION_RC)
|
||||||
MENU_ITEM_BACK_P(PSTR(" repo " FW_REPOSITORY));
|
MENU_ITEM_BACK_P(PSTR(" repo " FW_REPOSITORY));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
MENU_ITEM_BACK_P(_n("prusa3d.com"));////MSG_PRUSA3D c=18
|
MENU_ITEM_BACK_P(_n("prusa3d.com"));////MSG_PRUSA3D c=18
|
||||||
MENU_ITEM_BACK_P(_n("forum.prusa3d.com"));////MSG_PRUSA3D_FORUM c=18
|
MENU_ITEM_BACK_P(_n("forum.prusa3d.com"));////MSG_PRUSA3D_FORUM c=18
|
||||||
MENU_ITEM_BACK_P(_n("help.prusa3d.com"));////MSG_PRUSA3D_HELP c=18
|
MENU_ITEM_BACK_P(_n("help.prusa3d.com"));////MSG_PRUSA3D_HELP c=18
|
||||||
|
|
@ -1644,10 +1644,10 @@ static void lcd_support_menu()
|
||||||
lcd_print(_md->ip_str);
|
lcd_print(_md->ip_str);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show the printer IP address, if it is available.
|
// Show the printer IP address, if it is available.
|
||||||
if (IP_address) {
|
if (IP_address) {
|
||||||
|
|
||||||
MENU_ITEM_BACK_P(STR_SEPARATOR);
|
MENU_ITEM_BACK_P(STR_SEPARATOR);
|
||||||
MENU_ITEM_BACK_P(_i("Printer IP Addr:")); ////MSG_PRINTER_IP c=18
|
MENU_ITEM_BACK_P(_i("Printer IP Addr:")); ////MSG_PRINTER_IP c=18
|
||||||
MENU_ITEM_BACK_P(PSTR(" "));
|
MENU_ITEM_BACK_P(PSTR(" "));
|
||||||
|
|
@ -1666,7 +1666,7 @@ static void lcd_support_menu()
|
||||||
#ifdef TMC2130
|
#ifdef TMC2130
|
||||||
MENU_ITEM_SUBMENU_P(_T(MSG_BELT_STATUS), lcd_menu_belt_status);
|
MENU_ITEM_SUBMENU_P(_T(MSG_BELT_STATUS), lcd_menu_belt_status);
|
||||||
#endif //TMC2130
|
#endif //TMC2130
|
||||||
|
|
||||||
MENU_ITEM_SUBMENU_P(_i("Temperatures"), lcd_menu_temperatures);////MSG_MENU_TEMPERATURES c=18
|
MENU_ITEM_SUBMENU_P(_i("Temperatures"), lcd_menu_temperatures);////MSG_MENU_TEMPERATURES c=18
|
||||||
|
|
||||||
#if defined (VOLT_BED_PIN) || defined (VOLT_PWR_PIN)
|
#if defined (VOLT_BED_PIN) || defined (VOLT_PWR_PIN)
|
||||||
|
|
@ -1936,7 +1936,7 @@ void mFilamentItem(uint16_t nTemp, uint16_t nTempBed)
|
||||||
lcd_draw_update = 1;
|
lcd_draw_update = 1;
|
||||||
|
|
||||||
lcd_clear();
|
lcd_clear();
|
||||||
lcd_puts_at_P(0, 3, _T(MSG_CANCEL));
|
lcd_puts_at_P(0, 3, _T(MSG_CANCEL));
|
||||||
|
|
||||||
lcd_set_cursor(0, 1);
|
lcd_set_cursor(0, 1);
|
||||||
switch (eFilamentAction)
|
switch (eFilamentAction)
|
||||||
|
|
@ -2118,7 +2118,7 @@ void lcd_change_success() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lcd_loading_progress_bar(uint16_t loading_time_ms) {
|
static void lcd_loading_progress_bar(uint16_t loading_time_ms) {
|
||||||
|
|
||||||
for (uint_least8_t i = 0; i < LCD_WIDTH; i++) {
|
for (uint_least8_t i = 0; i < LCD_WIDTH; i++) {
|
||||||
lcd_putc_at(i, 3, '.');
|
lcd_putc_at(i, 3, '.');
|
||||||
|
|
@ -2209,7 +2209,7 @@ uint8_t lcd_alright() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void show_preheat_nozzle_warning()
|
void show_preheat_nozzle_warning()
|
||||||
{
|
{
|
||||||
lcd_clear();
|
lcd_clear();
|
||||||
lcd_puts_at_P(0, 0, _T(MSG_ERROR));
|
lcd_puts_at_P(0, 0, _T(MSG_ERROR));
|
||||||
lcd_puts_at_P(0, 2, _T(MSG_PREHEAT_NOZZLE));
|
lcd_puts_at_P(0, 2, _T(MSG_PREHEAT_NOZZLE));
|
||||||
|
|
@ -2454,7 +2454,7 @@ float _deg(float rad)
|
||||||
}
|
}
|
||||||
|
|
||||||
//! @brief Show Measured XYZ Skew
|
//! @brief Show Measured XYZ Skew
|
||||||
//!
|
//!
|
||||||
//! @code{.unparsed}
|
//! @code{.unparsed}
|
||||||
//! |01234567890123456789|
|
//! |01234567890123456789|
|
||||||
//! |Measured skew :0.00D| MSG_MEASURED_SKEW c=14
|
//! |Measured skew :0.00D| MSG_MEASURED_SKEW c=14
|
||||||
|
|
@ -2490,7 +2490,7 @@ static void lcd_menu_xyz_skew()
|
||||||
menu_goto(lcd_menu_xyz_offset, 0, true);
|
menu_goto(lcd_menu_xyz_offset, 0, true);
|
||||||
}
|
}
|
||||||
//! @brief Show measured bed offset from expected position
|
//! @brief Show measured bed offset from expected position
|
||||||
//!
|
//!
|
||||||
//! @code{.unparsed}
|
//! @code{.unparsed}
|
||||||
//! |01234567890123456789|
|
//! |01234567890123456789|
|
||||||
//! |[0;0] point offset | MSG_MEASURED_OFFSET c=20
|
//! |[0;0] point offset | MSG_MEASURED_OFFSET c=20
|
||||||
|
|
@ -2552,7 +2552,7 @@ static void lcd_babystep_z()
|
||||||
// Initialize its status.
|
// Initialize its status.
|
||||||
_md->status = 1;
|
_md->status = 1;
|
||||||
check_babystep();
|
check_babystep();
|
||||||
|
|
||||||
if(!eeprom_is_sheet_initialized(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)))){
|
if(!eeprom_is_sheet_initialized(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)))){
|
||||||
_md->babystepMemZ = 0;
|
_md->babystepMemZ = 0;
|
||||||
}
|
}
|
||||||
|
|
@ -2601,7 +2601,7 @@ static void lcd_babystep_z()
|
||||||
|
|
||||||
// NOTE: bed_temp and pinda_temp are not currently read/used anywhere.
|
// NOTE: bed_temp and pinda_temp are not currently read/used anywhere.
|
||||||
eeprom_update_byte(&(EEPROM_Sheets_base->s[active_sheet].bed_temp),target_temperature_bed);
|
eeprom_update_byte(&(EEPROM_Sheets_base->s[active_sheet].bed_temp),target_temperature_bed);
|
||||||
#ifdef PINDA_THERMISTOR
|
#ifdef PINDA_THERMISTOR
|
||||||
eeprom_update_byte(&(EEPROM_Sheets_base->s[active_sheet].pinda_temp),current_temperature_pinda);
|
eeprom_update_byte(&(EEPROM_Sheets_base->s[active_sheet].pinda_temp),current_temperature_pinda);
|
||||||
#endif //PINDA_THERMISTOR
|
#endif //PINDA_THERMISTOR
|
||||||
calibration_status_set(CALIBRATION_STATUS_LIVE_ADJUST);
|
calibration_status_set(CALIBRATION_STATUS_LIVE_ADJUST);
|
||||||
|
|
@ -2629,7 +2629,7 @@ void lcd_adjust_bed_reset(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
//! @brief Show Bed level correct
|
//! @brief Show Bed level correct
|
||||||
//!
|
//!
|
||||||
//! @code{.unparsed}
|
//! @code{.unparsed}
|
||||||
//! |01234567890123456789|
|
//! |01234567890123456789|
|
||||||
//! |Settings: | MSG_SETTINGS
|
//! |Settings: | MSG_SETTINGS
|
||||||
|
|
@ -2674,7 +2674,7 @@ void lcd_adjust_bed(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
//! @brief Show PID Extruder
|
//! @brief Show PID Extruder
|
||||||
//!
|
//!
|
||||||
//! @code{.unparsed}
|
//! @code{.unparsed}
|
||||||
//! |01234567890123456789|
|
//! |01234567890123456789|
|
||||||
//! |Set temperature: |
|
//! |Set temperature: |
|
||||||
|
|
@ -3176,7 +3176,7 @@ void lcd_bed_calibration_show_result(BedSkewOffsetDetectionResultType result, ui
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_temp_cal_show_result(bool result) {
|
void lcd_temp_cal_show_result(bool result) {
|
||||||
|
|
||||||
custom_message_type = CustomMsg::Status;
|
custom_message_type = CustomMsg::Status;
|
||||||
disable_x();
|
disable_x();
|
||||||
disable_y();
|
disable_y();
|
||||||
|
|
@ -3238,7 +3238,7 @@ static void lcd_print_state(uint8_t state)
|
||||||
case STATE_OFF:
|
case STATE_OFF:
|
||||||
lcd_puts_P(_N(" 0"));
|
lcd_puts_P(_N(" 0"));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
lcd_puts_P(_T(MSG_NA));
|
lcd_puts_P(_T(MSG_NA));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -3264,7 +3264,7 @@ static void lcd_show_sensors_state()
|
||||||
lcd_puts_at_P(0, 0, MSG_PINDA);
|
lcd_puts_at_P(0, 0, MSG_PINDA);
|
||||||
lcd_set_cursor(LCD_WIDTH - 14, 0);
|
lcd_set_cursor(LCD_WIDTH - 14, 0);
|
||||||
lcd_print_state(pinda_state);
|
lcd_print_state(pinda_state);
|
||||||
|
|
||||||
if (MMU2::mmu2.Enabled()) {
|
if (MMU2::mmu2.Enabled()) {
|
||||||
const uint8_t finda_state = MMU2::mmu2.FindaDetectsFilament();
|
const uint8_t finda_state = MMU2::mmu2.FindaDetectsFilament();
|
||||||
lcd_puts_at_P(10, 0, _n("FINDA"));////MSG_FINDA c=5
|
lcd_puts_at_P(10, 0, _n("FINDA"));////MSG_FINDA c=5
|
||||||
|
|
@ -3402,7 +3402,7 @@ static void lcd_silent_mode_set() {
|
||||||
#else
|
#else
|
||||||
st_current_init();
|
st_current_init();
|
||||||
#endif //TMC2130
|
#endif //TMC2130
|
||||||
|
|
||||||
#ifdef TMC2130
|
#ifdef TMC2130
|
||||||
if (lcd_crash_detect_enabled() && (SilentModeMenu != SILENT_MODE_NORMAL))
|
if (lcd_crash_detect_enabled() && (SilentModeMenu != SILENT_MODE_NORMAL))
|
||||||
menu_submenu(lcd_crash_mode_info2);
|
menu_submenu(lcd_crash_mode_info2);
|
||||||
|
|
@ -3459,7 +3459,7 @@ static void lcd_language_menu()
|
||||||
}
|
}
|
||||||
uint8_t cnt = lang_get_count();
|
uint8_t cnt = lang_get_count();
|
||||||
#ifdef XFLASH
|
#ifdef XFLASH
|
||||||
if (cnt == 2) //display secondary language in case of clear xflash
|
if (cnt == 2) //display secondary language in case of clear xflash
|
||||||
{
|
{
|
||||||
if (menu_item_text_P(lang_get_name_by_code(lang_get_code(1))))
|
if (menu_item_text_P(lang_get_name_by_code(lang_get_code(1))))
|
||||||
{
|
{
|
||||||
|
|
@ -3480,7 +3480,7 @@ static void lcd_language_menu()
|
||||||
|
|
||||||
#ifdef COMMUNITY_LANGUAGE_SUPPORT
|
#ifdef COMMUNITY_LANGUAGE_SUPPORT
|
||||||
#ifdef XFLASH
|
#ifdef XFLASH
|
||||||
MENU_ITEM_SUBMENU_P(_T(MSG_COMMUNITY_MADE), lcd_community_language_menu);
|
MENU_ITEM_SUBMENU_P(_T(MSG_COMMUNITY_MADE), lcd_community_language_menu);
|
||||||
#endif //XFLASH
|
#endif //XFLASH
|
||||||
#endif //COMMUNITY_LANGUAGE_SUPPORT && W52X20CL
|
#endif //COMMUNITY_LANGUAGE_SUPPORT && W52X20CL
|
||||||
|
|
||||||
|
|
@ -3577,7 +3577,7 @@ void lcd_first_layer_calibration_reset()
|
||||||
lcd_set_cursor(0, 0);
|
lcd_set_cursor(0, 0);
|
||||||
float offset = static_cast<int16_t>(eeprom_read_word(reinterpret_cast<uint16_t*>(&EEPROM_Sheets_base->s[(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)))].z_offset)))/cs.axis_steps_per_mm[Z_AXIS];
|
float offset = static_cast<int16_t>(eeprom_read_word(reinterpret_cast<uint16_t*>(&EEPROM_Sheets_base->s[(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)))].z_offset)))/cs.axis_steps_per_mm[Z_AXIS];
|
||||||
lcd_printf_P(_i("Sheet %.7s\nZ offset: %+1.3fmm\n%cContinue\n%cReset"),////MSG_SHEET_OFFSET c=20 r=4
|
lcd_printf_P(_i("Sheet %.7s\nZ offset: %+1.3fmm\n%cContinue\n%cReset"),////MSG_SHEET_OFFSET c=20 r=4
|
||||||
sheet_name, offset, menuData->reset ? ' ' : '>', menuData->reset ? '>' : ' ');// \n denotes line break, %.7s is replaced by 7 character long sheet name, %+1.3f is replaced by 6 character long floating point number, %c is replaced by > or white space (one character) based on whether first or second option is selected. % denoted place holders can not be reordered.
|
sheet_name, offset, menuData->reset ? ' ' : '>', menuData->reset ? '>' : ' ');// \n denotes line break, %.7s is replaced by 7 character long sheet name, %+1.3f is replaced by 6 character long floating point number, %c is replaced by > or white space (one character) based on whether first or second option is selected. % denoted place holders can not be reordered.
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3671,7 +3671,7 @@ static void wait_preheat()
|
||||||
lcdui_print_temp(LCD_STR_THERMOMETER[0], (int)(degHotend(0) + 0.5), (int)(degTargetHotend(0) + 0.5));
|
lcdui_print_temp(LCD_STR_THERMOMETER[0], (int)(degHotend(0) + 0.5), (int)(degTargetHotend(0) + 0.5));
|
||||||
delay_keep_alive(1000);
|
delay_keep_alive(1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lcd_wizard_load() {
|
static void lcd_wizard_load() {
|
||||||
|
|
@ -3757,14 +3757,14 @@ void lcd_wizard(WizState state)
|
||||||
// Make sure EEPROM_WIZARD_ACTIVE is true if entering using different entry point
|
// Make sure EEPROM_WIZARD_ACTIVE is true if entering using different entry point
|
||||||
// other than WizState::Run - it is useful for debugging wizard.
|
// other than WizState::Run - it is useful for debugging wizard.
|
||||||
if (state != S::Run) eeprom_update_byte((uint8_t*)EEPROM_WIZARD_ACTIVE, 1);
|
if (state != S::Run) eeprom_update_byte((uint8_t*)EEPROM_WIZARD_ACTIVE, 1);
|
||||||
|
|
||||||
FORCE_BL_ON_START;
|
FORCE_BL_ON_START;
|
||||||
|
|
||||||
while (!end) {
|
while (!end) {
|
||||||
printf_P(PSTR("Wizard state: %d\n"), (uint8_t)state);
|
printf_P(PSTR("Wizard state: %d\n"), (uint8_t)state);
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case S::Run: //Run wizard?
|
case S::Run: //Run wizard?
|
||||||
|
|
||||||
// 2019-08-07 brutal hack - solving the "viper" situation.
|
// 2019-08-07 brutal hack - solving the "viper" situation.
|
||||||
// It is caused by the fact, that tmc2130_st_isr makes a crash detection before the printers really starts.
|
// It is caused by the fact, that tmc2130_st_isr makes a crash detection before the printers really starts.
|
||||||
// And thus it calles stop_and_save_print_to_ram which sets the saved_printing flag.
|
// And thus it calles stop_and_save_print_to_ram which sets the saved_printing flag.
|
||||||
|
|
@ -3773,9 +3773,9 @@ void lcd_wizard(WizState state)
|
||||||
// This primarily happens when the printer is new and parked in 0,0
|
// This primarily happens when the printer is new and parked in 0,0
|
||||||
// So any new printer will fail the first layer calibration unless being reset or the Stop function gets called.
|
// So any new printer will fail the first layer calibration unless being reset or the Stop function gets called.
|
||||||
// We really must find a way to prevent the crash from happening before the printer is started - that would be the correct solution.
|
// We really must find a way to prevent the crash from happening before the printer is started - that would be the correct solution.
|
||||||
// Btw. the flag may even trigger the viper situation on normal start this way and the user won't be able to find out why.
|
// Btw. the flag may even trigger the viper situation on normal start this way and the user won't be able to find out why.
|
||||||
saved_printing = false;
|
saved_printing = false;
|
||||||
|
|
||||||
if( eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE)==2){
|
if( eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE)==2){
|
||||||
// printer pre-assembled: finish remaining steps
|
// printer pre-assembled: finish remaining steps
|
||||||
lcd_show_fullscreen_message_and_wait_P(_T(MSG_WIZARD_WELCOME_SHIPPING));
|
lcd_show_fullscreen_message_and_wait_P(_T(MSG_WIZARD_WELCOME_SHIPPING));
|
||||||
|
|
@ -3914,9 +3914,9 @@ void lcd_wizard(WizState state)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FORCE_BL_ON_END;
|
FORCE_BL_ON_END;
|
||||||
|
|
||||||
const char *msg = NULL;
|
const char *msg = NULL;
|
||||||
printf_P(_N("Wizard end state: %d\n"), (uint8_t)state);
|
printf_P(_N("Wizard end state: %d\n"), (uint8_t)state);
|
||||||
switch (state) {
|
switch (state) {
|
||||||
|
|
@ -4010,9 +4010,9 @@ static void lcd_fsensor_actionNA_set(void)
|
||||||
static void lcd_fsensor_settings_menu() {
|
static void lcd_fsensor_settings_menu() {
|
||||||
MENU_BEGIN();
|
MENU_BEGIN();
|
||||||
MENU_ITEM_BACK_P(_T(MSG_BACK));
|
MENU_ITEM_BACK_P(_T(MSG_BACK));
|
||||||
|
|
||||||
MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR), fsensor.isEnabled() ? _T(MSG_ON) : _T(MSG_OFF), lcd_fsensor_enabled_set);
|
MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR), fsensor.isEnabled() ? _T(MSG_ON) : _T(MSG_OFF), lcd_fsensor_enabled_set);
|
||||||
|
|
||||||
if (fsensor.isEnabled()) {
|
if (fsensor.isEnabled()) {
|
||||||
if (fsensor.isError()) {
|
if (fsensor.isError()) {
|
||||||
MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_RUNOUT), _T(MSG_NA), fsensor_reinit);
|
MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_RUNOUT), _T(MSG_NA), fsensor_reinit);
|
||||||
|
|
@ -4028,7 +4028,7 @@ static void lcd_fsensor_settings_menu() {
|
||||||
MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_JAM_DETECTION), fsensor.getJamDetectionEnabled() ? _T(MSG_ON) : _T(MSG_OFF), lcd_fsensor_jam_detection_set);
|
MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_JAM_DETECTION), fsensor.getJamDetectionEnabled() ? _T(MSG_ON) : _T(MSG_OFF), lcd_fsensor_jam_detection_set);
|
||||||
#endif //defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125)
|
#endif //defined(FILAMENT_SENSOR) && (FILAMENT_SENSOR_TYPE == FSENSOR_PAT9125)
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(fsensor.getActionOnError()) {
|
switch(fsensor.getActionOnError()) {
|
||||||
case Filament_sensor::SensorActionOnError::_Continue:
|
case Filament_sensor::SensorActionOnError::_Continue:
|
||||||
MENU_ITEM_TOGGLE_P(_T(MSG_FS_ACTION), _T(MSG_CONTINUE_SHORT), lcd_fsensor_actionNA_set);
|
MENU_ITEM_TOGGLE_P(_T(MSG_FS_ACTION), _T(MSG_CONTINUE_SHORT), lcd_fsensor_actionNA_set);
|
||||||
|
|
@ -4040,7 +4040,7 @@ static void lcd_fsensor_settings_menu() {
|
||||||
lcd_fsensor_actionNA_set();
|
lcd_fsensor_actionNA_set();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MENU_END();
|
MENU_END();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -4091,15 +4091,31 @@ static void SETTINGS_SILENT_MODE()
|
||||||
if (!farm_mode)
|
if (!farm_mode)
|
||||||
{ // dont show in menu if we are in farm mode
|
{ // dont show in menu if we are in farm mode
|
||||||
#ifdef TMC2130
|
#ifdef TMC2130
|
||||||
if (eeprom_read_byte((uint8_t *)EEPROM_SILENT) == SILENT_MODE_NORMAL)
|
uint8_t eeprom_mode = eeprom_read_byte((uint8_t*)EEPROM_SILENT);
|
||||||
|
bool bDesync = tmc2130_mode ^ eeprom_mode;
|
||||||
|
if (eeprom_mode == SILENT_MODE_NORMAL)
|
||||||
{
|
{
|
||||||
|
if (bDesync)
|
||||||
|
{
|
||||||
|
MENU_ITEM_TOGGLE_P(_T(MSG_MODE), PSTR("M915"), lcd_silent_mode_set);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_NORMAL), lcd_silent_mode_set);
|
MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_NORMAL), lcd_silent_mode_set);
|
||||||
MENU_ITEM_TOGGLE_P(_T(MSG_CRASHDETECT), lcd_crash_detect_enabled() ? _T(MSG_ON) : _T(MSG_OFF), crash_mode_switch);
|
}
|
||||||
|
MENU_ITEM_TOGGLE_P(_T(MSG_CRASHDETECT), lcd_crash_detect_enabled() ? _T(MSG_ON) : _T(MSG_OFF), crash_mode_switch);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (bDesync)
|
||||||
|
{
|
||||||
|
MENU_ITEM_TOGGLE_P(_T(MSG_MODE), PSTR("M914") , lcd_silent_mode_set);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_STEALTH), lcd_silent_mode_set);
|
MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_STEALTH), lcd_silent_mode_set);
|
||||||
MENU_ITEM_TOGGLE_P(_T(MSG_CRASHDETECT), NULL, lcd_crash_mode_info);
|
}
|
||||||
|
MENU_ITEM_TOGGLE_P(_T(MSG_CRASHDETECT), NULL, lcd_crash_mode_info);
|
||||||
}
|
}
|
||||||
#else // TMC2130
|
#else // TMC2130
|
||||||
switch (eeprom_read_byte((uint8_t *)EEPROM_SILENT))
|
switch (eeprom_read_byte((uint8_t *)EEPROM_SILENT))
|
||||||
|
|
@ -4394,7 +4410,7 @@ void lcd_hw_setup_menu(void) // can not be "static"
|
||||||
//! The SuperPINDA is detected when the PINDA temp is below its defined limit.
|
//! The SuperPINDA is detected when the PINDA temp is below its defined limit.
|
||||||
//! This works well on the EINSY board but not on the miniRAMBo board as
|
//! This works well on the EINSY board but not on the miniRAMBo board as
|
||||||
//! as a disconnected SuperPINDA will show higher temps compared to an EINSY board.
|
//! as a disconnected SuperPINDA will show higher temps compared to an EINSY board.
|
||||||
//!
|
//!
|
||||||
//! This menu allows the user to en-/disable the SuperPINDA manualy
|
//! This menu allows the user to en-/disable the SuperPINDA manualy
|
||||||
MENU_ITEM_TOGGLE_P(_N("SuperPINDA"), eeprom_read_byte((uint8_t *)EEPROM_PINDA_TEMP_COMPENSATION) ? _T(MSG_YES) : _T(MSG_NO), lcd_pinda_temp_compensation_toggle);
|
MENU_ITEM_TOGGLE_P(_N("SuperPINDA"), eeprom_read_byte((uint8_t *)EEPROM_PINDA_TEMP_COMPENSATION) ? _T(MSG_YES) : _T(MSG_NO), lcd_pinda_temp_compensation_toggle);
|
||||||
#endif //PINDA_TEMP_COMP
|
#endif //PINDA_TEMP_COMP
|
||||||
|
|
@ -4581,7 +4597,7 @@ uint8_t choose_menu_P(const char *header, const char *item, const char *last_ite
|
||||||
const uint8_t item_len = item?strlen_P(item):0;
|
const uint8_t item_len = item?strlen_P(item):0;
|
||||||
int8_t first = 0;
|
int8_t first = 0;
|
||||||
int8_t cursor_pos = 1;
|
int8_t cursor_pos = 1;
|
||||||
|
|
||||||
lcd_clear();
|
lcd_clear();
|
||||||
|
|
||||||
KEEPALIVE_STATE(PAUSED_FOR_USER);
|
KEEPALIVE_STATE(PAUSED_FOR_USER);
|
||||||
|
|
@ -4605,7 +4621,7 @@ uint8_t choose_menu_P(const char *header, const char *item, const char *last_ite
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cursor_pos > 3)
|
if (cursor_pos > 3)
|
||||||
{
|
{
|
||||||
cursor_pos = 3;
|
cursor_pos = 3;
|
||||||
if (first < items_no - 3)
|
if (first < items_no - 3)
|
||||||
{
|
{
|
||||||
|
|
@ -4733,7 +4749,7 @@ static void lcd_disable_farm_mode()
|
||||||
}
|
}
|
||||||
lcd_update_enable(true);
|
lcd_update_enable(true);
|
||||||
lcd_draw_update = 2;
|
lcd_draw_update = 2;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void load_all_wrapper(){
|
static inline void load_all_wrapper(){
|
||||||
|
|
@ -5090,8 +5106,8 @@ static void lcd_sheet_menu()
|
||||||
//!
|
//!
|
||||||
//! | recover print | ifdef TMC2130_DEBUG
|
//! | recover print | ifdef TMC2130_DEBUG
|
||||||
//! | power panic | ifdef TMC2130_DEBUG
|
//! | power panic | ifdef TMC2130_DEBUG
|
||||||
//!
|
//!
|
||||||
//! | Live adjust Z | printing + Z low
|
//! | Live adjust Z | printing + Z low
|
||||||
//!
|
//!
|
||||||
//! | Change filament | farm mode
|
//! | Change filament | farm mode
|
||||||
//!
|
//!
|
||||||
|
|
@ -5111,7 +5127,7 @@ static void lcd_sheet_menu()
|
||||||
//! | Eject from MMU | not printing + mmu or paused
|
//! | Eject from MMU | not printing + mmu or paused
|
||||||
//! | Cut filament | not printing + mmu or paused + cut atctive
|
//! | Cut filament | not printing + mmu or paused + cut atctive
|
||||||
//! | Settings | not printing or paused
|
//! | Settings | not printing or paused
|
||||||
//! | Calibration | not printing
|
//! | Calibration | not printing
|
||||||
//! | Statistics | not printing
|
//! | Statistics | not printing
|
||||||
//! | Fail stats | allways
|
//! | Fail stats | allways
|
||||||
//! | Fail stats MMU | mmu
|
//! | Fail stats MMU | mmu
|
||||||
|
|
@ -5127,12 +5143,12 @@ static void lcd_main_menu()
|
||||||
|
|
||||||
MENU_ITEM_BACK_P(_T(MSG_INFO_SCREEN));
|
MENU_ITEM_BACK_P(_T(MSG_INFO_SCREEN));
|
||||||
|
|
||||||
#ifdef RESUME_DEBUG
|
#ifdef RESUME_DEBUG
|
||||||
if (!saved_printing)
|
if (!saved_printing)
|
||||||
MENU_ITEM_FUNCTION_P(PSTR("tst - Save"), lcd_menu_test_save);
|
MENU_ITEM_FUNCTION_P(PSTR("tst - Save"), lcd_menu_test_save);
|
||||||
else
|
else
|
||||||
MENU_ITEM_FUNCTION_P(PSTR("tst - Restore"), lcd_menu_test_restore);
|
MENU_ITEM_FUNCTION_P(PSTR("tst - Restore"), lcd_menu_test_restore);
|
||||||
#endif //RESUME_DEBUG
|
#endif //RESUME_DEBUG
|
||||||
|
|
||||||
#ifdef TMC2130_DEBUG
|
#ifdef TMC2130_DEBUG
|
||||||
MENU_ITEM_FUNCTION_P(PSTR("recover print"), recover_print);
|
MENU_ITEM_FUNCTION_P(PSTR("recover print"), recover_print);
|
||||||
|
|
@ -5282,7 +5298,7 @@ void stepper_timer_overflow() {
|
||||||
|
|
||||||
|
|
||||||
static void lcd_colorprint_change() {
|
static void lcd_colorprint_change() {
|
||||||
|
|
||||||
enquecommand_P(MSG_M600);
|
enquecommand_P(MSG_M600);
|
||||||
|
|
||||||
custom_message_type = CustomMsg::FilamentLoading; //just print status message
|
custom_message_type = CustomMsg::FilamentLoading; //just print status message
|
||||||
|
|
@ -5434,7 +5450,7 @@ static void mbl_probe_nr_toggle() {
|
||||||
|
|
||||||
static void lcd_mesh_bed_leveling_settings()
|
static void lcd_mesh_bed_leveling_settings()
|
||||||
{
|
{
|
||||||
|
|
||||||
bool magnet_elimination = (eeprom_read_byte((uint8_t*)EEPROM_MBL_MAGNET_ELIMINATION) > 0);
|
bool magnet_elimination = (eeprom_read_byte((uint8_t*)EEPROM_MBL_MAGNET_ELIMINATION) > 0);
|
||||||
uint8_t points_nr = eeprom_read_byte((uint8_t*)EEPROM_MBL_POINTS_NR);
|
uint8_t points_nr = eeprom_read_byte((uint8_t*)EEPROM_MBL_POINTS_NR);
|
||||||
char sToggle[4]; //enough for nxn format
|
char sToggle[4]; //enough for nxn format
|
||||||
|
|
@ -5472,13 +5488,13 @@ static void lcd_backlight_menu()
|
||||||
ON_MENU_LEAVE(
|
ON_MENU_LEAVE(
|
||||||
backlight_save();
|
backlight_save();
|
||||||
);
|
);
|
||||||
|
|
||||||
MENU_ITEM_BACK_P(_T(MSG_BACK));
|
MENU_ITEM_BACK_P(_T(MSG_BACK));
|
||||||
MENU_ITEM_EDIT_int3_P(_T(MSG_BL_HIGH), &backlightLevel_HIGH, backlightLevel_LOW, 255);
|
MENU_ITEM_EDIT_int3_P(_T(MSG_BL_HIGH), &backlightLevel_HIGH, backlightLevel_LOW, 255);
|
||||||
MENU_ITEM_EDIT_int3_P(_T(MSG_BL_LOW), &backlightLevel_LOW, 0, backlightLevel_HIGH);
|
MENU_ITEM_EDIT_int3_P(_T(MSG_BL_LOW), &backlightLevel_LOW, 0, backlightLevel_HIGH);
|
||||||
MENU_ITEM_TOGGLE_P(_T(MSG_MODE), ((backlightMode==BACKLIGHT_MODE_BRIGHT) ? _T(MSG_BRIGHT) : ((backlightMode==BACKLIGHT_MODE_DIM) ? _T(MSG_DIM) : _T(MSG_AUTO))), backlight_mode_toggle);
|
MENU_ITEM_TOGGLE_P(_T(MSG_MODE), ((backlightMode==BACKLIGHT_MODE_BRIGHT) ? _T(MSG_BRIGHT) : ((backlightMode==BACKLIGHT_MODE_DIM) ? _T(MSG_DIM) : _T(MSG_AUTO))), backlight_mode_toggle);
|
||||||
MENU_ITEM_EDIT_int3_P(_T(MSG_TIMEOUT), &backlightTimer_period, 1, 999);
|
MENU_ITEM_EDIT_int3_P(_T(MSG_TIMEOUT), &backlightTimer_period, 1, 999);
|
||||||
|
|
||||||
MENU_END();
|
MENU_END();
|
||||||
}
|
}
|
||||||
#endif //LCD_BL_PIN
|
#endif //LCD_BL_PIN
|
||||||
|
|
@ -5636,7 +5652,7 @@ void lcd_sdcard_menu()
|
||||||
} _menu_data_sdcard_t;
|
} _menu_data_sdcard_t;
|
||||||
static_assert(sizeof(menu_data)>= sizeof(_menu_data_sdcard_t),"_menu_data_sdcard_t doesn't fit into menu_data");
|
static_assert(sizeof(menu_data)>= sizeof(_menu_data_sdcard_t),"_menu_data_sdcard_t doesn't fit into menu_data");
|
||||||
_menu_data_sdcard_t* _md = (_menu_data_sdcard_t*)&(menu_data[0]);
|
_menu_data_sdcard_t* _md = (_menu_data_sdcard_t*)&(menu_data[0]);
|
||||||
|
|
||||||
switch(_md->menuState)
|
switch(_md->menuState)
|
||||||
{
|
{
|
||||||
case _uninitialized: //Initialize menu data
|
case _uninitialized: //Initialize menu data
|
||||||
|
|
@ -5671,12 +5687,12 @@ void lcd_sdcard_menu()
|
||||||
}
|
}
|
||||||
if (lcd_draw_update == 0 && !lcd_clicked())
|
if (lcd_draw_update == 0 && !lcd_clicked())
|
||||||
return; // nothing to do (so don't thrash the SD card)
|
return; // nothing to do (so don't thrash the SD card)
|
||||||
|
|
||||||
_md->row = -1; // assume that no SD file/dir is currently selected. Once they are rendered, it will be changed to the correct row for the _scrolling state.
|
_md->row = -1; // assume that no SD file/dir is currently selected. Once they are rendered, it will be changed to the correct row for the _scrolling state.
|
||||||
|
|
||||||
//if we reached this point it means that the encoder moved or clicked or the state is being switched. Reset the scrollTimer.
|
//if we reached this point it means that the encoder moved or clicked or the state is being switched. Reset the scrollTimer.
|
||||||
_md->lcd_scrollTimer.start();
|
_md->lcd_scrollTimer.start();
|
||||||
|
|
||||||
MENU_BEGIN();
|
MENU_BEGIN();
|
||||||
MENU_ITEM_BACK_P(_T(bMain?MSG_MAIN:MSG_BACK)); // i.e. default menu-item / menu-item after card insertion
|
MENU_ITEM_BACK_P(_T(bMain?MSG_MAIN:MSG_BACK)); // i.e. default menu-item / menu-item after card insertion
|
||||||
card.getWorkDirName();
|
card.getWorkDirName();
|
||||||
|
|
@ -5704,7 +5720,7 @@ void lcd_sdcard_menu()
|
||||||
#endif
|
#endif
|
||||||
if (lcd_encoder == menu_item) //If the file is selected.
|
if (lcd_encoder == menu_item) //If the file is selected.
|
||||||
{
|
{
|
||||||
|
|
||||||
_md->selectedFileID = i;
|
_md->selectedFileID = i;
|
||||||
_md->isDir = card.filenameIsDir;
|
_md->isDir = card.filenameIsDir;
|
||||||
_md->row = menu_row;
|
_md->row = menu_row;
|
||||||
|
|
@ -5722,7 +5738,7 @@ void lcd_sdcard_menu()
|
||||||
{
|
{
|
||||||
// LCD_CLICKED is used so that the click event is later consumed by the _standard state.
|
// LCD_CLICKED is used so that the click event is later consumed by the _standard state.
|
||||||
const bool rewindFlag = LCD_CLICKED || lcd_draw_update; //flag that says whether the menu should return to _standard state.
|
const bool rewindFlag = LCD_CLICKED || lcd_draw_update; //flag that says whether the menu should return to _standard state.
|
||||||
|
|
||||||
if (_md->scrollPointer == NULL)
|
if (_md->scrollPointer == NULL)
|
||||||
{
|
{
|
||||||
//load filename to memory.
|
//load filename to memory.
|
||||||
|
|
@ -5733,7 +5749,7 @@ void lcd_sdcard_menu()
|
||||||
#endif
|
#endif
|
||||||
_md->scrollPointer = (card.longFilename[0] == '\0') ? card.filename : card.longFilename;
|
_md->scrollPointer = (card.longFilename[0] == '\0') ? card.filename : card.longFilename;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rewindFlag)
|
if (rewindFlag)
|
||||||
_md->offset = 0; //redraw once again from the beginning.
|
_md->offset = 0; //redraw once again from the beginning.
|
||||||
if (_md->lcd_scrollTimer.expired(300) || rewindFlag)
|
if (_md->lcd_scrollTimer.expired(300) || rewindFlag)
|
||||||
|
|
@ -5773,13 +5789,13 @@ void lcd_belttest()
|
||||||
lcd_clear();
|
lcd_clear();
|
||||||
// Belttest requires high power mode. Enable it.
|
// Belttest requires high power mode. Enable it.
|
||||||
FORCE_HIGH_POWER_START;
|
FORCE_HIGH_POWER_START;
|
||||||
|
|
||||||
uint16_t X = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_X));
|
uint16_t X = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_X));
|
||||||
uint16_t Y = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_Y));
|
uint16_t Y = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_Y));
|
||||||
lcd_puts_P(_T(MSG_CHECKING_X));
|
lcd_puts_P(_T(MSG_CHECKING_X));
|
||||||
lcd_set_cursor(0,1), lcd_printf_P(PSTR("X: %u -> ..."),X);
|
lcd_set_cursor(0,1), lcd_printf_P(PSTR("X: %u -> ..."),X);
|
||||||
KEEPALIVE_STATE(IN_HANDLER);
|
KEEPALIVE_STATE(IN_HANDLER);
|
||||||
|
|
||||||
// N.B: it doesn't make sense to handle !lcd_selfcheck...() because selftest_sg throws its own error screen
|
// N.B: it doesn't make sense to handle !lcd_selfcheck...() because selftest_sg throws its own error screen
|
||||||
// that clobbers ours, with more info than we could provide. So on fail we just fall through to take us back to status.
|
// that clobbers ours, with more info than we could provide. So on fail we just fall through to take us back to status.
|
||||||
if (lcd_selfcheck_axis_sg(X_AXIS)){
|
if (lcd_selfcheck_axis_sg(X_AXIS)){
|
||||||
|
|
@ -5797,7 +5813,7 @@ void lcd_belttest()
|
||||||
lcd_wait_for_click_delay(10);
|
lcd_wait_for_click_delay(10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FORCE_HIGH_POWER_END;
|
FORCE_HIGH_POWER_END;
|
||||||
KEEPALIVE_STATE(NOT_BUSY);
|
KEEPALIVE_STATE(NOT_BUSY);
|
||||||
}
|
}
|
||||||
|
|
@ -5815,7 +5831,7 @@ static bool lcd_selftest_IRsensor(bool bStandalone)
|
||||||
IR_sensor_analog::SensorRevision oldSensorRevision = fsensor.getSensorRevision();
|
IR_sensor_analog::SensorRevision oldSensorRevision = fsensor.getSensorRevision();
|
||||||
IR_sensor_analog::SensorRevision newSensorRevision;
|
IR_sensor_analog::SensorRevision newSensorRevision;
|
||||||
uint16_t volt_IR_int = fsensor.getVoltRaw();
|
uint16_t volt_IR_int = fsensor.getVoltRaw();
|
||||||
|
|
||||||
newSensorRevision = (volt_IR_int < fsensor.IRsensor_Hopen_TRESHOLD) ? IR_sensor_analog::SensorRevision::_Rev04 : IR_sensor_analog::SensorRevision::_Old;
|
newSensorRevision = (volt_IR_int < fsensor.IRsensor_Hopen_TRESHOLD) ? IR_sensor_analog::SensorRevision::_Rev04 : IR_sensor_analog::SensorRevision::_Old;
|
||||||
printf_P(PSTR("Measured filament sensor high level: %4.2fV\n"), Raw2Voltage(volt_IR_int) );
|
printf_P(PSTR("Measured filament sensor high level: %4.2fV\n"), Raw2Voltage(volt_IR_int) );
|
||||||
if(volt_IR_int < fsensor.IRsensor_Hmin_TRESHOLD){
|
if(volt_IR_int < fsensor.IRsensor_Hmin_TRESHOLD){
|
||||||
|
|
@ -6063,7 +6079,7 @@ bool lcd_selftest()
|
||||||
{
|
{
|
||||||
#if (FILAMENT_SENSOR_TYPE == FSENSOR_IR) || (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG)
|
#if (FILAMENT_SENSOR_TYPE == FSENSOR_IR) || (FILAMENT_SENSOR_TYPE == FSENSOR_IR_ANALOG)
|
||||||
if (MMU2::mmu2.Enabled())
|
if (MMU2::mmu2.Enabled())
|
||||||
{
|
{
|
||||||
_progress = lcd_selftest_screen(TestScreen::Fsensor, _progress, 3, true, 2000); //check filaments sensor
|
_progress = lcd_selftest_screen(TestScreen::Fsensor, _progress, 3, true, 2000); //check filaments sensor
|
||||||
_result = selftest_irsensor();
|
_result = selftest_irsensor();
|
||||||
if (_result)
|
if (_result)
|
||||||
|
|
@ -6095,7 +6111,7 @@ bool lcd_selftest()
|
||||||
lcd_reset_alert_level();
|
lcd_reset_alert_level();
|
||||||
enquecommand_P(MSG_M84);
|
enquecommand_P(MSG_M84);
|
||||||
lcd_update_enable(true);
|
lcd_update_enable(true);
|
||||||
|
|
||||||
if (_result)
|
if (_result)
|
||||||
{
|
{
|
||||||
calibration_status_set(CALIBRATION_STATUS_SELFTEST);
|
calibration_status_set(CALIBRATION_STATUS_SELFTEST);
|
||||||
|
|
@ -6109,9 +6125,9 @@ bool lcd_selftest()
|
||||||
#ifdef TMC2130
|
#ifdef TMC2130
|
||||||
FORCE_HIGH_POWER_END;
|
FORCE_HIGH_POWER_END;
|
||||||
#endif // TMC2130
|
#endif // TMC2130
|
||||||
|
|
||||||
FORCE_BL_ON_END;
|
FORCE_BL_ON_END;
|
||||||
|
|
||||||
KEEPALIVE_STATE(NOT_BUSY);
|
KEEPALIVE_STATE(NOT_BUSY);
|
||||||
return(_result);
|
return(_result);
|
||||||
}
|
}
|
||||||
|
|
@ -6126,7 +6142,7 @@ static void reset_crash_det(uint8_t axis) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool lcd_selfcheck_axis_sg(uint8_t axis) {
|
static bool lcd_selfcheck_axis_sg(uint8_t axis) {
|
||||||
// each axis length is measured twice
|
// each axis length is measured twice
|
||||||
float axis_length, current_position_init, current_position_final;
|
float axis_length, current_position_init, current_position_final;
|
||||||
float measured_axis_length[2];
|
float measured_axis_length[2];
|
||||||
float margin = 60;
|
float margin = 60;
|
||||||
|
|
@ -6145,12 +6161,12 @@ static bool lcd_selfcheck_axis_sg(uint8_t axis) {
|
||||||
raise_z_above(MESH_HOME_Z_SEARCH);
|
raise_z_above(MESH_HOME_Z_SEARCH);
|
||||||
tmc2130_home_enter(1 << axis);
|
tmc2130_home_enter(1 << axis);
|
||||||
|
|
||||||
// first axis length measurement begin
|
// first axis length measurement begin
|
||||||
|
|
||||||
current_position[axis] -= (axis_length + margin);
|
current_position[axis] -= (axis_length + margin);
|
||||||
plan_buffer_line_curposXYZE(manual_feedrate[0] / 60);
|
plan_buffer_line_curposXYZE(manual_feedrate[0] / 60);
|
||||||
|
|
||||||
|
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
|
|
||||||
tmc2130_sg_measure_start(axis);
|
tmc2130_sg_measure_start(axis);
|
||||||
|
|
@ -6174,16 +6190,16 @@ static bool lcd_selfcheck_axis_sg(uint8_t axis) {
|
||||||
measured_axis_length[0] = fabs(current_position_final - current_position_init);
|
measured_axis_length[0] = fabs(current_position_final - current_position_init);
|
||||||
|
|
||||||
|
|
||||||
// first measurement end and second measurement begin
|
// first measurement end and second measurement begin
|
||||||
|
|
||||||
|
|
||||||
current_position[axis] -= margin;
|
current_position[axis] -= margin;
|
||||||
plan_buffer_line_curposXYZE(manual_feedrate[0] / 60);
|
plan_buffer_line_curposXYZE(manual_feedrate[0] / 60);
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
|
|
||||||
current_position[axis] -= (axis_length + margin);
|
current_position[axis] -= (axis_length + margin);
|
||||||
plan_buffer_line_curposXYZE(manual_feedrate[0] / 60);
|
plan_buffer_line_curposXYZE(manual_feedrate[0] / 60);
|
||||||
|
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
|
|
||||||
current_position_init = st_get_position_mm(axis);
|
current_position_init = st_get_position_mm(axis);
|
||||||
|
|
@ -6216,7 +6232,7 @@ static bool lcd_selfcheck_axis_sg(uint8_t axis) {
|
||||||
}
|
}
|
||||||
|
|
||||||
printf_P(_N("Axis length difference:%.3f\n"), fabs(measured_axis_length[0] - measured_axis_length[1]));
|
printf_P(_N("Axis length difference:%.3f\n"), fabs(measured_axis_length[0] - measured_axis_length[1]));
|
||||||
|
|
||||||
if (fabs(measured_axis_length[0] - measured_axis_length[1]) > 1) { //check if difference between first and second measurement is low
|
if (fabs(measured_axis_length[0] - measured_axis_length[1]) > 1) { //check if difference between first and second measurement is low
|
||||||
//loose pulleys
|
//loose pulleys
|
||||||
const char *_error_1;
|
const char *_error_1;
|
||||||
|
|
@ -6344,7 +6360,7 @@ static bool lcd_selfcheck_pulleys(int axis)
|
||||||
refresh_cmd_timeout();
|
refresh_cmd_timeout();
|
||||||
manage_inactivity(true);
|
manage_inactivity(true);
|
||||||
|
|
||||||
if (axis == 0) move = 50; //X_AXIS
|
if (axis == 0) move = 50; //X_AXIS
|
||||||
else move = 50; //Y_AXIS
|
else move = 50; //Y_AXIS
|
||||||
|
|
||||||
current_position_init = current_position[axis];
|
current_position_init = current_position[axis];
|
||||||
|
|
@ -6358,7 +6374,7 @@ static bool lcd_selfcheck_pulleys(int axis)
|
||||||
plan_buffer_line_curposXYZE(200);
|
plan_buffer_line_curposXYZE(200);
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
if (SilentModeMenu != SILENT_MODE_OFF) st_current_set(0, tmp_motor[0]); //set back to normal operation currents
|
if (SilentModeMenu != SILENT_MODE_OFF) st_current_set(0, tmp_motor[0]); //set back to normal operation currents
|
||||||
else st_current_set(0, tmp_motor_loud[0]); //set motor current back
|
else st_current_set(0, tmp_motor_loud[0]); //set motor current back
|
||||||
current_position[axis] = current_position[axis] - move;
|
current_position[axis] = current_position[axis] - move;
|
||||||
plan_buffer_line_curposXYZE(50);
|
plan_buffer_line_curposXYZE(50);
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
|
|
@ -6514,9 +6530,9 @@ static bool lcd_selfcheck_check_heater(bool _isbed)
|
||||||
static void lcd_selftest_error(TestError testError, const char *_error_1, const char *_error_2)
|
static void lcd_selftest_error(TestError testError, const char *_error_1, const char *_error_2)
|
||||||
{
|
{
|
||||||
lcd_beeper_quick_feedback();
|
lcd_beeper_quick_feedback();
|
||||||
|
|
||||||
FORCE_BL_ON_END;
|
FORCE_BL_ON_END;
|
||||||
|
|
||||||
target_temperature[0] = 0;
|
target_temperature[0] = 0;
|
||||||
target_temperature_bed = 0;
|
target_temperature_bed = 0;
|
||||||
manage_heater();
|
manage_heater();
|
||||||
|
|
@ -6905,9 +6921,9 @@ static bool check_file(const char* filename) {
|
||||||
manage_heater();
|
manage_heater();
|
||||||
#endif // CMDBUFFER_DEBUG
|
#endif // CMDBUFFER_DEBUG
|
||||||
}
|
}
|
||||||
|
|
||||||
menu_progressbar_finish();
|
menu_progressbar_finish();
|
||||||
|
|
||||||
cmdqueue_serial_disabled = false;
|
cmdqueue_serial_disabled = false;
|
||||||
card.printingHasFinished();
|
card.printingHasFinished();
|
||||||
|
|
||||||
|
|
@ -6948,7 +6964,7 @@ static void menu_action_sdfile(const char* filename)
|
||||||
eeprom_write_byte((uint8_t*)EEPROM_DIRS + j + 8 * i, card.dir_names[i][j]);
|
eeprom_write_byte((uint8_t*)EEPROM_DIRS + j + 8 * i, card.dir_names[i][j]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//filename is just a pointer to card.filename, which changes everytime you try to open a file by filename. So you can't use filename directly
|
//filename is just a pointer to card.filename, which changes everytime you try to open a file by filename. So you can't use filename directly
|
||||||
//to open a file. Instead, the cached filename in cmd is used as that one is static for the whole lifetime of this function.
|
//to open a file. Instead, the cached filename in cmd is used as that one is static for the whole lifetime of this function.
|
||||||
if (!check_file(cmd + 4)) {
|
if (!check_file(cmd + 4)) {
|
||||||
|
|
@ -7174,7 +7190,7 @@ void menu_lcd_lcdupdate_func(void)
|
||||||
// and instead show the submenu title 'No SD card'.
|
// and instead show the submenu title 'No SD card'.
|
||||||
//
|
//
|
||||||
// 2. 'No SD card': When the user inserts the SD card we want
|
// 2. 'No SD card': When the user inserts the SD card we want
|
||||||
// to back out of this submenu. Not only to show
|
// to back out of this submenu. Not only to show
|
||||||
// 'Print from SD' submenu title but also because the user
|
// 'Print from SD' submenu title but also because the user
|
||||||
// will be prompted with another menu with the sorted list of files.
|
// will be prompted with another menu with the sorted list of files.
|
||||||
// Without backing out of the menu, the list will appear empty and
|
// Without backing out of the menu, the list will appear empty and
|
||||||
|
|
@ -7282,7 +7298,7 @@ void UserECool_toggle(){
|
||||||
bool UserECoolEnabled(){
|
bool UserECoolEnabled(){
|
||||||
// We enable E-cool mode for non-farm prints IFF the experimental menu is visible AND the EEPROM_ECOOL variable has
|
// We enable E-cool mode for non-farm prints IFF the experimental menu is visible AND the EEPROM_ECOOL variable has
|
||||||
// a value of the universal answer to all problems of the universe
|
// a value of the universal answer to all problems of the universe
|
||||||
return ( eeprom_read_byte((uint8_t *)EEPROM_ECOOL_ENABLE) == EEPROM_ECOOL_MAGIC_NUMBER )
|
return ( eeprom_read_byte((uint8_t *)EEPROM_ECOOL_ENABLE) == EEPROM_ECOOL_MAGIC_NUMBER )
|
||||||
&& ( eeprom_read_byte((uint8_t *)EEPROM_EXPERIMENTAL_VISIBILITY) == 1 );
|
&& ( eeprom_read_byte((uint8_t *)EEPROM_EXPERIMENTAL_VISIBILITY) == 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -7307,15 +7323,15 @@ void lcd_experimental_menu()
|
||||||
#ifdef EXTRUDER_ALTFAN_DETECT
|
#ifdef EXTRUDER_ALTFAN_DETECT
|
||||||
MENU_ITEM_TOGGLE_P(_N("ALTFAN det."), altfanOverride_get()?_T(MSG_OFF):_T(MSG_ON), altfanOverride_toggle);////MSG_MENU_ALTFAN c=18
|
MENU_ITEM_TOGGLE_P(_N("ALTFAN det."), altfanOverride_get()?_T(MSG_OFF):_T(MSG_ON), altfanOverride_toggle);////MSG_MENU_ALTFAN c=18
|
||||||
#endif //EXTRUDER_ALTFAN_DETECT
|
#endif //EXTRUDER_ALTFAN_DETECT
|
||||||
|
|
||||||
#ifdef TMC2130
|
#ifdef TMC2130
|
||||||
MENU_ITEM_TOGGLE_P(_N("E-cool mode"), UserECoolEnabled()?_T(MSG_ON):_T(MSG_OFF), UserECool_toggle);////MSG_MENU_ECOOL c=18
|
MENU_ITEM_TOGGLE_P(_N("E-cool mode"), UserECoolEnabled()?_T(MSG_ON):_T(MSG_OFF), UserECool_toggle);////MSG_MENU_ECOOL c=18
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef DEBUG_PULLUP_CRASH
|
#ifdef DEBUG_PULLUP_CRASH
|
||||||
MENU_ITEM_FUNCTION_P(_N("Test Pullup Crash"), TestPullupCrash);
|
MENU_ITEM_FUNCTION_P(_N("Test Pullup Crash"), TestPullupCrash);
|
||||||
#endif // DEBUG_PULLUP_CRASH
|
#endif // DEBUG_PULLUP_CRASH
|
||||||
|
|
||||||
#ifdef PRUSA_SN_SUPPORT
|
#ifdef PRUSA_SN_SUPPORT
|
||||||
MENU_ITEM_FUNCTION_P(_N("Fake serial number"), WorkaroundPrusaSN);////MSG_WORKAROUND_PRUSA_SN c=18
|
MENU_ITEM_FUNCTION_P(_N("Fake serial number"), WorkaroundPrusaSN);////MSG_WORKAROUND_PRUSA_SN c=18
|
||||||
#endif //PRUSA_SN_SUPPORT
|
#endif //PRUSA_SN_SUPPORT
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue