mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Takte der arctan Fkt und andere


Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

ich will ne winkelauswertung eines drehgebers realisieren.

das kann  man über eine nachlaufsteuerung und einem zähler realiseren
oder aber durch direkte berechnung des

winkel=> arctan=sin(x)/cos(x) aus den resolversignalen.

wenn man sich für die zweite variante entscheidet, stellt sich die
frage wie lange (wieviel taktzyklen) ein dsp dafür braucht.
danach würde sich auch die auswahl des eventuellen dsp's richten, wenn
es nicht bei dieser einen berechnung bleiben soll.

woher weiß man generell wie solche prozessoren bestimmte rechenbefehle
ausrechnen?
arctan kann man zum beispiel in einer reihe entwickeln, so dass dann
nur noch addition und multiplikation übrig bleibt, was ein dsp gut
rechnen kann. macht dies ein auf dsp zugeschnittener compiler?
also leute mit erfahrung werden über die frage lachen, würde mich
dennoch für tips und hinweise bedanken...

danke

gruß alex

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
arctan=sin(x)/cos(x)

Nicht wirklich ...

Ein gängiger DSP benötigt dafür genauigkeitsabhängig keine 100 Takte.
Typische Taktfrequenzen liegen zwischen 80 ... 400MHz. Basisfunktionen
werden z.T. mitgeliefert (je nach Hersteller).

Autor: Detlef A (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wenn Du z.B. nen AVR (uC, nicht mal DSP) in C programmierst und
atan2((double)y,(double)x) benutzt, werden die benötigten Routinen aus
einer library zugelinkt, das kostet 1k codesize pi*Daumen, Berechnung
dauert auch, muß man sich aber nicht um Reihenentwicklungen etc.
kümmern, selbst ein solch kleiner 8-Bitter kann das gut, wenn man Zeit
und Platz hat.

Den ersten Teil der Frage verstehe ich nicht richtig
(tan(x)=sin(x)/cos(x), was issn nen Resolver), ich habe aber ne prima
C-Routine, die Dir aus zwei 16-Bit y,x den Winkel dazwischen als
16Bit-Zahl berechnet, recht schlank und ohne Multiplikationen, wenn die
nützt, kann ich die posten.

Cheers

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"recht schlank und ohne Multiplikationen"

Lass mich raten, das Cordic-Verfahren?

Sobald die reale Hardware über einen Multiplizierer verfügt ist diese
Variante im Vergleich zu Reihe usw. nicht mehr praktikabel ...
Auf FPGAs u.Ä. hat sie jedoch ihre Berechtigung.

Eine Reihenentwicklung wird in den gängigen Bibliotheken eher nicht
verwendet. Besser ist es, mittels der Methode der kleinsten Quadrate
ein Polynom "durch" charakteristische Punkte der Ursprungsfunktion zu
legen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.