mirror of
https://github.com/MarlinFirmware/Marlin.git
synced 2024-11-27 13:56:24 +00:00
Get upstream commits
This commit is contained in:
commit
4fbb80567e
@ -413,12 +413,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
|||||||
|
|
||||||
#ifdef AUTO_BED_LEVELING_GRID
|
#ifdef AUTO_BED_LEVELING_GRID
|
||||||
|
|
||||||
// Use one of these defines to specify the origin
|
|
||||||
// for a topographical map to be printed for your bed.
|
|
||||||
enum { OriginBackLeft, OriginFrontLeft, OriginBackRight, OriginFrontRight };
|
|
||||||
#define TOPO_ORIGIN OriginFrontLeft
|
|
||||||
|
|
||||||
// The edges of the rectangle in which to probe
|
|
||||||
#define LEFT_PROBE_BED_POSITION 15
|
#define LEFT_PROBE_BED_POSITION 15
|
||||||
#define RIGHT_PROBE_BED_POSITION 170
|
#define RIGHT_PROBE_BED_POSITION 170
|
||||||
#define FRONT_PROBE_BED_POSITION 20
|
#define FRONT_PROBE_BED_POSITION 20
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
* max_xy_jerk
|
* max_xy_jerk
|
||||||
* max_z_jerk
|
* max_z_jerk
|
||||||
* max_e_jerk
|
* max_e_jerk
|
||||||
* add_homing (x3)
|
* home_offset (x3)
|
||||||
*
|
*
|
||||||
* Mesh bed leveling:
|
* Mesh bed leveling:
|
||||||
* active
|
* active
|
||||||
@ -136,7 +136,7 @@ void Config_StoreSettings() {
|
|||||||
EEPROM_WRITE_VAR(i, max_xy_jerk);
|
EEPROM_WRITE_VAR(i, max_xy_jerk);
|
||||||
EEPROM_WRITE_VAR(i, max_z_jerk);
|
EEPROM_WRITE_VAR(i, max_z_jerk);
|
||||||
EEPROM_WRITE_VAR(i, max_e_jerk);
|
EEPROM_WRITE_VAR(i, max_e_jerk);
|
||||||
EEPROM_WRITE_VAR(i, add_homing);
|
EEPROM_WRITE_VAR(i, home_offset);
|
||||||
|
|
||||||
uint8_t mesh_num_x = 3;
|
uint8_t mesh_num_x = 3;
|
||||||
uint8_t mesh_num_y = 3;
|
uint8_t mesh_num_y = 3;
|
||||||
@ -294,7 +294,7 @@ void Config_RetrieveSettings() {
|
|||||||
EEPROM_READ_VAR(i, max_xy_jerk);
|
EEPROM_READ_VAR(i, max_xy_jerk);
|
||||||
EEPROM_READ_VAR(i, max_z_jerk);
|
EEPROM_READ_VAR(i, max_z_jerk);
|
||||||
EEPROM_READ_VAR(i, max_e_jerk);
|
EEPROM_READ_VAR(i, max_e_jerk);
|
||||||
EEPROM_READ_VAR(i, add_homing);
|
EEPROM_READ_VAR(i, home_offset);
|
||||||
|
|
||||||
uint8_t mesh_num_x = 0;
|
uint8_t mesh_num_x = 0;
|
||||||
uint8_t mesh_num_y = 0;
|
uint8_t mesh_num_y = 0;
|
||||||
@ -447,7 +447,7 @@ void Config_ResetDefault() {
|
|||||||
max_xy_jerk = DEFAULT_XYJERK;
|
max_xy_jerk = DEFAULT_XYJERK;
|
||||||
max_z_jerk = DEFAULT_ZJERK;
|
max_z_jerk = DEFAULT_ZJERK;
|
||||||
max_e_jerk = DEFAULT_EJERK;
|
max_e_jerk = DEFAULT_EJERK;
|
||||||
add_homing[X_AXIS] = add_homing[Y_AXIS] = add_homing[Z_AXIS] = 0;
|
home_offset[X_AXIS] = home_offset[Y_AXIS] = home_offset[Z_AXIS] = 0;
|
||||||
|
|
||||||
#if defined(MESH_BED_LEVELING)
|
#if defined(MESH_BED_LEVELING)
|
||||||
mbl.active = 0;
|
mbl.active = 0;
|
||||||
@ -607,9 +607,9 @@ void Config_PrintSettings(bool forReplay) {
|
|||||||
SERIAL_ECHOLNPGM("Home offset (mm):");
|
SERIAL_ECHOLNPGM("Home offset (mm):");
|
||||||
SERIAL_ECHO_START;
|
SERIAL_ECHO_START;
|
||||||
}
|
}
|
||||||
SERIAL_ECHOPAIR(" M206 X", add_homing[X_AXIS] );
|
SERIAL_ECHOPAIR(" M206 X", home_offset[X_AXIS] );
|
||||||
SERIAL_ECHOPAIR(" Y", add_homing[Y_AXIS] );
|
SERIAL_ECHOPAIR(" Y", home_offset[Y_AXIS] );
|
||||||
SERIAL_ECHOPAIR(" Z", add_homing[Z_AXIS] );
|
SERIAL_ECHOPAIR(" Z", home_offset[Z_AXIS] );
|
||||||
SERIAL_EOL;
|
SERIAL_EOL;
|
||||||
|
|
||||||
#ifdef DELTA
|
#ifdef DELTA
|
||||||
|
@ -235,7 +235,7 @@ extern int extruder_multiply[EXTRUDERS]; // sets extrude multiply factor (in per
|
|||||||
extern float filament_size[EXTRUDERS]; // cross-sectional area of filament (in millimeters), typically around 1.75 or 2.85, 0 disables the volumetric calculations for the extruder.
|
extern float filament_size[EXTRUDERS]; // cross-sectional area of filament (in millimeters), typically around 1.75 or 2.85, 0 disables the volumetric calculations for the extruder.
|
||||||
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 volumetric_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 add_homing[3];
|
extern float home_offset[3];
|
||||||
#ifdef DELTA
|
#ifdef DELTA
|
||||||
extern float endstop_adj[3];
|
extern float endstop_adj[3];
|
||||||
extern float delta_radius;
|
extern float delta_radius;
|
||||||
|
@ -245,7 +245,7 @@ float volumetric_multiplier[EXTRUDERS] = {1.0
|
|||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
float current_position[NUM_AXIS] = { 0.0, 0.0, 0.0, 0.0 };
|
float current_position[NUM_AXIS] = { 0.0, 0.0, 0.0, 0.0 };
|
||||||
float add_homing[3] = { 0, 0, 0 };
|
float home_offset[3] = { 0, 0, 0 };
|
||||||
#ifdef DELTA
|
#ifdef DELTA
|
||||||
float endstop_adj[3] = { 0, 0, 0 };
|
float endstop_adj[3] = { 0, 0, 0 };
|
||||||
#endif
|
#endif
|
||||||
@ -1006,9 +1006,9 @@ static void axis_is_at_home(int axis) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (dual_x_carriage_mode == DXC_DUPLICATION_MODE && active_extruder == 0) {
|
else if (dual_x_carriage_mode == DXC_DUPLICATION_MODE && active_extruder == 0) {
|
||||||
current_position[X_AXIS] = base_home_pos(X_AXIS) + add_homing[X_AXIS];
|
current_position[X_AXIS] = base_home_pos(X_AXIS) + home_offset[X_AXIS];
|
||||||
min_pos[X_AXIS] = base_min_pos(X_AXIS) + add_homing[X_AXIS];
|
min_pos[X_AXIS] = base_min_pos(X_AXIS) + home_offset[X_AXIS];
|
||||||
max_pos[X_AXIS] = min(base_max_pos(X_AXIS) + add_homing[X_AXIS],
|
max_pos[X_AXIS] = min(base_max_pos(X_AXIS) + home_offset[X_AXIS],
|
||||||
max(extruder_offset[X_AXIS][1], X2_MAX_POS) - duplicate_extruder_x_offset);
|
max(extruder_offset[X_AXIS][1], X2_MAX_POS) - duplicate_extruder_x_offset);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1036,11 +1036,11 @@ static void axis_is_at_home(int axis) {
|
|||||||
|
|
||||||
for (i=0; i<2; i++)
|
for (i=0; i<2; i++)
|
||||||
{
|
{
|
||||||
delta[i] -= add_homing[i];
|
delta[i] -= home_offset[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
// SERIAL_ECHOPGM("addhome X="); SERIAL_ECHO(add_homing[X_AXIS]);
|
// SERIAL_ECHOPGM("addhome X="); SERIAL_ECHO(home_offset[X_AXIS]);
|
||||||
// SERIAL_ECHOPGM(" addhome Y="); SERIAL_ECHO(add_homing[Y_AXIS]);
|
// SERIAL_ECHOPGM(" addhome Y="); SERIAL_ECHO(home_offset[Y_AXIS]);
|
||||||
// SERIAL_ECHOPGM(" addhome Theta="); SERIAL_ECHO(delta[X_AXIS]);
|
// SERIAL_ECHOPGM(" addhome Theta="); SERIAL_ECHO(delta[X_AXIS]);
|
||||||
// SERIAL_ECHOPGM(" addhome Psi+Theta="); SERIAL_ECHOLN(delta[Y_AXIS]);
|
// SERIAL_ECHOPGM(" addhome Psi+Theta="); SERIAL_ECHOLN(delta[Y_AXIS]);
|
||||||
|
|
||||||
@ -1058,14 +1058,14 @@ static void axis_is_at_home(int axis) {
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
current_position[axis] = base_home_pos(axis) + add_homing[axis];
|
current_position[axis] = base_home_pos(axis) + home_offset[axis];
|
||||||
min_pos[axis] = base_min_pos(axis) + add_homing[axis];
|
min_pos[axis] = base_min_pos(axis) + home_offset[axis];
|
||||||
max_pos[axis] = base_max_pos(axis) + add_homing[axis];
|
max_pos[axis] = base_max_pos(axis) + home_offset[axis];
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
current_position[axis] = base_home_pos(axis) + add_homing[axis];
|
current_position[axis] = base_home_pos(axis) + home_offset[axis];
|
||||||
min_pos[axis] = base_min_pos(axis) + add_homing[axis];
|
min_pos[axis] = base_min_pos(axis) + home_offset[axis];
|
||||||
max_pos[axis] = base_max_pos(axis) + add_homing[axis];
|
max_pos[axis] = base_max_pos(axis) + home_offset[axis];
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1299,7 +1299,13 @@ static void engage_z_probe() {
|
|||||||
static void retract_z_probe() {
|
static void retract_z_probe() {
|
||||||
// Retract Z Servo endstop if enabled
|
// Retract Z Servo endstop if enabled
|
||||||
#ifdef SERVO_ENDSTOPS
|
#ifdef SERVO_ENDSTOPS
|
||||||
if (servo_endstops[Z_AXIS] > -1) {
|
if (servo_endstops[Z_AXIS] > -1)
|
||||||
|
{
|
||||||
|
#if Z_RAISE_AFTER_PROBING > 0
|
||||||
|
do_blocking_move_to(current_position[X_AXIS], current_position[Y_AXIS], Z_RAISE_AFTER_PROBING);
|
||||||
|
st_synchronize();
|
||||||
|
#endif
|
||||||
|
|
||||||
#if SERVO_LEVELING
|
#if SERVO_LEVELING
|
||||||
servos[servo_endstops[Z_AXIS]].attach(0);
|
servos[servo_endstops[Z_AXIS]].attach(0);
|
||||||
#endif
|
#endif
|
||||||
@ -1312,7 +1318,7 @@ static void retract_z_probe() {
|
|||||||
#elif defined(Z_PROBE_ALLEN_KEY)
|
#elif defined(Z_PROBE_ALLEN_KEY)
|
||||||
// Move up for safety
|
// Move up for safety
|
||||||
feedrate = homing_feedrate[X_AXIS];
|
feedrate = homing_feedrate[X_AXIS];
|
||||||
destination[Z_AXIS] = current_position[Z_AXIS] + 20;
|
destination[Z_AXIS] = current_position[Z_AXIS] + Z_RAISE_AFTER_PROBING;
|
||||||
prepare_move_raw();
|
prepare_move_raw();
|
||||||
|
|
||||||
// Move to the start position to initiate retraction
|
// Move to the start position to initiate retraction
|
||||||
@ -1354,10 +1360,15 @@ static void retract_z_probe() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
enum ProbeAction { ProbeStay, ProbeEngage, ProbeRetract, ProbeEngageRetract };
|
enum ProbeAction {
|
||||||
|
ProbeStay = 0,
|
||||||
|
ProbeEngage = BIT(0),
|
||||||
|
ProbeRetract = BIT(1),
|
||||||
|
ProbeEngageAndRetract = (ProbeEngage | ProbeRetract)
|
||||||
|
};
|
||||||
|
|
||||||
/// Probe bed height at position (x,y), returns the measured z value
|
/// Probe bed height at position (x,y), returns the measured z value
|
||||||
static float probe_pt(float x, float y, float z_before, ProbeAction retract_action=ProbeEngageRetract, int verbose_level=1) {
|
static float probe_pt(float x, float y, float z_before, ProbeAction retract_action=ProbeEngageAndRetract, int verbose_level=1) {
|
||||||
// move to right place
|
// move to right place
|
||||||
do_blocking_move_to(current_position[X_AXIS], current_position[Y_AXIS], z_before);
|
do_blocking_move_to(current_position[X_AXIS], current_position[Y_AXIS], z_before);
|
||||||
do_blocking_move_to(x - X_PROBE_OFFSET_FROM_EXTRUDER, y - Y_PROBE_OFFSET_FROM_EXTRUDER, current_position[Z_AXIS]);
|
do_blocking_move_to(x - X_PROBE_OFFSET_FROM_EXTRUDER, y - Y_PROBE_OFFSET_FROM_EXTRUDER, current_position[Z_AXIS]);
|
||||||
@ -1848,7 +1859,7 @@ inline void gcode_G28() {
|
|||||||
if (code_value_long() != 0) {
|
if (code_value_long() != 0) {
|
||||||
current_position[X_AXIS] = code_value()
|
current_position[X_AXIS] = code_value()
|
||||||
#ifndef SCARA
|
#ifndef SCARA
|
||||||
+ add_homing[X_AXIS]
|
+ home_offset[X_AXIS]
|
||||||
#endif
|
#endif
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
@ -1857,7 +1868,7 @@ inline void gcode_G28() {
|
|||||||
if (code_seen(axis_codes[Y_AXIS]) && code_value_long() != 0) {
|
if (code_seen(axis_codes[Y_AXIS]) && code_value_long() != 0) {
|
||||||
current_position[Y_AXIS] = code_value()
|
current_position[Y_AXIS] = code_value()
|
||||||
#ifndef SCARA
|
#ifndef SCARA
|
||||||
+ add_homing[Y_AXIS]
|
+ home_offset[Y_AXIS]
|
||||||
#endif
|
#endif
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
@ -1931,7 +1942,7 @@ inline void gcode_G28() {
|
|||||||
|
|
||||||
|
|
||||||
if (code_seen(axis_codes[Z_AXIS]) && code_value_long() != 0)
|
if (code_seen(axis_codes[Z_AXIS]) && code_value_long() != 0)
|
||||||
current_position[Z_AXIS] = code_value() + add_homing[Z_AXIS];
|
current_position[Z_AXIS] = code_value() + home_offset[Z_AXIS];
|
||||||
|
|
||||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||||
if (home_all_axis || code_seen(axis_codes[Z_AXIS]))
|
if (home_all_axis || code_seen(axis_codes[Z_AXIS]))
|
||||||
@ -2118,7 +2129,7 @@ inline void gcode_G28() {
|
|||||||
#ifdef AUTO_BED_LEVELING_GRID
|
#ifdef AUTO_BED_LEVELING_GRID
|
||||||
|
|
||||||
#ifndef DELTA
|
#ifndef DELTA
|
||||||
bool topo_flag = verbose_level > 2 || code_seen('T') || code_seen('t');
|
bool do_topography_map = verbose_level > 2 || code_seen('T') || code_seen('t');
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (verbose_level > 0)
|
if (verbose_level > 0)
|
||||||
@ -2173,15 +2184,16 @@ inline void gcode_G28() {
|
|||||||
|
|
||||||
#ifdef Z_PROBE_SLED
|
#ifdef Z_PROBE_SLED
|
||||||
dock_sled(false); // engage (un-dock) the probe
|
dock_sled(false); // engage (un-dock) the probe
|
||||||
#elif not defined(SERVO_ENDSTOPS)
|
#elif defined(Z_PROBE_ALLEN_KEY)
|
||||||
engage_z_probe();
|
engage_z_probe();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
|
|
||||||
#ifdef DELTA
|
#ifdef DELTA
|
||||||
reset_bed_level();
|
reset_bed_level();
|
||||||
#else
|
#else
|
||||||
|
|
||||||
// make sure the bed_level_rotation_matrix is identity or the planner will get it incorectly
|
// make sure the bed_level_rotation_matrix is identity or the planner will get it incorectly
|
||||||
//vector_3 corrected_position = plan_get_position_mm();
|
//vector_3 corrected_position = plan_get_position_mm();
|
||||||
//corrected_position.debug("position before G29");
|
//corrected_position.debug("position before G29");
|
||||||
@ -2222,42 +2234,36 @@ inline void gcode_G28() {
|
|||||||
delta_grid_spacing[1] = yGridSpacing;
|
delta_grid_spacing[1] = yGridSpacing;
|
||||||
|
|
||||||
float z_offset = Z_PROBE_OFFSET_FROM_EXTRUDER;
|
float z_offset = Z_PROBE_OFFSET_FROM_EXTRUDER;
|
||||||
if (code_seen(axis_codes[Z_AXIS])) {
|
if (code_seen(axis_codes[Z_AXIS])) z_offset += code_value();
|
||||||
z_offset += code_value();
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int probePointCounter = 0;
|
int probePointCounter = 0;
|
||||||
bool zig = true;
|
bool zig = true;
|
||||||
|
|
||||||
for (int yCount=0; yCount < auto_bed_leveling_grid_points; yCount++)
|
for (int yCount = 0; yCount < auto_bed_leveling_grid_points; yCount++) {
|
||||||
{
|
|
||||||
double yProbe = front_probe_bed_position + yGridSpacing * yCount;
|
double yProbe = front_probe_bed_position + yGridSpacing * yCount;
|
||||||
int xStart, xStop, xInc;
|
int xStart, xStop, xInc;
|
||||||
|
|
||||||
if (zig)
|
if (zig) {
|
||||||
{
|
|
||||||
xStart = 0;
|
xStart = 0;
|
||||||
xStop = auto_bed_leveling_grid_points;
|
xStop = auto_bed_leveling_grid_points;
|
||||||
xInc = 1;
|
xInc = 1;
|
||||||
zig = false;
|
zig = false;
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
xStart = auto_bed_leveling_grid_points - 1;
|
xStart = auto_bed_leveling_grid_points - 1;
|
||||||
xStop = -1;
|
xStop = -1;
|
||||||
xInc = -1;
|
xInc = -1;
|
||||||
zig = true;
|
zig = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef DELTA
|
#ifndef DELTA
|
||||||
// If topo_flag is set then don't zig-zag. Just scan in one direction.
|
// If do_topography_map is set then don't zig-zag. Just scan in one direction.
|
||||||
// This gets the probe points in more readable order.
|
// This gets the probe points in more readable order.
|
||||||
if (!topo_flag) zig = !zig;
|
if (!do_topography_map) zig = !zig;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for (int xCount=xStart; xCount != xStop; xCount += xInc)
|
for (int xCount = xStart; xCount != xStop; xCount += xInc) {
|
||||||
{
|
|
||||||
double xProbe = left_probe_bed_position + xGridSpacing * xCount;
|
double xProbe = left_probe_bed_position + xGridSpacing * xCount;
|
||||||
|
|
||||||
// raise extruder
|
// raise extruder
|
||||||
@ -2282,7 +2288,7 @@ inline void gcode_G28() {
|
|||||||
act = ProbeStay;
|
act = ProbeStay;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
act = ProbeEngageRetract;
|
act = ProbeEngageAndRetract;
|
||||||
|
|
||||||
measured_z = probe_pt(xProbe, yProbe, z_before, act, verbose_level);
|
measured_z = probe_pt(xProbe, yProbe, z_before, act, verbose_level);
|
||||||
|
|
||||||
@ -2324,49 +2330,31 @@ inline void gcode_G28() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (topo_flag) {
|
// Show the Topography map if enabled
|
||||||
|
if (do_topography_map) {
|
||||||
int xx, yy;
|
|
||||||
|
|
||||||
SERIAL_PROTOCOLPGM(" \nBed Height Topography: \n");
|
SERIAL_PROTOCOLPGM(" \nBed Height Topography: \n");
|
||||||
#if TOPO_ORIGIN == OriginFrontLeft
|
SERIAL_PROTOCOLPGM("+-----------+\n");
|
||||||
SERIAL_PROTOCOLPGM("+-----------+\n");
|
SERIAL_PROTOCOLPGM("|...Back....|\n");
|
||||||
SERIAL_PROTOCOLPGM("|...Back....|\n");
|
SERIAL_PROTOCOLPGM("|Left..Right|\n");
|
||||||
SERIAL_PROTOCOLPGM("|Left..Right|\n");
|
SERIAL_PROTOCOLPGM("|...Front...|\n");
|
||||||
SERIAL_PROTOCOLPGM("|...Front...|\n");
|
SERIAL_PROTOCOLPGM("+-----------+\n");
|
||||||
SERIAL_PROTOCOLPGM("+-----------+\n");
|
|
||||||
for (yy = auto_bed_leveling_grid_points - 1; yy >= 0; yy--)
|
|
||||||
#else
|
|
||||||
for (yy = 0; yy < auto_bed_leveling_grid_points; yy++)
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
#if TOPO_ORIGIN == OriginBackRight
|
|
||||||
for (xx = 0; xx < auto_bed_leveling_grid_points; xx++)
|
|
||||||
#else
|
|
||||||
for (xx = auto_bed_leveling_grid_points - 1; xx >= 0; xx--)
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
int ind =
|
|
||||||
#if TOPO_ORIGIN == OriginBackRight || TOPO_ORIGIN == OriginFrontLeft
|
|
||||||
yy * auto_bed_leveling_grid_points + xx
|
|
||||||
#elif TOPO_ORIGIN == OriginBackLeft
|
|
||||||
xx * auto_bed_leveling_grid_points + yy
|
|
||||||
#elif TOPO_ORIGIN == OriginFrontRight
|
|
||||||
abl2 - xx * auto_bed_leveling_grid_points - yy - 1
|
|
||||||
#endif
|
|
||||||
;
|
|
||||||
float diff = eqnBVector[ind] - mean;
|
|
||||||
if (diff >= 0.0)
|
|
||||||
SERIAL_PROTOCOLPGM(" +"); // Include + for column alignment
|
|
||||||
else
|
|
||||||
SERIAL_PROTOCOLPGM(" ");
|
|
||||||
SERIAL_PROTOCOL_F(diff, 5);
|
|
||||||
} // xx
|
|
||||||
SERIAL_EOL;
|
|
||||||
} // yy
|
|
||||||
SERIAL_EOL;
|
|
||||||
|
|
||||||
} //topo_flag
|
for (int yy = auto_bed_leveling_grid_points - 1; yy >= 0; yy--) {
|
||||||
|
for (int xx = auto_bed_leveling_grid_points - 1; xx >= 0; xx--) {
|
||||||
|
int ind = yy * auto_bed_leveling_grid_points + xx;
|
||||||
|
float diff = eqnBVector[ind] - mean;
|
||||||
|
if (diff >= 0.0)
|
||||||
|
SERIAL_PROTOCOLPGM(" +"); // Include + for column alignment
|
||||||
|
else
|
||||||
|
SERIAL_PROTOCOLPGM(" ");
|
||||||
|
SERIAL_PROTOCOL_F(diff, 5);
|
||||||
|
} // xx
|
||||||
|
SERIAL_EOL;
|
||||||
|
} // yy
|
||||||
|
SERIAL_EOL;
|
||||||
|
|
||||||
|
} //do_topography_map
|
||||||
|
|
||||||
|
|
||||||
set_bed_level_equation_lsq(plane_equation_coefficients);
|
set_bed_level_equation_lsq(plane_equation_coefficients);
|
||||||
@ -2388,18 +2376,15 @@ inline void gcode_G28() {
|
|||||||
z_at_pt_3 = probe_pt(ABL_PROBE_PT_3_X, ABL_PROBE_PT_3_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS, ProbeRetract, verbose_level);
|
z_at_pt_3 = probe_pt(ABL_PROBE_PT_3_X, ABL_PROBE_PT_3_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS, ProbeRetract, verbose_level);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
z_at_pt_1 = probe_pt(ABL_PROBE_PT_1_X, ABL_PROBE_PT_1_Y, Z_RAISE_BEFORE_PROBING, verbose_level=verbose_level);
|
z_at_pt_1 = probe_pt(ABL_PROBE_PT_1_X, ABL_PROBE_PT_1_Y, Z_RAISE_BEFORE_PROBING, ProbeEngageAndRetract, verbose_level);
|
||||||
z_at_pt_2 = probe_pt(ABL_PROBE_PT_2_X, ABL_PROBE_PT_2_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS, verbose_level=verbose_level);
|
z_at_pt_2 = probe_pt(ABL_PROBE_PT_2_X, ABL_PROBE_PT_2_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS, ProbeEngageAndRetract, verbose_level);
|
||||||
z_at_pt_3 = probe_pt(ABL_PROBE_PT_3_X, ABL_PROBE_PT_3_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS, verbose_level=verbose_level);
|
z_at_pt_3 = probe_pt(ABL_PROBE_PT_3_X, ABL_PROBE_PT_3_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS, ProbeEngageAndRetract, verbose_level);
|
||||||
}
|
}
|
||||||
clean_up_after_endstop_move();
|
clean_up_after_endstop_move();
|
||||||
set_bed_level_equation_3pts(z_at_pt_1, z_at_pt_2, z_at_pt_3);
|
set_bed_level_equation_3pts(z_at_pt_1, z_at_pt_2, z_at_pt_3);
|
||||||
|
|
||||||
#endif // !AUTO_BED_LEVELING_GRID
|
#endif // !AUTO_BED_LEVELING_GRID
|
||||||
|
|
||||||
do_blocking_move_to(current_position[X_AXIS], current_position[Y_AXIS], Z_RAISE_AFTER_PROBING);
|
|
||||||
st_synchronize();
|
|
||||||
|
|
||||||
#ifndef DELTA
|
#ifndef DELTA
|
||||||
if (verbose_level > 0)
|
if (verbose_level > 0)
|
||||||
plan_bed_level_matrix.debug(" \n\nBed Level Correction Matrix:");
|
plan_bed_level_matrix.debug(" \n\nBed Level Correction Matrix:");
|
||||||
@ -2419,7 +2404,7 @@ inline void gcode_G28() {
|
|||||||
|
|
||||||
#ifdef Z_PROBE_SLED
|
#ifdef Z_PROBE_SLED
|
||||||
dock_sled(true, -SLED_DOCKING_OFFSET); // dock the probe, correcting for over-travel
|
dock_sled(true, -SLED_DOCKING_OFFSET); // dock the probe, correcting for over-travel
|
||||||
#elif not defined(SERVO_ENDSTOPS)
|
#elif defined(Z_PROBE_ALLEN_KEY)
|
||||||
retract_z_probe();
|
retract_z_probe();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -2464,22 +2449,13 @@ inline void gcode_G92() {
|
|||||||
if (!code_seen(axis_codes[E_AXIS]))
|
if (!code_seen(axis_codes[E_AXIS]))
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
|
|
||||||
for (int i=0;i<NUM_AXIS;i++) {
|
for (int i = 0; i < NUM_AXIS; i++) {
|
||||||
if (code_seen(axis_codes[i])) {
|
if (code_seen(axis_codes[i])) {
|
||||||
if (i == E_AXIS) {
|
current_position[i] = code_value();
|
||||||
current_position[i] = code_value();
|
if (i == E_AXIS)
|
||||||
plan_set_e_position(current_position[E_AXIS]);
|
plan_set_e_position(current_position[E_AXIS]);
|
||||||
}
|
else
|
||||||
else {
|
|
||||||
current_position[i] = code_value() +
|
|
||||||
#ifdef SCARA
|
|
||||||
((i != X_AXIS && i != Y_AXIS) ? add_homing[i] : 0)
|
|
||||||
#else
|
|
||||||
add_homing[i]
|
|
||||||
#endif
|
|
||||||
;
|
|
||||||
plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
|
plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3416,9 +3392,9 @@ inline void gcode_M114() {
|
|||||||
SERIAL_PROTOCOLLN("");
|
SERIAL_PROTOCOLLN("");
|
||||||
|
|
||||||
SERIAL_PROTOCOLPGM("SCARA Cal - Theta:");
|
SERIAL_PROTOCOLPGM("SCARA Cal - Theta:");
|
||||||
SERIAL_PROTOCOL(delta[X_AXIS]+add_homing[X_AXIS]);
|
SERIAL_PROTOCOL(delta[X_AXIS]+home_offset[X_AXIS]);
|
||||||
SERIAL_PROTOCOLPGM(" Psi+Theta (90):");
|
SERIAL_PROTOCOLPGM(" Psi+Theta (90):");
|
||||||
SERIAL_PROTOCOL(delta[Y_AXIS]-delta[X_AXIS]-90+add_homing[Y_AXIS]);
|
SERIAL_PROTOCOL(delta[Y_AXIS]-delta[X_AXIS]-90+home_offset[Y_AXIS]);
|
||||||
SERIAL_PROTOCOLLN("");
|
SERIAL_PROTOCOLLN("");
|
||||||
|
|
||||||
SERIAL_PROTOCOLPGM("SCARA step Cal - Theta:");
|
SERIAL_PROTOCOLPGM("SCARA step Cal - Theta:");
|
||||||
@ -3636,12 +3612,12 @@ inline void gcode_M205() {
|
|||||||
inline void gcode_M206() {
|
inline void gcode_M206() {
|
||||||
for (int8_t i=X_AXIS; i <= Z_AXIS; i++) {
|
for (int8_t i=X_AXIS; i <= Z_AXIS; i++) {
|
||||||
if (code_seen(axis_codes[i])) {
|
if (code_seen(axis_codes[i])) {
|
||||||
add_homing[i] = code_value();
|
home_offset[i] = code_value();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef SCARA
|
#ifdef SCARA
|
||||||
if (code_seen('T')) add_homing[X_AXIS] = code_value(); // Theta
|
if (code_seen('T')) home_offset[X_AXIS] = code_value(); // Theta
|
||||||
if (code_seen('P')) add_homing[Y_AXIS] = code_value(); // Psi
|
if (code_seen('P')) home_offset[Y_AXIS] = code_value(); // Psi
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5239,7 +5215,7 @@ void clamp_to_software_endstops(float target[3])
|
|||||||
float negative_z_offset = 0;
|
float negative_z_offset = 0;
|
||||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||||
if (Z_PROBE_OFFSET_FROM_EXTRUDER < 0) negative_z_offset = negative_z_offset + Z_PROBE_OFFSET_FROM_EXTRUDER;
|
if (Z_PROBE_OFFSET_FROM_EXTRUDER < 0) negative_z_offset = negative_z_offset + Z_PROBE_OFFSET_FROM_EXTRUDER;
|
||||||
if (add_homing[Z_AXIS] < 0) negative_z_offset = negative_z_offset + add_homing[Z_AXIS];
|
if (home_offset[Z_AXIS] < 0) negative_z_offset = negative_z_offset + home_offset[Z_AXIS];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (target[Z_AXIS] < min_pos[Z_AXIS]+negative_z_offset) target[Z_AXIS] = min_pos[Z_AXIS]+negative_z_offset;
|
if (target[Z_AXIS] < min_pos[Z_AXIS]+negative_z_offset) target[Z_AXIS] = min_pos[Z_AXIS]+negative_z_offset;
|
||||||
|
@ -434,12 +434,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||||||
|
|
||||||
#ifdef AUTO_BED_LEVELING_GRID
|
#ifdef AUTO_BED_LEVELING_GRID
|
||||||
|
|
||||||
// Use one of these defines to specify the origin
|
|
||||||
// for a topographical map to be printed for your bed.
|
|
||||||
enum { OriginBackLeft, OriginFrontLeft, OriginBackRight, OriginFrontRight };
|
|
||||||
#define TOPO_ORIGIN OriginFrontLeft
|
|
||||||
|
|
||||||
// The edges of the rectangle in which to probe
|
|
||||||
#define LEFT_PROBE_BED_POSITION 15
|
#define LEFT_PROBE_BED_POSITION 15
|
||||||
#define RIGHT_PROBE_BED_POSITION 170
|
#define RIGHT_PROBE_BED_POSITION 170
|
||||||
#define FRONT_PROBE_BED_POSITION 20
|
#define FRONT_PROBE_BED_POSITION 20
|
||||||
|
@ -382,12 +382,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||||||
// Note: this feature occupies 10'206 byte
|
// Note: this feature occupies 10'206 byte
|
||||||
#ifdef AUTO_BED_LEVELING_GRID
|
#ifdef AUTO_BED_LEVELING_GRID
|
||||||
|
|
||||||
// Use one of these defines to specify the origin
|
home_offset // set the rectangle in which to probe
|
||||||
// for a topographical map to be printed for your bed.
|
|
||||||
enum { OriginBackLeft, OriginFrontLeft, OriginBackRight, OriginFrontRight };
|
|
||||||
#define TOPO_ORIGIN OriginFrontLeft
|
|
||||||
|
|
||||||
// set the rectangle in which to probe
|
|
||||||
#define LEFT_PROBE_BED_POSITION 15
|
#define LEFT_PROBE_BED_POSITION 15
|
||||||
#define RIGHT_PROBE_BED_POSITION 170
|
#define RIGHT_PROBE_BED_POSITION 170
|
||||||
#define BACK_PROBE_BED_POSITION 180
|
#define BACK_PROBE_BED_POSITION 180
|
||||||
|
@ -382,12 +382,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||||||
// Note: this feature occupies 10'206 byte
|
// Note: this feature occupies 10'206 byte
|
||||||
#ifdef AUTO_BED_LEVELING_GRID
|
#ifdef AUTO_BED_LEVELING_GRID
|
||||||
|
|
||||||
// Use one of these defines to specify the origin
|
home_offset // set the rectangle in which to probe
|
||||||
// for a topographical map to be printed for your bed.
|
|
||||||
enum { OriginBackLeft, OriginFrontLeft, OriginBackRight, OriginFrontRight };
|
|
||||||
#define TOPO_ORIGIN OriginFrontLeft
|
|
||||||
|
|
||||||
// set the rectangle in which to probe
|
|
||||||
#define LEFT_PROBE_BED_POSITION 15
|
#define LEFT_PROBE_BED_POSITION 15
|
||||||
#define RIGHT_PROBE_BED_POSITION 170
|
#define RIGHT_PROBE_BED_POSITION 170
|
||||||
#define BACK_PROBE_BED_POSITION 180
|
#define BACK_PROBE_BED_POSITION 180
|
||||||
|
@ -406,12 +406,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||||||
|
|
||||||
#ifdef AUTO_BED_LEVELING_GRID
|
#ifdef AUTO_BED_LEVELING_GRID
|
||||||
|
|
||||||
// Use one of these defines to specify the origin
|
|
||||||
// for a topographical map to be printed for your bed.
|
|
||||||
enum { OriginBackLeft, OriginFrontLeft, OriginBackRight, OriginFrontRight };
|
|
||||||
#define TOPO_ORIGIN OriginFrontLeft
|
|
||||||
|
|
||||||
// The edges of the rectangle in which to probe
|
|
||||||
#define LEFT_PROBE_BED_POSITION 15
|
#define LEFT_PROBE_BED_POSITION 15
|
||||||
#define RIGHT_PROBE_BED_POSITION 170
|
#define RIGHT_PROBE_BED_POSITION 170
|
||||||
#define FRONT_PROBE_BED_POSITION 20
|
#define FRONT_PROBE_BED_POSITION 20
|
||||||
|
@ -411,12 +411,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||||||
|
|
||||||
#ifdef AUTO_BED_LEVELING_GRID
|
#ifdef AUTO_BED_LEVELING_GRID
|
||||||
|
|
||||||
// Use one of these defines to specify the origin
|
|
||||||
// for a topographical map to be printed for your bed.
|
|
||||||
enum { OriginBackLeft, OriginFrontLeft, OriginBackRight, OriginFrontRight };
|
|
||||||
#define TOPO_ORIGIN OriginFrontLeft
|
|
||||||
|
|
||||||
// The edges of the rectangle in which to probe
|
|
||||||
#define LEFT_PROBE_BED_POSITION 15
|
#define LEFT_PROBE_BED_POSITION 15
|
||||||
#define RIGHT_PROBE_BED_POSITION 170
|
#define RIGHT_PROBE_BED_POSITION 170
|
||||||
#define FRONT_PROBE_BED_POSITION 20
|
#define FRONT_PROBE_BED_POSITION 20
|
||||||
|
@ -435,12 +435,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||||||
|
|
||||||
#ifdef AUTO_BED_LEVELING_GRID
|
#ifdef AUTO_BED_LEVELING_GRID
|
||||||
|
|
||||||
// Use one of these defines to specify the origin
|
|
||||||
// for a topographical map to be printed for your bed.
|
|
||||||
enum { OriginBackLeft, OriginFrontLeft, OriginBackRight, OriginFrontRight };
|
|
||||||
#define TOPO_ORIGIN OriginFrontLeft
|
|
||||||
|
|
||||||
// The edges of the rectangle in which to probe
|
|
||||||
#define LEFT_PROBE_BED_POSITION 15
|
#define LEFT_PROBE_BED_POSITION 15
|
||||||
#define RIGHT_PROBE_BED_POSITION 170
|
#define RIGHT_PROBE_BED_POSITION 170
|
||||||
#define FRONT_PROBE_BED_POSITION 20
|
#define FRONT_PROBE_BED_POSITION 20
|
||||||
|
@ -405,12 +405,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||||||
|
|
||||||
#ifdef AUTO_BED_LEVELING_GRID
|
#ifdef AUTO_BED_LEVELING_GRID
|
||||||
|
|
||||||
// Use one of these defines to specify the origin
|
|
||||||
// for a topographical map to be printed for your bed.
|
|
||||||
enum { OriginBackLeft, OriginFrontLeft, OriginBackRight, OriginFrontRight };
|
|
||||||
#define TOPO_ORIGIN OriginFrontLeft
|
|
||||||
|
|
||||||
// The edges of the rectangle in which to probe
|
|
||||||
#define LEFT_PROBE_BED_POSITION 15
|
#define LEFT_PROBE_BED_POSITION 15
|
||||||
#define RIGHT_PROBE_BED_POSITION 170
|
#define RIGHT_PROBE_BED_POSITION 170
|
||||||
#define FRONT_PROBE_BED_POSITION 20
|
#define FRONT_PROBE_BED_POSITION 20
|
||||||
|
@ -403,12 +403,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||||||
|
|
||||||
#ifdef AUTO_BED_LEVELING_GRID
|
#ifdef AUTO_BED_LEVELING_GRID
|
||||||
|
|
||||||
// Use one of these defines to specify the origin
|
|
||||||
// for a topographical map to be printed for your bed.
|
|
||||||
enum { OriginBackLeft, OriginFrontLeft, OriginBackRight, OriginFrontRight };
|
|
||||||
#define TOPO_ORIGIN OriginFrontLeft
|
|
||||||
|
|
||||||
// The edges of the rectangle in which to probe
|
|
||||||
#define LEFT_PROBE_BED_POSITION 15
|
#define LEFT_PROBE_BED_POSITION 15
|
||||||
#define RIGHT_PROBE_BED_POSITION 170
|
#define RIGHT_PROBE_BED_POSITION 170
|
||||||
#define FRONT_PROBE_BED_POSITION 20
|
#define FRONT_PROBE_BED_POSITION 20
|
||||||
|
@ -405,12 +405,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||||||
|
|
||||||
#ifdef AUTO_BED_LEVELING_GRID
|
#ifdef AUTO_BED_LEVELING_GRID
|
||||||
|
|
||||||
// Use one of these defines to specify the origin
|
|
||||||
// for a topographical map to be printed for your bed.
|
|
||||||
enum { OriginBackLeft, OriginFrontLeft, OriginBackRight, OriginFrontRight };
|
|
||||||
#define TOPO_ORIGIN OriginFrontLeft
|
|
||||||
|
|
||||||
// The edges of the rectangle in which to probe
|
|
||||||
#define LEFT_PROBE_BED_POSITION 15
|
#define LEFT_PROBE_BED_POSITION 15
|
||||||
#define RIGHT_PROBE_BED_POSITION 170
|
#define RIGHT_PROBE_BED_POSITION 170
|
||||||
#define FRONT_PROBE_BED_POSITION 20
|
#define FRONT_PROBE_BED_POSITION 20
|
||||||
|
@ -102,11 +102,8 @@ volatile signed char count_direction[NUM_AXIS] = { 1, 1, 1, 1 };
|
|||||||
X_DIR_WRITE(v); \
|
X_DIR_WRITE(v); \
|
||||||
X2_DIR_WRITE(v); \
|
X2_DIR_WRITE(v); \
|
||||||
} \
|
} \
|
||||||
else{ \
|
else { \
|
||||||
if (current_block->active_extruder) \
|
if (current_block->active_extruder) X2_DIR_WRITE(v); else X_DIR_WRITE(v); \
|
||||||
X2_DIR_WRITE(v); \
|
|
||||||
else \
|
|
||||||
X_DIR_WRITE(v); \
|
|
||||||
}
|
}
|
||||||
#define X_APPLY_STEP(v,ALWAYS) \
|
#define X_APPLY_STEP(v,ALWAYS) \
|
||||||
if (extruder_duplication_enabled || ALWAYS) { \
|
if (extruder_duplication_enabled || ALWAYS) { \
|
||||||
@ -114,10 +111,7 @@ volatile signed char count_direction[NUM_AXIS] = { 1, 1, 1, 1 };
|
|||||||
X2_STEP_WRITE(v); \
|
X2_STEP_WRITE(v); \
|
||||||
} \
|
} \
|
||||||
else { \
|
else { \
|
||||||
if (current_block->active_extruder != 0) \
|
if (current_block->active_extruder != 0) X2_STEP_WRITE(v); else X_STEP_WRITE(v); \
|
||||||
X2_STEP_WRITE(v); \
|
|
||||||
else \
|
|
||||||
X_STEP_WRITE(v); \
|
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#define X_APPLY_DIR(v,Q) X_DIR_WRITE(v)
|
#define X_APPLY_DIR(v,Q) X_DIR_WRITE(v)
|
||||||
@ -125,16 +119,16 @@ volatile signed char count_direction[NUM_AXIS] = { 1, 1, 1, 1 };
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef Y_DUAL_STEPPER_DRIVERS
|
#ifdef Y_DUAL_STEPPER_DRIVERS
|
||||||
#define Y_APPLY_DIR(v,Q) Y_DIR_WRITE(v), Y2_DIR_WRITE((v) != INVERT_Y2_VS_Y_DIR)
|
#define Y_APPLY_DIR(v,Q) { Y_DIR_WRITE(v); Y2_DIR_WRITE((v) != INVERT_Y2_VS_Y_DIR); }
|
||||||
#define Y_APPLY_STEP(v,Q) Y_STEP_WRITE(v), Y2_STEP_WRITE(v)
|
#define Y_APPLY_STEP(v,Q) { Y_STEP_WRITE(v); Y2_STEP_WRITE(v); }
|
||||||
#else
|
#else
|
||||||
#define Y_APPLY_DIR(v,Q) Y_DIR_WRITE(v)
|
#define Y_APPLY_DIR(v,Q) Y_DIR_WRITE(v)
|
||||||
#define Y_APPLY_STEP(v,Q) Y_STEP_WRITE(v)
|
#define Y_APPLY_STEP(v,Q) Y_STEP_WRITE(v)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
#ifdef Z_DUAL_STEPPER_DRIVERS
|
||||||
#define Z_APPLY_DIR(v,Q) Z_DIR_WRITE(v), Z2_DIR_WRITE(v)
|
#define Z_APPLY_DIR(v,Q) { Z_DIR_WRITE(v); Z2_DIR_WRITE(v); }
|
||||||
#define Z_APPLY_STEP(v,Q) Z_STEP_WRITE(v), Z2_STEP_WRITE(v)
|
#define Z_APPLY_STEP(v,Q) { Z_STEP_WRITE(v); Z2_STEP_WRITE(v); }
|
||||||
#else
|
#else
|
||||||
#define Z_APPLY_DIR(v,Q) Z_DIR_WRITE(v)
|
#define Z_APPLY_DIR(v,Q) Z_DIR_WRITE(v)
|
||||||
#define Z_APPLY_STEP(v,Q) Z_STEP_WRITE(v)
|
#define Z_APPLY_STEP(v,Q) Z_STEP_WRITE(v)
|
||||||
|
@ -436,7 +436,7 @@ static void lcd_main_menu() {
|
|||||||
void lcd_set_home_offsets() {
|
void lcd_set_home_offsets() {
|
||||||
for(int8_t i=0; i < NUM_AXIS; i++) {
|
for(int8_t i=0; i < NUM_AXIS; i++) {
|
||||||
if (i != E_AXIS) {
|
if (i != E_AXIS) {
|
||||||
add_homing[i] -= current_position[i];
|
home_offset[i] -= current_position[i];
|
||||||
current_position[i] = 0.0;
|
current_position[i] = 0.0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user