PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Komma Berechnungen mit dem AVR (ATtiny oder ATmege)



Hanni
18.05.2006, 20:44
Hallo,

aufgrund gewisser Algorithmen sehe ich mich im Moment gezwungen mich mit dem Thema "Berechnungen mit Kommastellen auf einem AVR Mikrocontroller" zu beschäftigen.

Die Grundvoraussetzungen:

a= 0...255
b= 0...255
c = 0...255
d = 0...255

Die Formeln:

x = ( 4 + ( (a-b) / (c-d) ) *60
y = (c - d) / c

Das Ergebniss der ersten Formel hat einen Wertebereich von 0...360 ( die 4 könnte auch eine 0 oder 2 sein).
Die zweite Formel ergibt einen Wertebereich von 0...1

Mein Problem ist nun das folgende:

Da ich in assembler programmiere, bin ich es schlicht und einfach nicht gewohnt mit Kommazahlen zu programmieren. Genauer gesagt, mir fehlt defakto ein Gedankenansatz dafür.

Aufgrund der Tatsache das ich die Ergebnisse später weiter verwenden möchte schwebt mit eine Genauigkeit von 4 oder 5 Nachkommastellen vor.

Meine Frage dazu: Wie könnte man soetwas realisieren ?! (kein Code sondern Gedankenansätze)


Grüße,

da Hanni.

ogni42
18.05.2006, 21:28
Stichwort ist: Festkommazahlen. Da Du 5 Stellen hinter dem Komma haben willst (ich nehme mal an Dezimalstellen) musst Du die Zahlen vorher entsprechend nach links (z.B. 14 Stellen = 8192) schieben. Du merkst Dir einfach, wo Du dann das Komma setzen musst (geht so ja auch beim Multiplizieren und Dividieren von Hand).

Das Aufwändige ist, dass Du dann bei 32bit Operationen landest und entsprechend mit Über/Unterläufen hantieren musst.

EDIT: Auf mikrocontroller.net gibt es gerade einen Thread dazu. Ausserdem hat Atmel dazu Appnotes (200 und 201), die gibts auf der Atmel Website.

Hanni
19.05.2006, 15:05
Hmm, der Tread auf Mikrocontroller.net is von mir ...

und die Appnotes muss ich mir mal geben ... (hab gar net gewusst, das es die gibt ....)

Grüße, da Hanni.

ogni42
19.05.2006, 16:02
Gar nicht gesehen :-)