From 3c01b60a8846748d918e131d9307f7bce5a3e217 Mon Sep 17 00:00:00 2001
From: Kevin O'Connor <kevin@koconnor.net>
Date: Sun, 29 Mar 2020 11:06:06 -0400
Subject: [PATCH] docs: Update FAQ with TMC2208 "standalone" mode workaround

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
---
 docs/FAQ.md              |  45 ++--------------
 docs/img/tmc2208.svg     | 110 ---------------------------------------
 docs/img/tmc2208.svg.png | Bin 5858 -> 0 bytes
 3 files changed, 5 insertions(+), 150 deletions(-)
 delete mode 100644 docs/img/tmc2208.svg
 delete mode 100644 docs/img/tmc2208.svg.png

diff --git a/docs/FAQ.md b/docs/FAQ.md
index 1cf89f08c..2c7af7c77 100644
--- a/docs/FAQ.md
+++ b/docs/FAQ.md
@@ -256,46 +256,11 @@ configured in Marlin.
 
 ### My TMC motor driver turns off in the middle of a print
 
-Short answer: Do not use the TMC2208 driver in "standalone mode" with
-Klipper! Do not use the TMC2224 driver in "stealthchop standalone
-mode" with Klipper!
-
-Long answer: Klipper implements very precise timing.
-
-![tmc2208](img/tmc2208.svg.png)
-
-In the above picture, if Klipper is requested to move along the red
-line and if each black line represents the nominal location to step a
-stepper, then in the middle of that movement Klipper will arrange to
-take a step, change the step direction, and then step back. Klipper
-can perform this step, direction change, and step back in a very small
-amount of time.
-
-It is our current understanding that the TMC2208 and TMC2224 will
-react poorly to this when they are in "stealthchop" mode. (It is not
-believed any other TMC drivers are impacted.) It is believed that when
-the driver sees the two step requests in a small time frame that it
-dramatically increases current in anticipation of high acceleration.
-That high current can trip the driver's internal "over current"
-detection which causes the driver to disable itself.
-
-This pattern of steps can occur on all stepper motors and on all
-robot kinematics.
-
-The TMC2208 and TMC2224 do work well with Klipper when run-time
-configuration mode is used (that is, when a wire is routed from the
-micro-controller to the PDN-UART pin and the printer config file has a
-corresponding [tmc2208] config section). When using run-time
-configuration, either configure the drivers to use "spreadcycle mode"
-or configure them to use "stealthchop mode" with a reasonable
-"stealthchop threshold". If one wishes to exclusively use
-"stealthchop" mode with run-time UART configuration then make sure the
-stealthchop_threshold is no more than about 10% greater than the
-maximum velocity of the given axis. It is speculated that with a
-reasonable stealthchop threshold, then if Klipper sends a "step,
-direction change, step back" sequence, the driver will briefly
-transition from stealthchop mode, to spreadcycle mode, and back to
-stealthchop mode, which should be harmless.
+If using the TMC2208 (or TMC2224) driver in "standalone mode" then
+make sure to use the
+[latest version of Klipper](#how-do-i-upgrade-to-the-latest-software). A
+workaround for a TMC2208 "stealthchop" driver problem was added to
+Klipper in mid-March of 2020.
 
 ### I keep getting random "Lost communication with MCU" errors
 
diff --git a/docs/img/tmc2208.svg b/docs/img/tmc2208.svg
deleted file mode 100644
index 50b277356..000000000
--- a/docs/img/tmc2208.svg
+++ /dev/null
@@ -1,110 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="210mm"
-   height="297mm"
-   viewBox="0 0 210 297"
-   version="1.1"
-   id="svg8"
-   inkscape:export-filename="/home/kevin/src/reprap/firmware/klipper/docs/img/tmc2208.svg.png"
-   inkscape:export-xdpi="96"
-   inkscape:export-ydpi="96"
-   inkscape:version="0.92.4 (unknown)"
-   sodipodi:docname="tmc2208.svg">
-  <defs
-     id="defs2">
-    <linearGradient
-       id="linearGradient4609"
-       osb:paint="solid">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0"
-         id="stop4607" />
-    </linearGradient>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="1"
-     inkscape:pageshadow="2"
-     inkscape:zoom="0.98994949"
-     inkscape:cx="385.77852"
-     inkscape:cy="710.19584"
-     inkscape:document-units="mm"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:pagecheckerboard="false"
-     inkscape:window-width="1182"
-     inkscape:window-height="699"
-     inkscape:window-x="237"
-     inkscape:window-y="79"
-     inkscape:window-maximized="0">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4530" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata5">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#fc0000;stroke-width:0.30706427px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 66.149367,77.39651 c 30.339928,59.83134 53.090253,40.04114 74.076273,0"
-       id="path4613"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 39.6875,93.270833 127,0"
-       id="path4534"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 39.6875,103.85417 127,0"
-       id="path4534-2"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 39.6875,114.4375 127,0"
-       id="path4534-4"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 39.6875,125.02083 127,0"
-       id="path4534-4-7"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 39.6875,82.6875 127,0"
-       id="path4534-4-75"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-  </g>
-</svg>
diff --git a/docs/img/tmc2208.svg.png b/docs/img/tmc2208.svg.png
deleted file mode 100644
index 0bfb37a89e9973a6224e53e6f976931184052379..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 5858
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
TD>Mt-M?=gnTVJ9WdEfs(iD60+