mikrocontroller.net

Forum: Compiler & IDEs Dauer eine Division mit Kommazahl


Autor: WorkMännchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wie kann man ausrechnen bzw. schätzen, wie lange eine Division von eine 
Double Zahl durch 1.002 mit 16MHz Atmega dauern würde?

Autor: Thomas Bremer (Firma: Druckerei Beste) (virtupic)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenne den Prozessor nicht. Wenn er Hardware für die Division hat, 
dann steht das im Datenblatt. Wenn nicht, dann musst du die 
Ausführungszeit des entsprechenden Code ausrecchnen.

Alternativ kannst du messen. Du nimmst eine Reihe von vershiedenen 
Zahlen, lässt sie durch 1.002 teilen misst die Ausführungszeit und 
teilst durch die Anzahl der Zahlen.

Falls du es gerne schnell hättest, dann solltest du mit (1 / 1.002) 
multiplizieren. Geht meistens schneller.

virtuPIC

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da gibt es mehrere Möglichkeiten:

- Im erzeugten Assemblercode die Zyklen zählen,
- vom Simulator die Zyklen zählen lassen,
- auf realem AVR die Zyklen vom Bit-Timer/Counter zählen lassen oder
- auf realem AVR die Zeit für bspw. 100000 Divisionen mit der Stoppuhr
  messen.

Wenn es auf Geschwindigkeit ankommt, würde ich aber nicht durch 1.002
dividieren, sondern mit 1/1.002 multiplizieren.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn es NUR auf Geschwindigkeit ankommt, würde ich die 2 Promille 
Abweichung in Kauf nehmen, und die ganze Rechnerei sein lassen.

Oliver

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
yalu wrote:

> Wenn es auf Geschwindigkeit ankommt, würde ich aber nicht durch 1.002
> dividieren, sondern mit 1/1.002 multiplizieren.

Gute Idee... sofern das ne Konstante ist musst das dann allerdings auch 
so machen, die groesseren Megas koennen in HW multiplizieren.

Was willst denn ueberhaupt machen, vielleicht gibt es ja auch ne bessere 
Loesung.

Autor: Tobias Frost (coldtobi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einfach im AVR Studio simulieren.. Der zählt die Clocks, die Du 
brauchst, wenn Du den SW-Simulator nimmst.

PS: Ich hab in einem Projekt ein Polynom 3. Grades berechnet. Braucht 
ca. 250us @ 4 Mhz.

1/1.002 ist im Übrigen in Ganzzahlarith. 1, hilft also nix, der HW 
Multiplier.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde einfach 1/512 von der Zahl abziehen.
Das entspricht (bis auf Rundungsfehler) der Division durch 1,001957. Der 
Fehler der dabei entsteht liegt bei 0,004%, und dürfte daher bei einer 
16bit Zahl garnicht auftauchen (außer eben als +/-1LSB Rundungsfehler).

Autor: Jupp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>wie kann man ausrechnen bzw. schätzen, wie lange eine Division von eine
>Double Zahl durch 1.002 mit 16MHz Atmega dauern würde?

Indem du das Programm schreibst und mit AVR Studio simulierst und die 
Anzahl der Takte abliest, fertig.

Autor: mr.chip (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 1/1.002 ist im Übrigen in Ganzzahlarith. 1, hilft also nix, der HW
> Multiplier.

Wenn man (nur ein wirklich kleines Stück) weiter  denkt, dann geht das 
sehr wohl: Man shiftet die zu Zahlen einfach ein bisschen nach links, so 
dass dann beispielsweise die 6 LSB Nachkommastellen darstellen.

Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>1/1.002 ist im Übrigen in Ganzzahlarith. 1, hilft also nix

Nicht ganz. 1/1.002 ist in Ganzzahl 10000000/1002 (4 gültige Ziffern in 
1,002)

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.