Browse Source

Always 4 temp sensors

pull/1/head
Scott Lahteine 9 years ago
parent
commit
410f64782a
  1. 33
      Marlin/temperature.cpp

33
Marlin/temperature.cpp

@ -226,7 +226,7 @@ void PID_autotune(float temp, int extruder, int ncycles)
unsigned long ms = millis(); unsigned long ms = millis();
if (temp_meas_ready == true) { // temp sample ready if (temp_meas_ready) { // temp sample ready
updateTemperaturesFromRawValues(); updateTemperaturesFromRawValues();
input = (extruder<0)?current_temperature_bed:current_temperature[extruder]; input = (extruder<0)?current_temperature_bed:current_temperature[extruder];
@ -1172,32 +1172,27 @@ enum TempState {
StartupDelay // Startup, delay initial temp reading a tiny bit so the hardware can settle StartupDelay // Startup, delay initial temp reading a tiny bit so the hardware can settle
}; };
#ifdef TEMP_SENSOR_1_AS_REDUNDANT static unsigned long raw_temp_value[4] = { 0 };
#define TEMP_SENSOR_COUNT 2
#else
#define TEMP_SENSOR_COUNT EXTRUDERS
#endif
static unsigned long raw_temp_value[TEMP_SENSOR_COUNT] = { 0 };
static unsigned long raw_temp_bed_value = 0; static unsigned long raw_temp_bed_value = 0;
static void set_current_temp_raw() { static void set_current_temp_raw() {
#ifndef HEATER_0_USES_MAX6675 #if HAS_TEMP_0 && !defined(HEATER_0_USES_MAX6675)
current_temperature_raw[0] = raw_temp_value[0]; current_temperature_raw[0] = raw_temp_value[0];
#endif #endif
#if EXTRUDERS > 1 #if HAS_TEMP_1
#ifdef TEMP_SENSOR_1_AS_REDUNDANT
redundant_temperature_raw =
#endif
current_temperature_raw[1] = raw_temp_value[1]; current_temperature_raw[1] = raw_temp_value[1];
#if EXTRUDERS > 2 #if HAS_TEMP_2
current_temperature_raw[2] = raw_temp_value[2]; current_temperature_raw[2] = raw_temp_value[2];
#if EXTRUDERS > 3 #if HAS_TEMP_3
current_temperature_raw[3] = raw_temp_value[3]; current_temperature_raw[3] = raw_temp_value[3];
#endif #endif
#endif #endif
#endif #endif
#ifdef TEMP_SENSOR_1_AS_REDUNDANT
redundant_temperature_raw = raw_temp_value[1];
#endif
current_temperature_bed_raw = raw_temp_bed_value; current_temperature_bed_raw = raw_temp_bed_value;
temp_meas_ready = true;
} }
// //
@ -1507,18 +1502,16 @@ ISR(TIMER0_COMPB_vect) {
} // switch(temp_state) } // switch(temp_state)
if (temp_count >= OVERSAMPLENR) { // 10 * 16 * 1/(16000000/64/256) = 164ms. if (temp_count >= OVERSAMPLENR) { // 10 * 16 * 1/(16000000/64/256) = 164ms.
if (!temp_meas_ready) { //Only update the raw values if they have been read. Else we could be updating them during reading. // Update the raw values if they've been read. Else we could be updating them during reading.
set_current_temp_raw(); if (!temp_meas_ready) set_current_temp_raw();
} //!temp_meas_ready
// Filament Sensor - can be read any time since IIR filtering is used // Filament Sensor - can be read any time since IIR filtering is used
#if HAS_FILAMENT_SENSOR #if HAS_FILAMENT_SENSOR
current_raw_filwidth = raw_filwidth_value >> 10; // Divide to get to 0-16384 range since we used 1/128 IIR filter approach current_raw_filwidth = raw_filwidth_value >> 10; // Divide to get to 0-16384 range since we used 1/128 IIR filter approach
#endif #endif
temp_meas_ready = true;
temp_count = 0; temp_count = 0;
for (int i = 0; i < TEMP_SENSOR_COUNT; i++) raw_temp_value[i] = 0; for (int i = 0; i < 4; i++) raw_temp_value[i] = 0;
raw_temp_bed_value = 0; raw_temp_bed_value = 0;
#ifndef HEATER_0_USES_MAX6675 #ifndef HEATER_0_USES_MAX6675

Loading…
Cancel
Save