Fixed conflict with force_z, added P flags

This commit is contained in:
vintagepc 2020-02-22 10:02:07 -05:00 committed by VintagePC
parent 487c7d63e1
commit 7214584723
3 changed files with 56 additions and 14 deletions

View File

@ -173,6 +173,7 @@ void manage_inactivity(bool ignore_stepper_queue=false);
#define enable_z() poweron_z()
#define disable_z() poweroff_z()
#else
extern bool bEnableForce_z; // Used by ultralcd stealth toggle
void init_force_z();
void check_force_z();
void enable_force_z();

View File

@ -8230,30 +8230,53 @@ Sigma_Exit:
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>
Updates EEPROM only if "P" is given, otherwise temporary (lasts until reset or motor idle timeout)
#### Usage
M914 [P]
#### Parameters
- `P` - Make the mode change permanent (write to EEPROM)
*/
#ifdef TMC2130
case 914:
{
printf_P(_n("tmc2130mode/smm/eep: %d %d %d\n"),tmc2130_mode,SilentModeMenu,eeprom_read_byte((uint8_t*)EEPROM_SILENT));
if (tmc2130_mode != TMC2130_MODE_NORMAL)
if (code_seen('P'))
{
eeprom_update_byte((unsigned char *)EEPROM_SILENT, SILENT_MODE_NORMAL);
SilentModeMenu = SILENT_MODE_NORMAL;
}
//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 != TMC2130_MODE_NORMAL)
{
tmc2130_mode = TMC2130_MODE_NORMAL;
update_mode_profile();
tmc2130_init(TMCInitParams(false, FarmOrUserECool()));
printf_P(_n("tmc2130mode/smm/eep: %d %d %d\n"),tmc2130_mode,SilentModeMenu,eeprom_read_byte((uint8_t*)EEPROM_SILENT));
update_mode_profile();
tmc2130_init(TMCInitParams(false, FarmOrUserECool()));
//printf_P(_n("tmc2130mode/smm/eep: %d %d %d\n"),tmc2130_mode,SilentModeMenu,eeprom_read_byte((uint8_t*)EEPROM_SILENT));
}
}
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>
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]
#### Parameters
- `P` - Make the mode change permanent (write to EEPROM)
*/
case 915:
{
printf_P(_n("tmc2130mode/smm/eep: %d %d %d\n"),tmc2130_mode,SilentModeMenu,eeprom_read_byte((uint8_t*)EEPROM_SILENT));
if (code_seen('P'))
{
eeprom_update_byte((unsigned char *)EEPROM_SILENT, SILENT_MODE_STEALTH);
SilentModeMenu = SILENT_MODE_STEALTH;
}
//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 != TMC2130_MODE_SILENT)
{ // This is basically the equivalent of force_high_power_mode for silent mode.
st_synchronize();
@ -8261,7 +8284,7 @@ Sigma_Exit:
tmc2130_mode = TMC2130_MODE_SILENT;
update_mode_profile();
tmc2130_init(TMCInitParams(false, FarmOrUserECool()));
printf_P(_n("tmc2130mode/smm/eep: %d %d %d\n"),tmc2130_mode,SilentModeMenu,eeprom_read_byte((uint8_t*)EEPROM_SILENT));
//printf_P(_n("tmc2130mode/smm/eep: %d %d %d\n"),tmc2130_mode,SilentModeMenu,eeprom_read_byte((uint8_t*)EEPROM_SILENT));
st_reset_timer();
sei();
}

View File

@ -4218,16 +4218,25 @@ static void mmu_reset()
}
#ifdef TMC2130
#ifdef PSU_Delta // This setup changes to "stealth" mode on timeout, need to check for that.
#define SILENT_DESYNC_IF if (bDesync && bEnableForce_z)
#else
#define SILENT_DESYNC_IF if (bDesync)
#endif
#define SETTINGS_SILENT_MODE \
do\
{\
if(!farm_mode)\
{\
/* M914/5 do not update eeprom, only tmc2130_mode */\
/* M914/5 do not update SilentModeMenu, only tmc2130_mode */\
bool bDesync = tmc2130_mode ^ eeprom_read_byte((uint8_t*)EEPROM_SILENT);\
if (SilentModeMenu == SILENT_MODE_NORMAL) \
{\
if (bDesync)\
SILENT_DESYNC_IF\
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);\
@ -4238,7 +4247,7 @@ do\
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);\
}\
}\
if (SilentModeMenu == SILENT_MODE_NORMAL)\
{\
if (lcd_crash_detect_enabled()) MENU_ITEM_TOGGLE_P(_T(MSG_CRASHDETECT), _T(MSG_ON), crash_mode_switch);\
@ -5618,15 +5627,24 @@ static void lcd_tune_menu()
#ifdef TMC2130
if(!farm_mode)
{
bool bDesync = tmc2130_mode ^ eeprom_read_byte((uint8_t*)EEPROM_SILENT);
if (SilentModeMenu == SILENT_MODE_NORMAL) {
MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_NORMAL), lcd_silent_mode_set);
SILENT_DESYNC_IF {
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);
}
if (lcd_crash_detect_enabled()) {
MENU_ITEM_TOGGLE_P(_T(MSG_CRASHDETECT), _T(MSG_ON), crash_mode_switch);
} else {
MENU_ITEM_TOGGLE_P(_T(MSG_CRASHDETECT), _T(MSG_OFF), crash_mode_switch);
}
} else {
MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_STEALTH), lcd_silent_mode_set);
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_CRASHDETECT), NULL, lcd_crash_mode_info);
}
}