www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Aufsplittung einer Hyperbelfunktion in linearisierte Abschnitte - gute Idee?


Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin zusammen,

ich stehe gerade vor einem Problem, hab eine Möglichkeit gefunden, und 
wollte mal hören was ihr davon haltet.

Ich messe die Zeit zwischen zwei Impulsen und ordne dieser Zeit einen 
Wert zu. Der Funktionsverlauf ist hierbei "unglücklicherweise" eine 
Hyperbel. Da ich dank vieler sonstigen Rechnungen nicht Unmengen an 
Rechenzeit zur Verfügung habe, ist es schlecht hier die Division 
einzuführen :(

Also hab ich mir folgendes überlegt:

Ich Teile die Funktion in Abschnitte, die ich dann linearisiere, somit 
umgehe ich zumindest die Division. Das bringt zwar einen 
Ungenauigkeitsaspekt mit sich, doch lässt sich dieser ja mit der 
Abschnittsanzahl regeln.

Nun zum Wertebereich: Der Wertebereich ist ziemlich groß, worauf ich auf 
uint32_t gehen muss.
Die Zeit-Achse reicht hierbei von "180ms" bis 1 800 000ms.
Die zugehörige y-Achse von 1 bis 10 000.

Was haltet ihr von der Idee? - Oder habt ihr vielleicht noch eine 
bessere?
PS: Mein µC ist der Atmega169P (32768Hz Taktung). AVR-GCC 
Programmierung.

Merci beaucoup
Marcel

Autor: Nosnibor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich fürchte, so viel schneller als eine Division ist der Tabellenzugriff 
und die anschließende Rechnerei auch nicht.
FPU-Hardware verwendet Näherungsverfahren, um die Division zu 
beschleunigen, aber die haben eben auch eine richtig schnelle 
Multiplikation zur Verfügung, was auf dem AVR für 32bit-Zahlen ja nicht 
mehr gilt. Siehe 
http://en.wikipedia.org/wiki/Division_(digital)#Fa...

Autor: Jobst M. (jobstens-de)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marcel schrieb:
> PS: Mein µC ist der Atmega169P (32768Hz Taktung). AVR-GCC
> Programmierung.

Controller schneller takten?
Controller, der (schnell) teilen kann?
In Assembler arbeiten?


Gruß

Jobst

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich finde die Idee mit der Tabelle plausibel.
Das habe ich vor Urzeiten auf einem Atari ST mal ähnlich
gemacht für sin und cos, da hat das richtig was gebracht.

Autor: Jobst M. (jobstens-de)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei komplexen Funktionen wie Sinus, macht das ja auch Sinn.
Aber für 1/n eine Tabelle anzulegen, finde ich schon etwas übertrieben.
Das ist allerdings auch der Grund, warum ich immernoch gerne auf den 
guten, alten 51er zurückgreife - der kann teilen. ;-)


Gruß

Jobst

Autor: Zwölf Mal Acht (hacky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Division kann man als repetitive Subtraktion machen, das ist auch 
bei 32 bit noch schnell. Ich wuerd's mal mit dem Simulator anschauen.

Autor: Grrrr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist das denn für eine Hyperbel?
Was für ein mathematischer Zusammenhang?

Ein einfaches Beispiel bei dem die Dauer zwischen zwei Impulsen im 
Zusammenhang mit einer gewissen Form von Hyperbel steht, ist der 
zwischen Frequenz und Periodendauer. In diesem Fall wäre es vielleicht 
auch möglichdie Messmethode so zu ändern, das man die Anzahl Impulse 
eines HW- oder SW-Generators (also eines Timerinterrupts) zwischen zwei 
Impulsen zählt. Dann braucht man keine Division mehr. Höchstens noch 
eine Multiplikation.

Liesse sich das in Deinem Fall vielleicht anwenden?

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.