hey hallo, hat von euch einer ne ahnung wie man mit nem atmel ne sinus cosinus tangens und das gleiche rückirkend machen kann? hab den ganzen tag getüfftelt und fand keine lösung. wäre echt mal genial
Hi Ulrich Entweder mit einer Taylorreihe das ist aber sehr rechenaufwendig oder mit einer Tabelle(da kann man die Symetrien die bestehen) ausnutzen CU Wolfram
Und wo ist dein Problem dabei? 3 Möglichkeiten: 1.Compiler benutzen, i.a. unterstützen die trig. Funktionen 2. Funktion z.B. von Excel berechnen lassen, die Ergebnisse in gewünschter Abstufung und Genauigkeit als Tabelle im Prozessor abspeichern 3. passende Assemblerroutinen suchen (selbst schreiben dürfte langwierig werden) Variante 1 ist vorzuziehen, arbeitet auch genauer, allerdings ist ein Zugriff auf eine fertige Tabelle viel schneller, braucht aber viel Speicher (Beispiel 16bit Genauigkeit, Winkelauflösung 0,1° -> 1800 byte). Du brauchst allerdings nur einen Quadranten abzuspeicher, den Rest kann man einfach daraus ableiten. Ich hatte mal so ein Beispiel bei einem Rundlaufmeßgerät, als Eingangsgrößen ein Winkelenkoder und ein berührungsloses Abstandsmesssystem, Ausgabemedium war ein xy-Schreiber, der ein Polardiagramm zeichnen sollte, und das in Echtzeit. Daß habe ich aus Zeitgründen mit einer Tabelle gemacht.
tya geht leider nicht, soll eine nc bohrmaschine werden die das excellon-format (Bohrdaten) in echtzeit auf zwei winkel um ememuliert, wo könnte man da passende assemblerroutinen finden? oder wie könnte sie selber erstellen? finde keine mathematische lösung?
Wo ist denn Dein Problem? Die Tabellenlösung mit Ausnutzung der Symetrie ist das Schnellste, was man bekommen kann. Zwischenwerte (Xi), die nicht in der Tabelle aufgeführt sind, werden folgendermaßen ermittelt: f(Xi) = (f(Xi-1) + f(Xi+1)) / 2 Da man in Assembler in der Regel nur mit Ganzzahlen arbeitet, muß man halt die Funktionswerte mit einem Faktor multiplizieren. So ist der sin(90) also nicht 1, sondern z.B. 100. Technisch praktisch wird bei Compilernroutinen so eine Funktion immer durch ein Polynom n-ten Grades hinreichend approximiert. Der Funktionswert wird dann sehr schnell durch das Horner-Schema ermittelt. Grüße Oliver
Hi Ulrich in Bascom gehts ganz einfach Dim A as Single Dim B as Single Dim C as Single A = 10 'Winkel B = Deg2rad(a) 'Umrechnung ins Bogenmass C = Sin(b) 'und das ist der Sinus von A Gruss Gerhard
Hi! Das geht auch mit dem sog. CORDIC - Algorithmus. Einfach mal danach googeln. Man kann damit iterativ trigonometrische Funktonen berechnen und braucht im Wesentlichen nur Additionen und Shift - Operationen. Wurde früher in Kampf-Flugzeugen zur Navigation verwendet...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.