www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wie lange dauert 32 Bit Division bei ATmega


Autor: Heribert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

wo finde ich denn, wie lang eine 32-Bit Division bei einem ATmega 
dauert?

ich möchte eine Zahl erweitern: 0xFFFFFFFF/T
T ist etwa 500 bis 10000

Danach Teile ich dieses Ergebnis durch 1500.

Ich verwende einen 14,7456 MHz Quarz.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>wo finde ich denn, wie lang eine 32-Bit Division bei einem ATmega
>dauert?


Nirgends. Die Zeit hängt auch von den Operanden ab.
Kannst ja mal im Simulator rumprobieren.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Nirgends. Die Zeit hängt auch von den Operanden ab.

Und der Programmiersprache.

MfG Spess

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Heribert schrieb:
> wo finde ich denn, wie lang eine 32-Bit Division bei einem ATmega
> dauert?

Ds hängt von der verwendeten Divisionsroutine ab.


> ich möchte eine Zahl erweitern: 0xFFFFFFFF/T
> T ist etwa 500 bis 10000
>
> Danach Teile ich dieses Ergebnis durch 1500.

Dann brauchst Du schonmal doppelt so lange, wie nötig.

Fasse erst die Konstanten zusammen und mache nur eine Division.


Peter

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder noch besser, mit Festkommaarithmetik und anstatt duch 1500 zu 
teilen teilt man besser durch 1024, nämlich mittels Schiebeoperation. 
Das ist deutlich schneller ;-)

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Zack (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da Dir schwammige Ausflüchte wohl nicht reichen:
rechne für die Division rund 20-30µs bei den gängigen C-Compilern, wobei 
30µs die Obergrenze ist.
Etwas schneller geht es mit float-Variablen, da dort nur 23Bit Mantisse 
dividiert werden müssen.

In der Codesammlung findet sich ein Beitrag, wo 'geschickterweise' (aber 
ohne Not) mit einem Mega644 Festkomma gerechnet wird. In der Folge 
treten einige Berechnungsfehler zu Tage. Da wird die Lösung zum Problem.
Gleich float zu nehmen, ist erheblich unproblematischer.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Da Dir schwammige Ausflüchte wohl nicht reichen:
>rechne für die Division rund 20-30µs bei den gängigen C-Compilern, wobei
>30µs die Obergrenze ist.

Das ist ohne Angabe der Taktfrequenz noch viel schwammiger.

MfG Spess

Autor: kruemeltee (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich verwende einen 14,7456 MHz Quarz.
...

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.