Siehst du, Computer machen immer genau das, was man sagt. Das ist das Problem beim Programmieren.
Zu uint32_t:
Typen wie int, long usw. sind auf unterschiedlichen Prozessoren unterschiedlich groß, haben also unterschiedlich viele Bits, z.B. int bei einem 8 Bit-Arduino 16 Bits, bei einem 32-Bit Arduino 32 Bit.
Darum gibt es in C und C++ Datentypen, die garantierte Größen haben.
http://en.cppreference.com/w/cpp/types/integer
Damit sind Programme besser auf andere Rechner übertragbar.
Tags:
richtig wäre aberDu zitierst deine Code
Dann bleiben auch die Einrückungen stehen.Code:auf "Erweitert" klicken und das # Symbol nehmen
- - - Aktualisiert - - -
Ach ja, weiterhin macht eine Zeile wie
nicht das, was du glaubst.Code:else if (dir == 1 && (micros() - M2_microsalt) > Schrittdauer) {
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