Merge commit '66dc65ecd4e2b76273da54c64f9263dd08741dab' into MK3-private_build
Merge Prusa MK3 firmware 3.1.3 with Hyperfine Bed Leveling and P.I.N.D.A.v2 fix by TheZeroBeast
This commit is contained in:
commit
fe862cb37b
|
|
@ -7,11 +7,11 @@
|
|||
#define STR(x) STR_HELPER(x)
|
||||
|
||||
// Firmware version
|
||||
#define FW_VERSION "3.1.2"
|
||||
#define FW_COMMIT_NR 231
|
||||
#define FW_VERSION "3.1.3"
|
||||
#define FW_COMMIT_NR 245
|
||||
// FW_VERSION_UNKNOWN means this is an unofficial build.
|
||||
// The firmware should only be checked into github with this symbol.
|
||||
#define FW_DEV_VERSION FW_VERSION_UNKNOWN
|
||||
#define FW_DEV_VERSION FW_VERSION_GOLD
|
||||
#define FW_REPOSITORY "Prusa3D/MK3"
|
||||
#define FW_VERSION_FULL FW_VERSION "-" STR(FW_COMMIT_NR)
|
||||
|
||||
|
|
@ -123,12 +123,6 @@
|
|||
|
||||
#define EEPROM_FSENS_AUTOLOAD_ENABLED (EEPROM_SECOND_SERIAL_ACTIVE - 1)
|
||||
|
||||
// Hyperfine Bed Tuning
|
||||
#define EEPROM_BED_CORRECTION_FRONT_LEFT (EEPROM_FSENS_AUTOLOAD_ENABLED - 1)
|
||||
#define EEPROM_BED_CORRECTION_FRONT_RIGHT (EEPROM_BED_CORRECTION_FRONT_LEFT - 1)
|
||||
#define EEPROM_BED_CORRECTION_REAR_RIGHT (EEPROM_BED_CORRECTION_FRONT_RIGHT - 1)
|
||||
#define EEPROM_BED_CORRECTION_REAR_LEFT (EEPROM_BED_CORRECTION_REAR_RIGHT - 1)
|
||||
// End Hyperfine Bed Tuning
|
||||
// Crash detection counter X (total)
|
||||
#define EEPROM_CRASH_COUNT_X_TOT (EEPROM_FSENS_AUTOLOAD_ENABLED - 2) // uint16
|
||||
// Crash detection counter Y (total)
|
||||
|
|
@ -138,6 +132,13 @@
|
|||
// Power loss errors (total)
|
||||
#define EEPROM_POWER_COUNT_TOT (EEPROM_FERROR_COUNT_TOT - 2) // uint16
|
||||
|
||||
// Hyperfine Bed Tuning
|
||||
#define EEPROM_BED_CORRECTION_FRONT_LEFT (EEPROM_POWER_COUNT_TOT - 1)
|
||||
#define EEPROM_BED_CORRECTION_FRONT_RIGHT (EEPROM_BED_CORRECTION_FRONT_LEFT - 1)
|
||||
#define EEPROM_BED_CORRECTION_REAR_RIGHT (EEPROM_BED_CORRECTION_FRONT_RIGHT - 1)
|
||||
#define EEPROM_BED_CORRECTION_REAR_LEFT (EEPROM_BED_CORRECTION_REAR_RIGHT - 1)
|
||||
// End Hyperfine Bed Tuning
|
||||
|
||||
|
||||
////////////////////////////////////////
|
||||
// TMC2130 Accurate sensorless homing
|
||||
|
|
|
|||
|
|
@ -378,8 +378,8 @@ bool Config_RetrieveSettings(uint16_t offset, uint8_t level)
|
|||
EEPROM_READ_VAR(i, extruder_advance_k);
|
||||
EEPROM_READ_VAR(i, advance_ed_ratio);
|
||||
}
|
||||
calculate_volumetric_multipliers();
|
||||
#endif //LIN_ADVANCE
|
||||
calculate_extruder_multipliers();
|
||||
|
||||
// Call updatePID (similar to when we have processed M301)
|
||||
updatePID();
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
|
||||
// Electronics
|
||||
#define MOTHERBOARD BOARD_EINSY_0_4a
|
||||
#define HAS_SECOND_SERIAL_PORT
|
||||
|
||||
|
||||
// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier)
|
||||
|
|
|
|||
|
|
@ -3267,10 +3267,8 @@ void process_commands()
|
|||
#ifdef PINDA_THERMISTOR
|
||||
if (true)
|
||||
{
|
||||
lcd_show_fullscreen_message_and_wait_P(MSG_TEMP_CAL_WARNING);
|
||||
bool result = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_STEEL_SHEET_CHECK, false, false);
|
||||
if(result) lcd_show_fullscreen_message_and_wait_P(MSG_REMOVE_STEEL_SHEET);
|
||||
if (!(axis_known_position[X_AXIS] && axis_known_position[Y_AXIS] && axis_known_position[Z_AXIS])) {
|
||||
if (!(axis_known_position[X_AXIS] && axis_known_position[Y_AXIS] && axis_known_position[Z_AXIS]))
|
||||
{
|
||||
// We don't know where we are! HOME!
|
||||
// Push the commands to the front of the message queue in the reverse order!
|
||||
// There shall be always enough space reserved for these commands.
|
||||
|
|
@ -3278,6 +3276,17 @@ void process_commands()
|
|||
enquecommand_front_P((PSTR("G28 W0")));
|
||||
break;
|
||||
}
|
||||
lcd_show_fullscreen_message_and_wait_P(MSG_TEMP_CAL_WARNING);
|
||||
bool result = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_STEEL_SHEET_CHECK, false, false);
|
||||
if (result)
|
||||
{
|
||||
current_position[Z_AXIS] = 50;
|
||||
current_position[Y_AXIS] = 190;
|
||||
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();
|
||||
lcd_show_fullscreen_message_and_wait_P(MSG_REMOVE_STEEL_SHEET);
|
||||
}
|
||||
lcd_update_enable(true);
|
||||
KEEPALIVE_STATE(NOT_BUSY); //no need to print busy messages as we print current temperatures periodicaly
|
||||
SERIAL_ECHOLNPGM("PINDA probe calibration start");
|
||||
|
||||
|
|
@ -7119,11 +7128,14 @@ void save_statistics(unsigned long _total_filament_used, unsigned long _total_pr
|
|||
}
|
||||
|
||||
float calculate_extruder_multiplier(float diameter) {
|
||||
bool enabled = volumetric_enabled && diameter > 0;
|
||||
float area = enabled ? (M_PI * pow(diameter * .5, 2)) : 0;
|
||||
return (extrudemultiply == 100) ?
|
||||
(enabled ? (1.f / area) : 1.f) :
|
||||
(enabled ? ((float(extrudemultiply) * 0.01f) / area) : 1.f);
|
||||
float out = 1.f;
|
||||
if (volumetric_enabled && diameter > 0.f) {
|
||||
float area = M_PI * diameter * diameter * 0.25;
|
||||
out = 1.f / area;
|
||||
}
|
||||
if (extrudemultiply != 100)
|
||||
out *= float(extrudemultiply) * 0.01f;
|
||||
return out;
|
||||
}
|
||||
|
||||
void calculate_extruder_multipliers() {
|
||||
|
|
@ -7636,8 +7648,8 @@ void serialecho_temperatures() {
|
|||
float tt = degHotend(active_extruder);
|
||||
SERIAL_PROTOCOLPGM("T:");
|
||||
SERIAL_PROTOCOL(tt);
|
||||
SERIAL_PROTOCOLPGM(" P:");
|
||||
SERIAL_PROTOCOL(current_temperature_pinda);
|
||||
SERIAL_PROTOCOLPGM(" E:");
|
||||
SERIAL_PROTOCOL((int)active_extruder);
|
||||
SERIAL_PROTOCOLPGM(" B:");
|
||||
SERIAL_PROTOCOL_F(degBed(), 1);
|
||||
SERIAL_PROTOCOLLN("");
|
||||
|
|
|
|||
|
|
@ -99,7 +99,19 @@ union MenuData
|
|||
int mid_left2;
|
||||
} adjustBed;
|
||||
// End Hyperfine bed Tuning
|
||||
|
||||
|
||||
struct TuneMenu
|
||||
{
|
||||
// editMenuParentState is used when an edit menu is entered, so it knows
|
||||
// the return menu and encoder state.
|
||||
struct EditMenuParentState editMenuParentState;
|
||||
// To recognize, whether the menu has been just initialized.
|
||||
int8_t status;
|
||||
// Backup of extrudemultiply, to recognize, that the value has been changed and
|
||||
// it needs to be applied.
|
||||
int16_t extrudemultiply;
|
||||
} tuneMenu;
|
||||
|
||||
// editMenuParentState is used when an edit menu is entered, so it knows
|
||||
// the return menu and encoder state.
|
||||
struct EditMenuParentState editMenuParentState;
|
||||
|
|
@ -3957,12 +3969,14 @@ static void lcd_settings_menu()
|
|||
else {
|
||||
MENU_ITEM(function, MSG_TEMP_CALIBRATION_ON, lcd_temp_calibration_set);
|
||||
}
|
||||
#ifdef HAS_SECOND_SERIAL_PORT
|
||||
if (selectedSerialPort == 0) {
|
||||
MENU_ITEM(function, MSG_SECOND_SERIAL_OFF, lcd_second_serial_set);
|
||||
}
|
||||
else {
|
||||
MENU_ITEM(function, MSG_SECOND_SERIAL_ON, lcd_second_serial_set);
|
||||
}
|
||||
#endif //HAS_SECOND_SERIAL
|
||||
|
||||
if (!isPrintPaused && !homing_flag)
|
||||
{
|
||||
|
|
@ -5492,6 +5506,16 @@ static void lcd_colorprint_change() {
|
|||
|
||||
static void lcd_tune_menu()
|
||||
{
|
||||
if (menuData.tuneMenu.status == 0) {
|
||||
// Menu was entered. Mark the menu as entered and save the current extrudemultiply value.
|
||||
menuData.tuneMenu.status = 1;
|
||||
menuData.tuneMenu.extrudemultiply = extrudemultiply;
|
||||
} else if (menuData.tuneMenu.extrudemultiply != extrudemultiply) {
|
||||
// extrudemultiply has been changed from the child menu. Apply the new value.
|
||||
menuData.tuneMenu.extrudemultiply = extrudemultiply;
|
||||
calculate_extruder_multipliers();
|
||||
}
|
||||
|
||||
EEPROM_read(EEPROM_SILENT, (uint8_t*)&SilentModeMenu, sizeof(SilentModeMenu));
|
||||
|
||||
|
||||
|
|
@ -6082,14 +6106,12 @@ static bool lcd_selfcheck_axis_sg(char axis) {
|
|||
}
|
||||
|
||||
// first axis length measurement begin
|
||||
|
||||
tmc2130_home_enter(X_AXIS_MASK << axis);
|
||||
|
||||
current_position[axis] -= (axis_length + margin);
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
|
||||
|
||||
|
||||
st_synchronize();
|
||||
tmc2130_home_exit();
|
||||
|
||||
tmc2130_sg_meassure_start(axis);
|
||||
|
||||
|
|
@ -6102,9 +6124,7 @@ static bool lcd_selfcheck_axis_sg(char axis) {
|
|||
current_position[axis] += axis_length;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
|
||||
|
||||
tmc2130_home_enter(X_AXIS_MASK << axis);
|
||||
st_synchronize();
|
||||
tmc2130_home_exit();
|
||||
|
||||
uint16_t sg1 = tmc2130_sg_meassure_stop();
|
||||
printf_P(PSTR("%c AXIS SG1=%d\n"), 'X'+axis, sg1);
|
||||
|
|
@ -6121,12 +6141,10 @@ static bool lcd_selfcheck_axis_sg(char axis) {
|
|||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
|
||||
st_synchronize();
|
||||
|
||||
tmc2130_home_enter(X_AXIS_MASK << axis);
|
||||
current_position[axis] -= (axis_length + margin);
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
|
||||
|
||||
st_synchronize();
|
||||
tmc2130_home_exit();
|
||||
|
||||
current_position_init = st_get_position_mm(axis);
|
||||
|
||||
|
|
@ -6134,7 +6152,7 @@ static bool lcd_selfcheck_axis_sg(char axis) {
|
|||
|
||||
|
||||
//end of second measurement, now check for possible errors:
|
||||
|
||||
|
||||
for(int i = 0; i < 2; i++){ //check if measured axis length corresponds to expected length
|
||||
SERIAL_ECHOPGM("Measured axis length:");
|
||||
MYSERIAL.println(measured_axis_length[i]);
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
|
||||
// Electronics
|
||||
#define MOTHERBOARD BOARD_EINY_0_3a
|
||||
#define HAS_SECOND_SERIAL_PORT
|
||||
|
||||
|
||||
// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier)
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
|
||||
// Electronics
|
||||
#define MOTHERBOARD BOARD_EINY_0_4a
|
||||
#define HAS_SECOND_SERIAL_PORT
|
||||
|
||||
|
||||
// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier)
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
|
||||
// Electronics
|
||||
#define MOTHERBOARD BOARD_EINY_0_4a
|
||||
#define HAS_SECOND_SERIAL_PORT
|
||||
|
||||
|
||||
// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier)
|
||||
|
|
|
|||
Loading…
Reference in New Issue