diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 6daadbd7..c75f21c1 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -971,6 +971,22 @@ void setup() #endif setup_homepin(); + if (1) { + SERIAL_ECHOPGM("initial zsteps on power up: "); MYSERIAL.println(tmc2130_rd_MSCNT(Z_TMC2130_CS)); + // try to run to zero phase before powering the Z motor. + // Move in negative direction + WRITE(Z_DIR_PIN,INVERT_Z_DIR); + // Round the current micro-micro steps to micro steps. + for (uint16_t phase = (tmc2130_rd_MSCNT(Z_TMC2130_CS) + 8) >> 4; phase > 0; -- phase) { + // Until the phase counter is reset to zero. + WRITE(Z_STEP_PIN, !INVERT_Z_STEP_PIN); + delay(2); + WRITE(Z_STEP_PIN, INVERT_Z_STEP_PIN); + delay(2); + } + SERIAL_ECHOPGM("initial zsteps after reset: "); MYSERIAL.println(tmc2130_rd_MSCNT(Z_TMC2130_CS)); + } + #if defined(Z_AXIS_ALWAYS_ON) enable_z(); #endif @@ -1026,25 +1042,6 @@ void setup() eeprom_write_byte((uint8_t*)EEPROM_UVLO, 0); } - { - SERIAL_ECHOPGM("power up "); print_world_coordinates(); - SERIAL_ECHOPGM("power up "); print_physical_coordinates(); - SERIAL_ECHOPGM("initial zsteps on power up: "); MYSERIAL.println(tmc2130_rd_MSCNT(Z_TMC2130_CS)); - float z0 = current_position[Z_AXIS]; - plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], z0 + 0.04, current_position[E_AXIS], feedrate/60, active_extruder); - st_synchronize(); - SERIAL_ECHOPGM("full step: "); MYSERIAL.println(tmc2130_rd_MSCNT(Z_TMC2130_CS)); - plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], z0 + 0.08, current_position[E_AXIS], feedrate/60, active_extruder); - st_synchronize(); - SERIAL_ECHOPGM("two full steps: "); MYSERIAL.println(tmc2130_rd_MSCNT(Z_TMC2130_CS)); - plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], z0 + 0.16 - 0.01, current_position[E_AXIS], feedrate/60, active_extruder); - st_synchronize(); - SERIAL_ECHOPGM("nearly full cycle: "); MYSERIAL.println(tmc2130_rd_MSCNT(Z_TMC2130_CS)); - plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], z0 + 0.16, current_position[E_AXIS], feedrate/60, active_extruder); - st_synchronize(); - SERIAL_ECHOPGM("full cycle: "); MYSERIAL.println(tmc2130_rd_MSCNT(Z_TMC2130_CS)); - } - #ifndef DEBUG_DISABLE_STARTMSGS check_babystep(); //checking if Z babystep is in allowed range setup_uvlo_interrupt();