Merge branch 'MK3' into MK3_Fix_LCD_stats
This commit is contained in:
commit
e491b53f48
|
|
@ -12,3 +12,7 @@ indent_style = space
|
||||||
indent_size = 4
|
indent_size = 4
|
||||||
tab_width = 4
|
tab_width = 4
|
||||||
max_line_length = 100
|
max_line_length = 100
|
||||||
|
|
||||||
|
[lang/po/*.po]
|
||||||
|
end_of_line = crlf
|
||||||
|
trim_trailing_whitespace = false
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
lang/po/*.po text eol=crlf
|
||||||
|
|
@ -15,6 +15,9 @@ Please, before you create a new bug report, please make sure you searched in ope
|
||||||
**MMU Upgrade** - [e.g. MMU2S, MMU2, MMU1]
|
**MMU Upgrade** - [e.g. MMU2S, MMU2, MMU1]
|
||||||
**MMU upgrade firmware version [e.g. 1.0.6, 1.0.6-RC2, ...]
|
**MMU upgrade firmware version [e.g. 1.0.6, 1.0.6-RC2, ...]
|
||||||
|
|
||||||
|
**SD card or USB/Octoprint**
|
||||||
|
Please let us know if you print via SD card or USB/Octoprint
|
||||||
|
|
||||||
**Describe the bug**
|
**Describe the bug**
|
||||||
A clear and concise description of what the bug is.
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,8 +40,8 @@ Firmware/Doc
|
||||||
/lang/*.dat
|
/lang/*.dat
|
||||||
/lang/*.tmp
|
/lang/*.tmp
|
||||||
/lang/*.out
|
/lang/*.out
|
||||||
/lang/not_tran.txt
|
/lang/not_tran*.txt
|
||||||
/lang/not_used.txt
|
/lang/not_used*.txt
|
||||||
/lang/progmem1.chr
|
/lang/progmem1.chr
|
||||||
/lang/progmem1.lss
|
/lang/progmem1.lss
|
||||||
/lang/progmem1.txt
|
/lang/progmem1.txt
|
||||||
|
|
|
||||||
|
|
@ -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-RC1"
|
#define FW_VERSION "3.9.3"
|
||||||
#define FW_COMMIT_NR 3272
|
#define FW_COMMIT_NR 3556
|
||||||
// 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
|
||||||
|
|
@ -552,7 +552,7 @@ enum CalibrationStatus
|
||||||
// Try to maintain a minimum distance from the bed even when Z is
|
// Try to maintain a minimum distance from the bed even when Z is
|
||||||
// unknown when doing the following operations
|
// unknown when doing the following operations
|
||||||
#define MIN_Z_FOR_LOAD 50
|
#define MIN_Z_FOR_LOAD 50
|
||||||
#define MIN_Z_FOR_UNLOAD 20
|
#define MIN_Z_FOR_UNLOAD 50
|
||||||
#define MIN_Z_FOR_PREHEAT 10
|
#define MIN_Z_FOR_PREHEAT 10
|
||||||
|
|
||||||
#include "Configuration_adv.h"
|
#include "Configuration_adv.h"
|
||||||
|
|
|
||||||
|
|
@ -96,7 +96,7 @@ void Config_PrintSettings(uint8_t level)
|
||||||
"%SMaximum feedrates - stealth (mm/s):\n%S M203 X%.2f Y%.2f Z%.2f E%.2f\n"
|
"%SMaximum feedrates - stealth (mm/s):\n%S M203 X%.2f Y%.2f Z%.2f E%.2f\n"
|
||||||
"%SMaximum acceleration - normal (mm/s2):\n%S M201 X%lu Y%lu Z%lu E%lu\n"
|
"%SMaximum acceleration - normal (mm/s2):\n%S M201 X%lu Y%lu Z%lu E%lu\n"
|
||||||
"%SMaximum acceleration - stealth (mm/s2):\n%S M201 X%lu Y%lu Z%lu E%lu\n"
|
"%SMaximum acceleration - stealth (mm/s2):\n%S M201 X%lu Y%lu Z%lu E%lu\n"
|
||||||
"%SAcceleration: S=acceleration, T=retract acceleration\n%S M204 S%.2f T%.2f\n"
|
"%SAcceleration: P=print, R=retract, T=travel\n%S M204 P%.2f R%.2f T%.2f\n"
|
||||||
"%SAdvanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum XY jerk (mm/s), Z=maximum Z jerk (mm/s), E=maximum E jerk (mm/s)\n%S M205 S%.2f T%.2f B%.2f X%.2f Y%.2f Z%.2f E%.2f\n"
|
"%SAdvanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum XY jerk (mm/s), Z=maximum Z jerk (mm/s), E=maximum E jerk (mm/s)\n%S M205 S%.2f T%.2f B%.2f X%.2f Y%.2f Z%.2f E%.2f\n"
|
||||||
"%SHome offset (mm):\n%S M206 X%.2f Y%.2f Z%.2f\n"
|
"%SHome offset (mm):\n%S M206 X%.2f Y%.2f Z%.2f\n"
|
||||||
),
|
),
|
||||||
|
|
@ -106,7 +106,7 @@ void Config_PrintSettings(uint8_t level)
|
||||||
echomagic, echomagic, cs.max_feedrate_silent[X_AXIS], cs.max_feedrate_silent[Y_AXIS], cs.max_feedrate_silent[Z_AXIS], cs.max_feedrate_silent[E_AXIS],
|
echomagic, echomagic, cs.max_feedrate_silent[X_AXIS], cs.max_feedrate_silent[Y_AXIS], cs.max_feedrate_silent[Z_AXIS], cs.max_feedrate_silent[E_AXIS],
|
||||||
echomagic, echomagic, cs.max_acceleration_units_per_sq_second_normal[X_AXIS], cs.max_acceleration_units_per_sq_second_normal[Y_AXIS], cs.max_acceleration_units_per_sq_second_normal[Z_AXIS], cs.max_acceleration_units_per_sq_second_normal[E_AXIS],
|
echomagic, echomagic, cs.max_acceleration_units_per_sq_second_normal[X_AXIS], cs.max_acceleration_units_per_sq_second_normal[Y_AXIS], cs.max_acceleration_units_per_sq_second_normal[Z_AXIS], cs.max_acceleration_units_per_sq_second_normal[E_AXIS],
|
||||||
echomagic, echomagic, cs.max_acceleration_units_per_sq_second_silent[X_AXIS], cs.max_acceleration_units_per_sq_second_silent[Y_AXIS], cs.max_acceleration_units_per_sq_second_silent[Z_AXIS], cs.max_acceleration_units_per_sq_second_silent[E_AXIS],
|
echomagic, echomagic, cs.max_acceleration_units_per_sq_second_silent[X_AXIS], cs.max_acceleration_units_per_sq_second_silent[Y_AXIS], cs.max_acceleration_units_per_sq_second_silent[Z_AXIS], cs.max_acceleration_units_per_sq_second_silent[E_AXIS],
|
||||||
echomagic, echomagic, cs.acceleration, cs.retract_acceleration,
|
echomagic, echomagic, cs.acceleration, cs.retract_acceleration, cs.travel_acceleration,
|
||||||
echomagic, echomagic, cs.minimumfeedrate, cs.mintravelfeedrate, cs.minsegmenttime, cs.max_jerk[X_AXIS], cs.max_jerk[Y_AXIS], cs.max_jerk[Z_AXIS], cs.max_jerk[E_AXIS],
|
echomagic, echomagic, cs.minimumfeedrate, cs.mintravelfeedrate, cs.minsegmenttime, cs.max_jerk[X_AXIS], cs.max_jerk[Y_AXIS], cs.max_jerk[Z_AXIS], cs.max_jerk[E_AXIS],
|
||||||
echomagic, echomagic, cs.add_homing[X_AXIS], cs.add_homing[Y_AXIS], cs.add_homing[Z_AXIS]
|
echomagic, echomagic, cs.add_homing[X_AXIS], cs.add_homing[Y_AXIS], cs.add_homing[Z_AXIS]
|
||||||
#else //TMC2130
|
#else //TMC2130
|
||||||
|
|
@ -114,14 +114,14 @@ void Config_PrintSettings(uint8_t level)
|
||||||
"%SSteps per unit:\n%S M92 X%.2f Y%.2f Z%.2f E%.2f\n"
|
"%SSteps per unit:\n%S M92 X%.2f Y%.2f Z%.2f E%.2f\n"
|
||||||
"%SMaximum feedrates (mm/s):\n%S M203 X%.2f Y%.2f Z%.2f E%.2f\n"
|
"%SMaximum feedrates (mm/s):\n%S M203 X%.2f Y%.2f Z%.2f E%.2f\n"
|
||||||
"%SMaximum acceleration (mm/s2):\n%S M201 X%lu Y%lu Z%lu E%lu\n"
|
"%SMaximum acceleration (mm/s2):\n%S M201 X%lu Y%lu Z%lu E%lu\n"
|
||||||
"%SAcceleration: S=acceleration, T=retract acceleration\n%S M204 S%.2f T%.2f\n"
|
"%SAcceleration: P=print, R=retract, T=travel\n%S M204 P%.2f R%.2f T%.2f\n"
|
||||||
"%SAdvanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum XY jerk (mm/s), Z=maximum Z jerk (mm/s), E=maximum E jerk (mm/s)\n%S M205 S%.2f T%.2f B%.2f X%.2f Y%.2f Z%.2f E%.2f\n"
|
"%SAdvanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum XY jerk (mm/s), Z=maximum Z jerk (mm/s), E=maximum E jerk (mm/s)\n%S M205 S%.2f T%.2f B%.2f X%.2f Y%.2f Z%.2f E%.2f\n"
|
||||||
"%SHome offset (mm):\n%S M206 X%.2f Y%.2f Z%.2f\n"
|
"%SHome offset (mm):\n%S M206 X%.2f Y%.2f Z%.2f\n"
|
||||||
),
|
),
|
||||||
echomagic, echomagic, cs.axis_steps_per_unit[X_AXIS], cs.axis_steps_per_unit[Y_AXIS], cs.axis_steps_per_unit[Z_AXIS], cs.axis_steps_per_unit[E_AXIS],
|
echomagic, echomagic, cs.axis_steps_per_unit[X_AXIS], cs.axis_steps_per_unit[Y_AXIS], cs.axis_steps_per_unit[Z_AXIS], cs.axis_steps_per_unit[E_AXIS],
|
||||||
echomagic, echomagic, max_feedrate[X_AXIS], max_feedrate[Y_AXIS], max_feedrate[Z_AXIS], max_feedrate[E_AXIS],
|
echomagic, echomagic, max_feedrate[X_AXIS], max_feedrate[Y_AXIS], max_feedrate[Z_AXIS], max_feedrate[E_AXIS],
|
||||||
echomagic, echomagic, max_acceleration_units_per_sq_second[X_AXIS], max_acceleration_units_per_sq_second[Y_AXIS], max_acceleration_units_per_sq_second[Z_AXIS], max_acceleration_units_per_sq_second[E_AXIS],
|
echomagic, echomagic, max_acceleration_units_per_sq_second[X_AXIS], max_acceleration_units_per_sq_second[Y_AXIS], max_acceleration_units_per_sq_second[Z_AXIS], max_acceleration_units_per_sq_second[E_AXIS],
|
||||||
echomagic, echomagic, cs.acceleration, cs.retract_acceleration,
|
echomagic, echomagic, cs.acceleration, cs.retract_acceleration, cs.travel_acceleration,
|
||||||
echomagic, echomagic, cs.minimumfeedrate, cs.mintravelfeedrate, cs.minsegmenttime, cs.max_jerk[X_AXIS], cs.max_jerk[Y_AXIS], cs.max_jerk[Z_AXIS], cs.max_jerk[E_AXIS],
|
echomagic, echomagic, cs.minimumfeedrate, cs.mintravelfeedrate, cs.minsegmenttime, cs.max_jerk[X_AXIS], cs.max_jerk[Y_AXIS], cs.max_jerk[Z_AXIS], cs.max_jerk[E_AXIS],
|
||||||
echomagic, echomagic, cs.add_homing[X_AXIS], cs.add_homing[Y_AXIS], cs.add_homing[Z_AXIS]
|
echomagic, echomagic, cs.add_homing[X_AXIS], cs.add_homing[Y_AXIS], cs.add_homing[Z_AXIS]
|
||||||
#endif //TMC2130
|
#endif //TMC2130
|
||||||
|
|
@ -184,7 +184,7 @@ static_assert (false, "zprobe_zoffset was not initialized in printers in field t
|
||||||
"0.0, if this is not acceptable, increment EEPROM_VERSION to force use default_conf");
|
"0.0, if this is not acceptable, increment EEPROM_VERSION to force use default_conf");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static_assert (sizeof(M500_conf) == 192, "sizeof(M500_conf) has changed, ensure that EEPROM_VERSION has been incremented, "
|
static_assert (sizeof(M500_conf) == 196, "sizeof(M500_conf) has changed, ensure that EEPROM_VERSION has been incremented, "
|
||||||
"or if you added members in the end of struct, ensure that historically uninitialized values will be initialized."
|
"or if you added members in the end of struct, ensure that historically uninitialized values will be initialized."
|
||||||
"If this is caused by change to more then 8bit processor, decide whether make this struct packed to save EEPROM,"
|
"If this is caused by change to more then 8bit processor, decide whether make this struct packed to save EEPROM,"
|
||||||
"leave as it is to keep fast code, or reorder struct members to pack more tightly.");
|
"leave as it is to keep fast code, or reorder struct members to pack more tightly.");
|
||||||
|
|
@ -232,8 +232,21 @@ static const M500_conf default_conf PROGMEM =
|
||||||
#else // TMC2130
|
#else // TMC2130
|
||||||
{16,16,16,16},
|
{16,16,16,16},
|
||||||
#endif
|
#endif
|
||||||
|
DEFAULT_TRAVEL_ACCELERATION,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static bool is_uninitialized(void* addr, uint8_t len)
|
||||||
|
{
|
||||||
|
while(len--)
|
||||||
|
{
|
||||||
|
if(reinterpret_cast<uint8_t*>(addr)[len] != 0xff)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//! @brief Read M500 configuration
|
//! @brief Read M500 configuration
|
||||||
//! @retval true Succeeded. Stored settings retrieved or default settings retrieved in case EEPROM has been erased.
|
//! @retval true Succeeded. Stored settings retrieved or default settings retrieved in case EEPROM has been erased.
|
||||||
//! @retval false Failed. Default settings has been retrieved, because of older version or corrupted data.
|
//! @retval false Failed. Default settings has been retrieved, because of older version or corrupted data.
|
||||||
|
|
@ -257,13 +270,9 @@ bool Config_RetrieveSettings()
|
||||||
for (uint8_t i = 0; i < (sizeof(cs.max_feedrate_silent)/sizeof(cs.max_feedrate_silent[0])); ++i)
|
for (uint8_t i = 0; i < (sizeof(cs.max_feedrate_silent)/sizeof(cs.max_feedrate_silent[0])); ++i)
|
||||||
{
|
{
|
||||||
const uint32_t erased = 0xffffffff;
|
const uint32_t erased = 0xffffffff;
|
||||||
bool initialized = false;
|
if (is_uninitialized(&(cs.max_feedrate_silent[i]), sizeof(float))) {
|
||||||
|
memcpy_P(&cs.max_feedrate_silent[i],&default_conf.max_feedrate_silent[i], sizeof(cs.max_feedrate_silent[i]));
|
||||||
for(uint8_t j = 0; j < sizeof(float); ++j)
|
|
||||||
{
|
|
||||||
if(0xff != reinterpret_cast<uint8_t*>(&(cs.max_feedrate_silent[i]))[j]) initialized = true;
|
|
||||||
}
|
}
|
||||||
if (!initialized) memcpy_P(&cs.max_feedrate_silent[i],&default_conf.max_feedrate_silent[i], sizeof(cs.max_feedrate_silent[i]));
|
|
||||||
if (erased == cs.max_acceleration_units_per_sq_second_silent[i]) {
|
if (erased == cs.max_acceleration_units_per_sq_second_silent[i]) {
|
||||||
memcpy_P(&cs.max_acceleration_units_per_sq_second_silent[i],&default_conf.max_acceleration_units_per_sq_second_silent[i],sizeof(cs.max_acceleration_units_per_sq_second_silent[i]));
|
memcpy_P(&cs.max_acceleration_units_per_sq_second_silent[i],&default_conf.max_acceleration_units_per_sq_second_silent[i],sizeof(cs.max_acceleration_units_per_sq_second_silent[i]));
|
||||||
}
|
}
|
||||||
|
|
@ -293,6 +302,9 @@ bool Config_RetrieveSettings()
|
||||||
tmc2130_set_res(E_AXIS, cs.axis_ustep_resolution[E_AXIS]);
|
tmc2130_set_res(E_AXIS, cs.axis_ustep_resolution[E_AXIS]);
|
||||||
#endif //TMC2130
|
#endif //TMC2130
|
||||||
|
|
||||||
|
if(is_uninitialized(&cs.travel_acceleration, sizeof(cs.travel_acceleration)))
|
||||||
|
cs.travel_acceleration = cs.acceleration;
|
||||||
|
|
||||||
reset_acceleration_rates();
|
reset_acceleration_rates();
|
||||||
|
|
||||||
// Call updatePID (similar to when we have processed M301)
|
// Call updatePID (similar to when we have processed M301)
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@ typedef struct
|
||||||
float max_feedrate_silent[4]; //!< max speeds for silent mode
|
float max_feedrate_silent[4]; //!< max speeds for silent mode
|
||||||
unsigned long max_acceleration_units_per_sq_second_silent[4];
|
unsigned long max_acceleration_units_per_sq_second_silent[4];
|
||||||
unsigned char axis_ustep_resolution[4];
|
unsigned char axis_ustep_resolution[4];
|
||||||
|
float travel_acceleration; //!< travel acceleration mm/s^2
|
||||||
} M500_conf;
|
} M500_conf;
|
||||||
|
|
||||||
extern M500_conf cs;
|
extern M500_conf cs;
|
||||||
|
|
|
||||||
|
|
@ -62,8 +62,19 @@
|
||||||
// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu)
|
// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu)
|
||||||
#define FAN_KICKSTART_TIME 800
|
#define FAN_KICKSTART_TIME 800
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Auto-report all at once with M155 S<seconds> C[bitmask] with single timer
|
||||||
|
*
|
||||||
|
* bit 0 = Auto-report temperatures
|
||||||
|
* bit 1 = Auto-report fans
|
||||||
|
* bit 2 = Auto-report position
|
||||||
|
* bit 3 = free
|
||||||
|
* bit 4 = free
|
||||||
|
* bit 5 = free
|
||||||
|
* bit 6 = free
|
||||||
|
* bit 7 = free
|
||||||
|
*/
|
||||||
|
#define AUTO_REPORT
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//=============================Mechanical Settings===========================
|
//=============================Mechanical Settings===========================
|
||||||
|
|
@ -285,11 +296,14 @@
|
||||||
#define LIN_ADVANCE
|
#define LIN_ADVANCE
|
||||||
|
|
||||||
#ifdef LIN_ADVANCE
|
#ifdef LIN_ADVANCE
|
||||||
#define LIN_ADVANCE_K 0 // Unit: mm compression per 1mm/s extruder speed
|
#define LA_K_DEF 0 // Default K factor (Unit: mm compression per 1mm/s extruder speed)
|
||||||
//#define LA_NOCOMPAT // Disable Linear Advance 1.0 compatibility
|
#define LA_K_MAX 10 // Maximum acceptable K factor (exclusive, see notes in planner.cpp:plan_buffer_line)
|
||||||
//#define LA_LIVE_K // Allow adjusting K in the Tune menu
|
#define LA_LA10_MIN LA_K_MAX // Lin. Advance 1.0 threshold value (inclusive)
|
||||||
//#define LA_DEBUG // If enabled, this will generate debug information output over USB.
|
//#define LA_FLOWADJ // Adjust LA along with flow/M221 for uniform width
|
||||||
//#define LA_DEBUG_LOGIC // @wavexx: setup logic channels for isr debugging
|
//#define LA_NOCOMPAT // Disable Linear Advance 1.0 compatibility
|
||||||
|
//#define LA_LIVE_K // Allow adjusting K in the Tune menu
|
||||||
|
//#define LA_DEBUG // If enabled, this will generate debug information output over USB.
|
||||||
|
//#define LA_DEBUG_LOGIC // @wavexx: setup logic channels for isr debugging
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Arc interpretation settings:
|
// Arc interpretation settings:
|
||||||
|
|
@ -373,6 +387,11 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Include capabilities in M115 output
|
||||||
|
*/
|
||||||
|
#define EXTENDED_CAPABILITIES_REPORT
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//============================= Define Defines ============================
|
//============================= Define Defines ============================
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|
@ -434,6 +453,10 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
#undef BED_MINTEMP
|
#undef BED_MINTEMP
|
||||||
#undef BED_MAXTEMP
|
#undef BED_MAXTEMP
|
||||||
#endif
|
#endif
|
||||||
|
#if TEMP_SENSOR_AMBIENT == 0
|
||||||
|
#undef AMBIENT_MINTEMP
|
||||||
|
#undef AMBIENT_MAXTEMP
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#endif //__CONFIGURATION_ADV_H
|
#endif //__CONFIGURATION_ADV_H
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
#include "Dcodes.h"
|
#include "Dcodes.h"
|
||||||
//#include "Marlin.h"
|
#include "Marlin.h"
|
||||||
#include "Configuration.h"
|
#include "Configuration.h"
|
||||||
#include "language.h"
|
#include "language.h"
|
||||||
#include "cmdqueue.h"
|
#include "cmdqueue.h"
|
||||||
|
|
@ -204,7 +204,7 @@ extern float axis_steps_per_unit[NUM_AXIS];
|
||||||
*/
|
*/
|
||||||
void dcode__1()
|
void dcode__1()
|
||||||
{
|
{
|
||||||
printf_P(PSTR("D-1 - Endless loop\n"));
|
DBG(_N("D-1 - Endless loop\n"));
|
||||||
// cli();
|
// cli();
|
||||||
while (1);
|
while (1);
|
||||||
}
|
}
|
||||||
|
|
@ -226,9 +226,7 @@ void dcode_0()
|
||||||
LOG("D0 - Reset\n");
|
LOG("D0 - Reset\n");
|
||||||
if (code_seen('B')) //bootloader
|
if (code_seen('B')) //bootloader
|
||||||
{
|
{
|
||||||
cli();
|
softReset();
|
||||||
wdt_enable(WDTO_15MS);
|
|
||||||
while(1);
|
|
||||||
}
|
}
|
||||||
else //reset
|
else //reset
|
||||||
{
|
{
|
||||||
|
|
@ -252,8 +250,7 @@ void dcode_1()
|
||||||
cli();
|
cli();
|
||||||
for (int i = 0; i < 8192; i++)
|
for (int i = 0; i < 8192; i++)
|
||||||
eeprom_write_byte((unsigned char*)i, (unsigned char)0xff);
|
eeprom_write_byte((unsigned char*)i, (unsigned char)0xff);
|
||||||
wdt_enable(WDTO_15MS);
|
softReset();
|
||||||
while(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -383,7 +380,7 @@ void dcode_4()
|
||||||
*/
|
*/
|
||||||
void dcode_5()
|
void dcode_5()
|
||||||
{
|
{
|
||||||
printf_P(PSTR("D5 - Read/Write FLASH\n"));
|
puts_P(PSTR("D5 - Read/Write FLASH"));
|
||||||
uint32_t address = 0x0000; //default 0x0000
|
uint32_t address = 0x0000; //default 0x0000
|
||||||
uint16_t count = 0x0400; //default 0x0400 (1kb block)
|
uint16_t count = 0x0400; //default 0x0400 (1kb block)
|
||||||
if (code_seen('A')) // Address (0x00000-0x3ffff)
|
if (code_seen('A')) // Address (0x00000-0x3ffff)
|
||||||
|
|
@ -420,8 +417,7 @@ void dcode_5()
|
||||||
boot_dst_addr = (uint32_t)address;
|
boot_dst_addr = (uint32_t)address;
|
||||||
boot_src_addr = (uint32_t)(&data);
|
boot_src_addr = (uint32_t)(&data);
|
||||||
bootapp_print_vars();
|
bootapp_print_vars();
|
||||||
wdt_enable(WDTO_15MS);
|
softReset();
|
||||||
while(1);
|
|
||||||
}
|
}
|
||||||
while (count)
|
while (count)
|
||||||
{
|
{
|
||||||
|
|
@ -467,8 +463,7 @@ void dcode_7()
|
||||||
boot_copy_size = (uint16_t)0xc00;
|
boot_copy_size = (uint16_t)0xc00;
|
||||||
boot_src_addr = (uint32_t)0x0003e400;
|
boot_src_addr = (uint32_t)0x0003e400;
|
||||||
boot_dst_addr = (uint32_t)0x0003f400;
|
boot_dst_addr = (uint32_t)0x0003f400;
|
||||||
wdt_enable(WDTO_15MS);
|
softReset();
|
||||||
while(1);
|
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -486,7 +481,7 @@ void dcode_7()
|
||||||
*/
|
*/
|
||||||
void dcode_8()
|
void dcode_8()
|
||||||
{
|
{
|
||||||
printf_P(PSTR("D8 - Read/Write PINDA\n"));
|
puts_P(PSTR("D8 - Read/Write PINDA"));
|
||||||
uint8_t cal_status = calibration_status_pinda();
|
uint8_t cal_status = calibration_status_pinda();
|
||||||
float temp_pinda = current_temperature_pinda;
|
float temp_pinda = current_temperature_pinda;
|
||||||
float offset_z = temp_compensation_pinda_thermistor_offset(temp_pinda);
|
float offset_z = temp_compensation_pinda_thermistor_offset(temp_pinda);
|
||||||
|
|
@ -592,7 +587,7 @@ uint16_t dcode_9_ADC_val(uint8_t i)
|
||||||
|
|
||||||
void dcode_9()
|
void dcode_9()
|
||||||
{
|
{
|
||||||
printf_P(PSTR("D9 - Read/Write ADC\n"));
|
puts_P(PSTR("D9 - Read/Write ADC"));
|
||||||
if ((strchr_pointer[1+1] == '?') || (strchr_pointer[1+1] == 0))
|
if ((strchr_pointer[1+1] == '?') || (strchr_pointer[1+1] == 0))
|
||||||
{
|
{
|
||||||
for (uint8_t i = 0; i < ADC_CHAN_CNT; i++)
|
for (uint8_t i = 0; i < ADC_CHAN_CNT; i++)
|
||||||
|
|
@ -635,6 +630,98 @@ void dcode_12()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HEATBED_ANALYSIS
|
||||||
|
/*!
|
||||||
|
### D80 - Bed check <a href="https://reprap.org/wiki/G-code#D80:_Bed_check">D80: Bed check</a>
|
||||||
|
This command will log data to SD card file "mesh.txt".
|
||||||
|
#### Usage
|
||||||
|
|
||||||
|
D80 [ E | F | G | H | I | J ]
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
- `E` - Dimension X (default 40)
|
||||||
|
- `F` - Dimention Y (default 40)
|
||||||
|
- `G` - Points X (default 40)
|
||||||
|
- `H` - Points Y (default 40)
|
||||||
|
- `I` - Offset X (default 74)
|
||||||
|
- `J` - Offset Y (default 34)
|
||||||
|
*/
|
||||||
|
void dcode_80()
|
||||||
|
{
|
||||||
|
float dimension_x = 40;
|
||||||
|
float dimension_y = 40;
|
||||||
|
int points_x = 40;
|
||||||
|
int points_y = 40;
|
||||||
|
float offset_x = 74;
|
||||||
|
float offset_y = 33;
|
||||||
|
|
||||||
|
if (code_seen('E')) dimension_x = code_value();
|
||||||
|
if (code_seen('F')) dimension_y = code_value();
|
||||||
|
if (code_seen('G')) {points_x = code_value(); }
|
||||||
|
if (code_seen('H')) {points_y = code_value(); }
|
||||||
|
if (code_seen('I')) {offset_x = code_value(); }
|
||||||
|
if (code_seen('J')) {offset_y = code_value(); }
|
||||||
|
printf_P(PSTR("DIM X: %f\n"), dimension_x);
|
||||||
|
printf_P(PSTR("DIM Y: %f\n"), dimension_y);
|
||||||
|
printf_P(PSTR("POINTS X: %d\n"), points_x);
|
||||||
|
printf_P(PSTR("POINTS Y: %d\n"), points_y);
|
||||||
|
printf_P(PSTR("OFFSET X: %f\n"), offset_x);
|
||||||
|
printf_P(PSTR("OFFSET Y: %f\n"), offset_y);
|
||||||
|
bed_check(dimension_x,dimension_y,points_x,points_y,offset_x,offset_y);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
### D81 - Bed analysis <a href="https://reprap.org/wiki/G-code#D81:_Bed_analysis">D80: Bed analysis</a>
|
||||||
|
This command will log data to SD card file "wldsd.txt".
|
||||||
|
#### Usage
|
||||||
|
|
||||||
|
D81 [ E | F | G | H | I | J ]
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
- `E` - Dimension X (default 40)
|
||||||
|
- `F` - Dimention Y (default 40)
|
||||||
|
- `G` - Points X (default 40)
|
||||||
|
- `H` - Points Y (default 40)
|
||||||
|
- `I` - Offset X (default 74)
|
||||||
|
- `J` - Offset Y (default 34)
|
||||||
|
*/
|
||||||
|
void dcode_81()
|
||||||
|
{
|
||||||
|
float dimension_x = 40;
|
||||||
|
float dimension_y = 40;
|
||||||
|
int points_x = 40;
|
||||||
|
int points_y = 40;
|
||||||
|
float offset_x = 74;
|
||||||
|
float offset_y = 33;
|
||||||
|
|
||||||
|
if (code_seen('E')) dimension_x = code_value();
|
||||||
|
if (code_seen('F')) dimension_y = code_value();
|
||||||
|
if (code_seen("G")) { strchr_pointer+=1; points_x = code_value(); }
|
||||||
|
if (code_seen("H")) { strchr_pointer+=1; points_y = code_value(); }
|
||||||
|
if (code_seen("I")) { strchr_pointer+=1; offset_x = code_value(); }
|
||||||
|
if (code_seen("J")) { strchr_pointer+=1; offset_y = code_value(); }
|
||||||
|
|
||||||
|
bed_analysis(dimension_x,dimension_y,points_x,points_y,offset_x,offset_y);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif //HEATBED_ANALYSIS
|
||||||
|
|
||||||
|
/*!
|
||||||
|
### D106 - Print measured fan speed for different pwm values <a href="https://reprap.org/wiki/G-code#D106:_Print_measured_fan_speed_for_different_pwm_values">D106: Print measured fan speed for different pwm values</a>
|
||||||
|
*/
|
||||||
|
void dcode_106()
|
||||||
|
{
|
||||||
|
for (int i = 255; i > 0; i = i - 5) {
|
||||||
|
fanSpeed = i;
|
||||||
|
//delay_keep_alive(2000);
|
||||||
|
for (int j = 0; j < 100; j++) {
|
||||||
|
delay_keep_alive(100);
|
||||||
|
}
|
||||||
|
printf_P(_N("%d: %d\n"), i, fan_speed[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef TMC2130
|
#ifdef TMC2130
|
||||||
#include "planner.h"
|
#include "planner.h"
|
||||||
|
|
@ -697,7 +784,7 @@ extern void st_synchronize();
|
||||||
*/
|
*/
|
||||||
void dcode_2130()
|
void dcode_2130()
|
||||||
{
|
{
|
||||||
printf_P(PSTR("D2130 - TMC2130\n"));
|
puts_P(PSTR("D2130 - TMC2130"));
|
||||||
uint8_t axis = 0xff;
|
uint8_t axis = 0xff;
|
||||||
switch (strchr_pointer[1+4])
|
switch (strchr_pointer[1+4])
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -2,26 +2,40 @@
|
||||||
#define DCODES_H
|
#define DCODES_H
|
||||||
|
|
||||||
extern void dcode__1(); //D-1 - Endless loop (to simulate deadlock)
|
extern void dcode__1(); //D-1 - Endless loop (to simulate deadlock)
|
||||||
|
|
||||||
extern void dcode_0(); //D0 - Reset
|
extern void dcode_0(); //D0 - Reset
|
||||||
extern void dcode_1(); //D1 - Clear EEPROM
|
extern void dcode_1(); //D1 - Clear EEPROM
|
||||||
extern void dcode_2(); //D2 - Read/Write RAM
|
extern void dcode_2(); //D2 - Read/Write RAM
|
||||||
|
|
||||||
|
#if defined DEBUG_DCODE3 || defined DEBUG_DCODES
|
||||||
extern void dcode_3(); //D3 - Read/Write EEPROM
|
extern void dcode_3(); //D3 - Read/Write EEPROM
|
||||||
|
#endif //DEBUG_DCODE3
|
||||||
|
|
||||||
extern void dcode_4(); //D4 - Read/Write PIN
|
extern void dcode_4(); //D4 - Read/Write PIN
|
||||||
|
|
||||||
|
#if defined DEBUG_DCODE5 || defined DEBUG_DCODES
|
||||||
extern void dcode_5(); //D5 - Read/Write FLASH
|
extern void dcode_5(); //D5 - Read/Write FLASH
|
||||||
|
#endif //DEBUG_DCODE5
|
||||||
|
|
||||||
extern void dcode_6(); //D6 - Read/Write external FLASH
|
extern void dcode_6(); //D6 - Read/Write external FLASH
|
||||||
extern void dcode_7(); //D7 - Read/Write Bootloader
|
extern void dcode_7(); //D7 - Read/Write Bootloader
|
||||||
extern void dcode_8(); //D8 - Read/Write PINDA
|
extern void dcode_8(); //D8 - Read/Write PINDA
|
||||||
extern void dcode_9(); //D9 - Read/Write ADC (Write=enable simulated, Read=disable simulated)
|
extern void dcode_9(); //D9 - Read/Write ADC (Write=enable simulated, Read=disable simulated)
|
||||||
|
|
||||||
extern void dcode_10(); //D10 - XYZ calibration = OK
|
extern void dcode_10(); //D10 - XYZ calibration = OK
|
||||||
|
extern void dcode_12(); //D12 - Log time. Writes the current time in the log file.
|
||||||
|
|
||||||
|
#ifdef HEATBED_ANALYSIS
|
||||||
|
extern void dcode_80(); //D80 - Bed check. This command will log data to SD card file "mesh.txt".
|
||||||
|
extern void dcode_81(); //D81 - Bed analysis. This command will log data to SD card file "wldsd.txt".
|
||||||
|
#endif //HEATBED_ANALYSIS
|
||||||
|
|
||||||
|
extern void dcode_106(); //D106 - Print measured fan speed for different pwm values
|
||||||
|
|
||||||
#ifdef TMC2130
|
#ifdef TMC2130
|
||||||
extern void dcode_2130(); //D2130 - TMC2130
|
extern void dcode_2130(); //D2130 - TMC2130
|
||||||
#endif //TMC2130
|
#endif //TMC2130
|
||||||
|
|
||||||
#ifdef PAT9125
|
#ifdef PAT9125
|
||||||
extern void dcode_9125(); //D9125 - PAT9125
|
extern void dcode_9125(); //D9125 - PAT9125
|
||||||
#endif //PAT9125
|
#endif //PAT9125
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
#ifndef MARLIN_H
|
#ifndef MARLIN_H
|
||||||
#define MARLIN_H
|
#define MARLIN_H
|
||||||
|
|
||||||
#define FORCE_INLINE __attribute__((always_inline)) inline
|
#include "macros.h"
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
@ -116,7 +116,6 @@ void serial_echopair_P(const char *s_P, unsigned long v);
|
||||||
void serialprintPGM(const char *str);
|
void serialprintPGM(const char *str);
|
||||||
|
|
||||||
bool is_buffer_empty();
|
bool is_buffer_empty();
|
||||||
void get_command();
|
|
||||||
void process_commands();
|
void process_commands();
|
||||||
void ramming();
|
void ramming();
|
||||||
|
|
||||||
|
|
@ -238,26 +237,15 @@ void get_coordinates();
|
||||||
void prepare_move();
|
void prepare_move();
|
||||||
void kill(const char *full_screen_message = NULL, unsigned char id = 0);
|
void kill(const char *full_screen_message = NULL, unsigned char id = 0);
|
||||||
void Stop();
|
void Stop();
|
||||||
|
|
||||||
bool IsStopped();
|
bool IsStopped();
|
||||||
|
void finishAndDisableSteppers();
|
||||||
//put an ASCII command at the end of the current buffer.
|
|
||||||
void enquecommand(const char *cmd, bool from_progmem = false);
|
|
||||||
|
|
||||||
//put an ASCII command at the end of the current buffer, read from flash
|
//put an ASCII command at the end of the current buffer, read from flash
|
||||||
#define enquecommand_P(cmd) enquecommand(cmd, true)
|
#define enquecommand_P(cmd) enquecommand(cmd, true)
|
||||||
|
|
||||||
//put an ASCII command at the begin of the current buffer
|
|
||||||
void enquecommand_front(const char *cmd, bool from_progmem = false);
|
|
||||||
|
|
||||||
//put an ASCII command at the begin of the current buffer, read from flash
|
//put an ASCII command at the begin of the current buffer, read from flash
|
||||||
#define enquecommand_front_P(cmd) enquecommand_front(cmd, true)
|
#define enquecommand_front_P(cmd) enquecommand_front(cmd, true)
|
||||||
|
|
||||||
void repeatcommand_front();
|
|
||||||
|
|
||||||
// Remove all lines from the command queue.
|
|
||||||
void cmdqueue_reset();
|
|
||||||
|
|
||||||
void prepare_arc_move(char isclockwise);
|
void prepare_arc_move(char isclockwise);
|
||||||
void clamp_to_software_endstops(float target[3]);
|
void clamp_to_software_endstops(float target[3]);
|
||||||
void refresh_cmd_timeout(void);
|
void refresh_cmd_timeout(void);
|
||||||
|
|
@ -287,11 +275,6 @@ FORCE_INLINE unsigned long millis_nc() {
|
||||||
void setPwmFrequency(uint8_t pin, int val);
|
void setPwmFrequency(uint8_t pin, int val);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef CRITICAL_SECTION_START
|
|
||||||
#define CRITICAL_SECTION_START unsigned char _sreg = SREG; cli();
|
|
||||||
#define CRITICAL_SECTION_END SREG = _sreg;
|
|
||||||
#endif //CRITICAL_SECTION_START
|
|
||||||
|
|
||||||
extern bool fans_check_enabled;
|
extern bool fans_check_enabled;
|
||||||
extern float homing_feedrate[];
|
extern float homing_feedrate[];
|
||||||
extern uint8_t axis_relative_modes;
|
extern uint8_t axis_relative_modes;
|
||||||
|
|
@ -299,20 +282,21 @@ extern float feedrate;
|
||||||
extern int feedmultiply;
|
extern int feedmultiply;
|
||||||
extern int extrudemultiply; // Sets extrude multiply factor (in percent) for all extruders
|
extern int extrudemultiply; // Sets extrude multiply factor (in percent) for all extruders
|
||||||
extern int extruder_multiply[EXTRUDERS]; // sets extrude multiply factor (in percent) for each extruder individually
|
extern int extruder_multiply[EXTRUDERS]; // sets extrude multiply factor (in percent) for each extruder individually
|
||||||
extern float volumetric_multiplier[EXTRUDERS]; // reciprocal of cross-sectional area of filament (in square millimeters), stored this way to reduce computational burden in planner
|
extern float extruder_multiplier[EXTRUDERS]; // reciprocal of cross-sectional area of filament (in square millimeters), stored this way to reduce computational burden in planner
|
||||||
extern float current_position[NUM_AXIS] ;
|
extern float current_position[NUM_AXIS] ;
|
||||||
extern float destination[NUM_AXIS] ;
|
extern float destination[NUM_AXIS] ;
|
||||||
extern float min_pos[3];
|
extern float min_pos[3];
|
||||||
extern float max_pos[3];
|
extern float max_pos[3];
|
||||||
extern bool axis_known_position[3];
|
extern bool axis_known_position[3];
|
||||||
extern int fanSpeed;
|
extern int fanSpeed;
|
||||||
|
extern uint8_t newFanSpeed;
|
||||||
extern int8_t lcd_change_fil_state;
|
extern int8_t lcd_change_fil_state;
|
||||||
extern float default_retraction;
|
extern float default_retraction;
|
||||||
|
|
||||||
#ifdef TMC2130
|
#ifdef TMC2130
|
||||||
bool homeaxis(int axis, bool doError = true, uint8_t cnt = 1, uint8_t* pstep = 0);
|
void homeaxis(int axis, uint8_t cnt = 1, uint8_t* pstep = 0);
|
||||||
#else
|
#else
|
||||||
bool homeaxis(int axis, bool doError = true, uint8_t cnt = 1);
|
void homeaxis(int axis, uint8_t cnt = 1);
|
||||||
#endif //TMC2130
|
#endif //TMC2130
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -334,7 +318,6 @@ extern unsigned long stoptime;
|
||||||
extern int bowden_length[4];
|
extern int bowden_length[4];
|
||||||
extern bool is_usb_printing;
|
extern bool is_usb_printing;
|
||||||
extern bool homing_flag;
|
extern bool homing_flag;
|
||||||
extern bool temp_cal_active;
|
|
||||||
extern bool loading_flag;
|
extern bool loading_flag;
|
||||||
extern unsigned int usb_printing_counter;
|
extern unsigned int usb_printing_counter;
|
||||||
|
|
||||||
|
|
@ -369,7 +352,7 @@ extern bool mesh_bed_run_from_menu;
|
||||||
|
|
||||||
extern bool sortAlpha;
|
extern bool sortAlpha;
|
||||||
|
|
||||||
extern char dir_names[3][9];
|
extern char dir_names[][9];
|
||||||
|
|
||||||
extern int8_t lcd_change_fil_state;
|
extern int8_t lcd_change_fil_state;
|
||||||
// save/restore printing
|
// save/restore printing
|
||||||
|
|
@ -498,6 +481,9 @@ void force_high_power_mode(bool start_high_power_section);
|
||||||
|
|
||||||
bool gcode_M45(bool onlyZ, int8_t verbosity_level);
|
bool gcode_M45(bool onlyZ, int8_t verbosity_level);
|
||||||
void gcode_M114();
|
void gcode_M114();
|
||||||
|
#if (defined(FANCHECK) && (((defined(TACH_0) && (TACH_0 >-1)) || (defined(TACH_1) && (TACH_1 > -1)))))
|
||||||
|
void gcode_M123();
|
||||||
|
#endif //FANCHECK and TACH_0 and TACH_1
|
||||||
void gcode_M701();
|
void gcode_M701();
|
||||||
|
|
||||||
#define UVLO !(PINE & (1<<4))
|
#define UVLO !(PINE & (1<<4))
|
||||||
|
|
@ -513,4 +499,8 @@ void load_filament_final_feed();
|
||||||
void marlin_wait_for_click();
|
void marlin_wait_for_click();
|
||||||
void raise_z_above(float target, bool plan=true);
|
void raise_z_above(float target, bool plan=true);
|
||||||
|
|
||||||
|
extern "C" void softReset();
|
||||||
|
|
||||||
|
extern uint32_t IP_address;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -255,7 +255,7 @@ void MarlinSerial::print(double n, int digits)
|
||||||
|
|
||||||
void MarlinSerial::println(void)
|
void MarlinSerial::println(void)
|
||||||
{
|
{
|
||||||
print('\r');
|
// print('\r');
|
||||||
print('\n');
|
print('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -359,7 +359,7 @@ void MarlinSerial::printFloat(double number, uint8_t digits)
|
||||||
|
|
||||||
// Print the decimal point, but only if there are digits beyond
|
// Print the decimal point, but only if there are digits beyond
|
||||||
if (digits > 0)
|
if (digits > 0)
|
||||||
print(".");
|
print('.');
|
||||||
|
|
||||||
// Extract digits from the remainder one at a time
|
// Extract digits from the remainder one at a time
|
||||||
while (digits-- > 0)
|
while (digits-- > 0)
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -767,6 +767,9 @@ uint8_t Sd2Card::waitStartBlock(void) {
|
||||||
|
|
||||||
// Toshiba FlashAir support, copied from
|
// Toshiba FlashAir support, copied from
|
||||||
// https://flashair-developers.com/en/documents/tutorials/arduino/
|
// https://flashair-developers.com/en/documents/tutorials/arduino/
|
||||||
|
// However, the official website was closed in September 2019.
|
||||||
|
// There is an archived website (written in Japanese).
|
||||||
|
// https://flashair-developers.github.io/website/docs/tutorials/arduino/2.html
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/** Perform Extention Read. */
|
/** Perform Extention Read. */
|
||||||
|
|
@ -774,7 +777,7 @@ uint8_t Sd2Card::readExt(uint32_t arg, uint8_t* dst, uint16_t count) {
|
||||||
uint16_t i;
|
uint16_t i;
|
||||||
|
|
||||||
// send command and argument.
|
// send command and argument.
|
||||||
if (cardCommand(CMD48, arg)) {
|
if (cardCommand(CMD48, arg) && cardCommand(CMD17, arg)) { // CMD48 for W-03, CMD17 for W-04
|
||||||
error(SD_CARD_ERROR_CMD48);
|
error(SD_CARD_ERROR_CMD48);
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -37,10 +37,6 @@ struct pin_map_t {
|
||||||
|| defined(__AVR_ATmega2560__)
|
|| defined(__AVR_ATmega2560__)
|
||||||
// Mega
|
// Mega
|
||||||
|
|
||||||
// Two Wire (aka I2C) ports
|
|
||||||
uint8_t const SDA_PIN = 20; // D1
|
|
||||||
uint8_t const SCL_PIN = 21; // D0
|
|
||||||
|
|
||||||
#undef MOSI_PIN
|
#undef MOSI_PIN
|
||||||
#undef MISO_PIN
|
#undef MISO_PIN
|
||||||
// SPI port
|
// SPI port
|
||||||
|
|
|
||||||
|
|
@ -20,10 +20,10 @@ public:
|
||||||
Timer();
|
Timer();
|
||||||
void start();
|
void start();
|
||||||
void stop(){m_isRunning = false;}
|
void stop(){m_isRunning = false;}
|
||||||
bool running(){return m_isRunning;}
|
bool running()const {return m_isRunning;}
|
||||||
bool expired(T msPeriod);
|
bool expired(T msPeriod);
|
||||||
protected:
|
protected:
|
||||||
T started(){return m_started;}
|
T started()const {return m_started;}
|
||||||
private:
|
private:
|
||||||
bool m_isRunning;
|
bool m_isRunning;
|
||||||
T m_started;
|
T m_started;
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ uint16_t adc_sim_mask;
|
||||||
|
|
||||||
void adc_init(void)
|
void adc_init(void)
|
||||||
{
|
{
|
||||||
printf_P(PSTR("adc_init\n"));
|
puts_P(PSTR("adc_init"));
|
||||||
adc_sim_mask = 0x00;
|
adc_sim_mask = 0x00;
|
||||||
ADCSRA |= (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
|
ADCSRA |= (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
|
||||||
ADMUX |= (1 << REFS0);
|
ADMUX |= (1 << REFS0);
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
//backlight.cpp
|
//backlight.cpp
|
||||||
|
|
||||||
#include "backlight.h"
|
#include "backlight.h"
|
||||||
|
#include "macros.h"
|
||||||
#include <avr/eeprom.h>
|
#include <avr/eeprom.h>
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
#include "eeprom.h"
|
#include "eeprom.h"
|
||||||
#include "Marlin.h"
|
|
||||||
#include "pins.h"
|
#include "pins.h"
|
||||||
#include "fastio.h"
|
#include "fastio.h"
|
||||||
#include "Timer.h"
|
#include "Timer.h"
|
||||||
|
|
@ -111,10 +111,10 @@ void backlight_init()
|
||||||
|
|
||||||
#else //LCD_BL_PIN
|
#else //LCD_BL_PIN
|
||||||
|
|
||||||
void force_bl_on(__attribute__((unused)) bool section_start) {}
|
void force_bl_on(bool) {}
|
||||||
void backlight_update() {}
|
void backlight_update() {}
|
||||||
void backlight_init() {}
|
void backlight_init() {}
|
||||||
void backlight_save() {}
|
void backlight_save() {}
|
||||||
void backlight_wake(__attribute__((unused)) const uint8_t flashNo) {}
|
void backlight_wake(const uint8_t) {}
|
||||||
|
|
||||||
#endif //LCD_BL_PIN
|
#endif //LCD_BL_PIN
|
||||||
|
|
@ -9,6 +9,8 @@
|
||||||
extern FILE _uartout;
|
extern FILE _uartout;
|
||||||
#define uartout (&_uartout)
|
#define uartout (&_uartout)
|
||||||
|
|
||||||
|
extern void softReset();
|
||||||
|
|
||||||
void bootapp_print_vars(void)
|
void bootapp_print_vars(void)
|
||||||
{
|
{
|
||||||
fprintf_P(uartout, PSTR("boot_src_addr =0x%08lx\n"), boot_src_addr);
|
fprintf_P(uartout, PSTR("boot_src_addr =0x%08lx\n"), boot_src_addr);
|
||||||
|
|
@ -39,8 +41,7 @@ void bootapp_ram2flash(uint16_t rptr, uint16_t fptr, uint16_t size)
|
||||||
boot_src_addr = (uint32_t)rptr;
|
boot_src_addr = (uint32_t)rptr;
|
||||||
boot_dst_addr = (uint32_t)fptr;
|
boot_dst_addr = (uint32_t)fptr;
|
||||||
bootapp_print_vars();
|
bootapp_print_vars();
|
||||||
wdt_enable(WDTO_15MS);
|
softReset();
|
||||||
while(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void bootapp_reboot_user0(uint8_t reserved)
|
void bootapp_reboot_user0(uint8_t reserved)
|
||||||
|
|
@ -50,6 +51,5 @@ void bootapp_reboot_user0(uint8_t reserved)
|
||||||
boot_app_flags = BOOT_APP_FLG_USER0;
|
boot_app_flags = BOOT_APP_FLG_USER0;
|
||||||
boot_reserved = reserved;
|
boot_reserved = reserved;
|
||||||
bootapp_print_vars();
|
bootapp_print_vars();
|
||||||
wdt_enable(WDTO_15MS);
|
softReset();
|
||||||
while(1);
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
#include "Marlin.h"
|
#include "Marlin.h"
|
||||||
|
#include "cmdqueue.h"
|
||||||
#include "cardreader.h"
|
#include "cardreader.h"
|
||||||
#include "ultralcd.h"
|
#include "ultralcd.h"
|
||||||
#include "stepper.h"
|
#include "stepper.h"
|
||||||
|
|
@ -61,9 +62,10 @@ char *createFilename(char *buffer,const dir_t &p) //buffer>12characters
|
||||||
|
|
||||||
/**
|
/**
|
||||||
+* Dive into a folder and recurse depth-first to perform a pre-set operation lsAction:
|
+* Dive into a folder and recurse depth-first to perform a pre-set operation lsAction:
|
||||||
+* LS_Count - Add +1 to nrFiles for every file within the parent
|
+* LS_Count - Add +1 to nrFiles for every file within the parent
|
||||||
+* LS_GetFilename - Get the filename of the file indexed by nrFiles
|
+* LS_GetFilename - Get the filename of the file indexed by nrFiles
|
||||||
+* LS_SerialPrint - Print the full path and size of each file to serial output
|
+* LS_SerialPrint - Print the full path and size of each file to serial output
|
||||||
|
+* LS_SerialPrint_LFN - Print the full path, long filename and size of each file to serial output
|
||||||
+*/
|
+*/
|
||||||
|
|
||||||
void CardReader::lsDive(const char *prepend, SdFile parent, const char * const match/*=NULL*/) {
|
void CardReader::lsDive(const char *prepend, SdFile parent, const char * const match/*=NULL*/) {
|
||||||
|
|
@ -89,9 +91,13 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m
|
||||||
// Serial.print(path);
|
// Serial.print(path);
|
||||||
// Get a new directory object using the full path
|
// Get a new directory object using the full path
|
||||||
// and dive recursively into it.
|
// and dive recursively into it.
|
||||||
|
|
||||||
|
if (lsAction == LS_SerialPrint_LFN)
|
||||||
|
printf_P(PSTR("DIR_ENTER: %s \"%s\"\n"), path, longFilename[0] ? longFilename : lfilename);
|
||||||
|
|
||||||
SdFile dir;
|
SdFile dir;
|
||||||
if (!dir.open(parent, lfilename, O_READ)) {
|
if (!dir.open(parent, lfilename, O_READ)) {
|
||||||
if (lsAction == LS_SerialPrint) {
|
if (lsAction == LS_SerialPrint || lsAction == LS_SerialPrint_LFN) {
|
||||||
//SERIAL_ECHO_START();
|
//SERIAL_ECHO_START();
|
||||||
//SERIAL_ECHOPGM(_i("Cannot open subdir"));////MSG_SD_CANT_OPEN_SUBDIR
|
//SERIAL_ECHOPGM(_i("Cannot open subdir"));////MSG_SD_CANT_OPEN_SUBDIR
|
||||||
//SERIAL_ECHOLN(lfilename);
|
//SERIAL_ECHOLN(lfilename);
|
||||||
|
|
@ -99,6 +105,9 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m
|
||||||
}
|
}
|
||||||
lsDive(path, dir);
|
lsDive(path, dir);
|
||||||
// close() is done automatically by destructor of SdFile
|
// close() is done automatically by destructor of SdFile
|
||||||
|
|
||||||
|
if (lsAction == LS_SerialPrint_LFN)
|
||||||
|
puts_P(PSTR("DIR_EXIT"));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
uint8_t pn0 = p.name[0];
|
uint8_t pn0 = p.name[0];
|
||||||
|
|
@ -113,12 +122,18 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m
|
||||||
nrFiles++;
|
nrFiles++;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case LS_SerialPrint_LFN:
|
||||||
case LS_SerialPrint:
|
case LS_SerialPrint:
|
||||||
createFilename(filename, p);
|
createFilename(filename, p);
|
||||||
SERIAL_PROTOCOL(prepend);
|
SERIAL_PROTOCOL(prepend);
|
||||||
SERIAL_PROTOCOL(filename);
|
SERIAL_PROTOCOL(filename);
|
||||||
MYSERIAL.write(' ');
|
MYSERIAL.write(' ');
|
||||||
|
|
||||||
|
if (lsAction == LS_SerialPrint_LFN)
|
||||||
|
printf_P(PSTR("\"%s\" "), LONGEST_FILENAME);
|
||||||
|
|
||||||
SERIAL_PROTOCOLLN(p.fileSize);
|
SERIAL_PROTOCOLLN(p.fileSize);
|
||||||
|
manage_heater();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LS_GetFilename:
|
case LS_GetFilename:
|
||||||
|
|
@ -159,9 +174,9 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m
|
||||||
} // while readDir
|
} // while readDir
|
||||||
}
|
}
|
||||||
|
|
||||||
void CardReader::ls()
|
void CardReader::ls(bool printLFN)
|
||||||
{
|
{
|
||||||
lsAction=LS_SerialPrint;
|
lsAction = printLFN ? LS_SerialPrint_LFN : LS_SerialPrint;
|
||||||
//if(lsAction==LS_Count)
|
//if(lsAction==LS_Count)
|
||||||
//nrFiles=0;
|
//nrFiles=0;
|
||||||
|
|
||||||
|
|
@ -243,6 +258,8 @@ void CardReader::release()
|
||||||
{
|
{
|
||||||
sdprinting = false;
|
sdprinting = false;
|
||||||
cardOK = false;
|
cardOK = false;
|
||||||
|
SERIAL_ECHO_START;
|
||||||
|
SERIAL_ECHOLNRPGM(_n("SD card released"));////MSG_SD_CARD_RELEASED
|
||||||
}
|
}
|
||||||
|
|
||||||
void CardReader::startFileprint()
|
void CardReader::startFileprint()
|
||||||
|
|
@ -331,7 +348,7 @@ void CardReader::diveSubfolder (const char *fileName, SdFile& dir)
|
||||||
{
|
{
|
||||||
SERIAL_PROTOCOLRPGM(MSG_SD_OPEN_FILE_FAIL);
|
SERIAL_PROTOCOLRPGM(MSG_SD_OPEN_FILE_FAIL);
|
||||||
SERIAL_PROTOCOL(subdirname);
|
SERIAL_PROTOCOL(subdirname);
|
||||||
SERIAL_PROTOCOLLNPGM(".");
|
SERIAL_PROTOCOLLN('.');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -424,13 +441,13 @@ void CardReader::openFile(const char* name,bool read, bool replace_current/*=tru
|
||||||
SERIAL_PROTOCOLLNRPGM(_N("File selected"));////MSG_SD_FILE_SELECTED
|
SERIAL_PROTOCOLLNRPGM(_N("File selected"));////MSG_SD_FILE_SELECTED
|
||||||
getfilename(0, fname);
|
getfilename(0, fname);
|
||||||
lcd_setstatus(longFilename[0] ? longFilename : fname);
|
lcd_setstatus(longFilename[0] ? longFilename : fname);
|
||||||
lcd_setstatus("SD-PRINTING ");
|
lcd_setstatuspgm(PSTR("SD-PRINTING"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SERIAL_PROTOCOLRPGM(MSG_SD_OPEN_FILE_FAIL);
|
SERIAL_PROTOCOLRPGM(MSG_SD_OPEN_FILE_FAIL);
|
||||||
SERIAL_PROTOCOL(fname);
|
SERIAL_PROTOCOL(fname);
|
||||||
SERIAL_PROTOCOLLNPGM(".");
|
SERIAL_PROTOCOLLN('.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -439,7 +456,7 @@ void CardReader::openFile(const char* name,bool read, bool replace_current/*=tru
|
||||||
{
|
{
|
||||||
SERIAL_PROTOCOLRPGM(MSG_SD_OPEN_FILE_FAIL);
|
SERIAL_PROTOCOLRPGM(MSG_SD_OPEN_FILE_FAIL);
|
||||||
SERIAL_PROTOCOL(fname);
|
SERIAL_PROTOCOL(fname);
|
||||||
SERIAL_PROTOCOLLNPGM(".");
|
SERIAL_PROTOCOLLN('.');
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -475,7 +492,7 @@ void CardReader::removeFile(const char* name)
|
||||||
{
|
{
|
||||||
SERIAL_PROTOCOLPGM("Deletion failed, File: ");
|
SERIAL_PROTOCOLPGM("Deletion failed, File: ");
|
||||||
SERIAL_PROTOCOL(fname);
|
SERIAL_PROTOCOL(fname);
|
||||||
SERIAL_PROTOCOLLNPGM(".");
|
SERIAL_PROTOCOLLN('.');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -485,33 +502,38 @@ uint32_t CardReader::getFileSize()
|
||||||
return filesize;
|
return filesize;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CardReader::getStatus()
|
void CardReader::getStatus(bool arg_P)
|
||||||
{
|
{
|
||||||
if(sdprinting)
|
if (isPrintPaused)
|
||||||
{
|
{
|
||||||
if (isPrintPaused) {
|
if (saved_printing && (saved_printing_type == PRINTING_TYPE_SD))
|
||||||
SERIAL_PROTOCOLLNPGM("SD print paused");
|
SERIAL_PROTOCOLLNPGM("SD print paused");
|
||||||
}
|
else
|
||||||
else if (saved_printing) {
|
SERIAL_PROTOCOLLNPGM("Print saved");
|
||||||
SERIAL_PROTOCOLLNPGM("Print saved");
|
}
|
||||||
}
|
else if (sdprinting)
|
||||||
else {
|
{
|
||||||
SERIAL_PROTOCOL(longFilename);
|
if (arg_P)
|
||||||
SERIAL_PROTOCOLPGM("\n");
|
{
|
||||||
SERIAL_PROTOCOLRPGM(_N("SD printing byte "));////MSG_SD_PRINTING_BYTE
|
SERIAL_PROTOCOL('/');
|
||||||
SERIAL_PROTOCOL(sdpos);
|
for (uint8_t i = 0; i < getWorkDirDepth(); i++)
|
||||||
SERIAL_PROTOCOLPGM("/");
|
printf_P(PSTR("%s/"), dir_names[i]);
|
||||||
SERIAL_PROTOCOLLN(filesize);
|
puts(filename);
|
||||||
uint16_t time = _millis()/60000 - starttime/60000;
|
}
|
||||||
SERIAL_PROTOCOL(itostr2(time/60));
|
else
|
||||||
SERIAL_PROTOCOL(':');
|
SERIAL_PROTOCOLLN(LONGEST_FILENAME);
|
||||||
SERIAL_PROTOCOL(itostr2(time%60));
|
|
||||||
SERIAL_PROTOCOLPGM("\n");
|
SERIAL_PROTOCOLRPGM(_N("SD printing byte "));////MSG_SD_PRINTING_BYTE
|
||||||
}
|
SERIAL_PROTOCOL(sdpos);
|
||||||
}
|
SERIAL_PROTOCOL('/');
|
||||||
else {
|
SERIAL_PROTOCOLLN(filesize);
|
||||||
SERIAL_PROTOCOLLNPGM("Not SD printing");
|
uint16_t time = ( _millis() - starttime ) / 60000U;
|
||||||
}
|
SERIAL_PROTOCOL(itostr2(time/60));
|
||||||
|
SERIAL_PROTOCOL(':');
|
||||||
|
SERIAL_PROTOCOLLN(itostr2(time%60));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
SERIAL_PROTOCOLLNPGM("Not SD printing");
|
||||||
}
|
}
|
||||||
void CardReader::write_command(char *buf)
|
void CardReader::write_command(char *buf)
|
||||||
{
|
{
|
||||||
|
|
@ -545,7 +567,7 @@ void CardReader::write_command_no_newline(char *buf)
|
||||||
{
|
{
|
||||||
SERIAL_ERROR_START;
|
SERIAL_ERROR_START;
|
||||||
SERIAL_ERRORLNRPGM(MSG_SD_ERR_WRITE_TO_FILE);
|
SERIAL_ERRORLNRPGM(MSG_SD_ERR_WRITE_TO_FILE);
|
||||||
MYSERIAL.println("An error while writing to the SD Card.");
|
SERIAL_PROTOCOLLNPGM("An error while writing to the SD Card.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -735,7 +757,7 @@ void CardReader::presort() {
|
||||||
// Never sort more than the max allowed
|
// Never sort more than the max allowed
|
||||||
// If you use folders to organize, 20 may be enough
|
// If you use folders to organize, 20 may be enough
|
||||||
if (fileCnt > SDSORT_LIMIT) {
|
if (fileCnt > SDSORT_LIMIT) {
|
||||||
lcd_show_fullscreen_message_and_wait_P(_i("Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."));////MSG_FILE_CNT c=20 r=4
|
lcd_show_fullscreen_message_and_wait_P(_i("Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."));////MSG_FILE_CNT c=20 r=6
|
||||||
fileCnt = SDSORT_LIMIT;
|
fileCnt = SDSORT_LIMIT;
|
||||||
}
|
}
|
||||||
lcd_clear();
|
lcd_clear();
|
||||||
|
|
@ -872,8 +894,7 @@ void CardReader::presort() {
|
||||||
for (int column = 0; column < 20; column++) {
|
for (int column = 0; column < 20; column++) {
|
||||||
if (column < (percent / 5))
|
if (column < (percent / 5))
|
||||||
{
|
{
|
||||||
lcd_set_cursor(column, 2);
|
lcd_putc_at(column, 2, '\x01'); //simple progress bar
|
||||||
lcd_print('\x01'); //simple progress bar
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
counter++;
|
counter++;
|
||||||
|
|
@ -951,8 +972,7 @@ void CardReader::presort() {
|
||||||
#if !SDSORT_USES_RAM //show progresss bar only if slow sorting method is used
|
#if !SDSORT_USES_RAM //show progresss bar only if slow sorting method is used
|
||||||
for (int column = 0; column <= 19; column++)
|
for (int column = 0; column <= 19; column++)
|
||||||
{
|
{
|
||||||
lcd_set_cursor(column, 2);
|
lcd_putc_at(column, 2, '\x01'); //simple progress bar
|
||||||
lcd_print('\x01'); //simple progress bar
|
|
||||||
}
|
}
|
||||||
_delay(300);
|
_delay(300);
|
||||||
lcd_set_degree();
|
lcd_set_degree();
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,10 @@
|
||||||
|
|
||||||
#ifdef SDSUPPORT
|
#ifdef SDSUPPORT
|
||||||
|
|
||||||
#define MAX_DIR_DEPTH 10
|
#define MAX_DIR_DEPTH 6
|
||||||
|
|
||||||
#include "SdFile.h"
|
#include "SdFile.h"
|
||||||
enum LsAction {LS_SerialPrint,LS_Count,LS_GetFilename};
|
enum LsAction {LS_SerialPrint,LS_SerialPrint_LFN,LS_Count,LS_GetFilename};
|
||||||
class CardReader
|
class CardReader
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
@ -26,7 +26,7 @@ public:
|
||||||
void release();
|
void release();
|
||||||
void startFileprint();
|
void startFileprint();
|
||||||
uint32_t getFileSize();
|
uint32_t getFileSize();
|
||||||
void getStatus();
|
void getStatus(bool arg_P);
|
||||||
void printingHasFinished();
|
void printingHasFinished();
|
||||||
|
|
||||||
void getfilename(uint16_t nr, const char* const match=NULL);
|
void getfilename(uint16_t nr, const char* const match=NULL);
|
||||||
|
|
@ -38,7 +38,7 @@ public:
|
||||||
uint16_t getWorkDirDepth();
|
uint16_t getWorkDirDepth();
|
||||||
|
|
||||||
|
|
||||||
void ls();
|
void ls(bool printLFN);
|
||||||
void chdir(const char * relpath);
|
void chdir(const char * relpath);
|
||||||
void updir();
|
void updir();
|
||||||
void setroot();
|
void setroot();
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,10 @@ int buflen = 0;
|
||||||
// Therefore don't remove the command from the queue in the loop() function.
|
// Therefore don't remove the command from the queue in the loop() function.
|
||||||
bool cmdbuffer_front_already_processed = false;
|
bool cmdbuffer_front_already_processed = false;
|
||||||
|
|
||||||
|
// Used for temporarely preventing accidental adding of Serial commands to the queue.
|
||||||
|
// For now only check_file and the fancheck pause use this.
|
||||||
|
bool cmdqueue_serial_disabled = false;
|
||||||
|
|
||||||
int serial_count = 0; //index of character read from serial line
|
int serial_count = 0; //index of character read from serial line
|
||||||
boolean comment_mode = false;
|
boolean comment_mode = false;
|
||||||
char *strchr_pointer; // just a pointer to find chars in the command string like X, Y, Z, E, etc
|
char *strchr_pointer; // just a pointer to find chars in the command string like X, Y, Z, E, etc
|
||||||
|
|
@ -91,14 +95,19 @@ bool cmdqueue_pop_front()
|
||||||
|
|
||||||
void cmdqueue_reset()
|
void cmdqueue_reset()
|
||||||
{
|
{
|
||||||
bufindr = 0;
|
while (buflen)
|
||||||
bufindw = 0;
|
{
|
||||||
buflen = 0;
|
// printf_P(PSTR("dumping: \"%s\" of type %hu\n"), cmdbuffer+bufindr+CMDHDRSIZE, CMDBUFFER_CURRENT_TYPE);
|
||||||
|
ClearToSend();
|
||||||
|
cmdqueue_pop_front();
|
||||||
|
}
|
||||||
|
bufindr = 0;
|
||||||
|
bufindw = 0;
|
||||||
|
|
||||||
//commands are removed from command queue after process_command() function is finished
|
//commands are removed from command queue after process_command() function is finished
|
||||||
//reseting command queue and enqueing new commands during some (usually long running) command processing would cause that new commands are immediately removed from queue (or damaged)
|
//reseting command queue and enqueing new commands during some (usually long running) command processing would cause that new commands are immediately removed from queue (or damaged)
|
||||||
//this will ensure that all new commands which are enqueued after cmdqueue reset, will be always executed
|
//this will ensure that all new commands which are enqueued after cmdqueue reset, will be always executed
|
||||||
cmdbuffer_front_already_processed = true;
|
cmdbuffer_front_already_processed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// How long a string could be pushed to the front of the command queue?
|
// How long a string could be pushed to the front of the command queue?
|
||||||
|
|
@ -390,7 +399,7 @@ void get_command()
|
||||||
}
|
}
|
||||||
|
|
||||||
// start of serial line processing loop
|
// start of serial line processing loop
|
||||||
while ((MYSERIAL.available() > 0 && !saved_printing) || (MYSERIAL.available() > 0 && isPrintPaused)) { //is print is saved (crash detection or filament detection), dont process data from serial line
|
while (((MYSERIAL.available() > 0 && !saved_printing) || (MYSERIAL.available() > 0 && isPrintPaused)) && !cmdqueue_serial_disabled) { //is print is saved (crash detection or filament detection), dont process data from serial line
|
||||||
|
|
||||||
char serial_char = MYSERIAL.read();
|
char serial_char = MYSERIAL.read();
|
||||||
/* if (selectedSerialPort == 1)
|
/* if (selectedSerialPort == 1)
|
||||||
|
|
@ -582,8 +591,6 @@ void get_command()
|
||||||
((serial_char == '#' || serial_char == ':') && comment_mode == false) ||
|
((serial_char == '#' || serial_char == ':') && comment_mode == false) ||
|
||||||
serial_count >= (MAX_CMD_SIZE - 1) || n==-1)
|
serial_count >= (MAX_CMD_SIZE - 1) || n==-1)
|
||||||
{
|
{
|
||||||
if(card.eof()) break;
|
|
||||||
|
|
||||||
if(serial_char=='#')
|
if(serial_char=='#')
|
||||||
stop_buffering=true;
|
stop_buffering=true;
|
||||||
|
|
||||||
|
|
@ -631,6 +638,9 @@ void get_command()
|
||||||
|
|
||||||
comment_mode = false; //for new command
|
comment_mode = false; //for new command
|
||||||
serial_count = 0; //clear buffer
|
serial_count = 0; //clear buffer
|
||||||
|
|
||||||
|
if(card.eof()) break;
|
||||||
|
|
||||||
// The following line will reserve buffer space if available.
|
// The following line will reserve buffer space if available.
|
||||||
if (! cmdqueue_could_enqueue_back(MAX_CMD_SIZE-1, true))
|
if (! cmdqueue_could_enqueue_back(MAX_CMD_SIZE-1, true))
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ extern char cmdbuffer[BUFSIZE * (MAX_CMD_SIZE + 1) + CMDBUFFER_RESERVE_FRONT];
|
||||||
extern size_t bufindr;
|
extern size_t bufindr;
|
||||||
extern int buflen;
|
extern int buflen;
|
||||||
extern bool cmdbuffer_front_already_processed;
|
extern bool cmdbuffer_front_already_processed;
|
||||||
|
extern bool cmdqueue_serial_disabled;
|
||||||
|
|
||||||
// Type of a command, which is to be executed right now.
|
// Type of a command, which is to be executed right now.
|
||||||
#define CMDBUFFER_CURRENT_TYPE (cmdbuffer[bufindr])
|
#define CMDBUFFER_CURRENT_TYPE (cmdbuffer[bufindr])
|
||||||
|
|
@ -65,8 +66,8 @@ extern void cmdqueue_dump_to_serial_single_line(int nr, const char *p);
|
||||||
extern void cmdqueue_dump_to_serial();
|
extern void cmdqueue_dump_to_serial();
|
||||||
#endif /* CMDBUFFER_DEBUG */
|
#endif /* CMDBUFFER_DEBUG */
|
||||||
extern bool cmd_buffer_empty();
|
extern bool cmd_buffer_empty();
|
||||||
extern void enquecommand(const char *cmd, bool from_progmem);
|
extern void enquecommand(const char *cmd, bool from_progmem = false);
|
||||||
extern void enquecommand_front(const char *cmd, bool from_progmem);
|
extern void enquecommand_front(const char *cmd, bool from_progmem = false);
|
||||||
extern void repeatcommand_front();
|
extern void repeatcommand_front();
|
||||||
extern bool is_buffer_empty();
|
extern bool is_buffer_empty();
|
||||||
extern void get_command();
|
extern void get_command();
|
||||||
|
|
@ -74,7 +75,7 @@ extern uint16_t cmdqueue_calc_sd_length();
|
||||||
|
|
||||||
// Return True if a character was found
|
// Return True if a character was found
|
||||||
static inline bool code_seen(char code) { return (strchr_pointer = strchr(CMDBUFFER_CURRENT_STRING, code)) != NULL; }
|
static inline bool code_seen(char code) { return (strchr_pointer = strchr(CMDBUFFER_CURRENT_STRING, code)) != NULL; }
|
||||||
static inline bool code_seen(const char *code) { return (strchr_pointer = strstr(CMDBUFFER_CURRENT_STRING, code)) != NULL; }
|
static inline bool code_seen_P(const char *code_PROGMEM) { return (strchr_pointer = strstr_P(CMDBUFFER_CURRENT_STRING, code_PROGMEM)) != NULL; }
|
||||||
static inline float code_value() { return strtod(strchr_pointer+1, NULL);}
|
static inline float code_value() { return strtod(strchr_pointer+1, NULL);}
|
||||||
static inline long code_value_long() { return strtol(strchr_pointer+1, NULL, 10); }
|
static inline long code_value_long() { return strtol(strchr_pointer+1, NULL, 10); }
|
||||||
static inline int16_t code_value_short() { return int16_t(strtol(strchr_pointer+1, NULL, 10)); };
|
static inline int16_t code_value_short() { return int16_t(strtol(strchr_pointer+1, NULL, 10)); };
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,6 @@
|
||||||
#define ADC_CALLBACK adc_ready //callback function ()
|
#define ADC_CALLBACK adc_ready //callback function ()
|
||||||
|
|
||||||
//SWI2C configuration
|
//SWI2C configuration
|
||||||
#define SWI2C
|
|
||||||
//#define SWI2C_SDA 20 //SDA on P3
|
//#define SWI2C_SDA 20 //SDA on P3
|
||||||
//#define SWI2C_SCL 21 //SCL on P3
|
//#define SWI2C_SCL 21 //SCL on P3
|
||||||
#define SWI2C_A8
|
#define SWI2C_A8
|
||||||
|
|
@ -31,7 +30,13 @@
|
||||||
#define SWI2C_TMO 2048 //2048 cycles timeout
|
#define SWI2C_TMO 2048 //2048 cycles timeout
|
||||||
|
|
||||||
//PAT9125 configuration
|
//PAT9125 configuration
|
||||||
#define PAT9125_SWI2C
|
//#define PAT9125_SWSPI // software SPI mode (incomplete)
|
||||||
|
#ifdef SWI2C_SCL
|
||||||
|
#define PAT9125_SWI2C // software I2C mode
|
||||||
|
#else
|
||||||
|
#define PAT9125_I2C // hardware I2C mode
|
||||||
|
#endif
|
||||||
|
|
||||||
#define PAT9125_I2C_ADDR 0x75 //ID=LO
|
#define PAT9125_I2C_ADDR 0x75 //ID=LO
|
||||||
//#define PAT9125_I2C_ADDR 0x79 //ID=HI
|
//#define PAT9125_I2C_ADDR 0x79 //ID=HI
|
||||||
//#define PAT9125_I2C_ADDR 0x73 //ID=NC
|
//#define PAT9125_I2C_ADDR 0x73 //ID=NC
|
||||||
|
|
|
||||||
|
|
@ -93,6 +93,10 @@ void eeprom_init()
|
||||||
eeprom_switch_to_next_sheet();
|
eeprom_switch_to_next_sheet();
|
||||||
}
|
}
|
||||||
check_babystep();
|
check_babystep();
|
||||||
|
|
||||||
|
#ifdef PINDA_TEMP_COMP
|
||||||
|
if (eeprom_read_byte((uint8_t*)EEPROM_PINDA_TEMP_COMPENSATION) == 0xff) eeprom_update_byte((uint8_t *)EEPROM_PINDA_TEMP_COMPENSATION, 0);
|
||||||
|
#endif //PINDA_TEMP_COMP
|
||||||
}
|
}
|
||||||
|
|
||||||
//! @brief Get default sheet name for index
|
//! @brief Get default sheet name for index
|
||||||
|
|
|
||||||
|
|
@ -81,6 +81,7 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
|
||||||
| :-- | :-- | :-- | :--: | :--: | :-- | :--: | :--:
|
| :-- | :-- | :-- | :--: | :--: | :-- | :--: | :--:
|
||||||
| 0x0FFFh 4095 | uchar | EEPROM_SILENT | 00h 0 | ffh 255 | TMC Stealth mode: __off__ / miniRambo Power mode | LCD menu | D3 Ax0fff C1
|
| 0x0FFFh 4095 | uchar | EEPROM_SILENT | 00h 0 | ffh 255 | TMC Stealth mode: __off__ / miniRambo Power mode | LCD menu | D3 Ax0fff C1
|
||||||
| ^ | ^ | ^ | 01h 1 | ^ | TMC Stealth mode: __on__ / miniRambo Silent mode | ^ | ^
|
| ^ | ^ | ^ | 01h 1 | ^ | TMC Stealth mode: __on__ / miniRambo Silent mode | ^ | ^
|
||||||
|
| ^ | ^ | ^ | 02h 2 | ^ | miniRambo Auto mode | ^ | ^
|
||||||
| 0x0FFEh 4094 | uchar | EEPROM_LANG | 00h 0 | ffh 255 __L__ | English / LANG_ID_PRI | LCD menu | D3 Ax0ffe C1
|
| 0x0FFEh 4094 | uchar | EEPROM_LANG | 00h 0 | ffh 255 __L__ | English / LANG_ID_PRI | LCD menu | D3 Ax0ffe C1
|
||||||
| ^ | ^ | ^ | 01h 1 | ^ | Other language LANG_ID_SEC | ^ | ^
|
| ^ | ^ | ^ | 01h 1 | ^ | Other language LANG_ID_SEC | ^ | ^
|
||||||
| 0x0FFCh 4092 | uint16 | EEPROM_BABYSTEP_X | ??? | ff ffh 65535 | Babystep for X axis _unsued_ | ??? | D3 Ax0ffc C2
|
| 0x0FFCh 4092 | uint16 | EEPROM_BABYSTEP_X | ??? | ff ffh 65535 | Babystep for X axis _unsued_ | ??? | D3 Ax0ffc C2
|
||||||
|
|
@ -97,19 +98,9 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
|
||||||
| 0x0FF1h 4081 | uint32 | EEPROM_FILAMENTUSED | ??? | 00 00 00 00h 0 __S/P__| Filament used in meters | ??? | D3 Ax0ff1 C4
|
| 0x0FF1h 4081 | uint32 | EEPROM_FILAMENTUSED | ??? | 00 00 00 00h 0 __S/P__| Filament used in meters | ??? | D3 Ax0ff1 C4
|
||||||
| 0x0FEDh 4077 | uint32 | EEPROM_TOTALTIME | ??? | 00 00 00 00h 0 __S/P__| Total print time | ??? | D3 Ax0fed C4
|
| 0x0FEDh 4077 | uint32 | EEPROM_TOTALTIME | ??? | 00 00 00 00h 0 __S/P__| Total print time | ??? | D3 Ax0fed C4
|
||||||
| 0x0FE5h 4069 | float | EEPROM_BED_CALIBRATION_CENTER | ??? | ff ff ff ffh | ??? | ??? | D3 Ax0fe5 C8
|
| 0x0FE5h 4069 | float | EEPROM_BED_CALIBRATION_CENTER | ??? | ff ff ff ffh | ??? | ??? | D3 Ax0fe5 C8
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| 0x0FDDh 4061 | float | EEPROM_BED_CALIBRATION_VEC_X | ??? | ff ff ff ffh | ??? | ??? | D3 Ax0fdd C8
|
| 0x0FDDh 4061 | float | EEPROM_BED_CALIBRATION_VEC_X | ??? | ff ff ff ffh | ??? | ??? | D3 Ax0fdd C8
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| 0x0FD5h 4053 | float | EEPROM_BED_CALIBRATION_VEC_Y | ??? | ff ff ff ffh | ??? | ??? | D3 Ax0fd5 C8
|
| 0x0FD5h 4053 | float | EEPROM_BED_CALIBRATION_VEC_Y | ??? | ff ff ff ffh | ??? | ??? | D3 Ax0fd5 C8
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| 0x0FC5h 4037 | int16 | EEPROM_BED_CALIBRATION_Z_JITTER | ??? | ff ffh 65535 | ??? | ??? | D3 Ax0fc5 C16
|
| 0x0FC5h 4037 | int16 | EEPROM_BED_CALIBRATION_Z_JITTER | ??? | ff ffh 65535 | ??? | ??? | D3 Ax0fc5 C16
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| 0x0FC4h 4036 | bool | EEPROM_FARM_MODE | 00h 0 | ffh 255 __P__ | Prusa farm mode: __off__ | G99 | D3 Ax0fc4 C1
|
| 0x0FC4h 4036 | bool | EEPROM_FARM_MODE | 00h 0 | ffh 255 __P__ | Prusa farm mode: __off__ | G99 | D3 Ax0fc4 C1
|
||||||
| ^ | ^ | ^ | 01h 1 | ^ | Prusa farm mode: __on__ | G98 | ^
|
| ^ | ^ | ^ | 01h 1 | ^ | Prusa farm mode: __on__ | G98 | ^
|
||||||
| 0x0FC3h 4035 | free | _EEPROM_FREE_NR1_ | ??? | ffh 255 | _Free EEPROM space_ | _free space_ | D3 Ax0fc3 C1
|
| 0x0FC3h 4035 | free | _EEPROM_FREE_NR1_ | ??? | ffh 255 | _Free EEPROM space_ | _free space_ | D3 Ax0fc3 C1
|
||||||
|
|
@ -128,10 +119,6 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
|
||||||
| ^ | ^ | ^ | 01h 1 | ^ | Toshiba Air: __on__ | ^ | ^
|
| ^ | ^ | ^ | 01h 1 | ^ | Toshiba Air: __on__ | ^ | ^
|
||||||
| 0x0FBAh 4026 | uchar | EEPROM_PRINT_FLAG | ??? | ??? | _unsued_ | ??? | D3 Ax0fba C1
|
| 0x0FBAh 4026 | uchar | EEPROM_PRINT_FLAG | ??? | ??? | _unsued_ | ??? | D3 Ax0fba C1
|
||||||
| 0x0FB0h 4016 | int16 | EEPROM_PROBE_TEMP_SHIFT | ??? | ??? | ??? | ??? | D3 Ax0fb0 C10
|
| 0x0FB0h 4016 | int16 | EEPROM_PROBE_TEMP_SHIFT | ??? | ??? | ??? | ??? | D3 Ax0fb0 C10
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| 0x0FAFh 4015 | bool | EEPROM_TEMP_CAL_ACTIVE | 00h 0 | 00h 0 | PINDA Temp cal.: __inactive__ | LCD menu | D3 Ax0faf C1
|
| 0x0FAFh 4015 | bool | EEPROM_TEMP_CAL_ACTIVE | 00h 0 | 00h 0 | PINDA Temp cal.: __inactive__ | LCD menu | D3 Ax0faf C1
|
||||||
| ^ | ^ | ^ | ffh 255 | ^ | PINDA Temp cal.: __active__ | ^ | ^
|
| ^ | ^ | ^ | ffh 255 | ^ | PINDA Temp cal.: __active__ | ^ | ^
|
||||||
| 0x0FA7h 4007 | uint32 | EEPROM_BOWDEN_LENGTH | ??? | ff 00 00 00h | Bowden length | ??? | D3 Ax0fae C8
|
| 0x0FA7h 4007 | uint32 | EEPROM_BOWDEN_LENGTH | ??? | ff 00 00 00h | Bowden length | ??? | D3 Ax0fae C8
|
||||||
|
|
@ -142,16 +129,8 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
|
||||||
| ^ | ^ | ^ | 01h 1 | ^ | Power Panic flag: __active__ | ^ | ^
|
| ^ | ^ | ^ | 01h 1 | ^ | Power Panic flag: __active__ | ^ | ^
|
||||||
| ^ | ^ | ^ | 02h 2 | ^ | Power Panic flag: __???__ | ^ | ^
|
| ^ | ^ | ^ | 02h 2 | ^ | Power Panic flag: __???__ | ^ | ^
|
||||||
| 0x0F9Dh 3997 | float | EEPROM_UVLO_CURRENT_POSITION | ??? | ffh 255 | Power Panic position | ??? | D3 Ax0f9d C8
|
| 0x0F9Dh 3997 | float | EEPROM_UVLO_CURRENT_POSITION | ??? | ffh 255 | Power Panic position | ??? | D3 Ax0f9d C8
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| 0x0F95h 3989 | char | EEPROM_FILENAME | ??? | ffh 255 | Power Panic Filename | ??? | D3 Ax0f95 C8
|
| 0x0F95h 3989 | char | EEPROM_FILENAME | ??? | ffh 255 | Power Panic Filename | ??? | D3 Ax0f95 C8
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
| 0x0F91h 3985 | uint32 | EEPROM_FILE_POSITION | ??? | ff ff ff ffh | Power Panic File Position | ??? | D3 Ax0f91 C4
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| 0x0F91h 39851 | uint32 | EEPROM_FILE_POSITION | ??? | ff ff ff ffh | Power Panic File Position | ??? | D3 Ax0f91 C4
|
|
||||||
| 0x0F8Dh 3981 | float | EEPROM_UVLO_CURRENT_POSITION_Z | ??? | ff ff ff ffh | Power Panic Z Position | ^ | D3 Ax0f8d C4
|
| 0x0F8Dh 3981 | float | EEPROM_UVLO_CURRENT_POSITION_Z | ??? | ff ff ff ffh | Power Panic Z Position | ^ | D3 Ax0f8d C4
|
||||||
| 0x0F8Ch 3980 | ??? | EEPROM_UVLO_UNUSED_001 | ??? | ffh 255 | Power Panic _unused_ | ^ | D3 Ax0f8c C1
|
| 0x0F8Ch 3980 | ??? | EEPROM_UVLO_UNUSED_001 | ??? | ffh 255 | Power Panic _unused_ | ^ | D3 Ax0f8c C1
|
||||||
| 0x0F8Bh 3979 | uint8 | EEPROM_UVLO_TARGET_BED | ??? | ffh 255 | Power Panic Bed temperature | ^ | D3 Ax0f8b C1
|
| 0x0F8Bh 3979 | uint8 | EEPROM_UVLO_TARGET_BED | ??? | ffh 255 | Power Panic Bed temperature | ^ | D3 Ax0f8b C1
|
||||||
|
|
@ -160,14 +139,6 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
|
||||||
| 0x0F87h 3975 | uint8 | EEPROM_FAN_CHECK_ENABLED | 00h 0 | ??? | Fan Check __disabled__ | LCD menu | D3 Ax0f87 C1
|
| 0x0F87h 3975 | uint8 | EEPROM_FAN_CHECK_ENABLED | 00h 0 | ??? | Fan Check __disabled__ | LCD menu | D3 Ax0f87 C1
|
||||||
| ^ | ^ | ^ | 01h 1 | ffh 255 | Fan Check __enabled__ | ^ | ^
|
| ^ | ^ | ^ | 01h 1 | ffh 255 | Fan Check __enabled__ | ^ | ^
|
||||||
| 0x0F75h 3957 | uint16 | EEPROM_UVLO_MESH_BED_LEVELING | ??? | ff ffh 65535 | Power Panic Mesh Bed Leveling | ??? | D3 Ax0f75 C18
|
| 0x0F75h 3957 | uint16 | EEPROM_UVLO_MESH_BED_LEVELING | ??? | ff ffh 65535 | Power Panic Mesh Bed Leveling | ??? | D3 Ax0f75 C18
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
|
|
||||||
| 0x0F73h 3955 | uint16 | EEPROM_UVLO_Z_MICROSTEPS | ??? | ff ffh 65535 | Power Panic Z microsteps | ??? | D3 Ax0f73 C2
|
| 0x0F73h 3955 | uint16 | EEPROM_UVLO_Z_MICROSTEPS | ??? | ff ffh 65535 | Power Panic Z microsteps | ??? | D3 Ax0f73 C2
|
||||||
| 0x0F72h 3954 | uint8 | EEPROM_UVLO_E_ABS | ??? | ffh 255 | Power Panic ??? position | ??? | D3 Ax0f72 C1
|
| 0x0F72h 3954 | uint8 | EEPROM_UVLO_E_ABS | ??? | ffh 255 | Power Panic ??? position | ??? | D3 Ax0f72 C1
|
||||||
| 0x0F6Eh 3950 | foat | EEPROM_UVLO_CURRENT_POSITION_E | ??? | ff ff ff ffh | Power Panic E position | ??? | D3 Ax0f6e C4
|
| 0x0F6Eh 3950 | foat | EEPROM_UVLO_CURRENT_POSITION_E | ??? | ff ff ff ffh | Power Panic E position | ??? | D3 Ax0f6e C4
|
||||||
|
|
@ -202,7 +173,7 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
|
||||||
| 0x0F01h 3841 | uint16 | EEPROM_FERROR_COUNT_TOT | 0000-fffe | ff ffh __S/P__ | Total filament sensor errors | ??? | D3 Ax0f01 C2
|
| 0x0F01h 3841 | uint16 | EEPROM_FERROR_COUNT_TOT | 0000-fffe | ff ffh __S/P__ | Total filament sensor errors | ??? | D3 Ax0f01 C2
|
||||||
| 0x0EFFh 3839 | uint16 | EEPROM_POWER_COUNT_TOT | 0000-fffe | ff ffh __S/P__ | Total power failures | ??? | D3 Ax0eff C2
|
| 0x0EFFh 3839 | uint16 | EEPROM_POWER_COUNT_TOT | 0000-fffe | ff ffh __S/P__ | Total power failures | ??? | D3 Ax0eff C2
|
||||||
| 0x0EFEh 3838 | uint8 | EEPROM_TMC2130_HOME_X_ORIGIN | ??? | ffh 255 | ??? | ??? | D3 Ax0efe C1
|
| 0x0EFEh 3838 | uint8 | EEPROM_TMC2130_HOME_X_ORIGIN | ??? | ffh 255 | ??? | ??? | D3 Ax0efe C1
|
||||||
| 0x0EFDh 3837 | uint8 | EEPROM MC2130_HOME_X_BSTEPS | ??? | ffh 255 | ??? | ??? | D3 Ax0efd C1
|
| 0x0EFDh 3837 | uint8 | EEPROM MC2130_HOME_X_BSTEPS | ??? | ffh 255 | ??? | ??? | D3 Ax0efd C1
|
||||||
| 0x0EFCh 3836 | uint8 | EEPROM_TMC2130_HOME_X_FSTEPS | ??? | ffh 255 | ??? | ??? | D3 Ax0efc C1
|
| 0x0EFCh 3836 | uint8 | EEPROM_TMC2130_HOME_X_FSTEPS | ??? | ffh 255 | ??? | ??? | D3 Ax0efc C1
|
||||||
| 0x0EFBh 3835 | uint8 | EEPROM_TMC2130_HOME_Y_ORIGIN | ??? | ffh 255 | ??? | ??? | D3 Ax0efb C1
|
| 0x0EFBh 3835 | uint8 | EEPROM_TMC2130_HOME_Y_ORIGIN | ??? | ffh 255 | ??? | ??? | D3 Ax0efb C1
|
||||||
| 0x0EFAh 3834 | uint8 | EEPROM_TMC2130_HOME_Y_BSTEPS | ??? | ffh 255 | ??? | ??? | D3 Ax0efa C1
|
| 0x0EFAh 3834 | uint8 | EEPROM_TMC2130_HOME_Y_BSTEPS | ??? | ffh 255 | ??? | ??? | D3 Ax0efa C1
|
||||||
|
|
@ -256,28 +227,6 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
|
||||||
| ^ | ^ | ^ | 01h 1 | ^ | MMU2/s cutter: __enabled__ | ^ | ^
|
| ^ | ^ | ^ | 01h 1 | ^ | MMU2/s cutter: __enabled__ | ^ | ^
|
||||||
| ^ | ^ | ^ | 02h 2 | ^ | MMU2/s cutter: __always__ | ^ | ^
|
| ^ | ^ | ^ | 02h 2 | ^ | MMU2/s cutter: __always__ | ^ | ^
|
||||||
| 0x0DAE 3502 | uint16 | EEPROM_UVLO_MESH_BED_LEVELING_FULL | ??? | ff ffh 65535 | Power panic Mesh bed leveling points | ??? | D3 Ax0dae C288
|
| 0x0DAE 3502 | uint16 | EEPROM_UVLO_MESH_BED_LEVELING_FULL | ??? | ff ffh 65535 | Power panic Mesh bed leveling points | ??? | D3 Ax0dae C288
|
||||||
| ^ | ^ | ^ | ??? | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ??? | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ??? | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ??? | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ??? | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ??? | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ??? | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ??? | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ??? | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ??? | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ??? | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ??? | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ??? | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ??? | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ??? | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ??? | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ??? | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ??? | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ??? | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ??? | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ??? | ^ | ^ | ^ | ^
|
|
||||||
| ^ | ^ | ^ | ??? | ^ | ^ | ^ | ^
|
|
||||||
| 0x0DAD 3501 | uint8 | EEPROM_MBL_TYPE | ??? | ffh 255 | Mesh bed leveling precision _unused atm_ | ??? | D3 Ax0dad C1
|
| 0x0DAD 3501 | uint8 | EEPROM_MBL_TYPE | ??? | ffh 255 | Mesh bed leveling precision _unused atm_ | ??? | D3 Ax0dad C1
|
||||||
| 0x0DAC 3500 | bool | EEPROM_MBL_MAGNET_ELIMINATION | 01h 1 | ffh 255 | Mesh bed leveling does: __ignores__ magnets | LCD menu | D3 Ax0dac C1
|
| 0x0DAC 3500 | bool | EEPROM_MBL_MAGNET_ELIMINATION | 01h 1 | ffh 255 | Mesh bed leveling does: __ignores__ magnets | LCD menu | D3 Ax0dac C1
|
||||||
| ^ | ^ | ^ | 00h 0 | ^ | Mesh bed leveling does: __NOT ignores__ magnets | ^ | ^
|
| ^ | ^ | ^ | 00h 0 | ^ | Mesh bed leveling does: __NOT ignores__ magnets | ^ | ^
|
||||||
|
|
@ -293,9 +242,11 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
|
||||||
| ^ | ^ | ^ | 00h 0 | ^ | Check mode for nozzle is: __none__ | ^ | ^
|
| ^ | ^ | ^ | 00h 0 | ^ | Check mode for nozzle is: __none__ | ^ | ^
|
||||||
| 0x0DA7 3495 | uint8 | EEPROM_NOZZLE_DIAMETER | 28h 40 | ffh 255 | Nozzle diameter is: __40 or 0.40mm__ | LCD menu | D3 Ax0da7 C1
|
| 0x0DA7 3495 | uint8 | EEPROM_NOZZLE_DIAMETER | 28h 40 | ffh 255 | Nozzle diameter is: __40 or 0.40mm__ | LCD menu | D3 Ax0da7 C1
|
||||||
| ^ | ^ | ^ | 3ch 60 | ^ | Nozzle diameter is: __60 or 0.60mm__ | ^ | ^
|
| ^ | ^ | ^ | 3ch 60 | ^ | Nozzle diameter is: __60 or 0.60mm__ | ^ | ^
|
||||||
|
| ^ | ^ | ^ | 3ch 80 | ^ | Nozzle diameter is: __80 or 0.80mm__ | ^ | ^
|
||||||
| ^ | ^ | ^ | 19h 25 | ^ | Nozzle diameter is: __25 or 0.25mm__ | ^ | ^
|
| ^ | ^ | ^ | 19h 25 | ^ | Nozzle diameter is: __25 or 0.25mm__ | ^ | ^
|
||||||
| 0x0DA5 3493 | uint16 | EEPROM_NOZZLE_DIAMETER_uM | 9001h | ff ffh 65535 | Nozzle diameter is: __400um__ | LCD menu | D3 Ax0da5 C2
|
| 0x0DA5 3493 | uint16 | EEPROM_NOZZLE_DIAMETER_uM | 9001h | ff ffh 65535 | Nozzle diameter is: __400um__ | LCD menu | D3 Ax0da5 C2
|
||||||
| ^ | ^ | ^ | 5802h | ^ | Nozzle diameter is: __600um__ | ^ | ^
|
| ^ | ^ | ^ | 5802h | ^ | Nozzle diameter is: __600um__ | ^ | ^
|
||||||
|
| ^ | ^ | ^ | 2003h | ^ | Nozzle diameter is: __800um__ | ^ | ^
|
||||||
| ^ | ^ | ^ | fa00h | ^ | Nozzle diameter is: __250um__ | ^ | ^
|
| ^ | ^ | ^ | fa00h | ^ | Nozzle diameter is: __250um__ | ^ | ^
|
||||||
| 0x0DA4 3492 | uint8 | EEPROM_CHECK_MODEL | 01h 1 | ffh 255 | Check mode for printer model is: __warn__ | LCD menu | D3 Ax0da4 C1
|
| 0x0DA4 3492 | uint8 | EEPROM_CHECK_MODEL | 01h 1 | ffh 255 | Check mode for printer model is: __warn__ | LCD menu | D3 Ax0da4 C1
|
||||||
| ^ | ^ | ^ | 02h 0 | ^ | Check mode for printer model is: __strict__ | ^ | ^
|
| ^ | ^ | ^ | 02h 0 | ^ | Check mode for printer model is: __strict__ | ^ | ^
|
||||||
|
|
@ -340,8 +291,9 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
|
||||||
| 0x0D9F 3487 | uint8 | ^ | 00h 0 | ffh 255 | 8th sheet - bed temp | ^ | D3 Ax0d9f C1
|
| 0x0D9F 3487 | uint8 | ^ | 00h 0 | ffh 255 | 8th sheet - bed temp | ^ | D3 Ax0d9f C1
|
||||||
| 0x0DA0 3488 | uint8 | ^ | 00h 0 | ffh 255 | 8th sheet - PINDA temp | ^ | D3 Ax0da0 C1
|
| 0x0DA0 3488 | uint8 | ^ | 00h 0 | ffh 255 | 8th sheet - PINDA temp | ^ | D3 Ax0da0 C1
|
||||||
| 0x0DA1 3489 | uint8 | ??? | 00h 0 | ffh 255 | ??? | ??? | D3 Ax0da1 C1
|
| 0x0DA1 3489 | uint8 | ??? | 00h 0 | ffh 255 | ??? | ??? | D3 Ax0da1 C1
|
||||||
| 0x0D48 3400 | uint8 | EEPROM_FSENSOR_PCB | ??? | ffh 255 | Filament Sensor type old vs new | ??? | D3 Ax0d48 C1
|
| 0x0D48 3400 | uint8 | EEPROM_FSENSOR_PCB | ffh 255 | ffh 255 | Filament Sensor type IR unknown | LCD Support | D3 Ax0d48 C1
|
||||||
| ^ | ^ | ^ | ??? | ^ | Filament Sensor type ??? | ^ | ^
|
| ^ | ^ | ^ | 00h 0 | ^ | Filament Sensor type IR 0.3 or older | ^ | ^
|
||||||
|
| ^ | ^ | ^ | 01h 1 | ^ | Filament Sensor type IR 0.4 or newer | ^ | ^
|
||||||
| 0x0D47 3399 | uint8 | EEPROM_FSENSOR_ACTION_NA | 00h 0 | ffh 255 | Filament Sensor action: __Continue__ | LCD menu | D3 Ax0d47 C1
|
| 0x0D47 3399 | uint8 | EEPROM_FSENSOR_ACTION_NA | 00h 0 | ffh 255 | Filament Sensor action: __Continue__ | LCD menu | D3 Ax0d47 C1
|
||||||
| ^ | ^ | ^ | 01h 1 | ^ | Filament Sensor action: __Pause__ | ^ | ^
|
| ^ | ^ | ^ | 01h 1 | ^ | Filament Sensor action: __Pause__ | ^ | ^
|
||||||
| 0x0D37 3383 | float | EEPROM_UVLO_SAVED_TARGET | ??? | ff ff ff ffh | Power panic saved target all-axis | ??? | D3 Ax0d37 C16
|
| 0x0D37 3383 | float | EEPROM_UVLO_SAVED_TARGET | ??? | ff ff ff ffh | Power panic saved target all-axis | ??? | D3 Ax0d37 C16
|
||||||
|
|
@ -357,7 +309,19 @@ 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 | ffh 255 | ffh 255 | ALTFAN override unknown state | LCD menu | D3 Ax0d2b C1
|
||||||
|
| ^ | ^ | ^ | 00h 0 | ^ | ALTFAN override deactivated | ^ | ^
|
||||||
|
| ^ | ^ | ^ | 01h 1 | ^ | ALTFAN override activated | ^ | ^
|
||||||
|
| 0x0D2A 3370 | uint8 | EEPROM_EXPERIMENTAL_VISIBILITY | ffh 255 | ffh 255 | Experimental menu visibility unknown state | LCD menu | D3 Ax0d2a C1
|
||||||
|
| ^ | ^ | ^ | 00h 0 | ^ | Experimental menu visibility hidden | ^ | ^
|
||||||
|
| ^ | ^ | ^ | 01h 1 | ^ | Experimental menu visibility visible | ^ | ^
|
||||||
|
| 0x0D29 3369 | uint8 | EEPROM_PINDA_TEMP_COMPENSATION | ffh 255 | ffh 255 | PINDA temp compensation unknown state | LCD menu | D3 Ax0d29 C1
|
||||||
|
| ^ | ^ | ^ | 00h 0 | ^ | PINDA has no temp compensation PINDA v1/2 | ^ | ^
|
||||||
|
| ^ | ^ | ^ | 01h 1 | ^ | PINDA has temp compensation aka SuperPINDA | ^ | ^
|
||||||
|
| 0x0D15 3349 | char[20] | EEPROM_PRUSA_SN | SN[19] == 0 | ffffffffffffffff... | PRUSA Serial number string | PRUSA SN | D3 Ax0d15 C20
|
||||||
|
| 0x0D11 3345 | float | EEPROM_UVLO_ACCELL | ??? | ff ff ff ffh | Power panic saved normal acceleration | ??? | D3 Ax0d11 C4
|
||||||
|
| 0x0D0D 3341 | float | EEPROM_UVLO_RETRACT_ACCELL | ??? | ff ff ff ffh | Power panic saved retract acceleration | ??? | D3 Ax0d0d C4
|
||||||
|
| 0x0D09 3337 | float | EEPROM_UVLO_TRAVEL_ACCELL | ??? | ff ff ff ffh | Power panic saved travel acceleration | ??? | D3 Ax0d09 C4
|
||||||
|
|
||||||
| 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
|
||||||
| :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--:
|
| :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--:
|
||||||
|
|
@ -559,8 +523,17 @@ 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
|
||||||
|
#define EEPROM_PINDA_TEMP_COMPENSATION (EEPROM_EXPERIMENTAL_VISIBILITY-1) //uint8
|
||||||
|
#define EEPROM_PRUSA_SN (EEPROM_PINDA_TEMP_COMPENSATION-20) //char[20]
|
||||||
|
|
||||||
|
#define EEPROM_UVLO_ACCELL (EEPROM_PRUSA_SN-4) // float
|
||||||
|
#define EEPROM_UVLO_RETRACT_ACCELL (EEPROM_UVLO_ACCELL-4) // float
|
||||||
|
#define EEPROM_UVLO_TRAVEL_ACCELL (EEPROM_UVLO_RETRACT_ACCELL-4) // float
|
||||||
|
|
||||||
//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_UVLO_TRAVEL_ACCELL
|
||||||
// !!!!!
|
// !!!!!
|
||||||
// !!!!! 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 !!!!!
|
||||||
// !!!!!
|
// !!!!!
|
||||||
|
|
|
||||||
|
|
@ -7,15 +7,8 @@
|
||||||
#define _FASTIO_ARDUINO_H
|
#define _FASTIO_ARDUINO_H
|
||||||
|
|
||||||
#include <avr/io.h>
|
#include <avr/io.h>
|
||||||
|
#include "macros.h"
|
||||||
|
|
||||||
/*
|
|
||||||
utility functions
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef MASK
|
|
||||||
/// MASKING- returns \f$2^PIN\f$
|
|
||||||
#define MASK(PIN) (1 << PIN)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
magic I/O routines
|
magic I/O routines
|
||||||
|
|
@ -23,20 +16,20 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/// Read a pin
|
/// Read a pin
|
||||||
#define _READ(IO) ((bool)(DIO ## IO ## _RPORT & MASK(DIO ## IO ## _PIN)))
|
#define _READ(IO) ((bool)(DIO ## IO ## _RPORT & _BV(DIO ## IO ## _PIN)))
|
||||||
/// write to a pin
|
/// write to a pin
|
||||||
// On some boards pins > 0x100 are used. These are not converted to atomic actions. An critical section is needed.
|
// On some boards pins > 0x100 are used. These are not converted to atomic actions. An critical section is needed.
|
||||||
|
|
||||||
#define _WRITE_NC(IO, v) do { if (v) {DIO ## IO ## _WPORT |= MASK(DIO ## IO ## _PIN); } else {DIO ## IO ## _WPORT &= ~MASK(DIO ## IO ## _PIN); }; } while (0)
|
#define _WRITE_NC(IO, v) do { if (v) {DIO ## IO ## _WPORT |= _BV(DIO ## IO ## _PIN); } else {DIO ## IO ## _WPORT &= ~_BV(DIO ## IO ## _PIN); }; } while (0)
|
||||||
|
|
||||||
#define _WRITE_C(IO, v) do { if (v) { \
|
#define _WRITE_C(IO, v) do { if (v) { \
|
||||||
CRITICAL_SECTION_START; \
|
CRITICAL_SECTION_START; \
|
||||||
{DIO ## IO ## _WPORT |= MASK(DIO ## IO ## _PIN); }\
|
{DIO ## IO ## _WPORT |= _BV(DIO ## IO ## _PIN); }\
|
||||||
CRITICAL_SECTION_END; \
|
CRITICAL_SECTION_END; \
|
||||||
}\
|
}\
|
||||||
else {\
|
else {\
|
||||||
CRITICAL_SECTION_START; \
|
CRITICAL_SECTION_START; \
|
||||||
{DIO ## IO ## _WPORT &= ~MASK(DIO ## IO ## _PIN); }\
|
{DIO ## IO ## _WPORT &= ~_BV(DIO ## IO ## _PIN); }\
|
||||||
CRITICAL_SECTION_END; \
|
CRITICAL_SECTION_END; \
|
||||||
}\
|
}\
|
||||||
}\
|
}\
|
||||||
|
|
@ -45,20 +38,20 @@
|
||||||
#define _WRITE(IO, v) do { if (&(DIO ## IO ## _RPORT) >= (uint8_t *)0x100) {_WRITE_C(IO, v); } else {_WRITE_NC(IO, v); }; } while (0)
|
#define _WRITE(IO, v) do { if (&(DIO ## IO ## _RPORT) >= (uint8_t *)0x100) {_WRITE_C(IO, v); } else {_WRITE_NC(IO, v); }; } while (0)
|
||||||
|
|
||||||
/// toggle a pin
|
/// toggle a pin
|
||||||
#define _TOGGLE(IO) do {DIO ## IO ## _RPORT = MASK(DIO ## IO ## _PIN); } while (0)
|
#define _TOGGLE(IO) do {DIO ## IO ## _RPORT = _BV(DIO ## IO ## _PIN); } while (0)
|
||||||
|
|
||||||
/// set pin as input
|
/// set pin as input
|
||||||
#define _SET_INPUT(IO) do {DIO ## IO ## _DDR &= ~MASK(DIO ## IO ## _PIN); } while (0)
|
#define _SET_INPUT(IO) do {DIO ## IO ## _DDR &= ~_BV(DIO ## IO ## _PIN); } while (0)
|
||||||
/// set pin as output
|
/// set pin as output
|
||||||
#define _SET_OUTPUT(IO) do {DIO ## IO ## _DDR |= MASK(DIO ## IO ## _PIN); } while (0)
|
#define _SET_OUTPUT(IO) do {DIO ## IO ## _DDR |= _BV(DIO ## IO ## _PIN); } while (0)
|
||||||
|
|
||||||
/// check if pin is an input
|
/// check if pin is an input
|
||||||
#define _GET_INPUT(IO) ((DIO ## IO ## _DDR & MASK(DIO ## IO ## _PIN)) == 0)
|
#define _GET_INPUT(IO) ((DIO ## IO ## _DDR & _BV(DIO ## IO ## _PIN)) == 0)
|
||||||
/// check if pin is an output
|
/// check if pin is an output
|
||||||
#define _GET_OUTPUT(IO) ((DIO ## IO ## _DDR & MASK(DIO ## IO ## _PIN)) != 0)
|
#define _GET_OUTPUT(IO) ((DIO ## IO ## _DDR & _BV(DIO ## IO ## _PIN)) != 0)
|
||||||
|
|
||||||
/// check if pin is an timer
|
/// check if pin is an timer
|
||||||
#define _GET_TIMER(IO) ((DIO ## IO ## _PWM)
|
#define _GET_TIMER(IO) (DIO ## IO ## _PWM)
|
||||||
|
|
||||||
// why double up on these macros? see http://gcc.gnu.org/onlinedocs/cpp/Stringification.html
|
// why double up on these macros? see http://gcc.gnu.org/onlinedocs/cpp/Stringification.html
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
#include "Configuration_prusa.h"
|
#include "Configuration_prusa.h"
|
||||||
#include "language.h"
|
#include "language.h"
|
||||||
#include "Marlin.h"
|
#include "Marlin.h"
|
||||||
|
#include "cmdqueue.h"
|
||||||
#include "mmu.h"
|
#include "mmu.h"
|
||||||
#include <avr/pgmspace.h>
|
#include <avr/pgmspace.h>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@
|
||||||
#include <avr/pgmspace.h>
|
#include <avr/pgmspace.h>
|
||||||
#include "pat9125.h"
|
#include "pat9125.h"
|
||||||
#include "stepper.h"
|
#include "stepper.h"
|
||||||
#include "io_atmega2560.h"
|
|
||||||
#include "cmdqueue.h"
|
#include "cmdqueue.h"
|
||||||
#include "ultralcd.h"
|
#include "ultralcd.h"
|
||||||
#include "mmu.h"
|
#include "mmu.h"
|
||||||
|
|
@ -130,7 +129,7 @@ unsigned long nIRsensorLastTime;
|
||||||
|
|
||||||
void fsensor_stop_and_save_print(void)
|
void fsensor_stop_and_save_print(void)
|
||||||
{
|
{
|
||||||
printf_P(PSTR("fsensor_stop_and_save_print\n"));
|
puts_P(PSTR("fsensor_stop_and_save_print"));
|
||||||
stop_and_save_print_to_ram(0, 0);
|
stop_and_save_print_to_ram(0, 0);
|
||||||
fsensor_watch_runout = false;
|
fsensor_watch_runout = false;
|
||||||
}
|
}
|
||||||
|
|
@ -153,7 +152,7 @@ void fsensor_set_axis_steps_per_unit(float u)
|
||||||
|
|
||||||
void fsensor_restore_print_and_continue(void)
|
void fsensor_restore_print_and_continue(void)
|
||||||
{
|
{
|
||||||
printf_P(PSTR("fsensor_restore_print_and_continue\n"));
|
puts_P(PSTR("fsensor_restore_print_and_continue"));
|
||||||
fsensor_watch_runout = true;
|
fsensor_watch_runout = true;
|
||||||
#ifdef PAT9125
|
#ifdef PAT9125
|
||||||
fsensor_reset_err_cnt();
|
fsensor_reset_err_cnt();
|
||||||
|
|
@ -165,53 +164,77 @@ void fsensor_restore_print_and_continue(void)
|
||||||
// allowing new instructions to be inserted in the middle
|
// allowing new instructions to be inserted in the middle
|
||||||
void fsensor_checkpoint_print(void)
|
void fsensor_checkpoint_print(void)
|
||||||
{
|
{
|
||||||
printf_P(PSTR("fsensor_checkpoint_print\n"));
|
puts_P(PSTR("fsensor_checkpoint_print"));
|
||||||
stop_and_save_print_to_ram(0, 0);
|
stop_and_save_print_to_ram(0, 0);
|
||||||
restore_print_from_ram_and_continue(0);
|
restore_print_from_ram_and_continue(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef IR_SENSOR_ANALOG
|
||||||
|
const char* FsensorIRVersionText()
|
||||||
|
{
|
||||||
|
switch(oFsensorPCB)
|
||||||
|
{
|
||||||
|
case ClFsensorPCB::_Old:
|
||||||
|
return _T(MSG_IR_03_OR_OLDER);
|
||||||
|
case ClFsensorPCB::_Rev04:
|
||||||
|
return _T(MSG_IR_04_OR_NEWER);
|
||||||
|
default:
|
||||||
|
return _T(MSG_IR_UNKNOWN);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif //IR_SENSOR_ANALOG
|
||||||
|
|
||||||
void fsensor_init(void)
|
void fsensor_init(void)
|
||||||
{
|
{
|
||||||
#ifdef PAT9125
|
#ifdef PAT9125
|
||||||
uint8_t pat9125 = pat9125_init();
|
uint8_t pat9125 = pat9125_init();
|
||||||
printf_P(PSTR("PAT9125_init:%hhu\n"), pat9125);
|
printf_P(PSTR("PAT9125_init:%hhu\n"), pat9125);
|
||||||
#endif //PAT9125
|
#endif //PAT9125
|
||||||
uint8_t fsensor = eeprom_read_byte((uint8_t*)EEPROM_FSENSOR);
|
uint8_t fsensor_enabled = eeprom_read_byte((uint8_t*)EEPROM_FSENSOR);
|
||||||
fsensor_autoload_enabled=eeprom_read_byte((uint8_t*)EEPROM_FSENS_AUTOLOAD_ENABLED);
|
fsensor_autoload_enabled=eeprom_read_byte((uint8_t*)EEPROM_FSENS_AUTOLOAD_ENABLED);
|
||||||
fsensor_not_responding = false;
|
fsensor_not_responding = false;
|
||||||
#ifdef PAT9125
|
#ifdef PAT9125
|
||||||
uint8_t oq_meassure_enabled = eeprom_read_byte((uint8_t*)EEPROM_FSENS_OQ_MEASS_ENABLED);
|
uint8_t oq_meassure_enabled = eeprom_read_byte((uint8_t*)EEPROM_FSENS_OQ_MEASS_ENABLED);
|
||||||
fsensor_oq_meassure_enabled = (oq_meassure_enabled == 1)?true:false;
|
fsensor_oq_meassure_enabled = (oq_meassure_enabled == 1)?true:false;
|
||||||
fsensor_set_axis_steps_per_unit(cs.axis_steps_per_unit[E_AXIS]);
|
fsensor_set_axis_steps_per_unit(cs.axis_steps_per_unit[E_AXIS]);
|
||||||
|
|
||||||
if (!pat9125)
|
if (!pat9125){
|
||||||
{
|
fsensor_enabled = 0; //disable sensor
|
||||||
fsensor = 0; //disable sensor
|
|
||||||
fsensor_not_responding = true;
|
fsensor_not_responding = true;
|
||||||
}
|
}
|
||||||
#endif //PAT9125
|
#endif //PAT9125
|
||||||
#ifdef IR_SENSOR_ANALOG
|
#ifdef IR_SENSOR_ANALOG
|
||||||
bIRsensorStateFlag=false;
|
bIRsensorStateFlag=false;
|
||||||
oFsensorPCB=(ClFsensorPCB)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_PCB);
|
oFsensorPCB = (ClFsensorPCB)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_PCB);
|
||||||
oFsensorActionNA=(ClFsensorActionNA)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_ACTION_NA);
|
oFsensorActionNA = (ClFsensorActionNA)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_ACTION_NA);
|
||||||
|
|
||||||
|
// If the fsensor is not responding even at the start of the printer,
|
||||||
|
// set this flag accordingly to show N/A in Settings->Filament sensor.
|
||||||
|
// This is even valid for both fsensor board revisions (0.3 or older and 0.4).
|
||||||
|
// Must be done after reading what type of fsensor board we have
|
||||||
|
fsensor_not_responding = ! fsensor_IR_check();
|
||||||
#endif //IR_SENSOR_ANALOG
|
#endif //IR_SENSOR_ANALOG
|
||||||
if (fsensor)
|
if (fsensor_enabled){
|
||||||
fsensor_enable(false); // (in this case) EEPROM update is not necessary
|
fsensor_enable(false); // (in this case) EEPROM update is not necessary
|
||||||
else
|
} else {
|
||||||
fsensor_disable(false); // (in this case) EEPROM update is not necessary
|
fsensor_disable(false); // (in this case) EEPROM update is not necessary
|
||||||
|
}
|
||||||
printf_P(PSTR("FSensor %S"), (fsensor_enabled?PSTR("ENABLED"):PSTR("DISABLED")));
|
printf_P(PSTR("FSensor %S"), (fsensor_enabled?PSTR("ENABLED"):PSTR("DISABLED")));
|
||||||
#ifdef IR_SENSOR_ANALOG
|
#ifdef IR_SENSOR_ANALOG
|
||||||
printf_P(PSTR(" (sensor board revision: %S)\n"),(oFsensorPCB==ClFsensorPCB::_Rev03b)?PSTR("03b or newer"):PSTR("03 or older"));
|
printf_P(PSTR(" (sensor board revision:%S)\n"), FsensorIRVersionText());
|
||||||
#else //IR_SENSOR_ANALOG
|
#else //IR_SENSOR_ANALOG
|
||||||
printf_P(PSTR("\n"));
|
MYSERIAL.println();
|
||||||
#endif //IR_SENSOR_ANALOG
|
#endif //IR_SENSOR_ANALOG
|
||||||
if (check_for_ir_sensor()) ir_sensor_detected = true;
|
if (check_for_ir_sensor()){
|
||||||
|
ir_sensor_detected = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool fsensor_enable(bool bUpdateEEPROM)
|
bool fsensor_enable(bool bUpdateEEPROM)
|
||||||
{
|
{
|
||||||
#ifdef PAT9125
|
#ifdef PAT9125
|
||||||
|
(void)bUpdateEEPROM; // silence unused warning in this variant
|
||||||
|
|
||||||
if (mmu_enabled == false) { //filament sensor is pat9125, enable only if it is working
|
if (mmu_enabled == false) { //filament sensor is pat9125, enable only if it is working
|
||||||
uint8_t pat9125 = pat9125_init();
|
uint8_t pat9125 = pat9125_init();
|
||||||
printf_P(PSTR("PAT9125_init:%hhu\n"), pat9125);
|
printf_P(PSTR("PAT9125_init:%hhu\n"), pat9125);
|
||||||
|
|
@ -295,7 +318,7 @@ void fsensor_autoload_check_start(void)
|
||||||
printf_P(ERRMSG_PAT9125_NOT_RESP, 3);
|
printf_P(ERRMSG_PAT9125_NOT_RESP, 3);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
puts_P(_N("fsensor_autoload_check_start - autoload ENABLED\n"));
|
puts_P(_N("fsensor_autoload_check_start - autoload ENABLED"));
|
||||||
fsensor_autoload_y = pat9125_y; //save current y value
|
fsensor_autoload_y = pat9125_y; //save current y value
|
||||||
fsensor_autoload_c = 0; //reset number of changes counter
|
fsensor_autoload_c = 0; //reset number of changes counter
|
||||||
fsensor_autoload_sum = 0;
|
fsensor_autoload_sum = 0;
|
||||||
|
|
@ -313,7 +336,7 @@ void fsensor_autoload_check_stop(void)
|
||||||
if (!fsensor_autoload_enabled) return;
|
if (!fsensor_autoload_enabled) return;
|
||||||
// puts_P(_N("fsensor_autoload_check_stop 2\n"));
|
// puts_P(_N("fsensor_autoload_check_stop 2\n"));
|
||||||
if (!fsensor_watch_autoload) return;
|
if (!fsensor_watch_autoload) return;
|
||||||
puts_P(_N("fsensor_autoload_check_stop - autoload DISABLED\n"));
|
puts_P(_N("fsensor_autoload_check_stop - autoload DISABLED"));
|
||||||
fsensor_autoload_sum = 0;
|
fsensor_autoload_sum = 0;
|
||||||
fsensor_watch_autoload = false;
|
fsensor_watch_autoload = false;
|
||||||
fsensor_watch_runout = true;
|
fsensor_watch_runout = true;
|
||||||
|
|
@ -393,7 +416,7 @@ void fsensor_oq_meassure_start(uint8_t skip)
|
||||||
{
|
{
|
||||||
if (!fsensor_enabled) return;
|
if (!fsensor_enabled) return;
|
||||||
if (!fsensor_oq_meassure_enabled) return;
|
if (!fsensor_oq_meassure_enabled) return;
|
||||||
printf_P(PSTR("fsensor_oq_meassure_start\n"));
|
puts_P(PSTR("fsensor_oq_meassure_start"));
|
||||||
fsensor_oq_skipchunk = skip;
|
fsensor_oq_skipchunk = skip;
|
||||||
fsensor_oq_samples = 0;
|
fsensor_oq_samples = 0;
|
||||||
fsensor_oq_st_sum = 0;
|
fsensor_oq_st_sum = 0;
|
||||||
|
|
@ -426,7 +449,7 @@ bool fsensor_oq_result(void)
|
||||||
{
|
{
|
||||||
if (!fsensor_enabled) return true;
|
if (!fsensor_enabled) return true;
|
||||||
if (!fsensor_oq_meassure_enabled) return true;
|
if (!fsensor_oq_meassure_enabled) return true;
|
||||||
printf_P(_N("fsensor_oq_result\n"));
|
puts_P(_N("fsensor_oq_result"));
|
||||||
bool res_er_sum = (fsensor_oq_er_sum <= FSENSOR_OQ_MAX_ES);
|
bool res_er_sum = (fsensor_oq_er_sum <= FSENSOR_OQ_MAX_ES);
|
||||||
printf_P(_N(" er_sum = %u %S\n"), fsensor_oq_er_sum, (res_er_sum?_OK:_NG));
|
printf_P(_N(" er_sum = %u %S\n"), fsensor_oq_er_sum, (res_er_sum?_OK:_NG));
|
||||||
bool res_er_max = (fsensor_oq_er_max <= FSENSOR_OQ_MAX_EM);
|
bool res_er_max = (fsensor_oq_er_max <= FSENSOR_OQ_MAX_EM);
|
||||||
|
|
@ -456,22 +479,8 @@ bool fsensor_oq_result(void)
|
||||||
}
|
}
|
||||||
#endif //FSENSOR_QUALITY
|
#endif //FSENSOR_QUALITY
|
||||||
|
|
||||||
ISR(FSENSOR_INT_PIN_VECT)
|
FORCE_INLINE static void fsensor_isr(int st_cnt)
|
||||||
{
|
{
|
||||||
if (mmu_enabled || ir_sensor_detected) return;
|
|
||||||
if (!((fsensor_int_pin_old ^ FSENSOR_INT_PIN_PIN_REG) & FSENSOR_INT_PIN_MASK)) return;
|
|
||||||
fsensor_int_pin_old = FSENSOR_INT_PIN_PIN_REG;
|
|
||||||
|
|
||||||
// prevent isr re-entry
|
|
||||||
static bool _lock = false;
|
|
||||||
if (_lock) return;
|
|
||||||
_lock = true;
|
|
||||||
|
|
||||||
// fetch fsensor_st_cnt atomically
|
|
||||||
int st_cnt = fsensor_st_cnt;
|
|
||||||
fsensor_st_cnt = 0;
|
|
||||||
sei();
|
|
||||||
|
|
||||||
uint8_t old_err_cnt = fsensor_err_cnt;
|
uint8_t old_err_cnt = fsensor_err_cnt;
|
||||||
uint8_t pat9125_res = fsensor_oq_meassure?pat9125_update():pat9125_update_y();
|
uint8_t pat9125_res = fsensor_oq_meassure?pat9125_update():pat9125_update_y();
|
||||||
if (!pat9125_res)
|
if (!pat9125_res)
|
||||||
|
|
@ -556,8 +565,28 @@ ISR(FSENSOR_INT_PIN_VECT)
|
||||||
#endif //DEBUG_FSENSOR_LOG
|
#endif //DEBUG_FSENSOR_LOG
|
||||||
|
|
||||||
pat9125_y = 0;
|
pat9125_y = 0;
|
||||||
_lock = false;
|
}
|
||||||
return;
|
|
||||||
|
ISR(FSENSOR_INT_PIN_VECT)
|
||||||
|
{
|
||||||
|
if (mmu_enabled || ir_sensor_detected) return;
|
||||||
|
if (!((fsensor_int_pin_old ^ FSENSOR_INT_PIN_PIN_REG) & FSENSOR_INT_PIN_MASK)) return;
|
||||||
|
fsensor_int_pin_old = FSENSOR_INT_PIN_PIN_REG;
|
||||||
|
|
||||||
|
// prevent isr re-entry
|
||||||
|
static bool _lock = false;
|
||||||
|
if (!_lock)
|
||||||
|
{
|
||||||
|
// fetch fsensor_st_cnt atomically
|
||||||
|
int st_cnt = fsensor_st_cnt;
|
||||||
|
fsensor_st_cnt = 0;
|
||||||
|
|
||||||
|
_lock = true;
|
||||||
|
sei();
|
||||||
|
fsensor_isr(st_cnt);
|
||||||
|
cli();
|
||||||
|
_lock = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void fsensor_setup_interrupt(void)
|
void fsensor_setup_interrupt(void)
|
||||||
|
|
@ -580,9 +609,8 @@ void fsensor_st_block_chunk(int cnt)
|
||||||
if (!fsensor_enabled) return;
|
if (!fsensor_enabled) return;
|
||||||
fsensor_st_cnt += cnt;
|
fsensor_st_cnt += cnt;
|
||||||
|
|
||||||
// !!! bit toggling (PINxn <- 1) (for PinChangeInterrupt) does not work for some MCU pins
|
// !!! bit toggling (PINxn <- 1) (for PinChangeInterrupt) does not work for some MCU pins
|
||||||
if (PIN_GET(FSENSOR_INT_PIN)) {PIN_VAL(FSENSOR_INT_PIN, LOW);}
|
WRITE(FSENSOR_INT_PIN, !READ(FSENSOR_INT_PIN));
|
||||||
else {PIN_VAL(FSENSOR_INT_PIN, HIGH);}
|
|
||||||
}
|
}
|
||||||
#endif //PAT9125
|
#endif //PAT9125
|
||||||
|
|
||||||
|
|
@ -590,7 +618,7 @@ void fsensor_st_block_chunk(int cnt)
|
||||||
//! Common code for enqueing M600 and supplemental codes into the command queue.
|
//! Common code for enqueing M600 and supplemental codes into the command queue.
|
||||||
//! Used both for the IR sensor and the PAT9125
|
//! Used both for the IR sensor and the PAT9125
|
||||||
void fsensor_enque_M600(){
|
void fsensor_enque_M600(){
|
||||||
printf_P(PSTR("fsensor_update - M600\n"));
|
puts_P(PSTR("fsensor_update - M600"));
|
||||||
eeprom_update_byte((uint8_t*)EEPROM_FERROR_COUNT, eeprom_read_byte((uint8_t*)EEPROM_FERROR_COUNT) + 1);
|
eeprom_update_byte((uint8_t*)EEPROM_FERROR_COUNT, eeprom_read_byte((uint8_t*)EEPROM_FERROR_COUNT) + 1);
|
||||||
eeprom_update_word((uint16_t*)EEPROM_FERROR_COUNT_TOT, eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT) + 1);
|
eeprom_update_word((uint16_t*)EEPROM_FERROR_COUNT_TOT, eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT) + 1);
|
||||||
enquecommand_front_P((PSTR("M600")));
|
enquecommand_front_P((PSTR("M600")));
|
||||||
|
|
@ -604,48 +632,47 @@ void fsensor_enque_M600(){
|
||||||
void fsensor_update(void)
|
void fsensor_update(void)
|
||||||
{
|
{
|
||||||
#ifdef PAT9125
|
#ifdef PAT9125
|
||||||
if (fsensor_watch_runout && (fsensor_err_cnt > FSENSOR_ERR_MAX))
|
if (fsensor_watch_runout && (fsensor_err_cnt > FSENSOR_ERR_MAX))
|
||||||
{
|
{
|
||||||
fsensor_stop_and_save_print();
|
fsensor_stop_and_save_print();
|
||||||
KEEPALIVE_STATE(IN_HANDLER);
|
KEEPALIVE_STATE(IN_HANDLER);
|
||||||
|
|
||||||
bool autoload_enabled_tmp = fsensor_autoload_enabled;
|
bool autoload_enabled_tmp = fsensor_autoload_enabled;
|
||||||
fsensor_autoload_enabled = false;
|
fsensor_autoload_enabled = false;
|
||||||
bool oq_meassure_enabled_tmp = fsensor_oq_meassure_enabled;
|
bool oq_meassure_enabled_tmp = fsensor_oq_meassure_enabled;
|
||||||
fsensor_oq_meassure_enabled = true;
|
fsensor_oq_meassure_enabled = true;
|
||||||
|
|
||||||
// move the nozzle away while checking the filament
|
// move the nozzle away while checking the filament
|
||||||
current_position[Z_AXIS] += 0.8;
|
current_position[Z_AXIS] += 0.8;
|
||||||
if(current_position[Z_AXIS] > Z_MAX_POS) current_position[Z_AXIS] = Z_MAX_POS;
|
if(current_position[Z_AXIS] > Z_MAX_POS) current_position[Z_AXIS] = Z_MAX_POS;
|
||||||
plan_buffer_line_curposXYZE(max_feedrate[Z_AXIS], active_extruder);
|
plan_buffer_line_curposXYZE(max_feedrate[Z_AXIS]);
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
|
|
||||||
// check the filament in isolation
|
// check the filament in isolation
|
||||||
fsensor_reset_err_cnt();
|
fsensor_reset_err_cnt();
|
||||||
fsensor_oq_meassure_start(0);
|
fsensor_oq_meassure_start(0);
|
||||||
float e_tmp = current_position[E_AXIS];
|
float e_tmp = current_position[E_AXIS];
|
||||||
current_position[E_AXIS] -= 3;
|
current_position[E_AXIS] -= 3;
|
||||||
plan_buffer_line_curposXYZE(250/60, active_extruder);
|
plan_buffer_line_curposXYZE(250/60);
|
||||||
current_position[E_AXIS] = e_tmp;
|
current_position[E_AXIS] = e_tmp;
|
||||||
plan_buffer_line_curposXYZE(200/60, active_extruder);
|
plan_buffer_line_curposXYZE(200/60);
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
fsensor_oq_meassure_stop();
|
fsensor_oq_meassure_stop();
|
||||||
|
|
||||||
bool err = false;
|
bool err = false;
|
||||||
err |= (fsensor_err_cnt > 0); // final error count is non-zero
|
err |= (fsensor_err_cnt > 0); // final error count is non-zero
|
||||||
err |= (fsensor_oq_er_sum > FSENSOR_OQ_MAX_ES); // total error count is above limit
|
err |= (fsensor_oq_er_sum > FSENSOR_OQ_MAX_ES); // total error count is above limit
|
||||||
err |= (fsensor_oq_yd_sum < FSENSOR_OQ_MIN_YD); // total measured distance is below limit
|
err |= (fsensor_oq_yd_sum < FSENSOR_OQ_MIN_YD); // total measured distance is below limit
|
||||||
|
|
||||||
fsensor_restore_print_and_continue();
|
fsensor_restore_print_and_continue();
|
||||||
fsensor_autoload_enabled = autoload_enabled_tmp;
|
fsensor_autoload_enabled = autoload_enabled_tmp;
|
||||||
fsensor_oq_meassure_enabled = oq_meassure_enabled_tmp;
|
fsensor_oq_meassure_enabled = oq_meassure_enabled_tmp;
|
||||||
|
|
||||||
unsigned long now = _millis();
|
unsigned long now = _millis();
|
||||||
if (!err && (now - fsensor_softfail_last) > FSENSOR_SOFTERR_DELTA)
|
if (!err && (now - fsensor_softfail_last) > FSENSOR_SOFTERR_DELTA)
|
||||||
fsensor_softfail_ccnt = 0;
|
fsensor_softfail_ccnt = 0;
|
||||||
if (!err && fsensor_softfail_ccnt <= FSENSOR_SOFTERR_CMAX)
|
if (!err && fsensor_softfail_ccnt <= FSENSOR_SOFTERR_CMAX)
|
||||||
{
|
{
|
||||||
printf_P(PSTR("fsensor_err_cnt = 0\n"));
|
puts_P(PSTR("fsensor_err_cnt = 0"));
|
||||||
++fsensor_softfail;
|
++fsensor_softfail;
|
||||||
++fsensor_softfail_ccnt;
|
++fsensor_softfail_ccnt;
|
||||||
fsensor_softfail_last = now;
|
fsensor_softfail_last = now;
|
||||||
|
|
@ -656,78 +683,107 @@ void fsensor_update(void)
|
||||||
fsensor_softfail_last = 0;
|
fsensor_softfail_last = 0;
|
||||||
fsensor_enque_M600();
|
fsensor_enque_M600();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else //PAT9125
|
#else //PAT9125
|
||||||
if (CHECK_FSENSOR && ir_sensor_detected)
|
if (CHECK_FSENSOR && ir_sensor_detected)
|
||||||
{
|
{
|
||||||
if(digitalRead(IR_SENSOR_PIN))
|
if(digitalRead(IR_SENSOR_PIN))
|
||||||
{ // IR_SENSOR_PIN ~ H
|
{ // IR_SENSOR_PIN ~ H
|
||||||
#ifdef IR_SENSOR_ANALOG
|
#ifdef IR_SENSOR_ANALOG
|
||||||
if(!bIRsensorStateFlag)
|
if(!bIRsensorStateFlag)
|
||||||
|
{
|
||||||
|
bIRsensorStateFlag=true;
|
||||||
|
nIRsensorLastTime=_millis();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if((_millis()-nIRsensorLastTime)>IR_SENSOR_STEADY)
|
||||||
{
|
{
|
||||||
bIRsensorStateFlag=true;
|
uint8_t nMUX1,nMUX2;
|
||||||
nIRsensorLastTime=_millis();
|
uint16_t nADC;
|
||||||
}
|
bIRsensorStateFlag=false;
|
||||||
else
|
// sequence for direct data reading from AD converter
|
||||||
{
|
DISABLE_TEMPERATURE_INTERRUPT();
|
||||||
if((_millis()-nIRsensorLastTime)>IR_SENSOR_STEADY)
|
nMUX1=ADMUX; // ADMUX saving
|
||||||
{
|
nMUX2=ADCSRB;
|
||||||
uint8_t nMUX1,nMUX2;
|
adc_setmux(VOLT_IR_PIN);
|
||||||
uint16_t nADC;
|
ADCSRA|=(1<<ADSC); // first conversion after ADMUX change discarded (preventively)
|
||||||
bIRsensorStateFlag=false;
|
while(ADCSRA&(1<<ADSC))
|
||||||
// sequence for direct data reading from AD converter
|
;
|
||||||
DISABLE_TEMPERATURE_INTERRUPT();
|
ADCSRA|=(1<<ADSC); // second conversion used
|
||||||
nMUX1=ADMUX; // ADMUX saving
|
while(ADCSRA&(1<<ADSC))
|
||||||
nMUX2=ADCSRB;
|
;
|
||||||
adc_setmux(VOLT_IR_PIN);
|
nADC=ADC;
|
||||||
ADCSRA|=(1<<ADSC); // first conversion after ADMUX change discarded (preventively)
|
ADMUX=nMUX1; // ADMUX restoring
|
||||||
while(ADCSRA&(1<<ADSC))
|
ADCSRB=nMUX2;
|
||||||
;
|
ENABLE_TEMPERATURE_INTERRUPT();
|
||||||
ADCSRA|=(1<<ADSC); // second conversion used
|
// end of sequence for ...
|
||||||
while(ADCSRA&(1<<ADSC))
|
// Detection of correct function of fsensor v04 - it must NOT read >4.6V
|
||||||
;
|
// If it does, it means a disconnected cables or faulty board
|
||||||
nADC=ADC;
|
if( (oFsensorPCB == ClFsensorPCB::_Rev04) && ( (nADC*OVERSAMPLENR) > IRsensor_Hopen_TRESHOLD ) )
|
||||||
ADMUX=nMUX1; // ADMUX restoring
|
{
|
||||||
ADCSRB=nMUX2;
|
fsensor_disable();
|
||||||
ENABLE_TEMPERATURE_INTERRUPT();
|
fsensor_not_responding = true;
|
||||||
// end of sequence for ...
|
printf_P(PSTR("IR sensor not responding (%d)!\n"),1);
|
||||||
if((oFsensorPCB==ClFsensorPCB::_Rev03b)&&((nADC*OVERSAMPLENR)>((int)IRsensor_Hopen_TRESHOLD)))
|
if((ClFsensorActionNA)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_ACTION_NA)==ClFsensorActionNA::_Pause)
|
||||||
{
|
|
||||||
fsensor_disable();
|
// if we are printing and FS action is set to "Pause", force pause the print
|
||||||
fsensor_not_responding = true;
|
if(oFsensorActionNA==ClFsensorActionNA::_Pause)
|
||||||
printf_P(PSTR("IR sensor not responding (%d)!\n"),1);
|
lcd_pause_print();
|
||||||
if((ClFsensorActionNA)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_ACTION_NA)==ClFsensorActionNA::_Pause)
|
}
|
||||||
if(oFsensorActionNA==ClFsensorActionNA::_Pause)
|
else
|
||||||
lcd_pause_print();
|
{
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
#endif //IR_SENSOR_ANALOG
|
#endif //IR_SENSOR_ANALOG
|
||||||
fsensor_checkpoint_print();
|
fsensor_checkpoint_print();
|
||||||
fsensor_enque_M600();
|
fsensor_enque_M600();
|
||||||
#ifdef IR_SENSOR_ANALOG
|
#ifdef IR_SENSOR_ANALOG
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
}
|
||||||
{ // IR_SENSOR_PIN ~ L
|
else
|
||||||
bIRsensorStateFlag=false;
|
{ // IR_SENSOR_PIN ~ L
|
||||||
|
bIRsensorStateFlag=false;
|
||||||
#endif //IR_SENSOR_ANALOG
|
#endif //IR_SENSOR_ANALOG
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif //PAT9125
|
#endif //PAT9125
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef IR_SENSOR_ANALOG
|
#ifdef IR_SENSOR_ANALOG
|
||||||
bool fsensor_IR_check()
|
/// This is called only upon start of the printer or when switching the fsensor ON in the menu
|
||||||
{
|
/// We cannot do temporal window checks here (aka the voltage has been in some range for a period of time)
|
||||||
uint16_t volt_IR_int;
|
bool fsensor_IR_check(){
|
||||||
bool bCheckResult;
|
if( IRsensor_Lmax_TRESHOLD <= current_voltage_raw_IR && current_voltage_raw_IR <= IRsensor_Hmin_TRESHOLD ){
|
||||||
|
/// If the voltage is in forbidden range, the fsensor is ok, but the lever is mounted improperly.
|
||||||
volt_IR_int=current_voltage_raw_IR;
|
/// Or the user is so creative so that he can hold a piece of fillament in the hole in such a genius way,
|
||||||
bCheckResult=(volt_IR_int<((int)IRsensor_Lmax_TRESHOLD))||(volt_IR_int>((int)IRsensor_Hmin_TRESHOLD));
|
/// that the IR fsensor reading is within 1.5 and 3V ... this would have been highly unusual
|
||||||
bCheckResult=bCheckResult&&(!((oFsensorPCB==ClFsensorPCB::_Rev03b)&&(volt_IR_int>((int)IRsensor_Hopen_TRESHOLD))));
|
/// and would have been considered more like a sabotage than normal printer operation
|
||||||
return(bCheckResult);
|
puts_P(PSTR("fsensor in forbidden range 1.5-3V - check sensor"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if( oFsensorPCB == ClFsensorPCB::_Rev04 ){
|
||||||
|
/// newer IR sensor cannot normally produce 4.6-5V, this is considered a failure/bad mount
|
||||||
|
if( IRsensor_Hopen_TRESHOLD <= current_voltage_raw_IR && current_voltage_raw_IR <= IRsensor_VMax_TRESHOLD ){
|
||||||
|
puts_P(PSTR("fsensor v0.4 in fault range 4.6-5V - unconnected"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
/// newer IR sensor cannot normally produce 0-0.3V, this is considered a failure
|
||||||
|
#if 0 //Disabled as it has to be decided if we gonna use this or not.
|
||||||
|
if( IRsensor_Hopen_TRESHOLD <= current_voltage_raw_IR && current_voltage_raw_IR <= IRsensor_VMax_TRESHOLD ){
|
||||||
|
puts_P(PSTR("fsensor v0.4 in fault range 0.0-0.3V - wrong IR sensor"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
/// If IR sensor is "uknown state" and filament is not loaded > 1.5V return false
|
||||||
|
#if 0
|
||||||
|
if( (oFsensorPCB == ClFsensorPCB::_Undef) && ( current_voltage_raw_IR > IRsensor_Lmax_TRESHOLD ) ){
|
||||||
|
puts_P(PSTR("Unknown IR sensor version and no filament loaded detected."));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
// otherwise the IR fsensor is considered working correctly
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
#endif //IR_SENSOR_ANALOG
|
#endif //IR_SENSOR_ANALOG
|
||||||
|
|
|
||||||
|
|
@ -83,6 +83,7 @@ extern uint8_t fsensor_log;
|
||||||
//! @}
|
//! @}
|
||||||
#endif //PAT9125
|
#endif //PAT9125
|
||||||
|
|
||||||
|
#define VOLT_DIV_REF 5
|
||||||
|
|
||||||
#ifdef IR_SENSOR_ANALOG
|
#ifdef IR_SENSOR_ANALOG
|
||||||
#define IR_SENSOR_STEADY 10 // [ms]
|
#define IR_SENSOR_STEADY 10 // [ms]
|
||||||
|
|
@ -90,7 +91,7 @@ extern uint8_t fsensor_log;
|
||||||
enum class ClFsensorPCB:uint_least8_t
|
enum class ClFsensorPCB:uint_least8_t
|
||||||
{
|
{
|
||||||
_Old=0,
|
_Old=0,
|
||||||
_Rev03b=1,
|
_Rev04=1,
|
||||||
_Undef=EEPROM_EMPTY_VALUE
|
_Undef=EEPROM_EMPTY_VALUE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -103,8 +104,21 @@ enum class ClFsensorActionNA:uint_least8_t
|
||||||
|
|
||||||
extern ClFsensorPCB oFsensorPCB;
|
extern ClFsensorPCB oFsensorPCB;
|
||||||
extern ClFsensorActionNA oFsensorActionNA;
|
extern ClFsensorActionNA oFsensorActionNA;
|
||||||
|
extern const char* FsensorIRVersionText();
|
||||||
|
|
||||||
extern bool fsensor_IR_check();
|
extern bool fsensor_IR_check();
|
||||||
|
constexpr uint16_t Voltage2Raw(float V){
|
||||||
|
return ( V * 1023 * OVERSAMPLENR / VOLT_DIV_REF ) + 0.5F;
|
||||||
|
}
|
||||||
|
constexpr float Raw2Voltage(uint16_t raw){
|
||||||
|
return VOLT_DIV_REF*(raw / (1023.F * OVERSAMPLENR) );
|
||||||
|
}
|
||||||
|
constexpr uint16_t IRsensor_Ldiode_TRESHOLD = Voltage2Raw(0.3F); // ~0.3V, raw value=982
|
||||||
|
constexpr uint16_t IRsensor_Lmax_TRESHOLD = Voltage2Raw(1.5F); // ~1.5V (0.3*Vcc), raw value=4910
|
||||||
|
constexpr uint16_t IRsensor_Hmin_TRESHOLD = Voltage2Raw(3.0F); // ~3.0V (0.6*Vcc), raw value=9821
|
||||||
|
constexpr uint16_t IRsensor_Hopen_TRESHOLD = Voltage2Raw(4.6F); // ~4.6V (N.C. @ Ru~20-50k, Rd'=56k, Ru'=10k), raw value=15059
|
||||||
|
constexpr uint16_t IRsensor_VMax_TRESHOLD = Voltage2Raw(5.F); // ~5V, raw value=16368
|
||||||
|
|
||||||
#endif //IR_SENSOR_ANALOG
|
#endif //IR_SENSOR_ANALOG
|
||||||
|
|
||||||
#endif //FSENSOR_H
|
#endif //FSENSOR_H
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
#include <avr/io.h>
|
#include <avr/io.h>
|
||||||
#include <avr/interrupt.h>
|
#include <avr/interrupt.h>
|
||||||
#include "io_atmega2560.h"
|
|
||||||
|
|
||||||
// All this is about silencing the heat bed, as it behaves like a loudspeaker.
|
// All this is about silencing the heat bed, as it behaves like a loudspeaker.
|
||||||
// Basically, we want the PWM heating switched at 30Hz (or so) which is a well ballanced
|
// Basically, we want the PWM heating switched at 30Hz (or so) which is a well ballanced
|
||||||
|
|
@ -59,7 +58,6 @@ enum class States : uint8_t {
|
||||||
RISE, ///< 16 fast PWM cycles with increasing duty up to steady ON
|
RISE, ///< 16 fast PWM cycles with increasing duty up to steady ON
|
||||||
RISE_TO_ONE, ///< metastate allowing the timer change its state atomically without artefacts on the output pin
|
RISE_TO_ONE, ///< metastate allowing the timer change its state atomically without artefacts on the output pin
|
||||||
ONE, ///< steady 1 (ON), no change for the whole period
|
ONE, ///< steady 1 (ON), no change for the whole period
|
||||||
ONE_TO_FALL, ///< metastate allowing the timer change its state atomically without artefacts on the output pin
|
|
||||||
FALL, ///< 16 fast PWM cycles with decreasing duty down to steady OFF
|
FALL, ///< 16 fast PWM cycles with decreasing duty down to steady OFF
|
||||||
FALL_TO_ZERO ///< metastate allowing the timer change its state atomically without artefacts on the output pin
|
FALL_TO_ZERO ///< metastate allowing the timer change its state atomically without artefacts on the output pin
|
||||||
};
|
};
|
||||||
|
|
@ -155,12 +153,7 @@ ISR(TIMER0_OVF_vect) // timer compare interrupt service routine
|
||||||
return; // want full duty for the next ONE cycle again - so keep on heating and just wait for the next timer ovf
|
return; // want full duty for the next ONE cycle again - so keep on heating and just wait for the next timer ovf
|
||||||
}
|
}
|
||||||
// otherwise moving towards FALL
|
// otherwise moving towards FALL
|
||||||
// @@TODO it looks like ONE_TO_FALL isn't necessary, there are no artefacts at all
|
|
||||||
state = States::ONE;//_TO_FALL;
|
state = States::ONE;//_TO_FALL;
|
||||||
// TCCR0B = (1 << CS00); // change prescaler to 1, i.e. 62.5kHz
|
|
||||||
// break;
|
|
||||||
// case States::ONE_TO_FALL:
|
|
||||||
// OCR0B = 255; // zero duty
|
|
||||||
state=States::FALL;
|
state=States::FALL;
|
||||||
fastCounter = fastMax - 1;// we'll do 16-1 cycles of RISE
|
fastCounter = fastMax - 1;// we'll do 16-1 cycles of RISE
|
||||||
TCNT0 = 255; // force overflow on the next clock cycle
|
TCNT0 = 255; // force overflow on the next clock cycle
|
||||||
|
|
|
||||||
|
|
@ -1,374 +0,0 @@
|
||||||
//io_atmega2560.h
|
|
||||||
#ifndef _IO_ATMEGA2560
|
|
||||||
#define _IO_ATMEGA2560
|
|
||||||
|
|
||||||
|
|
||||||
#define __PIN_P0 PINE
|
|
||||||
#define __PIN_P1 PINE
|
|
||||||
#define __PIN_P2 PINE
|
|
||||||
#define __PIN_P3 PINE
|
|
||||||
#define __PIN_P4 PING
|
|
||||||
#define __PIN_P5 PINE
|
|
||||||
#define __PIN_P6 PINH
|
|
||||||
#define __PIN_P7 PINH
|
|
||||||
#define __PIN_P8 PINH
|
|
||||||
#define __PIN_P9 PINH
|
|
||||||
#define __PIN_P10 PINB
|
|
||||||
#define __PIN_P11 PINB
|
|
||||||
#define __PIN_P12 PINB
|
|
||||||
#define __PIN_P13 PINB
|
|
||||||
#define __PIN_P14 PINJ
|
|
||||||
#define __PIN_P15 PINJ
|
|
||||||
#define __PIN_P16 PINH
|
|
||||||
#define __PIN_P17 PINH
|
|
||||||
#define __PIN_P18 PIND
|
|
||||||
#define __PIN_P19 PIND
|
|
||||||
#define __PIN_P20 PIND
|
|
||||||
#define __PIN_P21 PIND
|
|
||||||
#define __PIN_P22 PINA
|
|
||||||
#define __PIN_P23 PINA
|
|
||||||
#define __PIN_P24 PINA
|
|
||||||
#define __PIN_P25 PINA
|
|
||||||
#define __PIN_P26 PINA
|
|
||||||
#define __PIN_P27 PINA
|
|
||||||
#define __PIN_P28 PINA
|
|
||||||
#define __PIN_P29 PINA
|
|
||||||
#define __PIN_P30 PINC
|
|
||||||
#define __PIN_P31 PINC
|
|
||||||
#define __PIN_P32 PINC
|
|
||||||
#define __PIN_P33 PINC
|
|
||||||
#define __PIN_P34 PINC
|
|
||||||
#define __PIN_P35 PINC
|
|
||||||
#define __PIN_P36 PINC
|
|
||||||
#define __PIN_P37 PINC
|
|
||||||
#define __PIN_P38 PIND
|
|
||||||
#define __PIN_P39 PING
|
|
||||||
#define __PIN_P40 PING
|
|
||||||
#define __PIN_P41 PING
|
|
||||||
#define __PIN_P42 PINL
|
|
||||||
#define __PIN_P43 PINL
|
|
||||||
#define __PIN_P44 PINL
|
|
||||||
#define __PIN_P45 PINL
|
|
||||||
#define __PIN_P46 PINL
|
|
||||||
#define __PIN_P47 PINL
|
|
||||||
#define __PIN_P48 PINL
|
|
||||||
#define __PIN_P49 PINL
|
|
||||||
#define __PIN_P50 PINB
|
|
||||||
#define __PIN_P51 PINB
|
|
||||||
#define __PIN_P52 PINB
|
|
||||||
#define __PIN_P53 PINB
|
|
||||||
#define __PIN_P54 PINF
|
|
||||||
#define __PIN_P55 PINF
|
|
||||||
#define __PIN_P56 PINF
|
|
||||||
#define __PIN_P57 PINF
|
|
||||||
#define __PIN_P58 PINF
|
|
||||||
#define __PIN_P59 PINF
|
|
||||||
#define __PIN_P60 PINF
|
|
||||||
#define __PIN_P61 PINF
|
|
||||||
#define __PIN_P62 PINK
|
|
||||||
#define __PIN_P63 PINK
|
|
||||||
#define __PIN_P64 PINK
|
|
||||||
#define __PIN_P65 PINK
|
|
||||||
#define __PIN_P66 PINK
|
|
||||||
#define __PIN_P67 PINK
|
|
||||||
#define __PIN_P68 PINK
|
|
||||||
#define __PIN_P69 PINK
|
|
||||||
#define __PIN_P70 PING
|
|
||||||
#define __PIN_P71 PING
|
|
||||||
#define __PIN_P72 PINJ
|
|
||||||
#define __PIN_P73 PINJ
|
|
||||||
#define __PIN_P74 PINJ
|
|
||||||
#define __PIN_P75 PINJ
|
|
||||||
#define __PIN_P76 PINJ
|
|
||||||
#define __PIN_P77 PINJ
|
|
||||||
#define __PIN_P78 PINE
|
|
||||||
#define __PIN_P79 PINE
|
|
||||||
#define __PIN_P80 PINE
|
|
||||||
#define __PIN_P81 PIND
|
|
||||||
#define __PIN_P82 PIND
|
|
||||||
#define __PIN_P83 PIND
|
|
||||||
#define __PIN_P84 PINH
|
|
||||||
#define __PIN_P85 PINH
|
|
||||||
|
|
||||||
#define __PORT_P0 PORTE
|
|
||||||
#define __PORT_P1 PORTE
|
|
||||||
#define __PORT_P2 PORTE
|
|
||||||
#define __PORT_P3 PORTE
|
|
||||||
#define __PORT_P4 PORTG
|
|
||||||
#define __PORT_P5 PORTE
|
|
||||||
#define __PORT_P6 PORTH
|
|
||||||
#define __PORT_P7 PORTH
|
|
||||||
#define __PORT_P8 PORTH
|
|
||||||
#define __PORT_P9 PORTH
|
|
||||||
#define __PORT_P10 PORTB
|
|
||||||
#define __PORT_P11 PORTB
|
|
||||||
#define __PORT_P12 PORTB
|
|
||||||
#define __PORT_P13 PORTB
|
|
||||||
#define __PORT_P14 PORTJ
|
|
||||||
#define __PORT_P15 PORTJ
|
|
||||||
#define __PORT_P16 PORTH
|
|
||||||
#define __PORT_P17 PORTH
|
|
||||||
#define __PORT_P18 PORTD
|
|
||||||
#define __PORT_P19 PORTD
|
|
||||||
#define __PORT_P20 PORTD
|
|
||||||
#define __PORT_P21 PORTD
|
|
||||||
#define __PORT_P22 PORTA
|
|
||||||
#define __PORT_P23 PORTA
|
|
||||||
#define __PORT_P24 PORTA
|
|
||||||
#define __PORT_P25 PORTA
|
|
||||||
#define __PORT_P26 PORTA
|
|
||||||
#define __PORT_P27 PORTA
|
|
||||||
#define __PORT_P28 PORTA
|
|
||||||
#define __PORT_P29 PORTA
|
|
||||||
#define __PORT_P30 PORTC
|
|
||||||
#define __PORT_P31 PORTC
|
|
||||||
#define __PORT_P32 PORTC
|
|
||||||
#define __PORT_P33 PORTC
|
|
||||||
#define __PORT_P34 PORTC
|
|
||||||
#define __PORT_P35 PORTC
|
|
||||||
#define __PORT_P36 PORTC
|
|
||||||
#define __PORT_P37 PORTC
|
|
||||||
#define __PORT_P38 PORTD
|
|
||||||
#define __PORT_P39 PORTG
|
|
||||||
#define __PORT_P40 PORTG
|
|
||||||
#define __PORT_P41 PORTG
|
|
||||||
#define __PORT_P42 PORTL
|
|
||||||
#define __PORT_P43 PORTL
|
|
||||||
#define __PORT_P44 PORTL
|
|
||||||
#define __PORT_P45 PORTL
|
|
||||||
#define __PORT_P46 PORTL
|
|
||||||
#define __PORT_P47 PORTL
|
|
||||||
#define __PORT_P48 PORTL
|
|
||||||
#define __PORT_P49 PORTL
|
|
||||||
#define __PORT_P50 PORTB
|
|
||||||
#define __PORT_P51 PORTB
|
|
||||||
#define __PORT_P52 PORTB
|
|
||||||
#define __PORT_P53 PORTB
|
|
||||||
#define __PORT_P54 PORTF
|
|
||||||
#define __PORT_P55 PORTF
|
|
||||||
#define __PORT_P56 PORTF
|
|
||||||
#define __PORT_P57 PORTF
|
|
||||||
#define __PORT_P58 PORTF
|
|
||||||
#define __PORT_P59 PORTF
|
|
||||||
#define __PORT_P60 PORTF
|
|
||||||
#define __PORT_P61 PORTF
|
|
||||||
#define __PORT_P62 PORTK
|
|
||||||
#define __PORT_P63 PORTK
|
|
||||||
#define __PORT_P64 PORTK
|
|
||||||
#define __PORT_P65 PORTK
|
|
||||||
#define __PORT_P66 PORTK
|
|
||||||
#define __PORT_P67 PORTK
|
|
||||||
#define __PORT_P68 PORTK
|
|
||||||
#define __PORT_P69 PORTK
|
|
||||||
#define __PORT_P70 PORTG
|
|
||||||
#define __PORT_P71 PORTG
|
|
||||||
#define __PORT_P72 PORTJ
|
|
||||||
#define __PORT_P73 PORTJ
|
|
||||||
#define __PORT_P74 PORTJ
|
|
||||||
#define __PORT_P75 PORTJ
|
|
||||||
#define __PORT_P76 PORTJ
|
|
||||||
#define __PORT_P77 PORTJ
|
|
||||||
#define __PORT_P78 PORTE
|
|
||||||
#define __PORT_P79 PORTE
|
|
||||||
#define __PORT_P80 PORTE
|
|
||||||
#define __PORT_P81 PORTD
|
|
||||||
#define __PORT_P82 PORTD
|
|
||||||
#define __PORT_P83 PORTD
|
|
||||||
#define __PORT_P84 PORTH
|
|
||||||
#define __PORT_P85 PORTH
|
|
||||||
|
|
||||||
#define __DDR_P0 DDRE
|
|
||||||
#define __DDR_P1 DDRE
|
|
||||||
#define __DDR_P2 DDRE
|
|
||||||
#define __DDR_P3 DDRE
|
|
||||||
#define __DDR_P4 DDRG
|
|
||||||
#define __DDR_P5 DDRE
|
|
||||||
#define __DDR_P6 DDRH
|
|
||||||
#define __DDR_P7 DDRH
|
|
||||||
#define __DDR_P8 DDRH
|
|
||||||
#define __DDR_P9 DDRH
|
|
||||||
#define __DDR_P10 DDRB
|
|
||||||
#define __DDR_P11 DDRB
|
|
||||||
#define __DDR_P12 DDRB
|
|
||||||
#define __DDR_P13 DDRB
|
|
||||||
#define __DDR_P14 DDRJ
|
|
||||||
#define __DDR_P15 DDRJ
|
|
||||||
#define __DDR_P16 DDRH
|
|
||||||
#define __DDR_P17 DDRH
|
|
||||||
#define __DDR_P18 DDRD
|
|
||||||
#define __DDR_P19 DDRD
|
|
||||||
#define __DDR_P20 DDRD
|
|
||||||
#define __DDR_P21 DDRD
|
|
||||||
#define __DDR_P22 DDRA
|
|
||||||
#define __DDR_P23 DDRA
|
|
||||||
#define __DDR_P24 DDRA
|
|
||||||
#define __DDR_P25 DDRA
|
|
||||||
#define __DDR_P26 DDRA
|
|
||||||
#define __DDR_P27 DDRA
|
|
||||||
#define __DDR_P28 DDRA
|
|
||||||
#define __DDR_P29 DDRA
|
|
||||||
#define __DDR_P30 DDRC
|
|
||||||
#define __DDR_P31 DDRC
|
|
||||||
#define __DDR_P32 DDRC
|
|
||||||
#define __DDR_P33 DDRC
|
|
||||||
#define __DDR_P34 DDRC
|
|
||||||
#define __DDR_P35 DDRC
|
|
||||||
#define __DDR_P36 DDRC
|
|
||||||
#define __DDR_P37 DDRC
|
|
||||||
#define __DDR_P38 DDRD
|
|
||||||
#define __DDR_P39 DDRG
|
|
||||||
#define __DDR_P40 DDRG
|
|
||||||
#define __DDR_P41 DDRG
|
|
||||||
#define __DDR_P42 DDRL
|
|
||||||
#define __DDR_P43 DDRL
|
|
||||||
#define __DDR_P44 DDRL
|
|
||||||
#define __DDR_P45 DDRL
|
|
||||||
#define __DDR_P46 DDRL
|
|
||||||
#define __DDR_P47 DDRL
|
|
||||||
#define __DDR_P48 DDRL
|
|
||||||
#define __DDR_P49 DDRL
|
|
||||||
#define __DDR_P50 DDRB
|
|
||||||
#define __DDR_P51 DDRB
|
|
||||||
#define __DDR_P52 DDRB
|
|
||||||
#define __DDR_P53 DDRB
|
|
||||||
#define __DDR_P54 DDRF
|
|
||||||
#define __DDR_P55 DDRF
|
|
||||||
#define __DDR_P56 DDRF
|
|
||||||
#define __DDR_P57 DDRF
|
|
||||||
#define __DDR_P58 DDRF
|
|
||||||
#define __DDR_P59 DDRF
|
|
||||||
#define __DDR_P60 DDRF
|
|
||||||
#define __DDR_P61 DDRF
|
|
||||||
#define __DDR_P62 DDRK
|
|
||||||
#define __DDR_P63 DDRK
|
|
||||||
#define __DDR_P64 DDRK
|
|
||||||
#define __DDR_P65 DDRK
|
|
||||||
#define __DDR_P66 DDRK
|
|
||||||
#define __DDR_P67 DDRK
|
|
||||||
#define __DDR_P68 DDRK
|
|
||||||
#define __DDR_P69 DDRK
|
|
||||||
#define __DDR_P70 DDRG
|
|
||||||
#define __DDR_P71 DDRG
|
|
||||||
#define __DDR_P72 DDRJ
|
|
||||||
#define __DDR_P73 DDRJ
|
|
||||||
#define __DDR_P74 DDRJ
|
|
||||||
#define __DDR_P75 DDRJ
|
|
||||||
#define __DDR_P76 DDRJ
|
|
||||||
#define __DDR_P77 DDRJ
|
|
||||||
#define __DDR_P78 DDRE
|
|
||||||
#define __DDR_P79 DDRE
|
|
||||||
#define __DDR_P80 DDRE
|
|
||||||
#define __DDR_P81 DDRD
|
|
||||||
#define __DDR_P82 DDRD
|
|
||||||
#define __DDR_P83 DDRD
|
|
||||||
#define __DDR_P84 DDRH
|
|
||||||
#define __DDR_P85 DDRH
|
|
||||||
|
|
||||||
#define __BIT_P0 0
|
|
||||||
#define __BIT_P1 1
|
|
||||||
#define __BIT_P2 4
|
|
||||||
#define __BIT_P3 5
|
|
||||||
#define __BIT_P4 5
|
|
||||||
#define __BIT_P5 3
|
|
||||||
#define __BIT_P6 3
|
|
||||||
#define __BIT_P7 4
|
|
||||||
#define __BIT_P8 5
|
|
||||||
#define __BIT_P9 6
|
|
||||||
#define __BIT_P10 4
|
|
||||||
#define __BIT_P11 5
|
|
||||||
#define __BIT_P12 6
|
|
||||||
#define __BIT_P13 7
|
|
||||||
#define __BIT_P14 1
|
|
||||||
#define __BIT_P15 0
|
|
||||||
#define __BIT_P16 0
|
|
||||||
#define __BIT_P17 1
|
|
||||||
#define __BIT_P18 3
|
|
||||||
#define __BIT_P19 2
|
|
||||||
#define __BIT_P20 1
|
|
||||||
#define __BIT_P21 0
|
|
||||||
#define __BIT_P22 0
|
|
||||||
#define __BIT_P23 1
|
|
||||||
#define __BIT_P24 2
|
|
||||||
#define __BIT_P25 3
|
|
||||||
#define __BIT_P26 4
|
|
||||||
#define __BIT_P27 5
|
|
||||||
#define __BIT_P28 6
|
|
||||||
#define __BIT_P29 7
|
|
||||||
#define __BIT_P30 7
|
|
||||||
#define __BIT_P31 6
|
|
||||||
#define __BIT_P32 5
|
|
||||||
#define __BIT_P33 4
|
|
||||||
#define __BIT_P34 3
|
|
||||||
#define __BIT_P35 2
|
|
||||||
#define __BIT_P36 1
|
|
||||||
#define __BIT_P37 0
|
|
||||||
#define __BIT_P38 7
|
|
||||||
#define __BIT_P39 2
|
|
||||||
#define __BIT_P40 1
|
|
||||||
#define __BIT_P41 0
|
|
||||||
#define __BIT_P42 7
|
|
||||||
#define __BIT_P43 6
|
|
||||||
#define __BIT_P44 5
|
|
||||||
#define __BIT_P45 4
|
|
||||||
#define __BIT_P46 3
|
|
||||||
#define __BIT_P47 2
|
|
||||||
#define __BIT_P48 1
|
|
||||||
#define __BIT_P49 0
|
|
||||||
#define __BIT_P50 3
|
|
||||||
#define __BIT_P51 2
|
|
||||||
#define __BIT_P52 1
|
|
||||||
#define __BIT_P53 0
|
|
||||||
#define __BIT_P54 0
|
|
||||||
#define __BIT_P55 1
|
|
||||||
#define __BIT_P56 2
|
|
||||||
#define __BIT_P57 3
|
|
||||||
#define __BIT_P58 4
|
|
||||||
#define __BIT_P59 5
|
|
||||||
#define __BIT_P60 6
|
|
||||||
#define __BIT_P61 7
|
|
||||||
#define __BIT_P62 0
|
|
||||||
#define __BIT_P63 1
|
|
||||||
#define __BIT_P64 2
|
|
||||||
#define __BIT_P65 3
|
|
||||||
#define __BIT_P66 4
|
|
||||||
#define __BIT_P67 5
|
|
||||||
#define __BIT_P68 6
|
|
||||||
#define __BIT_P69 7
|
|
||||||
#define __BIT_P70 4
|
|
||||||
#define __BIT_P71 3
|
|
||||||
#define __BIT_P72 2
|
|
||||||
#define __BIT_P73 3
|
|
||||||
#define __BIT_P74 7
|
|
||||||
#define __BIT_P75 4
|
|
||||||
#define __BIT_P76 5
|
|
||||||
#define __BIT_P77 6
|
|
||||||
#define __BIT_P78 2
|
|
||||||
#define __BIT_P79 6
|
|
||||||
#define __BIT_P80 7
|
|
||||||
#define __BIT_P81 4
|
|
||||||
#define __BIT_P82 5
|
|
||||||
#define __BIT_P83 6
|
|
||||||
#define __BIT_P84 2
|
|
||||||
#define __BIT_P85 7
|
|
||||||
|
|
||||||
#define __BIT(pin) __BIT_P##pin
|
|
||||||
#define __MSK(pin) (1 << __BIT(pin))
|
|
||||||
|
|
||||||
#define __PIN(pin) __PIN_P##pin
|
|
||||||
#define __PORT(pin) __PORT_P##pin
|
|
||||||
#define __DDR(pin) __DDR_P##pin
|
|
||||||
|
|
||||||
#define PIN(pin) __PIN(pin)
|
|
||||||
#define PORT(pin) __PORT(pin)
|
|
||||||
#define DDR(pin) __DDR(pin)
|
|
||||||
|
|
||||||
#define PIN_INP(pin) DDR(pin) &= ~__MSK(pin)
|
|
||||||
#define PIN_OUT(pin) DDR(pin) |= __MSK(pin)
|
|
||||||
#define PIN_CLR(pin) PORT(pin) &= ~__MSK(pin)
|
|
||||||
#define PIN_SET(pin) PORT(pin) |= __MSK(pin)
|
|
||||||
#define PIN_VAL(pin, val) if (val) PIN_SET(pin); else PIN_CLR(pin);
|
|
||||||
#define PIN_GET(pin) (PIN(pin) & __MSK(pin))
|
|
||||||
#define PIN_INQ(pin) (PORT(pin) & __MSK(pin))
|
|
||||||
|
|
||||||
|
|
||||||
#endif //_IO_ATMEGA2560
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
#include "la10compat.h"
|
#include "la10compat.h"
|
||||||
#include "Marlin.h"
|
#include "Marlin.h"
|
||||||
|
#include <float.h>
|
||||||
|
|
||||||
|
|
||||||
static LA10C_MODE la10c_mode = LA10C_UNKNOWN; // Current LA compatibility mode
|
static LA10C_MODE la10c_mode = LA10C_UNKNOWN; // Current LA compatibility mode
|
||||||
|
|
@ -37,8 +38,10 @@ void la10c_mode_change(LA10C_MODE mode)
|
||||||
// Approximate a LA10 value to a LA15 equivalent.
|
// Approximate a LA10 value to a LA15 equivalent.
|
||||||
static float la10c_convert(float k)
|
static float la10c_convert(float k)
|
||||||
{
|
{
|
||||||
float new_K = k * 0.004 - 0.06;
|
float new_K = k * 0.002 - 0.01;
|
||||||
return (new_K < 0? 0: new_K);
|
return new_K < 0? 0:
|
||||||
|
new_K > (LA_K_MAX - FLT_EPSILON)? (LA_K_MAX - FLT_EPSILON):
|
||||||
|
new_K;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -52,11 +55,11 @@ float la10c_value(float k)
|
||||||
else if(k < 0)
|
else if(k < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
la10c_mode_change(k < 10? LA10C_LA15: LA10C_LA10);
|
la10c_mode_change(k < LA_LA10_MIN? LA10C_LA15: LA10C_LA10);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(la10c_mode == LA10C_LA15)
|
if(la10c_mode == LA10C_LA15)
|
||||||
return (k >= 0 && k < 10? k: -1);
|
return (k >= 0 && k < LA_K_MAX? k: -1);
|
||||||
else
|
else
|
||||||
return (k >= 0? la10c_convert(k): -1);
|
return (k >= 0? la10c_convert(k): -1);
|
||||||
}
|
}
|
||||||
|
|
@ -75,10 +78,10 @@ float la10c_jerk(float j)
|
||||||
return j;
|
return j;
|
||||||
|
|
||||||
// bring low E-jerk values into equivalent LA 1.5 values by
|
// bring low E-jerk values into equivalent LA 1.5 values by
|
||||||
// flattening the response in the (1-4.5) range using a piecewise
|
// flattening the response in the (0.3-4.5) range using a piecewise
|
||||||
// function. Is it truly worth to preserve the difference between
|
// function. Is it truly worth to preserve the difference between
|
||||||
// 1.5/2.5 E-jerk for LA1.0? Probably not, but we try nonetheless.
|
// 1.5/2.5 E-jerk for LA1.0? Probably not, but we try nonetheless.
|
||||||
j = j < 1.0? j * 3.625:
|
j = j < 0.3? j * 11.5:
|
||||||
j < 4.5? j * 0.25 + 3.375:
|
j < 4.5? j * 0.25 + 3.375:
|
||||||
j;
|
j;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,10 +17,10 @@ uint8_t lang_selected = 0;
|
||||||
|
|
||||||
#if (LANG_MODE == 0) //primary language only
|
#if (LANG_MODE == 0) //primary language only
|
||||||
|
|
||||||
uint8_t lang_select(__attribute__((unused)) uint8_t lang) { return 0; }
|
uint8_t lang_select(_UNUSED uint8_t lang) { return 0; }
|
||||||
uint8_t lang_get_count() { return 1; }
|
uint8_t lang_get_count() { return 1; }
|
||||||
uint16_t lang_get_code(__attribute__((unused)) uint8_t lang) { return LANG_CODE_EN; }
|
uint16_t lang_get_code(_UNUSED uint8_t lang) { return LANG_CODE_EN; }
|
||||||
const char* lang_get_name_by_code(__attribute__((unused)) uint16_t code) { return _n("English"); }
|
const char* lang_get_name_by_code(_UNUSED uint16_t code) { return _n("English"); }
|
||||||
void lang_reset(void) { }
|
void lang_reset(void) { }
|
||||||
uint8_t lang_is_selected(void) { return 1; }
|
uint8_t lang_is_selected(void) { return 1; }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
|
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
#include "macros.h"
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#ifdef DEBUG_SEC_LANG
|
#ifdef DEBUG_SEC_LANG
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
@ -22,9 +23,6 @@
|
||||||
|
|
||||||
#define MSG_FW_VERSION "Firmware"
|
#define MSG_FW_VERSION "Firmware"
|
||||||
|
|
||||||
#define STRINGIFY_(n) #n
|
|
||||||
#define STRINGIFY(n) STRINGIFY_(n)
|
|
||||||
|
|
||||||
#if (LANG_MODE == 0) //primary language only
|
#if (LANG_MODE == 0) //primary language only
|
||||||
#define PROGMEM_I2 __attribute__((section(".progmem0")))
|
#define PROGMEM_I2 __attribute__((section(".progmem0")))
|
||||||
#define PROGMEM_I1 __attribute__((section(".progmem1")))
|
#define PROGMEM_I1 __attribute__((section(".progmem1")))
|
||||||
|
|
|
||||||
|
|
@ -486,11 +486,17 @@ void lcd_escape_write(uint8_t chr)
|
||||||
#endif //VT100
|
#endif //VT100
|
||||||
|
|
||||||
|
|
||||||
int lcd_putc(int c)
|
int lcd_putc(char c)
|
||||||
{
|
{
|
||||||
return fputc(c, lcdout);
|
return fputc(c, lcdout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int lcd_putc_at(uint8_t c, uint8_t r, char ch)
|
||||||
|
{
|
||||||
|
lcd_set_cursor(c, r);
|
||||||
|
return fputc(ch, lcdout);
|
||||||
|
}
|
||||||
|
|
||||||
int lcd_puts_P(const char* str)
|
int lcd_puts_P(const char* str)
|
||||||
{
|
{
|
||||||
return fputs_P(str, lcdout);
|
return fputs_P(str, lcdout);
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,10 @@ extern void lcd_set_cursor(uint8_t col, uint8_t row);
|
||||||
extern void lcd_createChar_P(uint8_t, const uint8_t*);
|
extern void lcd_createChar_P(uint8_t, const uint8_t*);
|
||||||
|
|
||||||
|
|
||||||
extern int lcd_putc(int c);
|
// char c is non-standard, however it saves 1B on stack
|
||||||
|
extern int lcd_putc(char c);
|
||||||
|
extern int lcd_putc_at(uint8_t c, uint8_t r, char ch);
|
||||||
|
|
||||||
extern int lcd_puts_P(const char* str);
|
extern int lcd_puts_P(const char* str);
|
||||||
extern int lcd_puts_at_P(uint8_t c, uint8_t r, const char* str);
|
extern int lcd_puts_at_P(uint8_t c, uint8_t r, const char* str);
|
||||||
extern int lcd_printf_P(const char* format, ...);
|
extern int lcd_printf_P(const char* format, ...);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,90 @@
|
||||||
|
#ifndef MACROS_H
|
||||||
|
#define MACROS_H
|
||||||
|
|
||||||
|
#include <avr/interrupt.h> //for cli() and sei()
|
||||||
|
|
||||||
|
#define FORCE_INLINE __attribute__((always_inline)) inline
|
||||||
|
#define _UNUSED __attribute__((unused))
|
||||||
|
|
||||||
|
#ifndef CRITICAL_SECTION_START
|
||||||
|
#define CRITICAL_SECTION_START unsigned char _sreg = SREG; cli();
|
||||||
|
#define CRITICAL_SECTION_END SREG = _sreg;
|
||||||
|
#endif //CRITICAL_SECTION_START
|
||||||
|
|
||||||
|
// Macros to make a string from a macro
|
||||||
|
#define STRINGIFY_(M) #M
|
||||||
|
#define STRINGIFY(M) STRINGIFY_(M)
|
||||||
|
|
||||||
|
// Macros for bit masks
|
||||||
|
#undef _BV
|
||||||
|
#define _BV(n) (1<<(n))
|
||||||
|
#define TEST(n,b) (!!((n)&_BV(b)))
|
||||||
|
#define SET_BIT_TO(N,B,TF) do{ if (TF) SBI(N,B); else CBI(N,B); }while(0)
|
||||||
|
|
||||||
|
#ifndef SBI
|
||||||
|
#define SBI(A,B) (A |= (1 << (B)))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef CBI
|
||||||
|
#define CBI(A,B) (A &= ~(1 << (B)))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define TBI(N,B) (N ^= _BV(B))
|
||||||
|
|
||||||
|
|
||||||
|
// Macros to chain up to 12 conditions
|
||||||
|
#define _DO_1(W,C,A) (_##W##_1(A))
|
||||||
|
#define _DO_2(W,C,A,B) (_##W##_1(A) C _##W##_1(B))
|
||||||
|
#define _DO_3(W,C,A,V...) (_##W##_1(A) C _DO_2(W,C,V))
|
||||||
|
#define _DO_4(W,C,A,V...) (_##W##_1(A) C _DO_3(W,C,V))
|
||||||
|
#define _DO_5(W,C,A,V...) (_##W##_1(A) C _DO_4(W,C,V))
|
||||||
|
#define _DO_6(W,C,A,V...) (_##W##_1(A) C _DO_5(W,C,V))
|
||||||
|
#define _DO_7(W,C,A,V...) (_##W##_1(A) C _DO_6(W,C,V))
|
||||||
|
#define _DO_8(W,C,A,V...) (_##W##_1(A) C _DO_7(W,C,V))
|
||||||
|
#define _DO_9(W,C,A,V...) (_##W##_1(A) C _DO_8(W,C,V))
|
||||||
|
#define _DO_10(W,C,A,V...) (_##W##_1(A) C _DO_9(W,C,V))
|
||||||
|
#define _DO_11(W,C,A,V...) (_##W##_1(A) C _DO_10(W,C,V))
|
||||||
|
#define _DO_12(W,C,A,V...) (_##W##_1(A) C _DO_11(W,C,V))
|
||||||
|
#define __DO_N(W,C,N,V...) _DO_##N(W,C,V)
|
||||||
|
#define _DO_N(W,C,N,V...) __DO_N(W,C,N,V)
|
||||||
|
#define DO(W,C,V...) _DO_N(W,C,NUM_ARGS(V),V)
|
||||||
|
|
||||||
|
// Macros to support option testing
|
||||||
|
#define _CAT(a,V...) a##V
|
||||||
|
#define CAT(a,V...) _CAT(a,V)
|
||||||
|
|
||||||
|
#define _ISENA_ ~,1
|
||||||
|
#define _ISENA_1 ~,1
|
||||||
|
#define _ISENA_0x1 ~,1
|
||||||
|
#define _ISENA_true ~,1
|
||||||
|
#define _ISENA(V...) IS_PROBE(V)
|
||||||
|
|
||||||
|
#define _ENA_1(O) _ISENA(CAT(_IS,CAT(ENA_, O)))
|
||||||
|
#define _DIS_1(O) NOT(_ENA_1(O))
|
||||||
|
#define ENABLED(V...) DO(ENA,&&,V)
|
||||||
|
#define DISABLED(V...) DO(DIS,&&,V)
|
||||||
|
|
||||||
|
#define TERN(O,A,B) _TERN(_ENA_1(O),B,A) // OPTION converted to '0' or '1'
|
||||||
|
#define TERN0(O,A) _TERN(_ENA_1(O),0,A) // OPTION converted to A or '0'
|
||||||
|
#define TERN1(O,A) _TERN(_ENA_1(O),1,A) // OPTION converted to A or '1'
|
||||||
|
#define TERN_(O,A) _TERN(_ENA_1(O),,A) // OPTION converted to A or '<nul>'
|
||||||
|
#define _TERN(E,V...) __TERN(_CAT(T_,E),V) // Prepend 'T_' to get 'T_0' or 'T_1'
|
||||||
|
#define __TERN(T,V...) ___TERN(_CAT(_NO,T),V) // Prepend '_NO' to get '_NOT_0' or '_NOT_1'
|
||||||
|
#define ___TERN(P,V...) THIRD(P,V) // If first argument has a comma, A. Else B.
|
||||||
|
|
||||||
|
|
||||||
|
// Use NUM_ARGS(__VA_ARGS__) to get the number of variadic arguments
|
||||||
|
#define _NUM_ARGS(_,Z,Y,X,W,V,U,T,S,R,Q,P,O,N,M,L,K,J,I,H,G,F,E,D,C,B,A,OUT,...) OUT
|
||||||
|
#define NUM_ARGS(V...) _NUM_ARGS(0,V,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)
|
||||||
|
|
||||||
|
//
|
||||||
|
// Primitives supporting precompiler REPEAT
|
||||||
|
//
|
||||||
|
#define FIRST(a,...) a
|
||||||
|
#define SECOND(a,b,...) b
|
||||||
|
#define THIRD(a,b,c,...) c
|
||||||
|
|
||||||
|
#define IS_PROBE(V...) SECOND(V, 0) // Get the second item passed, or 0
|
||||||
|
#define NOT(x) IS_PROBE(_CAT(_NOT_, x)) // NOT('0') gets '1'. Anything else gets '0'.
|
||||||
|
|
||||||
|
#endif //MACROS_H
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
#include "lcd.h"
|
#include "lcd.h"
|
||||||
#include "Configuration.h"
|
#include "Configuration.h"
|
||||||
#include "Marlin.h"
|
#include "Marlin.h"
|
||||||
|
#include "cmdqueue.h"
|
||||||
#include "ultralcd.h"
|
#include "ultralcd.h"
|
||||||
#include "language.h"
|
#include "language.h"
|
||||||
#include "static_assert.h"
|
#include "static_assert.h"
|
||||||
|
|
@ -48,6 +49,7 @@ void menu_goto(menu_func_t menu, const uint32_t encoder, const bool feedback, bo
|
||||||
{
|
{
|
||||||
menu_menu = menu;
|
menu_menu = menu;
|
||||||
lcd_encoder = encoder;
|
lcd_encoder = encoder;
|
||||||
|
menu_top = 0; //reset menu view. Needed if menu_back() is called from deep inside a menu, such as Support
|
||||||
asm("sei");
|
asm("sei");
|
||||||
if (reset_menu_state)
|
if (reset_menu_state)
|
||||||
{
|
{
|
||||||
|
|
@ -250,8 +252,7 @@ static void menu_draw_item_puts_P(char type_char, const char* str, char num)
|
||||||
lcd_set_cursor(0, menu_row);
|
lcd_set_cursor(0, menu_row);
|
||||||
lcd_printf_P(PSTR("%c%-.16S "), menu_selection_mark(), str);
|
lcd_printf_P(PSTR("%c%-.16S "), menu_selection_mark(), str);
|
||||||
lcd_putc(num);
|
lcd_putc(num);
|
||||||
lcd_set_cursor(19, menu_row);
|
lcd_putc_at(19, menu_row, type_char);
|
||||||
lcd_putc(type_char);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -310,7 +311,7 @@ uint8_t menu_item_submenu_E(const Sheet &sheet, menu_func_t submenu)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t menu_item_function_E(const Sheet &sheet, menu_func_t func)
|
uint8_t __attribute__((noinline)) menu_item_function_E(const Sheet &sheet, menu_func_t func)
|
||||||
{
|
{
|
||||||
if (menu_item == menu_line)
|
if (menu_item == menu_line)
|
||||||
{
|
{
|
||||||
|
|
@ -344,6 +345,10 @@ uint8_t menu_item_back_P(const char* str)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool __attribute__((noinline)) menu_item_leave(){
|
||||||
|
return ((menu_item == menu_line) && menu_clicked && (lcd_encoder == menu_item)) || menu_leaving;
|
||||||
|
}
|
||||||
|
|
||||||
uint8_t menu_item_function_P(const char* str, menu_func_t func)
|
uint8_t menu_item_function_P(const char* str, menu_func_t func)
|
||||||
{
|
{
|
||||||
if (menu_item == menu_line)
|
if (menu_item == menu_line)
|
||||||
|
|
|
||||||
|
|
@ -112,7 +112,8 @@ extern uint8_t menu_item_function_E(const Sheet &sheet, menu_func_t func);
|
||||||
extern uint8_t menu_item_back_P(const char* str);
|
extern uint8_t menu_item_back_P(const char* str);
|
||||||
|
|
||||||
// leaving menu - this condition must be immediately before MENU_ITEM_BACK_P
|
// leaving menu - this condition must be immediately before MENU_ITEM_BACK_P
|
||||||
#define ON_MENU_LEAVE(func) do { if (((menu_item == menu_line) && menu_clicked && (lcd_encoder == menu_item)) || menu_leaving){ func } } while (0)
|
#define ON_MENU_LEAVE(func) do { if (menu_item_leave()){ func } } while (0)
|
||||||
|
extern bool menu_item_leave();
|
||||||
|
|
||||||
#define MENU_ITEM_FUNCTION_P(str, func) do { if (menu_item_function_P(str, func)) return; } while (0)
|
#define MENU_ITEM_FUNCTION_P(str, func) do { if (menu_item_function_P(str, func)) return; } while (0)
|
||||||
extern uint8_t menu_item_function_P(const char* str, menu_func_t func);
|
extern uint8_t menu_item_function_P(const char* str, menu_func_t func);
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,8 @@
|
||||||
#include "tmc2130.h"
|
#include "tmc2130.h"
|
||||||
#endif //TMC2130
|
#endif //TMC2130
|
||||||
|
|
||||||
|
#define DBG(args...) printf_P(args)
|
||||||
|
|
||||||
uint8_t world2machine_correction_mode;
|
uint8_t world2machine_correction_mode;
|
||||||
float world2machine_rotation_and_skew[2][2];
|
float world2machine_rotation_and_skew[2][2];
|
||||||
float world2machine_rotation_and_skew_inv[2][2];
|
float world2machine_rotation_and_skew_inv[2][2];
|
||||||
|
|
@ -369,7 +371,9 @@ BedSkewOffsetDetectionResultType calculate_machine_skew_and_offset_LS(
|
||||||
BedSkewOffsetDetectionResultType result = BED_SKEW_OFFSET_DETECTION_PERFECT;
|
BedSkewOffsetDetectionResultType result = BED_SKEW_OFFSET_DETECTION_PERFECT;
|
||||||
{
|
{
|
||||||
angleDiff = fabs(a2 - a1);
|
angleDiff = fabs(a2 - a1);
|
||||||
eeprom_update_float((float*)(EEPROM_XYZ_CAL_SKEW), angleDiff); //storing xyz cal. skew to be able to show in support menu later
|
/// XY skew and Y-bed skew
|
||||||
|
DBG(_n("Measured skews: %f %f\n"), degrees(a2 - a1), degrees(a2));
|
||||||
|
eeprom_update_float((float *)(EEPROM_XYZ_CAL_SKEW), angleDiff); //storing xyz cal. skew to be able to show in support menu later
|
||||||
if (angleDiff > bed_skew_angle_mild)
|
if (angleDiff > bed_skew_angle_mild)
|
||||||
result = (angleDiff > bed_skew_angle_extreme) ?
|
result = (angleDiff > bed_skew_angle_extreme) ?
|
||||||
BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME :
|
BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME :
|
||||||
|
|
@ -920,7 +924,7 @@ static inline void go_xy(float x, float y, float fr)
|
||||||
|
|
||||||
static inline void go_to_current(float fr)
|
static inline void go_to_current(float fr)
|
||||||
{
|
{
|
||||||
plan_buffer_line_curposXYZE(fr, active_extruder);
|
plan_buffer_line_curposXYZE(fr);
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -929,7 +933,7 @@ static inline void update_current_position_xyz()
|
||||||
current_position[X_AXIS] = st_get_position_mm(X_AXIS);
|
current_position[X_AXIS] = st_get_position_mm(X_AXIS);
|
||||||
current_position[Y_AXIS] = st_get_position_mm(Y_AXIS);
|
current_position[Y_AXIS] = st_get_position_mm(Y_AXIS);
|
||||||
current_position[Z_AXIS] = st_get_position_mm(Z_AXIS);
|
current_position[Z_AXIS] = st_get_position_mm(Z_AXIS);
|
||||||
plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
|
plan_set_position_curposXYZE();
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void update_current_position_z()
|
static inline void update_current_position_z()
|
||||||
|
|
@ -1380,7 +1384,7 @@ inline bool find_bed_induction_sensor_point_xy(int verbosity_level)
|
||||||
|
|
||||||
// go_xyz(current_position[X_AXIS], current_position[Y_AXIS], MESH_HOME_Z_SEARCH, homing_feedrate[Z_AXIS]/60);
|
// go_xyz(current_position[X_AXIS], current_position[Y_AXIS], MESH_HOME_Z_SEARCH, homing_feedrate[Z_AXIS]/60);
|
||||||
go_xyz(x0, y0, current_position[Z_AXIS], feedrate);
|
go_xyz(x0, y0, current_position[Z_AXIS], feedrate);
|
||||||
// Continously lower the Z axis.
|
// Continuously lower the Z axis.
|
||||||
endstops_hit_on_purpose();
|
endstops_hit_on_purpose();
|
||||||
enable_z_endstop(true);
|
enable_z_endstop(true);
|
||||||
while (current_position[Z_AXIS] > -10.f) {
|
while (current_position[Z_AXIS] > -10.f) {
|
||||||
|
|
@ -2271,7 +2275,7 @@ BedSkewOffsetDetectionResultType find_bed_offset_and_skew(int8_t verbosity_level
|
||||||
/*}
|
/*}
|
||||||
else {
|
else {
|
||||||
// if first iteration failed, count corrected point coordinates as initial
|
// if first iteration failed, count corrected point coordinates as initial
|
||||||
// Use the coorrected coordinate, which is a result of find_bed_offset_and_skew().
|
// Use the corrected coordinate, which is a result of find_bed_offset_and_skew().
|
||||||
|
|
||||||
current_position[X_AXIS] = vec_x[0] * pgm_read_float(bed_ref_points_4 + k * 2) + vec_y[0] * pgm_read_float(bed_ref_points_4 + k * 2 + 1) + cntr[0];
|
current_position[X_AXIS] = vec_x[0] * pgm_read_float(bed_ref_points_4 + k * 2) + vec_y[0] * pgm_read_float(bed_ref_points_4 + k * 2 + 1) + cntr[0];
|
||||||
current_position[Y_AXIS] = vec_x[1] * pgm_read_float(bed_ref_points_4 + k * 2) + vec_y[1] * pgm_read_float(bed_ref_points_4 + k * 2 + 1) + cntr[1];
|
current_position[Y_AXIS] = vec_x[1] * pgm_read_float(bed_ref_points_4 + k * 2) + vec_y[1] * pgm_read_float(bed_ref_points_4 + k * 2 + 1) + cntr[1];
|
||||||
|
|
@ -2375,8 +2379,9 @@ BedSkewOffsetDetectionResultType find_bed_offset_and_skew(int8_t verbosity_level
|
||||||
delay_keep_alive(3000);
|
delay_keep_alive(3000);
|
||||||
}
|
}
|
||||||
#endif // SUPPORT_VERBOSITY
|
#endif // SUPPORT_VERBOSITY
|
||||||
}
|
}
|
||||||
delay_keep_alive(0); //manage_heater, reset watchdog, manage inactivity
|
DBG(_n("All 4 calibration points found.\n"));
|
||||||
|
delay_keep_alive(0); //manage_heater, reset watchdog, manage inactivity
|
||||||
|
|
||||||
#ifdef SUPPORT_VERBOSITY
|
#ifdef SUPPORT_VERBOSITY
|
||||||
if (verbosity_level >= 20) {
|
if (verbosity_level >= 20) {
|
||||||
|
|
@ -2386,7 +2391,7 @@ BedSkewOffsetDetectionResultType find_bed_offset_and_skew(int8_t verbosity_level
|
||||||
// Don't let the manage_inactivity() function remove power from the motors.
|
// Don't let the manage_inactivity() function remove power from the motors.
|
||||||
refresh_cmd_timeout();
|
refresh_cmd_timeout();
|
||||||
// Go to the measurement point.
|
// Go to the measurement point.
|
||||||
// Use the coorrected coordinate, which is a result of find_bed_offset_and_skew().
|
// Use the corrected coordinate, which is a result of find_bed_offset_and_skew().
|
||||||
current_position[X_AXIS] = pts[mesh_point * 2];
|
current_position[X_AXIS] = pts[mesh_point * 2];
|
||||||
current_position[Y_AXIS] = pts[mesh_point * 2 + 1];
|
current_position[Y_AXIS] = pts[mesh_point * 2 + 1];
|
||||||
go_to_current(homing_feedrate[X_AXIS] / 60);
|
go_to_current(homing_feedrate[X_AXIS] / 60);
|
||||||
|
|
@ -2406,6 +2411,7 @@ BedSkewOffsetDetectionResultType find_bed_offset_and_skew(int8_t verbosity_level
|
||||||
delay_keep_alive(0); //manage_heater, reset watchdog, manage inactivity
|
delay_keep_alive(0); //manage_heater, reset watchdog, manage inactivity
|
||||||
|
|
||||||
if (result >= 0) {
|
if (result >= 0) {
|
||||||
|
DBG(_n("Calibration success.\n"));
|
||||||
world2machine_update(vec_x, vec_y, cntr);
|
world2machine_update(vec_x, vec_y, cntr);
|
||||||
#if 1
|
#if 1
|
||||||
// Fearlessly store the calibration values into the eeprom.
|
// Fearlessly store the calibration values into the eeprom.
|
||||||
|
|
@ -2450,7 +2456,7 @@ BedSkewOffsetDetectionResultType find_bed_offset_and_skew(int8_t verbosity_level
|
||||||
// Don't let the manage_inactivity() function remove power from the motors.
|
// Don't let the manage_inactivity() function remove power from the motors.
|
||||||
refresh_cmd_timeout();
|
refresh_cmd_timeout();
|
||||||
// Go to the measurement point.
|
// Go to the measurement point.
|
||||||
// Use the coorrected coordinate, which is a result of find_bed_offset_and_skew().
|
// Use the corrected coordinate, which is a result of find_bed_offset_and_skew().
|
||||||
uint8_t ix = mesh_point % MESH_MEAS_NUM_X_POINTS; // from 0 to MESH_NUM_X_POINTS - 1
|
uint8_t ix = mesh_point % MESH_MEAS_NUM_X_POINTS; // from 0 to MESH_NUM_X_POINTS - 1
|
||||||
uint8_t iy = mesh_point / MESH_MEAS_NUM_X_POINTS;
|
uint8_t iy = mesh_point / MESH_MEAS_NUM_X_POINTS;
|
||||||
if (iy & 1) ix = (MESH_MEAS_NUM_X_POINTS - 1) - ix;
|
if (iy & 1) ix = (MESH_MEAS_NUM_X_POINTS - 1) - ix;
|
||||||
|
|
@ -2463,8 +2469,11 @@ BedSkewOffsetDetectionResultType find_bed_offset_and_skew(int8_t verbosity_level
|
||||||
#endif // SUPPORT_VERBOSITY
|
#endif // SUPPORT_VERBOSITY
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if (result == BED_SKEW_OFFSET_DETECTION_FITTING_FAILED && too_far_mask == 2) return result; //if fitting failed and front center point is out of reach, terminate calibration and inform user
|
if (result == BED_SKEW_OFFSET_DETECTION_FITTING_FAILED && too_far_mask == 2){
|
||||||
iteration++;
|
DBG(_n("Fitting failed => calibration failed.\n"));
|
||||||
|
return result; //if fitting failed and front center point is out of reach, terminate calibration and inform user
|
||||||
|
}
|
||||||
|
iteration++;
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,19 +14,26 @@ const char MSG_BABYSTEP_Z_NOT_SET[] PROGMEM_I1 = ISTR("Distance between tip of t
|
||||||
const char MSG_BED[] PROGMEM_I1 = ISTR("Bed"); ////
|
const char MSG_BED[] PROGMEM_I1 = ISTR("Bed"); ////
|
||||||
const char MSG_BED_DONE[] PROGMEM_I1 = ISTR("Bed done"); ////
|
const char MSG_BED_DONE[] PROGMEM_I1 = ISTR("Bed done"); ////
|
||||||
const char MSG_BED_HEATING[] PROGMEM_I1 = ISTR("Bed Heating"); ////
|
const char MSG_BED_HEATING[] PROGMEM_I1 = ISTR("Bed Heating"); ////
|
||||||
const char MSG_BED_LEVELING_FAILED_POINT_LOW[] PROGMEM_I1 = ISTR("Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."); ////c=20 r=4
|
const char MSG_BED_LEVELING_FAILED_POINT_LOW[] PROGMEM_I1 = ISTR("Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."); ////c=20 r=5
|
||||||
const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED[] PROGMEM_I1 = ISTR("XYZ calibration failed. Please consult the manual."); ////c=20 r=8
|
const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED[] PROGMEM_I1 = ISTR("XYZ calibration failed. Please consult the manual."); ////c=20 r=8
|
||||||
|
const char MSG_BELT_STATUS[] PROGMEM_I1 = ISTR("Belt Status");////c=18
|
||||||
const char MSG_CALIBRATE_Z_AUTO[] PROGMEM_I1 = ISTR("Calibrating Z"); ////c=20 r=2
|
const char MSG_CALIBRATE_Z_AUTO[] PROGMEM_I1 = ISTR("Calibrating Z"); ////c=20 r=2
|
||||||
const char MSG_CARD_MENU[] PROGMEM_I1 = ISTR("Print from SD"); ////
|
const char MSG_CARD_MENU[] PROGMEM_I1 = ISTR("Print from SD"); ////
|
||||||
|
const char MSG_CHECKING_X[] PROGMEM_I1 = ISTR("Checking X axis"); ////c=20
|
||||||
|
const char MSG_CHECKING_Y[] PROGMEM_I1 = ISTR("Checking Y axis"); ////c=20
|
||||||
const char MSG_CONFIRM_NOZZLE_CLEAN[] PROGMEM_I1 = ISTR("Please clean the nozzle for calibration. Click when done."); ////c=20 r=8
|
const char MSG_CONFIRM_NOZZLE_CLEAN[] PROGMEM_I1 = ISTR("Please clean the nozzle for calibration. Click when done."); ////c=20 r=8
|
||||||
const char MSG_COOLDOWN[] PROGMEM_I1 = ISTR("Cooldown"); ////
|
const char MSG_COOLDOWN[] PROGMEM_I1 = ISTR("Cooldown"); ////
|
||||||
|
const char MSG_CRASH[] PROGMEM_I1 = ISTR("Crash"); ////c=7
|
||||||
const char MSG_CRASH_DETECTED[] PROGMEM_I1 = ISTR("Crash detected."); ////c=20 r=1
|
const char MSG_CRASH_DETECTED[] PROGMEM_I1 = ISTR("Crash detected."); ////c=20 r=1
|
||||||
const char MSG_CRASHDETECT[] PROGMEM_I1 = ISTR("Crash det."); ////
|
const char MSG_CRASHDETECT[] PROGMEM_I1 = ISTR("Crash det."); ////c=13
|
||||||
const char MSG_ERROR[] PROGMEM_I1 = ISTR("ERROR:"); ////
|
const char MSG_ERROR[] PROGMEM_I1 = ISTR("ERROR:"); ////
|
||||||
const char MSG_EXTRUDER[] PROGMEM_I1 = ISTR("Extruder"); ////c=17 r=1
|
const char MSG_EXTRUDER[] PROGMEM_I1 = ISTR("Extruder"); ////c=17
|
||||||
|
const char MSG_FANS_CHECK[] PROGMEM_I1 = ISTR("Fans check"); ////c=13
|
||||||
|
const char MSG_FIL_RUNOUTS[] PROGMEM_I1 = ISTR("Fil. runouts"); ////c=14
|
||||||
const char MSG_FILAMENT[] PROGMEM_I1 = ISTR("Filament"); ////c=17 r=1
|
const char MSG_FILAMENT[] PROGMEM_I1 = ISTR("Filament"); ////c=17 r=1
|
||||||
const char MSG_FAN_SPEED[] PROGMEM_I1 = ISTR("Fan speed"); ////c=14
|
const char MSG_FAN_SPEED[] PROGMEM_I1 = ISTR("Fan speed"); ////c=14
|
||||||
const char MSG_FILAMENT_CLEAN[] PROGMEM_I1 = ISTR("Filament extruding & with correct color?"); ////c=20 r=2
|
const char MSG_FILAMENT_CLEAN[] PROGMEM_I1 = ISTR("Filament extruding & with correct color?"); ////c=20 r=2
|
||||||
|
const char MSG_FILAMENT_LOADED[] PROGMEM_I1 = ISTR("Is filament loaded?"); ////c=20 r=2
|
||||||
const char MSG_FILAMENT_LOADING_T0[] PROGMEM_I1 = ISTR("Insert filament into extruder 1. Click when done."); ////c=20 r=4
|
const char MSG_FILAMENT_LOADING_T0[] PROGMEM_I1 = ISTR("Insert filament into extruder 1. Click when done."); ////c=20 r=4
|
||||||
const char MSG_FILAMENT_LOADING_T1[] PROGMEM_I1 = ISTR("Insert filament into extruder 2. Click when done."); ////c=20 r=4
|
const char MSG_FILAMENT_LOADING_T1[] PROGMEM_I1 = ISTR("Insert filament into extruder 2. Click when done."); ////c=20 r=4
|
||||||
const char MSG_FILAMENT_LOADING_T2[] PROGMEM_I1 = ISTR("Insert filament into extruder 3. Click when done."); ////c=20 r=4
|
const char MSG_FILAMENT_LOADING_T2[] PROGMEM_I1 = ISTR("Insert filament into extruder 3. Click when done."); ////c=20 r=4
|
||||||
|
|
@ -34,40 +41,48 @@ const char MSG_FILAMENT_LOADING_T3[] PROGMEM_I1 = ISTR("Insert filament into ext
|
||||||
const char MSG_FILAMENTCHANGE[] PROGMEM_I1 = ISTR("Change filament"); ////
|
const char MSG_FILAMENTCHANGE[] PROGMEM_I1 = ISTR("Change filament"); ////
|
||||||
const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1[] PROGMEM_I1 = ISTR("Searching bed calibration point"); ////c=60
|
const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1[] PROGMEM_I1 = ISTR("Searching bed calibration point"); ////c=60
|
||||||
const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2[] PROGMEM_I1 = ISTR(" of 4"); ////c=14
|
const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2[] PROGMEM_I1 = ISTR(" of 4"); ////c=14
|
||||||
const char MSG_FINISHING_MOVEMENTS[] PROGMEM_I1 = ISTR("Finishing movements"); ////c=20 r=1
|
const char MSG_FINISHING_MOVEMENTS[] PROGMEM_I1 = ISTR("Finishing movements"); ////c=20
|
||||||
const char MSG_FOLLOW_CALIBRATION_FLOW[] PROGMEM_I1 = ISTR("Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."); ////c=20 r=8
|
const char MSG_FOLLOW_CALIBRATION_FLOW[] PROGMEM_I1 = ISTR("Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."); ////c=20 r=8
|
||||||
const char MSG_FOLLOW_Z_CALIBRATION_FLOW[] PROGMEM_I1 = ISTR("There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."); ////c=20 r=8
|
const char MSG_FOLLOW_Z_CALIBRATION_FLOW[] PROGMEM_I1 = ISTR("There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."); ////c=20 r=9
|
||||||
const char MSG_FSENSOR_AUTOLOAD[] PROGMEM_I1 = ISTR("F. autoload"); ////c=17 r=1
|
const char MSG_FSENSOR_AUTOLOAD[] PROGMEM_I1 = ISTR("F. autoload"); ////c=13
|
||||||
const char MSG_FSENSOR[] PROGMEM_I1 = ISTR("Fil. sensor"); ////
|
const char MSG_FSENSOR[] PROGMEM_I1 = ISTR("Fil. sensor"); ////
|
||||||
const char MSG_HEATING[] PROGMEM_I1 = ISTR("Heating"); ////
|
const char MSG_HEATING[] PROGMEM_I1 = ISTR("Heating"); ////
|
||||||
const char MSG_HEATING_COMPLETE[] PROGMEM_I1 = ISTR("Heating done."); ////c=20
|
const char MSG_HEATING_COMPLETE[] PROGMEM_I1 = ISTR("Heating done."); ////c=20
|
||||||
const char MSG_HOMEYZ[] PROGMEM_I1 = ISTR("Calibrate Z"); ////
|
const char MSG_HOMEYZ[] PROGMEM_I1 = ISTR("Calibrate Z"); ////
|
||||||
const char MSG_CHOOSE_EXTRUDER[] PROGMEM_I1 = ISTR("Choose extruder:"); ////c=20 r=1
|
const char MSG_CHOOSE_EXTRUDER[] PROGMEM_I1 = ISTR("Choose extruder:"); ////c=20 r=1
|
||||||
const char MSG_CHOOSE_FILAMENT[] PROGMEM_I1 = ISTR("Choose filament:"); ////c=20 r=1
|
const char MSG_CHOOSE_FILAMENT[] PROGMEM_I1 = ISTR("Choose filament:"); ////c=20 r=1
|
||||||
|
const char MSG_LAST_PRINT[] PROGMEM_I1 = ISTR("Last print"); ////c=18
|
||||||
|
const char MSG_LAST_PRINT_FAILURES[] PROGMEM_I1 = ISTR("Last print failures"); ////c=20
|
||||||
const char MSG_LOAD_FILAMENT[] PROGMEM_I1 = ISTR("Load filament"); //// Number 1 to 5 is added behind text e.g. "Load filament 1" c=16
|
const char MSG_LOAD_FILAMENT[] PROGMEM_I1 = ISTR("Load filament"); //// Number 1 to 5 is added behind text e.g. "Load filament 1" c=16
|
||||||
const char MSG_LOADING_FILAMENT[] PROGMEM_I1 = ISTR("Loading filament"); ////c=20
|
const char MSG_LOADING_FILAMENT[] PROGMEM_I1 = ISTR("Loading filament"); ////c=20
|
||||||
const char MSG_EJECT_FILAMENT[] PROGMEM_I1 = ISTR("Eject filament"); //// Number 1 to 5 is added behind text e.g. "Eject filament 1" c=16
|
const char MSG_EJECT_FILAMENT[] PROGMEM_I1 = ISTR("Eject filament"); //// Number 1 to 5 is added behind text e.g. "Eject filament 1" c=16
|
||||||
const char MSG_CUT_FILAMENT[] PROGMEM_I1 = ISTR("Cut filament"); //// Number 1 to 5 is added behind text e.g. "Cut filament 1" c=16
|
const char MSG_CUT_FILAMENT[] PROGMEM_I1 = ISTR("Cut filament"); //// Number 1 to 5 is added behind text e.g. "Cut filament 1" c=16
|
||||||
const char MSG_M117_V2_CALIBRATION[] PROGMEM_I1 = ISTR("M117 First layer cal."); ////c=25 r=1
|
const char MSG_M117_V2_CALIBRATION[] PROGMEM_I1 = ISTR("M117 First layer cal."); ////c=25
|
||||||
const char MSG_MAIN[] PROGMEM_I1 = ISTR("Main"); ////
|
const char MSG_MAIN[] PROGMEM_I1 = ISTR("Main"); ////
|
||||||
const char MSG_BACK[] PROGMEM_I1 = ISTR("Back"); ////
|
const char MSG_BACK[] PROGMEM_I1 = ISTR("Back"); ////
|
||||||
const char MSG_SHEET[] PROGMEM_I1 = ISTR("Sheet"); ////c=10
|
const char MSG_SHEET[] PROGMEM_I1 = ISTR("Sheet"); ////c=10
|
||||||
|
const char MSG_STEEL_SHEETS[] PROGMEM_I1 = ISTR("Steel sheets"); ////c=18
|
||||||
const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1[] PROGMEM_I1 = ISTR("Measuring reference height of calibration point"); ////c=60
|
const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1[] PROGMEM_I1 = ISTR("Measuring reference height of calibration point"); ////c=60
|
||||||
const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2[] PROGMEM_I1 = ISTR(" of 9"); ////c=14
|
const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2[] PROGMEM_I1 = ISTR(" of 9"); ////c=14
|
||||||
const char MSG_MENU_CALIBRATION[] PROGMEM_I1 = ISTR("Calibration"); ////
|
const char MSG_MENU_CALIBRATION[] PROGMEM_I1 = ISTR("Calibration"); ////
|
||||||
|
const char MSG_MMU_FAILS[] PROGMEM_I1 = ISTR("MMU fails"); ////c=14
|
||||||
|
const char MSG_MMU_LOAD_FAILS[] PROGMEM_I1 = ISTR("MMU load fails"); ////c=14
|
||||||
const char MSG_NO[] PROGMEM_I1 = ISTR("No"); ////
|
const char MSG_NO[] PROGMEM_I1 = ISTR("No"); ////
|
||||||
const char MSG_NOZZLE[] PROGMEM_I1 = ISTR("Nozzle"); ////
|
const char MSG_NOZZLE[] PROGMEM_I1 = ISTR("Nozzle"); ////
|
||||||
const char MSG_PAPER[] PROGMEM_I1 = ISTR("Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."); ////c=20 r=8
|
const char MSG_PAPER[] PROGMEM_I1 = ISTR("Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."); ////c=20 r=10
|
||||||
const char MSG_PLACE_STEEL_SHEET[] PROGMEM_I1 = ISTR("Please place steel sheet on heatbed."); ////c=20 r=4
|
const char MSG_PLACE_STEEL_SHEET[] PROGMEM_I1 = ISTR("Please place steel sheet on heatbed."); ////c=20 r=4
|
||||||
const char MSG_PLEASE_WAIT[] PROGMEM_I1 = ISTR("Please wait"); ////c=20
|
const char MSG_PLEASE_WAIT[] PROGMEM_I1 = ISTR("Please wait"); ////c=20
|
||||||
|
const char MSG_POWER_FAILURES[] PROGMEM_I1 = ISTR("Power failures"); ////c=14
|
||||||
const char MSG_PREHEAT_NOZZLE[] PROGMEM_I1 = ISTR("Preheat the nozzle!"); ////c=20
|
const char MSG_PREHEAT_NOZZLE[] PROGMEM_I1 = ISTR("Preheat the nozzle!"); ////c=20
|
||||||
const char MSG_PRESS_TO_UNLOAD[] PROGMEM_I1 = ISTR("Please press the knob to unload filament"); ////c=20 r=4
|
const char MSG_PRESS_TO_UNLOAD[] PROGMEM_I1 = ISTR("Please press the knob to unload filament"); ////c=20 r=4
|
||||||
const char MSG_PRINT_ABORTED[] PROGMEM_I1 = ISTR("Print aborted"); ////c=20
|
const char MSG_PRINT_ABORTED[] PROGMEM_I1 = ISTR("Print aborted"); ////c=20
|
||||||
const char MSG_PULL_OUT_FILAMENT[] PROGMEM_I1 = ISTR("Please pull out filament immediately"); ////c=20 r=4
|
const char MSG_PULL_OUT_FILAMENT[] PROGMEM_I1 = ISTR("Please pull out filament immediately"); ////c=20 r=4
|
||||||
const char MSG_RECOVER_PRINT[] PROGMEM_I1 = ISTR("Blackout occurred. Recover print?"); ////c=20 r=2
|
const char MSG_RECOVER_PRINT[] PROGMEM_I1 = ISTR("Blackout occurred. Recover print?"); ////c=20 r=2
|
||||||
const char MSG_REFRESH[] PROGMEM_I1 = ISTR("\xF8" "Refresh"); ////
|
const char MSG_REFRESH[] PROGMEM_I1 = ISTR("\xF8" "Refresh"); ////
|
||||||
const char MSG_RESUMING_PRINT[] PROGMEM_I1 = ISTR("Resuming print"); ////
|
|
||||||
const char MSG_REMOVE_STEEL_SHEET[] PROGMEM_I1 = ISTR("Please remove steel sheet from heatbed."); ////c=20 r=4
|
const char MSG_REMOVE_STEEL_SHEET[] PROGMEM_I1 = ISTR("Please remove steel sheet from heatbed."); ////c=20 r=4
|
||||||
|
const char MSG_RESET[] PROGMEM_I1 = ISTR("Reset"); ////c=14
|
||||||
|
const char MSG_RESUME_PRINT[] PROGMEM_I1 = ISTR("Resume print"); ////c=18
|
||||||
|
const char MSG_RESUMING_PRINT[] PROGMEM_I1 = ISTR("Resuming print"); ////
|
||||||
const char MSG_SELFTEST_COOLING_FAN[] PROGMEM_I1 = ISTR("Front print fan?"); ////c=20
|
const char MSG_SELFTEST_COOLING_FAN[] PROGMEM_I1 = ISTR("Front print fan?"); ////c=20
|
||||||
const char MSG_SELFTEST_EXTRUDER_FAN[] PROGMEM_I1 = ISTR("Left hotend fan?"); ////c=20
|
const char MSG_SELFTEST_EXTRUDER_FAN[] PROGMEM_I1 = ISTR("Left hotend fan?"); ////c=20
|
||||||
const char MSG_SELFTEST_FAILED[] PROGMEM_I1 = ISTR("Selftest failed "); ////c=20
|
const char MSG_SELFTEST_FAILED[] PROGMEM_I1 = ISTR("Selftest failed "); ////c=20
|
||||||
|
|
@ -80,7 +95,9 @@ const char MSG_SELFTEST_MOTOR[] PROGMEM_I1 = ISTR("Motor"); ////
|
||||||
const char MSG_SELFTEST_FILAMENT_SENSOR[] PROGMEM_I1 = ISTR("Filament sensor"); ////c=17
|
const char MSG_SELFTEST_FILAMENT_SENSOR[] PROGMEM_I1 = ISTR("Filament sensor"); ////c=17
|
||||||
const char MSG_SELFTEST_WIRINGERROR[] PROGMEM_I1 = ISTR("Wiring error"); ////
|
const char MSG_SELFTEST_WIRINGERROR[] PROGMEM_I1 = ISTR("Wiring error"); ////
|
||||||
const char MSG_SETTINGS[] PROGMEM_I1 = ISTR("Settings"); ////
|
const char MSG_SETTINGS[] PROGMEM_I1 = ISTR("Settings"); ////
|
||||||
const char MSG_HW_SETUP[] PROGMEM_I1 = ISTR("HW Setup"); ////
|
const char MSG_TOTAL[] PROGMEM_I1 = ISTR("Total"); ////c=6
|
||||||
|
const char MSG_TOTAL_FAILURES[] PROGMEM_I1 = ISTR("Total failures"); ////c=20
|
||||||
|
const char MSG_HW_SETUP[] PROGMEM_I1 = ISTR("HW Setup"); ////c=18
|
||||||
const char MSG_MODE[] PROGMEM_I1 = ISTR("Mode"); ////
|
const char MSG_MODE[] PROGMEM_I1 = ISTR("Mode"); ////
|
||||||
const char MSG_HIGH_POWER[] PROGMEM_I1 = ISTR("High power"); ////
|
const char MSG_HIGH_POWER[] PROGMEM_I1 = ISTR("High power"); ////
|
||||||
const char MSG_AUTO_POWER[] PROGMEM_I1 = ISTR("Auto power"); ////
|
const char MSG_AUTO_POWER[] PROGMEM_I1 = ISTR("Auto power"); ////
|
||||||
|
|
@ -90,7 +107,7 @@ const char MSG_STEALTH[] PROGMEM_I1 = ISTR("Stealth"); ////
|
||||||
const char MSG_STEEL_SHEET_CHECK[] PROGMEM_I1 = ISTR("Is steel sheet on heatbed?"); ////c=20 r=2
|
const char MSG_STEEL_SHEET_CHECK[] PROGMEM_I1 = ISTR("Is steel sheet on heatbed?"); ////c=20 r=2
|
||||||
const char MSG_STOP_PRINT[] PROGMEM_I1 = ISTR("Stop print"); ////
|
const char MSG_STOP_PRINT[] PROGMEM_I1 = ISTR("Stop print"); ////
|
||||||
const char MSG_STOPPED[] PROGMEM_I1 = ISTR("STOPPED. "); ////
|
const char MSG_STOPPED[] PROGMEM_I1 = ISTR("STOPPED. "); ////
|
||||||
const char MSG_TEMP_CALIBRATION[] PROGMEM_I1 = ISTR("Temp. cal."); ////c=12 r=1
|
const char MSG_TEMP_CALIBRATION[] PROGMEM_I1 = ISTR("Temp. cal."); ////c=14
|
||||||
const char MSG_TEMP_CALIBRATION_DONE[] PROGMEM_I1 = ISTR("Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."); ////c=20 r=12
|
const char MSG_TEMP_CALIBRATION_DONE[] PROGMEM_I1 = ISTR("Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."); ////c=20 r=12
|
||||||
const char MSG_UNLOAD_FILAMENT[] PROGMEM_I1 = ISTR("Unload filament"); ////c=17
|
const char MSG_UNLOAD_FILAMENT[] PROGMEM_I1 = ISTR("Unload filament"); ////c=17
|
||||||
const char MSG_UNLOADING_FILAMENT[] PROGMEM_I1 = ISTR("Unloading filament"); ////c=20 r=1
|
const char MSG_UNLOADING_FILAMENT[] PROGMEM_I1 = ISTR("Unloading filament"); ////c=20 r=1
|
||||||
|
|
@ -100,19 +117,21 @@ const char MSG_WIZARD_DONE[] PROGMEM_I1 = ISTR("All is done. Happy printing!");
|
||||||
const char MSG_WIZARD_HEATING[] PROGMEM_I1 = ISTR("Preheating nozzle. Please wait."); ////c=20 r=3
|
const char MSG_WIZARD_HEATING[] PROGMEM_I1 = ISTR("Preheating nozzle. Please wait."); ////c=20 r=3
|
||||||
const char MSG_WIZARD_QUIT[] PROGMEM_I1 = ISTR("You can always resume the Wizard from Calibration -> Wizard."); ////c=20 r=8
|
const char MSG_WIZARD_QUIT[] PROGMEM_I1 = ISTR("You can always resume the Wizard from Calibration -> Wizard."); ////c=20 r=8
|
||||||
const char MSG_YES[] PROGMEM_I1 = ISTR("Yes"); ////
|
const char MSG_YES[] PROGMEM_I1 = ISTR("Yes"); ////
|
||||||
const char MSG_V2_CALIBRATION[] PROGMEM_I1 = ISTR("First layer cal."); ////c=17 r=1
|
const char MSG_V2_CALIBRATION[] PROGMEM_I1 = ISTR("First layer cal."); ////c=18
|
||||||
const char WELCOME_MSG[] PROGMEM_I1 = ISTR(CUSTOM_MENDEL_NAME " OK."); ////c=20
|
const char WELCOME_MSG[] PROGMEM_I1 = ISTR(CUSTOM_MENDEL_NAME " OK."); ////c=20
|
||||||
const char MSG_OFF[] PROGMEM_I1 = ISTR("Off"); ////
|
const char MSG_OFF[] PROGMEM_I1 = ISTR("Off"); ////
|
||||||
const char MSG_ON[] PROGMEM_I1 = ISTR("On"); ////
|
const char MSG_ON[] PROGMEM_I1 = ISTR("On"); ////
|
||||||
const char MSG_NA[] PROGMEM_I1 = ISTR("N/A"); ////
|
const char MSG_NA[] PROGMEM_I1 = ISTR("N/A"); ////
|
||||||
const char MSG_AUTO_DEPLETE[] PROGMEM_I1 = ISTR("SpoolJoin"); ////
|
const char MSG_AUTO_DEPLETE[] PROGMEM_I1 = ISTR("SpoolJoin"); ////
|
||||||
const char MSG_CUTTER[] PROGMEM_I1 = ISTR("Cutter"); ////
|
const char MSG_CUTTER[] PROGMEM_I1 = ISTR("Cutter"); ////c=9
|
||||||
const char MSG_NONE[] PROGMEM_I1 = ISTR("None"); ////
|
const char MSG_NONE[] PROGMEM_I1 = ISTR("None"); ////
|
||||||
const char MSG_WARN[] PROGMEM_I1 = ISTR("Warn"); ////
|
const char MSG_WARN[] PROGMEM_I1 = ISTR("Warn"); ////
|
||||||
const char MSG_STRICT[] PROGMEM_I1 = ISTR("Strict"); ////
|
const char MSG_STRICT[] PROGMEM_I1 = ISTR("Strict"); ////
|
||||||
const char MSG_MODEL[] PROGMEM_I1 = ISTR("Model"); ////
|
const char MSG_MODEL[] PROGMEM_I1 = ISTR("Model"); ////
|
||||||
const char MSG_FIRMWARE[] PROGMEM_I1 = ISTR("Firmware"); ////
|
const char MSG_FIRMWARE[] PROGMEM_I1 = ISTR("Firmware"); ////
|
||||||
const char MSG_GCODE[] PROGMEM_I1 = ISTR("Gcode"); ////
|
const char MSG_GCODE[] PROGMEM_I1 = ISTR("Gcode"); ////
|
||||||
|
const char MSG_GCODE_DIFF_PRINTER_CONTINUE[] PROGMEM_I1 = ISTR("G-code sliced for a different printer type. Continue?"); ////c=20 r=5
|
||||||
|
const char MSG_GCODE_DIFF_PRINTER_CANCELLED[] PROGMEM_I1 =ISTR("G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."); ////c=20 r=6
|
||||||
const char MSG_NOZZLE_DIAMETER[] PROGMEM_I1 = ISTR("Nozzle d."); ////
|
const char MSG_NOZZLE_DIAMETER[] PROGMEM_I1 = ISTR("Nozzle d."); ////
|
||||||
const char MSG_MMU_MODE[] PROGMEM_I1 = ISTR("MMU Mode"); ////
|
const char MSG_MMU_MODE[] PROGMEM_I1 = ISTR("MMU Mode"); ////
|
||||||
const char MSG_SD_CARD[] PROGMEM_I1 = ISTR("SD card"); ////
|
const char MSG_SD_CARD[] PROGMEM_I1 = ISTR("SD card"); ////
|
||||||
|
|
@ -126,18 +145,25 @@ const char MSG_SOUND_LOUD[] PROGMEM_I1 = ISTR("Loud"); ////
|
||||||
const char MSG_SOUND_ONCE[] PROGMEM_I1 = ISTR("Once"); ////
|
const char MSG_SOUND_ONCE[] PROGMEM_I1 = ISTR("Once"); ////
|
||||||
const char MSG_SOUND_BLIND[] PROGMEM_I1 = ISTR("Assist"); ////
|
const char MSG_SOUND_BLIND[] PROGMEM_I1 = ISTR("Assist"); ////
|
||||||
const char MSG_MESH[] PROGMEM_I1 = ISTR("Mesh"); ////
|
const char MSG_MESH[] PROGMEM_I1 = ISTR("Mesh"); ////
|
||||||
|
const char MSG_MESH_BED_LEVELING[] PROGMEM_I1 = ISTR("Mesh Bed Leveling"); ////c=18
|
||||||
const char MSG_Z_PROBE_NR[] PROGMEM_I1 = ISTR("Z-probe nr."); ////
|
const char MSG_Z_PROBE_NR[] PROGMEM_I1 = ISTR("Z-probe nr."); ////
|
||||||
const char MSG_MAGNETS_COMP[] PROGMEM_I1 = ISTR("Magnets comp."); ////
|
const char MSG_MAGNETS_COMP[] PROGMEM_I1 = ISTR("Magnets comp."); ////
|
||||||
const char MSG_FS_ACTION[] PROGMEM_I1 = ISTR("FS Action"); ////
|
const char MSG_FS_ACTION[] PROGMEM_I1 = ISTR("FS Action"); ////c=10
|
||||||
const char MSG_FS_CONTINUE[] PROGMEM_I1 = ISTR("Cont."); ////
|
const char MSG_FS_CONTINUE[] PROGMEM_I1 = ISTR("Cont."); ////c=5
|
||||||
const char MSG_FS_PAUSE[] PROGMEM_I1 = ISTR("Pause"); ////
|
const char MSG_FS_PAUSE[] PROGMEM_I1 = ISTR("Pause"); ////c=5
|
||||||
const char MSG_BRIGHTNESS[] PROGMEM_I1 = ISTR("Brightness"); ////
|
const char MSG_BRIGHTNESS[] PROGMEM_I1 = ISTR("Brightness"); ////c=18
|
||||||
const char MSG_BL_HIGH[] PROGMEM_I1 = ISTR("Level Bright"); ////
|
const char MSG_BL_HIGH[] PROGMEM_I1 = ISTR("Level Bright"); ////c=12
|
||||||
const char MSG_BL_LOW[] PROGMEM_I1 = ISTR("Level Dimmed"); ////
|
const char MSG_BL_LOW[] PROGMEM_I1 = ISTR("Level Dimmed"); ////c=12
|
||||||
const char MSG_TIMEOUT[] PROGMEM_I1 = ISTR("Timeout"); ////
|
const char MSG_TIMEOUT[] PROGMEM_I1 = ISTR("Timeout"); ////c=12
|
||||||
const char MSG_BRIGHT[] PROGMEM_I1 = ISTR("Bright"); ////
|
const char MSG_BRIGHT[] PROGMEM_I1 = ISTR("Bright"); ////c=6
|
||||||
const char MSG_DIM[] PROGMEM_I1 = ISTR("Dim"); ////
|
const char MSG_DIM[] PROGMEM_I1 = ISTR("Dim"); ////c=6
|
||||||
const char MSG_AUTO[] PROGMEM_I1 = ISTR("Auto"); ////
|
const char MSG_AUTO[] PROGMEM_I1 = ISTR("Auto"); ////c=6
|
||||||
|
#ifdef IR_SENSOR_ANALOG
|
||||||
|
// Beware - the space at the beginning is necessary since it is reused in LCD menu items which are to be with a space
|
||||||
|
const char MSG_IR_04_OR_NEWER[] PROGMEM_I1 = ISTR(" 0.4 or newer");////c=18
|
||||||
|
const char MSG_IR_03_OR_OLDER[] PROGMEM_I1 = ISTR(" 0.3 or older");////c=18
|
||||||
|
const char MSG_IR_UNKNOWN[] PROGMEM_I1 = ISTR("unknown state");////c=18
|
||||||
|
#endif
|
||||||
|
|
||||||
//not internationalized messages
|
//not internationalized messages
|
||||||
const char MSG_SD_WORKDIR_FAIL[] PROGMEM_N1 = "workDir open failed"; ////
|
const char MSG_SD_WORKDIR_FAIL[] PROGMEM_N1 = "workDir open failed"; ////
|
||||||
|
|
@ -170,3 +196,4 @@ const char MSG_FANCHECK_PRINT[] PROGMEM_N1 = "Err: PRINT FAN ERROR"; ////c=20
|
||||||
const char MSG_M112_KILL[] PROGMEM_N1 = "M112 called. Emergency Stop."; ////c=20
|
const char MSG_M112_KILL[] PROGMEM_N1 = "M112 called. Emergency Stop."; ////c=20
|
||||||
const char MSG_ADVANCE_K[] PROGMEM_N1 = "Advance K:"; ////c=13
|
const char MSG_ADVANCE_K[] PROGMEM_N1 = "Advance K:"; ////c=13
|
||||||
const char MSG_POWERPANIC_DETECTED[] PROGMEM_N1 = "POWER PANIC DETECTED"; ////c=20
|
const char MSG_POWERPANIC_DETECTED[] PROGMEM_N1 = "POWER PANIC DETECTED"; ////c=20
|
||||||
|
const char MSG_LCD_STATUS_CHANGED[] PROGMEM_N1 = "LCD status changed";
|
||||||
|
|
|
||||||
|
|
@ -17,17 +17,24 @@ extern const char MSG_BED_DONE[];
|
||||||
extern const char MSG_BED_HEATING[];
|
extern const char MSG_BED_HEATING[];
|
||||||
extern const char MSG_BED_LEVELING_FAILED_POINT_LOW[];
|
extern const char MSG_BED_LEVELING_FAILED_POINT_LOW[];
|
||||||
extern const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED[];
|
extern const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED[];
|
||||||
|
extern const char MSG_BELT_STATUS[];
|
||||||
extern const char MSG_CALIBRATE_Z_AUTO[];
|
extern const char MSG_CALIBRATE_Z_AUTO[];
|
||||||
extern const char MSG_CARD_MENU[];
|
extern const char MSG_CARD_MENU[];
|
||||||
|
extern const char MSG_CHECKING_X[];
|
||||||
|
extern const char MSG_CHECKING_Y[];
|
||||||
extern const char MSG_CONFIRM_NOZZLE_CLEAN[];
|
extern const char MSG_CONFIRM_NOZZLE_CLEAN[];
|
||||||
extern const char MSG_COOLDOWN[];
|
extern const char MSG_COOLDOWN[];
|
||||||
|
extern const char MSG_CRASH[];
|
||||||
extern const char MSG_CRASH_DETECTED[];
|
extern const char MSG_CRASH_DETECTED[];
|
||||||
extern const char MSG_CRASHDETECT[];
|
extern const char MSG_CRASHDETECT[];
|
||||||
extern const char MSG_ERROR[];
|
extern const char MSG_ERROR[];
|
||||||
extern const char MSG_EXTRUDER[];
|
extern const char MSG_EXTRUDER[];
|
||||||
|
extern const char MSG_FANS_CHECK[];
|
||||||
|
extern const char MSG_FIL_RUNOUTS[];
|
||||||
extern const char MSG_FILAMENT[];
|
extern const char MSG_FILAMENT[];
|
||||||
extern const char MSG_FAN_SPEED[];
|
extern const char MSG_FAN_SPEED[];
|
||||||
extern const char MSG_FILAMENT_CLEAN[];
|
extern const char MSG_FILAMENT_CLEAN[];
|
||||||
|
extern const char MSG_FILAMENT_LOADED[];
|
||||||
extern const char MSG_FILAMENT_LOADING_T0[];
|
extern const char MSG_FILAMENT_LOADING_T0[];
|
||||||
extern const char MSG_FILAMENT_LOADING_T1[];
|
extern const char MSG_FILAMENT_LOADING_T1[];
|
||||||
extern const char MSG_FILAMENT_LOADING_T2[];
|
extern const char MSG_FILAMENT_LOADING_T2[];
|
||||||
|
|
@ -45,20 +52,26 @@ extern const char MSG_HEATING_COMPLETE[];
|
||||||
extern const char MSG_HOMEYZ[];
|
extern const char MSG_HOMEYZ[];
|
||||||
extern const char MSG_CHOOSE_EXTRUDER[];
|
extern const char MSG_CHOOSE_EXTRUDER[];
|
||||||
extern const char MSG_CHOOSE_FILAMENT[];
|
extern const char MSG_CHOOSE_FILAMENT[];
|
||||||
|
extern const char MSG_LAST_PRINT[];
|
||||||
|
extern const char MSG_LAST_PRINT_FAILURES[];
|
||||||
extern const char MSG_LOAD_FILAMENT[];
|
extern const char MSG_LOAD_FILAMENT[];
|
||||||
extern const char MSG_LOADING_FILAMENT[];
|
extern const char MSG_LOADING_FILAMENT[];
|
||||||
extern const char MSG_M117_V2_CALIBRATION[];
|
extern const char MSG_M117_V2_CALIBRATION[];
|
||||||
extern const char MSG_MAIN[];
|
extern const char MSG_MAIN[];
|
||||||
extern const char MSG_BACK[];
|
extern const char MSG_BACK[];
|
||||||
extern const char MSG_SHEET[];
|
extern const char MSG_SHEET[];
|
||||||
|
extern const char MSG_STEEL_SHEETS[];
|
||||||
extern const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1[];
|
extern const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1[];
|
||||||
extern const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2[];
|
extern const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2[];
|
||||||
extern const char MSG_MENU_CALIBRATION[];
|
extern const char MSG_MENU_CALIBRATION[];
|
||||||
|
extern const char MSG_MMU_FAILS[];
|
||||||
|
extern const char MSG_MMU_LOAD_FAILS[];
|
||||||
extern const char MSG_NO[];
|
extern const char MSG_NO[];
|
||||||
extern const char MSG_NOZZLE[];
|
extern const char MSG_NOZZLE[];
|
||||||
extern const char MSG_PAPER[];
|
extern const char MSG_PAPER[];
|
||||||
extern const char MSG_PLACE_STEEL_SHEET[];
|
extern const char MSG_PLACE_STEEL_SHEET[];
|
||||||
extern const char MSG_PLEASE_WAIT[];
|
extern const char MSG_PLEASE_WAIT[];
|
||||||
|
extern const char MSG_POWER_FAILURES[];
|
||||||
extern const char MSG_PREHEAT_NOZZLE[];
|
extern const char MSG_PREHEAT_NOZZLE[];
|
||||||
extern const char MSG_PRESS_TO_UNLOAD[];
|
extern const char MSG_PRESS_TO_UNLOAD[];
|
||||||
extern const char MSG_PRINT_ABORTED[];
|
extern const char MSG_PRINT_ABORTED[];
|
||||||
|
|
@ -66,6 +79,8 @@ extern const char MSG_PULL_OUT_FILAMENT[];
|
||||||
extern const char MSG_RECOVER_PRINT[];
|
extern const char MSG_RECOVER_PRINT[];
|
||||||
extern const char MSG_REFRESH[];
|
extern const char MSG_REFRESH[];
|
||||||
extern const char MSG_REMOVE_STEEL_SHEET[];
|
extern const char MSG_REMOVE_STEEL_SHEET[];
|
||||||
|
extern const char MSG_RESET[];
|
||||||
|
extern const char MSG_RESUME_PRINT[];
|
||||||
extern const char MSG_RESUMING_PRINT[];
|
extern const char MSG_RESUMING_PRINT[];
|
||||||
extern const char MSG_SD_WORKDIR_FAIL[];
|
extern const char MSG_SD_WORKDIR_FAIL[];
|
||||||
extern const char MSG_SELFTEST_COOLING_FAN[];
|
extern const char MSG_SELFTEST_COOLING_FAN[];
|
||||||
|
|
@ -80,6 +95,8 @@ extern const char MSG_SELFTEST_MOTOR[];
|
||||||
extern const char MSG_SELFTEST_FILAMENT_SENSOR[];
|
extern const char MSG_SELFTEST_FILAMENT_SENSOR[];
|
||||||
extern const char MSG_SELFTEST_WIRINGERROR[];
|
extern const char MSG_SELFTEST_WIRINGERROR[];
|
||||||
extern const char MSG_SETTINGS[];
|
extern const char MSG_SETTINGS[];
|
||||||
|
extern const char MSG_TOTAL[];
|
||||||
|
extern const char MSG_TOTAL_FAILURES[];
|
||||||
extern const char MSG_HW_SETUP[];
|
extern const char MSG_HW_SETUP[];
|
||||||
extern const char MSG_MODE[];
|
extern const char MSG_MODE[];
|
||||||
extern const char MSG_HIGH_POWER[];
|
extern const char MSG_HIGH_POWER[];
|
||||||
|
|
@ -113,6 +130,8 @@ extern const char MSG_STRICT[];
|
||||||
extern const char MSG_MODEL[];
|
extern const char MSG_MODEL[];
|
||||||
extern const char MSG_FIRMWARE[];
|
extern const char MSG_FIRMWARE[];
|
||||||
extern const char MSG_GCODE[];
|
extern const char MSG_GCODE[];
|
||||||
|
extern const char MSG_GCODE_DIFF_PRINTER_CONTINUE[];
|
||||||
|
extern const char MSG_GCODE_DIFF_PRINTER_CANCELLED[];
|
||||||
extern const char MSG_NOZZLE_DIAMETER[];
|
extern const char MSG_NOZZLE_DIAMETER[];
|
||||||
extern const char MSG_MMU_MODE[];
|
extern const char MSG_MMU_MODE[];
|
||||||
extern const char MSG_SD_CARD[];
|
extern const char MSG_SD_CARD[];
|
||||||
|
|
@ -126,6 +145,7 @@ extern const char MSG_SOUND_LOUD[];
|
||||||
extern const char MSG_SOUND_ONCE[];
|
extern const char MSG_SOUND_ONCE[];
|
||||||
extern const char MSG_SOUND_BLIND[];
|
extern const char MSG_SOUND_BLIND[];
|
||||||
extern const char MSG_MESH[];
|
extern const char MSG_MESH[];
|
||||||
|
extern const char MSG_MESH_BED_LEVELING[];
|
||||||
extern const char MSG_Z_PROBE_NR[];
|
extern const char MSG_Z_PROBE_NR[];
|
||||||
extern const char MSG_MAGNETS_COMP[];
|
extern const char MSG_MAGNETS_COMP[];
|
||||||
extern const char MSG_FS_ACTION[];
|
extern const char MSG_FS_ACTION[];
|
||||||
|
|
@ -138,6 +158,11 @@ extern const char MSG_TIMEOUT[];
|
||||||
extern const char MSG_BRIGHT[];
|
extern const char MSG_BRIGHT[];
|
||||||
extern const char MSG_DIM[];
|
extern const char MSG_DIM[];
|
||||||
extern const char MSG_AUTO[];
|
extern const char MSG_AUTO[];
|
||||||
|
#ifdef IR_SENSOR_ANALOG
|
||||||
|
extern const char MSG_IR_04_OR_NEWER[];
|
||||||
|
extern const char MSG_IR_03_OR_OLDER[];
|
||||||
|
extern const char MSG_IR_UNKNOWN[];
|
||||||
|
#endif
|
||||||
|
|
||||||
//not internationalized messages
|
//not internationalized messages
|
||||||
extern const char MSG_BROWNOUT_RESET[];
|
extern const char MSG_BROWNOUT_RESET[];
|
||||||
|
|
@ -171,6 +196,7 @@ extern const char MSG_FANCHECK_PRINT[];
|
||||||
extern const char MSG_M112_KILL[];
|
extern const char MSG_M112_KILL[];
|
||||||
extern const char MSG_ADVANCE_K[];
|
extern const char MSG_ADVANCE_K[];
|
||||||
extern const char MSG_POWERPANIC_DETECTED[];
|
extern const char MSG_POWERPANIC_DETECTED[];
|
||||||
|
extern const char MSG_LCD_STATUS_CHANGED[];
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
112
Firmware/mmu.cpp
112
Firmware/mmu.cpp
|
|
@ -9,12 +9,14 @@
|
||||||
#include "Configuration_prusa.h"
|
#include "Configuration_prusa.h"
|
||||||
#include "fsensor.h"
|
#include "fsensor.h"
|
||||||
#include "cardreader.h"
|
#include "cardreader.h"
|
||||||
|
#include "cmdqueue.h"
|
||||||
#include "ultralcd.h"
|
#include "ultralcd.h"
|
||||||
#include "sound.h"
|
#include "sound.h"
|
||||||
#include "printers.h"
|
#include "printers.h"
|
||||||
#include <avr/pgmspace.h>
|
#include <avr/pgmspace.h>
|
||||||
#include "io_atmega2560.h"
|
|
||||||
#include "AutoDeplete.h"
|
#include "AutoDeplete.h"
|
||||||
|
#include "fastio.h"
|
||||||
|
#include "pins.h"
|
||||||
//-//
|
//-//
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
|
||||||
|
|
@ -28,9 +30,6 @@
|
||||||
#define MMU_P0_TIMEOUT 3000ul //timeout for P0 command: 3seconds
|
#define MMU_P0_TIMEOUT 3000ul //timeout for P0 command: 3seconds
|
||||||
#define MMU_MAX_RESEND_ATTEMPTS 2
|
#define MMU_MAX_RESEND_ATTEMPTS 2
|
||||||
|
|
||||||
#ifdef MMU_HWRESET
|
|
||||||
#define MMU_RST_PIN 76
|
|
||||||
#endif //MMU_HWRESET
|
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
|
|
@ -156,8 +155,8 @@ void mmu_init(void)
|
||||||
_delay_ms(10); //wait 10ms for sure
|
_delay_ms(10); //wait 10ms for sure
|
||||||
mmu_reset(); //reset mmu (HW or SW), do not wait for response
|
mmu_reset(); //reset mmu (HW or SW), do not wait for response
|
||||||
mmu_state = S::Init;
|
mmu_state = S::Init;
|
||||||
PIN_INP(IR_SENSOR_PIN); //input mode
|
SET_INPUT(IR_SENSOR_PIN); //input mode
|
||||||
PIN_SET(IR_SENSOR_PIN); //pullup
|
WRITE(IR_SENSOR_PIN, 1); //pullup
|
||||||
}
|
}
|
||||||
|
|
||||||
//if IR_SENSOR defined, always returns true
|
//if IR_SENSOR defined, always returns true
|
||||||
|
|
@ -170,7 +169,7 @@ bool check_for_ir_sensor()
|
||||||
|
|
||||||
bool detected = false;
|
bool detected = false;
|
||||||
//if IR_SENSOR_PIN input is low and pat9125sensor is not present we detected idler sensor
|
//if IR_SENSOR_PIN input is low and pat9125sensor is not present we detected idler sensor
|
||||||
if ((PIN_GET(IR_SENSOR_PIN) == 0)
|
if ((READ(IR_SENSOR_PIN) == 0)
|
||||||
#ifdef PAT9125
|
#ifdef PAT9125
|
||||||
&& fsensor_not_responding
|
&& fsensor_not_responding
|
||||||
#endif //PAT9125
|
#endif //PAT9125
|
||||||
|
|
@ -363,7 +362,7 @@ void mmu_loop(void)
|
||||||
case S::GetFinda: //response to command P0
|
case S::GetFinda: //response to command P0
|
||||||
if (mmu_idl_sens)
|
if (mmu_idl_sens)
|
||||||
{
|
{
|
||||||
if (PIN_GET(IR_SENSOR_PIN) == 0 && mmu_loading_flag)
|
if (READ(IR_SENSOR_PIN) == 0 && mmu_loading_flag)
|
||||||
{
|
{
|
||||||
#ifdef MMU_DEBUG
|
#ifdef MMU_DEBUG
|
||||||
printf_P(PSTR("MMU <= 'A'\n"));
|
printf_P(PSTR("MMU <= 'A'\n"));
|
||||||
|
|
@ -406,7 +405,7 @@ void mmu_loop(void)
|
||||||
case S::WaitCmd: //response to mmu commands
|
case S::WaitCmd: //response to mmu commands
|
||||||
if (mmu_idl_sens)
|
if (mmu_idl_sens)
|
||||||
{
|
{
|
||||||
if (PIN_GET(IR_SENSOR_PIN) == 0 && mmu_loading_flag)
|
if (READ(IR_SENSOR_PIN) == 0 && mmu_loading_flag)
|
||||||
{
|
{
|
||||||
DEBUG_PRINTF_P(PSTR("MMU <= 'A'\n"));
|
DEBUG_PRINTF_P(PSTR("MMU <= 'A'\n"));
|
||||||
mmu_puts_P(PSTR("A\n")); //send 'abort' request
|
mmu_puts_P(PSTR("A\n")); //send 'abort' request
|
||||||
|
|
@ -540,7 +539,7 @@ void mmu_command(MmuCmd cmd)
|
||||||
void mmu_load_step(bool synchronize)
|
void mmu_load_step(bool synchronize)
|
||||||
{
|
{
|
||||||
current_position[E_AXIS] = current_position[E_AXIS] + MMU_LOAD_FEEDRATE * 0.1;
|
current_position[E_AXIS] = current_position[E_AXIS] + MMU_LOAD_FEEDRATE * 0.1;
|
||||||
plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE, active_extruder);
|
plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE);
|
||||||
if (synchronize) st_synchronize();
|
if (synchronize) st_synchronize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -568,11 +567,11 @@ bool can_extrude()
|
||||||
static void get_response_print_info(uint8_t move) {
|
static void get_response_print_info(uint8_t move) {
|
||||||
printf_P(PSTR("mmu_get_response - begin move: "), move);
|
printf_P(PSTR("mmu_get_response - begin move: "), move);
|
||||||
switch (move) {
|
switch (move) {
|
||||||
case MMU_LOAD_MOVE: printf_P(PSTR("load\n")); break;
|
case MMU_LOAD_MOVE: puts_P(PSTR("load")); break;
|
||||||
case MMU_UNLOAD_MOVE: printf_P(PSTR("unload\n")); break;
|
case MMU_UNLOAD_MOVE: puts_P(PSTR("unload")); break;
|
||||||
case MMU_TCODE_MOVE: printf_P(PSTR("T-code\n")); break;
|
case MMU_TCODE_MOVE: puts_P(PSTR("T-code")); break;
|
||||||
case MMU_NO_MOVE: printf_P(PSTR("no move\n")); break;
|
case MMU_NO_MOVE: puts_P(PSTR("no move")); break;
|
||||||
default: printf_P(PSTR("error: unknown move\n")); break;
|
default: puts_P(PSTR("error: unknown move")); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -596,40 +595,40 @@ bool mmu_get_response(uint8_t move)
|
||||||
mmu_loading_flag = true;
|
mmu_loading_flag = true;
|
||||||
if (can_extrude()) mmu_load_step();
|
if (can_extrude()) mmu_load_step();
|
||||||
//don't rely on "ok" signal from mmu unit; if filament detected by idler sensor during loading stop loading movements to prevent infinite loading
|
//don't rely on "ok" signal from mmu unit; if filament detected by idler sensor during loading stop loading movements to prevent infinite loading
|
||||||
if (PIN_GET(IR_SENSOR_PIN) == 0) move = MMU_NO_MOVE;
|
if (READ(IR_SENSOR_PIN) == 0) move = MMU_NO_MOVE;
|
||||||
break;
|
break;
|
||||||
case MMU_UNLOAD_MOVE:
|
case MMU_UNLOAD_MOVE:
|
||||||
if (PIN_GET(IR_SENSOR_PIN) == 0) //filament is still detected by idler sensor, printer helps with unlading
|
if (READ(IR_SENSOR_PIN) == 0) //filament is still detected by idler sensor, printer helps with unlading
|
||||||
{
|
{
|
||||||
if (can_extrude())
|
if (can_extrude())
|
||||||
{
|
{
|
||||||
printf_P(PSTR("Unload 1\n"));
|
puts_P(PSTR("Unload 1"));
|
||||||
current_position[E_AXIS] = current_position[E_AXIS] - MMU_LOAD_FEEDRATE * MMU_LOAD_TIME_MS*0.001;
|
current_position[E_AXIS] = current_position[E_AXIS] - MMU_LOAD_FEEDRATE * MMU_LOAD_TIME_MS*0.001;
|
||||||
plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE, active_extruder);
|
plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE);
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else //filament was unloaded from idler, no additional movements needed
|
else //filament was unloaded from idler, no additional movements needed
|
||||||
{
|
{
|
||||||
printf_P(PSTR("Unloading finished 1\n"));
|
puts_P(PSTR("Unloading finished 1"));
|
||||||
disable_e0(); //turn off E-stepper to prevent overheating and alow filament pull-out if necessary
|
disable_e0(); //turn off E-stepper to prevent overheating and alow filament pull-out if necessary
|
||||||
move = MMU_NO_MOVE;
|
move = MMU_NO_MOVE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MMU_TCODE_MOVE: //first do unload and then continue with infinite loading movements
|
case MMU_TCODE_MOVE: //first do unload and then continue with infinite loading movements
|
||||||
if (PIN_GET(IR_SENSOR_PIN) == 0) //filament detected by idler sensor, we must unload first
|
if (READ(IR_SENSOR_PIN) == 0) //filament detected by idler sensor, we must unload first
|
||||||
{
|
{
|
||||||
if (can_extrude())
|
if (can_extrude())
|
||||||
{
|
{
|
||||||
printf_P(PSTR("Unload 2\n"));
|
puts_P(PSTR("Unload 2"));
|
||||||
current_position[E_AXIS] = current_position[E_AXIS] - MMU_LOAD_FEEDRATE * MMU_LOAD_TIME_MS*0.001;
|
current_position[E_AXIS] = current_position[E_AXIS] - MMU_LOAD_FEEDRATE * MMU_LOAD_TIME_MS*0.001;
|
||||||
plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE, active_extruder);
|
plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE);
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else //delay to allow mmu unit to pull out filament from bondtech gears and then start with infinite loading
|
else //delay to allow mmu unit to pull out filament from bondtech gears and then start with infinite loading
|
||||||
{
|
{
|
||||||
printf_P(PSTR("Unloading finished 2\n"));
|
puts_P(PSTR("Unloading finished 2"));
|
||||||
disable_e0(); //turn off E-stepper to prevent overheating and alow filament pull-out if necessary
|
disable_e0(); //turn off E-stepper to prevent overheating and alow filament pull-out if necessary
|
||||||
delay_keep_alive(MMU_LOAD_TIME_MS);
|
delay_keep_alive(MMU_LOAD_TIME_MS);
|
||||||
move = MMU_LOAD_MOVE;
|
move = MMU_LOAD_MOVE;
|
||||||
|
|
@ -690,7 +689,7 @@ void manage_response(bool move_axes, bool turn_off_nozzle, uint8_t move)
|
||||||
}
|
}
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
mmu_print_saved = true;
|
mmu_print_saved = true;
|
||||||
printf_P(PSTR("MMU not responding\n"));
|
puts_P(PSTR("MMU not responding"));
|
||||||
KEEPALIVE_STATE(PAUSED_FOR_USER);
|
KEEPALIVE_STATE(PAUSED_FOR_USER);
|
||||||
hotend_temp_bckp = degTargetHotend(active_extruder);
|
hotend_temp_bckp = degTargetHotend(active_extruder);
|
||||||
if (move_axes) {
|
if (move_axes) {
|
||||||
|
|
@ -701,13 +700,13 @@ void manage_response(bool move_axes, bool turn_off_nozzle, uint8_t move)
|
||||||
//lift z
|
//lift z
|
||||||
current_position[Z_AXIS] += Z_PAUSE_LIFT;
|
current_position[Z_AXIS] += Z_PAUSE_LIFT;
|
||||||
if (current_position[Z_AXIS] > Z_MAX_POS) current_position[Z_AXIS] = Z_MAX_POS;
|
if (current_position[Z_AXIS] > Z_MAX_POS) current_position[Z_AXIS] = Z_MAX_POS;
|
||||||
plan_buffer_line_curposXYZE(15, active_extruder);
|
plan_buffer_line_curposXYZE(15);
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
|
|
||||||
//Move XY to side
|
//Move XY to side
|
||||||
current_position[X_AXIS] = X_PAUSE_POS;
|
current_position[X_AXIS] = X_PAUSE_POS;
|
||||||
current_position[Y_AXIS] = Y_PAUSE_POS;
|
current_position[Y_AXIS] = Y_PAUSE_POS;
|
||||||
plan_buffer_line_curposXYZE(50, active_extruder);
|
plan_buffer_line_curposXYZE(50);
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
}
|
}
|
||||||
if (turn_off_nozzle) {
|
if (turn_off_nozzle) {
|
||||||
|
|
@ -747,7 +746,7 @@ void manage_response(bool move_axes, bool turn_off_nozzle, uint8_t move)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (mmu_print_saved) {
|
else if (mmu_print_saved) {
|
||||||
printf_P(PSTR("MMU starts responding\n"));
|
puts_P(PSTR("MMU starts responding"));
|
||||||
KEEPALIVE_STATE(IN_HANDLER);
|
KEEPALIVE_STATE(IN_HANDLER);
|
||||||
mmu_loading_flag = false;
|
mmu_loading_flag = false;
|
||||||
if (turn_off_nozzle)
|
if (turn_off_nozzle)
|
||||||
|
|
@ -758,17 +757,17 @@ void manage_response(bool move_axes, bool turn_off_nozzle, uint8_t move)
|
||||||
lcd_display_message_fullscreen_P(_i("MMU OK. Resuming temperature..."));
|
lcd_display_message_fullscreen_P(_i("MMU OK. Resuming temperature..."));
|
||||||
delay_keep_alive(3000);
|
delay_keep_alive(3000);
|
||||||
}
|
}
|
||||||
mmu_wait_for_heater_blocking();
|
mmu_wait_for_heater_blocking();
|
||||||
}
|
}
|
||||||
if (move_axes) {
|
if (move_axes) {
|
||||||
lcd_clear();
|
lcd_clear();
|
||||||
lcd_display_message_fullscreen_P(_i("MMU OK. Resuming position..."));
|
lcd_display_message_fullscreen_P(_i("MMU OK. Resuming position..."));
|
||||||
current_position[X_AXIS] = x_position_bckp;
|
current_position[X_AXIS] = x_position_bckp;
|
||||||
current_position[Y_AXIS] = y_position_bckp;
|
current_position[Y_AXIS] = y_position_bckp;
|
||||||
plan_buffer_line_curposXYZE(50, active_extruder);
|
plan_buffer_line_curposXYZE(50);
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
current_position[Z_AXIS] = z_position_bckp;
|
current_position[Z_AXIS] = z_position_bckp;
|
||||||
plan_buffer_line_curposXYZE(15, active_extruder);
|
plan_buffer_line_curposXYZE(15);
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
@ -807,19 +806,19 @@ void mmu_load_to_nozzle()
|
||||||
current_position[E_AXIS] += 7.2f;
|
current_position[E_AXIS] += 7.2f;
|
||||||
}
|
}
|
||||||
float feedrate = 562;
|
float feedrate = 562;
|
||||||
plan_buffer_line_curposXYZE(feedrate / 60, active_extruder);
|
plan_buffer_line_curposXYZE(feedrate / 60);
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
current_position[E_AXIS] += 14.4f;
|
current_position[E_AXIS] += 14.4f;
|
||||||
feedrate = 871;
|
feedrate = 871;
|
||||||
plan_buffer_line_curposXYZE(feedrate / 60, active_extruder);
|
plan_buffer_line_curposXYZE(feedrate / 60);
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
current_position[E_AXIS] += 36.0f;
|
current_position[E_AXIS] += 36.0f;
|
||||||
feedrate = 1393;
|
feedrate = 1393;
|
||||||
plan_buffer_line_curposXYZE(feedrate / 60, active_extruder);
|
plan_buffer_line_curposXYZE(feedrate / 60);
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
current_position[E_AXIS] += 14.4f;
|
current_position[E_AXIS] += 14.4f;
|
||||||
feedrate = 871;
|
feedrate = 871;
|
||||||
plan_buffer_line_curposXYZE(feedrate / 60, active_extruder);
|
plan_buffer_line_curposXYZE(feedrate / 60);
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
if (!saved_e_relative_mode) axis_relative_modes &= ~E_AXIS_MASK;
|
if (!saved_e_relative_mode) axis_relative_modes &= ~E_AXIS_MASK;
|
||||||
}
|
}
|
||||||
|
|
@ -830,7 +829,7 @@ void mmu_M600_wait_and_beep() {
|
||||||
KEEPALIVE_STATE(PAUSED_FOR_USER);
|
KEEPALIVE_STATE(PAUSED_FOR_USER);
|
||||||
|
|
||||||
int counterBeep = 0;
|
int counterBeep = 0;
|
||||||
lcd_display_message_fullscreen_P(_i("Remove old filament and press the knob to start loading new filament."));
|
lcd_display_message_fullscreen_P(_i("Remove old filament and press the knob to start loading new filament.")); ////MSG_REMOVE_OLD_FILAMENT c=20 r=5
|
||||||
bool bFirst=true;
|
bool bFirst=true;
|
||||||
|
|
||||||
while (!lcd_clicked()){
|
while (!lcd_clicked()){
|
||||||
|
|
@ -879,8 +878,8 @@ void mmu_M600_load_filament(bool automatic, float nozzle_temp)
|
||||||
}
|
}
|
||||||
lcd_update_enable(false);
|
lcd_update_enable(false);
|
||||||
lcd_clear();
|
lcd_clear();
|
||||||
lcd_set_cursor(0, 1); lcd_puts_P(_T(MSG_LOADING_FILAMENT));
|
lcd_puts_at_P(0, 1, _T(MSG_LOADING_FILAMENT));
|
||||||
lcd_print(" ");
|
lcd_print(' ');
|
||||||
lcd_print(tmp_extruder + 1);
|
lcd_print(tmp_extruder + 1);
|
||||||
snmm_filaments_used |= (1 << tmp_extruder); //for stop print
|
snmm_filaments_used |= (1 << tmp_extruder); //for stop print
|
||||||
|
|
||||||
|
|
@ -992,10 +991,10 @@ void extr_adj(uint8_t extruder) //loading filament for SNMM
|
||||||
|
|
||||||
lcd_update_enable(false);
|
lcd_update_enable(false);
|
||||||
lcd_clear();
|
lcd_clear();
|
||||||
lcd_set_cursor(0, 1); lcd_puts_P(_T(MSG_LOADING_FILAMENT));
|
lcd_puts_at_P(0, 1, _T(MSG_LOADING_FILAMENT));
|
||||||
//if(strlen(_T(MSG_LOADING_FILAMENT))>18) lcd.setCursor(0, 1);
|
//if(strlen(_T(MSG_LOADING_FILAMENT))>18) lcd.setCursor(0, 1);
|
||||||
//else lcd.print(" ");
|
//else lcd.print(" ");
|
||||||
lcd_print(" ");
|
lcd_print(' ');
|
||||||
lcd_print(extruder + 1);
|
lcd_print(extruder + 1);
|
||||||
|
|
||||||
// get response
|
// get response
|
||||||
|
|
@ -1035,7 +1034,7 @@ void extr_adj(uint8_t extruder) //loading filament for SNMM
|
||||||
lcd_clear();
|
lcd_clear();
|
||||||
lcd_set_cursor(0, 0); lcd_puts_P(_T(MSG_LOADING_FILAMENT));
|
lcd_set_cursor(0, 0); lcd_puts_P(_T(MSG_LOADING_FILAMENT));
|
||||||
if(strlen(_T(MSG_LOADING_FILAMENT))>18) lcd_set_cursor(0, 1);
|
if(strlen(_T(MSG_LOADING_FILAMENT))>18) lcd_set_cursor(0, 1);
|
||||||
else lcd_print(" ");
|
else lcd_print(' ');
|
||||||
lcd_print(mmu_extruder + 1);
|
lcd_print(mmu_extruder + 1);
|
||||||
lcd_set_cursor(0, 2); lcd_puts_P(_T(MSG_PLEASE_WAIT));
|
lcd_set_cursor(0, 2); lcd_puts_P(_T(MSG_PLEASE_WAIT));
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
|
|
@ -1072,7 +1071,7 @@ void mmu_filament_ramming()
|
||||||
for(uint8_t i = 0; i < (sizeof(ramming_sequence)/sizeof(E_step));++i)
|
for(uint8_t i = 0; i < (sizeof(ramming_sequence)/sizeof(E_step));++i)
|
||||||
{
|
{
|
||||||
current_position[E_AXIS] += pgm_read_float(&(ramming_sequence[i].extrude));
|
current_position[E_AXIS] += pgm_read_float(&(ramming_sequence[i].extrude));
|
||||||
plan_buffer_line_curposXYZE(pgm_read_float(&(ramming_sequence[i].feed_rate)), active_extruder);
|
plan_buffer_line_curposXYZE(pgm_read_float(&(ramming_sequence[i].feed_rate)));
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1082,9 +1081,9 @@ void mmu_filament_ramming()
|
||||||
void extr_unload_view()
|
void extr_unload_view()
|
||||||
{
|
{
|
||||||
lcd_clear();
|
lcd_clear();
|
||||||
lcd_set_cursor(0, 1); lcd_puts_P(_T(MSG_UNLOADING_FILAMENT));
|
lcd_puts_at_P(0, 1, _T(MSG_UNLOADING_FILAMENT));
|
||||||
lcd_print(" ");
|
lcd_print(' ');
|
||||||
if (mmu_extruder == MMU_FILAMENT_UNKNOWN) lcd_print(" ");
|
if (mmu_extruder == MMU_FILAMENT_UNKNOWN) lcd_print(' ');
|
||||||
else lcd_print(mmu_extruder + 1);
|
else lcd_print(mmu_extruder + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1116,7 +1115,7 @@ void extr_unload()
|
||||||
lcd_display_message_fullscreen_P(PSTR(""));
|
lcd_display_message_fullscreen_P(PSTR(""));
|
||||||
max_feedrate[E_AXIS] = 50;
|
max_feedrate[E_AXIS] = 50;
|
||||||
lcd_set_cursor(0, 0); lcd_puts_P(_T(MSG_UNLOADING_FILAMENT));
|
lcd_set_cursor(0, 0); lcd_puts_P(_T(MSG_UNLOADING_FILAMENT));
|
||||||
lcd_print(" ");
|
lcd_print(' ');
|
||||||
lcd_print(mmu_extruder + 1);
|
lcd_print(mmu_extruder + 1);
|
||||||
lcd_set_cursor(0, 2); lcd_puts_P(_T(MSG_PLEASE_WAIT));
|
lcd_set_cursor(0, 2); lcd_puts_P(_T(MSG_PLEASE_WAIT));
|
||||||
if (current_position[Z_AXIS] < 15) {
|
if (current_position[Z_AXIS] < 15) {
|
||||||
|
|
@ -1350,9 +1349,8 @@ void lcd_mmu_load_to_nozzle(uint8_t filament_nr)
|
||||||
tmp_extruder = filament_nr;
|
tmp_extruder = filament_nr;
|
||||||
lcd_update_enable(false);
|
lcd_update_enable(false);
|
||||||
lcd_clear();
|
lcd_clear();
|
||||||
lcd_set_cursor(0, 1);
|
lcd_puts_at_P(0, 1, _T(MSG_LOADING_FILAMENT));
|
||||||
lcd_puts_P(_T(MSG_LOADING_FILAMENT));
|
lcd_print(' ');
|
||||||
lcd_print(" ");
|
|
||||||
lcd_print(tmp_extruder + 1);
|
lcd_print(tmp_extruder + 1);
|
||||||
mmu_command(MmuCmd::T0 + tmp_extruder);
|
mmu_command(MmuCmd::T0 + tmp_extruder);
|
||||||
manage_response(true, true, MMU_TCODE_MOVE);
|
manage_response(true, true, MMU_TCODE_MOVE);
|
||||||
|
|
@ -1385,8 +1383,8 @@ void mmu_cut_filament(uint8_t filament_nr)
|
||||||
{
|
{
|
||||||
LcdUpdateDisabler disableLcdUpdate;
|
LcdUpdateDisabler disableLcdUpdate;
|
||||||
lcd_clear();
|
lcd_clear();
|
||||||
lcd_set_cursor(0, 1); lcd_puts_P(_i("Cutting filament")); //// c=18 r=1
|
lcd_puts_at_P(0, 1, _i("Cutting filament")); //// c=18
|
||||||
lcd_print(" ");
|
lcd_print(' ');
|
||||||
lcd_print(filament_nr + 1);
|
lcd_print(filament_nr + 1);
|
||||||
mmu_filament_ramming();
|
mmu_filament_ramming();
|
||||||
mmu_command(MmuCmd::K0 + filament_nr);
|
mmu_command(MmuCmd::K0 + filament_nr);
|
||||||
|
|
@ -1413,7 +1411,7 @@ bFilamentAction=false; // NOT in "mmu_fil_eject_menu(
|
||||||
{
|
{
|
||||||
LcdUpdateDisabler disableLcdUpdate;
|
LcdUpdateDisabler disableLcdUpdate;
|
||||||
lcd_clear();
|
lcd_clear();
|
||||||
lcd_set_cursor(0, 1); lcd_puts_P(_i("Ejecting filament"));
|
lcd_puts_at_P(0, 1, _i("Ejecting filament"));
|
||||||
mmu_filament_ramming();
|
mmu_filament_ramming();
|
||||||
mmu_command(MmuCmd::E0 + filament);
|
mmu_command(MmuCmd::E0 + filament);
|
||||||
manage_response(false, false, MMU_UNLOAD_MOVE);
|
manage_response(false, false, MMU_UNLOAD_MOVE);
|
||||||
|
|
@ -1446,9 +1444,9 @@ bFilamentAction=false; // NOT in "mmu_fil_eject_menu(
|
||||||
static bool can_load()
|
static bool can_load()
|
||||||
{
|
{
|
||||||
current_position[E_AXIS] += 60;
|
current_position[E_AXIS] += 60;
|
||||||
plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE, active_extruder);
|
plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE);
|
||||||
current_position[E_AXIS] -= 52;
|
current_position[E_AXIS] -= 52;
|
||||||
plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE, active_extruder);
|
plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE);
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
|
|
||||||
uint_least8_t filament_detected_count = 0;
|
uint_least8_t filament_detected_count = 0;
|
||||||
|
|
@ -1458,9 +1456,9 @@ static bool can_load()
|
||||||
for(uint_least8_t i = 0; i < steps; ++i)
|
for(uint_least8_t i = 0; i < steps; ++i)
|
||||||
{
|
{
|
||||||
current_position[E_AXIS] -= e_increment;
|
current_position[E_AXIS] -= e_increment;
|
||||||
plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE, active_extruder);
|
plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE);
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
if(0 == PIN_GET(IR_SENSOR_PIN))
|
if(0 == READ(IR_SENSOR_PIN))
|
||||||
{
|
{
|
||||||
++filament_detected_count;
|
++filament_detected_count;
|
||||||
DEBUG_PUTCHAR('O');
|
DEBUG_PUTCHAR('O');
|
||||||
|
|
@ -1491,7 +1489,7 @@ static bool load_more()
|
||||||
{
|
{
|
||||||
for (uint8_t i = 0; i < MMU_IDLER_SENSOR_ATTEMPTS_NR; i++)
|
for (uint8_t i = 0; i < MMU_IDLER_SENSOR_ATTEMPTS_NR; i++)
|
||||||
{
|
{
|
||||||
if (PIN_GET(IR_SENSOR_PIN) == 0) return true;
|
if (READ(IR_SENSOR_PIN) == 0) return true;
|
||||||
DEBUG_PRINTF_P(PSTR("Additional load attempt nr. %d\n"), i);
|
DEBUG_PRINTF_P(PSTR("Additional load attempt nr. %d\n"), i);
|
||||||
mmu_command(MmuCmd::C0);
|
mmu_command(MmuCmd::C0);
|
||||||
manage_response(true, true, MMU_LOAD_MOVE);
|
manage_response(true, true, MMU_LOAD_MOVE);
|
||||||
|
|
|
||||||
|
|
@ -99,9 +99,11 @@ struct block_t;
|
||||||
extern struct block_t *block_buffer;
|
extern struct block_t *block_buffer;
|
||||||
|
|
||||||
//! @brief Enter an STK500 compatible Optiboot boot loader waiting for flashing the languages to an external flash memory.
|
//! @brief Enter an STK500 compatible Optiboot boot loader waiting for flashing the languages to an external flash memory.
|
||||||
void optiboot_w25x20cl_enter()
|
//! @return 1 if "start\n" was not sent. Optiboot was skipped
|
||||||
|
//! @return 0 if "start\n" was sent. Optiboot ran normally. No need to send "start\n" in setup()
|
||||||
|
uint8_t optiboot_w25x20cl_enter()
|
||||||
{
|
{
|
||||||
if (boot_app_flags & BOOT_APP_FLG_USER0) return;
|
if (boot_app_flags & BOOT_APP_FLG_USER0) return 1;
|
||||||
uint8_t ch;
|
uint8_t ch;
|
||||||
uint8_t rampz = 0;
|
uint8_t rampz = 0;
|
||||||
register uint16_t address = 0;
|
register uint16_t address = 0;
|
||||||
|
|
@ -120,38 +122,46 @@ void optiboot_w25x20cl_enter()
|
||||||
unsigned long boot_timer = 0;
|
unsigned long boot_timer = 0;
|
||||||
const char *ptr = entry_magic_send;
|
const char *ptr = entry_magic_send;
|
||||||
const char *end = strlen_P(entry_magic_send) + ptr;
|
const char *end = strlen_P(entry_magic_send) + ptr;
|
||||||
// Initialize the serial line.
|
const uint8_t selectedSerialPort_bak = selectedSerialPort;
|
||||||
UCSR0A |= (1 << U2X0);
|
|
||||||
UBRR0L = (((float)(F_CPU))/(((float)(115200))*8.0)-1.0+0.5);
|
|
||||||
UCSR0B = (1 << RXEN0) | (1 << TXEN0);
|
|
||||||
// Flush the serial line.
|
// Flush the serial line.
|
||||||
while (RECV_READY) {
|
while (RECV_READY) {
|
||||||
watchdogReset();
|
watchdogReset();
|
||||||
// Dummy register read (discard)
|
// Dummy register read (discard)
|
||||||
(void)(*(char *)UDR0);
|
(void)(*(char *)UDR0);
|
||||||
}
|
}
|
||||||
|
selectedSerialPort = 0; //switch to Serial0
|
||||||
|
MYSERIAL.flush(); //clear RX buffer
|
||||||
|
int SerialHead = rx_buffer.head;
|
||||||
// Send the initial magic string.
|
// Send the initial magic string.
|
||||||
while (ptr != end)
|
while (ptr != end)
|
||||||
putch(pgm_read_byte(ptr ++));
|
putch(pgm_read_byte(ptr ++));
|
||||||
watchdogReset();
|
watchdogReset();
|
||||||
// Wait for one second until a magic string (constant entry_magic) is received
|
// Wait for two seconds until a magic string (constant entry_magic) is received
|
||||||
// from the serial line.
|
// from the serial line.
|
||||||
ptr = entry_magic_receive;
|
ptr = entry_magic_receive;
|
||||||
end = strlen_P(entry_magic_receive) + ptr;
|
end = strlen_P(entry_magic_receive) + ptr;
|
||||||
while (ptr != end) {
|
while (ptr != end) {
|
||||||
while (! RECV_READY) {
|
while (rx_buffer.head == SerialHead) {
|
||||||
watchdogReset();
|
watchdogReset();
|
||||||
delayMicroseconds(1);
|
delayMicroseconds(1);
|
||||||
if (++ boot_timer > boot_timeout)
|
if (++ boot_timer > boot_timeout)
|
||||||
|
{
|
||||||
// Timeout expired, continue with the application.
|
// Timeout expired, continue with the application.
|
||||||
return;
|
selectedSerialPort = selectedSerialPort_bak; //revert Serial setting
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ch = UDR0;
|
ch = rx_buffer.buffer[SerialHead];
|
||||||
|
SerialHead = (unsigned int)(SerialHead + 1) % RX_BUFFER_SIZE;
|
||||||
if (pgm_read_byte(ptr ++) != ch)
|
if (pgm_read_byte(ptr ++) != ch)
|
||||||
|
{
|
||||||
// Magic was not received correctly, continue with the application
|
// Magic was not received correctly, continue with the application
|
||||||
return;
|
selectedSerialPort = selectedSerialPort_bak; //revert Serial setting
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
watchdogReset();
|
watchdogReset();
|
||||||
}
|
}
|
||||||
|
cbi(UCSR0B, RXCIE0); //disable the MarlinSerial0 interrupt
|
||||||
// Send the cfm magic string.
|
// Send the cfm magic string.
|
||||||
ptr = entry_magic_cfm;
|
ptr = entry_magic_cfm;
|
||||||
while (ptr != end)
|
while (ptr != end)
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#ifndef OPTIBOOT_W25X20CL_H
|
#ifndef OPTIBOOT_W25X20CL_H
|
||||||
#define OPTIBOOT_W25X20CL_H
|
#define OPTIBOOT_W25X20CL_H
|
||||||
|
|
||||||
extern void optiboot_w25x20cl_enter();
|
extern uint8_t optiboot_w25x20cl_enter();
|
||||||
|
|
||||||
#endif /* OPTIBOOT_W25X20CL_H */
|
#endif /* OPTIBOOT_W25X20CL_H */
|
||||||
|
|
|
||||||
|
|
@ -26,12 +26,15 @@
|
||||||
#define PAT9125_BANK_SELECTION 0x7f
|
#define PAT9125_BANK_SELECTION 0x7f
|
||||||
|
|
||||||
|
|
||||||
#ifdef PAT9125_SWSPI
|
#if defined(PAT9125_SWSPI)
|
||||||
#include "swspi.h"
|
#include "swspi.h"
|
||||||
#endif //PAT9125_SWSPI
|
#elif defined(PAT9125_SWI2C)
|
||||||
#ifdef PAT9125_SWI2C
|
|
||||||
#include "swi2c.h"
|
#include "swi2c.h"
|
||||||
#endif //PAT9125_SWI2C
|
#elif defined(PAT9125_I2C)
|
||||||
|
#include "twi.h"
|
||||||
|
#else
|
||||||
|
#error unknown PAT9125 communication method
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
uint8_t pat9125_PID1 = 0;
|
uint8_t pat9125_PID1 = 0;
|
||||||
|
|
@ -103,14 +106,31 @@ extern FILE _uartout;
|
||||||
#define uartout (&_uartout)
|
#define uartout (&_uartout)
|
||||||
|
|
||||||
|
|
||||||
|
uint8_t pat9125_probe()
|
||||||
|
{
|
||||||
|
#if defined(PAT9125_SWSPI)
|
||||||
|
swspi_init();
|
||||||
|
#error not implemented
|
||||||
|
#elif defined(PAT9125_SWI2C)
|
||||||
|
swi2c_init();
|
||||||
|
return swi2c_readByte_A8(PAT9125_I2C_ADDR,0x00,NULL);
|
||||||
|
#elif defined(PAT9125_I2C)
|
||||||
|
twi_init();
|
||||||
|
#ifdef IR_SENSOR
|
||||||
|
// NOTE: this is called from the MK3S variant, so it should be kept minimal
|
||||||
|
uint8_t data;
|
||||||
|
return (twi_r8(PAT9125_I2C_ADDR,PAT9125_PID1,&data) == 0);
|
||||||
|
#else
|
||||||
|
return (pat9125_rd_reg(PAT9125_PID1) != 0);
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
uint8_t pat9125_init(void)
|
uint8_t pat9125_init(void)
|
||||||
{
|
{
|
||||||
#ifdef PAT9125_SWSPI
|
if (!pat9125_probe())
|
||||||
swspi_init();
|
return 0;
|
||||||
#endif //PAT9125_SWSPI
|
|
||||||
#ifdef PAT9125_SWI2C
|
|
||||||
swi2c_init();
|
|
||||||
#endif //PAT9125_SWI2C
|
|
||||||
// Verify that the sensor responds with its correct product ID.
|
// Verify that the sensor responds with its correct product ID.
|
||||||
pat9125_PID1 = pat9125_rd_reg(PAT9125_PID1);
|
pat9125_PID1 = pat9125_rd_reg(PAT9125_PID1);
|
||||||
pat9125_PID2 = pat9125_rd_reg(PAT9125_PID2);
|
pat9125_PID2 = pat9125_rd_reg(PAT9125_PID2);
|
||||||
|
|
@ -234,39 +254,46 @@ uint8_t pat9125_update_bs(void)
|
||||||
uint8_t pat9125_rd_reg(uint8_t addr)
|
uint8_t pat9125_rd_reg(uint8_t addr)
|
||||||
{
|
{
|
||||||
uint8_t data = 0;
|
uint8_t data = 0;
|
||||||
#ifdef PAT9125_SWSPI
|
#if defined(PAT9125_SWSPI)
|
||||||
swspi_start();
|
swspi_start();
|
||||||
swspi_tx(addr & 0x7f);
|
swspi_tx(addr & 0x7f);
|
||||||
data = swspi_rx();
|
data = swspi_rx();
|
||||||
swspi_stop();
|
swspi_stop();
|
||||||
#endif //PAT9125_SWSPI
|
#elif defined(PAT9125_SWI2C)
|
||||||
#ifdef PAT9125_SWI2C
|
|
||||||
if (!swi2c_readByte_A8(PAT9125_I2C_ADDR, addr, &data)) //NO ACK error
|
if (!swi2c_readByte_A8(PAT9125_I2C_ADDR, addr, &data)) //NO ACK error
|
||||||
{
|
goto error;
|
||||||
pat9125_PID1 = 0xff;
|
#elif defined(PAT9125_I2C)
|
||||||
pat9125_PID2 = 0xff;
|
if (twi_r8(PAT9125_I2C_ADDR,addr,&data))
|
||||||
return 0;
|
goto error;
|
||||||
}
|
#endif
|
||||||
#endif //PAT9125_SWI2C
|
|
||||||
return data;
|
return data;
|
||||||
|
|
||||||
|
error:
|
||||||
|
pat9125_PID1 = 0xff;
|
||||||
|
pat9125_PID2 = 0xff;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void pat9125_wr_reg(uint8_t addr, uint8_t data)
|
void pat9125_wr_reg(uint8_t addr, uint8_t data)
|
||||||
{
|
{
|
||||||
#ifdef PAT9125_SWSPI
|
#if defined(PAT9125_SWSPI)
|
||||||
swspi_start();
|
swspi_start();
|
||||||
swspi_tx(addr | 0x80);
|
swspi_tx(addr | 0x80);
|
||||||
swspi_tx(data);
|
swspi_tx(data);
|
||||||
swspi_stop();
|
swspi_stop();
|
||||||
#endif //PAT9125_SWSPI
|
#elif defined(PAT9125_SWI2C)
|
||||||
#ifdef PAT9125_SWI2C
|
|
||||||
if (!swi2c_writeByte_A8(PAT9125_I2C_ADDR, addr, &data)) //NO ACK error
|
if (!swi2c_writeByte_A8(PAT9125_I2C_ADDR, addr, &data)) //NO ACK error
|
||||||
{
|
goto error;
|
||||||
pat9125_PID1 = 0xff;
|
#elif defined(PAT9125_I2C)
|
||||||
pat9125_PID2 = 0xff;
|
if (twi_w8(PAT9125_I2C_ADDR,addr,data))
|
||||||
return;
|
goto error;
|
||||||
}
|
#endif
|
||||||
#endif //PAT9125_SWI2C
|
return;
|
||||||
|
|
||||||
|
error:
|
||||||
|
pat9125_PID1 = 0xff;
|
||||||
|
pat9125_PID2 = 0xff;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t pat9125_wr_reg_verify(uint8_t addr, uint8_t data)
|
uint8_t pat9125_wr_reg_verify(uint8_t addr, uint8_t data)
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ extern int16_t pat9125_y;
|
||||||
extern uint8_t pat9125_b;
|
extern uint8_t pat9125_b;
|
||||||
extern uint8_t pat9125_s;
|
extern uint8_t pat9125_s;
|
||||||
|
|
||||||
|
extern uint8_t pat9125_probe(void); // Return non-zero if PAT9125 can be trivially detected
|
||||||
extern uint8_t pat9125_init(void);
|
extern uint8_t pat9125_init(void);
|
||||||
extern uint8_t pat9125_update(void); // update all sensor data
|
extern uint8_t pat9125_update(void); // update all sensor data
|
||||||
extern uint8_t pat9125_update_y(void); // update _y only
|
extern uint8_t pat9125_update_y(void); // update _y only
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,11 @@
|
||||||
#error Unknown MOTHERBOARD value in configuration.h
|
#error Unknown MOTHERBOARD value in configuration.h
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if !defined(SDA_PIN) && (defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__))
|
||||||
|
#define SDA_PIN 20
|
||||||
|
#define SCL_PIN 21
|
||||||
|
#endif
|
||||||
|
|
||||||
//List of pins which to ignore when asked to change by gcode, 0 and 1 are RX and TX, do not mess with those!
|
//List of pins which to ignore when asked to change by gcode, 0 and 1 are RX and TX, do not mess with those!
|
||||||
#define _E0_PINS E0_STEP_PIN, E0_DIR_PIN, E0_ENABLE_PIN, HEATER_0_PIN,
|
#define _E0_PINS E0_STEP_PIN, E0_DIR_PIN, E0_ENABLE_PIN, HEATER_0_PIN,
|
||||||
#if EXTRUDERS > 1
|
#if EXTRUDERS > 1
|
||||||
|
|
|
||||||
|
|
@ -18,12 +18,6 @@
|
||||||
#define W25X20CL // external 256kB flash
|
#define W25X20CL // external 256kB flash
|
||||||
#define BOOTAPP // bootloader support
|
#define BOOTAPP // bootloader support
|
||||||
|
|
||||||
|
|
||||||
#define SWI2C_SDA 20 //SDA on P3
|
|
||||||
#define SWI2C_SCL 21 //SCL on P3
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define X_TMC2130_CS 41
|
#define X_TMC2130_CS 41
|
||||||
#define X_TMC2130_DIAG 64 // !!! changed from 40 (EINY03)
|
#define X_TMC2130_DIAG 64 // !!! changed from 40 (EINY03)
|
||||||
#define X_STEP_PIN 37
|
#define X_STEP_PIN 37
|
||||||
|
|
@ -121,6 +115,8 @@
|
||||||
|
|
||||||
#define IR_SENSOR_PIN 62 //idler sensor @PK0 (digital pin 62/A8)
|
#define IR_SENSOR_PIN 62 //idler sensor @PK0 (digital pin 62/A8)
|
||||||
|
|
||||||
|
#define MMU_RST_PIN 76
|
||||||
|
|
||||||
// Support for an 8 bit logic analyzer, for example the Saleae.
|
// Support for an 8 bit logic analyzer, for example the Saleae.
|
||||||
// Channels 0-2 are fast, they could generate 2.667Mhz waveform with a software loop.
|
// Channels 0-2 are fast, they could generate 2.667Mhz waveform with a software loop.
|
||||||
#define LOGIC_ANALYZER_CH0 X_MIN_PIN // PB6
|
#define LOGIC_ANALYZER_CH0 X_MIN_PIN // PB6
|
||||||
|
|
|
||||||
|
|
@ -11,9 +11,6 @@
|
||||||
|
|
||||||
#define PINDA_THERMISTOR
|
#define PINDA_THERMISTOR
|
||||||
|
|
||||||
#define SWI2C_SDA 20 //SDA on P3
|
|
||||||
#define SWI2C_SCL 21 //SCL on P3
|
|
||||||
|
|
||||||
#ifdef MICROMETER_LOGGING
|
#ifdef MICROMETER_LOGGING
|
||||||
#define D_DATACLOCK 24 //Y_MAX (green)
|
#define D_DATACLOCK 24 //Y_MAX (green)
|
||||||
#define D_DATA 30 //X_MAX (blue)
|
#define D_DATA 30 //X_MAX (blue)
|
||||||
|
|
|
||||||
|
|
@ -126,7 +126,7 @@ float extrude_min_temp=EXTRUDE_MINTEMP;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef LIN_ADVANCE
|
#ifdef LIN_ADVANCE
|
||||||
float extruder_advance_K = LIN_ADVANCE_K;
|
float extruder_advance_K = LA_K_DEF;
|
||||||
float position_float[NUM_AXIS];
|
float position_float[NUM_AXIS];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -226,11 +226,23 @@ void calculate_trapezoid_for_block(block_t *block, float entry_speed, float exit
|
||||||
// Size of Plateau of Nominal Rate.
|
// Size of Plateau of Nominal Rate.
|
||||||
uint32_t plateau_steps = 0;
|
uint32_t plateau_steps = 0;
|
||||||
|
|
||||||
|
#ifdef LIN_ADVANCE
|
||||||
|
uint16_t final_adv_steps = 0;
|
||||||
|
uint16_t max_adv_steps = 0;
|
||||||
|
if (block->use_advance_lead) {
|
||||||
|
final_adv_steps = final_rate * block->adv_comp;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// Is the Plateau of Nominal Rate smaller than nothing? That means no cruising, and we will
|
// Is the Plateau of Nominal Rate smaller than nothing? That means no cruising, and we will
|
||||||
// have to use intersection_distance() to calculate when to abort acceleration and start braking
|
// have to use intersection_distance() to calculate when to abort acceleration and start braking
|
||||||
// in order to reach the final_rate exactly at the end of this block.
|
// in order to reach the final_rate exactly at the end of this block.
|
||||||
if (accel_decel_steps < block->step_event_count.wide) {
|
if (accel_decel_steps < block->step_event_count.wide) {
|
||||||
plateau_steps = block->step_event_count.wide - accel_decel_steps;
|
plateau_steps = block->step_event_count.wide - accel_decel_steps;
|
||||||
|
#ifdef LIN_ADVANCE
|
||||||
|
if (block->use_advance_lead)
|
||||||
|
max_adv_steps = block->nominal_rate * block->adv_comp;
|
||||||
|
#endif
|
||||||
} else {
|
} else {
|
||||||
uint32_t acceleration_x4 = acceleration << 2;
|
uint32_t acceleration_x4 = acceleration << 2;
|
||||||
// Avoid negative numbers
|
// Avoid negative numbers
|
||||||
|
|
@ -263,14 +275,20 @@ void calculate_trapezoid_for_block(block_t *block, float entry_speed, float exit
|
||||||
decelerate_steps = block->step_event_count.wide;
|
decelerate_steps = block->step_event_count.wide;
|
||||||
accelerate_steps = block->step_event_count.wide - decelerate_steps;
|
accelerate_steps = block->step_event_count.wide - decelerate_steps;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef LIN_ADVANCE
|
#ifdef LIN_ADVANCE
|
||||||
uint16_t final_adv_steps = 0;
|
if (block->use_advance_lead) {
|
||||||
if (block->use_advance_lead) {
|
if(!accelerate_steps || !decelerate_steps) {
|
||||||
final_adv_steps = exit_speed * block->adv_comp;
|
// accelerate_steps=0: deceleration-only ramp, max_rate is effectively unused
|
||||||
}
|
// decelerate_steps=0: acceleration-only ramp, max_rate _is_ final_rate
|
||||||
|
max_adv_steps = final_adv_steps;
|
||||||
|
} else {
|
||||||
|
float max_rate = sqrt(acceleration_x2 * accelerate_steps + initial_rate_sqr);
|
||||||
|
max_adv_steps = max_rate * block->adv_comp;
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
CRITICAL_SECTION_START; // Fill variables used by the stepper in a critical section
|
CRITICAL_SECTION_START; // Fill variables used by the stepper in a critical section
|
||||||
// This block locks the interrupts globally for 4.38 us,
|
// This block locks the interrupts globally for 4.38 us,
|
||||||
|
|
@ -284,6 +302,7 @@ void calculate_trapezoid_for_block(block_t *block, float entry_speed, float exit
|
||||||
block->final_rate = final_rate;
|
block->final_rate = final_rate;
|
||||||
#ifdef LIN_ADVANCE
|
#ifdef LIN_ADVANCE
|
||||||
block->final_adv_steps = final_adv_steps;
|
block->final_adv_steps = final_adv_steps;
|
||||||
|
block->max_adv_steps = max_adv_steps;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
CRITICAL_SECTION_END;
|
CRITICAL_SECTION_END;
|
||||||
|
|
@ -671,8 +690,16 @@ void planner_abort_hard()
|
||||||
waiting_inside_plan_buffer_line_print_aborted = true;
|
waiting_inside_plan_buffer_line_print_aborted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void plan_buffer_line_curposXYZE(float feed_rate, uint8_t extruder) {
|
void plan_buffer_line_curposXYZE(float feed_rate) {
|
||||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feed_rate, extruder );
|
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feed_rate, active_extruder );
|
||||||
|
}
|
||||||
|
|
||||||
|
void plan_buffer_line_destinationXYZE(float feed_rate) {
|
||||||
|
plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feed_rate, active_extruder);
|
||||||
|
}
|
||||||
|
|
||||||
|
void plan_set_position_curposXYZE(){
|
||||||
|
plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
|
||||||
}
|
}
|
||||||
|
|
||||||
float junction_deviation = 0.1;
|
float junction_deviation = 0.1;
|
||||||
|
|
@ -1055,26 +1082,35 @@ Having the real displacement of the head, we can calculate the total movement le
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
block->acceleration_st = ceil(cs.acceleration * steps_per_mm); // convert to: acceleration steps/sec^2
|
float acceleration = (block->steps_e.wide == 0? cs.travel_acceleration: cs.acceleration);
|
||||||
|
block->acceleration_st = ceil(acceleration * steps_per_mm); // convert to: acceleration steps/sec^2
|
||||||
|
|
||||||
#ifdef LIN_ADVANCE
|
#ifdef LIN_ADVANCE
|
||||||
/**
|
/**
|
||||||
* Use LIN_ADVANCE within this block if all these are true:
|
* Use LIN_ADVANCE within this block if all these are true:
|
||||||
*
|
*
|
||||||
* block->steps_e : This is a print move, because we checked for X, Y, Z steps before.
|
|
||||||
* extruder_advance_K : There is an advance factor set.
|
* extruder_advance_K : There is an advance factor set.
|
||||||
* delta_mm[E_AXIS] > 0 : Extruder is running forward (e.g., for "Wipe while retracting" (Slic3r) or "Combing" (Cura) moves)
|
* delta_mm[E_AXIS] >= 0 : Extruding or traveling, but _not_ retracting.
|
||||||
* |delta_mm[Z_AXIS]| < 0.5 : Z is only moved for leveling (_not_ for priming)
|
* |delta_mm[Z_AXIS]| < 0.5 : Z is only moved for leveling (_not_ for priming)
|
||||||
*/
|
*/
|
||||||
block->use_advance_lead = block->steps_e.wide
|
block->use_advance_lead = extruder_advance_K > 0
|
||||||
&& extruder_advance_K
|
&& delta_mm[E_AXIS] >= 0
|
||||||
&& delta_mm[E_AXIS] > 0
|
|
||||||
&& abs(delta_mm[Z_AXIS]) < 0.5;
|
&& abs(delta_mm[Z_AXIS]) < 0.5;
|
||||||
if (block->use_advance_lead) {
|
if (block->use_advance_lead) {
|
||||||
e_D_ratio = (e - position_float[E_AXIS]) /
|
#ifdef LA_FLOWADJ
|
||||||
sqrt(sq(x - position_float[X_AXIS])
|
// M221/FLOW should change uniformly the extrusion thickness
|
||||||
+ sq(y - position_float[Y_AXIS])
|
float delta_e = (e - position_float[E_AXIS]) / extruder_multiplier[extruder];
|
||||||
+ sq(z - position_float[Z_AXIS]));
|
#else
|
||||||
|
// M221/FLOW only adjusts for an incorrect source diameter
|
||||||
|
float delta_e = (e - position_float[E_AXIS]);
|
||||||
|
#endif
|
||||||
|
float delta_D = sqrt(sq(x - position_float[X_AXIS])
|
||||||
|
+ sq(y - position_float[Y_AXIS])
|
||||||
|
+ sq(z - position_float[Z_AXIS]));
|
||||||
|
|
||||||
|
// all extrusion moves with LA require a compression which is proportional to the
|
||||||
|
// extrusion_length to distance ratio (e/D)
|
||||||
|
e_D_ratio = delta_e / delta_D;
|
||||||
|
|
||||||
// Check for unusual high e_D ratio to detect if a retract move was combined with the last
|
// Check for unusual high e_D ratio to detect if a retract move was combined with the last
|
||||||
// print move due to min. steps per segment. Never execute this with advance! This assumes
|
// print move due to min. steps per segment. Never execute this with advance! This assumes
|
||||||
|
|
@ -1082,10 +1118,10 @@ Having the real displacement of the head, we can calculate the total movement le
|
||||||
// 100mm wide lines using 3mm filament or 35mm wide lines using 1.75mm filament.
|
// 100mm wide lines using 3mm filament or 35mm wide lines using 1.75mm filament.
|
||||||
if (e_D_ratio > 3.0)
|
if (e_D_ratio > 3.0)
|
||||||
block->use_advance_lead = false;
|
block->use_advance_lead = false;
|
||||||
else {
|
else if (e_D_ratio > 0) {
|
||||||
const uint32_t max_accel_steps_per_s2 = cs.max_jerk[E_AXIS] / (extruder_advance_K * e_D_ratio) * steps_per_mm;
|
const float max_accel_per_s2 = cs.max_jerk[E_AXIS] / (extruder_advance_K * e_D_ratio);
|
||||||
if (block->acceleration_st > max_accel_steps_per_s2) {
|
if (cs.acceleration > max_accel_per_s2) {
|
||||||
block->acceleration_st = max_accel_steps_per_s2;
|
block->acceleration_st = ceil(max_accel_per_s2 * steps_per_mm);
|
||||||
#ifdef LA_DEBUG
|
#ifdef LA_DEBUG
|
||||||
SERIAL_ECHOLNPGM("LA: Block acceleration limited due to max E-jerk");
|
SERIAL_ECHOLNPGM("LA: Block acceleration limited due to max E-jerk");
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -1124,48 +1160,7 @@ Having the real displacement of the head, we can calculate the total movement le
|
||||||
block->acceleration_st = (block->acceleration_st + (bresenham_oversample >> 1)) / bresenham_oversample;
|
block->acceleration_st = (block->acceleration_st + (bresenham_oversample >> 1)) / bresenham_oversample;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
block->acceleration_rate = (long)((float)block->acceleration_st * (16777216.0 / (F_CPU / 8.0)));
|
block->acceleration_rate = ((float)block->acceleration_st * (16777216.0 / (F_CPU / 8.0)));
|
||||||
|
|
||||||
#ifdef LIN_ADVANCE
|
|
||||||
if (block->use_advance_lead) {
|
|
||||||
// the nominal speed doesn't change past this point: calculate the compression ratio for the
|
|
||||||
// segment and the required advance steps
|
|
||||||
block->adv_comp = extruder_advance_K * e_D_ratio * cs.axis_steps_per_unit[E_AXIS];
|
|
||||||
block->max_adv_steps = block->nominal_speed * block->adv_comp;
|
|
||||||
|
|
||||||
// to save more space we avoid another copy of calc_timer and go through slow division, but we
|
|
||||||
// still need to replicate the *exact* same step grouping policy (see below)
|
|
||||||
float advance_speed = (extruder_advance_K * e_D_ratio * block->acceleration * cs.axis_steps_per_unit[E_AXIS]);
|
|
||||||
if (advance_speed > MAX_STEP_FREQUENCY) advance_speed = MAX_STEP_FREQUENCY;
|
|
||||||
float advance_rate = (F_CPU / 8.0) / advance_speed;
|
|
||||||
if (advance_speed > 20000) {
|
|
||||||
block->advance_rate = advance_rate * 4;
|
|
||||||
block->advance_step_loops = 4;
|
|
||||||
}
|
|
||||||
else if (advance_speed > 10000) {
|
|
||||||
block->advance_rate = advance_rate * 2;
|
|
||||||
block->advance_step_loops = 2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// never overflow the internal accumulator with very low rates
|
|
||||||
if (advance_rate < UINT16_MAX)
|
|
||||||
block->advance_rate = advance_rate;
|
|
||||||
else
|
|
||||||
block->advance_rate = UINT16_MAX;
|
|
||||||
block->advance_step_loops = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef LA_DEBUG
|
|
||||||
if (block->advance_step_loops > 2)
|
|
||||||
// @wavexx: we should really check for the difference between step_loops and
|
|
||||||
// advance_step_loops instead. A difference of more than 1 will lead
|
|
||||||
// to uneven speed and *should* be adjusted here by furthermore
|
|
||||||
// reducing the speed.
|
|
||||||
SERIAL_ECHOLNPGM("LA: More than 2 steps per eISR loop executed.");
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Start with a safe speed.
|
// Start with a safe speed.
|
||||||
// Safe speed is the speed, from which the machine may halt to stop immediately.
|
// Safe speed is the speed, from which the machine may halt to stop immediately.
|
||||||
|
|
@ -1292,6 +1287,53 @@ Having the real displacement of the head, we can calculate the total movement le
|
||||||
|
|
||||||
// Precalculate the division, so when all the trapezoids in the planner queue get recalculated, the division is not repeated.
|
// Precalculate the division, so when all the trapezoids in the planner queue get recalculated, the division is not repeated.
|
||||||
block->speed_factor = block->nominal_rate / block->nominal_speed;
|
block->speed_factor = block->nominal_rate / block->nominal_speed;
|
||||||
|
|
||||||
|
#ifdef LIN_ADVANCE
|
||||||
|
if (block->use_advance_lead) {
|
||||||
|
// calculate the compression ratio for the segment (the required advance steps are computed
|
||||||
|
// during trapezoid planning)
|
||||||
|
float adv_comp = extruder_advance_K * e_D_ratio * cs.axis_steps_per_unit[E_AXIS]; // (step/(mm/s))
|
||||||
|
block->adv_comp = adv_comp / block->speed_factor; // step/(step/min)
|
||||||
|
|
||||||
|
float advance_speed;
|
||||||
|
if (e_D_ratio > 0)
|
||||||
|
advance_speed = (extruder_advance_K * e_D_ratio * block->acceleration * cs.axis_steps_per_unit[E_AXIS]);
|
||||||
|
else
|
||||||
|
advance_speed = cs.max_jerk[E_AXIS] * cs.axis_steps_per_unit[E_AXIS];
|
||||||
|
|
||||||
|
// to save more space we avoid another copy of calc_timer and go through slow division, but we
|
||||||
|
// still need to replicate the *exact* same step grouping policy (see below)
|
||||||
|
if (advance_speed > MAX_STEP_FREQUENCY) advance_speed = MAX_STEP_FREQUENCY;
|
||||||
|
float advance_rate = (F_CPU / 8.0) / advance_speed;
|
||||||
|
if (advance_speed > 20000) {
|
||||||
|
block->advance_rate = advance_rate * 4;
|
||||||
|
block->advance_step_loops = 4;
|
||||||
|
}
|
||||||
|
else if (advance_speed > 10000) {
|
||||||
|
block->advance_rate = advance_rate * 2;
|
||||||
|
block->advance_step_loops = 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// never overflow the internal accumulator with very low rates
|
||||||
|
if (advance_rate < UINT16_MAX)
|
||||||
|
block->advance_rate = advance_rate;
|
||||||
|
else
|
||||||
|
block->advance_rate = UINT16_MAX;
|
||||||
|
block->advance_step_loops = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef LA_DEBUG
|
||||||
|
if (block->advance_step_loops > 2)
|
||||||
|
// @wavexx: we should really check for the difference between step_loops and
|
||||||
|
// advance_step_loops instead. A difference of more than 1 will lead
|
||||||
|
// to uneven speed and *should* be adjusted here by furthermore
|
||||||
|
// reducing the speed.
|
||||||
|
SERIAL_ECHOLNPGM("LA: More than 2 steps per eISR loop executed.");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
calculate_trapezoid_for_block(block, block->entry_speed, safe_speed);
|
calculate_trapezoid_for_block(block, block->entry_speed, safe_speed);
|
||||||
|
|
||||||
if (block->step_event_count.wide <= 32767)
|
if (block->step_event_count.wide <= 32767)
|
||||||
|
|
|
||||||
|
|
@ -73,12 +73,12 @@ typedef struct {
|
||||||
// steps_x.y,z, step_event_count, acceleration_rate, direction_bits and active_extruder are set by plan_buffer_line().
|
// steps_x.y,z, step_event_count, acceleration_rate, direction_bits and active_extruder are set by plan_buffer_line().
|
||||||
dda_isteps_t steps_x, steps_y, steps_z, steps_e; // Step count along each axis
|
dda_isteps_t steps_x, steps_y, steps_z, steps_e; // Step count along each axis
|
||||||
dda_usteps_t step_event_count; // The number of step events required to complete this block
|
dda_usteps_t step_event_count; // The number of step events required to complete this block
|
||||||
long acceleration_rate; // The acceleration rate used for acceleration calculation
|
uint32_t acceleration_rate; // The acceleration rate used for acceleration calculation
|
||||||
unsigned char direction_bits; // The direction bit set for this block (refers to *_DIRECTION_BIT in config.h)
|
unsigned char direction_bits; // The direction bit set for this block (refers to *_DIRECTION_BIT in config.h)
|
||||||
unsigned char active_extruder; // Selects the active extruder
|
unsigned char active_extruder; // Selects the active extruder
|
||||||
// accelerate_until and decelerate_after are set by calculate_trapezoid_for_block() and they need to be synchronized with the stepper interrupt controller.
|
// accelerate_until and decelerate_after are set by calculate_trapezoid_for_block() and they need to be synchronized with the stepper interrupt controller.
|
||||||
long accelerate_until; // The index of the step event on which to stop acceleration
|
uint32_t accelerate_until; // The index of the step event on which to stop acceleration
|
||||||
long decelerate_after; // The index of the step event on which to start decelerating
|
uint32_t decelerate_after; // The index of the step event on which to start decelerating
|
||||||
|
|
||||||
// Fields used by the motion planner to manage acceleration
|
// Fields used by the motion planner to manage acceleration
|
||||||
// float speed_x, speed_y, speed_z, speed_e; // Nominal mm/sec for each axis
|
// float speed_x, speed_y, speed_z, speed_e; // Nominal mm/sec for each axis
|
||||||
|
|
@ -100,13 +100,12 @@ typedef struct {
|
||||||
|
|
||||||
// Settings for the trapezoid generator (runs inside an interrupt handler).
|
// Settings for the trapezoid generator (runs inside an interrupt handler).
|
||||||
// Changing the following values in the planner needs to be synchronized with the interrupt handler by disabling the interrupts.
|
// Changing the following values in the planner needs to be synchronized with the interrupt handler by disabling the interrupts.
|
||||||
//FIXME nominal_rate, initial_rate and final_rate are limited to uint16_t by MultiU24X24toH16 in the stepper interrupt anyway!
|
|
||||||
unsigned long nominal_rate; // The nominal step rate for this block in step_events/sec
|
unsigned long nominal_rate; // The nominal step rate for this block in step_events/sec
|
||||||
unsigned long initial_rate; // The jerk-adjusted step rate at start of block
|
unsigned long initial_rate; // The jerk-adjusted step rate at start of block
|
||||||
unsigned long final_rate; // The minimal rate at exit
|
unsigned long final_rate; // The minimal rate at exit
|
||||||
unsigned long acceleration_st; // acceleration steps/sec^2
|
unsigned long acceleration_st; // acceleration steps/sec^2
|
||||||
//FIXME does it have to be unsigned long? Probably uint8_t would be just fine.
|
//FIXME does it have to be int? Probably uint8_t would be just fine. Need to change in other places as well
|
||||||
unsigned long fan_speed;
|
int fan_speed;
|
||||||
volatile char busy;
|
volatile char busy;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -154,7 +153,11 @@ vector_3 plan_get_position();
|
||||||
/// plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], ...
|
/// plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], ...
|
||||||
/// saves almost 5KB.
|
/// saves almost 5KB.
|
||||||
/// The performance penalty is negligible, since these planned lines are usually maintenance moves with the extruder.
|
/// The performance penalty is negligible, since these planned lines are usually maintenance moves with the extruder.
|
||||||
void plan_buffer_line_curposXYZE(float feed_rate, uint8_t extruder);
|
void plan_buffer_line_curposXYZE(float feed_rate);
|
||||||
|
|
||||||
|
void plan_buffer_line_destinationXYZE(float feed_rate);
|
||||||
|
|
||||||
|
void plan_set_position_curposXYZE();
|
||||||
|
|
||||||
void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate, uint8_t extruder, const float* gcode_target = NULL);
|
void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate, uint8_t extruder, const float* gcode_target = NULL);
|
||||||
//void plan_buffer_line(const float &x, const float &y, const float &z, const float &e, float feed_rate, const uint8_t &extruder);
|
//void plan_buffer_line(const float &x, const float &y, const float &z, const float &e, float feed_rate, const uint8_t &extruder);
|
||||||
|
|
|
||||||
|
|
@ -129,11 +129,15 @@ void sm4_set_dir_bits(uint8_t dir_bits)
|
||||||
void sm4_do_step(uint8_t axes_mask)
|
void sm4_do_step(uint8_t axes_mask)
|
||||||
{
|
{
|
||||||
#if ((MOTHERBOARD == BOARD_RAMBO_MINI_1_0) || (MOTHERBOARD == BOARD_RAMBO_MINI_1_3) || (MOTHERBOARD == BOARD_EINSY_1_0a))
|
#if ((MOTHERBOARD == BOARD_RAMBO_MINI_1_0) || (MOTHERBOARD == BOARD_RAMBO_MINI_1_3) || (MOTHERBOARD == BOARD_EINSY_1_0a))
|
||||||
|
#ifdef TMC2130_DEDGE_STEPPING
|
||||||
|
PINC = (axes_mask & 0x0f); // toggle step signals by mask
|
||||||
|
#else
|
||||||
register uint8_t portC = PORTC & 0xf0;
|
register uint8_t portC = PORTC & 0xf0;
|
||||||
PORTC = portC | (axes_mask & 0x0f); //set step signals by mask
|
PORTC = portC | (axes_mask & 0x0f); //set step signals by mask
|
||||||
asm("nop");
|
asm("nop");
|
||||||
PORTC = portC; //set step signals to zero
|
PORTC = portC; //set step signals to zero
|
||||||
asm("nop");
|
asm("nop");
|
||||||
|
#endif
|
||||||
#endif //((MOTHERBOARD == BOARD_RAMBO_MINI_1_0) || (MOTHERBOARD == BOARD_RAMBO_MINI_1_3) || (MOTHERBOARD == BOARD_EINSY_1_0a))
|
#endif //((MOTHERBOARD == BOARD_RAMBO_MINI_1_0) || (MOTHERBOARD == BOARD_RAMBO_MINI_1_3) || (MOTHERBOARD == BOARD_EINSY_1_0a))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -173,7 +177,7 @@ uint16_t sm4_line_xyze_ui(uint16_t dx, uint16_t dy, uint16_t dz, uint16_t de)
|
||||||
}
|
}
|
||||||
if (ce <= de)
|
if (ce <= de)
|
||||||
{
|
{
|
||||||
sm |= 4;
|
sm |= 8;
|
||||||
ce += dd;
|
ce += dd;
|
||||||
e++;
|
e++;
|
||||||
}
|
}
|
||||||
|
|
@ -191,5 +195,45 @@ uint16_t sm4_line_xyze_ui(uint16_t dx, uint16_t dy, uint16_t dz, uint16_t de)
|
||||||
return nd;
|
return nd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint16_t sm4_line_xyz_ui(uint16_t dx, uint16_t dy, uint16_t dz){
|
||||||
|
uint16_t dd = (uint16_t)(sqrt((float)(((uint32_t)dx)*dx + ((uint32_t)dy*dy) + ((uint32_t)dz*dz))) + 0.5);
|
||||||
|
uint16_t nd = dd;
|
||||||
|
uint16_t cx = dd;
|
||||||
|
uint16_t cy = dd;
|
||||||
|
uint16_t cz = dd;
|
||||||
|
uint16_t x = 0;
|
||||||
|
uint16_t y = 0;
|
||||||
|
uint16_t z = 0;
|
||||||
|
while (nd){
|
||||||
|
if (sm4_stop_cb && (*sm4_stop_cb)()) break;
|
||||||
|
uint8_t sm = 0; //step mask
|
||||||
|
if (cx <= dx){
|
||||||
|
sm |= 1;
|
||||||
|
cx += dd;
|
||||||
|
x++;
|
||||||
|
}
|
||||||
|
if (cy <= dy){
|
||||||
|
sm |= 2;
|
||||||
|
cy += dd;
|
||||||
|
y++;
|
||||||
|
}
|
||||||
|
if (cz <= dz){
|
||||||
|
sm |= 4;
|
||||||
|
cz += dd;
|
||||||
|
z++;
|
||||||
|
}
|
||||||
|
cx -= dx;
|
||||||
|
cy -= dy;
|
||||||
|
cz -= dz;
|
||||||
|
sm4_do_step(sm);
|
||||||
|
uint16_t delay = SM4_DEFDELAY;
|
||||||
|
if (sm4_calc_delay_cb) delay = (*sm4_calc_delay_cb)(nd, dd);
|
||||||
|
if (delay) delayMicroseconds(delay);
|
||||||
|
nd--;
|
||||||
|
}
|
||||||
|
if (sm4_update_pos_cb)
|
||||||
|
(*sm4_update_pos_cb)(x, y, z, 0);
|
||||||
|
return nd;
|
||||||
|
}
|
||||||
|
|
||||||
#endif //NEW_XYZCAL
|
#endif //NEW_XYZCAL
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,7 @@ extern void sm4_do_step(uint8_t axes_mask);
|
||||||
|
|
||||||
// xyze linear-interpolated relative move, returns remaining diagonal steps (>0 means stoped)
|
// xyze linear-interpolated relative move, returns remaining diagonal steps (>0 means stoped)
|
||||||
extern uint16_t sm4_line_xyze_ui(uint16_t dx, uint16_t dy, uint16_t dz, uint16_t de);
|
extern uint16_t sm4_line_xyze_ui(uint16_t dx, uint16_t dy, uint16_t dz, uint16_t de);
|
||||||
|
extern uint16_t sm4_line_xyz_ui(uint16_t dx, uint16_t dy, uint16_t dz);
|
||||||
|
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
|
|
|
||||||
|
|
@ -80,15 +80,21 @@ asm volatile ( \
|
||||||
|
|
||||||
#else //_NO_ASM
|
#else //_NO_ASM
|
||||||
|
|
||||||
// NOTE: currently not implemented
|
static inline void MultiU16X8toH16(uint16_t& intRes, uint8_t& charIn1, uint16_t& intIn2)
|
||||||
void MultiU16X8toH16(unsigned short& intRes, unsigned char& charIn1, unsigned short& intIn2);
|
{
|
||||||
void MultiU24X24toH16(uint16_t& intRes, int32_t& longIn1, long& longIn2);
|
intRes = ((uint32_t)charIn1 * (uint32_t)intIn2) >> 16;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void MultiU24X24toH16(uint16_t& intRes, uint32_t& longIn1, uint32_t& longIn2)
|
||||||
|
{
|
||||||
|
intRes = ((uint64_t)longIn1 * (uint64_t)longIn2) >> 24;
|
||||||
|
}
|
||||||
|
|
||||||
#endif //_NO_ASM
|
#endif //_NO_ASM
|
||||||
|
|
||||||
|
|
||||||
FORCE_INLINE unsigned short calc_timer(uint16_t step_rate, uint8_t& step_loops) {
|
FORCE_INLINE unsigned short calc_timer(uint16_t step_rate, uint8_t& step_loops) {
|
||||||
unsigned short timer;
|
uint16_t timer;
|
||||||
if(step_rate > MAX_STEP_FREQUENCY) step_rate = MAX_STEP_FREQUENCY;
|
if(step_rate > MAX_STEP_FREQUENCY) step_rate = MAX_STEP_FREQUENCY;
|
||||||
|
|
||||||
if(step_rate > 20000) { // If steprate > 20kHz >> step 4 times
|
if(step_rate > 20000) { // If steprate > 20kHz >> step 4 times
|
||||||
|
|
@ -108,7 +114,7 @@ FORCE_INLINE unsigned short calc_timer(uint16_t step_rate, uint8_t& step_loops)
|
||||||
if(step_rate >= (8*256)){ // higher step rate
|
if(step_rate >= (8*256)){ // higher step rate
|
||||||
unsigned short table_address = (unsigned short)&speed_lookuptable_fast[(unsigned char)(step_rate>>8)][0];
|
unsigned short table_address = (unsigned short)&speed_lookuptable_fast[(unsigned char)(step_rate>>8)][0];
|
||||||
unsigned char tmp_step_rate = (step_rate & 0x00ff);
|
unsigned char tmp_step_rate = (step_rate & 0x00ff);
|
||||||
unsigned short gain = (unsigned short)pgm_read_word_near(table_address+2);
|
uint16_t gain = (uint16_t)pgm_read_word_near(table_address+2);
|
||||||
MultiU16X8toH16(timer, tmp_step_rate, gain);
|
MultiU16X8toH16(timer, tmp_step_rate, gain);
|
||||||
timer = (unsigned short)pgm_read_word_near(table_address) - timer;
|
timer = (unsigned short)pgm_read_word_near(table_address) - timer;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,62 @@ int fsensor_counter; //counter for e-steps
|
||||||
uint16_t SP_min = 0x21FF;
|
uint16_t SP_min = 0x21FF;
|
||||||
#endif //DEBUG_STACK_MONITOR
|
#endif //DEBUG_STACK_MONITOR
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Stepping macros
|
||||||
|
*/
|
||||||
|
#define _STEP_PIN_X_AXIS X_STEP_PIN
|
||||||
|
#define _STEP_PIN_Y_AXIS Y_STEP_PIN
|
||||||
|
#define _STEP_PIN_Z_AXIS Z_STEP_PIN
|
||||||
|
#define _STEP_PIN_E_AXIS E0_STEP_PIN
|
||||||
|
|
||||||
|
#ifdef DEBUG_XSTEP_DUP_PIN
|
||||||
|
#define _STEP_PIN_X_DUP_AXIS DEBUG_XSTEP_DUP_PIN
|
||||||
|
#endif
|
||||||
|
#ifdef DEBUG_YSTEP_DUP_PIN
|
||||||
|
#define _STEP_PIN_Y_DUP_AXIS DEBUG_YSTEP_DUP_PIN
|
||||||
|
#endif
|
||||||
|
#ifdef Y_DUAL_STEPPER_DRIVERS
|
||||||
|
#error Y_DUAL_STEPPER_DRIVERS not fully implemented
|
||||||
|
#define _STEP_PIN_Y2_AXIS Y2_STEP_PIN
|
||||||
|
#endif
|
||||||
|
#ifdef Z_DUAL_STEPPER_DRIVERS
|
||||||
|
#error Z_DUAL_STEPPER_DRIVERS not fully implemented
|
||||||
|
#define _STEP_PIN_Z2_AXIS Z2_STEP_PIN
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef TMC2130
|
||||||
|
#define STEPPER_MINIMUM_PULSE TMC2130_MINIMUM_PULSE
|
||||||
|
#define STEPPER_SET_DIR_DELAY TMC2130_SET_DIR_DELAY
|
||||||
|
#define STEPPER_MINIMUM_DELAY TMC2130_MINIMUM_DELAY
|
||||||
|
#else
|
||||||
|
#define STEPPER_MINIMUM_PULSE 2
|
||||||
|
#define STEPPER_SET_DIR_DELAY 100
|
||||||
|
#define STEPPER_MINIMUM_DELAY delayMicroseconds(STEPPER_MINIMUM_PULSE)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef TMC2130_DEDGE_STEPPING
|
||||||
|
static_assert(TMC2130_MINIMUM_DELAY 1, // this will fail to compile when non-empty
|
||||||
|
"DEDGE implies/requires an empty TMC2130_MINIMUM_DELAY");
|
||||||
|
#define STEP_NC_HI(axis) TOGGLE(_STEP_PIN_##axis)
|
||||||
|
#define STEP_NC_LO(axis) //NOP
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define _STEP_HI_X_AXIS !INVERT_X_STEP_PIN
|
||||||
|
#define _STEP_LO_X_AXIS INVERT_X_STEP_PIN
|
||||||
|
#define _STEP_HI_Y_AXIS !INVERT_Y_STEP_PIN
|
||||||
|
#define _STEP_LO_Y_AXIS INVERT_Y_STEP_PIN
|
||||||
|
#define _STEP_HI_Z_AXIS !INVERT_Z_STEP_PIN
|
||||||
|
#define _STEP_LO_Z_AXIS INVERT_Z_STEP_PIN
|
||||||
|
#define _STEP_HI_E_AXIS !INVERT_E_STEP_PIN
|
||||||
|
#define _STEP_LO_E_AXIS INVERT_E_STEP_PIN
|
||||||
|
|
||||||
|
#define STEP_NC_HI(axis) WRITE_NC(_STEP_PIN_##axis, _STEP_HI_##axis)
|
||||||
|
#define STEP_NC_LO(axis) WRITE_NC(_STEP_PIN_##axis, _STEP_LO_##axis)
|
||||||
|
|
||||||
|
#endif //TMC2130_DEDGE_STEPPING
|
||||||
|
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//=============================public variables ============================
|
//=============================public variables ============================
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|
@ -71,8 +127,7 @@ static dda_isteps_t
|
||||||
counter_z,
|
counter_z,
|
||||||
counter_e;
|
counter_e;
|
||||||
volatile dda_usteps_t step_events_completed; // The number of step events executed in the current block
|
volatile dda_usteps_t step_events_completed; // The number of step events executed in the current block
|
||||||
static int32_t acceleration_time, deceleration_time;
|
static uint32_t acceleration_time, deceleration_time;
|
||||||
//static unsigned long accelerate_until, decelerate_after, acceleration_rate, initial_rate, final_rate, nominal_rate;
|
|
||||||
static uint16_t acc_step_rate; // needed for deccelaration start point
|
static uint16_t acc_step_rate; // needed for deccelaration start point
|
||||||
static uint8_t step_loops;
|
static uint8_t step_loops;
|
||||||
static uint16_t OCR1A_nominal;
|
static uint16_t OCR1A_nominal;
|
||||||
|
|
@ -117,24 +172,23 @@ volatile signed char count_direction[NUM_AXIS] = { 1, 1, 1, 1};
|
||||||
void advance_isr();
|
void advance_isr();
|
||||||
|
|
||||||
static const uint16_t ADV_NEVER = 0xFFFF;
|
static const uint16_t ADV_NEVER = 0xFFFF;
|
||||||
static const uint8_t ADV_INIT = 0b01;
|
static const uint8_t ADV_INIT = 0b01; // initialize LA
|
||||||
static const uint8_t ADV_DECELERATE = 0b10;
|
static const uint8_t ADV_ACC_VARY = 0b10; // varying acceleration phase
|
||||||
|
|
||||||
static uint16_t nextMainISR;
|
static uint16_t nextMainISR;
|
||||||
static uint16_t nextAdvanceISR;
|
static uint16_t nextAdvanceISR;
|
||||||
|
|
||||||
static uint16_t main_Rate;
|
static uint16_t main_Rate;
|
||||||
static uint16_t eISR_Rate;
|
static uint16_t eISR_Rate;
|
||||||
static uint16_t eISR_Err;
|
static uint32_t eISR_Err;
|
||||||
|
|
||||||
static uint16_t current_adv_steps;
|
static uint16_t current_adv_steps;
|
||||||
static uint16_t final_adv_steps;
|
static uint16_t target_adv_steps;
|
||||||
static uint16_t max_adv_steps;
|
|
||||||
static uint32_t LA_decelerate_after;
|
|
||||||
|
|
||||||
static int8_t e_steps;
|
static int8_t e_steps; // scheduled e-steps during each isr loop
|
||||||
static uint8_t e_step_loops;
|
static uint8_t e_step_loops; // e-steps to execute at most in each isr loop
|
||||||
static int8_t LA_phase;
|
static uint8_t e_extruding; // current move is an extrusion move
|
||||||
|
static int8_t LA_phase; // LA compensation phase
|
||||||
|
|
||||||
#define _NEXT_ISR(T) main_Rate = nextMainISR = T
|
#define _NEXT_ISR(T) main_Rate = nextMainISR = T
|
||||||
#else
|
#else
|
||||||
|
|
@ -235,7 +289,7 @@ void invert_z_endstop(bool endstop_invert)
|
||||||
// The trapezoid is the shape the speed curve over time. It starts at block->initial_rate, accelerates
|
// The trapezoid is the shape the speed curve over time. It starts at block->initial_rate, accelerates
|
||||||
// first block->accelerate_until step_events_completed, then keeps going at constant speed until
|
// first block->accelerate_until step_events_completed, then keeps going at constant speed until
|
||||||
// step_events_completed reaches block->decelerate_after after which it decelerates until the trapezoid generator is reset.
|
// step_events_completed reaches block->decelerate_after after which it decelerates until the trapezoid generator is reset.
|
||||||
// The slope of acceleration is calculated with the leib ramp alghorithm.
|
// The slope of acceleration is calculated using v = u + at where t is the accumulated timer values of the steps so far.
|
||||||
|
|
||||||
// "The Stepper Driver Interrupt" - This timer interrupt is the workhorse.
|
// "The Stepper Driver Interrupt" - This timer interrupt is the workhorse.
|
||||||
// It pops blocks from the block_buffer and executes them by pulsing the stepper pins appropriately.
|
// It pops blocks from the block_buffer and executes them by pulsing the stepper pins appropriately.
|
||||||
|
|
@ -298,13 +352,13 @@ FORCE_INLINE void stepper_next_block()
|
||||||
WRITE_NC(X_DIR_PIN, INVERT_X_DIR);
|
WRITE_NC(X_DIR_PIN, INVERT_X_DIR);
|
||||||
else
|
else
|
||||||
WRITE_NC(X_DIR_PIN, !INVERT_X_DIR);
|
WRITE_NC(X_DIR_PIN, !INVERT_X_DIR);
|
||||||
_delay_us(100);
|
delayMicroseconds(STEPPER_SET_DIR_DELAY);
|
||||||
for (uint8_t i = 0; i < st_backlash_x; i++)
|
for (uint8_t i = 0; i < st_backlash_x; i++)
|
||||||
{
|
{
|
||||||
WRITE_NC(X_STEP_PIN, !INVERT_X_STEP_PIN);
|
STEP_NC_HI(X_AXIS);
|
||||||
_delay_us(100);
|
STEPPER_MINIMUM_DELAY;
|
||||||
WRITE_NC(X_STEP_PIN, INVERT_X_STEP_PIN);
|
STEP_NC_LO(X_AXIS);
|
||||||
_delay_us(900);
|
_delay_us(900); // hard-coded jerk! *bad*
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
last_dir_bits &= ~1;
|
last_dir_bits &= ~1;
|
||||||
|
|
@ -321,13 +375,13 @@ FORCE_INLINE void stepper_next_block()
|
||||||
WRITE_NC(Y_DIR_PIN, INVERT_Y_DIR);
|
WRITE_NC(Y_DIR_PIN, INVERT_Y_DIR);
|
||||||
else
|
else
|
||||||
WRITE_NC(Y_DIR_PIN, !INVERT_Y_DIR);
|
WRITE_NC(Y_DIR_PIN, !INVERT_Y_DIR);
|
||||||
_delay_us(100);
|
delayMicroseconds(STEPPER_SET_DIR_DELAY);
|
||||||
for (uint8_t i = 0; i < st_backlash_y; i++)
|
for (uint8_t i = 0; i < st_backlash_y; i++)
|
||||||
{
|
{
|
||||||
WRITE_NC(Y_STEP_PIN, !INVERT_Y_STEP_PIN);
|
STEP_NC_HI(Y_AXIS);
|
||||||
_delay_us(100);
|
STEPPER_MINIMUM_DELAY;
|
||||||
WRITE_NC(Y_STEP_PIN, INVERT_Y_STEP_PIN);
|
STEP_NC_LO(Y_AXIS);
|
||||||
_delay_us(900);
|
_delay_us(900); // hard-coded jerk! *bad*
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
last_dir_bits &= ~2;
|
last_dir_bits &= ~2;
|
||||||
|
|
@ -349,15 +403,9 @@ FORCE_INLINE void stepper_next_block()
|
||||||
|
|
||||||
#ifdef LIN_ADVANCE
|
#ifdef LIN_ADVANCE
|
||||||
if (current_block->use_advance_lead) {
|
if (current_block->use_advance_lead) {
|
||||||
LA_decelerate_after = current_block->decelerate_after;
|
target_adv_steps = current_block->max_adv_steps;
|
||||||
final_adv_steps = current_block->final_adv_steps;
|
|
||||||
max_adv_steps = current_block->max_adv_steps;
|
|
||||||
e_step_loops = current_block->advance_step_loops;
|
|
||||||
} else {
|
|
||||||
e_steps = 0;
|
|
||||||
e_step_loops = 1;
|
|
||||||
current_adv_steps = 0;
|
|
||||||
}
|
}
|
||||||
|
e_steps = 0;
|
||||||
nextAdvanceISR = ADV_NEVER;
|
nextAdvanceISR = ADV_NEVER;
|
||||||
LA_phase = -1;
|
LA_phase = -1;
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -371,11 +419,17 @@ FORCE_INLINE void stepper_next_block()
|
||||||
counter_y.lo = counter_x.lo;
|
counter_y.lo = counter_x.lo;
|
||||||
counter_z.lo = counter_x.lo;
|
counter_z.lo = counter_x.lo;
|
||||||
counter_e.lo = counter_x.lo;
|
counter_e.lo = counter_x.lo;
|
||||||
|
#ifdef LIN_ADVANCE
|
||||||
|
e_extruding = current_block->steps_e.lo != 0;
|
||||||
|
#endif
|
||||||
} else {
|
} else {
|
||||||
counter_x.wide = -(current_block->step_event_count.wide >> 1);
|
counter_x.wide = -(current_block->step_event_count.wide >> 1);
|
||||||
counter_y.wide = counter_x.wide;
|
counter_y.wide = counter_x.wide;
|
||||||
counter_z.wide = counter_x.wide;
|
counter_z.wide = counter_x.wide;
|
||||||
counter_e.wide = counter_x.wide;
|
counter_e.wide = counter_x.wide;
|
||||||
|
#ifdef LIN_ADVANCE
|
||||||
|
e_extruding = current_block->steps_e.wide != 0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
step_events_completed.wide = 0;
|
step_events_completed.wide = 0;
|
||||||
// Set directions.
|
// Set directions.
|
||||||
|
|
@ -605,44 +659,44 @@ FORCE_INLINE void stepper_tick_lowres()
|
||||||
// Step in X axis
|
// Step in X axis
|
||||||
counter_x.lo += current_block->steps_x.lo;
|
counter_x.lo += current_block->steps_x.lo;
|
||||||
if (counter_x.lo > 0) {
|
if (counter_x.lo > 0) {
|
||||||
WRITE_NC(X_STEP_PIN, !INVERT_X_STEP_PIN);
|
STEP_NC_HI(X_AXIS);
|
||||||
#ifdef DEBUG_XSTEP_DUP_PIN
|
#ifdef DEBUG_XSTEP_DUP_PIN
|
||||||
WRITE_NC(DEBUG_XSTEP_DUP_PIN,!INVERT_X_STEP_PIN);
|
STEP_NC_HI(X_DUP_AXIS);
|
||||||
#endif //DEBUG_XSTEP_DUP_PIN
|
#endif //DEBUG_XSTEP_DUP_PIN
|
||||||
counter_x.lo -= current_block->step_event_count.lo;
|
counter_x.lo -= current_block->step_event_count.lo;
|
||||||
count_position[X_AXIS]+=count_direction[X_AXIS];
|
count_position[X_AXIS]+=count_direction[X_AXIS];
|
||||||
WRITE_NC(X_STEP_PIN, INVERT_X_STEP_PIN);
|
STEP_NC_LO(X_AXIS);
|
||||||
#ifdef DEBUG_XSTEP_DUP_PIN
|
#ifdef DEBUG_XSTEP_DUP_PIN
|
||||||
WRITE_NC(DEBUG_XSTEP_DUP_PIN,INVERT_X_STEP_PIN);
|
STEP_NC_LO(X_DUP_AXIS);
|
||||||
#endif //DEBUG_XSTEP_DUP_PIN
|
#endif //DEBUG_XSTEP_DUP_PIN
|
||||||
}
|
}
|
||||||
// Step in Y axis
|
// Step in Y axis
|
||||||
counter_y.lo += current_block->steps_y.lo;
|
counter_y.lo += current_block->steps_y.lo;
|
||||||
if (counter_y.lo > 0) {
|
if (counter_y.lo > 0) {
|
||||||
WRITE_NC(Y_STEP_PIN, !INVERT_Y_STEP_PIN);
|
STEP_NC_HI(Y_AXIS);
|
||||||
#ifdef DEBUG_YSTEP_DUP_PIN
|
#ifdef DEBUG_YSTEP_DUP_PIN
|
||||||
WRITE_NC(DEBUG_YSTEP_DUP_PIN,!INVERT_Y_STEP_PIN);
|
STEP_NC_HI(Y_DUP_AXIS);
|
||||||
#endif //DEBUG_YSTEP_DUP_PIN
|
#endif //DEBUG_YSTEP_DUP_PIN
|
||||||
counter_y.lo -= current_block->step_event_count.lo;
|
counter_y.lo -= current_block->step_event_count.lo;
|
||||||
count_position[Y_AXIS]+=count_direction[Y_AXIS];
|
count_position[Y_AXIS]+=count_direction[Y_AXIS];
|
||||||
WRITE_NC(Y_STEP_PIN, INVERT_Y_STEP_PIN);
|
STEP_NC_LO(Y_AXIS);
|
||||||
#ifdef DEBUG_YSTEP_DUP_PIN
|
#ifdef DEBUG_YSTEP_DUP_PIN
|
||||||
WRITE_NC(DEBUG_YSTEP_DUP_PIN,INVERT_Y_STEP_PIN);
|
STEP_NC_LO(Y_DUP_AXIS);
|
||||||
#endif //DEBUG_YSTEP_DUP_PIN
|
#endif //DEBUG_YSTEP_DUP_PIN
|
||||||
}
|
}
|
||||||
// Step in Z axis
|
// Step in Z axis
|
||||||
counter_z.lo += current_block->steps_z.lo;
|
counter_z.lo += current_block->steps_z.lo;
|
||||||
if (counter_z.lo > 0) {
|
if (counter_z.lo > 0) {
|
||||||
WRITE_NC(Z_STEP_PIN, !INVERT_Z_STEP_PIN);
|
STEP_NC_HI(Z_AXIS);
|
||||||
counter_z.lo -= current_block->step_event_count.lo;
|
counter_z.lo -= current_block->step_event_count.lo;
|
||||||
count_position[Z_AXIS]+=count_direction[Z_AXIS];
|
count_position[Z_AXIS]+=count_direction[Z_AXIS];
|
||||||
WRITE_NC(Z_STEP_PIN, INVERT_Z_STEP_PIN);
|
STEP_NC_LO(Z_AXIS);
|
||||||
}
|
}
|
||||||
// Step in E axis
|
// Step in E axis
|
||||||
counter_e.lo += current_block->steps_e.lo;
|
counter_e.lo += current_block->steps_e.lo;
|
||||||
if (counter_e.lo > 0) {
|
if (counter_e.lo > 0) {
|
||||||
#ifndef LIN_ADVANCE
|
#ifndef LIN_ADVANCE
|
||||||
WRITE(E0_STEP_PIN, !INVERT_E_STEP_PIN);
|
STEP_NC_HI(E_AXIS);
|
||||||
#endif /* LIN_ADVANCE */
|
#endif /* LIN_ADVANCE */
|
||||||
counter_e.lo -= current_block->step_event_count.lo;
|
counter_e.lo -= current_block->step_event_count.lo;
|
||||||
count_position[E_AXIS] += count_direction[E_AXIS];
|
count_position[E_AXIS] += count_direction[E_AXIS];
|
||||||
|
|
@ -652,7 +706,7 @@ FORCE_INLINE void stepper_tick_lowres()
|
||||||
#ifdef FILAMENT_SENSOR
|
#ifdef FILAMENT_SENSOR
|
||||||
fsensor_counter += count_direction[E_AXIS];
|
fsensor_counter += count_direction[E_AXIS];
|
||||||
#endif //FILAMENT_SENSOR
|
#endif //FILAMENT_SENSOR
|
||||||
WRITE(E0_STEP_PIN, INVERT_E_STEP_PIN);
|
STEP_NC_LO(E_AXIS);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
if(++ step_events_completed.lo >= current_block->step_event_count.lo)
|
if(++ step_events_completed.lo >= current_block->step_event_count.lo)
|
||||||
|
|
@ -667,44 +721,44 @@ FORCE_INLINE void stepper_tick_highres()
|
||||||
// Step in X axis
|
// Step in X axis
|
||||||
counter_x.wide += current_block->steps_x.wide;
|
counter_x.wide += current_block->steps_x.wide;
|
||||||
if (counter_x.wide > 0) {
|
if (counter_x.wide > 0) {
|
||||||
WRITE_NC(X_STEP_PIN, !INVERT_X_STEP_PIN);
|
STEP_NC_HI(X_AXIS);
|
||||||
#ifdef DEBUG_XSTEP_DUP_PIN
|
#ifdef DEBUG_XSTEP_DUP_PIN
|
||||||
WRITE_NC(DEBUG_XSTEP_DUP_PIN,!INVERT_X_STEP_PIN);
|
STEP_NC_HI(X_DUP_AXIS);
|
||||||
#endif //DEBUG_XSTEP_DUP_PIN
|
#endif //DEBUG_XSTEP_DUP_PIN
|
||||||
counter_x.wide -= current_block->step_event_count.wide;
|
counter_x.wide -= current_block->step_event_count.wide;
|
||||||
count_position[X_AXIS]+=count_direction[X_AXIS];
|
count_position[X_AXIS]+=count_direction[X_AXIS];
|
||||||
WRITE_NC(X_STEP_PIN, INVERT_X_STEP_PIN);
|
STEP_NC_LO(X_AXIS);
|
||||||
#ifdef DEBUG_XSTEP_DUP_PIN
|
#ifdef DEBUG_XSTEP_DUP_PIN
|
||||||
WRITE_NC(DEBUG_XSTEP_DUP_PIN,INVERT_X_STEP_PIN);
|
STEP_NC_LO(X_DUP_AXIS);
|
||||||
#endif //DEBUG_XSTEP_DUP_PIN
|
#endif //DEBUG_XSTEP_DUP_PIN
|
||||||
}
|
}
|
||||||
// Step in Y axis
|
// Step in Y axis
|
||||||
counter_y.wide += current_block->steps_y.wide;
|
counter_y.wide += current_block->steps_y.wide;
|
||||||
if (counter_y.wide > 0) {
|
if (counter_y.wide > 0) {
|
||||||
WRITE_NC(Y_STEP_PIN, !INVERT_Y_STEP_PIN);
|
STEP_NC_HI(Y_AXIS);
|
||||||
#ifdef DEBUG_YSTEP_DUP_PIN
|
#ifdef DEBUG_YSTEP_DUP_PIN
|
||||||
WRITE_NC(DEBUG_YSTEP_DUP_PIN,!INVERT_Y_STEP_PIN);
|
STEP_NC_HI(Y_DUP_AXIS);
|
||||||
#endif //DEBUG_YSTEP_DUP_PIN
|
#endif //DEBUG_YSTEP_DUP_PIN
|
||||||
counter_y.wide -= current_block->step_event_count.wide;
|
counter_y.wide -= current_block->step_event_count.wide;
|
||||||
count_position[Y_AXIS]+=count_direction[Y_AXIS];
|
count_position[Y_AXIS]+=count_direction[Y_AXIS];
|
||||||
WRITE_NC(Y_STEP_PIN, INVERT_Y_STEP_PIN);
|
STEP_NC_LO(Y_AXIS);
|
||||||
#ifdef DEBUG_YSTEP_DUP_PIN
|
#ifdef DEBUG_YSTEP_DUP_PIN
|
||||||
WRITE_NC(DEBUG_YSTEP_DUP_PIN,INVERT_Y_STEP_PIN);
|
STEP_NC_LO(Y_DUP_AXIS);
|
||||||
#endif //DEBUG_YSTEP_DUP_PIN
|
#endif //DEBUG_YSTEP_DUP_PIN
|
||||||
}
|
}
|
||||||
// Step in Z axis
|
// Step in Z axis
|
||||||
counter_z.wide += current_block->steps_z.wide;
|
counter_z.wide += current_block->steps_z.wide;
|
||||||
if (counter_z.wide > 0) {
|
if (counter_z.wide > 0) {
|
||||||
WRITE_NC(Z_STEP_PIN, !INVERT_Z_STEP_PIN);
|
STEP_NC_HI(Z_AXIS);
|
||||||
counter_z.wide -= current_block->step_event_count.wide;
|
counter_z.wide -= current_block->step_event_count.wide;
|
||||||
count_position[Z_AXIS]+=count_direction[Z_AXIS];
|
count_position[Z_AXIS]+=count_direction[Z_AXIS];
|
||||||
WRITE_NC(Z_STEP_PIN, INVERT_Z_STEP_PIN);
|
STEP_NC_LO(Z_AXIS);
|
||||||
}
|
}
|
||||||
// Step in E axis
|
// Step in E axis
|
||||||
counter_e.wide += current_block->steps_e.wide;
|
counter_e.wide += current_block->steps_e.wide;
|
||||||
if (counter_e.wide > 0) {
|
if (counter_e.wide > 0) {
|
||||||
#ifndef LIN_ADVANCE
|
#ifndef LIN_ADVANCE
|
||||||
WRITE(E0_STEP_PIN, !INVERT_E_STEP_PIN);
|
STEP_NC_HI(E_AXIS);
|
||||||
#endif /* LIN_ADVANCE */
|
#endif /* LIN_ADVANCE */
|
||||||
counter_e.wide -= current_block->step_event_count.wide;
|
counter_e.wide -= current_block->step_event_count.wide;
|
||||||
count_position[E_AXIS]+=count_direction[E_AXIS];
|
count_position[E_AXIS]+=count_direction[E_AXIS];
|
||||||
|
|
@ -714,7 +768,7 @@ FORCE_INLINE void stepper_tick_highres()
|
||||||
#ifdef FILAMENT_SENSOR
|
#ifdef FILAMENT_SENSOR
|
||||||
fsensor_counter += count_direction[E_AXIS];
|
fsensor_counter += count_direction[E_AXIS];
|
||||||
#endif //FILAMENT_SENSOR
|
#endif //FILAMENT_SENSOR
|
||||||
WRITE(E0_STEP_PIN, INVERT_E_STEP_PIN);
|
STEP_NC_LO(E_AXIS);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
if(++ step_events_completed.wide >= current_block->step_event_count.wide)
|
if(++ step_events_completed.wide >= current_block->step_event_count.wide)
|
||||||
|
|
@ -734,38 +788,30 @@ FORCE_INLINE uint16_t fastdiv(uint16_t q, uint8_t d)
|
||||||
|
|
||||||
FORCE_INLINE void advance_spread(uint16_t timer)
|
FORCE_INLINE void advance_spread(uint16_t timer)
|
||||||
{
|
{
|
||||||
if(eISR_Err > timer)
|
eISR_Err += timer;
|
||||||
|
|
||||||
|
uint8_t ticks = 0;
|
||||||
|
while(eISR_Err >= current_block->advance_rate)
|
||||||
|
{
|
||||||
|
++ticks;
|
||||||
|
eISR_Err -= current_block->advance_rate;
|
||||||
|
}
|
||||||
|
if(!ticks)
|
||||||
{
|
{
|
||||||
// advance-step skipped
|
|
||||||
eISR_Err -= timer;
|
|
||||||
eISR_Rate = timer;
|
eISR_Rate = timer;
|
||||||
nextAdvanceISR = timer;
|
nextAdvanceISR = timer;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// at least one step
|
if (ticks <= 3)
|
||||||
uint8_t ticks = 1;
|
eISR_Rate = fastdiv(timer, ticks + 1);
|
||||||
uint32_t block = current_block->advance_rate;
|
|
||||||
uint16_t max_t = timer - eISR_Err;
|
|
||||||
while (block < max_t)
|
|
||||||
{
|
|
||||||
++ticks;
|
|
||||||
block += current_block->advance_rate;
|
|
||||||
}
|
|
||||||
if (block > timer)
|
|
||||||
eISR_Err += block - timer;
|
|
||||||
else
|
|
||||||
eISR_Err -= timer - block;
|
|
||||||
|
|
||||||
if (ticks <= 4)
|
|
||||||
eISR_Rate = fastdiv(timer, ticks);
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// >4 ticks are still possible on slow moves
|
// >4 ticks are still possible on slow moves
|
||||||
eISR_Rate = timer / ticks;
|
eISR_Rate = timer / (ticks + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
nextAdvanceISR = eISR_Rate / 2;
|
nextAdvanceISR = eISR_Rate;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -797,7 +843,7 @@ FORCE_INLINE void isr() {
|
||||||
// 25.12us for acceleration / deceleration.
|
// 25.12us for acceleration / deceleration.
|
||||||
{
|
{
|
||||||
//WRITE_NC(LOGIC_ANALYZER_CH1, true);
|
//WRITE_NC(LOGIC_ANALYZER_CH1, true);
|
||||||
if (step_events_completed.wide <= (unsigned long int)current_block->accelerate_until) {
|
if (step_events_completed.wide <= current_block->accelerate_until) {
|
||||||
// v = t * a -> acc_step_rate = acceleration_time * current_block->acceleration_rate
|
// v = t * a -> acc_step_rate = acceleration_time * current_block->acceleration_rate
|
||||||
MultiU24X24toH16(acc_step_rate, acceleration_time, current_block->acceleration_rate);
|
MultiU24X24toH16(acc_step_rate, acceleration_time, current_block->acceleration_rate);
|
||||||
acc_step_rate += uint16_t(current_block->initial_rate);
|
acc_step_rate += uint16_t(current_block->initial_rate);
|
||||||
|
|
@ -810,28 +856,42 @@ FORCE_INLINE void isr() {
|
||||||
acceleration_time += timer;
|
acceleration_time += timer;
|
||||||
#ifdef LIN_ADVANCE
|
#ifdef LIN_ADVANCE
|
||||||
if (current_block->use_advance_lead) {
|
if (current_block->use_advance_lead) {
|
||||||
if (step_events_completed.wide <= (unsigned long int)step_loops)
|
if (step_events_completed.wide <= (unsigned long int)step_loops) {
|
||||||
la_state = ADV_INIT;
|
la_state = ADV_INIT | ADV_ACC_VARY;
|
||||||
|
if (e_extruding && current_adv_steps > target_adv_steps)
|
||||||
|
target_adv_steps = current_adv_steps;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else if (step_events_completed.wide > (unsigned long int)current_block->decelerate_after) {
|
else if (step_events_completed.wide > current_block->decelerate_after) {
|
||||||
uint16_t step_rate;
|
uint16_t step_rate;
|
||||||
MultiU24X24toH16(step_rate, deceleration_time, current_block->acceleration_rate);
|
MultiU24X24toH16(step_rate, deceleration_time, current_block->acceleration_rate);
|
||||||
step_rate = acc_step_rate - step_rate; // Decelerate from aceleration end point.
|
|
||||||
if ((step_rate & 0x8000) || step_rate < uint16_t(current_block->final_rate)) {
|
if (step_rate > acc_step_rate) { // Check step_rate stays positive
|
||||||
// Result is negative or too small.
|
step_rate = uint16_t(current_block->final_rate);
|
||||||
step_rate = uint16_t(current_block->final_rate);
|
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
step_rate = acc_step_rate - step_rate; // Decelerate from acceleration end point.
|
||||||
|
|
||||||
|
// lower limit
|
||||||
|
if (step_rate < current_block->final_rate)
|
||||||
|
step_rate = uint16_t(current_block->final_rate);
|
||||||
|
}
|
||||||
|
|
||||||
// Step_rate to timer interval.
|
// Step_rate to timer interval.
|
||||||
uint16_t timer = calc_timer(step_rate, step_loops);
|
uint16_t timer = calc_timer(step_rate, step_loops);
|
||||||
_NEXT_ISR(timer);
|
_NEXT_ISR(timer);
|
||||||
deceleration_time += timer;
|
deceleration_time += timer;
|
||||||
|
|
||||||
#ifdef LIN_ADVANCE
|
#ifdef LIN_ADVANCE
|
||||||
if (current_block->use_advance_lead) {
|
if (current_block->use_advance_lead) {
|
||||||
la_state = ADV_DECELERATE;
|
if (step_events_completed.wide <= current_block->decelerate_after + step_loops) {
|
||||||
if (step_events_completed.wide <= (unsigned long int)current_block->decelerate_after + step_loops)
|
target_adv_steps = current_block->final_adv_steps;
|
||||||
la_state |= ADV_INIT;
|
la_state = ADV_INIT | ADV_ACC_VARY;
|
||||||
|
if (e_extruding && current_adv_steps < target_adv_steps)
|
||||||
|
target_adv_steps = current_adv_steps;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
@ -841,6 +901,17 @@ FORCE_INLINE void isr() {
|
||||||
// the initial interrupt blocking.
|
// the initial interrupt blocking.
|
||||||
OCR1A_nominal = calc_timer(uint16_t(current_block->nominal_rate), step_loops);
|
OCR1A_nominal = calc_timer(uint16_t(current_block->nominal_rate), step_loops);
|
||||||
step_loops_nominal = step_loops;
|
step_loops_nominal = step_loops;
|
||||||
|
|
||||||
|
#ifdef LIN_ADVANCE
|
||||||
|
if(current_block->use_advance_lead) {
|
||||||
|
// Due to E-jerk, there can be discontinuities in pressure state where an
|
||||||
|
// acceleration or deceleration can be skipped or joined with the previous block.
|
||||||
|
// If LA was not previously active, re-check the pressure level
|
||||||
|
la_state = ADV_INIT;
|
||||||
|
if (e_extruding)
|
||||||
|
target_adv_steps = current_adv_steps;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
_NEXT_ISR(OCR1A_nominal);
|
_NEXT_ISR(OCR1A_nominal);
|
||||||
}
|
}
|
||||||
|
|
@ -849,16 +920,38 @@ FORCE_INLINE void isr() {
|
||||||
|
|
||||||
#ifdef LIN_ADVANCE
|
#ifdef LIN_ADVANCE
|
||||||
// avoid multiple instances or function calls to advance_spread
|
// avoid multiple instances or function calls to advance_spread
|
||||||
if (la_state & ADV_INIT) eISR_Err = current_block->advance_rate / 4;
|
if (la_state & ADV_INIT) {
|
||||||
|
LA_phase = -1;
|
||||||
|
|
||||||
|
if (current_adv_steps == target_adv_steps) {
|
||||||
|
// nothing to be done in this phase, cancel any pending eisr
|
||||||
|
la_state = 0;
|
||||||
|
nextAdvanceISR = ADV_NEVER;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// reset error and iterations per loop for this phase
|
||||||
|
eISR_Err = current_block->advance_rate;
|
||||||
|
e_step_loops = current_block->advance_step_loops;
|
||||||
|
|
||||||
|
if ((la_state & ADV_ACC_VARY) && e_extruding && (current_adv_steps > target_adv_steps)) {
|
||||||
|
// LA could reverse the direction of extrusion in this phase
|
||||||
|
eISR_Err += current_block->advance_rate;
|
||||||
|
LA_phase = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if (la_state & ADV_INIT || nextAdvanceISR != ADV_NEVER) {
|
if (la_state & ADV_INIT || nextAdvanceISR != ADV_NEVER) {
|
||||||
|
// update timers & phase for the next iteration
|
||||||
advance_spread(main_Rate);
|
advance_spread(main_Rate);
|
||||||
if (la_state & ADV_DECELERATE) {
|
if (LA_phase >= 0) {
|
||||||
if (step_loops == e_step_loops)
|
if (step_loops == e_step_loops)
|
||||||
LA_phase = (eISR_Rate > main_Rate);
|
LA_phase = (current_block->advance_rate < main_Rate);
|
||||||
else {
|
else {
|
||||||
// avoid overflow through division. warning: we need to _guarantee_ step_loops
|
// avoid overflow through division. warning: we need to _guarantee_ step_loops
|
||||||
// and e_step_loops are <= 4 due to fastdiv's limit
|
// and e_step_loops are <= 4 due to fastdiv's limit
|
||||||
LA_phase = (fastdiv(eISR_Rate, step_loops) > fastdiv(main_Rate, e_step_loops));
|
auto adv_rate_n = fastdiv(current_block->advance_rate, step_loops);
|
||||||
|
auto main_rate_n = fastdiv(main_Rate, e_step_loops);
|
||||||
|
LA_phase = (adv_rate_n < main_rate_n);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -898,28 +991,36 @@ FORCE_INLINE void isr() {
|
||||||
// Timer interrupt for E. e_steps is set in the main routine.
|
// Timer interrupt for E. e_steps is set in the main routine.
|
||||||
|
|
||||||
FORCE_INLINE void advance_isr() {
|
FORCE_INLINE void advance_isr() {
|
||||||
if (step_events_completed.wide > LA_decelerate_after && current_adv_steps > final_adv_steps) {
|
if (current_adv_steps > target_adv_steps) {
|
||||||
// decompression
|
// decompression
|
||||||
|
if (e_step_loops != 1) {
|
||||||
|
uint16_t d_steps = current_adv_steps - target_adv_steps;
|
||||||
|
if (d_steps < e_step_loops)
|
||||||
|
e_step_loops = d_steps;
|
||||||
|
}
|
||||||
e_steps -= e_step_loops;
|
e_steps -= e_step_loops;
|
||||||
if (e_steps) WRITE_NC(E0_DIR_PIN, e_steps < 0? INVERT_E0_DIR: !INVERT_E0_DIR);
|
if (e_steps) WRITE_NC(E0_DIR_PIN, e_steps < 0? INVERT_E0_DIR: !INVERT_E0_DIR);
|
||||||
if(current_adv_steps > e_step_loops)
|
current_adv_steps -= e_step_loops;
|
||||||
current_adv_steps -= e_step_loops;
|
|
||||||
else
|
|
||||||
current_adv_steps = 0;
|
|
||||||
nextAdvanceISR = eISR_Rate;
|
|
||||||
}
|
}
|
||||||
else if (step_events_completed.wide < LA_decelerate_after && current_adv_steps < max_adv_steps) {
|
else if (current_adv_steps < target_adv_steps) {
|
||||||
// compression
|
// compression
|
||||||
|
if (e_step_loops != 1) {
|
||||||
|
uint16_t d_steps = target_adv_steps - current_adv_steps;
|
||||||
|
if (d_steps < e_step_loops)
|
||||||
|
e_step_loops = d_steps;
|
||||||
|
}
|
||||||
e_steps += e_step_loops;
|
e_steps += e_step_loops;
|
||||||
if (e_steps) WRITE_NC(E0_DIR_PIN, e_steps < 0? INVERT_E0_DIR: !INVERT_E0_DIR);
|
if (e_steps) WRITE_NC(E0_DIR_PIN, e_steps < 0? INVERT_E0_DIR: !INVERT_E0_DIR);
|
||||||
current_adv_steps += e_step_loops;
|
current_adv_steps += e_step_loops;
|
||||||
nextAdvanceISR = eISR_Rate;
|
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
|
if (current_adv_steps == target_adv_steps) {
|
||||||
// advance steps completed
|
// advance steps completed
|
||||||
nextAdvanceISR = ADV_NEVER;
|
nextAdvanceISR = ADV_NEVER;
|
||||||
LA_phase = -1;
|
}
|
||||||
e_step_loops = 1;
|
else {
|
||||||
|
// schedule another tick
|
||||||
|
nextAdvanceISR = eISR_Rate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -969,9 +1070,9 @@ FORCE_INLINE void advance_isr_scheduler() {
|
||||||
bool rev = (e_steps < 0);
|
bool rev = (e_steps < 0);
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
WRITE_NC(E0_STEP_PIN, !INVERT_E_STEP_PIN);
|
STEP_NC_HI(E_AXIS);
|
||||||
e_steps += (rev? 1: -1);
|
e_steps += (rev? 1: -1);
|
||||||
WRITE_NC(E0_STEP_PIN, INVERT_E_STEP_PIN);
|
STEP_NC_LO(E_AXIS);
|
||||||
#if defined(FILAMENT_SENSOR) && defined(PAT9125)
|
#if defined(FILAMENT_SENSOR) && defined(PAT9125)
|
||||||
fsensor_counter += (rev? -1: 1);
|
fsensor_counter += (rev? -1: 1);
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -989,7 +1090,7 @@ FORCE_INLINE void advance_isr_scheduler() {
|
||||||
|
|
||||||
// Schedule the next closest tick, ignoring advance if scheduled too
|
// Schedule the next closest tick, ignoring advance if scheduled too
|
||||||
// soon in order to avoid skewing the regular stepper acceleration
|
// soon in order to avoid skewing the regular stepper acceleration
|
||||||
if (nextAdvanceISR != ADV_NEVER && (nextAdvanceISR + TCNT1 + 40) < nextMainISR)
|
if (nextAdvanceISR != ADV_NEVER && (nextAdvanceISR + 40) < nextMainISR)
|
||||||
OCR1A = nextAdvanceISR;
|
OCR1A = nextAdvanceISR;
|
||||||
else
|
else
|
||||||
OCR1A = nextMainISR;
|
OCR1A = nextMainISR;
|
||||||
|
|
@ -1233,9 +1334,6 @@ void st_init()
|
||||||
nextMainISR = 0;
|
nextMainISR = 0;
|
||||||
nextAdvanceISR = ADV_NEVER;
|
nextAdvanceISR = ADV_NEVER;
|
||||||
main_Rate = ADV_NEVER;
|
main_Rate = ADV_NEVER;
|
||||||
e_steps = 0;
|
|
||||||
e_step_loops = 1;
|
|
||||||
LA_phase = -1;
|
|
||||||
current_adv_steps = 0;
|
current_adv_steps = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -1331,17 +1429,6 @@ float st_get_position_mm(uint8_t axis)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void finishAndDisableSteppers()
|
|
||||||
{
|
|
||||||
st_synchronize();
|
|
||||||
disable_x();
|
|
||||||
disable_y();
|
|
||||||
disable_z();
|
|
||||||
disable_e0();
|
|
||||||
disable_e1();
|
|
||||||
disable_e2();
|
|
||||||
}
|
|
||||||
|
|
||||||
void quickStop()
|
void quickStop()
|
||||||
{
|
{
|
||||||
DISABLE_STEPPER_DRIVER_INTERRUPT();
|
DISABLE_STEPPER_DRIVER_INTERRUPT();
|
||||||
|
|
@ -1358,89 +1445,106 @@ void quickStop()
|
||||||
#ifdef BABYSTEPPING
|
#ifdef BABYSTEPPING
|
||||||
void babystep(const uint8_t axis,const bool direction)
|
void babystep(const uint8_t axis,const bool direction)
|
||||||
{
|
{
|
||||||
//MUST ONLY BE CALLED BY A ISR, it depends on that no other ISR interrupts this
|
// MUST ONLY BE CALLED BY A ISR as stepper pins are manipulated directly.
|
||||||
//store initial pin states
|
// note: when switching direction no delay is inserted at the end when the
|
||||||
switch(axis)
|
// original is restored. We assume enough time passes as the function
|
||||||
{
|
// returns and the stepper is manipulated again (to avoid dead times)
|
||||||
case X_AXIS:
|
switch(axis)
|
||||||
{
|
{
|
||||||
enable_x();
|
case X_AXIS:
|
||||||
uint8_t old_x_dir_pin= READ(X_DIR_PIN); //if dualzstepper, both point to same direction.
|
{
|
||||||
|
enable_x();
|
||||||
|
uint8_t old_x_dir_pin = READ(X_DIR_PIN); //if dualzstepper, both point to same direction.
|
||||||
|
uint8_t new_x_dir_pin = (INVERT_X_DIR)^direction;
|
||||||
|
|
||||||
//setup new step
|
//setup new step
|
||||||
WRITE(X_DIR_PIN,(INVERT_X_DIR)^direction);
|
if (new_x_dir_pin != old_x_dir_pin) {
|
||||||
|
WRITE_NC(X_DIR_PIN, new_x_dir_pin);
|
||||||
|
delayMicroseconds(STEPPER_SET_DIR_DELAY);
|
||||||
|
}
|
||||||
|
|
||||||
//perform step
|
//perform step
|
||||||
WRITE(X_STEP_PIN, !INVERT_X_STEP_PIN);
|
STEP_NC_HI(X_AXIS);
|
||||||
#ifdef DEBUG_XSTEP_DUP_PIN
|
#ifdef DEBUG_XSTEP_DUP_PIN
|
||||||
WRITE(DEBUG_XSTEP_DUP_PIN,!INVERT_X_STEP_PIN);
|
STEP_NC_HI(X_DUP_AXIS);
|
||||||
#endif //DEBUG_XSTEP_DUP_PIN
|
#endif
|
||||||
delayMicroseconds(1);
|
STEPPER_MINIMUM_DELAY;
|
||||||
WRITE(X_STEP_PIN, INVERT_X_STEP_PIN);
|
STEP_NC_LO(X_AXIS);
|
||||||
#ifdef DEBUG_XSTEP_DUP_PIN
|
#ifdef DEBUG_XSTEP_DUP_PIN
|
||||||
WRITE(DEBUG_XSTEP_DUP_PIN,INVERT_X_STEP_PIN);
|
STEP_NC_LO(X_DUP_AXIS);
|
||||||
#endif //DEBUG_XSTEP_DUP_PIN
|
#endif
|
||||||
|
|
||||||
//get old pin state back.
|
//get old pin state back.
|
||||||
WRITE(X_DIR_PIN,old_x_dir_pin);
|
WRITE_NC(X_DIR_PIN, old_x_dir_pin);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Y_AXIS:
|
|
||||||
{
|
|
||||||
enable_y();
|
|
||||||
uint8_t old_y_dir_pin= READ(Y_DIR_PIN); //if dualzstepper, both point to same direction.
|
|
||||||
|
|
||||||
//setup new step
|
case Y_AXIS:
|
||||||
WRITE(Y_DIR_PIN,(INVERT_Y_DIR)^direction);
|
{
|
||||||
|
enable_y();
|
||||||
|
uint8_t old_y_dir_pin = READ(Y_DIR_PIN); //if dualzstepper, both point to same direction.
|
||||||
|
uint8_t new_y_dir_pin = (INVERT_Y_DIR)^direction;
|
||||||
|
|
||||||
//perform step
|
//setup new step
|
||||||
WRITE(Y_STEP_PIN, !INVERT_Y_STEP_PIN);
|
if (new_y_dir_pin != old_y_dir_pin) {
|
||||||
|
WRITE_NC(Y_DIR_PIN, new_y_dir_pin);
|
||||||
|
delayMicroseconds(STEPPER_SET_DIR_DELAY);
|
||||||
|
}
|
||||||
|
|
||||||
|
//perform step
|
||||||
|
STEP_NC_HI(Y_AXIS);
|
||||||
#ifdef DEBUG_YSTEP_DUP_PIN
|
#ifdef DEBUG_YSTEP_DUP_PIN
|
||||||
WRITE(DEBUG_YSTEP_DUP_PIN,!INVERT_Y_STEP_PIN);
|
STEP_NC_HI(Y_DUP_AXIS);
|
||||||
#endif //DEBUG_YSTEP_DUP_PIN
|
#endif
|
||||||
delayMicroseconds(1);
|
STEPPER_MINIMUM_DELAY;
|
||||||
WRITE(Y_STEP_PIN, INVERT_Y_STEP_PIN);
|
STEP_NC_LO(Y_AXIS);
|
||||||
#ifdef DEBUG_YSTEP_DUP_PIN
|
#ifdef DEBUG_YSTEP_DUP_PIN
|
||||||
WRITE(DEBUG_YSTEP_DUP_PIN,INVERT_Y_STEP_PIN);
|
STEP_NC_LO(Y_DUP_AXIS);
|
||||||
#endif //DEBUG_YSTEP_DUP_PIN
|
#endif
|
||||||
|
|
||||||
//get old pin state back.
|
//get old pin state back.
|
||||||
WRITE(Y_DIR_PIN,old_y_dir_pin);
|
WRITE_NC(Y_DIR_PIN, old_y_dir_pin);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
}
|
case Z_AXIS:
|
||||||
break;
|
{
|
||||||
|
enable_z();
|
||||||
|
uint8_t old_z_dir_pin = READ(Z_DIR_PIN); //if dualzstepper, both point to same direction.
|
||||||
|
uint8_t new_z_dir_pin = (INVERT_Z_DIR)^direction^BABYSTEP_INVERT_Z;
|
||||||
|
|
||||||
case Z_AXIS:
|
//setup new step
|
||||||
{
|
if (new_z_dir_pin != old_z_dir_pin) {
|
||||||
enable_z();
|
WRITE_NC(Z_DIR_PIN, new_z_dir_pin);
|
||||||
uint8_t old_z_dir_pin= READ(Z_DIR_PIN); //if dualzstepper, both point to same direction.
|
#ifdef Z_DUAL_STEPPER_DRIVERS
|
||||||
//setup new step
|
WRITE_NC(Z2_DIR_PIN, new_z_dir_pin);
|
||||||
WRITE(Z_DIR_PIN,(INVERT_Z_DIR)^direction^BABYSTEP_INVERT_Z);
|
#endif
|
||||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
delayMicroseconds(STEPPER_SET_DIR_DELAY);
|
||||||
WRITE(Z2_DIR_PIN,(INVERT_Z_DIR)^direction^BABYSTEP_INVERT_Z);
|
}
|
||||||
#endif
|
|
||||||
//perform step
|
|
||||||
WRITE(Z_STEP_PIN, !INVERT_Z_STEP_PIN);
|
|
||||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
|
||||||
WRITE(Z2_STEP_PIN, !INVERT_Z_STEP_PIN);
|
|
||||||
#endif
|
|
||||||
delayMicroseconds(1);
|
|
||||||
WRITE(Z_STEP_PIN, INVERT_Z_STEP_PIN);
|
|
||||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
|
||||||
WRITE(Z2_STEP_PIN, INVERT_Z_STEP_PIN);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//get old pin state back.
|
//perform step
|
||||||
WRITE(Z_DIR_PIN,old_z_dir_pin);
|
STEP_NC_HI(Z_AXIS);
|
||||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
#ifdef Z_DUAL_STEPPER_DRIVERS
|
||||||
WRITE(Z2_DIR_PIN,old_z_dir_pin);
|
STEP_NC_HI(Z2_AXIS);
|
||||||
#endif
|
#endif
|
||||||
|
STEPPER_MINIMUM_DELAY;
|
||||||
|
STEP_NC_LO(Z_AXIS);
|
||||||
|
#ifdef Z_DUAL_STEPPER_DRIVERS
|
||||||
|
STEP_NC_LO(Z2_AXIS);
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
//get old pin state back.
|
||||||
break;
|
if (new_z_dir_pin != old_z_dir_pin) {
|
||||||
|
WRITE_NC(Z_DIR_PIN, old_z_dir_pin);
|
||||||
|
#ifdef Z_DUAL_STEPPER_DRIVERS
|
||||||
|
WRITE_NC(Z2_DIR_PIN, old_z_dir_pin);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif //BABYSTEPPING
|
#endif //BABYSTEPPING
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -69,8 +69,6 @@ void invert_z_endstop(bool endstop_invert);
|
||||||
|
|
||||||
void checkStepperErrors(); //Print errors detected by the stepper
|
void checkStepperErrors(); //Print errors detected by the stepper
|
||||||
|
|
||||||
void finishAndDisableSteppers();
|
|
||||||
|
|
||||||
extern block_t *current_block; // A pointer to the block currently being traced
|
extern block_t *current_block; // A pointer to the block currently being traced
|
||||||
extern bool x_min_endstop;
|
extern bool x_min_endstop;
|
||||||
extern bool x_max_endstop;
|
extern bool x_max_endstop;
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,12 @@
|
||||||
#include <avr/io.h>
|
#include <avr/io.h>
|
||||||
#include <util/delay.h>
|
#include <util/delay.h>
|
||||||
#include <avr/pgmspace.h>
|
#include <avr/pgmspace.h>
|
||||||
|
#include "stdbool.h"
|
||||||
#include "Configuration_prusa.h"
|
#include "Configuration_prusa.h"
|
||||||
#include "pins.h"
|
#include "pins.h"
|
||||||
#include "io_atmega2560.h"
|
#include "fastio.h"
|
||||||
|
|
||||||
|
#ifdef SWI2C_SCL
|
||||||
|
|
||||||
#define SWI2C_RMSK 0x01 //read mask (bit0 = 1)
|
#define SWI2C_RMSK 0x01 //read mask (bit0 = 1)
|
||||||
#define SWI2C_WMSK 0x00 //write mask (bit0 = 0)
|
#define SWI2C_WMSK 0x00 //write mask (bit0 = 0)
|
||||||
|
|
@ -21,75 +23,75 @@ void __delay(void)
|
||||||
|
|
||||||
void swi2c_init(void)
|
void swi2c_init(void)
|
||||||
{
|
{
|
||||||
PIN_OUT(SWI2C_SDA);
|
WRITE(SWI2C_SDA, 1);
|
||||||
PIN_OUT(SWI2C_SCL);
|
WRITE(SWI2C_SCL, 1);
|
||||||
PIN_SET(SWI2C_SDA);
|
SET_OUTPUT(SWI2C_SDA);
|
||||||
PIN_SET(SWI2C_SCL);
|
SET_OUTPUT(SWI2C_SCL);
|
||||||
uint8_t i; for (i = 0; i < 100; i++)
|
uint8_t i; for (i = 0; i < 100; i++)
|
||||||
__delay();
|
__delay();
|
||||||
}
|
}
|
||||||
|
|
||||||
void swi2c_start(void)
|
void swi2c_start(void)
|
||||||
{
|
{
|
||||||
PIN_CLR(SWI2C_SDA);
|
WRITE(SWI2C_SDA, 0);
|
||||||
__delay();
|
__delay();
|
||||||
PIN_CLR(SWI2C_SCL);
|
WRITE(SWI2C_SCL, 0);
|
||||||
__delay();
|
__delay();
|
||||||
}
|
}
|
||||||
|
|
||||||
void swi2c_stop(void)
|
void swi2c_stop(void)
|
||||||
{
|
{
|
||||||
PIN_SET(SWI2C_SCL);
|
WRITE(SWI2C_SCL, 1);
|
||||||
__delay();
|
__delay();
|
||||||
PIN_SET(SWI2C_SDA);
|
WRITE(SWI2C_SDA, 1);
|
||||||
__delay();
|
__delay();
|
||||||
}
|
}
|
||||||
|
|
||||||
void swi2c_ack(void)
|
void swi2c_ack(void)
|
||||||
{
|
{
|
||||||
PIN_CLR(SWI2C_SDA);
|
WRITE(SWI2C_SDA, 0);
|
||||||
__delay();
|
__delay();
|
||||||
PIN_SET(SWI2C_SCL);
|
WRITE(SWI2C_SCL, 1);
|
||||||
__delay();
|
__delay();
|
||||||
PIN_CLR(SWI2C_SCL);
|
WRITE(SWI2C_SCL, 0);
|
||||||
__delay();
|
__delay();
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t swi2c_wait_ack()
|
uint8_t swi2c_wait_ack()
|
||||||
{
|
{
|
||||||
PIN_INP(SWI2C_SDA);
|
SET_INPUT(SWI2C_SDA);
|
||||||
__delay();
|
__delay();
|
||||||
// PIN_SET(SWI2C_SDA);
|
// WRITE(SWI2C_SDA, 1);
|
||||||
__delay();
|
__delay();
|
||||||
PIN_SET(SWI2C_SCL);
|
WRITE(SWI2C_SCL, 1);
|
||||||
// __delay();
|
// __delay();
|
||||||
uint8_t ack = 0;
|
uint8_t ack = 0;
|
||||||
uint16_t ackto = SWI2C_TMO;
|
uint16_t ackto = SWI2C_TMO;
|
||||||
while (!(ack = (PIN_GET(SWI2C_SDA)?0:1)) && ackto--) __delay();
|
while (!(ack = (!READ(SWI2C_SDA))) && ackto--) __delay();
|
||||||
PIN_CLR(SWI2C_SCL);
|
WRITE(SWI2C_SCL, 0);
|
||||||
__delay();
|
__delay();
|
||||||
PIN_OUT(SWI2C_SDA);
|
SET_OUTPUT(SWI2C_SDA);
|
||||||
__delay();
|
__delay();
|
||||||
PIN_CLR(SWI2C_SDA);
|
WRITE(SWI2C_SDA, 0);
|
||||||
__delay();
|
__delay();
|
||||||
return ack;
|
return ack;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t swi2c_read(void)
|
uint8_t swi2c_read(void)
|
||||||
{
|
{
|
||||||
PIN_SET(SWI2C_SDA);
|
WRITE(SWI2C_SDA, 1);
|
||||||
__delay();
|
__delay();
|
||||||
PIN_INP(SWI2C_SDA);
|
SET_INPUT(SWI2C_SDA);
|
||||||
uint8_t data = 0;
|
uint8_t data = 0;
|
||||||
int8_t bit; for (bit = 7; bit >= 0; bit--)
|
int8_t bit; for (bit = 7; bit >= 0; bit--)
|
||||||
{
|
{
|
||||||
PIN_SET(SWI2C_SCL);
|
WRITE(SWI2C_SCL, 1);
|
||||||
__delay();
|
__delay();
|
||||||
data |= (PIN_GET(SWI2C_SDA)?1:0) << bit;
|
data |= (READ(SWI2C_SDA)) << bit;
|
||||||
PIN_CLR(SWI2C_SCL);
|
WRITE(SWI2C_SCL, 0);
|
||||||
__delay();
|
__delay();
|
||||||
}
|
}
|
||||||
PIN_OUT(SWI2C_SDA);
|
SET_OUTPUT(SWI2C_SDA);
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -97,12 +99,11 @@ void swi2c_write(uint8_t data)
|
||||||
{
|
{
|
||||||
int8_t bit; for (bit = 7; bit >= 0; bit--)
|
int8_t bit; for (bit = 7; bit >= 0; bit--)
|
||||||
{
|
{
|
||||||
if (data & (1 << bit)) PIN_SET(SWI2C_SDA);
|
WRITE(SWI2C_SDA, data & _BV(bit));
|
||||||
else PIN_CLR(SWI2C_SDA);
|
|
||||||
__delay();
|
__delay();
|
||||||
PIN_SET(SWI2C_SCL);
|
WRITE(SWI2C_SCL, 1);
|
||||||
__delay();
|
__delay();
|
||||||
PIN_CLR(SWI2C_SCL);
|
WRITE(SWI2C_SCL, 0);
|
||||||
__delay();
|
__delay();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -187,3 +188,5 @@ uint8_t swi2c_writeByte_A16(uint8_t dev_addr, unsigned short addr, uint8_t* pbyt
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif //SWI2C_A16
|
#endif //SWI2C_A16
|
||||||
|
|
||||||
|
#endif //SWI2C_SCL
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,12 @@
|
||||||
|
|
||||||
#ifdef SYSTEM_TIMER_2
|
#ifdef SYSTEM_TIMER_2
|
||||||
#include "timer02.h"
|
#include "timer02.h"
|
||||||
|
#include "tone04.h"
|
||||||
#define _millis millis2
|
#define _millis millis2
|
||||||
#define _micros micros2
|
#define _micros micros2
|
||||||
#define _delay delay2
|
#define _delay delay2
|
||||||
#define _tone tone
|
#define _tone tone4
|
||||||
#define _noTone noTone
|
#define _noTone noTone4
|
||||||
|
|
||||||
#define timer02_set_pwm0(pwm0)
|
#define timer02_set_pwm0(pwm0)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@
|
||||||
|
|
||||||
|
|
||||||
#include "Marlin.h"
|
#include "Marlin.h"
|
||||||
|
#include "cmdqueue.h"
|
||||||
#include "ultralcd.h"
|
#include "ultralcd.h"
|
||||||
#include "sound.h"
|
#include "sound.h"
|
||||||
#include "temperature.h"
|
#include "temperature.h"
|
||||||
|
|
@ -74,7 +75,7 @@ int current_voltage_raw_bed = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef IR_SENSOR_ANALOG
|
#ifdef IR_SENSOR_ANALOG
|
||||||
int current_voltage_raw_IR = 0;
|
uint16_t current_voltage_raw_IR = 0;
|
||||||
#endif //IR_SENSOR_ANALOG
|
#endif //IR_SENSOR_ANALOG
|
||||||
|
|
||||||
int current_temperature_bed_raw = 0;
|
int current_temperature_bed_raw = 0;
|
||||||
|
|
@ -143,13 +144,21 @@ static volatile bool temp_meas_ready = false;
|
||||||
#ifdef FAN_SOFT_PWM
|
#ifdef FAN_SOFT_PWM
|
||||||
static unsigned char soft_pwm_fan;
|
static unsigned char soft_pwm_fan;
|
||||||
#endif
|
#endif
|
||||||
#if (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1) || \
|
|
||||||
(defined(EXTRUDER_1_AUTO_FAN_PIN) && EXTRUDER_1_AUTO_FAN_PIN > -1) || \
|
|
||||||
(defined(EXTRUDER_2_AUTO_FAN_PIN) && EXTRUDER_2_AUTO_FAN_PIN > -1)
|
|
||||||
unsigned long extruder_autofan_last_check = _millis();
|
|
||||||
uint8_t fanSpeedBckp = 255;
|
|
||||||
bool fan_measuring = false;
|
|
||||||
|
|
||||||
|
uint8_t fanSpeedBckp = 255;
|
||||||
|
|
||||||
|
#if (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1)
|
||||||
|
unsigned long extruder_autofan_last_check = _millis();
|
||||||
|
|
||||||
|
bool fan_measuring = false;
|
||||||
|
uint8_t fanState = 0;
|
||||||
|
#ifdef EXTRUDER_ALTFAN_DETECT
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
uint8_t isAltfan : 1;
|
||||||
|
uint8_t altfanOverride : 1;
|
||||||
|
} altfanStatus;
|
||||||
|
#endif //EXTRUDER_ALTFAN_DETECT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -176,6 +185,12 @@ static int bed_minttemp_raw = HEATER_BED_RAW_LO_TEMP;
|
||||||
#ifdef BED_MAXTEMP
|
#ifdef BED_MAXTEMP
|
||||||
static int bed_maxttemp_raw = HEATER_BED_RAW_HI_TEMP;
|
static int bed_maxttemp_raw = HEATER_BED_RAW_HI_TEMP;
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef AMBIENT_MINTEMP
|
||||||
|
static int ambient_minttemp_raw = AMBIENT_RAW_LO_TEMP;
|
||||||
|
#endif
|
||||||
|
#ifdef AMBIENT_MAXTEMP
|
||||||
|
static int ambient_maxttemp_raw = AMBIENT_RAW_HI_TEMP;
|
||||||
|
#endif
|
||||||
|
|
||||||
static void *heater_ttbl_map[EXTRUDERS] = ARRAY_BY_EXTRUDERS( (void *)HEATER_0_TEMPTABLE, (void *)HEATER_1_TEMPTABLE, (void *)HEATER_2_TEMPTABLE );
|
static void *heater_ttbl_map[EXTRUDERS] = ARRAY_BY_EXTRUDERS( (void *)HEATER_0_TEMPTABLE, (void *)HEATER_1_TEMPTABLE, (void *)HEATER_2_TEMPTABLE );
|
||||||
static uint8_t heater_ttbllen_map[EXTRUDERS] = ARRAY_BY_EXTRUDERS( HEATER_0_TEMPTABLE_LEN, HEATER_1_TEMPTABLE_LEN, HEATER_2_TEMPTABLE_LEN );
|
static uint8_t heater_ttbllen_map[EXTRUDERS] = ARRAY_BY_EXTRUDERS( HEATER_0_TEMPTABLE_LEN, HEATER_1_TEMPTABLE_LEN, HEATER_2_TEMPTABLE_LEN );
|
||||||
|
|
@ -210,6 +225,56 @@ static void temp_runaway_check(int _heater_id, float _target_temperature, float
|
||||||
static void temp_runaway_stop(bool isPreheat, bool isBed);
|
static void temp_runaway_stop(bool isPreheat, bool isBed);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef EXTRUDER_ALTFAN_DETECT
|
||||||
|
ISR(INT6_vect) {
|
||||||
|
fan_edge_counter[0]++;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool extruder_altfan_detect()
|
||||||
|
{
|
||||||
|
setExtruderAutoFanState(3);
|
||||||
|
|
||||||
|
SET_INPUT(TACH_0);
|
||||||
|
|
||||||
|
uint8_t overrideVal = eeprom_read_byte((uint8_t *)EEPROM_ALTFAN_OVERRIDE);
|
||||||
|
if (overrideVal == EEPROM_EMPTY_VALUE)
|
||||||
|
{
|
||||||
|
overrideVal = (calibration_status() == CALIBRATION_STATUS_CALIBRATED) ? 1 : 0;
|
||||||
|
eeprom_update_byte((uint8_t *)EEPROM_ALTFAN_OVERRIDE, overrideVal);
|
||||||
|
}
|
||||||
|
altfanStatus.altfanOverride = overrideVal;
|
||||||
|
|
||||||
|
CRITICAL_SECTION_START;
|
||||||
|
EICRB &= ~(1 << ISC61);
|
||||||
|
EICRB |= (1 << ISC60);
|
||||||
|
EIMSK |= (1 << INT6);
|
||||||
|
fan_edge_counter[0] = 0;
|
||||||
|
CRITICAL_SECTION_END;
|
||||||
|
extruder_autofan_last_check = _millis();
|
||||||
|
|
||||||
|
_delay(1000);
|
||||||
|
|
||||||
|
EIMSK &= ~(1 << INT6);
|
||||||
|
|
||||||
|
countFanSpeed();
|
||||||
|
altfanStatus.isAltfan = fan_speed[0] > 100;
|
||||||
|
setExtruderAutoFanState(1);
|
||||||
|
return altfanStatus.isAltfan;
|
||||||
|
}
|
||||||
|
|
||||||
|
void altfanOverride_toggle()
|
||||||
|
{
|
||||||
|
altfanStatus.altfanOverride = !altfanStatus.altfanOverride;
|
||||||
|
eeprom_update_byte((uint8_t *)EEPROM_ALTFAN_OVERRIDE, altfanStatus.altfanOverride);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool altfanOverride_get()
|
||||||
|
{
|
||||||
|
return altfanStatus.altfanOverride;
|
||||||
|
}
|
||||||
|
|
||||||
|
#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')
|
||||||
bool checkAllHotends(void)
|
bool checkAllHotends(void)
|
||||||
{
|
{
|
||||||
|
|
@ -239,9 +304,7 @@ bool checkAllHotends(void)
|
||||||
const uint8_t safety_check_cycles_count = (extruder < 0) ? 45 : 10; //10 cycles / 20s delay for extruder and 45 cycles / 90s for heatbed
|
const uint8_t safety_check_cycles_count = (extruder < 0) ? 45 : 10; //10 cycles / 20s delay for extruder and 45 cycles / 90s for heatbed
|
||||||
float temp_ambient;
|
float temp_ambient;
|
||||||
|
|
||||||
#if (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1) || \
|
#if (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1)
|
||||||
(defined(EXTRUDER_1_AUTO_FAN_PIN) && EXTRUDER_1_AUTO_FAN_PIN > -1) || \
|
|
||||||
(defined(EXTRUDER_2_AUTO_FAN_PIN) && EXTRUDER_2_AUTO_FAN_PIN > -1)
|
|
||||||
unsigned long extruder_autofan_last_check = _millis();
|
unsigned long extruder_autofan_last_check = _millis();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -289,9 +352,7 @@ bool checkAllHotends(void)
|
||||||
max=max(max,input);
|
max=max(max,input);
|
||||||
min=min(min,input);
|
min=min(min,input);
|
||||||
|
|
||||||
#if (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1) || \
|
#if (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1)
|
||||||
(defined(EXTRUDER_1_AUTO_FAN_PIN) && EXTRUDER_1_AUTO_FAN_PIN > -1) || \
|
|
||||||
(defined(EXTRUDER_2_AUTO_FAN_PIN) && EXTRUDER_2_AUTO_FAN_PIN > -1)
|
|
||||||
if(_millis() - extruder_autofan_last_check > 2500) {
|
if(_millis() - extruder_autofan_last_check > 2500) {
|
||||||
checkExtruderAutoFans();
|
checkExtruderAutoFans();
|
||||||
extruder_autofan_last_check = _millis();
|
extruder_autofan_last_check = _millis();
|
||||||
|
|
@ -447,29 +508,31 @@ int getHeaterPower(int heater) {
|
||||||
return soft_pwm[heater];
|
return soft_pwm[heater];
|
||||||
}
|
}
|
||||||
|
|
||||||
#if (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1) || \
|
#if (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1)
|
||||||
(defined(EXTRUDER_1_AUTO_FAN_PIN) && EXTRUDER_1_AUTO_FAN_PIN > -1) || \
|
|
||||||
(defined(EXTRUDER_2_AUTO_FAN_PIN) && EXTRUDER_2_AUTO_FAN_PIN > -1)
|
|
||||||
|
|
||||||
#if defined(FAN_PIN) && FAN_PIN > -1
|
#if defined(FAN_PIN) && FAN_PIN > -1
|
||||||
#if EXTRUDER_0_AUTO_FAN_PIN == FAN_PIN
|
#if EXTRUDER_0_AUTO_FAN_PIN == FAN_PIN
|
||||||
#error "You cannot set EXTRUDER_0_AUTO_FAN_PIN equal to FAN_PIN"
|
#error "You cannot set EXTRUDER_0_AUTO_FAN_PIN equal to FAN_PIN"
|
||||||
#endif
|
#endif
|
||||||
#if EXTRUDER_1_AUTO_FAN_PIN == FAN_PIN
|
|
||||||
#error "You cannot set EXTRUDER_1_AUTO_FAN_PIN equal to FAN_PIN"
|
|
||||||
#endif
|
|
||||||
#if EXTRUDER_2_AUTO_FAN_PIN == FAN_PIN
|
|
||||||
#error "You cannot set EXTRUDER_2_AUTO_FAN_PIN equal to FAN_PIN"
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void setExtruderAutoFanState(int pin, bool state)
|
void setExtruderAutoFanState(uint8_t state)
|
||||||
{
|
{
|
||||||
unsigned char newFanSpeed = (state != 0) ? EXTRUDER_AUTO_FAN_SPEED : 0;
|
//If bit 1 is set (0x02), then the extruder fan speed won't be adjusted according to temperature. Useful for forcing
|
||||||
// this idiom allows both digital and PWM fan outputs (see M42 handling).
|
//the fan to either On or Off during certain tests/errors.
|
||||||
pinMode(pin, OUTPUT);
|
|
||||||
digitalWrite(pin, newFanSpeed);
|
fanState = state;
|
||||||
//analogWrite(pin, newFanSpeed);
|
newFanSpeed = 0;
|
||||||
|
if (fanState & 0x01)
|
||||||
|
{
|
||||||
|
#ifdef EXTRUDER_ALTFAN_DETECT
|
||||||
|
if (altfanStatus.isAltfan && !altfanStatus.altfanOverride) newFanSpeed = EXTRUDER_ALTFAN_SPEED_SILENT;
|
||||||
|
else newFanSpeed = EXTRUDER_AUTO_FAN_SPEED;
|
||||||
|
#else //EXTRUDER_ALTFAN_DETECT
|
||||||
|
newFanSpeed = EXTRUDER_AUTO_FAN_SPEED;
|
||||||
|
#endif //EXTRUDER_ALTFAN_DETECT
|
||||||
|
}
|
||||||
|
timer4_set_fan0(newFanSpeed);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if (defined(FANCHECK) && (((defined(TACH_0) && (TACH_0 >-1)) || (defined(TACH_1) && (TACH_1 > -1)))))
|
#if (defined(FANCHECK) && (((defined(TACH_0) && (TACH_0 >-1)) || (defined(TACH_1) && (TACH_1 > -1)))))
|
||||||
|
|
@ -503,7 +566,7 @@ void checkFanSpeed()
|
||||||
fans_check_enabled = (eeprom_read_byte((uint8_t*)EEPROM_FAN_CHECK_ENABLED) > 0);
|
fans_check_enabled = (eeprom_read_byte((uint8_t*)EEPROM_FAN_CHECK_ENABLED) > 0);
|
||||||
static unsigned char fan_speed_errors[2] = { 0,0 };
|
static unsigned char fan_speed_errors[2] = { 0,0 };
|
||||||
#if (defined(FANCHECK) && defined(TACH_0) && (TACH_0 >-1))
|
#if (defined(FANCHECK) && defined(TACH_0) && (TACH_0 >-1))
|
||||||
if ((fan_speed[0] == 0) && (current_temperature[0] > EXTRUDER_AUTO_FAN_TEMPERATURE)){ fan_speed_errors[0]++;}
|
if ((fan_speed[0] < 20) && (current_temperature[0] > EXTRUDER_AUTO_FAN_TEMPERATURE)){ fan_speed_errors[0]++;}
|
||||||
else{
|
else{
|
||||||
fan_speed_errors[0] = 0;
|
fan_speed_errors[0] = 0;
|
||||||
host_keepalive();
|
host_keepalive();
|
||||||
|
|
@ -570,54 +633,20 @@ void fanSpeedError(unsigned char _fan) {
|
||||||
fanSpeedErrorBeep(PSTR("Print fan speed is lower than expected"), MSG_FANCHECK_PRINT);
|
fanSpeedErrorBeep(PSTR("Print fan speed is lower than expected"), MSG_FANCHECK_PRINT);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// SERIAL_PROTOCOLLNRPGM(MSG_OK); //This ok messes things up with octoprint.
|
|
||||||
}
|
}
|
||||||
#endif //(defined(TACH_0) && TACH_0 >-1) || (defined(TACH_1) && TACH_1 > -1)
|
#endif //(defined(TACH_0) && TACH_0 >-1) || (defined(TACH_1) && TACH_1 > -1)
|
||||||
|
|
||||||
|
|
||||||
void checkExtruderAutoFans()
|
void checkExtruderAutoFans()
|
||||||
{
|
{
|
||||||
uint8_t fanState = 0;
|
#if defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1
|
||||||
|
if (!(fanState & 0x02))
|
||||||
// which fan pins need to be turned on?
|
{
|
||||||
#if defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1
|
fanState &= ~1;
|
||||||
if (current_temperature[0] > EXTRUDER_AUTO_FAN_TEMPERATURE)
|
fanState |= current_temperature[0] > EXTRUDER_AUTO_FAN_TEMPERATURE;
|
||||||
fanState |= 1;
|
}
|
||||||
#endif
|
setExtruderAutoFanState(fanState);
|
||||||
#if defined(EXTRUDER_1_AUTO_FAN_PIN) && EXTRUDER_1_AUTO_FAN_PIN > -1
|
#endif
|
||||||
if (current_temperature[1] > EXTRUDER_AUTO_FAN_TEMPERATURE)
|
|
||||||
{
|
|
||||||
if (EXTRUDER_1_AUTO_FAN_PIN == EXTRUDER_0_AUTO_FAN_PIN)
|
|
||||||
fanState |= 1;
|
|
||||||
else
|
|
||||||
fanState |= 2;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#if defined(EXTRUDER_2_AUTO_FAN_PIN) && EXTRUDER_2_AUTO_FAN_PIN > -1
|
|
||||||
if (current_temperature[2] > EXTRUDER_AUTO_FAN_TEMPERATURE)
|
|
||||||
{
|
|
||||||
if (EXTRUDER_2_AUTO_FAN_PIN == EXTRUDER_0_AUTO_FAN_PIN)
|
|
||||||
fanState |= 1;
|
|
||||||
else if (EXTRUDER_2_AUTO_FAN_PIN == EXTRUDER_1_AUTO_FAN_PIN)
|
|
||||||
fanState |= 2;
|
|
||||||
else
|
|
||||||
fanState |= 4;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// update extruder auto fan states
|
|
||||||
#if defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1
|
|
||||||
setExtruderAutoFanState(EXTRUDER_0_AUTO_FAN_PIN, (fanState & 1) != 0);
|
|
||||||
#endif
|
|
||||||
#if defined(EXTRUDER_1_AUTO_FAN_PIN) && EXTRUDER_1_AUTO_FAN_PIN > -1
|
|
||||||
if (EXTRUDER_1_AUTO_FAN_PIN != EXTRUDER_0_AUTO_FAN_PIN)
|
|
||||||
setExtruderAutoFanState(EXTRUDER_1_AUTO_FAN_PIN, (fanState & 2) != 0);
|
|
||||||
#endif
|
|
||||||
#if defined(EXTRUDER_2_AUTO_FAN_PIN) && EXTRUDER_2_AUTO_FAN_PIN > -1
|
|
||||||
if (EXTRUDER_2_AUTO_FAN_PIN != EXTRUDER_0_AUTO_FAN_PIN
|
|
||||||
&& EXTRUDER_2_AUTO_FAN_PIN != EXTRUDER_1_AUTO_FAN_PIN)
|
|
||||||
setExtruderAutoFanState(EXTRUDER_2_AUTO_FAN_PIN, (fanState & 4) != 0);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // any extruder auto fan pins set
|
#endif // any extruder auto fan pins set
|
||||||
|
|
@ -641,6 +670,7 @@ void manage_heater()
|
||||||
return;
|
return;
|
||||||
// more precisely - this condition partially stabilizes time interval for regulation values evaluation (@ ~ 230ms)
|
// more precisely - this condition partially stabilizes time interval for regulation values evaluation (@ ~ 230ms)
|
||||||
|
|
||||||
|
// ADC values need to be converted before checking: converted values are later used in MINTEMP
|
||||||
updateTemperaturesFromRawValues();
|
updateTemperaturesFromRawValues();
|
||||||
|
|
||||||
check_max_temp();
|
check_max_temp();
|
||||||
|
|
@ -737,9 +767,7 @@ void manage_heater()
|
||||||
#define FAN_CHECK_DURATION 100 //100ms
|
#define FAN_CHECK_DURATION 100 //100ms
|
||||||
|
|
||||||
#ifndef DEBUG_DISABLE_FANCHECK
|
#ifndef DEBUG_DISABLE_FANCHECK
|
||||||
#if (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1) || \
|
#if (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1)
|
||||||
(defined(EXTRUDER_1_AUTO_FAN_PIN) && EXTRUDER_1_AUTO_FAN_PIN > -1) || \
|
|
||||||
(defined(EXTRUDER_2_AUTO_FAN_PIN) && EXTRUDER_2_AUTO_FAN_PIN > -1)
|
|
||||||
|
|
||||||
#ifdef FAN_SOFT_PWM
|
#ifdef FAN_SOFT_PWM
|
||||||
#ifdef FANCHECK
|
#ifdef FANCHECK
|
||||||
|
|
@ -1096,10 +1124,15 @@ void tp_init()
|
||||||
|
|
||||||
adc_init();
|
adc_init();
|
||||||
|
|
||||||
timer0_init();
|
timer0_init(); //enables the heatbed timer.
|
||||||
|
|
||||||
|
// timer2 already enabled earlier in the code
|
||||||
|
// now enable the COMPB temperature interrupt
|
||||||
OCR2B = 128;
|
OCR2B = 128;
|
||||||
TIMSK2 |= (1<<OCIE2B);
|
TIMSK2 |= (1<<OCIE2B);
|
||||||
|
|
||||||
|
timer4_init(); //for tone and Extruder fan PWM
|
||||||
|
|
||||||
// Wait for temperature measurement to settle
|
// Wait for temperature measurement to settle
|
||||||
_delay(250);
|
_delay(250);
|
||||||
|
|
||||||
|
|
@ -1167,7 +1200,6 @@ void tp_init()
|
||||||
#endif //MAXTEMP 2
|
#endif //MAXTEMP 2
|
||||||
|
|
||||||
#ifdef BED_MINTEMP
|
#ifdef BED_MINTEMP
|
||||||
/* No bed MINTEMP error implemented?!? */
|
|
||||||
while(analog2tempBed(bed_minttemp_raw) < BED_MINTEMP) {
|
while(analog2tempBed(bed_minttemp_raw) < BED_MINTEMP) {
|
||||||
#if HEATER_BED_RAW_LO_TEMP < HEATER_BED_RAW_HI_TEMP
|
#if HEATER_BED_RAW_LO_TEMP < HEATER_BED_RAW_HI_TEMP
|
||||||
bed_minttemp_raw += OVERSAMPLENR;
|
bed_minttemp_raw += OVERSAMPLENR;
|
||||||
|
|
@ -1175,7 +1207,6 @@ void tp_init()
|
||||||
bed_minttemp_raw -= OVERSAMPLENR;
|
bed_minttemp_raw -= OVERSAMPLENR;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif //BED_MINTEMP
|
#endif //BED_MINTEMP
|
||||||
#ifdef BED_MAXTEMP
|
#ifdef BED_MAXTEMP
|
||||||
while(analog2tempBed(bed_maxttemp_raw) > BED_MAXTEMP) {
|
while(analog2tempBed(bed_maxttemp_raw) > BED_MAXTEMP) {
|
||||||
|
|
@ -1186,6 +1217,25 @@ void tp_init()
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif //BED_MAXTEMP
|
#endif //BED_MAXTEMP
|
||||||
|
|
||||||
|
#ifdef AMBIENT_MINTEMP
|
||||||
|
while(analog2tempAmbient(ambient_minttemp_raw) < AMBIENT_MINTEMP) {
|
||||||
|
#if HEATER_AMBIENT_RAW_LO_TEMP < HEATER_AMBIENT_RAW_HI_TEMP
|
||||||
|
ambient_minttemp_raw += OVERSAMPLENR;
|
||||||
|
#else
|
||||||
|
ambient_minttemp_raw -= OVERSAMPLENR;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#endif //AMBIENT_MINTEMP
|
||||||
|
#ifdef AMBIENT_MAXTEMP
|
||||||
|
while(analog2tempAmbient(ambient_maxttemp_raw) > AMBIENT_MAXTEMP) {
|
||||||
|
#if HEATER_AMBIENT_RAW_LO_TEMP < HEATER_AMBIENT_RAW_HI_TEMP
|
||||||
|
ambient_maxttemp_raw -= OVERSAMPLENR;
|
||||||
|
#else
|
||||||
|
ambient_maxttemp_raw += OVERSAMPLENR;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#endif //AMBIENT_MAXTEMP
|
||||||
}
|
}
|
||||||
|
|
||||||
#if (defined (TEMP_RUNAWAY_BED_HYSTERESIS) && TEMP_RUNAWAY_BED_TIMEOUT > 0) || (defined (TEMP_RUNAWAY_EXTRUDER_HYSTERESIS) && TEMP_RUNAWAY_EXTRUDER_TIMEOUT > 0)
|
#if (defined (TEMP_RUNAWAY_BED_HYSTERESIS) && TEMP_RUNAWAY_BED_TIMEOUT > 0) || (defined (TEMP_RUNAWAY_EXTRUDER_HYSTERESIS) && TEMP_RUNAWAY_EXTRUDER_TIMEOUT > 0)
|
||||||
|
|
@ -1357,9 +1407,11 @@ void temp_runaway_stop(bool isPreheat, bool isBed)
|
||||||
isBed ? LCD_ALERTMESSAGEPGM("BED PREHEAT ERROR") : LCD_ALERTMESSAGEPGM("PREHEAT ERROR");
|
isBed ? LCD_ALERTMESSAGEPGM("BED PREHEAT ERROR") : LCD_ALERTMESSAGEPGM("PREHEAT ERROR");
|
||||||
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)");
|
||||||
SET_OUTPUT(EXTRUDER_0_AUTO_FAN_PIN);
|
#ifdef EXTRUDER_ALTFAN_DETECT
|
||||||
|
altfanStatus.altfanOverride = 1; //full speed
|
||||||
|
#endif //EXTRUDER_ALTFAN_DETECT
|
||||||
|
setExtruderAutoFanState(3);
|
||||||
SET_OUTPUT(FAN_PIN);
|
SET_OUTPUT(FAN_PIN);
|
||||||
WRITE(EXTRUDER_0_AUTO_FAN_PIN, 1);
|
|
||||||
#ifdef FAN_SOFT_PWM
|
#ifdef FAN_SOFT_PWM
|
||||||
fanSpeedSoftPwm = 255;
|
fanSpeedSoftPwm = 255;
|
||||||
#else //FAN_SOFT_PWM
|
#else //FAN_SOFT_PWM
|
||||||
|
|
@ -1427,26 +1479,55 @@ enum { LCDALERT_NONE = 0, LCDALERT_HEATERMINTEMP, LCDALERT_BEDMINTEMP, LCDALERT_
|
||||||
//! to prevent flicker and improve speed
|
//! to prevent flicker and improve speed
|
||||||
uint8_t last_alert_sent_to_lcd = LCDALERT_NONE;
|
uint8_t last_alert_sent_to_lcd = LCDALERT_NONE;
|
||||||
|
|
||||||
|
|
||||||
|
//! update the current temperature error message
|
||||||
|
//! @param type short error abbreviation (PROGMEM)
|
||||||
|
//! @param func optional lcd update function (lcd_setalertstatus when first setting the error)
|
||||||
|
void temp_update_messagepgm(const char* PROGMEM type, void (*func)(const char*) = lcd_updatestatus)
|
||||||
|
{
|
||||||
|
char msg[LCD_WIDTH];
|
||||||
|
strcpy_P(msg, PSTR("Err: "));
|
||||||
|
strcat_P(msg, type);
|
||||||
|
(*func)(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
//! signal a temperature error on both the lcd and serial
|
||||||
|
//! @param type short error abbreviation (PROGMEM)
|
||||||
|
//! @param e optional extruder index for hotend errors
|
||||||
|
void temp_error_messagepgm(const char* PROGMEM type, uint8_t e = EXTRUDERS)
|
||||||
|
{
|
||||||
|
temp_update_messagepgm(type, lcd_setalertstatus);
|
||||||
|
|
||||||
|
SERIAL_ERROR_START;
|
||||||
|
|
||||||
|
if(e != EXTRUDERS) {
|
||||||
|
SERIAL_ERROR((int)e);
|
||||||
|
SERIAL_ERRORPGM(": ");
|
||||||
|
}
|
||||||
|
|
||||||
|
SERIAL_ERRORPGM("Heaters switched off. ");
|
||||||
|
SERIAL_ERRORRPGM(type);
|
||||||
|
SERIAL_ERRORLNPGM(" triggered!");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void max_temp_error(uint8_t e) {
|
void max_temp_error(uint8_t e) {
|
||||||
disable_heater();
|
disable_heater();
|
||||||
if(IsStopped() == false) {
|
if(IsStopped() == false) {
|
||||||
SERIAL_ERROR_START;
|
temp_error_messagepgm(PSTR("MAXTEMP"), e);
|
||||||
SERIAL_ERRORLN((int)e);
|
|
||||||
SERIAL_ERRORLNPGM(": Extruder switched off. MAXTEMP triggered !");
|
|
||||||
LCD_ALERTMESSAGEPGM("Err: MAXTEMP");
|
|
||||||
}
|
}
|
||||||
#ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
|
#ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
|
||||||
Stop();
|
Stop();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
SET_OUTPUT(EXTRUDER_0_AUTO_FAN_PIN);
|
|
||||||
SET_OUTPUT(FAN_PIN);
|
SET_OUTPUT(FAN_PIN);
|
||||||
SET_OUTPUT(BEEPER);
|
SET_OUTPUT(BEEPER);
|
||||||
WRITE(FAN_PIN, 1);
|
WRITE(FAN_PIN, 1);
|
||||||
WRITE(EXTRUDER_0_AUTO_FAN_PIN, 1);
|
|
||||||
WRITE(BEEPER, 1);
|
WRITE(BEEPER, 1);
|
||||||
|
#ifdef EXTRUDER_ALTFAN_DETECT
|
||||||
|
altfanStatus.altfanOverride = 1; //full speed
|
||||||
|
#endif //EXTRUDER_ALTFAN_DETECT
|
||||||
|
setExtruderAutoFanState(3);
|
||||||
// fanSpeed will consumed by the check_axes_activity() routine.
|
// fanSpeed will consumed by the check_axes_activity() routine.
|
||||||
fanSpeed=255;
|
fanSpeed=255;
|
||||||
if (farm_mode) { prusa_statistics(93); }
|
if (farm_mode) { prusa_statistics(93); }
|
||||||
|
|
@ -1456,18 +1537,15 @@ void min_temp_error(uint8_t e) {
|
||||||
#ifdef DEBUG_DISABLE_MINTEMP
|
#ifdef DEBUG_DISABLE_MINTEMP
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
//if (current_temperature_ambient < MINTEMP_MINAMBIENT) return;
|
|
||||||
disable_heater();
|
disable_heater();
|
||||||
static const char err[] PROGMEM = "Err: MINTEMP";
|
//if (current_temperature_ambient < MINTEMP_MINAMBIENT) return;
|
||||||
|
static const char err[] PROGMEM = "MINTEMP";
|
||||||
if(IsStopped() == false) {
|
if(IsStopped() == false) {
|
||||||
SERIAL_ERROR_START;
|
temp_error_messagepgm(err, e);
|
||||||
SERIAL_ERRORLN((int)e);
|
|
||||||
SERIAL_ERRORLNPGM(": Extruder switched off. MINTEMP triggered !");
|
|
||||||
lcd_setalertstatuspgm(err);
|
|
||||||
last_alert_sent_to_lcd = LCDALERT_HEATERMINTEMP;
|
last_alert_sent_to_lcd = LCDALERT_HEATERMINTEMP;
|
||||||
} else if( last_alert_sent_to_lcd != LCDALERT_HEATERMINTEMP ){ // only update, if the lcd message is to be changed (i.e. not the same as last time)
|
} else if( last_alert_sent_to_lcd != LCDALERT_HEATERMINTEMP ){ // only update, if the lcd message is to be changed (i.e. not the same as last time)
|
||||||
// we are already stopped due to some error, only update the status message without flickering
|
// we are already stopped due to some error, only update the status message without flickering
|
||||||
lcd_updatestatuspgm(err);
|
temp_update_messagepgm(err);
|
||||||
last_alert_sent_to_lcd = LCDALERT_HEATERMINTEMP;
|
last_alert_sent_to_lcd = LCDALERT_HEATERMINTEMP;
|
||||||
}
|
}
|
||||||
#ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
|
#ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
|
||||||
|
|
@ -1482,37 +1560,27 @@ void min_temp_error(uint8_t e) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void bed_max_temp_error(void) {
|
void bed_max_temp_error(void) {
|
||||||
#if HEATER_BED_PIN > -1
|
disable_heater();
|
||||||
//WRITE(HEATER_BED_PIN, 0);
|
|
||||||
#endif
|
|
||||||
if(IsStopped() == false) {
|
if(IsStopped() == false) {
|
||||||
SERIAL_ERROR_START;
|
temp_error_messagepgm(PSTR("MAXTEMP BED"));
|
||||||
SERIAL_ERRORLNPGM("Temperature heated bed switched off. MAXTEMP triggered !");
|
|
||||||
LCD_ALERTMESSAGEPGM("Err: MAXTEMP BED");
|
|
||||||
}
|
}
|
||||||
#ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
|
#ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
|
||||||
Stop();
|
Stop();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void bed_min_temp_error(void) {
|
void bed_min_temp_error(void) {
|
||||||
#ifdef DEBUG_DISABLE_MINTEMP
|
#ifdef DEBUG_DISABLE_MINTEMP
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
//if (current_temperature_ambient < MINTEMP_MINAMBIENT) return;
|
disable_heater();
|
||||||
#if HEATER_BED_PIN > -1
|
static const char err[] PROGMEM = "MINTEMP BED";
|
||||||
//WRITE(HEATER_BED_PIN, 0);
|
|
||||||
#endif
|
|
||||||
static const char err[] PROGMEM = "Err: MINTEMP BED";
|
|
||||||
if(IsStopped() == false) {
|
if(IsStopped() == false) {
|
||||||
SERIAL_ERROR_START;
|
temp_error_messagepgm(err);
|
||||||
SERIAL_ERRORLNPGM("Temperature heated bed switched off. MINTEMP triggered !");
|
|
||||||
lcd_setalertstatuspgm(err);
|
|
||||||
last_alert_sent_to_lcd = LCDALERT_BEDMINTEMP;
|
last_alert_sent_to_lcd = LCDALERT_BEDMINTEMP;
|
||||||
} else if( last_alert_sent_to_lcd != LCDALERT_BEDMINTEMP ){ // only update, if the lcd message is to be changed (i.e. not the same as last time)
|
} else if( last_alert_sent_to_lcd != LCDALERT_BEDMINTEMP ){ // only update, if the lcd message is to be changed (i.e. not the same as last time)
|
||||||
// we are already stopped due to some error, only update the status message without flickering
|
// we are already stopped due to some error, only update the status message without flickering
|
||||||
lcd_updatestatuspgm(err);
|
temp_update_messagepgm(err);
|
||||||
last_alert_sent_to_lcd = LCDALERT_BEDMINTEMP;
|
last_alert_sent_to_lcd = LCDALERT_BEDMINTEMP;
|
||||||
}
|
}
|
||||||
#ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
|
#ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
|
||||||
|
|
@ -1520,6 +1588,33 @@ void bed_min_temp_error(void) {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef AMBIENT_THERMISTOR
|
||||||
|
void ambient_max_temp_error(void) {
|
||||||
|
disable_heater();
|
||||||
|
if(IsStopped() == false) {
|
||||||
|
temp_error_messagepgm(PSTR("MAXTEMP AMB"));
|
||||||
|
}
|
||||||
|
#ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
|
||||||
|
Stop();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void ambient_min_temp_error(void) {
|
||||||
|
#ifdef DEBUG_DISABLE_MINTEMP
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
|
disable_heater();
|
||||||
|
if(IsStopped() == false) {
|
||||||
|
temp_error_messagepgm(PSTR("MINTEMP AMB"));
|
||||||
|
}
|
||||||
|
#ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
|
||||||
|
Stop();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef HEATER_0_USES_MAX6675
|
#ifdef HEATER_0_USES_MAX6675
|
||||||
#define MAX6675_HEAT_INTERVAL 250
|
#define MAX6675_HEAT_INTERVAL 250
|
||||||
long max6675_previous_millis = MAX6675_HEAT_INTERVAL;
|
long max6675_previous_millis = MAX6675_HEAT_INTERVAL;
|
||||||
|
|
@ -1604,18 +1699,8 @@ void adc_ready(void) //callback from adc when sampling finished
|
||||||
|
|
||||||
} // extern "C"
|
} // extern "C"
|
||||||
|
|
||||||
// Timer2 (originaly timer0) is shared with millies
|
FORCE_INLINE static void temperature_isr()
|
||||||
#ifdef SYSTEM_TIMER_2
|
|
||||||
ISR(TIMER2_COMPB_vect)
|
|
||||||
#else //SYSTEM_TIMER_2
|
|
||||||
ISR(TIMER0_COMPB_vect)
|
|
||||||
#endif //SYSTEM_TIMER_2
|
|
||||||
{
|
{
|
||||||
static bool _lock = false;
|
|
||||||
if (_lock) return;
|
|
||||||
_lock = true;
|
|
||||||
asm("sei");
|
|
||||||
|
|
||||||
if (!temp_meas_ready) adc_cycle();
|
if (!temp_meas_ready) adc_cycle();
|
||||||
lcd_buttons_update();
|
lcd_buttons_update();
|
||||||
|
|
||||||
|
|
@ -1981,8 +2066,24 @@ ISR(TIMER0_COMPB_vect)
|
||||||
#if (defined(FANCHECK) && defined(TACH_0) && (TACH_0 > -1))
|
#if (defined(FANCHECK) && defined(TACH_0) && (TACH_0 > -1))
|
||||||
check_fans();
|
check_fans();
|
||||||
#endif //(defined(TACH_0))
|
#endif //(defined(TACH_0))
|
||||||
|
}
|
||||||
|
|
||||||
_lock = false;
|
// Timer2 (originaly timer0) is shared with millies
|
||||||
|
#ifdef SYSTEM_TIMER_2
|
||||||
|
ISR(TIMER2_COMPB_vect)
|
||||||
|
#else //SYSTEM_TIMER_2
|
||||||
|
ISR(TIMER0_COMPB_vect)
|
||||||
|
#endif //SYSTEM_TIMER_2
|
||||||
|
{
|
||||||
|
static bool _lock = false;
|
||||||
|
if (!_lock)
|
||||||
|
{
|
||||||
|
_lock = true;
|
||||||
|
sei();
|
||||||
|
temperature_isr();
|
||||||
|
cli();
|
||||||
|
_lock = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void check_max_temp()
|
void check_max_temp()
|
||||||
|
|
@ -2002,11 +2103,19 @@ void check_max_temp()
|
||||||
#else
|
#else
|
||||||
if (current_temperature_bed_raw >= bed_maxttemp_raw) {
|
if (current_temperature_bed_raw >= bed_maxttemp_raw) {
|
||||||
#endif
|
#endif
|
||||||
target_temperature_bed = 0;
|
|
||||||
bed_max_temp_error();
|
bed_max_temp_error();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
//ambient
|
||||||
|
#if defined(AMBIENT_MAXTEMP) && (TEMP_SENSOR_AMBIENT != 0)
|
||||||
|
#if AMBIENT_RAW_LO_TEMP > AMBIENT_RAW_HI_TEMP
|
||||||
|
if (current_temperature_raw_ambient <= ambient_maxttemp_raw) {
|
||||||
|
#else
|
||||||
|
if (current_temperature_raw_ambient >= ambient_maxttemp_raw) {
|
||||||
|
#endif
|
||||||
|
ambient_max_temp_error();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
//! number of repeating the same state with consecutive step() calls
|
//! number of repeating the same state with consecutive step() calls
|
||||||
//! used to slow down text switching
|
//! used to slow down text switching
|
||||||
|
|
@ -2101,12 +2210,32 @@ void check_min_temp_bed()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef AMBIENT_MINTEMP
|
||||||
|
void check_min_temp_ambient()
|
||||||
|
{
|
||||||
|
#if AMBIENT_RAW_LO_TEMP > AMBIENT_RAW_HI_TEMP
|
||||||
|
if (current_temperature_raw_ambient >= ambient_minttemp_raw) {
|
||||||
|
#else
|
||||||
|
if (current_temperature_raw_ambient <= ambient_minttemp_raw) {
|
||||||
|
#endif
|
||||||
|
ambient_min_temp_error();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void check_min_temp()
|
void check_min_temp()
|
||||||
{
|
{
|
||||||
static bool bCheckingOnHeater=false; // state variable, which allows to short no-checking delay (is set, when temperature is (first time) over heaterMintemp)
|
static bool bCheckingOnHeater=false; // state variable, which allows to short no-checking delay (is set, when temperature is (first time) over heaterMintemp)
|
||||||
static bool bCheckingOnBed=false; // state variable, which allows to short no-checking delay (is set, when temperature is (first time) over bedMintemp)
|
static bool bCheckingOnBed=false; // state variable, which allows to short no-checking delay (is set, when temperature is (first time) over bedMintemp)
|
||||||
#ifdef AMBIENT_THERMISTOR
|
#ifdef AMBIENT_THERMISTOR
|
||||||
if(current_temperature_raw_ambient>(OVERSAMPLENR*MINTEMP_MINAMBIENT_RAW)) // thermistor is NTC type, so operator is ">" ;-)
|
#ifdef AMBIENT_MINTEMP
|
||||||
|
check_min_temp_ambient();
|
||||||
|
#endif
|
||||||
|
#if AMBIENT_RAW_LO_TEMP > AMBIENT_RAW_HI_TEMP
|
||||||
|
if(current_temperature_raw_ambient>(OVERSAMPLENR*MINTEMP_MINAMBIENT_RAW)) // thermistor is NTC type
|
||||||
|
#else
|
||||||
|
if(current_temperature_raw_ambient=<(OVERSAMPLENR*MINTEMP_MINAMBIENT_RAW))
|
||||||
|
#endif
|
||||||
{ // ambient temperature is low
|
{ // ambient temperature is low
|
||||||
#endif //AMBIENT_THERMISTOR
|
#endif //AMBIENT_THERMISTOR
|
||||||
// *** 'common' part of code for MK2.5 & MK3
|
// *** 'common' part of code for MK2.5 & MK3
|
||||||
|
|
@ -2194,4 +2323,31 @@ float unscalePID_d(float d)
|
||||||
|
|
||||||
#endif //PIDTEMP
|
#endif //PIDTEMP
|
||||||
|
|
||||||
|
#ifdef PINDA_THERMISTOR
|
||||||
|
//! @brief PINDA thermistor detected
|
||||||
|
//!
|
||||||
|
//! @retval true firmware should do temperature compensation and allow calibration
|
||||||
|
//! @retval false PINDA thermistor is not detected, disable temperature compensation and calibration
|
||||||
|
//! @retval true/false when forced via LCD menu Settings->HW Setup->SuperPINDA
|
||||||
|
//!
|
||||||
|
bool has_temperature_compensation()
|
||||||
|
{
|
||||||
|
#ifdef SUPERPINDA_SUPPORT
|
||||||
|
#ifdef PINDA_TEMP_COMP
|
||||||
|
uint8_t pinda_temp_compensation = eeprom_read_byte((uint8_t*)EEPROM_PINDA_TEMP_COMPENSATION);
|
||||||
|
if (pinda_temp_compensation == EEPROM_EMPTY_VALUE) //Unkown PINDA temp compenstation, so check it.
|
||||||
|
{
|
||||||
|
#endif //PINDA_TEMP_COMP
|
||||||
|
return (current_temperature_pinda >= PINDA_MINTEMP) ? true : false;
|
||||||
|
#ifdef PINDA_TEMP_COMP
|
||||||
|
}
|
||||||
|
else if (pinda_temp_compensation == 0) return true; //Overwritten via LCD menu SuperPINDA [No]
|
||||||
|
else return false; //Overwritten via LCD menu SuperPINDA [YES]
|
||||||
|
#endif //PINDA_TEMP_COMP
|
||||||
|
#else
|
||||||
|
return true;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#endif //PINDA_THERMISTOR
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -63,6 +63,7 @@ extern float current_temperature_bed;
|
||||||
#ifdef PINDA_THERMISTOR
|
#ifdef PINDA_THERMISTOR
|
||||||
extern uint16_t current_temperature_raw_pinda;
|
extern uint16_t current_temperature_raw_pinda;
|
||||||
extern float current_temperature_pinda;
|
extern float current_temperature_pinda;
|
||||||
|
bool has_temperature_compensation();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef AMBIENT_THERMISTOR
|
#ifdef AMBIENT_THERMISTOR
|
||||||
|
|
@ -79,7 +80,7 @@ extern int current_voltage_raw_bed;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef IR_SENSOR_ANALOG
|
#ifdef IR_SENSOR_ANALOG
|
||||||
extern int current_voltage_raw_IR;
|
extern uint16_t current_voltage_raw_IR;
|
||||||
#endif //IR_SENSOR_ANALOG
|
#endif //IR_SENSOR_ANALOG
|
||||||
|
|
||||||
#if defined(CONTROLLERFAN_PIN) && CONTROLLERFAN_PIN > -1
|
#if defined(CONTROLLERFAN_PIN) && CONTROLLERFAN_PIN > -1
|
||||||
|
|
@ -245,7 +246,7 @@ FORCE_INLINE void autotempShutdown(){
|
||||||
|
|
||||||
void PID_autotune(float temp, int extruder, int ncycles);
|
void PID_autotune(float temp, int extruder, int ncycles);
|
||||||
|
|
||||||
void setExtruderAutoFanState(int pin, bool state);
|
void setExtruderAutoFanState(uint8_t state);
|
||||||
void checkExtruderAutoFans();
|
void checkExtruderAutoFans();
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -270,10 +271,14 @@ void check_fans();
|
||||||
void check_min_temp();
|
void check_min_temp();
|
||||||
void check_max_temp();
|
void check_max_temp();
|
||||||
|
|
||||||
|
#ifdef EXTRUDER_ALTFAN_DETECT
|
||||||
#endif
|
extern bool extruder_altfan_detect();
|
||||||
|
extern void altfanOverride_toggle();
|
||||||
|
extern bool altfanOverride_get();
|
||||||
|
#endif //EXTRUDER_ALTFAN_DETECT
|
||||||
|
|
||||||
extern unsigned long extruder_autofan_last_check;
|
extern unsigned long extruder_autofan_last_check;
|
||||||
extern uint8_t fanSpeedBckp;
|
extern uint8_t fanSpeedBckp;
|
||||||
extern bool fan_measuring;
|
extern bool fan_measuring;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -1213,6 +1213,8 @@ const short temptable_1047[][2] PROGMEM = {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (THERMISTORAMBIENT == 2000) //100k thermistor NTCG104LH104JT1
|
#if (THERMISTORAMBIENT == 2000) //100k thermistor NTCG104LH104JT1
|
||||||
|
# define AMBIENT_RAW_HI_TEMP 0
|
||||||
|
# define AMBIENT_RAW_LO_TEMP 16383
|
||||||
const short temptable_2000[][2] PROGMEM = {
|
const short temptable_2000[][2] PROGMEM = {
|
||||||
// Source: https://product.tdk.com/info/en/catalog/datasheets/503021/tpd_ntc-thermistor_ntcg_en.pdf
|
// Source: https://product.tdk.com/info/en/catalog/datasheets/503021/tpd_ntc-thermistor_ntcg_en.pdf
|
||||||
// Calculated using 4.7kohm pullup, voltage divider math, and manufacturer provided temp/resistance
|
// Calculated using 4.7kohm pullup, voltage divider math, and manufacturer provided temp/resistance
|
||||||
|
|
|
||||||
|
|
@ -9,16 +9,11 @@
|
||||||
|
|
||||||
#include <avr/io.h>
|
#include <avr/io.h>
|
||||||
#include <avr/interrupt.h>
|
#include <avr/interrupt.h>
|
||||||
#include "io_atmega2560.h"
|
#include "macros.h"
|
||||||
|
|
||||||
#define BEEPER 84
|
|
||||||
|
|
||||||
void timer0_init(void)
|
void timer0_init(void)
|
||||||
{
|
{
|
||||||
//save sreg
|
CRITICAL_SECTION_START;
|
||||||
uint8_t _sreg = SREG;
|
|
||||||
//disable interrupts for sure
|
|
||||||
cli();
|
|
||||||
|
|
||||||
TCNT0 = 0;
|
TCNT0 = 0;
|
||||||
// Fast PWM duty (0-255).
|
// Fast PWM duty (0-255).
|
||||||
|
|
@ -29,6 +24,13 @@ void timer0_init(void)
|
||||||
TCCR0B = (1 << CS01); // CLK/8 prescaling
|
TCCR0B = (1 << CS01); // CLK/8 prescaling
|
||||||
TIMSK0 |= (1 << TOIE0); // enable timer overflow interrupt
|
TIMSK0 |= (1 << TOIE0); // enable timer overflow interrupt
|
||||||
|
|
||||||
|
CRITICAL_SECTION_END;
|
||||||
|
}
|
||||||
|
|
||||||
|
void timer2_init(void)
|
||||||
|
{
|
||||||
|
CRITICAL_SECTION_START;
|
||||||
|
|
||||||
// Everything, that used to be on timer0 was moved to timer2 (delay, beeping, millis etc.)
|
// Everything, that used to be on timer0 was moved to timer2 (delay, beeping, millis etc.)
|
||||||
//setup timer2
|
//setup timer2
|
||||||
TCCR2A = 0x00; //COM_A-B=00, WGM_0-1=00
|
TCCR2A = 0x00; //COM_A-B=00, WGM_0-1=00
|
||||||
|
|
@ -39,9 +41,8 @@ void timer0_init(void)
|
||||||
TIMSK2 &= ~(1<<OCIE2B);
|
TIMSK2 &= ~(1<<OCIE2B);
|
||||||
//set timer2 OCR registers (OCRB interrupt generated 0.5ms after OVF interrupt)
|
//set timer2 OCR registers (OCRB interrupt generated 0.5ms after OVF interrupt)
|
||||||
OCR2A = 0;
|
OCR2A = 0;
|
||||||
OCR2B = 128;
|
|
||||||
//restore sreg (enable interrupts)
|
CRITICAL_SECTION_END;
|
||||||
SREG = _sreg;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,9 @@ extern "C" {
|
||||||
///! Initializes TIMER0 for fast PWM mode-driven bed heating
|
///! Initializes TIMER0 for fast PWM mode-driven bed heating
|
||||||
extern void timer0_init(void);
|
extern void timer0_init(void);
|
||||||
|
|
||||||
|
///! Initializes TIMER2 for time keeping and temperature interrupt
|
||||||
|
extern void timer2_init(void);
|
||||||
|
|
||||||
///! Reimplemented original millis() using timer2
|
///! Reimplemented original millis() using timer2
|
||||||
extern unsigned long millis2(void);
|
extern unsigned long millis2(void);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -428,6 +428,11 @@ void tmc2130_check_overtemp()
|
||||||
void tmc2130_setup_chopper(uint8_t axis, uint8_t mres, uint8_t current_h, uint8_t current_r)
|
void tmc2130_setup_chopper(uint8_t axis, uint8_t mres, uint8_t current_h, uint8_t current_r)
|
||||||
{
|
{
|
||||||
uint8_t intpol = (mres != 0); // intpol to 256 only if microsteps aren't 256
|
uint8_t intpol = (mres != 0); // intpol to 256 only if microsteps aren't 256
|
||||||
|
#ifdef TMC2130_DEDGE_STEPPING
|
||||||
|
uint8_t dedge = 1;
|
||||||
|
#else
|
||||||
|
uint8_t dedge = 0;
|
||||||
|
#endif
|
||||||
uint8_t toff = tmc2130_chopper_config[axis].toff; // toff = 3 (fchop = 27.778kHz)
|
uint8_t toff = tmc2130_chopper_config[axis].toff; // toff = 3 (fchop = 27.778kHz)
|
||||||
uint8_t hstrt = tmc2130_chopper_config[axis].hstr; //initial 4, modified to 5
|
uint8_t hstrt = tmc2130_chopper_config[axis].hstr; //initial 4, modified to 5
|
||||||
uint8_t hend = tmc2130_chopper_config[axis].hend; //original value = 1
|
uint8_t hend = tmc2130_chopper_config[axis].hend; //original value = 1
|
||||||
|
|
@ -437,6 +442,9 @@ void tmc2130_setup_chopper(uint8_t axis, uint8_t mres, uint8_t current_h, uint8_
|
||||||
uint8_t tbl = tmc2130_chopper_config[axis].tbl; //blanking time, original value = 2
|
uint8_t tbl = tmc2130_chopper_config[axis].tbl; //blanking time, original value = 2
|
||||||
if (axis == E_AXIS)
|
if (axis == E_AXIS)
|
||||||
{
|
{
|
||||||
|
#if defined(TMC2130_INTPOL_E) && (TMC2130_INTPOL_E == 0)
|
||||||
|
intpol = 0;
|
||||||
|
#endif
|
||||||
#ifdef TMC2130_CNSTOFF_E
|
#ifdef TMC2130_CNSTOFF_E
|
||||||
// fd = 0 (slow decay only)
|
// fd = 0 (slow decay only)
|
||||||
hstrt = 0; //fd0..2
|
hstrt = 0; //fd0..2
|
||||||
|
|
@ -447,16 +455,26 @@ void tmc2130_setup_chopper(uint8_t axis, uint8_t mres, uint8_t current_h, uint8_
|
||||||
// toff = TMC2130_TOFF_E; // toff = 3-5
|
// toff = TMC2130_TOFF_E; // toff = 3-5
|
||||||
// rndtf = 1;
|
// rndtf = 1;
|
||||||
}
|
}
|
||||||
|
#if defined(TMC2130_INTPOL_XY) && (TMC2130_INTPOL_XY == 0)
|
||||||
|
else if (axis == X_AXIS || axis == Y_AXIS) {
|
||||||
|
intpol = 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if defined(TMC2130_INTPOL_Z) && (TMC2130_INTPOL_Z == 0)
|
||||||
|
else if (axis == Z_AXIS) {
|
||||||
|
intpol = 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
// DBG(_n("tmc2130_setup_chopper(axis=%hhd, mres=%hhd, curh=%hhd, curr=%hhd\n"), axis, mres, current_h, current_r);
|
// DBG(_n("tmc2130_setup_chopper(axis=%hhd, mres=%hhd, curh=%hhd, curr=%hhd\n"), axis, mres, current_h, current_r);
|
||||||
// DBG(_n(" toff=%hhd, hstr=%hhd, hend=%hhd, tbl=%hhd\n"), toff, hstrt, hend, tbl);
|
// DBG(_n(" toff=%hhd, hstr=%hhd, hend=%hhd, tbl=%hhd\n"), toff, hstrt, hend, tbl);
|
||||||
if (current_r <= 31)
|
if (current_r <= 31)
|
||||||
{
|
{
|
||||||
tmc2130_wr_CHOPCONF(axis, toff, hstrt, hend, fd3, 0, rndtf, chm, tbl, 1, 0, 0, 0, mres, intpol, 0, 0);
|
tmc2130_wr_CHOPCONF(axis, toff, hstrt, hend, fd3, 0, rndtf, chm, tbl, 1, 0, 0, 0, mres, intpol, dedge, 0);
|
||||||
tmc2130_wr(axis, TMC2130_REG_IHOLD_IRUN, 0x000f0000 | ((current_r & 0x1f) << 8) | (current_h & 0x1f));
|
tmc2130_wr(axis, TMC2130_REG_IHOLD_IRUN, 0x000f0000 | ((current_r & 0x1f) << 8) | (current_h & 0x1f));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tmc2130_wr_CHOPCONF(axis, toff, hstrt, hend, fd3, 0, rndtf, chm, tbl, 0, 0, 0, 0, mres, intpol, 0, 0);
|
tmc2130_wr_CHOPCONF(axis, toff, hstrt, hend, fd3, 0, rndtf, chm, tbl, 0, 0, 0, 0, mres, intpol, dedge, 0);
|
||||||
tmc2130_wr(axis, TMC2130_REG_IHOLD_IRUN, 0x000f0000 | (((current_r >> 1) & 0x1f) << 8) | ((current_h >> 1) & 0x1f));
|
tmc2130_wr(axis, TMC2130_REG_IHOLD_IRUN, 0x000f0000 | (((current_r >> 1) & 0x1f) << 8) | ((current_h >> 1) & 0x1f));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -678,25 +696,32 @@ static uint8_t tmc2130_rx(uint8_t axis, uint8_t addr, uint32_t* rval)
|
||||||
#define _GET_PWR_Z (READ(Z_ENABLE_PIN) == Z_ENABLE_ON)
|
#define _GET_PWR_Z (READ(Z_ENABLE_PIN) == Z_ENABLE_ON)
|
||||||
#define _GET_PWR_E (READ(E0_ENABLE_PIN) == E_ENABLE_ON)
|
#define _GET_PWR_E (READ(E0_ENABLE_PIN) == E_ENABLE_ON)
|
||||||
|
|
||||||
#define _SET_PWR_X(ena) { WRITE(X_ENABLE_PIN, ena?X_ENABLE_ON:!X_ENABLE_ON); asm("nop"); }
|
#define _SET_PWR_X(ena) WRITE(X_ENABLE_PIN, ena?X_ENABLE_ON:!X_ENABLE_ON)
|
||||||
#define _SET_PWR_Y(ena) { WRITE(Y_ENABLE_PIN, ena?Y_ENABLE_ON:!Y_ENABLE_ON); asm("nop"); }
|
#define _SET_PWR_Y(ena) WRITE(Y_ENABLE_PIN, ena?Y_ENABLE_ON:!Y_ENABLE_ON)
|
||||||
#define _SET_PWR_Z(ena) { WRITE(Z_ENABLE_PIN, ena?Z_ENABLE_ON:!Z_ENABLE_ON); asm("nop"); }
|
#define _SET_PWR_Z(ena) WRITE(Z_ENABLE_PIN, ena?Z_ENABLE_ON:!Z_ENABLE_ON)
|
||||||
#define _SET_PWR_E(ena) { WRITE(E0_ENABLE_PIN, ena?E_ENABLE_ON:!E_ENABLE_ON); asm("nop"); }
|
#define _SET_PWR_E(ena) WRITE(E0_ENABLE_PIN, ena?E_ENABLE_ON:!E_ENABLE_ON)
|
||||||
|
|
||||||
#define _GET_DIR_X (READ(X_DIR_PIN) == INVERT_X_DIR)
|
#define _GET_DIR_X (READ(X_DIR_PIN) == INVERT_X_DIR)
|
||||||
#define _GET_DIR_Y (READ(Y_DIR_PIN) == INVERT_Y_DIR)
|
#define _GET_DIR_Y (READ(Y_DIR_PIN) == INVERT_Y_DIR)
|
||||||
#define _GET_DIR_Z (READ(Z_DIR_PIN) == INVERT_Z_DIR)
|
#define _GET_DIR_Z (READ(Z_DIR_PIN) == INVERT_Z_DIR)
|
||||||
#define _GET_DIR_E (READ(E0_DIR_PIN) == INVERT_E0_DIR)
|
#define _GET_DIR_E (READ(E0_DIR_PIN) == INVERT_E0_DIR)
|
||||||
|
|
||||||
#define _SET_DIR_X(dir) { WRITE(X_DIR_PIN, dir?INVERT_X_DIR:!INVERT_X_DIR); asm("nop"); }
|
#define _SET_DIR_X(dir) WRITE(X_DIR_PIN, dir?INVERT_X_DIR:!INVERT_X_DIR)
|
||||||
#define _SET_DIR_Y(dir) { WRITE(Y_DIR_PIN, dir?INVERT_Y_DIR:!INVERT_Y_DIR); asm("nop"); }
|
#define _SET_DIR_Y(dir) WRITE(Y_DIR_PIN, dir?INVERT_Y_DIR:!INVERT_Y_DIR)
|
||||||
#define _SET_DIR_Z(dir) { WRITE(Z_DIR_PIN, dir?INVERT_Z_DIR:!INVERT_Z_DIR); asm("nop"); }
|
#define _SET_DIR_Z(dir) WRITE(Z_DIR_PIN, dir?INVERT_Z_DIR:!INVERT_Z_DIR)
|
||||||
#define _SET_DIR_E(dir) { WRITE(E0_DIR_PIN, dir?INVERT_E0_DIR:!INVERT_E0_DIR); asm("nop"); }
|
#define _SET_DIR_E(dir) WRITE(E0_DIR_PIN, dir?INVERT_E0_DIR:!INVERT_E0_DIR)
|
||||||
|
|
||||||
#define _DO_STEP_X { WRITE(X_STEP_PIN, !INVERT_X_STEP_PIN); asm("nop"); WRITE(X_STEP_PIN, INVERT_X_STEP_PIN); asm("nop"); }
|
#ifdef TMC2130_DEDGE_STEPPING
|
||||||
#define _DO_STEP_Y { WRITE(Y_STEP_PIN, !INVERT_Y_STEP_PIN); asm("nop"); WRITE(Y_STEP_PIN, INVERT_Y_STEP_PIN); asm("nop"); }
|
#define _DO_STEP_X TOGGLE(X_STEP_PIN)
|
||||||
#define _DO_STEP_Z { WRITE(Z_STEP_PIN, !INVERT_Z_STEP_PIN); asm("nop"); WRITE(Z_STEP_PIN, INVERT_Z_STEP_PIN); asm("nop"); }
|
#define _DO_STEP_Y TOGGLE(Y_STEP_PIN)
|
||||||
#define _DO_STEP_E { WRITE(E0_STEP_PIN, !INVERT_E_STEP_PIN); asm("nop"); WRITE(E0_STEP_PIN, INVERT_E_STEP_PIN); asm("nop"); }
|
#define _DO_STEP_Z TOGGLE(Z_STEP_PIN)
|
||||||
|
#define _DO_STEP_E TOGGLE(E0_STEP_PIN)
|
||||||
|
#else
|
||||||
|
#define _DO_STEP_X { WRITE(X_STEP_PIN, !INVERT_X_STEP_PIN); TMC2130_MINIMUM_DELAY; WRITE(X_STEP_PIN, INVERT_X_STEP_PIN); }
|
||||||
|
#define _DO_STEP_Y { WRITE(Y_STEP_PIN, !INVERT_Y_STEP_PIN); TMC2130_MINIMUM_DELAY; WRITE(Y_STEP_PIN, INVERT_Y_STEP_PIN); }
|
||||||
|
#define _DO_STEP_Z { WRITE(Z_STEP_PIN, !INVERT_Z_STEP_PIN); TMC2130_MINIMUM_DELAY; WRITE(Z_STEP_PIN, INVERT_Z_STEP_PIN); }
|
||||||
|
#define _DO_STEP_E { WRITE(E0_STEP_PIN, !INVERT_E_STEP_PIN); TMC2130_MINIMUM_DELAY; WRITE(E0_STEP_PIN, INVERT_E_STEP_PIN); }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
uint16_t tmc2130_get_res(uint8_t axis)
|
uint16_t tmc2130_get_res(uint8_t axis)
|
||||||
|
|
@ -737,6 +762,7 @@ void tmc2130_set_pwr(uint8_t axis, uint8_t pwr)
|
||||||
case Z_AXIS: _SET_PWR_Z(pwr); break;
|
case Z_AXIS: _SET_PWR_Z(pwr); break;
|
||||||
case E_AXIS: _SET_PWR_E(pwr); break;
|
case E_AXIS: _SET_PWR_E(pwr); break;
|
||||||
}
|
}
|
||||||
|
delayMicroseconds(TMC2130_SET_PWR_DELAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t tmc2130_get_inv(uint8_t axis)
|
uint8_t tmc2130_get_inv(uint8_t axis)
|
||||||
|
|
@ -773,6 +799,7 @@ void tmc2130_set_dir(uint8_t axis, uint8_t dir)
|
||||||
case Z_AXIS: _SET_DIR_Z(dir); break;
|
case Z_AXIS: _SET_DIR_Z(dir); break;
|
||||||
case E_AXIS: _SET_DIR_E(dir); break;
|
case E_AXIS: _SET_DIR_E(dir); break;
|
||||||
}
|
}
|
||||||
|
delayMicroseconds(TMC2130_SET_DIR_DELAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
void tmc2130_do_step(uint8_t axis)
|
void tmc2130_do_step(uint8_t axis)
|
||||||
|
|
@ -788,8 +815,8 @@ void tmc2130_do_step(uint8_t axis)
|
||||||
|
|
||||||
void tmc2130_do_steps(uint8_t axis, uint16_t steps, uint8_t dir, uint16_t delay_us)
|
void tmc2130_do_steps(uint8_t axis, uint16_t steps, uint8_t dir, uint16_t delay_us)
|
||||||
{
|
{
|
||||||
tmc2130_set_dir(axis, dir);
|
if (tmc2130_get_dir(axis) != dir)
|
||||||
delayMicroseconds(100);
|
tmc2130_set_dir(axis, dir);
|
||||||
while (steps--)
|
while (steps--)
|
||||||
{
|
{
|
||||||
tmc2130_do_step(axis);
|
tmc2130_do_step(axis);
|
||||||
|
|
@ -820,7 +847,6 @@ void tmc2130_goto_step(uint8_t axis, uint8_t step, uint8_t dir, uint16_t delay_u
|
||||||
cnt = steps;
|
cnt = steps;
|
||||||
}
|
}
|
||||||
tmc2130_set_dir(axis, dir);
|
tmc2130_set_dir(axis, dir);
|
||||||
delayMicroseconds(100);
|
|
||||||
mscnt = tmc2130_rd_MSCNT(axis);
|
mscnt = tmc2130_rd_MSCNT(axis);
|
||||||
while ((cnt--) && ((mscnt >> shift) != step))
|
while ((cnt--) && ((mscnt >> shift) != step))
|
||||||
{
|
{
|
||||||
|
|
@ -994,13 +1020,13 @@ bool tmc2130_home_calibrate(uint8_t axis)
|
||||||
uint8_t step[16];
|
uint8_t step[16];
|
||||||
uint8_t cnt[16];
|
uint8_t cnt[16];
|
||||||
uint8_t val[16];
|
uint8_t val[16];
|
||||||
homeaxis(axis, true, 16, step);
|
homeaxis(axis, 16, step);
|
||||||
bubblesort_uint8(step, 16, 0);
|
bubblesort_uint8(step, 16, 0);
|
||||||
printf_P(PSTR("sorted samples:\n"));
|
puts_P(PSTR("sorted samples:"));
|
||||||
for (uint8_t i = 0; i < 16; i++)
|
for (uint8_t i = 0; i < 16; i++)
|
||||||
printf_P(PSTR(" i=%2d step=%2d\n"), i, step[i]);
|
printf_P(PSTR(" i=%2d step=%2d\n"), i, step[i]);
|
||||||
uint8_t cl = clusterize_uint8(step, 16, cnt, val, 1);
|
uint8_t cl = clusterize_uint8(step, 16, cnt, val, 1);
|
||||||
printf_P(PSTR("clusters:\n"));
|
puts_P(PSTR("clusters:"));
|
||||||
for (uint8_t i = 0; i < cl; i++)
|
for (uint8_t i = 0; i < cl; i++)
|
||||||
printf_P(PSTR(" i=%2d cnt=%2d val=%2d\n"), i, cnt[i], val[i]);
|
printf_P(PSTR(" i=%2d cnt=%2d val=%2d\n"), i, cnt[i], val[i]);
|
||||||
bubblesort_uint8(cnt, cl, val);
|
bubblesort_uint8(cnt, cl, val);
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,18 @@ extern uint8_t tmc2130_sg_homing_axes_mask;
|
||||||
#define TMC2130_WAVE_FAC1000_MAX 200
|
#define TMC2130_WAVE_FAC1000_MAX 200
|
||||||
#define TMC2130_WAVE_FAC1000_STP 1
|
#define TMC2130_WAVE_FAC1000_STP 1
|
||||||
|
|
||||||
|
#define TMC2130_MINIMUM_PULSE 0 // minimum pulse width in uS
|
||||||
|
#define TMC2130_SET_DIR_DELAY 20 // minimum delay after setting direction in uS
|
||||||
|
#define TMC2130_SET_PWR_DELAY 0 // minimum delay after changing pwr mode in uS
|
||||||
|
|
||||||
|
#ifdef TMC2130_DEDGE_STEPPING
|
||||||
|
#define TMC2130_MINIMUM_DELAY //NOP
|
||||||
|
#elif TMC2130_MINIMUM_PULSE == 0
|
||||||
|
#define TMC2130_MINIMUM_DELAY asm("nop")
|
||||||
|
#else
|
||||||
|
#define TMC2130_MINIMUM_DELAY delayMicroseconds(TMC2130_MINIMUM_PULSE)
|
||||||
|
#endif
|
||||||
|
|
||||||
extern uint8_t tmc2130_home_enabled;
|
extern uint8_t tmc2130_home_enabled;
|
||||||
extern uint8_t tmc2130_home_origin[2];
|
extern uint8_t tmc2130_home_origin[2];
|
||||||
extern uint8_t tmc2130_home_bsteps[2];
|
extern uint8_t tmc2130_home_bsteps[2];
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,118 @@
|
||||||
|
//tone04.c
|
||||||
|
// use atmega timer4 as main tone timer instead of timer2
|
||||||
|
// timer2 is used for System timer.
|
||||||
|
|
||||||
|
#include "system_timer.h"
|
||||||
|
#include "Configuration_prusa.h"
|
||||||
|
|
||||||
|
#ifdef SYSTEM_TIMER_2
|
||||||
|
|
||||||
|
#include "pins.h"
|
||||||
|
#include "fastio.h"
|
||||||
|
#include "macros.h"
|
||||||
|
|
||||||
|
void timer4_init(void)
|
||||||
|
{
|
||||||
|
CRITICAL_SECTION_START;
|
||||||
|
|
||||||
|
SET_OUTPUT(BEEPER);
|
||||||
|
WRITE(BEEPER, LOW);
|
||||||
|
|
||||||
|
SET_OUTPUT(EXTRUDER_0_AUTO_FAN_PIN);
|
||||||
|
|
||||||
|
// Set timer mode 9 (PWM,Phase and Frequency Correct)
|
||||||
|
// Prescaler is CLK/1024
|
||||||
|
// Output compare is disabled on all timer pins
|
||||||
|
// Input capture is disabled
|
||||||
|
// All interrupts are disabled
|
||||||
|
TCCR4A = (1 << WGM40);
|
||||||
|
TCCR4B = (1 << WGM43) | (1 << CS42) | (1 << CS40);
|
||||||
|
OCR4A = 255;
|
||||||
|
OCR4B = 255;
|
||||||
|
OCR4C = 255;
|
||||||
|
TIMSK4 = 0;
|
||||||
|
|
||||||
|
CRITICAL_SECTION_END;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef EXTRUDER_0_AUTO_FAN_PIN
|
||||||
|
void timer4_set_fan0(uint8_t duty)
|
||||||
|
{
|
||||||
|
if (duty == 0 || duty == 255)
|
||||||
|
{
|
||||||
|
// We use digital logic if the duty cycle is 0% or 100%
|
||||||
|
TCCR4A &= ~(1 << COM4C1);
|
||||||
|
OCR4C = 0;
|
||||||
|
WRITE(EXTRUDER_0_AUTO_FAN_PIN, duty);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Use the timer for fan speed. Enable the timer compare output and set the duty cycle.
|
||||||
|
// This function also handles the impossible scenario of a fan speed change during a Tone.
|
||||||
|
// Better be safe than sorry.
|
||||||
|
CRITICAL_SECTION_START;
|
||||||
|
// Enable the PWM output on the fan pin.
|
||||||
|
TCCR4A |= (1 << COM4C1);
|
||||||
|
OCR4C = (((uint32_t)duty) * ((uint32_t)((TIMSK4 & (1 << OCIE4A))?OCR4A:255))) / ((uint32_t)255);
|
||||||
|
CRITICAL_SECTION_END;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif //EXTRUDER_0_AUTO_FAN_PIN
|
||||||
|
|
||||||
|
// Because of the timer mode change, we need two interrupts. We could also try to assume that the frequency is x2
|
||||||
|
// and use a TOGGLE(), but this seems to work well enough so I left it as it is now.
|
||||||
|
ISR(TIMER4_COMPA_vect)
|
||||||
|
{
|
||||||
|
WRITE(BEEPER, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
ISR(TIMER4_OVF_vect)
|
||||||
|
{
|
||||||
|
WRITE(BEEPER, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void tone4(_UNUSED uint8_t _pin, uint16_t frequency)
|
||||||
|
{
|
||||||
|
//this ocr and prescalarbits calculation is taken from the Arduino core and simplified for one type of timer only
|
||||||
|
uint8_t prescalarbits = 0b001;
|
||||||
|
uint32_t ocr = F_CPU / frequency / 2 - 1;
|
||||||
|
|
||||||
|
if (ocr > 0xffff)
|
||||||
|
{
|
||||||
|
ocr = F_CPU / frequency / 2 / 64 - 1;
|
||||||
|
prescalarbits = 0b011;
|
||||||
|
}
|
||||||
|
|
||||||
|
CRITICAL_SECTION_START;
|
||||||
|
// Set calcualted prescaler
|
||||||
|
TCCR4B = (TCCR4B & 0b11111000) | prescalarbits;
|
||||||
|
#ifdef EXTRUDER_0_AUTO_FAN_PIN
|
||||||
|
// Scale the fan PWM duty cycle so that it remains constant, but at the tone frequency
|
||||||
|
OCR4C = (((uint32_t)OCR4C) * ocr) / (uint32_t)((TIMSK4 & (1 << OCIE4A))?OCR4A:255);
|
||||||
|
#endif //EXTRUDER_0_AUTO_FAN_PIN
|
||||||
|
// Set calcualted ocr
|
||||||
|
OCR4A = ocr;
|
||||||
|
// Enable Output compare A interrupt and timer overflow interrupt
|
||||||
|
TIMSK4 |= (1 << OCIE4A) | (1 << TOIE4);
|
||||||
|
CRITICAL_SECTION_END;
|
||||||
|
}
|
||||||
|
|
||||||
|
void noTone4(_UNUSED uint8_t _pin)
|
||||||
|
{
|
||||||
|
CRITICAL_SECTION_START;
|
||||||
|
// Revert prescaler to CLK/1024
|
||||||
|
TCCR4B = (TCCR4B & 0b11111000) | (1 << CS42) | (1 << CS40);
|
||||||
|
#ifdef EXTRUDER_0_AUTO_FAN_PIN
|
||||||
|
// Scale the fan OCR back to the original value.
|
||||||
|
OCR4C = (((uint32_t)OCR4C) * (uint32_t)255) / (uint32_t)((TIMSK4 & (1 << OCIE4A))?OCR4A:255);
|
||||||
|
#endif //EXTRUDER_0_AUTO_FAN_PIN
|
||||||
|
OCR4A = 255;
|
||||||
|
// Disable Output compare A interrupt and timer overflow interrupt
|
||||||
|
TIMSK4 &= ~((1 << OCIE4A) | (1 << TOIE4));
|
||||||
|
CRITICAL_SECTION_END;
|
||||||
|
// Turn beeper off if it was on when noTone was called
|
||||||
|
WRITE(BEEPER, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif //SYSTEM_TIMER_2
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
//tone04.h
|
||||||
|
// use atmega timer4 as main tone timer instead of timer2
|
||||||
|
// timer2 is used for System timer.
|
||||||
|
#ifndef TIMER04_H
|
||||||
|
#define TIMER04_H
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
extern "C" {
|
||||||
|
#endif //defined(__cplusplus)
|
||||||
|
|
||||||
|
extern void timer4_init(void);
|
||||||
|
|
||||||
|
extern void timer4_set_fan0(uint8_t duty);
|
||||||
|
|
||||||
|
extern void tone4(uint8_t _pin, uint16_t frequency);
|
||||||
|
|
||||||
|
extern void noTone4(uint8_t _pin);
|
||||||
|
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
}
|
||||||
|
#endif //defined(__cplusplus)
|
||||||
|
|
||||||
|
#endif //TIMER02_H
|
||||||
|
|
@ -0,0 +1,137 @@
|
||||||
|
/*
|
||||||
|
twi.c - Stripped-down TWI/I2C library
|
||||||
|
Copyright (c) 2006 Nicholas Zambetti. All right reserved.
|
||||||
|
|
||||||
|
This library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with this library; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <math.h>
|
||||||
|
#include "config.h"
|
||||||
|
#include "fastio.h"
|
||||||
|
#include "twi.h"
|
||||||
|
|
||||||
|
|
||||||
|
void twi_init(void)
|
||||||
|
{
|
||||||
|
// activate internal pullups for twi.
|
||||||
|
WRITE(SDA_PIN, 1);
|
||||||
|
WRITE(SCL_PIN, 1);
|
||||||
|
|
||||||
|
// initialize twi prescaler and bit rate
|
||||||
|
TWSR &= ~(_BV(TWPS0) | _BV(TWPS1));
|
||||||
|
TWBR = ((F_CPU / TWI_FREQ) - 16) / 2;
|
||||||
|
|
||||||
|
/* twi bit rate formula from atmega128 manual pg 204
|
||||||
|
SCL Frequency = CPU Clock Frequency / (16 + (2 * TWBR))
|
||||||
|
note: TWBR should be 10 or higher for master mode
|
||||||
|
It is 72 for a 16mhz Wiring board with 100kHz TWI */
|
||||||
|
}
|
||||||
|
|
||||||
|
void twi_disable(void)
|
||||||
|
{
|
||||||
|
// deactivate internal pullups for twi.
|
||||||
|
WRITE(SDA_PIN, 0);
|
||||||
|
WRITE(SCL_PIN, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void twi_stop()
|
||||||
|
{
|
||||||
|
TWCR = _BV(TWEN) | _BV(TWINT) | _BV(TWSTO);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static uint8_t twi_wait(uint8_t status)
|
||||||
|
{
|
||||||
|
while(!(TWCR & _BV(TWINT)));
|
||||||
|
if(TW_STATUS != status)
|
||||||
|
{
|
||||||
|
twi_stop();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static uint8_t twi_start(uint8_t address, uint8_t reg)
|
||||||
|
{
|
||||||
|
// send start condition
|
||||||
|
TWCR = _BV(TWEN) | _BV(TWINT) | _BV(TWSTA);
|
||||||
|
if(twi_wait(TW_START))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
// send address
|
||||||
|
TWDR = TW_WRITE | (address << 1);
|
||||||
|
TWCR = _BV(TWEN) | _BV(TWINT);
|
||||||
|
if(twi_wait(TW_MT_SLA_ACK))
|
||||||
|
return 2;
|
||||||
|
|
||||||
|
// send register
|
||||||
|
TWDR = reg;
|
||||||
|
TWCR = _BV(TWEN) | _BV(TWINT);
|
||||||
|
if(twi_wait(TW_MT_DATA_ACK))
|
||||||
|
return 3;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
uint8_t twi_r8(uint8_t address, uint8_t reg, uint8_t* data)
|
||||||
|
{
|
||||||
|
if(twi_start(address, reg))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
// repeat start
|
||||||
|
TWCR = _BV(TWEN) | _BV(TWINT) | _BV(TWSTA);
|
||||||
|
if(twi_wait(TW_REP_START))
|
||||||
|
return 2;
|
||||||
|
|
||||||
|
// start receiving
|
||||||
|
TWDR = TW_READ | (address << 1);
|
||||||
|
TWCR = _BV(TWEN) | _BV(TWINT);
|
||||||
|
if(twi_wait(TW_MR_SLA_ACK))
|
||||||
|
return 3;
|
||||||
|
|
||||||
|
// receive data
|
||||||
|
TWCR = _BV(TWEN) | _BV(TWINT);
|
||||||
|
if(twi_wait(TW_MR_DATA_NACK))
|
||||||
|
return 4;
|
||||||
|
|
||||||
|
*data = TWDR;
|
||||||
|
|
||||||
|
// send stop
|
||||||
|
twi_stop();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
uint8_t twi_w8(uint8_t address, uint8_t reg, uint8_t data)
|
||||||
|
{
|
||||||
|
if(twi_start(address, reg))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
// send data
|
||||||
|
TWDR = data;
|
||||||
|
TWCR = _BV(TWEN) | _BV(TWINT);
|
||||||
|
if(twi_wait(TW_MT_DATA_ACK))
|
||||||
|
return 2;
|
||||||
|
|
||||||
|
// send stop
|
||||||
|
twi_stop();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,63 @@
|
||||||
|
/*
|
||||||
|
twi.h - Stripped-down TWI/I2C library
|
||||||
|
Copyright (c) 2006 Nicholas Zambetti. All right reserved.
|
||||||
|
|
||||||
|
This library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with this library; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <compat/twi.h>
|
||||||
|
|
||||||
|
#ifndef TWI_FREQ
|
||||||
|
#define TWI_FREQ 400000L
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function twi_init
|
||||||
|
* Desc readys twi pins and sets twi bitrate
|
||||||
|
* Input none
|
||||||
|
* Output none
|
||||||
|
*/
|
||||||
|
void twi_init(void);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function twi_disable
|
||||||
|
* Desc disables twi pins
|
||||||
|
* Input none
|
||||||
|
* Output none
|
||||||
|
*/
|
||||||
|
void twi_disable(void);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function twi_r8
|
||||||
|
* Desc read a single byte from a device
|
||||||
|
* Input address: 7bit i2c device address
|
||||||
|
* reg: register address
|
||||||
|
* data: pointer to byte for result
|
||||||
|
* Output 0 on success
|
||||||
|
*/
|
||||||
|
uint8_t twi_r8(uint8_t address, uint8_t reg, uint8_t* data);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function twi_w8
|
||||||
|
* Desc write a single byte from a device
|
||||||
|
* Input address: 7bit i2c device address
|
||||||
|
* reg: register address
|
||||||
|
* data: byte to write
|
||||||
|
* Output 0 on success
|
||||||
|
*/
|
||||||
|
uint8_t twi_w8(uint8_t address, uint8_t reg, uint8_t data);
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
#include <avr/interrupt.h>
|
#include <avr/interrupt.h>
|
||||||
#include <avr/pgmspace.h>
|
#include <avr/pgmspace.h>
|
||||||
#include "rbuf.h"
|
#include "rbuf.h"
|
||||||
|
#include "macros.h"
|
||||||
|
|
||||||
#define UART2_BAUD 115200
|
#define UART2_BAUD 115200
|
||||||
#define UART_BAUD_SELECT(baudRate,xtalCpu) (((float)(xtalCpu))/(((float)(baudRate))*8.0)-1.0+0.5)
|
#define UART_BAUD_SELECT(baudRate,xtalCpu) (((float)(xtalCpu))/(((float)(baudRate))*8.0)-1.0+0.5)
|
||||||
|
|
@ -16,7 +17,7 @@ uint8_t uart2_ibuf[14] = {0, 0};
|
||||||
FILE _uart2io = {0};
|
FILE _uart2io = {0};
|
||||||
|
|
||||||
|
|
||||||
int uart2_putchar(char c, FILE *stream __attribute__((unused)))
|
int uart2_putchar(char c, _UNUSED FILE *stream)
|
||||||
{
|
{
|
||||||
while (!uart2_txready);
|
while (!uart2_txready);
|
||||||
UDR2 = c; // transmit byte
|
UDR2 = c; // transmit byte
|
||||||
|
|
@ -25,7 +26,7 @@ int uart2_putchar(char c, FILE *stream __attribute__((unused)))
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int uart2_getchar(FILE *stream __attribute__((unused)))
|
int uart2_getchar(_UNUSED FILE *stream)
|
||||||
{
|
{
|
||||||
if (rbuf_empty(uart2_ibuf)) return -1;
|
if (rbuf_empty(uart2_ibuf)) return -1;
|
||||||
return rbuf_get(uart2_ibuf);
|
return rbuf_get(uart2_ibuf);
|
||||||
|
|
@ -78,7 +79,7 @@ ISR(USART2_RX_vect)
|
||||||
if (rbuf_put(uart2_ibuf, UDR2) < 0) // put received byte to buffer
|
if (rbuf_put(uart2_ibuf, UDR2) < 0) // put received byte to buffer
|
||||||
{ //rx buffer full
|
{ //rx buffer full
|
||||||
//uart2_rx_clr(); //for sure, clear input buffer
|
//uart2_rx_clr(); //for sure, clear input buffer
|
||||||
printf_P(PSTR("USART2 rx Full!!!\n"));
|
puts_P(PSTR("USART2 rx Full!!!"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -23,9 +23,11 @@ void lcd_setstatuspgm(const char* message);
|
||||||
//! - always returns the display to the main status screen
|
//! - always returns the display to the main status screen
|
||||||
//! - always makes lcd_reset (which is slow and causes flicker)
|
//! - always makes lcd_reset (which is slow and causes flicker)
|
||||||
//! - does not update the message if there is already one (i.e. lcd_status_message_level > 0)
|
//! - does not update the message if there is already one (i.e. lcd_status_message_level > 0)
|
||||||
|
void lcd_setalertstatus(const char* message);
|
||||||
void lcd_setalertstatuspgm(const char* message);
|
void lcd_setalertstatuspgm(const char* message);
|
||||||
//! only update the alert message on the main status screen
|
//! only update the alert message on the main status screen
|
||||||
//! has no sideeffects, may be called multiple times
|
//! has no sideeffects, may be called multiple times
|
||||||
|
void lcd_updatestatus(const char *message);
|
||||||
void lcd_updatestatuspgm(const char *message);
|
void lcd_updatestatuspgm(const char *message);
|
||||||
|
|
||||||
void lcd_reset_alert_level();
|
void lcd_reset_alert_level();
|
||||||
|
|
@ -45,7 +47,6 @@ void lcd_pause_print();
|
||||||
void lcd_resume_print();
|
void lcd_resume_print();
|
||||||
void lcd_print_stop();
|
void lcd_print_stop();
|
||||||
void prusa_statistics(int _message, uint8_t _col_nr = 0);
|
void prusa_statistics(int _message, uint8_t _col_nr = 0);
|
||||||
void lcd_confirm_print();
|
|
||||||
unsigned char lcd_choose_color();
|
unsigned char lcd_choose_color();
|
||||||
void lcd_load_filament_color_check();
|
void lcd_load_filament_color_check();
|
||||||
//void lcd_mylang();
|
//void lcd_mylang();
|
||||||
|
|
@ -125,7 +126,6 @@ extern CustomMsg custom_message_type;
|
||||||
extern unsigned int custom_message_state;
|
extern unsigned int custom_message_state;
|
||||||
|
|
||||||
extern uint8_t farm_mode;
|
extern uint8_t farm_mode;
|
||||||
extern int farm_no;
|
|
||||||
extern int farm_timer;
|
extern int farm_timer;
|
||||||
extern uint8_t farm_status;
|
extern uint8_t farm_status;
|
||||||
|
|
||||||
|
|
@ -142,7 +142,7 @@ extern uint8_t farm_status;
|
||||||
|
|
||||||
#ifdef IR_SENSOR_ANALOG
|
#ifdef IR_SENSOR_ANALOG
|
||||||
extern bool bMenuFSDetect;
|
extern bool bMenuFSDetect;
|
||||||
void printf_IRSensorAnalogBoardChange(bool bPCBrev03b);
|
void printf_IRSensorAnalogBoardChange();
|
||||||
#endif //IR_SENSOR_ANALOG
|
#endif //IR_SENSOR_ANALOG
|
||||||
|
|
||||||
extern int8_t SilentModeMenu;
|
extern int8_t SilentModeMenu;
|
||||||
|
|
@ -205,6 +205,7 @@ void lcd_farm_sdcard_menu_w();
|
||||||
|
|
||||||
void lcd_wait_for_heater();
|
void lcd_wait_for_heater();
|
||||||
void lcd_wait_for_cool_down();
|
void lcd_wait_for_cool_down();
|
||||||
|
void lcd_move_e(); // NOT static due to usage in Marlin_main
|
||||||
void lcd_extr_cal_reset();
|
void lcd_extr_cal_reset();
|
||||||
|
|
||||||
void lcd_temp_cal_show_result(bool result);
|
void lcd_temp_cal_show_result(bool result);
|
||||||
|
|
@ -257,12 +258,11 @@ enum class WizState : uint8_t
|
||||||
|
|
||||||
void lcd_wizard(WizState state);
|
void lcd_wizard(WizState state);
|
||||||
|
|
||||||
#define VOLT_DIV_REF 5
|
extern void lcd_experimental_toggle();
|
||||||
#ifdef IR_SENSOR_ANALOG
|
extern void lcd_experimental_menu();
|
||||||
#define IRsensor_Hmin_TRESHOLD (3.0*1023*OVERSAMPLENR/VOLT_DIV_REF) // ~3.0V (0.6*Vcc)
|
|
||||||
#define IRsensor_Lmax_TRESHOLD (1.5*1023*OVERSAMPLENR/VOLT_DIV_REF) // ~1.5V (0.3*Vcc)
|
#ifdef PINDA_TEMP_COMP
|
||||||
#define IRsensor_Hopen_TRESHOLD (4.6*1023*OVERSAMPLENR/VOLT_DIV_REF) // ~4.6V (N.C. @ Ru~20-50k, Rd'=56k, Ru'=10k)
|
extern void lcd_pinda_temp_compensation_toggle();
|
||||||
#define IRsensor_Ldiode_TRESHOLD (0.3*1023*OVERSAMPLENR/VOLT_DIV_REF) // ~0.3V
|
#endif //PINDA_TEMP_COMP
|
||||||
#endif //IR_SENSOR_ANALOG
|
|
||||||
|
|
||||||
#endif //ULTRALCD_H
|
#endif //ULTRALCD_H
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
#include "sound.h"
|
#include "sound.h"
|
||||||
#include "language.h"
|
#include "language.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
#include <avr/pgmspace.h>
|
||||||
|
|
||||||
// Allocate the version string in the program memory. Otherwise the string lands either on the stack or in the global RAM.
|
// Allocate the version string in the program memory. Otherwise the string lands either on the stack or in the global RAM.
|
||||||
const char FW_VERSION_STR[] PROGMEM = FW_VERSION;
|
const char FW_VERSION_STR[] PROGMEM = FW_VERSION;
|
||||||
|
|
@ -428,13 +429,13 @@ switch(oCheckModel)
|
||||||
{
|
{
|
||||||
case ClCheckModel::_Warn:
|
case ClCheckModel::_Warn:
|
||||||
// lcd_show_fullscreen_message_and_wait_P(_i("Printer model differs from the G-code. Continue?"));
|
// lcd_show_fullscreen_message_and_wait_P(_i("Printer model differs from the G-code. Continue?"));
|
||||||
lcd_display_message_fullscreen_P(_i("G-code sliced for a different printer type. Continue?"));
|
lcd_display_message_fullscreen_P(_T(MSG_GCODE_DIFF_PRINTER_CONTINUE));
|
||||||
lcd_wait_for_click_delay(MSG_PRINT_CHECKING_FAILED_TIMEOUT);
|
lcd_wait_for_click_delay(MSG_PRINT_CHECKING_FAILED_TIMEOUT);
|
||||||
//???custom_message_type=CUSTOM_MSG_TYPE_STATUS; // display / status-line recovery
|
//???custom_message_type=CUSTOM_MSG_TYPE_STATUS; // display / status-line recovery
|
||||||
lcd_update_enable(true); // display / status-line recovery
|
lcd_update_enable(true); // display / status-line recovery
|
||||||
break;
|
break;
|
||||||
case ClCheckModel::_Strict:
|
case ClCheckModel::_Strict:
|
||||||
lcd_show_fullscreen_message_and_wait_P(_i("G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."));
|
lcd_show_fullscreen_message_and_wait_P(_T(MSG_GCODE_DIFF_PRINTER_CANCELLED));
|
||||||
lcd_print_stop();
|
lcd_print_stop();
|
||||||
break;
|
break;
|
||||||
case ClCheckModel::_None:
|
case ClCheckModel::_None:
|
||||||
|
|
@ -577,13 +578,13 @@ switch(oCheckModel)
|
||||||
{
|
{
|
||||||
case ClCheckModel::_Warn:
|
case ClCheckModel::_Warn:
|
||||||
// lcd_show_fullscreen_message_and_wait_P(_i("Printer model differs from the G-code. Continue?"));
|
// lcd_show_fullscreen_message_and_wait_P(_i("Printer model differs from the G-code. Continue?"));
|
||||||
lcd_display_message_fullscreen_P(_i("G-code sliced for a different printer type. Continue?"));
|
lcd_display_message_fullscreen_P(_T(MSG_GCODE_DIFF_PRINTER_CONTINUE));
|
||||||
lcd_wait_for_click_delay(MSG_PRINT_CHECKING_FAILED_TIMEOUT);
|
lcd_wait_for_click_delay(MSG_PRINT_CHECKING_FAILED_TIMEOUT);
|
||||||
//???custom_message_type=CUSTOM_MSG_TYPE_STATUS; // display / status-line recovery
|
//???custom_message_type=CUSTOM_MSG_TYPE_STATUS; // display / status-line recovery
|
||||||
lcd_update_enable(true); // display / status-line recovery
|
lcd_update_enable(true); // display / status-line recovery
|
||||||
break;
|
break;
|
||||||
case ClCheckModel::_Strict:
|
case ClCheckModel::_Strict:
|
||||||
lcd_show_fullscreen_message_and_wait_P(_i("G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."));
|
lcd_show_fullscreen_message_and_wait_P(_T(MSG_GCODE_DIFF_PRINTER_CANCELLED));
|
||||||
lcd_print_stop();
|
lcd_print_stop();
|
||||||
break;
|
break;
|
||||||
case ClCheckModel::_None:
|
case ClCheckModel::_None:
|
||||||
|
|
@ -604,3 +605,9 @@ else {
|
||||||
sPrinterName=_sPrinterName;
|
sPrinterName=_sPrinterName;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ip4_to_str(char* dest, uint8_t* IP)
|
||||||
|
{
|
||||||
|
sprintf_P(dest, PSTR("%u.%u.%u.%u"), IP[0], IP[1], IP[2], IP[3]);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,7 @@ enum class ClNozzleDiameter:uint_least8_t
|
||||||
_Diameter_250=25,
|
_Diameter_250=25,
|
||||||
_Diameter_400=40,
|
_Diameter_400=40,
|
||||||
_Diameter_600=60,
|
_Diameter_600=60,
|
||||||
|
_Diameter_800=80,
|
||||||
_Diameter_Undef=EEPROM_EMPTY_VALUE
|
_Diameter_Undef=EEPROM_EMPTY_VALUE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -109,4 +110,7 @@ void gcode_level_check(uint16_t nGcodeLevel);
|
||||||
|
|
||||||
void fSetMmuMode(bool bMMu);
|
void fSetMmuMode(bool bMMu);
|
||||||
|
|
||||||
|
#define IP4_STR_SIZE 16
|
||||||
|
extern void ip4_to_str(char* dest, uint8_t* IP);
|
||||||
|
|
||||||
#endif /* UTIL_H */
|
#endif /* UTIL_H */
|
||||||
|
|
|
||||||
|
|
@ -90,8 +90,9 @@ AXIS SETTINGS
|
||||||
#define DEFAULT_MAX_ACCELERATION {9000,9000,500,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot.
|
#define DEFAULT_MAX_ACCELERATION {9000,9000,500,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot.
|
||||||
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
||||||
|
|
||||||
#define DEFAULT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for printing moves
|
#define DEFAULT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for printing moves
|
||||||
#define DEFAULT_RETRACT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for retracts
|
#define DEFAULT_RETRACT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for retracts
|
||||||
|
#define DEFAULT_TRAVEL_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for travels
|
||||||
|
|
||||||
|
|
||||||
#define MANUAL_FEEDRATE {3000, 3000, 1000, 100} // set the speeds for manual moves (mm/min)
|
#define MANUAL_FEEDRATE {3000, 3000, 1000, 100} // set the speeds for manual moves (mm/min)
|
||||||
|
|
@ -326,10 +327,18 @@ PREHEAT SETTINGS
|
||||||
#define PLA_PREHEAT_HPB_TEMP 55
|
#define PLA_PREHEAT_HPB_TEMP 55
|
||||||
#define PLA_PREHEAT_FAN_SPEED 0
|
#define PLA_PREHEAT_FAN_SPEED 0
|
||||||
|
|
||||||
|
#define PVB_PREHEAT_HOTEND_TEMP 215
|
||||||
|
#define PVB_PREHEAT_HPB_TEMP 75
|
||||||
|
#define PVB_PREHEAT_FAN_SPEED 0
|
||||||
|
|
||||||
#define ASA_PREHEAT_HOTEND_TEMP 260
|
#define ASA_PREHEAT_HOTEND_TEMP 260
|
||||||
#define ASA_PREHEAT_HPB_TEMP 105
|
#define ASA_PREHEAT_HPB_TEMP 105
|
||||||
#define ASA_PREHEAT_FAN_SPEED 0
|
#define ASA_PREHEAT_FAN_SPEED 0
|
||||||
|
|
||||||
|
#define PC_PREHEAT_HOTEND_TEMP 275
|
||||||
|
#define PC_PREHEAT_HPB_TEMP 105
|
||||||
|
#define PC_PREHEAT_FAN_SPEED 0
|
||||||
|
|
||||||
#define ABS_PREHEAT_HOTEND_TEMP 255
|
#define ABS_PREHEAT_HOTEND_TEMP 255
|
||||||
#define ABS_PREHEAT_HPB_TEMP 100
|
#define ABS_PREHEAT_HPB_TEMP 100
|
||||||
#define ABS_PREHEAT_FAN_SPEED 0
|
#define ABS_PREHEAT_FAN_SPEED 0
|
||||||
|
|
|
||||||
|
|
@ -90,8 +90,9 @@ AXIS SETTINGS
|
||||||
#define DEFAULT_MAX_ACCELERATION {9000,9000,500,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot.
|
#define DEFAULT_MAX_ACCELERATION {9000,9000,500,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot.
|
||||||
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
||||||
|
|
||||||
#define DEFAULT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for printing moves
|
#define DEFAULT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for printing moves
|
||||||
#define DEFAULT_RETRACT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for retracts
|
#define DEFAULT_RETRACT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for retracts
|
||||||
|
#define DEFAULT_TRAVEL_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for travels
|
||||||
|
|
||||||
|
|
||||||
#define MANUAL_FEEDRATE {3000, 3000, 1000, 100} // set the speeds for manual moves (mm/min)
|
#define MANUAL_FEEDRATE {3000, 3000, 1000, 100} // set the speeds for manual moves (mm/min)
|
||||||
|
|
@ -323,9 +324,15 @@ PREHEAT SETTINGS
|
||||||
#define PLA_PREHEAT_HOTEND_TEMP 215
|
#define PLA_PREHEAT_HOTEND_TEMP 215
|
||||||
#define PLA_PREHEAT_HPB_TEMP 55
|
#define PLA_PREHEAT_HPB_TEMP 55
|
||||||
|
|
||||||
|
#define PVB_PREHEAT_HOTEND_TEMP 215
|
||||||
|
#define PVB_PREHEAT_HPB_TEMP 75
|
||||||
|
|
||||||
#define ASA_PREHEAT_HOTEND_TEMP 260
|
#define ASA_PREHEAT_HOTEND_TEMP 260
|
||||||
#define ASA_PREHEAT_HPB_TEMP 105
|
#define ASA_PREHEAT_HPB_TEMP 105
|
||||||
|
|
||||||
|
#define PC_PREHEAT_HOTEND_TEMP 275
|
||||||
|
#define PC_PREHEAT_HPB_TEMP 105
|
||||||
|
|
||||||
#define ABS_PREHEAT_HOTEND_TEMP 255
|
#define ABS_PREHEAT_HOTEND_TEMP 255
|
||||||
#define ABS_PREHEAT_HPB_TEMP 100
|
#define ABS_PREHEAT_HPB_TEMP 100
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -94,8 +94,9 @@
|
||||||
#define DEFAULT_MAX_ACCELERATION {1000, 1000, 200, 5000} // (mm/sec^2) max acceleration (M201)
|
#define DEFAULT_MAX_ACCELERATION {1000, 1000, 200, 5000} // (mm/sec^2) max acceleration (M201)
|
||||||
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
||||||
|
|
||||||
#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204S)
|
#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204P)
|
||||||
#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204T)
|
#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204R)
|
||||||
|
#define DEFAULT_TRAVEL_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for travels (M204T)
|
||||||
|
|
||||||
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
||||||
|
|
||||||
|
|
@ -175,6 +176,9 @@
|
||||||
#if BED_MINTEMP_DELAY>USHRT_MAX
|
#if BED_MINTEMP_DELAY>USHRT_MAX
|
||||||
#error "Check maximal allowed value @ ShortTimer (see BED_MINTEMP_DELAY definition)"
|
#error "Check maximal allowed value @ ShortTimer (see BED_MINTEMP_DELAY definition)"
|
||||||
#endif
|
#endif
|
||||||
|
#define SUPERPINDA_SUPPORT
|
||||||
|
#define PINDA_MINTEMP 30 //The miniRAMBo thermistor readings below 30°C aren't very accurate
|
||||||
|
#define PINDA_TEMP_COMP //Used to enable SuperPINDA toggle menu/function
|
||||||
|
|
||||||
// Maxtemps
|
// Maxtemps
|
||||||
#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
|
#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
|
||||||
|
|
@ -381,9 +385,15 @@
|
||||||
#define PLA_PREHEAT_HOTEND_TEMP 215
|
#define PLA_PREHEAT_HOTEND_TEMP 215
|
||||||
#define PLA_PREHEAT_HPB_TEMP 60
|
#define PLA_PREHEAT_HPB_TEMP 60
|
||||||
|
|
||||||
|
#define PVB_PREHEAT_HOTEND_TEMP 215
|
||||||
|
#define PVB_PREHEAT_HPB_TEMP 75
|
||||||
|
|
||||||
#define ASA_PREHEAT_HOTEND_TEMP 260
|
#define ASA_PREHEAT_HOTEND_TEMP 260
|
||||||
#define ASA_PREHEAT_HPB_TEMP 105
|
#define ASA_PREHEAT_HPB_TEMP 105
|
||||||
|
|
||||||
|
#define PC_PREHEAT_HOTEND_TEMP 275
|
||||||
|
#define PC_PREHEAT_HPB_TEMP 105
|
||||||
|
|
||||||
#define ABS_PREHEAT_HOTEND_TEMP 255
|
#define ABS_PREHEAT_HOTEND_TEMP 255
|
||||||
#define ABS_PREHEAT_HPB_TEMP 100
|
#define ABS_PREHEAT_HPB_TEMP 100
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -95,8 +95,9 @@
|
||||||
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
||||||
|
|
||||||
|
|
||||||
#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204S)
|
#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204P)
|
||||||
#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204T)
|
#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204R)
|
||||||
|
#define DEFAULT_TRAVEL_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for travels (M204T)
|
||||||
|
|
||||||
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
||||||
|
|
||||||
|
|
@ -176,6 +177,9 @@
|
||||||
#if BED_MINTEMP_DELAY>USHRT_MAX
|
#if BED_MINTEMP_DELAY>USHRT_MAX
|
||||||
#error "Check maximal allowed value @ ShortTimer (see BED_MINTEMP_DELAY definition)"
|
#error "Check maximal allowed value @ ShortTimer (see BED_MINTEMP_DELAY definition)"
|
||||||
#endif
|
#endif
|
||||||
|
#define SUPERPINDA_SUPPORT
|
||||||
|
#define PINDA_MINTEMP 30 //The miniRAMBo thermistor readings below 30°C aren't very accurate
|
||||||
|
#define PINDA_TEMP_COMP //Used to enable SuperPINDA toggle menu/function
|
||||||
|
|
||||||
// Maxtemps
|
// Maxtemps
|
||||||
#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
|
#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
|
||||||
|
|
@ -382,9 +386,15 @@
|
||||||
#define PLA_PREHEAT_HOTEND_TEMP 215
|
#define PLA_PREHEAT_HOTEND_TEMP 215
|
||||||
#define PLA_PREHEAT_HPB_TEMP 60
|
#define PLA_PREHEAT_HPB_TEMP 60
|
||||||
|
|
||||||
|
#define PVB_PREHEAT_HOTEND_TEMP 215
|
||||||
|
#define PVB_PREHEAT_HPB_TEMP 75
|
||||||
|
|
||||||
#define ASA_PREHEAT_HOTEND_TEMP 260
|
#define ASA_PREHEAT_HOTEND_TEMP 260
|
||||||
#define ASA_PREHEAT_HPB_TEMP 105
|
#define ASA_PREHEAT_HPB_TEMP 105
|
||||||
|
|
||||||
|
#define PC_PREHEAT_HOTEND_TEMP 275
|
||||||
|
#define PC_PREHEAT_HPB_TEMP 105
|
||||||
|
|
||||||
#define ABS_PREHEAT_HOTEND_TEMP 255
|
#define ABS_PREHEAT_HOTEND_TEMP 255
|
||||||
#define ABS_PREHEAT_HPB_TEMP 100
|
#define ABS_PREHEAT_HPB_TEMP 100
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -94,8 +94,9 @@
|
||||||
#define DEFAULT_MAX_ACCELERATION {1000, 1000, 200, 5000} // (mm/sec^2) max acceleration (M201)
|
#define DEFAULT_MAX_ACCELERATION {1000, 1000, 200, 5000} // (mm/sec^2) max acceleration (M201)
|
||||||
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
||||||
|
|
||||||
#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204S)
|
#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204P)
|
||||||
#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204T)
|
#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204R)
|
||||||
|
#define DEFAULT_TRAVEL_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for travels (M204T)
|
||||||
|
|
||||||
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
||||||
|
|
||||||
|
|
@ -175,6 +176,9 @@
|
||||||
#if BED_MINTEMP_DELAY>USHRT_MAX
|
#if BED_MINTEMP_DELAY>USHRT_MAX
|
||||||
#error "Check maximal allowed value @ ShortTimer (see BED_MINTEMP_DELAY definition)"
|
#error "Check maximal allowed value @ ShortTimer (see BED_MINTEMP_DELAY definition)"
|
||||||
#endif
|
#endif
|
||||||
|
#define SUPERPINDA_SUPPORT
|
||||||
|
#define PINDA_MINTEMP 30 //The miniRAMBo thermistor readings below 30°C aren't very accurate
|
||||||
|
#define PINDA_TEMP_COMP //Used to enable SuperPINDA toggle menu/function
|
||||||
|
|
||||||
// Maxtemps
|
// Maxtemps
|
||||||
#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
|
#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
|
||||||
|
|
@ -381,9 +385,15 @@
|
||||||
#define PLA_PREHEAT_HOTEND_TEMP 215
|
#define PLA_PREHEAT_HOTEND_TEMP 215
|
||||||
#define PLA_PREHEAT_HPB_TEMP 60
|
#define PLA_PREHEAT_HPB_TEMP 60
|
||||||
|
|
||||||
|
#define PVB_PREHEAT_HOTEND_TEMP 215
|
||||||
|
#define PVB_PREHEAT_HPB_TEMP 75
|
||||||
|
|
||||||
#define ASA_PREHEAT_HOTEND_TEMP 260
|
#define ASA_PREHEAT_HOTEND_TEMP 260
|
||||||
#define ASA_PREHEAT_HPB_TEMP 105
|
#define ASA_PREHEAT_HPB_TEMP 105
|
||||||
|
|
||||||
|
#define PC_PREHEAT_HOTEND_TEMP 275
|
||||||
|
#define PC_PREHEAT_HPB_TEMP 105
|
||||||
|
|
||||||
#define ABS_PREHEAT_HOTEND_TEMP 255
|
#define ABS_PREHEAT_HOTEND_TEMP 255
|
||||||
#define ABS_PREHEAT_HPB_TEMP 100
|
#define ABS_PREHEAT_HPB_TEMP 100
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -95,8 +95,9 @@
|
||||||
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
||||||
|
|
||||||
|
|
||||||
#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204S)
|
#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204P)
|
||||||
#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204T)
|
#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204R)
|
||||||
|
#define DEFAULT_TRAVEL_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for travels (M204T)
|
||||||
|
|
||||||
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
||||||
|
|
||||||
|
|
@ -176,6 +177,9 @@
|
||||||
#if BED_MINTEMP_DELAY>USHRT_MAX
|
#if BED_MINTEMP_DELAY>USHRT_MAX
|
||||||
#error "Check maximal allowed value @ ShortTimer (see BED_MINTEMP_DELAY definition)"
|
#error "Check maximal allowed value @ ShortTimer (see BED_MINTEMP_DELAY definition)"
|
||||||
#endif
|
#endif
|
||||||
|
#define SUPERPINDA_SUPPORT
|
||||||
|
#define PINDA_MINTEMP 30 //The miniRAMBo thermistor readings below 30°C aren't very accurate
|
||||||
|
#define PINDA_TEMP_COMP //Used to enable SuperPINDA toggle menu/function
|
||||||
|
|
||||||
// Maxtemps
|
// Maxtemps
|
||||||
#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
|
#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
|
||||||
|
|
@ -382,9 +386,15 @@
|
||||||
#define PLA_PREHEAT_HOTEND_TEMP 215
|
#define PLA_PREHEAT_HOTEND_TEMP 215
|
||||||
#define PLA_PREHEAT_HPB_TEMP 60
|
#define PLA_PREHEAT_HPB_TEMP 60
|
||||||
|
|
||||||
|
#define PVB_PREHEAT_HOTEND_TEMP 215
|
||||||
|
#define PVB_PREHEAT_HPB_TEMP 75
|
||||||
|
|
||||||
#define ASA_PREHEAT_HOTEND_TEMP 260
|
#define ASA_PREHEAT_HOTEND_TEMP 260
|
||||||
#define ASA_PREHEAT_HPB_TEMP 105
|
#define ASA_PREHEAT_HPB_TEMP 105
|
||||||
|
|
||||||
|
#define PC_PREHEAT_HOTEND_TEMP 275
|
||||||
|
#define PC_PREHEAT_HPB_TEMP 105
|
||||||
|
|
||||||
#define ABS_PREHEAT_HOTEND_TEMP 255
|
#define ABS_PREHEAT_HOTEND_TEMP 255
|
||||||
#define ABS_PREHEAT_HPB_TEMP 100
|
#define ABS_PREHEAT_HPB_TEMP 100
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -99,8 +99,9 @@
|
||||||
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
||||||
|
|
||||||
|
|
||||||
#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204S)
|
#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204P)
|
||||||
#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204T)
|
#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204R)
|
||||||
|
#define DEFAULT_TRAVEL_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for travels (M204T)
|
||||||
|
|
||||||
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
||||||
|
|
||||||
|
|
@ -266,9 +267,9 @@
|
||||||
#define TMC2130_CURRENTS_H {16, 20, 35, 30} // default holding currents for all axes
|
#define TMC2130_CURRENTS_H {16, 20, 35, 30} // default holding currents for all axes
|
||||||
#define TMC2130_CURRENTS_R {16, 20, 35, 30} // default running currents for all axes
|
#define TMC2130_CURRENTS_R {16, 20, 35, 30} // default running currents for all axes
|
||||||
#define TMC2130_CURRENTS_R_HOME {8, 10, 20, 18} // homing running currents for all axes
|
#define TMC2130_CURRENTS_R_HOME {8, 10, 20, 18} // homing running currents for all axes
|
||||||
// #define TMC2130_UNLOAD_CURRENT_R 12 // lower current for M600 to protect filament sensor - Unused
|
|
||||||
|
|
||||||
#define TMC2130_STEALTH_Z
|
#define TMC2130_STEALTH_Z
|
||||||
|
#define TMC2130_DEDGE_STEPPING
|
||||||
|
|
||||||
//#define TMC2130_SERVICE_CODES_M910_M918
|
//#define TMC2130_SERVICE_CODES_M910_M918
|
||||||
|
|
||||||
|
|
@ -294,6 +295,10 @@
|
||||||
#if BED_MINTEMP_DELAY>USHRT_MAX
|
#if BED_MINTEMP_DELAY>USHRT_MAX
|
||||||
#error "Check maximal allowed value @ ShortTimer (see BED_MINTEMP_DELAY definition)"
|
#error "Check maximal allowed value @ ShortTimer (see BED_MINTEMP_DELAY definition)"
|
||||||
#endif
|
#endif
|
||||||
|
#define SUPERPINDA_SUPPORT
|
||||||
|
#define PINDA_MINTEMP 10
|
||||||
|
//#define PINDA_TEMP_COMP //Used to enable SuperPINDA toggle menu/function
|
||||||
|
#define AMBIENT_MINTEMP -30
|
||||||
|
|
||||||
// Maxtemps
|
// Maxtemps
|
||||||
#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
|
#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
|
||||||
|
|
@ -304,6 +309,7 @@
|
||||||
#define HEATER_1_MAXTEMP 305
|
#define HEATER_1_MAXTEMP 305
|
||||||
#define HEATER_2_MAXTEMP 305
|
#define HEATER_2_MAXTEMP 305
|
||||||
#define BED_MAXTEMP 125
|
#define BED_MAXTEMP 125
|
||||||
|
#define AMBIENT_MAXTEMP 100
|
||||||
|
|
||||||
#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
|
#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
|
||||||
// Define PID constants for extruder with PT100
|
// Define PID constants for extruder with PT100
|
||||||
|
|
@ -493,9 +499,15 @@
|
||||||
#define PLA_PREHEAT_HOTEND_TEMP 215
|
#define PLA_PREHEAT_HOTEND_TEMP 215
|
||||||
#define PLA_PREHEAT_HPB_TEMP 60
|
#define PLA_PREHEAT_HPB_TEMP 60
|
||||||
|
|
||||||
|
#define PVB_PREHEAT_HOTEND_TEMP 215
|
||||||
|
#define PVB_PREHEAT_HPB_TEMP 75
|
||||||
|
|
||||||
#define ASA_PREHEAT_HOTEND_TEMP 260
|
#define ASA_PREHEAT_HOTEND_TEMP 260
|
||||||
#define ASA_PREHEAT_HPB_TEMP 105
|
#define ASA_PREHEAT_HPB_TEMP 105
|
||||||
|
|
||||||
|
#define PC_PREHEAT_HOTEND_TEMP 275
|
||||||
|
#define PC_PREHEAT_HPB_TEMP 110
|
||||||
|
|
||||||
#define ABS_PREHEAT_HOTEND_TEMP 255
|
#define ABS_PREHEAT_HOTEND_TEMP 255
|
||||||
#define ABS_PREHEAT_HPB_TEMP 100
|
#define ABS_PREHEAT_HPB_TEMP 100
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -101,8 +101,9 @@
|
||||||
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
||||||
|
|
||||||
|
|
||||||
#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204S)
|
#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204P)
|
||||||
#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204T)
|
#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204R)
|
||||||
|
#define DEFAULT_TRAVEL_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for travels (M204T)
|
||||||
|
|
||||||
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
||||||
|
|
||||||
|
|
@ -268,9 +269,9 @@
|
||||||
#define TMC2130_CURRENTS_H {16, 20, 35, 30} // default holding currents for all axes
|
#define TMC2130_CURRENTS_H {16, 20, 35, 30} // default holding currents for all axes
|
||||||
#define TMC2130_CURRENTS_R {16, 20, 35, 30} // default running currents for all axes
|
#define TMC2130_CURRENTS_R {16, 20, 35, 30} // default running currents for all axes
|
||||||
#define TMC2130_CURRENTS_R_HOME {8, 10, 20, 18} // homing running currents for all axes
|
#define TMC2130_CURRENTS_R_HOME {8, 10, 20, 18} // homing running currents for all axes
|
||||||
// #define TMC2130_UNLOAD_CURRENT_R 12 // lower current for M600 to protect filament sensor - Unused
|
|
||||||
|
|
||||||
#define TMC2130_STEALTH_Z
|
#define TMC2130_STEALTH_Z
|
||||||
|
#define TMC2130_DEDGE_STEPPING
|
||||||
|
|
||||||
//#define TMC2130_SERVICE_CODES_M910_M918
|
//#define TMC2130_SERVICE_CODES_M910_M918
|
||||||
|
|
||||||
|
|
@ -296,6 +297,10 @@
|
||||||
#if BED_MINTEMP_DELAY>USHRT_MAX
|
#if BED_MINTEMP_DELAY>USHRT_MAX
|
||||||
#error "Check maximal allowed value @ ShortTimer (see BED_MINTEMP_DELAY definition)"
|
#error "Check maximal allowed value @ ShortTimer (see BED_MINTEMP_DELAY definition)"
|
||||||
#endif
|
#endif
|
||||||
|
#define SUPERPINDA_SUPPORT
|
||||||
|
#define PINDA_MINTEMP 10
|
||||||
|
//#define PINDA_TEMP_COMP //Used to enable SuperPINDA toggle menu/function
|
||||||
|
#define AMBIENT_MINTEMP -30
|
||||||
|
|
||||||
// Maxtemps
|
// Maxtemps
|
||||||
#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
|
#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
|
||||||
|
|
@ -306,6 +311,7 @@
|
||||||
#define HEATER_1_MAXTEMP 305
|
#define HEATER_1_MAXTEMP 305
|
||||||
#define HEATER_2_MAXTEMP 305
|
#define HEATER_2_MAXTEMP 305
|
||||||
#define BED_MAXTEMP 125
|
#define BED_MAXTEMP 125
|
||||||
|
#define AMBIENT_MAXTEMP 100
|
||||||
|
|
||||||
#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
|
#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
|
||||||
// Define PID constants for extruder with PT100
|
// Define PID constants for extruder with PT100
|
||||||
|
|
@ -331,6 +337,8 @@
|
||||||
#define EXTRUDER_2_AUTO_FAN_PIN -1
|
#define EXTRUDER_2_AUTO_FAN_PIN -1
|
||||||
#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
|
#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
|
||||||
#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed
|
#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed
|
||||||
|
#define EXTRUDER_ALTFAN_DETECT
|
||||||
|
#define EXTRUDER_ALTFAN_SPEED_SILENT 128
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -495,9 +503,15 @@
|
||||||
#define PLA_PREHEAT_HOTEND_TEMP 215
|
#define PLA_PREHEAT_HOTEND_TEMP 215
|
||||||
#define PLA_PREHEAT_HPB_TEMP 60
|
#define PLA_PREHEAT_HPB_TEMP 60
|
||||||
|
|
||||||
|
#define PVB_PREHEAT_HOTEND_TEMP 215
|
||||||
|
#define PVB_PREHEAT_HPB_TEMP 75
|
||||||
|
|
||||||
#define ASA_PREHEAT_HOTEND_TEMP 260
|
#define ASA_PREHEAT_HOTEND_TEMP 260
|
||||||
#define ASA_PREHEAT_HPB_TEMP 105
|
#define ASA_PREHEAT_HPB_TEMP 105
|
||||||
|
|
||||||
|
#define PC_PREHEAT_HOTEND_TEMP 275
|
||||||
|
#define PC_PREHEAT_HPB_TEMP 110
|
||||||
|
|
||||||
#define ABS_PREHEAT_HOTEND_TEMP 255
|
#define ABS_PREHEAT_HOTEND_TEMP 255
|
||||||
#define ABS_PREHEAT_HPB_TEMP 100
|
#define ABS_PREHEAT_HPB_TEMP 100
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@
|
||||||
#include "w25x20cl.h"
|
#include "w25x20cl.h"
|
||||||
#include <avr/io.h>
|
#include <avr/io.h>
|
||||||
#include <avr/pgmspace.h>
|
#include <avr/pgmspace.h>
|
||||||
#include "io_atmega2560.h"
|
|
||||||
#include "spi.h"
|
#include "spi.h"
|
||||||
|
#include "fastio.h"
|
||||||
|
|
||||||
#define _MFRID 0xEF
|
#define _MFRID 0xEF
|
||||||
#define _DEVID 0x11
|
#define _DEVID 0x11
|
||||||
|
|
@ -31,8 +31,8 @@
|
||||||
#define _CMD_JEDEC_ID 0x9f
|
#define _CMD_JEDEC_ID 0x9f
|
||||||
#define _CMD_RD_UID 0x4b
|
#define _CMD_RD_UID 0x4b
|
||||||
|
|
||||||
#define _CS_LOW() PORT(W25X20CL_PIN_CS) &= ~__MSK(W25X20CL_PIN_CS)
|
#define _CS_LOW() WRITE(W25X20CL_PIN_CS, 0)
|
||||||
#define _CS_HIGH() PORT(W25X20CL_PIN_CS) |= __MSK(W25X20CL_PIN_CS)
|
#define _CS_HIGH() WRITE(W25X20CL_PIN_CS, 1)
|
||||||
|
|
||||||
//#define _SPI_TX swspi_tx
|
//#define _SPI_TX swspi_tx
|
||||||
//#define _SPI_RX swspi_rx
|
//#define _SPI_RX swspi_rx
|
||||||
|
|
@ -45,8 +45,8 @@ int w25x20cl_mfrid_devid(void);
|
||||||
|
|
||||||
int8_t w25x20cl_init(void)
|
int8_t w25x20cl_init(void)
|
||||||
{
|
{
|
||||||
PIN_OUT(W25X20CL_PIN_CS);
|
|
||||||
_CS_HIGH();
|
_CS_HIGH();
|
||||||
|
SET_OUTPUT(W25X20CL_PIN_CS);
|
||||||
W25X20CL_SPI_ENTER();
|
W25X20CL_SPI_ENTER();
|
||||||
if (!w25x20cl_mfrid_devid()) return 0;
|
if (!w25x20cl_mfrid_devid()) return 0;
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
||||||
1119
Firmware/xyzcal.cpp
1119
Firmware/xyzcal.cpp
File diff suppressed because it is too large
Load Diff
|
|
@ -17,20 +17,6 @@ extern bool xyzcal_spiral8(int16_t cx, int16_t cy, int16_t z0, int16_t dz, int16
|
||||||
|
|
||||||
//extern int8_t xyzcal_meassure_pinda_hysterezis(int16_t min_z, int16_t max_z, uint16_t delay_us, uint8_t samples);
|
//extern int8_t xyzcal_meassure_pinda_hysterezis(int16_t min_z, int16_t max_z, uint16_t delay_us, uint8_t samples);
|
||||||
|
|
||||||
extern void xyzcal_scan_pixels_32x32(int16_t cx, int16_t cy, int16_t min_z, int16_t max_z, uint16_t delay_us, uint8_t* pixels);
|
|
||||||
|
|
||||||
extern void xyzcal_histo_pixels_32x32(uint8_t* pixels, uint16_t* histo);
|
|
||||||
|
|
||||||
extern void xyzcal_adjust_pixels(uint8_t* pixels, uint16_t* histo);
|
|
||||||
|
|
||||||
extern int16_t xyzcal_match_pattern_12x12_in_32x32(uint16_t* pattern, uint8_t* pixels, uint8_t x, uint8_t y);
|
|
||||||
|
|
||||||
extern int16_t xyzcal_find_pattern_12x12_in_32x32(uint8_t* pixels, uint16_t* pattern, uint8_t* pc, uint8_t* pr);
|
|
||||||
|
|
||||||
extern int8_t xyzcal_find_point_center2(uint16_t delay_us);
|
|
||||||
|
|
||||||
//extern int8_t xyzcal_find_point_center(int16_t x0, int16_t y0, int16_t z0, int16_t min_z, int16_t max_z, uint16_t delay_us, uint8_t turns);
|
|
||||||
|
|
||||||
extern bool xyzcal_searchZ(void);
|
extern bool xyzcal_searchZ(void);
|
||||||
|
|
||||||
extern bool xyzcal_scan_and_process(void);
|
extern bool xyzcal_scan_and_process(void);
|
||||||
|
|
|
||||||
348
PF-build.sh
348
PF-build.sh
|
|
@ -15,7 +15,7 @@
|
||||||
# 3. Install zip with 'apt-get install zip'
|
# 3. Install zip with 'apt-get install zip'
|
||||||
# 4. Install python3 with 'apt-get install python3'
|
# 4. Install python3 with 'apt-get install python3'
|
||||||
# 5. Add command 'ln -sf /usr/bin/python3.5 /usr/bin/python' to link python3 to python.
|
# 5. Add command 'ln -sf /usr/bin/python3.5 /usr/bin/python' to link python3 to python.
|
||||||
# Donnot istall 'python' as python 2.x has end of life see https://pythonclock.org/
|
# Do not install 'python' as python 2.x has end of life see https://pythonclock.org/
|
||||||
# 6. Add at top of ~/.bashrc following lines by using 'sudo nano ~/.bashrc'
|
# 6. Add at top of ~/.bashrc following lines by using 'sudo nano ~/.bashrc'
|
||||||
#
|
#
|
||||||
# export OS="Linux"
|
# export OS="Linux"
|
||||||
|
|
@ -37,7 +37,7 @@
|
||||||
# 2. Another great tool to compare your custom mod and stock firmware is WinMerge http://winmerge.org/downloads/?lang=en
|
# 2. Another great tool to compare your custom mod and stock firmware is WinMerge http://winmerge.org/downloads/?lang=en
|
||||||
#
|
#
|
||||||
# Example for MK3: open git bash and change to your Firmware directory
|
# Example for MK3: open git bash and change to your Firmware directory
|
||||||
# <username>@<machinename> MINGW64 /<drive>/path
|
# <username>@<machine name> MINGW64 /<drive>/path
|
||||||
# bash build.sh 1_75mm_MK3-EINSy10a-E3Dv6full
|
# bash build.sh 1_75mm_MK3-EINSy10a-E3Dv6full
|
||||||
#
|
#
|
||||||
# Example for MK25: open git bash and change to your directory
|
# Example for MK25: open git bash and change to your directory
|
||||||
|
|
@ -56,15 +56,15 @@
|
||||||
# Some may argue that this is only used by a script, BUT as soon someone accidentally or on purpose starts Arduino IDE
|
# Some may argue that this is only used by a script, BUT as soon someone accidentally or on purpose starts Arduino IDE
|
||||||
# it will use the default Arduino IDE folders and so can corrupt the build environment.
|
# it will use the default Arduino IDE folders and so can corrupt the build environment.
|
||||||
#
|
#
|
||||||
# Version: 1.0.6-Build_13
|
# Version: 1.0.6-Build_36
|
||||||
# Change log:
|
# Change log:
|
||||||
# 12 Jan 2019, 3d-gussner, Fixed "compiler.c.elf.flags=-w -Os -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections" in 'platform.txt'
|
# 12 Jan 2019, 3d-gussner, Fixed "compiler.c.elf.flags=-w -Os -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections" in 'platform.txt'
|
||||||
# 16 Jan 2019, 3d-gussner, Build_2, Added development check to modify 'Configuration.h' to prevent unwanted LCD messages that Firmware is unknown
|
# 16 Jan 2019, 3d-gussner, Build_2, Added development check to modify 'Configuration.h' to prevent unwanted LCD messages that Firmware is unknown
|
||||||
# 17 Jan 2019, 3d-gussner, Build_3, Check for OS Windows or Linux and use the right build environment
|
# 17 Jan 2019, 3d-gussner, Build_3, Check for OS Windows or Linux and use the right build environment
|
||||||
# 10 Feb 2019, ropaha, Pull Request, Select variant from list while using build.sh
|
# 10 Feb 2019, ropaha, Pull Request, Select variant from list while using build.sh
|
||||||
# 10 Feb 2019, ropaha, change FW_DEV_VERSION automatically depending on FW_VERSION RC/BETA/ALPHA
|
# 10 Feb 2019, ropaha, change FW_DEV_VERSION automatically depending on FW_VERSION RC/BETA/ALPHA
|
||||||
# 10 Feb 2019, 3d-gussner, 1st tests with english only
|
# 10 Feb 2019, 3d-gussner, 1st tests with English only
|
||||||
# 10 Feb 2019, ropaha, added compiling of all variants and english only
|
# 10 Feb 2019, ropaha, added compiling of all variants and English only
|
||||||
# 10 Feb 2019, 3d-gussner, Set OUTPUT_FOLDER for hex files
|
# 10 Feb 2019, 3d-gussner, Set OUTPUT_FOLDER for hex files
|
||||||
# 11 Feb 2019, 3d-gussner/ropaha, Minor changes and fixes
|
# 11 Feb 2019, 3d-gussner/ropaha, Minor changes and fixes
|
||||||
# 11 Feb 2019, 3d-gussner, Ready for RC
|
# 11 Feb 2019, 3d-gussner, Ready for RC
|
||||||
|
|
@ -80,44 +80,63 @@
|
||||||
# Configuration_prusa.h
|
# Configuration_prusa.h
|
||||||
# language build files
|
# language build files
|
||||||
# multi language firmware files exist and clean them up
|
# multi language firmware files exist and clean them up
|
||||||
# 15 Feb 2019, 3d-gussner, Fixed selction GOLD/UNKNOWN DEV_STATUS for ALL variants builds, so you have to choose only once
|
# 15 Feb 2019, 3d-gussner, Fixed selection GOLD/UNKNOWN DEV_STATUS for ALL variants builds, so you have to choose only once
|
||||||
# 15 Feb 2019, 3d-gussner, Added some colored output
|
# 15 Feb 2019, 3d-gussner, Added some colored output
|
||||||
# 15 Feb 2019, 3d-gussner, troubleshooting and minor fixes
|
# 15 Feb 2019, 3d-gussner, troubleshooting and minor fixes
|
||||||
# 16 Feb 2019, 3d-gussner, Script can be run using arguments
|
# 16 Feb 2019, 3d-gussner, Script can be run using arguments
|
||||||
# $1 = variant, example "1_75mm_MK3-EINSy10a-E3Dv6full.h" at this moment it is not possible to use ALL
|
# $1 = variant, example "1_75mm_MK3-EINSy10a-E3Dv6full.h" at this moment it is not possible to use ALL
|
||||||
# $2 = multi language OR english only [ALL/EN_ONLY]
|
# $2 = multi language OR English only [ALL/EN_ONLY]
|
||||||
# $3 = development status [GOLD/RC/BETA/ALPHA/DEVEL/DEBUG]
|
# $3 = development status [GOLD/RC/BETA/ALPHA/DEVEL/DEBUG]
|
||||||
# If one argument is wrong a list of valid one will be shown
|
# If one argument is wrong a list of valid one will be shown
|
||||||
# 13 Mar 2019, 3d-gussner, MKbel updated the linux build environment to version 1.0.2 with an Fix maximum firmware flash size.
|
# 13 Mar 2019, 3d-gussner, MKbel updated the Linux build environment to version 1.0.2 with an Fix maximum firmware flash size.
|
||||||
# So did I
|
# So did I
|
||||||
# 11 Jul 2019, deliopoulos,Updated to v1.0.6 as Prusa needs a new board definition for Firmware 3.8.x86_64
|
# 11 Jul 2019, deliopoulos,Updated to v1.0.6 as Prusa needs a new board definition for Firmware 3.8.x86_64
|
||||||
# - Splitted the Download of Windows Arduino IDE 1.8.5 and Prusa specific part
|
# - Split the Download of Windows Arduino IDE 1.8.5 and Prusa specific part
|
||||||
# --> less download volume needed and saves some time
|
# --> less download volume needed and saves some time
|
||||||
#
|
#
|
||||||
# 13 Jul 2019, deliopoulos,Splitting of Ardunio IDE and Prusa parts also for Linux64
|
# 13 Jul 2019, deliopoulos,Splitting of Arduino IDE and Prusa parts also for Linux64
|
||||||
# 13 Jul 2019, 3d-gussner, Added Linux 32-bit version (untested yet)
|
# 13 Jul 2019, 3d-gussner, Added Linux 32-bit version (untested yet)
|
||||||
# MacOS could be added in future if needs
|
# MacOS could be added in future if needs
|
||||||
# 14 Jul 2019, 3d-gussner, Update preferences and make it really portable
|
# 14 Jul 2019, 3d-gussner, Update preferences and make it really portable
|
||||||
# 15 Jul 2019, 3d-gussner, New PF-build-env gihub branch
|
# 15 Jul 2019, 3d-gussner, New PF-build-env GitHub branch
|
||||||
# 16 Jul 2019, 3d-gussner, New Arduino_boards github fork
|
# 16 Jul 2019, 3d-gussner, New Arduino_boards GitHub fork
|
||||||
# 17 Jul 2019, 3d-gussner, Final tests under Windows 10 and Linux Subsystem for Windows
|
# 17 Jul 2019, 3d-gussner, Final tests under Windows 10 and Linux Subsystem for Windows
|
||||||
# 18 Jul 2019, 3d-gussner, Added python check
|
# 18 Jul 2019, 3d-gussner, Added python check
|
||||||
# 18 Jul 2019, deliopoulos, No need more for changing 'platform.txt' file as it comes with the Arduino Boards.
|
# 18 Jul 2019, deliopoulos, No need more for changing 'platform.txt' file as it comes with the Arduino Boards.
|
||||||
# 18 Jul 2019, deliopoulos, Modified 'PF_BUILD_FILE_URL' to use 'BUILD_ENV' variable
|
# 18 Jul 2019, deliopoulos, Modified 'PF_BUILD_FILE_URL' to use 'BUILD_ENV' variable
|
||||||
# 22 Jul 2019, 3d-gussner, Modiffied checks to check folder and/or installation output exists.
|
# 22 Jul 2019, 3d-gussner, Modified checks to check folder and/or installation output exists.
|
||||||
# 22 Jul 2019, 3d-gussner, Added check if Arduino IDE 1.8.5 boards have been updated
|
# 22 Jul 2019, 3d-gussner, Added check if Arduino IDE 1.8.5 boards have been updated
|
||||||
# 22 Jul 2019, 3d-gussner, Changed exit numbers 1-13 for prepare build env 21-28 for prepare compiling 31-36 compiling
|
# 22 Jul 2019, 3d-gussner, Changed exit numbers 1-13 for prepare build env 21-28 for prepare compiling 31-36 compiling
|
||||||
# 22 Jul 2019, 3d-gussner, Changed BOARD_URL to DRracers respository after he pulled my PR https://github.com/DRracer/Arduino_Boards/pull/1
|
# 22 Jul 2019, 3d-gussner, Changed BOARD_URL to DRracers repository after he pulled my PR https://github.com/DRracer/Arduino_Boards/pull/1
|
||||||
# 23 Jul 2019, 3d-gussner, Changed Build-env path to "PF-build-dl" as requested in PR https://github.com/prusa3d/Prusa-Firmware/pull/2028
|
# 23 Jul 2019, 3d-gussner, Changed Build-env path to "PF-build-dl" as requested in PR https://github.com/prusa3d/Prusa-Firmware/pull/2028
|
||||||
# Changed Hex-files folder to PF-build-hex as requested in PR
|
# Changed Hex-files folder to PF-build-hex as requested in PR
|
||||||
# 23 Jul 2019, 3d-gussner, Added Finding OS version routine so supporting new OS should get easier
|
# 23 Jul 2019, 3d-gussner, Added Finding OS version routine so supporting new OS should get easier
|
||||||
# 26 Jul 2019, 3d-gussner, Change JSON repository to prusa3d after PR https://github.com/prusa3d/Arduino_Boards/pull/1 was merged
|
# 26 Jul 2019, 3d-gussner, Change JSON repository to prusa3d after PR https://github.com/prusa3d/Arduino_Boards/pull/1 was merged
|
||||||
# 23 Sep 2019, 3d-gussner, Prepare PF-build.sh for comming Prusa3d/Arduino_Boards version 1.0.2 Pull Request
|
# 23 Sep 2019, 3d-gussner, Prepare PF-build.sh for coming Prusa3d/Arduino_Boards version 1.0.2 Pull Request
|
||||||
# 17 Oct 2019, 3d-gussner, Changed folder and check file names to have seperated build enviroments depening on Arduino IDE version and
|
# 17 Oct 2019, 3d-gussner, Changed folder and check file names to have separated build environments depending on Arduino IDE version and
|
||||||
# board-versions.
|
# board-versions.
|
||||||
# 15 Dec 2019, 3d-gussner, Prepare for switch to Prusa3d/PF-build-env repository
|
# 15 Dec 2019, 3d-gussner, Prepare for switch to Prusa3d/PF-build-env repository
|
||||||
# 15 Dec 2019, 3d-gussner, Fix Audrino user preferences for the chosen board.
|
# 15 Dec 2019, 3d-gussner, Fix Arduino user preferences for the chosen board.
|
||||||
# 17 Dec 2019, 3d-gussner, Fix "timer0_fract = 0" warning by using Arduino_boards v1.0.3
|
# 17 Dec 2019, 3d-gussner, Fix "timer0_fract = 0" warning by using Arduino_boards v1.0.3
|
||||||
|
# 28 Apr 2020, 3d-gussner, Added RC3 detection
|
||||||
|
# 03 May 2020, deliopoulos, Accept all RCx as RC versions
|
||||||
|
# 05 May 2020, 3d-gussner, Make a copy of `not_tran.txt`and `not_used.txt` as `not_tran_$VARIANT.txt`and `not_used_$VARIANT.txt`
|
||||||
|
# After compiling All multi-language variants it makes it easier to find missing or unused translations.
|
||||||
|
# 12 May 2020, DRracer , Cleanup double MK2/s MK25/s `not_tran` and `not_used` files
|
||||||
|
# 13 May 2020, leptun , If cleanup files do not exist don't try to.
|
||||||
|
# 01 Oct 2020, 3d-gussner, Bug fix if using argument EN_ONLY. Thank to @leptun for pointing out.
|
||||||
|
# Change Build number to script commits 'git rev-list --count HEAD PF-build.sh'
|
||||||
|
# 02 Oct 2020, 3d-gussner, Add UNKNOWN as argument option
|
||||||
|
# 05 Oct 2020, 3d-gussner, Disable pause and warnings using command line with all needed arguments
|
||||||
|
# Install needed apps under linux if needed.
|
||||||
|
# Clean PF-Firmware build when changing git branch
|
||||||
|
# 02 Nov 2020, 3d-gussner, Check for "gawk" on Linux
|
||||||
|
# Add argument to change build number automatically to current commit or define own number
|
||||||
|
# Update exit numbers 1-13 for prepare build env 21-29 for prepare compiling 30-36 compiling
|
||||||
|
# 08 Jan 2021, 3d-gussner, Comment out 'sudo' auto installation
|
||||||
|
# Add '-?' '-h' help option
|
||||||
|
# 27 Jan 2021, 3d-gussner, Add `-c`, `-p` and `-n` options
|
||||||
|
|
||||||
#### Start check if OSTYPE is supported
|
#### Start check if OSTYPE is supported
|
||||||
OS_FOUND=$( command -v uname)
|
OS_FOUND=$( command -v uname)
|
||||||
|
|
||||||
|
|
@ -192,13 +211,14 @@ if ! type zip > /dev/null; then
|
||||||
elif [ $TARGET_OS == "linux" ]; then
|
elif [ $TARGET_OS == "linux" ]; then
|
||||||
echo "$(tput setaf 1)Missing 'zip' which is important to run this script"
|
echo "$(tput setaf 1)Missing 'zip' which is important to run this script"
|
||||||
echo "install it with the command $(tput setaf 2)'sudo apt-get install zip'$(tput sgr0)"
|
echo "install it with the command $(tput setaf 2)'sudo apt-get install zip'$(tput sgr0)"
|
||||||
|
#sudo apt-get update && apt-get install zip
|
||||||
exit 3
|
exit 3
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
# Check python ... needed during language build
|
# Check python ... needed during language build
|
||||||
if ! type python > /dev/null; then
|
if ! type python > /dev/null; then
|
||||||
if [ $TARGET_OS == "windows" ]; then
|
if [ $TARGET_OS == "windows" ]; then
|
||||||
echo "$(tput setaf 1)Missing 'python' which is important to run this script"
|
echo "$(tput setaf 1)Missing 'python3' which is important to run this script"
|
||||||
exit 4
|
exit 4
|
||||||
elif [ $TARGET_OS == "linux" ]; then
|
elif [ $TARGET_OS == "linux" ]; then
|
||||||
echo "$(tput setaf 1)Missing 'python' which is important to run this script"
|
echo "$(tput setaf 1)Missing 'python' which is important to run this script"
|
||||||
|
|
@ -206,6 +226,17 @@ if ! type python > /dev/null; then
|
||||||
echo "install it with the command $(tput setaf 2)'sudo apt-get install python3'."
|
echo "install it with the command $(tput setaf 2)'sudo apt-get install python3'."
|
||||||
echo "Check which version of Python3 has been installed using 'ls /usr/bin/python3*'"
|
echo "Check which version of Python3 has been installed using 'ls /usr/bin/python3*'"
|
||||||
echo "Use 'sudo ln -sf /usr/bin/python3.x /usr/bin/python' (where 'x' is your version number) to make it default.$(tput sgr0)"
|
echo "Use 'sudo ln -sf /usr/bin/python3.x /usr/bin/python' (where 'x' is your version number) to make it default.$(tput sgr0)"
|
||||||
|
#sudo apt-get update && apt-get install python3 && ln -sf /usr/bin/python3 /usr/bin/python
|
||||||
|
exit 4
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check gawk ... needed during language build
|
||||||
|
if ! type gawk > /dev/null; then
|
||||||
|
if [ $TARGET_OS == "linux" ]; then
|
||||||
|
echo "$(tput setaf 1)Missing 'gawk' which is important to run this script"
|
||||||
|
echo "install it with the command $(tput setaf 2)'sudo apt-get install gawk'."
|
||||||
|
#sudo apt-get update && apt-get install gawk
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
@ -235,7 +266,7 @@ echo "Script path :" $SCRIPT_PATH
|
||||||
echo "OS :" $OS
|
echo "OS :" $OS
|
||||||
echo "OS type :" $TARGET_OS
|
echo "OS type :" $TARGET_OS
|
||||||
echo ""
|
echo ""
|
||||||
echo "Ardunio IDE :" $ARDUINO_ENV
|
echo "Arduino IDE :" $ARDUINO_ENV
|
||||||
echo "Build env :" $BUILD_ENV
|
echo "Build env :" $BUILD_ENV
|
||||||
echo "Board :" $BOARD
|
echo "Board :" $BOARD
|
||||||
echo "Package name:" $BOARD_PACKAGE_NAME
|
echo "Package name:" $BOARD_PACKAGE_NAME
|
||||||
|
|
@ -416,8 +447,73 @@ fi
|
||||||
#### Start
|
#### Start
|
||||||
cd $SCRIPT_PATH
|
cd $SCRIPT_PATH
|
||||||
|
|
||||||
# First argument defines which variant of the Prusa Firmware will be compiled
|
# Check if git is available
|
||||||
if [ -z "$1" ] ; then
|
if type git > /dev/null; then
|
||||||
|
git_available="1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
while getopts v:l:d:b:o:c:p:n:?h flag
|
||||||
|
do
|
||||||
|
case "${flag}" in
|
||||||
|
v) variant_flag=${OPTARG};;
|
||||||
|
l) language_flag=${OPTARG};;
|
||||||
|
d) devel_flag=${OPTARG};;
|
||||||
|
b) build_flag=${OPTARG};;
|
||||||
|
o) output_flag=${OPTARG};;
|
||||||
|
c) clean_flag=${OPTARG};;
|
||||||
|
p) prusa_flag=${OPTARG};;
|
||||||
|
n) new_build_flag=${OPTARG};;
|
||||||
|
?) help_flag=1;;
|
||||||
|
h) help_flag=1;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
#echo "variant_flag: $variant_flag";
|
||||||
|
#echo "language_flag: $language_flag";
|
||||||
|
#echo "devel_flag: $devel_flag";
|
||||||
|
#echo "build_flag: $build_flag";
|
||||||
|
#echo "output_flag: $output_flag";
|
||||||
|
#echo "help_flag: $help_flag"
|
||||||
|
#echo "clean_flag: $clean_flag"
|
||||||
|
#echo "prusa_flag: $prusa_flag"
|
||||||
|
#echo "new_build_flag: $new_build_flag"
|
||||||
|
|
||||||
|
#
|
||||||
|
# '?' 'h' argument usage and help
|
||||||
|
if [ "$help_flag" == "1" ] ; then
|
||||||
|
echo "***************************************"
|
||||||
|
echo "* PF-build.sh Version: 1.0.6-Build_33 *"
|
||||||
|
echo "***************************************"
|
||||||
|
echo "Arguments:"
|
||||||
|
echo "$(tput setaf 2)-v$(tput sgr0) Variant '$(tput setaf 2)All$(tput sgr0)' or variant file name"
|
||||||
|
echo "$(tput setaf 2)-l$(tput sgr0) Languages '$(tput setaf 2)ALL$(tput sgr0)' for multi language or '$(tput setaf 2)EN_ONLY$(tput sgr0)' for English only"
|
||||||
|
echo "$(tput setaf 2)-d$(tput sgr0) Devel build '$(tput setaf 2)GOLD$(tput sgr0)', '$(tput setaf 2)RC$(tput sgr0)', '$(tput setaf 2)BETA$(tput sgr0)', '$(tput setaf 2)ALPHA$(tput sgr0)', '$(tput setaf 2)DEBUG$(tput sgr0)', '$(tput setaf 2)DEVEL$(tput sgr0)' and '$(tput setaf 2)UNKNOWN$(tput sgr0)'"
|
||||||
|
echo "$(tput setaf 2)-b$(tput sgr0) Build/commit number '$(tput setaf 2)Auto$(tput sgr0)' needs git or a number"
|
||||||
|
echo "$(tput setaf 2)-o$(tput sgr0) Output '$(tput setaf 2)1$(tput sgr0)' force or '$(tput setaf 2)0$(tput sgr0)' block output and delays"
|
||||||
|
echo "$(tput setaf 2)-c$(tput sgr0) Do not clean up lang build'$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes"
|
||||||
|
echo "$(tput setaf 2)-p$(tput sgr0) Keep Configuration_prusa.h '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes"
|
||||||
|
echo "$(tput setaf 2)-n$(tput sgr0) New fresh build '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes"
|
||||||
|
echo "$(tput setaf 2)-?$(tput sgr0) Help"
|
||||||
|
echo "$(tput setaf 2)-h$(tput sgr0) Help"
|
||||||
|
echo
|
||||||
|
echo "Brief USAGE:"
|
||||||
|
echo " $(tput setaf 2)./PF-build.sh$(tput sgr0) [-v] [-l] [-d] [-b] [-o] [-c] [-p] [-n]"
|
||||||
|
echo
|
||||||
|
echo "Example:"
|
||||||
|
echo " $(tput setaf 2)./PF-build.sh -v All -l ALL -d GOLD$(tput sgr0)"
|
||||||
|
echo " Will build all variants as multi language and final GOLD version"
|
||||||
|
echo
|
||||||
|
echo " $(tput setaf 2) ./PF-build.sh -v 1_75mm_MK3S-EINSy10a-E3Dv6full.h -b Auto -l ALL -d GOLD -o 1 -c 1 -p 1 -n 1$(tput sgr0)"
|
||||||
|
echo " Will build MK3S multi language final GOLD firmware "
|
||||||
|
echo " with current commit count number and output extra information,"
|
||||||
|
echo " not delete lang build temporary files, keep Configuration_prusa.h and build with new fresh build folder."
|
||||||
|
echo
|
||||||
|
exit
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# '-v' argument defines which variant of the Prusa Firmware will be compiled
|
||||||
|
if [ -z "$variant_flag" ] ; then
|
||||||
# Select which variant of the Prusa Firmware will be compiled, like
|
# Select which variant of the Prusa Firmware will be compiled, like
|
||||||
PS3="Select a variant: "
|
PS3="Select a variant: "
|
||||||
while IFS= read -r -d $'\0' f; do
|
while IFS= read -r -d $'\0' f; do
|
||||||
|
|
@ -437,7 +533,7 @@ if [ -z "$1" ] ; then
|
||||||
;;
|
;;
|
||||||
"Quit")
|
"Quit")
|
||||||
echo "You chose to stop"
|
echo "You chose to stop"
|
||||||
exit
|
exit 20
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "$(tput setaf 1)This is not a valid variant$(tput sgr0)"
|
echo "$(tput setaf 1)This is not a valid variant$(tput sgr0)"
|
||||||
|
|
@ -445,21 +541,28 @@ if [ -z "$1" ] ; then
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
else
|
else
|
||||||
if [ -f "$SCRIPT_PATH/Firmware/variants/$1" ] ; then
|
if [ -f "$SCRIPT_PATH/Firmware/variants/$variant_flag" ] ; then
|
||||||
VARIANTS=$1
|
VARIANTS=$variant_flag
|
||||||
|
elif [ "$variant_flag" == "All" ] ; then
|
||||||
|
while IFS= read -r -d $'\0' f; do
|
||||||
|
options[i++]="$f"
|
||||||
|
done < <(find Firmware/variants/ -maxdepth 1 -type f -name "*.h" -print0 )
|
||||||
|
VARIANT="All"
|
||||||
|
VARIANTS=${options[*]}
|
||||||
else
|
else
|
||||||
echo "$(tput setaf 1)$1 could not be found in Firmware/variants please choose a valid one$(tput setaf 2)"
|
echo "$(tput setaf 1)Argument $variant_flag could not be found in Firmware/variants please choose a valid one.$(tput sgr0)"
|
||||||
|
echo "Only $(tput setaf 2)'All'$(tput sgr0) and file names below are allowed as variant '-v' argument.$(tput setaf 2)"
|
||||||
ls -1 $SCRIPT_PATH/Firmware/variants/*.h | xargs -n1 basename
|
ls -1 $SCRIPT_PATH/Firmware/variants/*.h | xargs -n1 basename
|
||||||
echo "$(tput sgr0)"
|
echo "$(tput sgr0)"
|
||||||
exit 21
|
exit 21
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#Second argument defines if it is an english only version. Known values EN_ONLY / ALL
|
#'-l' argument defines if it is an English only version. Known values EN_ONLY / ALL
|
||||||
#Check default language mode
|
#Check default language mode
|
||||||
MULTI_LANGUAGE_CHECK=$(grep --max-count=1 "^#define LANG_MODE *" $SCRIPT_PATH/Firmware/config.h|sed -e's/ */ /g'|cut -d ' ' -f3)
|
MULTI_LANGUAGE_CHECK=$(grep --max-count=1 "^#define LANG_MODE *" $SCRIPT_PATH/Firmware/config.h|sed -e's/ */ /g'|cut -d ' ' -f3)
|
||||||
|
|
||||||
if [ -z "$2" ] ; then
|
if [ -z "$language_flag" ] ; then
|
||||||
PS3="Select a language: "
|
PS3="Select a language: "
|
||||||
echo
|
echo
|
||||||
echo "Which lang-build do you want?"
|
echo "Which lang-build do you want?"
|
||||||
|
|
@ -467,12 +570,10 @@ if [ -z "$2" ] ; then
|
||||||
case $yn in
|
case $yn in
|
||||||
"Multi languages")
|
"Multi languages")
|
||||||
LANGUAGES="ALL"
|
LANGUAGES="ALL"
|
||||||
sed -i -- "s/^#define LANG_MODE *0/#define LANG_MODE 1/g" $SCRIPT_PATH/Firmware/config.h
|
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
"English only")
|
"English only")
|
||||||
LANGUAGES="EN_ONLY"
|
LANGUAGES="EN_ONLY"
|
||||||
sed -i -- "s/^#define LANG_MODE *1/#define LANG_MODE 0/g" $SCRIPT_PATH/Firmware/config.h
|
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
|
@ -481,53 +582,112 @@ if [ -z "$2" ] ; then
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
else
|
else
|
||||||
if [[ "$2" == "ALL" || "$2" == "EN_ONLY" ]] ; then
|
if [[ "$language_flag" == "ALL" || "$language_flag" == "EN_ONLY" ]] ; then
|
||||||
LANGUAGES=$2
|
LANGUAGES=$language_flag
|
||||||
else
|
else
|
||||||
echo "$(tput setaf 1)Language argument is wrong!$(tput sgr0)"
|
echo "$(tput setaf 1)Language argument is wrong!$(tput sgr0)"
|
||||||
echo "Only $(tput setaf 2)'ALL'$(tput sgr0) or $(tput setaf 2)'EN_ONLY'$(tput sgr0) are allowed as 2nd argument!"
|
echo "Only $(tput setaf 2)'ALL'$(tput sgr0) or $(tput setaf 2)'EN_ONLY'$(tput sgr0) are allowed as language '-l' argument!"
|
||||||
exit 22
|
exit 22
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
#Check if DEV_STATUS is selected via argument 3
|
#Check if DEV_STATUS is selected via argument '-d'
|
||||||
if [ ! -z "$3" ] ; then
|
if [ ! -z "$devel_flag" ] ; then
|
||||||
if [[ "$3" == "GOLD" || "$3" == "RC" || "$3" == "BETA" || "$3" == "ALPHA" || "$3" == "DEVEL" || "$3" == "DEBUG" ]] ; then
|
if [[ "$devel_flag" == "GOLD" || "$devel_flag" == "RC" || "$devel_flag" == "BETA" || "$devel_flag" == "ALPHA" || "$devel_flag" == "DEVEL" || "$devel_flag" == "DEBUG" || "$devel_flag" == "UNKNOWN" ]] ; then
|
||||||
DEV_STATUS_SELECTED=$3
|
DEV_STATUS_SELECTED=$devel_flag
|
||||||
else
|
else
|
||||||
echo "$(tput setaf 1)Development argument is wrong!$(tput sgr0)"
|
echo "$(tput setaf 1)Development argument is wrong!$(tput sgr0)"
|
||||||
echo "Only $(tput setaf 2)'GOLD', 'RC', 'BETA', 'ALPHA', 'DEVEL' or 'DEBUG'$(tput sgr0) are allowed as 3rd argument!$(tput sgr0)"
|
echo "Only $(tput setaf 2)'GOLD', 'RC', 'BETA', 'ALPHA', 'DEVEL', 'DEBUG' or 'UNKNOWN' $(tput sgr0) are allowed as devel '-d' argument!$(tput sgr0)"
|
||||||
exit 23
|
exit 23
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
#Check if Build is selected via argument '-b'
|
||||||
|
if [ ! -z "$build_flag" ] ; then
|
||||||
|
if [[ "$build_flag" == "Auto" && "$git_available" == "1" ]] ; then
|
||||||
|
echo "Build changed to $build_flag"
|
||||||
|
BUILD=$(git rev-list --count HEAD)
|
||||||
|
elif [[ $build_flag =~ ^[0-9]+$ ]] ; then
|
||||||
|
BUILD=$build_flag
|
||||||
|
else
|
||||||
|
echo "$(tput setaf 1)Build number argument is wrong!$(tput sgr0)"
|
||||||
|
echo "Only $(tput setaf 2)'Auto' (git needed) or numbers $(tput sgr0) are allowed as build '-b' argument!$(tput sgr0)"
|
||||||
|
exit 24
|
||||||
|
|
||||||
|
fi
|
||||||
|
echo "New Build number is: $BUILD"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check if script has been started with arguments
|
||||||
|
if [[ "$#" -eq "0" || "$output_flag" == 1 ]] ; then
|
||||||
|
OUTPUT=1
|
||||||
|
else
|
||||||
|
OUTPUT=0
|
||||||
|
fi
|
||||||
|
#echo "Output is:" $OUTPUT
|
||||||
|
|
||||||
|
#Check git branch has changed
|
||||||
|
if [ ! -z "git_available" ]; then
|
||||||
|
BRANCH=""
|
||||||
|
CLEAN_PF_FW_BUILD=0
|
||||||
|
else
|
||||||
|
BRANCH=$(git branch --show-current)
|
||||||
|
echo "Current branch is:" $BRANCH
|
||||||
|
if [ ! -f "$SCRIPT_PATH/../PF-build.branch" ]; then
|
||||||
|
echo "$BRANCH" >| $SCRIPT_PATH/../PF-build.branch
|
||||||
|
echo "created PF-build.branch file"
|
||||||
|
else
|
||||||
|
PRE_BRANCH=$(cat "$SCRIPT_PATH/../PF-build.branch")
|
||||||
|
echo "Previous branch was:" $PRE_BRANCH
|
||||||
|
if [ ! "$BRANCH" == "$PRE_BRANCH" ] ; then
|
||||||
|
CLEAN_PF_FW_BUILD=1
|
||||||
|
echo "$BRANCH" >| $SCRIPT_PATH/../PF-build.branch
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
#Set BUILD_ENV_PATH
|
#Set BUILD_ENV_PATH
|
||||||
cd ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor || exit 24
|
cd ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor || exit 25
|
||||||
BUILD_ENV_PATH="$( pwd -P )"
|
BUILD_ENV_PATH="$( pwd -P )"
|
||||||
|
|
||||||
cd ../..
|
cd ../..
|
||||||
|
|
||||||
#Checkif BUILD_PATH exists and if not creates it
|
#Checkif BUILD_PATH exists and if not creates it
|
||||||
if [ ! -d "Prusa-Firmware-build" ]; then
|
if [ ! -d "Prusa-Firmware-build" ]; then
|
||||||
mkdir Prusa-Firmware-build || exit 25
|
mkdir Prusa-Firmware-build || exit 26
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#Set the BUILD_PATH for Arduino IDE
|
#Set the BUILD_PATH for Arduino IDE
|
||||||
cd Prusa-Firmware-build || exit 26
|
cd Prusa-Firmware-build || exit 27
|
||||||
BUILD_PATH="$( pwd -P )"
|
BUILD_PATH="$( pwd -P )"
|
||||||
|
|
||||||
|
#Check git branch has changed
|
||||||
|
if [ "$CLEAN_PF_FW_BUILD" == "1" ]; then
|
||||||
|
read -t 10 -p "Branch changed, cleaning Prusa-Firmware-build folder"
|
||||||
|
rm -r *
|
||||||
|
else
|
||||||
|
echo "Nothing to clean up"
|
||||||
|
fi
|
||||||
|
|
||||||
for v in ${VARIANTS[*]}
|
for v in ${VARIANTS[*]}
|
||||||
do
|
do
|
||||||
VARIANT=$(basename "$v" ".h")
|
VARIANT=$(basename "$v" ".h")
|
||||||
# Find firmware version in Configuration.h file and use it to generate the hex filename
|
# Find firmware version in Configuration.h file and use it to generate the hex filename
|
||||||
FW=$(grep --max-count=1 "\bFW_VERSION\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d '"' -f2|sed 's/\.//g')
|
FW=$(grep --max-count=1 "\bFW_VERSION\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d '"' -f2|sed 's/\.//g')
|
||||||
# Find build version in Configuration.h file and use it to generate the hex filename
|
if [ -z "$BUILD" ] ; then
|
||||||
BUILD=$(grep --max-count=1 "\bFW_COMMIT_NR\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d ' ' -f3)
|
# Find build version in Configuration.h file and use it to generate the hex filename
|
||||||
|
BUILD=$(grep --max-count=1 "\bFW_COMMIT_NR\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d ' ' -f3)
|
||||||
|
else
|
||||||
|
# Find and replace build version in Configuration.h file
|
||||||
|
BUILD_ORG=$(grep --max-count=1 "\bFW_COMMIT_NR\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d ' ' -f3)
|
||||||
|
echo "Original build number: $BUILD_ORG"
|
||||||
|
sed -i -- "s/^#define FW_COMMIT_NR.*/#define FW_COMMIT_NR $BUILD/g" $SCRIPT_PATH/Firmware/Configuration.h
|
||||||
|
fi
|
||||||
# Check if the motherboard is an EINSY and if so only one hex file will generated
|
# Check if the motherboard is an EINSY and if so only one hex file will generated
|
||||||
MOTHERBOARD=$(grep --max-count=1 "\bMOTHERBOARD\b" $SCRIPT_PATH/Firmware/variants/$VARIANT.h | sed -e's/ */ /g' |cut -d ' ' -f3)
|
MOTHERBOARD=$(grep --max-count=1 "\bMOTHERBOARD\b" $SCRIPT_PATH/Firmware/variants/$VARIANT.h | sed -e's/ */ /g' |cut -d ' ' -f3)
|
||||||
# Check development status
|
# Check development status
|
||||||
DEV_CHECK=$(grep --max-count=1 "\bFW_VERSION\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d '"' -f2|sed 's/\.//g'|cut -d '-' -f2)
|
DEV_CHECK=$(grep --max-count=1 "\bFW_VERSION\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d '"' -f2|sed 's/\.//g'|cut -d '-' -f2)
|
||||||
if [ -z "$DEV_STATUS_SELECTED" ] ; then
|
if [ -z "$DEV_STATUS_SELECTED" ] ; then
|
||||||
if [[ "$DEV_CHECK" == "RC1" || "$DEV_CHECK" == "RC2" ]] ; then
|
if [[ "$DEV_CHECK" == *"RC"* ]] ; then
|
||||||
DEV_STATUS="RC"
|
DEV_STATUS="RC"
|
||||||
elif [[ "$DEV_CHECK" == "ALPHA" ]]; then
|
elif [[ "$DEV_CHECK" == "ALPHA" ]]; then
|
||||||
DEV_STATUS="ALPHA"
|
DEV_STATUS="ALPHA"
|
||||||
|
|
@ -565,7 +725,7 @@ do
|
||||||
fi
|
fi
|
||||||
#Prepare hex files folders
|
#Prepare hex files folders
|
||||||
if [ ! -d "$SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD" ]; then
|
if [ ! -d "$SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD" ]; then
|
||||||
mkdir -p $SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD || exit 27
|
mkdir -p $SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD || exit 28
|
||||||
fi
|
fi
|
||||||
OUTPUT_FOLDER="PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD"
|
OUTPUT_FOLDER="PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD"
|
||||||
|
|
||||||
|
|
@ -574,18 +734,24 @@ do
|
||||||
echo ""
|
echo ""
|
||||||
ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex | xargs -n1 basename
|
ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex | xargs -n1 basename
|
||||||
echo "$(tput setaf 6)This hex file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)"
|
echo "$(tput setaf 6)This hex file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)"
|
||||||
read -t 10 -p "Press Enter to continue..."
|
if [ $OUTPUT == "1" ] ; then
|
||||||
|
read -t 10 -p "Press Enter to continue..."
|
||||||
|
fi
|
||||||
elif [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex" && "$LANGUAGES" == "EN_ONLY" ]]; then
|
elif [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex" && "$LANGUAGES" == "EN_ONLY" ]]; then
|
||||||
echo ""
|
echo ""
|
||||||
ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex | xargs -n1 basename
|
ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex | xargs -n1 basename
|
||||||
echo "$(tput setaf 6)This hex file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)"
|
echo "$(tput setaf 6)This hex file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)"
|
||||||
read -t 10 -p "Press Enter to continue..."
|
if [ $OUTPUT == "1" ] ; then
|
||||||
|
read -t 10 -p "Press Enter to continue..."
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
if [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip" && "$LANGUAGES" == "ALL" ]]; then
|
if [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip" && "$LANGUAGES" == "ALL" ]]; then
|
||||||
echo ""
|
echo ""
|
||||||
ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip | xargs -n1 basename
|
ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip | xargs -n1 basename
|
||||||
echo "$(tput setaf 6)This zip file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)"
|
echo "$(tput setaf 6)This zip file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)"
|
||||||
read -t 10 -p "Press Enter to continue..."
|
if [ $OUTPUT == "1" ] ; then
|
||||||
|
read -t 10 -p "Press Enter to continue..."
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#List some useful data
|
#List some useful data
|
||||||
|
|
@ -602,11 +768,13 @@ do
|
||||||
|
|
||||||
#Prepare Firmware to be compiled by copying variant as Configuration_prusa.h
|
#Prepare Firmware to be compiled by copying variant as Configuration_prusa.h
|
||||||
if [ ! -f "$SCRIPT_PATH/Firmware/Configuration_prusa.h" ]; then
|
if [ ! -f "$SCRIPT_PATH/Firmware/Configuration_prusa.h" ]; then
|
||||||
cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 28
|
cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 29
|
||||||
else
|
else
|
||||||
echo "$(tput setaf 6)Configuration_prusa.h already exist it will be overwritten in 10 seconds by the chosen variant.$(tput sgr 0)"
|
echo "$(tput setaf 6)Configuration_prusa.h already exist it will be overwritten in 10 seconds by the chosen variant.$(tput sgr 0)"
|
||||||
read -t 10 -p "Press Enter to continue..."
|
if [ $OUTPUT == "1" ] ; then
|
||||||
cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 28
|
read -t 10 -p "Press Enter to continue..."
|
||||||
|
fi
|
||||||
|
cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 29
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#Prepare Configuration.h to use the correct FW_DEV_VERSION to prevent LCD messages when connecting with OctoPrint
|
#Prepare Configuration.h to use the correct FW_DEV_VERSION to prevent LCD messages when connecting with OctoPrint
|
||||||
|
|
@ -615,14 +783,16 @@ do
|
||||||
# set FW_REPOSITORY
|
# set FW_REPOSITORY
|
||||||
sed -i -- 's/#define FW_REPOSITORY "Unknown"/#define FW_REPOSITORY "Prusa3d"/g' $SCRIPT_PATH/Firmware/Configuration.h
|
sed -i -- 's/#define FW_REPOSITORY "Unknown"/#define FW_REPOSITORY "Prusa3d"/g' $SCRIPT_PATH/Firmware/Configuration.h
|
||||||
|
|
||||||
#Prepare english only or multilanguage version to be build
|
#Prepare English only or multi-language version to be build
|
||||||
if [ $LANGUAGES == "ALL" ]; then
|
if [ $LANGUAGES == "EN_ONLY" ]; then
|
||||||
echo " "
|
echo " "
|
||||||
echo "Multi-language firmware will be built"
|
echo "English only language firmware will be built"
|
||||||
|
sed -i -- "s/^#define LANG_MODE *1/#define LANG_MODE 0/g" $SCRIPT_PATH/Firmware/config.h
|
||||||
echo " "
|
echo " "
|
||||||
else
|
else
|
||||||
echo " "
|
echo " "
|
||||||
echo "English only language firmware will be built"
|
echo "Multi-language firmware will be built"
|
||||||
|
sed -i -- "s/^#define LANG_MODE *0/#define LANG_MODE 1/g" $SCRIPT_PATH/Firmware/config.h
|
||||||
echo " "
|
echo " "
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
@ -645,9 +815,17 @@ do
|
||||||
|
|
||||||
echo "Start to build Prusa Firmware ..."
|
echo "Start to build Prusa Firmware ..."
|
||||||
echo "Using variant $VARIANT$(tput setaf 3)"
|
echo "Using variant $VARIANT$(tput setaf 3)"
|
||||||
sleep 2
|
if [ $OUTPUT == "1" ] ; then
|
||||||
|
sleep 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
#New fresh PF-Firmware-build
|
||||||
|
if [ "$new_build_flag" == "1" ]; then
|
||||||
|
rm -r -f $BUILD_PATH/* || exit 36
|
||||||
|
fi
|
||||||
|
|
||||||
#$BUILD_ENV_PATH/arduino-builder -dump-prefs -debug-level 10 -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 14
|
#$BUILD_ENV_PATH/arduino-builder -dump-prefs -debug-level 10 -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 14
|
||||||
$BUILD_ENV_PATH/arduino-builder -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 14
|
$BUILD_ENV_PATH/arduino-builder -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 30
|
||||||
echo "$(tput sgr 0)"
|
echo "$(tput sgr 0)"
|
||||||
|
|
||||||
if [ $LANGUAGES == "ALL" ]; then
|
if [ $LANGUAGES == "ALL" ]; then
|
||||||
|
|
@ -655,7 +833,9 @@ do
|
||||||
|
|
||||||
echo "Building multi language firmware" $MULTI_LANGUAGE_CHECK
|
echo "Building multi language firmware" $MULTI_LANGUAGE_CHECK
|
||||||
echo "$(tput sgr 0)"
|
echo "$(tput sgr 0)"
|
||||||
sleep 2
|
if [ $OUTPUT == "1" ] ; then
|
||||||
|
sleep 2
|
||||||
|
fi
|
||||||
cd $SCRIPT_PATH/lang
|
cd $SCRIPT_PATH/lang
|
||||||
echo "$(tput setaf 3)"
|
echo "$(tput setaf 3)"
|
||||||
./config.sh || exit 31
|
./config.sh || exit 31
|
||||||
|
|
@ -664,7 +844,9 @@ do
|
||||||
if [ -f "lang_en.tmp" ]; then
|
if [ -f "lang_en.tmp" ]; then
|
||||||
echo ""
|
echo ""
|
||||||
echo "$(tput setaf 6)Previous lang build files already exist these will be cleaned up in 10 seconds.$(tput sgr 0)"
|
echo "$(tput setaf 6)Previous lang build files already exist these will be cleaned up in 10 seconds.$(tput sgr 0)"
|
||||||
read -t 10 -p "Press Enter to continue..."
|
if [ $OUTPUT == "1" ] ; then
|
||||||
|
read -t 10 -p "Press Enter to continue..."
|
||||||
|
fi
|
||||||
echo "$(tput setaf 3)"
|
echo "$(tput setaf 3)"
|
||||||
./lang-clean.sh
|
./lang-clean.sh
|
||||||
echo "$(tput sgr 0)"
|
echo "$(tput sgr 0)"
|
||||||
|
|
@ -672,7 +854,9 @@ do
|
||||||
if [ -f "progmem.out" ]; then
|
if [ -f "progmem.out" ]; then
|
||||||
echo ""
|
echo ""
|
||||||
echo "$(tput setaf 6)Previous firmware build files already exist these will be cleaned up in 10 seconds.$(tput sgr 0)"
|
echo "$(tput setaf 6)Previous firmware build files already exist these will be cleaned up in 10 seconds.$(tput sgr 0)"
|
||||||
read -t 10 -p "Press Enter to continue..."
|
if [ $OUTPUT == "1" ] ; then
|
||||||
|
read -t 10 -p "Press Enter to continue..."
|
||||||
|
fi
|
||||||
echo "$(tput setaf 3)"
|
echo "$(tput setaf 3)"
|
||||||
./fw-clean.sh
|
./fw-clean.sh
|
||||||
echo "$(tput sgr 0)"
|
echo "$(tput sgr 0)"
|
||||||
|
|
@ -682,6 +866,8 @@ do
|
||||||
./lang-build.sh || exit 32
|
./lang-build.sh || exit 32
|
||||||
# Combine compiled firmware with languages
|
# Combine compiled firmware with languages
|
||||||
./fw-build.sh || exit 33
|
./fw-build.sh || exit 33
|
||||||
|
cp not_tran.txt not_tran_$VARIANT.txt
|
||||||
|
cp not_used.txt not_used_$VARIANT.txt
|
||||||
echo "$(tput sgr 0)"
|
echo "$(tput sgr 0)"
|
||||||
# Check if the motherboard is an EINSY and if so only one hex file will generated
|
# Check if the motherboard is an EINSY and if so only one hex file will generated
|
||||||
MOTHERBOARD=$(grep --max-count=1 "\bMOTHERBOARD\b" $SCRIPT_PATH/Firmware/variants/$VARIANT.h | sed -e's/ */ /g' |cut -d ' ' -f3)
|
MOTHERBOARD=$(grep --max-count=1 "\bMOTHERBOARD\b" $SCRIPT_PATH/Firmware/variants/$VARIANT.h | sed -e's/ */ /g' |cut -d ' ' -f3)
|
||||||
|
|
@ -705,24 +891,56 @@ do
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
# Cleanup after build
|
# Cleanup after build
|
||||||
echo "$(tput setaf 3)"
|
if [[ -z "$clean_flag" || "$clean_flag" == "0" ]]; then
|
||||||
./fw-clean.sh || exit 34
|
echo "$(tput setaf 3)"
|
||||||
./lang-clean.sh || exit 35
|
./fw-clean.sh || exit 34
|
||||||
echo "$(tput sgr 0)"
|
./lang-clean.sh || exit 35
|
||||||
|
echo "$(tput sgr 0)"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
echo "$(tput setaf 2)Copying English only firmware to PF-build-hex folder$(tput sgr 0)"
|
echo "$(tput setaf 2)Copying English only firmware to PF-build-hex folder$(tput sgr 0)"
|
||||||
cp -f $BUILD_PATH/Firmware.ino.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex || exit 34
|
cp -f $BUILD_PATH/Firmware.ino.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex || exit 34
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Cleanup Firmware
|
# Cleanup Firmware
|
||||||
rm $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 36
|
if [[ -z "$prusa_flag" || "$prusa_flag" == "0" ]]; then
|
||||||
|
rm $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 36
|
||||||
|
fi
|
||||||
|
if find $SCRIPT_PATH/lang/ -name '*RAMBo10a*.txt' -printf 1 -quit | grep -q 1
|
||||||
|
then
|
||||||
|
rm $SCRIPT_PATH/lang/*RAMBo10a*.txt
|
||||||
|
fi
|
||||||
|
if find $SCRIPT_PATH/lang/ -name '*MK2-RAMBo13a*' -printf 1 -quit | grep -q 1
|
||||||
|
then
|
||||||
|
rm $SCRIPT_PATH/lang/*MK2-RAMBo13a*.txt
|
||||||
|
fi
|
||||||
|
if find $SCRIPT_PATH/lang/ -name 'not_tran.txt' -printf 1 -quit | grep -q 1
|
||||||
|
then
|
||||||
|
rm $SCRIPT_PATH/lang/not_tran.txt
|
||||||
|
fi
|
||||||
|
if find $SCRIPT_PATH/lang/ -name 'not_used.txt' -printf 1 -quit | grep -q 1
|
||||||
|
then
|
||||||
|
rm $SCRIPT_PATH/lang/not_used.txt
|
||||||
|
fi
|
||||||
|
|
||||||
|
#New fresh PF-Firmware-build
|
||||||
|
if [ "$new_build_flag" == "1" ]; then
|
||||||
|
rm -r -f $BUILD_PATH/* || exit 36
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Restore files to previous state
|
||||||
sed -i -- "s/^#define FW_DEV_VERSION FW_VERSION_$DEV_STATUS/#define FW_DEV_VERSION FW_VERSION_UNKNOWN/g" $SCRIPT_PATH/Firmware/Configuration.h
|
sed -i -- "s/^#define FW_DEV_VERSION FW_VERSION_$DEV_STATUS/#define FW_DEV_VERSION FW_VERSION_UNKNOWN/g" $SCRIPT_PATH/Firmware/Configuration.h
|
||||||
sed -i -- 's/^#define FW_REPOSITORY "Prusa3d"/#define FW_REPOSITORY "Unknown"/g' $SCRIPT_PATH/Firmware/Configuration.h
|
sed -i -- 's/^#define FW_REPOSITORY "Prusa3d"/#define FW_REPOSITORY "Unknown"/g' $SCRIPT_PATH/Firmware/Configuration.h
|
||||||
|
if [ ! -z "$BUILD_ORG" ] ; then
|
||||||
|
sed -i -- "s/^#define FW_COMMIT_NR.*/#define FW_COMMIT_NR $BUILD_ORG/g" $SCRIPT_PATH/Firmware/Configuration.h
|
||||||
|
fi
|
||||||
echo $MULTI_LANGUAGE_CHECK
|
echo $MULTI_LANGUAGE_CHECK
|
||||||
#sed -i -- "s/^#define LANG_MODE * /#define LANG_MODE $MULTI_LANGUAGE_CHECK/g" $SCRIPT_PATH/Firmware/config.h
|
#sed -i -- "s/^#define LANG_MODE * /#define LANG_MODE $MULTI_LANGUAGE_CHECK/g" $SCRIPT_PATH/Firmware/config.h
|
||||||
sed -i -- "s/^#define LANG_MODE *1/#define LANG_MODE ${MULTI_LANGUAGE_CHECK}/g" $SCRIPT_PATH/Firmware/config.h
|
sed -i -- "s/^#define LANG_MODE *1/#define LANG_MODE ${MULTI_LANGUAGE_CHECK}/g" $SCRIPT_PATH/Firmware/config.h
|
||||||
sed -i -- "s/^#define LANG_MODE *0/#define LANG_MODE ${MULTI_LANGUAGE_CHECK}/g" $SCRIPT_PATH/Firmware/config.h
|
sed -i -- "s/^#define LANG_MODE *0/#define LANG_MODE ${MULTI_LANGUAGE_CHECK}/g" $SCRIPT_PATH/Firmware/config.h
|
||||||
sleep 5
|
if [ $OUTPUT == "1" ] ; then
|
||||||
|
sleep 5
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# Switch to hex path and list build files
|
# Switch to hex path and list build files
|
||||||
|
|
|
||||||
56
README.md
56
README.md
|
|
@ -1,3 +1,12 @@
|
||||||
|
# Prusa Firmware MK3
|
||||||
|
|
||||||
|
This repository contains the source code and the development versions of the firmware running on the [Original Prusa i3](https://prusa3d.com/) MK3S/MK3/MK2.5S/MK2.5 line of printers.
|
||||||
|
|
||||||
|
The latest official builds can be downloaded from [Prusa Drivers](https://www.prusa3d.com/drivers/). Pre-built development releases are also [available here](https://github.com/prusa3d/Prusa-Firmware/releases).
|
||||||
|
|
||||||
|
The firmware for the Original Prusa i3 printers is proudly based on [Marlin 1.0.x](https://github.com/MarlinFirmware/Marlin/) by Scott Lahteine (@thinkyhead) et al. and is distributed under the terms of the [GNU GPL 3 license](LICENSE).
|
||||||
|
|
||||||
|
|
||||||
# Table of contents
|
# Table of contents
|
||||||
|
|
||||||
<!--ts-->
|
<!--ts-->
|
||||||
|
|
@ -17,14 +26,28 @@
|
||||||
|
|
||||||
1. Clone this repository and checkout the correct branch for your desired release version.
|
1. Clone this repository and checkout the correct branch for your desired release version.
|
||||||
|
|
||||||
2. Set your printer model.
|
1. Set your printer model.
|
||||||
- For MK3 --> skip to step 3.
|
- For MK3 --> skip to step 3.
|
||||||
- If you have a different printer model, follow step [2.b](#2b) from Windows build
|
- If you have a different printer model, follow step [2.b](#2b) from Windows build
|
||||||
|
1. Install GNU AWK `sudo apt-get install gawk`
|
||||||
|
If you use mawk instead of gawk you get strange errors when multi language support is generated like:
|
||||||
|
`awk: line 2: function strtonum never defined
|
||||||
|
sed: couldn't write 4 items to stdout: Broken pipe
|
||||||
|
./lang-build.sh: 121: ./lang-build.sh: arithmetic expression: expecting EOF: "0x"awk: line 2: function strtonum never defined
|
||||||
|
sed: couldn't write 4 items to stdout: Broken pipe
|
||||||
|
tr: write error: Broken pipe
|
||||||
|
./lang-build.sh: 121: ./lang-build.sh: arithmetic expression: expecting EOF: "0x"awk: line 2: function strtonum never defined
|
||||||
|
sed: couldn't write 4 items to stdout: Broken pipe
|
||||||
|
tr: write error: Broken pipe
|
||||||
|
tr: write error
|
||||||
|
cut: write error: Broken pipeNG! - some texts not found in lang_en.txt! updating binary:
|
||||||
|
primary language ids...awk: line 2: function strtonum never defined
|
||||||
|
sed: couldn't flush stdout: Broken pipe`
|
||||||
|
|
||||||
3. Run `sudo ./build.sh`
|
1. Run `./build.sh`
|
||||||
- Output hex file is at `"PrusaFirmware/lang/firmware.hex"` . In the same folder you can hex files for other languages as well.
|
- Output hex file is at `"PrusaFirmware/lang/firmware.hex"` . In the same folder you can hex files for other languages as well.
|
||||||
|
|
||||||
4. Connect your printer and flash with PrusaSlicer ( Configuration --> Flash printer firmware ) or Slic3r PE.
|
1. Connect your printer and flash with PrusaSlicer ( Configuration --> Flash printer firmware ) or Slic3r PE.
|
||||||
- If you wish to flash from Arduino, follow step [2.c](#2c) from Windows build first.
|
- If you wish to flash from Arduino, follow step [2.c](#2c) from Windows build first.
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -50,7 +73,7 @@ _Note: Multi language build is not supported._
|
||||||
|
|
||||||
**c.** Modify compiler flags in `platform.txt` file
|
**c.** Modify compiler flags in `platform.txt` file
|
||||||
|
|
||||||
* The platform.txt file can be found in Arduino instalation directory, or after Arduino has been updated at: `"C:\Users\(user)\AppData\Local\Arduino15\packages\arduino\hardware\avr\(version)"` If you can locate the file in both places, file from user profile is probably used.
|
* The platform.txt file can be found in Arduino installation directory, or after Arduino has been updated at: `"C:\Users\(user)\AppData\Local\Arduino15\packages\arduino\hardware\avr\(version)"` If you can locate the file in both places, file from user profile is probably used.
|
||||||
|
|
||||||
* Add `"-Wl,-u,vfprintf -lprintf_flt -lm"` to `"compiler.c.elf.flags="` before existing flag "-Wl,--gc-sections"
|
* Add `"-Wl,-u,vfprintf -lprintf_flt -lm"` to `"compiler.c.elf.flags="` before existing flag "-Wl,--gc-sections"
|
||||||
|
|
||||||
|
|
@ -88,10 +111,13 @@ _notes: Script and instructions contributed by 3d-gussner. Use at your own risk.
|
||||||
- follow the Microsoft guide https://docs.microsoft.com/en-us/windows/wsl/install-win10
|
- follow the Microsoft guide https://docs.microsoft.com/en-us/windows/wsl/install-win10
|
||||||
You can also use the 'prepare_winbuild.ps1' powershell script with Administrator rights
|
You can also use the 'prepare_winbuild.ps1' powershell script with Administrator rights
|
||||||
- Tested versions are at this moment
|
- Tested versions are at this moment
|
||||||
- Ubuntu other may different
|
- Ubuntu and Debian, other may different
|
||||||
- After the installation and reboot please open your Ubuntu bash and do following steps
|
- After the installation and reboot please open your Ubuntu bash and do following steps
|
||||||
- run command `apt-get update`
|
- run command `sudo apt-get update`
|
||||||
- to install zip run `apt-get install zip`
|
- run command `sudo apt-get upgrade`
|
||||||
|
- to install zip run `sudo apt-get install zip`
|
||||||
|
- to install dos2unix run `sudo apt-get install dos2unix`
|
||||||
|
- run `dos2unix PF-build.sh` to convert the windows line endings to unix line endings
|
||||||
- add few lines at the top of `~/.bashrc` by running `sudo nano ~/.bashrc`
|
- add few lines at the top of `~/.bashrc` by running `sudo nano ~/.bashrc`
|
||||||
|
|
||||||
export OS="Linux"
|
export OS="Linux"
|
||||||
|
|
@ -99,11 +125,11 @@ _notes: Script and instructions contributed by 3d-gussner. Use at your own risk.
|
||||||
export GPG_TTY=$(tty)
|
export GPG_TTY=$(tty)
|
||||||
|
|
||||||
use `CRTL-X` to close nano and confirm to write the new entries
|
use `CRTL-X` to close nano and confirm to write the new entries
|
||||||
- restart Ubuntu bash
|
- restart Ubuntu/Debian bash
|
||||||
Now your Ubuntu subsystem is ready to use the automatic `PF-build.sh` script and compile your firmware correctly
|
- Now your Ubuntu/Debian subsystem is ready to use the automatic `PF-build.sh` script and compile your firmware correctly
|
||||||
|
|
||||||
#### Some Tips for Ubuntu
|
#### Some Tips for Ubuntu and Debian
|
||||||
- Linux is case sensetive so please don't forget to use capital letters where needed, like changing to a directory
|
- Linux is case sensitive so please don't forget to use capital letters where needed, like changing to a directory
|
||||||
- To change the path to your Prusa-Firmware location you downloaded and unzipped
|
- To change the path to your Prusa-Firmware location you downloaded and unzipped
|
||||||
- Example: You files are under `C:\Users\<your-username>\Downloads\Prusa-Firmware-MK3`
|
- Example: You files are under `C:\Users\<your-username>\Downloads\Prusa-Firmware-MK3`
|
||||||
- use under Ubuntu the following command `cd /mnt/c/Users/<your-username>/Downloads/Prusa-Firmware-MK3`
|
- use under Ubuntu the following command `cd /mnt/c/Users/<your-username>/Downloads/Prusa-Firmware-MK3`
|
||||||
|
|
@ -114,7 +140,7 @@ Now your Ubuntu subsystem is ready to use the automatic `PF-build.sh` script and
|
||||||
- If your Windows isn't in English the Paths may look different
|
- If your Windows isn't in English the Paths may look different
|
||||||
Example in other languages
|
Example in other languages
|
||||||
- English `/mnt/c/Users/<your-username>/Downloads/Prusa-Firmware-MK3` will be on a German Windows`/mnt/c/Anwender/<your-username>/Downloads/Prusa-Firmware-MK3`
|
- English `/mnt/c/Users/<your-username>/Downloads/Prusa-Firmware-MK3` will be on a German Windows`/mnt/c/Anwender/<your-username>/Downloads/Prusa-Firmware-MK3`
|
||||||
#### Compile Prusa-firmware with Ubuntu Linux subsystem installed
|
#### Compile Prusa-firmware with Ubuntu/Debian Linux subsystem installed
|
||||||
- open Ubuntu bash
|
- open Ubuntu bash
|
||||||
- change to your source code folder (case sensitive)
|
- change to your source code folder (case sensitive)
|
||||||
- run `./PF-build.sh`
|
- run `./PF-build.sh`
|
||||||
|
|
@ -173,7 +199,7 @@ Example:
|
||||||
|
|
||||||
`ninja`
|
`ninja`
|
||||||
|
|
||||||
## Runing
|
## Running
|
||||||
`./tests`
|
`./tests`
|
||||||
|
|
||||||
# 4. Documentation
|
# 4. Documentation
|
||||||
|
|
@ -183,7 +209,7 @@ or visit https://prusa3d.github.io/Prusa-Firmware-Doc for doxygen generated outp
|
||||||
# 5. FAQ
|
# 5. FAQ
|
||||||
Q:I built firmware using Arduino and I see "?" instead of numbers in printer user interface.
|
Q:I built firmware using Arduino and I see "?" instead of numbers in printer user interface.
|
||||||
|
|
||||||
A:Step 1.c was ommited or you updated Arduino and now platform.txt located somewhere in your user profile is used.
|
A:Step 1.c was omitted or you updated Arduino and now platform.txt located somewhere in your user profile is used.
|
||||||
|
|
||||||
Q:I built firmware using Arduino and printer now speaks Klingon (nonsense characters and symbols are displayed @^#$&*°;~ÿ)
|
Q:I built firmware using Arduino and printer now speaks Klingon (nonsense characters and symbols are displayed @^#$&*°;~ÿ)
|
||||||
|
|
||||||
|
|
@ -195,4 +221,4 @@ A:Our production builds are 99.9% equivalent to https://github.com/prusa3d/Prusa
|
||||||
|
|
||||||
Q:Why are build instructions for Arduino mess.
|
Q:Why are build instructions for Arduino mess.
|
||||||
|
|
||||||
Y:We are too lazy to ship proper board definition for Arduino. We plan to swich to cmake + ninja to be inherently multiplatform, easily integrate build tools, suport more IDEs, get 10 times shorter build times and be able to update compiler whenewer we want.
|
Y:We are too lazy to ship proper board definition for Arduino. We plan to switch to cmake + ninja to be inherently multiplatform, easily integrate build tools, suport more IDEs, get 10 times shorter build times and be able to update compiler whenever we want.
|
||||||
|
|
|
||||||
|
|
@ -69,5 +69,5 @@ cat lang_add.txt | sed 's/^/"/;s/$/"/' | while read new_s; do
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
read x
|
read -t 5
|
||||||
exit 0
|
exit 0
|
||||||
|
|
@ -82,7 +82,7 @@ generate_binary()
|
||||||
rm -f lang_$1.dat
|
rm -f lang_$1.dat
|
||||||
LNG=$1
|
LNG=$1
|
||||||
#check lang dictionary
|
#check lang dictionary
|
||||||
/usr/bin/env python lang-check.py $1 --no-warning
|
./lang-check.py $1 --no-warning
|
||||||
#create lang_xx.tmp - different processing for 'en' language
|
#create lang_xx.tmp - different processing for 'en' language
|
||||||
if [ "$1" = "en" ]; then
|
if [ "$1" = "en" ]; then
|
||||||
#remove comments and empty lines
|
#remove comments and empty lines
|
||||||
|
|
|
||||||
|
|
@ -71,5 +71,5 @@ else
|
||||||
echo 'binary data NG!'
|
echo 'binary data NG!'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
read
|
read -t 5
|
||||||
exit
|
exit
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,21 @@
|
||||||
#
|
#
|
||||||
"[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
|
"[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
|
||||||
|
|
||||||
|
#MSG_IR_03_OR_OLDER c=18
|
||||||
|
" 0.3 or older"
|
||||||
|
|
||||||
|
# c=18
|
||||||
|
"FS v0.3 or older"
|
||||||
|
|
||||||
|
#MSG_IR_04_OR_NEWER c=18
|
||||||
|
" 0.4 or newer"
|
||||||
|
|
||||||
|
# c=18
|
||||||
|
"FS v0.4 or newer"
|
||||||
|
|
||||||
|
#MSG_IR_UNKNOWN c=18
|
||||||
|
"unknown state"
|
||||||
|
|
||||||
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
|
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
|
||||||
" of 4"
|
" of 4"
|
||||||
|
|
||||||
|
|
@ -31,7 +46,10 @@
|
||||||
#
|
#
|
||||||
"Ambient"
|
"Ambient"
|
||||||
|
|
||||||
#MSG_PRESS c=20
|
#MSG_AUTO c=6
|
||||||
|
"Auto"
|
||||||
|
|
||||||
|
#MSG_PRESS c=20 r=2
|
||||||
"and press the knob"
|
"and press the knob"
|
||||||
|
|
||||||
#MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
|
#MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
|
||||||
|
|
@ -43,7 +61,7 @@
|
||||||
#MSG_AUTO_HOME
|
#MSG_AUTO_HOME
|
||||||
"Auto home"
|
"Auto home"
|
||||||
|
|
||||||
#MSG_AUTOLOAD_FILAMENT c=17
|
#MSG_AUTOLOAD_FILAMENT c=18
|
||||||
"AutoLoad filament"
|
"AutoLoad filament"
|
||||||
|
|
||||||
#MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
|
#MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
|
||||||
|
|
@ -70,13 +88,22 @@
|
||||||
#MSG_BED_CORRECTION_MENU
|
#MSG_BED_CORRECTION_MENU
|
||||||
"Bed level correct"
|
"Bed level correct"
|
||||||
|
|
||||||
#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
|
#MSG_BELTTEST c=17
|
||||||
|
"Belt test "
|
||||||
|
|
||||||
|
#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
|
||||||
"Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
|
"Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
|
||||||
|
|
||||||
|
#MSG_BRIGHT c=6
|
||||||
|
"Bright"
|
||||||
|
|
||||||
|
#MSG_BRIGHTNESS c=18
|
||||||
|
"Brightness"
|
||||||
|
|
||||||
#MSG_BED
|
#MSG_BED
|
||||||
"Bed"
|
"Bed"
|
||||||
|
|
||||||
#MSG_MENU_BELT_STATUS c=15 r=1
|
#MSG_BELT_STATUS c=18
|
||||||
"Belt status"
|
"Belt status"
|
||||||
|
|
||||||
#MSG_RECOVER_PRINT c=20 r=2
|
#MSG_RECOVER_PRINT c=20 r=2
|
||||||
|
|
@ -124,8 +151,9 @@
|
||||||
#
|
#
|
||||||
"Copy selected language?"
|
"Copy selected language?"
|
||||||
|
|
||||||
#MSG_CRASHDETECT
|
#MSG_CRASHDETECT c=13
|
||||||
"Crash det."
|
"Crash det."
|
||||||
|
|
||||||
#
|
#
|
||||||
"Choose a filament for the First Layer Calibration and select it in the on-screen menu."
|
"Choose a filament for the First Layer Calibration and select it in the on-screen menu."
|
||||||
|
|
||||||
|
|
@ -135,7 +163,7 @@
|
||||||
#
|
#
|
||||||
"Crash detected. Resume print?"
|
"Crash detected. Resume print?"
|
||||||
|
|
||||||
#
|
#MSG_CRASH c=7
|
||||||
"Crash"
|
"Crash"
|
||||||
|
|
||||||
#MSG_CURRENT c=19 r=1
|
#MSG_CURRENT c=19 r=1
|
||||||
|
|
@ -150,19 +178,22 @@
|
||||||
#MSG_BABYSTEP_Z_NOT_SET c=20 r=12
|
#MSG_BABYSTEP_Z_NOT_SET c=20 r=12
|
||||||
"Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
|
"Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
|
||||||
|
|
||||||
|
#MSG_FS_CONTINUE c=5
|
||||||
|
"Cont."
|
||||||
|
|
||||||
#MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
|
#MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
|
||||||
"Do you want to repeat last step to readjust distance between nozzle and heatbed?"
|
"Do you want to repeat last step to readjust distance between nozzle and heatbed?"
|
||||||
|
|
||||||
#MSG_EXTRUDER_CORRECTION c=10
|
#MSG_EXTRUDER_CORRECTION c=13
|
||||||
"E-correct:"
|
"E-correct:"
|
||||||
|
|
||||||
#MSG_EJECT_FILAMENT c=17 r=1
|
#MSG_EJECT_FILAMENT c=16
|
||||||
"Eject filament"
|
"Eject filament"
|
||||||
|
|
||||||
#MSG_EJECTING_FILAMENT c=20 r=1
|
#MSG_EJECTING_FILAMENT c=20 r=1
|
||||||
"Ejecting filament"
|
"Ejecting filament"
|
||||||
|
|
||||||
#MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
|
#MSG_SELFTEST_ENDSTOP_NOTHIT c=20
|
||||||
"Endstop not hit"
|
"Endstop not hit"
|
||||||
|
|
||||||
#MSG_SELFTEST_ENDSTOP
|
#MSG_SELFTEST_ENDSTOP
|
||||||
|
|
@ -174,25 +205,37 @@
|
||||||
#MSG_STACK_ERROR c=20 r=4
|
#MSG_STACK_ERROR c=20 r=4
|
||||||
"Error - static memory has been overwritten"
|
"Error - static memory has been overwritten"
|
||||||
|
|
||||||
|
#MSG_CUT_FILAMENT c=16
|
||||||
|
"Cut filament"
|
||||||
|
|
||||||
|
#MSG_CUTTER c=9
|
||||||
|
"Cutter"
|
||||||
|
|
||||||
|
# c=18
|
||||||
|
"Cutting filament"
|
||||||
|
|
||||||
#MSG_FSENS_NOT_RESPONDING c=20 r=4
|
#MSG_FSENS_NOT_RESPONDING c=20 r=4
|
||||||
"ERROR: Filament sensor is not responding, please check connection."
|
"ERROR: Filament sensor is not responding, please check connection."
|
||||||
|
|
||||||
|
#MSG_DIM c=6
|
||||||
|
"Dim"
|
||||||
|
|
||||||
#MSG_ERROR
|
#MSG_ERROR
|
||||||
"ERROR:"
|
"ERROR:"
|
||||||
|
|
||||||
#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
|
#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
|
||||||
"Extruder fan:"
|
"Extruder fan:"
|
||||||
|
|
||||||
#MSG_INFO_EXTRUDER c=15 r=1
|
#MSG_INFO_EXTRUDER c=18
|
||||||
"Extruder info"
|
"Extruder info"
|
||||||
|
|
||||||
#MSG_MOVE_E
|
#MSG_EXTRUDER c=17
|
||||||
"Extruder"
|
"Extruder"
|
||||||
|
|
||||||
#
|
#
|
||||||
"Fail stats MMU"
|
"Fail stats MMU"
|
||||||
|
|
||||||
#MSG_FSENSOR_AUTOLOAD
|
#MSG_FSENSOR_AUTOLOAD c=13
|
||||||
"F. autoload"
|
"F. autoload"
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
@ -204,14 +247,14 @@
|
||||||
#MSG_SELFTEST_FAN c=20
|
#MSG_SELFTEST_FAN c=20
|
||||||
"Fan test"
|
"Fan test"
|
||||||
|
|
||||||
#MSG_FANS_CHECK
|
#MSG_FANS_CHECK c=13
|
||||||
"Fans check"
|
"Fans check"
|
||||||
|
|
||||||
#MSG_FSENSOR
|
#MSG_FSENSOR
|
||||||
"Fil. sensor"
|
"Fil. sensor"
|
||||||
|
|
||||||
#
|
#MSG_FIL_RUNOUTS c=14
|
||||||
"Filam. runouts"
|
"Fil. runouts "
|
||||||
|
|
||||||
#MSG_FILAMENT_CLEAN c=20 r=2
|
#MSG_FILAMENT_CLEAN c=20 r=2
|
||||||
"Filament extruding & with correct color?"
|
"Filament extruding & with correct color?"
|
||||||
|
|
@ -222,19 +265,22 @@
|
||||||
#MSG_FILAMENT_SENSOR c=20
|
#MSG_FILAMENT_SENSOR c=20
|
||||||
"Filament sensor"
|
"Filament sensor"
|
||||||
|
|
||||||
#MSG_FILAMENT_USED c=19 r=1
|
#MSG_FILAMENT_USED c=19
|
||||||
"Filament used"
|
"Filament used"
|
||||||
|
|
||||||
#MSG_PRINT_TIME c=19 r=1
|
#MSG_PRINT_TIME c=19 r=1
|
||||||
"Print time"
|
"Print time"
|
||||||
|
|
||||||
#MSG_FILE_INCOMPLETE c=20 r=2
|
#MSG_FS_ACTION c=10
|
||||||
|
"FS Action"
|
||||||
|
|
||||||
|
#MSG_FILE_INCOMPLETE c=20 r=3
|
||||||
"File incomplete. Continue anyway?"
|
"File incomplete. Continue anyway?"
|
||||||
|
|
||||||
#MSG_FINISHING_MOVEMENTS c=20 r=1
|
#MSG_FINISHING_MOVEMENTS c=20
|
||||||
"Finishing movements"
|
"Finishing movements"
|
||||||
|
|
||||||
#MSG_V2_CALIBRATION c=17 r=1
|
#MSG_V2_CALIBRATION c=18
|
||||||
"First layer cal."
|
"First layer cal."
|
||||||
|
|
||||||
#MSG_WIZARD_SELFTEST c=20 r=8
|
#MSG_WIZARD_SELFTEST c=20 r=8
|
||||||
|
|
@ -297,14 +343,14 @@
|
||||||
#MSG_SELFTEST_CHECK_FSENSOR c=20
|
#MSG_SELFTEST_CHECK_FSENSOR c=20
|
||||||
"Checking sensors "
|
"Checking sensors "
|
||||||
|
|
||||||
#MSG_SELFTEST_CHECK_X c=20
|
#MSG_CHECKING_X c=20
|
||||||
"Checking X axis "
|
"Checking X axis"
|
||||||
|
|
||||||
#MSG_SELFTEST_CHECK_Y c=20
|
#MSG_CHECKING_Y c=20
|
||||||
"Checking Y axis "
|
"Checking Y axis"
|
||||||
|
|
||||||
#MSG_SELFTEST_CHECK_Z c=20
|
#MSG_SELFTEST_CHECK_Z c=20
|
||||||
"Checking Z axis "
|
"Checking Z axis"
|
||||||
|
|
||||||
#MSG_CHOOSE_EXTRUDER c=20 r=1
|
#MSG_CHOOSE_EXTRUDER c=20 r=1
|
||||||
"Choose extruder:"
|
"Choose extruder:"
|
||||||
|
|
@ -327,19 +373,19 @@
|
||||||
#MSG_INSERT_FILAMENT c=20
|
#MSG_INSERT_FILAMENT c=20
|
||||||
"Insert filament"
|
"Insert filament"
|
||||||
|
|
||||||
#MSG_WIZARD_FILAMENT_LOADED c=20 r=2
|
#MSG_FILAMENT_LOADED c=20 r=2
|
||||||
"Is filament loaded?"
|
"Is filament loaded?"
|
||||||
|
|
||||||
#MSG_STEEL_SHEET_CHECK c=20 r=2
|
#MSG_STEEL_SHEET_CHECK c=20 r=2
|
||||||
"Is steel sheet on heatbed?"
|
"Is steel sheet on heatbed?"
|
||||||
|
|
||||||
#
|
#MSG_LAST_PRINT_FAILURES c=20
|
||||||
"Last print failures"
|
"Last print failures"
|
||||||
|
|
||||||
#
|
#
|
||||||
"If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
|
"If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
|
||||||
|
|
||||||
#
|
#MSG_LAST_PRINT c=18
|
||||||
"Last print"
|
"Last print"
|
||||||
|
|
||||||
#MSG_SELFTEST_EXTRUDER_FAN c=20
|
#MSG_SELFTEST_EXTRUDER_FAN c=20
|
||||||
|
|
@ -357,6 +403,9 @@
|
||||||
#MSG_BABYSTEP_Z
|
#MSG_BABYSTEP_Z
|
||||||
"Live adjust Z"
|
"Live adjust Z"
|
||||||
|
|
||||||
|
# c=20 r=6
|
||||||
|
"Insert the filament (do not load it) into the extruder and then press the knob."
|
||||||
|
|
||||||
#MSG_LOAD_FILAMENT c=17
|
#MSG_LOAD_FILAMENT c=17
|
||||||
"Load filament"
|
"Load filament"
|
||||||
|
|
||||||
|
|
@ -372,16 +421,22 @@
|
||||||
#
|
#
|
||||||
"Load to nozzle"
|
"Load to nozzle"
|
||||||
|
|
||||||
#MSG_M117_V2_CALIBRATION c=25 r=1
|
#MSG_M117_V2_CALIBRATION c=25
|
||||||
"M117 First layer cal."
|
"M117 First layer cal."
|
||||||
|
|
||||||
#MSG_MAIN
|
#MSG_MAIN
|
||||||
"Main"
|
"Main"
|
||||||
|
|
||||||
|
#MSG_BL_HIGH c=12
|
||||||
|
"Level Bright"
|
||||||
|
|
||||||
|
#MSG_BL_LOW c=12
|
||||||
|
"Level Dimmed"
|
||||||
|
|
||||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
|
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
|
||||||
"Measuring reference height of calibration point"
|
"Measuring reference height of calibration point"
|
||||||
|
|
||||||
#MSG_MESH_BED_LEVELING
|
#MSG_MESH_BED_LEVELING c=18
|
||||||
"Mesh Bed Leveling"
|
"Mesh Bed Leveling"
|
||||||
|
|
||||||
#MSG_MMU_OK_RESUMING_POSITION c=20 r=4
|
#MSG_MMU_OK_RESUMING_POSITION c=20 r=4
|
||||||
|
|
@ -393,13 +448,13 @@
|
||||||
#
|
#
|
||||||
"Measured skew"
|
"Measured skew"
|
||||||
|
|
||||||
#
|
#MSG_MMU_FAILS c=14
|
||||||
"MMU fails"
|
"MMU fails"
|
||||||
|
|
||||||
#
|
#
|
||||||
"MMU load failed "
|
"MMU load failed "
|
||||||
|
|
||||||
#
|
#MSG_MMU_LOAD_FAILS c=14
|
||||||
"MMU load fails"
|
"MMU load fails"
|
||||||
|
|
||||||
#MSG_MMU_OK_RESUMING c=20 r=4
|
#MSG_MMU_OK_RESUMING c=20 r=4
|
||||||
|
|
@ -408,6 +463,9 @@
|
||||||
#MSG_MODE
|
#MSG_MODE
|
||||||
"Mode"
|
"Mode"
|
||||||
|
|
||||||
|
# c=20 r=3
|
||||||
|
"MK3 firmware detected on MK3S printer"
|
||||||
|
|
||||||
#MSG_NORMAL
|
#MSG_NORMAL
|
||||||
"Normal"
|
"Normal"
|
||||||
|
|
||||||
|
|
@ -477,7 +535,7 @@
|
||||||
#MSG_NOZZLE
|
#MSG_NOZZLE
|
||||||
"Nozzle"
|
"Nozzle"
|
||||||
|
|
||||||
#MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
|
#MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
|
||||||
"Old settings found. Default PID, Esteps etc. will be set."
|
"Old settings found. Default PID, Esteps etc. will be set."
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
@ -501,7 +559,7 @@
|
||||||
#MSG_PINDA_PREHEAT c=20 r=1
|
#MSG_PINDA_PREHEAT c=20 r=1
|
||||||
"PINDA Heating"
|
"PINDA Heating"
|
||||||
|
|
||||||
#MSG_PAPER c=20 r=8
|
#MSG_PAPER c=20 r=10
|
||||||
"Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
|
"Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
|
||||||
|
|
||||||
#MSG_WIZARD_CLEAN_HEATBED c=20 r=8
|
#MSG_WIZARD_CLEAN_HEATBED c=20 r=8
|
||||||
|
|
@ -555,22 +613,28 @@
|
||||||
#MSG_WIZARD_HEATING c=20 r=3
|
#MSG_WIZARD_HEATING c=20 r=3
|
||||||
"Preheating nozzle. Please wait."
|
"Preheating nozzle. Please wait."
|
||||||
|
|
||||||
|
# c=14
|
||||||
|
"PINDA"
|
||||||
|
|
||||||
#
|
#
|
||||||
"Please upgrade."
|
"Please upgrade."
|
||||||
|
|
||||||
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
||||||
"Press knob to preheat nozzle and continue."
|
"Press the knob to preheat nozzle and continue."
|
||||||
|
|
||||||
#
|
#MSG_FS_PAUSE c=5
|
||||||
|
"Pause"
|
||||||
|
|
||||||
|
#MSG_POWER_FAILURES c=14
|
||||||
"Power failures"
|
"Power failures"
|
||||||
|
|
||||||
#MSG_PRINT_ABORTED c=20
|
#MSG_PRINT_ABORTED c=20
|
||||||
"Print aborted"
|
"Print aborted"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Preheating to load"
|
"Preheating to load"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Preheating to unload"
|
"Preheating to unload"
|
||||||
|
|
||||||
#MSG_SELFTEST_PRINT_FAN_SPEED c=18
|
#MSG_SELFTEST_PRINT_FAN_SPEED c=18
|
||||||
|
|
@ -579,7 +643,7 @@
|
||||||
#MSG_CARD_MENU
|
#MSG_CARD_MENU
|
||||||
"Print from SD"
|
"Print from SD"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Press the knob"
|
"Press the knob"
|
||||||
|
|
||||||
#MSG_PRINT_PAUSED c=20 r=1
|
#MSG_PRINT_PAUSED c=20 r=1
|
||||||
|
|
@ -609,25 +673,31 @@
|
||||||
#MSG_BED_CORRECTION_REAR c=14 r=1
|
#MSG_BED_CORRECTION_REAR c=14 r=1
|
||||||
"Rear side [um]"
|
"Rear side [um]"
|
||||||
|
|
||||||
#MSG_RECOVERING_PRINT c=20 r=1
|
# c=20 r=4
|
||||||
|
"Please unload the filament first, then repeat this action."
|
||||||
|
|
||||||
|
# c=20 r=4
|
||||||
|
"Please check the IR sensor connection, unload filament if present."
|
||||||
|
|
||||||
|
#MSG_RECOVERING_PRINT c=20
|
||||||
"Recovering print "
|
"Recovering print "
|
||||||
|
|
||||||
#MSG_REMOVE_OLD_FILAMENT c=20 r=4
|
#MSG_REMOVE_OLD_FILAMENT c=20 r=5
|
||||||
"Remove old filament and press the knob to start loading new filament."
|
"Remove old filament and press the knob to start loading new filament."
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Prusa i3 MK3S OK."
|
"Prusa i3 MK3S OK."
|
||||||
|
|
||||||
#MSG_CALIBRATE_BED_RESET
|
#MSG_CALIBRATE_BED_RESET
|
||||||
"Reset XYZ calibr."
|
"Reset XYZ calibr."
|
||||||
|
|
||||||
#MSG_BED_CORRECTION_RESET
|
#MSG_RESET c=14
|
||||||
"Reset"
|
"Reset"
|
||||||
|
|
||||||
#MSG_RESUME_PRINT
|
#MSG_RESUME_PRINT c=18
|
||||||
"Resume print"
|
"Resume print"
|
||||||
|
|
||||||
#MSG_RESUMING_PRINT c=20 r=1
|
#MSG_RESUMING_PRINT c=20
|
||||||
"Resuming print"
|
"Resuming print"
|
||||||
|
|
||||||
#MSG_BED_CORRECTION_RIGHT c=14 r=1
|
#MSG_BED_CORRECTION_RIGHT c=14 r=1
|
||||||
|
|
@ -678,16 +748,25 @@
|
||||||
#MSG_SET_TEMPERATURE c=19 r=1
|
#MSG_SET_TEMPERATURE c=19 r=1
|
||||||
"Set temperature:"
|
"Set temperature:"
|
||||||
|
|
||||||
|
# c=20
|
||||||
|
"Prusa i3 MK2.5 OK."
|
||||||
|
|
||||||
|
# c=20
|
||||||
|
"Prusa i3 MK2.5S OK."
|
||||||
|
|
||||||
|
# c=20
|
||||||
|
"Prusa i3 MK3 OK."
|
||||||
|
|
||||||
#MSG_SETTINGS
|
#MSG_SETTINGS
|
||||||
"Settings"
|
"Settings"
|
||||||
|
|
||||||
#MSG_SHOW_END_STOPS c=17 r=1
|
#MSG_SHOW_END_STOPS c=18
|
||||||
"Show end stops"
|
"Show end stops"
|
||||||
|
|
||||||
#
|
#
|
||||||
"Sensor state"
|
"Sensor state"
|
||||||
|
|
||||||
#MSG_FILE_CNT c=20 r=4
|
#MSG_FILE_CNT c=20 r=6
|
||||||
"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
|
"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
|
||||||
|
|
||||||
#MSG_SORT
|
#MSG_SORT
|
||||||
|
|
@ -717,6 +796,9 @@
|
||||||
#MSG_SOUND
|
#MSG_SOUND
|
||||||
"Sound"
|
"Sound"
|
||||||
|
|
||||||
|
# c=7
|
||||||
|
"Runouts"
|
||||||
|
|
||||||
#
|
#
|
||||||
"Some problem encountered, Z-leveling enforced ..."
|
"Some problem encountered, Z-leveling enforced ..."
|
||||||
|
|
||||||
|
|
@ -750,7 +832,7 @@
|
||||||
#
|
#
|
||||||
"Select filament:"
|
"Select filament:"
|
||||||
|
|
||||||
#MSG_TEMP_CALIBRATION c=12 r=1
|
#MSG_TEMP_CALIBRATION c=14
|
||||||
"Temp. cal."
|
"Temp. cal."
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
@ -765,13 +847,16 @@
|
||||||
#MSG_TEMP_CALIBRATION_DONE c=20 r=12
|
#MSG_TEMP_CALIBRATION_DONE c=20 r=12
|
||||||
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
||||||
|
|
||||||
|
# c=20 r=3
|
||||||
|
"Sensor verified, remove the filament now."
|
||||||
|
|
||||||
#MSG_TEMPERATURE
|
#MSG_TEMPERATURE
|
||||||
"Temperature"
|
"Temperature"
|
||||||
|
|
||||||
#MSG_MENU_TEMPERATURES c=15 r=1
|
#MSG_MENU_TEMPERATURES c=15 r=1
|
||||||
"Temperatures"
|
"Temperatures"
|
||||||
|
|
||||||
#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
|
#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
|
||||||
"There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
|
"There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
@ -786,13 +871,13 @@
|
||||||
#
|
#
|
||||||
"Unload"
|
"Unload"
|
||||||
|
|
||||||
#
|
#MSG_TOTAL_FAILURES c=20
|
||||||
"Total failures"
|
"Total failures"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"to load filament"
|
"to load filament"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"to unload filament"
|
"to unload filament"
|
||||||
|
|
||||||
#MSG_UNLOAD_FILAMENT c=17
|
#MSG_UNLOAD_FILAMENT c=17
|
||||||
|
|
@ -801,7 +886,7 @@
|
||||||
#MSG_UNLOADING_FILAMENT c=20 r=1
|
#MSG_UNLOADING_FILAMENT c=20 r=1
|
||||||
"Unloading filament"
|
"Unloading filament"
|
||||||
|
|
||||||
#
|
#MSG_TOTAL c=6
|
||||||
"Total"
|
"Total"
|
||||||
|
|
||||||
#MSG_USED c=19 r=1
|
#MSG_USED c=19 r=1
|
||||||
|
|
@ -843,7 +928,7 @@
|
||||||
#MSG_WIZARD c=17 r=1
|
#MSG_WIZARD c=17 r=1
|
||||||
"Wizard"
|
"Wizard"
|
||||||
|
|
||||||
#MSG_XYZ_DETAILS c=19 r=1
|
#MSG_XYZ_DETAILS c=18
|
||||||
"XYZ cal. details"
|
"XYZ cal. details"
|
||||||
|
|
||||||
#MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
|
#MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
|
||||||
|
|
@ -861,7 +946,10 @@
|
||||||
#MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
|
#MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
|
||||||
"XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
|
"XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
|
||||||
|
|
||||||
#
|
#MSG_TIMEOUT c=12
|
||||||
|
"Timeout"
|
||||||
|
|
||||||
|
#MSG_X_CORRECTION c=13
|
||||||
"X-correct:"
|
"X-correct:"
|
||||||
|
|
||||||
#MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
|
#MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
|
||||||
|
|
@ -891,7 +979,10 @@
|
||||||
#
|
#
|
||||||
"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
|
"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
|
||||||
|
|
||||||
#
|
# c=20 r=5
|
||||||
|
"Verification failed, remove the filament and try again."
|
||||||
|
|
||||||
|
#MSG_Y_CORRECTION c=13
|
||||||
"Y-correct:"
|
"Y-correct:"
|
||||||
|
|
||||||
#MSG_OFF
|
#MSG_OFF
|
||||||
|
|
@ -921,7 +1012,7 @@
|
||||||
#MSG_WARN
|
#MSG_WARN
|
||||||
"Warn"
|
"Warn"
|
||||||
|
|
||||||
#
|
#MSG_HW_SETUP c=18
|
||||||
"HW Setup"
|
"HW Setup"
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
@ -933,9 +1024,6 @@
|
||||||
#MSG_MESH
|
#MSG_MESH
|
||||||
"Mesh"
|
"Mesh"
|
||||||
|
|
||||||
#
|
|
||||||
"Mesh bed leveling"
|
|
||||||
|
|
||||||
#
|
#
|
||||||
"MK3S firmware detected on MK3 printer"
|
"MK3S firmware detected on MK3 printer"
|
||||||
|
|
||||||
|
|
@ -957,10 +1045,10 @@
|
||||||
#
|
#
|
||||||
"G-code sliced for a different level. Please re-slice the model again. Print cancelled."
|
"G-code sliced for a different level. Please re-slice the model again. Print cancelled."
|
||||||
|
|
||||||
#
|
#MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
|
||||||
"G-code sliced for a different printer type. Continue?"
|
"G-code sliced for a different printer type. Continue?"
|
||||||
|
|
||||||
#
|
#MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=6
|
||||||
"G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
|
"G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
@ -972,10 +1060,10 @@
|
||||||
#
|
#
|
||||||
"PINDA:"
|
"PINDA:"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Preheating to cut"
|
"Preheating to cut"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Preheating to eject"
|
"Preheating to eject"
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
@ -984,6 +1072,9 @@
|
||||||
#
|
#
|
||||||
"Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
|
"Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
|
||||||
|
|
||||||
|
# c=20
|
||||||
|
"%s level expected"
|
||||||
|
|
||||||
#
|
#
|
||||||
"Rename"
|
"Rename"
|
||||||
|
|
||||||
|
|
@ -993,17 +1084,18 @@
|
||||||
#
|
#
|
||||||
"Sensor info"
|
"Sensor info"
|
||||||
|
|
||||||
#
|
#MSG_SHEET c=10
|
||||||
"Sheet"
|
"Sheet"
|
||||||
|
|
||||||
#MSG_SOUND_BLIND
|
#MSG_SOUND_BLIND
|
||||||
"Assist"
|
"Assist"
|
||||||
|
|
||||||
#
|
#MSG_STEEL_SHEET c=18
|
||||||
"Steel sheets"
|
"Steel sheets"
|
||||||
|
|
||||||
#
|
#MSG_Z_CORRECTION c=13
|
||||||
"Z-correct:"
|
"Z-correct:"
|
||||||
|
|
||||||
#MSG_Z_PROBE_NR
|
#MSG_Z_PROBE_NR
|
||||||
"Z-probe nr."
|
"Z-probe nr."
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,26 @@
|
||||||
"[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
|
"[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
|
||||||
"[%.7s]Doladeni Z\x0auz nastaveno, pouzit\x0anebo reset od nuly?\x0a%cPokracovat%cReset"
|
"[%.7s]Doladeni Z\x0auz nastaveno, pouzit\x0anebo reset od nuly?\x0a%cPokracovat%cReset"
|
||||||
|
|
||||||
|
#MSG_IR_03_OR_OLDER c=18
|
||||||
|
" 0.3 or older"
|
||||||
|
" 0.3 nebo starsi"
|
||||||
|
|
||||||
|
# c=18
|
||||||
|
"FS v0.3 or older"
|
||||||
|
"FS 0.3 nebo starsi"
|
||||||
|
|
||||||
|
#MSG_IR_04_OR_NEWER c=18
|
||||||
|
" 0.4 or newer"
|
||||||
|
" 0.4 nebo novejsi"
|
||||||
|
|
||||||
|
# c=18
|
||||||
|
"FS v0.4 or newer"
|
||||||
|
"FS 0.4 a novejsi"
|
||||||
|
|
||||||
|
#MSG_IR_UNKNOWN c=18
|
||||||
|
"unknown state"
|
||||||
|
"neznamy stav"
|
||||||
|
|
||||||
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
|
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
|
||||||
" of 4"
|
" of 4"
|
||||||
" z 4"
|
" z 4"
|
||||||
|
|
@ -42,7 +62,11 @@
|
||||||
"Ambient"
|
"Ambient"
|
||||||
"Okoli"
|
"Okoli"
|
||||||
|
|
||||||
#MSG_PRESS c=20
|
#MSG_AUTO c=6
|
||||||
|
"Auto"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
|
#MSG_PRESS c=20 r=2
|
||||||
"and press the knob"
|
"and press the knob"
|
||||||
"a stisknete tlacitko"
|
"a stisknete tlacitko"
|
||||||
|
|
||||||
|
|
@ -58,7 +82,7 @@
|
||||||
"Auto home"
|
"Auto home"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
#MSG_AUTOLOAD_FILAMENT c=17
|
#MSG_AUTOLOAD_FILAMENT c=18
|
||||||
"AutoLoad filament"
|
"AutoLoad filament"
|
||||||
"AutoZavedeni fil."
|
"AutoZavedeni fil."
|
||||||
|
|
||||||
|
|
@ -94,15 +118,27 @@
|
||||||
"Bed level correct"
|
"Bed level correct"
|
||||||
"Korekce podlozky"
|
"Korekce podlozky"
|
||||||
|
|
||||||
#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
|
#MSG_BELTTEST c=17
|
||||||
|
"Belt test "
|
||||||
|
"Test remenu "
|
||||||
|
|
||||||
|
#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
|
||||||
"Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
|
"Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
|
||||||
"Kalibrace Z selhala. Sensor nesepnul. Znecistena tryska? Cekam na reset."
|
"Kalibrace Z selhala. Sensor nesepnul. Znecistena tryska? Cekam na reset."
|
||||||
|
|
||||||
|
#MSG_BRIGHT c=6
|
||||||
|
"Bright"
|
||||||
|
"Jasny"
|
||||||
|
|
||||||
|
#MSG_BRIGHTNESS c=18
|
||||||
|
"Brightness"
|
||||||
|
"Podsviceni"
|
||||||
|
|
||||||
#MSG_BED
|
#MSG_BED
|
||||||
"Bed"
|
"Bed"
|
||||||
"Podlozka"
|
"Podlozka"
|
||||||
|
|
||||||
#MSG_MENU_BELT_STATUS c=15 r=1
|
#MSG_BELT_STATUS c=18
|
||||||
"Belt status"
|
"Belt status"
|
||||||
"Stav remenu"
|
"Stav remenu"
|
||||||
|
|
||||||
|
|
@ -166,13 +202,13 @@
|
||||||
"Copy selected language?"
|
"Copy selected language?"
|
||||||
"Kopirovat vybrany jazyk?"
|
"Kopirovat vybrany jazyk?"
|
||||||
|
|
||||||
#MSG_CRASHDETECT
|
#MSG_CRASHDETECT c=13
|
||||||
"Crash det."
|
"Crash det."
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
#
|
#
|
||||||
"Zvolte filament pro kalibraci prvni vrstvy z nasledujiciho menu"
|
|
||||||
"Choose a filament for the First Layer Calibration and select it in the on-screen menu."
|
"Choose a filament for the First Layer Calibration and select it in the on-screen menu."
|
||||||
|
"Zvolte filament pro kalibraci prvni vrstvy z nasledujiciho menu"
|
||||||
|
|
||||||
#MSG_CRASH_DETECTED c=20 r=1
|
#MSG_CRASH_DETECTED c=20 r=1
|
||||||
"Crash detected."
|
"Crash detected."
|
||||||
|
|
@ -182,7 +218,7 @@
|
||||||
"Crash detected. Resume print?"
|
"Crash detected. Resume print?"
|
||||||
"Detekovan naraz. Obnovit tisk?"
|
"Detekovan naraz. Obnovit tisk?"
|
||||||
|
|
||||||
#
|
#MSG_CRASH c=7
|
||||||
"Crash"
|
"Crash"
|
||||||
"Naraz"
|
"Naraz"
|
||||||
|
|
||||||
|
|
@ -202,23 +238,27 @@
|
||||||
"Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
|
"Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
|
||||||
"Neni zkalibrovana vzdalenost trysky od tiskove podlozky. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Nastaveni prvni vrstvy."
|
"Neni zkalibrovana vzdalenost trysky od tiskove podlozky. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Nastaveni prvni vrstvy."
|
||||||
|
|
||||||
|
#MSG_FS_CONTINUE c=5
|
||||||
|
"Cont."
|
||||||
|
"Pokr."
|
||||||
|
|
||||||
#MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
|
#MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
|
||||||
"Do you want to repeat last step to readjust distance between nozzle and heatbed?"
|
"Do you want to repeat last step to readjust distance between nozzle and heatbed?"
|
||||||
"Chcete opakovat posledni krok a pozmenit vzdalenost mezi tryskou a podlozkou?"
|
"Chcete opakovat posledni krok a pozmenit vzdalenost mezi tryskou a podlozkou?"
|
||||||
|
|
||||||
#MSG_EXTRUDER_CORRECTION c=10
|
#MSG_EXTRUDER_CORRECTION c=13
|
||||||
"E-correct:"
|
"E-correct:"
|
||||||
"Korekce E:"
|
"Korekce E:"
|
||||||
|
|
||||||
#MSG_EJECT_FILAMENT c=17 r=1
|
#MSG_EJECT_FILAMENT c=16
|
||||||
"Eject filament"
|
"Eject filament"
|
||||||
"Vysunout filament"
|
"Vysunout fil."
|
||||||
|
|
||||||
#MSG_EJECTING_FILAMENT c=20 r=1
|
#MSG_EJECTING_FILAMENT c=20 r=1
|
||||||
"Ejecting filament"
|
"Ejecting filament"
|
||||||
"Vysouvam filament"
|
"Vysouvam filament"
|
||||||
|
|
||||||
#MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
|
#MSG_SELFTEST_ENDSTOP_NOTHIT c=20
|
||||||
"Endstop not hit"
|
"Endstop not hit"
|
||||||
"Kon. spinac nesepnut"
|
"Kon. spinac nesepnut"
|
||||||
|
|
||||||
|
|
@ -234,9 +274,25 @@
|
||||||
"Error - static memory has been overwritten"
|
"Error - static memory has been overwritten"
|
||||||
"Chyba - Doslo k prepisu staticke pameti!"
|
"Chyba - Doslo k prepisu staticke pameti!"
|
||||||
|
|
||||||
|
#MSG_CUT_FILAMENT c=16
|
||||||
|
"Cut filament"
|
||||||
|
"Ustrihnout"
|
||||||
|
|
||||||
|
#MSG_CUTTER c=9
|
||||||
|
"Cutter"
|
||||||
|
"Strihani"
|
||||||
|
|
||||||
|
# c=18
|
||||||
|
"Cutting filament"
|
||||||
|
"Strihani filamentu"
|
||||||
|
|
||||||
#MSG_FSENS_NOT_RESPONDING c=20 r=4
|
#MSG_FSENS_NOT_RESPONDING c=20 r=4
|
||||||
"ERROR: Filament sensor is not responding, please check connection."
|
"ERROR: Filament sensor is not responding, please check connection."
|
||||||
"CHYBA: Filament senzor nereaguje, zkontrolujte zapojeni."
|
"CHYBA: Filament senzor nereaguje, zkontrolujte prosim zapojeni."
|
||||||
|
|
||||||
|
#MSG_DIM c=6
|
||||||
|
"Dim"
|
||||||
|
"Temny"
|
||||||
|
|
||||||
#MSG_ERROR
|
#MSG_ERROR
|
||||||
"ERROR:"
|
"ERROR:"
|
||||||
|
|
@ -246,11 +302,11 @@
|
||||||
"Extruder fan:"
|
"Extruder fan:"
|
||||||
"Levy vent.:"
|
"Levy vent.:"
|
||||||
|
|
||||||
#MSG_INFO_EXTRUDER c=15 r=1
|
#MSG_INFO_EXTRUDER c=18
|
||||||
"Extruder info"
|
"Extruder info"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
#MSG_MOVE_E
|
#MSG_EXTRUDER c=17
|
||||||
"Extruder"
|
"Extruder"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
|
|
@ -258,7 +314,7 @@
|
||||||
"Fail stats MMU"
|
"Fail stats MMU"
|
||||||
"Selhani MMU"
|
"Selhani MMU"
|
||||||
|
|
||||||
#MSG_FSENSOR_AUTOLOAD
|
#MSG_FSENSOR_AUTOLOAD c=13
|
||||||
"F. autoload"
|
"F. autoload"
|
||||||
"F. autozav."
|
"F. autozav."
|
||||||
|
|
||||||
|
|
@ -274,7 +330,7 @@
|
||||||
"Fan test"
|
"Fan test"
|
||||||
"Test ventilatoru"
|
"Test ventilatoru"
|
||||||
|
|
||||||
#MSG_FANS_CHECK
|
#MSG_FANS_CHECK c=13
|
||||||
"Fans check"
|
"Fans check"
|
||||||
"Kontr. vent."
|
"Kontr. vent."
|
||||||
|
|
||||||
|
|
@ -282,8 +338,8 @@
|
||||||
"Fil. sensor"
|
"Fil. sensor"
|
||||||
"Fil. senzor"
|
"Fil. senzor"
|
||||||
|
|
||||||
#
|
#MSG_FIL_RUNOUTS c=14
|
||||||
"Filam. runouts"
|
"Fil. runouts "
|
||||||
"Vypadky filam."
|
"Vypadky filam."
|
||||||
|
|
||||||
#MSG_FILAMENT_CLEAN c=20 r=2
|
#MSG_FILAMENT_CLEAN c=20 r=2
|
||||||
|
|
@ -298,23 +354,27 @@
|
||||||
"Filament sensor"
|
"Filament sensor"
|
||||||
"Senzor filamentu"
|
"Senzor filamentu"
|
||||||
|
|
||||||
#MSG_FILAMENT_USED c=19 r=1
|
#MSG_FILAMENT_USED c=19
|
||||||
"Filament used"
|
"Filament used"
|
||||||
"Spotrebovano filamentu"
|
"Spotrebovano filam."
|
||||||
|
|
||||||
#MSG_PRINT_TIME c=19 r=1
|
#MSG_PRINT_TIME c=19 r=1
|
||||||
"Print time"
|
"Print time"
|
||||||
"Cas tisku"
|
"Cas tisku"
|
||||||
|
|
||||||
#MSG_FILE_INCOMPLETE c=20 r=2
|
#MSG_FS_ACTION c=10
|
||||||
|
"FS Action"
|
||||||
|
"FS reakce"
|
||||||
|
|
||||||
|
#MSG_FILE_INCOMPLETE c=20 r=3
|
||||||
"File incomplete. Continue anyway?"
|
"File incomplete. Continue anyway?"
|
||||||
"Soubor nekompletni. Pokracovat?"
|
"Soubor nekompletni. Pokracovat?"
|
||||||
|
|
||||||
#MSG_FINISHING_MOVEMENTS c=20 r=1
|
#MSG_FINISHING_MOVEMENTS c=20
|
||||||
"Finishing movements"
|
"Finishing movements"
|
||||||
"Dokoncovani pohybu"
|
"Dokoncovani pohybu"
|
||||||
|
|
||||||
#MSG_V2_CALIBRATION c=17 r=1
|
#MSG_V2_CALIBRATION c=18
|
||||||
"First layer cal."
|
"First layer cal."
|
||||||
"Kal. prvni vrstvy"
|
"Kal. prvni vrstvy"
|
||||||
|
|
||||||
|
|
@ -398,16 +458,16 @@
|
||||||
"Checking sensors "
|
"Checking sensors "
|
||||||
"Kontrola senzoru"
|
"Kontrola senzoru"
|
||||||
|
|
||||||
#MSG_SELFTEST_CHECK_X c=20
|
#MSG_CHECKING_X c=20
|
||||||
"Checking X axis "
|
"Checking X axis"
|
||||||
"Kontrola osy X"
|
"Kontrola osy X"
|
||||||
|
|
||||||
#MSG_SELFTEST_CHECK_Y c=20
|
#MSG_CHECKING_Y c=20
|
||||||
"Checking Y axis "
|
"Checking Y axis"
|
||||||
"Kontrola osy Y"
|
"Kontrola osy Y"
|
||||||
|
|
||||||
#MSG_SELFTEST_CHECK_Z c=20
|
#MSG_SELFTEST_CHECK_Z c=20
|
||||||
"Checking Z axis "
|
"Checking Z axis"
|
||||||
"Kontrola osy Z"
|
"Kontrola osy Z"
|
||||||
|
|
||||||
#MSG_CHOOSE_EXTRUDER c=20 r=1
|
#MSG_CHOOSE_EXTRUDER c=20 r=1
|
||||||
|
|
@ -438,7 +498,7 @@
|
||||||
"Insert filament"
|
"Insert filament"
|
||||||
"Vlozte filament"
|
"Vlozte filament"
|
||||||
|
|
||||||
#MSG_WIZARD_FILAMENT_LOADED c=20 r=2
|
#MSG_FILAMENT_LOADED c=20 r=2
|
||||||
"Is filament loaded?"
|
"Is filament loaded?"
|
||||||
"Je filament zaveden?"
|
"Je filament zaveden?"
|
||||||
|
|
||||||
|
|
@ -446,7 +506,7 @@
|
||||||
"Is steel sheet on heatbed?"
|
"Is steel sheet on heatbed?"
|
||||||
"Je tiskovy plat na podlozce?"
|
"Je tiskovy plat na podlozce?"
|
||||||
|
|
||||||
#
|
#MSG_LAST_PRINT_FAILURES c=20
|
||||||
"Last print failures"
|
"Last print failures"
|
||||||
"Selhani posl. tisku"
|
"Selhani posl. tisku"
|
||||||
|
|
||||||
|
|
@ -454,7 +514,7 @@
|
||||||
"If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
|
"If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
|
||||||
"Mate-li vice tiskovych platu, kalibrujte je v menu Nastaveni - HW nastaveni - Tiskove platy"
|
"Mate-li vice tiskovych platu, kalibrujte je v menu Nastaveni - HW nastaveni - Tiskove platy"
|
||||||
|
|
||||||
#
|
#MSG_LAST_PRINT c=18
|
||||||
"Last print"
|
"Last print"
|
||||||
"Posledni tisk"
|
"Posledni tisk"
|
||||||
|
|
||||||
|
|
@ -478,6 +538,10 @@
|
||||||
"Live adjust Z"
|
"Live adjust Z"
|
||||||
"Doladeni osy Z"
|
"Doladeni osy Z"
|
||||||
|
|
||||||
|
# c=20 r=6
|
||||||
|
"Insert the filament (do not load it) into the extruder and then press the knob."
|
||||||
|
"Vlozte filament (nezavadejte) do extruderu a stisknete tlacitko"
|
||||||
|
|
||||||
#MSG_LOAD_FILAMENT c=17
|
#MSG_LOAD_FILAMENT c=17
|
||||||
"Load filament"
|
"Load filament"
|
||||||
"Zavest filament"
|
"Zavest filament"
|
||||||
|
|
@ -498,7 +562,7 @@
|
||||||
"Load to nozzle"
|
"Load to nozzle"
|
||||||
"Zavest do trysky"
|
"Zavest do trysky"
|
||||||
|
|
||||||
#MSG_M117_V2_CALIBRATION c=25 r=1
|
#MSG_M117_V2_CALIBRATION c=25
|
||||||
"M117 First layer cal."
|
"M117 First layer cal."
|
||||||
"M117 Kal. prvni vrstvy"
|
"M117 Kal. prvni vrstvy"
|
||||||
|
|
||||||
|
|
@ -506,11 +570,19 @@
|
||||||
"Main"
|
"Main"
|
||||||
"Hlavni nabidka"
|
"Hlavni nabidka"
|
||||||
|
|
||||||
|
#MSG_BL_HIGH c=12
|
||||||
|
"Level Bright"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
|
#MSG_BL_LOW c=12
|
||||||
|
"Level Dimmed"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
|
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
|
||||||
"Measuring reference height of calibration point"
|
"Measuring reference height of calibration point"
|
||||||
"Merim referencni vysku kalibracniho bodu"
|
"Merim referencni vysku kalibracniho bodu"
|
||||||
|
|
||||||
#MSG_MESH_BED_LEVELING
|
#MSG_MESH_BED_LEVELING c=18
|
||||||
"Mesh Bed Leveling"
|
"Mesh Bed Leveling"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
|
|
@ -526,7 +598,7 @@
|
||||||
"Measured skew"
|
"Measured skew"
|
||||||
"Merene zkoseni"
|
"Merene zkoseni"
|
||||||
|
|
||||||
#
|
#MSG_MMU_FAILS c=14
|
||||||
"MMU fails"
|
"MMU fails"
|
||||||
"Selhani MMU"
|
"Selhani MMU"
|
||||||
|
|
||||||
|
|
@ -534,7 +606,7 @@
|
||||||
"MMU load failed "
|
"MMU load failed "
|
||||||
"Zavedeni MMU selhalo"
|
"Zavedeni MMU selhalo"
|
||||||
|
|
||||||
#
|
#MSG_MMU_LOAD_FAILS c=14
|
||||||
"MMU load fails"
|
"MMU load fails"
|
||||||
"MMU selhani zavadeni"
|
"MMU selhani zavadeni"
|
||||||
|
|
||||||
|
|
@ -546,6 +618,10 @@
|
||||||
"Mode"
|
"Mode"
|
||||||
"Mod"
|
"Mod"
|
||||||
|
|
||||||
|
# c=20 r=3
|
||||||
|
"MK3 firmware detected on MK3S printer"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#MSG_NORMAL
|
#MSG_NORMAL
|
||||||
"Normal"
|
"Normal"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
@ -638,7 +714,7 @@
|
||||||
"Nozzle"
|
"Nozzle"
|
||||||
"Tryska"
|
"Tryska"
|
||||||
|
|
||||||
#MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
|
#MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
|
||||||
"Old settings found. Default PID, Esteps etc. will be set."
|
"Old settings found. Default PID, Esteps etc. will be set."
|
||||||
"Neplatne hodnoty nastaveni. Bude pouzito vychozi PID, Esteps atd."
|
"Neplatne hodnoty nastaveni. Bude pouzito vychozi PID, Esteps atd."
|
||||||
|
|
||||||
|
|
@ -670,7 +746,7 @@
|
||||||
"PINDA Heating"
|
"PINDA Heating"
|
||||||
"Nahrivani PINDA"
|
"Nahrivani PINDA"
|
||||||
|
|
||||||
#MSG_PAPER c=20 r=8
|
#MSG_PAPER c=20 r=10
|
||||||
"Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
|
"Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
|
||||||
"Umistete list papiru na podlozku a udrzujte jej pod tryskou behem mereni prvnich 4 bodu. Pokud tryska zachyti papir, okamzite vypnete tiskarnu."
|
"Umistete list papiru na podlozku a udrzujte jej pod tryskou behem mereni prvnich 4 bodu. Pokud tryska zachyti papir, okamzite vypnete tiskarnu."
|
||||||
|
|
||||||
|
|
@ -742,15 +818,23 @@
|
||||||
"Preheating nozzle. Please wait."
|
"Preheating nozzle. Please wait."
|
||||||
"Predehrev trysky. Prosim cekejte."
|
"Predehrev trysky. Prosim cekejte."
|
||||||
|
|
||||||
|
# c=14
|
||||||
|
"PINDA"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#
|
#
|
||||||
"Please upgrade."
|
"Please upgrade."
|
||||||
"Prosim aktualizujte."
|
"Prosim aktualizujte."
|
||||||
|
|
||||||
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
||||||
"Press knob to preheat nozzle and continue."
|
"Press the knob to preheat nozzle and continue."
|
||||||
"Pro nahrati trysky a pokracovani stisknete tlacitko."
|
"Pro nahrati trysky a pokracovani stisknete tlacitko."
|
||||||
|
|
||||||
#
|
#MSG_FS_PAUSE c=5
|
||||||
|
"Pause"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
|
#MSG_POWER_FAILURES c=14
|
||||||
"Power failures"
|
"Power failures"
|
||||||
"Vypadky proudu"
|
"Vypadky proudu"
|
||||||
|
|
||||||
|
|
@ -758,11 +842,11 @@
|
||||||
"Print aborted"
|
"Print aborted"
|
||||||
"Tisk prerusen"
|
"Tisk prerusen"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Preheating to load"
|
"Preheating to load"
|
||||||
"Predehrev k zavedeni"
|
"Predehrev k zavedeni"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Preheating to unload"
|
"Preheating to unload"
|
||||||
"Predehrev k vyjmuti"
|
"Predehrev k vyjmuti"
|
||||||
|
|
||||||
|
|
@ -774,7 +858,7 @@
|
||||||
"Print from SD"
|
"Print from SD"
|
||||||
"Tisk z SD"
|
"Tisk z SD"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Press the knob"
|
"Press the knob"
|
||||||
"Stisknete hl. tlacitko"
|
"Stisknete hl. tlacitko"
|
||||||
|
|
||||||
|
|
@ -814,15 +898,23 @@
|
||||||
"Rear side [um]"
|
"Rear side [um]"
|
||||||
"Vzadu [um]"
|
"Vzadu [um]"
|
||||||
|
|
||||||
#MSG_RECOVERING_PRINT c=20 r=1
|
# c=20 r=4
|
||||||
"Recovering print "
|
"Please unload the filament first, then repeat this action."
|
||||||
"Obnovovani tisku "
|
"Prosim vyjmete filament a zopakujte tuto akci"
|
||||||
|
|
||||||
#MSG_REMOVE_OLD_FILAMENT c=20 r=4
|
# c=20 r=4
|
||||||
|
"Please check the IR sensor connection, unload filament if present."
|
||||||
|
"Prosim zkontrolujte zapojeni IR senzoru a vyjmuty filament"
|
||||||
|
|
||||||
|
#MSG_RECOVERING_PRINT c=20
|
||||||
|
"Recovering print "
|
||||||
|
"Obnovovani tisku "
|
||||||
|
|
||||||
|
#MSG_REMOVE_OLD_FILAMENT c=20 r=5
|
||||||
"Remove old filament and press the knob to start loading new filament."
|
"Remove old filament and press the knob to start loading new filament."
|
||||||
"Vyjmete stary filament a stisknete tlacitko pro zavedeni noveho."
|
"Vyjmete stary filament a stisknete tlacitko pro zavedeni noveho."
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Prusa i3 MK3S OK."
|
"Prusa i3 MK3S OK."
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
|
|
@ -830,15 +922,15 @@
|
||||||
"Reset XYZ calibr."
|
"Reset XYZ calibr."
|
||||||
"Reset XYZ kalibr."
|
"Reset XYZ kalibr."
|
||||||
|
|
||||||
#MSG_BED_CORRECTION_RESET
|
#MSG_RESET c=14
|
||||||
"Reset"
|
"Reset"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
#MSG_RESUME_PRINT
|
#MSG_RESUME_PRINT c=18
|
||||||
"Resume print"
|
"Resume print"
|
||||||
"Pokracovat"
|
"Pokracovat"
|
||||||
|
|
||||||
#MSG_RESUMING_PRINT c=20 r=1
|
#MSG_RESUMING_PRINT c=20
|
||||||
"Resuming print"
|
"Resuming print"
|
||||||
"Obnoveni tisku"
|
"Obnoveni tisku"
|
||||||
|
|
||||||
|
|
@ -906,11 +998,23 @@
|
||||||
"Set temperature:"
|
"Set temperature:"
|
||||||
"Nastavte teplotu:"
|
"Nastavte teplotu:"
|
||||||
|
|
||||||
|
# c=20
|
||||||
|
"Prusa i3 MK2.5 OK."
|
||||||
|
"\x00"
|
||||||
|
|
||||||
|
# c=20
|
||||||
|
"Prusa i3 MK2.5S OK."
|
||||||
|
"\x00"
|
||||||
|
|
||||||
|
# c=20
|
||||||
|
"Prusa i3 MK3 OK."
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#MSG_SETTINGS
|
#MSG_SETTINGS
|
||||||
"Settings"
|
"Settings"
|
||||||
"Nastaveni"
|
"Nastaveni"
|
||||||
|
|
||||||
#MSG_SHOW_END_STOPS c=17 r=1
|
#MSG_SHOW_END_STOPS c=18
|
||||||
"Show end stops"
|
"Show end stops"
|
||||||
"Stav konc. spin."
|
"Stav konc. spin."
|
||||||
|
|
||||||
|
|
@ -918,7 +1022,7 @@
|
||||||
"Sensor state"
|
"Sensor state"
|
||||||
"Stav senzoru"
|
"Stav senzoru"
|
||||||
|
|
||||||
#MSG_FILE_CNT c=20 r=4
|
#MSG_FILE_CNT c=20 r=6
|
||||||
"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
|
"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
|
||||||
"Nektere soubory nebudou setrideny. Maximalni pocet souboru ve slozce pro setrideni je 100."
|
"Nektere soubory nebudou setrideny. Maximalni pocet souboru ve slozce pro setrideni je 100."
|
||||||
|
|
||||||
|
|
@ -958,6 +1062,10 @@
|
||||||
"Sound"
|
"Sound"
|
||||||
"Zvuk"
|
"Zvuk"
|
||||||
|
|
||||||
|
# c=7
|
||||||
|
"Runouts"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#
|
#
|
||||||
"Some problem encountered, Z-leveling enforced ..."
|
"Some problem encountered, Z-leveling enforced ..."
|
||||||
"Vyskytl se problem, srovnavam osu Z ..."
|
"Vyskytl se problem, srovnavam osu Z ..."
|
||||||
|
|
@ -1002,7 +1110,7 @@
|
||||||
"Select filament:"
|
"Select filament:"
|
||||||
"Zvolte filament:"
|
"Zvolte filament:"
|
||||||
|
|
||||||
#MSG_TEMP_CALIBRATION c=12 r=1
|
#MSG_TEMP_CALIBRATION c=14
|
||||||
"Temp. cal."
|
"Temp. cal."
|
||||||
"Tepl. kal."
|
"Tepl. kal."
|
||||||
|
|
||||||
|
|
@ -1022,6 +1130,10 @@
|
||||||
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
||||||
"Teplotni kalibrace dokoncena a je nyni aktivni. Teplotni kalibraci je mozno deaktivovat v menu Nastaveni->Tepl. kal."
|
"Teplotni kalibrace dokoncena a je nyni aktivni. Teplotni kalibraci je mozno deaktivovat v menu Nastaveni->Tepl. kal."
|
||||||
|
|
||||||
|
# c=20 r=3
|
||||||
|
"Sensor verified, remove the filament now."
|
||||||
|
"Senzor overen, vyjmete filament."
|
||||||
|
|
||||||
#MSG_TEMPERATURE
|
#MSG_TEMPERATURE
|
||||||
"Temperature"
|
"Temperature"
|
||||||
"Teplota"
|
"Teplota"
|
||||||
|
|
@ -1030,7 +1142,7 @@
|
||||||
"Temperatures"
|
"Temperatures"
|
||||||
"Teploty"
|
"Teploty"
|
||||||
|
|
||||||
#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
|
#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
|
||||||
"There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
|
"There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
|
||||||
"Je potreba kalibrovat osu Z. Prosim postupujte dle prirucky, kapitola Zaciname, sekce Postup kalibrace."
|
"Je potreba kalibrovat osu Z. Prosim postupujte dle prirucky, kapitola Zaciname, sekce Postup kalibrace."
|
||||||
|
|
||||||
|
|
@ -1050,15 +1162,15 @@
|
||||||
"Unload"
|
"Unload"
|
||||||
"Vysunout"
|
"Vysunout"
|
||||||
|
|
||||||
#
|
#MSG_TOTAL_FAILURES c=20
|
||||||
"Total failures"
|
"Total failures"
|
||||||
"Celkem selhani"
|
"Celkem selhani"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"to load filament"
|
"to load filament"
|
||||||
"k zavedeni filamentu"
|
"k zavedeni filamentu"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"to unload filament"
|
"to unload filament"
|
||||||
"k vyjmuti filamentu"
|
"k vyjmuti filamentu"
|
||||||
|
|
||||||
|
|
@ -1070,7 +1182,7 @@
|
||||||
"Unloading filament"
|
"Unloading filament"
|
||||||
"Vysouvam filament"
|
"Vysouvam filament"
|
||||||
|
|
||||||
#
|
#MSG_TOTAL c=6
|
||||||
"Total"
|
"Total"
|
||||||
"Celkem"
|
"Celkem"
|
||||||
|
|
||||||
|
|
@ -1126,7 +1238,7 @@
|
||||||
"Wizard"
|
"Wizard"
|
||||||
"Pruvodce"
|
"Pruvodce"
|
||||||
|
|
||||||
#MSG_XYZ_DETAILS c=19 r=1
|
#MSG_XYZ_DETAILS c=18
|
||||||
"XYZ cal. details"
|
"XYZ cal. details"
|
||||||
"Detaily XYZ kal."
|
"Detaily XYZ kal."
|
||||||
|
|
||||||
|
|
@ -1150,7 +1262,11 @@
|
||||||
"XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
|
"XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
|
||||||
"Kalibrace XYZ v poradku. X/Y osy mirne zkosene. Dobra prace!"
|
"Kalibrace XYZ v poradku. X/Y osy mirne zkosene. Dobra prace!"
|
||||||
|
|
||||||
#
|
#MSG_TIMEOUT c=12
|
||||||
|
"Timeout"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
|
#MSG_X_CORRECTION c=13
|
||||||
"X-correct:"
|
"X-correct:"
|
||||||
"Korekce X:"
|
"Korekce X:"
|
||||||
|
|
||||||
|
|
@ -1190,7 +1306,11 @@
|
||||||
"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
|
"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
|
||||||
"Tiskarna zacne tisknout lomenou caru. Otacenim tlacitka nastavte optimalni vysku. Postupujte podle obrazku v handbooku (kapitola Kalibrace)."
|
"Tiskarna zacne tisknout lomenou caru. Otacenim tlacitka nastavte optimalni vysku. Postupujte podle obrazku v handbooku (kapitola Kalibrace)."
|
||||||
|
|
||||||
#
|
# c=20 r=5
|
||||||
|
"Verification failed, remove the filament and try again."
|
||||||
|
"Overeni selhalo, vyjmete filament a zkuste znovu."
|
||||||
|
|
||||||
|
#MSG_Y_CORRECTION c=13
|
||||||
"Y-correct:"
|
"Y-correct:"
|
||||||
"Korekce Y:"
|
"Korekce Y:"
|
||||||
|
|
||||||
|
|
@ -1230,7 +1350,7 @@
|
||||||
"Warn"
|
"Warn"
|
||||||
"Varovat"
|
"Varovat"
|
||||||
|
|
||||||
#
|
#MSG_HW_SETUP c=18
|
||||||
"HW Setup"
|
"HW Setup"
|
||||||
"HW nastaveni"
|
"HW nastaveni"
|
||||||
|
|
||||||
|
|
@ -1246,10 +1366,6 @@
|
||||||
"Mesh"
|
"Mesh"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
#
|
|
||||||
"Mesh bed leveling"
|
|
||||||
"Mesh Bed Leveling"
|
|
||||||
|
|
||||||
#
|
#
|
||||||
"MK3S firmware detected on MK3 printer"
|
"MK3S firmware detected on MK3 printer"
|
||||||
"MK3S firmware detekovan na tiskarne MK3"
|
"MK3S firmware detekovan na tiskarne MK3"
|
||||||
|
|
@ -1278,11 +1394,11 @@
|
||||||
"G-code sliced for a different level. Please re-slice the model again. Print cancelled."
|
"G-code sliced for a different level. Please re-slice the model again. Print cancelled."
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
#
|
#MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
|
||||||
"G-code sliced for a different printer type. Continue?"
|
"G-code sliced for a different printer type. Continue?"
|
||||||
"G-code je pripraven pro jiny typ tiskarny. Pokracovat?"
|
"G-code je pripraven pro jiny typ tiskarny. Pokracovat?"
|
||||||
|
|
||||||
#
|
#MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=6
|
||||||
"G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
|
"G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
|
||||||
"G-code je pripraven pro jiny typ tiskarny. Prosim preslicujte model znovu. Tisk zrusen."
|
"G-code je pripraven pro jiny typ tiskarny. Prosim preslicujte model znovu. Tisk zrusen."
|
||||||
|
|
||||||
|
|
@ -1298,11 +1414,11 @@
|
||||||
"PINDA:"
|
"PINDA:"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Preheating to cut"
|
"Preheating to cut"
|
||||||
"Predehrev k ustrizeni"
|
"Predehrev ke strihu"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Preheating to eject"
|
"Preheating to eject"
|
||||||
"Predehrev k vysunuti"
|
"Predehrev k vysunuti"
|
||||||
|
|
||||||
|
|
@ -1314,6 +1430,10 @@
|
||||||
"Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
|
"Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
|
||||||
"Prumer trysky tiskarny se lisi od G-code. Prosim zkontrolujte nastaveni. Tisk zrusen."
|
"Prumer trysky tiskarny se lisi od G-code. Prosim zkontrolujte nastaveni. Tisk zrusen."
|
||||||
|
|
||||||
|
# c=20
|
||||||
|
"%s level expected"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#
|
#
|
||||||
"Rename"
|
"Rename"
|
||||||
"Prejmenovat"
|
"Prejmenovat"
|
||||||
|
|
@ -1326,7 +1446,7 @@
|
||||||
"Sensor info"
|
"Sensor info"
|
||||||
"Senzor info"
|
"Senzor info"
|
||||||
|
|
||||||
#
|
#MSG_SHEET c=10
|
||||||
"Sheet"
|
"Sheet"
|
||||||
"Plat"
|
"Plat"
|
||||||
|
|
||||||
|
|
@ -1334,14 +1454,15 @@
|
||||||
"Assist"
|
"Assist"
|
||||||
"Asist."
|
"Asist."
|
||||||
|
|
||||||
#
|
#MSG_STEEL_SHEET c=18
|
||||||
"Steel sheets"
|
"Steel sheets"
|
||||||
"Tiskove platy"
|
"Tiskove platy"
|
||||||
|
|
||||||
#
|
#MSG_Z_CORRECTION c=13
|
||||||
"Z-correct:"
|
"Z-correct:"
|
||||||
"Korekce Z:"
|
"Korekce Z:"
|
||||||
|
|
||||||
#MSG_Z_PROBE_NR
|
#MSG_Z_PROBE_NR
|
||||||
"Z-probe nr."
|
"Z-probe nr."
|
||||||
"Pocet mereni Z"
|
"Pocet mereni Z"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,26 @@
|
||||||
"[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
|
"[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
|
||||||
"[%.7s]Z Einstell.\x0aWert gesetzt,weiter\x0aoder mit 0 beginnen?\x0a%cWeiter%cNeu beginnen"
|
"[%.7s]Z Einstell.\x0aWert gesetzt,weiter\x0aoder mit 0 beginnen?\x0a%cWeiter%cNeu beginnen"
|
||||||
|
|
||||||
|
#MSG_IR_03_OR_OLDER c=18
|
||||||
|
" 0.3 or older"
|
||||||
|
" 0.3 oder aelter"
|
||||||
|
|
||||||
|
# c=18
|
||||||
|
"FS v0.3 or older"
|
||||||
|
"FS 0.3 oder aelter"
|
||||||
|
|
||||||
|
#MSG_IR_04_OR_NEWER c=18
|
||||||
|
" 0.4 or newer"
|
||||||
|
" 0.4 oder neuer"
|
||||||
|
|
||||||
|
# c=18
|
||||||
|
"FS v0.4 or newer"
|
||||||
|
"FS 0.4 oder neuer"
|
||||||
|
|
||||||
|
#MSG_IR_UNKNOWN c=18
|
||||||
|
"unknown state"
|
||||||
|
"Status unbekannt"
|
||||||
|
|
||||||
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
|
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
|
||||||
" of 4"
|
" of 4"
|
||||||
" von 4"
|
" von 4"
|
||||||
|
|
@ -42,7 +62,11 @@
|
||||||
"Ambient"
|
"Ambient"
|
||||||
"Raumtemp."
|
"Raumtemp."
|
||||||
|
|
||||||
#MSG_PRESS c=20
|
#MSG_AUTO c=6
|
||||||
|
"Auto"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
|
#MSG_PRESS c=20 r=2
|
||||||
"and press the knob"
|
"and press the knob"
|
||||||
"und Knopf druecken"
|
"und Knopf druecken"
|
||||||
|
|
||||||
|
|
@ -58,7 +82,7 @@
|
||||||
"Auto home"
|
"Auto home"
|
||||||
"Startposition"
|
"Startposition"
|
||||||
|
|
||||||
#MSG_AUTOLOAD_FILAMENT c=17
|
#MSG_AUTOLOAD_FILAMENT c=18
|
||||||
"AutoLoad filament"
|
"AutoLoad filament"
|
||||||
"AutoLaden Filament"
|
"AutoLaden Filament"
|
||||||
|
|
||||||
|
|
@ -94,15 +118,27 @@
|
||||||
"Bed level correct"
|
"Bed level correct"
|
||||||
"Ausgleich Bett ok"
|
"Ausgleich Bett ok"
|
||||||
|
|
||||||
#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
|
#MSG_BELTTEST c=17
|
||||||
|
"Belt test "
|
||||||
|
"Riementest "
|
||||||
|
|
||||||
|
#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
|
||||||
"Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
|
"Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
|
||||||
"Z-Kal. fehlgeschlg. Sensor nicht ausgeloest. Schmutzige Duese? Warte auf Reset."
|
"Z-Kal. fehlgeschlg. Sensor nicht ausgeloest. Schmutzige Duese? Warte auf Reset."
|
||||||
|
|
||||||
|
#MSG_BRIGHT c=6
|
||||||
|
"Bright"
|
||||||
|
"Hell"
|
||||||
|
|
||||||
|
#MSG_BRIGHTNESS c=18
|
||||||
|
"Brightness"
|
||||||
|
"Helligkeit"
|
||||||
|
|
||||||
#MSG_BED
|
#MSG_BED
|
||||||
"Bed"
|
"Bed"
|
||||||
"Bett"
|
"Bett"
|
||||||
|
|
||||||
#MSG_MENU_BELT_STATUS c=15 r=1
|
#MSG_BELT_STATUS c=18
|
||||||
"Belt status"
|
"Belt status"
|
||||||
"Gurtstatus"
|
"Gurtstatus"
|
||||||
|
|
||||||
|
|
@ -166,7 +202,7 @@
|
||||||
"Copy selected language?"
|
"Copy selected language?"
|
||||||
"Gewaehlte Sprache kopieren?"
|
"Gewaehlte Sprache kopieren?"
|
||||||
|
|
||||||
#MSG_CRASHDETECT
|
#MSG_CRASHDETECT c=13
|
||||||
"Crash det."
|
"Crash det."
|
||||||
"Crash Erk."
|
"Crash Erk."
|
||||||
|
|
||||||
|
|
@ -182,7 +218,7 @@
|
||||||
"Crash detected. Resume print?"
|
"Crash detected. Resume print?"
|
||||||
"Crash erkannt. Druck fortfuehren?"
|
"Crash erkannt. Druck fortfuehren?"
|
||||||
|
|
||||||
#
|
#MSG_CRASH c=7
|
||||||
"Crash"
|
"Crash"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
|
|
@ -202,15 +238,19 @@
|
||||||
"Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
|
"Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
|
||||||
"Der Abstand zwischen der Spitze der Duese und dem Bett ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, Kapitel Erste Schritte, Abschnitt Erste Schicht Kalibrierung."
|
"Der Abstand zwischen der Spitze der Duese und dem Bett ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, Kapitel Erste Schritte, Abschnitt Erste Schicht Kalibrierung."
|
||||||
|
|
||||||
|
#MSG_FS_CONTINUE c=5
|
||||||
|
"Cont."
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
|
#MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
|
||||||
"Do you want to repeat last step to readjust distance between nozzle and heatbed?"
|
"Do you want to repeat last step to readjust distance between nozzle and heatbed?"
|
||||||
"Moechten Sie den letzten Schritt wiederholen, um den Abstand zwischen Duese und Druckbett neu einzustellen?"
|
"Moechten Sie den letzten Schritt wiederholen, um den Abstand zwischen Duese und Druckbett neu einzustellen?"
|
||||||
|
|
||||||
#MSG_EXTRUDER_CORRECTION c=10
|
#MSG_EXTRUDER_CORRECTION c=13
|
||||||
"E-correct:"
|
"E-correct:"
|
||||||
"E-Korrektur:"
|
"E-Korrektur:"
|
||||||
|
|
||||||
#MSG_EJECT_FILAMENT c=17 r=1
|
#MSG_EJECT_FILAMENT c=16
|
||||||
"Eject filament"
|
"Eject filament"
|
||||||
"Filamentauswurf"
|
"Filamentauswurf"
|
||||||
|
|
||||||
|
|
@ -218,7 +258,7 @@
|
||||||
"Ejecting filament"
|
"Ejecting filament"
|
||||||
"werfe Filament aus"
|
"werfe Filament aus"
|
||||||
|
|
||||||
#MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
|
#MSG_SELFTEST_ENDSTOP_NOTHIT c=20
|
||||||
"Endstop not hit"
|
"Endstop not hit"
|
||||||
"Ende nicht getroffen"
|
"Ende nicht getroffen"
|
||||||
|
|
||||||
|
|
@ -234,10 +274,26 @@
|
||||||
"Error - static memory has been overwritten"
|
"Error - static memory has been overwritten"
|
||||||
"Fehler - statischer Speicher wurde ueberschrieben"
|
"Fehler - statischer Speicher wurde ueberschrieben"
|
||||||
|
|
||||||
|
#MSG_CUT_FILAMENT c=16
|
||||||
|
"Cut filament"
|
||||||
|
"Fil. schneiden"
|
||||||
|
|
||||||
|
#MSG_CUTTER c=9
|
||||||
|
"Cutter"
|
||||||
|
"Messer"
|
||||||
|
|
||||||
|
# c=18
|
||||||
|
"Cutting filament"
|
||||||
|
"Schneide filament"
|
||||||
|
|
||||||
#MSG_FSENS_NOT_RESPONDING c=20 r=4
|
#MSG_FSENS_NOT_RESPONDING c=20 r=4
|
||||||
"ERROR: Filament sensor is not responding, please check connection."
|
"ERROR: Filament sensor is not responding, please check connection."
|
||||||
"FEHLER: Filament- sensor reagiert nicht, bitte Verbindung pruefen."
|
"FEHLER: Filament- sensor reagiert nicht, bitte Verbindung pruefen."
|
||||||
|
|
||||||
|
#MSG_DIM c=6
|
||||||
|
"Dim"
|
||||||
|
"Dimm"
|
||||||
|
|
||||||
#MSG_ERROR
|
#MSG_ERROR
|
||||||
"ERROR:"
|
"ERROR:"
|
||||||
"FEHLER:"
|
"FEHLER:"
|
||||||
|
|
@ -246,11 +302,11 @@
|
||||||
"Extruder fan:"
|
"Extruder fan:"
|
||||||
"Extruder Luefter:"
|
"Extruder Luefter:"
|
||||||
|
|
||||||
#MSG_INFO_EXTRUDER c=15 r=1
|
#MSG_INFO_EXTRUDER c=18
|
||||||
"Extruder info"
|
"Extruder info"
|
||||||
"Extruder Info"
|
"Extruder Info"
|
||||||
|
|
||||||
#MSG_MOVE_E
|
#MSG_EXTRUDER c=17
|
||||||
"Extruder"
|
"Extruder"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
|
|
@ -258,7 +314,7 @@
|
||||||
"Fail stats MMU"
|
"Fail stats MMU"
|
||||||
"MMU-Fehler"
|
"MMU-Fehler"
|
||||||
|
|
||||||
#MSG_FSENSOR_AUTOLOAD
|
#MSG_FSENSOR_AUTOLOAD c=13
|
||||||
"F. autoload"
|
"F. autoload"
|
||||||
"F. autoladen"
|
"F. autoladen"
|
||||||
|
|
||||||
|
|
@ -274,17 +330,17 @@
|
||||||
"Fan test"
|
"Fan test"
|
||||||
"Lueftertest"
|
"Lueftertest"
|
||||||
|
|
||||||
#MSG_FANS_CHECK
|
#MSG_FANS_CHECK c=13
|
||||||
"Fans check"
|
"Fans check"
|
||||||
"Luefter Chk."
|
"Luefter Chk."
|
||||||
|
|
||||||
#MSG_FSENSOR
|
#MSG_FSENSOR
|
||||||
"Fil. sensor"
|
"Fil. sensor"
|
||||||
"\x00"
|
"Fil. Sensor"
|
||||||
|
|
||||||
#
|
#MSG_FIL_RUNOUTS c=14
|
||||||
"Filam. runouts"
|
"Fil. runouts "
|
||||||
"Filam. Maengel"
|
"Fil. Maengel "
|
||||||
|
|
||||||
#MSG_FILAMENT_CLEAN c=20 r=2
|
#MSG_FILAMENT_CLEAN c=20 r=2
|
||||||
"Filament extruding & with correct color?"
|
"Filament extruding & with correct color?"
|
||||||
|
|
@ -298,7 +354,7 @@
|
||||||
"Filament sensor"
|
"Filament sensor"
|
||||||
"Filamentsensor"
|
"Filamentsensor"
|
||||||
|
|
||||||
#MSG_FILAMENT_USED c=19 r=1
|
#MSG_FILAMENT_USED c=19
|
||||||
"Filament used"
|
"Filament used"
|
||||||
"Filament benutzt"
|
"Filament benutzt"
|
||||||
|
|
||||||
|
|
@ -306,15 +362,19 @@
|
||||||
"Print time"
|
"Print time"
|
||||||
"Druckzeit"
|
"Druckzeit"
|
||||||
|
|
||||||
#MSG_FILE_INCOMPLETE c=20 r=2
|
#MSG_FS_ACTION c=10
|
||||||
|
"FS Action"
|
||||||
|
"FS Aktion"
|
||||||
|
|
||||||
|
#MSG_FILE_INCOMPLETE c=20 r=3
|
||||||
"File incomplete. Continue anyway?"
|
"File incomplete. Continue anyway?"
|
||||||
"Datei unvollstaendig Trotzdem fortfahren?"
|
"Datei unvollstaendig Trotzdem fortfahren?"
|
||||||
|
|
||||||
#MSG_FINISHING_MOVEMENTS c=20 r=1
|
#MSG_FINISHING_MOVEMENTS c=20
|
||||||
"Finishing movements"
|
"Finishing movements"
|
||||||
"Bewegung beenden"
|
"Bewegung beenden"
|
||||||
|
|
||||||
#MSG_V2_CALIBRATION c=17 r=1
|
#MSG_V2_CALIBRATION c=18
|
||||||
"First layer cal."
|
"First layer cal."
|
||||||
"Erste-Schicht Kal."
|
"Erste-Schicht Kal."
|
||||||
|
|
||||||
|
|
@ -398,17 +458,17 @@
|
||||||
"Checking sensors "
|
"Checking sensors "
|
||||||
"Pruefe Sensoren "
|
"Pruefe Sensoren "
|
||||||
|
|
||||||
#MSG_SELFTEST_CHECK_X c=20
|
#MSG_CHECKING_X c=20
|
||||||
"Checking X axis "
|
"Checking X axis"
|
||||||
"Pruefe X Achse "
|
"Pruefe X Achse"
|
||||||
|
|
||||||
#MSG_SELFTEST_CHECK_Y c=20
|
#MSG_CHECKING_Y c=20
|
||||||
"Checking Y axis "
|
"Checking Y axis"
|
||||||
"Pruefe Y Achse "
|
"Pruefe Y Achse"
|
||||||
|
|
||||||
#MSG_SELFTEST_CHECK_Z c=20
|
#MSG_SELFTEST_CHECK_Z c=20
|
||||||
"Checking Z axis "
|
"Checking Z axis"
|
||||||
"Pruefe Z Achse "
|
"Pruefe Z Achse"
|
||||||
|
|
||||||
#MSG_CHOOSE_EXTRUDER c=20 r=1
|
#MSG_CHOOSE_EXTRUDER c=20 r=1
|
||||||
"Choose extruder:"
|
"Choose extruder:"
|
||||||
|
|
@ -438,7 +498,7 @@
|
||||||
"Insert filament"
|
"Insert filament"
|
||||||
"Filament einlegen"
|
"Filament einlegen"
|
||||||
|
|
||||||
#MSG_WIZARD_FILAMENT_LOADED c=20 r=2
|
#MSG_FILAMENT_LOADED c=20 r=2
|
||||||
"Is filament loaded?"
|
"Is filament loaded?"
|
||||||
"Ist das Filament geladen?"
|
"Ist das Filament geladen?"
|
||||||
|
|
||||||
|
|
@ -446,7 +506,7 @@
|
||||||
"Is steel sheet on heatbed?"
|
"Is steel sheet on heatbed?"
|
||||||
"Liegt das Stahlblech auf dem Heizbett?"
|
"Liegt das Stahlblech auf dem Heizbett?"
|
||||||
|
|
||||||
#
|
#MSG_LAST_PRINT_FAILURES c=20
|
||||||
"Last print failures"
|
"Last print failures"
|
||||||
"Letzte Druckfehler"
|
"Letzte Druckfehler"
|
||||||
|
|
||||||
|
|
@ -454,7 +514,7 @@
|
||||||
"If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
|
"If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
|
||||||
"Wenn Sie zusaetzliche Stahlbleche haben, kalibrieren Sie deren Voreinstellungen unter Einstellungen - HW Setup - Stahlbleche."
|
"Wenn Sie zusaetzliche Stahlbleche haben, kalibrieren Sie deren Voreinstellungen unter Einstellungen - HW Setup - Stahlbleche."
|
||||||
|
|
||||||
#
|
#MSG_LAST_PRINT c=18
|
||||||
"Last print"
|
"Last print"
|
||||||
"Letzter Druck"
|
"Letzter Druck"
|
||||||
|
|
||||||
|
|
@ -478,6 +538,10 @@
|
||||||
"Live adjust Z"
|
"Live adjust Z"
|
||||||
"Z einstellen"
|
"Z einstellen"
|
||||||
|
|
||||||
|
# c=20 r=6
|
||||||
|
"Insert the filament (do not load it) into the extruder and then press the knob."
|
||||||
|
"Stecken Sie das Filament (nicht laden) in den Extruder und druecken Sie dann den Knopf."
|
||||||
|
|
||||||
#MSG_LOAD_FILAMENT c=17
|
#MSG_LOAD_FILAMENT c=17
|
||||||
"Load filament"
|
"Load filament"
|
||||||
"Filament laden"
|
"Filament laden"
|
||||||
|
|
@ -498,7 +562,7 @@
|
||||||
"Load to nozzle"
|
"Load to nozzle"
|
||||||
"In Druckduese laden"
|
"In Druckduese laden"
|
||||||
|
|
||||||
#MSG_M117_V2_CALIBRATION c=25 r=1
|
#MSG_M117_V2_CALIBRATION c=25
|
||||||
"M117 First layer cal."
|
"M117 First layer cal."
|
||||||
"M117 Erste-Schicht Kal."
|
"M117 Erste-Schicht Kal."
|
||||||
|
|
||||||
|
|
@ -506,11 +570,19 @@
|
||||||
"Main"
|
"Main"
|
||||||
"Hauptmenue"
|
"Hauptmenue"
|
||||||
|
|
||||||
|
#MSG_BL_HIGH c=12
|
||||||
|
"Level Bright"
|
||||||
|
"Hell.wert"
|
||||||
|
|
||||||
|
#MSG_BL_LOW c=12
|
||||||
|
"Level Dimmed"
|
||||||
|
"Dimmwert"
|
||||||
|
|
||||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
|
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
|
||||||
"Measuring reference height of calibration point"
|
"Measuring reference height of calibration point"
|
||||||
"Messen der Referenzhoehe des Kalibrierpunktes"
|
"Messen der Referenzhoehe des Kalibrierpunktes"
|
||||||
|
|
||||||
#MSG_MESH_BED_LEVELING
|
#MSG_MESH_BED_LEVELING c=18
|
||||||
"Mesh Bed Leveling"
|
"Mesh Bed Leveling"
|
||||||
"MeshBett Ausgleich"
|
"MeshBett Ausgleich"
|
||||||
|
|
||||||
|
|
@ -526,7 +598,7 @@
|
||||||
"Measured skew"
|
"Measured skew"
|
||||||
"Schraeglauf"
|
"Schraeglauf"
|
||||||
|
|
||||||
#
|
#MSG_MMU_FAILS c=14
|
||||||
"MMU fails"
|
"MMU fails"
|
||||||
"MMU Fehler"
|
"MMU Fehler"
|
||||||
|
|
||||||
|
|
@ -534,7 +606,7 @@
|
||||||
"MMU load failed "
|
"MMU load failed "
|
||||||
"MMU Ladefehler"
|
"MMU Ladefehler"
|
||||||
|
|
||||||
#
|
#MSG_MMU_LOAD_FAILS c=14
|
||||||
"MMU load fails"
|
"MMU load fails"
|
||||||
"MMU Ladefehler"
|
"MMU Ladefehler"
|
||||||
|
|
||||||
|
|
@ -546,6 +618,10 @@
|
||||||
"Mode"
|
"Mode"
|
||||||
"Modus"
|
"Modus"
|
||||||
|
|
||||||
|
# c=20 r=3
|
||||||
|
"MK3 firmware detected on MK3S printer"
|
||||||
|
"MK3-Firmware am MK3S-Drucker erkannt"
|
||||||
|
|
||||||
#MSG_NORMAL
|
#MSG_NORMAL
|
||||||
"Normal"
|
"Normal"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
@ -568,7 +644,7 @@
|
||||||
|
|
||||||
#MSG_AUTO_POWER
|
#MSG_AUTO_POWER
|
||||||
"Auto power"
|
"Auto power"
|
||||||
"\x00"
|
"Auto Leist"
|
||||||
|
|
||||||
#MSG_HIGH_POWER
|
#MSG_HIGH_POWER
|
||||||
"High power"
|
"High power"
|
||||||
|
|
@ -638,7 +714,7 @@
|
||||||
"Nozzle"
|
"Nozzle"
|
||||||
"Duese"
|
"Duese"
|
||||||
|
|
||||||
#MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
|
#MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
|
||||||
"Old settings found. Default PID, Esteps etc. will be set."
|
"Old settings found. Default PID, Esteps etc. will be set."
|
||||||
"Alte Einstellungen gefunden. Standard PID, E-Steps u.s.w. werden gesetzt."
|
"Alte Einstellungen gefunden. Standard PID, E-Steps u.s.w. werden gesetzt."
|
||||||
|
|
||||||
|
|
@ -670,7 +746,7 @@
|
||||||
"PINDA Heating"
|
"PINDA Heating"
|
||||||
"PINDA erwaermen"
|
"PINDA erwaermen"
|
||||||
|
|
||||||
#MSG_PAPER c=20 r=8
|
#MSG_PAPER c=20 r=10
|
||||||
"Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
|
"Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
|
||||||
"Legen Sie ein Blatt Papier unter die Duese waehrend der Kalibrierung der ersten 4 Punkte. Wenn die Duese das Papier erfasst, den Drucker sofort ausschalten."
|
"Legen Sie ein Blatt Papier unter die Duese waehrend der Kalibrierung der ersten 4 Punkte. Wenn die Duese das Papier erfasst, den Drucker sofort ausschalten."
|
||||||
|
|
||||||
|
|
@ -742,15 +818,23 @@
|
||||||
"Preheating nozzle. Please wait."
|
"Preheating nozzle. Please wait."
|
||||||
"Vorheizen der Duese. Bitte warten."
|
"Vorheizen der Duese. Bitte warten."
|
||||||
|
|
||||||
|
# c=14
|
||||||
|
"PINDA"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#
|
#
|
||||||
"Please upgrade."
|
"Please upgrade."
|
||||||
"Bitte aktualisieren."
|
"Bitte aktualisieren."
|
||||||
|
|
||||||
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
||||||
"Press knob to preheat nozzle and continue."
|
"Press the knob to preheat nozzle and continue."
|
||||||
"Bitte druecken Sie den Knopf um die Duese vorzuheizen und fortzufahren."
|
"Bitte druecken Sie den Knopf um die Duese vorzuheizen und fortzufahren."
|
||||||
|
|
||||||
#
|
#MSG_FS_PAUSE c=5
|
||||||
|
"Pause"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
|
#MSG_POWER_FAILURES c=14
|
||||||
"Power failures"
|
"Power failures"
|
||||||
"Netzfehler"
|
"Netzfehler"
|
||||||
|
|
||||||
|
|
@ -758,11 +842,11 @@
|
||||||
"Print aborted"
|
"Print aborted"
|
||||||
"Druck abgebrochen"
|
"Druck abgebrochen"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Preheating to load"
|
"Preheating to load"
|
||||||
"Heizen zum Laden"
|
"Heizen zum Laden"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Preheating to unload"
|
"Preheating to unload"
|
||||||
"Heizen zum Entladen"
|
"Heizen zum Entladen"
|
||||||
|
|
||||||
|
|
@ -774,7 +858,7 @@
|
||||||
"Print from SD"
|
"Print from SD"
|
||||||
"Drucken von SD"
|
"Drucken von SD"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Press the knob"
|
"Press the knob"
|
||||||
"Knopf druecken zum"
|
"Knopf druecken zum"
|
||||||
|
|
||||||
|
|
@ -814,15 +898,23 @@
|
||||||
"Rear side [um]"
|
"Rear side [um]"
|
||||||
"Hinten [um]"
|
"Hinten [um]"
|
||||||
|
|
||||||
#MSG_RECOVERING_PRINT c=20 r=1
|
# c=20 r=4
|
||||||
"Recovering print "
|
"Please unload the filament first, then repeat this action."
|
||||||
"Druck wiederherst "
|
"Bitte entladen Sie erst das Filament und versuchen Sie es nochmal."
|
||||||
|
|
||||||
#MSG_REMOVE_OLD_FILAMENT c=20 r=4
|
# c=20 r=4
|
||||||
|
"Please check the IR sensor connection, unload filament if present."
|
||||||
|
"Bitte IR Sensor Verbindungen ueber- pruefen und Filament entladen ist."
|
||||||
|
|
||||||
|
#MSG_RECOVERING_PRINT c=20
|
||||||
|
"Recovering print "
|
||||||
|
"Druck wiederherst "
|
||||||
|
|
||||||
|
#MSG_REMOVE_OLD_FILAMENT c=20 r=5
|
||||||
"Remove old filament and press the knob to start loading new filament."
|
"Remove old filament and press the knob to start loading new filament."
|
||||||
"Entfernen Sie das alte Filament und druecken Sie den Knopf, um das neue zu laden."
|
"Entfernen Sie das alte Filament und druecken Sie den Knopf, um das neue zu laden."
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Prusa i3 MK3S OK."
|
"Prusa i3 MK3S OK."
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
|
|
@ -830,15 +922,15 @@
|
||||||
"Reset XYZ calibr."
|
"Reset XYZ calibr."
|
||||||
"Reset XYZ Kalibr."
|
"Reset XYZ Kalibr."
|
||||||
|
|
||||||
#MSG_BED_CORRECTION_RESET
|
#MSG_RESET c=14
|
||||||
"Reset"
|
"Reset"
|
||||||
"Ruecksetzen"
|
"Ruecksetzen"
|
||||||
|
|
||||||
#MSG_RESUME_PRINT
|
#MSG_RESUME_PRINT c=18
|
||||||
"Resume print"
|
"Resume print"
|
||||||
"Druck fortsetzen"
|
"Druck fortsetzen"
|
||||||
|
|
||||||
#MSG_RESUMING_PRINT c=20 r=1
|
#MSG_RESUMING_PRINT c=20
|
||||||
"Resuming print"
|
"Resuming print"
|
||||||
"Druck fortgesetzt"
|
"Druck fortgesetzt"
|
||||||
|
|
||||||
|
|
@ -906,11 +998,23 @@
|
||||||
"Set temperature:"
|
"Set temperature:"
|
||||||
"Temp. einstellen:"
|
"Temp. einstellen:"
|
||||||
|
|
||||||
|
# c=20
|
||||||
|
"Prusa i3 MK2.5 OK."
|
||||||
|
"\x00"
|
||||||
|
|
||||||
|
# c=20
|
||||||
|
"Prusa i3 MK2.5S OK."
|
||||||
|
"\x00"
|
||||||
|
|
||||||
|
# c=20
|
||||||
|
"Prusa i3 MK3 OK."
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#MSG_SETTINGS
|
#MSG_SETTINGS
|
||||||
"Settings"
|
"Settings"
|
||||||
"Einstellungen"
|
"Einstellungen"
|
||||||
|
|
||||||
#MSG_SHOW_END_STOPS c=17 r=1
|
#MSG_SHOW_END_STOPS c=18
|
||||||
"Show end stops"
|
"Show end stops"
|
||||||
"Endschalter Status"
|
"Endschalter Status"
|
||||||
|
|
||||||
|
|
@ -918,7 +1022,7 @@
|
||||||
"Sensor state"
|
"Sensor state"
|
||||||
"Sensorstatus"
|
"Sensorstatus"
|
||||||
|
|
||||||
#MSG_FILE_CNT c=20 r=4
|
#MSG_FILE_CNT c=20 r=6
|
||||||
"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
|
"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
|
||||||
"Einige Dateien wur- den nicht sortiert. Max. Dateien pro Verzeichnis = 100."
|
"Einige Dateien wur- den nicht sortiert. Max. Dateien pro Verzeichnis = 100."
|
||||||
|
|
||||||
|
|
@ -956,6 +1060,10 @@
|
||||||
|
|
||||||
#MSG_SOUND
|
#MSG_SOUND
|
||||||
"Sound"
|
"Sound"
|
||||||
|
"Ton"
|
||||||
|
|
||||||
|
# c=7
|
||||||
|
"Runouts"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
@ -1002,7 +1110,7 @@
|
||||||
"Select filament:"
|
"Select filament:"
|
||||||
"Filament auswaehlen:"
|
"Filament auswaehlen:"
|
||||||
|
|
||||||
#MSG_TEMP_CALIBRATION c=12 r=1
|
#MSG_TEMP_CALIBRATION c=14
|
||||||
"Temp. cal."
|
"Temp. cal."
|
||||||
"Temp Kalib."
|
"Temp Kalib."
|
||||||
|
|
||||||
|
|
@ -1022,6 +1130,10 @@
|
||||||
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
||||||
"Temp.kalibrierung ist fertig + aktiv. Temp.kalibrierung kann ausgeschaltet werden im Menu Einstellungen -> Temp.kal."
|
"Temp.kalibrierung ist fertig + aktiv. Temp.kalibrierung kann ausgeschaltet werden im Menu Einstellungen -> Temp.kal."
|
||||||
|
|
||||||
|
# c=20 r=3
|
||||||
|
"Sensor verified, remove the filament now."
|
||||||
|
"Sensor ueberprueft, entladen Sie jetzt das Filament."
|
||||||
|
|
||||||
#MSG_TEMPERATURE
|
#MSG_TEMPERATURE
|
||||||
"Temperature"
|
"Temperature"
|
||||||
"Temperatur"
|
"Temperatur"
|
||||||
|
|
@ -1030,9 +1142,9 @@
|
||||||
"Temperatures"
|
"Temperatures"
|
||||||
"Temperaturen"
|
"Temperaturen"
|
||||||
|
|
||||||
#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
|
#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
|
||||||
"There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
|
"There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
|
||||||
"Es ist noch notwendig die Z-Kalibrierung auszufuehren. Bitte befolgen Sie das Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrierablauf."
|
"Es ist noch not- wendig die Z- Kalibrierung aus- zufuehren. Bitte befolgen Sie das Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrierablauf."
|
||||||
|
|
||||||
#
|
#
|
||||||
"Total filament"
|
"Total filament"
|
||||||
|
|
@ -1050,15 +1162,15 @@
|
||||||
"Unload"
|
"Unload"
|
||||||
"Entladen"
|
"Entladen"
|
||||||
|
|
||||||
#
|
#MSG_TOTAL_FAILURES c=20
|
||||||
"Total failures"
|
"Total failures"
|
||||||
"Gesamte Fehler"
|
"Gesamte Fehler"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"to load filament"
|
"to load filament"
|
||||||
"Filament laden"
|
"Filament laden"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"to unload filament"
|
"to unload filament"
|
||||||
"Filament entladen"
|
"Filament entladen"
|
||||||
|
|
||||||
|
|
@ -1070,7 +1182,7 @@
|
||||||
"Unloading filament"
|
"Unloading filament"
|
||||||
"Filament auswerfen"
|
"Filament auswerfen"
|
||||||
|
|
||||||
#
|
#MSG_TOTAL c=6
|
||||||
"Total"
|
"Total"
|
||||||
"Gesamt"
|
"Gesamt"
|
||||||
|
|
||||||
|
|
@ -1126,7 +1238,7 @@
|
||||||
"Wizard"
|
"Wizard"
|
||||||
"Assistent"
|
"Assistent"
|
||||||
|
|
||||||
#MSG_XYZ_DETAILS c=19 r=1
|
#MSG_XYZ_DETAILS c=18
|
||||||
"XYZ cal. details"
|
"XYZ cal. details"
|
||||||
"XYZ Kal. Details"
|
"XYZ Kal. Details"
|
||||||
|
|
||||||
|
|
@ -1150,7 +1262,11 @@
|
||||||
"XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
|
"XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
|
||||||
"XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schraeg."
|
"XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schraeg."
|
||||||
|
|
||||||
#
|
#MSG_TIMEOUT c=12
|
||||||
|
"Timeout"
|
||||||
|
"Verzoegerung"
|
||||||
|
|
||||||
|
#MSG_X_CORRECTION c=13
|
||||||
"X-correct:"
|
"X-correct:"
|
||||||
"X-Korrektur:"
|
"X-Korrektur:"
|
||||||
|
|
||||||
|
|
@ -1190,7 +1306,11 @@
|
||||||
"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
|
"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
|
||||||
"Der Drucker beginnt mit dem Drucken einer Zickzacklinie. Drehen Sie den Knopf, bis Sie die optimale Hoehe erreicht haben. Ueberpruefen Sie die Bilder im Handbuch (Kapitel Kalibrierung)."
|
"Der Drucker beginnt mit dem Drucken einer Zickzacklinie. Drehen Sie den Knopf, bis Sie die optimale Hoehe erreicht haben. Ueberpruefen Sie die Bilder im Handbuch (Kapitel Kalibrierung)."
|
||||||
|
|
||||||
#
|
# c=20 r=5
|
||||||
|
"Verification failed, remove the filament and try again."
|
||||||
|
"Ueberpruefung fehl- geschlagen, entladen Sie das Filament und versuchen Sie es erneut."
|
||||||
|
|
||||||
|
#MSG_Y_CORRECTION c=13
|
||||||
"Y-correct:"
|
"Y-correct:"
|
||||||
"Y-Korrektur:"
|
"Y-Korrektur:"
|
||||||
|
|
||||||
|
|
@ -1230,7 +1350,7 @@
|
||||||
"Warn"
|
"Warn"
|
||||||
"Warnen"
|
"Warnen"
|
||||||
|
|
||||||
#
|
#MSG_HW_SETUP c=18
|
||||||
"HW Setup"
|
"HW Setup"
|
||||||
"HW Einstellungen"
|
"HW Einstellungen"
|
||||||
|
|
||||||
|
|
@ -1246,10 +1366,6 @@
|
||||||
"Mesh"
|
"Mesh"
|
||||||
"Gitter"
|
"Gitter"
|
||||||
|
|
||||||
#
|
|
||||||
"Mesh bed leveling"
|
|
||||||
"MeshBett Ausgleich"
|
|
||||||
|
|
||||||
#
|
#
|
||||||
"MK3S firmware detected on MK3 printer"
|
"MK3S firmware detected on MK3 printer"
|
||||||
"MK3S-Firmware auf MK3-Drucker erkannt"
|
"MK3S-Firmware auf MK3-Drucker erkannt"
|
||||||
|
|
@ -1278,11 +1394,11 @@
|
||||||
"G-code sliced for a different level. Please re-slice the model again. Print cancelled."
|
"G-code sliced for a different level. Please re-slice the model again. Print cancelled."
|
||||||
"G-Code ist fuer einen anderen Level geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen."
|
"G-Code ist fuer einen anderen Level geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen."
|
||||||
|
|
||||||
#
|
#MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
|
||||||
"G-code sliced for a different printer type. Continue?"
|
"G-code sliced for a different printer type. Continue?"
|
||||||
"G-Code ist fuer einen anderen Drucker geslict. Fortfahren?"
|
"G-Code ist fuer einen anderen Drucker geslict. Fortfahren?"
|
||||||
|
|
||||||
#
|
#MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=6
|
||||||
"G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
|
"G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
|
||||||
"G-Code ist fuer einen anderen Drucker geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen."
|
"G-Code ist fuer einen anderen Drucker geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen."
|
||||||
|
|
||||||
|
|
@ -1298,11 +1414,11 @@
|
||||||
"PINDA:"
|
"PINDA:"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Preheating to cut"
|
"Preheating to cut"
|
||||||
"Heizen zum Schnitt"
|
"Heizen zum Schnitt"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Preheating to eject"
|
"Preheating to eject"
|
||||||
"Heizen zum Auswurf"
|
"Heizen zum Auswurf"
|
||||||
|
|
||||||
|
|
@ -1314,6 +1430,10 @@
|
||||||
"Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
|
"Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
|
||||||
"Der Durchmesser der Druckerduese weicht vom G-Code ab. Bitte ueberpruefen Sie den Wert in den Einstellungen. Druck abgebrochen."
|
"Der Durchmesser der Druckerduese weicht vom G-Code ab. Bitte ueberpruefen Sie den Wert in den Einstellungen. Druck abgebrochen."
|
||||||
|
|
||||||
|
# c=20
|
||||||
|
"%s level expected"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#
|
#
|
||||||
"Rename"
|
"Rename"
|
||||||
"Umbenennen"
|
"Umbenennen"
|
||||||
|
|
@ -1326,22 +1446,23 @@
|
||||||
"Sensor info"
|
"Sensor info"
|
||||||
"Sensor Info"
|
"Sensor Info"
|
||||||
|
|
||||||
#
|
#MSG_SHEET c=10
|
||||||
"Sheet"
|
"Sheet"
|
||||||
"Blech"
|
"Stahlblech"
|
||||||
|
|
||||||
#MSG_SOUND_BLIND
|
#MSG_SOUND_BLIND
|
||||||
"Assist"
|
"Assist"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
#
|
#MSG_STEEL_SHEET c=18
|
||||||
"Steel sheets"
|
"Steel sheets"
|
||||||
"Stahlbleche"
|
"Stahlbleche"
|
||||||
|
|
||||||
#
|
#MSG_Z_CORRECTION c=13
|
||||||
"Z-correct:"
|
"Z-correct:"
|
||||||
"Z-Korrektur:"
|
"Z-Korrektur:"
|
||||||
|
|
||||||
#MSG_Z_PROBE_NR
|
#MSG_Z_PROBE_NR
|
||||||
"Z-probe nr."
|
"Z-probe nr."
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,26 @@
|
||||||
"[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
|
"[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
|
||||||
"[%.7s]Ajuste Z\x0aAjustado, continuar\x0ao empezar de nuevo?\x0a%cContinuar%cRepetir"
|
"[%.7s]Ajuste Z\x0aAjustado, continuar\x0ao empezar de nuevo?\x0a%cContinuar%cRepetir"
|
||||||
|
|
||||||
|
#MSG_IR_03_OR_OLDER c=18
|
||||||
|
" 0.3 or older"
|
||||||
|
" 0.3 o mayor"
|
||||||
|
|
||||||
|
# c=18
|
||||||
|
"FS v0.3 or older"
|
||||||
|
"FS 0.3 o mayor"
|
||||||
|
|
||||||
|
#MSG_IR_04_OR_NEWER c=18
|
||||||
|
" 0.4 or newer"
|
||||||
|
" 0.4 o mas nueva"
|
||||||
|
|
||||||
|
# c=18
|
||||||
|
"FS v0.4 or newer"
|
||||||
|
"FS 0.4 o mas nueva"
|
||||||
|
|
||||||
|
#MSG_IR_UNKNOWN c=18
|
||||||
|
"unknown state"
|
||||||
|
"estado desconocido"
|
||||||
|
|
||||||
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
|
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
|
||||||
" of 4"
|
" of 4"
|
||||||
" de 4"
|
" de 4"
|
||||||
|
|
@ -42,7 +62,11 @@
|
||||||
"Ambient"
|
"Ambient"
|
||||||
"Ambiente"
|
"Ambiente"
|
||||||
|
|
||||||
#MSG_PRESS c=20
|
#MSG_AUTO c=6
|
||||||
|
"Auto"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
|
#MSG_PRESS c=20 r=2
|
||||||
"and press the knob"
|
"and press the knob"
|
||||||
"Haz clic"
|
"Haz clic"
|
||||||
|
|
||||||
|
|
@ -58,9 +82,9 @@
|
||||||
"Auto home"
|
"Auto home"
|
||||||
"Llevar al origen"
|
"Llevar al origen"
|
||||||
|
|
||||||
#MSG_AUTOLOAD_FILAMENT c=17
|
#MSG_AUTOLOAD_FILAMENT c=18
|
||||||
"AutoLoad filament"
|
"AutoLoad filament"
|
||||||
"Carga automatica de filamento"
|
"Carga auto. filam."
|
||||||
|
|
||||||
#MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
|
#MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
|
||||||
"Autoloading filament available only when filament sensor is turned on..."
|
"Autoloading filament available only when filament sensor is turned on..."
|
||||||
|
|
@ -94,17 +118,29 @@
|
||||||
"Bed level correct"
|
"Bed level correct"
|
||||||
"Corr. de la cama"
|
"Corr. de la cama"
|
||||||
|
|
||||||
#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
|
#MSG_BELTTEST c=17
|
||||||
|
"Belt test "
|
||||||
|
"Test cinturon "
|
||||||
|
|
||||||
|
#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
|
||||||
"Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
|
"Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
|
||||||
"Nivelacion fallada. Sensor no funciona. Restos en boquilla? Esperando reset."
|
"Nivelacion fallada. Sensor no funciona. Restos en boquilla? Esperando reset."
|
||||||
|
|
||||||
|
#MSG_BRIGHT c=6
|
||||||
|
"Bright"
|
||||||
|
"Brill."
|
||||||
|
|
||||||
|
#MSG_BRIGHTNESS c=18
|
||||||
|
"Brightness"
|
||||||
|
"Brillo"
|
||||||
|
|
||||||
#MSG_BED
|
#MSG_BED
|
||||||
"Bed"
|
"Bed"
|
||||||
"Base"
|
"Base"
|
||||||
|
|
||||||
#MSG_MENU_BELT_STATUS c=15 r=1
|
#MSG_BELT_STATUS c=18
|
||||||
"Belt status"
|
"Belt status"
|
||||||
"Estado de la correa"
|
"Estado de correa"
|
||||||
|
|
||||||
#MSG_RECOVER_PRINT c=20 r=2
|
#MSG_RECOVER_PRINT c=20 r=2
|
||||||
"Blackout occurred. Recover print?"
|
"Blackout occurred. Recover print?"
|
||||||
|
|
@ -166,7 +202,7 @@
|
||||||
"Copy selected language?"
|
"Copy selected language?"
|
||||||
"Copiar idioma seleccionado?"
|
"Copiar idioma seleccionado?"
|
||||||
|
|
||||||
#MSG_CRASHDETECT
|
#MSG_CRASHDETECT c=13
|
||||||
"Crash det."
|
"Crash det."
|
||||||
"Det. choque"
|
"Det. choque"
|
||||||
|
|
||||||
|
|
@ -182,7 +218,7 @@
|
||||||
"Crash detected. Resume print?"
|
"Crash detected. Resume print?"
|
||||||
"Choque detectado. Continuar impresion?"
|
"Choque detectado. Continuar impresion?"
|
||||||
|
|
||||||
#
|
#MSG_CRASH c=7
|
||||||
"Crash"
|
"Crash"
|
||||||
"Choque"
|
"Choque"
|
||||||
|
|
||||||
|
|
@ -202,23 +238,27 @@
|
||||||
"Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
|
"Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
|
||||||
"Distancia entre la punta del boquilla y la superficie de la base aun no fijada. Por favor siga el manual, capitulo Primeros Pasos, Calibracion primera capa."
|
"Distancia entre la punta del boquilla y la superficie de la base aun no fijada. Por favor siga el manual, capitulo Primeros Pasos, Calibracion primera capa."
|
||||||
|
|
||||||
|
#MSG_FS_CONTINUE c=5
|
||||||
|
"Cont."
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
|
#MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
|
||||||
"Do you want to repeat last step to readjust distance between nozzle and heatbed?"
|
"Do you want to repeat last step to readjust distance between nozzle and heatbed?"
|
||||||
"Quieres repetir el ultimo paso para reajustar la distancia boquilla-base?"
|
"Quieres repetir el ultimo paso para reajustar la distancia boquilla-base?"
|
||||||
|
|
||||||
#MSG_EXTRUDER_CORRECTION c=10
|
#MSG_EXTRUDER_CORRECTION c=13
|
||||||
"E-correct:"
|
"E-correct:"
|
||||||
"Corregir-E:"
|
"Corregir-E:"
|
||||||
|
|
||||||
#MSG_EJECT_FILAMENT c=17 r=1
|
#MSG_EJECT_FILAMENT c=16
|
||||||
"Eject filament"
|
"Eject filament"
|
||||||
"Expulsar filamento"
|
"Expulsar fil."
|
||||||
|
|
||||||
#MSG_EJECTING_FILAMENT c=20 r=1
|
#MSG_EJECTING_FILAMENT c=20 r=1
|
||||||
"Ejecting filament"
|
"Ejecting filament"
|
||||||
"Expulsando filamento"
|
"Expulsando filamento"
|
||||||
|
|
||||||
#MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
|
#MSG_SELFTEST_ENDSTOP_NOTHIT c=20
|
||||||
"Endstop not hit"
|
"Endstop not hit"
|
||||||
"Endstop no alcanzado"
|
"Endstop no alcanzado"
|
||||||
|
|
||||||
|
|
@ -234,10 +274,26 @@
|
||||||
"Error - static memory has been overwritten"
|
"Error - static memory has been overwritten"
|
||||||
"Error - se ha sobre-escrito la memoria estatica"
|
"Error - se ha sobre-escrito la memoria estatica"
|
||||||
|
|
||||||
|
#MSG_CUT_FILAMENT c=16
|
||||||
|
"Cut filament"
|
||||||
|
"Cortar filament"
|
||||||
|
|
||||||
|
#MSG_CUTTER c=9
|
||||||
|
"Cutter"
|
||||||
|
"Cuchillo"
|
||||||
|
|
||||||
|
# c=18
|
||||||
|
"Cutting filament"
|
||||||
|
"Corte de filament"
|
||||||
|
|
||||||
#MSG_FSENS_NOT_RESPONDING c=20 r=4
|
#MSG_FSENS_NOT_RESPONDING c=20 r=4
|
||||||
"ERROR: Filament sensor is not responding, please check connection."
|
"ERROR: Filament sensor is not responding, please check connection."
|
||||||
"ERROR: El sensor de filamento no responde, por favor comprueba la conexion."
|
"ERROR: El sensor de filamento no responde, por favor comprueba la conexion."
|
||||||
|
|
||||||
|
#MSG_DIM c=6
|
||||||
|
"Dim"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#MSG_ERROR
|
#MSG_ERROR
|
||||||
"ERROR:"
|
"ERROR:"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
@ -246,11 +302,11 @@
|
||||||
"Extruder fan:"
|
"Extruder fan:"
|
||||||
"Vent.extrusor:"
|
"Vent.extrusor:"
|
||||||
|
|
||||||
#MSG_INFO_EXTRUDER c=15 r=1
|
#MSG_INFO_EXTRUDER c=18
|
||||||
"Extruder info"
|
"Extruder info"
|
||||||
"Informacion del extrusor"
|
"Info. del extrusor"
|
||||||
|
|
||||||
#MSG_MOVE_E
|
#MSG_EXTRUDER c=17
|
||||||
"Extruder"
|
"Extruder"
|
||||||
"Extruir"
|
"Extruir"
|
||||||
|
|
||||||
|
|
@ -258,7 +314,7 @@
|
||||||
"Fail stats MMU"
|
"Fail stats MMU"
|
||||||
"Estadistica de fallos MMU"
|
"Estadistica de fallos MMU"
|
||||||
|
|
||||||
#MSG_FSENSOR_AUTOLOAD
|
#MSG_FSENSOR_AUTOLOAD c=13
|
||||||
"F. autoload"
|
"F. autoload"
|
||||||
"Autocarg.fil."
|
"Autocarg.fil."
|
||||||
|
|
||||||
|
|
@ -268,13 +324,13 @@
|
||||||
|
|
||||||
#MSG_FAN_SPEED c=14
|
#MSG_FAN_SPEED c=14
|
||||||
"Fan speed"
|
"Fan speed"
|
||||||
"Velocidad Vent."
|
"Velocidad Vent"
|
||||||
|
|
||||||
#MSG_SELFTEST_FAN c=20
|
#MSG_SELFTEST_FAN c=20
|
||||||
"Fan test"
|
"Fan test"
|
||||||
"Test ventiladores"
|
"Test ventiladores"
|
||||||
|
|
||||||
#MSG_FANS_CHECK
|
#MSG_FANS_CHECK c=13
|
||||||
"Fans check"
|
"Fans check"
|
||||||
"Comprob.vent"
|
"Comprob.vent"
|
||||||
|
|
||||||
|
|
@ -282,9 +338,9 @@
|
||||||
"Fil. sensor"
|
"Fil. sensor"
|
||||||
"Sensor Fil."
|
"Sensor Fil."
|
||||||
|
|
||||||
#
|
#MSG_FIL_RUNOUTS c=14
|
||||||
"Filam. runouts"
|
"Fil. runouts "
|
||||||
"Filam. acabado"
|
"Fil. acabado "
|
||||||
|
|
||||||
#MSG_FILAMENT_CLEAN c=20 r=2
|
#MSG_FILAMENT_CLEAN c=20 r=2
|
||||||
"Filament extruding & with correct color?"
|
"Filament extruding & with correct color?"
|
||||||
|
|
@ -298,7 +354,7 @@
|
||||||
"Filament sensor"
|
"Filament sensor"
|
||||||
"Sensor de filamento"
|
"Sensor de filamento"
|
||||||
|
|
||||||
#MSG_FILAMENT_USED c=19 r=1
|
#MSG_FILAMENT_USED c=19
|
||||||
"Filament used"
|
"Filament used"
|
||||||
"Filamento usado"
|
"Filamento usado"
|
||||||
|
|
||||||
|
|
@ -306,15 +362,19 @@
|
||||||
"Print time"
|
"Print time"
|
||||||
"Tiempo de imp.:"
|
"Tiempo de imp.:"
|
||||||
|
|
||||||
#MSG_FILE_INCOMPLETE c=20 r=2
|
#MSG_FS_ACTION c=10
|
||||||
|
"FS Action"
|
||||||
|
"FS accion"
|
||||||
|
|
||||||
|
#MSG_FILE_INCOMPLETE c=20 r=3
|
||||||
"File incomplete. Continue anyway?"
|
"File incomplete. Continue anyway?"
|
||||||
"Archivo incompleto. ?Continuar de todos modos?"
|
"Archivo incompleto. ?Continuar de todos modos?"
|
||||||
|
|
||||||
#MSG_FINISHING_MOVEMENTS c=20 r=1
|
#MSG_FINISHING_MOVEMENTS c=20
|
||||||
"Finishing movements"
|
"Finishing movements"
|
||||||
"Term. movimientos"
|
"Term. movimientos"
|
||||||
|
|
||||||
#MSG_V2_CALIBRATION c=17 r=1
|
#MSG_V2_CALIBRATION c=18
|
||||||
"First layer cal."
|
"First layer cal."
|
||||||
"Cal. primera cap."
|
"Cal. primera cap."
|
||||||
|
|
||||||
|
|
@ -356,7 +416,7 @@
|
||||||
|
|
||||||
#MSG_HEATING_COMPLETE c=20
|
#MSG_HEATING_COMPLETE c=20
|
||||||
"Heating done."
|
"Heating done."
|
||||||
"Calentamiento acabado."
|
"Calentando acabado."
|
||||||
|
|
||||||
#MSG_HEATING
|
#MSG_HEATING
|
||||||
"Heating"
|
"Heating"
|
||||||
|
|
@ -396,18 +456,18 @@
|
||||||
|
|
||||||
#MSG_SELFTEST_CHECK_FSENSOR c=20
|
#MSG_SELFTEST_CHECK_FSENSOR c=20
|
||||||
"Checking sensors "
|
"Checking sensors "
|
||||||
"Comprobando los sensores"
|
"Comprobando sensores"
|
||||||
|
|
||||||
#MSG_SELFTEST_CHECK_X c=20
|
#MSG_CHECKING_X c=20
|
||||||
"Checking X axis "
|
"Checking X axis"
|
||||||
"Control sensor X"
|
"Control sensor X"
|
||||||
|
|
||||||
#MSG_SELFTEST_CHECK_Y c=20
|
#MSG_CHECKING_Y c=20
|
||||||
"Checking Y axis "
|
"Checking Y axis"
|
||||||
"Control sensor Y"
|
"Control sensor Y"
|
||||||
|
|
||||||
#MSG_SELFTEST_CHECK_Z c=20
|
#MSG_SELFTEST_CHECK_Z c=20
|
||||||
"Checking Z axis "
|
"Checking Z axis"
|
||||||
"Control sensor Z"
|
"Control sensor Z"
|
||||||
|
|
||||||
#MSG_CHOOSE_EXTRUDER c=20 r=1
|
#MSG_CHOOSE_EXTRUDER c=20 r=1
|
||||||
|
|
@ -438,23 +498,23 @@
|
||||||
"Insert filament"
|
"Insert filament"
|
||||||
"Introducir filamento"
|
"Introducir filamento"
|
||||||
|
|
||||||
#MSG_WIZARD_FILAMENT_LOADED c=20 r=2
|
#MSG_FILAMENT_LOADED c=20 r=2
|
||||||
"Is filament loaded?"
|
"Is filament loaded?"
|
||||||
"Esta el filamento cargado?"
|
"Esta el filamento cargado?"
|
||||||
|
|
||||||
#MSG_STEEL_SHEET_CHECK c=20 r=2
|
#MSG_STEEL_SHEET_CHECK c=20 r=2
|
||||||
"Is steel sheet on heatbed?"
|
"Is steel sheet on heatbed?"
|
||||||
"?Esta colocada la lamina de acero sobre la base?"
|
"?Esta colocada la lamina sobre la base"
|
||||||
|
|
||||||
#
|
#MSG_LAST_PRINT_FAILURES c=20
|
||||||
"Last print failures"
|
"Last print failures"
|
||||||
"Ultimas impresiones fallidas"
|
"Ultimos imp. fallos"
|
||||||
|
|
||||||
#
|
#
|
||||||
"If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
|
"If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
|
||||||
"Si tienes planchas de acero adicionales, calibra sus ajustes en Ajustes - Ajustes HW - Planchas acero."
|
"Si tienes planchas de acero adicionales, calibra sus ajustes en Ajustes - Ajustes HW - Planchas acero."
|
||||||
|
|
||||||
#
|
#MSG_LAST_PRINT c=18
|
||||||
"Last print"
|
"Last print"
|
||||||
"Ultima impresion"
|
"Ultima impresion"
|
||||||
|
|
||||||
|
|
@ -478,6 +538,10 @@
|
||||||
"Live adjust Z"
|
"Live adjust Z"
|
||||||
"Micropaso Eje Z"
|
"Micropaso Eje Z"
|
||||||
|
|
||||||
|
# c=20 r=6
|
||||||
|
"Insert the filament (do not load it) into the extruder and then press the knob."
|
||||||
|
"Inserte el filamento (no lo cargue) en el extrusor y luego presione el dial."
|
||||||
|
|
||||||
#MSG_LOAD_FILAMENT c=17
|
#MSG_LOAD_FILAMENT c=17
|
||||||
"Load filament"
|
"Load filament"
|
||||||
"Introducir filam."
|
"Introducir filam."
|
||||||
|
|
@ -498,7 +562,7 @@
|
||||||
"Load to nozzle"
|
"Load to nozzle"
|
||||||
"Cargar a la boquilla"
|
"Cargar a la boquilla"
|
||||||
|
|
||||||
#MSG_M117_V2_CALIBRATION c=25 r=1
|
#MSG_M117_V2_CALIBRATION c=25
|
||||||
"M117 First layer cal."
|
"M117 First layer cal."
|
||||||
"M117 Cal. primera cap."
|
"M117 Cal. primera cap."
|
||||||
|
|
||||||
|
|
@ -506,13 +570,21 @@
|
||||||
"Main"
|
"Main"
|
||||||
"Menu principal"
|
"Menu principal"
|
||||||
|
|
||||||
|
#MSG_BL_HIGH c=12
|
||||||
|
"Level Bright"
|
||||||
|
"Valor brill."
|
||||||
|
|
||||||
|
#MSG_BL_LOW c=12
|
||||||
|
"Level Dimmed"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
|
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
|
||||||
"Measuring reference height of calibration point"
|
"Measuring reference height of calibration point"
|
||||||
"Midiendo altura del punto de calibracion"
|
"Midiendo altura del punto de calibracion"
|
||||||
|
|
||||||
#MSG_MESH_BED_LEVELING
|
#MSG_MESH_BED_LEVELING c=18
|
||||||
"Mesh Bed Leveling"
|
"Mesh Bed Leveling"
|
||||||
"Nivelacion Mesh Level"
|
"Nivela. Mesh Level"
|
||||||
|
|
||||||
#MSG_MMU_OK_RESUMING_POSITION c=20 r=4
|
#MSG_MMU_OK_RESUMING_POSITION c=20 r=4
|
||||||
"MMU OK. Resuming position..."
|
"MMU OK. Resuming position..."
|
||||||
|
|
@ -526,7 +598,7 @@
|
||||||
"Measured skew"
|
"Measured skew"
|
||||||
"Desviacion med:"
|
"Desviacion med:"
|
||||||
|
|
||||||
#
|
#MSG_MMU_FAILS c=14
|
||||||
"MMU fails"
|
"MMU fails"
|
||||||
"Fallos MMU"
|
"Fallos MMU"
|
||||||
|
|
||||||
|
|
@ -534,7 +606,7 @@
|
||||||
"MMU load failed "
|
"MMU load failed "
|
||||||
"Carga MMU fallida"
|
"Carga MMU fallida"
|
||||||
|
|
||||||
#
|
#MSG_MMU_LOAD_FAILS c=14
|
||||||
"MMU load fails"
|
"MMU load fails"
|
||||||
"Carga MMU falla"
|
"Carga MMU falla"
|
||||||
|
|
||||||
|
|
@ -546,6 +618,10 @@
|
||||||
"Mode"
|
"Mode"
|
||||||
"Modo"
|
"Modo"
|
||||||
|
|
||||||
|
# c=20 r=3
|
||||||
|
"MK3 firmware detected on MK3S printer"
|
||||||
|
"Firmware MK3 detectado en impresora MK3S"
|
||||||
|
|
||||||
#MSG_NORMAL
|
#MSG_NORMAL
|
||||||
"Normal"
|
"Normal"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
@ -638,7 +714,7 @@
|
||||||
"Nozzle"
|
"Nozzle"
|
||||||
"Boquilla"
|
"Boquilla"
|
||||||
|
|
||||||
#MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
|
#MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
|
||||||
"Old settings found. Default PID, Esteps etc. will be set."
|
"Old settings found. Default PID, Esteps etc. will be set."
|
||||||
"Se han encontrado ajustes anteriores. Se ajustara el PID, los pasos del extrusor, etc"
|
"Se han encontrado ajustes anteriores. Se ajustara el PID, los pasos del extrusor, etc"
|
||||||
|
|
||||||
|
|
@ -670,7 +746,7 @@
|
||||||
"PINDA Heating"
|
"PINDA Heating"
|
||||||
"Calentando PINDA"
|
"Calentando PINDA"
|
||||||
|
|
||||||
#MSG_PAPER c=20 r=8
|
#MSG_PAPER c=20 r=10
|
||||||
"Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
|
"Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
|
||||||
"Colocar una hoja de papel sobre la superficie de impresion durante la calibracion de los primeros 4 puntos. Si la boquilla mueve el papel, apagar impresora inmediatamente."
|
"Colocar una hoja de papel sobre la superficie de impresion durante la calibracion de los primeros 4 puntos. Si la boquilla mueve el papel, apagar impresora inmediatamente."
|
||||||
|
|
||||||
|
|
@ -732,7 +808,7 @@
|
||||||
|
|
||||||
#MSG_PREHEAT_NOZZLE c=20
|
#MSG_PREHEAT_NOZZLE c=20
|
||||||
"Preheat the nozzle!"
|
"Preheat the nozzle!"
|
||||||
"Precalienta extrusor!"
|
"Precalienta extrusor"
|
||||||
|
|
||||||
#MSG_PREHEAT
|
#MSG_PREHEAT
|
||||||
"Preheat"
|
"Preheat"
|
||||||
|
|
@ -742,15 +818,23 @@
|
||||||
"Preheating nozzle. Please wait."
|
"Preheating nozzle. Please wait."
|
||||||
"Precalentando nozzle. Espera por favor."
|
"Precalentando nozzle. Espera por favor."
|
||||||
|
|
||||||
|
# c=14
|
||||||
|
"PINDA"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#
|
#
|
||||||
"Please upgrade."
|
"Please upgrade."
|
||||||
"Actualize por favor"
|
"Actualize por favor"
|
||||||
|
|
||||||
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
||||||
"Press knob to preheat nozzle and continue."
|
"Press the knob to preheat nozzle and continue."
|
||||||
"Pulsa el dial para precalentar la boquilla y continue."
|
"Pulsa el dial para precalentar la boquilla y continue."
|
||||||
|
|
||||||
#
|
#MSG_FS_PAUSE c=5
|
||||||
|
"Pause"
|
||||||
|
"Pausa"
|
||||||
|
|
||||||
|
#MSG_POWER_FAILURES c=14
|
||||||
"Power failures"
|
"Power failures"
|
||||||
"Cortes de energia"
|
"Cortes de energia"
|
||||||
|
|
||||||
|
|
@ -758,13 +842,13 @@
|
||||||
"Print aborted"
|
"Print aborted"
|
||||||
"Impresion cancelada"
|
"Impresion cancelada"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Preheating to load"
|
"Preheating to load"
|
||||||
"Precalentar para cargar"
|
"Precalent. cargar"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Preheating to unload"
|
"Preheating to unload"
|
||||||
"Precalentar para descargar"
|
"Precalent. descargar"
|
||||||
|
|
||||||
#MSG_SELFTEST_PRINT_FAN_SPEED c=18
|
#MSG_SELFTEST_PRINT_FAN_SPEED c=18
|
||||||
"Print fan:"
|
"Print fan:"
|
||||||
|
|
@ -774,7 +858,7 @@
|
||||||
"Print from SD"
|
"Print from SD"
|
||||||
"Menu tarjeta SD"
|
"Menu tarjeta SD"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Press the knob"
|
"Press the knob"
|
||||||
"Pulsa el dial"
|
"Pulsa el dial"
|
||||||
|
|
||||||
|
|
@ -814,15 +898,23 @@
|
||||||
"Rear side [um]"
|
"Rear side [um]"
|
||||||
"Trasera [um]"
|
"Trasera [um]"
|
||||||
|
|
||||||
#MSG_RECOVERING_PRINT c=20 r=1
|
# c=20 r=4
|
||||||
"Recovering print "
|
"Please unload the filament first, then repeat this action."
|
||||||
"Recuperando impresion"
|
"Primero descargue el filamento, luego repita esta accion."
|
||||||
|
|
||||||
#MSG_REMOVE_OLD_FILAMENT c=20 r=4
|
# c=20 r=4
|
||||||
|
"Please check the IR sensor connection, unload filament if present."
|
||||||
|
"Por favor comprueba la conexion del IR sensor y filamento esta descargado."
|
||||||
|
|
||||||
|
#MSG_RECOVERING_PRINT c=20
|
||||||
|
"Recovering print "
|
||||||
|
"Recuper. impresion "
|
||||||
|
|
||||||
|
#MSG_REMOVE_OLD_FILAMENT c=20 r=5
|
||||||
"Remove old filament and press the knob to start loading new filament."
|
"Remove old filament and press the knob to start loading new filament."
|
||||||
"Retire el filamento viejo y presione el dial para comenzar a cargar el nuevo filamento."
|
"Retire el filamento viejo y presione el dial para comenzar a cargar el nuevo filamento."
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Prusa i3 MK3S OK."
|
"Prusa i3 MK3S OK."
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
|
|
@ -830,17 +922,17 @@
|
||||||
"Reset XYZ calibr."
|
"Reset XYZ calibr."
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
#MSG_BED_CORRECTION_RESET
|
#MSG_RESET c=14
|
||||||
"Reset"
|
"Reset"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
#MSG_RESUME_PRINT
|
#MSG_RESUME_PRINT c=18
|
||||||
"Resume print"
|
"Resume print"
|
||||||
"Reanudar impres."
|
"Reanudar impres."
|
||||||
|
|
||||||
#MSG_RESUMING_PRINT c=20 r=1
|
#MSG_RESUMING_PRINT c=20
|
||||||
"Resuming print"
|
"Resuming print"
|
||||||
"Continuando impresion"
|
"Continuan. impresion"
|
||||||
|
|
||||||
#MSG_BED_CORRECTION_RIGHT c=14 r=1
|
#MSG_BED_CORRECTION_RIGHT c=14 r=1
|
||||||
"Right side[um]"
|
"Right side[um]"
|
||||||
|
|
@ -884,7 +976,7 @@
|
||||||
|
|
||||||
#MSG_SELFTEST
|
#MSG_SELFTEST
|
||||||
"Selftest "
|
"Selftest "
|
||||||
"Selftest"
|
"\x00"
|
||||||
|
|
||||||
#MSG_SELFTEST_ERROR
|
#MSG_SELFTEST_ERROR
|
||||||
"Selftest error !"
|
"Selftest error !"
|
||||||
|
|
@ -906,11 +998,23 @@
|
||||||
"Set temperature:"
|
"Set temperature:"
|
||||||
"Establecer temp.:"
|
"Establecer temp.:"
|
||||||
|
|
||||||
|
# c=20
|
||||||
|
"Prusa i3 MK2.5 OK."
|
||||||
|
"\x00"
|
||||||
|
|
||||||
|
# c=20
|
||||||
|
"Prusa i3 MK2.5S OK."
|
||||||
|
"\x00"
|
||||||
|
|
||||||
|
# c=20
|
||||||
|
"Prusa i3 MK3 OK."
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#MSG_SETTINGS
|
#MSG_SETTINGS
|
||||||
"Settings"
|
"Settings"
|
||||||
"Configuracion"
|
"Configuracion"
|
||||||
|
|
||||||
#MSG_SHOW_END_STOPS c=17 r=1
|
#MSG_SHOW_END_STOPS c=18
|
||||||
"Show end stops"
|
"Show end stops"
|
||||||
"Mostrar endstops"
|
"Mostrar endstops"
|
||||||
|
|
||||||
|
|
@ -918,7 +1022,7 @@
|
||||||
"Sensor state"
|
"Sensor state"
|
||||||
"Estado del sensor"
|
"Estado del sensor"
|
||||||
|
|
||||||
#MSG_FILE_CNT c=20 r=4
|
#MSG_FILE_CNT c=20 r=6
|
||||||
"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
|
"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
|
||||||
"Algunos archivos no se ordenaran. Maximo 100 archivos por carpeta para ordenar. "
|
"Algunos archivos no se ordenaran. Maximo 100 archivos por carpeta para ordenar. "
|
||||||
|
|
||||||
|
|
@ -958,6 +1062,10 @@
|
||||||
"Sound"
|
"Sound"
|
||||||
"Sonido"
|
"Sonido"
|
||||||
|
|
||||||
|
# c=7
|
||||||
|
"Runouts"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#
|
#
|
||||||
"Some problem encountered, Z-leveling enforced ..."
|
"Some problem encountered, Z-leveling enforced ..."
|
||||||
"Problema encontrado, nivelacion Z forzosa ..."
|
"Problema encontrado, nivelacion Z forzosa ..."
|
||||||
|
|
@ -1002,7 +1110,7 @@
|
||||||
"Select filament:"
|
"Select filament:"
|
||||||
"Selecciona filamento:"
|
"Selecciona filamento:"
|
||||||
|
|
||||||
#MSG_TEMP_CALIBRATION c=12 r=1
|
#MSG_TEMP_CALIBRATION c=14
|
||||||
"Temp. cal."
|
"Temp. cal."
|
||||||
"Cal. temp."
|
"Cal. temp."
|
||||||
|
|
||||||
|
|
@ -1022,6 +1130,10 @@
|
||||||
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
||||||
"Calibracion temperatura terminada. Haz clic para continuar."
|
"Calibracion temperatura terminada. Haz clic para continuar."
|
||||||
|
|
||||||
|
# c=20 r=3
|
||||||
|
"Sensor verified, remove the filament now."
|
||||||
|
"Sensor verificado, retire el filamento ahora."
|
||||||
|
|
||||||
#MSG_TEMPERATURE
|
#MSG_TEMPERATURE
|
||||||
"Temperature"
|
"Temperature"
|
||||||
"Temperatura"
|
"Temperatura"
|
||||||
|
|
@ -1030,7 +1142,7 @@
|
||||||
"Temperatures"
|
"Temperatures"
|
||||||
"Temperaturas"
|
"Temperaturas"
|
||||||
|
|
||||||
#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
|
#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
|
||||||
"There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
|
"There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
|
||||||
"Todavia es necesario hacer una calibracion Z. Por favor siga el manual, capitulo Primeros pasos, seccion Calibracion del flujo."
|
"Todavia es necesario hacer una calibracion Z. Por favor siga el manual, capitulo Primeros pasos, seccion Calibracion del flujo."
|
||||||
|
|
||||||
|
|
@ -1050,17 +1162,17 @@
|
||||||
"Unload"
|
"Unload"
|
||||||
"Descargar"
|
"Descargar"
|
||||||
|
|
||||||
#
|
#MSG_TOTAL_FAILURES c=20
|
||||||
"Total failures"
|
"Total failures"
|
||||||
"Fallos totales"
|
"Fallos totales"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"to load filament"
|
"to load filament"
|
||||||
"para cargar el filamento"
|
"para cargar el fil."
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"to unload filament"
|
"to unload filament"
|
||||||
"para descargar el filamento"
|
"para descargar fil."
|
||||||
|
|
||||||
#MSG_UNLOAD_FILAMENT c=17
|
#MSG_UNLOAD_FILAMENT c=17
|
||||||
"Unload filament"
|
"Unload filament"
|
||||||
|
|
@ -1070,7 +1182,7 @@
|
||||||
"Unloading filament"
|
"Unloading filament"
|
||||||
"Soltando filamento"
|
"Soltando filamento"
|
||||||
|
|
||||||
#
|
#MSG_TOTAL c=6
|
||||||
"Total"
|
"Total"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
|
|
@ -1126,9 +1238,9 @@
|
||||||
"Wizard"
|
"Wizard"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
#MSG_XYZ_DETAILS c=19 r=1
|
#MSG_XYZ_DETAILS c=18
|
||||||
"XYZ cal. details"
|
"XYZ cal. details"
|
||||||
"Detalles de calibracion XYZ"
|
"Detalles cal. XYZ"
|
||||||
|
|
||||||
#MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
|
#MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
|
||||||
"XYZ calibration failed. Please consult the manual."
|
"XYZ calibration failed. Please consult the manual."
|
||||||
|
|
@ -1150,7 +1262,11 @@
|
||||||
"XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
|
"XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
|
||||||
"Calibracion XYZ correcta. Los ejes X / Y estan ligeramente inclinados. Buen trabajo!"
|
"Calibracion XYZ correcta. Los ejes X / Y estan ligeramente inclinados. Buen trabajo!"
|
||||||
|
|
||||||
#
|
#MSG_TIMEOUT c=12
|
||||||
|
"Timeout"
|
||||||
|
"Expirar"
|
||||||
|
|
||||||
|
#MSG_X_CORRECTION c=13
|
||||||
"X-correct:"
|
"X-correct:"
|
||||||
"Corregir-X:"
|
"Corregir-X:"
|
||||||
|
|
||||||
|
|
@ -1190,7 +1306,11 @@
|
||||||
"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
|
"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
|
||||||
"La impresora comenzara a imprimir una linea en zig-zag. Gira el dial hasta que la linea alcance la altura optima. Mira las fotos del manual (Capitulo de calibracion)."
|
"La impresora comenzara a imprimir una linea en zig-zag. Gira el dial hasta que la linea alcance la altura optima. Mira las fotos del manual (Capitulo de calibracion)."
|
||||||
|
|
||||||
#
|
# c=20 r=5
|
||||||
|
"Verification failed, remove the filament and try again."
|
||||||
|
"La verificacion fallo, retire el filamento e intente nuevamente."
|
||||||
|
|
||||||
|
#MSG_Y_CORRECTION c=13
|
||||||
"Y-correct:"
|
"Y-correct:"
|
||||||
"Corregir-Y:"
|
"Corregir-Y:"
|
||||||
|
|
||||||
|
|
@ -1230,7 +1350,7 @@
|
||||||
"Warn"
|
"Warn"
|
||||||
"Aviso"
|
"Aviso"
|
||||||
|
|
||||||
#
|
#MSG_HW_SETUP c=18
|
||||||
"HW Setup"
|
"HW Setup"
|
||||||
"Configuracion HW"
|
"Configuracion HW"
|
||||||
|
|
||||||
|
|
@ -1246,10 +1366,6 @@
|
||||||
"Mesh"
|
"Mesh"
|
||||||
"Malla"
|
"Malla"
|
||||||
|
|
||||||
#
|
|
||||||
"Mesh bed leveling"
|
|
||||||
"Nivelacion Malla Base"
|
|
||||||
|
|
||||||
#
|
#
|
||||||
"MK3S firmware detected on MK3 printer"
|
"MK3S firmware detected on MK3 printer"
|
||||||
"Firmware MK3S detectado en impresora MK3"
|
"Firmware MK3S detectado en impresora MK3"
|
||||||
|
|
@ -1278,11 +1394,11 @@
|
||||||
"G-code sliced for a different level. Please re-slice the model again. Print cancelled."
|
"G-code sliced for a different level. Please re-slice the model again. Print cancelled."
|
||||||
"Codigo G laminado para un nivel diferente. Por favor relamina el modelo de nuevo. Impresion cancelada."
|
"Codigo G laminado para un nivel diferente. Por favor relamina el modelo de nuevo. Impresion cancelada."
|
||||||
|
|
||||||
#
|
#MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
|
||||||
"G-code sliced for a different printer type. Continue?"
|
"G-code sliced for a different printer type. Continue?"
|
||||||
"Codigo G laminado para un tipo de impresora diferente. ?Continuar?"
|
"Codigo G laminado para un tipo de impresora diferente. ?Continuar?"
|
||||||
|
|
||||||
#
|
#MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=6
|
||||||
"G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
|
"G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
|
||||||
"Codigo G laminado para una impresora diferente. Por favor relamina el modelo de nuevo. Impresion cancelada."
|
"Codigo G laminado para una impresora diferente. Por favor relamina el modelo de nuevo. Impresion cancelada."
|
||||||
|
|
||||||
|
|
@ -1298,13 +1414,13 @@
|
||||||
"PINDA:"
|
"PINDA:"
|
||||||
"PINDA:"
|
"PINDA:"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Preheating to cut"
|
"Preheating to cut"
|
||||||
"Precalentando para laminar"
|
"Precalent. laminar"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Preheating to eject"
|
"Preheating to eject"
|
||||||
"Precalentar para expulsar"
|
"Precalent. expulsar"
|
||||||
|
|
||||||
#
|
#
|
||||||
"Printer nozzle diameter differs from the G-code. Continue?"
|
"Printer nozzle diameter differs from the G-code. Continue?"
|
||||||
|
|
@ -1314,6 +1430,10 @@
|
||||||
"Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
|
"Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
|
||||||
"Diametro nozzle Impresora difiere de cod.G. Comprueba los valores en ajustes. Impresion cancelada."
|
"Diametro nozzle Impresora difiere de cod.G. Comprueba los valores en ajustes. Impresion cancelada."
|
||||||
|
|
||||||
|
# c=20
|
||||||
|
"%s level expected"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#
|
#
|
||||||
"Rename"
|
"Rename"
|
||||||
"Renombrar"
|
"Renombrar"
|
||||||
|
|
@ -1326,7 +1446,7 @@
|
||||||
"Sensor info"
|
"Sensor info"
|
||||||
"Info sensor"
|
"Info sensor"
|
||||||
|
|
||||||
#
|
#MSG_SHEET c=10
|
||||||
"Sheet"
|
"Sheet"
|
||||||
"Lamina"
|
"Lamina"
|
||||||
|
|
||||||
|
|
@ -1334,14 +1454,15 @@
|
||||||
"Assist"
|
"Assist"
|
||||||
"Asistido"
|
"Asistido"
|
||||||
|
|
||||||
#
|
#MSG_STEEL_SHEET c=18
|
||||||
"Steel sheets"
|
"Steel sheets"
|
||||||
"Lamina de acero"
|
"Lamina de acero"
|
||||||
|
|
||||||
#
|
#MSG_Z_CORRECTION c=13
|
||||||
"Z-correct:"
|
"Z-correct:"
|
||||||
"Corregir-Z:"
|
"Corregir-Z:"
|
||||||
|
|
||||||
#MSG_Z_PROBE_NR
|
#MSG_Z_PROBE_NR
|
||||||
"Z-probe nr."
|
"Z-probe nr."
|
||||||
"Z-sensor nr."
|
"Z-sensor nr."
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,26 @@
|
||||||
"[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
|
"[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
|
||||||
"[%.7s]Ajust. du Z\x0aValeur enreg, contin\x0aou depart a zero?\x0a%cContinuer%cReset"
|
"[%.7s]Ajust. du Z\x0aValeur enreg, contin\x0aou depart a zero?\x0a%cContinuer%cReset"
|
||||||
|
|
||||||
|
#MSG_IR_03_OR_OLDER c=18
|
||||||
|
" 0.3 or older"
|
||||||
|
" 0.3 ou +ancien"
|
||||||
|
|
||||||
|
# c=18
|
||||||
|
"FS v0.3 or older"
|
||||||
|
"FS v0.3 ou +ancien"
|
||||||
|
|
||||||
|
#MSG_IR_04_OR_NEWER c=18
|
||||||
|
" 0.4 or newer"
|
||||||
|
" 0.4 ou +recent"
|
||||||
|
|
||||||
|
# c=18
|
||||||
|
"FS v0.4 or newer"
|
||||||
|
"FS v0.4 ou +recent"
|
||||||
|
|
||||||
|
#MSG_IR_UNKNOWN c=18
|
||||||
|
"unknown state"
|
||||||
|
"Etat inconnu"
|
||||||
|
|
||||||
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
|
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
|
||||||
" of 4"
|
" of 4"
|
||||||
" de 4"
|
" de 4"
|
||||||
|
|
@ -42,9 +62,13 @@
|
||||||
"Ambient"
|
"Ambient"
|
||||||
"Ambiant"
|
"Ambiant"
|
||||||
|
|
||||||
#MSG_PRESS c=20
|
#MSG_AUTO c=6
|
||||||
|
"Auto"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
|
#MSG_PRESS c=20 r=2
|
||||||
"and press the knob"
|
"and press the knob"
|
||||||
"et pressez le bouton"
|
"et appuyez sur le bouton"
|
||||||
|
|
||||||
#MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
|
#MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
|
||||||
"Are left and right Z~carriages all up?"
|
"Are left and right Z~carriages all up?"
|
||||||
|
|
@ -58,7 +82,7 @@
|
||||||
"Auto home"
|
"Auto home"
|
||||||
"Mise a 0 des axes"
|
"Mise a 0 des axes"
|
||||||
|
|
||||||
#MSG_AUTOLOAD_FILAMENT c=17
|
#MSG_AUTOLOAD_FILAMENT c=18
|
||||||
"AutoLoad filament"
|
"AutoLoad filament"
|
||||||
"Autocharge du fil."
|
"Autocharge du fil."
|
||||||
|
|
||||||
|
|
@ -94,15 +118,27 @@
|
||||||
"Bed level correct"
|
"Bed level correct"
|
||||||
"Corr. niveau plateau"
|
"Corr. niveau plateau"
|
||||||
|
|
||||||
#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
|
#MSG_BELTTEST c=17
|
||||||
|
"Belt test "
|
||||||
|
"Test de courroie "
|
||||||
|
|
||||||
|
#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
|
||||||
"Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
|
"Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
|
||||||
"Echec bed leveling. Capt. non declenche. Debris sur buse? En attente d'un reset."
|
"Capt. non declenche pendant que je nivele le plateau. Debris sur buse? En attente d'un reset."
|
||||||
|
|
||||||
|
#MSG_BRIGHT c=6
|
||||||
|
"Bright"
|
||||||
|
"Brill."
|
||||||
|
|
||||||
|
#MSG_BRIGHTNESS c=18
|
||||||
|
"Brightness"
|
||||||
|
"Luminosite"
|
||||||
|
|
||||||
#MSG_BED
|
#MSG_BED
|
||||||
"Bed"
|
"Bed"
|
||||||
"Lit"
|
"Lit"
|
||||||
|
|
||||||
#MSG_MENU_BELT_STATUS c=15 r=1
|
#MSG_BELT_STATUS c=18
|
||||||
"Belt status"
|
"Belt status"
|
||||||
"Statut courroie"
|
"Statut courroie"
|
||||||
|
|
||||||
|
|
@ -164,9 +200,9 @@
|
||||||
|
|
||||||
#
|
#
|
||||||
"Copy selected language?"
|
"Copy selected language?"
|
||||||
"Copier la langue selectionne?"
|
"Copier la langue choisie?"
|
||||||
|
|
||||||
#MSG_CRASHDETECT
|
#MSG_CRASHDETECT c=13
|
||||||
"Crash det."
|
"Crash det."
|
||||||
"Detect.crash"
|
"Detect.crash"
|
||||||
|
|
||||||
|
|
@ -182,7 +218,7 @@
|
||||||
"Crash detected. Resume print?"
|
"Crash detected. Resume print?"
|
||||||
"Crash detecte. Poursuivre l'impression?"
|
"Crash detecte. Poursuivre l'impression?"
|
||||||
|
|
||||||
#
|
#MSG_CRASH c=7
|
||||||
"Crash"
|
"Crash"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
|
|
@ -202,15 +238,19 @@
|
||||||
"Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
|
"Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
|
||||||
"La distance entre la pointe de la buse et la surface du plateau n'a pas encore ete reglee. Suivez le manuel, chapitre Premiers pas, section Calibration de la premiere couche."
|
"La distance entre la pointe de la buse et la surface du plateau n'a pas encore ete reglee. Suivez le manuel, chapitre Premiers pas, section Calibration de la premiere couche."
|
||||||
|
|
||||||
|
#MSG_FS_CONTINUE c=5
|
||||||
|
"Cont."
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
|
#MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
|
||||||
"Do you want to repeat last step to readjust distance between nozzle and heatbed?"
|
"Do you want to repeat last step to readjust distance between nozzle and heatbed?"
|
||||||
"Voulez-vous repeter la derniere etape pour reajuster la distance entre la buse et le plateau chauffant?"
|
"Voulez-vous refaire l'etape pour reajuster la hauteur entre la buse et le plateau chauffant?"
|
||||||
|
|
||||||
#MSG_EXTRUDER_CORRECTION c=10
|
#MSG_EXTRUDER_CORRECTION c=13
|
||||||
"E-correct:"
|
"E-correct:"
|
||||||
"Correct-E:"
|
"Correct-E:"
|
||||||
|
|
||||||
#MSG_EJECT_FILAMENT c=17 r=1
|
#MSG_EJECT_FILAMENT c=16
|
||||||
"Eject filament"
|
"Eject filament"
|
||||||
"Remonter le fil."
|
"Remonter le fil."
|
||||||
|
|
||||||
|
|
@ -218,7 +258,7 @@
|
||||||
"Ejecting filament"
|
"Ejecting filament"
|
||||||
"Le fil. remonte"
|
"Le fil. remonte"
|
||||||
|
|
||||||
#MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
|
#MSG_SELFTEST_ENDSTOP_NOTHIT c=20
|
||||||
"Endstop not hit"
|
"Endstop not hit"
|
||||||
"Butee non atteinte"
|
"Butee non atteinte"
|
||||||
|
|
||||||
|
|
@ -234,10 +274,26 @@
|
||||||
"Error - static memory has been overwritten"
|
"Error - static memory has been overwritten"
|
||||||
"Erreur - la memoire statique a ete ecrasee"
|
"Erreur - la memoire statique a ete ecrasee"
|
||||||
|
|
||||||
|
#MSG_CUT_FILAMENT c=16
|
||||||
|
"Cut filament"
|
||||||
|
"Coupe filament"
|
||||||
|
|
||||||
|
#MSG_CUTTER c=9
|
||||||
|
"Cutter"
|
||||||
|
"Coupeur"
|
||||||
|
|
||||||
|
# c=18
|
||||||
|
"Cutting filament"
|
||||||
|
"Je coupe filament"
|
||||||
|
|
||||||
#MSG_FSENS_NOT_RESPONDING c=20 r=4
|
#MSG_FSENS_NOT_RESPONDING c=20 r=4
|
||||||
"ERROR: Filament sensor is not responding, please check connection."
|
"ERROR: Filament sensor is not responding, please check connection."
|
||||||
"ERREUR: Le capteur de filament ne repond pas, verifiez le branchement."
|
"ERREUR: Le capteur de filament ne repond pas, verifiez le branchement."
|
||||||
|
|
||||||
|
#MSG_DIM c=6
|
||||||
|
"Dim"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#MSG_ERROR
|
#MSG_ERROR
|
||||||
"ERROR:"
|
"ERROR:"
|
||||||
"ERREUR:"
|
"ERREUR:"
|
||||||
|
|
@ -246,11 +302,11 @@
|
||||||
"Extruder fan:"
|
"Extruder fan:"
|
||||||
"Ventilo extrudeur:"
|
"Ventilo extrudeur:"
|
||||||
|
|
||||||
#MSG_INFO_EXTRUDER c=15 r=1
|
#MSG_INFO_EXTRUDER c=18
|
||||||
"Extruder info"
|
"Extruder info"
|
||||||
"Infos extrudeur"
|
"Infos extrudeur"
|
||||||
|
|
||||||
#MSG_MOVE_E
|
#MSG_EXTRUDER c=17
|
||||||
"Extruder"
|
"Extruder"
|
||||||
"Extrudeur"
|
"Extrudeur"
|
||||||
|
|
||||||
|
|
@ -258,9 +314,10 @@
|
||||||
"Fail stats MMU"
|
"Fail stats MMU"
|
||||||
"Stat. d'echec MMU"
|
"Stat. d'echec MMU"
|
||||||
|
|
||||||
#MSG_FSENSOR_AUTOLOAD
|
#MSG_FSENSOR_AUTOLOAD c=13
|
||||||
"F. autoload"
|
"F. autoload"
|
||||||
"Autochargeur"
|
"F. autocharg."
|
||||||
|
|
||||||
#
|
#
|
||||||
"Fail stats"
|
"Fail stats"
|
||||||
"Stat. d'echec"
|
"Stat. d'echec"
|
||||||
|
|
@ -273,16 +330,17 @@
|
||||||
"Fan test"
|
"Fan test"
|
||||||
"Test du ventilateur"
|
"Test du ventilateur"
|
||||||
|
|
||||||
#MSG_FANS_CHECK
|
#MSG_FANS_CHECK c=13
|
||||||
"Fans check"
|
"Fans check"
|
||||||
"Verif vent."
|
"Verif vent."
|
||||||
|
|
||||||
#MSG_FSENSOR
|
#MSG_FSENSOR
|
||||||
"Fil. sensor"
|
"Fil. sensor"
|
||||||
"Capteur Fil."
|
"Capteur Fil."
|
||||||
#
|
|
||||||
"Filam. runouts"
|
#MSG_FIL_RUNOUTS c=14
|
||||||
"Fins de filament"
|
"Fil. runouts "
|
||||||
|
"Fins filament "
|
||||||
|
|
||||||
#MSG_FILAMENT_CLEAN c=20 r=2
|
#MSG_FILAMENT_CLEAN c=20 r=2
|
||||||
"Filament extruding & with correct color?"
|
"Filament extruding & with correct color?"
|
||||||
|
|
@ -296,7 +354,7 @@
|
||||||
"Filament sensor"
|
"Filament sensor"
|
||||||
"Capteur de filament"
|
"Capteur de filament"
|
||||||
|
|
||||||
#MSG_FILAMENT_USED c=19 r=1
|
#MSG_FILAMENT_USED c=19
|
||||||
"Filament used"
|
"Filament used"
|
||||||
"Filament utilise"
|
"Filament utilise"
|
||||||
|
|
||||||
|
|
@ -304,15 +362,19 @@
|
||||||
"Print time"
|
"Print time"
|
||||||
"Temps d'impression"
|
"Temps d'impression"
|
||||||
|
|
||||||
#MSG_FILE_INCOMPLETE c=20 r=2
|
#MSG_FS_ACTION c=10
|
||||||
|
"FS Action"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
|
#MSG_FILE_INCOMPLETE c=20 r=3
|
||||||
"File incomplete. Continue anyway?"
|
"File incomplete. Continue anyway?"
|
||||||
"Fichier incomplet. Continuer qd meme?"
|
"Fichier incomplet. Continuer qd meme?"
|
||||||
|
|
||||||
#MSG_FINISHING_MOVEMENTS c=20 r=1
|
#MSG_FINISHING_MOVEMENTS c=20
|
||||||
"Finishing movements"
|
"Finishing movements"
|
||||||
"Mouvement final"
|
"Mouvement final"
|
||||||
|
|
||||||
#MSG_V2_CALIBRATION c=17 r=1
|
#MSG_V2_CALIBRATION c=18
|
||||||
"First layer cal."
|
"First layer cal."
|
||||||
"Cal. 1ere couche"
|
"Cal. 1ere couche"
|
||||||
|
|
||||||
|
|
@ -382,7 +444,7 @@
|
||||||
|
|
||||||
#MSG_SELFTEST_CHECK_BED c=20
|
#MSG_SELFTEST_CHECK_BED c=20
|
||||||
"Checking bed "
|
"Checking bed "
|
||||||
"Verification du lit"
|
"Verif. plateau chauf"
|
||||||
|
|
||||||
#MSG_SELFTEST_CHECK_ENDSTOPS c=20
|
#MSG_SELFTEST_CHECK_ENDSTOPS c=20
|
||||||
"Checking endstops"
|
"Checking endstops"
|
||||||
|
|
@ -396,16 +458,16 @@
|
||||||
"Checking sensors "
|
"Checking sensors "
|
||||||
"Verif. des capteurs"
|
"Verif. des capteurs"
|
||||||
|
|
||||||
#MSG_SELFTEST_CHECK_X c=20
|
#MSG_CHECKING_X c=20
|
||||||
"Checking X axis "
|
"Checking X axis"
|
||||||
"Verification axe X"
|
"Verification axe X"
|
||||||
|
|
||||||
#MSG_SELFTEST_CHECK_Y c=20
|
#MSG_CHECKING_Y c=20
|
||||||
"Checking Y axis "
|
"Checking Y axis"
|
||||||
"Verification axe Y"
|
"Verification axe Y"
|
||||||
|
|
||||||
#MSG_SELFTEST_CHECK_Z c=20
|
#MSG_SELFTEST_CHECK_Z c=20
|
||||||
"Checking Z axis "
|
"Checking Z axis"
|
||||||
"Verification axe Z"
|
"Verification axe Z"
|
||||||
|
|
||||||
#MSG_CHOOSE_EXTRUDER c=20 r=1
|
#MSG_CHOOSE_EXTRUDER c=20 r=1
|
||||||
|
|
@ -436,29 +498,29 @@
|
||||||
"Insert filament"
|
"Insert filament"
|
||||||
"Inserez le filament"
|
"Inserez le filament"
|
||||||
|
|
||||||
#MSG_WIZARD_FILAMENT_LOADED c=20 r=2
|
#MSG_FILAMENT_LOADED c=20 r=2
|
||||||
"Is filament loaded?"
|
"Is filament loaded?"
|
||||||
"Fil. est-il charge?"
|
"Fil. est-il charge?"
|
||||||
|
|
||||||
#MSG_STEEL_SHEET_CHECK c=20 r=2
|
#MSG_STEEL_SHEET_CHECK c=20 r=2
|
||||||
"Is steel sheet on heatbed?"
|
"Is steel sheet on heatbed?"
|
||||||
"Plaque d'impression sur le lit chauffant?"
|
"Est la plaque sur le plat. chauffant?"
|
||||||
|
|
||||||
#
|
#MSG_LAST_PRINT_FAILURES c=20
|
||||||
"Last print failures"
|
"Last print failures"
|
||||||
"Echecs derniere imp."
|
"Echecs derniere imp."
|
||||||
|
|
||||||
#
|
#
|
||||||
"If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
|
"If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
|
||||||
"Si vous avez d'autres feuilles d'acier, calibrez leurs pre-reglages dans Reglages - Config HW - Feuilles d'acier."
|
"Si vous avez d'autres feuilles d'acier, calibrez leurs pre-reglages dans Reglages - Config HW - Plaque en acier."
|
||||||
|
|
||||||
#
|
#MSG_LAST_PRINT c=18
|
||||||
"Last print"
|
"Last print"
|
||||||
"Derniere impres."
|
"Derniere impres."
|
||||||
|
|
||||||
#MSG_SELFTEST_EXTRUDER_FAN c=20
|
#MSG_SELFTEST_EXTRUDER_FAN c=20
|
||||||
"Left hotend fan?"
|
"Left hotend fan?"
|
||||||
"Ventilo tete gauche?"
|
"Ventilo gauche?"
|
||||||
|
|
||||||
#
|
#
|
||||||
"Left"
|
"Left"
|
||||||
|
|
@ -476,6 +538,10 @@
|
||||||
"Live adjust Z"
|
"Live adjust Z"
|
||||||
"Ajuster Z en dir."
|
"Ajuster Z en dir."
|
||||||
|
|
||||||
|
# c=20 r=6
|
||||||
|
"Insert the filament (do not load it) into the extruder and then press the knob."
|
||||||
|
"Veuillez inserer le filament ( ne le chargez pas) dans l'extrudeur, puis appuyez sur le bouton."
|
||||||
|
|
||||||
#MSG_LOAD_FILAMENT c=17
|
#MSG_LOAD_FILAMENT c=17
|
||||||
"Load filament"
|
"Load filament"
|
||||||
"Charger filament"
|
"Charger filament"
|
||||||
|
|
@ -496,7 +562,7 @@
|
||||||
"Load to nozzle"
|
"Load to nozzle"
|
||||||
"Charger la buse"
|
"Charger la buse"
|
||||||
|
|
||||||
#MSG_M117_V2_CALIBRATION c=25 r=1
|
#MSG_M117_V2_CALIBRATION c=25
|
||||||
"M117 First layer cal."
|
"M117 First layer cal."
|
||||||
"M117 Cal. 1ere couche"
|
"M117 Cal. 1ere couche"
|
||||||
|
|
||||||
|
|
@ -504,11 +570,19 @@
|
||||||
"Main"
|
"Main"
|
||||||
"Menu principal"
|
"Menu principal"
|
||||||
|
|
||||||
|
#MSG_BL_HIGH c=12
|
||||||
|
"Level Bright"
|
||||||
|
"Niveau brill"
|
||||||
|
|
||||||
|
#MSG_BL_LOW c=12
|
||||||
|
"Level Dimmed"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
|
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
|
||||||
"Measuring reference height of calibration point"
|
"Measuring reference height of calibration point"
|
||||||
"Mesure de la hauteur de reference du point de calibration"
|
"Je mesure la hauteur de reference du point de calibrage"
|
||||||
|
|
||||||
#MSG_MESH_BED_LEVELING
|
#MSG_MESH_BED_LEVELING c=18
|
||||||
"Mesh Bed Leveling"
|
"Mesh Bed Leveling"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
|
|
@ -524,7 +598,7 @@
|
||||||
"Measured skew"
|
"Measured skew"
|
||||||
"Deviat.mesuree"
|
"Deviat.mesuree"
|
||||||
|
|
||||||
#
|
#MSG_MMU_FAILS c=14
|
||||||
"MMU fails"
|
"MMU fails"
|
||||||
"Echecs MMU"
|
"Echecs MMU"
|
||||||
|
|
||||||
|
|
@ -532,7 +606,7 @@
|
||||||
"MMU load failed "
|
"MMU load failed "
|
||||||
"Echec chargement MMU"
|
"Echec chargement MMU"
|
||||||
|
|
||||||
#
|
#MSG_MMU_LOAD_FAILS c=14
|
||||||
"MMU load fails"
|
"MMU load fails"
|
||||||
"Echecs charg. MMU"
|
"Echecs charg. MMU"
|
||||||
|
|
||||||
|
|
@ -544,6 +618,10 @@
|
||||||
"Mode"
|
"Mode"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
|
# c=20 r=3
|
||||||
|
"MK3 firmware detected on MK3S printer"
|
||||||
|
"Firmware MK3 detecte sur imprimante MK3S"
|
||||||
|
|
||||||
#MSG_NORMAL
|
#MSG_NORMAL
|
||||||
"Normal"
|
"Normal"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
@ -636,7 +714,7 @@
|
||||||
"Nozzle"
|
"Nozzle"
|
||||||
"Buse"
|
"Buse"
|
||||||
|
|
||||||
#MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
|
#MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
|
||||||
"Old settings found. Default PID, Esteps etc. will be set."
|
"Old settings found. Default PID, Esteps etc. will be set."
|
||||||
"Anciens reglages trouves. Le PID, les Esteps etc. par defaut seront regles"
|
"Anciens reglages trouves. Le PID, les Esteps etc. par defaut seront regles"
|
||||||
|
|
||||||
|
|
@ -668,13 +746,13 @@
|
||||||
"PINDA Heating"
|
"PINDA Heating"
|
||||||
"Chauffe de la PINDA"
|
"Chauffe de la PINDA"
|
||||||
|
|
||||||
#MSG_PAPER c=20 r=8
|
#MSG_PAPER c=20 r=10
|
||||||
"Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
|
"Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
|
||||||
"Placez une feuille de papier sous la buse pendant la calibration des 4 premiers points. Si la buse accroche le papier, eteignez vite l'imprimante."
|
"Placez une feuille de papier sous la buse pendant la calibration des 4 premiers points. Si la buse accroche le papier, eteignez vite l'imprimante."
|
||||||
|
|
||||||
#MSG_WIZARD_CLEAN_HEATBED c=20 r=8
|
#MSG_WIZARD_CLEAN_HEATBED c=20 r=8
|
||||||
"Please clean heatbed and then press the knob."
|
"Please clean heatbed and then press the knob."
|
||||||
"Nettoyez la plaque en acier et appuyez sur le bouton."
|
"Nettoyez plateau chauffant en acier et appuyez sur le bouton."
|
||||||
|
|
||||||
#MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
|
#MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
|
||||||
"Please clean the nozzle for calibration. Click when done."
|
"Please clean the nozzle for calibration. Click when done."
|
||||||
|
|
@ -740,15 +818,23 @@
|
||||||
"Preheating nozzle. Please wait."
|
"Preheating nozzle. Please wait."
|
||||||
"Prechauffage de la buse. Merci de patienter."
|
"Prechauffage de la buse. Merci de patienter."
|
||||||
|
|
||||||
|
# c=14
|
||||||
|
"PINDA"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#
|
#
|
||||||
"Please upgrade."
|
"Please upgrade."
|
||||||
"Mettez a jour le FW."
|
"Mettez a jour le FW."
|
||||||
|
|
||||||
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
||||||
"Press knob to preheat nozzle and continue."
|
"Press the knob to preheat nozzle and continue."
|
||||||
"Appuyez sur le bouton pour prechauffer la buse et continuer."
|
"Appuyez sur le bouton pour prechauffer la buse et continuer."
|
||||||
|
|
||||||
#
|
#MSG_FS_PAUSE c=5
|
||||||
|
"Pause"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
|
#MSG_POWER_FAILURES c=14
|
||||||
"Power failures"
|
"Power failures"
|
||||||
"Coup.de courant"
|
"Coup.de courant"
|
||||||
|
|
||||||
|
|
@ -756,11 +842,11 @@
|
||||||
"Print aborted"
|
"Print aborted"
|
||||||
"Impression annulee"
|
"Impression annulee"
|
||||||
|
|
||||||
# c=20 r=1
|
# c=20
|
||||||
"Preheating to load"
|
"Preheating to load"
|
||||||
"Chauffe pour charger"
|
"Chauffe pour charger"
|
||||||
|
|
||||||
# c=20 r=1
|
# c=20
|
||||||
"Preheating to unload"
|
"Preheating to unload"
|
||||||
"Chauf.pour decharger"
|
"Chauf.pour decharger"
|
||||||
|
|
||||||
|
|
@ -772,7 +858,7 @@
|
||||||
"Print from SD"
|
"Print from SD"
|
||||||
"Impr. depuis la SD"
|
"Impr. depuis la SD"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Press the knob"
|
"Press the knob"
|
||||||
"App. sur sur bouton"
|
"App. sur sur bouton"
|
||||||
|
|
||||||
|
|
@ -812,15 +898,23 @@
|
||||||
"Rear side [um]"
|
"Rear side [um]"
|
||||||
"Arriere [um]"
|
"Arriere [um]"
|
||||||
|
|
||||||
#MSG_RECOVERING_PRINT c=20 r=1
|
# c=20 r=4
|
||||||
"Recovering print "
|
"Please unload the filament first, then repeat this action."
|
||||||
"Recup. impression"
|
"SVP, dechargez le filament et reessayez."
|
||||||
|
|
||||||
#MSG_REMOVE_OLD_FILAMENT c=20 r=4
|
# c=20 r=4
|
||||||
|
"Please check the IR sensor connection, unload filament if present."
|
||||||
|
"SVP, verifiez la connexion du capteur IR et decharge le filament."
|
||||||
|
|
||||||
|
#MSG_RECOVERING_PRINT c=20
|
||||||
|
"Recovering print "
|
||||||
|
"Recup. impression "
|
||||||
|
|
||||||
|
#MSG_REMOVE_OLD_FILAMENT c=20 r=5
|
||||||
"Remove old filament and press the knob to start loading new filament."
|
"Remove old filament and press the knob to start loading new filament."
|
||||||
"Retirez l'ancien filament puis appuyez sur le bouton pour charger le nouveau."
|
"Retirez l'ancien filament puis appuyez sur le bouton pour charger le nouveau."
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Prusa i3 MK3S OK."
|
"Prusa i3 MK3S OK."
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
|
|
@ -828,15 +922,15 @@
|
||||||
"Reset XYZ calibr."
|
"Reset XYZ calibr."
|
||||||
"Reinit. calib. XYZ"
|
"Reinit. calib. XYZ"
|
||||||
|
|
||||||
#MSG_BED_CORRECTION_RESET
|
#MSG_RESET c=14
|
||||||
"Reset"
|
"Reset"
|
||||||
"Reinitialiser"
|
"Reinitialiser"
|
||||||
|
|
||||||
#MSG_RESUME_PRINT
|
#MSG_RESUME_PRINT c=18
|
||||||
"Resume print"
|
"Resume print"
|
||||||
"Reprendre impression"
|
"Reprendre impression"
|
||||||
|
|
||||||
#MSG_RESUMING_PRINT c=20 r=1
|
#MSG_RESUMING_PRINT c=20
|
||||||
"Resuming print"
|
"Resuming print"
|
||||||
"Reprise de l'impr."
|
"Reprise de l'impr."
|
||||||
|
|
||||||
|
|
@ -866,7 +960,7 @@
|
||||||
|
|
||||||
#MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
|
#MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
|
||||||
"Searching bed calibration point"
|
"Searching bed calibration point"
|
||||||
"Recherche du point de calibration du lit"
|
"Recherche du point de calibration du plateau chauffant"
|
||||||
|
|
||||||
#MSG_LANGUAGE_SELECT
|
#MSG_LANGUAGE_SELECT
|
||||||
"Select language"
|
"Select language"
|
||||||
|
|
@ -904,11 +998,23 @@
|
||||||
"Set temperature:"
|
"Set temperature:"
|
||||||
"Regler temp.:"
|
"Regler temp.:"
|
||||||
|
|
||||||
|
# c=20
|
||||||
|
"Prusa i3 MK2.5 OK."
|
||||||
|
"\x00"
|
||||||
|
|
||||||
|
# c=20
|
||||||
|
"Prusa i3 MK2.5S OK."
|
||||||
|
"\x00"
|
||||||
|
|
||||||
|
# c=20
|
||||||
|
"Prusa i3 MK3 OK."
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#MSG_SETTINGS
|
#MSG_SETTINGS
|
||||||
"Settings"
|
"Settings"
|
||||||
"Reglages"
|
"Reglages"
|
||||||
|
|
||||||
#MSG_SHOW_END_STOPS c=17 r=1
|
#MSG_SHOW_END_STOPS c=18
|
||||||
"Show end stops"
|
"Show end stops"
|
||||||
"Afficher butees"
|
"Afficher butees"
|
||||||
|
|
||||||
|
|
@ -916,7 +1022,7 @@
|
||||||
"Sensor state"
|
"Sensor state"
|
||||||
"Etat capteur"
|
"Etat capteur"
|
||||||
|
|
||||||
#MSG_FILE_CNT c=20 r=4
|
#MSG_FILE_CNT c=20 r=6
|
||||||
"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
|
"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
|
||||||
"Certains fichiers ne seront pas tries. Max 100 fichiers tries par dossier."
|
"Certains fichiers ne seront pas tries. Max 100 fichiers tries par dossier."
|
||||||
|
|
||||||
|
|
@ -956,6 +1062,10 @@
|
||||||
"Sound"
|
"Sound"
|
||||||
"Son"
|
"Son"
|
||||||
|
|
||||||
|
# c=7
|
||||||
|
"Runouts"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#
|
#
|
||||||
"Some problem encountered, Z-leveling enforced ..."
|
"Some problem encountered, Z-leveling enforced ..."
|
||||||
"Probleme rencontre, cliquez sur le bouton pour niveller l'axe Z..."
|
"Probleme rencontre, cliquez sur le bouton pour niveller l'axe Z..."
|
||||||
|
|
@ -963,6 +1073,7 @@
|
||||||
#MSG_SOUND_ONCE
|
#MSG_SOUND_ONCE
|
||||||
"Once"
|
"Once"
|
||||||
"Une fois"
|
"Une fois"
|
||||||
|
|
||||||
#MSG_SPEED
|
#MSG_SPEED
|
||||||
"Speed"
|
"Speed"
|
||||||
"Vitesse"
|
"Vitesse"
|
||||||
|
|
@ -999,7 +1110,7 @@
|
||||||
"Select filament:"
|
"Select filament:"
|
||||||
"Selectionnez le filament:"
|
"Selectionnez le filament:"
|
||||||
|
|
||||||
#MSG_TEMP_CALIBRATION c=12 r=1
|
#MSG_TEMP_CALIBRATION c=14
|
||||||
"Temp. cal."
|
"Temp. cal."
|
||||||
"Calib. Temp."
|
"Calib. Temp."
|
||||||
|
|
||||||
|
|
@ -1019,6 +1130,10 @@
|
||||||
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
||||||
"La calibration en temperature est terminee et activee. La calibration en temperature peut etre desactivee dans le menu Reglages-> Cal. Temp."
|
"La calibration en temperature est terminee et activee. La calibration en temperature peut etre desactivee dans le menu Reglages-> Cal. Temp."
|
||||||
|
|
||||||
|
# c=20 r=3
|
||||||
|
"Sensor verified, remove the filament now."
|
||||||
|
"Capteur verifie, retirez le filament maintenant."
|
||||||
|
|
||||||
#MSG_TEMPERATURE
|
#MSG_TEMPERATURE
|
||||||
"Temperature"
|
"Temperature"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
@ -1027,7 +1142,7 @@
|
||||||
"Temperatures"
|
"Temperatures"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
|
#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
|
||||||
"There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
|
"There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
|
||||||
"Il faut toujours effectuer la Calibration Z. Veuillez suivre le manuel, chapitre Premiers pas, section Processus de calibration."
|
"Il faut toujours effectuer la Calibration Z. Veuillez suivre le manuel, chapitre Premiers pas, section Processus de calibration."
|
||||||
|
|
||||||
|
|
@ -1047,15 +1162,15 @@
|
||||||
"Unload"
|
"Unload"
|
||||||
"Decharger"
|
"Decharger"
|
||||||
|
|
||||||
#
|
#MSG_TOTAL_FAILURES c=20
|
||||||
"Total failures"
|
"Total failures"
|
||||||
"Total des echecs"
|
"Total des echecs"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"to load filament"
|
"to load filament"
|
||||||
"pour charger le fil."
|
"pour charger le fil."
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"to unload filament"
|
"to unload filament"
|
||||||
"pour decharger fil."
|
"pour decharger fil."
|
||||||
|
|
||||||
|
|
@ -1067,9 +1182,9 @@
|
||||||
"Unloading filament"
|
"Unloading filament"
|
||||||
"Dechargement fil."
|
"Dechargement fil."
|
||||||
|
|
||||||
#
|
#MSG_TOTAL c=6
|
||||||
"Total"
|
"Total"
|
||||||
"\x00"
|
"Totale"
|
||||||
|
|
||||||
#MSG_USED c=19 r=1
|
#MSG_USED c=19 r=1
|
||||||
"Used during print"
|
"Used during print"
|
||||||
|
|
@ -1089,7 +1204,7 @@
|
||||||
|
|
||||||
#MSG_WAITING_TEMP c=20 r=3
|
#MSG_WAITING_TEMP c=20 r=3
|
||||||
"Waiting for nozzle and bed cooling"
|
"Waiting for nozzle and bed cooling"
|
||||||
"Attente du refroidissement des buse et plateau"
|
"Attente du refroidissement des buse et plateau chauffant"
|
||||||
|
|
||||||
#MSG_WAITING_TEMP_PINDA c=20 r=3
|
#MSG_WAITING_TEMP_PINDA c=20 r=3
|
||||||
"Waiting for PINDA probe cooling"
|
"Waiting for PINDA probe cooling"
|
||||||
|
|
@ -1123,7 +1238,7 @@
|
||||||
"Wizard"
|
"Wizard"
|
||||||
"Assistant"
|
"Assistant"
|
||||||
|
|
||||||
#MSG_XYZ_DETAILS c=19 r=1
|
#MSG_XYZ_DETAILS c=18
|
||||||
"XYZ cal. details"
|
"XYZ cal. details"
|
||||||
"Details calib. XYZ"
|
"Details calib. XYZ"
|
||||||
|
|
||||||
|
|
@ -1147,7 +1262,11 @@
|
||||||
"XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
|
"XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
|
||||||
"Calibration XYZ OK. Les axes X/Y sont legerement non perpendiculaires. Bon boulot!"
|
"Calibration XYZ OK. Les axes X/Y sont legerement non perpendiculaires. Bon boulot!"
|
||||||
|
|
||||||
#
|
#MSG_TIMEOUT c=12
|
||||||
|
"Timeout"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
|
#MSG_X_CORRECTION c=13
|
||||||
"X-correct:"
|
"X-correct:"
|
||||||
"Correct-X:"
|
"Correct-X:"
|
||||||
|
|
||||||
|
|
@ -1187,7 +1306,11 @@
|
||||||
"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
|
"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
|
||||||
"L'imprimante commencera a imprimer une ligne en zig-zag. Tournez le bouton jusqu'a atteindre la hauteur optimale. Consultez les photos dans le manuel (chapitre Calibration)."
|
"L'imprimante commencera a imprimer une ligne en zig-zag. Tournez le bouton jusqu'a atteindre la hauteur optimale. Consultez les photos dans le manuel (chapitre Calibration)."
|
||||||
|
|
||||||
#
|
# c=20 r=5
|
||||||
|
"Verification failed, remove the filament and try again."
|
||||||
|
"Verification en echec, retirez le filament et reessayez."
|
||||||
|
|
||||||
|
#MSG_Y_CORRECTION c=13
|
||||||
"Y-correct:"
|
"Y-correct:"
|
||||||
"Correct-Y:"
|
"Correct-Y:"
|
||||||
|
|
||||||
|
|
@ -1227,7 +1350,7 @@
|
||||||
"Warn"
|
"Warn"
|
||||||
"Avert"
|
"Avert"
|
||||||
|
|
||||||
#
|
#MSG_HW_SETUP c=18
|
||||||
"HW Setup"
|
"HW Setup"
|
||||||
"Config HW"
|
"Config HW"
|
||||||
|
|
||||||
|
|
@ -1243,10 +1366,6 @@
|
||||||
"Mesh"
|
"Mesh"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
#
|
|
||||||
"Mesh bed leveling"
|
|
||||||
"\x00"
|
|
||||||
|
|
||||||
#
|
#
|
||||||
"MK3S firmware detected on MK3 printer"
|
"MK3S firmware detected on MK3 printer"
|
||||||
"Firmware MK3S detecte sur imprimante MK3"
|
"Firmware MK3S detecte sur imprimante MK3"
|
||||||
|
|
@ -1269,17 +1388,17 @@
|
||||||
|
|
||||||
#
|
#
|
||||||
"G-code sliced for a different level. Continue?"
|
"G-code sliced for a different level. Continue?"
|
||||||
"\x00"
|
"Le G-code a ete prepare pour un niveau different. Continuer?"
|
||||||
|
|
||||||
#
|
#
|
||||||
"G-code sliced for a different level. Please re-slice the model again. Print cancelled."
|
"G-code sliced for a different level. Please re-slice the model again. Print cancelled."
|
||||||
"\x00"
|
"Le G-code a ete prepare pour un niveau different. Veuillez decouper le modele a nouveau. L'impression a ete annulee."
|
||||||
|
|
||||||
#
|
#MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
|
||||||
"G-code sliced for a different printer type. Continue?"
|
"G-code sliced for a different printer type. Continue?"
|
||||||
"Le G-code a ete prepare pour une autre version de l'imprimante. Continuer?"
|
"Le G-code a ete prepare pour une autre version de l'imprimante. Continuer?"
|
||||||
|
|
||||||
#
|
#MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=6
|
||||||
"G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
|
"G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
|
||||||
"Le G-code a ete prepare pour une autre version de l'imprimante. Veuillez decouper le modele a nouveau. L'impression a ete annulee."
|
"Le G-code a ete prepare pour une autre version de l'imprimante. Veuillez decouper le modele a nouveau. L'impression a ete annulee."
|
||||||
|
|
||||||
|
|
@ -1295,11 +1414,11 @@
|
||||||
"PINDA:"
|
"PINDA:"
|
||||||
"PINDA:"
|
"PINDA:"
|
||||||
|
|
||||||
# c=20 r=1
|
# c=20
|
||||||
"Preheating to cut"
|
"Preheating to cut"
|
||||||
"Chauffe pour couper"
|
"Chauffe pour couper"
|
||||||
|
|
||||||
# c=20 r=1
|
# c=20
|
||||||
"Preheating to eject"
|
"Preheating to eject"
|
||||||
"Chauf. pour remonter"
|
"Chauf. pour remonter"
|
||||||
|
|
||||||
|
|
@ -1311,6 +1430,10 @@
|
||||||
"Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
|
"Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
|
||||||
"Diametre de la buse dans les reglages ne correspond pas a celui dans le G-Code. Merci de verifier le parametre dans les reglages. Impression annulee."
|
"Diametre de la buse dans les reglages ne correspond pas a celui dans le G-Code. Merci de verifier le parametre dans les reglages. Impression annulee."
|
||||||
|
|
||||||
|
# c=20
|
||||||
|
"%s level expected"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#
|
#
|
||||||
"Rename"
|
"Rename"
|
||||||
"Renommer"
|
"Renommer"
|
||||||
|
|
@ -1323,7 +1446,7 @@
|
||||||
"Sensor info"
|
"Sensor info"
|
||||||
"Info capteur"
|
"Info capteur"
|
||||||
|
|
||||||
#
|
#MSG_SHEET c=10
|
||||||
"Sheet"
|
"Sheet"
|
||||||
"Plaque"
|
"Plaque"
|
||||||
|
|
||||||
|
|
@ -1331,14 +1454,15 @@
|
||||||
"Assist"
|
"Assist"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
#
|
#MSG_STEEL_SHEET c=18
|
||||||
"Steel sheets"
|
"Steel sheets"
|
||||||
"Plaques en acier"
|
"Plaques en acier"
|
||||||
|
|
||||||
#
|
#MSG_Z_CORRECTION c=13
|
||||||
"Z-correct:"
|
"Z-correct:"
|
||||||
"Correct-Z:"
|
"Correct-Z:"
|
||||||
|
|
||||||
#MSG_Z_PROBE_NR
|
#MSG_Z_PROBE_NR
|
||||||
"Z-probe nr."
|
"Z-probe nr."
|
||||||
"Mesurer x-fois"
|
"Mesurer x-fois"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,26 @@
|
||||||
"[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
|
"[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
|
||||||
"[%.7s]Set valori\x0aComp. Z, continuare\x0ao iniziare da zero?\x0a%cContinua%cReset"
|
"[%.7s]Set valori\x0aComp. Z, continuare\x0ao iniziare da zero?\x0a%cContinua%cReset"
|
||||||
|
|
||||||
|
#MSG_03_OR_OLDER c=18
|
||||||
|
" 0.3 or older"
|
||||||
|
" 0.3 o inferiore"
|
||||||
|
|
||||||
|
# c=18
|
||||||
|
"FS v0.3 or older"
|
||||||
|
"FS 0.3 o inferiore"
|
||||||
|
|
||||||
|
#MSG_IR_04_OR_NEWER c=18
|
||||||
|
" 0.4 or newer"
|
||||||
|
" 0.4 o superiore"
|
||||||
|
|
||||||
|
# c=18
|
||||||
|
"FS v0.4 or newer"
|
||||||
|
"FS 0.4 o superiore"
|
||||||
|
|
||||||
|
#MSG_IR_UNKNOWN c=18
|
||||||
|
"unknown state"
|
||||||
|
"stato sconosciuto"
|
||||||
|
|
||||||
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
|
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
|
||||||
" of 4"
|
" of 4"
|
||||||
" su 4"
|
" su 4"
|
||||||
|
|
@ -42,7 +62,11 @@
|
||||||
"Ambient"
|
"Ambient"
|
||||||
"Ambiente"
|
"Ambiente"
|
||||||
|
|
||||||
#MSG_PRESS c=20
|
#MSG_AUTO c=6
|
||||||
|
"Auto"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
|
#MSG_PRESS c=20 r=2
|
||||||
"and press the knob"
|
"and press the knob"
|
||||||
"e cliccare manopola"
|
"e cliccare manopola"
|
||||||
|
|
||||||
|
|
@ -52,13 +76,13 @@
|
||||||
|
|
||||||
#MSG_AUTO_DEPLETE c=17 r=1
|
#MSG_AUTO_DEPLETE c=17 r=1
|
||||||
"SpoolJoin"
|
"SpoolJoin"
|
||||||
"\x00"
|
""
|
||||||
|
|
||||||
#MSG_AUTO_HOME
|
#MSG_AUTO_HOME
|
||||||
"Auto home"
|
"Auto home"
|
||||||
"Trova origine"
|
"Trova origine"
|
||||||
|
|
||||||
#MSG_AUTOLOAD_FILAMENT c=17
|
#MSG_AUTOLOAD_FILAMENT c=18
|
||||||
"AutoLoad filament"
|
"AutoLoad filament"
|
||||||
"Autocaric. filam."
|
"Autocaric. filam."
|
||||||
|
|
||||||
|
|
@ -80,7 +104,7 @@
|
||||||
|
|
||||||
#MSG_SELFTEST_BEDHEATER
|
#MSG_SELFTEST_BEDHEATER
|
||||||
"Bed / Heater"
|
"Bed / Heater"
|
||||||
"Letto/Riscald."
|
"Piano/Riscald."
|
||||||
|
|
||||||
#MSG_BED_DONE
|
#MSG_BED_DONE
|
||||||
"Bed done"
|
"Bed done"
|
||||||
|
|
@ -88,27 +112,39 @@
|
||||||
|
|
||||||
#MSG_BED_HEATING
|
#MSG_BED_HEATING
|
||||||
"Bed Heating"
|
"Bed Heating"
|
||||||
"Riscald. letto"
|
"Riscald. piano"
|
||||||
|
|
||||||
#MSG_BED_CORRECTION_MENU
|
#MSG_BED_CORRECTION_MENU
|
||||||
"Bed level correct"
|
"Bed level correct"
|
||||||
"Correz. liv.letto"
|
"Correz. liv.piano"
|
||||||
|
|
||||||
#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
|
#MSG_BELTTEST c=17
|
||||||
|
"Belt test "
|
||||||
|
"Test cinghie "
|
||||||
|
|
||||||
|
#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
|
||||||
"Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
|
"Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
|
||||||
"Livellamento letto fallito.NoRispSensore.Residui su ugello? In attesa di reset."
|
"Livellamento piano fallito. Sensore KO? Residui su ugello? In attesa di reset."
|
||||||
|
|
||||||
|
#MSG_BRIGHT c=6
|
||||||
|
"Bright"
|
||||||
|
"Chiaro"
|
||||||
|
|
||||||
|
#MSG_BRIGHTNESS c=18
|
||||||
|
"Brightness"
|
||||||
|
"Luminosita'"
|
||||||
|
|
||||||
#MSG_BED
|
#MSG_BED
|
||||||
"Bed"
|
"Bed"
|
||||||
"Letto"
|
"Piano"
|
||||||
|
|
||||||
#MSG_MENU_BELT_STATUS c=15 r=1
|
#MSG_BELT_STATUS c=18
|
||||||
"Belt status"
|
"Belt status"
|
||||||
"Stato cinghie"
|
"Stato cinghie"
|
||||||
|
|
||||||
#MSG_RECOVER_PRINT c=20 r=2
|
#MSG_RECOVER_PRINT c=20 r=2
|
||||||
"Blackout occurred. Recover print?"
|
"Blackout occurred. Recover print?"
|
||||||
"C'e stato un Blackout. Recuperare la stampa?"
|
"Blackout rilevato. Recuperare la stampa?"
|
||||||
|
|
||||||
#
|
#
|
||||||
"Calibrating home"
|
"Calibrating home"
|
||||||
|
|
@ -166,7 +202,7 @@
|
||||||
"Copy selected language?"
|
"Copy selected language?"
|
||||||
"Copiare la lingua selezionata?"
|
"Copiare la lingua selezionata?"
|
||||||
|
|
||||||
#MSG_CRASHDETECT
|
#MSG_CRASHDETECT c=13
|
||||||
"Crash det."
|
"Crash det."
|
||||||
"Rileva.crash"
|
"Rileva.crash"
|
||||||
|
|
||||||
|
|
@ -182,7 +218,7 @@
|
||||||
"Crash detected. Resume print?"
|
"Crash detected. Resume print?"
|
||||||
"Scontro rilevato. Riprendere la stampa?"
|
"Scontro rilevato. Riprendere la stampa?"
|
||||||
|
|
||||||
#
|
#MSG_CRASH c=7
|
||||||
"Crash"
|
"Crash"
|
||||||
"Impatto"
|
"Impatto"
|
||||||
|
|
||||||
|
|
@ -200,27 +236,31 @@
|
||||||
|
|
||||||
#MSG_BABYSTEP_Z_NOT_SET c=20 r=12
|
#MSG_BABYSTEP_Z_NOT_SET c=20 r=12
|
||||||
"Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
|
"Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
|
||||||
"Distanza tra la punta dell'ugello e la superficie del letto non ancora imposta. Si prega di seguire il manuale, capitolo Primi Passi, sezione Calibrazione primo layer."
|
"Distanza tra la punta dell'ugello e la superficie del piano non ancora impostata. Si prega di seguire il manuale, capitolo Primi Passi, sezione Calibrazione primo strato."
|
||||||
|
|
||||||
|
#MSG_FS_CONTINUE c=5
|
||||||
|
"Cont."
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
|
#MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
|
||||||
"Do you want to repeat last step to readjust distance between nozzle and heatbed?"
|
"Do you want to repeat last step to readjust distance between nozzle and heatbed?"
|
||||||
"Desideri ripetere l'ultimo passaggio per migliorare la distanza fra ugello e piatto?"
|
"Desideri ripetere l'ultimo passaggio per migliorare la distanza fra ugello e piatto?"
|
||||||
|
|
||||||
#MSG_EXTRUDER_CORRECTION c=10
|
#MSG_EXTRUDER_CORRECTION c=13
|
||||||
"E-correct:"
|
"E-correct:"
|
||||||
"Correzione-E:"
|
"Correzione-E:"
|
||||||
|
|
||||||
#MSG_EJECT_FILAMENT c=17 r=1
|
#MSG_EJECT_FILAMENT c=16
|
||||||
"Eject filament"
|
"Eject filament"
|
||||||
"Espelli filamento "
|
"Espelli fil."
|
||||||
|
|
||||||
#MSG_EJECTING_FILAMENT c=20 r=1
|
#MSG_EJECTING_FILAMENT c=20 r=1
|
||||||
"Ejecting filament"
|
"Ejecting filament"
|
||||||
"Espellendo filamento "
|
"Espellendo filamento"
|
||||||
|
|
||||||
#MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
|
#MSG_SELFTEST_ENDSTOP_NOTHIT c=20
|
||||||
"Endstop not hit"
|
"Endstop not hit"
|
||||||
"Finecorsa fuori portata"
|
"Finec. fuori portata"
|
||||||
|
|
||||||
#MSG_SELFTEST_ENDSTOP
|
#MSG_SELFTEST_ENDSTOP
|
||||||
"Endstop"
|
"Endstop"
|
||||||
|
|
@ -232,12 +272,28 @@
|
||||||
|
|
||||||
#MSG_STACK_ERROR c=20 r=4
|
#MSG_STACK_ERROR c=20 r=4
|
||||||
"Error - static memory has been overwritten"
|
"Error - static memory has been overwritten"
|
||||||
"Errore - la memoria statica e stata sovrascritta"
|
"Errore - la memoria statica e' stata sovrascritta"
|
||||||
|
|
||||||
|
#MSG_CUT_FILAMENT c=16
|
||||||
|
"Cut filament"
|
||||||
|
"Taglia filamento"
|
||||||
|
|
||||||
|
#MSG_CUTTER c=9
|
||||||
|
"Cutter"
|
||||||
|
"Tagliatr."
|
||||||
|
|
||||||
|
# c=18
|
||||||
|
"Cutting filament"
|
||||||
|
"Tagliando filam."
|
||||||
|
|
||||||
#MSG_FSENS_NOT_RESPONDING c=20 r=4
|
#MSG_FSENS_NOT_RESPONDING c=20 r=4
|
||||||
"ERROR: Filament sensor is not responding, please check connection."
|
"ERROR: Filament sensor is not responding, please check connection."
|
||||||
"ERRORE: il sensore filam. non risponde,Controllare conness."
|
"ERRORE: il sensore filam. non risponde,Controllare conness."
|
||||||
|
|
||||||
|
#MSG_DIM c=6
|
||||||
|
"Dim"
|
||||||
|
"Scuro"
|
||||||
|
|
||||||
#MSG_ERROR
|
#MSG_ERROR
|
||||||
"ERROR:"
|
"ERROR:"
|
||||||
"ERRORE:"
|
"ERRORE:"
|
||||||
|
|
@ -246,11 +302,11 @@
|
||||||
"Extruder fan:"
|
"Extruder fan:"
|
||||||
"Ventola estr:"
|
"Ventola estr:"
|
||||||
|
|
||||||
#MSG_INFO_EXTRUDER c=15 r=1
|
#MSG_INFO_EXTRUDER c=18
|
||||||
"Extruder info"
|
"Extruder info"
|
||||||
"Info estrusore"
|
"Info estrusore"
|
||||||
|
|
||||||
#MSG_MOVE_E
|
#MSG_EXTRUDER c=17
|
||||||
"Extruder"
|
"Extruder"
|
||||||
"Estrusore"
|
"Estrusore"
|
||||||
|
|
||||||
|
|
@ -258,7 +314,7 @@
|
||||||
"Fail stats MMU"
|
"Fail stats MMU"
|
||||||
"Stat.fall. MMU"
|
"Stat.fall. MMU"
|
||||||
|
|
||||||
#MSG_FSENSOR_AUTOLOAD
|
#MSG_FSENSOR_AUTOLOAD c=13
|
||||||
"F. autoload"
|
"F. autoload"
|
||||||
"Autocar.fil."
|
"Autocar.fil."
|
||||||
|
|
||||||
|
|
@ -274,20 +330,21 @@
|
||||||
"Fan test"
|
"Fan test"
|
||||||
"Test ventola"
|
"Test ventola"
|
||||||
|
|
||||||
#MSG_FANS_CHECK
|
#MSG_FANS_CHECK c=13
|
||||||
"Fans check"
|
"Fans check"
|
||||||
"Control.vent"
|
"Control.vent"
|
||||||
|
|
||||||
#MSG_FSENSOR
|
#MSG_FSENSOR
|
||||||
"Fil. sensor"
|
"Fil. sensor"
|
||||||
"Sensore fil."
|
"Sensore fil."
|
||||||
#
|
|
||||||
"Filam. runouts"
|
#MSG_FIL_RUNOUTS c=14
|
||||||
"Filam. esauriti"
|
"Fil. runouts "
|
||||||
|
"Fil. esauriti "
|
||||||
|
|
||||||
#MSG_FILAMENT_CLEAN c=20 r=2
|
#MSG_FILAMENT_CLEAN c=20 r=2
|
||||||
"Filament extruding & with correct color?"
|
"Filament extruding & with correct color?"
|
||||||
"Filamento estruso & con il giusto colore?"
|
"Filamento estruso e con colore corretto?"
|
||||||
|
|
||||||
#MSG_NOT_LOADED c=19
|
#MSG_NOT_LOADED c=19
|
||||||
"Filament not loaded"
|
"Filament not loaded"
|
||||||
|
|
@ -297,23 +354,27 @@
|
||||||
"Filament sensor"
|
"Filament sensor"
|
||||||
"Sensore filam."
|
"Sensore filam."
|
||||||
|
|
||||||
#MSG_FILAMENT_USED c=19 r=1
|
#MSG_FILAMENT_USED c=19
|
||||||
"Filament used"
|
"Filament used"
|
||||||
"Filamento utilizzato"
|
"Fil. utilizzato"
|
||||||
|
|
||||||
#MSG_PRINT_TIME c=19 r=1
|
#MSG_PRINT_TIME c=19 r=1
|
||||||
"Print time"
|
"Print time"
|
||||||
"Tempo di stampa"
|
"Tempo di stampa"
|
||||||
|
|
||||||
#MSG_FILE_INCOMPLETE c=20 r=2
|
#MSG_FS_ACTION c=10
|
||||||
|
"FS Action"
|
||||||
|
"Azione FS"
|
||||||
|
|
||||||
|
#MSG_FILE_INCOMPLETE c=20 r=3
|
||||||
"File incomplete. Continue anyway?"
|
"File incomplete. Continue anyway?"
|
||||||
"File incompleto. Continuare comunque?"
|
"File incompleto. Continuare comunque?"
|
||||||
|
|
||||||
#MSG_FINISHING_MOVEMENTS c=20 r=1
|
#MSG_FINISHING_MOVEMENTS c=20
|
||||||
"Finishing movements"
|
"Finishing movements"
|
||||||
"Finalizzando gli spostamenti"
|
"Finaliz. spostamenti"
|
||||||
|
|
||||||
#MSG_V2_CALIBRATION c=17 r=1
|
#MSG_V2_CALIBRATION c=18
|
||||||
"First layer cal."
|
"First layer cal."
|
||||||
"Cal. primo strato"
|
"Cal. primo strato"
|
||||||
|
|
||||||
|
|
@ -323,7 +384,7 @@
|
||||||
|
|
||||||
#
|
#
|
||||||
"Fix the issue and then press button on MMU unit."
|
"Fix the issue and then press button on MMU unit."
|
||||||
"Risolvi il problema e quindi premi il bottone sull'unita MMU. "
|
"Risolvere il problema e premere il bottone sull'unita MMU. "
|
||||||
|
|
||||||
#MSG_FLOW
|
#MSG_FLOW
|
||||||
"Flow"
|
"Flow"
|
||||||
|
|
@ -379,7 +440,7 @@
|
||||||
|
|
||||||
#MSG_CORRECTLY c=20
|
#MSG_CORRECTLY c=20
|
||||||
"Changed correctly?"
|
"Changed correctly?"
|
||||||
"Cambiato correttamente?"
|
"Cambio corretto?"
|
||||||
|
|
||||||
#MSG_SELFTEST_CHECK_BED c=20
|
#MSG_SELFTEST_CHECK_BED c=20
|
||||||
"Checking bed "
|
"Checking bed "
|
||||||
|
|
@ -397,16 +458,16 @@
|
||||||
"Checking sensors "
|
"Checking sensors "
|
||||||
"Controllo sensori"
|
"Controllo sensori"
|
||||||
|
|
||||||
#MSG_SELFTEST_CHECK_X c=20
|
#MSG_CHECKING_X c=20
|
||||||
"Checking X axis "
|
"Checking X axis"
|
||||||
"Verifica asse X"
|
"Verifica asse X"
|
||||||
|
|
||||||
#MSG_SELFTEST_CHECK_Y c=20
|
#MSG_CHECKING_Y c=20
|
||||||
"Checking Y axis "
|
"Checking Y axis"
|
||||||
"Verifica asse Y"
|
"Verifica asse Y"
|
||||||
|
|
||||||
#MSG_SELFTEST_CHECK_Z c=20
|
#MSG_SELFTEST_CHECK_Z c=20
|
||||||
"Checking Z axis "
|
"Checking Z axis"
|
||||||
"Verifica asse Z"
|
"Verifica asse Z"
|
||||||
|
|
||||||
#MSG_CHOOSE_EXTRUDER c=20 r=1
|
#MSG_CHOOSE_EXTRUDER c=20 r=1
|
||||||
|
|
@ -437,23 +498,23 @@
|
||||||
"Insert filament"
|
"Insert filament"
|
||||||
"Inserire filamento"
|
"Inserire filamento"
|
||||||
|
|
||||||
#MSG_WIZARD_FILAMENT_LOADED c=20 r=2
|
#MSG_FILAMENT_LOADED c=20 r=2
|
||||||
"Is filament loaded?"
|
"Is filament loaded?"
|
||||||
"Il filamento e stato caricato?"
|
"Il filamento e' stato caricato?"
|
||||||
|
|
||||||
#MSG_STEEL_SHEET_CHECK c=20 r=2
|
#MSG_STEEL_SHEET_CHECK c=20 r=2
|
||||||
"Is steel sheet on heatbed?"
|
"Is steel sheet on heatbed?"
|
||||||
"La piastra d'acciaio e sul piano riscaldato?"
|
"Piastra d'acciaio su piano riscaldato?"
|
||||||
|
|
||||||
#
|
#MSG_LAST_PRINT_FAILURES c=20
|
||||||
"Last print failures"
|
"Last print failures"
|
||||||
"Fallimenti ultima stampa"
|
"Errori ultima stampa"
|
||||||
|
|
||||||
#
|
#
|
||||||
"If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
|
"If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
|
||||||
"Se hai piastre d'acciaio aggiuntive, calibra i preset in Impostazioni - Setup HW - Piastre in Acciaio."
|
"Se hai piastre d'acciaio aggiuntive, calibra i preset in Impostazioni - Setup HW - Piastre in Acciaio."
|
||||||
|
|
||||||
#
|
#MSG_LAST_PRINT c=18
|
||||||
"Last print"
|
"Last print"
|
||||||
"Ultima stampa"
|
"Ultima stampa"
|
||||||
|
|
||||||
|
|
@ -477,6 +538,10 @@
|
||||||
"Live adjust Z"
|
"Live adjust Z"
|
||||||
"Compensazione Z"
|
"Compensazione Z"
|
||||||
|
|
||||||
|
# c=20 r=6
|
||||||
|
"Insert the filament (do not load it) into the extruder and then press the knob."
|
||||||
|
"Inserire filamento (senza caricarlo) nell'estrusore e premere la manopola."
|
||||||
|
|
||||||
#MSG_LOAD_FILAMENT c=17
|
#MSG_LOAD_FILAMENT c=17
|
||||||
"Load filament"
|
"Load filament"
|
||||||
"Carica filamento"
|
"Carica filamento"
|
||||||
|
|
@ -497,21 +562,29 @@
|
||||||
"Load to nozzle"
|
"Load to nozzle"
|
||||||
"Carica ugello"
|
"Carica ugello"
|
||||||
|
|
||||||
#MSG_M117_V2_CALIBRATION c=25 r=1
|
#MSG_M117_V2_CALIBRATION c=25
|
||||||
"M117 First layer cal."
|
"M117 First layer cal."
|
||||||
"M117 Calibrazione primo layer."
|
"M117 Calibr. primo strato"
|
||||||
|
|
||||||
#MSG_MAIN
|
#MSG_MAIN
|
||||||
"Main"
|
"Main"
|
||||||
"Menu principale"
|
"Menu principale"
|
||||||
|
|
||||||
|
#MSG_BL_HIGH c=12
|
||||||
|
"Level Bright"
|
||||||
|
"Liv. Chiaro"
|
||||||
|
|
||||||
|
#MSG_BL_LOW c=12
|
||||||
|
"Level Dimmed"
|
||||||
|
"Liv. Scuro"
|
||||||
|
|
||||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
|
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
|
||||||
"Measuring reference height of calibration point"
|
"Measuring reference height of calibration point"
|
||||||
"Misura altezza di rif. del punto di calib."
|
"Misura altezza di rif. del punto di calib."
|
||||||
|
|
||||||
#MSG_MESH_BED_LEVELING
|
#MSG_MESH_BED_LEVELING c=18
|
||||||
"Mesh Bed Leveling"
|
"Mesh Bed Leveling"
|
||||||
"Livel. piatto"
|
"Liv. grilia piano"
|
||||||
|
|
||||||
#MSG_MMU_OK_RESUMING_POSITION c=20 r=4
|
#MSG_MMU_OK_RESUMING_POSITION c=20 r=4
|
||||||
"MMU OK. Resuming position..."
|
"MMU OK. Resuming position..."
|
||||||
|
|
@ -525,7 +598,7 @@
|
||||||
"Measured skew"
|
"Measured skew"
|
||||||
"Deviazione mis"
|
"Deviazione mis"
|
||||||
|
|
||||||
#
|
#MSG_MMU_FAILS c=14
|
||||||
"MMU fails"
|
"MMU fails"
|
||||||
"Fallimenti MMU"
|
"Fallimenti MMU"
|
||||||
|
|
||||||
|
|
@ -533,7 +606,7 @@
|
||||||
"MMU load failed "
|
"MMU load failed "
|
||||||
"Caricamento MMU fallito"
|
"Caricamento MMU fallito"
|
||||||
|
|
||||||
#
|
#MSG_MMU_LOAD_FAILS c=14
|
||||||
"MMU load fails"
|
"MMU load fails"
|
||||||
"Caricamenti MMU falliti"
|
"Caricamenti MMU falliti"
|
||||||
|
|
||||||
|
|
@ -545,6 +618,10 @@
|
||||||
"Mode"
|
"Mode"
|
||||||
"Mod."
|
"Mod."
|
||||||
|
|
||||||
|
# c=20 r=3
|
||||||
|
"MK3 firmware detected on MK3S printer"
|
||||||
|
"Firmware MK3 rilevato su stampante MK3S"
|
||||||
|
|
||||||
#MSG_NORMAL
|
#MSG_NORMAL
|
||||||
"Normal"
|
"Normal"
|
||||||
"Normale"
|
"Normale"
|
||||||
|
|
@ -607,7 +684,7 @@
|
||||||
|
|
||||||
#MSG_NA
|
#MSG_NA
|
||||||
"N/A"
|
"N/A"
|
||||||
"\x00"
|
"N/D"
|
||||||
|
|
||||||
#MSG_NO
|
#MSG_NO
|
||||||
"No"
|
"No"
|
||||||
|
|
@ -637,7 +714,7 @@
|
||||||
"Nozzle"
|
"Nozzle"
|
||||||
"Ugello"
|
"Ugello"
|
||||||
|
|
||||||
#MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
|
#MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
|
||||||
"Old settings found. Default PID, Esteps etc. will be set."
|
"Old settings found. Default PID, Esteps etc. will be set."
|
||||||
"Sono state trovate impostazioni vecchie. Verranno impostati i valori predefiniti di PID, Esteps etc."
|
"Sono state trovate impostazioni vecchie. Verranno impostati i valori predefiniti di PID, Esteps etc."
|
||||||
|
|
||||||
|
|
@ -669,7 +746,7 @@
|
||||||
"PINDA Heating"
|
"PINDA Heating"
|
||||||
"Riscaldamento PINDA"
|
"Riscaldamento PINDA"
|
||||||
|
|
||||||
#MSG_PAPER c=20 r=8
|
#MSG_PAPER c=20 r=10
|
||||||
"Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
|
"Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
|
||||||
"Posizionare un foglio sotto l'ugello durante la calibrazione dei primi 4 punti. In caso l'ugello muova il foglio spegnere subito la stampante."
|
"Posizionare un foglio sotto l'ugello durante la calibrazione dei primi 4 punti. In caso l'ugello muova il foglio spegnere subito la stampante."
|
||||||
|
|
||||||
|
|
@ -741,15 +818,23 @@
|
||||||
"Preheating nozzle. Please wait."
|
"Preheating nozzle. Please wait."
|
||||||
"Preriscaldando l'ugello. Attendere prego."
|
"Preriscaldando l'ugello. Attendere prego."
|
||||||
|
|
||||||
|
# c=14
|
||||||
|
"PINDA"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#
|
#
|
||||||
"Please upgrade."
|
"Please upgrade."
|
||||||
"Prego aggiornare."
|
"Prego aggiornare."
|
||||||
|
|
||||||
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
||||||
"Press knob to preheat nozzle and continue."
|
"Press the knob to preheat nozzle and continue."
|
||||||
"Premete la manopola per preriscaldare l'ugello e continuare."
|
"Premete la manopola per preriscaldare l'ugello e continuare."
|
||||||
|
|
||||||
#
|
#MSG_FS_PAUSE c=5
|
||||||
|
"Pause"
|
||||||
|
"Pausa"
|
||||||
|
|
||||||
|
#MSG_POWER_FAILURES c=14
|
||||||
"Power failures"
|
"Power failures"
|
||||||
"Mancanza corrente"
|
"Mancanza corrente"
|
||||||
|
|
||||||
|
|
@ -757,13 +842,13 @@
|
||||||
"Print aborted"
|
"Print aborted"
|
||||||
"Stampa interrotta"
|
"Stampa interrotta"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Preheating to load"
|
"Preheating to load"
|
||||||
"Preriscaldamento per caricare"
|
"Preriscald. carico"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Preheating to unload"
|
"Preheating to unload"
|
||||||
"Preriscaldamento per scaricare"
|
"Preriscald. scarico"
|
||||||
|
|
||||||
#MSG_SELFTEST_PRINT_FAN_SPEED c=18
|
#MSG_SELFTEST_PRINT_FAN_SPEED c=18
|
||||||
"Print fan:"
|
"Print fan:"
|
||||||
|
|
@ -773,7 +858,7 @@
|
||||||
"Print from SD"
|
"Print from SD"
|
||||||
"Stampa da SD"
|
"Stampa da SD"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Press the knob"
|
"Press the knob"
|
||||||
"Premere la manopola"
|
"Premere la manopola"
|
||||||
|
|
||||||
|
|
@ -813,15 +898,23 @@
|
||||||
"Rear side [um]"
|
"Rear side [um]"
|
||||||
"Retro [um]"
|
"Retro [um]"
|
||||||
|
|
||||||
#MSG_RECOVERING_PRINT c=20 r=1
|
# c=20 r=4
|
||||||
|
"Please unload the filament first, then repeat this action."
|
||||||
|
"Scaricare prima il filamento, poi ripetere l'operazione."
|
||||||
|
|
||||||
|
# c=20 r=4
|
||||||
|
"Please check the IR sensor connection, unload filament if present."
|
||||||
|
"Controllare il collegamento al sensore e rimuovere il filamento."
|
||||||
|
|
||||||
|
#MSG_RECOVERING_PRINT c=20
|
||||||
"Recovering print "
|
"Recovering print "
|
||||||
"Recupero stampa"
|
"Recupero stampa "
|
||||||
|
|
||||||
#MSG_REMOVE_OLD_FILAMENT c=20 r=4
|
#MSG_REMOVE_OLD_FILAMENT c=20 r=5
|
||||||
"Remove old filament and press the knob to start loading new filament."
|
"Remove old filament and press the knob to start loading new filament."
|
||||||
"Rimuovi il filamento precedente e premi la manopola per caricare il nuovo filamento. "
|
"Rimuovi il filamento precedente e premi la manopola per caricare il nuovo filamento."
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Prusa i3 MK3S OK."
|
"Prusa i3 MK3S OK."
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
|
|
@ -829,15 +922,15 @@
|
||||||
"Reset XYZ calibr."
|
"Reset XYZ calibr."
|
||||||
"Reset calibrazione XYZ."
|
"Reset calibrazione XYZ."
|
||||||
|
|
||||||
#MSG_BED_CORRECTION_RESET
|
#MSG_RESET c=14
|
||||||
"Reset"
|
"Reset"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
#MSG_RESUME_PRINT
|
#MSG_RESUME_PRINT c=18
|
||||||
"Resume print"
|
"Resume print"
|
||||||
"Riprendi stampa"
|
"Riprendi stampa"
|
||||||
|
|
||||||
#MSG_RESUMING_PRINT c=20 r=1
|
#MSG_RESUMING_PRINT c=20
|
||||||
"Resuming print"
|
"Resuming print"
|
||||||
"Riprendi stampa"
|
"Riprendi stampa"
|
||||||
|
|
||||||
|
|
@ -883,7 +976,7 @@
|
||||||
|
|
||||||
#MSG_SELFTEST
|
#MSG_SELFTEST
|
||||||
"Selftest "
|
"Selftest "
|
||||||
"Autotest"
|
"Autotest "
|
||||||
|
|
||||||
#MSG_SELFTEST_ERROR
|
#MSG_SELFTEST_ERROR
|
||||||
"Selftest error !"
|
"Selftest error !"
|
||||||
|
|
@ -903,13 +996,25 @@
|
||||||
|
|
||||||
#MSG_SET_TEMPERATURE c=19 r=1
|
#MSG_SET_TEMPERATURE c=19 r=1
|
||||||
"Set temperature:"
|
"Set temperature:"
|
||||||
"Imposta temperatura:"
|
"Imposta temperatura"
|
||||||
|
|
||||||
|
# c=20
|
||||||
|
"Prusa i3 MK2.5 OK."
|
||||||
|
"\x00"
|
||||||
|
|
||||||
|
# c=20
|
||||||
|
"Prusa i3 MK2.5S OK."
|
||||||
|
"\x00"
|
||||||
|
|
||||||
|
# c=20
|
||||||
|
"Prusa i3 MK3 OK."
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#MSG_SETTINGS
|
#MSG_SETTINGS
|
||||||
"Settings"
|
"Settings"
|
||||||
"Impostazioni"
|
"Impostazioni"
|
||||||
|
|
||||||
#MSG_SHOW_END_STOPS c=17 r=1
|
#MSG_SHOW_END_STOPS c=18
|
||||||
"Show end stops"
|
"Show end stops"
|
||||||
"Stato finecorsa"
|
"Stato finecorsa"
|
||||||
|
|
||||||
|
|
@ -917,7 +1022,7 @@
|
||||||
"Sensor state"
|
"Sensor state"
|
||||||
"Stato sensore"
|
"Stato sensore"
|
||||||
|
|
||||||
#MSG_FILE_CNT c=20 r=4
|
#MSG_FILE_CNT c=20 r=6
|
||||||
"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
|
"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
|
||||||
"Alcuni file non saranno ordinati. Il numero massimo di file in una cartella e 100 perche siano ordinati."
|
"Alcuni file non saranno ordinati. Il numero massimo di file in una cartella e 100 perche siano ordinati."
|
||||||
|
|
||||||
|
|
@ -957,6 +1062,10 @@
|
||||||
"Sound"
|
"Sound"
|
||||||
"Suono"
|
"Suono"
|
||||||
|
|
||||||
|
# c=7
|
||||||
|
"Runouts"
|
||||||
|
"Esaurim"
|
||||||
|
|
||||||
#
|
#
|
||||||
"Some problem encountered, Z-leveling enforced ..."
|
"Some problem encountered, Z-leveling enforced ..."
|
||||||
"Sono stati rilevati problemi, avviato livellamento Z ..."
|
"Sono stati rilevati problemi, avviato livellamento Z ..."
|
||||||
|
|
@ -1001,7 +1110,7 @@
|
||||||
"Select filament:"
|
"Select filament:"
|
||||||
"Seleziona il filamento:"
|
"Seleziona il filamento:"
|
||||||
|
|
||||||
#MSG_TEMP_CALIBRATION c=12 r=1
|
#MSG_TEMP_CALIBRATION c=14
|
||||||
"Temp. cal."
|
"Temp. cal."
|
||||||
"Calib. temp."
|
"Calib. temp."
|
||||||
|
|
||||||
|
|
@ -1021,6 +1130,10 @@
|
||||||
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
||||||
"Calibrazione temperatura completata e attiva. Puo essere disattivata dal menu Impostazioni ->Cal. Temp."
|
"Calibrazione temperatura completata e attiva. Puo essere disattivata dal menu Impostazioni ->Cal. Temp."
|
||||||
|
|
||||||
|
# c=20 r=3
|
||||||
|
"Sensor verified, remove the filament now."
|
||||||
|
"Sensore verificato, rimuovere il filamento."
|
||||||
|
|
||||||
#MSG_TEMPERATURE
|
#MSG_TEMPERATURE
|
||||||
"Temperature"
|
"Temperature"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
@ -1029,7 +1142,7 @@
|
||||||
"Temperatures"
|
"Temperatures"
|
||||||
"Temperature"
|
"Temperature"
|
||||||
|
|
||||||
#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
|
#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
|
||||||
"There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
|
"There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
|
||||||
"E ancora necessario effettuare la calibrazione Z. Segui il manuale, capitolo Primi Passi, sezione Sequenza di Calibrazione. "
|
"E ancora necessario effettuare la calibrazione Z. Segui il manuale, capitolo Primi Passi, sezione Sequenza di Calibrazione. "
|
||||||
|
|
||||||
|
|
@ -1049,17 +1162,17 @@
|
||||||
"Unload"
|
"Unload"
|
||||||
"Scarica"
|
"Scarica"
|
||||||
|
|
||||||
#
|
#MSG_TOTAL_FAILURES c=20
|
||||||
"Total failures"
|
"Total failures"
|
||||||
"Totale fallimenti"
|
"Totale fallimenti"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"to load filament"
|
"to load filament"
|
||||||
"per caricare il filamento"
|
"per caricare il fil."
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"to unload filament"
|
"to unload filament"
|
||||||
"per scaricare il filamento"
|
"per scaricare fil."
|
||||||
|
|
||||||
#MSG_UNLOAD_FILAMENT c=17
|
#MSG_UNLOAD_FILAMENT c=17
|
||||||
"Unload filament"
|
"Unload filament"
|
||||||
|
|
@ -1069,7 +1182,7 @@
|
||||||
"Unloading filament"
|
"Unloading filament"
|
||||||
"Scaricando filamento"
|
"Scaricando filamento"
|
||||||
|
|
||||||
#
|
#MSG_TOTAL c=6
|
||||||
"Total"
|
"Total"
|
||||||
"Totale"
|
"Totale"
|
||||||
|
|
||||||
|
|
@ -1125,7 +1238,7 @@
|
||||||
"Wizard"
|
"Wizard"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
#MSG_XYZ_DETAILS c=19 r=1
|
#MSG_XYZ_DETAILS c=18
|
||||||
"XYZ cal. details"
|
"XYZ cal. details"
|
||||||
"XYZ Cal. dettagli"
|
"XYZ Cal. dettagli"
|
||||||
|
|
||||||
|
|
@ -1149,7 +1262,11 @@
|
||||||
"XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
|
"XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
|
||||||
"Calibrazion XYZ corretta. Assi X/Y leggermente storti. Ben fatto!"
|
"Calibrazion XYZ corretta. Assi X/Y leggermente storti. Ben fatto!"
|
||||||
|
|
||||||
#
|
#MSG_TIMEOUT c=12
|
||||||
|
"Timeout"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
|
#MSG_X_CORRECTION c=13
|
||||||
"X-correct:"
|
"X-correct:"
|
||||||
"Correzione-X:"
|
"Correzione-X:"
|
||||||
|
|
||||||
|
|
@ -1171,7 +1288,7 @@
|
||||||
|
|
||||||
#
|
#
|
||||||
"XYZ calibration failed. Bed calibration point was not found."
|
"XYZ calibration failed. Bed calibration point was not found."
|
||||||
"Calibrazione XYZ fallita. Il punto di calibrazione sul letto non e' stato trovato."
|
"Calibrazione XYZ fallita. Il punto di calibrazione sul piano non e' stato trovato."
|
||||||
|
|
||||||
#
|
#
|
||||||
"XYZ calibration failed. Front calibration points not reachable."
|
"XYZ calibration failed. Front calibration points not reachable."
|
||||||
|
|
@ -1189,7 +1306,11 @@
|
||||||
"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
|
"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
|
||||||
"La stampante iniziera a stampare una linea a zig-zag. Gira la manopola fino a che non hai raggiungo l'altezza ottimale. Verifica con le immagini nel manuale (capitolo sulla calibrazione):"
|
"La stampante iniziera a stampare una linea a zig-zag. Gira la manopola fino a che non hai raggiungo l'altezza ottimale. Verifica con le immagini nel manuale (capitolo sulla calibrazione):"
|
||||||
|
|
||||||
#
|
# c=20 r=5
|
||||||
|
"Verification failed, remove the filament and try again."
|
||||||
|
"Verifica fallita, rimuovere il filamento e riprovare."
|
||||||
|
|
||||||
|
#MSG_Y_CORRECTION c=13
|
||||||
"Y-correct:"
|
"Y-correct:"
|
||||||
"Correzione-Y:"
|
"Correzione-Y:"
|
||||||
|
|
||||||
|
|
@ -1229,9 +1350,9 @@
|
||||||
"Warn"
|
"Warn"
|
||||||
"Avviso"
|
"Avviso"
|
||||||
|
|
||||||
#
|
#MSG_HW_SETUP c=18
|
||||||
"HW Setup"
|
"HW Setup"
|
||||||
"Installazione HW"
|
"Impostazioni HW"
|
||||||
|
|
||||||
#
|
#
|
||||||
"IR:"
|
"IR:"
|
||||||
|
|
@ -1245,10 +1366,6 @@
|
||||||
"Mesh"
|
"Mesh"
|
||||||
"Griglia"
|
"Griglia"
|
||||||
|
|
||||||
#
|
|
||||||
"Mesh bed leveling"
|
|
||||||
"Mesh livel. letto"
|
|
||||||
|
|
||||||
#
|
#
|
||||||
"MK3S firmware detected on MK3 printer"
|
"MK3S firmware detected on MK3 printer"
|
||||||
"Firmware MK3S rilevato su stampante MK3"
|
"Firmware MK3S rilevato su stampante MK3"
|
||||||
|
|
@ -1277,11 +1394,11 @@
|
||||||
"G-code sliced for a different level. Please re-slice the model again. Print cancelled."
|
"G-code sliced for a different level. Please re-slice the model again. Print cancelled."
|
||||||
"G-code processato per un livello diverso. Per favore esegui nuovamente lo slice del modello. Stampa annullata."
|
"G-code processato per un livello diverso. Per favore esegui nuovamente lo slice del modello. Stampa annullata."
|
||||||
|
|
||||||
#
|
#MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
|
||||||
"G-code sliced for a different printer type. Continue?"
|
"G-code sliced for a different printer type. Continue?"
|
||||||
"G-code processato per una stampante diversa. Continuare?"
|
"G-code processato per una stampante diversa. Continuare?"
|
||||||
|
|
||||||
#
|
#MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=6
|
||||||
"G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
|
"G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
|
||||||
"G-code processato per una stampante diversa. Per favore esegui nuovamente lo slice del modello. Stampa annullata."
|
"G-code processato per una stampante diversa. Per favore esegui nuovamente lo slice del modello. Stampa annullata."
|
||||||
|
|
||||||
|
|
@ -1297,13 +1414,13 @@
|
||||||
"PINDA:"
|
"PINDA:"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Preheating to cut"
|
"Preheating to cut"
|
||||||
"Preriscaldamento per taglio"
|
"Preriscalda. taglio"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Preheating to eject"
|
"Preheating to eject"
|
||||||
"Preriscaldamento per espulsione"
|
"Preriscalda. espuls."
|
||||||
|
|
||||||
#
|
#
|
||||||
"Printer nozzle diameter differs from the G-code. Continue?"
|
"Printer nozzle diameter differs from the G-code. Continue?"
|
||||||
|
|
@ -1313,6 +1430,10 @@
|
||||||
"Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
|
"Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
|
||||||
"Diametro ugello diverso dal G-Code. Controlla il valore nelle impostazioni. Stampa annullata."
|
"Diametro ugello diverso dal G-Code. Controlla il valore nelle impostazioni. Stampa annullata."
|
||||||
|
|
||||||
|
# c=20
|
||||||
|
"%s level expected"
|
||||||
|
"atteso livello %s"
|
||||||
|
|
||||||
#
|
#
|
||||||
"Rename"
|
"Rename"
|
||||||
"Rinomina"
|
"Rinomina"
|
||||||
|
|
@ -1325,7 +1446,7 @@
|
||||||
"Sensor info"
|
"Sensor info"
|
||||||
"Info Sensore"
|
"Info Sensore"
|
||||||
|
|
||||||
#
|
#MSG_SHEET c=10
|
||||||
"Sheet"
|
"Sheet"
|
||||||
"Piano"
|
"Piano"
|
||||||
|
|
||||||
|
|
@ -1333,14 +1454,15 @@
|
||||||
"Assist"
|
"Assist"
|
||||||
"Assist."
|
"Assist."
|
||||||
|
|
||||||
#
|
#MSG_STEEL_SHEET c=18
|
||||||
"Steel sheets"
|
"Steel sheets"
|
||||||
"Piani d'acciaio"
|
"Piani d'acciaio"
|
||||||
|
|
||||||
#
|
#MSG_Z_CORRECTION c=13
|
||||||
"Z-correct:"
|
"Z-correct:"
|
||||||
"Correzione-Z:"
|
"Correzione-Z:"
|
||||||
|
|
||||||
#MSG_Z_PROBE_NR
|
#MSG_Z_PROBE_NR
|
||||||
"Z-probe nr."
|
"Z-probe nr."
|
||||||
"\x00"
|
"Nr. Z-test"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,26 @@
|
||||||
"[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
|
"[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
|
||||||
"[%.7s]Live Adj. Z\x0austaw., kontynuowac\x0aczy zaczac od 0?\x0a%cKontynuuj%cReset"
|
"[%.7s]Live Adj. Z\x0austaw., kontynuowac\x0aczy zaczac od 0?\x0a%cKontynuuj%cReset"
|
||||||
|
|
||||||
|
#MSG_IR_03_OR_OLDER c=18
|
||||||
|
" 0.3 or older"
|
||||||
|
" 0.3 lub starszy"
|
||||||
|
|
||||||
|
# c=18
|
||||||
|
"FS v0.3 or older"
|
||||||
|
"FS 0.3 lub starszy"
|
||||||
|
|
||||||
|
#MSG_IR_04_OR_NEWER c=18
|
||||||
|
" 0.4 or newer"
|
||||||
|
" 0.4 lub nowszy"
|
||||||
|
|
||||||
|
# c=18
|
||||||
|
"FS v0.4 or newer"
|
||||||
|
"FS 0.4 lub nowszy"
|
||||||
|
|
||||||
|
#MSG_IR_UNKNOWN c=18
|
||||||
|
"unknown state"
|
||||||
|
"Stan nieznany"
|
||||||
|
|
||||||
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
|
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
|
||||||
" of 4"
|
" of 4"
|
||||||
" z 4"
|
" z 4"
|
||||||
|
|
@ -42,7 +62,11 @@
|
||||||
"Ambient"
|
"Ambient"
|
||||||
"Otoczenie"
|
"Otoczenie"
|
||||||
|
|
||||||
#MSG_PRESS c=20
|
#MSG_AUTO c=6
|
||||||
|
"Auto"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
|
#MSG_PRESS c=20 r=2
|
||||||
"and press the knob"
|
"and press the knob"
|
||||||
"i nacisnij pokretlo"
|
"i nacisnij pokretlo"
|
||||||
|
|
||||||
|
|
@ -58,7 +82,7 @@
|
||||||
"Auto home"
|
"Auto home"
|
||||||
"Auto zerowanie"
|
"Auto zerowanie"
|
||||||
|
|
||||||
#MSG_AUTOLOAD_FILAMENT c=17
|
#MSG_AUTOLOAD_FILAMENT c=18
|
||||||
"AutoLoad filament"
|
"AutoLoad filament"
|
||||||
"Autoladowanie fil."
|
"Autoladowanie fil."
|
||||||
|
|
||||||
|
|
@ -94,15 +118,27 @@
|
||||||
"Bed level correct"
|
"Bed level correct"
|
||||||
"Korekta stolu"
|
"Korekta stolu"
|
||||||
|
|
||||||
#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
|
#MSG_BELTTEST c=17
|
||||||
|
"Belt test "
|
||||||
|
"Test paskow"
|
||||||
|
|
||||||
|
#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
|
||||||
"Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
|
"Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
|
||||||
"Kalibracja nieudana. Sensor nie aktywowal sie. Zanieczysz. dysza? Czekam na reset."
|
"Kalibracja nieudana. Sensor nie aktywowal sie. Zanieczysz. dysza? Czekam na reset."
|
||||||
|
|
||||||
|
#MSG_BRIGHT c=6
|
||||||
|
"Bright"
|
||||||
|
"Jasny"
|
||||||
|
|
||||||
|
#MSG_BRIGHTNESS c=18
|
||||||
|
"Brightness"
|
||||||
|
"Jasnosc"
|
||||||
|
|
||||||
#MSG_BED
|
#MSG_BED
|
||||||
"Bed"
|
"Bed"
|
||||||
"Stol"
|
"Stol"
|
||||||
|
|
||||||
#MSG_MENU_BELT_STATUS c=15 r=1
|
#MSG_BELT_STATUS c=18
|
||||||
"Belt status"
|
"Belt status"
|
||||||
"Stan paskow"
|
"Stan paskow"
|
||||||
|
|
||||||
|
|
@ -182,9 +218,9 @@
|
||||||
"Crash detected. Resume print?"
|
"Crash detected. Resume print?"
|
||||||
"Wykryto zderzenie. Wznowic druk?"
|
"Wykryto zderzenie. Wznowic druk?"
|
||||||
|
|
||||||
#
|
#MSG_CRASH c=7
|
||||||
"Crash"
|
"Crash"
|
||||||
"Zderzenie"
|
"Zderzen"
|
||||||
|
|
||||||
#MSG_CURRENT c=19 r=1
|
#MSG_CURRENT c=19 r=1
|
||||||
"Current"
|
"Current"
|
||||||
|
|
@ -202,15 +238,19 @@
|
||||||
"Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
|
"Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
|
||||||
"Odleglosc dyszy od powierzchni druku nie jest skalibrowana. Postepuj zgodnie z instrukcja: rozdzial Wprowadzenie - Kalibracja pierwszej warstwy."
|
"Odleglosc dyszy od powierzchni druku nie jest skalibrowana. Postepuj zgodnie z instrukcja: rozdzial Wprowadzenie - Kalibracja pierwszej warstwy."
|
||||||
|
|
||||||
|
#MSG_FS_CONTINUE c=5
|
||||||
|
"Cont."
|
||||||
|
"Kont."
|
||||||
|
|
||||||
#MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
|
#MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
|
||||||
"Do you want to repeat last step to readjust distance between nozzle and heatbed?"
|
"Do you want to repeat last step to readjust distance between nozzle and heatbed?"
|
||||||
"Chcesz powtorzyc ostatni krok i ponownie ustawic odleglosc miedzy dysza a stolikiem?"
|
"Chcesz powtorzyc ostatni krok i ponownie ustawic odleglosc miedzy dysza a stolikiem?"
|
||||||
|
|
||||||
#MSG_EXTRUDER_CORRECTION c=10
|
#MSG_EXTRUDER_CORRECTION c=13
|
||||||
"E-correct:"
|
"E-correct:"
|
||||||
"Korekcja-E:"
|
"Korekcja-E:"
|
||||||
|
|
||||||
#MSG_EJECT_FILAMENT c=17 r=1
|
#MSG_EJECT_FILAMENT c=16
|
||||||
"Eject filament"
|
"Eject filament"
|
||||||
"Wysun filament"
|
"Wysun filament"
|
||||||
|
|
||||||
|
|
@ -218,7 +258,7 @@
|
||||||
"Ejecting filament"
|
"Ejecting filament"
|
||||||
"Wysuwanie filamentu"
|
"Wysuwanie filamentu"
|
||||||
|
|
||||||
#MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
|
#MSG_SELFTEST_ENDSTOP_NOTHIT c=20
|
||||||
"Endstop not hit"
|
"Endstop not hit"
|
||||||
"Krancowka nie aktyw."
|
"Krancowka nie aktyw."
|
||||||
|
|
||||||
|
|
@ -234,10 +274,26 @@
|
||||||
"Error - static memory has been overwritten"
|
"Error - static memory has been overwritten"
|
||||||
"Blad - pamiec statyczna zostala nadpisana"
|
"Blad - pamiec statyczna zostala nadpisana"
|
||||||
|
|
||||||
|
#MSG_CUT_FILAMENT c=16
|
||||||
|
"Cut filament"
|
||||||
|
"Ciecie filamentu"
|
||||||
|
|
||||||
|
#MSG_CUTTER c=9
|
||||||
|
"Cutter"
|
||||||
|
"Nozyk"
|
||||||
|
|
||||||
|
# c=18
|
||||||
|
"Cutting filament"
|
||||||
|
"Obcinanie fil."
|
||||||
|
|
||||||
#MSG_FSENS_NOT_RESPONDING c=20 r=4
|
#MSG_FSENS_NOT_RESPONDING c=20 r=4
|
||||||
"ERROR: Filament sensor is not responding, please check connection."
|
"ERROR: Filament sensor is not responding, please check connection."
|
||||||
"BLAD: Czujnik filamentu nie odpowiada, sprawdz polaczenie."
|
"BLAD: Czujnik filamentu nie odpowiada, sprawdz polaczenie."
|
||||||
|
|
||||||
|
#MSG_DIM c=6
|
||||||
|
"Dim"
|
||||||
|
"Sciemn"
|
||||||
|
|
||||||
#MSG_ERROR
|
#MSG_ERROR
|
||||||
"ERROR:"
|
"ERROR:"
|
||||||
"BLAD:"
|
"BLAD:"
|
||||||
|
|
@ -246,11 +302,11 @@
|
||||||
"Extruder fan:"
|
"Extruder fan:"
|
||||||
"WentHotend:"
|
"WentHotend:"
|
||||||
|
|
||||||
#MSG_INFO_EXTRUDER c=15 r=1
|
#MSG_INFO_EXTRUDER c=18
|
||||||
"Extruder info"
|
"Extruder info"
|
||||||
"Ekstruder - info"
|
"Ekstruder - info"
|
||||||
|
|
||||||
#MSG_MOVE_E
|
#MSG_EXTRUDER c=17
|
||||||
"Extruder"
|
"Extruder"
|
||||||
"Ekstruder"
|
"Ekstruder"
|
||||||
|
|
||||||
|
|
@ -258,7 +314,7 @@
|
||||||
"Fail stats MMU"
|
"Fail stats MMU"
|
||||||
"Bledy MMU"
|
"Bledy MMU"
|
||||||
|
|
||||||
#MSG_FSENSOR_AUTOLOAD
|
#MSG_FSENSOR_AUTOLOAD c=13
|
||||||
"F. autoload"
|
"F. autoload"
|
||||||
"Autolad. fil."
|
"Autolad. fil."
|
||||||
|
|
||||||
|
|
@ -274,7 +330,7 @@
|
||||||
"Fan test"
|
"Fan test"
|
||||||
"Test wentylatora"
|
"Test wentylatora"
|
||||||
|
|
||||||
#MSG_FANS_CHECK
|
#MSG_FANS_CHECK c=13
|
||||||
"Fans check"
|
"Fans check"
|
||||||
"Sprawd.went."
|
"Sprawd.went."
|
||||||
|
|
||||||
|
|
@ -282,13 +338,13 @@
|
||||||
"Fil. sensor"
|
"Fil. sensor"
|
||||||
"Czuj. filam."
|
"Czuj. filam."
|
||||||
|
|
||||||
#
|
#MSG_FIL_RUNOUTS c=14
|
||||||
"Filam. runouts"
|
"Fil. runouts "
|
||||||
"Konc. filamentu"
|
"Konc.filamentu"
|
||||||
|
|
||||||
#MSG_FILAMENT_CLEAN c=20 r=2
|
#MSG_FILAMENT_CLEAN c=20 r=2
|
||||||
"Filament extruding & with correct color?"
|
"Filament extruding & with correct color?"
|
||||||
"Filament wychodzi z dyszy, kolor jest ok?"
|
"Filament wychodzi z dyszy,kolor jest ok?"
|
||||||
|
|
||||||
#MSG_NOT_LOADED c=19
|
#MSG_NOT_LOADED c=19
|
||||||
"Filament not loaded"
|
"Filament not loaded"
|
||||||
|
|
@ -298,7 +354,7 @@
|
||||||
"Filament sensor"
|
"Filament sensor"
|
||||||
"Czujnik filamentu"
|
"Czujnik filamentu"
|
||||||
|
|
||||||
#MSG_FILAMENT_USED c=19 r=1
|
#MSG_FILAMENT_USED c=19
|
||||||
"Filament used"
|
"Filament used"
|
||||||
"Uzyty filament"
|
"Uzyty filament"
|
||||||
|
|
||||||
|
|
@ -306,15 +362,19 @@
|
||||||
"Print time"
|
"Print time"
|
||||||
"Czas druku"
|
"Czas druku"
|
||||||
|
|
||||||
#MSG_FILE_INCOMPLETE c=20 r=2
|
#MSG_FS_ACTION c=10
|
||||||
|
"FS Action"
|
||||||
|
"Akcja FS"
|
||||||
|
|
||||||
|
#MSG_FILE_INCOMPLETE c=20 r=3
|
||||||
"File incomplete. Continue anyway?"
|
"File incomplete. Continue anyway?"
|
||||||
"Plik niekompletny. Kontynowac?"
|
"Plik niekompletny. Kontynowac?"
|
||||||
|
|
||||||
#MSG_FINISHING_MOVEMENTS c=20 r=1
|
#MSG_FINISHING_MOVEMENTS c=20
|
||||||
"Finishing movements"
|
"Finishing movements"
|
||||||
"Konczenie druku"
|
"Konczenie druku"
|
||||||
|
|
||||||
#MSG_V2_CALIBRATION c=17 r=1
|
#MSG_V2_CALIBRATION c=18
|
||||||
"First layer cal."
|
"First layer cal."
|
||||||
"Kal. 1. warstwy"
|
"Kal. 1. warstwy"
|
||||||
|
|
||||||
|
|
@ -396,18 +456,18 @@
|
||||||
|
|
||||||
#MSG_SELFTEST_CHECK_FSENSOR c=20
|
#MSG_SELFTEST_CHECK_FSENSOR c=20
|
||||||
"Checking sensors "
|
"Checking sensors "
|
||||||
"Sprawdzanie czujnikow"
|
"Kontrola czujnikow"
|
||||||
|
|
||||||
#MSG_SELFTEST_CHECK_X c=20
|
#MSG_CHECKING_X c=20
|
||||||
"Checking X axis "
|
"Checking X axis"
|
||||||
"Kontrola osi X"
|
"Kontrola osi X"
|
||||||
|
|
||||||
#MSG_SELFTEST_CHECK_Y c=20
|
#MSG_CHECKING_Y c=20
|
||||||
"Checking Y axis "
|
"Checking Y axis"
|
||||||
"Kontrola osi Y"
|
"Kontrola osi Y"
|
||||||
|
|
||||||
#MSG_SELFTEST_CHECK_Z c=20
|
#MSG_SELFTEST_CHECK_Z c=20
|
||||||
"Checking Z axis "
|
"Checking Z axis"
|
||||||
"Kontrola osi Z"
|
"Kontrola osi Z"
|
||||||
|
|
||||||
#MSG_CHOOSE_EXTRUDER c=20 r=1
|
#MSG_CHOOSE_EXTRUDER c=20 r=1
|
||||||
|
|
@ -438,7 +498,7 @@
|
||||||
"Insert filament"
|
"Insert filament"
|
||||||
"Wprowadz filament"
|
"Wprowadz filament"
|
||||||
|
|
||||||
#MSG_WIZARD_FILAMENT_LOADED c=20 r=2
|
#MSG_FILAMENT_LOADED c=20 r=2
|
||||||
"Is filament loaded?"
|
"Is filament loaded?"
|
||||||
"Filament jest zaladowany?"
|
"Filament jest zaladowany?"
|
||||||
|
|
||||||
|
|
@ -446,7 +506,7 @@
|
||||||
"Is steel sheet on heatbed?"
|
"Is steel sheet on heatbed?"
|
||||||
"Czy plyta stal. jest na podgrzew. stole?"
|
"Czy plyta stal. jest na podgrzew. stole?"
|
||||||
|
|
||||||
#
|
#MSG_LAST_PRINT_FAILURES c=20
|
||||||
"Last print failures"
|
"Last print failures"
|
||||||
"Ostatnie bledy druku"
|
"Ostatnie bledy druku"
|
||||||
|
|
||||||
|
|
@ -454,7 +514,7 @@
|
||||||
"If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
|
"If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
|
||||||
"Jesli masz dodatkowe plyty stalowe, to skalibruj ich ustawienia w menu Ustawienia - Ustawienia HW - Plyty stalowe."
|
"Jesli masz dodatkowe plyty stalowe, to skalibruj ich ustawienia w menu Ustawienia - Ustawienia HW - Plyty stalowe."
|
||||||
|
|
||||||
#
|
#MSG_LAST_PRINT c=18
|
||||||
"Last print"
|
"Last print"
|
||||||
"Ost. wydruk"
|
"Ost. wydruk"
|
||||||
|
|
||||||
|
|
@ -478,6 +538,10 @@
|
||||||
"Live adjust Z"
|
"Live adjust Z"
|
||||||
"Ustaw. Live Z"
|
"Ustaw. Live Z"
|
||||||
|
|
||||||
|
# c=20 r=6
|
||||||
|
"Insert the filament (do not load it) into the extruder and then press the knob."
|
||||||
|
"Wsun filament (nie uzywaj funkcji ladowania) do ekstrudera i nacisnij pokretlo."
|
||||||
|
|
||||||
#MSG_LOAD_FILAMENT c=17
|
#MSG_LOAD_FILAMENT c=17
|
||||||
"Load filament"
|
"Load filament"
|
||||||
"Ladowanie fil."
|
"Ladowanie fil."
|
||||||
|
|
@ -498,7 +562,7 @@
|
||||||
"Load to nozzle"
|
"Load to nozzle"
|
||||||
"Zaladuj do dyszy"
|
"Zaladuj do dyszy"
|
||||||
|
|
||||||
#MSG_M117_V2_CALIBRATION c=25 r=1
|
#MSG_M117_V2_CALIBRATION c=25
|
||||||
"M117 First layer cal."
|
"M117 First layer cal."
|
||||||
"M117 Kal. 1. warstwy"
|
"M117 Kal. 1. warstwy"
|
||||||
|
|
||||||
|
|
@ -506,13 +570,21 @@
|
||||||
"Main"
|
"Main"
|
||||||
"Menu glowne"
|
"Menu glowne"
|
||||||
|
|
||||||
|
#MSG_BL_HIGH c=12
|
||||||
|
"Level Bright"
|
||||||
|
"Poziom jasn."
|
||||||
|
|
||||||
|
#MSG_BL_LOW c=12
|
||||||
|
"Level Dimmed"
|
||||||
|
"Poziom ciem."
|
||||||
|
|
||||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
|
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
|
||||||
"Measuring reference height of calibration point"
|
"Measuring reference height of calibration point"
|
||||||
"Okreslam wysokosc odniesienia punktu kalibracyjnego"
|
"Okreslam wysokosc odniesienia punktu kalibracyjnego"
|
||||||
|
|
||||||
#MSG_MESH_BED_LEVELING
|
#MSG_MESH_BED_LEVELING c=18
|
||||||
"Mesh Bed Leveling"
|
"Mesh Bed Leveling"
|
||||||
"Poziomowanie stolu wg siatki"
|
"Poziomowanie stolu"
|
||||||
|
|
||||||
#MSG_MMU_OK_RESUMING_POSITION c=20 r=4
|
#MSG_MMU_OK_RESUMING_POSITION c=20 r=4
|
||||||
"MMU OK. Resuming position..."
|
"MMU OK. Resuming position..."
|
||||||
|
|
@ -526,7 +598,7 @@
|
||||||
"Measured skew"
|
"Measured skew"
|
||||||
"Zmierzony skos"
|
"Zmierzony skos"
|
||||||
|
|
||||||
#
|
#MSG_MMU_FAILS c=14
|
||||||
"MMU fails"
|
"MMU fails"
|
||||||
"Bledy MMU"
|
"Bledy MMU"
|
||||||
|
|
||||||
|
|
@ -534,7 +606,7 @@
|
||||||
"MMU load failed "
|
"MMU load failed "
|
||||||
"Blad ladowania MMU"
|
"Blad ladowania MMU"
|
||||||
|
|
||||||
#
|
#MSG_MMU_LOAD_FAILS c=14
|
||||||
"MMU load fails"
|
"MMU load fails"
|
||||||
"Bledy ladow. MMU"
|
"Bledy ladow. MMU"
|
||||||
|
|
||||||
|
|
@ -546,9 +618,13 @@
|
||||||
"Mode"
|
"Mode"
|
||||||
"Tryb"
|
"Tryb"
|
||||||
|
|
||||||
|
# c=20 r=3
|
||||||
|
"MK3 firmware detected on MK3S printer"
|
||||||
|
"Wykryto firmware MK3 w drukarce MK3S"
|
||||||
|
|
||||||
#MSG_NORMAL
|
#MSG_NORMAL
|
||||||
"Normal"
|
"Normal"
|
||||||
"Normalny"
|
"Normalni"
|
||||||
|
|
||||||
#MSG_SILENT
|
#MSG_SILENT
|
||||||
"Silent"
|
"Silent"
|
||||||
|
|
@ -638,7 +714,7 @@
|
||||||
"Nozzle"
|
"Nozzle"
|
||||||
"Dysza"
|
"Dysza"
|
||||||
|
|
||||||
#MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
|
#MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
|
||||||
"Old settings found. Default PID, Esteps etc. will be set."
|
"Old settings found. Default PID, Esteps etc. will be set."
|
||||||
"Znaleziono stare ustawienia. Zostana przywrocone domyslne ust. PID, Esteps, itp."
|
"Znaleziono stare ustawienia. Zostana przywrocone domyslne ust. PID, Esteps, itp."
|
||||||
|
|
||||||
|
|
@ -670,7 +746,7 @@
|
||||||
"PINDA Heating"
|
"PINDA Heating"
|
||||||
"Grzanie sondy PINDA"
|
"Grzanie sondy PINDA"
|
||||||
|
|
||||||
#MSG_PAPER c=20 r=8
|
#MSG_PAPER c=20 r=10
|
||||||
"Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
|
"Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
|
||||||
"Umiesc kartke papieru na stole roboczym i podczas pomiaru pierwszych 4 punktow. Jesli dysza zahaczy o papier, natychmiast wylacz drukarke."
|
"Umiesc kartke papieru na stole roboczym i podczas pomiaru pierwszych 4 punktow. Jesli dysza zahaczy o papier, natychmiast wylacz drukarke."
|
||||||
|
|
||||||
|
|
@ -742,15 +818,23 @@
|
||||||
"Preheating nozzle. Please wait."
|
"Preheating nozzle. Please wait."
|
||||||
"Nagrzewanie dyszy. Prosze czekac."
|
"Nagrzewanie dyszy. Prosze czekac."
|
||||||
|
|
||||||
|
# c=14
|
||||||
|
"PINDA"
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#
|
#
|
||||||
"Please upgrade."
|
"Please upgrade."
|
||||||
"Prosze zaktualizowac."
|
"Prosze zaktualizowac."
|
||||||
|
|
||||||
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
||||||
"Press knob to preheat nozzle and continue."
|
"Press the knob to preheat nozzle and continue."
|
||||||
"Wcisnij pokretlo aby rozgrzac dysze i kontynuowac."
|
"Wcisnij pokretlo aby rozgrzac dysze i kontynuowac."
|
||||||
|
|
||||||
#
|
#MSG_FS_PAUSE c=5
|
||||||
|
"Pause"
|
||||||
|
"Pauza"
|
||||||
|
|
||||||
|
#MSG_POWER_FAILURES c=14
|
||||||
"Power failures"
|
"Power failures"
|
||||||
"Zaniki zasilania"
|
"Zaniki zasilania"
|
||||||
|
|
||||||
|
|
@ -758,11 +842,11 @@
|
||||||
"Print aborted"
|
"Print aborted"
|
||||||
"Druk przerwany"
|
"Druk przerwany"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Preheating to load"
|
"Preheating to load"
|
||||||
"Nagrzew. do ladowania"
|
"Nagrzew.do ladowania"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Preheating to unload"
|
"Preheating to unload"
|
||||||
"Nagrzew. do rozlad."
|
"Nagrzew. do rozlad."
|
||||||
|
|
||||||
|
|
@ -774,7 +858,7 @@
|
||||||
"Print from SD"
|
"Print from SD"
|
||||||
"Druk z karty SD"
|
"Druk z karty SD"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Press the knob"
|
"Press the knob"
|
||||||
"Wcisnij pokretlo"
|
"Wcisnij pokretlo"
|
||||||
|
|
||||||
|
|
@ -814,31 +898,39 @@
|
||||||
"Rear side [um]"
|
"Rear side [um]"
|
||||||
"Tyl [um]"
|
"Tyl [um]"
|
||||||
|
|
||||||
#MSG_RECOVERING_PRINT c=20 r=1
|
# c=20 r=4
|
||||||
"Recovering print "
|
"Please unload the filament first, then repeat this action."
|
||||||
"Wznawianie wydruku"
|
"Najpierw rozladuj filament, nastepnie powtorz czynnosc."
|
||||||
|
|
||||||
#MSG_REMOVE_OLD_FILAMENT c=20 r=4
|
# c=20 r=4
|
||||||
|
"Please check the IR sensor connection, unload filament if present."
|
||||||
|
"Sprawdz polaczenie czujnika IR, rozladuj filament, jesli zaladowany."
|
||||||
|
|
||||||
|
#MSG_RECOVERING_PRINT c=20
|
||||||
|
"Recovering print "
|
||||||
|
"Wznawianie wydruku "
|
||||||
|
|
||||||
|
#MSG_REMOVE_OLD_FILAMENT c=20 r=5
|
||||||
"Remove old filament and press the knob to start loading new filament."
|
"Remove old filament and press the knob to start loading new filament."
|
||||||
"Wyciagnij poprzedni filament i nacisnij pokretlo aby zaladowac nowy."
|
"Wyciagnij poprzedni filament i nacisnij pokretlo aby zaladowac nowy."
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Prusa i3 MK3S OK."
|
"Prusa i3 MK3S OK."
|
||||||
"Prusa i3 MK3S OK"
|
"\x00"
|
||||||
|
|
||||||
#MSG_CALIBRATE_BED_RESET
|
#MSG_CALIBRATE_BED_RESET
|
||||||
"Reset XYZ calibr."
|
"Reset XYZ calibr."
|
||||||
"Reset kalibr. XYZ"
|
"Reset kalibr. XYZ"
|
||||||
|
|
||||||
#MSG_BED_CORRECTION_RESET
|
#MSG_RESET c=14
|
||||||
"Reset"
|
"Reset"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
#MSG_RESUME_PRINT
|
#MSG_RESUME_PRINT c=18
|
||||||
"Resume print"
|
"Resume print"
|
||||||
"Wznowic wydruk"
|
"Wznowic wydruk"
|
||||||
|
|
||||||
#MSG_RESUMING_PRINT c=20 r=1
|
#MSG_RESUMING_PRINT c=20
|
||||||
"Resuming print"
|
"Resuming print"
|
||||||
"Wznawianie druku"
|
"Wznawianie druku"
|
||||||
|
|
||||||
|
|
@ -906,11 +998,23 @@
|
||||||
"Set temperature:"
|
"Set temperature:"
|
||||||
"Ustaw temperature:"
|
"Ustaw temperature:"
|
||||||
|
|
||||||
|
# c=20
|
||||||
|
"Prusa i3 MK2.5 OK."
|
||||||
|
"\x00"
|
||||||
|
|
||||||
|
# c=20
|
||||||
|
"Prusa i3 MK2.5S OK."
|
||||||
|
"\x00"
|
||||||
|
|
||||||
|
# c=20
|
||||||
|
"Prusa i3 MK3 OK."
|
||||||
|
"\x00"
|
||||||
|
|
||||||
#MSG_SETTINGS
|
#MSG_SETTINGS
|
||||||
"Settings"
|
"Settings"
|
||||||
"Ustawienia"
|
"Ustawienia"
|
||||||
|
|
||||||
#MSG_SHOW_END_STOPS c=17 r=1
|
#MSG_SHOW_END_STOPS c=18
|
||||||
"Show end stops"
|
"Show end stops"
|
||||||
"Pokaz krancowki"
|
"Pokaz krancowki"
|
||||||
|
|
||||||
|
|
@ -918,7 +1022,7 @@
|
||||||
"Sensor state"
|
"Sensor state"
|
||||||
"Stan czujnikow"
|
"Stan czujnikow"
|
||||||
|
|
||||||
#MSG_FILE_CNT c=20 r=4
|
#MSG_FILE_CNT c=20 r=6
|
||||||
"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
|
"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
|
||||||
"Niektore pliki nie zostana posortowane. Max. liczba plikow w 1 folderze = 100."
|
"Niektore pliki nie zostana posortowane. Max. liczba plikow w 1 folderze = 100."
|
||||||
|
|
||||||
|
|
@ -958,6 +1062,10 @@
|
||||||
"Sound"
|
"Sound"
|
||||||
"Dzwiek"
|
"Dzwiek"
|
||||||
|
|
||||||
|
# c=7
|
||||||
|
"Runouts"
|
||||||
|
"Konce f"
|
||||||
|
|
||||||
#
|
#
|
||||||
"Some problem encountered, Z-leveling enforced ..."
|
"Some problem encountered, Z-leveling enforced ..."
|
||||||
"Wykryto problem, wymuszono poziomowanie osi Z."
|
"Wykryto problem, wymuszono poziomowanie osi Z."
|
||||||
|
|
@ -965,6 +1073,7 @@
|
||||||
#MSG_SOUND_ONCE
|
#MSG_SOUND_ONCE
|
||||||
"Once"
|
"Once"
|
||||||
"1-raz"
|
"1-raz"
|
||||||
|
|
||||||
#MSG_SPEED
|
#MSG_SPEED
|
||||||
"Speed"
|
"Speed"
|
||||||
"Predkosc"
|
"Predkosc"
|
||||||
|
|
@ -1001,9 +1110,9 @@
|
||||||
"Select filament:"
|
"Select filament:"
|
||||||
"Wybierz filament:"
|
"Wybierz filament:"
|
||||||
|
|
||||||
#MSG_TEMP_CALIBRATION c=12 r=1
|
#MSG_TEMP_CALIBRATION c=14
|
||||||
"Temp. cal."
|
"Temp. cal."
|
||||||
"Kalibracja temp."
|
"Kalib. temp."
|
||||||
|
|
||||||
#
|
#
|
||||||
"Select temperature which matches your material."
|
"Select temperature which matches your material."
|
||||||
|
|
@ -1021,6 +1130,10 @@
|
||||||
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
||||||
"Kalibracja temperaturowa zakonczona i wlaczona. Moze byc wylaczona z menu Ustawienia -> Kalibracja temp."
|
"Kalibracja temperaturowa zakonczona i wlaczona. Moze byc wylaczona z menu Ustawienia -> Kalibracja temp."
|
||||||
|
|
||||||
|
# c=20 r=3
|
||||||
|
"Sensor verified, remove the filament now."
|
||||||
|
"Czujnik sprawdzony, wyciagnij filament."
|
||||||
|
|
||||||
#MSG_TEMPERATURE
|
#MSG_TEMPERATURE
|
||||||
"Temperature"
|
"Temperature"
|
||||||
"Temperatura"
|
"Temperatura"
|
||||||
|
|
@ -1029,7 +1142,7 @@
|
||||||
"Temperatures"
|
"Temperatures"
|
||||||
"Temperatury"
|
"Temperatury"
|
||||||
|
|
||||||
#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
|
#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
|
||||||
"There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
|
"There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
|
||||||
"Musimy przeprowadzic kalibracje Z. Kieruj sie Samouczkiem: rozdzial Pierwsze Kroki, sekcja Kalibracja."
|
"Musimy przeprowadzic kalibracje Z. Kieruj sie Samouczkiem: rozdzial Pierwsze Kroki, sekcja Kalibracja."
|
||||||
|
|
||||||
|
|
@ -1049,15 +1162,15 @@
|
||||||
"Unload"
|
"Unload"
|
||||||
"Rozladuj"
|
"Rozladuj"
|
||||||
|
|
||||||
#
|
#MSG_TOTAL_FAILURES c=20
|
||||||
"Total failures"
|
"Total failures"
|
||||||
"Suma bledow"
|
"Suma bledow"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"to load filament"
|
"to load filament"
|
||||||
"aby zaladow. fil."
|
"aby zaladow. fil."
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"to unload filament"
|
"to unload filament"
|
||||||
"aby rozlad. filament"
|
"aby rozlad. filament"
|
||||||
|
|
||||||
|
|
@ -1069,7 +1182,7 @@
|
||||||
"Unloading filament"
|
"Unloading filament"
|
||||||
"Rozladowuje filament"
|
"Rozladowuje filament"
|
||||||
|
|
||||||
#
|
#MSG_TOTAL c=6
|
||||||
"Total"
|
"Total"
|
||||||
"Suma"
|
"Suma"
|
||||||
|
|
||||||
|
|
@ -1125,7 +1238,7 @@
|
||||||
"Wizard"
|
"Wizard"
|
||||||
"Asystent"
|
"Asystent"
|
||||||
|
|
||||||
#MSG_XYZ_DETAILS c=19 r=1
|
#MSG_XYZ_DETAILS c=18
|
||||||
"XYZ cal. details"
|
"XYZ cal. details"
|
||||||
"Szczegoly kal. XYZ"
|
"Szczegoly kal. XYZ"
|
||||||
|
|
||||||
|
|
@ -1149,7 +1262,11 @@
|
||||||
"XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
|
"XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
|
||||||
"Kalibracja XYZ prawidlowa. Osie X/Y lekko skosne. Dobra robota!"
|
"Kalibracja XYZ prawidlowa. Osie X/Y lekko skosne. Dobra robota!"
|
||||||
|
|
||||||
#
|
#MSG_TIMEOUT c=12
|
||||||
|
"Timeout"
|
||||||
|
"Wyl. czas."
|
||||||
|
|
||||||
|
#MSG_X_CORRECTION c=13
|
||||||
"X-correct:"
|
"X-correct:"
|
||||||
"Korekcja-X:"
|
"Korekcja-X:"
|
||||||
|
|
||||||
|
|
@ -1189,7 +1306,11 @@
|
||||||
"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
|
"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
|
||||||
"Drukarka zacznie drukowanie linii w ksztalcie zygzaka. Ustaw optymalna wysokosc obracajac pokretlo. Porownaj z ilustracjami w Podreczniku (rozdzial Kalibracja)."
|
"Drukarka zacznie drukowanie linii w ksztalcie zygzaka. Ustaw optymalna wysokosc obracajac pokretlo. Porownaj z ilustracjami w Podreczniku (rozdzial Kalibracja)."
|
||||||
|
|
||||||
#
|
# c=20 r=5
|
||||||
|
"Verification failed, remove the filament and try again."
|
||||||
|
"Niepowodzenie sprawdzenia, wyciagnij filament i sprobuj ponownie."
|
||||||
|
|
||||||
|
#MSG_Y_CORRECTION c=13
|
||||||
"Y-correct:"
|
"Y-correct:"
|
||||||
"Korekcja-Y:"
|
"Korekcja-Y:"
|
||||||
|
|
||||||
|
|
@ -1229,7 +1350,7 @@
|
||||||
"Warn"
|
"Warn"
|
||||||
"Ostrzez"
|
"Ostrzez"
|
||||||
|
|
||||||
#
|
#MSG_HW_SETUP c=18
|
||||||
"HW Setup"
|
"HW Setup"
|
||||||
"Ustawienia HW"
|
"Ustawienia HW"
|
||||||
|
|
||||||
|
|
@ -1245,10 +1366,6 @@
|
||||||
"Mesh"
|
"Mesh"
|
||||||
"Siatka"
|
"Siatka"
|
||||||
|
|
||||||
#
|
|
||||||
"Mesh bed leveling"
|
|
||||||
"Poziomowanie stolu"
|
|
||||||
|
|
||||||
#
|
#
|
||||||
"MK3S firmware detected on MK3 printer"
|
"MK3S firmware detected on MK3 printer"
|
||||||
"Wykryto firmware MK3S w drukarce MK3"
|
"Wykryto firmware MK3S w drukarce MK3"
|
||||||
|
|
@ -1271,17 +1388,17 @@
|
||||||
|
|
||||||
#
|
#
|
||||||
"G-code sliced for a different level. Continue?"
|
"G-code sliced for a different level. Continue?"
|
||||||
"\x00"
|
"G-code pociety dla innej wersji. Kontynuowac?"
|
||||||
|
|
||||||
#
|
#
|
||||||
"G-code sliced for a different level. Please re-slice the model again. Print cancelled."
|
"G-code sliced for a different level. Please re-slice the model again. Print cancelled."
|
||||||
"G-code pociety na innym poziomie. Potnij model ponownie. Druk anulowany."
|
"G-code pociety na innym poziomie. Potnij model ponownie. Druk anulowany."
|
||||||
|
|
||||||
#
|
#MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
|
||||||
"G-code sliced for a different printer type. Continue?"
|
"G-code sliced for a different printer type. Continue?"
|
||||||
"G-code pociety dla innej drukarki. Kontynuowac?"
|
"G-code pociety dla innej drukarki. Kontynuowac?"
|
||||||
|
|
||||||
#
|
#MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=6
|
||||||
"G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
|
"G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
|
||||||
"G-code pociety dla drukarki innego typu. Potnij model ponownie. Druk anulowany."
|
"G-code pociety dla drukarki innego typu. Potnij model ponownie. Druk anulowany."
|
||||||
|
|
||||||
|
|
@ -1297,13 +1414,13 @@
|
||||||
"PINDA:"
|
"PINDA:"
|
||||||
"\x00"
|
"\x00"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Preheating to cut"
|
"Preheating to cut"
|
||||||
"Nagrzewanie do obciecia"
|
"Nagrzew. obciecia"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Preheating to eject"
|
"Preheating to eject"
|
||||||
"Nagrzewanie do wysuniecia"
|
"Nagrzew. wysuniecia"
|
||||||
|
|
||||||
#
|
#
|
||||||
"Printer nozzle diameter differs from the G-code. Continue?"
|
"Printer nozzle diameter differs from the G-code. Continue?"
|
||||||
|
|
@ -1313,6 +1430,10 @@
|
||||||
"Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
|
"Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
|
||||||
"Srednica dyszy rozni sie od tej w G-code. Sprawdz ustawienia. Druk anulowany."
|
"Srednica dyszy rozni sie od tej w G-code. Sprawdz ustawienia. Druk anulowany."
|
||||||
|
|
||||||
|
# c=20
|
||||||
|
"%s level expected"
|
||||||
|
"Oczekiwano wersji %s"
|
||||||
|
|
||||||
#
|
#
|
||||||
"Rename"
|
"Rename"
|
||||||
"Zmien nazwe"
|
"Zmien nazwe"
|
||||||
|
|
@ -1325,7 +1446,7 @@
|
||||||
"Sensor info"
|
"Sensor info"
|
||||||
"Info o sensorach"
|
"Info o sensorach"
|
||||||
|
|
||||||
#
|
#MSG_SHEET c=10
|
||||||
"Sheet"
|
"Sheet"
|
||||||
"Plyta"
|
"Plyta"
|
||||||
|
|
||||||
|
|
@ -1333,14 +1454,15 @@
|
||||||
"Assist"
|
"Assist"
|
||||||
"Asyst."
|
"Asyst."
|
||||||
|
|
||||||
#
|
#MSG_STEEL_SHEET c=18
|
||||||
"Steel sheets"
|
"Steel sheets"
|
||||||
"Plyty stalowe"
|
"Plyty stalowe"
|
||||||
|
|
||||||
#
|
#MSG_Z_CORRECTION c=13
|
||||||
"Z-correct:"
|
"Z-correct:"
|
||||||
"Korekcja-Z:"
|
"Korekcja-Z:"
|
||||||
|
|
||||||
#MSG_Z_PROBE_NR
|
#MSG_Z_PROBE_NR
|
||||||
"Z-probe nr."
|
"Z-probe nr."
|
||||||
"Ilosc Pomiarow"
|
"Ilosc Pomiarow"
|
||||||
|
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue