Merge pull request #1906 from thinkyhead/some_fixes
Naming and code comments
This commit is contained in:
commit
6b51305c4b
|
@ -247,7 +247,7 @@ inline void refresh_cmd_timeout() { previous_cmd_ms = millis(); }
|
|||
|
||||
extern float homing_feedrate[];
|
||||
extern bool axis_relative_modes[];
|
||||
extern int feedmultiply;
|
||||
extern int feedrate_multiplier;
|
||||
extern bool volumetric_enabled;
|
||||
extern int extruder_multiply[EXTRUDERS]; // sets extrude multiply factor (in percent) for each extruder individually
|
||||
extern float filament_size[EXTRUDERS]; // cross-sectional area of filament (in millimeters), typically around 1.75 or 2.85, 0 disables the volumetric calculations for the extruder.
|
||||
|
@ -309,8 +309,8 @@ extern int fanSpeed;
|
|||
extern float retract_recover_length, retract_recover_length_swap, retract_recover_feedrate;
|
||||
#endif
|
||||
|
||||
extern millis_t starttime;
|
||||
extern millis_t stoptime;
|
||||
extern millis_t print_job_start_ms;
|
||||
extern millis_t print_job_stop_ms;
|
||||
|
||||
// Handling multiple extruders pins
|
||||
extern uint8_t active_extruder;
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -110,7 +110,7 @@
|
|||
|
||||
// Serial Console Messages (do not translate those!)
|
||||
|
||||
#define MSG_Enqueing "enqueing \""
|
||||
#define MSG_Enqueueing "enqueueing \""
|
||||
#define MSG_POWERUP "PowerUp"
|
||||
#define MSG_EXTERNAL_RESET " External Reset"
|
||||
#define MSG_BROWNOUT_RESET " Brown out Reset"
|
||||
|
|
|
@ -269,8 +269,8 @@ static void lcd_implementation_status_screen() {
|
|||
}
|
||||
|
||||
u8g.setPrintPos(80,48);
|
||||
if (starttime != 0) {
|
||||
uint16_t time = (millis() - starttime) / 60000;
|
||||
if (print_job_start_ms != 0) {
|
||||
uint16_t time = (millis() - print_job_start_ms) / 60000;
|
||||
lcd_print(itostr2(time/60));
|
||||
lcd_print(':');
|
||||
lcd_print(itostr2(time%60));
|
||||
|
@ -337,7 +337,7 @@ static void lcd_implementation_status_screen() {
|
|||
lcd_print(LCD_STR_FEEDRATE[0]);
|
||||
lcd_setFont(FONT_STATUSMENU);
|
||||
u8g.setPrintPos(12,49);
|
||||
lcd_print(itostr3(feedmultiply));
|
||||
lcd_print(itostr3(feedrate_multiplier));
|
||||
lcd_print('%');
|
||||
|
||||
// Status line
|
||||
|
|
|
@ -110,7 +110,7 @@
|
|||
|
||||
// Serial Console Messages (do not translate those!)
|
||||
|
||||
#define MSG_Enqueing "enqueing \""
|
||||
#define MSG_Enqueueing "enqueueing \""
|
||||
#define MSG_POWERUP "PowerUp"
|
||||
#define MSG_EXTERNAL_RESET " External Reset"
|
||||
#define MSG_BROWNOUT_RESET " Brown out Reset"
|
||||
|
|
|
@ -219,7 +219,7 @@ void PID_autotune(float temp, int extruder, int ncycles)
|
|||
|
||||
SERIAL_ECHOLN(MSG_PID_AUTOTUNE_START);
|
||||
|
||||
disable_heater(); // switch off all heaters.
|
||||
disable_all_heaters(); // switch off all heaters.
|
||||
|
||||
if (extruder < 0)
|
||||
soft_pwm_bed = bias = d = MAX_BED_POWER / 2;
|
||||
|
@ -458,11 +458,11 @@ inline void _temp_error(int e, const char *msg1, const char *msg2) {
|
|||
}
|
||||
|
||||
void max_temp_error(uint8_t e) {
|
||||
disable_heater();
|
||||
disable_all_heaters();
|
||||
_temp_error(e, PSTR(MSG_MAXTEMP_EXTRUDER_OFF), PSTR(MSG_ERR_MAXTEMP));
|
||||
}
|
||||
void min_temp_error(uint8_t e) {
|
||||
disable_heater();
|
||||
disable_all_heaters();
|
||||
_temp_error(e, PSTR(MSG_MINTEMP_EXTRUDER_OFF), PSTR(MSG_ERR_MINTEMP));
|
||||
}
|
||||
void bed_max_temp_error(void) {
|
||||
|
@ -579,6 +579,14 @@ float get_pid_output(int e) {
|
|||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Manage heating activities for extruder hot-ends and a heated bed
|
||||
* - Acquire updated temperature readings
|
||||
* - Invoke thermal runaway protection
|
||||
* - Manage extruder auto-fan
|
||||
* - Apply filament width to the extrusion rate (may move)
|
||||
* - Update the heated bed PID output value
|
||||
*/
|
||||
void manage_heater() {
|
||||
|
||||
if (!temp_meas_ready) return;
|
||||
|
@ -623,7 +631,7 @@ void manage_heater() {
|
|||
|
||||
#ifdef TEMP_SENSOR_1_AS_REDUNDANT
|
||||
if (fabs(current_temperature[0] - redundant_temperature) > MAX_REDUNDANT_TEMP_SENSOR_DIFF) {
|
||||
disable_heater();
|
||||
disable_all_heaters();
|
||||
_temp_error(0, PSTR(MSG_EXTRUDER_SWITCHED_OFF), PSTR(MSG_ERR_REDUNDANT_TEMP));
|
||||
}
|
||||
#endif // TEMP_SENSOR_1_AS_REDUNDANT
|
||||
|
@ -637,6 +645,21 @@ void manage_heater() {
|
|||
}
|
||||
#endif
|
||||
|
||||
// Control 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 += 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
|
||||
meas_shift_index = constrain(meas_shift_index, 0, MAX_MEASUREMENT_DELAY);
|
||||
float vm = pow((measurement_delay[meas_shift_index] + 100.0) / 100.0, 2);
|
||||
if (vm < 0.01) vm = 0.01;
|
||||
volumetric_multiplier[FILAMENT_SENSOR_EXTRUDER_NUM] = vm;
|
||||
}
|
||||
#endif //FILAMENT_SENSOR
|
||||
|
||||
#ifndef PIDTEMPBED
|
||||
if (ms < next_bed_check_ms) return;
|
||||
next_bed_check_ms = ms + BED_CHECK_INTERVAL;
|
||||
|
@ -653,16 +676,7 @@ void manage_heater() {
|
|||
|
||||
soft_pwm_bed = current_temperature_bed > BED_MINTEMP && current_temperature_bed < BED_MAXTEMP ? (int)pid_output >> 1 : 0;
|
||||
|
||||
#elif !defined(BED_LIMIT_SWITCHING)
|
||||
// Check if temperature is within the correct range
|
||||
if (current_temperature_bed > BED_MINTEMP && current_temperature_bed < BED_MAXTEMP) {
|
||||
soft_pwm_bed = current_temperature_bed < target_temperature_bed ? MAX_BED_POWER >> 1 : 0;
|
||||
}
|
||||
else {
|
||||
soft_pwm_bed = 0;
|
||||
WRITE_HEATER_BED(LOW);
|
||||
}
|
||||
#else //#ifdef BED_LIMIT_SWITCHING
|
||||
#elif defined(BED_LIMIT_SWITCHING)
|
||||
// Check if temperature is within the correct band
|
||||
if (current_temperature_bed > BED_MINTEMP && current_temperature_bed < BED_MAXTEMP) {
|
||||
if (current_temperature_bed >= target_temperature_bed + BED_HYSTERESIS)
|
||||
|
@ -674,58 +688,47 @@ void manage_heater() {
|
|||
soft_pwm_bed = 0;
|
||||
WRITE_HEATER_BED(LOW);
|
||||
}
|
||||
#else // BED_LIMIT_SWITCHING
|
||||
// Check if temperature is within the correct range
|
||||
if (current_temperature_bed > BED_MINTEMP && current_temperature_bed < BED_MAXTEMP) {
|
||||
soft_pwm_bed = current_temperature_bed < target_temperature_bed ? MAX_BED_POWER >> 1 : 0;
|
||||
}
|
||||
else {
|
||||
soft_pwm_bed = 0;
|
||||
WRITE_HEATER_BED(LOW);
|
||||
}
|
||||
#endif
|
||||
#endif //TEMP_SENSOR_BED != 0
|
||||
|
||||
// Control 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 += 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
|
||||
meas_shift_index = constrain(meas_shift_index, 0, MAX_MEASUREMENT_DELAY);
|
||||
float vm = pow((measurement_delay[meas_shift_index] + 100.0) / 100.0, 2);
|
||||
if (vm < 0.01) vm = 0.01;
|
||||
volumetric_multiplier[FILAMENT_SENSOR_EXTRUDER_NUM] = vm;
|
||||
}
|
||||
#endif //FILAMENT_SENSOR
|
||||
}
|
||||
|
||||
#define PGM_RD_W(x) (short)pgm_read_word(&x)
|
||||
// Derived from RepRap FiveD extruder::getTemperature()
|
||||
// For hot end temperature measurement.
|
||||
static float analog2temp(int raw, uint8_t e) {
|
||||
#ifdef TEMP_SENSOR_1_AS_REDUNDANT
|
||||
if (e > EXTRUDERS)
|
||||
#else
|
||||
if (e >= EXTRUDERS)
|
||||
#endif
|
||||
{
|
||||
#ifdef TEMP_SENSOR_1_AS_REDUNDANT
|
||||
if (e > EXTRUDERS)
|
||||
#else
|
||||
if (e >= EXTRUDERS)
|
||||
#endif
|
||||
{
|
||||
SERIAL_ERROR_START;
|
||||
SERIAL_ERROR((int)e);
|
||||
SERIAL_ERRORLNPGM(MSG_INVALID_EXTRUDER_NUM);
|
||||
kill();
|
||||
return 0.0;
|
||||
}
|
||||
#ifdef HEATER_0_USES_MAX6675
|
||||
if (e == 0)
|
||||
{
|
||||
return 0.25 * raw;
|
||||
}
|
||||
|
||||
#ifdef HEATER_0_USES_MAX6675
|
||||
if (e == 0) return 0.25 * raw;
|
||||
#endif
|
||||
|
||||
if(heater_ttbl_map[e] != NULL)
|
||||
{
|
||||
if (heater_ttbl_map[e] != NULL) {
|
||||
float celsius = 0;
|
||||
uint8_t i;
|
||||
short (*tt)[][2] = (short (*)[][2])(heater_ttbl_map[e]);
|
||||
|
||||
for (i=1; i<heater_ttbllen_map[e]; i++)
|
||||
{
|
||||
if (PGM_RD_W((*tt)[i][0]) > raw)
|
||||
{
|
||||
for (i = 1; i < heater_ttbllen_map[e]; i++) {
|
||||
if (PGM_RD_W((*tt)[i][0]) > raw) {
|
||||
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])) /
|
||||
|
@ -749,10 +752,8 @@ static float analog2tempBed(int raw) {
|
|||
float celsius = 0;
|
||||
byte i;
|
||||
|
||||
for (i=1; i<BEDTEMPTABLE_LEN; i++)
|
||||
{
|
||||
if (PGM_RD_W(BEDTEMPTABLE[i][0]) > raw)
|
||||
{
|
||||
for (i = 1; i < BEDTEMPTABLE_LEN; i++) {
|
||||
if (PGM_RD_W(BEDTEMPTABLE[i][0]) > raw) {
|
||||
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])) /
|
||||
|
@ -816,11 +817,11 @@ static void updateTemperaturesFromRawValues() {
|
|||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void tp_init()
|
||||
{
|
||||
/**
|
||||
* Initialize the temperature manager
|
||||
* The manager is implemented by periodic calls to manage_heater()
|
||||
*/
|
||||
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=BIT(JTD);
|
||||
|
@ -1059,7 +1060,7 @@ void setWatch() {
|
|||
SERIAL_ERRORLNPGM(MSG_THERMAL_RUNAWAY_STOP);
|
||||
if (heater_id < 0) SERIAL_ERRORLNPGM("bed"); else SERIAL_ERRORLN(heater_id);
|
||||
LCD_ALERTMESSAGEPGM(MSG_THERMAL_RUNAWAY);
|
||||
disable_heater();
|
||||
disable_all_heaters();
|
||||
disable_all_steppers();
|
||||
for (;;) {
|
||||
manage_heater();
|
||||
|
@ -1070,7 +1071,7 @@ void setWatch() {
|
|||
|
||||
#endif // HAS_HEATER_THERMAL_PROTECTION || HAS_BED_THERMAL_PROTECTION
|
||||
|
||||
void disable_heater() {
|
||||
void disable_all_heaters() {
|
||||
for (int i=0; i<EXTRUDERS; i++) setTargetHotend(0, i);
|
||||
setTargetBed(0);
|
||||
|
||||
|
@ -1208,11 +1209,15 @@ static void set_current_temp_raw() {
|
|||
temp_meas_ready = true;
|
||||
}
|
||||
|
||||
//
|
||||
// Timer 0 is shared with millies
|
||||
//
|
||||
/**
|
||||
* Timer 0 is shared with millies
|
||||
* - Manage PWM to all the heaters and fan
|
||||
* - Update the raw temperature values
|
||||
* - Check new temperature values for MIN/MAX errors
|
||||
* - Step the babysteps value for each axis towards 0
|
||||
*/
|
||||
ISR(TIMER0_COMPB_vect) {
|
||||
//these variables are only accesible from the ISR, but static, so they don't lose their value
|
||||
|
||||
static unsigned char temp_count = 0;
|
||||
static TempState temp_state = StartupDelay;
|
||||
static unsigned char pwm_count = BIT(SOFT_PWM_SCALE);
|
||||
|
@ -1414,6 +1419,7 @@ ISR(TIMER0_COMPB_vect) {
|
|||
#define START_ADC(pin) ADCSRB = 0; SET_ADMUX_ADCSRA(pin)
|
||||
#endif
|
||||
|
||||
// Prepare or measure a sensor, each one every 12th frame
|
||||
switch(temp_state) {
|
||||
case PrepareTemp_0:
|
||||
#if HAS_TEMP_0
|
||||
|
@ -1582,16 +1588,16 @@ ISR(TIMER0_COMPB_vect) {
|
|||
} // temp_count >= OVERSAMPLENR
|
||||
|
||||
#ifdef BABYSTEPPING
|
||||
for (uint8_t axis=X_AXIS; axis<=Z_AXIS; axis++) {
|
||||
int curTodo=babystepsTodo[axis]; //get rid of volatile for performance
|
||||
for (uint8_t axis = X_AXIS; axis <= Z_AXIS; axis++) {
|
||||
int curTodo = babystepsTodo[axis]; //get rid of volatile for performance
|
||||
|
||||
if (curTodo > 0) {
|
||||
babystep(axis,/*fwd*/true);
|
||||
babystepsTodo[axis]--; //less to do next time
|
||||
babystepsTodo[axis]--; //fewer to do next time
|
||||
}
|
||||
else if(curTodo < 0) {
|
||||
else if (curTodo < 0) {
|
||||
babystep(axis,/*fwd*/false);
|
||||
babystepsTodo[axis]++; //less to do next time
|
||||
babystepsTodo[axis]++; //fewer to do next time
|
||||
}
|
||||
}
|
||||
#endif //BABYSTEPPING
|
||||
|
|
|
@ -129,7 +129,7 @@ HOTEND_ROUTINES(0);
|
|||
#endif
|
||||
|
||||
int getHeaterPower(int heater);
|
||||
void disable_heater();
|
||||
void disable_all_heaters();
|
||||
void setWatch();
|
||||
void updatePID();
|
||||
|
||||
|
|
|
@ -152,10 +152,10 @@ static void lcd_status_screen();
|
|||
* lcd_implementation_drawmenu_function(sel, row, PSTR(MSG_PAUSE_PRINT), lcd_sdcard_pause)
|
||||
* menu_action_function(lcd_sdcard_pause)
|
||||
*
|
||||
* MENU_ITEM_EDIT(int3, MSG_SPEED, &feedmultiply, 10, 999)
|
||||
* MENU_ITEM(setting_edit_int3, MSG_SPEED, PSTR(MSG_SPEED), &feedmultiply, 10, 999)
|
||||
* lcd_implementation_drawmenu_setting_edit_int3(sel, row, PSTR(MSG_SPEED), PSTR(MSG_SPEED), &feedmultiply, 10, 999)
|
||||
* menu_action_setting_edit_int3(PSTR(MSG_SPEED), &feedmultiply, 10, 999)
|
||||
* MENU_ITEM_EDIT(int3, MSG_SPEED, &feedrate_multiplier, 10, 999)
|
||||
* MENU_ITEM(setting_edit_int3, MSG_SPEED, PSTR(MSG_SPEED), &feedrate_multiplier, 10, 999)
|
||||
* lcd_implementation_drawmenu_setting_edit_int3(sel, row, PSTR(MSG_SPEED), PSTR(MSG_SPEED), &feedrate_multiplier, 10, 999)
|
||||
* menu_action_setting_edit_int3(PSTR(MSG_SPEED), &feedrate_multiplier, 10, 999)
|
||||
*
|
||||
*/
|
||||
#define MENU_ITEM(type, label, args...) do { \
|
||||
|
@ -328,28 +328,28 @@ static void lcd_status_screen() {
|
|||
|
||||
#ifdef ULTIPANEL_FEEDMULTIPLY
|
||||
// Dead zone at 100% feedrate
|
||||
if ((feedmultiply < 100 && (feedmultiply + int(encoderPosition)) > 100) ||
|
||||
(feedmultiply > 100 && (feedmultiply + int(encoderPosition)) < 100)) {
|
||||
if ((feedrate_multiplier < 100 && (feedrate_multiplier + int(encoderPosition)) > 100) ||
|
||||
(feedrate_multiplier > 100 && (feedrate_multiplier + int(encoderPosition)) < 100)) {
|
||||
encoderPosition = 0;
|
||||
feedmultiply = 100;
|
||||
feedrate_multiplier = 100;
|
||||
}
|
||||
if (feedmultiply == 100) {
|
||||
if (feedrate_multiplier == 100) {
|
||||
if (int(encoderPosition) > ENCODER_FEEDRATE_DEADZONE) {
|
||||
feedmultiply += int(encoderPosition) - ENCODER_FEEDRATE_DEADZONE;
|
||||
feedrate_multiplier += int(encoderPosition) - ENCODER_FEEDRATE_DEADZONE;
|
||||
encoderPosition = 0;
|
||||
}
|
||||
else if (int(encoderPosition) < -ENCODER_FEEDRATE_DEADZONE) {
|
||||
feedmultiply += int(encoderPosition) + ENCODER_FEEDRATE_DEADZONE;
|
||||
feedrate_multiplier += int(encoderPosition) + ENCODER_FEEDRATE_DEADZONE;
|
||||
encoderPosition = 0;
|
||||
}
|
||||
}
|
||||
else {
|
||||
feedmultiply += int(encoderPosition);
|
||||
feedrate_multiplier += int(encoderPosition);
|
||||
encoderPosition = 0;
|
||||
}
|
||||
#endif // ULTIPANEL_FEEDMULTIPLY
|
||||
|
||||
feedmultiply = constrain(feedmultiply, 10, 999);
|
||||
feedrate_multiplier = constrain(feedrate_multiplier, 10, 999);
|
||||
|
||||
#endif //ULTIPANEL
|
||||
}
|
||||
|
@ -456,7 +456,7 @@ void lcd_set_home_offsets() {
|
|||
static void lcd_tune_menu() {
|
||||
START_MENU();
|
||||
MENU_ITEM(back, MSG_MAIN, lcd_main_menu);
|
||||
MENU_ITEM_EDIT(int3, MSG_SPEED, &feedmultiply, 10, 999);
|
||||
MENU_ITEM_EDIT(int3, MSG_SPEED, &feedrate_multiplier, 10, 999);
|
||||
#if TEMP_SENSOR_0 != 0
|
||||
MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE, &target_temperature[0], 0, HEATER_0_MAXTEMP - 15);
|
||||
#endif
|
||||
|
|
|
@ -550,7 +550,7 @@ static void lcd_implementation_status_screen() {
|
|||
|
||||
lcd.setCursor(0, 2);
|
||||
lcd.print(LCD_STR_FEEDRATE[0]);
|
||||
lcd.print(itostr3(feedmultiply));
|
||||
lcd.print(itostr3(feedrate_multiplier));
|
||||
lcd.print('%');
|
||||
|
||||
#if LCD_WIDTH > 19 && defined(SDSUPPORT)
|
||||
|
@ -567,8 +567,8 @@ static void lcd_implementation_status_screen() {
|
|||
|
||||
lcd.setCursor(LCD_WIDTH - 6, 2);
|
||||
lcd.print(LCD_STR_CLOCK[0]);
|
||||
if (starttime != 0) {
|
||||
uint16_t time = millis()/60000 - starttime/60000;
|
||||
if (print_job_start_ms != 0) {
|
||||
uint16_t time = millis()/60000 - print_job_start_ms/60000;
|
||||
lcd.print(itostr2(time/60));
|
||||
lcd.print(':');
|
||||
lcd.print(itostr2(time%60));
|
||||
|
|
Loading…
Reference in a new issue