Ach ja, weiterhin macht eine Zeile wie
Code:
else if (dir == 1 && (micros() - M2_microsalt) > Schrittdauer) {
nicht das, was du glaubst.
Erstmal wird micros() - M2_microsalt berechnet. micros() liefert unsigned long, das wird in float umgewandelt und dann M2_microsalt abgezogen.
Dann muss Schrittdauer von unsigned int nach float umgewandelt werden, damit es verglichen werden kann.
Die ganze Zeile dauert wahrscheinlich etliche Mikrosekunden, weil der 8-Bit Prozessor die 32 Bit Werte nur in Häppchen verarbeiten kann.
Lesezeichen