Merge branch 'MK3' into MK3_NEW_SD_COMPILATION

This commit is contained in:
Alex Voinea 2021-02-09 16:17:43 +02:00
commit d2a7c62b50
No known key found for this signature in database
GPG Key ID: F5034E7CFCF2F973
26 changed files with 198 additions and 160 deletions

View File

@ -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)

View File

@ -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;

View File

@ -350,10 +350,6 @@ extern unsigned long t_fan_rising_edge;
extern bool mesh_bed_leveling_flag; extern bool mesh_bed_leveling_flag;
extern bool mesh_bed_run_from_menu; extern bool mesh_bed_run_from_menu;
extern bool sortAlpha;
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
extern bool saved_printing; extern bool saved_printing;

View File

@ -228,10 +228,6 @@ bool fan_state[2];
int fan_edge_counter[2]; int fan_edge_counter[2];
int fan_speed[2]; int fan_speed[2];
char dir_names[MAX_DIR_DEPTH][9];
bool sortAlpha = false;
float extruder_multiplier[EXTRUDERS] = {1.0 float extruder_multiplier[EXTRUDERS] = {1.0
#if EXTRUDERS > 1 #if EXTRUDERS > 1
@ -3044,6 +3040,8 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level)
//set_destination_to_current(); //set_destination_to_current();
int l_feedmultiply = setup_for_endstop_move(); int l_feedmultiply = setup_for_endstop_move();
lcd_display_message_fullscreen_P(_T(MSG_AUTO_HOME)); lcd_display_message_fullscreen_P(_T(MSG_AUTO_HOME));
raise_z_above(MESH_HOME_Z_SEARCH);
st_synchronize();
home_xy(); home_xy();
enable_endstops(false); enable_endstops(false);
@ -6990,14 +6988,14 @@ Sigma_Exit:
### M120 - Enable endstops <a href="https://reprap.org/wiki/G-code#M120:_Enable_endstop_detection">M120: Enable endstop detection</a> ### M120 - Enable endstops <a href="https://reprap.org/wiki/G-code#M120:_Enable_endstop_detection">M120: Enable endstop detection</a>
*/ */
case 120: case 120:
enable_endstops(false) ; enable_endstops(true) ;
break; break;
/*! /*!
### M121 - Disable endstops <a href="https://reprap.org/wiki/G-code#M121:_Disable_endstop_detection">M121: Disable endstop detection</a> ### M121 - Disable endstops <a href="https://reprap.org/wiki/G-code#M121:_Disable_endstop_detection">M121: Disable endstop detection</a>
*/ */
case 121: case 121:
enable_endstops(true) ; enable_endstops(false) ;
break; break;
/*! /*!
@ -7258,7 +7256,7 @@ Sigma_Exit:
// Legacy acceleration format. This format is used by the legacy Marlin, MK2 or MK3 firmware, // Legacy acceleration format. This format is used by the legacy Marlin, MK2 or MK3 firmware,
// and it is also generated by Slic3r to control acceleration per extrusion type // and it is also generated by Slic3r to control acceleration per extrusion type
// (there is a separate acceleration settings in Slicer for perimeter, first layer etc). // (there is a separate acceleration settings in Slicer for perimeter, first layer etc).
cs.acceleration = code_value(); cs.acceleration = cs.travel_acceleration = code_value();
// Interpret the T value as retract acceleration in the old Marlin format. // Interpret the T value as retract acceleration in the old Marlin format.
if(code_seen('T')) if(code_seen('T'))
cs.retract_acceleration = code_value(); cs.retract_acceleration = code_value();
@ -7268,13 +7266,8 @@ Sigma_Exit:
cs.acceleration = code_value(); cs.acceleration = code_value();
if(code_seen('R')) if(code_seen('R'))
cs.retract_acceleration = code_value(); cs.retract_acceleration = code_value();
if(code_seen('T')) { if(code_seen('T'))
// Interpret the T value as the travel acceleration in the new Marlin format. cs.travel_acceleration = code_value();
/*!
@todo Prusa3D firmware currently does not support travel acceleration value independent from the extruding acceleration value.
*/
// travel_acceleration = code_value();
}
} }
} }
break; break;
@ -10968,6 +10961,10 @@ void uvlo_()
#endif #endif
eeprom_update_word((uint16_t*)(EEPROM_EXTRUDEMULTIPLY), (uint16_t)extrudemultiply); eeprom_update_word((uint16_t*)(EEPROM_EXTRUDEMULTIPLY), (uint16_t)extrudemultiply);
eeprom_update_float((float*)(EEPROM_UVLO_ACCELL), cs.acceleration);
eeprom_update_float((float*)(EEPROM_UVLO_RETRACT_ACCELL), cs.retract_acceleration);
eeprom_update_float((float*)(EEPROM_UVLO_TRAVEL_ACCELL), cs.travel_acceleration);
// Store the saved target // Store the saved target
eeprom_update_float((float*)(EEPROM_UVLO_SAVED_TARGET+0*4), saved_target[X_AXIS]); eeprom_update_float((float*)(EEPROM_UVLO_SAVED_TARGET+0*4), saved_target[X_AXIS]);
eeprom_update_float((float*)(EEPROM_UVLO_SAVED_TARGET+1*4), saved_target[Y_AXIS]); eeprom_update_float((float*)(EEPROM_UVLO_SAVED_TARGET+1*4), saved_target[Y_AXIS]);
@ -11280,8 +11277,8 @@ void restore_print_from_eeprom(bool mbl_was_active) {
} }
dir_name[8] = '\0'; dir_name[8] = '\0';
MYSERIAL.println(dir_name); MYSERIAL.println(dir_name);
strcpy(dir_names[i], dir_name); // strcpy(card.dir_names[i], dir_name);
card.chdir(dir_name); card.chdir(dir_name, false);
} }
for (int i = 0; i < 8; i++) { for (int i = 0; i < 8; i++) {
@ -11312,6 +11309,13 @@ void restore_print_from_eeprom(bool mbl_was_active) {
sprintf_P(cmd, PSTR("G1 Z%f"), eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION_Z))); sprintf_P(cmd, PSTR("G1 Z%f"), eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION_Z)));
enquecommand(cmd); enquecommand(cmd);
// Restore acceleration settings
float acceleration = eeprom_read_float((float*)(EEPROM_UVLO_ACCELL));
float retract_acceleration = eeprom_read_float((float*)(EEPROM_UVLO_RETRACT_ACCELL));
float travel_acceleration = eeprom_read_float((float*)(EEPROM_UVLO_TRAVEL_ACCELL));
sprintf_P(cmd, PSTR("M204 P%f R%f T%f"), acceleration, retract_acceleration, travel_acceleration);
enquecommand(cmd);
// Unretract. // Unretract.
sprintf_P(cmd, PSTR("G1 E%0.3f F2700"), default_retraction); sprintf_P(cmd, PSTR("G1 E%0.3f F2700"), default_retraction);
enquecommand(cmd); enquecommand(cmd);
@ -11778,7 +11782,7 @@ void M600_wait_for_user(float HotendTempBckp) {
delay_keep_alive(4); delay_keep_alive(4);
if (_millis() > waiting_start_time + (unsigned long)M600_TIMEOUT * 1000) { if (_millis() > waiting_start_time + (unsigned long)M600_TIMEOUT * 1000) {
lcd_display_message_fullscreen_P(_i("Press knob to preheat nozzle and continue."));////MSG_PRESS_TO_PREHEAT c=20 r=4 lcd_display_message_fullscreen_P(_i("Press the knob to preheat nozzle and continue."));////MSG_PRESS_TO_PREHEAT c=20 r=4
wait_for_user_state = 1; wait_for_user_state = 1;
setAllTargetHotends(0); setAllTargetHotends(0);
st_synchronize(); st_synchronize();

View File

@ -27,6 +27,7 @@ CardReader::CardReader()
workDirDepth = 0; workDirDepth = 0;
file_subcall_ctr=0; file_subcall_ctr=0;
memset(workDirParents, 0, sizeof(workDirParents)); memset(workDirParents, 0, sizeof(workDirParents));
presort_flag = false;
autostart_stilltocheck=true; //the SD start is delayed, because otherwise the serial cannot answer fast enough to make contact with the host software. autostart_stilltocheck=true; //the SD start is delayed, because otherwise the serial cannot answer fast enough to make contact with the host software.
lastnr=0; lastnr=0;
@ -64,12 +65,23 @@ char *createFilename(char *buffer,const dir_t &p) //buffer>12characters
+*/ +*/
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*/) {
static uint8_t recursionCnt = 0;
// RAII incrementer for the recursionCnt
class _incrementer
{
public:
_incrementer() {recursionCnt++;}
~_incrementer() {recursionCnt--;}
} recursionCntIncrementer;
dir_t p; dir_t p;
uint8_t cnt = 0; uint8_t cnt = 0;
// Read the next entry from a directory // Read the next entry from a directory
while (parent.readDir(p, longFilename) > 0) { while (parent.readDir(p, longFilename) > 0) {
// If the entry is a directory and the action is LS_SerialPrint if (recursionCnt > MAX_DIR_DEPTH)
if (DIR_IS_SUBDIR(&p) && lsAction != LS_Count && lsAction != LS_GetFilename) { return;
else if (DIR_IS_SUBDIR(&p) && lsAction != LS_Count && lsAction != LS_GetFilename) { // If the entry is a directory and the action is LS_SerialPrint
// Get the short name for the item, which we know is a folder // Get the short name for the item, which we know is a folder
char lfilename[FILENAME_LENGTH]; char lfilename[FILENAME_LENGTH];
createFilename(lfilename, p); createFilename(lfilename, p);
@ -236,18 +248,18 @@ void CardReader::initsd()
} }
void CardReader::setroot() void CardReader::setroot(bool doPresort)
{ {
/*if(!workDir.openRoot(&volume))
{
SERIAL_ECHOLNPGM(MSG_SD_WORKDIR_FAIL);
}*/
workDir=root; workDir=root;
workDirDepth = 0;
curDir=&workDir; curDir=&workDir;
#ifdef SDCARD_SORT_ALPHA #ifdef SDCARD_SORT_ALPHA
if (doPresort)
presort(); presort();
#endif else
presort_flag = true;
#endif
} }
void CardReader::release() void CardReader::release()
{ {
@ -299,6 +311,18 @@ void CardReader::getAbsFilename(char *t)
else else
t[0]=0; t[0]=0;
} }
void CardReader::printAbsFilenameFast()
{
SERIAL_PROTOCOL('/');
for (uint8_t i = 0; i < getWorkDirDepth(); i++)
{
SERIAL_PROTOCOL(dir_names[i]);
SERIAL_PROTOCOL('/');
}
SERIAL_PROTOCOL(LONGEST_FILENAME);
}
/** /**
* @brief Dive into subfolder * @brief Dive into subfolder
* *
@ -312,19 +336,17 @@ void CardReader::getAbsFilename(char *t)
* @param[in,out] fileName * @param[in,out] fileName
* expects file name including path * expects file name including path
* in case of absolute path, file name without path is returned * in case of absolute path, file name without path is returned
* @param[in,out] dir SdFile object to operate with,
* in case of absolute path, curDir is modified to point to dir,
* so it is not possible to create on stack inside this function,
* as curDir would point to destroyed object.
*/ */
void CardReader::diveSubfolder (const char *fileName, SdFile& dir) bool CardReader::diveSubfolder (const char *&fileName)
{ {
curDir=&root; curDir=&root;
if (!fileName) return; if (!fileName)
return 1;
const char *dirname_start, *dirname_end; const char *dirname_start, *dirname_end;
if (fileName[0] == '/') // absolute path if (fileName[0] == '/') // absolute path
{ {
setroot(false);
dirname_start = fileName + 1; dirname_start = fileName + 1;
while (*dirname_start) while (*dirname_start)
{ {
@ -335,23 +357,13 @@ void CardReader::diveSubfolder (const char *fileName, SdFile& dir)
{ {
const size_t maxLen = 12; const size_t maxLen = 12;
char subdirname[maxLen+1]; char subdirname[maxLen+1];
subdirname[maxLen] = 0;
const size_t len = ((static_cast<size_t>(dirname_end-dirname_start))>maxLen) ? maxLen : (dirname_end-dirname_start); const size_t len = ((static_cast<size_t>(dirname_end-dirname_start))>maxLen) ? maxLen : (dirname_end-dirname_start);
strncpy(subdirname, dirname_start, len); strncpy(subdirname, dirname_start, len);
SERIAL_ECHOLN(subdirname); subdirname[len] = 0;
if (!dir.open(curDir, subdirname, O_READ)) if (!chdir(subdirname, false))
{ return 0;
SERIAL_PROTOCOLRPGM(MSG_SD_OPEN_FILE_FAIL);
SERIAL_PROTOCOL(subdirname);
SERIAL_PROTOCOLLN('.');
return;
}
else
{
//SERIAL_ECHOLN("dive ok");
}
curDir = &dir; curDir = &workDir;
dirname_start = dirname_end + 1; dirname_start = dirname_end + 1;
} }
else // the reminder after all /fsa/fdsa/ is the filename else // the reminder after all /fsa/fdsa/ is the filename
@ -368,6 +380,7 @@ void CardReader::diveSubfolder (const char *fileName, SdFile& dir)
{ {
curDir = &workDir; curDir = &workDir;
} }
return 1;
} }
void CardReader::openFile(const char* name,bool read, bool replace_current/*=true*/) void CardReader::openFile(const char* name,bool read, bool replace_current/*=true*/)
@ -418,25 +431,24 @@ void CardReader::openFile(const char* name,bool read, bool replace_current/*=tru
} }
sdprinting = false; sdprinting = false;
SdFile myDir;
const char *fname=name; const char *fname=name;
diveSubfolder(fname,myDir); if (!diveSubfolder(fname))
return;
if(read) if(read)
{ {
if (file.open(curDir, fname, O_READ)) if (file.open(curDir, fname, O_READ))
{ {
getfilename(0, fname);
filesize = file.fileSize(); filesize = file.fileSize();
SERIAL_PROTOCOLRPGM(_N("File opened: "));////MSG_SD_FILE_OPENED SERIAL_PROTOCOLRPGM(_N("File opened: "));////MSG_SD_FILE_OPENED
SERIAL_PROTOCOL(fname); printAbsFilenameFast();
SERIAL_PROTOCOLRPGM(_n(" Size: "));////MSG_SD_SIZE SERIAL_PROTOCOLRPGM(_n(" Size: "));////MSG_SD_SIZE
SERIAL_PROTOCOLLN(filesize); SERIAL_PROTOCOLLN(filesize);
sdpos = 0; sdpos = 0;
SERIAL_PROTOCOLLNRPGM(_N("File selected"));////MSG_SD_FILE_SELECTED SERIAL_PROTOCOLLNRPGM(MSG_FILE_SELECTED);
getfilename(0, fname); lcd_setstatuspgm(MSG_FILE_SELECTED);
lcd_setstatus(longFilename[0] ? longFilename : fname);
lcd_setstatuspgm(PSTR("SD-PRINTING"));
scrollstuff = 0; scrollstuff = 0;
} }
else else
@ -471,9 +483,9 @@ void CardReader::removeFile(const char* name)
file.close(); file.close();
sdprinting = false; sdprinting = false;
SdFile myDir;
const char *fname=name; const char *fname=name;
diveSubfolder(fname,myDir); if (!diveSubfolder(fname))
return;
if (file.remove(curDir, fname)) if (file.remove(curDir, fname))
{ {
@ -511,10 +523,8 @@ void CardReader::getStatus(bool arg_P)
{ {
if (arg_P) if (arg_P)
{ {
SERIAL_PROTOCOL('/'); printAbsFilenameFast();
for (uint8_t i = 0; i < getWorkDirDepth(); i++) SERIAL_PROTOCOLLN();
printf_P(PSTR("%s/"), dir_names[i]);
puts(filename);
} }
else else
SERIAL_PROTOCOLLN(LONGEST_FILENAME); SERIAL_PROTOCOLLN(LONGEST_FILENAME);
@ -666,7 +676,7 @@ uint16_t CardReader::getnrfilenames()
return nrFiles; return nrFiles;
} }
bool CardReader::chdir(const char * relpath) bool CardReader::chdir(const char * relpath, bool doPresort)
{ {
SdFile newfile; SdFile newfile;
SdFile *parent=&root; SdFile *parent=&root;
@ -683,15 +693,22 @@ bool CardReader::chdir(const char * relpath)
} }
else else
{ {
strcpy(dir_names[workDirDepth], relpath);
puts(relpath);
if (workDirDepth < MAX_DIR_DEPTH) { if (workDirDepth < MAX_DIR_DEPTH) {
for (int d = ++workDirDepth; d--;) for (int d = ++workDirDepth; d--;)
workDirParents[d+1] = workDirParents[d]; workDirParents[d+1] = workDirParents[d];
workDirParents[0]=*parent; workDirParents[0]=*parent;
} }
workDir=newfile; workDir=newfile;
#ifdef SDCARD_SORT_ALPHA
#ifdef SDCARD_SORT_ALPHA
if (doPresort)
presort(); presort();
#endif else
presort_flag = true;
#endif
return 1; return 1;
} }
} }

View File

@ -34,14 +34,15 @@ public:
uint16_t getnrfilenames(); uint16_t getnrfilenames();
void getAbsFilename(char *t); void getAbsFilename(char *t);
void printAbsFilenameFast();
void getDirName(char* name, uint8_t level); void getDirName(char* name, uint8_t level);
uint16_t getWorkDirDepth(); uint16_t getWorkDirDepth();
void ls(bool printLFN); void ls(bool printLFN);
bool chdir(const char * relpath); bool chdir(const char * relpath, bool doPresort);
void updir(); void updir();
void setroot(); void setroot(bool doPresort);
#ifdef SDCARD_SORT_ALPHA #ifdef SDCARD_SORT_ALPHA
void presort(); void presort();
@ -77,6 +78,10 @@ public:
char longFilename[LONG_FILENAME_LENGTH]; char longFilename[LONG_FILENAME_LENGTH];
bool filenameIsDir; bool filenameIsDir;
int lastnr; //last number of the autostart; int lastnr; //last number of the autostart;
#ifdef SDCARD_SORT_ALPHA
bool presort_flag;
char dir_names[MAX_DIR_DEPTH][9];
#endif // SDCARD_SORT_ALPHA
private: private:
SdFile root,*curDir,workDir,workDirParents[MAX_DIR_DEPTH]; SdFile root,*curDir,workDir,workDirParents[MAX_DIR_DEPTH];
uint16_t workDirDepth; uint16_t workDirDepth;
@ -114,7 +119,7 @@ private:
int16_t nrFiles; //counter for the files in the current directory and recycled as position counter for getting the nrFiles'th name in the directory. int16_t nrFiles; //counter for the files in the current directory and recycled as position counter for getting the nrFiles'th name in the directory.
char* diveDirName; char* diveDirName;
void diveSubfolder (const char *fileName, SdFile& dir); bool diveSubfolder (const char *&fileName);
void lsDive(const char *prepend, SdFile parent, const char * const match=NULL); void lsDive(const char *prepend, SdFile parent, const char * const match=NULL);
#ifdef SDCARD_SORT_ALPHA #ifdef SDCARD_SORT_ALPHA
void flush_presort(); void flush_presort();

View File

@ -319,7 +319,9 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
| ^ | ^ | ^ | 00h 0 | ^ | PINDA has no temp compensation PINDA v1/2 | ^ | ^ | ^ | ^ | ^ | 00h 0 | ^ | PINDA has no temp compensation PINDA v1/2 | ^ | ^
| ^ | ^ | ^ | 01h 1 | ^ | PINDA has temp compensation aka SuperPINDA | ^ | ^ | ^ | ^ | ^ | 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 | 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
| :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--:
@ -525,8 +527,13 @@ static Sheets * const EEPROM_Sheets_base = (Sheets*)(EEPROM_SHEETS_BASE);
#define EEPROM_EXPERIMENTAL_VISIBILITY (EEPROM_ALTFAN_OVERRIDE-1) //uint8 #define EEPROM_EXPERIMENTAL_VISIBILITY (EEPROM_ALTFAN_OVERRIDE-1) //uint8
#define EEPROM_PINDA_TEMP_COMPENSATION (EEPROM_EXPERIMENTAL_VISIBILITY-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_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_PRUSA_SN #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 !!!!!
// !!!!! // !!!!!

View File

@ -197,3 +197,4 @@ 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"; const char MSG_LCD_STATUS_CHANGED[] PROGMEM_N1 = "LCD status changed";
const char MSG_FILE_SELECTED[] PROGMEM_N1 = "File selected"; ////c=20

View File

@ -197,6 +197,7 @@ 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[]; extern const char MSG_LCD_STATUS_CHANGED[];
extern const char MSG_FILE_SELECTED[];
#if defined(__cplusplus) #if defined(__cplusplus)
} }

View File

@ -1082,7 +1082,8 @@ 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
/** /**

View File

@ -71,11 +71,6 @@ int8_t FSensorStateMenu = 1;
bool bMenuFSDetect=false; bool bMenuFSDetect=false;
#endif //IR_SENSOR_ANALOG #endif //IR_SENSOR_ANALOG
#ifdef SDCARD_SORT_ALPHA
bool presort_flag = false;
#endif
LcdCommands lcd_commands_type = LcdCommands::Idle; LcdCommands lcd_commands_type = LcdCommands::Idle;
static uint8_t lcd_commands_step = 0; static uint8_t lcd_commands_step = 0;
@ -2059,18 +2054,18 @@ uint8_t nLevel;
lcd_set_cursor(0,0); lcd_set_cursor(0,0);
lcdui_print_temp(LCD_STR_THERMOMETER[0],(int)degHotend(0),(int)degTargetHotend(0)); lcdui_print_temp(LCD_STR_THERMOMETER[0],(int)degHotend(0),(int)degTargetHotend(0));
lcd_puts_at_P(0,2, _i("Press the knob")); ////MSG_ c=20 r=1 lcd_puts_at_P(0,1, _i("Press the knob")); ////MSG_ c=20
lcd_set_cursor(0,3); lcd_set_cursor(0,2);
switch(eFilamentAction) switch(eFilamentAction)
{ {
case FilamentAction::Load: case FilamentAction::Load:
case FilamentAction::AutoLoad: case FilamentAction::AutoLoad:
case FilamentAction::MmuLoad: case FilamentAction::MmuLoad:
lcd_puts_P(_i("to load filament")); ////MSG_ c=20 r=1 lcd_puts_P(_i("to load filament")); ////MSG_ c=20
break; break;
case FilamentAction::UnLoad: case FilamentAction::UnLoad:
case FilamentAction::MmuUnLoad: case FilamentAction::MmuUnLoad:
lcd_puts_P(_i("to unload filament")); ////MSG_ c=20 r=1 lcd_puts_P(_i("to unload filament")); ////MSG_ c=20
break; break;
case FilamentAction::MmuEject: case FilamentAction::MmuEject:
case FilamentAction::MmuCut: case FilamentAction::MmuCut:
@ -4141,7 +4136,7 @@ static void lcd_sort_type_set() {
default: sdSort = SD_SORT_TIME; default: sdSort = SD_SORT_TIME;
} }
eeprom_update_byte((unsigned char *)EEPROM_SD_SORT, sdSort); eeprom_update_byte((unsigned char *)EEPROM_SD_SORT, sdSort);
presort_flag = true; card.presort_flag = true;
} }
#endif //SDCARD_SORT_ALPHA #endif //SDCARD_SORT_ALPHA
@ -5108,8 +5103,6 @@ do\
else\ else\
MENU_ITEM_TOGGLE_P(_T(MSG_SD_CARD), _T(MSG_NORMAL), lcd_toshiba_flash_air_compatibility_toggle);\ MENU_ITEM_TOGGLE_P(_T(MSG_SD_CARD), _T(MSG_NORMAL), lcd_toshiba_flash_air_compatibility_toggle);\
\ \
if (!farm_mode)\
{\
uint8_t sdSort;\ uint8_t sdSort;\
EEPROM_read(EEPROM_SD_SORT, (uint8_t*)&sdSort, sizeof(sdSort));\ EEPROM_read(EEPROM_SD_SORT, (uint8_t*)&sdSort, sizeof(sdSort));\
switch (sdSort)\ switch (sdSort)\
@ -5118,7 +5111,6 @@ do\
case SD_SORT_ALPHA: MENU_ITEM_TOGGLE_P(_T(MSG_SORT), _T(MSG_SORT_ALPHA), lcd_sort_type_set); break;\ case SD_SORT_ALPHA: MENU_ITEM_TOGGLE_P(_T(MSG_SORT), _T(MSG_SORT_ALPHA), lcd_sort_type_set); break;\
default: MENU_ITEM_TOGGLE_P(_T(MSG_SORT), _T(MSG_NONE), lcd_sort_type_set);\ default: MENU_ITEM_TOGGLE_P(_T(MSG_SORT), _T(MSG_NONE), lcd_sort_type_set);\
}\ }\
}\
}\ }\
while (0) while (0)
#else // SDCARD_SORT_ALPHA #else // SDCARD_SORT_ALPHA
@ -7026,9 +7018,9 @@ void lcd_sdcard_menu()
{ {
case _uninitialized: //Initialize menu data case _uninitialized: //Initialize menu data
{ {
if (presort_flag == true) //used to force resorting if sorting type is changed. if (card.presort_flag == true) //used to force resorting if sorting type is changed.
{ {
presort_flag = false; card.presort_flag = false;
card.presort(); card.presort();
} }
_md->fileCnt = card.getnrfilenames(); _md->fileCnt = card.getnrfilenames();
@ -8472,7 +8464,7 @@ static void menu_action_sdfile(const char* filename)
for (uint_least8_t i = 0; i < depth; i++) { for (uint_least8_t i = 0; i < depth; i++) {
for (uint_least8_t j = 0; j < 8; j++) { for (uint_least8_t j = 0; j < 8; j++) {
eeprom_write_byte((uint8_t*)EEPROM_DIRS + j + 8 * i, dir_names[i][j]); eeprom_write_byte((uint8_t*)EEPROM_DIRS + j + 8 * i, card.dir_names[i][j]);
} }
} }
@ -8490,14 +8482,7 @@ static void menu_action_sdfile(const char* filename)
void menu_action_sddirectory(const char* filename) void menu_action_sddirectory(const char* filename)
{ {
bool success = card.chdir(filename); card.chdir(filename, true);
if (success)
{
strcpy(dir_names[card.getWorkDirDepth()], filename);
MYSERIAL.println(filename);
}
lcd_encoder = 0; lcd_encoder = 0;
menu_data_reset(); //Forces reloading of cached variables. menu_data_reset(); //Forces reloading of cached variables.
} }

View File

@ -92,6 +92,7 @@ AXIS SETTINGS
#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)

View File

@ -92,6 +92,7 @@ AXIS SETTINGS
#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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -620,7 +620,7 @@
"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 #MSG_FS_PAUSE c=5
"Pause" "Pause"
@ -643,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
@ -874,10 +874,10 @@
#MSG_TOTAL_FAILURES c=20 #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

View File

@ -827,7 +827,7 @@
"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 #MSG_FS_PAUSE c=5
@ -858,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"
@ -1166,11 +1166,11 @@
"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"

View File

@ -827,7 +827,7 @@
"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 #MSG_FS_PAUSE c=5
@ -858,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"
@ -1166,11 +1166,11 @@
"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"

View File

@ -827,7 +827,7 @@
"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 #MSG_FS_PAUSE c=5
@ -858,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"
@ -1166,13 +1166,13 @@
"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"

View File

@ -827,7 +827,7 @@
"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 #MSG_FS_PAUSE c=5
@ -858,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"
@ -1166,11 +1166,11 @@
"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."

View File

@ -827,7 +827,7 @@
"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 #MSG_FS_PAUSE c=5
@ -858,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"
@ -1166,13 +1166,13 @@
"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"

View File

@ -827,7 +827,7 @@
"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 #MSG_FS_PAUSE c=5
@ -858,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"
@ -1166,11 +1166,11 @@
"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"