From bde097cad128e1ad4516887d3caab3bf519a01ba Mon Sep 17 00:00:00 2001
From: Robert Pelnar <robert.pelnar@seznam.cz>
Date: Wed, 28 Mar 2018 19:22:20 +0200
Subject: [PATCH] bugfix - PFW233 - first homing in silent mode Y crash.

---
 Firmware/Marlin_main.cpp | 8 +++++++-
 Firmware/tmc2130.cpp     | 4 ++++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp
index cc1237ea..73cd2edf 100644
--- a/Firmware/Marlin_main.cpp
+++ b/Firmware/Marlin_main.cpp
@@ -1048,7 +1048,8 @@ void setup()
 #ifdef TMC2130
 	uint8_t silentMode = eeprom_read_byte((uint8_t*)EEPROM_SILENT);
 	if (silentMode == 0xff) silentMode = 0;
-	tmc2130_mode = silentMode?TMC2130_MODE_SILENT:TMC2130_MODE_NORMAL;
+//	tmc2130_mode = silentMode?TMC2130_MODE_SILENT:TMC2130_MODE_NORMAL;
+	tmc2130_mode = TMC2130_MODE_NORMAL;
 	uint8_t crashdet = eeprom_read_byte((uint8_t*)EEPROM_CRASH_DET);
 	if (crashdet)
 	{
@@ -1095,6 +1096,11 @@ void setup()
 #endif //TMC2130
 
 	st_init();    // Initialize stepper, this enables interrupts!
+
+#ifdef TMC2130
+	tmc2130_mode = silentMode?TMC2130_MODE_SILENT:TMC2130_MODE_NORMAL;
+	tmc2130_init();
+#endif //TMC2130
     
 	setup_photpin();
 
diff --git a/Firmware/tmc2130.cpp b/Firmware/tmc2130.cpp
index 58f84cf4..9f87de82 100644
--- a/Firmware/tmc2130.cpp
+++ b/Firmware/tmc2130.cpp
@@ -260,6 +260,8 @@ void tmc2130_home_enter(uint8_t axes_mask)
 {
 //	printf_P(PSTR("tmc2130_home_enter(axes_mask=0x%02x)\n"), axes_mask);
 #ifdef TMC2130_SG_HOMING
+	if (axes_mask & 0x03) //X or Y
+		tmc2130_wait_standstill_xy(1000);
 	for (uint8_t axis = X_AXIS; axis <= Z_AXIS; axis++) //X Y and Z axes
 	{
 		uint8_t mask = (X_AXIS_MASK << axis);
@@ -283,6 +285,8 @@ void tmc2130_home_exit()
 {
 //	printf_P(PSTR("tmc2130_home_exit sg_homing_axes_mask=0x%02x\n"), sg_homing_axes_mask);
 #ifdef TMC2130_SG_HOMING
+	if (sg_homing_axes_mask & 0x03) //X or Y
+		tmc2130_wait_standstill_xy(1000);
 	if (sg_homing_axes_mask)
 	{
 		for (uint8_t axis = X_AXIS; axis <= Z_AXIS; axis++) //X Y and Z axes