Compare commits
5 Commits
MK3
...
v3.9.1-BET
| Author | SHA1 | Date |
|---|---|---|
|
|
4eacb9f338 | |
|
|
fad0b67689 | |
|
|
773c6997ef | |
|
|
ec6a20971e | |
|
|
a95feb56d9 |
|
|
@ -16,8 +16,8 @@ extern uint16_t nPrinterType;
|
||||||
extern PGM_P sPrinterName;
|
extern PGM_P sPrinterName;
|
||||||
|
|
||||||
// Firmware version
|
// Firmware version
|
||||||
#define FW_VERSION "3.9.0"
|
#define FW_VERSION "3.9.1-BETA"
|
||||||
#define FW_COMMIT_NR 3421
|
#define FW_COMMIT_NR 3476
|
||||||
// FW_VERSION_UNKNOWN means this is an unofficial build.
|
// FW_VERSION_UNKNOWN means this is an unofficial build.
|
||||||
// The firmware should only be checked into github with this symbol.
|
// The firmware should only be checked into github with this symbol.
|
||||||
#define FW_DEV_VERSION FW_VERSION_UNKNOWN
|
#define FW_DEV_VERSION FW_VERSION_UNKNOWN
|
||||||
|
|
@ -70,7 +70,7 @@ extern PGM_P sPrinterName;
|
||||||
//#define STRING_VERSION "1.0.2"
|
//#define STRING_VERSION "1.0.2"
|
||||||
|
|
||||||
#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time
|
#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time
|
||||||
#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
|
#define STRING_CONFIG_H_AUTHOR "(FW390+PR2784+PR2785)" // Who made the changes.
|
||||||
|
|
||||||
// SERIAL_PORT selects which serial port should be used for communication with the host.
|
// SERIAL_PORT selects which serial port should be used for communication with the host.
|
||||||
// This allows the connection of wireless adapters (for instance) to non-default port pins.
|
// This allows the connection of wireless adapters (for instance) to non-default port pins.
|
||||||
|
|
|
||||||
|
|
@ -8570,7 +8570,7 @@ Sigma_Exit:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
### M999 - Restart after being stopped <a href="https://reprap.org/wiki/G-code#M999:_Restart_after_being_stopped_by_error">M999: Restart after being stopped by error</a>
|
### M999 - Restart after being stopped <a href="https://reprap.org/wiki/G-code#M999:_Restart_after_being_stopped_by_error">M999: Restart after being stopped by error</a>
|
||||||
@todo Usually doesn't work. Should be fixed or removed. Most of the time, if `Stopped` it set, the print fails and is unrecoverable.
|
@todo Usually doesn't work. Should be fixed or removed. Most of the time, if `Stopped` it set, the print fails and is unrecoverable.
|
||||||
*/
|
*/
|
||||||
case 999:
|
case 999:
|
||||||
|
|
|
||||||
|
|
@ -359,6 +359,8 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
|
||||||
| ^ | ^ | ^ | 00h 0 | ^ | LCD backlight mode: __Dim__ | ^ | ^
|
| ^ | ^ | ^ | 00h 0 | ^ | LCD backlight mode: __Dim__ | ^ | ^
|
||||||
| 0x0D30 3376 | uint16 | EEPROM_BACKLIGHT_TIMEOUT | 01 00 - ff ff | 0a 00h 65535 | LCD backlight timeout: __10__ seconds | LCD menu | D3 Ax0d30 C2
|
| 0x0D30 3376 | uint16 | EEPROM_BACKLIGHT_TIMEOUT | 01 00 - ff ff | 0a 00h 65535 | LCD backlight timeout: __10__ seconds | LCD menu | D3 Ax0d30 C2
|
||||||
| 0x0D2C 3372 | float | EEPROM_UVLO_LA_K | ??? | ff ff ff ffh | Power panic saved Linear Advanced K value | ??? | D3 Ax0d2c C4
|
| 0x0D2C 3372 | float | EEPROM_UVLO_LA_K | ??? | ff ff ff ffh | Power panic saved Linear Advanced K value | ??? | D3 Ax0d2c C4
|
||||||
|
| 0x0D2B 3371 | uint8 | EEPROM_ALTFAN_OVERRIDE | 0-1 | 00h | ALTFAN override | LCD menu | D3 Ax0d2b C1
|
||||||
|
| 0x0D2A 3370 | uint8 | EEPROM_EXPERIMENTAL_VISIBILITY | 0-1 | 00h | Experimental menu visibility | LCD menu | D3 Ax0d2a C1
|
||||||
|
|
||||||
|
|
||||||
| Address begin | Bit/Type | Name | Valid values | Default/FactoryReset | Description | Gcode/Function| Debug code
|
| Address begin | Bit/Type | Name | Valid values | Default/FactoryReset | Description | Gcode/Function| Debug code
|
||||||
|
|
@ -561,8 +563,11 @@ static Sheets * const EEPROM_Sheets_base = (Sheets*)(EEPROM_SHEETS_BASE);
|
||||||
|
|
||||||
#define EEPROM_UVLO_LA_K (EEPROM_BACKLIGHT_TIMEOUT-4) // float
|
#define EEPROM_UVLO_LA_K (EEPROM_BACKLIGHT_TIMEOUT-4) // float
|
||||||
|
|
||||||
|
#define EEPROM_ALTFAN_OVERRIDE (EEPROM_UVLO_LA_K-1) //uint8
|
||||||
|
#define EEPROM_EXPERIMENTAL_VISIBILITY (EEPROM_ALTFAN_OVERRIDE-1) //uint8
|
||||||
|
|
||||||
//This is supposed to point to last item to allow EEPROM overrun check. Please update when adding new items.
|
//This is supposed to point to last item to allow EEPROM overrun check. Please update when adding new items.
|
||||||
#define EEPROM_LAST_ITEM EEPROM_UVLO_LA_K
|
#define EEPROM_LAST_ITEM EEPROM_EXPERIMENTAL_VISIBILITY
|
||||||
// !!!!!
|
// !!!!!
|
||||||
// !!!!! this is end of EEPROM section ... all updates MUST BE inserted before this mark !!!!!
|
// !!!!! this is end of EEPROM section ... all updates MUST BE inserted before this mark !!!!!
|
||||||
// !!!!!
|
// !!!!!
|
||||||
|
|
|
||||||
|
|
@ -153,6 +153,7 @@ uint8_t fanSpeedBckp = 255;
|
||||||
uint8_t fanState = 0;
|
uint8_t fanState = 0;
|
||||||
#ifdef EXTRUDER_ALTFAN_DETECT
|
#ifdef EXTRUDER_ALTFAN_DETECT
|
||||||
bool extruderFanIsAltfan = false; //set to Noctua
|
bool extruderFanIsAltfan = false; //set to Noctua
|
||||||
|
uint8_t altfanOverride = 0;
|
||||||
#endif //EXTRUDER_ALTFAN_DETECT
|
#endif //EXTRUDER_ALTFAN_DETECT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -224,6 +225,14 @@ bool extruder_altfan_detect()
|
||||||
setExtruderAutoFanState(3);
|
setExtruderAutoFanState(3);
|
||||||
|
|
||||||
SET_INPUT(TACH_0);
|
SET_INPUT(TACH_0);
|
||||||
|
|
||||||
|
altfanOverride = eeprom_read_byte((uint8_t *)EEPROM_ALTFAN_OVERRIDE);
|
||||||
|
if (altfanOverride == EEPROM_EMPTY_VALUE)
|
||||||
|
{
|
||||||
|
altfanOverride = 0;
|
||||||
|
eeprom_update_byte((uint8_t *)EEPROM_ALTFAN_OVERRIDE, altfanOverride);
|
||||||
|
}
|
||||||
|
|
||||||
CRITICAL_SECTION_START;
|
CRITICAL_SECTION_START;
|
||||||
EICRB &= ~(1 << ISC61);
|
EICRB &= ~(1 << ISC61);
|
||||||
EICRB |= (1 << ISC60);
|
EICRB |= (1 << ISC60);
|
||||||
|
|
@ -241,6 +250,18 @@ bool extruder_altfan_detect()
|
||||||
setExtruderAutoFanState(1);
|
setExtruderAutoFanState(1);
|
||||||
return extruderFanIsAltfan;
|
return extruderFanIsAltfan;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void altfanOverride_toggle()
|
||||||
|
{
|
||||||
|
altfanOverride = !altfanOverride;
|
||||||
|
eeprom_update_byte((uint8_t *)EEPROM_ALTFAN_OVERRIDE, altfanOverride);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool altfanOverride_get()
|
||||||
|
{
|
||||||
|
return altfanOverride;
|
||||||
|
}
|
||||||
|
|
||||||
#endif //EXTRUDER_ALTFAN_DETECT
|
#endif //EXTRUDER_ALTFAN_DETECT
|
||||||
|
|
||||||
// return "false", if all extruder-heaters are 'off' (ie. "true", if any heater is 'on')
|
// return "false", if all extruder-heaters are 'off' (ie. "true", if any heater is 'on')
|
||||||
|
|
@ -494,7 +515,7 @@ void setExtruderAutoFanState(uint8_t state)
|
||||||
if (fanState & 0x01)
|
if (fanState & 0x01)
|
||||||
{
|
{
|
||||||
#ifdef EXTRUDER_ALTFAN_DETECT
|
#ifdef EXTRUDER_ALTFAN_DETECT
|
||||||
if (extruderFanIsAltfan) newFanSpeed = EXTRUDER_ALTFAN_SPEED_SILENT;
|
if (extruderFanIsAltfan && !altfanOverride) newFanSpeed = EXTRUDER_ALTFAN_SPEED_SILENT;
|
||||||
else newFanSpeed = EXTRUDER_AUTO_FAN_SPEED;
|
else newFanSpeed = EXTRUDER_AUTO_FAN_SPEED;
|
||||||
#else //EXTRUDER_ALTFAN_DETECT
|
#else //EXTRUDER_ALTFAN_DETECT
|
||||||
newFanSpeed = EXTRUDER_AUTO_FAN_SPEED;
|
newFanSpeed = EXTRUDER_AUTO_FAN_SPEED;
|
||||||
|
|
@ -1356,7 +1377,7 @@ void temp_runaway_stop(bool isPreheat, bool isBed)
|
||||||
SERIAL_ERROR_START;
|
SERIAL_ERROR_START;
|
||||||
isBed ? SERIAL_ERRORLNPGM(" THERMAL RUNAWAY ( PREHEAT HEATBED)") : SERIAL_ERRORLNPGM(" THERMAL RUNAWAY ( PREHEAT HOTEND)");
|
isBed ? SERIAL_ERRORLNPGM(" THERMAL RUNAWAY ( PREHEAT HEATBED)") : SERIAL_ERRORLNPGM(" THERMAL RUNAWAY ( PREHEAT HOTEND)");
|
||||||
#ifdef EXTRUDER_ALTFAN_DETECT
|
#ifdef EXTRUDER_ALTFAN_DETECT
|
||||||
extruderFanIsAltfan = false; //full speed
|
altfanOverride = true; //full speed
|
||||||
#endif //EXTRUDER_ALTFAN_DETECT
|
#endif //EXTRUDER_ALTFAN_DETECT
|
||||||
setExtruderAutoFanState(3);
|
setExtruderAutoFanState(3);
|
||||||
SET_OUTPUT(FAN_PIN);
|
SET_OUTPUT(FAN_PIN);
|
||||||
|
|
@ -1446,7 +1467,7 @@ void max_temp_error(uint8_t e) {
|
||||||
WRITE(FAN_PIN, 1);
|
WRITE(FAN_PIN, 1);
|
||||||
WRITE(BEEPER, 1);
|
WRITE(BEEPER, 1);
|
||||||
#ifdef EXTRUDER_ALTFAN_DETECT
|
#ifdef EXTRUDER_ALTFAN_DETECT
|
||||||
extruderFanIsAltfan = false; //full speed
|
altfanOverride = true; //full speed
|
||||||
#endif //EXTRUDER_ALTFAN_DETECT
|
#endif //EXTRUDER_ALTFAN_DETECT
|
||||||
setExtruderAutoFanState(3);
|
setExtruderAutoFanState(3);
|
||||||
// fanSpeed will consumed by the check_axes_activity() routine.
|
// fanSpeed will consumed by the check_axes_activity() routine.
|
||||||
|
|
|
||||||
|
|
@ -273,6 +273,8 @@ void check_max_temp();
|
||||||
|
|
||||||
#ifdef EXTRUDER_ALTFAN_DETECT
|
#ifdef EXTRUDER_ALTFAN_DETECT
|
||||||
extern bool extruder_altfan_detect();
|
extern bool extruder_altfan_detect();
|
||||||
|
extern void altfanOverride_toggle();
|
||||||
|
extern bool altfanOverride_get();
|
||||||
#endif //EXTRUDER_ALTFAN_DETECT
|
#endif //EXTRUDER_ALTFAN_DETECT
|
||||||
|
|
||||||
extern unsigned long extruder_autofan_last_check;
|
extern unsigned long extruder_autofan_last_check;
|
||||||
|
|
|
||||||
|
|
@ -2096,6 +2096,9 @@ static void lcd_preheat_menu()
|
||||||
//! @code{.unparsed}
|
//! @code{.unparsed}
|
||||||
//! | Voltages | MSG_MENU_VOLTAGES
|
//! | Voltages | MSG_MENU_VOLTAGES
|
||||||
//! @endcode
|
//! @endcode
|
||||||
|
//!
|
||||||
|
//!
|
||||||
|
//! | Experimental | c=18 r=1
|
||||||
//!
|
//!
|
||||||
//!
|
//!
|
||||||
//! If DEBUG_BUILD is defined
|
//! If DEBUG_BUILD is defined
|
||||||
|
|
@ -2108,11 +2111,12 @@ static void lcd_preheat_menu()
|
||||||
static void lcd_support_menu()
|
static void lcd_support_menu()
|
||||||
{
|
{
|
||||||
typedef struct
|
typedef struct
|
||||||
{ // 22bytes total
|
{ // 23bytes total
|
||||||
int8_t status; // 1byte
|
int8_t status; // 1byte
|
||||||
bool is_flash_air; // 1byte
|
bool is_flash_air; // 1byte
|
||||||
uint8_t ip[4]; // 4bytes
|
uint8_t ip[4]; // 4bytes
|
||||||
char ip_str[3*4+3+1]; // 16bytes
|
char ip_str[3*4+3+1]; // 16bytes
|
||||||
|
uint8_t experimental_menu_visibility; //1byte
|
||||||
} _menu_data_t;
|
} _menu_data_t;
|
||||||
static_assert(sizeof(menu_data)>= sizeof(_menu_data_t),"_menu_data_t doesn't fit into menu_data");
|
static_assert(sizeof(menu_data)>= sizeof(_menu_data_t),"_menu_data_t doesn't fit into menu_data");
|
||||||
_menu_data_t* _md = (_menu_data_t*)&(menu_data[0]);
|
_menu_data_t* _md = (_menu_data_t*)&(menu_data[0]);
|
||||||
|
|
@ -2126,6 +2130,14 @@ static void lcd_support_menu()
|
||||||
sprintf_P(_md->ip_str, PSTR("%d.%d.%d.%d"),
|
sprintf_P(_md->ip_str, PSTR("%d.%d.%d.%d"),
|
||||||
_md->ip[0], _md->ip[1],
|
_md->ip[0], _md->ip[1],
|
||||||
_md->ip[2], _md->ip[3]);
|
_md->ip[2], _md->ip[3]);
|
||||||
|
|
||||||
|
_md->experimental_menu_visibility = eeprom_read_byte((uint8_t *)EEPROM_EXPERIMENTAL_VISIBILITY);
|
||||||
|
if (_md->experimental_menu_visibility == EEPROM_EMPTY_VALUE)
|
||||||
|
{
|
||||||
|
_md->experimental_menu_visibility = 0;
|
||||||
|
eeprom_update_byte((uint8_t *)EEPROM_EXPERIMENTAL_VISIBILITY, _md->experimental_menu_visibility);
|
||||||
|
}
|
||||||
|
|
||||||
} else if (_md->is_flash_air &&
|
} else if (_md->is_flash_air &&
|
||||||
_md->ip[0] == 0 && _md->ip[1] == 0 &&
|
_md->ip[0] == 0 && _md->ip[1] == 0 &&
|
||||||
_md->ip[2] == 0 && _md->ip[3] == 0 &&
|
_md->ip[2] == 0 && _md->ip[3] == 0 &&
|
||||||
|
|
@ -2210,6 +2222,12 @@ static void lcd_support_menu()
|
||||||
MENU_ITEM_SUBMENU_P(_i("Voltages"), lcd_menu_voltages);////MSG_MENU_VOLTAGES c=18 r=1
|
MENU_ITEM_SUBMENU_P(_i("Voltages"), lcd_menu_voltages);////MSG_MENU_VOLTAGES c=18 r=1
|
||||||
#endif //defined VOLT_BED_PIN || defined VOLT_PWR_PIN
|
#endif //defined VOLT_BED_PIN || defined VOLT_PWR_PIN
|
||||||
|
|
||||||
|
if (_md->experimental_menu_visibility)
|
||||||
|
{
|
||||||
|
MENU_ITEM_SUBMENU_P(PSTR("Experimental"), lcd_experimental_menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef DEBUG_BUILD
|
#ifdef DEBUG_BUILD
|
||||||
MENU_ITEM_SUBMENU_P(PSTR("Debug"), lcd_menu_debug);////c=18 r=1
|
MENU_ITEM_SUBMENU_P(PSTR("Debug"), lcd_menu_debug);////c=18 r=1
|
||||||
#endif /* DEBUG_BUILD */
|
#endif /* DEBUG_BUILD */
|
||||||
|
|
@ -8997,6 +9015,13 @@ void menu_lcd_longpress_func(void)
|
||||||
lcd_quick_feedback();
|
lcd_quick_feedback();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (menu_menu == lcd_hw_setup_menu)
|
||||||
|
{
|
||||||
|
// only toggle the experimental menu visibility flag
|
||||||
|
lcd_quick_feedback();
|
||||||
|
lcd_experimental_toggle();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// explicitely listed menus which are allowed to rise the move-z or live-adj-z functions
|
// explicitely listed menus which are allowed to rise the move-z or live-adj-z functions
|
||||||
// The lists are not the same for both functions, so first decide which function is to be performed
|
// The lists are not the same for both functions, so first decide which function is to be performed
|
||||||
|
|
@ -9160,3 +9185,25 @@ void lcd_crash_detect_disable()
|
||||||
eeprom_update_byte((uint8_t*)EEPROM_CRASH_DET, 0x00);
|
eeprom_update_byte((uint8_t*)EEPROM_CRASH_DET, 0x00);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
void lcd_experimental_toggle()
|
||||||
|
{
|
||||||
|
uint8_t oldVal = eeprom_read_byte((uint8_t *)EEPROM_EXPERIMENTAL_VISIBILITY);
|
||||||
|
if (oldVal == EEPROM_EMPTY_VALUE)
|
||||||
|
oldVal = 0;
|
||||||
|
else
|
||||||
|
oldVal = !oldVal;
|
||||||
|
eeprom_update_byte((uint8_t *)EEPROM_EXPERIMENTAL_VISIBILITY, oldVal);
|
||||||
|
}
|
||||||
|
|
||||||
|
void lcd_experimental_menu()
|
||||||
|
{
|
||||||
|
MENU_BEGIN();
|
||||||
|
MENU_ITEM_BACK_P(_T(MSG_BACK));
|
||||||
|
|
||||||
|
#ifdef EXTRUDER_ALTFAN_DETECT
|
||||||
|
MENU_ITEM_TOGGLE_P(_N("ALTFAN det."), altfanOverride_get()?_T(MSG_OFF):_T(MSG_ON), altfanOverride_toggle);
|
||||||
|
#endif //EXTRUDER_ALTFAN_DETECT
|
||||||
|
|
||||||
|
MENU_END();
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -257,4 +257,7 @@ enum class WizState : uint8_t
|
||||||
|
|
||||||
void lcd_wizard(WizState state);
|
void lcd_wizard(WizState state);
|
||||||
|
|
||||||
|
extern void lcd_experimental_toggle();
|
||||||
|
extern void lcd_experimental_menu();
|
||||||
|
|
||||||
#endif //ULTRALCD_H
|
#endif //ULTRALCD_H
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue