Merge branch 'MK3' into MK3-new_lang

This commit is contained in:
XPila 2018-07-17 11:47:01 +02:00 committed by GitHub
commit 7bec5c6d5c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 55 additions and 27 deletions

View file

@ -7,8 +7,8 @@
#define STR(x) STR_HELPER(x) #define STR(x) STR_HELPER(x)
// Firmware version // Firmware version
#define FW_VERSION "3.3.0" #define FW_VERSION "3.3.1"
#define FW_COMMIT_NR 830 #define FW_COMMIT_NR 845
// 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

View file

@ -455,7 +455,9 @@ void force_high_power_mode(bool start_high_power_section);
#endif //TMC2130 #endif //TMC2130
// G-codes // G-codes
void gcode_G28(bool home_x, bool home_y, bool home_z, bool calib); void gcode_G28(bool home_x_axis, long home_x_value, bool home_y_axis, long home_y_value, bool home_z_axis, long home_z_value, bool calib, bool without_mbl);
void gcode_G28(bool home_x_axis, bool home_y_axis, bool home_z_axis);
bool gcode_M45(bool onlyZ, int8_t verbosity_level); bool gcode_M45(bool onlyZ, int8_t verbosity_level);
void gcode_M114(); void gcode_M114();
void gcode_M701(); void gcode_M701();

View file

@ -735,7 +735,7 @@ void crashdet_detected(uint8_t mask)
lcd_update_enable(true); lcd_update_enable(true);
lcd_update(2); lcd_update(2);
lcd_setstatuspgm(_T(MSG_CRASH_DETECTED)); lcd_setstatuspgm(_T(MSG_CRASH_DETECTED));
gcode_G28(true, true, false, false); //home X and Y gcode_G28(true, true, false); //home X and Y
st_synchronize(); st_synchronize();
if (automatic_recovery_after_crash) { if (automatic_recovery_after_crash) {
@ -2609,7 +2609,11 @@ void force_high_power_mode(bool start_high_power_section) {
} }
#endif //TMC2130 #endif //TMC2130
void gcode_G28(bool home_x, bool home_y, bool home_z, bool calib) { void gcode_G28(bool home_x_axis, bool home_y_axis, bool home_z_axis) {
gcode_G28(home_x_axis, 0, home_y_axis, 0, home_z_axis, 0, false, true);
}
void gcode_G28(bool home_x_axis, long home_x_value, bool home_y_axis, long home_y_value, bool home_z_axis, long home_z_value, bool calib, bool without_mbl) {
st_synchronize(); st_synchronize();
#if 0 #if 0
@ -2620,6 +2624,11 @@ void gcode_G28(bool home_x, bool home_y, bool home_z, bool calib) {
// Flag for the display update routine and to disable the print cancelation during homing. // Flag for the display update routine and to disable the print cancelation during homing.
homing_flag = true; homing_flag = true;
// Which axes should be homed?
bool home_x = home_x_axis;
bool home_y = home_y_axis;
bool home_z = home_z_axis;
// Either all X,Y,Z codes are present, or none of them. // Either all X,Y,Z codes are present, or none of them.
bool home_all_axes = home_x == home_y && home_x == home_z; bool home_all_axes = home_x == home_y && home_x == home_z;
if (home_all_axes) if (home_all_axes)
@ -2728,11 +2737,11 @@ void gcode_G28(bool home_x, bool home_y, bool home_z, bool calib) {
#endif //TMC2130 #endif //TMC2130
if(code_seen(axis_codes[X_AXIS]) && code_value_long() != 0) if(home_x_axis && home_x_value != 0)
current_position[X_AXIS]=code_value()+add_homing[X_AXIS]; current_position[X_AXIS]=home_x_value+add_homing[X_AXIS];
if(code_seen(axis_codes[Y_AXIS]) && code_value_long() != 0) if(home_y_axis && home_y_value != 0)
current_position[Y_AXIS]=code_value()+add_homing[Y_AXIS]; current_position[Y_AXIS]=home_y_value+add_homing[Y_AXIS];
#if Z_HOME_DIR < 0 // If homing towards BED do Z last #if Z_HOME_DIR < 0 // If homing towards BED do Z last
#ifndef Z_SAFE_HOMING #ifndef Z_SAFE_HOMING
@ -2827,8 +2836,8 @@ void gcode_G28(bool home_x, bool home_y, bool home_z, bool calib) {
#endif // Z_SAFE_HOMING #endif // Z_SAFE_HOMING
#endif // Z_HOME_DIR < 0 #endif // Z_HOME_DIR < 0
if(code_seen(axis_codes[Z_AXIS]) && code_value_long() != 0) if(home_z_axis && home_z_value != 0)
current_position[Z_AXIS]=code_value()+add_homing[Z_AXIS]; current_position[Z_AXIS]=home_z_value+add_homing[Z_AXIS];
#ifdef ENABLE_AUTO_BED_LEVELING #ifdef ENABLE_AUTO_BED_LEVELING
if(home_z) if(home_z)
current_position[Z_AXIS] += zprobe_zoffset; //Add Z_Probe offset (the distance is negative) current_position[Z_AXIS] += zprobe_zoffset; //Add Z_Probe offset (the distance is negative)
@ -2860,7 +2869,7 @@ void gcode_G28(bool home_x, bool home_y, bool home_z, bool calib) {
world2machine_update_current(); world2machine_update_current();
#if (defined(MESH_BED_LEVELING) && !defined(MK1BP)) #if (defined(MESH_BED_LEVELING) && !defined(MK1BP))
if (code_seen(axis_codes[X_AXIS]) || code_seen(axis_codes[Y_AXIS]) || code_seen('W') || code_seen(axis_codes[Z_AXIS])) if (home_x_axis || home_y_axis || without_mbl || home_z_axis)
{ {
if (! home_z && mbl_was_active) { if (! home_z && mbl_was_active) {
// Re-enable the mesh bed leveling if only the X and Y axes were re-homed. // Re-enable the mesh bed leveling if only the X and Y axes were re-homed.
@ -2873,10 +2882,6 @@ void gcode_G28(bool home_x, bool home_y, bool home_z, bool calib) {
{ {
st_synchronize(); st_synchronize();
homing_flag = false; homing_flag = false;
// Push the commands to the front of the message queue in the reverse order!
// There shall be always enough space reserved for these commands.
enquecommand_front_P((PSTR("G80")));
//goto case_G80;
} }
#endif #endif
@ -3110,10 +3115,17 @@ void gcode_M701()
custom_message = true; custom_message = true;
custom_message_type = 2; custom_message_type = 2;
lcd_setstatuspgm(_T(MSG_LOADING_FILAMENT));
current_position[E_AXIS] += 70;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400 / 60, active_extruder); //fast sequence
lcd_setstatuspgm(_T(MSG_LOADING_FILAMENT));
current_position[E_AXIS] += 40;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400 / 60, active_extruder); //fast sequence
st_synchronize();
if (current_position[Z_AXIS] < 20) current_position[Z_AXIS] += 30;
current_position[E_AXIS] += 30;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400 / 60, active_extruder); //fast sequence
st_synchronize();
current_position[E_AXIS] += 25; current_position[E_AXIS] += 25;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 100 / 60, active_extruder); //slow sequence plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 100 / 60, active_extruder); //slow sequence
st_synchronize(); st_synchronize();
@ -3356,6 +3368,8 @@ void process_commands()
// careful! // careful!
if (farm_mode) { if (farm_mode) {
#ifdef WATCHDOG #ifdef WATCHDOG
boot_app_magic = BOOT_APP_MAGIC;
boot_app_flags = BOOT_APP_FLG_RUN;
wdt_enable(WDTO_15MS); wdt_enable(WDTO_15MS);
cli(); cli();
while(1); while(1);
@ -3663,16 +3677,26 @@ void process_commands()
#endif //FWRETRACT #endif //FWRETRACT
case 28: //G28 Home all Axis one at a time case 28: //G28 Home all Axis one at a time
{ {
long home_x_value = 0;
long home_y_value = 0;
long home_z_value = 0;
// Which axes should be homed? // Which axes should be homed?
bool home_x = code_seen(axis_codes[X_AXIS]); bool home_x = code_seen(axis_codes[X_AXIS]);
home_x_value = code_value_long();
bool home_y = code_seen(axis_codes[Y_AXIS]); bool home_y = code_seen(axis_codes[Y_AXIS]);
home_y_value = code_value_long();
bool home_z = code_seen(axis_codes[Z_AXIS]); bool home_z = code_seen(axis_codes[Z_AXIS]);
home_z_value = code_value_long();
bool without_mbl = code_seen('W');
// calibrate? // calibrate?
bool calib = code_seen('C'); bool calib = code_seen('C');
gcode_G28(home_x, home_x_value, home_y, home_y_value, home_z, home_z_value, calib, without_mbl);
gcode_G28(home_x, home_y, home_z, calib); if ((home_x || home_y || without_mbl || home_z) == false) {
// Push the commands to the front of the message queue in the reverse order!
break; // There shall be always enough space reserved for these commands.
goto case_G80;
}
break;
} }
#ifdef ENABLE_AUTO_BED_LEVELING #ifdef ENABLE_AUTO_BED_LEVELING
case 29: // G29 Detailed Z-Probe, probes the bed at 3 or more points. case 29: // G29 Detailed Z-Probe, probes the bed at 3 or more points.
@ -3912,7 +3936,7 @@ void process_commands()
current_position[X_AXIS] = pgm_read_float(bed_ref_points_4); current_position[X_AXIS] = pgm_read_float(bed_ref_points_4);
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder); plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
st_synchronize(); st_synchronize();
gcode_G28(false, false, true, false); gcode_G28(false, false, true);
} }
if ((current_temperature_pinda > 35) && (farm_mode == false)) { if ((current_temperature_pinda > 35) && (farm_mode == false)) {

View file

@ -17,6 +17,7 @@
#define BOOT_APP_FLG_ERASE 0x01 #define BOOT_APP_FLG_ERASE 0x01
#define BOOT_APP_FLG_COPY 0x02 #define BOOT_APP_FLG_COPY 0x02
#define BOOT_APP_FLG_FLASH 0x04 #define BOOT_APP_FLG_FLASH 0x04
#define BOOT_APP_FLG_RUN 0x08
#define BOOT_APP_FLG_USER0 0x80 #define BOOT_APP_FLG_USER0 0x80

View file

@ -476,6 +476,7 @@ void get_command()
SERIAL_ERROR_START; SERIAL_ERROR_START;
SERIAL_ERRORRPGM(_n("No Line Number with checksum, Last Line: "));////MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM c=0 r=0 SERIAL_ERRORRPGM(_n("No Line Number with checksum, Last Line: "));////MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM c=0 r=0
SERIAL_ERRORLN(gcode_LastN); SERIAL_ERRORLN(gcode_LastN);
FlushSerialRequestResend();
serial_count = 0; serial_count = 0;
return; return;
} }

View file

@ -2543,7 +2543,7 @@ void lcd_menu_statistics()
{ {
if (IS_SD_PRINTING) if (IS_SD_PRINTING)
{ {
int _met = total_filament_used / 100000; float _met = ((float)total_filament_used) / (100000.f);
int _cm = (total_filament_used - (_met * 100000)) / 10; int _cm = (total_filament_used - (_met * 100000)) / 10;
int _t = (millis() - starttime) / 1000; int _t = (millis() - starttime) / 1000;
int _h = _t / 3600; int _h = _t / 3600;
@ -2558,12 +2558,12 @@ void lcd_menu_statistics()
lcd_printf_P(_N( lcd_printf_P(_N(
ESC_2J ESC_2J
"%S:" "%S:"
ESC_H(6,1) "%8.2f m\n" ESC_H(6,1) "%8.2fm \n"
"%S :" "%S :"
ESC_H(8,3) "%2dh %02dm %02d" ESC_H(8,3) "%2dh %02dm %02d"
), ),
_i("Filament used"), _i("Filament used"),
_met, _cm, _met,
_i("Print time"), _i("Print time"),
_h, _m, _s _h, _m, _s
); );