mazur89 Napisano Czerwiec 18, 2011 Udostępnij Napisano Czerwiec 18, 2011 Witam serdecznie. Mam pewne pytanie, jak dużym obciążeniem dla mikroprocków jest obliczanie sinusów czy też cosinusów, co de facto jest tym samym...? (Jak rozumiem taka możliwość w ogóle istnieje?). Mam bowiem zadanie cyfryzacji wyników pomiarów z pewnego przyrządu. Układ pomiarowy mierzący kąt został już przeze mnie wykonany. Teraz się zastanawiam czy wyniki pomiarów przedstawić na LCD (co wymagało by obliczenia równania z dwoma sinusami) czy też wysłać wyniki (kąt) po RS np do excella i tam wykonać obliczenia i wizualizację. Oczywiście można by zrobić obie te rzeczy, jednak tu właśnie pytanie, na ile funkcje matematyczne są dla mikroprocesora obciążające. Pozdrawiam. Mazur. Cytuj Link do komentarza Share on other sites More sharing options...
OldSkull Czerwiec 18, 2011 Udostępnij Czerwiec 18, 2011 mikroprocesor licząc sinusa będzie korzystał z szereg Maclaurina, więc albo będzie liczył wolno i niedokładnie, albo bardzo wolno i mniej niedokładnie 😉 Zwykle rozwiazuje się to w ten sposób, że tablicuje się ćwiartkę sinusa w pamięci programu. Niestety ATmega ma mało pamięci, ale możesz np. zapisać 1571 16b próbek (czyli zajmiesz 3.07kB pamięci) uzyskując dokładność 0.001 radiana, jeszcze dokładniej możesz próbować estymować liniowo. 1 Cytuj Link do komentarza Share on other sites More sharing options...
GAndaLF Czerwiec 18, 2011 Udostępnij Czerwiec 18, 2011 A miało by sens wprowadzenie na sztywno współczynników wielomianu aproksymującego sinusa w przedziale 0-2pi obliczonych wcześniej np w matlabie, żeby mikrokontroler musiał wykonać tylko kilka prostych dodawań i mnożeń oraz odpowiednio przygotować argument? Cytuj Link do komentarza Share on other sites More sharing options...
mazur89 Czerwiec 18, 2011 Autor tematu Udostępnij Czerwiec 18, 2011 OldSkull Dzięki bardzo za odpowiedź. Zaciekawiła mnie opcja z tą ćwiartką sinusa, czy dobrze kombinuję, że wtedy w zależności od argumentu czytasz tablicę w lewo albo w prawo, lub też to samo tylko ze znakiem ujemnym? Pozdrawiam. Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
Zuk Czerwiec 18, 2011 Udostępnij Czerwiec 18, 2011 Sinus w przedziale <-1, 1> jest bardzo nieefektywny ponieważ wymaga zmiennej zmiennoprzecinkowej (float). Rozwiązaniem może być przeskalowanie do przedziału <0, 255> Wtedy można to przeliczać w excelu lub na potrzeby wyświetlenia wartości na LCD można tylko raz użyć zmiennej typu float a wszystkie operacje matematyczne można wykonać na int8. Dobrym rozwiązaniem wydaje mi się może być tablicowanie w EEPROMie wartości sinusa ze zmiennym krokiem a wartości pośrednie linearyzować. Trzeba ustalić optymalną liczbę punktów i ewentualnie błąd linearyzacji. Pozdrawiam Zuk Cytuj Link do komentarza Share on other sites More sharing options...
OldSkull Czerwiec 18, 2011 Udostępnij Czerwiec 18, 2011 mazur89, dokładnie tak. Zuk, najlepiej przeskalować i zapisać jako liczba stałoprzecinkowa. Polecam 16b, gdyż jest większa dokładność i większa wygoda przy przybliżaniu. Nie rozumiem dlaczego EEPROM - odczyt z niego nie jest zbyt szybki, poza tym zapisana wartość nie będzie się zmieniać, a dodatkowo jest go niewiele w procesorze. Lepiej zapisać w pamięci programu. Cytuj Link do komentarza Share on other sites More sharing options...
Zuk Czerwiec 18, 2011 Udostępnij Czerwiec 18, 2011 OldSkull zgadzam się z Tobą, jednak takie moje zboczenie, że unikam zmiennych innych niż 8b,oczywiście nie zawsze tak można więc zgadzam się - 16b da większą dokładność -kwestia potrzeby Oczywiście można także w pamięci programu. Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!