diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h
index 1c3faf5fc6..8c12b0f85d 100644
--- a/Marlin/Configuration.h
+++ b/Marlin/Configuration.h
@@ -215,7 +215,7 @@ Here are some standard links for getting your machine calibrated:
// If your configuration is significantly different than this and you don't understand the issues involved, you probably
// shouldn't use bed PID until someone else verifies your hardware works.
// If this is enabled, find your own PID constants below.
-#define PIDTEMPBED
+//#define PIDTEMPBED
//
//#define BED_LIMIT_SWITCHING
@@ -226,10 +226,17 @@ Here are some standard links for getting your machine calibrated:
#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current
#ifdef PIDTEMPBED
-// Felix Foil Heater
- #define DEFAULT_bedKp 103.37
- #define DEFAULT_bedKi 2.79
- #define DEFAULT_bedKd 956.94
+//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
+//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10)
+ #define DEFAULT_bedKp 10.00
+ #define DEFAULT_bedKi .023
+ #define DEFAULT_bedKd 305.4
+
+//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
+//from pidautotune
+// #define DEFAULT_bedKp 97.1
+// #define DEFAULT_bedKi 1.41
+// #define DEFAULT_bedKd 1675.16
// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles.
#endif // PIDTEMPBED
@@ -273,15 +280,15 @@ your extruder heater takes 2 minutes to hit the target on heating.
// uncomment the 2 defines below:
// Parameters for all extruder heaters
-#define THERMAL_RUNAWAY_PROTECTION_PERIOD 60 //in seconds
-#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 5 // in degree Celsius
+//#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds
+//#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius
// If you want to enable this feature for your bed heater,
// uncomment the 2 defines below:
// Parameters for the bed heater
-#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 30 //in seconds
-#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 5// in degree Celsius
+//#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds
+//#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius
//===========================================================================
diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp
index 3e14056e21..d50c4265b0 100644
--- a/Marlin/temperature.cpp
+++ b/Marlin/temperature.cpp
@@ -1,19 +1,19 @@
/*
temperature.c - temperature control
Part of Marlin
-
+
Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
-
+
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
-
+
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
@@ -22,8 +22,8 @@
This firmware is a mashup between Sprinter and grbl.
(https://github.com/kliment/Sprinter)
(https://github.com/simen/grbl/tree)
-
- It has preliminary support for Matthew Roberts advance algorithm
+
+ It has preliminary support for Matthew Roberts advance algorithm
http://reprap.org/pipermail/reprap-dev/2011-May/003323.html
*/
@@ -63,20 +63,20 @@ float current_temperature_bed = 0.0;
float bedKi=(DEFAULT_bedKi*PID_dT);
float bedKd=(DEFAULT_bedKd/PID_dT);
#endif //PIDTEMPBED
-
+
#ifdef FAN_SOFT_PWM
unsigned char fanSpeedSoftPwm;
#endif
unsigned char soft_pwm_bed;
-
+
#ifdef BABYSTEPPING
volatile int babystepsTodo[3]={0,0,0};
#endif
#ifdef FILAMENT_SENSOR
int current_raw_filwidth = 0; //Holds measured filament diameter - one extruder only
-#endif
+#endif
//===========================================================================
//=============================private variables============================
//===========================================================================
@@ -109,7 +109,7 @@ static volatile bool temp_meas_ready = false;
static float temp_iState_min_bed;
static float temp_iState_max_bed;
#else //PIDTEMPBED
- static unsigned long previous_millis_bed_heater;
+ static unsigned long previous_millis_bed_heater;
#endif //PIDTEMPBED
static unsigned char soft_pwm[EXTRUDERS];
@@ -120,7 +120,7 @@ static volatile bool temp_meas_ready = false;
(defined(EXTRUDER_1_AUTO_FAN_PIN) && EXTRUDER_1_AUTO_FAN_PIN > -1) || \
(defined(EXTRUDER_2_AUTO_FAN_PIN) && EXTRUDER_2_AUTO_FAN_PIN > -1)
static unsigned long extruder_autofan_last_check;
-#endif
+#endif
#if EXTRUDERS > 4
# error Unsupported number of extruders
@@ -227,9 +227,9 @@ void PID_autotune(float temp, int extruder, int ncycles)
SERIAL_ECHOLN("PID Autotune failed. Bad extruder number.");
return;
}
-
+
SERIAL_ECHOLN("PID Autotune start");
-
+
disable_heater(); // switch off all heaters.
if (extruder<0)
@@ -267,7 +267,7 @@ void PID_autotune(float temp, int extruder, int ncycles)
#endif
if(heating == true && input > temp) {
- if(millis() - t2 > 5000) {
+ if(millis() - t2 > 5000) {
heating=false;
if (extruder<0)
soft_pwm_bed = (bias - d) >> 1;
@@ -330,7 +330,7 @@ void PID_autotune(float temp, int extruder, int ncycles)
cycles++;
min=temp;
}
- }
+ }
}
if(input > (temp + 20)) {
SERIAL_PROTOCOLLNPGM("PID Autotune failed! Temperature too high");
@@ -339,16 +339,16 @@ void PID_autotune(float temp, int extruder, int ncycles)
if(millis() - temp_millis > 2000) {
int p;
if (extruder<0){
- p=soft_pwm_bed;
+ p=soft_pwm_bed;
SERIAL_PROTOCOLPGM("ok B:");
}else{
- p=soft_pwm[extruder];
+ p=soft_pwm[extruder];
SERIAL_PROTOCOLPGM("ok T:");
}
-
- SERIAL_PROTOCOL(input);
+
+ SERIAL_PROTOCOL(input);
SERIAL_PROTOCOLPGM(" @:");
- SERIAL_PROTOCOLLN(p);
+ SERIAL_PROTOCOLLN(p);
temp_millis = millis();
}
@@ -367,18 +367,18 @@ void PID_autotune(float temp, int extruder, int ncycles)
void updatePID()
{
#ifdef PIDTEMP
- for(int e = 0; e < EXTRUDERS; e++) {
- temp_iState_max[e] = PID_INTEGRAL_DRIVE_MAX / PID_PARAM(Ki,e);
+ for(int e = 0; e < EXTRUDERS; e++) {
+ temp_iState_max[e] = PID_INTEGRAL_DRIVE_MAX / PID_PARAM(Ki,e);
}
#endif
#ifdef PIDTEMPBED
- temp_iState_max_bed = PID_INTEGRAL_DRIVE_MAX / bedKi;
+ temp_iState_max_bed = PID_INTEGRAL_DRIVE_MAX / bedKi;
#endif
}
-
+
int getHeaterPower(int heater) {
- if (heater<0)
- return soft_pwm_bed;
+ if (heater<0)
+ return soft_pwm_bed;
return soft_pwm[heater];
}
@@ -387,16 +387,16 @@ int getHeaterPower(int heater) {
(defined(EXTRUDER_2_AUTO_FAN_PIN) && EXTRUDER_2_AUTO_FAN_PIN > -1)
#if defined(FAN_PIN) && FAN_PIN > -1
- #if EXTRUDER_0_AUTO_FAN_PIN == FAN_PIN
+ #if EXTRUDER_0_AUTO_FAN_PIN == FAN_PIN
#error "You cannot set EXTRUDER_0_AUTO_FAN_PIN equal to FAN_PIN"
#endif
- #if EXTRUDER_1_AUTO_FAN_PIN == FAN_PIN
+ #if EXTRUDER_1_AUTO_FAN_PIN == FAN_PIN
#error "You cannot set EXTRUDER_1_AUTO_FAN_PIN equal to FAN_PIN"
#endif
- #if EXTRUDER_2_AUTO_FAN_PIN == FAN_PIN
+ #if EXTRUDER_2_AUTO_FAN_PIN == FAN_PIN
#error "You cannot set EXTRUDER_2_AUTO_FAN_PIN equal to FAN_PIN"
#endif
- #endif
+ #endif
void setExtruderAutoFanState(int pin, bool state)
{
@@ -411,53 +411,53 @@ void checkExtruderAutoFans()
{
uint8_t fanState = 0;
- // which fan pins need to be turned on?
+ // which fan pins need to be turned on?
#if defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1
- if (current_temperature[0] > EXTRUDER_AUTO_FAN_TEMPERATURE)
+ if (current_temperature[0] > EXTRUDER_AUTO_FAN_TEMPERATURE)
fanState |= 1;
#endif
#if defined(EXTRUDER_1_AUTO_FAN_PIN) && EXTRUDER_1_AUTO_FAN_PIN > -1
- if (current_temperature[1] > EXTRUDER_AUTO_FAN_TEMPERATURE)
+ if (current_temperature[1] > EXTRUDER_AUTO_FAN_TEMPERATURE)
{
- if (EXTRUDER_1_AUTO_FAN_PIN == EXTRUDER_0_AUTO_FAN_PIN)
+ if (EXTRUDER_1_AUTO_FAN_PIN == EXTRUDER_0_AUTO_FAN_PIN)
fanState |= 1;
else
fanState |= 2;
}
#endif
#if defined(EXTRUDER_2_AUTO_FAN_PIN) && EXTRUDER_2_AUTO_FAN_PIN > -1
- if (current_temperature[2] > EXTRUDER_AUTO_FAN_TEMPERATURE)
+ if (current_temperature[2] > EXTRUDER_AUTO_FAN_TEMPERATURE)
{
- if (EXTRUDER_2_AUTO_FAN_PIN == EXTRUDER_0_AUTO_FAN_PIN)
+ if (EXTRUDER_2_AUTO_FAN_PIN == EXTRUDER_0_AUTO_FAN_PIN)
fanState |= 1;
- else if (EXTRUDER_2_AUTO_FAN_PIN == EXTRUDER_1_AUTO_FAN_PIN)
+ else if (EXTRUDER_2_AUTO_FAN_PIN == EXTRUDER_1_AUTO_FAN_PIN)
fanState |= 2;
else
fanState |= 4;
}
#endif
#if defined(EXTRUDER_3_AUTO_FAN_PIN) && EXTRUDER_3_AUTO_FAN_PIN > -1
- if (current_temperature[3] > EXTRUDER_AUTO_FAN_TEMPERATURE)
+ if (current_temperature[3] > EXTRUDER_AUTO_FAN_TEMPERATURE)
{
- if (EXTRUDER_3_AUTO_FAN_PIN == EXTRUDER_0_AUTO_FAN_PIN)
+ if (EXTRUDER_3_AUTO_FAN_PIN == EXTRUDER_0_AUTO_FAN_PIN)
fanState |= 1;
- else if (EXTRUDER_3_AUTO_FAN_PIN == EXTRUDER_1_AUTO_FAN_PIN)
+ else if (EXTRUDER_3_AUTO_FAN_PIN == EXTRUDER_1_AUTO_FAN_PIN)
fanState |= 2;
- else if (EXTRUDER_3_AUTO_FAN_PIN == EXTRUDER_2_AUTO_FAN_PIN)
+ else if (EXTRUDER_3_AUTO_FAN_PIN == EXTRUDER_2_AUTO_FAN_PIN)
fanState |= 4;
else
fanState |= 8;
}
#endif
-
+
// update extruder auto fan states
#if defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1
setExtruderAutoFanState(EXTRUDER_0_AUTO_FAN_PIN, (fanState & 1) != 0);
- #endif
+ #endif
#if defined(EXTRUDER_1_AUTO_FAN_PIN) && EXTRUDER_1_AUTO_FAN_PIN > -1
if (EXTRUDER_1_AUTO_FAN_PIN != EXTRUDER_0_AUTO_FAN_PIN)
setExtruderAutoFanState(EXTRUDER_1_AUTO_FAN_PIN, (fanState & 2) != 0);
- #endif
+ #endif
#if defined(EXTRUDER_2_AUTO_FAN_PIN) && EXTRUDER_2_AUTO_FAN_PIN > -1
if (EXTRUDER_2_AUTO_FAN_PIN != EXTRUDER_0_AUTO_FAN_PIN
&& EXTRUDER_2_AUTO_FAN_PIN != EXTRUDER_1_AUTO_FAN_PIN)
@@ -479,7 +479,7 @@ void manage_heater()
float pid_output;
if(temp_meas_ready != true) //better readability
- return;
+ return;
updateTemperaturesFromRawValues();
@@ -492,7 +492,7 @@ void manage_heater()
}
#endif //HEATER_0_USES_MAX6675
- for(int e = 0; e < EXTRUDERS; e++)
+ for(int e = 0; e < EXTRUDERS; e++)
{
#if defined (THERMAL_RUNAWAY_PROTECTION_PERIOD) && THERMAL_RUNAWAY_PROTECTION_PERIOD > 0
@@ -527,16 +527,15 @@ void manage_heater()
dTerm[e] = (PID_PARAM(Kd,e) * (pid_input - temp_dState[e]))*K2 + (K1 * dTerm[e]);
pid_output = pTerm[e] + iTerm[e] - dTerm[e];
if (pid_output > PID_MAX) {
- if (pid_error[e] > 0 ) temp_iState[e] -= pid_error[e];
+ if (pid_error[e] > 0 ) temp_iState[e] -= pid_error[e]; // conditional un-integration
pid_output=PID_MAX;
} else if (pid_output < 0){
- if (pid_error[e] < 0 ) temp_iState[e] -= pid_error[e];
+ if (pid_error[e] < 0 ) temp_iState[e] -= pid_error[e]; // conditional un-integration
pid_output=0;
}
-
}
temp_dState[e] = pid_input;
- #else
+ #else
pid_output = constrain(target_temperature[e], 0, PID_MAX);
#endif //PID_OPENLOOP
#ifdef PID_DEBUG
@@ -562,7 +561,7 @@ void manage_heater()
#endif
// Check if temperature is within the correct range
- if((current_temperature[e] > minttemp[e]) && (current_temperature[e] < maxttemp[e]))
+ if((current_temperature[e] > minttemp[e]) && (current_temperature[e] < maxttemp[e]))
{
soft_pwm[e] = (int)pid_output >> 1;
}
@@ -606,9 +605,9 @@ void manage_heater()
{
checkExtruderAutoFans();
extruder_autofan_last_check = millis();
- }
- #endif
-
+ }
+ #endif
+
#ifndef PIDTEMPBED
if(millis() - previous_millis_bed_heater < BED_CHECK_INTERVAL)
return;
@@ -616,7 +615,7 @@ void manage_heater()
#endif
#if TEMP_SENSOR_BED != 0
-
+
#if defined(THERMAL_RUNAWAY_PROTECTION_BED_PERIOD) && THERMAL_RUNAWAY_PROTECTION_BED_PERIOD > 0
thermal_runaway_protection(&thermal_runaway_bed_state_machine, &thermal_runaway_bed_timer, current_temperature_bed, target_temperature_bed, 9, THERMAL_RUNAWAY_PROTECTION_BED_PERIOD, THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS);
#endif
@@ -625,18 +624,18 @@ void manage_heater()
pid_input = current_temperature_bed;
#ifndef PID_OPENLOOP
- pid_error_bed = target_temperature_bed - pid_input;
- pTerm_bed = bedKp * pid_error_bed;
- temp_iState_bed += pid_error_bed;
- temp_iState_bed = constrain(temp_iState_bed, temp_iState_min_bed, temp_iState_max_bed);
- iTerm_bed = bedKi * temp_iState_bed;
-
- //K1 defined in Configuration.h in the PID settings
- #define K2 (1.0-K1)
- dTerm_bed= (bedKd * (pid_input - temp_dState_bed))*K2 + (K1 * dTerm_bed);
- temp_dState_bed = pid_input;
-
- pid_output = pTerm_bed + iTerm_bed - dTerm_bed;
+ pid_error_bed = target_temperature_bed - pid_input;
+ pTerm_bed = bedKp * pid_error_bed;
+ temp_iState_bed += pid_error_bed;
+ temp_iState_bed = constrain(temp_iState_bed, temp_iState_min_bed, temp_iState_max_bed);
+ iTerm_bed = bedKi * temp_iState_bed;
+
+ //K1 defined in Configuration.h in the PID settings
+ #define K2 (1.0-K1)
+ dTerm_bed= (bedKd * (pid_input - temp_dState_bed))*K2 + (K1 * dTerm_bed);
+ temp_dState_bed = pid_input;
+
+ pid_output = pTerm_bed + iTerm_bed - dTerm_bed;
if (pid_output > MAX_BED_POWER) {
if (pid_error_bed > 0 ) temp_iState_bed -= pid_error_bed; // conditional un-integration
pid_output=MAX_BED_POWER;
@@ -645,17 +644,17 @@ void manage_heater()
pid_output=0;
}
- #else
+ #else
pid_output = constrain(target_temperature_bed, 0, MAX_BED_POWER);
#endif //PID_OPENLOOP
- if((current_temperature_bed > BED_MINTEMP) && (current_temperature_bed < BED_MAXTEMP))
- {
- soft_pwm_bed = (int)pid_output >> 1;
- }
- else {
- soft_pwm_bed = 0;
- }
+ if((current_temperature_bed > BED_MINTEMP) && (current_temperature_bed < BED_MAXTEMP))
+ {
+ soft_pwm_bed = (int)pid_output >> 1;
+ }
+ else {
+ soft_pwm_bed = 0;
+ }
#elif !defined(BED_LIMIT_SWITCHING)
// Check if temperature is within the correct range
@@ -665,7 +664,7 @@ void manage_heater()
{
soft_pwm_bed = 0;
}
- else
+ else
{
soft_pwm_bed = MAX_BED_POWER>>1;
}
@@ -695,27 +694,27 @@ void manage_heater()
}
#endif
#endif
-
-//code for controlling the extruder rate based on the width sensor
+
+//code for controlling the extruder rate based on the width sensor
#ifdef FILAMENT_SENSOR
- if(filament_sensor)
- {
- meas_shift_index=delay_index1-meas_delay_cm;
- if(meas_shift_index<0)
- meas_shift_index = meas_shift_index + (MAX_MEASUREMENT_DELAY+1); //loop around buffer if needed
-
- //get the delayed info and add 100 to reconstitute to a percent of the nominal filament diameter
- //then square it to get an area
-
- if(meas_shift_index<0)
- meas_shift_index=0;
- else if (meas_shift_index>MAX_MEASUREMENT_DELAY)
- meas_shift_index=MAX_MEASUREMENT_DELAY;
-
- volumetric_multiplier[FILAMENT_SENSOR_EXTRUDER_NUM] = pow((float)(100+measurement_delay[meas_shift_index])/100.0,2);
- if (volumetric_multiplier[FILAMENT_SENSOR_EXTRUDER_NUM] <0.01)
- volumetric_multiplier[FILAMENT_SENSOR_EXTRUDER_NUM]=0.01;
- }
+ if(filament_sensor)
+ {
+ meas_shift_index=delay_index1-meas_delay_cm;
+ if(meas_shift_index<0)
+ meas_shift_index = meas_shift_index + (MAX_MEASUREMENT_DELAY+1); //loop around buffer if needed
+
+ //get the delayed info and add 100 to reconstitute to a percent of the nominal filament diameter
+ //then square it to get an area
+
+ if(meas_shift_index<0)
+ meas_shift_index=0;
+ else if (meas_shift_index>MAX_MEASUREMENT_DELAY)
+ meas_shift_index=MAX_MEASUREMENT_DELAY;
+
+ volumetric_multiplier[FILAMENT_SENSOR_EXTRUDER_NUM] = pow((float)(100+measurement_delay[meas_shift_index])/100.0,2);
+ if (volumetric_multiplier[FILAMENT_SENSOR_EXTRUDER_NUM] <0.01)
+ volumetric_multiplier[FILAMENT_SENSOR_EXTRUDER_NUM]=0.01;
+ }
#endif
}
@@ -734,7 +733,7 @@ static float analog2temp(int raw, uint8_t e) {
SERIAL_ERRORLNPGM(" - Invalid extruder number !");
kill();
return 0.0;
- }
+ }
#ifdef HEATER_0_USES_MAX6675
if (e == 0)
{
@@ -752,8 +751,8 @@ static float analog2temp(int raw, uint8_t e) {
{
if (PGM_RD_W((*tt)[i][0]) > raw)
{
- celsius = PGM_RD_W((*tt)[i-1][1]) +
- (raw - PGM_RD_W((*tt)[i-1][0])) *
+ celsius = PGM_RD_W((*tt)[i-1][1]) +
+ (raw - PGM_RD_W((*tt)[i-1][0])) *
(float)(PGM_RD_W((*tt)[i][1]) - PGM_RD_W((*tt)[i-1][1])) /
(float)(PGM_RD_W((*tt)[i][0]) - PGM_RD_W((*tt)[i-1][0]));
break;
@@ -779,8 +778,8 @@ static float analog2tempBed(int raw) {
{
if (PGM_RD_W(BEDTEMPTABLE[i][0]) > raw)
{
- celsius = PGM_RD_W(BEDTEMPTABLE[i-1][1]) +
- (raw - PGM_RD_W(BEDTEMPTABLE[i-1][0])) *
+ celsius = PGM_RD_W(BEDTEMPTABLE[i-1][1]) +
+ (raw - 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;
@@ -813,9 +812,9 @@ static void updateTemperaturesFromRawValues()
#ifdef TEMP_SENSOR_1_AS_REDUNDANT
redundant_temperature = analog2temp(redundant_temperature_raw, 1);
#endif
- #if defined (FILAMENT_SENSOR) && (FILWIDTH_PIN > -1) //check if a sensor is supported
+ #if defined (FILAMENT_SENSOR) && (FILWIDTH_PIN > -1) //check if a sensor is supported
filament_width_meas = analog2widthFil();
- #endif
+ #endif
//Reset the watchdog after we know we have a temperature measurement.
watchdog_reset();
@@ -825,29 +824,29 @@ static void updateTemperaturesFromRawValues()
}
-// For converting raw Filament Width to milimeters
+// For converting raw Filament Width to milimeters
#ifdef FILAMENT_SENSOR
-float analog2widthFil() {
-return current_raw_filwidth/16383.0*5.0;
-//return current_raw_filwidth;
-}
-
-// For converting raw Filament Width to a ratio
-int widthFil_to_size_ratio() {
-
-float temp;
-
+float analog2widthFil() {
+return current_raw_filwidth/16383.0*5.0;
+//return current_raw_filwidth;
+}
+
+// For converting raw Filament Width to a ratio
+int widthFil_to_size_ratio() {
+
+float temp;
+
temp=filament_width_meas;
if(filament_width_measMEASURED_UPPER_LIMIT)
- temp= MEASURED_UPPER_LIMIT;
+ temp= MEASURED_UPPER_LIMIT;
-return(filament_width_nominal/temp*100);
+return(filament_width_nominal/temp*100);
-}
+}
#endif
@@ -858,13 +857,13 @@ void tp_init()
{
#if MB(RUMBA) && ((TEMP_SENSOR_0==-1)||(TEMP_SENSOR_1==-1)||(TEMP_SENSOR_2==-1)||(TEMP_SENSOR_BED==-1))
//disable RUMBA JTAG in case the thermocouple extension is plugged on top of JTAG connector
- MCUCR=(1< -1)
+ #if defined(HEATER_0_PIN) && (HEATER_0_PIN > -1)
SET_OUTPUT(HEATER_0_PIN);
#endif
- #if defined(HEATER_1_PIN) && (HEATER_1_PIN > -1)
+ #if defined(HEATER_1_PIN) && (HEATER_1_PIN > -1)
SET_OUTPUT(HEATER_1_PIN);
#endif
- #if defined(HEATER_2_PIN) && (HEATER_2_PIN > -1)
+ #if defined(HEATER_2_PIN) && (HEATER_2_PIN > -1)
SET_OUTPUT(HEATER_2_PIN);
#endif
- #if defined(HEATER_3_PIN) && (HEATER_3_PIN > -1)
+ #if defined(HEATER_3_PIN) && (HEATER_3_PIN > -1)
SET_OUTPUT(HEATER_3_PIN);
#endif
- #if defined(HEATER_BED_PIN) && (HEATER_BED_PIN > -1)
+ #if defined(HEATER_BED_PIN) && (HEATER_BED_PIN > -1)
SET_OUTPUT(HEATER_BED_PIN);
- #endif
- #if defined(FAN_PIN) && (FAN_PIN > -1)
+ #endif
+ #if defined(FAN_PIN) && (FAN_PIN > -1)
SET_OUTPUT(FAN_PIN);
#ifdef FAST_PWM_FAN
setPwmFrequency(FAN_PIN, 1); // No prescaling. Pwm frequency = F_CPU/256/8
@@ -899,24 +898,24 @@ void tp_init()
#ifdef FAN_SOFT_PWM
soft_pwm_fan = fanSpeedSoftPwm / 2;
#endif
- #endif
+ #endif
#ifdef HEATER_0_USES_MAX6675
#ifndef SDSUPPORT
SET_OUTPUT(SCK_PIN);
WRITE(SCK_PIN,0);
-
+
SET_OUTPUT(MOSI_PIN);
WRITE(MOSI_PIN,1);
-
+
SET_INPUT(MISO_PIN);
WRITE(MISO_PIN,1);
#else
pinMode(SS_PIN, OUTPUT);
digitalWrite(SS_PIN, HIGH);
#endif
-
+
SET_OUTPUT(MAX6675_SS);
WRITE(MAX6675_SS,1);
@@ -930,56 +929,56 @@ void tp_init()
#endif
#if defined(TEMP_0_PIN) && (TEMP_0_PIN > -1)
#if TEMP_0_PIN < 8
- DIDR0 |= 1 << TEMP_0_PIN;
+ DIDR0 |= 1 << TEMP_0_PIN;
#else
- DIDR2 |= 1<<(TEMP_0_PIN - 8);
+ DIDR2 |= 1<<(TEMP_0_PIN - 8);
#endif
#endif
#if defined(TEMP_1_PIN) && (TEMP_1_PIN > -1)
#if TEMP_1_PIN < 8
- DIDR0 |= 1< -1)
#if TEMP_2_PIN < 8
- DIDR0 |= 1 << TEMP_2_PIN;
+ DIDR0 |= 1 << TEMP_2_PIN;
#else
- DIDR2 |= 1<<(TEMP_2_PIN - 8);
+ DIDR2 |= 1<<(TEMP_2_PIN - 8);
#endif
#endif
#if defined(TEMP_3_PIN) && (TEMP_3_PIN > -1)
#if TEMP_3_PIN < 8
- DIDR0 |= 1 << TEMP_3_PIN;
+ DIDR0 |= 1 << TEMP_3_PIN;
#else
- DIDR2 |= 1<<(TEMP_3_PIN - 8);
+ DIDR2 |= 1<<(TEMP_3_PIN - 8);
#endif
#endif
#if defined(TEMP_BED_PIN) && (TEMP_BED_PIN > -1)
#if TEMP_BED_PIN < 8
- DIDR0 |= 1< -1)
- #if FILWIDTH_PIN < 8
- DIDR0 |= 1< -1)
+ #if FILWIDTH_PIN < 8
+ DIDR0 |= 1< 0
@@ -1119,7 +1118,7 @@ void thermal_runaway_protection(int *state, unsigned long *timer, float temperat
SERIAL_ECHO(temperature);
SERIAL_ECHO(" ; Target Temp:");
SERIAL_ECHO(target_temperature);
- SERIAL_ECHOLN("");
+ SERIAL_ECHOLN("");
*/
if ((target_temperature == 0) || thermal_runaway)
{
@@ -1139,7 +1138,7 @@ void thermal_runaway_protection(int *state, unsigned long *timer, float temperat
if (temperature >= (target_temperature - hysteresis_degc))
{
*timer = millis();
- }
+ }
else if ( (millis() - *timer) > ((unsigned long) period_seconds) * 1000)
{
SERIAL_ERROR_START;
@@ -1174,23 +1173,23 @@ void disable_heater()
#if defined(TEMP_0_PIN) && TEMP_0_PIN > -1
target_temperature[0]=0;
soft_pwm[0]=0;
- #if defined(HEATER_0_PIN) && HEATER_0_PIN > -1
+ #if defined(HEATER_0_PIN) && HEATER_0_PIN > -1
WRITE(HEATER_0_PIN,LOW);
#endif
#endif
-
+
#if defined(TEMP_1_PIN) && TEMP_1_PIN > -1 && EXTRUDERS > 1
target_temperature[1]=0;
soft_pwm[1]=0;
- #if defined(HEATER_1_PIN) && HEATER_1_PIN > -1
+ #if defined(HEATER_1_PIN) && HEATER_1_PIN > -1
WRITE(HEATER_1_PIN,LOW);
#endif
#endif
-
+
#if defined(TEMP_2_PIN) && TEMP_2_PIN > -1 && EXTRUDERS > 2
target_temperature[2]=0;
soft_pwm[2]=0;
- #if defined(HEATER_2_PIN) && HEATER_2_PIN > -1
+ #if defined(HEATER_2_PIN) && HEATER_2_PIN > -1
WRITE(HEATER_2_PIN,LOW);
#endif
#endif
@@ -1198,19 +1197,19 @@ void disable_heater()
#if defined(TEMP_3_PIN) && TEMP_3_PIN > -1 && EXTRUDERS > 3
target_temperature[3]=0;
soft_pwm[3]=0;
- #if defined(HEATER_3_PIN) && HEATER_3_PIN > -1
+ #if defined(HEATER_3_PIN) && HEATER_3_PIN > -1
WRITE(HEATER_3_PIN,LOW);
#endif
- #endif
+ #endif
#if defined(TEMP_BED_PIN) && TEMP_BED_PIN > -1
target_temperature_bed=0;
soft_pwm_bed=0;
- #if defined(HEATER_BED_PIN) && HEATER_BED_PIN > -1
+ #if defined(HEATER_BED_PIN) && HEATER_BED_PIN > -1
WRITE(HEATER_BED_PIN,LOW);
#endif
- #endif
+ #endif
}
void max_temp_error(uint8_t e) {
@@ -1260,38 +1259,38 @@ int max6675_temp = 2000;
static int read_max6675()
{
- if (millis() - max6675_previous_millis < MAX6675_HEAT_INTERVAL)
+ if (millis() - max6675_previous_millis < MAX6675_HEAT_INTERVAL)
return max6675_temp;
-
+
max6675_previous_millis = millis();
max6675_temp = 0;
-
+
#ifdef PRR
PRR &= ~(1<> 3;
}
@@ -1328,21 +1327,21 @@ ISR(TIMER0_COMPB_vect)
static unsigned char slow_pwm_count = 0;
static unsigned char state_heater_0 = 0;
static unsigned char state_timer_heater_0 = 0;
-#endif
+#endif
#if (EXTRUDERS > 1) || defined(HEATERS_PARALLEL)
static unsigned char soft_pwm_1;
#ifdef SLOW_PWM_HEATERS
static unsigned char state_heater_1 = 0;
static unsigned char state_timer_heater_1 = 0;
-#endif
+#endif
#endif
#if EXTRUDERS > 2
static unsigned char soft_pwm_2;
#ifdef SLOW_PWM_HEATERS
static unsigned char state_heater_2 = 0;
static unsigned char state_timer_heater_2 = 0;
-#endif
+#endif
#endif
#if EXTRUDERS > 3
static unsigned char soft_pwm_3;
@@ -1357,20 +1356,20 @@ ISR(TIMER0_COMPB_vect)
#ifdef SLOW_PWM_HEATERS
static unsigned char state_heater_b = 0;
static unsigned char state_timer_heater_b = 0;
+#endif
#endif
-#endif
-
+
#if defined(FILWIDTH_PIN) &&(FILWIDTH_PIN > -1)
static unsigned long raw_filwidth_value = 0; //added for filament width sensor
#endif
-
+
#ifndef SLOW_PWM_HEATERS
/*
* standard PWM modulation
*/
if(pwm_count == 0){
soft_pwm_0 = soft_pwm[0];
- if(soft_pwm_0 > 0) {
+ if(soft_pwm_0 > 0) {
WRITE(HEATER_0_PIN,1);
#ifdef HEATERS_PARALLEL
WRITE(HEATER_1_PIN,1);
@@ -1400,7 +1399,7 @@ ISR(TIMER0_COMPB_vect)
if(soft_pwm_fan > 0) WRITE(FAN_PIN,1); else WRITE(FAN_PIN,0);
#endif
}
- if(soft_pwm_0 < pwm_count) {
+ if(soft_pwm_0 < pwm_count) {
WRITE(HEATER_0_PIN,0);
#ifdef HEATERS_PARALLEL
WRITE(HEATER_1_PIN,0);
@@ -1423,10 +1422,10 @@ ISR(TIMER0_COMPB_vect)
#ifdef FAN_SOFT_PWM
if(soft_pwm_fan < pwm_count) WRITE(FAN_PIN,0);
#endif
-
+
pwm_count += (1 << SOFT_PWM_SCALE);
pwm_count &= 0x7f;
-
+
#else //ifndef SLOW_PWM_HEATERS
/*
* SLOW PWM HEATERS
@@ -1437,84 +1436,84 @@ ISR(TIMER0_COMPB_vect)
#define MIN_STATE_TIME 16 // MIN_STATE_TIME * 65.5 = time in milliseconds
#endif
if (slow_pwm_count == 0) {
- // EXTRUDER 0
+ // EXTRUDER 0
soft_pwm_0 = soft_pwm[0];
if (soft_pwm_0 > 0) {
- // turn ON heather only if the minimum time is up
- if (state_timer_heater_0 == 0) {
- // if change state set timer
- if (state_heater_0 == 0) {
- state_timer_heater_0 = MIN_STATE_TIME;
- }
- state_heater_0 = 1;
- WRITE(HEATER_0_PIN, 1);
+ // turn ON heather only if the minimum time is up
+ if (state_timer_heater_0 == 0) {
+ // if change state set timer
+ if (state_heater_0 == 0) {
+ state_timer_heater_0 = MIN_STATE_TIME;
+ }
+ state_heater_0 = 1;
+ WRITE(HEATER_0_PIN, 1);
#ifdef HEATERS_PARALLEL
- WRITE(HEATER_1_PIN, 1);
+ WRITE(HEATER_1_PIN, 1);
#endif
}
} else {
- // turn OFF heather only if the minimum time is up
+ // turn OFF heather only if the minimum time is up
if (state_timer_heater_0 == 0) {
- // if change state set timer
- if (state_heater_0 == 1) {
- state_timer_heater_0 = MIN_STATE_TIME;
- }
- state_heater_0 = 0;
- WRITE(HEATER_0_PIN, 0);
+ // if change state set timer
+ if (state_heater_0 == 1) {
+ state_timer_heater_0 = MIN_STATE_TIME;
+ }
+ state_heater_0 = 0;
+ WRITE(HEATER_0_PIN, 0);
#ifdef HEATERS_PARALLEL
- WRITE(HEATER_1_PIN, 0);
+ WRITE(HEATER_1_PIN, 0);
#endif
}
}
-
+
#if EXTRUDERS > 1
// EXTRUDER 1
soft_pwm_1 = soft_pwm[1];
if (soft_pwm_1 > 0) {
- // turn ON heather only if the minimum time is up
- if (state_timer_heater_1 == 0) {
- // if change state set timer
- if (state_heater_1 == 0) {
- state_timer_heater_1 = MIN_STATE_TIME;
- }
- state_heater_1 = 1;
- WRITE(HEATER_1_PIN, 1);
+ // turn ON heather only if the minimum time is up
+ if (state_timer_heater_1 == 0) {
+ // if change state set timer
+ if (state_heater_1 == 0) {
+ state_timer_heater_1 = MIN_STATE_TIME;
+ }
+ state_heater_1 = 1;
+ WRITE(HEATER_1_PIN, 1);
}
} else {
- // turn OFF heather only if the minimum time is up
+ // turn OFF heather only if the minimum time is up
if (state_timer_heater_1 == 0) {
- // if change state set timer
- if (state_heater_1 == 1) {
- state_timer_heater_1 = MIN_STATE_TIME;
- }
- state_heater_1 = 0;
- WRITE(HEATER_1_PIN, 0);
+ // if change state set timer
+ if (state_heater_1 == 1) {
+ state_timer_heater_1 = MIN_STATE_TIME;
+ }
+ state_heater_1 = 0;
+ WRITE(HEATER_1_PIN, 0);
}
}
#endif
-
+
#if EXTRUDERS > 2
// EXTRUDER 2
soft_pwm_2 = soft_pwm[2];
if (soft_pwm_2 > 0) {
- // turn ON heather only if the minimum time is up
- if (state_timer_heater_2 == 0) {
- // if change state set timer
- if (state_heater_2 == 0) {
- state_timer_heater_2 = MIN_STATE_TIME;
- }
- state_heater_2 = 1;
- WRITE(HEATER_2_PIN, 1);
+ // turn ON heather only if the minimum time is up
+ if (state_timer_heater_2 == 0) {
+ // if change state set timer
+ if (state_heater_2 == 0) {
+ state_timer_heater_2 = MIN_STATE_TIME;
+ }
+ state_heater_2 = 1;
+ WRITE(HEATER_2_PIN, 1);
}
} else {
- // turn OFF heather only if the minimum time is up
+ // turn OFF heather only if the minimum time is up
if (state_timer_heater_2 == 0) {
- // if change state set timer
- if (state_heater_2 == 1) {
- state_timer_heater_2 = MIN_STATE_TIME;
- }
- state_heater_2 = 0;
- WRITE(HEATER_2_PIN, 0);
+ // if change state set timer
+ if (state_heater_2 == 1) {
+ state_timer_heater_2 = MIN_STATE_TIME;
+ }
+ state_heater_2 = 0;
+ WRITE(HEATER_2_PIN, 0);
}
}
#endif
@@ -1523,24 +1522,24 @@ ISR(TIMER0_COMPB_vect)
// EXTRUDER 3
soft_pwm_3 = soft_pwm[3];
if (soft_pwm_3 > 0) {
- // turn ON heather only if the minimum time is up
- if (state_timer_heater_3 == 0) {
- // if change state set timer
- if (state_heater_3 == 0) {
- state_timer_heater_3 = MIN_STATE_TIME;
- }
- state_heater_3 = 1;
- WRITE(HEATER_3_PIN, 1);
+ // turn ON heather only if the minimum time is up
+ if (state_timer_heater_3 == 0) {
+ // if change state set timer
+ if (state_heater_3 == 0) {
+ state_timer_heater_3 = MIN_STATE_TIME;
+ }
+ state_heater_3 = 1;
+ WRITE(HEATER_3_PIN, 1);
}
} else {
- // turn OFF heather only if the minimum time is up
+ // turn OFF heather only if the minimum time is up
if (state_timer_heater_3 == 0) {
- // if change state set timer
- if (state_heater_3 == 1) {
- state_timer_heater_3 = MIN_STATE_TIME;
- }
- state_heater_3 = 0;
- WRITE(HEATER_3_PIN, 0);
+ // if change state set timer
+ if (state_heater_3 == 1) {
+ state_timer_heater_3 = MIN_STATE_TIME;
+ }
+ state_heater_3 = 0;
+ WRITE(HEATER_3_PIN, 0);
}
}
#endif
@@ -1549,36 +1548,36 @@ ISR(TIMER0_COMPB_vect)
// BED
soft_pwm_b = soft_pwm_bed;
if (soft_pwm_b > 0) {
- // turn ON heather only if the minimum time is up
- if (state_timer_heater_b == 0) {
- // if change state set timer
- if (state_heater_b == 0) {
- state_timer_heater_b = MIN_STATE_TIME;
- }
- state_heater_b = 1;
- WRITE(HEATER_BED_PIN, 1);
+ // turn ON heather only if the minimum time is up
+ if (state_timer_heater_b == 0) {
+ // if change state set timer
+ if (state_heater_b == 0) {
+ state_timer_heater_b = MIN_STATE_TIME;
+ }
+ state_heater_b = 1;
+ WRITE(HEATER_BED_PIN, 1);
}
} else {
- // turn OFF heather only if the minimum time is up
+ // turn OFF heather only if the minimum time is up
if (state_timer_heater_b == 0) {
- // if change state set timer
- if (state_heater_b == 1) {
- state_timer_heater_b = MIN_STATE_TIME;
- }
- state_heater_b = 0;
- WRITE(HEATER_BED_PIN, 0);
+ // if change state set timer
+ if (state_heater_b == 1) {
+ state_timer_heater_b = MIN_STATE_TIME;
+ }
+ state_heater_b = 0;
+ WRITE(HEATER_BED_PIN, 0);
}
}
#endif
} // if (slow_pwm_count == 0)
-
- // EXTRUDER 0
+
+ // EXTRUDER 0
if (soft_pwm_0 < slow_pwm_count) {
- // turn OFF heather only if the minimum time is up
- if (state_timer_heater_0 == 0) {
- // if change state set timer
+ // turn OFF heather only if the minimum time is up
+ if (state_timer_heater_0 == 0) {
+ // if change state set timer
if (state_heater_0 == 1) {
- state_timer_heater_0 = MIN_STATE_TIME;
+ state_timer_heater_0 = MIN_STATE_TIME;
}
state_heater_0 = 0;
WRITE(HEATER_0_PIN, 0);
@@ -1587,30 +1586,30 @@ ISR(TIMER0_COMPB_vect)
#endif
}
}
-
+
#if EXTRUDERS > 1
- // EXTRUDER 1
+ // EXTRUDER 1
if (soft_pwm_1 < slow_pwm_count) {
- // turn OFF heather only if the minimum time is up
- if (state_timer_heater_1 == 0) {
- // if change state set timer
+ // turn OFF heather only if the minimum time is up
+ if (state_timer_heater_1 == 0) {
+ // if change state set timer
if (state_heater_1 == 1) {
- state_timer_heater_1 = MIN_STATE_TIME;
+ state_timer_heater_1 = MIN_STATE_TIME;
}
state_heater_1 = 0;
WRITE(HEATER_1_PIN, 0);
}
}
#endif
-
+
#if EXTRUDERS > 2
// EXTRUDER 2
if (soft_pwm_2 < slow_pwm_count) {
- // turn OFF heather only if the minimum time is up
- if (state_timer_heater_2 == 0) {
- // if change state set timer
+ // turn OFF heather only if the minimum time is up
+ if (state_timer_heater_2 == 0) {
+ // if change state set timer
if (state_heater_2 == 1) {
- state_timer_heater_2 = MIN_STATE_TIME;
+ state_timer_heater_2 = MIN_STATE_TIME;
}
state_heater_2 = 0;
WRITE(HEATER_2_PIN, 0);
@@ -1621,33 +1620,33 @@ ISR(TIMER0_COMPB_vect)
#if EXTRUDERS > 3
// EXTRUDER 3
if (soft_pwm_3 < slow_pwm_count) {
- // turn OFF heather only if the minimum time is up
- if (state_timer_heater_3 == 0) {
- // if change state set timer
+ // turn OFF heather only if the minimum time is up
+ if (state_timer_heater_3 == 0) {
+ // if change state set timer
if (state_heater_3 == 1) {
- state_timer_heater_3 = MIN_STATE_TIME;
+ state_timer_heater_3 = MIN_STATE_TIME;
}
state_heater_3 = 0;
WRITE(HEATER_3_PIN, 0);
}
}
#endif
-
+
#if defined(HEATER_BED_PIN) && HEATER_BED_PIN > -1
// BED
if (soft_pwm_b < slow_pwm_count) {
- // turn OFF heather only if the minimum time is up
- if (state_timer_heater_b == 0) {
- // if change state set timer
+ // turn OFF heather only if the minimum time is up
+ if (state_timer_heater_b == 0) {
+ // if change state set timer
if (state_heater_b == 1) {
- state_timer_heater_b = MIN_STATE_TIME;
+ state_timer_heater_b = MIN_STATE_TIME;
}
state_heater_b = 0;
WRITE(HEATER_BED_PIN, 0);
}
}
#endif
-
+
#ifdef FAN_SOFT_PWM
if (pwm_count == 0){
soft_pwm_fan = fanSpeedSoftPwm / 2;
@@ -1655,47 +1654,47 @@ ISR(TIMER0_COMPB_vect)
}
if (soft_pwm_fan < pwm_count) WRITE(FAN_PIN,0);
#endif
-
+
pwm_count += (1 << SOFT_PWM_SCALE);
pwm_count &= 0x7f;
-
+
// increment slow_pwm_count only every 64 pwm_count circa 65.5ms
if ((pwm_count % 64) == 0) {
slow_pwm_count++;
slow_pwm_count &= 0x7f;
-
+
// Extruder 0
if (state_timer_heater_0 > 0) {
state_timer_heater_0--;
- }
-
+ }
+
#if EXTRUDERS > 1
// Extruder 1
- if (state_timer_heater_1 > 0)
+ if (state_timer_heater_1 > 0)
state_timer_heater_1--;
#endif
-
+
#if EXTRUDERS > 2
// Extruder 2
- if (state_timer_heater_2 > 0)
+ if (state_timer_heater_2 > 0)
state_timer_heater_2--;
#endif
#if EXTRUDERS > 3
// Extruder 3
- if (state_timer_heater_3 > 0)
+ if (state_timer_heater_3 > 0)
state_timer_heater_3--;
#endif
-
+
#if defined(HEATER_BED_PIN) && HEATER_BED_PIN > -1
- // Bed
- if (state_timer_heater_b > 0)
+ // Bed
+ if (state_timer_heater_b > 0)
state_timer_heater_b--;
#endif
} //if ((pwm_count % 64) == 0) {
-
+
#endif //ifndef SLOW_PWM_HEATERS
-
+
switch(temp_state) {
case 0: // Prepare TEMP_0
#if defined(TEMP_0_PIN) && (TEMP_0_PIN > -1)
@@ -1792,35 +1791,35 @@ ISR(TIMER0_COMPB_vect)
#endif
temp_state = 10; //change so that Filament Width is also measured
break;
- case 10: //Prepare FILWIDTH
- #if defined(FILWIDTH_PIN) && (FILWIDTH_PIN> -1)
- #if FILWIDTH_PIN>7
+ case 10: //Prepare FILWIDTH
+ #if defined(FILWIDTH_PIN) && (FILWIDTH_PIN> -1)
+ #if FILWIDTH_PIN>7
ADCSRB = 1< -1)
- //raw_filwidth_value += ADC; //remove to use an IIR filter approach
+ ADCSRB = 0;
+ #endif
+ ADMUX = ((1 << REFS0) | (FILWIDTH_PIN & 0x07));
+ ADCSRA |= 1< -1)
+ //raw_filwidth_value += ADC; //remove to use an IIR filter approach
if(ADC>102) //check that ADC is reading a voltage > 0.5 volts, otherwise don't take in the data.
{
- raw_filwidth_value= raw_filwidth_value-(raw_filwidth_value>>7); //multipliy raw_filwidth_value by 127/128
-
- raw_filwidth_value= raw_filwidth_value + ((unsigned long)ADC<<7); //add new ADC reading
+ raw_filwidth_value= raw_filwidth_value-(raw_filwidth_value>>7); //multipliy raw_filwidth_value by 127/128
+
+ raw_filwidth_value= raw_filwidth_value + ((unsigned long)ADC<<7); //add new ADC reading
}
- #endif
- temp_state = 0;
-
+ #endif
+ temp_state = 0;
+
temp_count++;
- break;
-
-
+ break;
+
+
case 12: //Startup, delay initial temp reading a tiny bit so the hardware can settle.
temp_state = 0;
break;
@@ -1829,7 +1828,7 @@ ISR(TIMER0_COMPB_vect)
// SERIAL_ERRORLNPGM("Temp measurement error!");
// break;
}
-
+
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.
@@ -1852,12 +1851,12 @@ ISR(TIMER0_COMPB_vect)
current_temperature_bed_raw = raw_temp_bed_value;
}
-//Add similar code for Filament Sensor - can be read any time since IIR filtering is used
+//Add similar code for Filament Sensor - can be read any time since IIR filtering is used
#if defined(FILWIDTH_PIN) &&(FILWIDTH_PIN > -1)
- current_raw_filwidth = raw_filwidth_value>>10; //need to divide to get to 0-16384 range since we used 1/128 IIR filter approach
+ current_raw_filwidth = raw_filwidth_value>>10; //need to divide to get to 0-16384 range since we used 1/128 IIR filter approach
#endif
-
-
+
+
temp_meas_ready = true;
temp_count = 0;
raw_temp_0_value = 0;
@@ -1948,12 +1947,12 @@ ISR(TIMER0_COMPB_vect)
}
#endif
}
-
+
#ifdef BABYSTEPPING
for(uint8_t axis=0;axis<3;axis++)
{
int curTodo=babystepsTodo[axis]; //get rid of volatile for performance
-
+
if(curTodo>0)
{
babystep(axis,/*fwd*/true);
@@ -1975,12 +1974,12 @@ ISR(TIMER0_COMPB_vect)
float scalePID_i(float i)
{
- return i*PID_dT;
+ return i*PID_dT;
}
float unscalePID_i(float i)
{
- return i/PID_dT;
+ return i/PID_dT;
}
float scalePID_d(float d)
@@ -1990,7 +1989,7 @@ float scalePID_d(float d)
float unscalePID_d(float d)
{
- return d*PID_dT;
+ return d*PID_dT;
}
#endif //PIDTEMP