(15-07-2018, 19:25)kaczakat napisał(a): Do odmierzania czasu z millis używaj zmiennych i stałych typu UL,
Stała UL gwarantuje, że będzie traktowana jako unsigned long ale nie zmieni rozmiaru licznika używanego przez millis z 32 na 64 bity. Używanie millis to rozrzutność. Trzeba zawsze używać zmiennych 32 bit. Jak jest to jeden licznik czy dwa nie ma problemu ale ja jest ich 50? 50x4bajty = 200bajtów czyli aż 10% ram popularnego UNO. W 90% przypadków odmierza się czasy do 64 sekund i wystarczą na to 2 bajty. Bardzo często czasy są krótsze niż 250ms co rozwiązuje bajt. Nie chodzi tylko o zajętość ram ale i o czas wykonania operacji. AVR to nie ARM i porównanie 32bit to kilkanaście rozkazów (tak "na oko" 16) a nie 2 czy 3. Pierwszą rzeczą jaką należałoby zrobić w Arduino to wywalić chory millis i ustawić przerwania dokładnie co 1ms. To otwiera drogę do timerów odliczających "po bożemu" od zadanej wartości do zera o dowolnym rozmiarze dopasowanym do wymagań aplikacji.
(15-07-2018, 19:25)kaczakat napisał(a): którym się tego nie chciało sprawdzićPo co sprawdzać i ratować chore rozwiązania? Są lepsze, sprawdzone metody, o jednej napisałem wcześniej.