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.
>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.
Hi
>Nirgends. Die Zeit hängt auch von den Operanden ab.
Und der Programmiersprache.
MfG Spess
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
Oder noch besser, mit Festkommaarithmetik und anstatt duch 1500 zu teilen teilt man besser durch 1024, nämlich mittels Schiebeoperation. Das ist deutlich schneller ;-)
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.