29-10-2014, 14:44
Brawo Norbert!
Dokładnie z tym będzie problem. W zasadzie to z tym i jeszcze z jedną rzeczą, już tłumaczę.
Otóż millis() używa licznika 32bit bez znaku, czyli unsigned long, ma zakres od 0 do 4,294,967,295 (czas w milisekundach, to jest około 48dni z małym hakiem). Jednakże w całym programie błędnie przypisałem do liczenia zmiennej czasu, zwykłego longa a ten to też liczba 32bit, ale w zakresie od -2,147,483,648 do 2,147,483,647.
Czyli skróciłem swój licznik w którym mogę przechowywać kolejny moment odpalenia funkcji s-metr o połowę.
A zatem po około 24 dniach kolejne odsunięcie wykonania funkcji s-metra trafi w obszar którego mój licznik nie może przyjąć.
Reasumując jeśli przez 24dni nie wyłaczymy tego transceivera s-metr przestanie działać.
Należy zatem zadbać o obsługę przekroczenia licznika milis() i dodatkowo użyć właściwej zmiennej do liczenia czasu.
Dokładnie z tym będzie problem. W zasadzie to z tym i jeszcze z jedną rzeczą, już tłumaczę.
Otóż millis() używa licznika 32bit bez znaku, czyli unsigned long, ma zakres od 0 do 4,294,967,295 (czas w milisekundach, to jest około 48dni z małym hakiem). Jednakże w całym programie błędnie przypisałem do liczenia zmiennej czasu, zwykłego longa a ten to też liczba 32bit, ale w zakresie od -2,147,483,648 do 2,147,483,647.
Czyli skróciłem swój licznik w którym mogę przechowywać kolejny moment odpalenia funkcji s-metr o połowę.
A zatem po około 24 dniach kolejne odsunięcie wykonania funkcji s-metra trafi w obszar którego mój licznik nie może przyjąć.
Reasumując jeśli przez 24dni nie wyłaczymy tego transceivera s-metr przestanie działać.
Należy zatem zadbać o obsługę przekroczenia licznika milis() i dodatkowo użyć właściwej zmiennej do liczenia czasu.
...przede wszystkim nie zakłócać...

