Pomiar prądu - atmega8

Jun 01, 2009 28 Replies

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.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required