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.
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.