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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.