Forum: Mikrocontroller und Digitale Elektronik schnelle Division für ATtiny2313


von Rudi D. (rulixa)


Lesenswert?

Ich brauche Fixkomme div und mul für tiny2313.
Da gibts ja die AVR200.pdf die das gut beschreibt. Es funktioniert genau 
so, wie man die Division und Mul. in der Schule lernt.
Ich nehme noch 8 bit dazu, sodass der Quotient dann auch 8 bits 
Nachkommastellen hat, was mit 1/256 nur einen max. Fehler von weniger 
als 0,4 Prozent für mich ausreichend ist

Es gibt dann noch die "Newton-Raphson division" im en.wikipedia.
Da wird der Kehrwert des Divisors ermittelt und das ganze läuft dann auf 
eine Multiplikation hinaus.

Kann es sein, dass diese Methode nur Sinn macht, wenn man einen HW 
Multiplizierer im uC hat?
Was ja bei tiny13 nicht der Fall ist, also bleibt nur die klassische 
Methode.
Oder hat jemand eine Idee?

Rudi

von Gast (Gast)


Lesenswert?

Wie schnell brauchst Du es denn tatsächlich? Oder soll es nur schnell 
sein - was immer 'schnell' bedeuten mag?

von aha (Gast)


Lesenswert?

Naja. Eine Division zu fuss ist Schieben und subtrahieren. Eine 
Multiplikation ist schieben und addieren. Ohne unterstuetzende Hardware 
ist beides dasselbe.

von egberto (Gast)


Lesenswert?

sonst keine Nebenbedingungen - nur schnell??

Dann nimm eine (riesige) Tabelle ;-))

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Klar, ne 64k-Tabelle in nem Tiny mit 2k Flash...

Ein paar realistischere Ideen wurden andiskutiert in

Beitrag "Division von unsigned char"

von Matthias L. (Gast)


Lesenswert?

>Klar, ne 64k-Tabelle in nem Tiny mit 2k Flash...

WinRar

duckundweg

von Jens (Gast)


Lesenswert?

7zip is viel besser XD

von Rudi D. (rulixa)


Lesenswert?

Danke Johann, das ist interessant, weil es eine deutliche Reduktion 
bringen kann.
Mit der Reziproktabelle braucht man den Kehrwert nicht mehr berechnen.

Da wäre noch eine Interpolationsmethode zur Reduktion der Tabelle von 
Vorteil.

von sdadsa (Gast)


Lesenswert?

Von den 2k Flash kann man 1k auf den Interpolationsalgorithmus und 500 
byte auf die Tabelle verpuffen. Dann bleiben ja noch 500 byte fuer den 
effektiven Code....

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.