Sind Wackelkontakte auf den Breadboard auszuschließen? Es klingt, als ob eine Phase Aussetzer hat, egal, ob Controller- oder Motor-seitig.

Gib doch jede Bewegungsphase mal statisch aus ( --> vier Tests) und kontrolliere physisch/messtechnisch, ob die Motorbestromung so ist, wie erwartet.
Wenn du ein Oszilloskop benutzen kannst, geht's natürlich noch einfacher. Dann ist eine dynamische Darstellung noch aussagekräftiger.

Wo wird eigentlich loop() aufgerufen? Braucht's in µC-C keine main() ?