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


von Heribert (Gast)


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.

von holger (Gast)


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.

von spess53 (Gast)


Lesenswert?

Hi

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

Und der Programmiersprache.

MfG Spess

von Peter D. (peda)


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

von Falk B. (falk)


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 ;-)

von Falk B. (falk)


Lesenswert?


von Zack (Gast)


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.

von spess53 (Gast)


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

von kruemeltee (Gast)


Lesenswert?

>Ich verwende einen 14,7456 MHz Quarz.
...

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
Noch kein Account? Hier anmelden.