Odpowiedz 
 
Ocena wątku:
  • 6 Głosów - 4 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Fork-Heńka... czyli jak sobie poradzić z DDS za pomocą ARDUINO
SP9MRN Offline
MAc
*****

Liczba postów: 819
Dołączył: 29-08-2009
Post: #128
RE: Fork-Heńka... czyli jak sobie poradzić z DDS za pomocą ARDUINO
Trochę zagmatwałem :-)
1. Na początku uznałem, że problem z przepełnieniem faktycznie jest poważny i znalazłem na niego lekarstwo.

2. Następnie postanowiłem edukacyjnie pokazać na czym ten problem polega.

3. Jak już napisałem kawałek kodu demonstracyjnego (celowo z "błędem) i zobaczyłem wyświetlane wartości, to wyszło mi, że w NASZYM KONKRETNYM PRZYPADKU fakt przepełniania się licznika millis() najprawdopodobniej nie ma żadnego praktycznego znaczenia.
Smeter będzie działał i PRAWDOPODOBNIE (ponieważ millis działa na przerwaniach) czas potrzebny na obsługę wyświetlania smetra spowoduje, że tych kilka "dzikich" pomiarów występujących po przepełnieniu licznika millis() - (a w demo po przekroczeniu 255) zniweluje się błyskawicznie.

4. muszę jeszcze sprawdzić, ale wygląda na to, że tych "nieoczekiwanych" pomiarów będzie w realnym działaniu kilkadziesiąt - dopóki się liczniki nie wyrównają.

5. Zadanie domowe Ryśka jest cały czas obowiązujące.

Generalnie chodzi o to, że my sami powodujemy przepełnienie naszej zmiennej:
"s_metr_update_time (unsigned long)"
za pomocą linijki:
s_metr_update_time = millis() + s_metr_update_interval;

w której do "kończącego się" licznika millis() (też unsigned long) dodajemy wartość "s_metr_update_interval"
Czyli - jak millis() będzie na 99 przed końcem a my dodamy 100, to millis() się jeszcze nie przepełni ale nasza wartość " s_metr_update_time" się przepełni (przekroczy zakres przewidziany dla zmiennej typu unsigned long") i zacznie przyjmować kolejne wartości od zera.

Podsumowując - żeby się woda nie przelała nie możemy dodawać nic do millis().
.....
ale możemy odejmować ;-)

MAc
mrn

Ale jazda
03-11-2014 11:48
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Wiadomości w tym wątku
RE: Fork-Heńka... czyli jak sobie poradzić z DDS za pomocą ARDUINO - SP9MRN - 03-11-2014 11:48

Skocz do:


Użytkownicy przeglądający ten wątek: 32 gości