Hallo zusammen, ich habe das Problem bei der Chip - Temperatur - Berechnung meines µC. Bisher hatte ich die zur Berechnung notwendigen Kalibrierungswerte stets als Konstante fest angelegt. (Variante 1) Da sich diese aber von µC zu µC unterscheiden habe ich das umgestellt, indem der µC sich die Parameter selber aus den Speicher liest. (Variante 2) •
1 | //#define TL 30 // Variante 1
|
2 | |
3 | #define TL (CALIBRATION0 & 0XFF) //Variante 2
|
Die Inhalte beider Varianten habe ich überprüft, indem ich diese in Variablen eingelesen habe. (siehe Bild) Für beide Varianten erhalte ich dieselben Werte. Die eigentliche Temperaturberechnung läuft dann allerdings ohne das einlesen in Variablen ab. Hier werden die Konstanten aus Variante 1 oder Variante 2 dann direkt genutzt. •
1 | float_Zaehler = (TL*VPH*ui16_Temperatur_CTAT) - (VPL*TH*ui16_Temperatur_CTAT) - (TL*VCH*ui16_Temperatur_PTAT) + (TH*VCL*ui16_Temperatur_PTAT) ; //Temperaturberechnung |
2 | |
3 | float_Nenner = (VCL*ui16_Temperatur_PTAT)-(VCH*ui16_Temperatur_PTAT)-(VPL*ui16_Temperatur_CTAT) + (VPH*ui16_Temperatur_CTAT) ; |
4 | |
5 | float_Temperatur = float_Zaehler/float_Nenner; |
Die Temperaturberechnung liefert zunächst für beide Varianten dieselben Werte. Das ändert sich allerdings, sobald ich die Temperatur mit Kältespray auf < 0°C absenke. Variante 1 liefert das korrekte negative Ergebnis. Variante 2 nicht. Es scheint so, als könnte ich mit der Variante 2 keine negativen Ergebnisse berechnen. Dasselbe geschieht, wenn ich für beide Varianten die Konstanten zunächst in Variablen hineinschreibe und dann mit diesen Variablen rechne. Ich würde mich sehr freuen, wenn mir da jmd. ein paar Tips geben könnte.

