Hallo asp.net,
zu deiner Frage, ob die Befehle auslaufen, pause, schlafen einen Effekt haben: Mich hatte das Thema auch mal interessiert und ich habe folgendes herausgefunden. Die Antworten findet man im Datenblatt des DRV8837, Tabelle 7-1 und in den Quellen für die Motor-Befehle.
Wenn man zwei Motoren anschließt, also „dual motor mode“, haben die Befehle keine Wirkung. In diesem Fall bremst man, indem man den PWM-Dutycycle auf 0% einstellt, d.h. die Motor-Pins liegen auf GND-Potential.
Wenn man einen Motor zwischen Pin M0 und M1 verwendet, ergeben sich die unterschiedlichen Brems-Modi eines Brushed DC Motors.
Hier ein Auszug aus dem Datenblatt.
Auslaufen, Funktion CalliopeSoundMotor::motorCoast(), Bezeichnung in Datenblatt: Coast
Die Motor-Pins sind beide hochohmig, d.h. die durch die Drehung erzeugte Spannung führt nicht zu einem signifikanten Stromfluss. Die Bremswirkung ist weitgehend mechanisch (Reibung). Daher „auslaufen“.
Pause, Funktion CalliopeSoundMotor::motorBreak(), Bezeichnung in Datenblatt: Brake
Die Motor-Pins werden beide mit GND verbunden, d.h. es entsteht ein Kurzschluss zwischen den Motor-Anschlüssen. Die durch die Restdrehung induzierte Spannung führt sofort zum Stromfluss, der der Ursache entgegenwirkt und in Wärme umgewandelt wird. Die Bremswirkung wird sozusagen elektrisch unterstützt.
Das Wort „Pause“ ist m.E. ein Übersetzungsfehler. Im Quellcode steht nämlich „break“, sollte vermutlich „brake“ heißen. Und break wurde dann in Pause übersetzt. Besser wäre „aktives Bremsen“ oder ähnlich.
Schlafen, Funktion CalliopeSoundMotor::motorSleep(), Bezeichnung in Datenblatt: Coast
Bezüglich des Bremsverhaltens identisch zu Coast.
Zusätzlich geht der DRV8837 ein seinen Low-Power Mode mit max. 120 nA Stromverbrauch.