Forum: Compiler & IDEs Temperatur berechnen


von Dude (Gast)


Lesenswert?

Ein Tsic506 sagt: 930 Dezimal.
Datenblatt: centigrade = tsicdata/2047*(TSIC_HT-TSIC_LT) + TSIC_LT;
und HT = 60, LT = -10 seien Standardwerte.

Demnach 930/2047*(HT-LT)+LT=21,80 °C, das kommt hin.
1
char buffer[8];
2
centigrade = tsicdata/2047*(TSIC_HT-TSIC_LT) + TSIC_LT;
3
itoa( centigrade, buffer, 10 );
Ergibt aber "246" bzw. "-10" wenn man centigrade auf int8_t ändert.

Auch
1
centigrade = tsicdata*(TSIC_HT-TSIC_LT)/2047 + TSIC_LT;
macht da keinen Unterschied.
Wie komme ich ohne floating point lib auf ein brauchbares Ergebnis?

von Dude (Gast)


Lesenswert?

Letztenendes steht da
1
centigrade = tsicdata*70/2047-10;

An der Schriftart Speicher eingespart und den Datetyp etwas aufgebohrt 
und gecastet geht
1
centigrade = (int32_t)tsicdata*70L/2047L-10L;

von Matthias L. (Gast)


Lesenswert?

AUch wenn im Datenblatt 2047 steht, es muß durch 2048 heißen!

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.