Merge pull request #1981 from MRprusa3d/PFW-873

Pfw 873
This commit is contained in:
Marek Běl 2019-07-10 17:45:08 +02:00 committed by GitHub
commit 84ac209222
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 661 additions and 99 deletions

1
.gitignore vendored
View File

@ -51,3 +51,4 @@ Firmware/Doc
/build-env/ /build-env/
/Firmware/Firmware.vcxproj /Firmware/Firmware.vcxproj
/Firmware/Configuration_prusa_bckp.h /Firmware/Configuration_prusa_bckp.h
/Firmware/variants/printers.h

View File

@ -0,0 +1,10 @@
#include "Configuration.h"
#include "Configuration_prusa.h"
const uint16_t _nPrinterType PROGMEM=PRINTER_TYPE;
const char _sPrinterName[] PROGMEM=PRINTER_NAME;
const uint16_t _nPrinterMmuType PROGMEM=PRINTER_MMU_TYPE;
const char _sPrinterMmuName[] PROGMEM=PRINTER_MMU_NAME;
uint16_t nPrinterType;
PGM_P sPrinterName;

View File

@ -6,6 +6,15 @@
#define STR_HELPER(x) #x #define STR_HELPER(x) #x
#define STR(x) STR_HELPER(x) #define STR(x) STR_HELPER(x)
//-//
#include <avr/pgmspace.h>
extern const uint16_t _nPrinterType;
extern const char _sPrinterName[] PROGMEM;
extern const uint16_t _nPrinterMmuType;
extern const char _sPrinterMmuName[] PROGMEM;
extern uint16_t nPrinterType;
extern PGM_P sPrinterName;
// Firmware version // Firmware version
#define FW_VERSION "3.7.2-RC1" #define FW_VERSION "3.7.2-RC1"
#define FW_COMMIT_NR 2359 #define FW_COMMIT_NR 2359
@ -15,6 +24,9 @@
#define FW_REPOSITORY "Unknown" #define FW_REPOSITORY "Unknown"
#define FW_VERSION_FULL FW_VERSION "-" STR(FW_COMMIT_NR) #define FW_VERSION_FULL FW_VERSION "-" STR(FW_COMMIT_NR)
// G-code language level
#define GCODE_LEVEL 1
// Debug version has debugging enabled (the symbol DEBUG_BUILD is set). // Debug version has debugging enabled (the symbol DEBUG_BUILD is set).
// The debug build may be a bit slower than the non-debug build, therefore the debug build should // The debug build may be a bit slower than the non-debug build, therefore the debug build should
// not be shipped to a customer. // not be shipped to a customer.

View File

@ -43,6 +43,8 @@
* *
*/ */
//-//
#include "Configuration.h"
#include "Marlin.h" #include "Marlin.h"
#ifdef ENABLE_AUTO_BED_LEVELING #ifdef ENABLE_AUTO_BED_LEVELING
@ -1632,6 +1634,7 @@ void setup()
} }
#endif //UVLO_SUPPORT #endif //UVLO_SUPPORT
fCheckModeInit(); fCheckModeInit();
fSetMmuMode(mmu_enabled);
KEEPALIVE_STATE(NOT_BUSY); KEEPALIVE_STATE(NOT_BUSY);
#ifdef WATCHDOG #ifdef WATCHDOG
wdt_enable(WDTO_4S); wdt_enable(WDTO_4S);
@ -3644,7 +3647,7 @@ void process_commands()
//-// //-//
/* /*
} else if(code_seen("qqq")) { } else if(code_seen("rrr")) {
MYSERIAL.println("=== checking ==="); MYSERIAL.println("=== checking ===");
MYSERIAL.println(eeprom_read_byte((uint8_t*)EEPROM_CHECK_MODE),DEC); MYSERIAL.println(eeprom_read_byte((uint8_t*)EEPROM_CHECK_MODE),DEC);
MYSERIAL.println(eeprom_read_byte((uint8_t*)EEPROM_NOZZLE_DIAMETER),DEC); MYSERIAL.println(eeprom_read_byte((uint8_t*)EEPROM_NOZZLE_DIAMETER),DEC);
@ -3666,13 +3669,47 @@ eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,0xFFFF);
} }
else if(code_seen("set") && farm_mode) else if(code_seen("set") && farm_mode)
{ {
strchr_pointer++; // skip 1st char (~ 's')
strchr_pointer++; // skip 2nd char (~ 'e') strchr_pointer++; // skip 2nd char (~ 'e')
strchr_pointer++; // skip 3rd char (~ 't')
nDiameter=(uint16_t)(code_value()*1000.0+0.5); // [,um] nDiameter=(uint16_t)(code_value()*1000.0+0.5); // [,um]
eeprom_update_byte((uint8_t*)EEPROM_NOZZLE_DIAMETER,(uint8_t)e_NOZZLE_DIAMETER_NULL); // for correct synchronization after farm-mode exiting eeprom_update_byte((uint8_t*)EEPROM_NOZZLE_DIAMETER,(uint8_t)ClNozzleDiameter::_Diameter_Undef); // for correct synchronization after farm-mode exiting
eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,nDiameter); eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,nDiameter);
} }
else SERIAL_PROTOCOLLN((float)eeprom_read_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM)/1000.0); else SERIAL_PROTOCOLLN((float)eeprom_read_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM)/1000.0);
//-// !!! SupportMenu
/*
// musi byt PRED "PRUSA model"
} else if (code_seen("smodel")) { //! PRUSA smodel
size_t nOffset;
// ! -> "l"
strchr_pointer+=5*sizeof(*strchr_pointer); // skip 1st - 5th char (~ 'smode')
nOffset=strspn(strchr_pointer+1," \t\n\r\v\f");
if(*(strchr_pointer+1+nOffset))
printer_smodel_check(strchr_pointer);
else SERIAL_PROTOCOLLN(PRINTER_NAME);
} else if (code_seen("model")) { //! PRUSA model
uint16_t nPrinterModel;
strchr_pointer+=4*sizeof(*strchr_pointer); // skip 1st - 4th char (~ 'mode')
nPrinterModel=(uint16_t)code_value_long();
if(nPrinterModel!=0)
printer_model_check(nPrinterModel);
else SERIAL_PROTOCOLLN(PRINTER_TYPE);
} else if (code_seen("version")) { //! PRUSA version
strchr_pointer+=7*sizeof(*strchr_pointer); // skip 1st - 7th char (~ 'version')
while(*strchr_pointer==' ') // skip leading spaces
strchr_pointer++;
if(*strchr_pointer!=0)
fw_version_check(strchr_pointer);
else SERIAL_PROTOCOLLN(FW_VERSION);
} else if (code_seen("gcode")) { //! PRUSA gcode
uint16_t nGcodeLevel;
strchr_pointer+=4*sizeof(*strchr_pointer); // skip 1st - 4th char (~ 'gcod')
nGcodeLevel=(uint16_t)code_value_long();
if(nGcodeLevel!=0)
gcode_level_check(nGcodeLevel);
else SERIAL_PROTOCOLLN(GCODE_LEVEL);
*/
} }
//else if (code_seen('Cal')) { //else if (code_seen('Cal')) {
// lcd_calibration(); // lcd_calibration();
@ -6837,6 +6874,65 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE))
#endif //PINDA_THERMISTOR #endif //PINDA_THERMISTOR
case 862: // M862: print checking
float nDummy;
uint8_t nCommand;
nCommand=(uint8_t)(modff(code_value_float(),&nDummy)*10.0+0.5);
switch((ClPrintChecking)nCommand)
{
case ClPrintChecking::_Nozzle: // ~ .1
uint16_t nDiameter;
if(code_seen('P'))
{
nDiameter=(uint16_t)(code_value()*1000.0+0.5); // [,um]
nozzle_diameter_check(nDiameter);
}
/*
else if(code_seen('S')&&farm_mode)
{
nDiameter=(uint16_t)(code_value()*1000.0+0.5); // [,um]
eeprom_update_byte((uint8_t*)EEPROM_NOZZLE_DIAMETER,(uint8_t)ClNozzleDiameter::_Diameter_Undef); // for correct synchronization after farm-mode exiting
eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,nDiameter);
}
*/
else if(code_seen('Q'))
SERIAL_PROTOCOLLN((float)eeprom_read_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM)/1000.0);
break;
case ClPrintChecking::_Model: // ~ .2
if(code_seen('P'))
{
uint16_t nPrinterModel;
nPrinterModel=(uint16_t)code_value_long();
printer_model_check(nPrinterModel);
}
else if(code_seen('Q'))
SERIAL_PROTOCOLLN(nPrinterType);
break;
case ClPrintChecking::_Smodel: // ~ .3
if(code_seen('P'))
printer_smodel_check(strchr_pointer);
else if(code_seen('Q'))
SERIAL_PROTOCOLLNRPGM(sPrinterName);
break;
case ClPrintChecking::_Version: // ~ .4
if(code_seen('P'))
fw_version_check(++strchr_pointer);
else if(code_seen('Q'))
SERIAL_PROTOCOLLN(FW_VERSION);
break;
case ClPrintChecking::_Gcode: // ~ .5
if(code_seen('P'))
{
uint16_t nGcodeLevel;
nGcodeLevel=(uint16_t)code_value_long();
gcode_level_check(nGcodeLevel);
}
else if(code_seen('Q'))
SERIAL_PROTOCOLLN(GCODE_LEVEL);
break;
}
break;
#ifdef LIN_ADVANCE #ifdef LIN_ADVANCE
case 900: // M900: Set LIN_ADVANCE options. case 900: // M900: Set LIN_ADVANCE options.
gcode_M900(); gcode_M900();

View File

@ -30,6 +30,7 @@ typedef struct
static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEPROM_SHEETS_SIZEOF."); static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEPROM_SHEETS_SIZEOF.");
#endif #endif
#define EEPROM_EMPTY_VALUE 0xFF
// The total size of the EEPROM is // The total size of the EEPROM is
// 4096 for the Atmega2560 // 4096 for the Atmega2560
#define EEPROM_TOP 4096 #define EEPROM_TOP 4096
@ -195,6 +196,9 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
#define EEPROM_CHECK_MODE (EEPROM_MMU_STEALTH-1) // uint8 #define EEPROM_CHECK_MODE (EEPROM_MMU_STEALTH-1) // uint8
#define EEPROM_NOZZLE_DIAMETER (EEPROM_CHECK_MODE-1) // uint8 #define EEPROM_NOZZLE_DIAMETER (EEPROM_CHECK_MODE-1) // uint8
#define EEPROM_NOZZLE_DIAMETER_uM (EEPROM_NOZZLE_DIAMETER-2) // uint16 #define EEPROM_NOZZLE_DIAMETER_uM (EEPROM_NOZZLE_DIAMETER-2) // uint16
#define EEPROM_CHECK_MODEL (EEPROM_NOZZLE_DIAMETER_uM-1) // uint8
#define EEPROM_CHECK_VERSION (EEPROM_CHECK_MODEL-1) // uint8
#define EEPROM_CHECK_GCODE (EEPROM_CHECK_VERSION-1) // uint8
#define EEPROM_SHEETS_BASE (EEPROM_NOZZLE_DIAMETER_uM - EEPROM_SHEETS_SIZEOF) // Sheets #define EEPROM_SHEETS_BASE (EEPROM_NOZZLE_DIAMETER_uM - EEPROM_SHEETS_SIZEOF) // Sheets
static Sheets * const EEPROM_Sheets_base = (Sheets*)(EEPROM_SHEETS_BASE); static Sheets * const EEPROM_Sheets_base = (Sheets*)(EEPROM_SHEETS_BASE);

View File

@ -15,6 +15,8 @@
#include <avr/pgmspace.h> #include <avr/pgmspace.h>
#include "io_atmega2560.h" #include "io_atmega2560.h"
#include "AutoDeplete.h" #include "AutoDeplete.h"
//-//
#include "util.h"
#ifdef TMC2130 #ifdef TMC2130
#include "tmc2130.h" #include "tmc2130.h"
@ -265,6 +267,9 @@ void mmu_loop(void)
FDEBUG_PRINTF_P(PSTR("MMU => '%dok'\n"), mmu_finda); FDEBUG_PRINTF_P(PSTR("MMU => '%dok'\n"), mmu_finda);
puts_P(PSTR("MMU - ENABLED")); puts_P(PSTR("MMU - ENABLED"));
mmu_enabled = true; mmu_enabled = true;
//-//
// ... PrinterType/Name
fSetMmuMode(true);
mmu_state = S::Idle; mmu_state = S::Idle;
} }
return; return;

View File

@ -3,14 +3,38 @@
#define PRINTER_UNKNOWN 0 #define PRINTER_UNKNOWN 0
#define PRINTER_MK1 100 // *** MK1
#define PRINTER_MK2 200 #define PRINTER_MK1 100
#define PRINTER_MK2_SNMM 201 #define PRINTER_MK1_NAME "MK1"
#define PRINTER_MK25 250 // *** MK2
#define PRINTER_MK25_SNMM 251 #define PRINTER_MK2 200
#define PRINTER_MK25S 252 #define PRINTER_MK2_NAME "MK2"
#define PRINTER_MK3 300 #define PRINTER_MK2_SNMM 201 // better is "10200"
#define PRINTER_MK3_SNMM 301 #define PRINTER_MK2_SNMM_NAME "MK2MM" // better is "MK2MMU1"
#define PRINTER_MK3S 302 // *** MK2S ??? is same as "MK2" ???
#define PRINTER_MK2S 202
#define PRINTER_MK2S_NAME "MK2S"
#define PRINTER_MK2S_SNMM 203 // better is "10202"
#define PRINTER_MK2S_SNMM_NAME "MK2SMM" // better is "MK2SMMU1"
// *** MK2.5
#define PRINTER_MK25 250
#define PRINTER_MK25_NAME "MK2.5"
#define PRINTER_MK25_MMU2 20250
#define PRINTER_MK25_MMU2_NAME "MK2.5MMU2"
// *** MK2.5S
#define PRINTER_MK25S 252
#define PRINTER_MK25S_NAME "MK2.5S"
#define PRINTER_MK25S_MMU2 20252
#define PRINTER_MK25S_MMU2_NAME "MK2.5SMMU2S"
// *** MK3
#define PRINTER_MK3 300
#define PRINTER_MK3_NAME "MK3"
#define PRINTER_MK3_MMU2 20300
#define PRINTER_MK3_MMU2_NAME "MK3MMU2"
// *** MK3S
#define PRINTER_MK3S 302
#define PRINTER_MK3S_NAME "MK3S"
#define PRINTER_MK3S_MMU2 20302
#define PRINTER_MK3S_MMU2_NAME "MK3SMMU2S"
#endif //PRINTERS_H #endif //PRINTERS_H

View File

@ -307,6 +307,7 @@ bool wait_for_unclick;
#endif #endif
bool bMain; // flag (i.e. 'fake parameter') for 'lcd_sdcard_menu()' function bool bMain; // flag (i.e. 'fake parameter') for 'lcd_sdcard_menu()' function
bool bSettings; // flag (i.e. 'fake parameter') for 'lcd_checkink_menu()' function
@ -5290,95 +5291,218 @@ while (0)
//-// //-//
static void lcd_check_mode_set(void) static void lcd_check_mode_set(void)
{ {
switch(eCheckMode) switch(oCheckMode)
{ {
case e_CHECK_MODE_none: case ClCheckMode::_None:
eCheckMode=e_CHECK_MODE_warn; oCheckMode=ClCheckMode::_Warn;
break; break;
case e_CHECK_MODE_warn: case ClCheckMode::_Warn:
eCheckMode=e_CHECK_MODE_strict; oCheckMode=ClCheckMode::_Strict;
break; break;
case e_CHECK_MODE_strict: case ClCheckMode::_Strict:
eCheckMode=e_CHECK_MODE_none; oCheckMode=ClCheckMode::_None;
break; break;
default: default:
eCheckMode=e_CHECK_MODE_none; oCheckMode=ClCheckMode::_None;
} }
eeprom_update_byte((uint8_t*)EEPROM_CHECK_MODE,(uint8_t)eCheckMode); eeprom_update_byte((uint8_t*)EEPROM_CHECK_MODE,(uint8_t)oCheckMode);
}
static void lcd_nozzle_diameter_set(void)
{
uint16_t nDiameter;
switch(eNozzleDiameter)
{
case e_NOZZLE_DIAMETER_250:
eNozzleDiameter=e_NOZZLE_DIAMETER_400;
nDiameter=400;
break;
case e_NOZZLE_DIAMETER_400:
eNozzleDiameter=e_NOZZLE_DIAMETER_600;
nDiameter=600;
break;
case e_NOZZLE_DIAMETER_600:
eNozzleDiameter=e_NOZZLE_DIAMETER_250;
nDiameter=250;
break;
default:
eNozzleDiameter=e_NOZZLE_DIAMETER_400;
nDiameter=400;
}
eeprom_update_byte((uint8_t*)EEPROM_NOZZLE_DIAMETER,(uint8_t)eNozzleDiameter);
eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,nDiameter);
} }
#define SETTINGS_MODE \ #define SETTINGS_MODE \
do\ do\
{\ {\
switch(eCheckMode)\ switch(oCheckMode)\
{\ {\
case e_CHECK_MODE_none:\ case ClCheckMode::_None:\
MENU_ITEM_FUNCTION_P(_i("Action [none]"),lcd_check_mode_set);\ MENU_ITEM_FUNCTION_P(_i("Nozzle [none]"),lcd_check_mode_set);\
break;\ break;\
case e_CHECK_MODE_warn:\ case ClCheckMode::_Warn:\
MENU_ITEM_FUNCTION_P(_i("Action [warn]"),lcd_check_mode_set);\ MENU_ITEM_FUNCTION_P(_i("Nozzle [warn]"),lcd_check_mode_set);\
break;\ break;\
case e_CHECK_MODE_strict:\ case ClCheckMode::_Strict:\
MENU_ITEM_FUNCTION_P(_i("Action [strict]"),lcd_check_mode_set);\ MENU_ITEM_FUNCTION_P(_i("Nozzle [strict]"),lcd_check_mode_set);\
break;\ break;\
default:\ default:\
MENU_ITEM_FUNCTION_P(_i("Action [none]"),lcd_check_mode_set);\ MENU_ITEM_FUNCTION_P(_i("Nozzle [none]"),lcd_check_mode_set);\
}\ }\
}\ }\
while (0) while (0)
static void lcd_nozzle_diameter_set(void)
{
uint16_t nDiameter;
switch(oNozzleDiameter)
{
case ClNozzleDiameter::_Diameter_250:
oNozzleDiameter=ClNozzleDiameter::_Diameter_400;
nDiameter=400;
break;
case ClNozzleDiameter::_Diameter_400:
oNozzleDiameter=ClNozzleDiameter::_Diameter_600;
nDiameter=600;
break;
case ClNozzleDiameter::_Diameter_600:
oNozzleDiameter=ClNozzleDiameter::_Diameter_250;
nDiameter=250;
break;
default:
oNozzleDiameter=ClNozzleDiameter::_Diameter_400;
nDiameter=400;
}
eeprom_update_byte((uint8_t*)EEPROM_NOZZLE_DIAMETER,(uint8_t)oNozzleDiameter);
eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,nDiameter);
}
#define SETTINGS_NOZZLE \ #define SETTINGS_NOZZLE \
do\ do\
{\ {\
switch(eNozzleDiameter)\ switch(oNozzleDiameter)\
{\ {\
case e_NOZZLE_DIAMETER_250:\ case ClNozzleDiameter::_Diameter_250:\
MENU_ITEM_FUNCTION_P(_i("Nozzle [0.25]"),lcd_nozzle_diameter_set);\ MENU_ITEM_FUNCTION_P(_i("Nozzle d. [0.25]"),lcd_nozzle_diameter_set);\
break;\ break;\
case e_NOZZLE_DIAMETER_400:\ case ClNozzleDiameter::_Diameter_400:\
MENU_ITEM_FUNCTION_P(_i("Nozzle [0.40]"),lcd_nozzle_diameter_set);\ MENU_ITEM_FUNCTION_P(_i("Nozzle d. [0.40]"),lcd_nozzle_diameter_set);\
break;\ break;\
case e_NOZZLE_DIAMETER_600:\ case ClNozzleDiameter::_Diameter_600:\
MENU_ITEM_FUNCTION_P(_i("Nozzle [0.60]"),lcd_nozzle_diameter_set);\ MENU_ITEM_FUNCTION_P(_i("Nozzle d. [0.60]"),lcd_nozzle_diameter_set);\
break;\ break;\
default:\ default:\
MENU_ITEM_FUNCTION_P(_i("Nozzle [0.40]"),lcd_nozzle_diameter_set);\ MENU_ITEM_FUNCTION_P(_i("Nozzle d. [0.40]"),lcd_nozzle_diameter_set);\
}\ }\
}\ }\
while (0) while (0)
static void lcd_checking_menu() static void lcd_check_model_set(void)
{
switch(oCheckModel)
{
case ClCheckModel::_None:
oCheckModel=ClCheckModel::_Warn;
break;
case ClCheckModel::_Warn:
oCheckModel=ClCheckModel::_Strict;
break;
case ClCheckModel::_Strict:
oCheckModel=ClCheckModel::_None;
break;
default:
oCheckModel=ClCheckModel::_None;
}
eeprom_update_byte((uint8_t*)EEPROM_CHECK_MODEL,(uint8_t)oCheckModel);
}
#define SETTINGS_MODEL \
do\
{\
switch(oCheckModel)\
{\
case ClCheckModel::_None:\
MENU_ITEM_FUNCTION_P(_i("Model [none]"),lcd_check_model_set);\
break;\
case ClCheckModel::_Warn:\
MENU_ITEM_FUNCTION_P(_i("Model [warn]"),lcd_check_model_set);\
break;\
case ClCheckModel::_Strict:\
MENU_ITEM_FUNCTION_P(_i("Model [strict]"),lcd_check_model_set);\
break;\
default:\
MENU_ITEM_FUNCTION_P(_i("Model [none]"),lcd_check_model_set);\
}\
}\
while (0)
static void lcd_check_version_set(void)
{
switch(oCheckVersion)
{
case ClCheckVersion::_None:
oCheckVersion=ClCheckVersion::_Warn;
break;
case ClCheckVersion::_Warn:
oCheckVersion=ClCheckVersion::_Strict;
break;
case ClCheckVersion::_Strict:
oCheckVersion=ClCheckVersion::_None;
break;
default:
oCheckVersion=ClCheckVersion::_None;
}
eeprom_update_byte((uint8_t*)EEPROM_CHECK_VERSION,(uint8_t)oCheckVersion);
}
#define SETTINGS_VERSION \
do\
{\
switch(oCheckVersion)\
{\
case ClCheckVersion::_None:\
MENU_ITEM_FUNCTION_P(_i("Firmware [none]"),lcd_check_version_set);\
break;\
case ClCheckVersion::_Warn:\
MENU_ITEM_FUNCTION_P(_i("Firmware [warn]"),lcd_check_version_set);\
break;\
case ClCheckVersion::_Strict:\
MENU_ITEM_FUNCTION_P(_i("Firmware [strict]"),lcd_check_version_set);\
break;\
default:\
MENU_ITEM_FUNCTION_P(_i("Firmware [none]"),lcd_check_version_set);\
}\
}\
while (0)
static void lcd_check_gcode_set(void)
{
switch(oCheckGcode)
{
case ClCheckGcode::_None:
oCheckGcode=ClCheckGcode::_Warn;
break;
case ClCheckGcode::_Warn:
oCheckGcode=ClCheckGcode::_Strict;
break;
case ClCheckGcode::_Strict:
oCheckGcode=ClCheckGcode::_None;
break;
default:
oCheckGcode=ClCheckGcode::_None;
}
eeprom_update_byte((uint8_t*)EEPROM_CHECK_GCODE,(uint8_t)oCheckGcode);
}
#define SETTINGS_GCODE \
do\
{\
switch(oCheckGcode)\
{\
case ClCheckGcode::_None:\
MENU_ITEM_FUNCTION_P(_i("Gcode [none]"),lcd_check_gcode_set);\
break;\
case ClCheckGcode::_Warn:\
MENU_ITEM_FUNCTION_P(_i("Gcode [warn]"),lcd_check_gcode_set);\
break;\
case ClCheckGcode::_Strict:\
MENU_ITEM_FUNCTION_P(_i("Gcode [strict]"),lcd_check_gcode_set);\
break;\
default:\
MENU_ITEM_FUNCTION_P(_i("Gcode [none]"),lcd_check_gcode_set);\
}\
}\
while (0)
//-//static void lcd_checking_menu()
void lcd_checking_menu()
{ {
MENU_BEGIN(); MENU_BEGIN();
MENU_ITEM_BACK_P(_T(MSG_SETTINGS)); MENU_ITEM_BACK_P(_T(bSettings?MSG_SETTINGS:MSG_BACK)); // i.e. default menu-item / menu-item after checking mismatch
SETTINGS_MODE;
SETTINGS_NOZZLE; SETTINGS_NOZZLE;
MENU_ITEM_TEXT_P(STR_SEPARATOR);
MENU_ITEM_TEXT_P(_i("Checks:"));
SETTINGS_MODE;
SETTINGS_MODEL;
SETTINGS_VERSION;
SETTINGS_GCODE;
MENU_END(); MENU_END();
} }
@ -5434,7 +5558,10 @@ static void lcd_settings_menu()
#endif //(LANG_MODE != 0) #endif //(LANG_MODE != 0)
if (!farm_mode) if (!farm_mode)
{
bSettings=true; // flag ('fake parameter') for 'lcd_checking_menu()' function
MENU_ITEM_SUBMENU_P(_i("Print checking"), lcd_checking_menu); MENU_ITEM_SUBMENU_P(_i("Print checking"), lcd_checking_menu);
}
SETTINGS_SD; SETTINGS_SD;
SETTINGS_SOUND; SETTINGS_SOUND;

View File

@ -143,6 +143,9 @@ void lcd_ignore_click(bool b=true);
void lcd_commands(); void lcd_commands();
extern bool bSettings; // flag (i.e. 'fake parameter') for 'lcd_checkink_menu()' function
void change_extr(int extr); void change_extr(int extr);
#ifdef SNMM #ifdef SNMM

View File

@ -330,43 +330,241 @@ void update_current_firmware_version_to_eeprom()
//-// //-//
eNOZZLE_DIAMETER eNozzleDiameter=e_NOZZLE_DIAMETER_400; void lcd_checking_menu(void);
eCHECK_MODE eCheckMode=e_CHECK_MODE_none;
ClNozzleDiameter oNozzleDiameter=ClNozzleDiameter::_Diameter_400;
ClCheckMode oCheckMode=ClCheckMode::_None;
ClCheckModel oCheckModel=ClCheckModel::_None;
ClCheckVersion oCheckVersion=ClCheckVersion::_None;
ClCheckGcode oCheckGcode=ClCheckGcode::_None;
void fCheckModeInit() void fCheckModeInit()
{ {
eCheckMode=(eCHECK_MODE)eeprom_read_byte((uint8_t*)EEPROM_CHECK_MODE); oCheckMode=(ClCheckMode)eeprom_read_byte((uint8_t*)EEPROM_CHECK_MODE);
if(eCheckMode==e_CHECK_MODE_NULL) if(oCheckMode==ClCheckMode::_Undef)
{ {
eCheckMode=e_CHECK_MODE_warn; oCheckMode=ClCheckMode::_Warn;
eeprom_update_byte((uint8_t*)EEPROM_CHECK_MODE,(uint8_t)eCheckMode); eeprom_update_byte((uint8_t*)EEPROM_CHECK_MODE,(uint8_t)oCheckMode);
} }
if(farm_mode) if(farm_mode)
eCheckMode=e_CHECK_MODE_strict; oCheckMode=ClCheckMode::_Strict;
eNozzleDiameter=(eNOZZLE_DIAMETER)eeprom_read_byte((uint8_t*)EEPROM_NOZZLE_DIAMETER); oNozzleDiameter=(ClNozzleDiameter)eeprom_read_byte((uint8_t*)EEPROM_NOZZLE_DIAMETER);
if((eNozzleDiameter==e_NOZZLE_DIAMETER_NULL)&& !farm_mode) if((oNozzleDiameter==ClNozzleDiameter::_Diameter_Undef)&& !farm_mode)
{ {
eNozzleDiameter=e_NOZZLE_DIAMETER_400; oNozzleDiameter=ClNozzleDiameter::_Diameter_400;
eeprom_update_byte((uint8_t*)EEPROM_NOZZLE_DIAMETER,(uint8_t)eNozzleDiameter); eeprom_update_byte((uint8_t*)EEPROM_NOZZLE_DIAMETER,(uint8_t)oNozzleDiameter);
eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,400); eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,400);
} }
oCheckModel=(ClCheckModel)eeprom_read_byte((uint8_t*)EEPROM_CHECK_MODEL);
if(oCheckModel==ClCheckModel::_Undef)
{
oCheckModel=ClCheckModel::_Warn;
eeprom_update_byte((uint8_t*)EEPROM_CHECK_MODEL,(uint8_t)oCheckModel);
}
oCheckVersion=(ClCheckVersion)eeprom_read_byte((uint8_t*)EEPROM_CHECK_VERSION);
if(oCheckVersion==ClCheckVersion::_Undef)
{
oCheckVersion=ClCheckVersion::_Warn;
eeprom_update_byte((uint8_t*)EEPROM_CHECK_VERSION,(uint8_t)oCheckVersion);
}
oCheckGcode=(ClCheckGcode)eeprom_read_byte((uint8_t*)EEPROM_CHECK_GCODE);
if(oCheckGcode==ClCheckGcode::_Undef)
{
oCheckGcode=ClCheckGcode::_Warn;
eeprom_update_byte((uint8_t*)EEPROM_CHECK_GCODE,(uint8_t)oCheckGcode);
}
} }
void nozzle_diameter_check(uint16_t nDiameter) void nozzle_diameter_check(uint16_t nDiameter)
{ {
uint16_t nDiameter_um; uint16_t nDiameter_um;
if(oCheckMode==ClCheckMode::_None)
return;
nDiameter_um=eeprom_read_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM); nDiameter_um=eeprom_read_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM);
if(nDiameter==nDiameter_um) if(nDiameter==nDiameter_um)
return; return;
switch(eCheckMode) //SERIAL_ECHO_START;
//SERIAL_ECHOLNPGM("Nozzle diameter doesn't match ...");
//SERIAL_ECHOPGM("actual : ");
//SERIAL_ECHOLN((float)(nDiameter_um/1000.0));
//SERIAL_ECHOPGM("expected: ");
//SERIAL_ECHOLN((float)(nDiameter/1000.0));
switch(oCheckMode)
{ {
case e_CHECK_MODE_warn: case ClCheckMode::_Warn:
lcd_show_fullscreen_message_and_wait_P(_i("Nozzle diameter doesn't match! Press the knob to continue.")); lcd_show_fullscreen_message_and_wait_P(_i("Nozzle diameter doesn't match! Press the knob to continue."));
break; break;
case e_CHECK_MODE_strict: case ClCheckMode::_Strict:
lcd_show_fullscreen_message_and_wait_P(_i("Nozzle diameter doesn't match! Print is aborted, press the knob.")); lcd_show_fullscreen_message_and_wait_P(_i("Nozzle diameter doesn't match! Print is aborted, press the knob."));
lcd_print_stop(); lcd_print_stop();
break; break;
} }
bSettings=false; // flag ('fake parameter') for 'lcd_checking_menu()' function
menu_submenu(lcd_checking_menu);
}
void printer_model_check(uint16_t nPrinterModel)
{
if(oCheckModel==ClCheckModel::_None)
return;
if(nPrinterModel==nPrinterType)
return;
//SERIAL_ECHO_START;
//SERIAL_ECHOLNPGM("Printer model doesn't match ...");
//SERIAL_ECHOPGM("actual : ");
//SERIAL_ECHOLN(nPrinterType);
//SERIAL_ECHOPGM("expected: ");
//SERIAL_ECHOLN(nPrinterModel);
switch(oCheckModel)
{
case ClCheckModel::_Warn:
lcd_show_fullscreen_message_and_wait_P(_i("Printer model doesn't match! Press the knob to continue."));
break;
case ClCheckModel::_Strict:
lcd_show_fullscreen_message_and_wait_P(_i("Printer model doesn't match! Print is aborted, press the knob."));
lcd_print_stop();
break;
}
}
uint8_t mCompareValue(uint16_t nX,uint16_t nY)
{
if(nX>nY)
return((uint8_t)ClCompareValue::_Greater);
if(nX<nY)
return((uint8_t)ClCompareValue::_Less);
return((uint8_t)ClCompareValue::_Equal);
}
void fw_version_check(const char *pVersion)
{
uint16_t aVersion[4];
uint8_t nCompareValueResult;
if(oCheckVersion==ClCheckVersion::_None)
return;
parse_version(pVersion,aVersion);
nCompareValueResult=mCompareValue(aVersion[0],eeprom_read_word((uint16_t*)EEPROM_FIRMWARE_VERSION_MAJOR))<<6;
nCompareValueResult+=mCompareValue(aVersion[1],eeprom_read_word((uint16_t*)EEPROM_FIRMWARE_VERSION_MINOR))<<4;
nCompareValueResult+=mCompareValue(aVersion[2],eeprom_read_word((uint16_t*)EEPROM_FIRMWARE_VERSION_REVISION))<<2;
nCompareValueResult+=mCompareValue(aVersion[3],eeprom_read_word((uint16_t*)EEPROM_FIRMWARE_VERSION_FLAVOR));
if(nCompareValueResult==COMPARE_VALUE_EQUAL)
return;
if((nCompareValueResult<COMPARE_VALUE_EQUAL)&&oCheckVersion==ClCheckVersion::_Warn)
return;
//SERIAL_ECHO_START;
//SERIAL_ECHOLNPGM("FW version doesn't match ...");
//SERIAL_ECHOPGM("actual : ");
//SERIAL_ECHOLN(FW_VERSION);
//SERIAL_ECHOPGM("expected: ");
//SERIAL_ECHOLN(pVersion);
switch(oCheckVersion)
{
case ClCheckVersion::_Warn:
lcd_show_fullscreen_message_and_wait_P(_i("FW version doesn't match! Press the knob to continue."));
break;
case ClCheckVersion::_Strict:
lcd_show_fullscreen_message_and_wait_P(_i("FW version doesn't match! Print is aborted, press the knob."));
lcd_print_stop();
break;
}
}
void gcode_level_check(uint16_t nGcodeLevel)
{
if(oCheckGcode==ClCheckGcode::_None)
return;
if(nGcodeLevel==(uint16_t)GCODE_LEVEL)
return;
if((nGcodeLevel<(uint16_t)GCODE_LEVEL)&&(oCheckGcode==ClCheckGcode::_Warn))
return;
//SERIAL_ECHO_START;
//SERIAL_ECHOLNPGM("G-code level doesn't match ...");
//SERIAL_ECHOPGM("actual : ");
//SERIAL_ECHOLN(GCODE_LEVEL);
//SERIAL_ECHOPGM("expected: ");
//SERIAL_ECHOLN(nGcodeLevel);
switch(oCheckGcode)
{
case ClCheckGcode::_Warn:
lcd_show_fullscreen_message_and_wait_P(_i("G-code level doesn't match! Press the knob to continue."));
break;
case ClCheckGcode::_Strict:
lcd_show_fullscreen_message_and_wait_P(_i("G-code level doesn't match! Print is aborted, press the knob."));
lcd_print_stop();
break;
}
}
//-// -> cmdqueue ???
#define PRINTER_NAME_LENGTH ((sizeof(PRINTER_MMU_NAME)>sizeof(PRINTER_NAME))?(sizeof(PRINTER_MMU_NAME)-1):(sizeof(PRINTER_NAME)-1))
#define GCODE_DELIMITER '"'
#define ELLIPSIS "..."
char* code_string(char* pStr,size_t* nLength)
{
char* pStrBegin;
char* pStrEnd;
pStrBegin=strchr(pStr,GCODE_DELIMITER);
if(!pStrBegin)
return(NULL);
pStrBegin++;
pStrEnd=strchr(pStrBegin,GCODE_DELIMITER);
if(!pStrEnd)
return(NULL);
*nLength=pStrEnd-pStrBegin;
return(pStrBegin);
}
void printer_smodel_check(char* pStrPos)
{
char* pResult;
size_t nLength,nPrinterNameLength;
bool bCheckOK;
char sPrinterName[PRINTER_NAME_LENGTH+sizeof(ELLIPSIS)-1+1]="";
nPrinterNameLength=strlen_P(::sPrinterName);
pResult=code_string(pStrPos,&nLength);
if(pResult!=NULL)
{
strlcpy(sPrinterName,pResult,min(nPrinterNameLength,nLength)+1);
if(nLength>nPrinterNameLength)
strcat(sPrinterName,ELLIPSIS);
bCheckOK=(nLength==nPrinterNameLength);
if(bCheckOK&&(!strncasecmp_P(pResult,::sPrinterName,nLength))) // i.e. string compare execute only if lengths are same
return;
}
//SERIAL_ECHO_START;
//SERIAL_ECHOLNPGM("Printer model doesn't match ...");
//SERIAL_ECHOPGM("actual : \"");
//serialprintPGM(::sPrinterName);
//SERIAL_ECHOLNPGM("\"");
//SERIAL_ECHOPGM("expected: \"");
////SERIAL_ECHO(sPrinterName);
//SERIAL_ECHOLNPGM("\"");
switch(oCheckModel)
{
case ClCheckModel::_Warn:
lcd_show_fullscreen_message_and_wait_P(_i("Printer model doesn't match! Press the knob to continue."));
break;
case ClCheckModel::_Strict:
lcd_show_fullscreen_message_and_wait_P(_i("Printer model doesn't match! Print is aborted, press the knob."));
lcd_print_stop();
break;
}
}
void fSetMmuMode(bool bMMu)
{
if(bMMu)
{
nPrinterType=pgm_read_word(&_nPrinterMmuType);
sPrinterName=_sPrinterMmuName;
}
else {
nPrinterType=pgm_read_word(&_nPrinterType);
sPrinterName=_sPrinterName;
}
} }

View File

@ -35,27 +35,76 @@ inline void eeprom_update_int8(unsigned char* addr, int8_t v) {
//-// //-//
#define e_CHECK_MODE_NULL 0xFF enum class ClPrintChecking:uint_least8_t
#define e_NOZZLE_DIAMETER_NULL 0xFF
typedef enum
{ {
e_NOZZLE_DIAMETER_250, _Nozzle=1,
e_NOZZLE_DIAMETER_400, _Model=2,
e_NOZZLE_DIAMETER_600 _Smodel=3,
} eNOZZLE_DIAMETER; _Version=4,
_Gcode=5
};
typedef enum enum class ClNozzleDiameter:uint_least8_t
{ {
e_CHECK_MODE_none, _Diameter_250=25,
e_CHECK_MODE_warn, _Diameter_400=40,
e_CHECK_MODE_strict _Diameter_600=60,
} eCHECK_MODE; _Diameter_Undef=EEPROM_EMPTY_VALUE
};
extern eNOZZLE_DIAMETER eNozzleDiameter; enum class ClCheckMode:uint_least8_t
extern eCHECK_MODE eCheckMode; {
_None,
_Warn,
_Strict,
_Undef=EEPROM_EMPTY_VALUE
};
enum class ClCheckModel:uint_least8_t
{
_None,
_Warn,
_Strict,
_Undef=EEPROM_EMPTY_VALUE
};
enum class ClCheckVersion:uint_least8_t
{
_None,
_Warn,
_Strict,
_Undef=EEPROM_EMPTY_VALUE
};
enum class ClCheckGcode:uint_least8_t
{
_None,
_Warn,
_Strict,
_Undef=EEPROM_EMPTY_VALUE
};
#define COMPARE_VALUE_EQUAL (((uint8_t)ClCompareValue::_Equal<<6)+((uint8_t)ClCompareValue::_Equal<<4)+((uint8_t)ClCompareValue::_Equal<<2)+((uint8_t)ClCompareValue::_Equal))
enum class ClCompareValue:uint_least8_t
{
_Less=0,
_Equal=1,
_Greater=2
};
extern ClNozzleDiameter oNozzleDiameter;
extern ClCheckMode oCheckMode;
extern ClCheckModel oCheckModel;
extern ClCheckVersion oCheckVersion;
extern ClCheckGcode oCheckGcode;
void fCheckModeInit(); void fCheckModeInit();
void nozzle_diameter_check(uint16_t nDiameter); void nozzle_diameter_check(uint16_t nDiameter);
void printer_model_check(uint16_t nPrinterModel);
void printer_smodel_check(char* pStrPos);
void fw_version_check(const char *pVersion);
void gcode_level_check(uint16_t nGcodeLevel);
void fSetMmuMode(bool bMMu);
#endif /* UTIL_H */ #endif /* UTIL_H */

View File

@ -2,12 +2,16 @@
#define CONFIGURATION_PRUSA_H #define CONFIGURATION_PRUSA_H
#include <limits.h> #include <limits.h>
#include "printers.h"
/*------------------------------------ /*------------------------------------
GENERAL SETTINGS GENERAL SETTINGS
*------------------------------------*/ *------------------------------------*/
// Printer revision // Printer revision
#define PRINTER_TYPE PRINTER_MK2 #define PRINTER_TYPE PRINTER_MK2
#define PRINTER_NAME PRINTER_MK2_NAME
#define PRINTER_MMU_TYPE PRINTER_MK2 // dummy item (due to successfully compilation / building only)
#define PRINTER_MMU_NAME PRINTER_MK2_NAME // dummy item (due to successfully compilation / building only)
#define FILAMENT_SIZE "1_75mm_MK2" #define FILAMENT_SIZE "1_75mm_MK2"
#define NOZZLE_TYPE "E3Dv6full" #define NOZZLE_TYPE "E3Dv6full"

View File

@ -2,12 +2,16 @@
#define CONFIGURATION_PRUSA_H #define CONFIGURATION_PRUSA_H
#include <limits.h> #include <limits.h>
#include "printers.h"
/*------------------------------------ /*------------------------------------
GENERAL SETTINGS GENERAL SETTINGS
*------------------------------------*/ *------------------------------------*/
// Printer revision // Printer revision
#define PRINTER_TYPE PRINTER_MK2 #define PRINTER_TYPE PRINTER_MK2
#define PRINTER_NAME PRINTER_MK2_NAME
#define PRINTER_MMU_TYPE PRINTER_MK2 // dummy item (due to successfully compilation / building only)
#define PRINTER_MMU_NAME PRINTER_MK2_NAME // dummy item (due to successfully compilation / building only)
#define FILAMENT_SIZE "1_75mm_MK2" #define FILAMENT_SIZE "1_75mm_MK2"
#define NOZZLE_TYPE "E3Dv6full" #define NOZZLE_TYPE "E3Dv6full"

View File

@ -2,12 +2,16 @@
#define CONFIGURATION_PRUSA_H #define CONFIGURATION_PRUSA_H
#include <limits.h> #include <limits.h>
#include "printers.h"
/*------------------------------------ /*------------------------------------
GENERAL SETTINGS GENERAL SETTINGS
*------------------------------------*/ *------------------------------------*/
// Printer revision // Printer revision
#define PRINTER_TYPE PRINTER_MK25 #define PRINTER_TYPE PRINTER_MK25
#define PRINTER_NAME PRINTER_MK25_NAME
#define PRINTER_MMU_TYPE PRINTER_MK25_MMU2
#define PRINTER_MMU_NAME PRINTER_MK25_MMU2_NAME
#define FILAMENT_SIZE "1_75mm_MK25" #define FILAMENT_SIZE "1_75mm_MK25"
#define NOZZLE_TYPE "E3Dv6full" #define NOZZLE_TYPE "E3Dv6full"

View File

@ -2,12 +2,16 @@
#define CONFIGURATION_PRUSA_H #define CONFIGURATION_PRUSA_H
#include <limits.h> #include <limits.h>
#include "printers.h"
/*------------------------------------ /*------------------------------------
GENERAL SETTINGS GENERAL SETTINGS
*------------------------------------*/ *------------------------------------*/
// Printer revision // Printer revision
#define PRINTER_TYPE PRINTER_MK25 #define PRINTER_TYPE PRINTER_MK25
#define PRINTER_NAME PRINTER_MK25_NAME
#define PRINTER_MMU_TYPE PRINTER_MK25_MMU2
#define PRINTER_MMU_NAME PRINTER_MK25_MMU2_NAME
#define FILAMENT_SIZE "1_75mm_MK25" #define FILAMENT_SIZE "1_75mm_MK25"
#define NOZZLE_TYPE "E3Dv6full" #define NOZZLE_TYPE "E3Dv6full"

View File

@ -2,12 +2,16 @@
#define CONFIGURATION_PRUSA_H #define CONFIGURATION_PRUSA_H
#include <limits.h> #include <limits.h>
#include "printers.h"
/*------------------------------------ /*------------------------------------
GENERAL SETTINGS GENERAL SETTINGS
*------------------------------------*/ *------------------------------------*/
// Printer revision // Printer revision
#define PRINTER_TYPE PRINTER_MK25S #define PRINTER_TYPE PRINTER_MK25S
#define PRINTER_NAME PRINTER_MK25S_NAME
#define PRINTER_MMU_TYPE PRINTER_MK25S_MMU2
#define PRINTER_MMU_NAME PRINTER_MK25S_MMU2_NAME
#define FILAMENT_SIZE "1_75mm_MK25S" #define FILAMENT_SIZE "1_75mm_MK25S"
#define NOZZLE_TYPE "E3Dv6full" #define NOZZLE_TYPE "E3Dv6full"

View File

@ -2,12 +2,16 @@
#define CONFIGURATION_PRUSA_H #define CONFIGURATION_PRUSA_H
#include <limits.h> #include <limits.h>
#include "printers.h"
/*------------------------------------ /*------------------------------------
GENERAL SETTINGS GENERAL SETTINGS
*------------------------------------*/ *------------------------------------*/
// Printer revision // Printer revision
#define PRINTER_TYPE PRINTER_MK25S #define PRINTER_TYPE PRINTER_MK25S
#define PRINTER_NAME PRINTER_MK25S_NAME
#define PRINTER_MMU_TYPE PRINTER_MK25S_MMU2
#define PRINTER_MMU_NAME PRINTER_MK25S_MMU2_NAME
#define FILAMENT_SIZE "1_75mm_MK25" #define FILAMENT_SIZE "1_75mm_MK25"
#define NOZZLE_TYPE "E3Dv6full" #define NOZZLE_TYPE "E3Dv6full"

View File

@ -2,12 +2,17 @@
#define CONFIGURATION_PRUSA_H #define CONFIGURATION_PRUSA_H
#include <limits.h> #include <limits.h>
//-//
#include "printers.h"
/*------------------------------------ /*------------------------------------
GENERAL SETTINGS GENERAL SETTINGS
*------------------------------------*/ *------------------------------------*/
// Printer revision // Printer revision
#define PRINTER_TYPE PRINTER_MK3 #define PRINTER_TYPE PRINTER_MK3
#define PRINTER_NAME PRINTER_MK3_NAME
#define PRINTER_MMU_TYPE PRINTER_MK3_MMU2
#define PRINTER_MMU_NAME PRINTER_MK3_MMU2_NAME
#define FILAMENT_SIZE "1_75mm_MK3" #define FILAMENT_SIZE "1_75mm_MK3"
#define NOZZLE_TYPE "E3Dv6full" #define NOZZLE_TYPE "E3Dv6full"
@ -188,9 +193,9 @@
//#define FSENSOR_QUALITY //#define FSENSOR_QUALITY
#define LINEARITY_CORRECTION //#define LINEARITY_CORRECTION
#define TMC2130_LINEARITY_CORRECTION //#define TMC2130_LINEARITY_CORRECTION
#define TMC2130_LINEARITY_CORRECTION_XYZ //#define TMC2130_LINEARITY_CORRECTION_XYZ
#define TMC2130_VARIABLE_RESOLUTION #define TMC2130_VARIABLE_RESOLUTION

View File

@ -2,12 +2,16 @@
#define CONFIGURATION_PRUSA_H #define CONFIGURATION_PRUSA_H
#include <limits.h> #include <limits.h>
#include "printers.h"
/*------------------------------------ /*------------------------------------
GENERAL SETTINGS GENERAL SETTINGS
*------------------------------------*/ *------------------------------------*/
// Printer revision // Printer revision
#define PRINTER_TYPE PRINTER_MK3S #define PRINTER_TYPE PRINTER_MK3S
#define PRINTER_NAME PRINTER_MK3S_NAME
#define PRINTER_MMU_TYPE PRINTER_MK3S_MMU2
#define PRINTER_MMU_NAME PRINTER_MK3S_MMU2_NAME
#define FILAMENT_SIZE "1_75mm_MK3" #define FILAMENT_SIZE "1_75mm_MK3"
#define NOZZLE_TYPE "E3Dv6full" #define NOZZLE_TYPE "E3Dv6full"