Problem mit einfacher Rechnung

Gast #2434013
Lesenswert?

Hallo,

ich habe eine Schaltung gebaut die mehrer KTY Temperaturfühler 
auswertet.
Um die ADC-Werte in °C umzurechnen verwende ich die im folgenden Code zu 
sehende Formel.
Ich habe nun Probleme wenn ich Werte unter 0°C habe das die Funktion 
einfach -22°C ausgibt ich kann mir aber leider nicht erklären warum sie 
das macht.

Von der Hardware Seite her sollte alles in Ordung sein das Habe ich 
schon mehrfach überprüft und die anderen Fühler mit Temperaturen über 
40°C werden auch richtig ausgegeben.

1
int8_t umrechnung (uint16_t adc)
2
{
3
int8_t y=0;
4

5

6
y = ((adc-387)*20)/37;
7

8
  return y;
9
}
Gruß
assi
Gast #2434066
Lesenswert?

Hallo,
danke erstmal für die schnelle Antwort, jedoch weis ich nicht so richtig 
wie ich dieses Casten anstellen soll. Ich habe gerade mal nachgelesen 
aber eigentlich sollte doch alles int8_t sin oder???
Gast #2434093
Lesenswert?

assi schrieb:
> aber eigentlich sollte doch alles int8_t sin oder?

Nein, er rechnet zuerst auf Basis des Typen, der als Operand übergeben 
wird, deswegen geht ein negatives Ergebnis mit einem uint nicht. 
Außerdem würde auch ein 8Bit Integer falsch sein, da das 
Zwischenergebnis den Wertebereich eines int8 überschreiten kann.

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