chiark / gitweb /
make analog2tempBed return a precise celsius reading for BED_USES_THERMISTOR, complem...
authorhaxar <grezski@gmail.com>
Sat, 3 Mar 2012 01:15:21 +0000 (17:15 -0800)
committerhaxar <grezski@gmail.com>
Sat, 3 Mar 2012 01:15:21 +0000 (17:15 -0800)
Marlin/temperature.cpp

index 1155d88cf455bad56b5755972c391cc816c71138..77f9491abd2487b51d0583d30f5c68a9c87e7efa 100644 (file)
@@ -397,7 +397,7 @@ float analog2temp(int raw, uint8_t e) {
 // For bed temperature measurement.
 float analog2tempBed(int raw) {
   #ifdef BED_USES_THERMISTOR
-    int celsius = 0;
+    float celsius = 0;
     byte i;
 
     raw = (1023 * OVERSAMPLENR) - raw;
@@ -408,9 +408,8 @@ float analog2tempBed(int raw) {
       {
         celsius  = PGM_RD_W(bedtemptable[i-1][1]) + 
           (raw - PGM_RD_W(bedtemptable[i-1][0])) * 
-          (PGM_RD_W(bedtemptable[i][1]) - PGM_RD_W(bedtemptable[i-1][1])) /
-          (PGM_RD_W(bedtemptable[i][0]) - PGM_RD_W(bedtemptable[i-1][0]));
-
+          (float)(PGM_RD_W(bedtemptable[i][1]) - PGM_RD_W(bedtemptable[i-1][1])) /
+          (float)(PGM_RD_W(bedtemptable[i][0]) - PGM_RD_W(bedtemptable[i-1][0]));
         break;
       }
     }
@@ -419,13 +418,12 @@ float analog2tempBed(int raw) {
     if (i == bedtemptable_len) celsius = PGM_RD_W(bedtemptable[i-1][1]);
 
     return celsius;
-    
   #elif defined BED_USES_AD595
     return ((raw * ((5.0 * 100.0) / 1024.0) / OVERSAMPLENR) * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET;
   #else
     #warning No heater-type defined for the bed.
+    return 0;
   #endif
-  return 0;
 }
 
 void tp_init()