From e4b1e8651bdc0f96603e6a18d525df7f452d6432 Mon Sep 17 00:00:00 2001
From: Scott Lahteine <sourcetree@thinkyhead.com>
Date: Sun, 12 Apr 2015 23:06:50 -0700
Subject: [PATCH] next_ vars faster than previous_

- Change some `previous_` time vars to `next_` so an add only happens
at intervals
- Fix `HEATER_0_USES_MAX6675` polling too frequently, or not at all
---
 Marlin/temperature.cpp | 28 +++++++++++++++-------------
 1 file changed, 15 insertions(+), 13 deletions(-)

diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp
index f494edecf0..179023de6c 100644
--- a/Marlin/temperature.cpp
+++ b/Marlin/temperature.cpp
@@ -118,7 +118,7 @@ static volatile bool temp_meas_ready = false;
   static float temp_iState_min_bed;
   static float temp_iState_max_bed;
 #else //PIDTEMPBED
-  static millis_t  previous_bed_check_ms;
+  static millis_t  next_bed_check_ms;
 #endif //PIDTEMPBED
   static unsigned char soft_pwm[EXTRUDERS];
 
@@ -126,7 +126,7 @@ static volatile bool temp_meas_ready = false;
   static unsigned char soft_pwm_fan;
 #endif
 #if HAS_AUTO_FAN
-  static millis_t previous_auto_fan_check_ms;
+  static millis_t next_auto_fan_check_ms;
 #endif  
 
 #ifdef PIDTEMP
@@ -205,7 +205,7 @@ void PID_autotune(float temp, int extruder, int ncycles)
   float max = 0, min = 10000;
 
   #if HAS_AUTO_FAN
-    millis_t previous_auto_fan_check_ms = temp_ms;
+    millis_t next_auto_fan_check_ms = temp_ms + 2500;
   #endif
 
   if (extruder >= EXTRUDERS
@@ -240,9 +240,9 @@ void PID_autotune(float temp, int extruder, int ncycles)
       min = min(min, input);
 
       #if HAS_AUTO_FAN
-        if (ms > previous_auto_fan_check_ms + 2500) {
+        if (ms > next_auto_fan_check_ms) {
           checkExtruderAutoFans();
-          previous_auto_fan_check_ms = ms;
+          next_auto_fan_check_ms = ms + 2500;
         }
       #endif
 
@@ -631,16 +631,16 @@ void manage_heater() {
   } // Extruders Loop
 
   #if HAS_AUTO_FAN
-    if (ms > previous_auto_fan_check_ms + 2500) { // only need to check fan state very infrequently
+    if (ms > next_auto_fan_check_ms) { // only need to check fan state very infrequently
       checkExtruderAutoFans();
-      previous_auto_fan_check_ms = ms;
+      next_auto_fan_check_ms = ms + 2500;
     }
   #endif       
   
   #ifndef PIDTEMPBED
-    if (ms < previous_bed_check_ms + BED_CHECK_INTERVAL) return;
-    previous_bed_check_ms = ms;
-  #endif //PIDTEMPBED
+    if (ms < previous_bed_check_ms) return;
+    next_bed_check_ms = ms + BED_CHECK_INTERVAL;
+  #endif
 
   #if TEMP_SENSOR_BED != 0
   
@@ -1109,16 +1109,18 @@ void disable_heater() {
 
 #ifdef HEATER_0_USES_MAX6675
   #define MAX6675_HEAT_INTERVAL 250u
-  millis_t previous_max6675_ms = MAX6675_HEAT_INTERVAL;
+  static millis_t next_max6675_ms = 0;
   int max6675_temp = 2000;
 
   static int read_max6675() {
 
     millis_t ms = millis();
-    if (ms < previous_max6675_ms + MAX6675_HEAT_INTERVAL)
+
+    if (ms < next_max6675_ms)
       return max6675_temp;
     
-    previous_max6675_ms = ms;
+    next_max6675_ms = ms + MAX6675_HEAT_INTERVAL;
+
     max6675_temp = 0;
 
     #ifdef PRR