Bascom Long - mir fehlt ein Bit

OP #3267289
Lesenswert?

Moin,

ich will immer noch den BMP085 auslesen.
Auf dem Rechenweg um mit den Kalibrierdaten den echten Druck zu 
bekommen, gibt es Schritte, bei denen Variablen unsigned Long werden 
können (laut Datenblatt). Das gibt es bei Bascom aber nicht, Long ist 
signed.
Bei Single oder Double fürchte ich um die Genauigkeit. Ich möchte 
wirklich jedes Bit nutzen, da ich die volle Auflösung zumindest 
probieren möchte.

Als Workaround habe ich jetzt folgende Idee:
Es soll z.B. B4= AC4 * (X3+32768) / 2^15 berechnet werden.
Das Ergebnis passt ev. nicht in ein signed Long und was anderes habe ich 
nicht.
Im nächsten Schritt geht es dann aber wieder mit signed Long weiter.
Ich nehme eine der Variablen, schiebe sie temporär nach rechts und 
prüfe, ob das Ergebnis in 30 bit passt. Wenn ja ist alles gut und ich 
rechne normal.
Wenn nicht, setze ich ein Flag (mein fehlendes 32. Bit) und 
berücksichtige den Overflow im nächsten Schritt.

Das erscheint mir irgendwie umständlich. /2^15 kann ich ja auch vorher 
machen, oder? A * B  X oder A  X * B ist ja das Gleiche.

In einem weiteren Schritt:
B7 = ((unsigned long)UP - B3) * (50000>>osrs)
Mein osrs ist 3, also wird das auch immer in 31 bit passen?
Wie muß ich ((unsigned long)UP - B3) verstehen? UP und B3 sind signed 
Long. Worauf bezieht sich hier das (unsigned long)?
Soll das Ergebnis UP - B3 in einer unsigned Long unter Null überlaufen 
(können)?

Die ganze Rechnerei ist so kompliziert, daß ich nicht überblicke, was 
passiert wenn ich das irgendwo vereinfache. Deswegen möchte ich mich 
möglichst an den Weg im Datenblatt halten.

Bin gespannt auf alle Hinweise, ausser, daß ich einen vernünftigen 
Compiler nehmen soll ;-)

Gruß,
Norbert
OP #3267341
Lesenswert?

Hi,

ich muß echt öfter in die aktuelle Bascom Hilfe schauen. Na klar, Dword 
ist das, was ich brauche - Danke!
Jetzt dämmert es auch, das gibt es wohl schon ein paar Jahre in Bascom.
Damit bin ich alle Sorgen los.

@A.K.:
Ganz ehrlich gesagt weiß ich es nicht. Wieviele Bit hat die Mantisse?
Edit: Jaja, nachträglich 53bit für die Mantisse reineditiert ;-) Danke!
Spielt jetzt hier keine Rolle mehr aber das muß ich mir vielleicht für 
die Zukunft nochmal reinziehen.

Gruß,
Norbert

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren