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: 817
Dołączył: 29-08-2009
Post: #54
RE: Fork-Heńka... czyli jak sobie poradzić z DDS za pomocą ARDUINO
Złomek wygląda super. ;-)
Proponuję tylko odwrócić kolejność ustawiania kroku, bo naturalnym jest coraz dokładniejsze wstrajanie się w stację - czyli krok powinien się zmniejszać a nie zwiększać.

I jeszcze jedno - ponieważ smeter zabiera trochę czasu procesora, to dobrze jest go trochę zoptymalizować. Doczytałem kiedyś, że map() jest jedną z paskudniejszych funkcji arduino. Jeżeli nie najwolniejszą.
Dlaczego? - bo żeby zrobić mapowanie to mnoży i dzieli. a arduino tak naprawdę, to szybko potrafi dzielić wyłącznie przez 2
Zatem lepiej zrezygnować z paru pikseli, zostawić ich 80 i zastosować szybkie przesunięcie zamiast mapowania:
(>>7 to przesunięcie liczby binarnej o 7 pozycji czyli tak naprawdę podzielenie przez 128)

old:
int s_position = map(s_value,0,1023,1,83);

new:
int_position = (s_value*10)>>7

czyli w przetłumaczonej na ludzki język wersji (uawga tylko dla ludzi nie dla procesora):
int_position = (s_value*10)/128 - to tak żeby sobie sprawdzić :-)

zwykle jest tak, że przy atmegowej dokładności przetwornika analogowo cyfrowego możemy sobie pozwolić na zaokrąglenia
Teraz, jak jeszcze kodu jest mało to nie ma większej wagi, ale jak się funkcji namnoży, to skracanie rzeczy dziejących się "stale" może mieć znaczenie.

MAc
mrn

PS
mam nadzieję, że się gdzieś nie walnąłem :-)
(Ten post był ostatnio modyfikowany: 20-10-2014 21:21 przez SP9MRN.)
20-10-2014 19:57
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 - 20-10-2014 19:57

Skocz do:


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