Z wikipedii:
Cytuj:
Porównanie
W języku C występują następujące operatory porównania:
równe ("=="),
różne ("!="),
mniejsze ("<"),
większe (">"),
mniejsze lub równe ("<=") i
większe lub równe (">=").
Wykonują one odpowiednie porównanie swoich argumentów i zwracają jedynkę jeżeli warunek jest spełniony lub zero jeżeli nie jest.
Nigdzie też nie widzę ile wynosi F_CPU.
Rozumiem, że te rzeczy i inne o których wspomniał przedmówca masz gdzieś indziej zadeklarowane?
Po co instrukcja switch(s) jeśli linijki wcześniej jeszcze raz sprawdzasz te warunki?
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
tego nie trzeba bo przecież są to zmienne globalne
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
to też mi nie pasuje po pętli for w f-cjach step...
Jeszcze w tych samych funkcjach krok masz w uint8_t a zmienne odpowiedzialne za kroki w int8_t
A poza tym nie lepiej użyć przerwań timera do sterowania silnikiem zamiast _delay_ms?
Zauważ, że w dokumentacji _delay_ms(x)
Cytuj:
The maximal possible delay is 262.14 ms / F_CPU in MHz.
i jeszcze jeden cytat :
Cytuj:
In order for these functions to work as intended, compiler optimizations must be enabled, and the delay time must be an expression that is a known constant at compile-time. If these requirements are not met, the resulting delay will be much longer (and basically unpredictable), and applications that otherwise do not use floating-point calculations will experience severe code bloat by the floating-point library routines linked into the application.