Zdravim. Potreboval bych implementovat funkci sin nebo cos do 8it pocesoru s instrukcni sadou 8051. tzn Muj dotaz zni. Jak rozlozim fukci sinus na zakladni matematicke operace kde muzu pouzit jen scitani , odcitani, nasobeni, (deleni jde take ,ale rad bych se mu vyhnul pokud to jde) Prozatim to resim prevodni tabulkou, ale neni to moc presne ani elegantni. Diky
Fórum › Matematika
Rozklad funkce sinus, cosinus
nebo muzes pouzit treba 16 hodnot v tabulce a aproximovat presnejsi hodnotu pomerne .. jako primku mezi sousedicimi body..
a nebo proste udelat 0-90 stupnu jako tabulku 0-255 (akorat zalezi, kolik mas mista ve flashce, do ram se to urcite nevejde, pokud bys tedy nemel externi)
Každá matematická operace, kterou 8051 má, je na 2 strojové cykly. Při tom to jsou jen unsigned int operace se dvěma operandy o velikosti 1 byte, cokoliv jiného se musí naprogramovat. Proto float point algebra na 8051 moc rychlá nebude, zůstal bych u tabulky. Nejméně náročné na velikost v paměti programu se jeví 0-90 stupňů jak píše KIIV, ale volil bych 128 hodnot o velikosti 16 bitů. Čtení takové tabulky je rychlé - pokud si dobře vzpomínám na assembler 8051 je to bázová adresa tabulky dat v DPTR a offset v A jako "index" hodnoty v tabulce. Pro 0 -90 st. čteš tabulku "zdola", pro 90 - 180 st čteš tabulku "zhora", pro 180 - 360 st uděláš totéž s opačným znaménkem.
Pokud to děláš v C/C++ můžeš si zkusit rychlost výpočtu, goniometrické funkce bývají implementovány i pro překladače pro 8051.
hu
Dal bych ji do paměti programu, RAM je málo.
hu
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Sinus a cosinus — založil Jiří
Šikmý vrh - Sinus, Cosinus — založil matesz
Graf funkce sinus — založil Petr S
C: cosinus v stupnoch — založil 8andrej8
Arkus cosinus v pascalu — založil Yety