To już lepiej brać 8 lub 16 próbek a dzielenie zastąpić przesunięciem wyniku w prawo o 3 lub 4 bity. K.
To już lepiej brać 8 lub 16 próbek a dzielenie zastąpić przesunięciem wyniku w prawo o 3 lub 4 bity. K.
ulyssess pisze:
Nie średnią, a środkową i nie liczysz tylko szukasz.
rpdrobny pisze:
Zamiast marnować tyle pamięci można zrobić prosty filtr IIR. Efekt będzie podobny.
A jaka to różnica w działaniu filtra?
ulyssess pisze:
Filtra - niewielka. Programu - ogromna. Przesunięcie w prawo to jedna bitowa operacja asemblera, jeden cykl procesora. A dzielenie przez 10 jest operacją matematyczną wykonywaną programowo, zwłaszcza na avr który nie ma sprzętowego dzielenia
No fajnie tylko trzeba jeszcze pisać w asemblerze, czego nie robie, a avr z dzieleniem programowym radzi sobie dość dobrze. Program gotowy na pomiar napiecia i pradu z filtrem programowym(niewielkim) zajął mi 3k kodu. Zatem miejsca mam jeszcze oporowo
ulyssess pisze:
Jest coś takiego jak kultura programowania, nawet jeśli ty nie widzisz różnicy, to nie znaczy że w kodzie (po skompilowaniu) nie ma. Skoro dzielenie przez potęgę dwójki kompilator może zamienić na jeden rozkaz asemblera (kodu maszynowego) a do twojego dzielenia musi wrzucać skomplikowaną procedurę, to różnica musi być. Choćby w prędkości działania programu - nawet jak ci nie zależy na niej zbytnio, ani nie wyciskasz ostatnich us z czasu procesora, to lepiej program pisać tak by był maksymalnie wydajny i "płynny" (a nie stawał w bliżej nieokreślonych miejscach na jakimś dzikim obliczeniu programowym na zmiennej wielobajtowej na kilkanaście/dziesiąt ms), a potrzebne opóźnienia "waity" były robione programowo w tych miejscach i w takiej wielkości jaką zaprojektujesz, a nie "jak wyjdzie"
Może ulyssess trolluje, a może i nie... Ale pisze :
Uwierz w kompilator. On naprawdę nie jest zupełnie głupi :) (no i jest jeszcze operator >> ;)
Sławek
Ja rozumie że jesli bym pisał oprogramowanie z bardzo długim kodem to może i miałoby to znaczenie i pewnie wtedy bym sie nad tym pomęczył trochę. Przy tym projekcie robię tak a nie inaczej z innych wzgledów, a po drugie nie dam sie kolejny raz wciagnąć w dyskusje na temat wyzszości tego języka programowania nad innym.
Have something to add? Share your thoughts — no account required.
Ask the community — no account required