Termostat różnicowy, sterownik solarny
Wszystkie zmienne w działaniu są unsigned long więc wynik np 100-4294967295 = 4294967195 , warunek 4294967195 >= 5000 zostanie spełniony.
A może jednak coś pokręciłem?
Wziąłem udział w Supla Offline Party 2023
Wydaje mi się, że tutaj jest wszystko ok.
Problem z millis jest jak porównuje się dwie wartości pobrane z millis. Tutaj zawsze jest liczona różnica na zmiennych unsigned, więc wygląda ok.
Problem z millis jest jak porównuje się dwie wartości pobrane z millis. Tutaj zawsze jest liczona różnica na zmiennych unsigned, więc wygląda ok.
Widzimy się na Supla Offline Party vol. 2
Ja bym na wszelki wypadek dał warunek że jak zmienna aktualnyCzas będzie bliska przepełnieniu to niech procesor się zrestartuje niż wejdzie w stan nieustalony. Może w przypadku twojego programu to się nie wydarzy ale warto dmuchać na zimne.
To nie jest stan nieustalony.
Licznik zwracany przez millis to "unsigned long". Odejmowanie liczb unsigned daje poprawne różnice nawet jeśli licznik się przekręci. Problemem by było, gdyby licznik był nieaktualizowany, wtedy mógłby odpalić warunek ponwnie po przekręceniu, co mogłoby nie być intencją autora.
Natomiast tutaj co 5 s jest ustawiany licznik na nowo, więc to będzie poprawnie działać.
Widzimy się na Supla Offline Party vol. 2
-
- Posty: 44
- Rejestracja: sob lis 26, 2022 4:27 pm
- Lokalizacja: Żywiec
Mi w nim brakuje do szczęścia regulacji, żeby można było regulować różnice i mieć podgląd na ustawienia próbowałem takie coś zrobić ale jestem zalewy do tego. Tak wiem da się to zmienić w kodzie ale kto będzie gonił z laptopem co po chwila.