Commit 5dbe02da authored by Simone Primarosa's avatar Simone Primarosa

Update 4.1.4 dev

See changelog.md for more info
parent b97aff98
...@@ -45,6 +45,8 @@ ...@@ -45,6 +45,8 @@
* Firmware test * Firmware test
* Support for a filament diameter sensor, which adjusts extrusion volume * Support for a filament diameter sensor, which adjusts extrusion volume
* Support for a hall effect sensor for calucalte Wh. Example sensor ACS712 20A range Current Sensor Module. http://i.ebayimg.com/images/i/310506962976-0-1/s-l1000.jpg * Support for a hall effect sensor for calucalte Wh. Example sensor ACS712 20A range Current Sensor Module. http://i.ebayimg.com/images/i/310506962976-0-1/s-l1000.jpg
* Anti extruder idle oozing system
* Statistics save on SD
The default baudrate is 250000. This baudrate has less jitter and hence errors than the usual 115200 baud, but is less supported by drivers and host-environments. The default baudrate is 250000. This baudrate has less jitter and hence errors than the usual 115200 baud, but is less supported by drivers and host-environments.
......
### Versione 4.1.4
* Improved firmare test dialog.
* Bugfix for SDCONFIG routine. Now the configuration file will be readed and created only on the root of the SD.
* Improved "Thermal Runaway Protection" now the system will be halted also if the thermistor is missing before the temperature is reached as suggested in Issue #35.
* Improved "Extruder Idle Oozing Prevention" by adding a more efficient way to detect planned movements. Now this feature seems stable and can be used by anyone.
* Bugfix for sdinit.
* Removed tab character from the code.
* Removed some unuseful spacing from the code.
### Version 4.1.3 ### Version 4.1.3
* Improved support for Delta, SCARA, COREXY & COREXZ kinematics. * Improved support for Delta, SCARA, COREXY & COREXZ kinematics.
* Improved stepper timer for high velocity driver and not. * Improved stepper timer for high velocity driver and not.
* Add calibrate surface width DELTA. * Add calibrate surface width DELTA.
* Improved serial comunication width most popular Host. * Improved serial comunication width most popular Host.
* Add Acceleration retraction for extruder. * Add Acceleration retraction for extruder.
* Add EJerk for extruder * Add EJerk for extruder.
* Remove limit for virtual extruder to 4. Now width MKR4 or NPr2 is possible have infinite extruder... * Remove limit for virtual extruder to 4. Now width MKR4 or NPr2 is possible have infinite extruder...
* Add M92 T* E (Set step per unit for any extruder) * Add M92 T* E (Set step per unit for any extruder).
* Add M203 T* E (Set max feedrate for any extruder) * Add M203 T* E (Set max feedrate for any extruder).
* Add M204 T* R (Set acc retraction for any extruder) * Add M204 T* R (Set acc retraction for any extruder).
* Add M205 T* E (Set E Jerk for any extruder) * Add M205 T* E (Set E Jerk for any extruder).
* Add Slot for G60 & G61 * Add Slot for G60 & G61.
* G60 Save current position coordinates (all axes, for active extruder). S<SLOT> - specifies memory slot # (0-based) to save into (default 0). * G60 Save current position coordinates (all axes, for active extruder). S<SLOT> - specifies memory slot # (0-based) to save into (default 0).
* G61 Apply/restore saved coordinates to the active extruder. X Y Z E - Value to add at stored coordinates. F<speed> - Set Feedrate. S<SLOT> - specifies memory slot # (0-based) to save into (default 0). * G61 Apply/restore saved coordinates to the active extruder. X Y Z E - Value to add at stored coordinates. F<speed> - Set Feedrate. S<SLOT> - specifies memory slot # (0-based) to save into (default 0).
### Version 4.1.2 ### Version 4.1.2
* Serial message function standardized for a better code style * Serial message function standardized for a better code style.
* Auto-Create configuration file if not exist * Auto-Create configuration file if not exist.
* FIX for sdcard crash problem during configuration file reading * FIX for sdcard crash problem during configuration file reading.
* FIX for some undefined SCARA defines * FIX for some undefined SCARA defines.
### Version 4.1.1 ### Version 4.1.1
* Add Power (Watt) Sensor * Added Power (Watt) Sensor.
* Add Anti OOZING * Added Anti OOZING.
* Add Power Consumation and Power On Time * Add Power Consumation and Power On Time.
* Configurations stored in the SD are updated in real-time (every SD_CFG_SECONDS seconds) also if you remove-insert the sd or you start your printer without the SD card. * Configurations stored in the SD are updated in real-time (every SD_CFG_SECONDS seconds) also if you remove-insert the sd or you start your printer without the SD card.
* Reduced code size, maybe a lot depending on your configuration. * Reduced code size, maybe a lot depending on your configuration.
* Improved support for Delta, SCARA, and COREXY kinematics. * Improved support for Delta, SCARA, and COREXY kinematics.
...@@ -45,4 +54,4 @@ ...@@ -45,4 +54,4 @@
* Moved GCode handling code into individual functions per-code. * Moved GCode handling code into individual functions per-code.
### Version 4.1.0 ### Version 4.1.0
* Initial release * Initial release.
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
// User-specified version info of this build to display in [Pronterface, etc] terminal window during // User-specified version info of this build to display in [Pronterface, etc] terminal window during
// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
// build by the user have been successfully uploaded into firmware. // build by the user have been successfully uploaded into firmware.
#define BUILD_VERSION "4.1.3 dev" #define BUILD_VERSION "4.1.4 dev"
#define STRING_DISTRIBUTION_DATE __DATE__ " " __TIME__ // build date and time #define STRING_DISTRIBUTION_DATE __DATE__ " " __TIME__ // build date and time
#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
#define STRING_SPLASH_LINE1 "v" BUILD_VERSION // will be shown during bootup in line 1 #define STRING_SPLASH_LINE1 "v" BUILD_VERSION // will be shown during bootup in line 1
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
#define SCARA_offset_y -56 //mm #define SCARA_offset_y -56 //mm
#define SCARA_RAD2DEG 57.2957795 // to convert RAD to degrees #define SCARA_RAD2DEG 57.2957795 // to convert RAD to degrees
#define THETA_HOMING_OFFSET 0 //calculatated from Calibration Guide and command M360 / M114 see picture in http://reprap.harleystudio.co.za/?page_id=1073 #define THETA_HOMING_OFFSET 0 //calculatated from Calibration Guide and command M360 / M114 see picture in http://reprap.harleystudio.co.za/?page_id=1073
#define PSI_HOMING_OFFSET 0 // calculatated from Calibration Guide and command M364 / M114 see picture in http://reprap.harleystudio.co.za/?page_id=1073 #define PSI_HOMING_OFFSET 0 // calculatated from Calibration Guide and command M364 / M114 see picture in http://reprap.harleystudio.co.za/?page_id=1073
//some helper variables to make kinematics faster //some helper variables to make kinematics faster
......
...@@ -65,17 +65,18 @@ ...@@ -65,17 +65,18 @@
//#define SHOW_TEMP_ADC_VALUES //#define SHOW_TEMP_ADC_VALUES
/** /**
* extruder idle oozing prevention * Extruder Idle Oozing Prevention
* if the extruder motor is idle for more than SECONDS, and the temperature over MINTEMP, * If the extruder motor is idle for more than SECONDS, and the temperature is over IDLE_OOZING_MINTEMP,
* some filament is retracted. The filament retracted is re-added before the next extrusion * some filament is retracted. The filament retracted is re-added before the next extrusion
* or when the target temperature is less than EXTRUDE_MINTEMP and the actual temperature * or when the target temperature is less than IDLE_OOZING_MINTEMP and the actual temperature
* is greater than IDLE_OOZING_MINTEMP and less than IDLE_OOZING_FEEDRATE * is greater than IDLE_OOZING_MINTEMP.
* PS: Always remember to set your extruder target temperature to 0°C before shoudown the printer if you enable this feature.
*/ */
//#define IDLE_OOZING_PREVENT //#define IDLE_OOZING_PREVENT
#define IDLE_OOZING_MINTEMP EXTRUDE_MINTEMP + 5 #define IDLE_OOZING_MINTEMP EXTRUDE_MINTEMP + 5
#define IDLE_OOZING_MAXTEMP IDLE_OOZING_MINTEMP + 5 #define IDLE_OOZING_MAXTEMP IDLE_OOZING_MINTEMP + 5
#define IDLE_OOZING_FEEDRATE 45 //default feedrate for retracting (mm/s) #define IDLE_OOZING_FEEDRATE 50 //default feedrate for retracting (mm/s)
#define IDLE_OOZING_SECONDS 10 #define IDLE_OOZING_SECONDS 5
#define IDLE_OOZING_LENGTH 15 //default retract length (positive mm) #define IDLE_OOZING_LENGTH 15 //default retract length (positive mm)
#define IDLE_OOZING_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) #define IDLE_OOZING_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering)
#define IDLE_OOZING_RECOVER_FEEDRATE 50 //default feedrate for recovering from retraction (mm/s) #define IDLE_OOZING_RECOVER_FEEDRATE 50 //default feedrate for recovering from retraction (mm/s)
......
...@@ -293,7 +293,8 @@ extern int fanSpeed; ...@@ -293,7 +293,8 @@ extern int fanSpeed;
#endif #endif
#if ENABLED(IDLE_OOZING_PREVENT) #if ENABLED(IDLE_OOZING_PREVENT)
extern bool idleoozing_enabled; extern bool IDLE_OOZING_enabled;
extern void IDLE_OOZING_retract(bool retracting);
#endif #endif
#if ENABLED(FWRETRACT) #if ENABLED(FWRETRACT)
......
...@@ -95,7 +95,7 @@ void MarlinSerial::begin(long baud) { ...@@ -95,7 +95,7 @@ void MarlinSerial::begin(long baud) {
void MarlinSerial::end() { void MarlinSerial::end() {
cbi(M_UCSRxB, M_RXENx); cbi(M_UCSRxB, M_RXENx);
cbi(M_UCSRxB, M_TXENx); cbi(M_UCSRxB, M_TXENx);
cbi(M_UCSRxB, M_RXCIEx); cbi(M_UCSRxB, M_RXCIEx);
} }
...@@ -178,7 +178,7 @@ void MarlinSerial::print(double n, int digits) { ...@@ -178,7 +178,7 @@ void MarlinSerial::print(double n, int digits) {
void MarlinSerial::println(void) { void MarlinSerial::println(void) {
print('\r'); print('\r');
print('\n'); print('\n');
} }
void MarlinSerial::println(const String &s) { void MarlinSerial::println(const String &s) {
......
...@@ -29,9 +29,9 @@ ...@@ -29,9 +29,9 @@
// The presence of the UBRRH register is used to detect a UART. // The presence of the UBRRH register is used to detect a UART.
#define UART_PRESENT(port) ((port == 0 && (defined(UBRRH) || defined(UBRR0H))) || \ #define UART_PRESENT(port) ((port == 0 && (defined(UBRRH) || defined(UBRR0H))) || \
(port == 1 && defined(UBRR1H)) || (port == 2 && defined(UBRR2H)) || \ (port == 1 && defined(UBRR1H)) || (port == 2 && defined(UBRR2H)) || \
(port == 3 && defined(UBRR3H))) (port == 3 && defined(UBRR3H)))
// These are macros to build serial port register names for the selected SERIAL_PORT (C preprocessor // These are macros to build serial port register names for the selected SERIAL_PORT (C preprocessor
// requires two levels of indirection to expand macro values properly) // requires two levels of indirection to expand macro values properly)
#define SERIAL_REGNAME(registerbase,number,suffix) SERIAL_REGNAME_INTERNAL(registerbase,number,suffix) #define SERIAL_REGNAME(registerbase,number,suffix) SERIAL_REGNAME_INTERNAL(registerbase,number,suffix)
......
...@@ -440,16 +440,12 @@ unsigned long printer_usage_seconds; ...@@ -440,16 +440,12 @@ unsigned long printer_usage_seconds;
#endif #endif
#if ENABLED(FILAMENTCHANGEENABLE) #if ENABLED(FILAMENTCHANGEENABLE)
bool filament_changing = false; bool filament_changing = false;
#endif
#if ENABLED(IDLE_OOZING_PREVENT) || ENABLED(EXTRUDER_RUNOUT_PREVENT)
unsigned long axis_last_activity = 0;
bool axis_is_moving = false;
#endif #endif
#if ENABLED(IDLE_OOZING_PREVENT) #if ENABLED(IDLE_OOZING_PREVENT)
bool idleoozing_enabled = true; unsigned long axis_last_activity = 0;
bool IDLE_OOZING_enabled = true;
bool IDLE_OOZING_retracted[EXTRUDERS] = ARRAY_BY_EXTRUDERS(false); bool IDLE_OOZING_retracted[EXTRUDERS] = ARRAY_BY_EXTRUDERS(false);
#endif #endif
...@@ -740,7 +736,7 @@ void setup() { ...@@ -740,7 +736,7 @@ void setup() {
ECHO_SMV(DB, MSG_FREE_MEMORY, freeMemory()); ECHO_SMV(DB, MSG_FREE_MEMORY, freeMemory());
ECHO_EMV(MSG_PLANNER_BUFFER_BYTES, (int)sizeof(block_t)*BLOCK_BUFFER_SIZE); ECHO_EMV(MSG_PLANNER_BUFFER_BYTES, (int)sizeof(block_t)*BLOCK_BUFFER_SIZE);
#ifdef SDSUPPORT #if ENABLED(SDSUPPORT)
for (int8_t i = 0; i < BUFSIZE; i++) fromsd[i] = false; for (int8_t i = 0; i < BUFSIZE; i++) fromsd[i] = false;
#endif #endif
...@@ -810,13 +806,13 @@ void setup() { ...@@ -810,13 +806,13 @@ void setup() {
void loop() { void loop() {
if (commands_in_queue < BUFSIZE - 1) get_command(); if (commands_in_queue < BUFSIZE - 1) get_command();
#ifdef SDSUPPORT #if ENABLED(SDSUPPORT)
card.checkautostart(false); card.checkautostart(false);
#endif #endif
if (commands_in_queue) { if (commands_in_queue) {
#ifdef SDSUPPORT #if ENABLED(SDSUPPORT)
if (card.saving) { if (card.saving) {
char *command = command_queue[cmd_queue_index_r]; char *command = command_queue[cmd_queue_index_r];
...@@ -904,7 +900,7 @@ void get_command() { ...@@ -904,7 +900,7 @@ void get_command() {
command[serial_count] = 0; // terminate string command[serial_count] = 0; // terminate string
// this item in the queue is not from sd // this item in the queue is not from sd
#ifdef SDSUPPORT #if ENABLED(SDSUPPORT)
fromsd[cmd_queue_index_w] = false; fromsd[cmd_queue_index_w] = false;
#endif #endif
...@@ -990,7 +986,7 @@ void get_command() { ...@@ -990,7 +986,7 @@ void get_command() {
} }
} }
#ifdef SDSUPPORT #if ENABLED(SDSUPPORT)
if (!card.sdprinting || serial_count) return; if (!card.sdprinting || serial_count) return;
...@@ -1926,11 +1922,11 @@ static void clean_up_after_endstop_move() { ...@@ -1926,11 +1922,11 @@ static void clean_up_after_endstop_move() {
if ((t1_err == false) and (t2_err == false) and (t3_err == true)) err_tower = 3; if ((t1_err == false) and (t2_err == false) and (t3_err == true)) err_tower = 3;
ECHO_SM(DB, "t1:"); ECHO_SM(DB, "t1:");
if (t1_err == true) ECHO_M("Err"); else ECHO_M("OK"); if (t1_err == true) ECHO_M("Err"); else ECHO_M("OK");
ECHO_M(" t2:"); ECHO_M(" t2:");
if (t2_err == true) ECHO_M("Err"); else ECHO_M("OK"); if (t2_err == true) ECHO_M("Err"); else ECHO_M("OK");
ECHO_M(" t3:"); ECHO_M(" t3:");
if (t3_err == true) ECHO_M("Err"); else ECHO_M("OK"); if (t3_err == true) ECHO_M("Err"); else ECHO_M("OK");
ECHO_E; ECHO_E;
if (err_tower == 0) { if (err_tower == 0) {
...@@ -2537,27 +2533,29 @@ static void clean_up_after_endstop_move() { ...@@ -2537,27 +2533,29 @@ static void clean_up_after_endstop_move() {
#endif //DELTA #endif //DELTA
#ifdef IDLE_OOZING_PREVENT #if ENABLED(IDLE_OOZING_PREVENT)
void IDLE_OOZING_retract(bool retracting) { void IDLE_OOZING_retract(bool retracting) {
if (retracting && !IDLE_OOZING_retracted[active_extruder]) { if (retracting && !IDLE_OOZING_retracted[active_extruder]) {
set_destination_to_current(); float oldFeedrate = feedrate;
current_position[E_AXIS]+=IDLE_OOZING_LENGTH/volumetric_multiplier[active_extruder]; set_destination_to_current();
plan_set_e_position(current_position[E_AXIS]); current_position[E_AXIS] += IDLE_OOZING_LENGTH / volumetric_multiplier[active_extruder];
float oldFeedrate = feedrate; feedrate = IDLE_OOZING_FEEDRATE * 60;
feedrate=IDLE_OOZING_FEEDRATE*60; plan_set_e_position(current_position[E_AXIS]);
IDLE_OOZING_retracted[active_extruder]=true; prepare_move();
prepare_move(); feedrate = oldFeedrate;
feedrate = oldFeedrate; IDLE_OOZING_retracted[active_extruder] = true;
//ECHO_EM("-");
} }
else if (!retracting && IDLE_OOZING_retracted[active_extruder]) { else if (!retracting && IDLE_OOZING_retracted[active_extruder]) {
set_destination_to_current(); float oldFeedrate = feedrate;
current_position[E_AXIS]-=(IDLE_OOZING_LENGTH+IDLE_OOZING_RECOVER_LENGTH)/volumetric_multiplier[active_extruder]; set_destination_to_current();
plan_set_e_position(current_position[E_AXIS]); current_position[E_AXIS] -= (IDLE_OOZING_LENGTH+IDLE_OOZING_RECOVER_LENGTH) / volumetric_multiplier[active_extruder];
float oldFeedrate = feedrate; feedrate = IDLE_OOZING_RECOVER_FEEDRATE * 60;
feedrate=IDLE_OOZING_RECOVER_FEEDRATE * 60; plan_set_e_position(current_position[E_AXIS]);
IDLE_OOZING_retracted[active_extruder] = false; prepare_move();
prepare_move();
feedrate = oldFeedrate; feedrate = oldFeedrate;
IDLE_OOZING_retracted[active_extruder] = false;
//ECHO_EM("+");
} }
} }
#endif #endif
...@@ -2740,11 +2738,16 @@ inline void wait_bed() { ...@@ -2740,11 +2738,16 @@ inline void wait_bed() {
* - Set the feedrate, if included * - Set the feedrate, if included
*/ */
void gcode_get_destination() { void gcode_get_destination() {
#if ENABLED(IDLE_OOZING_PREVENT)
if(code_seen(axis_codes[E_AXIS])) IDLE_OOZING_retract(false);
#endif
for (int i = 0; i < NUM_AXIS; i++) { for (int i = 0; i < NUM_AXIS; i++) {
if (code_seen(axis_codes[i])) if (code_seen(axis_codes[i])) {
destination[i] = code_value() + (axis_relative_modes[i] || relative_mode ? current_position[i] : 0); destination[i] = code_value() + (axis_relative_modes[i] || relative_mode ? current_position[i] : 0);
else }
else {
destination[i] = current_position[i]; destination[i] = current_position[i];
}
} }
if (code_seen('F')) { if (code_seen('F')) {
float next_feedrate = code_value(); float next_feedrate = code_value();
...@@ -2762,11 +2765,6 @@ void unknown_command_error() { ...@@ -2762,11 +2765,6 @@ void unknown_command_error() {
*/ */
inline void gcode_G0_G1() { inline void gcode_G0_G1() {
if (IsRunning()) { if (IsRunning()) {
#ifdef IDLE_OOZING_PREVENT
IDLE_OOZING_retract(false);
#endif
gcode_get_destination(); // For X Y Z E F gcode_get_destination(); // For X Y Z E F
#ifdef FWRETRACT #ifdef FWRETRACT
...@@ -3728,7 +3726,7 @@ inline void gcode_G28() { ...@@ -3728,7 +3726,7 @@ inline void gcode_G28() {
} }
if (code_seen('D')) { if (code_seen('D')) {
ECHO_LM(DB, "Adjusting Diagonal Rod Length"); ECHO_LM(DB, "Adjusting Diagonal Rod Length");
adj_diagrod_length(); adj_diagrod_length();
ECHO_LM(DB, "Diagonal Rod Length adjustment complete"); ECHO_LM(DB, "Diagonal Rod Length adjustment complete");
} }
...@@ -4018,7 +4016,7 @@ inline void gcode_M17() { ...@@ -4018,7 +4016,7 @@ inline void gcode_M17() {
enable_all_steppers(); enable_all_steppers();
} }
#ifdef SDSUPPORT #if ENABLED(SDSUPPORT)
/** /**
* M20: List SD card to serial output * M20: List SD card to serial output
...@@ -4123,7 +4121,7 @@ inline void gcode_M31() { ...@@ -4123,7 +4121,7 @@ inline void gcode_M31() {
autotempShutdown(); autotempShutdown();
} }
#ifdef SDSUPPORT #if ENABLED(SDSUPPORT)
/** /**
* M32: Select file and start SD Print * M32: Select file and start SD Print
...@@ -5620,7 +5618,7 @@ inline void gcode_M400() { st_synchronize(); } ...@@ -5620,7 +5618,7 @@ inline void gcode_M400() { st_synchronize(); }
* M407: Get measured filament diameter on serial output * M407: Get measured filament diameter on serial output
*/ */
inline void gcode_M407() { inline void gcode_M407() {
ECHO_LMV(DB, "Filament dia (measured mm):", filament_width_meas); ECHO_LMV(DB, "Filament dia (measured mm):", filament_width_meas);
} }
#endif // FILAMENT_SENSOR #endif // FILAMENT_SENSOR
...@@ -5971,12 +5969,12 @@ inline void gcode_M503() { ...@@ -5971,12 +5969,12 @@ inline void gcode_M503() {
if (code_seen('U')) { if (code_seen('U')) {
diagrod_adj[0] = code_value(); diagrod_adj[0] = code_value();
set_delta_constants(); set_delta_constants();
} }
if (code_seen('V')) { if (code_seen('V')) {
diagrod_adj[1] = code_value(); diagrod_adj[1] = code_value();
set_delta_constants(); set_delta_constants();
} }
if (code_seen('W')) { if (code_seen('W')) {
diagrod_adj[2] = code_value(); diagrod_adj[2] = code_value();
set_delta_constants(); set_delta_constants();
} }
...@@ -6226,7 +6224,7 @@ inline void gcode_T(uint8_t tmp_extruder) { ...@@ -6226,7 +6224,7 @@ inline void gcode_T(uint8_t tmp_extruder) {
WRITE(E1E3_CHOICE_PIN,LOW); WRITE(E1E3_CHOICE_PIN,LOW);
active_driver = 1; active_driver = 1;
delay(500); // 500 microseconds delay for relay delay(500); // 500 microseconds delay for relay
enable_e1(); enable_e1();
break; break;
case 2: case 2:
WRITE(E0E2_CHOICE_PIN,HIGH); WRITE(E0E2_CHOICE_PIN,HIGH);
...@@ -6489,7 +6487,7 @@ void process_next_command() { ...@@ -6489,7 +6487,7 @@ void process_next_command() {
case 17: //M17 - Enable/Power all stepper motors case 17: //M17 - Enable/Power all stepper motors
gcode_M17(); break; gcode_M17(); break;
#ifdef SDSUPPORT #if ENABLED(SDSUPPORT)
case 20: // M20 - list SD card case 20: // M20 - list SD card
gcode_M20(); break; gcode_M20(); break;
case 21: // M21 - init SD card case 21: // M21 - init SD card
...@@ -6829,7 +6827,7 @@ void FlushSerialRequestResend() { ...@@ -6829,7 +6827,7 @@ void FlushSerialRequestResend() {
void ok_to_send() { void ok_to_send() {
refresh_cmd_timeout(); refresh_cmd_timeout();
#ifdef SDSUPPORT #if ENABLED(SDSUPPORT)
if (fromsd[cmd_queue_index_r]) return; if (fromsd[cmd_queue_index_r]) return;
#endif #endif
ECHO_S(OK); ECHO_S(OK);
...@@ -7026,12 +7024,7 @@ void prepare_move() { ...@@ -7026,12 +7024,7 @@ void prepare_move() {
#if defined(CARTESIAN) || defined(COREXY) || defined(COREXZ) #if defined(CARTESIAN) || defined(COREXY) || defined(COREXZ)
if (!prepare_move_cartesian()) return; if (!prepare_move_cartesian()) return;
#endif #endif
#ifdef IDLE_OOZING_PREVENT || EXTRUDER_RUNOUT_PREVENT
axis_last_activity = millis();
axis_is_moving = false;
#endif
set_current_to_destination(); set_current_to_destination();
} }
...@@ -7501,8 +7494,9 @@ void manage_inactivity(bool ignore_stepper_queue/*=false*/) { ...@@ -7501,8 +7494,9 @@ void manage_inactivity(bool ignore_stepper_queue/*=false*/) {
} }
#endif #endif
#ifdef IDLE_OOZING_PREVENT #if ENABLED(IDLE_OOZING_PREVENT)
if (degHotend(active_extruder) > IDLE_OOZING_MINTEMP && !(debugLevel & DEBUG_DRYRUN) && !axis_is_moving && idleoozing_enabled) { if (blocks_queued()) axis_last_activity = millis();
if (degHotend(active_extruder) > IDLE_OOZING_MINTEMP && !(debugLevel & DEBUG_DRYRUN) && IDLE_OOZING_enabled) {
#ifdef FILAMENTCHANGEENABLE #ifdef FILAMENTCHANGEENABLE
if (!filament_changing) if (!filament_changing)
#endif #endif
......
...@@ -58,7 +58,7 @@ bool NexButton::setText(const char *buffer) ...@@ -58,7 +58,7 @@ bool NexButton::setText(const char *buffer)
cmd += buffer; cmd += buffer;
cmd += "\""; cmd += "\"";
sendCommand(cmd.c_str()); sendCommand(cmd.c_str());
return recvRetCommandFinished(); return recvRetCommandFinished();
} }
/** /**
...@@ -78,7 +78,7 @@ void NexButton::attachPop(NexTouchEventCb pop, void *ptr) ...@@ -78,7 +78,7 @@ void NexButton::attachPop(NexTouchEventCb pop, void *ptr)
*/ */
void NexButton::detachPop(void) void NexButton::detachPop(void)
{ {
NexTouch::detachPop(); NexTouch::detachPop();
} }
...@@ -30,8 +30,8 @@ public: /* methods */ ...@@ -30,8 +30,8 @@ public: /* methods */
void attachPop(NexTouchEventCb pop, void *ptr = NULL); void attachPop(NexTouchEventCb pop, void *ptr = NULL);
void detachPop(void); void detachPop(void);
uint16_t getText(char *buffer, uint16_t len); uint16_t getText(char *buffer, uint16_t len);
bool setText(const char *buffer); bool setText(const char *buffer);
}; };
#endif /* #ifdef __cplusplus */ #endif /* #ifdef __cplusplus */
......
...@@ -63,5 +63,5 @@ void NexHotspot::attachPop(NexTouchEventCb pop, void *ptr) ...@@ -63,5 +63,5 @@ void NexHotspot::attachPop(NexTouchEventCb pop, void *ptr)
*/ */
void NexHotspot::detachPop(void) void NexHotspot::detachPop(void)
{ {
NexTouch::detachPop(); NexTouch::detachPop();
} }
...@@ -63,5 +63,5 @@ void NexPage::attachPop(NexTouchEventCb pop, void *ptr) ...@@ -63,5 +63,5 @@ void NexPage::attachPop(NexTouchEventCb pop, void *ptr)
*/ */
void NexPage::detachPop(void) void NexPage::detachPop(void)
{ {
NexTouch::detachPop(); NexTouch::detachPop();
} }
...@@ -80,6 +80,6 @@ void NexPicture::attachPop(NexTouchEventCb pop, void *ptr) ...@@ -80,6 +80,6 @@ void NexPicture::attachPop(NexTouchEventCb pop, void *ptr)
*/ */
void NexPicture::detachPop(void) void NexPicture::detachPop(void)
{ {
NexTouch::detachPop(); NexTouch::detachPop();
} }
...@@ -80,6 +80,6 @@ void NexSlice::attachPop(NexTouchEventCb pop, void *ptr) ...@@ -80,6 +80,6 @@ void NexSlice::attachPop(NexTouchEventCb pop, void *ptr)
*/ */
void NexSlice::detachPop(void) void NexSlice::detachPop(void)
{ {
NexTouch::detachPop(); NexTouch::detachPop();
} }
...@@ -58,7 +58,7 @@ bool NexText::setText(const char *buffer) ...@@ -58,7 +58,7 @@ bool NexText::setText(const char *buffer)
cmd += buffer; cmd += buffer;
cmd += "\""; cmd += "\"";
sendCommand(cmd.c_str()); sendCommand(cmd.c_str());
return recvRetCommandFinished(); return recvRetCommandFinished();
} }
/** /**
...@@ -80,7 +80,7 @@ bool NexText::setColor(uint32_t value) ...@@ -80,7 +80,7 @@ bool NexText::setColor(uint32_t value)
cmd += buf; cmd += buf;
sendCommand(cmd.c_str()); sendCommand(cmd.c_str());
return recvRetCommandFinished(); return recvRetCommandFinished();
} }
/** /**
...@@ -100,6 +100,6 @@ void NexText::attachPop(NexTouchEventCb pop, void *ptr) ...@@ -100,6 +100,6 @@ void NexText::attachPop(NexTouchEventCb pop, void *ptr)
*/ */
void NexText::detachPop(void) void NexText::detachPop(void)
{ {
NexTouch::detachPop(); NexTouch::detachPop();
} }
...@@ -30,8 +30,8 @@ public: /* methods */ ...@@ -30,8 +30,8 @@ public: /* methods */
void attachPop(NexTouchEventCb pop, void *ptr = NULL); void attachPop(NexTouchEventCb pop, void *ptr = NULL);
void detachPop(void); void detachPop(void);
uint16_t getText(char *buffer, uint16_t len); uint16_t getText(char *buffer, uint16_t len);
bool setText(const char *buffer); bool setText(const char *buffer);
bool setColor(uint32_t value); bool setColor(uint32_t value);
}; };
......
...@@ -140,7 +140,7 @@ void NexTouch::attachPop(NexTouchEventCb pop, void *ptr) { ...@@ -140,7 +140,7 @@ void NexTouch::attachPop(NexTouchEventCb pop, void *ptr) {
} }
void NexTouch::detachPop(void) { void NexTouch::detachPop(void) {
this->cbPop = NULL; this->cbPop = NULL;
this->__cbpop_ptr = NULL; this->__cbpop_ptr = NULL;
} }
...@@ -261,7 +261,7 @@ uint16_t NexTouch::recvRetString(char *buffer, uint16_t len, uint32_t timeout) { ...@@ -261,7 +261,7 @@ uint16_t NexTouch::recvRetString(char *buffer, uint16_t len, uint32_t timeout) {
if (str_start_flag) if (str_start_flag)
{ {
if (0xFF == c) { if (0xFF == c) {
cnt_0xff++; cnt_0xff++;
if (cnt_0xff >= 3) { if (cnt_0xff >= 3) {
break; break;
} }
...@@ -526,7 +526,7 @@ bool recoverySerialCommand(void) ...@@ -526,7 +526,7 @@ bool recoverySerialCommand(void)
dbSerialPrintln("recoverySerialCommand err "); dbSerialPrintln("recoverySerialCommand err ");
} }
return ret; return ret;
} }
/** /**
...@@ -561,7 +561,7 @@ bool setCurrentBrightness(uint8_t dimValue) ...@@ -561,7 +561,7 @@ bool setCurrentBrightness(uint8_t dimValue)
dbSerialPrintln("setCurrentBrightness err "); dbSerialPrintln("setCurrentBrightness err ");
} }
return ret; return ret;
} }
/** /**
......
...@@ -68,7 +68,7 @@ public: /* methods */ ...@@ -68,7 +68,7 @@ public: /* methods */
NexTouchEventCb pop = NULL, void *pop_ptr = NULL, NexTouchEventCb pop = NULL, void *pop_ptr = NULL,
NexTouchEventCb push = NULL, void *push_ptr = NULL); NexTouchEventCb push = NULL, void *push_ptr = NULL);
NexPid getPid(void); NexPid getPid(void);
NexCid getCid(void); NexCid getCid(void);
const char *getObjName(void); const char *getObjName(void);
void print(void); void print(void);
......
...@@ -337,10 +337,10 @@ struct fat32_boot { ...@@ -337,10 +337,10 @@ struct fat32_boot {
* Bits 0-3 -- Zero-based number of active FAT. * Bits 0-3 -- Zero-based number of active FAT.
* Only valid if mirroring is disabled. * Only valid if mirroring is disabled.
* Bits 4-6 -- Reserved. * Bits 4-6 -- Reserved.
* Bit 7 -- 0 means the FAT is mirrored at runtime into all FATs. * Bit 7 -- 0 means the FAT is mirrored at runtime into all FATs.
* -- 1 means only one FAT is active; it is the one referenced * -- 1 means only one FAT is active; it is the one referenced
* in bits 0-3. * in bits 0-3.
* Bits 8-15 -- Reserved. * Bits 8-15 -- Reserved.
*/ */
uint16_t fat32Flags; uint16_t fat32Flags;
/** /**
......
...@@ -26,7 +26,7 @@ CardReader::CardReader() { ...@@ -26,7 +26,7 @@ CardReader::CardReader() {
OUT_WRITE(SDPOWER, HIGH); OUT_WRITE(SDPOWER, HIGH);
#endif //SDPOWER #endif //SDPOWER
next_autostart_ms = millis() + 5000; next_autostart_ms = millis() + SPLASH_SCREEN_DURATION;
} }
char *createFilename(char *buffer, const dir_t &p) { //buffer > 12characters char *createFilename(char *buffer, const dir_t &p) { //buffer > 12characters
...@@ -222,14 +222,20 @@ void CardReader::initsd() { ...@@ -222,14 +222,20 @@ void CardReader::initsd() {
*/ */
} }
void CardReader::setroot() { void CardReader::setroot(bool temporary) {
/*if (!workDir.openRoot(&volume)) { /*if (!workDir.openRoot(&volume)) {
ECHO_EM(MSG_SD_WORKDIR_FAIL); ECHO_EM(MSG_SD_WORKDIR_FAIL);
}*/ }*/
if(temporary) lastDir = workDir;
workDir = root; workDir = root;
curDir = &workDir; curDir = &workDir;
} }
void CardReader::setlast() {
workDir = lastDir;
curDir = &workDir;
}
void CardReader::release() { void CardReader::release() {
sdprinting = false; sdprinting = false;
cardOK = false; cardOK = false;
...@@ -441,7 +447,7 @@ void CardReader::write_command(char *buf) { ...@@ -441,7 +447,7 @@ void CardReader::write_command(char *buf) {
} }
void CardReader::checkautostart(bool force) { void CardReader::checkautostart(bool force) {
if (!force && (!autostart_stilltocheck || next_autostart_ms < millis())) if (!force && (!autostart_stilltocheck || next_autostart_ms >= millis()))
return; return;
autostart_stilltocheck = false; autostart_stilltocheck = false;
...@@ -503,7 +509,7 @@ void CardReader::parseKeyLine(char *key, char *value, int &len_k, int &len_v) { ...@@ -503,7 +509,7 @@ void CardReader::parseKeyLine(char *key, char *value, int &len_k, int &len_v) {
int ln_buf = 0; int ln_buf = 0;
char ln_char; char ln_char;
bool ln_space = false, ln_ignore = false, key_found = false; bool ln_space = false, ln_ignore = false, key_found = false;
while(!eof()) { //READ KEY while(!eof()) { //READ KEY
ln_char = (char)get(); ln_char = (char)get();
if(ln_char == '\n') { if(ln_char == '\n') {
ln_buf = 0; ln_buf = 0;
...@@ -536,12 +542,12 @@ void CardReader::parseKeyLine(char *key, char *value, int &len_k, int &len_v) { ...@@ -536,12 +542,12 @@ void CardReader::parseKeyLine(char *key, char *value, int &len_k, int &len_v) {
} }
ln_buf = 0; ln_buf = 0;
ln_ignore = false; ln_ignore = false;
while(!eof()) { //READ VALUE while(!eof()) { //READ VALUE
ln_char = (char)get(); ln_char = (char)get();
if(ln_char == '\n') { if(ln_char == '\n') {
value[ln_buf] = '\0'; value[ln_buf] = '\0';
len_v = ln_buf; len_v = ln_buf;
break; //new line reached, we can stop break; //new line reached, we can stop
} }
if(ln_ignore|| ln_char == ' ' && ln_buf == 0) continue; //ignore also initial spaces of the value if(ln_ignore|| ln_char == ' ' && ln_buf == 0) continue; //ignore also initial spaces of the value
if(ln_char == ';' || ln_buf+1 >= len_v) { //comments reached or value len longer than len_v. Stop buffering and go to the next line. if(ln_char == ';' || ln_buf+1 >= len_v) { //comments reached or value len longer than len_v. Stop buffering and go to the next line.
......
...@@ -42,7 +42,8 @@ public: ...@@ -42,7 +42,8 @@ public:
void ls(); void ls();
void chdir(const char * relpath); void chdir(const char * relpath);
void updir(); void updir();
void setroot(); void setroot(bool temporary = false);
void setlast();
FORCE_INLINE bool isFileOpen() { return file.isOpen(); } FORCE_INLINE bool isFileOpen() { return file.isOpen(); }
...@@ -57,7 +58,7 @@ public: ...@@ -57,7 +58,7 @@ public:
char filename[FILENAME_LENGTH], longFilename[LONG_FILENAME_LENGTH]; char filename[FILENAME_LENGTH], longFilename[LONG_FILENAME_LENGTH];
int autostart_index; int autostart_index;
private: private:
SdFile root, *curDir, workDir, workDirParents[MAX_DIR_DEPTH]; SdFile root, *curDir, workDir, lastDir, workDirParents[MAX_DIR_DEPTH];
uint16_t workDirDepth; uint16_t workDirDepth;
Sd2Card card; Sd2Card card;
SdVolume volume; SdVolume volume;
......
...@@ -90,7 +90,7 @@ ...@@ -90,7 +90,7 @@
* *
* M200 T D filament_size (x4) (T0..3) * M200 T D filament_size (x4) (T0..3)
* *
* M??? S idleoozing_enabled * M??? S IDLE_OOZING_enabled
* *
* *
* *
...@@ -247,7 +247,7 @@ void Config_StoreSettings() { ...@@ -247,7 +247,7 @@ void Config_StoreSettings() {
} }
#if ENABLED(IDLE_OOZING_PREVENT) #if ENABLED(IDLE_OOZING_PREVENT)
EEPROM_WRITE_VAR(i, idleoozing_enabled); EEPROM_WRITE_VAR(i, IDLE_OOZING_enabled);
#endif #endif
char ver2[4] = EEPROM_VERSION; char ver2[4] = EEPROM_VERSION;
...@@ -384,7 +384,7 @@ void Config_RetrieveSettings() { ...@@ -384,7 +384,7 @@ void Config_RetrieveSettings() {
calculate_volumetric_multipliers(); calculate_volumetric_multipliers();
#if ENABLED(IDLE_OOZING_PREVENT) #if ENABLED(IDLE_OOZING_PREVENT)
EEPROM_READ_VAR(i, idleoozing_enabled); EEPROM_READ_VAR(i, IDLE_OOZING_enabled);
#endif #endif
// Call updatePID (similar to when we have processed M301) // Call updatePID (similar to when we have processed M301)
...@@ -570,7 +570,7 @@ void Config_ResetDefault() { ...@@ -570,7 +570,7 @@ void Config_ResetDefault() {
calculate_volumetric_multipliers(); calculate_volumetric_multipliers();
#ifdef IDLE_OOZING_PREVENT #ifdef IDLE_OOZING_PREVENT
idleoozing_enabled = true; IDLE_OOZING_enabled = true;
#endif #endif
ECHO_LM(DB, "Hardcoded Default Settings Loaded"); ECHO_LM(DB, "Hardcoded Default Settings Loaded");
...@@ -819,11 +819,11 @@ void Config_ResetDefault() { ...@@ -819,11 +819,11 @@ void Config_ResetDefault() {
void ConfigSD_PrintSettings(bool forReplay) { void ConfigSD_PrintSettings(bool forReplay) {
// Always have this function, even with SD_SETTINGS disabled, the current values will be shown // Always have this function, even with SD_SETTINGS disabled, the current values will be shown
#ifdef POWER_CONSUMPTION #if HAS_POWER_CONSUMPTION_SENSOR
if (!forReplay) { if (!forReplay) {
ECHO_LM(DB, "Watt/h consumed:"); ECHO_LM(DB, "Watt/h consumed:");
} }
ECHO_LVM(OK, power_consumption_hour," W/h"); ECHO_LVM(OK, power_consumption_hour," Wh");
#endif #endif
if (!forReplay) { if (!forReplay) {
ECHO_LM(DB, "Power on time:"); ECHO_LM(DB, "Power on time:");
...@@ -843,7 +843,7 @@ void Config_ResetDefault() { ...@@ -843,7 +843,7 @@ void Config_ResetDefault() {
* *
*/ */
void ConfigSD_ResetDefault() { void ConfigSD_ResetDefault() {
#ifdef POWER_CONSUMPTION #if HAS_POWER_CONSUMPTION_SENSOR
power_consumption_hour = 0; power_consumption_hour = 0;
#endif #endif
printer_usage_seconds = 0; printer_usage_seconds = 0;
...@@ -854,9 +854,10 @@ void ConfigSD_ResetDefault() { ...@@ -854,9 +854,10 @@ void ConfigSD_ResetDefault() {
void ConfigSD_StoreSettings() { void ConfigSD_StoreSettings() {
if(!IS_SD_INSERTED || card.isFileOpen() || card.sdprinting) return; if(!IS_SD_INSERTED || card.isFileOpen() || card.sdprinting) return;
card.setroot(true);
card.openFile(CFG_SD_FILE, false, true, false); card.openFile(CFG_SD_FILE, false, true, false);
char buff[CFG_SD_MAX_VALUE_LEN]; char buff[CFG_SD_MAX_VALUE_LEN];
#ifdef POWER_CONSUMPTION #if HAS_POWER_CONSUMPTION_SENSOR
ltoa(power_consumption_hour,buff,10); ltoa(power_consumption_hour,buff,10);
card.unparseKeyLine(cfgSD_KEY[SD_CFG_PWR], buff); card.unparseKeyLine(cfgSD_KEY[SD_CFG_PWR], buff);
#endif #endif
...@@ -864,6 +865,7 @@ void ConfigSD_ResetDefault() { ...@@ -864,6 +865,7 @@ void ConfigSD_ResetDefault() {
card.unparseKeyLine(cfgSD_KEY[SD_CFG_TME], buff); card.unparseKeyLine(cfgSD_KEY[SD_CFG_TME], buff);
card.closeFile(false); card.closeFile(false);
card.setlast();
config_last_update = millis(); config_last_update = millis();
} }
...@@ -872,7 +874,7 @@ void ConfigSD_ResetDefault() { ...@@ -872,7 +874,7 @@ void ConfigSD_ResetDefault() {
char key[CFG_SD_MAX_KEY_LEN], value[CFG_SD_MAX_VALUE_LEN]; char key[CFG_SD_MAX_KEY_LEN], value[CFG_SD_MAX_VALUE_LEN];
int k_idx; int k_idx;
int k_len, v_len; int k_len, v_len;
card.setroot(true);
card.openFile(CFG_SD_FILE, true, true, false); card.openFile(CFG_SD_FILE, true, true, false);
while(true) { while(true) {
k_len = CFG_SD_MAX_KEY_LEN; k_len = CFG_SD_MAX_KEY_LEN;
...@@ -882,7 +884,7 @@ void ConfigSD_ResetDefault() { ...@@ -882,7 +884,7 @@ void ConfigSD_ResetDefault() {
k_idx = ConfigSD_KeyIndex(key); k_idx = ConfigSD_KeyIndex(key);
if(k_idx == -1) continue; //unknow key ignore it if(k_idx == -1) continue; //unknow key ignore it
switch(k_idx) { switch(k_idx) {
#ifdef POWER_CONSUMPTION #if HAS_POWER_CONSUMPTION_SENSOR
case SD_CFG_PWR: { case SD_CFG_PWR: {
if(addValue) power_consumption_hour += (unsigned long)atol(value); if(addValue) power_consumption_hour += (unsigned long)atol(value);
else power_consumption_hour = (unsigned long)atol(value); else power_consumption_hour = (unsigned long)atol(value);
...@@ -897,6 +899,7 @@ void ConfigSD_ResetDefault() { ...@@ -897,6 +899,7 @@ void ConfigSD_ResetDefault() {
} }
} }
card.closeFile(false); card.closeFile(false);
card.setlast();
config_readed = true; config_readed = true;
} }
......
...@@ -24,14 +24,14 @@ void ConfigSD_ResetDefault(); ...@@ -24,14 +24,14 @@ void ConfigSD_ResetDefault();
#if ENABLED(SDSUPPORT) && ENABLED(SD_SETTINGS) #if ENABLED(SDSUPPORT) && ENABLED(SD_SETTINGS)
static const char *cfgSD_KEY[] = { //Keep this in lexicographical order for better search performance(O(Nlog2(N)) insted of O(N*N)) (if you don't keep this sorted, the algorithm for find the key index won't work, keep attention.) static const char *cfgSD_KEY[] = { //Keep this in lexicographical order for better search performance(O(Nlog2(N)) insted of O(N*N)) (if you don't keep this sorted, the algorithm for find the key index won't work, keep attention.)
#ifdef POWER_CONSUMPTION #if HAS_POWER_CONSUMPTION_SENSOR
"PWR", "PWR",
#endif #endif
"TME", "TME",
}; };
enum cfgSD_ENUM { //This need to be in the same order as cfgSD_KEY enum cfgSD_ENUM { //This need to be in the same order as cfgSD_KEY
#ifdef POWER_CONSUMPTION #if HAS_POWER_CONSUMPTION_SENSOR
SD_CFG_PWR, SD_CFG_PWR,
#endif #endif
SD_CFG_TME, SD_CFG_TME,
......
...@@ -33,8 +33,8 @@ void digipot_i2c_set_current(int channel, float current) { ...@@ -33,8 +33,8 @@ void digipot_i2c_set_current(int channel, float current) {
// In this case first digipot is at address A0=0, A1= 0, second one is at A0=0, A1= 1 // In this case first digipot is at address A0=0, A1= 0, second one is at A0=0, A1= 1
byte addr = 0x2C; // channel 0-3 byte addr = 0x2C; // channel 0-3
if (channel >= 4) { if (channel >= 4) {
addr = 0x2E; // channel 4-7 addr = 0x2E; // channel 4-7
channel -= 4; channel -= 4;
} }
// Initial setup // Initial setup
......
...@@ -17,8 +17,8 @@ ...@@ -17,8 +17,8 @@
0xff,0xff,0x0,0x30,0xe6,0x63,0x19,0xe3,0x1,0xef,0x0,0x2,0x0,0x6,0xff,0xff,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe,0xff,0xff,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c,0xff,0xff,0xe0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x78,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0 0xff,0xff,0x0,0x30,0xe6,0x63,0x19,0xe3,0x1,0xef,0x0,0x2,0x0,0x6,0xff,0xff,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe,0xff,0xff,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c,0xff,0xff,0xe0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x78,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0
}; };
#else #else
#define START_BMPWIDTH 56 #define START_BMPWIDTH 56
#define START_BMPHEIGHT 19 #define START_BMPHEIGHT 19
#define START_BMPBYTEWIDTH 7 #define START_BMPBYTEWIDTH 7
#define START_BMPBYTES 133 // START_BMPWIDTH * START_BMPHEIGHT / 8 #define START_BMPBYTES 133 // START_BMPWIDTH * START_BMPHEIGHT / 8
...@@ -36,155 +36,155 @@ ...@@ -36,155 +36,155 @@
// be displayed. // be displayed.
#if HOTENDS == 1 #if HOTENDS == 1
#define STATUS_SCREENWIDTH 115 //Width in pixels #define STATUS_SCREENWIDTH 115 //Width in pixels
#define STATUS_SCREENHEIGHT 19 //Height in pixels #define STATUS_SCREENHEIGHT 19 //Height in pixels
#define STATUS_SCREENBYTEWIDTH 15 //Width in bytes #define STATUS_SCREENBYTEWIDTH 15 //Width in bytes
const unsigned char status_screen0_bmp[] PROGMEM = { //AVR-GCC, WinAVR const unsigned char status_screen0_bmp[] PROGMEM = { //AVR-GCC, WinAVR
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xE0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xE0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x0C,0x60, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x0C,0x60,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x0E,0x20, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x0E,0x20,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4F,0x0F,0x20, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4F,0x0F,0x20,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5F,0x0F,0xA0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5F,0x0F,0xA0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5E,0x07,0xA0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5E,0x07,0xA0,
0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x40,0x60,0x20, 0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x40,0x60,0x20,
0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x40,0xF0,0x20, 0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x40,0xF0,0x20,
0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x40,0xF0,0x20, 0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x40,0xF0,0x20,
0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x40,0x60,0x20, 0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x40,0x60,0x20,
0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x5E,0x07,0xA0, 0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x5E,0x07,0xA0,
0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x5F,0x0F,0xA0, 0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x5F,0x0F,0xA0,
0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x4F,0x0F,0x20, 0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x4F,0x0F,0x20,
0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x47,0x0E,0x20, 0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x47,0x0E,0x20,
0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x63,0x0C,0x60, 0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x63,0x0C,0x60,
0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0, 0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,
0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x7F,0xFF,0xE0, 0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x7F,0xFF,0xE0,
0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x00,0x00,0x00 0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x00,0x00,0x00
}; };
#define STATUS_SCREENWIDTH 115 //Width in pixels #define STATUS_SCREENWIDTH 115 //Width in pixels
#define STATUS_SCREENHEIGHT 19 //Height in pixels #define STATUS_SCREENHEIGHT 19 //Height in pixels
#define STATUS_SCREENBYTEWIDTH 15 //Width in bytes #define STATUS_SCREENBYTEWIDTH 15 //Width in bytes
const unsigned char status_screen1_bmp[] PROGMEM = { //AVR-GCC, WinAVR const unsigned char status_screen1_bmp[] PROGMEM = { //AVR-GCC, WinAVR
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xE0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xE0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x61,0xF8,0x60, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x61,0xF8,0x60,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0xF8,0x20, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0xF8,0x20,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xF0,0x20, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xF0,0x20,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x60,0x20, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x60,0x20,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x01,0xA0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x01,0xA0,
0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x5C,0x63,0xA0, 0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x5C,0x63,0xA0,
0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x5E,0xF7,0xA0, 0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x5E,0xF7,0xA0,
0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x5E,0xF7,0xA0, 0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x5E,0xF7,0xA0,
0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x5C,0x63,0xA0, 0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x5C,0x63,0xA0,
0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x58,0x01,0xA0, 0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x58,0x01,0xA0,
0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x40,0x60,0x20, 0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x40,0x60,0x20,
0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x40,0xF0,0x20, 0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x40,0xF0,0x20,
0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x41,0xF8,0x20, 0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x41,0xF8,0x20,
0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x61,0xF8,0x60, 0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x61,0xF8,0x60,
0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0, 0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,
0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x7F,0xFF,0xE0, 0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x7F,0xFF,0xE0,
0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x00,0x00,0x00 0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x00,0x00,0x00
}; };
#elif HOTENDS == 2 #elif HOTENDS == 2
#define STATUS_SCREENWIDTH 115 //Width in pixels #define STATUS_SCREENWIDTH 115 //Width in pixels
#define STATUS_SCREENHEIGHT 19 //Height in pixels #define STATUS_SCREENHEIGHT 19 //Height in pixels
#define STATUS_SCREENBYTEWIDTH 15 //Width in bytes #define STATUS_SCREENBYTEWIDTH 15 //Width in bytes
const unsigned char status_screen0_bmp[] PROGMEM = { //AVR-GCC, WinAVR const unsigned char status_screen0_bmp[] PROGMEM = { //AVR-GCC, WinAVR
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xE0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xE0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x0C,0x60, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x0C,0x60,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x0E,0x20, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x0E,0x20,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4F,0x0F,0x20, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4F,0x0F,0x20,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5F,0x0F,0xA0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5F,0x0F,0xA0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5E,0x07,0xA0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5E,0x07,0xA0,
0x7F,0x80,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x40,0x60,0x20, 0x7F,0x80,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x40,0x60,0x20,
0xFB,0xC0,0x00,0x79,0xE0,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x40,0xF0,0x20, 0xFB,0xC0,0x00,0x79,0xE0,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x40,0xF0,0x20,
0xF3,0xC0,0x00,0x76,0xE0,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x40,0xF0,0x20, 0xF3,0xC0,0x00,0x76,0xE0,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x40,0xF0,0x20,
0xEB,0xC0,0x00,0x7E,0xE0,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x40,0x60,0x20, 0xEB,0xC0,0x00,0x7E,0xE0,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x40,0x60,0x20,
0x7B,0x80,0x00,0x3D,0xC0,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x5E,0x07,0xA0, 0x7B,0x80,0x00,0x3D,0xC0,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x5E,0x07,0xA0,
0x7B,0x80,0x00,0x3B,0xC0,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x5F,0x0F,0xA0, 0x7B,0x80,0x00,0x3B,0xC0,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x5F,0x0F,0xA0,
0xFB,0xC0,0x00,0x77,0xE0,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x4F,0x0F,0x20, 0xFB,0xC0,0x00,0x77,0xE0,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x4F,0x0F,0x20,
0xFB,0xC0,0x00,0x70,0xE0,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x47,0x0E,0x20, 0xFB,0xC0,0x00,0x70,0xE0,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x47,0x0E,0x20,
0xFF,0xC0,0x00,0x7F,0xE0,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x63,0x0C,0x60, 0xFF,0xC0,0x00,0x7F,0xE0,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x63,0x0C,0x60,
0x3F,0x00,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0, 0x3F,0x00,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,
0x1E,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x7F,0xFF,0xE0, 0x1E,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x7F,0xFF,0xE0,
0x0C,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x00,0x00,0x00 0x0C,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x00,0x00,0x00
}; };
#define STATUS_SCREENWIDTH 115 //Width in pixels #define STATUS_SCREENWIDTH 115 //Width in pixels
#define STATUS_SCREENHEIGHT 19 //Height in pixels #define STATUS_SCREENHEIGHT 19 //Height in pixels
#define STATUS_SCREENBYTEWIDTH 15 //Width in bytes #define STATUS_SCREENBYTEWIDTH 15 //Width in bytes
const unsigned char status_screen1_bmp[] PROGMEM = { //AVR-GCC, WinAVR const unsigned char status_screen1_bmp[] PROGMEM = { //AVR-GCC, WinAVR
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xE0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xE0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x61,0xF8,0x60, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x61,0xF8,0x60,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0xF8,0x20, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0xF8,0x20,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xF0,0x20, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xF0,0x20,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x60,0x20, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x60,0x20,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x01,0xA0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x01,0xA0,
0x7F,0x80,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x5C,0x63,0xA0, 0x7F,0x80,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x5C,0x63,0xA0,
0xFB,0xC0,0x00,0x79,0xE0,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x5E,0xF7,0xA0, 0xFB,0xC0,0x00,0x79,0xE0,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x5E,0xF7,0xA0,
0xF3,0xC0,0x00,0x76,0xE0,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x5E,0xF7,0xA0, 0xF3,0xC0,0x00,0x76,0xE0,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x5E,0xF7,0xA0,
0xEB,0xC0,0x00,0x7E,0xE0,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x5C,0x63,0xA0, 0xEB,0xC0,0x00,0x7E,0xE0,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x5C,0x63,0xA0,
0x7B,0x80,0x00,0x3D,0xC0,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x58,0x01,0xA0, 0x7B,0x80,0x00,0x3D,0xC0,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x58,0x01,0xA0,
0x7B,0x80,0x00,0x3B,0xC0,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x40,0x60,0x20, 0x7B,0x80,0x00,0x3B,0xC0,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x40,0x60,0x20,
0xFB,0xC0,0x00,0x77,0xE0,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x40,0xF0,0x20, 0xFB,0xC0,0x00,0x77,0xE0,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x40,0xF0,0x20,
0xFB,0xC0,0x00,0x70,0xE0,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x41,0xF8,0x20, 0xFB,0xC0,0x00,0x70,0xE0,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x41,0xF8,0x20,
0xFF,0xC0,0x00,0x7F,0xE0,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x61,0xF8,0x60, 0xFF,0xC0,0x00,0x7F,0xE0,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x61,0xF8,0x60,
0x3F,0x00,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0, 0x3F,0x00,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,
0x1E,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x7F,0xFF,0xE0, 0x1E,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x7F,0xFF,0xE0,
0x0C,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x00,0x00,0x00 0x0C,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x00,0x00,0x00
}; };
#else #else
#define STATUS_SCREENWIDTH 115 //Width in pixels #define STATUS_SCREENWIDTH 115 //Width in pixels
#define STATUS_SCREENHEIGHT 19 //Height in pixels #define STATUS_SCREENHEIGHT 19 //Height in pixels
#define STATUS_SCREENBYTEWIDTH 15 //Width in bytes #define STATUS_SCREENBYTEWIDTH 15 //Width in bytes
const unsigned char status_screen0_bmp[] PROGMEM = { //AVR-GCC, WinAVR const unsigned char status_screen0_bmp[] PROGMEM = { //AVR-GCC, WinAVR
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xE0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xE0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x0C,0x60, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x0C,0x60,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x0E,0x20, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x0E,0x20,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4F,0x0F,0x20, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4F,0x0F,0x20,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5F,0x0F,0xA0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5F,0x0F,0xA0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5E,0x07,0xA0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5E,0x07,0xA0,
0x7F,0x80,0x00,0x3F,0xC0,0x00,0x3F,0xC0,0x00,0x41,0x04,0x00,0x40,0x60,0x20, 0x7F,0x80,0x00,0x3F,0xC0,0x00,0x3F,0xC0,0x00,0x41,0x04,0x00,0x40,0x60,0x20,
0xFB,0xC0,0x00,0x79,0xE0,0x00,0x79,0xE0,0x00,0x20,0x82,0x00,0x40,0xF0,0x20, 0xFB,0xC0,0x00,0x79,0xE0,0x00,0x79,0xE0,0x00,0x20,0x82,0x00,0x40,0xF0,0x20,
0xF3,0xC0,0x00,0x76,0xE0,0x00,0x76,0xE0,0x00,0x20,0x82,0x00,0x40,0xF0,0x20, 0xF3,0xC0,0x00,0x76,0xE0,0x00,0x76,0xE0,0x00,0x20,0x82,0x00,0x40,0xF0,0x20,
0xEB,0xC0,0x00,0x7E,0xE0,0x00,0x7E,0xE0,0x00,0x41,0x04,0x00,0x40,0x60,0x20, 0xEB,0xC0,0x00,0x7E,0xE0,0x00,0x7E,0xE0,0x00,0x41,0x04,0x00,0x40,0x60,0x20,
0x7B,0x80,0x00,0x3D,0xC0,0x00,0x39,0xC0,0x00,0x82,0x08,0x00,0x5E,0x07,0xA0, 0x7B,0x80,0x00,0x3D,0xC0,0x00,0x39,0xC0,0x00,0x82,0x08,0x00,0x5E,0x07,0xA0,
0x7B,0x80,0x00,0x3B,0xC0,0x00,0x3E,0xC0,0x01,0x04,0x10,0x00,0x5F,0x0F,0xA0, 0x7B,0x80,0x00,0x3B,0xC0,0x00,0x3E,0xC0,0x01,0x04,0x10,0x00,0x5F,0x0F,0xA0,
0xFB,0xC0,0x00,0x77,0xE0,0x00,0x76,0xE0,0x01,0x04,0x10,0x00,0x4F,0x0F,0x20, 0xFB,0xC0,0x00,0x77,0xE0,0x00,0x76,0xE0,0x01,0x04,0x10,0x00,0x4F,0x0F,0x20,
0xFB,0xC0,0x00,0x70,0xE0,0x00,0x79,0xE0,0x00,0x82,0x08,0x00,0x47,0x0E,0x20, 0xFB,0xC0,0x00,0x70,0xE0,0x00,0x79,0xE0,0x00,0x82,0x08,0x00,0x47,0x0E,0x20,
0xFF,0xC0,0x00,0x7F,0xE0,0x00,0x7F,0xE0,0x00,0x41,0x04,0x00,0x63,0x0C,0x60, 0xFF,0xC0,0x00,0x7F,0xE0,0x00,0x7F,0xE0,0x00,0x41,0x04,0x00,0x63,0x0C,0x60,
0x3F,0x00,0x00,0x1F,0x80,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,0x70,0x00,0xE0, 0x3F,0x00,0x00,0x1F,0x80,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,
0x1E,0x00,0x00,0x0F,0x00,0x00,0x0F,0x00,0x01,0xFF,0xFF,0x80,0x7F,0xFF,0xE0, 0x1E,0x00,0x00,0x0F,0x00,0x00,0x0F,0x00,0x01,0xFF,0xFF,0x80,0x7F,0xFF,0xE0,
0x0C,0x00,0x00,0x06,0x00,0x00,0x06,0x00,0x01,0xFF,0xFF,0x80,0x00,0x00,0x00 0x0C,0x00,0x00,0x06,0x00,0x00,0x06,0x00,0x01,0xFF,0xFF,0x80,0x00,0x00,0x00
}; };
#define STATUS_SCREENWIDTH 115 //Width in pixels #define STATUS_SCREENWIDTH 115 //Width in pixels
#define STATUS_SCREENHEIGHT 19 //Height in pixels #define STATUS_SCREENHEIGHT 19 //Height in pixels
#define STATUS_SCREENBYTEWIDTH 15 //Width in bytes #define STATUS_SCREENBYTEWIDTH 15 //Width in bytes
const unsigned char status_screen1_bmp[] PROGMEM = { //AVR-GCC, WinAVR const unsigned char status_screen1_bmp[] PROGMEM = { //AVR-GCC, WinAVR
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xE0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xE0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x61,0xF8,0x60, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x61,0xF8,0x60,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0xF8,0x20, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0xF8,0x20,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xF0,0x20, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xF0,0x20,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x60,0x20, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x60,0x20,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x01,0xA0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x01,0xA0,
0x7F,0x80,0x00,0x3F,0xC0,0x00,0x3F,0xC0,0x00,0x41,0x04,0x00,0x5C,0x63,0xA0, 0x7F,0x80,0x00,0x3F,0xC0,0x00,0x3F,0xC0,0x00,0x41,0x04,0x00,0x5C,0x63,0xA0,
0xFB,0xC0,0x00,0x79,0xE0,0x00,0x79,0xE0,0x00,0x20,0x82,0x00,0x5E,0xF7,0xA0, 0xFB,0xC0,0x00,0x79,0xE0,0x00,0x79,0xE0,0x00,0x20,0x82,0x00,0x5E,0xF7,0xA0,
0xF3,0xC0,0x00,0x76,0xE0,0x00,0x76,0xE0,0x00,0x20,0x82,0x00,0x5E,0xF7,0xA0, 0xF3,0xC0,0x00,0x76,0xE0,0x00,0x76,0xE0,0x00,0x20,0x82,0x00,0x5E,0xF7,0xA0,
0xEB,0xC0,0x00,0x7E,0xE0,0x00,0x7E,0xE0,0x00,0x41,0x04,0x00,0x5C,0x63,0xA0, 0xEB,0xC0,0x00,0x7E,0xE0,0x00,0x7E,0xE0,0x00,0x41,0x04,0x00,0x5C,0x63,0xA0,
0x7B,0x80,0x00,0x3D,0xC0,0x00,0x39,0xC0,0x00,0x82,0x08,0x00,0x58,0x01,0xA0, 0x7B,0x80,0x00,0x3D,0xC0,0x00,0x39,0xC0,0x00,0x82,0x08,0x00,0x58,0x01,0xA0,
0x7B,0x80,0x00,0x3B,0xC0,0x00,0x3E,0xC0,0x01,0x04,0x10,0x00,0x40,0x60,0x20, 0x7B,0x80,0x00,0x3B,0xC0,0x00,0x3E,0xC0,0x01,0x04,0x10,0x00,0x40,0x60,0x20,
0xFB,0xC0,0x00,0x77,0xE0,0x00,0x76,0xE0,0x01,0x04,0x10,0x00,0x40,0xF0,0x20, 0xFB,0xC0,0x00,0x77,0xE0,0x00,0x76,0xE0,0x01,0x04,0x10,0x00,0x40,0xF0,0x20,
0xFB,0xC0,0x00,0x70,0xE0,0x00,0x79,0xE0,0x00,0x82,0x08,0x00,0x41,0xF8,0x20, 0xFB,0xC0,0x00,0x70,0xE0,0x00,0x79,0xE0,0x00,0x82,0x08,0x00,0x41,0xF8,0x20,
0xFF,0xC0,0x00,0x7F,0xE0,0x00,0x7F,0xE0,0x00,0x41,0x04,0x00,0x61,0xF8,0x60, 0xFF,0xC0,0x00,0x7F,0xE0,0x00,0x7F,0xE0,0x00,0x41,0x04,0x00,0x61,0xF8,0x60,
0x3F,0x00,0x00,0x1F,0x80,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,0x70,0x00,0xE0, 0x3F,0x00,0x00,0x1F,0x80,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,
0x1E,0x00,0x00,0x0F,0x00,0x00,0x0F,0x00,0x01,0xFF,0xFF,0x80,0x7F,0xFF,0xE0, 0x1E,0x00,0x00,0x0F,0x00,0x00,0x0F,0x00,0x01,0xFF,0xFF,0x80,0x7F,0xFF,0xE0,
0x0C,0x00,0x00,0x06,0x00,0x00,0x06,0x00,0x01,0xFF,0xFF,0x80,0x00,0x00,0x00 0x0C,0x00,0x00,0x06,0x00,0x00,0x06,0x00,0x01,0xFF,0xFF,0x80,0x00,0x00,0x00
}; };
#endif // Extruders #endif // Extruders
...@@ -204,11 +204,11 @@ static void lcd_implementation_init() { ...@@ -204,11 +204,11 @@ static void lcd_implementation_init() {
#endif #endif
#if ENABLED(LCD_PIN_RESET) #if ENABLED(LCD_PIN_RESET)
pinMode(LCD_PIN_RESET, OUTPUT); pinMode(LCD_PIN_RESET, OUTPUT);
digitalWrite(LCD_PIN_RESET, HIGH); digitalWrite(LCD_PIN_RESET, HIGH);
#endif #endif
#ifndef MINIPANEL//setContrast not working for Mini Panel #ifndef MINIPANEL//setContrast not working for Mini Panel
u8g.setContrast(lcd_contrast); u8g.setContrast(lcd_contrast);
#endif #endif
// FIXME: remove this workaround // FIXME: remove this workaround
// Uncomment this if you have the first generation (V1.10) of STBs board // Uncomment this if you have the first generation (V1.10) of STBs board
...@@ -309,7 +309,7 @@ static void lcd_implementation_status_screen() { ...@@ -309,7 +309,7 @@ static void lcd_implementation_status_screen() {
} }
else { else {
lcd_print(itostr4(power_consumption_hour-startpower)); lcd_print(itostr4(power_consumption_hour-startpower));
lcd_print('Wh'); lcd_print("Wh");
} }
#else #else
uint16_t time = (millis() - print_job_start_ms) / 60000; uint16_t time = (millis() - print_job_start_ms) / 60000;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -35,9 +35,22 @@ void FirmwareTest() ...@@ -35,9 +35,22 @@ void FirmwareTest()
} }
else else
{ {
ECHO_EM("X ENDSTOP ERROR"); ECHO_M("X ENDSTOP ");
ECHO_V(MSG_FWTEST_INVERT); ECHO_EM(MSG_FWTEST_ERROR);
ECHO_EM("#define X_MIN_ENDSTOP_INVERTING"); ECHO_M(MSG_FWTEST_INVERT);
ECHO_M("#define X_MIN_ENDSTOP_LOGIC ");
ECHO_M(MSG_FWTEST_INTO);
#if ENABLED(CARTESIAN)
ECHO_EM("Configuration_Cartesian.h");
#elif ENABLED(COREXY)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(COREXZ)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(DELTA)
ECHO_EM("Configuration_Delta.h");
#elif ENABLED(SCARA)
ECHO_EM("Configuration_Scara.h");
#endif
return; return;
} }
ECHO_V(MSG_FWTEST_PRESS); ECHO_V(MSG_FWTEST_PRESS);
...@@ -64,9 +77,22 @@ void FirmwareTest() ...@@ -64,9 +77,22 @@ void FirmwareTest()
} }
else else
{ {
ECHO_EM("X ENDSTOP ERROR"); ECHO_M("X ENDSTOP ");
ECHO_V(MSG_FWTEST_INVERT); ECHO_EM(MSG_FWTEST_ERROR);
ECHO_EM("#define X_MAX_ENDSTOP_INVERTING"); ECHO_M(MSG_FWTEST_INVERT);
ECHO_M("#define X_MAX_ENDSTOP_LOGIC ");
ECHO_M(MSG_FWTEST_INTO);
#if ENABLED(CARTESIAN)
ECHO_EM("Configuration_Cartesian.h");
#elif ENABLED(COREXY)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(COREXZ)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(DELTA)
ECHO_EM("Configuration_Delta.h");
#elif ENABLED(SCARA)
ECHO_EM("Configuration_Scara.h");
#endif
return; return;
} }
ECHO_V(MSG_FWTEST_PRESS); ECHO_V(MSG_FWTEST_PRESS);
...@@ -87,10 +113,14 @@ void FirmwareTest() ...@@ -87,10 +113,14 @@ void FirmwareTest()
return; return;
} }
#elif X_HOME_DIR == -1 #elif X_HOME_DIR == -1
ECHO_EM("ERROR!!! X_MIN_PIN not defined"); ECHO_M(MSG_FWTEST_ERROR);
ECHO_M("!!! X_MIN_PIN ");
ECHO_EM(MSG_FWTEST_NDEF);
return; return;
#elif X_HOME_DIR == 1 #elif X_HOME_DIR == 1
ECHO_EM("ERROR!!! X_MAX_PIN not defined"); ECHO_M(MSG_FWTEST_ERROR);
ECHO_M("!!! X_MAX_PIN ");
ECHO_EM(MSG_FWTEST_NDEF);
return; return;
#endif #endif
...@@ -103,9 +133,22 @@ void FirmwareTest() ...@@ -103,9 +133,22 @@ void FirmwareTest()
} }
else else
{ {
ECHO_EM("Y ENDSTOP ERROR"); ECHO_M("Y ENDSTOP ");
ECHO_V(MSG_FWTEST_INVERT); ECHO_EM(MSG_FWTEST_ERROR);
ECHO_EM("#define Y_MIN_ENDSTOP_INVERTING"); ECHO_M(MSG_FWTEST_INVERT);
ECHO_M("#define Y_MIN_ENDSTOP_LOGIC ");
ECHO_M(MSG_FWTEST_INTO);
#if ENABLED(CARTESIAN)
ECHO_EM("Configuration_Cartesian.h");
#elif ENABLED(COREXY)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(COREXZ)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(DELTA)
ECHO_EM("Configuration_Delta.h");
#elif ENABLED(SCARA)
ECHO_EM("Configuration_Scara.h");
#endif
return; return;
} }
ECHO_V(MSG_FWTEST_PRESS); ECHO_V(MSG_FWTEST_PRESS);
...@@ -132,9 +175,22 @@ void FirmwareTest() ...@@ -132,9 +175,22 @@ void FirmwareTest()
} }
else else
{ {
ECHO_EM("Y ENDSTOP ERROR"); ECHO_M("Y ENDSTOP ");
ECHO_V(MSG_FWTEST_INVERT); ECHO_EM(MSG_FWTEST_ERROR);
ECHO_EM("#define Y_MAX_ENDSTOP_INVERTING"); ECHO_M(MSG_FWTEST_INVERT);
ECHO_M("#define Y_MAX_ENDSTOP_LOGIC ");
ECHO_M(MSG_FWTEST_INTO);
#if ENABLED(CARTESIAN)
ECHO_EM("Configuration_Cartesian.h");
#elif ENABLED(COREXY)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(COREXZ)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(DELTA)
ECHO_EM("Configuration_Delta.h");
#elif ENABLED(SCARA)
ECHO_EM("Configuration_Scara.h");
#endif
return; return;
} }
ECHO_V(MSG_FWTEST_PRESS); ECHO_V(MSG_FWTEST_PRESS);
...@@ -155,10 +211,14 @@ void FirmwareTest() ...@@ -155,10 +211,14 @@ void FirmwareTest()
return; return;
} }
#elif Y_HOME_DIR == -1 #elif Y_HOME_DIR == -1
ECHO_EM("ERROR!!! Y_MIN_PIN not defined"); ECHO_M(MSG_FWTEST_ERROR);
ECHO_M("!!! Y_MIN_PIN ");
ECHO_EM(MSG_FWTEST_NDEF);
return; return;
#elif Y_HOME_DIR == 1 #elif Y_HOME_DIR == 1
ECHO_EM("ERROR!!! Y_MAX_PIN not defined"); ECHO_M(MSG_FWTEST_ERROR);
ECHO_M("!!! Y_MAX_PIN ");
ECHO_EM(MSG_FWTEST_NDEF);
return; return;
#endif #endif
...@@ -171,9 +231,22 @@ void FirmwareTest() ...@@ -171,9 +231,22 @@ void FirmwareTest()
} }
else else
{ {
ECHO_EM("Z ENDSTOP ERROR"); ECHO_M("Z ENDSTOP ");
ECHO_V(MSG_FWTEST_INVERT); ECHO_EM(MSG_FWTEST_ERROR);
ECHO_EM("#define Z_MIN_ENDSTOP_INVERTING"); ECHO_M(MSG_FWTEST_INVERT);
ECHO_M("#define Z_MIN_ENDSTOP_LOGIC ");
ECHO_M(MSG_FWTEST_INTO);
#if ENABLED(CARTESIAN)
ECHO_EM("Configuration_Cartesian.h");
#elif ENABLED(COREXY)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(COREXZ)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(DELTA)
ECHO_EM("Configuration_Delta.h");
#elif ENABLED(SCARA)
ECHO_EM("Configuration_Scara.h");
#endif
return; return;
} }
ECHO_V(MSG_FWTEST_PRESS); ECHO_V(MSG_FWTEST_PRESS);
...@@ -200,9 +273,22 @@ void FirmwareTest() ...@@ -200,9 +273,22 @@ void FirmwareTest()
} }
else else
{ {
ECHO_EM("Z ENDSTOP ERROR"); ECHO_M("Z ENDSTOP ");
ECHO_V(MSG_FWTEST_INVERT); ECHO_EM(MSG_FWTEST_ERROR);
ECHO_EM("#define Z_MAX_ENDSTOP_INVERTING"); ECHO_M(MSG_FWTEST_INVERT);
ECHO_M("#define Z_MAX_ENDSTOP_LOGIC ");
ECHO_M(MSG_FWTEST_INTO);
#if ENABLED(CARTESIAN)
ECHO_EM("Configuration_Cartesian.h");
#elif ENABLED(COREXY)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(COREXZ)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(DELTA)
ECHO_EM("Configuration_Delta.h");
#elif ENABLED(SCARA)
ECHO_EM("Configuration_Scara.h");
#endif
return; return;
} }
ECHO_V(MSG_FWTEST_PRESS); ECHO_V(MSG_FWTEST_PRESS);
...@@ -223,14 +309,19 @@ void FirmwareTest() ...@@ -223,14 +309,19 @@ void FirmwareTest()
return; return;
} }
#elif Z_HOME_DIR == -1 #elif Z_HOME_DIR == -1
ECHO_EM("ERROR!!! Z_MIN_PIN not defined"); ECHO_M(MSG_FWTEST_ERROR);
ECHO_M("!!! Z_MIN_PIN ");
ECHO_EM(MSG_FWTEST_NDEF);
return; return;
#elif Z_HOME_DIR == 1 #elif Z_HOME_DIR == 1
ECHO_EM("ERROR!!! Z_MAX_PIN not defined"); ECHO_M(MSG_FWTEST_ERROR);
ECHO_M("!!! Z_MAX_PIN ");
ECHO_EM(MSG_FWTEST_NDEF);
return; return;
#endif #endif
ECHO_EM("ENDSTOP OK"); ECHO_EM("ENDSTOP ");
ECHO_M(MSG_FWTEST_OK);
ECHO_EM(" "); ECHO_EM(" ");
} }
...@@ -265,12 +356,25 @@ void FirmwareTest() ...@@ -265,12 +356,25 @@ void FirmwareTest()
serial_answer = MYSERIAL.read(); serial_answer = MYSERIAL.read();
} }
if(serial_answer=='y' || serial_answer=='Y'){ if(serial_answer=='y' || serial_answer=='Y'){
ECHO_EM("MOTOR X OK"); ECHO_EM("MOTOR X ");
ECHO_M(MSG_FWTEST_OK);
} }
else else
{ {
ECHO_V(MSG_FWTEST_INVERT); ECHO_M(MSG_FWTEST_INVERT);
ECHO_EM("#define INVERT_X_DIR"); ECHO_M("#define INVERT_X_DIR ");
ECHO_M(MSG_FWTEST_INTO);
#if ENABLED(CARTESIAN)
ECHO_EM("Configuration_Cartesian.h");
#elif ENABLED(COREXY)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(COREXZ)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(DELTA)
ECHO_EM("Configuration_Delta.h");
#elif ENABLED(SCARA)
ECHO_EM("Configuration_Scara.h");
#endif
return; return;
} }
ECHO_EM(" "); ECHO_EM(" ");
...@@ -285,12 +389,25 @@ void FirmwareTest() ...@@ -285,12 +389,25 @@ void FirmwareTest()
serial_answer = MYSERIAL.read(); serial_answer = MYSERIAL.read();
} }
if(serial_answer=='y' || serial_answer=='Y'){ if(serial_answer=='y' || serial_answer=='Y'){
ECHO_EM("MOTOR Y OK"); ECHO_EM("MOTOR Y ");
ECHO_M(MSG_FWTEST_OK);
} }
else else
{ {
ECHO_V(MSG_FWTEST_INVERT); ECHO_M(MSG_FWTEST_INVERT);
ECHO_EM("#define INVERT_Y_DIR"); ECHO_M("#define INVERT_Y_DIR ");
ECHO_M(MSG_FWTEST_INTO);
#if ENABLED(CARTESIAN)
ECHO_EM("Configuration_Cartesian.h");
#elif ENABLED(COREXY)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(COREXZ)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(DELTA)
ECHO_EM("Configuration_Delta.h");
#elif ENABLED(SCARA)
ECHO_EM("Configuration_Scara.h");
#endif
return; return;
} }
ECHO_EM(" "); ECHO_EM(" ");
...@@ -305,15 +422,29 @@ void FirmwareTest() ...@@ -305,15 +422,29 @@ void FirmwareTest()
serial_answer = MYSERIAL.read(); serial_answer = MYSERIAL.read();
} }
if(serial_answer=='y' || serial_answer=='Y'){ if(serial_answer=='y' || serial_answer=='Y'){
ECHO_EM("MOTOR Z OK"); ECHO_EM("MOTOR Z ");
ECHO_M(MSG_FWTEST_OK);
} }
else else
{ {
ECHO_V(MSG_FWTEST_INVERT); ECHO_M(MSG_FWTEST_INVERT);
ECHO_EM("#define INVERT_Z_DIR"); ECHO_M("#define INVERT_Z_DIR ");
ECHO_M(MSG_FWTEST_INTO);
#if ENABLED(CARTESIAN)
ECHO_EM("Configuration_Cartesian.h");
#elif ENABLED(COREXY)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(COREXZ)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(DELTA)
ECHO_EM("Configuration_Delta.h");
#elif ENABLED(SCARA)
ECHO_EM("Configuration_Scara.h");
#endif
return; return;
} }
ECHO_EM("MOTOR OK"); ECHO_EM("MOTOR ");
ECHO_M(MSG_FWTEST_OK);
ECHO_EM(" "); ECHO_EM(" ");
ECHO_V(MSG_FWTEST_END); ECHO_V(MSG_FWTEST_END);
} }
...@@ -195,7 +195,7 @@ ...@@ -195,7 +195,7 @@
#define MSG_FWTEST_YES_NO "Put the Y or N command to go next" #define MSG_FWTEST_YES_NO "Put the Y or N command to go next"
#define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection" #define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection"
#define MSG_FWTEST_PRESS "Press and hold the endstop " #define MSG_FWTEST_PRESS "Press and hold the endstop "
#define MSG_FWTEST_INVERT "Reverse value in " #define MSG_FWTEST_INVERT "Reverse value of "
#define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?" #define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?"
#define MSG_FWTEST_YAXIS "Has the nozzle moved forward?" #define MSG_FWTEST_YAXIS "Has the nozzle moved forward?"
#define MSG_FWTEST_ZAXIS "Has the nozzle moved up?" #define MSG_FWTEST_ZAXIS "Has the nozzle moved up?"
...@@ -205,6 +205,10 @@ ...@@ -205,6 +205,10 @@
#define MSG_FWTEST_04 "Start check MOTOR" #define MSG_FWTEST_04 "Start check MOTOR"
#define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!" #define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!"
#define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile." #define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile."
#define MSG_FWTEST_INTO "into "
#define MSG_FWTEST_ERROR "ERROR"
#define MSG_FWTEST_OK "OK"
#define MSG_FWTEST_NDEF "not defined"
#endif // FIRMWARE_TEST #endif // FIRMWARE_TEST
#endif // LANGUAGE_AN_H #endif // LANGUAGE_AN_H
...@@ -195,7 +195,7 @@ ...@@ -195,7 +195,7 @@
#define MSG_FWTEST_YES_NO "Put the Y or N command to go next" #define MSG_FWTEST_YES_NO "Put the Y or N command to go next"
#define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection" #define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection"
#define MSG_FWTEST_PRESS "Press and hold the endstop " #define MSG_FWTEST_PRESS "Press and hold the endstop "
#define MSG_FWTEST_INVERT "Reverse value in " #define MSG_FWTEST_INVERT "Reverse value of "
#define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?" #define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?"
#define MSG_FWTEST_YAXIS "Has the nozzle moved forward?" #define MSG_FWTEST_YAXIS "Has the nozzle moved forward?"
#define MSG_FWTEST_ZAXIS "Has the nozzle moved up?" #define MSG_FWTEST_ZAXIS "Has the nozzle moved up?"
...@@ -205,6 +205,10 @@ ...@@ -205,6 +205,10 @@
#define MSG_FWTEST_04 "Start check MOTOR" #define MSG_FWTEST_04 "Start check MOTOR"
#define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!" #define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!"
#define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile." #define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile."
#define MSG_FWTEST_INTO "into "
#define MSG_FWTEST_ERROR "ERROR"
#define MSG_FWTEST_OK "OK"
#define MSG_FWTEST_NDEF "not defined"
#endif // FIRMWARE_TEST #endif // FIRMWARE_TEST
#endif // LANGUAGE_EN_H #endif // LANGUAGE_EN_H
...@@ -196,7 +196,7 @@ ...@@ -196,7 +196,7 @@
#define MSG_FWTEST_YES_NO "Put the Y or N command to go next" #define MSG_FWTEST_YES_NO "Put the Y or N command to go next"
#define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection" #define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection"
#define MSG_FWTEST_PRESS "Press and hold the endstop " #define MSG_FWTEST_PRESS "Press and hold the endstop "
#define MSG_FWTEST_INVERT "Reverse value in " #define MSG_FWTEST_INVERT "Reverse value of "
#define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?" #define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?"
#define MSG_FWTEST_YAXIS "Has the nozzle moved forward?" #define MSG_FWTEST_YAXIS "Has the nozzle moved forward?"
#define MSG_FWTEST_ZAXIS "Has the nozzle moved up?" #define MSG_FWTEST_ZAXIS "Has the nozzle moved up?"
...@@ -206,6 +206,10 @@ ...@@ -206,6 +206,10 @@
#define MSG_FWTEST_04 "Start check MOTOR" #define MSG_FWTEST_04 "Start check MOTOR"
#define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!" #define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!"
#define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile." #define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile."
#define MSG_FWTEST_INTO "into "
#define MSG_FWTEST_ERROR "ERROR"
#define MSG_FWTEST_OK "OK"
#define MSG_FWTEST_NDEF "not defined"
#endif // FIRMWARE_TEST #endif // FIRMWARE_TEST
#endif // LANGUAGE_DE_H #endif // LANGUAGE_DE_H
...@@ -200,7 +200,7 @@ ...@@ -200,7 +200,7 @@
#define MSG_FWTEST_YES_NO "Put the Y or N command to go next" #define MSG_FWTEST_YES_NO "Put the Y or N command to go next"
#define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection" #define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection"
#define MSG_FWTEST_PRESS "Press and hold the endstop " #define MSG_FWTEST_PRESS "Press and hold the endstop "
#define MSG_FWTEST_INVERT "Reverse value in " #define MSG_FWTEST_INVERT "Reverse value of "
#define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?" #define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?"
#define MSG_FWTEST_YAXIS "Has the nozzle moved forward?" #define MSG_FWTEST_YAXIS "Has the nozzle moved forward?"
#define MSG_FWTEST_ZAXIS "Has the nozzle moved up?" #define MSG_FWTEST_ZAXIS "Has the nozzle moved up?"
...@@ -210,6 +210,10 @@ ...@@ -210,6 +210,10 @@
#define MSG_FWTEST_04 "Start check MOTOR" #define MSG_FWTEST_04 "Start check MOTOR"
#define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!" #define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!"
#define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile." #define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile."
#define MSG_FWTEST_INTO "into "
#define MSG_FWTEST_ERROR "ERROR"
#define MSG_FWTEST_OK "OK"
#define MSG_FWTEST_NDEF "not defined"
#endif // FIRMWARE_TEST #endif // FIRMWARE_TEST
#endif // LANGUAGE_EN_H #endif // LANGUAGE_EN_H
...@@ -195,7 +195,7 @@ ...@@ -195,7 +195,7 @@
#define MSG_FWTEST_YES_NO "Put the Y or N command to go next" #define MSG_FWTEST_YES_NO "Put the Y or N command to go next"
#define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection" #define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection"
#define MSG_FWTEST_PRESS "Press and hold the endstop " #define MSG_FWTEST_PRESS "Press and hold the endstop "
#define MSG_FWTEST_INVERT "Reverse value in " #define MSG_FWTEST_INVERT "Reverse value of "
#define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?" #define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?"
#define MSG_FWTEST_YAXIS "Has the nozzle moved forward?" #define MSG_FWTEST_YAXIS "Has the nozzle moved forward?"
#define MSG_FWTEST_ZAXIS "Has the nozzle moved up?" #define MSG_FWTEST_ZAXIS "Has the nozzle moved up?"
...@@ -205,6 +205,10 @@ ...@@ -205,6 +205,10 @@
#define MSG_FWTEST_04 "Start check MOTOR" #define MSG_FWTEST_04 "Start check MOTOR"
#define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!" #define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!"
#define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile." #define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile."
#define MSG_FWTEST_INTO "into "
#define MSG_FWTEST_ERROR "ERROR"
#define MSG_FWTEST_OK "OK"
#define MSG_FWTEST_NDEF "not defined"
#endif // FIRMWARE_TEST #endif // FIRMWARE_TEST
#endif // LANGUAGE_ES_H #endif // LANGUAGE_ES_H
...@@ -64,6 +64,7 @@ ...@@ -64,6 +64,7 @@
#define MSG_MIN " " STR_THERMOMETER " Min" #define MSG_MIN " " STR_THERMOMETER " Min"
#define MSG_MAX " " STR_THERMOMETER " Max" #define MSG_MAX " " STR_THERMOMETER " Max"
#define MSG_FACTOR " " STR_THERMOMETER " Fact" #define MSG_FACTOR " " STR_THERMOMETER " Fact"
#define MSG_IDLEOOZING "Anti oozing"
#define MSG_AUTOTEMP "Auto tenperatura" #define MSG_AUTOTEMP "Auto tenperatura"
#define MSG_ON "On " #define MSG_ON "On "
#define MSG_OFF "Off" #define MSG_OFF "Off"
...@@ -94,7 +95,7 @@ ...@@ -94,7 +95,7 @@
#define MSG_TEMPERATURE "Tenperatura" #define MSG_TEMPERATURE "Tenperatura"
#define MSG_MOTION "Mugimendua" #define MSG_MOTION "Mugimendua"
#define MSG_VOLUMETRIC "Filament" #define MSG_VOLUMETRIC "Filament"
#define MSG_VOLUMETRIC_ENABLED "E in mm" STR_h3 #define MSG_VOLUMETRIC_ENABLED "E in mm" STR_h3
#define MSG_FILAMENT_SIZE_EXTRUDER "Fil. Dia." #define MSG_FILAMENT_SIZE_EXTRUDER "Fil. Dia."
#define MSG_CONTRAST "LCD kontrastea" #define MSG_CONTRAST "LCD kontrastea"
#define MSG_STORE_EPROM "Gorde memoria" #define MSG_STORE_EPROM "Gorde memoria"
...@@ -169,7 +170,7 @@ ...@@ -169,7 +170,7 @@
#define MSG_FWTEST_YES_NO "Put the Y or N command to go next" #define MSG_FWTEST_YES_NO "Put the Y or N command to go next"
#define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection" #define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection"
#define MSG_FWTEST_PRESS "Press and hold the endstop " #define MSG_FWTEST_PRESS "Press and hold the endstop "
#define MSG_FWTEST_INVERT "Reverse value in " #define MSG_FWTEST_INVERT "Reverse value of "
#define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?" #define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?"
#define MSG_FWTEST_YAXIS "Has the nozzle moved forward?" #define MSG_FWTEST_YAXIS "Has the nozzle moved forward?"
#define MSG_FWTEST_ZAXIS "Has the nozzle moved up?" #define MSG_FWTEST_ZAXIS "Has the nozzle moved up?"
...@@ -179,6 +180,10 @@ ...@@ -179,6 +180,10 @@
#define MSG_FWTEST_04 "Start check MOTOR" #define MSG_FWTEST_04 "Start check MOTOR"
#define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!" #define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!"
#define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile." #define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile."
#define MSG_FWTEST_INTO "into "
#define MSG_FWTEST_ERROR "ERROR"
#define MSG_FWTEST_OK "OK"
#define MSG_FWTEST_NDEF "not defined"
#endif // FIRMWARE_TEST #endif // FIRMWARE_TEST
#endif // LANGUAGE_EU_H #endif // LANGUAGE_EU_H
...@@ -64,6 +64,7 @@ ...@@ -64,6 +64,7 @@
#define MSG_MIN STR_THERMOMETER " Min" #define MSG_MIN STR_THERMOMETER " Min"
#define MSG_MAX STR_THERMOMETER " Max" #define MSG_MAX STR_THERMOMETER " Max"
#define MSG_FACTOR STR_THERMOMETER " Kerr" #define MSG_FACTOR STR_THERMOMETER " Kerr"
#define MSG_IDLEOOZING "Anti oozing"
#define MSG_AUTOTEMP "Autotemp" #define MSG_AUTOTEMP "Autotemp"
#define MSG_ON "On " #define MSG_ON "On "
#define MSG_OFF "Off" #define MSG_OFF "Off"
...@@ -94,7 +95,7 @@ ...@@ -94,7 +95,7 @@
#define MSG_TEMPERATURE "L" STR_ae "mp" STR_oe "tila" #define MSG_TEMPERATURE "L" STR_ae "mp" STR_oe "tila"
#define MSG_MOTION "Liike" #define MSG_MOTION "Liike"
#define MSG_VOLUMETRIC "Filament" #define MSG_VOLUMETRIC "Filament"
#define MSG_VOLUMETRIC_ENABLED "E in mm" STR_h3 #define MSG_VOLUMETRIC_ENABLED "E in mm" STR_h3
#define MSG_FILAMENT_SIZE_EXTRUDER "Fil. Dia." #define MSG_FILAMENT_SIZE_EXTRUDER "Fil. Dia."
#define MSG_CONTRAST "LCD kontrasti" #define MSG_CONTRAST "LCD kontrasti"
#define MSG_STORE_EPROM "Tallenna muistiin" #define MSG_STORE_EPROM "Tallenna muistiin"
...@@ -169,7 +170,7 @@ ...@@ -169,7 +170,7 @@
#define MSG_FWTEST_YES_NO "Put the Y or N command to go next" #define MSG_FWTEST_YES_NO "Put the Y or N command to go next"
#define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection" #define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection"
#define MSG_FWTEST_PRESS "Press and hold the endstop " #define MSG_FWTEST_PRESS "Press and hold the endstop "
#define MSG_FWTEST_INVERT "Reverse value in " #define MSG_FWTEST_INVERT "Reverse value of "
#define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?" #define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?"
#define MSG_FWTEST_YAXIS "Has the nozzle moved forward?" #define MSG_FWTEST_YAXIS "Has the nozzle moved forward?"
#define MSG_FWTEST_ZAXIS "Has the nozzle moved up?" #define MSG_FWTEST_ZAXIS "Has the nozzle moved up?"
...@@ -179,6 +180,10 @@ ...@@ -179,6 +180,10 @@
#define MSG_FWTEST_04 "Start check MOTOR" #define MSG_FWTEST_04 "Start check MOTOR"
#define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!" #define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!"
#define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile." #define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile."
#define MSG_FWTEST_INTO "into "
#define MSG_FWTEST_ERROR "ERROR"
#define MSG_FWTEST_OK "OK"
#define MSG_FWTEST_NDEF "not defined"
#endif // FIRMWARE_TEST #endif // FIRMWARE_TEST
#endif // LANGUAGE_FI_H #endif // LANGUAGE_FI_H
...@@ -65,6 +65,7 @@ ...@@ -65,6 +65,7 @@
#define MSG_MIN " " STR_THERMOMETER " Min" #define MSG_MIN " " STR_THERMOMETER " Min"
#define MSG_MAX " " STR_THERMOMETER " Max" #define MSG_MAX " " STR_THERMOMETER " Max"
#define MSG_FACTOR " " STR_THERMOMETER " Facteur" #define MSG_FACTOR " " STR_THERMOMETER " Facteur"
#define MSG_IDLEOOZING "Anti oozing"
#define MSG_AUTOTEMP "Temp. Auto." #define MSG_AUTOTEMP "Temp. Auto."
#define MSG_ON "Marche " #define MSG_ON "Marche "
#define MSG_OFF "Arret" #define MSG_OFF "Arret"
...@@ -172,7 +173,7 @@ ...@@ -172,7 +173,7 @@
#define MSG_FWTEST_YES_NO "Put the Y or N command to go next" #define MSG_FWTEST_YES_NO "Put the Y or N command to go next"
#define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection" #define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection"
#define MSG_FWTEST_PRESS "Press and hold the endstop " #define MSG_FWTEST_PRESS "Press and hold the endstop "
#define MSG_FWTEST_INVERT "Reverse value in " #define MSG_FWTEST_INVERT "Reverse value of "
#define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?" #define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?"
#define MSG_FWTEST_YAXIS "Has the nozzle moved forward?" #define MSG_FWTEST_YAXIS "Has the nozzle moved forward?"
#define MSG_FWTEST_ZAXIS "Has the nozzle moved up?" #define MSG_FWTEST_ZAXIS "Has the nozzle moved up?"
...@@ -182,6 +183,10 @@ ...@@ -182,6 +183,10 @@
#define MSG_FWTEST_04 "Start check MOTOR" #define MSG_FWTEST_04 "Start check MOTOR"
#define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!" #define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!"
#define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile." #define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile."
#define MSG_FWTEST_INTO "into "
#define MSG_FWTEST_ERROR "ERROR"
#define MSG_FWTEST_OK "OK"
#define MSG_FWTEST_NDEF "not defined"
#endif // FIRMWARE_TEST #endif // FIRMWARE_TEST
#endif // LANGUAGE_FR_H #endif // LANGUAGE_FR_H
...@@ -196,7 +196,7 @@ ...@@ -196,7 +196,7 @@
#define MSG_FWTEST_YES_NO "Dai il comando Y o N per andare avanti" #define MSG_FWTEST_YES_NO "Dai il comando Y o N per andare avanti"
#define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Controllare cavi e connessioni" #define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Controllare cavi e connessioni"
#define MSG_FWTEST_PRESS "Premere e tenere premuto l'endstop " #define MSG_FWTEST_PRESS "Premere e tenere premuto l'endstop "
#define MSG_FWTEST_INVERT "Invertire valore in " #define MSG_FWTEST_INVERT "Invertire valore di "
#define MSG_FWTEST_XAXIS "Il nozzle si e' spostato a destra?" #define MSG_FWTEST_XAXIS "Il nozzle si e' spostato a destra?"
#define MSG_FWTEST_YAXIS "Il nozzle si e' spostato in avanti?" #define MSG_FWTEST_YAXIS "Il nozzle si e' spostato in avanti?"
#define MSG_FWTEST_ZAXIS "Il nozzle si e' spostato in alto?" #define MSG_FWTEST_ZAXIS "Il nozzle si e' spostato in alto?"
...@@ -206,6 +206,10 @@ ...@@ -206,6 +206,10 @@
#define MSG_FWTEST_04 "Inizio controllo MOTORI" #define MSG_FWTEST_04 "Inizio controllo MOTORI"
#define MSG_FWTEST_ATTENTION "ATTENZIONE! Controlla che i tre assi siano a piu' di 5 mm dagli endstop!" #define MSG_FWTEST_ATTENTION "ATTENZIONE! Controlla che i tre assi siano a piu' di 5 mm dagli endstop!"
#define MSG_FWTEST_END "Test finito. Disabilitare FIRMWARE_TEST e ricompilare." #define MSG_FWTEST_END "Test finito. Disabilitare FIRMWARE_TEST e ricompilare."
#define MSG_FWTEST_INTO "in "
#define MSG_FWTEST_ERROR "ERRORE"
#define MSG_FWTEST_OK "OK"
#define MSG_FWTEST_NDEF "non definito"
#endif // FIRMWARE_TEST #endif // FIRMWARE_TEST
#endif // LANGUAGE_IT_H #endif // LANGUAGE_IT_H
...@@ -64,6 +64,7 @@ ...@@ -64,6 +64,7 @@
#define MSG_MIN " " STR_THERMOMETER " Min" #define MSG_MIN " " STR_THERMOMETER " Min"
#define MSG_MAX " " STR_THERMOMETER " Max" #define MSG_MAX " " STR_THERMOMETER " Max"
#define MSG_FACTOR " " STR_THERMOMETER " Fact" #define MSG_FACTOR " " STR_THERMOMETER " Fact"
#define MSG_IDLEOOZING "Anti oozing"
#define MSG_AUTOTEMP "Autotemp" #define MSG_AUTOTEMP "Autotemp"
#define MSG_ON "Aan " #define MSG_ON "Aan "
#define MSG_OFF "Uit" #define MSG_OFF "Uit"
...@@ -169,7 +170,7 @@ ...@@ -169,7 +170,7 @@
#define MSG_FWTEST_YES_NO "Put the Y or N command to go next" #define MSG_FWTEST_YES_NO "Put the Y or N command to go next"
#define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection" #define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection"
#define MSG_FWTEST_PRESS "Press and hold the endstop " #define MSG_FWTEST_PRESS "Press and hold the endstop "
#define MSG_FWTEST_INVERT "Reverse value in " #define MSG_FWTEST_INVERT "Reverse value of "
#define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?" #define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?"
#define MSG_FWTEST_YAXIS "Has the nozzle moved forward?" #define MSG_FWTEST_YAXIS "Has the nozzle moved forward?"
#define MSG_FWTEST_ZAXIS "Has the nozzle moved up?" #define MSG_FWTEST_ZAXIS "Has the nozzle moved up?"
...@@ -179,6 +180,10 @@ ...@@ -179,6 +180,10 @@
#define MSG_FWTEST_04 "Start check MOTOR" #define MSG_FWTEST_04 "Start check MOTOR"
#define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!" #define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!"
#define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile." #define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile."
#define MSG_FWTEST_INTO "into "
#define MSG_FWTEST_ERROR "ERROR"
#define MSG_FWTEST_OK "OK"
#define MSG_FWTEST_NDEF "not defined"
#endif // FIRMWARE_TEST #endif // FIRMWARE_TEST
#endif // LANGUAGE_NL_H #endif // LANGUAGE_NL_H
...@@ -64,6 +64,7 @@ ...@@ -64,6 +64,7 @@
#define MSG_MIN " " STR_THERMOMETER " Min" #define MSG_MIN " " STR_THERMOMETER " Min"
#define MSG_MAX " " STR_THERMOMETER " Max" #define MSG_MAX " " STR_THERMOMETER " Max"
#define MSG_FACTOR " " STR_THERMOMETER " Fact" #define MSG_FACTOR " " STR_THERMOMETER " Fact"
#define MSG_IDLEOOZING "Anti oozing"
#define MSG_AUTOTEMP "Auto. temperatura" #define MSG_AUTOTEMP "Auto. temperatura"
#define MSG_ON "Wl. " #define MSG_ON "Wl. "
#define MSG_OFF "Wyl." #define MSG_OFF "Wyl."
...@@ -169,7 +170,7 @@ ...@@ -169,7 +170,7 @@
#define MSG_FWTEST_YES_NO "Put the Y or N command to go next" #define MSG_FWTEST_YES_NO "Put the Y or N command to go next"
#define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection" #define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection"
#define MSG_FWTEST_PRESS "Press and hold the endstop " #define MSG_FWTEST_PRESS "Press and hold the endstop "
#define MSG_FWTEST_INVERT "Reverse value in " #define MSG_FWTEST_INVERT "Reverse value of "
#define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?" #define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?"
#define MSG_FWTEST_YAXIS "Has the nozzle moved forward?" #define MSG_FWTEST_YAXIS "Has the nozzle moved forward?"
#define MSG_FWTEST_ZAXIS "Has the nozzle moved up?" #define MSG_FWTEST_ZAXIS "Has the nozzle moved up?"
...@@ -179,6 +180,10 @@ ...@@ -179,6 +180,10 @@
#define MSG_FWTEST_04 "Start check MOTOR" #define MSG_FWTEST_04 "Start check MOTOR"
#define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!" #define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!"
#define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile." #define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile."
#define MSG_FWTEST_INTO "into "
#define MSG_FWTEST_ERROR "ERROR"
#define MSG_FWTEST_OK "OK"
#define MSG_FWTEST_NDEF "not defined"
#endif // FIRMWARE_TEST #endif // FIRMWARE_TEST
#endif // LANGUAGE_PL_H #endif // LANGUAGE_PL_H
...@@ -178,7 +178,7 @@ ...@@ -178,7 +178,7 @@
#define MSG_FWTEST_YES_NO "Put the Y or N command to go next" #define MSG_FWTEST_YES_NO "Put the Y or N command to go next"
#define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection" #define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection"
#define MSG_FWTEST_PRESS "Press and hold the endstop " #define MSG_FWTEST_PRESS "Press and hold the endstop "
#define MSG_FWTEST_INVERT "Reverse value in " #define MSG_FWTEST_INVERT "Reverse value of "
#define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?" #define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?"
#define MSG_FWTEST_YAXIS "Has the nozzle moved forward?" #define MSG_FWTEST_YAXIS "Has the nozzle moved forward?"
#define MSG_FWTEST_ZAXIS "Has the nozzle moved up?" #define MSG_FWTEST_ZAXIS "Has the nozzle moved up?"
...@@ -188,6 +188,10 @@ ...@@ -188,6 +188,10 @@
#define MSG_FWTEST_04 "Start check MOTOR" #define MSG_FWTEST_04 "Start check MOTOR"
#define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!" #define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!"
#define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile." #define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile."
#define MSG_FWTEST_INTO "into "
#define MSG_FWTEST_ERROR "ERROR"
#define MSG_FWTEST_OK "OK"
#define MSG_FWTEST_NDEF "not defined"
#endif // FIRMWARE_TEST #endif // FIRMWARE_TEST
#endif // LANGUAGE_PT_BR_H #endif // LANGUAGE_PT_BR_H
...@@ -64,6 +64,7 @@ ...@@ -64,6 +64,7 @@
#define MSG_MIN " " STR_THERMOMETER " Min" #define MSG_MIN " " STR_THERMOMETER " Min"
#define MSG_MAX " " STR_THERMOMETER " Max" #define MSG_MAX " " STR_THERMOMETER " Max"
#define MSG_FACTOR " " STR_THERMOMETER " Fact" #define MSG_FACTOR " " STR_THERMOMETER " Fact"
#define MSG_IDLEOOZING "Anti oozing"
#define MSG_AUTOTEMP "Autotemp" #define MSG_AUTOTEMP "Autotemp"
#define MSG_ON "On " #define MSG_ON "On "
#define MSG_OFF "Off" #define MSG_OFF "Off"
...@@ -169,7 +170,7 @@ ...@@ -169,7 +170,7 @@
#define MSG_FWTEST_YES_NO "Put the Y or N command to go next" #define MSG_FWTEST_YES_NO "Put the Y or N command to go next"
#define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection" #define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection"
#define MSG_FWTEST_PRESS "Press and hold the endstop " #define MSG_FWTEST_PRESS "Press and hold the endstop "
#define MSG_FWTEST_INVERT "Reverse value in " #define MSG_FWTEST_INVERT "Reverse value of "
#define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?" #define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?"
#define MSG_FWTEST_YAXIS "Has the nozzle moved forward?" #define MSG_FWTEST_YAXIS "Has the nozzle moved forward?"
#define MSG_FWTEST_ZAXIS "Has the nozzle moved up?" #define MSG_FWTEST_ZAXIS "Has the nozzle moved up?"
...@@ -179,6 +180,10 @@ ...@@ -179,6 +180,10 @@
#define MSG_FWTEST_04 "Start check MOTOR" #define MSG_FWTEST_04 "Start check MOTOR"
#define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!" #define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!"
#define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile." #define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile."
#define MSG_FWTEST_INTO "into "
#define MSG_FWTEST_ERROR "ERROR"
#define MSG_FWTEST_OK "OK"
#define MSG_FWTEST_NDEF "not defined"
#endif // FIRMWARE_TEST #endif // FIRMWARE_TEST
#endif // LANGUAGE_PT_H #endif // LANGUAGE_PT_H
...@@ -64,6 +64,7 @@ ...@@ -64,6 +64,7 @@
#define MSG_MIN " " STR_THERMOMETER "Минимум" #define MSG_MIN " " STR_THERMOMETER "Минимум"
#define MSG_MAX " " STR_THERMOMETER "Максимум" #define MSG_MAX " " STR_THERMOMETER "Максимум"
#define MSG_FACTOR " " STR_THERMOMETER "Фактор" #define MSG_FACTOR " " STR_THERMOMETER "Фактор"
#define MSG_IDLEOOZING "Anti oozing"
#define MSG_AUTOTEMP "Autotemp" #define MSG_AUTOTEMP "Autotemp"
#define MSG_ON "Вкл." #define MSG_ON "Вкл."
#define MSG_OFF "Выкл." #define MSG_OFF "Выкл."
...@@ -169,7 +170,7 @@ ...@@ -169,7 +170,7 @@
#define MSG_FWTEST_YES_NO "Put the Y or N command to go next" #define MSG_FWTEST_YES_NO "Put the Y or N command to go next"
#define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection" #define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection"
#define MSG_FWTEST_PRESS "Press and hold the endstop " #define MSG_FWTEST_PRESS "Press and hold the endstop "
#define MSG_FWTEST_INVERT "Reverse value in " #define MSG_FWTEST_INVERT "Reverse value of "
#define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?" #define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?"
#define MSG_FWTEST_YAXIS "Has the nozzle moved forward?" #define MSG_FWTEST_YAXIS "Has the nozzle moved forward?"
#define MSG_FWTEST_ZAXIS "Has the nozzle moved up?" #define MSG_FWTEST_ZAXIS "Has the nozzle moved up?"
...@@ -179,6 +180,10 @@ ...@@ -179,6 +180,10 @@
#define MSG_FWTEST_04 "Start check MOTOR" #define MSG_FWTEST_04 "Start check MOTOR"
#define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!" #define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!"
#define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile." #define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile."
#define MSG_FWTEST_INTO "into "
#define MSG_FWTEST_ERROR "ERROR"
#define MSG_FWTEST_OK "OK"
#define MSG_FWTEST_NDEF "not defined"
#endif // FIRMWARE_TEST #endif // FIRMWARE_TEST
#endif // LANGUAGE_RU_H #endif // LANGUAGE_RU_H
...@@ -632,7 +632,7 @@ ...@@ -632,7 +632,7 @@
#define ORIG_TEMP_2_PIN 1 //ANALOG NUMBERING #define ORIG_TEMP_2_PIN 1 //ANALOG NUMBERING
#define ORIG_TEMP_BED_PIN 0 //ANALOG NUMBERING #define ORIG_TEMP_BED_PIN 0 //ANALOG NUMBERING
#define BEEPER_PIN 36 #define BEEPER_PIN 36
#define KILL_PIN -1 #define KILL_PIN -1
...@@ -742,14 +742,14 @@ ...@@ -742,14 +742,14 @@
//bed pins //bed pins
#define ORIG_HEATER_BED_PIN -1 #define ORIG_HEATER_BED_PIN -1
#define ORIG_TEMP_BED_PIN -1 #define ORIG_TEMP_BED_PIN -1
#define SDSS -1 #define SDSS -1
#define SDPOWER -1 #define SDPOWER -1
#define LED_PIN -1 #define LED_PIN -1
//pin for controlling the PSU. //pin for controlling the PSU.
#define PS_ON_PIN 14 //Alex, Do this work on the card? #define PS_ON_PIN 14 //Alex, Do this work on the card?
//Alex extras from Gen3+ //Alex extras from Gen3+
#define KILL_PIN -1 #define KILL_PIN -1
...@@ -2142,12 +2142,12 @@ ...@@ -2142,12 +2142,12 @@
#ifdef ULTRA_LCD #ifdef ULTRA_LCD
// RADDS LCD panel // RADDS LCD panel
#ifdef NEWPANEL #ifdef NEWPANEL
#define LCD_PINS_RS 42 #define LCD_PINS_RS 42
#define LCD_PINS_ENABLE 43 #define LCD_PINS_ENABLE 43
#define LCD_PINS_D4 44 #define LCD_PINS_D4 44
#define LCD_PINS_D5 45 #define LCD_PINS_D5 45
#define LCD_PINS_D6 46 #define LCD_PINS_D6 46
#define LCD_PINS_D7 47 #define LCD_PINS_D7 47
#ifdef REPRAP_DISCOUNT_SMART_CONTROLLER #ifdef REPRAP_DISCOUNT_SMART_CONTROLLER
#define BEEPER_PIN 41 #define BEEPER_PIN 41
...@@ -2513,11 +2513,11 @@ ...@@ -2513,11 +2513,11 @@
#define MOTOR_FAULT_PIN 22 // PB26 , motor X-Y-Z-E0 motor FAULT #define MOTOR_FAULT_PIN 22 // PB26 , motor X-Y-Z-E0 motor FAULT
#define SDPOWER -1 #define SDPOWER -1
#define SDSS 77 // PA28 #define SDSS 77 // PA28
#define SD_DETECT_PIN 87 // PA29 #define SD_DETECT_PIN 87 // PA29
#define SD_DETECT_INVERTED false #define SD_DETECT_INVERTED false
#define LED_PIN -1 #define LED_PIN -1
#define ORIG_FAN_PIN 92 // PA5 #define ORIG_FAN_PIN 92 // PA5
#define FAN2_PIN 31 // PA7 #define FAN2_PIN 31 // PA7
...@@ -2668,7 +2668,7 @@ ...@@ -2668,7 +2668,7 @@
#if MB(STB_11) #if MB(STB_11)
#define ORIG_FAN_PIN 4 #define ORIG_FAN_PIN 4
// Uncomment this if you have the first generation (V1.10) of STBs board // Uncomment this if you have the first generation (V1.10) of STBs board
#define LCD_PIN_BL 17 // LCD backlight LED #define LCD_PIN_BL 17 // LCD backlight LED
#endif #endif
...@@ -2743,10 +2743,10 @@ ...@@ -2743,10 +2743,10 @@
#define LCD_PINS_D4 17 //SCK (CLK) clock #define LCD_PINS_D4 17 //SCK (CLK) clock
#define BEEPER_PIN 27 // Pin 27 is take by LED_Pin, but Melzi LED do nothing with Marlin and I take this pin for BEEPER.... See here > [github.com] , If you want use this pin with Gcode M42 instead BEEPER #define BEEPER_PIN 27 // Pin 27 is take by LED_Pin, but Melzi LED do nothing with Marlin and I take this pin for BEEPER.... See here > [github.com] , If you want use this pin with Gcode M42 instead BEEPER
#else #else
// Pins for DOGM SPI LCD Support // Pins for DOGM SPI LCD Support
#define DOGLCD_A0 30 #define DOGLCD_A0 30
#define DOGLCD_CS 29 #define DOGLCD_CS 29
#define LCD_CONTRAST 1 #define LCD_CONTRAST 1
#endif #endif
// Uncomment screen orientation // Uncomment screen orientation
#define LCD_SCREEN_ROT_0 #define LCD_SCREEN_ROT_0
...@@ -3595,9 +3595,9 @@ ...@@ -3595,9 +3595,9 @@
#define ORIG_HEATER_2_PIN 9 // thermo couple #define ORIG_HEATER_2_PIN 9 // thermo couple
#if TEMP_SENSOR_0 == -1 #if TEMP_SENSOR_0 == -1
#define ORIG_TEMP_0_PIN 5 // ANALOG NUMBERING #define ORIG_TEMP_0_PIN 5 // ANALOG NUMBERING
#else #else
#define ORIG_TEMP_0_PIN 7 // ANALOG NUMBERING #define ORIG_TEMP_0_PIN 7 // ANALOG NUMBERING
#endif #endif
#define ORIG_TEMP_1_PIN 6 // ANALOG NUMBERING #define ORIG_TEMP_1_PIN 6 // ANALOG NUMBERING
#define ORIG_TEMP_2_PIN -1 // ANALOG NUMBERING #define ORIG_TEMP_2_PIN -1 // ANALOG NUMBERING
...@@ -3605,7 +3605,7 @@ ...@@ -3605,7 +3605,7 @@
#define ORIG_HEATER_BED_PIN 3 // BED #define ORIG_HEATER_BED_PIN 3 // BED
#define ORIG_TEMP_BED_PIN 6 // ANALOG NUMBERING #define ORIG_TEMP_BED_PIN 6 // ANALOG NUMBERING
#define BEEPER_PIN -1 #define BEEPER_PIN -1
#define LCD_PINS_RS -1 #define LCD_PINS_RS -1
...@@ -3731,7 +3731,7 @@ ...@@ -3731,7 +3731,7 @@
#define ORIG_TEMP_BED_PIN 14 // ANALOG NUMBERING #define ORIG_TEMP_BED_PIN 14 // ANALOG NUMBERING
#endif #endif
#define BEEPER_PIN 61 #define BEEPER_PIN 61
#define LCD_PINS_RS 32 #define LCD_PINS_RS 32
#define LCD_PINS_ENABLE 31 #define LCD_PINS_ENABLE 31
...@@ -3754,7 +3754,7 @@ ...@@ -3754,7 +3754,7 @@
#define BLEN_B 1 #define BLEN_B 1
#define BLEN_A 0 #define BLEN_A 0
#define SD_DETECT_PIN -1 // Megatronics does not use this port #define SD_DETECT_PIN -1 // Megatronics does not use this port
#endif // MEGATRONICS_3 #endif // MEGATRONICS_3
/****************************************************************************************/ /****************************************************************************************/
...@@ -4651,7 +4651,7 @@ DaveX plan for Teensylu/printrboard-type pinouts (ref teensylu & sprinter) for a ...@@ -4651,7 +4651,7 @@ DaveX plan for Teensylu/printrboard-type pinouts (ref teensylu & sprinter) for a
#define ORIG_TEMP_2_PIN -1 #define ORIG_TEMP_2_PIN -1
#define SDPOWER -1 #define SDPOWER -1
#define SD_DETECT_PIN -1 #define SD_DETECT_PIN -1
#define SDSS 20 // 8 #define SDSS 20 // 8
#define LED_PIN 6 #define LED_PIN 6
#define PS_ON_PIN 27 #define PS_ON_PIN 27
...@@ -5120,9 +5120,9 @@ DaveX plan for Teensylu/printrboard-type pinouts (ref teensylu & sprinter) for a ...@@ -5120,9 +5120,9 @@ DaveX plan for Teensylu/printrboard-type pinouts (ref teensylu & sprinter) for a
//#define DUE_SOFTWARE_SPI //#define DUE_SOFTWARE_SPI
#else #else
#define DUE_SOFTWARE_SPI #define DUE_SOFTWARE_SPI
#define MOSI_PIN 51 #define MOSI_PIN 51
#define MISO_PIN 50 #define MISO_PIN 50
#define SCK_PIN 52 #define SCK_PIN 52
#endif #endif
/****************************************************************************************/ /****************************************************************************************/
...@@ -5296,7 +5296,7 @@ DaveX plan for Teensylu/printrboard-type pinouts (ref teensylu & sprinter) for a ...@@ -5296,7 +5296,7 @@ DaveX plan for Teensylu/printrboard-type pinouts (ref teensylu & sprinter) for a
#ifdef LASERBEAM #ifdef LASERBEAM
#define LASER_PWR_PIN 41 #define LASER_PWR_PIN 41
#define LASER_TTL_PIN 42 #define LASER_TTL_PIN 42
#endif #endif
#ifdef FILAMENT_RUNOUT_SENSOR #ifdef FILAMENT_RUNOUT_SENSOR
......
...@@ -317,5 +317,9 @@ ...@@ -317,5 +317,9 @@
#ifdef SDCARDDETECTINVERTED #ifdef SDCARDDETECTINVERTED
#error SDCARDDETECTINVERTED is now SD_DETECT_INVERTED. Please update your configuration. #error SDCARDDETECTINVERTED is now SD_DETECT_INVERTED. Please update your configuration.
#endif #endif
#if ENABLED(POWER_CONSUMPTION) && !PIN_EXISTS(POWER_CONSUMPTION)
#error You have to set a valid POWER_CONSUMPTION_PIN in pins.h in order to use this feature.
#endif
#endif //SANITYCHECK_H #endif //SANITYCHECK_H
...@@ -159,7 +159,7 @@ static void initISR(timer16_Sequence_t timer) { ...@@ -159,7 +159,7 @@ static void initISR(timer16_Sequence_t timer) {
TCNT3 = 0; // clear the timer count TCNT3 = 0; // clear the timer count
#ifdef __AVR_ATmega128__ #ifdef __AVR_ATmega128__
TIFR |= _BV(OCF3A); // clear any pending interrupts; TIFR |= _BV(OCF3A); // clear any pending interrupts;
ETIMSK |= _BV(OCIE3A); // enable the output compare interrupt ETIMSK |= _BV(OCIE3A); // enable the output compare interrupt
#else #else
TIFR3 = _BV(OCF3A); // clear any pending interrupts; TIFR3 = _BV(OCF3A); // clear any pending interrupts;
TIMSK3 = _BV(OCIE3A) ; // enable the output compare interrupt TIMSK3 = _BV(OCIE3A) ; // enable the output compare interrupt
......
...@@ -29,78 +29,78 @@ ...@@ -29,78 +29,78 @@
// Stepper objects of TMC steppers used // Stepper objects of TMC steppers used
#if ENABLED(X_IS_TMC) #if ENABLED(X_IS_TMC)
TMC26XStepper stepperX(200,X_ENABLE_PIN,X_STEP_PIN,X_DIR_PIN,X_MAX_CURRENT,X_SENSE_RESISTOR); TMC26XStepper stepperX(200,X_ENABLE_PIN,X_STEP_PIN,X_DIR_PIN,X_MAX_CURRENT,X_SENSE_RESISTOR);
#endif #endif
#if ENABLED(X2_IS_TMC) #if ENABLED(X2_IS_TMC)
TMC26XStepper stepperX2(200,X2_ENABLE_PIN,X2_STEP_PIN,X2_DIR_PIN,X2_MAX_CURRENT,X2_SENSE_RESISTOR); TMC26XStepper stepperX2(200,X2_ENABLE_PIN,X2_STEP_PIN,X2_DIR_PIN,X2_MAX_CURRENT,X2_SENSE_RESISTOR);
#endif #endif
#if ENABLED(Y_IS_TMC) #if ENABLED(Y_IS_TMC)
TMC26XStepper stepperY(200,Y_ENABLE_PIN,Y_STEP_PIN,Y_DIR_PIN,Y_MAX_CURRENT,Y_SENSE_RESISTOR); TMC26XStepper stepperY(200,Y_ENABLE_PIN,Y_STEP_PIN,Y_DIR_PIN,Y_MAX_CURRENT,Y_SENSE_RESISTOR);
#endif #endif
#if ENABLED(Y2_IS_TMC) #if ENABLED(Y2_IS_TMC)
TMC26XStepper stepperY2(200,Y2_ENABLE_PIN,Y2_STEP_PIN,Y2_DIR_PIN,Y2_MAX_CURRENT,Y2_SENSE_RESISTOR); TMC26XStepper stepperY2(200,Y2_ENABLE_PIN,Y2_STEP_PIN,Y2_DIR_PIN,Y2_MAX_CURRENT,Y2_SENSE_RESISTOR);
#endif #endif
#if ENABLED(Z_IS_TMC) #if ENABLED(Z_IS_TMC)
TMC26XStepper stepperZ(200,Z_ENABLE_PIN,Z_STEP_PIN,Z_DIR_PIN,Z_MAX_CURRENT,Z_SENSE_RESISTOR); TMC26XStepper stepperZ(200,Z_ENABLE_PIN,Z_STEP_PIN,Z_DIR_PIN,Z_MAX_CURRENT,Z_SENSE_RESISTOR);
#endif #endif
#if ENABLED(Z2_IS_TMC) #if ENABLED(Z2_IS_TMC)
TMC26XStepper stepperZ2(200,Z2_ENABLE_PIN,Z2_STEP_PIN,Z2_DIR_PIN,Z2_MAX_CURRENT,Z2_SENSE_RESISTOR); TMC26XStepper stepperZ2(200,Z2_ENABLE_PIN,Z2_STEP_PIN,Z2_DIR_PIN,Z2_MAX_CURRENT,Z2_SENSE_RESISTOR);
#endif #endif
#if ENABLED(E0_IS_TMC) #if ENABLED(E0_IS_TMC)
TMC26XStepper stepperE0(200,E0_ENABLE_PIN,E0_STEP_PIN,E0_DIR_PIN,E0_MAX_CURRENT,E0_SENSE_RESISTOR); TMC26XStepper stepperE0(200,E0_ENABLE_PIN,E0_STEP_PIN,E0_DIR_PIN,E0_MAX_CURRENT,E0_SENSE_RESISTOR);
#endif #endif
#if ENABLED(E1_IS_TMC) #if ENABLED(E1_IS_TMC)
TMC26XStepper stepperE1(200,E1_ENABLE_PIN,E1_STEP_PIN,E1_DIR_PIN,E1_MAX_CURRENT,E1_SENSE_RESISTOR); TMC26XStepper stepperE1(200,E1_ENABLE_PIN,E1_STEP_PIN,E1_DIR_PIN,E1_MAX_CURRENT,E1_SENSE_RESISTOR);
#endif #endif
#if ENABLED(E2_IS_TMC) #if ENABLED(E2_IS_TMC)
TMC26XStepper stepperE2(200,E2_ENABLE_PIN,E2_STEP_PIN,E2_DIR_PIN,E2_MAX_CURRENT,E2_SENSE_RESISTOR); TMC26XStepper stepperE2(200,E2_ENABLE_PIN,E2_STEP_PIN,E2_DIR_PIN,E2_MAX_CURRENT,E2_SENSE_RESISTOR);
#endif #endif
#if ENABLED(E3_IS_TMC) #if ENABLED(E3_IS_TMC)
TMC26XStepper stepperE3(200,E3_ENABLE_PIN,E3_STEP_PIN,E3_DIR_PIN,E3_MAX_CURRENT,E3_SENSE_RESISTOR); TMC26XStepper stepperE3(200,E3_ENABLE_PIN,E3_STEP_PIN,E3_DIR_PIN,E3_MAX_CURRENT,E3_SENSE_RESISTOR);
#endif #endif
#if ENABLED(HAVE_TMCDRIVER) #if ENABLED(HAVE_TMCDRIVER)
void tmc_init() void tmc_init()
{ {
#if ENABLED(X_IS_TMC) #if ENABLED(X_IS_TMC)
stepperX.setMicrosteps(X_MICROSTEPS); stepperX.setMicrosteps(X_MICROSTEPS);
stepperX.start(); stepperX.start();
#endif #endif
#if ENABLED(X2_IS_TMC) #if ENABLED(X2_IS_TMC)
stepperX2.setMicrosteps(X2_MICROSTEPS); stepperX2.setMicrosteps(X2_MICROSTEPS);
stepperX2.start(); stepperX2.start();
#endif #endif
#if ENABLED(Y_IS_TMC) #if ENABLED(Y_IS_TMC)
stepperY.setMicrosteps(Y_MICROSTEPS); stepperY.setMicrosteps(Y_MICROSTEPS);
stepperY.start(); stepperY.start();
#endif #endif
#if ENABLED(Y2_IS_TMC) #if ENABLED(Y2_IS_TMC)
stepperY2.setMicrosteps(Y2_MICROSTEPS); stepperY2.setMicrosteps(Y2_MICROSTEPS);
stepperY2.start(); stepperY2.start();
#endif #endif
#if ENABLED(Z_IS_TMC) #if ENABLED(Z_IS_TMC)
stepperZ.setMicrosteps(Z_MICROSTEPS); stepperZ.setMicrosteps(Z_MICROSTEPS);
stepperZ.start(); stepperZ.start();
#endif #endif
#if ENABLED(Z2_IS_TMC) #if ENABLED(Z2_IS_TMC)
stepperZ2.setMicrosteps(Z2_MICROSTEPS); stepperZ2.setMicrosteps(Z2_MICROSTEPS);
stepperZ2.start(); stepperZ2.start();
#endif #endif
#if ENABLED(E0_IS_TMC) #if ENABLED(E0_IS_TMC)
stepperE0.setMicrosteps(E0_MICROSTEPS); stepperE0.setMicrosteps(E0_MICROSTEPS);
stepperE0.start(); stepperE0.start();
#endif #endif
#if ENABLED(E1_IS_TMC) #if ENABLED(E1_IS_TMC)
stepperE1.setMicrosteps(E1_MICROSTEPS); stepperE1.setMicrosteps(E1_MICROSTEPS);
stepperE1.start(); stepperE1.start();
#endif #endif
#if ENABLED(E2_IS_TMC) #if ENABLED(E2_IS_TMC)
stepperE2.setMicrosteps(E2_MICROSTEPS); stepperE2.setMicrosteps(E2_MICROSTEPS);
stepperE2.start(); stepperE2.start();
#endif #endif
#if ENABLED(E3_IS_TMC) #if ENABLED(E3_IS_TMC)
stepperE3.setMicrosteps(E3_MICROSTEPS); stepperE3.setMicrosteps(E3_MICROSTEPS);
stepperE3.start(); stepperE3.start();
#endif #endif
} }
#endif #endif
...@@ -114,35 +114,35 @@ void tmc_init() ...@@ -114,35 +114,35 @@ void tmc_init()
// L6470 Stepper objects // L6470 Stepper objects
#if ENABLED(X_IS_L6470) #if ENABLED(X_IS_L6470)
L6470 stepperX(X_ENABLE_PIN); L6470 stepperX(X_ENABLE_PIN);
#endif #endif
#if ENABLED(X2_IS_L6470) #if ENABLED(X2_IS_L6470)
L6470 stepperX2(X2_ENABLE_PIN); L6470 stepperX2(X2_ENABLE_PIN);
#endif #endif
#if ENABLED(Y_IS_L6470) #if ENABLED(Y_IS_L6470)
L6470 stepperY(Y_ENABLE_PIN); L6470 stepperY(Y_ENABLE_PIN);
#endif #endif
#if ENABLED(Y2_IS_L6470) #if ENABLED(Y2_IS_L6470)
L6470 stepperY2(Y2_ENABLE_PIN); L6470 stepperY2(Y2_ENABLE_PIN);
#endif #endif
#if ENABLED(Z_IS_L6470) #if ENABLED(Z_IS_L6470)
L6470 stepperZ(Z_ENABLE_PIN); L6470 stepperZ(Z_ENABLE_PIN);
#endif #endif
#if ENABLED(Z2_IS_L6470) #if ENABLED(Z2_IS_L6470)
L6470 stepperZ2(Z2_ENABLE_PIN); L6470 stepperZ2(Z2_ENABLE_PIN);
#endif #endif
#if ENABLED(E0_IS_L6470) #if ENABLED(E0_IS_L6470)
L6470 stepperE0(E0_ENABLE_PIN); L6470 stepperE0(E0_ENABLE_PIN);
#endif #endif
#if ENABLED(E1_IS_L6470) #if ENABLED(E1_IS_L6470)
L6470 stepperE1(E1_ENABLE_PIN); L6470 stepperE1(E1_ENABLE_PIN);
#endif #endif
#if ENABLED(E2_IS_L6470) #if ENABLED(E2_IS_L6470)
L6470 stepperE2(E2_ENABLE_PIN); L6470 stepperE2(E2_ENABLE_PIN);
#endif #endif
#if ENABLED(E3_IS_L6470) #if ENABLED(E3_IS_L6470)
L6470 stepperE3(E3_ENABLE_PIN); L6470 stepperE3(E3_ENABLE_PIN);
#endif #endif
// init routine // init routine
...@@ -150,75 +150,75 @@ void tmc_init() ...@@ -150,75 +150,75 @@ void tmc_init()
void L6470_init() void L6470_init()
{ {
#if ENABLED(X_IS_L6470) #if ENABLED(X_IS_L6470)
stepperX.init(X_K_VAL); stepperX.init(X_K_VAL);
stepperX.softFree(); stepperX.softFree();
stepperX.setMicroSteps(X_MICROSTEPS); stepperX.setMicroSteps(X_MICROSTEPS);
stepperX.setOverCurrent(X_OVERCURRENT); //set overcurrent protection stepperX.setOverCurrent(X_OVERCURRENT); //set overcurrent protection
stepperX.setStallCurrent(X_STALLCURRENT); stepperX.setStallCurrent(X_STALLCURRENT);
#endif #endif
#if ENABLED(X2_IS_L6470) #if ENABLED(X2_IS_L6470)
stepperX2.init(X2_K_VAL); stepperX2.init(X2_K_VAL);
stepperX2.softFree(); stepperX2.softFree();
stepperX2.setMicroSteps(X2_MICROSTEPS); stepperX2.setMicroSteps(X2_MICROSTEPS);
stepperX2.setOverCurrent(X2_OVERCURRENT); //set overcurrent protection stepperX2.setOverCurrent(X2_OVERCURRENT); //set overcurrent protection
stepperX2.setStallCurrent(X2_STALLCURRENT); stepperX2.setStallCurrent(X2_STALLCURRENT);
#endif #endif
#if ENABLED(Y_IS_L6470) #if ENABLED(Y_IS_L6470)
stepperY.init(Y_K_VAL); stepperY.init(Y_K_VAL);
stepperY.softFree(); stepperY.softFree();
stepperY.setMicroSteps(Y_MICROSTEPS); stepperY.setMicroSteps(Y_MICROSTEPS);
stepperY.setOverCurrent(Y_OVERCURRENT); //set overcurrent protection stepperY.setOverCurrent(Y_OVERCURRENT); //set overcurrent protection
stepperY.setStallCurrent(Y_STALLCURRENT); stepperY.setStallCurrent(Y_STALLCURRENT);
#endif #endif
#if ENABLED(Y2_IS_L6470) #if ENABLED(Y2_IS_L6470)
stepperY2.init(Y2_K_VAL); stepperY2.init(Y2_K_VAL);
stepperY2.softFree(); stepperY2.softFree();
stepperY2.setMicroSteps(Y2_MICROSTEPS); stepperY2.setMicroSteps(Y2_MICROSTEPS);
stepperY2.setOverCurrent(Y2_OVERCURRENT); //set overcurrent protection stepperY2.setOverCurrent(Y2_OVERCURRENT); //set overcurrent protection
stepperY2.setStallCurrent(Y2_STALLCURRENT); stepperY2.setStallCurrent(Y2_STALLCURRENT);
#endif #endif
#if ENABLED(Z_IS_L6470) #if ENABLED(Z_IS_L6470)
stepperZ.init(Z_K_VAL); stepperZ.init(Z_K_VAL);
stepperZ.softFree(); stepperZ.softFree();
stepperZ.setMicroSteps(Z_MICROSTEPS); stepperZ.setMicroSteps(Z_MICROSTEPS);
stepperZ.setOverCurrent(Z_OVERCURRENT); //set overcurrent protection stepperZ.setOverCurrent(Z_OVERCURRENT); //set overcurrent protection
stepperZ.setStallCurrent(Z_STALLCURRENT); stepperZ.setStallCurrent(Z_STALLCURRENT);
#endif #endif
#if ENABLED(Z2_IS_L6470) #if ENABLED(Z2_IS_L6470)
stepperZ2.init(Z2_K_VAL); stepperZ2.init(Z2_K_VAL);
stepperZ2.softFree(); stepperZ2.softFree();
stepperZ2.setMicroSteps(Z2_MICROSTEPS); stepperZ2.setMicroSteps(Z2_MICROSTEPS);
stepperZ2.setOverCurrent(Z2_OVERCURRENT); //set overcurrent protection stepperZ2.setOverCurrent(Z2_OVERCURRENT); //set overcurrent protection
stepperZ2.setStallCurrent(Z2_STALLCURRENT); stepperZ2.setStallCurrent(Z2_STALLCURRENT);
#endif #endif
#if ENABLED(E0_IS_L6470) #if ENABLED(E0_IS_L6470)
stepperE0.init(E0_K_VAL); stepperE0.init(E0_K_VAL);
stepperE0.softFree(); stepperE0.softFree();
stepperE0.setMicroSteps(E0_MICROSTEPS); stepperE0.setMicroSteps(E0_MICROSTEPS);
stepperE0.setOverCurrent(E0_OVERCURRENT); //set overcurrent protection stepperE0.setOverCurrent(E0_OVERCURRENT); //set overcurrent protection
stepperE0.setStallCurrent(E0_STALLCURRENT); stepperE0.setStallCurrent(E0_STALLCURRENT);
#endif #endif
#if ENABLED(E1_IS_L6470) #if ENABLED(E1_IS_L6470)
stepperE1.init(E1_K_VAL); stepperE1.init(E1_K_VAL);
stepperE1.softFree(); stepperE1.softFree();
stepperE1.setMicroSteps(E1_MICROSTEPS); stepperE1.setMicroSteps(E1_MICROSTEPS);
stepperE1.setOverCurrent(E1_OVERCURRENT); //set overcurrent protection stepperE1.setOverCurrent(E1_OVERCURRENT); //set overcurrent protection
stepperE1.setStallCurrent(E1_STALLCURRENT); stepperE1.setStallCurrent(E1_STALLCURRENT);
#endif #endif
#if ENABLED(E2_IS_L6470) #if ENABLED(E2_IS_L6470)
stepperE2.init(E2_K_VAL); stepperE2.init(E2_K_VAL);
stepperE2.softFree(); stepperE2.softFree();
stepperE2.setMicroSteps(E2_MICROSTEPS); stepperE2.setMicroSteps(E2_MICROSTEPS);
stepperE2.setOverCurrent(E2_OVERCURRENT); //set overcurrent protection stepperE2.setOverCurrent(E2_OVERCURRENT); //set overcurrent protection
stepperE2.setStallCurrent(E2_STALLCURRENT); stepperE2.setStallCurrent(E2_STALLCURRENT);
#endif #endif
#if ENABLED(E3_IS_L6470) #if ENABLED(E3_IS_L6470)
stepperE3.init(E3_K_VAL); stepperE3.init(E3_K_VAL);
stepperE3.softFree(); stepperE3.softFree();
stepperE3.setMicroSteps(E3_MICROSTEPS); stepperE3.setMicroSteps(E3_MICROSTEPS);
stepperE3.setOverCurrent(E3_OVERCURRENT); //set overcurrent protection stepperE3.setOverCurrent(E3_OVERCURRENT); //set overcurrent protection
stepperE3.setStallCurrent(E3_STALLCURRENT); stepperE3.setStallCurrent(E3_STALLCURRENT);
#endif #endif
} }
#endif #endif
...@@ -960,7 +960,7 @@ void tp_init() { ...@@ -960,7 +960,7 @@ void tp_init() {
// Use timer0 for temperature measurement // Use timer0 for temperature measurement
// Interleave temperature interrupt with millies interrupt // Interleave temperature interrupt with millies interrupt
OCR0B = 128; OCR0B = 128;
TIMSK0 |= BIT(OCIE0B); TIMSK0 |= BIT(OCIE0B);
// Wait for temperature measurement to settle // Wait for temperature measurement to settle
delay(250); delay(250);
...@@ -1052,7 +1052,7 @@ void tp_init() { ...@@ -1052,7 +1052,7 @@ void tp_init() {
#if ENABLED(THERMAL_PROTECTION_HOTENDS) || ENABLED(THERMAL_PROTECTION_BED) #if ENABLED(THERMAL_PROTECTION_HOTENDS) || ENABLED(THERMAL_PROTECTION_BED)
void thermal_runaway_protection(TRState *state, millis_t *timer, float temperature, float target_temperature, int heater_id, int period_seconds, int hysteresis_degc) { void thermal_runaway_protection(TRState *state, millis_t *timer, float temperature, float target_temperature, int heater_id, int period_seconds, int hysteresis_degc) {
static float tr_last_temperature = 0.0
static float tr_target_temperature[HOTENDS + 1] = { 0.0 }; static float tr_target_temperature[HOTENDS + 1] = { 0.0 };
/* /*
ECHO_SM(DB, "Thermal Thermal Runaway Running. Heater ID: "); ECHO_SM(DB, "Thermal Thermal Runaway Running. Heater ID: ");
...@@ -1070,31 +1070,49 @@ void tp_init() { ...@@ -1070,31 +1070,49 @@ void tp_init() {
*state = TRReset; *state = TRReset;
switch (*state) { switch (*state) {
case TRReset: case TRReset: {
*timer = 0; *timer = 0;
*state = TRInactive; *state = TRInactive;
}
// Inactive state waits for a target temperature to be set // Inactive state waits for a target temperature to be set
case TRInactive: case TRInactive: {
if (target_temperature > 0) { if (target_temperature > 0) {
tr_last_temperature = temperature;
tr_target_temperature[heater_index] = target_temperature; tr_target_temperature[heater_index] = target_temperature;
*timer = millis();
*state = TRFirstHeating; *state = TRFirstHeating;
} }
break; }
break;
// When first heating, wait for the temperature to be reached then go to Stable state // When first heating, wait for the temperature to be reached then go to Stable state
case TRFirstHeating: // If the heater takes too long to reach the target temperature the sistem will be halt.
case TRFirstHeating: {
if (temperature >= tr_target_temperature[heater_index]) *state = TRStable; if (temperature >= tr_target_temperature[heater_index]) *state = TRStable;
break; else if (temperature == tr_last_temperature) {
if (millis() > *timer + period_seconds * 1000UL) {
*state = TRRunaway;
}
}
else {
*timer = millis();
}
}
break;
// While the temperature is stable watch for a bad temperature // While the temperature is stable watch for a bad temperature
case TRStable: case TRStable: {
// If the temperature is over the target (-hysteresis) restart the timer // If the temperature is over the target (-hysteresis) restart the timer
if (temperature >= tr_target_temperature[heater_index] - hysteresis_degc) if (temperature >= tr_target_temperature[heater_index] - hysteresis_degc) {
*timer = millis(); *timer = millis();
}
// If the timer goes too long without a reset, trigger shutdown // If the timer goes too long without a reset, trigger shutdown
else if (millis() > *timer + period_seconds * 1000UL) else if (millis() > *timer + period_seconds * 1000UL) {
*state = TRRunaway; *state = TRRunaway;
break; }
case TRRunaway: }
break;
case TRRunaway: {
_temp_error(heater_id, PSTR(MSG_T_THERMAL_RUNAWAY), PSTR(MSG_THERMAL_RUNAWAY)); _temp_error(heater_id, PSTR(MSG_T_THERMAL_RUNAWAY), PSTR(MSG_THERMAL_RUNAWAY));
}
} }
} }
......
...@@ -45,7 +45,7 @@ void manage_heater(); //it is critical that this is called periodically. ...@@ -45,7 +45,7 @@ void manage_heater(); //it is critical that this is called periodically.
// low level conversion routines // low level conversion routines
// do not use these routines and variables outside of temperature.cpp // do not use these routines and variables outside of temperature.cpp
extern int target_temperature[4]; extern int target_temperature[4];
extern float current_temperature[4]; extern float current_temperature[4];
#if ENABLED(SHOW_TEMP_ADC_VALUES) #if ENABLED(SHOW_TEMP_ADC_VALUES)
extern int current_temperature_raw[4]; extern int current_temperature_raw[4];
......
...@@ -9,164 +9,164 @@ ...@@ -9,164 +9,164 @@
#if (THERMISTORHEATER_0 == 1) || (THERMISTORHEATER_1 == 1) || (THERMISTORHEATER_2 == 1) || (THERMISTORHEATER_3 == 1) || (THERMISTORBED == 1) //100k bed thermistor #if (THERMISTORHEATER_0 == 1) || (THERMISTORHEATER_1 == 1) || (THERMISTORHEATER_2 == 1) || (THERMISTORHEATER_3 == 1) || (THERMISTORBED == 1) //100k bed thermistor
const short temptable_1[][2] PROGMEM = { const short temptable_1[][2] PROGMEM = {
{ 23*OVERSAMPLENR , 300 }, {23 * OVERSAMPLENR, 300},
{ 25*OVERSAMPLENR , 295 }, {25 * OVERSAMPLENR, 295},
{ 27*OVERSAMPLENR , 290 }, {27 * OVERSAMPLENR, 290},
{ 28*OVERSAMPLENR , 285 }, {28 * OVERSAMPLENR, 285},
{ 31*OVERSAMPLENR , 280 }, {31 * OVERSAMPLENR, 280},
{ 33*OVERSAMPLENR , 275 }, {33 * OVERSAMPLENR, 275},
{ 35*OVERSAMPLENR , 270 }, {35 * OVERSAMPLENR, 270},
{ 38*OVERSAMPLENR , 265 }, {38 * OVERSAMPLENR, 265},
{ 41*OVERSAMPLENR , 260 }, {41 * OVERSAMPLENR, 260},
{ 44*OVERSAMPLENR , 255 }, {44 * OVERSAMPLENR, 255},
{ 48*OVERSAMPLENR , 250 }, {48 * OVERSAMPLENR, 250},
{ 52*OVERSAMPLENR , 245 }, {52 * OVERSAMPLENR, 245},
{ 56*OVERSAMPLENR , 240 }, {56 * OVERSAMPLENR, 240},
{ 61*OVERSAMPLENR , 235 }, {61 * OVERSAMPLENR, 235},
{ 66*OVERSAMPLENR , 230 }, {66 * OVERSAMPLENR, 230},
{ 71*OVERSAMPLENR , 225 }, {71 * OVERSAMPLENR, 225},
{ 78*OVERSAMPLENR , 220 }, {78 * OVERSAMPLENR, 220},
{ 84*OVERSAMPLENR , 215 }, {84 * OVERSAMPLENR, 215},
{ 92*OVERSAMPLENR , 210 }, {92 * OVERSAMPLENR, 210},
{ 100*OVERSAMPLENR , 205 }, {100 * OVERSAMPLENR, 205},
{ 109*OVERSAMPLENR , 200 }, {109 * OVERSAMPLENR, 200},
{ 120*OVERSAMPLENR , 195 }, {120 * OVERSAMPLENR, 195},
{ 131*OVERSAMPLENR , 190 }, {131 * OVERSAMPLENR, 190},
{ 143*OVERSAMPLENR , 185 }, {143 * OVERSAMPLENR, 185},
{ 156*OVERSAMPLENR , 180 }, {156 * OVERSAMPLENR, 180},
{ 171*OVERSAMPLENR , 175 }, {171 * OVERSAMPLENR, 175},
{ 187*OVERSAMPLENR , 170 }, {187 * OVERSAMPLENR, 170},
{ 205*OVERSAMPLENR , 165 }, {205 * OVERSAMPLENR, 165},
{ 224*OVERSAMPLENR , 160 }, {224 * OVERSAMPLENR, 160},
{ 245*OVERSAMPLENR , 155 }, {245 * OVERSAMPLENR, 155},
{ 268*OVERSAMPLENR , 150 }, {268 * OVERSAMPLENR, 150},
{ 293*OVERSAMPLENR , 145 }, {293 * OVERSAMPLENR, 145},
{ 320*OVERSAMPLENR , 140 }, {320 * OVERSAMPLENR, 140},
{ 348*OVERSAMPLENR , 135 }, {348 * OVERSAMPLENR, 135},
{ 379*OVERSAMPLENR , 130 }, {379 * OVERSAMPLENR, 130},
{ 411*OVERSAMPLENR , 125 }, {411 * OVERSAMPLENR, 125},
{ 445*OVERSAMPLENR , 120 }, {445 * OVERSAMPLENR, 120},
{ 480*OVERSAMPLENR , 115 }, {480 * OVERSAMPLENR, 115},
{ 516*OVERSAMPLENR , 110 }, {516 * OVERSAMPLENR, 110},
{ 553*OVERSAMPLENR , 105 }, {553 * OVERSAMPLENR, 105},
{ 591*OVERSAMPLENR , 100 }, {591 * OVERSAMPLENR, 100},
{ 628*OVERSAMPLENR , 95 }, {628 * OVERSAMPLENR, 95},
{ 665*OVERSAMPLENR , 90 }, {665 * OVERSAMPLENR, 90},
{ 702*OVERSAMPLENR , 85 }, {702 * OVERSAMPLENR, 85},
{ 737*OVERSAMPLENR , 80 }, {737 * OVERSAMPLENR, 80},
{ 770*OVERSAMPLENR , 75 }, {770 * OVERSAMPLENR, 75},
{ 801*OVERSAMPLENR , 70 }, {801 * OVERSAMPLENR, 70},
{ 830*OVERSAMPLENR , 65 }, {830 * OVERSAMPLENR, 65},
{ 857*OVERSAMPLENR , 60 }, {857 * OVERSAMPLENR, 60},
{ 881*OVERSAMPLENR , 55 }, {881 * OVERSAMPLENR, 55},
{ 903*OVERSAMPLENR , 50 }, {903 * OVERSAMPLENR, 50},
{ 922*OVERSAMPLENR , 45 }, {922 * OVERSAMPLENR, 45},
{ 939*OVERSAMPLENR , 40 }, {939 * OVERSAMPLENR, 40},
{ 954*OVERSAMPLENR , 35 }, {954 * OVERSAMPLENR, 35},
{ 966*OVERSAMPLENR , 30 }, {966 * OVERSAMPLENR, 30},
{ 977*OVERSAMPLENR , 25 }, {977 * OVERSAMPLENR, 25},
{ 985*OVERSAMPLENR , 20 }, {985 * OVERSAMPLENR, 20},
{ 993*OVERSAMPLENR , 15 }, {993 * OVERSAMPLENR, 15},
{ 999*OVERSAMPLENR , 10 }, {999 * OVERSAMPLENR, 10},
{ 1004*OVERSAMPLENR , 5 }, {1004 * OVERSAMPLENR, 5},
{ 1008*OVERSAMPLENR , 0 } //safety {1008 * OVERSAMPLENR, 0} //safety
}; };
#endif #endif
#if (THERMISTORHEATER_0 == 2) || (THERMISTORHEATER_1 == 2) || (THERMISTORHEATER_2 == 2) || (THERMISTORHEATER_3 == 2) || (THERMISTORBED == 2) //200k bed thermistor #if (THERMISTORHEATER_0 == 2) || (THERMISTORHEATER_1 == 2) || (THERMISTORHEATER_2 == 2) || (THERMISTORHEATER_3 == 2) || (THERMISTORBED == 2) //200k bed thermistor
const short temptable_2[][2] PROGMEM = { const short temptable_2[][2] PROGMEM = {
//200k ATC Semitec 204GT-2 //200k ATC Semitec 204GT-2
//Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf //Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf
// Calculated using 4.7kohm pullup, voltage divider math, and manufacturer provided temp/resistance // Calculated using 4.7kohm pullup,voltage divider math,and manufacturer provided temp/resistance
{1*OVERSAMPLENR, 848}, {1 * OVERSAMPLENR, 848},
{30*OVERSAMPLENR, 300}, //top rating 300C {30 * OVERSAMPLENR, 300},//top rating 300C
{34*OVERSAMPLENR, 290}, {34 * OVERSAMPLENR, 290},
{39*OVERSAMPLENR, 280}, {39 * OVERSAMPLENR, 280},
{46*OVERSAMPLENR, 270}, {46 * OVERSAMPLENR, 270},
{53*OVERSAMPLENR, 260}, {53 * OVERSAMPLENR, 260},
{63*OVERSAMPLENR, 250}, {63 * OVERSAMPLENR, 250},
{74*OVERSAMPLENR, 240}, {74 * OVERSAMPLENR, 240},
{87*OVERSAMPLENR, 230}, {87 * OVERSAMPLENR, 230},
{104*OVERSAMPLENR, 220}, {104 * OVERSAMPLENR, 220},
{124*OVERSAMPLENR, 210}, {124 * OVERSAMPLENR, 210},
{148*OVERSAMPLENR, 200}, {148 * OVERSAMPLENR, 200},
{176*OVERSAMPLENR, 190}, {176 * OVERSAMPLENR, 190},
{211*OVERSAMPLENR, 180}, {211 * OVERSAMPLENR, 180},
{252*OVERSAMPLENR, 170}, {252 * OVERSAMPLENR, 170},
{301*OVERSAMPLENR, 160}, {301 * OVERSAMPLENR, 160},
{357*OVERSAMPLENR, 150}, {357 * OVERSAMPLENR, 150},
{420*OVERSAMPLENR, 140}, {420 * OVERSAMPLENR, 140},
{489*OVERSAMPLENR, 130}, {489 * OVERSAMPLENR, 130},
{562*OVERSAMPLENR, 120}, {562 * OVERSAMPLENR, 120},
{636*OVERSAMPLENR, 110}, {636 * OVERSAMPLENR, 110},
{708*OVERSAMPLENR, 100}, {708 * OVERSAMPLENR, 100},
{775*OVERSAMPLENR, 90}, {775 * OVERSAMPLENR, 90},
{835*OVERSAMPLENR, 80}, {835 * OVERSAMPLENR, 80},
{884*OVERSAMPLENR, 70}, {884 * OVERSAMPLENR, 70},
{924*OVERSAMPLENR, 60}, {924 * OVERSAMPLENR, 60},
{955*OVERSAMPLENR, 50}, {955 * OVERSAMPLENR, 50},
{977*OVERSAMPLENR, 40}, {977 * OVERSAMPLENR, 40},
{993*OVERSAMPLENR, 30}, {993 * OVERSAMPLENR, 30},
{1004*OVERSAMPLENR, 20}, {1004 * OVERSAMPLENR, 20},
{1012*OVERSAMPLENR, 10}, {1012 * OVERSAMPLENR, 10},
{1016*OVERSAMPLENR, 0}, {1016 * OVERSAMPLENR, 0}
}; };
#endif #endif
#if (THERMISTORHEATER_0 == 3) || (THERMISTORHEATER_1 == 3) || (THERMISTORHEATER_2 == 3) || (THERMISTORHEATER_3 == 3) || (THERMISTORBED == 3) //mendel-parts #if (THERMISTORHEATER_0 == 3) || (THERMISTORHEATER_1 == 3) || (THERMISTORHEATER_2 == 3) || (THERMISTORHEATER_3 == 3) || (THERMISTORBED == 3) //mendel-parts
const short temptable_3[][2] PROGMEM = { const short temptable_3[][2] PROGMEM = {
{1*OVERSAMPLENR,864}, {1 * OVERSAMPLENR, 864},
{21*OVERSAMPLENR,300}, {21 * OVERSAMPLENR, 300},
{25*OVERSAMPLENR,290}, {25 * OVERSAMPLENR, 290},
{29*OVERSAMPLENR,280}, {29 * OVERSAMPLENR, 280},
{33*OVERSAMPLENR,270}, {33 * OVERSAMPLENR, 270},
{39*OVERSAMPLENR,260}, {39 * OVERSAMPLENR, 260},
{46*OVERSAMPLENR,250}, {46 * OVERSAMPLENR, 250},
{54*OVERSAMPLENR,240}, {54 * OVERSAMPLENR, 240},
{64*OVERSAMPLENR,230}, {64 * OVERSAMPLENR, 230},
{75*OVERSAMPLENR,220}, {75 * OVERSAMPLENR, 220},
{90*OVERSAMPLENR,210}, {90 * OVERSAMPLENR, 210},
{107*OVERSAMPLENR,200}, {107 * OVERSAMPLENR, 200},
{128*OVERSAMPLENR,190}, {128 * OVERSAMPLENR, 190},
{154*OVERSAMPLENR,180}, {154 * OVERSAMPLENR, 180},
{184*OVERSAMPLENR,170}, {184 * OVERSAMPLENR, 170},
{221*OVERSAMPLENR,160}, {221 * OVERSAMPLENR, 160},
{265*OVERSAMPLENR,150}, {265 * OVERSAMPLENR, 150},
{316*OVERSAMPLENR,140}, {316 * OVERSAMPLENR, 140},
{375*OVERSAMPLENR,130}, {375 * OVERSAMPLENR, 130},
{441*OVERSAMPLENR,120}, {441 * OVERSAMPLENR, 120},
{513*OVERSAMPLENR,110}, {513 * OVERSAMPLENR, 110},
{588*OVERSAMPLENR,100}, {588 * OVERSAMPLENR, 100},
{734*OVERSAMPLENR,80}, {734 * OVERSAMPLENR, 80},
{856*OVERSAMPLENR,60}, {856 * OVERSAMPLENR, 60},
{938*OVERSAMPLENR,40}, {938 * OVERSAMPLENR, 40},
{986*OVERSAMPLENR,20}, {986 * OVERSAMPLENR, 20},
{1008*OVERSAMPLENR,0}, {1008 * OVERSAMPLENR, 0},
{1018*OVERSAMPLENR,-20} {1018 * OVERSAMPLENR, -20}
}; };
#endif #endif
#if (THERMISTORHEATER_0 == 4) || (THERMISTORHEATER_1 == 4) || (THERMISTORHEATER_2 == 4) || (THERMISTORHEATER_3 == 4) || (THERMISTORBED == 4) //10k thermistor #if (THERMISTORHEATER_0 == 4) || (THERMISTORHEATER_1 == 4) || (THERMISTORHEATER_2 == 4) || (THERMISTORHEATER_3 == 4) || (THERMISTORBED == 4) //10k thermistor
const short temptable_4[][2] PROGMEM = { const short temptable_4[][2] PROGMEM = {
{1*OVERSAMPLENR, 430}, {1 * OVERSAMPLENR, 430},
{54*OVERSAMPLENR, 137}, {54 * OVERSAMPLENR, 137},
{107*OVERSAMPLENR, 107}, {107 * OVERSAMPLENR, 107},
{160*OVERSAMPLENR, 91}, {160 * OVERSAMPLENR, 91},
{213*OVERSAMPLENR, 80}, {213 * OVERSAMPLENR, 80},
{266*OVERSAMPLENR, 71}, {266 * OVERSAMPLENR, 71},
{319*OVERSAMPLENR, 64}, {319 * OVERSAMPLENR, 64},
{372*OVERSAMPLENR, 57}, {372 * OVERSAMPLENR, 57},
{425*OVERSAMPLENR, 51}, {425 * OVERSAMPLENR, 51},
{478*OVERSAMPLENR, 46}, {478 * OVERSAMPLENR, 46},
{531*OVERSAMPLENR, 41}, {531 * OVERSAMPLENR, 41},
{584*OVERSAMPLENR, 35}, {584 * OVERSAMPLENR, 35},
{637*OVERSAMPLENR, 30}, {637 * OVERSAMPLENR, 30},
{690*OVERSAMPLENR, 25}, {690 * OVERSAMPLENR, 25},
{743*OVERSAMPLENR, 20}, {743 * OVERSAMPLENR, 20},
{796*OVERSAMPLENR, 14}, {796 * OVERSAMPLENR, 14},
{849*OVERSAMPLENR, 7}, {849 * OVERSAMPLENR, 7},
{902*OVERSAMPLENR, 0}, {902 * OVERSAMPLENR, 0},
{955*OVERSAMPLENR, -11}, {955 * OVERSAMPLENR, -11},
{1008*OVERSAMPLENR, -35} {1008 * OVERSAMPLENR, -35}
}; };
#endif #endif
...@@ -174,145 +174,145 @@ const short temptable_4[][2] PROGMEM = { ...@@ -174,145 +174,145 @@ const short temptable_4[][2] PROGMEM = {
const short temptable_5[][2] PROGMEM = { const short temptable_5[][2] PROGMEM = {
// ATC Semitec 104GT-2 (Used in ParCan) // ATC Semitec 104GT-2 (Used in ParCan)
// Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf // Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf
// Calculated using 4.7kohm pullup, voltage divider math, and manufacturer provided temp/resistance // Calculated using 4.7kohm pullup,voltage divider math,and manufacturer provided temp/resistance
{1*OVERSAMPLENR, 713}, {1 * OVERSAMPLENR, 713},
{17*OVERSAMPLENR, 300}, //top rating 300C {17 * OVERSAMPLENR, 300},//top rating 300C
{20*OVERSAMPLENR, 290}, {20 * OVERSAMPLENR, 290},
{23*OVERSAMPLENR, 280}, {23 * OVERSAMPLENR, 280},
{27*OVERSAMPLENR, 270}, {27 * OVERSAMPLENR, 270},
{31*OVERSAMPLENR, 260}, {31 * OVERSAMPLENR, 260},
{37*OVERSAMPLENR, 250}, {37 * OVERSAMPLENR, 250},
{43*OVERSAMPLENR, 240}, {43 * OVERSAMPLENR, 240},
{51*OVERSAMPLENR, 230}, {51 * OVERSAMPLENR, 230},
{61*OVERSAMPLENR, 220}, {61 * OVERSAMPLENR, 220},
{73*OVERSAMPLENR, 210}, {73 * OVERSAMPLENR, 210},
{87*OVERSAMPLENR, 200}, {87 * OVERSAMPLENR, 200},
{106*OVERSAMPLENR, 190}, {106 * OVERSAMPLENR, 190},
{128*OVERSAMPLENR, 180}, {128 * OVERSAMPLENR, 180},
{155*OVERSAMPLENR, 170}, {155 * OVERSAMPLENR, 170},
{189*OVERSAMPLENR, 160}, {189 * OVERSAMPLENR, 160},
{230*OVERSAMPLENR, 150}, {230 * OVERSAMPLENR, 150},
{278*OVERSAMPLENR, 140}, {278 * OVERSAMPLENR, 140},
{336*OVERSAMPLENR, 130}, {336 * OVERSAMPLENR, 130},
{402*OVERSAMPLENR, 120}, {402 * OVERSAMPLENR, 120},
{476*OVERSAMPLENR, 110}, {476 * OVERSAMPLENR, 110},
{554*OVERSAMPLENR, 100}, {554 * OVERSAMPLENR, 100},
{635*OVERSAMPLENR, 90}, {635 * OVERSAMPLENR, 90},
{713*OVERSAMPLENR, 80}, {713 * OVERSAMPLENR, 80},
{784*OVERSAMPLENR, 70}, {784 * OVERSAMPLENR, 70},
{846*OVERSAMPLENR, 60}, {846 * OVERSAMPLENR, 60},
{897*OVERSAMPLENR, 50}, {897 * OVERSAMPLENR, 50},
{937*OVERSAMPLENR, 40}, {937 * OVERSAMPLENR, 40},
{966*OVERSAMPLENR, 30}, {966 * OVERSAMPLENR, 30},
{986*OVERSAMPLENR, 20}, {986 * OVERSAMPLENR, 20},
{1000*OVERSAMPLENR, 10}, {1000 * OVERSAMPLENR, 10},
{1010*OVERSAMPLENR, 0} {1010 * OVERSAMPLENR, 0}
}; };
#endif #endif
#if (THERMISTORHEATER_0 == 6) || (THERMISTORHEATER_1 == 6) || (THERMISTORHEATER_2 == 6) || (THERMISTORHEATER_3 == 6) || (THERMISTORBED == 6) // 100k Epcos thermistor #if (THERMISTORHEATER_0 == 6) || (THERMISTORHEATER_1 == 6) || (THERMISTORHEATER_2 == 6) || (THERMISTORHEATER_3 == 6) || (THERMISTORBED == 6) // 100k Epcos thermistor
const short temptable_6[][2] PROGMEM = { const short temptable_6[][2] PROGMEM = {
{1*OVERSAMPLENR, 350}, {1 * OVERSAMPLENR, 350},
{28*OVERSAMPLENR, 250}, //top rating 250C {28 * OVERSAMPLENR, 250},//top rating 250C
{31*OVERSAMPLENR, 245}, {31 * OVERSAMPLENR, 245},
{35*OVERSAMPLENR, 240}, {35 * OVERSAMPLENR, 240},
{39*OVERSAMPLENR, 235}, {39 * OVERSAMPLENR, 235},
{42*OVERSAMPLENR, 230}, {42 * OVERSAMPLENR, 230},
{44*OVERSAMPLENR, 225}, {44 * OVERSAMPLENR, 225},
{49*OVERSAMPLENR, 220}, {49 * OVERSAMPLENR, 220},
{53*OVERSAMPLENR, 215}, {53 * OVERSAMPLENR, 215},
{62*OVERSAMPLENR, 210}, {62 * OVERSAMPLENR, 210},
{71*OVERSAMPLENR, 205}, //fitted graphically {71 * OVERSAMPLENR, 205},//fitted graphically
{78*OVERSAMPLENR, 200}, //fitted graphically {78 * OVERSAMPLENR, 200},//fitted graphically
{94*OVERSAMPLENR, 190}, {94 * OVERSAMPLENR, 190},
{102*OVERSAMPLENR, 185}, {102 * OVERSAMPLENR, 185},
{116*OVERSAMPLENR, 170}, {116 * OVERSAMPLENR, 170},
{143*OVERSAMPLENR, 160}, {143 * OVERSAMPLENR, 160},
{183*OVERSAMPLENR, 150}, {183 * OVERSAMPLENR, 150},
{223*OVERSAMPLENR, 140}, {223 * OVERSAMPLENR, 140},
{270*OVERSAMPLENR, 130}, {270 * OVERSAMPLENR, 130},
{318*OVERSAMPLENR, 120}, {318 * OVERSAMPLENR, 120},
{383*OVERSAMPLENR, 110}, {383 * OVERSAMPLENR, 110},
{413*OVERSAMPLENR, 105}, {413 * OVERSAMPLENR, 105},
{439*OVERSAMPLENR, 100}, {439 * OVERSAMPLENR, 100},
{484*OVERSAMPLENR, 95}, {484 * OVERSAMPLENR, 95},
{513*OVERSAMPLENR, 90}, {513 * OVERSAMPLENR, 90},
{607*OVERSAMPLENR, 80}, {607 * OVERSAMPLENR, 80},
{664*OVERSAMPLENR, 70}, {664 * OVERSAMPLENR, 70},
{781*OVERSAMPLENR, 60}, {781 * OVERSAMPLENR, 60},
{810*OVERSAMPLENR, 55}, {810 * OVERSAMPLENR, 55},
{849*OVERSAMPLENR, 50}, {849 * OVERSAMPLENR, 50},
{914*OVERSAMPLENR, 45}, {914 * OVERSAMPLENR, 45},
{914*OVERSAMPLENR, 40}, {914 * OVERSAMPLENR, 40},
{935*OVERSAMPLENR, 35}, {935 * OVERSAMPLENR, 35},
{954*OVERSAMPLENR, 30}, {954 * OVERSAMPLENR, 30},
{970*OVERSAMPLENR, 25}, {970 * OVERSAMPLENR, 25},
{978*OVERSAMPLENR, 22}, {978 * OVERSAMPLENR, 22},
{1008*OVERSAMPLENR, 3}, {1008 * OVERSAMPLENR, 3},
{1023*OVERSAMPLENR, 0} //to allow internal 0 degrees C {1023 * OVERSAMPLENR, 0} //to allow internal 0 degrees C
}; };
#endif #endif
#if (THERMISTORHEATER_0 == 7) || (THERMISTORHEATER_1 == 7) || (THERMISTORHEATER_2 == 7) || (THERMISTORHEATER_3 == 7) || (THERMISTORBED == 7) // 100k Honeywell 135-104LAG-J01 #if (THERMISTORHEATER_0 == 7) || (THERMISTORHEATER_1 == 7) || (THERMISTORHEATER_2 == 7) || (THERMISTORHEATER_3 == 7) || (THERMISTORBED == 7) // 100k Honeywell 135-104LAG-J01
const short temptable_7[][2] PROGMEM = { const short temptable_7[][2] PROGMEM = {
{1*OVERSAMPLENR, 941}, {1 * OVERSAMPLENR, 941},
{19*OVERSAMPLENR, 362}, {19 * OVERSAMPLENR, 362},
{37*OVERSAMPLENR, 299}, //top rating 300C {37 * OVERSAMPLENR, 299},//top rating 300C
{55*OVERSAMPLENR, 266}, {55 * OVERSAMPLENR, 266},
{73*OVERSAMPLENR, 245}, {73 * OVERSAMPLENR, 245},
{91*OVERSAMPLENR, 229}, {91 * OVERSAMPLENR, 229},
{109*OVERSAMPLENR, 216}, {109 * OVERSAMPLENR, 216},
{127*OVERSAMPLENR, 206}, {127 * OVERSAMPLENR, 206},
{145*OVERSAMPLENR, 197}, {145 * OVERSAMPLENR, 197},
{163*OVERSAMPLENR, 190}, {163 * OVERSAMPLENR, 190},
{181*OVERSAMPLENR, 183}, {181 * OVERSAMPLENR, 183},
{199*OVERSAMPLENR, 177}, {199 * OVERSAMPLENR, 177},
{217*OVERSAMPLENR, 171}, {217 * OVERSAMPLENR, 171},
{235*OVERSAMPLENR, 166}, {235 * OVERSAMPLENR, 166},
{253*OVERSAMPLENR, 162}, {253 * OVERSAMPLENR, 162},
{271*OVERSAMPLENR, 157}, {271 * OVERSAMPLENR, 157},
{289*OVERSAMPLENR, 153}, {289 * OVERSAMPLENR, 153},
{307*OVERSAMPLENR, 149}, {307 * OVERSAMPLENR, 149},
{325*OVERSAMPLENR, 146}, {325 * OVERSAMPLENR, 146},
{343*OVERSAMPLENR, 142}, {343 * OVERSAMPLENR, 142},
{361*OVERSAMPLENR, 139}, {361 * OVERSAMPLENR, 139},
{379*OVERSAMPLENR, 135}, {379 * OVERSAMPLENR, 135},
{397*OVERSAMPLENR, 132}, {397 * OVERSAMPLENR, 132},
{415*OVERSAMPLENR, 129}, {415 * OVERSAMPLENR, 129},
{433*OVERSAMPLENR, 126}, {433 * OVERSAMPLENR, 126},
{451*OVERSAMPLENR, 123}, {451 * OVERSAMPLENR, 123},
{469*OVERSAMPLENR, 121}, {469 * OVERSAMPLENR, 121},
{487*OVERSAMPLENR, 118}, {487 * OVERSAMPLENR, 118},
{505*OVERSAMPLENR, 115}, {505 * OVERSAMPLENR, 115},
{523*OVERSAMPLENR, 112}, {523 * OVERSAMPLENR, 112},
{541*OVERSAMPLENR, 110}, {541 * OVERSAMPLENR, 110},
{559*OVERSAMPLENR, 107}, {559 * OVERSAMPLENR, 107},
{577*OVERSAMPLENR, 105}, {577 * OVERSAMPLENR, 105},
{595*OVERSAMPLENR, 102}, {595 * OVERSAMPLENR, 102},
{613*OVERSAMPLENR, 99}, {613 * OVERSAMPLENR, 99},
{631*OVERSAMPLENR, 97}, {631 * OVERSAMPLENR, 97},
{649*OVERSAMPLENR, 94}, {649 * OVERSAMPLENR, 94},
{667*OVERSAMPLENR, 92}, {667 * OVERSAMPLENR, 92},
{685*OVERSAMPLENR, 89}, {685 * OVERSAMPLENR, 89},
{703*OVERSAMPLENR, 86}, {703 * OVERSAMPLENR, 86},
{721*OVERSAMPLENR, 84}, {721 * OVERSAMPLENR, 84},
{739*OVERSAMPLENR, 81}, {739 * OVERSAMPLENR, 81},
{757*OVERSAMPLENR, 78}, {757 * OVERSAMPLENR, 78},
{775*OVERSAMPLENR, 75}, {775 * OVERSAMPLENR, 75},
{793*OVERSAMPLENR, 72}, {793 * OVERSAMPLENR, 72},
{811*OVERSAMPLENR, 69}, {811 * OVERSAMPLENR, 69},
{829*OVERSAMPLENR, 66}, {829 * OVERSAMPLENR, 66},
{847*OVERSAMPLENR, 62}, {847 * OVERSAMPLENR, 62},
{865*OVERSAMPLENR, 59}, {865 * OVERSAMPLENR, 59},
{883*OVERSAMPLENR, 55}, {883 * OVERSAMPLENR, 55},
{901*OVERSAMPLENR, 51}, {901 * OVERSAMPLENR, 51},
{919*OVERSAMPLENR, 46}, {919 * OVERSAMPLENR, 46},
{937*OVERSAMPLENR, 41}, {937 * OVERSAMPLENR, 41},
{955*OVERSAMPLENR, 35}, {955 * OVERSAMPLENR, 35},
{973*OVERSAMPLENR, 27}, {973 * OVERSAMPLENR, 27},
{991*OVERSAMPLENR, 17}, {991 * OVERSAMPLENR, 17},
{1009*OVERSAMPLENR, 1}, {1009 * OVERSAMPLENR, 1},
{1023*OVERSAMPLENR, 0} //to allow internal 0 degrees C {1023 * OVERSAMPLENR, 0} //to allow internal 0 degrees C
}; };
#endif #endif
...@@ -323,245 +323,245 @@ const short temptable_7[][2] PROGMEM = { ...@@ -323,245 +323,245 @@ const short temptable_7[][2] PROGMEM = {
// R1 = 0 Ohm // R1 = 0 Ohm
// R2 = 4700 Ohm // R2 = 4700 Ohm
const short temptable_71[][2] PROGMEM = { const short temptable_71[][2] PROGMEM = {
{35*OVERSAMPLENR, 300}, {35 * OVERSAMPLENR, 300},
{51*OVERSAMPLENR, 270}, {51 * OVERSAMPLENR, 270},
{54*OVERSAMPLENR, 265}, {54 * OVERSAMPLENR, 265},
{58*OVERSAMPLENR, 260}, {58 * OVERSAMPLENR, 260},
{59*OVERSAMPLENR, 258}, {59 * OVERSAMPLENR, 258},
{61*OVERSAMPLENR, 256}, {61 * OVERSAMPLENR, 256},
{63*OVERSAMPLENR, 254}, {63 * OVERSAMPLENR, 254},
{64*OVERSAMPLENR, 252}, {64 * OVERSAMPLENR, 252},
{66*OVERSAMPLENR, 250}, {66 * OVERSAMPLENR, 250},
{67*OVERSAMPLENR, 249}, {67 * OVERSAMPLENR, 249},
{68*OVERSAMPLENR, 248}, {68 * OVERSAMPLENR, 248},
{69*OVERSAMPLENR, 247}, {69 * OVERSAMPLENR, 247},
{70*OVERSAMPLENR, 246}, {70 * OVERSAMPLENR, 246},
{71*OVERSAMPLENR, 245}, {71 * OVERSAMPLENR, 245},
{72*OVERSAMPLENR, 244}, {72 * OVERSAMPLENR, 244},
{73*OVERSAMPLENR, 243}, {73 * OVERSAMPLENR, 243},
{74*OVERSAMPLENR, 242}, {74 * OVERSAMPLENR, 242},
{75*OVERSAMPLENR, 241}, {75 * OVERSAMPLENR, 241},
{76*OVERSAMPLENR, 240}, {76 * OVERSAMPLENR, 240},
{77*OVERSAMPLENR, 239}, {77 * OVERSAMPLENR, 239},
{78*OVERSAMPLENR, 238}, {78 * OVERSAMPLENR, 238},
{79*OVERSAMPLENR, 237}, {79 * OVERSAMPLENR, 237},
{80*OVERSAMPLENR, 236}, {80 * OVERSAMPLENR, 236},
{81*OVERSAMPLENR, 235}, {81 * OVERSAMPLENR, 235},
{82*OVERSAMPLENR, 234}, {82 * OVERSAMPLENR, 234},
{84*OVERSAMPLENR, 233}, {84 * OVERSAMPLENR, 233},
{85*OVERSAMPLENR, 232}, {85 * OVERSAMPLENR, 232},
{86*OVERSAMPLENR, 231}, {86 * OVERSAMPLENR, 231},
{87*OVERSAMPLENR, 230}, {87 * OVERSAMPLENR, 230},
{89*OVERSAMPLENR, 229}, {89 * OVERSAMPLENR, 229},
{90*OVERSAMPLENR, 228}, {90 * OVERSAMPLENR, 228},
{91*OVERSAMPLENR, 227}, {91 * OVERSAMPLENR, 227},
{92*OVERSAMPLENR, 226}, {92 * OVERSAMPLENR, 226},
{94*OVERSAMPLENR, 225}, {94 * OVERSAMPLENR, 225},
{95*OVERSAMPLENR, 224}, {95 * OVERSAMPLENR, 224},
{97*OVERSAMPLENR, 223}, {97 * OVERSAMPLENR, 223},
{98*OVERSAMPLENR, 222}, {98 * OVERSAMPLENR, 222},
{99*OVERSAMPLENR, 221}, {99 * OVERSAMPLENR, 221},
{101*OVERSAMPLENR, 220}, {101 * OVERSAMPLENR, 220},
{102*OVERSAMPLENR, 219}, {102 * OVERSAMPLENR, 219},
{104*OVERSAMPLENR, 218}, {104 * OVERSAMPLENR, 218},
{106*OVERSAMPLENR, 217}, {106 * OVERSAMPLENR, 217},
{107*OVERSAMPLENR, 216}, {107 * OVERSAMPLENR, 216},
{109*OVERSAMPLENR, 215}, {109 * OVERSAMPLENR, 215},
{110*OVERSAMPLENR, 214}, {110 * OVERSAMPLENR, 214},
{112*OVERSAMPLENR, 213}, {112 * OVERSAMPLENR, 213},
{114*OVERSAMPLENR, 212}, {114 * OVERSAMPLENR, 212},
{115*OVERSAMPLENR, 211}, {115 * OVERSAMPLENR, 211},
{117*OVERSAMPLENR, 210}, {117 * OVERSAMPLENR, 210},
{119*OVERSAMPLENR, 209}, {119 * OVERSAMPLENR, 209},
{121*OVERSAMPLENR, 208}, {121 * OVERSAMPLENR, 208},
{123*OVERSAMPLENR, 207}, {123 * OVERSAMPLENR, 207},
{125*OVERSAMPLENR, 206}, {125 * OVERSAMPLENR, 206},
{126*OVERSAMPLENR, 205}, {126 * OVERSAMPLENR, 205},
{128*OVERSAMPLENR, 204}, {128 * OVERSAMPLENR, 204},
{130*OVERSAMPLENR, 203}, {130 * OVERSAMPLENR, 203},
{132*OVERSAMPLENR, 202}, {132 * OVERSAMPLENR, 202},
{134*OVERSAMPLENR, 201}, {134 * OVERSAMPLENR, 201},
{136*OVERSAMPLENR, 200}, {136 * OVERSAMPLENR, 200},
{139*OVERSAMPLENR, 199}, {139 * OVERSAMPLENR, 199},
{141*OVERSAMPLENR, 198}, {141 * OVERSAMPLENR, 198},
{143*OVERSAMPLENR, 197}, {143 * OVERSAMPLENR, 197},
{145*OVERSAMPLENR, 196}, {145 * OVERSAMPLENR, 196},
{147*OVERSAMPLENR, 195}, {147 * OVERSAMPLENR, 195},
{150*OVERSAMPLENR, 194}, {150 * OVERSAMPLENR, 194},
{152*OVERSAMPLENR, 193}, {152 * OVERSAMPLENR, 193},
{154*OVERSAMPLENR, 192}, {154 * OVERSAMPLENR, 192},
{157*OVERSAMPLENR, 191}, {157 * OVERSAMPLENR, 191},
{159*OVERSAMPLENR, 190}, {159 * OVERSAMPLENR, 190},
{162*OVERSAMPLENR, 189}, {162 * OVERSAMPLENR, 189},
{164*OVERSAMPLENR, 188}, {164 * OVERSAMPLENR, 188},
{167*OVERSAMPLENR, 187}, {167 * OVERSAMPLENR, 187},
{170*OVERSAMPLENR, 186}, {170 * OVERSAMPLENR, 186},
{172*OVERSAMPLENR, 185}, {172 * OVERSAMPLENR, 185},
{175*OVERSAMPLENR, 184}, {175 * OVERSAMPLENR, 184},
{178*OVERSAMPLENR, 183}, {178 * OVERSAMPLENR, 183},
{181*OVERSAMPLENR, 182}, {181 * OVERSAMPLENR, 182},
{184*OVERSAMPLENR, 181}, {184 * OVERSAMPLENR, 181},
{187*OVERSAMPLENR, 180}, {187 * OVERSAMPLENR, 180},
{190*OVERSAMPLENR, 179}, {190 * OVERSAMPLENR, 179},
{193*OVERSAMPLENR, 178}, {193 * OVERSAMPLENR, 178},
{196*OVERSAMPLENR, 177}, {196 * OVERSAMPLENR, 177},
{199*OVERSAMPLENR, 176}, {199 * OVERSAMPLENR, 176},
{202*OVERSAMPLENR, 175}, {202 * OVERSAMPLENR, 175},
{205*OVERSAMPLENR, 174}, {205 * OVERSAMPLENR, 174},
{208*OVERSAMPLENR, 173}, {208 * OVERSAMPLENR, 173},
{212*OVERSAMPLENR, 172}, {212 * OVERSAMPLENR, 172},
{215*OVERSAMPLENR, 171}, {215 * OVERSAMPLENR, 171},
{219*OVERSAMPLENR, 170}, {219 * OVERSAMPLENR, 170},
{237*OVERSAMPLENR, 165}, {237 * OVERSAMPLENR, 165},
{256*OVERSAMPLENR, 160}, {256 * OVERSAMPLENR, 160},
{300*OVERSAMPLENR, 150}, {300 * OVERSAMPLENR, 150},
{351*OVERSAMPLENR, 140}, {351 * OVERSAMPLENR, 140},
{470*OVERSAMPLENR, 120}, {470 * OVERSAMPLENR, 120},
{504*OVERSAMPLENR, 115}, {504 * OVERSAMPLENR, 115},
{538*OVERSAMPLENR, 110}, {538 * OVERSAMPLENR, 110},
{552*OVERSAMPLENR, 108}, {552 * OVERSAMPLENR, 108},
{566*OVERSAMPLENR, 106}, {566 * OVERSAMPLENR, 106},
{580*OVERSAMPLENR, 104}, {580 * OVERSAMPLENR, 104},
{594*OVERSAMPLENR, 102}, {594 * OVERSAMPLENR, 102},
{608*OVERSAMPLENR, 100}, {608 * OVERSAMPLENR, 100},
{622*OVERSAMPLENR, 98}, {622 * OVERSAMPLENR, 98},
{636*OVERSAMPLENR, 96}, {636 * OVERSAMPLENR, 96},
{650*OVERSAMPLENR, 94}, {650 * OVERSAMPLENR, 94},
{664*OVERSAMPLENR, 92}, {664 * OVERSAMPLENR, 92},
{678*OVERSAMPLENR, 90}, {678 * OVERSAMPLENR, 90},
{712*OVERSAMPLENR, 85}, {712 * OVERSAMPLENR, 85},
{745*OVERSAMPLENR, 80}, {745 * OVERSAMPLENR, 80},
{758*OVERSAMPLENR, 78}, {758 * OVERSAMPLENR, 78},
{770*OVERSAMPLENR, 76}, {770 * OVERSAMPLENR, 76},
{783*OVERSAMPLENR, 74}, {783 * OVERSAMPLENR, 74},
{795*OVERSAMPLENR, 72}, {795 * OVERSAMPLENR, 72},
{806*OVERSAMPLENR, 70}, {806 * OVERSAMPLENR, 70},
{818*OVERSAMPLENR, 68}, {818 * OVERSAMPLENR, 68},
{829*OVERSAMPLENR, 66}, {829 * OVERSAMPLENR, 66},
{840*OVERSAMPLENR, 64}, {840 * OVERSAMPLENR, 64},
{850*OVERSAMPLENR, 62}, {850 * OVERSAMPLENR, 62},
{860*OVERSAMPLENR, 60}, {860 * OVERSAMPLENR, 60},
{870*OVERSAMPLENR, 58}, {870 * OVERSAMPLENR, 58},
{879*OVERSAMPLENR, 56}, {879 * OVERSAMPLENR, 56},
{888*OVERSAMPLENR, 54}, {888 * OVERSAMPLENR, 54},
{897*OVERSAMPLENR, 52}, {897 * OVERSAMPLENR, 52},
{905*OVERSAMPLENR, 50}, {905 * OVERSAMPLENR, 50},
{924*OVERSAMPLENR, 45}, {924 * OVERSAMPLENR, 45},
{940*OVERSAMPLENR, 40}, {940 * OVERSAMPLENR, 40},
{955*OVERSAMPLENR, 35}, {955 * OVERSAMPLENR, 35},
{967*OVERSAMPLENR, 30}, {967 * OVERSAMPLENR, 30},
{970*OVERSAMPLENR, 29}, {970 * OVERSAMPLENR, 29},
{972*OVERSAMPLENR, 28}, {972 * OVERSAMPLENR, 28},
{974*OVERSAMPLENR, 27}, {974 * OVERSAMPLENR, 27},
{976*OVERSAMPLENR, 26}, {976 * OVERSAMPLENR, 26},
{978*OVERSAMPLENR, 25}, {978 * OVERSAMPLENR, 25},
{980*OVERSAMPLENR, 24}, {980 * OVERSAMPLENR, 24},
{982*OVERSAMPLENR, 23}, {982 * OVERSAMPLENR, 23},
{984*OVERSAMPLENR, 22}, {984 * OVERSAMPLENR, 22},
{985*OVERSAMPLENR, 21}, {985 * OVERSAMPLENR, 21},
{987*OVERSAMPLENR, 20}, {987 * OVERSAMPLENR, 20},
{995*OVERSAMPLENR, 15}, {995 * OVERSAMPLENR, 15},
{1001*OVERSAMPLENR, 10}, {1001 * OVERSAMPLENR, 10},
{1006*OVERSAMPLENR, 5}, {1006 * OVERSAMPLENR, 5},
{1010*OVERSAMPLENR, 0}, {1010 * OVERSAMPLENR, 0}
}; };
#endif #endif
#if (THERMISTORHEATER_0 == 8) || (THERMISTORHEATER_1 == 8) || (THERMISTORHEATER_2 == 8) || (THERMISTORHEATER_3 == 8) || (THERMISTORBED == 8) #if (THERMISTORHEATER_0 == 8) || (THERMISTORHEATER_1 == 8) || (THERMISTORHEATER_2 == 8) || (THERMISTORHEATER_3 == 8) || (THERMISTORBED == 8)
// 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) // 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup)
const short temptable_8[][2] PROGMEM = { const short temptable_8[][2] PROGMEM = {
{1*OVERSAMPLENR, 704}, {1 * OVERSAMPLENR, 704},
{54*OVERSAMPLENR, 216}, {54 * OVERSAMPLENR, 216},
{107*OVERSAMPLENR, 175}, {107 * OVERSAMPLENR, 175},
{160*OVERSAMPLENR, 152}, {160 * OVERSAMPLENR, 152},
{213*OVERSAMPLENR, 137}, {213 * OVERSAMPLENR, 137},
{266*OVERSAMPLENR, 125}, {266 * OVERSAMPLENR, 125},
{319*OVERSAMPLENR, 115}, {319 * OVERSAMPLENR, 115},
{372*OVERSAMPLENR, 106}, {372 * OVERSAMPLENR, 106},
{425*OVERSAMPLENR, 99}, {425 * OVERSAMPLENR, 99},
{478*OVERSAMPLENR, 91}, {478 * OVERSAMPLENR, 91},
{531*OVERSAMPLENR, 85}, {531 * OVERSAMPLENR, 85},
{584*OVERSAMPLENR, 78}, {584 * OVERSAMPLENR, 78},
{637*OVERSAMPLENR, 71}, {637 * OVERSAMPLENR, 71},
{690*OVERSAMPLENR, 65}, {690 * OVERSAMPLENR, 65},
{743*OVERSAMPLENR, 58}, {743 * OVERSAMPLENR, 58},
{796*OVERSAMPLENR, 50}, {796 * OVERSAMPLENR, 50},
{849*OVERSAMPLENR, 42}, {849 * OVERSAMPLENR, 42},
{902*OVERSAMPLENR, 31}, {902 * OVERSAMPLENR, 31},
{955*OVERSAMPLENR, 17}, {955 * OVERSAMPLENR, 17},
{1008*OVERSAMPLENR, 0} {1008 * OVERSAMPLENR, 0}
}; };
#endif #endif
#if (THERMISTORHEATER_0 == 9) || (THERMISTORHEATER_1 == 9) || (THERMISTORHEATER_2 == 9) || (THERMISTORHEATER_3 == 9) || (THERMISTORBED == 9) #if (THERMISTORHEATER_0 == 9) || (THERMISTORHEATER_1 == 9) || (THERMISTORHEATER_2 == 9) || (THERMISTORHEATER_3 == 9) || (THERMISTORBED == 9)
// 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) // 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup)
const short temptable_9[][2] PROGMEM = { const short temptable_9[][2] PROGMEM = {
{1*OVERSAMPLENR, 936}, {1 * OVERSAMPLENR, 936},
{36*OVERSAMPLENR, 300}, {36 * OVERSAMPLENR, 300},
{71*OVERSAMPLENR, 246}, {71 * OVERSAMPLENR, 246},
{106*OVERSAMPLENR, 218}, {106 * OVERSAMPLENR, 218},
{141*OVERSAMPLENR, 199}, {141 * OVERSAMPLENR, 199},
{176*OVERSAMPLENR, 185}, {176 * OVERSAMPLENR, 185},
{211*OVERSAMPLENR, 173}, {211 * OVERSAMPLENR, 173},
{246*OVERSAMPLENR, 163}, {246 * OVERSAMPLENR, 163},
{281*OVERSAMPLENR, 155}, {281 * OVERSAMPLENR, 155},
{316*OVERSAMPLENR, 147}, {316 * OVERSAMPLENR, 147},
{351*OVERSAMPLENR, 140}, {351 * OVERSAMPLENR, 140},
{386*OVERSAMPLENR, 134}, {386 * OVERSAMPLENR, 134},
{421*OVERSAMPLENR, 128}, {421 * OVERSAMPLENR, 128},
{456*OVERSAMPLENR, 122}, {456 * OVERSAMPLENR, 122},
{491*OVERSAMPLENR, 117}, {491 * OVERSAMPLENR, 117},
{526*OVERSAMPLENR, 112}, {526 * OVERSAMPLENR, 112},
{561*OVERSAMPLENR, 107}, {561 * OVERSAMPLENR, 107},
{596*OVERSAMPLENR, 102}, {596 * OVERSAMPLENR, 102},
{631*OVERSAMPLENR, 97}, {631 * OVERSAMPLENR, 97},
{666*OVERSAMPLENR, 92}, {666 * OVERSAMPLENR, 92},
{701*OVERSAMPLENR, 87}, {701 * OVERSAMPLENR, 87},
{736*OVERSAMPLENR, 81}, {736 * OVERSAMPLENR, 81},
{771*OVERSAMPLENR, 76}, {771 * OVERSAMPLENR, 76},
{806*OVERSAMPLENR, 70}, {806 * OVERSAMPLENR, 70},
{841*OVERSAMPLENR, 63}, {841 * OVERSAMPLENR, 63},
{876*OVERSAMPLENR, 56}, {876 * OVERSAMPLENR, 56},
{911*OVERSAMPLENR, 48}, {911 * OVERSAMPLENR, 48},
{946*OVERSAMPLENR, 38}, {946 * OVERSAMPLENR, 38},
{981*OVERSAMPLENR, 23}, {981 * OVERSAMPLENR, 23},
{1005*OVERSAMPLENR, 5}, {1005 * OVERSAMPLENR, 5},
{1016*OVERSAMPLENR, 0} {1016 * OVERSAMPLENR, 0}
}; };
#endif #endif
#if (THERMISTORHEATER_0 == 10) || (THERMISTORHEATER_1 == 10) || (THERMISTORHEATER_2 == 10) || (THERMISTORHEATER_3 == 10) || (THERMISTORBED == 10) #if (THERMISTORHEATER_0 == 10) || (THERMISTORHEATER_1 == 10) || (THERMISTORHEATER_2 == 10) || (THERMISTORHEATER_3 == 10) || (THERMISTORBED == 10)
// 100k RS thermistor 198-961 (4.7k pullup) // 100k RS thermistor 198-961 (4.7k pullup)
const short temptable_10[][2] PROGMEM = { const short temptable_10[][2] PROGMEM = {
{1*OVERSAMPLENR, 929}, {1 * OVERSAMPLENR, 929},
{36*OVERSAMPLENR, 299}, {36 * OVERSAMPLENR, 299},
{71*OVERSAMPLENR, 246}, {71 * OVERSAMPLENR, 246},
{106*OVERSAMPLENR, 217}, {106 * OVERSAMPLENR, 217},
{141*OVERSAMPLENR, 198}, {141 * OVERSAMPLENR, 198},
{176*OVERSAMPLENR, 184}, {176 * OVERSAMPLENR, 184},
{211*OVERSAMPLENR, 173}, {211 * OVERSAMPLENR, 173},
{246*OVERSAMPLENR, 163}, {246 * OVERSAMPLENR, 163},
{281*OVERSAMPLENR, 154}, {281 * OVERSAMPLENR, 154},
{316*OVERSAMPLENR, 147}, {316 * OVERSAMPLENR, 147},
{351*OVERSAMPLENR, 140}, {351 * OVERSAMPLENR, 140},
{386*OVERSAMPLENR, 134}, {386 * OVERSAMPLENR, 134},
{421*OVERSAMPLENR, 128}, {421 * OVERSAMPLENR, 128},
{456*OVERSAMPLENR, 122}, {456 * OVERSAMPLENR, 122},
{491*OVERSAMPLENR, 117}, {491 * OVERSAMPLENR, 117},
{526*OVERSAMPLENR, 112}, {526 * OVERSAMPLENR, 112},
{561*OVERSAMPLENR, 107}, {561 * OVERSAMPLENR, 107},
{596*OVERSAMPLENR, 102}, {596 * OVERSAMPLENR, 102},
{631*OVERSAMPLENR, 97}, {631 * OVERSAMPLENR, 97},
{666*OVERSAMPLENR, 91}, {666 * OVERSAMPLENR, 91},
{701*OVERSAMPLENR, 86}, {701 * OVERSAMPLENR, 86},
{736*OVERSAMPLENR, 81}, {736 * OVERSAMPLENR, 81},
{771*OVERSAMPLENR, 76}, {771 * OVERSAMPLENR, 76},
{806*OVERSAMPLENR, 70}, {806 * OVERSAMPLENR, 70},
{841*OVERSAMPLENR, 63}, {841 * OVERSAMPLENR, 63},
{876*OVERSAMPLENR, 56}, {876 * OVERSAMPLENR, 56},
{911*OVERSAMPLENR, 48}, {911 * OVERSAMPLENR, 48},
{946*OVERSAMPLENR, 38}, {946 * OVERSAMPLENR, 38},
{981*OVERSAMPLENR, 23}, {981 * OVERSAMPLENR, 23},
{1005*OVERSAMPLENR, 5}, {1005 * OVERSAMPLENR, 5},
{1016*OVERSAMPLENR, 0} {1016 * OVERSAMPLENR, 0}
}; };
#endif #endif
...@@ -569,56 +569,56 @@ const short temptable_10[][2] PROGMEM = { ...@@ -569,56 +569,56 @@ const short temptable_10[][2] PROGMEM = {
// QU-BD silicone bed QWG-104F-3950 thermistor // QU-BD silicone bed QWG-104F-3950 thermistor
const short temptable_11[][2] PROGMEM = { const short temptable_11[][2] PROGMEM = {
{1*OVERSAMPLENR, 938}, {1 * OVERSAMPLENR, 938},
{31*OVERSAMPLENR, 314}, {31 * OVERSAMPLENR, 314},
{41*OVERSAMPLENR, 290}, {41 * OVERSAMPLENR, 290},
{51*OVERSAMPLENR, 272}, {51 * OVERSAMPLENR, 272},
{61*OVERSAMPLENR, 258}, {61 * OVERSAMPLENR, 258},
{71*OVERSAMPLENR, 247}, {71 * OVERSAMPLENR, 247},
{81*OVERSAMPLENR, 237}, {81 * OVERSAMPLENR, 237},
{91*OVERSAMPLENR, 229}, {91 * OVERSAMPLENR, 229},
{101*OVERSAMPLENR, 221}, {101 * OVERSAMPLENR, 221},
{111*OVERSAMPLENR, 215}, {111 * OVERSAMPLENR, 215},
{121*OVERSAMPLENR, 209}, {121 * OVERSAMPLENR, 209},
{131*OVERSAMPLENR, 204}, {131 * OVERSAMPLENR, 204},
{141*OVERSAMPLENR, 199}, {141 * OVERSAMPLENR, 199},
{151*OVERSAMPLENR, 195}, {151 * OVERSAMPLENR, 195},
{161*OVERSAMPLENR, 190}, {161 * OVERSAMPLENR, 190},
{171*OVERSAMPLENR, 187}, {171 * OVERSAMPLENR, 187},
{181*OVERSAMPLENR, 183}, {181 * OVERSAMPLENR, 183},
{191*OVERSAMPLENR, 179}, {191 * OVERSAMPLENR, 179},
{201*OVERSAMPLENR, 176}, {201 * OVERSAMPLENR, 176},
{221*OVERSAMPLENR, 170}, {221 * OVERSAMPLENR, 170},
{241*OVERSAMPLENR, 165}, {241 * OVERSAMPLENR, 165},
{261*OVERSAMPLENR, 160}, {261 * OVERSAMPLENR, 160},
{281*OVERSAMPLENR, 155}, {281 * OVERSAMPLENR, 155},
{301*OVERSAMPLENR, 150}, {301 * OVERSAMPLENR, 150},
{331*OVERSAMPLENR, 144}, {331 * OVERSAMPLENR, 144},
{361*OVERSAMPLENR, 139}, {361 * OVERSAMPLENR, 139},
{391*OVERSAMPLENR, 133}, {391 * OVERSAMPLENR, 133},
{421*OVERSAMPLENR, 128}, {421 * OVERSAMPLENR, 128},
{451*OVERSAMPLENR, 123}, {451 * OVERSAMPLENR, 123},
{491*OVERSAMPLENR, 117}, {491 * OVERSAMPLENR, 117},
{531*OVERSAMPLENR, 111}, {531 * OVERSAMPLENR, 111},
{571*OVERSAMPLENR, 105}, {571 * OVERSAMPLENR, 105},
{611*OVERSAMPLENR, 100}, {611 * OVERSAMPLENR, 100},
{641*OVERSAMPLENR, 95}, {641 * OVERSAMPLENR, 95},
{681*OVERSAMPLENR, 90}, {681 * OVERSAMPLENR, 90},
{711*OVERSAMPLENR, 85}, {711 * OVERSAMPLENR, 85},
{751*OVERSAMPLENR, 79}, {751 * OVERSAMPLENR, 79},
{791*OVERSAMPLENR, 72}, {791 * OVERSAMPLENR, 72},
{811*OVERSAMPLENR, 69}, {811 * OVERSAMPLENR, 69},
{831*OVERSAMPLENR, 65}, {831 * OVERSAMPLENR, 65},
{871*OVERSAMPLENR, 57}, {871 * OVERSAMPLENR, 57},
{881*OVERSAMPLENR, 55}, {881 * OVERSAMPLENR, 55},
{901*OVERSAMPLENR, 51}, {901 * OVERSAMPLENR, 51},
{921*OVERSAMPLENR, 45}, {921 * OVERSAMPLENR, 45},
{941*OVERSAMPLENR, 39}, {941 * OVERSAMPLENR, 39},
{971*OVERSAMPLENR, 28}, {971 * OVERSAMPLENR, 28},
{981*OVERSAMPLENR, 23}, {981 * OVERSAMPLENR, 23},
{991*OVERSAMPLENR, 17}, {991 * OVERSAMPLENR, 17},
{1001*OVERSAMPLENR, 9}, {1001 * OVERSAMPLENR, 9},
{1021*OVERSAMPLENR, -27} {1021 * OVERSAMPLENR, -27}
}; };
#endif #endif
...@@ -626,67 +626,67 @@ const short temptable_11[][2] PROGMEM = { ...@@ -626,67 +626,67 @@ const short temptable_11[][2] PROGMEM = {
// Hisens thermistor B25/50 =3950 +/-1% // Hisens thermistor B25/50 =3950 +/-1%
const short temptable_13[][2] PROGMEM = { const short temptable_13[][2] PROGMEM = {
{ 22.5*OVERSAMPLENR, 300 }, {22.5 * OVERSAMPLENR, 300},
{ 24.125*OVERSAMPLENR, 295 }, {24.125 * OVERSAMPLENR, 295},
{ 25.875*OVERSAMPLENR, 290 }, {25.875 * OVERSAMPLENR, 290},
{ 27.8125*OVERSAMPLENR, 285 }, {27.8125 * OVERSAMPLENR, 285},
{ 29.9375*OVERSAMPLENR, 280 }, {29.9375 * OVERSAMPLENR, 280},
{ 32.25*OVERSAMPLENR, 275 }, {32.25 * OVERSAMPLENR, 275},
{ 34.8125*OVERSAMPLENR, 270 }, {34.8125 * OVERSAMPLENR, 270},
{ 37.625*OVERSAMPLENR, 265 }, {37.625 * OVERSAMPLENR, 265},
{ 40.6875*OVERSAMPLENR, 260 }, {40.6875 * OVERSAMPLENR, 260},
{ 44.0625*OVERSAMPLENR, 255 }, {44.0625 * OVERSAMPLENR, 255},
{ 47.75*OVERSAMPLENR, 250 }, {47.75 * OVERSAMPLENR, 250},
{ 51.8125*OVERSAMPLENR, 245 }, {51.8125 * OVERSAMPLENR, 245},
{ 56.3125*OVERSAMPLENR, 240 }, {56.3125 * OVERSAMPLENR, 240},
{ 61.25*OVERSAMPLENR, 235 }, {61.25 * OVERSAMPLENR, 235},
{ 66.75*OVERSAMPLENR, 230 }, {66.75 * OVERSAMPLENR, 230},
{ 72.8125*OVERSAMPLENR, 225 }, {72.8125 * OVERSAMPLENR, 225},
{ 79.5*OVERSAMPLENR, 220 }, {79.5 * OVERSAMPLENR, 220},
{ 87*OVERSAMPLENR, 215 }, {87 * OVERSAMPLENR, 215},
{ 95.3125*OVERSAMPLENR, 210 }, {95.3125 * OVERSAMPLENR, 210},
{ 104.1875*OVERSAMPLENR, 205 }, {104.1875 * OVERSAMPLENR, 205},
{ 112.75*OVERSAMPLENR, 200 }, {112.75 * OVERSAMPLENR, 200},
{ 123.125*OVERSAMPLENR, 195 }, {123.125 * OVERSAMPLENR, 195},
{ 135.75*OVERSAMPLENR, 190 }, {135.75 * OVERSAMPLENR, 190},
{ 148.3125*OVERSAMPLENR, 185 }, {148.3125 * OVERSAMPLENR, 185},
{ 163.8125*OVERSAMPLENR, 180 }, {163.8125 * OVERSAMPLENR, 180},
{ 179*OVERSAMPLENR, 175 }, {179 * OVERSAMPLENR, 175},
{ 211.125*OVERSAMPLENR, 170 }, {211.125 * OVERSAMPLENR, 170},
{ 216.125*OVERSAMPLENR, 165 }, {216.125 * OVERSAMPLENR, 165},
{ 236.5625*OVERSAMPLENR, 160 }, {236.5625 * OVERSAMPLENR, 160},
{ 258.5*OVERSAMPLENR, 155 }, {258.5 * OVERSAMPLENR, 155},
{ 279.875*OVERSAMPLENR, 150 }, {279.875 * OVERSAMPLENR, 150},
{ 305.375*OVERSAMPLENR, 145 }, {305.375 * OVERSAMPLENR, 145},
{ 333.25*OVERSAMPLENR, 140 }, {333.25 * OVERSAMPLENR, 140},
{ 362.5625*OVERSAMPLENR, 135 }, {362.5625 * OVERSAMPLENR, 135},
{ 393.6875*OVERSAMPLENR, 130 }, {393.6875 * OVERSAMPLENR, 130},
{ 425*OVERSAMPLENR, 125 }, {425 * OVERSAMPLENR, 125},
{ 460.625*OVERSAMPLENR, 120 }, {460.625 * OVERSAMPLENR, 120},
{ 495.1875*OVERSAMPLENR, 115 }, {495.1875 * OVERSAMPLENR, 115},
{ 530.875*OVERSAMPLENR, 110 }, {530.875 * OVERSAMPLENR, 110},
{ 567.25*OVERSAMPLENR, 105 }, {567.25 * OVERSAMPLENR, 105},
{ 601.625*OVERSAMPLENR, 100 }, {601.625 * OVERSAMPLENR, 100},
{ 637.875*OVERSAMPLENR, 95 }, {637.875 * OVERSAMPLENR, 95},
{ 674.5625*OVERSAMPLENR, 90 }, {674.5625 * OVERSAMPLENR, 90},
{ 710*OVERSAMPLENR, 85 }, {710 * OVERSAMPLENR, 85},
{ 744.125*OVERSAMPLENR, 80 }, {744.125 * OVERSAMPLENR, 80},
{ 775.9375*OVERSAMPLENR, 75 }, {775.9375 * OVERSAMPLENR, 75},
{ 806.875*OVERSAMPLENR, 70 }, {806.875 * OVERSAMPLENR, 70},
{ 835.1875*OVERSAMPLENR, 65 }, {835.1875 * OVERSAMPLENR, 65},
{ 861.125*OVERSAMPLENR, 60 }, {861.125 * OVERSAMPLENR, 60},
{ 884.375*OVERSAMPLENR, 55 }, {884.375 * OVERSAMPLENR, 55},
{ 904.5625*OVERSAMPLENR, 50 }, {904.5625 * OVERSAMPLENR, 50},
{ 923.8125*OVERSAMPLENR, 45 }, {923.8125 * OVERSAMPLENR, 45},
{ 940.375*OVERSAMPLENR, 40 }, {940.375 * OVERSAMPLENR, 40},
{ 954.625*OVERSAMPLENR, 35 }, {954.625 * OVERSAMPLENR, 35},
{ 966.875*OVERSAMPLENR, 30 }, {966.875 * OVERSAMPLENR, 30},
{ 977.0625*OVERSAMPLENR, 25 }, {977.0625 * OVERSAMPLENR, 25},
{ 986*OVERSAMPLENR, 20 }, {986 * OVERSAMPLENR, 20},
{ 993.375*OVERSAMPLENR, 15 }, {993.375 * OVERSAMPLENR, 15},
{ 999.5*OVERSAMPLENR, 10 }, {999.5 * OVERSAMPLENR, 10},
{ 1004.5*OVERSAMPLENR, 5 }, {1004.5 * OVERSAMPLENR, 5},
{ 1008.5*OVERSAMPLENR, 0 } {1008.5 * OVERSAMPLENR, 0}
}; };
#endif #endif
...@@ -715,199 +715,199 @@ This does not match the normal thermistor behaviour so we need to set the follow ...@@ -715,199 +715,199 @@ This does not match the normal thermistor behaviour so we need to set the follow
# define HEATER_BED_RAW_LO_TEMP 0 # define HEATER_BED_RAW_LO_TEMP 0
#endif #endif
const short temptable_20[][2] PROGMEM = { const short temptable_20[][2] PROGMEM = {
{ 0*OVERSAMPLENR , 0 }, {0 * OVERSAMPLENR, 0},
{ 227*OVERSAMPLENR , 1 }, {227 * OVERSAMPLENR, 1},
{ 236*OVERSAMPLENR , 10 }, {236 * OVERSAMPLENR, 10},
{ 245*OVERSAMPLENR , 20 }, {245 * OVERSAMPLENR, 20},
{ 253*OVERSAMPLENR , 30 }, {253 * OVERSAMPLENR, 30},
{ 262*OVERSAMPLENR , 40 }, {262 * OVERSAMPLENR, 40},
{ 270*OVERSAMPLENR , 50 }, {270 * OVERSAMPLENR, 50},
{ 279*OVERSAMPLENR , 60 }, {279 * OVERSAMPLENR, 60},
{ 287*OVERSAMPLENR , 70 }, {287 * OVERSAMPLENR, 70},
{ 295*OVERSAMPLENR , 80 }, {295 * OVERSAMPLENR, 80},
{ 304*OVERSAMPLENR , 90 }, {304 * OVERSAMPLENR, 90},
{ 312*OVERSAMPLENR , 100 }, {312 * OVERSAMPLENR, 100},
{ 320*OVERSAMPLENR , 110 }, {320 * OVERSAMPLENR, 110},
{ 329*OVERSAMPLENR , 120 }, {329 * OVERSAMPLENR, 120},
{ 337*OVERSAMPLENR , 130 }, {337 * OVERSAMPLENR, 130},
{ 345*OVERSAMPLENR , 140 }, {345 * OVERSAMPLENR, 140},
{ 353*OVERSAMPLENR , 150 }, {353 * OVERSAMPLENR, 150},
{ 361*OVERSAMPLENR , 160 }, {361 * OVERSAMPLENR, 160},
{ 369*OVERSAMPLENR , 170 }, {369 * OVERSAMPLENR, 170},
{ 377*OVERSAMPLENR , 180 }, {377 * OVERSAMPLENR, 180},
{ 385*OVERSAMPLENR , 190 }, {385 * OVERSAMPLENR, 190},
{ 393*OVERSAMPLENR , 200 }, {393 * OVERSAMPLENR, 200},
{ 401*OVERSAMPLENR , 210 }, {401 * OVERSAMPLENR, 210},
{ 409*OVERSAMPLENR , 220 }, {409 * OVERSAMPLENR, 220},
{ 417*OVERSAMPLENR , 230 }, {417 * OVERSAMPLENR, 230},
{ 424*OVERSAMPLENR , 240 }, {424 * OVERSAMPLENR, 240},
{ 432*OVERSAMPLENR , 250 }, {432 * OVERSAMPLENR, 250},
{ 440*OVERSAMPLENR , 260 }, {440 * OVERSAMPLENR, 260},
{ 447*OVERSAMPLENR , 270 }, {447 * OVERSAMPLENR, 270},
{ 455*OVERSAMPLENR , 280 }, {455 * OVERSAMPLENR, 280},
{ 463*OVERSAMPLENR , 290 }, {463 * OVERSAMPLENR, 290},
{ 470*OVERSAMPLENR , 300 }, {470 * OVERSAMPLENR, 300},
{ 478*OVERSAMPLENR , 310 }, {478 * OVERSAMPLENR, 310},
{ 485*OVERSAMPLENR , 320 }, {485 * OVERSAMPLENR, 320},
{ 493*OVERSAMPLENR , 330 }, {493 * OVERSAMPLENR, 330},
{ 500*OVERSAMPLENR , 340 }, {500 * OVERSAMPLENR, 340},
{ 507*OVERSAMPLENR , 350 }, {507 * OVERSAMPLENR, 350},
{ 515*OVERSAMPLENR , 360 }, {515 * OVERSAMPLENR, 360},
{ 522*OVERSAMPLENR , 370 }, {522 * OVERSAMPLENR, 370},
{ 529*OVERSAMPLENR , 380 }, {529 * OVERSAMPLENR, 380},
{ 537*OVERSAMPLENR , 390 }, {537 * OVERSAMPLENR, 390},
{ 544*OVERSAMPLENR , 400 }, {544 * OVERSAMPLENR, 400},
{ 614*OVERSAMPLENR , 500 }, {614 * OVERSAMPLENR, 500},
{ 681*OVERSAMPLENR , 600 }, {681 * OVERSAMPLENR, 600},
{ 744*OVERSAMPLENR , 700 }, {744 * OVERSAMPLENR, 700},
{ 805*OVERSAMPLENR , 800 }, {805 * OVERSAMPLENR, 800},
{ 862*OVERSAMPLENR , 900 }, {862 * OVERSAMPLENR, 900},
{ 917*OVERSAMPLENR , 1000 }, {917 * OVERSAMPLENR, 1000},
{ 968*OVERSAMPLENR , 1100 } {968 * OVERSAMPLENR, 1100}
}; };
#endif #endif
#if (THERMISTORHEATER_0 == 51) || (THERMISTORHEATER_1 == 51) || (THERMISTORHEATER_2 == 51) || (THERMISTORHEATER_3 == 51) || (THERMISTORBED == 51) #if (THERMISTORHEATER_0 == 51) || (THERMISTORHEATER_1 == 51) || (THERMISTORHEATER_2 == 51) || (THERMISTORHEATER_3 == 51) || (THERMISTORBED == 51)
// 100k EPCOS (WITH 1kohm RESISTOR FOR PULLUP, R9 ON SANGUINOLOLU! NOT FOR 4.7kohm PULLUP! THIS IS NOT NORMAL!) // 100k EPCOS (WITH 1kohm RESISTOR FOR PULLUP,R9 ON SANGUINOLOLU! NOT FOR 4.7kohm PULLUP! THIS IS NOT NORMAL!)
// Verified by linagee. // Verified by linagee.
// Calculated using 1kohm pullup, voltage divider math, and manufacturer provided temp/resistance // Calculated using 1kohm pullup,voltage divider math,and manufacturer provided temp/resistance
// Advantage: Twice the resolution and better linearity from 150C to 200C // Advantage: Twice the resolution and better linearity from 150C to 200C
const short temptable_51[][2] PROGMEM = { const short temptable_51[][2] PROGMEM = {
{1*OVERSAMPLENR, 350}, {1 * OVERSAMPLENR, 350},
{190*OVERSAMPLENR, 250}, //top rating 250C {190 * OVERSAMPLENR, 250},//top rating 250C
{203*OVERSAMPLENR, 245}, {203 * OVERSAMPLENR, 245},
{217*OVERSAMPLENR, 240}, {217 * OVERSAMPLENR, 240},
{232*OVERSAMPLENR, 235}, {232 * OVERSAMPLENR, 235},
{248*OVERSAMPLENR, 230}, {248 * OVERSAMPLENR, 230},
{265*OVERSAMPLENR, 225}, {265 * OVERSAMPLENR, 225},
{283*OVERSAMPLENR, 220}, {283 * OVERSAMPLENR, 220},
{302*OVERSAMPLENR, 215}, {302 * OVERSAMPLENR, 215},
{322*OVERSAMPLENR, 210}, {322 * OVERSAMPLENR, 210},
{344*OVERSAMPLENR, 205}, {344 * OVERSAMPLENR, 205},
{366*OVERSAMPLENR, 200}, {366 * OVERSAMPLENR, 200},
{390*OVERSAMPLENR, 195}, {390 * OVERSAMPLENR, 195},
{415*OVERSAMPLENR, 190}, {415 * OVERSAMPLENR, 190},
{440*OVERSAMPLENR, 185}, {440 * OVERSAMPLENR, 185},
{467*OVERSAMPLENR, 180}, {467 * OVERSAMPLENR, 180},
{494*OVERSAMPLENR, 175}, {494 * OVERSAMPLENR, 175},
{522*OVERSAMPLENR, 170}, {522 * OVERSAMPLENR, 170},
{551*OVERSAMPLENR, 165}, {551 * OVERSAMPLENR, 165},
{580*OVERSAMPLENR, 160}, {580 * OVERSAMPLENR, 160},
{609*OVERSAMPLENR, 155}, {609 * OVERSAMPLENR, 155},
{638*OVERSAMPLENR, 150}, {638 * OVERSAMPLENR, 150},
{666*OVERSAMPLENR, 145}, {666 * OVERSAMPLENR, 145},
{695*OVERSAMPLENR, 140}, {695 * OVERSAMPLENR, 140},
{722*OVERSAMPLENR, 135}, {722 * OVERSAMPLENR, 135},
{749*OVERSAMPLENR, 130}, {749 * OVERSAMPLENR, 130},
{775*OVERSAMPLENR, 125}, {775 * OVERSAMPLENR, 125},
{800*OVERSAMPLENR, 120}, {800 * OVERSAMPLENR, 120},
{823*OVERSAMPLENR, 115}, {823 * OVERSAMPLENR, 115},
{845*OVERSAMPLENR, 110}, {845 * OVERSAMPLENR, 110},
{865*OVERSAMPLENR, 105}, {865 * OVERSAMPLENR, 105},
{884*OVERSAMPLENR, 100}, {884 * OVERSAMPLENR, 100},
{901*OVERSAMPLENR, 95}, {901 * OVERSAMPLENR, 95},
{917*OVERSAMPLENR, 90}, {917 * OVERSAMPLENR, 90},
{932*OVERSAMPLENR, 85}, {932 * OVERSAMPLENR, 85},
{944*OVERSAMPLENR, 80}, {944 * OVERSAMPLENR, 80},
{956*OVERSAMPLENR, 75}, {956 * OVERSAMPLENR, 75},
{966*OVERSAMPLENR, 70}, {966 * OVERSAMPLENR, 70},
{975*OVERSAMPLENR, 65}, {975 * OVERSAMPLENR, 65},
{982*OVERSAMPLENR, 60}, {982 * OVERSAMPLENR, 60},
{989*OVERSAMPLENR, 55}, {989 * OVERSAMPLENR, 55},
{995*OVERSAMPLENR, 50}, {995 * OVERSAMPLENR, 50},
{1000*OVERSAMPLENR, 45}, {1000 * OVERSAMPLENR, 45},
{1004*OVERSAMPLENR, 40}, {1004 * OVERSAMPLENR, 40},
{1007*OVERSAMPLENR, 35}, {1007 * OVERSAMPLENR, 35},
{1010*OVERSAMPLENR, 30}, {1010 * OVERSAMPLENR, 30},
{1013*OVERSAMPLENR, 25}, {1013 * OVERSAMPLENR, 25},
{1015*OVERSAMPLENR, 20}, {1015 * OVERSAMPLENR, 20},
{1017*OVERSAMPLENR, 15}, {1017 * OVERSAMPLENR, 15},
{1018*OVERSAMPLENR, 10}, {1018 * OVERSAMPLENR, 10},
{1019*OVERSAMPLENR, 5}, {1019 * OVERSAMPLENR, 5},
{1020*OVERSAMPLENR, 0}, {1020 * OVERSAMPLENR, 0},
{1021*OVERSAMPLENR, -5} {1021 * OVERSAMPLENR, -5}
}; };
#endif #endif
#if (THERMISTORHEATER_0 == 52) || (THERMISTORHEATER_1 == 52) || (THERMISTORHEATER_2 == 52) || (THERMISTORHEATER_3 == 52) || (THERMISTORBED == 52) #if (THERMISTORHEATER_0 == 52) || (THERMISTORHEATER_1 == 52) || (THERMISTORHEATER_2 == 52) || (THERMISTORHEATER_3 == 52) || (THERMISTORBED == 52)
// 200k ATC Semitec 204GT-2 (WITH 1kohm RESISTOR FOR PULLUP, R9 ON SANGUINOLOLU! NOT FOR 4.7kohm PULLUP! THIS IS NOT NORMAL!) // 200k ATC Semitec 204GT-2 (WITH 1kohm RESISTOR FOR PULLUP,R9 ON SANGUINOLOLU! NOT FOR 4.7kohm PULLUP! THIS IS NOT NORMAL!)
// Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf // Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf
// Calculated using 1kohm pullup, voltage divider math, and manufacturer provided temp/resistance // Calculated using 1kohm pullup,voltage divider math,and manufacturer provided temp/resistance
// Advantage: More resolution and better linearity from 150C to 200C // Advantage: More resolution and better linearity from 150C to 200C
const short temptable_52[][2] PROGMEM = { const short temptable_52[][2] PROGMEM = {
{1*OVERSAMPLENR, 500}, {1 * OVERSAMPLENR, 500},
{125*OVERSAMPLENR, 300}, //top rating 300C {125 * OVERSAMPLENR, 300},//top rating 300C
{142*OVERSAMPLENR, 290}, {142 * OVERSAMPLENR, 290},
{162*OVERSAMPLENR, 280}, {162 * OVERSAMPLENR, 280},
{185*OVERSAMPLENR, 270}, {185 * OVERSAMPLENR, 270},
{211*OVERSAMPLENR, 260}, {211 * OVERSAMPLENR, 260},
{240*OVERSAMPLENR, 250}, {240 * OVERSAMPLENR, 250},
{274*OVERSAMPLENR, 240}, {274 * OVERSAMPLENR, 240},
{312*OVERSAMPLENR, 230}, {312 * OVERSAMPLENR, 230},
{355*OVERSAMPLENR, 220}, {355 * OVERSAMPLENR, 220},
{401*OVERSAMPLENR, 210}, {401 * OVERSAMPLENR, 210},
{452*OVERSAMPLENR, 200}, {452 * OVERSAMPLENR, 200},
{506*OVERSAMPLENR, 190}, {506 * OVERSAMPLENR, 190},
{563*OVERSAMPLENR, 180}, {563 * OVERSAMPLENR, 180},
{620*OVERSAMPLENR, 170}, {620 * OVERSAMPLENR, 170},
{677*OVERSAMPLENR, 160}, {677 * OVERSAMPLENR, 160},
{732*OVERSAMPLENR, 150}, {732 * OVERSAMPLENR, 150},
{783*OVERSAMPLENR, 140}, {783 * OVERSAMPLENR, 140},
{830*OVERSAMPLENR, 130}, {830 * OVERSAMPLENR, 130},
{871*OVERSAMPLENR, 120}, {871 * OVERSAMPLENR, 120},
{906*OVERSAMPLENR, 110}, {906 * OVERSAMPLENR, 110},
{935*OVERSAMPLENR, 100}, {935 * OVERSAMPLENR, 100},
{958*OVERSAMPLENR, 90}, {958 * OVERSAMPLENR, 90},
{976*OVERSAMPLENR, 80}, {976 * OVERSAMPLENR, 80},
{990*OVERSAMPLENR, 70}, {990 * OVERSAMPLENR, 70},
{1000*OVERSAMPLENR, 60}, {1000 * OVERSAMPLENR, 60},
{1008*OVERSAMPLENR, 50}, {1008 * OVERSAMPLENR, 50},
{1013*OVERSAMPLENR, 40}, {1013 * OVERSAMPLENR, 40},
{1017*OVERSAMPLENR, 30}, {1017 * OVERSAMPLENR, 30},
{1019*OVERSAMPLENR, 20}, {1019 * OVERSAMPLENR, 20},
{1021*OVERSAMPLENR, 10}, {1021 * OVERSAMPLENR, 10},
{1022*OVERSAMPLENR, 0} {1022 * OVERSAMPLENR, 0}
}; };
#endif #endif
#if (THERMISTORHEATER_0 == 55) || (THERMISTORHEATER_1 == 55) || (THERMISTORHEATER_2 == 55) || (THERMISTORHEATER_3 == 55) || (THERMISTORBED == 55) #if (THERMISTORHEATER_0 == 55) || (THERMISTORHEATER_1 == 55) || (THERMISTORHEATER_2 == 55) || (THERMISTORHEATER_3 == 55) || (THERMISTORBED == 55)
// 100k ATC Semitec 104GT-2 (Used on ParCan) (WITH 1kohm RESISTOR FOR PULLUP, R9 ON SANGUINOLOLU! NOT FOR 4.7kohm PULLUP! THIS IS NOT NORMAL!) // 100k ATC Semitec 104GT-2 (Used on ParCan) (WITH 1kohm RESISTOR FOR PULLUP,R9 ON SANGUINOLOLU! NOT FOR 4.7kohm PULLUP! THIS IS NOT NORMAL!)
// Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf // Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf
// Calculated using 1kohm pullup, voltage divider math, and manufacturer provided temp/resistance // Calculated using 1kohm pullup,voltage divider math,and manufacturer provided temp/resistance
// Advantage: More resolution and better linearity from 150C to 200C // Advantage: More resolution and better linearity from 150C to 200C
const short temptable_55[][2] PROGMEM = { const short temptable_55[][2] PROGMEM = {
{1*OVERSAMPLENR, 500}, {1 * OVERSAMPLENR, 500},
{76*OVERSAMPLENR, 300}, {76 * OVERSAMPLENR, 300},
{87*OVERSAMPLENR, 290}, {87 * OVERSAMPLENR, 290},
{100*OVERSAMPLENR, 280}, {100 * OVERSAMPLENR, 280},
{114*OVERSAMPLENR, 270}, {114 * OVERSAMPLENR, 270},
{131*OVERSAMPLENR, 260}, {131 * OVERSAMPLENR, 260},
{152*OVERSAMPLENR, 250}, {152 * OVERSAMPLENR, 250},
{175*OVERSAMPLENR, 240}, {175 * OVERSAMPLENR, 240},
{202*OVERSAMPLENR, 230}, {202 * OVERSAMPLENR, 230},
{234*OVERSAMPLENR, 220}, {234 * OVERSAMPLENR, 220},
{271*OVERSAMPLENR, 210}, {271 * OVERSAMPLENR, 210},
{312*OVERSAMPLENR, 200}, {312 * OVERSAMPLENR, 200},
{359*OVERSAMPLENR, 190}, {359 * OVERSAMPLENR, 190},
{411*OVERSAMPLENR, 180}, {411 * OVERSAMPLENR, 180},
{467*OVERSAMPLENR, 170}, {467 * OVERSAMPLENR, 170},
{527*OVERSAMPLENR, 160}, {527 * OVERSAMPLENR, 160},
{590*OVERSAMPLENR, 150}, {590 * OVERSAMPLENR, 150},
{652*OVERSAMPLENR, 140}, {652 * OVERSAMPLENR, 140},
{713*OVERSAMPLENR, 130}, {713 * OVERSAMPLENR, 130},
{770*OVERSAMPLENR, 120}, {770 * OVERSAMPLENR, 120},
{822*OVERSAMPLENR, 110}, {822 * OVERSAMPLENR, 110},
{867*OVERSAMPLENR, 100}, {867 * OVERSAMPLENR, 100},
{905*OVERSAMPLENR, 90}, {905 * OVERSAMPLENR, 90},
{936*OVERSAMPLENR, 80}, {936 * OVERSAMPLENR, 80},
{961*OVERSAMPLENR, 70}, {961 * OVERSAMPLENR, 70},
{979*OVERSAMPLENR, 60}, {979 * OVERSAMPLENR, 60},
{993*OVERSAMPLENR, 50}, {993 * OVERSAMPLENR, 50},
{1003*OVERSAMPLENR, 40}, {1003 * OVERSAMPLENR, 40},
{1010*OVERSAMPLENR, 30}, {1010 * OVERSAMPLENR, 30},
{1015*OVERSAMPLENR, 20}, {1015 * OVERSAMPLENR, 20},
{1018*OVERSAMPLENR, 10}, {1018 * OVERSAMPLENR, 10},
{1020*OVERSAMPLENR, 0} {1020 * OVERSAMPLENR, 0}
}; };
#endif #endif
...@@ -921,126 +921,126 @@ const short temptable_55[][2] PROGMEM = { ...@@ -921,126 +921,126 @@ const short temptable_55[][2] PROGMEM = {
// min adc: 1 at 0.0048828125 V // min adc: 1 at 0.0048828125 V
// max adc: 1023 at 4.9951171875 V // max adc: 1023 at 4.9951171875 V
const short temptable_60[][2] PROGMEM = { const short temptable_60[][2] PROGMEM = {
{51*OVERSAMPLENR, 272}, {51 * OVERSAMPLENR, 272},
{61*OVERSAMPLENR, 258}, {61 * OVERSAMPLENR, 258},
{71*OVERSAMPLENR, 247}, {71 * OVERSAMPLENR, 247},
{81*OVERSAMPLENR, 237}, {81 * OVERSAMPLENR, 237},
{91*OVERSAMPLENR, 229}, {91 * OVERSAMPLENR, 229},
{101*OVERSAMPLENR, 221}, {101 * OVERSAMPLENR, 221},
{131*OVERSAMPLENR, 204}, {131 * OVERSAMPLENR, 204},
{161*OVERSAMPLENR, 190}, {161 * OVERSAMPLENR, 190},
{191*OVERSAMPLENR, 179}, {191 * OVERSAMPLENR, 179},
{231*OVERSAMPLENR, 167}, {231 * OVERSAMPLENR, 167},
{271*OVERSAMPLENR, 157}, {271 * OVERSAMPLENR, 157},
{311*OVERSAMPLENR, 148}, {311 * OVERSAMPLENR, 148},
{351*OVERSAMPLENR, 140}, {351 * OVERSAMPLENR, 140},
{381*OVERSAMPLENR, 135}, {381 * OVERSAMPLENR, 135},
{411*OVERSAMPLENR, 130}, {411 * OVERSAMPLENR, 130},
{441*OVERSAMPLENR, 125}, {441 * OVERSAMPLENR, 125},
{451*OVERSAMPLENR, 123}, {451 * OVERSAMPLENR, 123},
{461*OVERSAMPLENR, 122}, {461 * OVERSAMPLENR, 122},
{471*OVERSAMPLENR, 120}, {471 * OVERSAMPLENR, 120},
{481*OVERSAMPLENR, 119}, {481 * OVERSAMPLENR, 119},
{491*OVERSAMPLENR, 117}, {491 * OVERSAMPLENR, 117},
{501*OVERSAMPLENR, 116}, {501 * OVERSAMPLENR, 116},
{511*OVERSAMPLENR, 114}, {511 * OVERSAMPLENR, 114},
{521*OVERSAMPLENR, 113}, {521 * OVERSAMPLENR, 113},
{531*OVERSAMPLENR, 111}, {531 * OVERSAMPLENR, 111},
{541*OVERSAMPLENR, 110}, {541 * OVERSAMPLENR, 110},
{551*OVERSAMPLENR, 108}, {551 * OVERSAMPLENR, 108},
{561*OVERSAMPLENR, 107}, {561 * OVERSAMPLENR, 107},
{571*OVERSAMPLENR, 105}, {571 * OVERSAMPLENR, 105},
{581*OVERSAMPLENR, 104}, {581 * OVERSAMPLENR, 104},
{591*OVERSAMPLENR, 102}, {591 * OVERSAMPLENR, 102},
{601*OVERSAMPLENR, 101}, {601 * OVERSAMPLENR, 101},
{611*OVERSAMPLENR, 100}, {611 * OVERSAMPLENR, 100},
{621*OVERSAMPLENR, 98}, {621 * OVERSAMPLENR, 98},
{631*OVERSAMPLENR, 97}, {631 * OVERSAMPLENR, 97},
{641*OVERSAMPLENR, 95}, {641 * OVERSAMPLENR, 95},
{651*OVERSAMPLENR, 94}, {651 * OVERSAMPLENR, 94},
{661*OVERSAMPLENR, 92}, {661 * OVERSAMPLENR, 92},
{671*OVERSAMPLENR, 91}, {671 * OVERSAMPLENR, 91},
{681*OVERSAMPLENR, 90}, {681 * OVERSAMPLENR, 90},
{691*OVERSAMPLENR, 88}, {691 * OVERSAMPLENR, 88},
{701*OVERSAMPLENR, 87}, {701 * OVERSAMPLENR, 87},
{711*OVERSAMPLENR, 85}, {711 * OVERSAMPLENR, 85},
{721*OVERSAMPLENR, 84}, {721 * OVERSAMPLENR, 84},
{731*OVERSAMPLENR, 82}, {731 * OVERSAMPLENR, 82},
{741*OVERSAMPLENR, 81}, {741 * OVERSAMPLENR, 81},
{751*OVERSAMPLENR, 79}, {751 * OVERSAMPLENR, 79},
{761*OVERSAMPLENR, 77}, {761 * OVERSAMPLENR, 77},
{771*OVERSAMPLENR, 76}, {771 * OVERSAMPLENR, 76},
{781*OVERSAMPLENR, 74}, {781 * OVERSAMPLENR, 74},
{791*OVERSAMPLENR, 72}, {791 * OVERSAMPLENR, 72},
{801*OVERSAMPLENR, 71}, {801 * OVERSAMPLENR, 71},
{811*OVERSAMPLENR, 69}, {811 * OVERSAMPLENR, 69},
{821*OVERSAMPLENR, 67}, {821 * OVERSAMPLENR, 67},
{831*OVERSAMPLENR, 65}, {831 * OVERSAMPLENR, 65},
{841*OVERSAMPLENR, 63}, {841 * OVERSAMPLENR, 63},
{851*OVERSAMPLENR, 62}, {851 * OVERSAMPLENR, 62},
{861*OVERSAMPLENR, 60}, {861 * OVERSAMPLENR, 60},
{871*OVERSAMPLENR, 57}, {871 * OVERSAMPLENR, 57},
{881*OVERSAMPLENR, 55}, {881 * OVERSAMPLENR, 55},
{891*OVERSAMPLENR, 53}, {891 * OVERSAMPLENR, 53},
{901*OVERSAMPLENR, 51}, {901 * OVERSAMPLENR, 51},
{911*OVERSAMPLENR, 48}, {911 * OVERSAMPLENR, 48},
{921*OVERSAMPLENR, 45}, {921 * OVERSAMPLENR, 45},
{931*OVERSAMPLENR, 42}, {931 * OVERSAMPLENR, 42},
{941*OVERSAMPLENR, 39}, {941 * OVERSAMPLENR, 39},
{951*OVERSAMPLENR, 36}, {951 * OVERSAMPLENR, 36},
{961*OVERSAMPLENR, 32}, {961 * OVERSAMPLENR, 32},
{981*OVERSAMPLENR, 23}, {981 * OVERSAMPLENR, 23},
{991*OVERSAMPLENR, 17}, {991 * OVERSAMPLENR, 17},
{1001*OVERSAMPLENR, 9}, {1001 * OVERSAMPLENR, 9},
{1008*OVERSAMPLENR, 0}, {1008 * OVERSAMPLENR, 0}
}; };
#endif #endif
#if (THERMISTORBED == 12) #if (THERMISTORBED == 12)
//100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) //100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed)
const short temptable_12[][2] PROGMEM = { const short temptable_12[][2] PROGMEM = {
{35*OVERSAMPLENR, 180}, //top rating 180C {35 * OVERSAMPLENR, 180},//top rating 180C
{211*OVERSAMPLENR, 140}, {211 * OVERSAMPLENR, 140},
{233*OVERSAMPLENR, 135}, {233 * OVERSAMPLENR, 135},
{261*OVERSAMPLENR, 130}, {261 * OVERSAMPLENR, 130},
{290*OVERSAMPLENR, 125}, {290 * OVERSAMPLENR, 125},
{328*OVERSAMPLENR, 120}, {328 * OVERSAMPLENR, 120},
{362*OVERSAMPLENR, 115}, {362 * OVERSAMPLENR, 115},
{406*OVERSAMPLENR, 110}, {406 * OVERSAMPLENR, 110},
{446*OVERSAMPLENR, 105}, {446 * OVERSAMPLENR, 105},
{496*OVERSAMPLENR, 100}, {496 * OVERSAMPLENR, 100},
{539*OVERSAMPLENR, 95}, {539 * OVERSAMPLENR, 95},
{585*OVERSAMPLENR, 90}, {585 * OVERSAMPLENR, 90},
{629*OVERSAMPLENR, 85}, {629 * OVERSAMPLENR, 85},
{675*OVERSAMPLENR, 80}, {675 * OVERSAMPLENR, 80},
{718*OVERSAMPLENR, 75}, {718 * OVERSAMPLENR, 75},
{758*OVERSAMPLENR, 70}, {758 * OVERSAMPLENR, 70},
{793*OVERSAMPLENR, 65}, {793 * OVERSAMPLENR, 65},
{822*OVERSAMPLENR, 60}, {822 * OVERSAMPLENR, 60},
{841*OVERSAMPLENR, 55}, {841 * OVERSAMPLENR, 55},
{875*OVERSAMPLENR, 50}, {875 * OVERSAMPLENR, 50},
{899*OVERSAMPLENR, 45}, {899 * OVERSAMPLENR, 45},
{926*OVERSAMPLENR, 40}, {926 * OVERSAMPLENR, 40},
{946*OVERSAMPLENR, 35}, {946 * OVERSAMPLENR, 35},
{962*OVERSAMPLENR, 30}, {962 * OVERSAMPLENR, 30},
{977*OVERSAMPLENR, 25}, {977 * OVERSAMPLENR, 25},
{987*OVERSAMPLENR, 20}, {987 * OVERSAMPLENR, 20},
{995*OVERSAMPLENR, 15}, {995 * OVERSAMPLENR, 15},
{1001*OVERSAMPLENR, 10}, {1001 * OVERSAMPLENR, 10},
{1010*OVERSAMPLENR, 0}, {1010 * OVERSAMPLENR, 0},
{1023*OVERSAMPLENR, -40}, {1023 * OVERSAMPLENR, -40}
}; };
#endif #endif
// Pt1000 and Pt100 handling // Pt1000 and Pt100 handling
// //
// Rt=R0*(1+a*T+b*T*T) [for T>0] // Rt=R0*(1+a*T+b*T*T) [for T>0]
// a=3.9083E-3, b=-5.775E-7 // a=3.9083E-3,b=-5.775E-7
#define PtA 3.9083E-3 #define PtA 3.9083E-3
#define PtB -5.775E-7 #define PtB -5.775E-7
#define PtRt(T,R0) ((R0)*(1.0+(PtA)*(T)+(PtB)*(T)*(T))) #define PtRt(T,R0) ((R0)*(1.0+(PtA)*(T)+(PtB)*(T)*(T)))
#define PtAdVal(T,R0,Rup) (short)(1024/(Rup/PtRt(T,R0)+1)) #define PtAdVal(T,R0,Rup) (short)(1024/(Rup/PtRt(T,R0)+1))
#define PtLine(T,R0,Rup) { PtAdVal(T,R0,Rup)*OVERSAMPLENR, T }, #define PtLine(T,R0,Rup) { PtAdVal(T,R0,Rup) * OVERSAMPLENR, T},
#if (THERMISTORHEATER_0 == 110) || (THERMISTORHEATER_1 == 110) || (THERMISTORHEATER_2 == 110) || (THERMISTORHEATER_3 == 110) || (THERMISTORBED == 110) // Pt100 with 1k0 pullup #if (THERMISTORHEATER_0 == 110) || (THERMISTORHEATER_1 == 110) || (THERMISTORHEATER_2 == 110) || (THERMISTORHEATER_3 == 110) || (THERMISTORBED == 110) // Pt100 with 1k0 pullup
const short temptable_110[][2] PROGMEM = { const short temptable_110[][2] PROGMEM = {
...@@ -1102,9 +1102,9 @@ const short temptable_1047[][2] PROGMEM = { ...@@ -1102,9 +1102,9 @@ const short temptable_1047[][2] PROGMEM = {
#define DUMMY_THERMISTOR_999_VALUE 25 #define DUMMY_THERMISTOR_999_VALUE 25
#endif #endif
const short temptable_999[][2] PROGMEM = { const short temptable_999[][2] PROGMEM = {
{1*OVERSAMPLENR, DUMMY_THERMISTOR_999_VALUE}, {1 * OVERSAMPLENR, DUMMY_THERMISTOR_999_VALUE},
{1023*OVERSAMPLENR, DUMMY_THERMISTOR_999_VALUE} {1023 * OVERSAMPLENR, DUMMY_THERMISTOR_999_VALUE}
}; };
#endif #endif
#if (THERMISTORHEATER_0 == 998) || (THERMISTORHEATER_1 == 998) || (THERMISTORHEATER_2 == 998) || (THERMISTORHEATER_3 == 998) || (THERMISTORBED == 998) //User defined table #if (THERMISTORHEATER_0 == 998) || (THERMISTORHEATER_1 == 998) || (THERMISTORHEATER_2 == 998) || (THERMISTORHEATER_3 == 998) || (THERMISTORBED == 998) //User defined table
...@@ -1113,9 +1113,9 @@ const short temptable_1047[][2] PROGMEM = { ...@@ -1113,9 +1113,9 @@ const short temptable_1047[][2] PROGMEM = {
#define DUMMY_THERMISTOR_998_VALUE 25 #define DUMMY_THERMISTOR_998_VALUE 25
#endif #endif
const short temptable_998[][2] PROGMEM = { const short temptable_998[][2] PROGMEM = {
{1*OVERSAMPLENR, DUMMY_THERMISTOR_998_VALUE}, {1 * OVERSAMPLENR, DUMMY_THERMISTOR_998_VALUE},
{1023*OVERSAMPLENR, DUMMY_THERMISTOR_998_VALUE} {1023 * OVERSAMPLENR, DUMMY_THERMISTOR_998_VALUE}
}; };
#endif #endif
...@@ -1134,7 +1134,7 @@ const short temptable_1047[][2] PROGMEM = { ...@@ -1134,7 +1134,7 @@ const short temptable_1047[][2] PROGMEM = {
# endif // HEATER_0_USES_THERMISTOR # endif // HEATER_0_USES_THERMISTOR
#endif #endif
//Set the high and low raw values for the heater, this indicates which raw value is a high or low temperature //Set the high and low raw values for the heater,this indicates which raw value is a high or low temperature
#ifndef HEATER_0_RAW_HI_TEMP #ifndef HEATER_0_RAW_HI_TEMP
# ifdef HEATER_0_USES_THERMISTOR //In case of a thermistor the highest temperature results in the lowest ADC value # ifdef HEATER_0_USES_THERMISTOR //In case of a thermistor the highest temperature results in the lowest ADC value
# define HEATER_0_RAW_HI_TEMP 0 # define HEATER_0_RAW_HI_TEMP 0
...@@ -1157,7 +1157,7 @@ const short temptable_1047[][2] PROGMEM = { ...@@ -1157,7 +1157,7 @@ const short temptable_1047[][2] PROGMEM = {
# endif // HEATER_1_USES_THERMISTOR # endif // HEATER_1_USES_THERMISTOR
#endif #endif
//Set the high and low raw values for the heater, this indicates which raw value is a high or low temperature //Set the high and low raw values for the heater,this indicates which raw value is a high or low temperature
#ifndef HEATER_1_RAW_HI_TEMP #ifndef HEATER_1_RAW_HI_TEMP
# ifdef HEATER_1_USES_THERMISTOR //In case of a thermistor the highest temperature results in the lowest ADC value # ifdef HEATER_1_USES_THERMISTOR //In case of a thermistor the highest temperature results in the lowest ADC value
# define HEATER_1_RAW_HI_TEMP 0 # define HEATER_1_RAW_HI_TEMP 0
...@@ -1180,7 +1180,7 @@ const short temptable_1047[][2] PROGMEM = { ...@@ -1180,7 +1180,7 @@ const short temptable_1047[][2] PROGMEM = {
# endif // HEATER_2_USES_THERMISTOR # endif // HEATER_2_USES_THERMISTOR
#endif #endif
//Set the high and low raw values for the heater, this indicates which raw value is a high or low temperature //Set the high and low raw values for the heater,this indicates which raw value is a high or low temperature
#ifndef HEATER_2_RAW_HI_TEMP #ifndef HEATER_2_RAW_HI_TEMP
# ifdef HEATER_2_USES_THERMISTOR //In case of a thermistor the highest temperature results in the lowest ADC value # ifdef HEATER_2_USES_THERMISTOR //In case of a thermistor the highest temperature results in the lowest ADC value
# define HEATER_2_RAW_HI_TEMP 0 # define HEATER_2_RAW_HI_TEMP 0
...@@ -1203,7 +1203,7 @@ const short temptable_1047[][2] PROGMEM = { ...@@ -1203,7 +1203,7 @@ const short temptable_1047[][2] PROGMEM = {
# endif // HEATER_3_USES_THERMISTOR # endif // HEATER_3_USES_THERMISTOR
#endif #endif
//Set the high and low raw values for the heater, this indicates which raw value is a high or low temperature //Set the high and low raw values for the heater,this indicates which raw value is a high or low temperature
#ifndef HEATER_3_RAW_HI_TEMP #ifndef HEATER_3_RAW_HI_TEMP
# ifdef HEATER_3_USES_THERMISTOR //In case of a thermistor the highest temperature results in the lowest ADC value # ifdef HEATER_3_USES_THERMISTOR //In case of a thermistor the highest temperature results in the lowest ADC value
# define HEATER_3_RAW_HI_TEMP 0 # define HEATER_3_RAW_HI_TEMP 0
...@@ -1223,7 +1223,7 @@ const short temptable_1047[][2] PROGMEM = { ...@@ -1223,7 +1223,7 @@ const short temptable_1047[][2] PROGMEM = {
# endif // BED_USES_THERMISTOR # endif // BED_USES_THERMISTOR
#endif #endif
//Set the high and low raw values for the heater, this indicates which raw value is a high or low temperature //Set the high and low raw values for the heater,this indicates which raw value is a high or low temperature
#ifndef HEATER_BED_RAW_HI_TEMP #ifndef HEATER_BED_RAW_HI_TEMP
# ifdef BED_USES_THERMISTOR //In case of a thermistor the highest temperature results in the lowest ADC value # ifdef BED_USES_THERMISTOR //In case of a thermistor the highest temperature results in the lowest ADC value
# define HEATER_BED_RAW_HI_TEMP 0 # define HEATER_BED_RAW_HI_TEMP 0
......
...@@ -301,7 +301,7 @@ static void lcd_goto_menu(menuFunc_t menu, const bool feedback = false, const ui ...@@ -301,7 +301,7 @@ static void lcd_goto_menu(menuFunc_t menu, const bool feedback = false, const ui
*/ */
static void lcd_status_screen() { static void lcd_status_screen() {
encoderRateMultiplierEnabled = false; encoderRateMultiplierEnabled = false;
#if ENABLED(LCD_PROGRESS_BAR) #if ENABLED(LCD_PROGRESS_BAR)
millis_t ms = millis(); millis_t ms = millis();
...@@ -861,6 +861,9 @@ static void lcd_move_y() { _lcd_move(PSTR(MSG_MOVE_Y), Y_AXIS, Y_MIN_POS, Y_MAX_ ...@@ -861,6 +861,9 @@ static void lcd_move_y() { _lcd_move(PSTR(MSG_MOVE_Y), Y_AXIS, Y_MIN_POS, Y_MAX_
static void lcd_move_z() { _lcd_move(PSTR(MSG_MOVE_Z), Z_AXIS, Z_MIN_POS, Z_MAX_POS); } static void lcd_move_z() { _lcd_move(PSTR(MSG_MOVE_Z), Z_AXIS, Z_MIN_POS, Z_MAX_POS); }
static void lcd_move_e() { static void lcd_move_e() {
if (encoderPosition != 0) { if (encoderPosition != 0) {
#if ENABLED(IDLE_OOZING_PREVENT)
IDLE_OOZING_retract(false);
#endif
current_position[E_AXIS] += float((int)encoderPosition) * move_menu_scale; current_position[E_AXIS] += float((int)encoderPosition) * move_menu_scale;
encoderPosition = 0; encoderPosition = 0;
line_to_current(E_AXIS); line_to_current(E_AXIS);
...@@ -1021,7 +1024,7 @@ static void lcd_control_temperature_menu() { ...@@ -1021,7 +1024,7 @@ static void lcd_control_temperature_menu() {
// //
MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_FAN_SPEED, &fanSpeed, 0, 255); MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_FAN_SPEED, &fanSpeed, 0, 255);
#if ENABLED(IDLE_OOZING_PREVENT) #if ENABLED(IDLE_OOZING_PREVENT)
MENU_ITEM_EDIT(bool, MSG_IDLEOOZING, &idleoozing_enabled); MENU_ITEM_EDIT(bool, MSG_IDLEOOZING, &IDLE_OOZING_enabled);
#endif #endif
// //
...@@ -1319,7 +1322,7 @@ static void lcd_sd_updir() { ...@@ -1319,7 +1322,7 @@ static void lcd_sd_updir() {
* *
*/ */
void lcd_sdcard_menu() { void lcd_sdcard_menu() {
if (lcdDrawUpdate == 0 && LCD_CLICKED == 0) return; // nothing to do (so don't thrash the SD card) if (lcdDrawUpdate == 0 && LCD_CLICKED == 0) return; // nothing to do (so don't thrash the SD card)
uint16_t fileCnt = card.getnrfilenames(); uint16_t fileCnt = card.getnrfilenames();
START_MENU(lcd_main_menu); START_MENU(lcd_main_menu);
MENU_ITEM(back, MSG_MAIN, lcd_main_menu); MENU_ITEM(back, MSG_MAIN, lcd_main_menu);
...@@ -1969,18 +1972,20 @@ char *ftostr32(const float &x) { ...@@ -1969,18 +1972,20 @@ char *ftostr32(const float &x) {
// Convert float to string with 1.234 format // Convert float to string with 1.234 format
char *ftostr43(const float &x) { char *ftostr43(const float &x) {
long xx = x * 1000; long xx = x * 1000;
if (xx >= 0) if (xx >= 0) {
conv[0] = (xx / 1000) % 10 + '0'; conv[0] = (xx / 1000) % 10 + '0';
else }
conv[0] = '-'; else {
xx = abs(xx); conv[0] = '-';
conv[1] = '.'; }
conv[2] = (xx / 100) % 10 + '0'; xx = abs(xx);
conv[3] = (xx / 10) % 10 + '0'; conv[1] = '.';
conv[4] = (xx) % 10 + '0'; conv[2] = (xx / 100) % 10 + '0';
conv[5] = 0; conv[3] = (xx / 10) % 10 + '0';
return conv; conv[4] = (xx) % 10 + '0';
conv[5] = 0;
return conv;
} }
// Convert float to string with 1.23 format // Convert float to string with 1.23 format
...@@ -2588,18 +2593,20 @@ char *ftostr32(const float &x) { ...@@ -2588,18 +2593,20 @@ char *ftostr32(const float &x) {
// Convert float to string with 1.234 format // Convert float to string with 1.234 format
char *ftostr43(const float &x) { char *ftostr43(const float &x) {
long xx = x * 1000; long xx = x * 1000;
if (xx >= 0) if (xx >= 0) {
conv[0] = (xx / 1000) % 10 + '0'; conv[0] = (xx / 1000) % 10 + '0';
else }
conv[0] = '-'; else {
xx = abs(xx); conv[0] = '-';
conv[1] = '.'; }
conv[2] = (xx / 100) % 10 + '0'; xx = abs(xx);
conv[3] = (xx / 10) % 10 + '0'; conv[1] = '.';
conv[4] = (xx) % 10 + '0'; conv[2] = (xx / 100) % 10 + '0';
conv[5] = 0; conv[3] = (xx / 10) % 10 + '0';
return conv; conv[4] = (xx) % 10 + '0';
conv[5] = 0;
return conv;
} }
// Convert float to string with 1.23 format // Convert float to string with 1.23 format
......
...@@ -75,28 +75,28 @@ ...@@ -75,28 +75,28 @@
#define EN_A BIT(BLEN_A) #define EN_A BIT(BLEN_A)
#define LCD_CLICKED (buttons&EN_C) #define LCD_CLICKED (buttons&EN_C)
#if defined(BTN_BACK) && BTN_BACK > 0 #if defined(BTN_BACK) && BTN_BACK > 0
#define EN_D BIT(BLEN_D) #define EN_D BIT(BLEN_D)
#define LCD_BACK_CLICKED (buttons&EN_D) #define LCD_BACK_CLICKED (buttons&EN_D)
#endif #endif
#if ENABLED(REPRAPWORLD_KEYPAD) #if ENABLED(REPRAPWORLD_KEYPAD)
#define EN_REPRAPWORLD_KEYPAD_F3 (BIT(BLEN_REPRAPWORLD_KEYPAD_F3)) #define EN_REPRAPWORLD_KEYPAD_F3 (BIT(BLEN_REPRAPWORLD_KEYPAD_F3))
#define EN_REPRAPWORLD_KEYPAD_F2 (BIT(BLEN_REPRAPWORLD_KEYPAD_F2)) #define EN_REPRAPWORLD_KEYPAD_F2 (BIT(BLEN_REPRAPWORLD_KEYPAD_F2))
#define EN_REPRAPWORLD_KEYPAD_F1 (BIT(BLEN_REPRAPWORLD_KEYPAD_F1)) #define EN_REPRAPWORLD_KEYPAD_F1 (BIT(BLEN_REPRAPWORLD_KEYPAD_F1))
#define EN_REPRAPWORLD_KEYPAD_UP (BIT(BLEN_REPRAPWORLD_KEYPAD_UP)) #define EN_REPRAPWORLD_KEYPAD_UP (BIT(BLEN_REPRAPWORLD_KEYPAD_UP))
#define EN_REPRAPWORLD_KEYPAD_RIGHT (BIT(BLEN_REPRAPWORLD_KEYPAD_RIGHT)) #define EN_REPRAPWORLD_KEYPAD_RIGHT (BIT(BLEN_REPRAPWORLD_KEYPAD_RIGHT))
#define EN_REPRAPWORLD_KEYPAD_MIDDLE (BIT(BLEN_REPRAPWORLD_KEYPAD_MIDDLE)) #define EN_REPRAPWORLD_KEYPAD_MIDDLE (BIT(BLEN_REPRAPWORLD_KEYPAD_MIDDLE))
#define EN_REPRAPWORLD_KEYPAD_DOWN (BIT(BLEN_REPRAPWORLD_KEYPAD_DOWN)) #define EN_REPRAPWORLD_KEYPAD_DOWN (BIT(BLEN_REPRAPWORLD_KEYPAD_DOWN))
#define EN_REPRAPWORLD_KEYPAD_LEFT (BIT(BLEN_REPRAPWORLD_KEYPAD_LEFT)) #define EN_REPRAPWORLD_KEYPAD_LEFT (BIT(BLEN_REPRAPWORLD_KEYPAD_LEFT))
#define LCD_CLICKED ((buttons&EN_C) || (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_F1)) #define LCD_CLICKED ((buttons&EN_C) || (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_F1))
#define REPRAPWORLD_KEYPAD_MOVE_Z_UP (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_F2) #define REPRAPWORLD_KEYPAD_MOVE_Z_UP (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_F2)
#define REPRAPWORLD_KEYPAD_MOVE_Z_DOWN (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_F3) #define REPRAPWORLD_KEYPAD_MOVE_Z_DOWN (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_F3)
#define REPRAPWORLD_KEYPAD_MOVE_X_LEFT (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_LEFT) #define REPRAPWORLD_KEYPAD_MOVE_X_LEFT (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_LEFT)
#define REPRAPWORLD_KEYPAD_MOVE_X_RIGHT (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_RIGHT) #define REPRAPWORLD_KEYPAD_MOVE_X_RIGHT (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_RIGHT)
#define REPRAPWORLD_KEYPAD_MOVE_Y_DOWN (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_DOWN) #define REPRAPWORLD_KEYPAD_MOVE_Y_DOWN (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_DOWN)
#define REPRAPWORLD_KEYPAD_MOVE_Y_UP (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_UP) #define REPRAPWORLD_KEYPAD_MOVE_Y_UP (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_UP)
#define REPRAPWORLD_KEYPAD_MOVE_HOME (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_MIDDLE) #define REPRAPWORLD_KEYPAD_MOVE_HOME (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_MIDDLE)
#endif //REPRAPWORLD_KEYPAD #endif //REPRAPWORLD_KEYPAD
#else #else
//atomic, do not change //atomic, do not change
......
...@@ -403,7 +403,7 @@ static void lcd_implementation_init( ...@@ -403,7 +403,7 @@ static void lcd_implementation_init(
// required for RAMPS-FD, but does no harm for other targets // required for RAMPS-FD, but does no harm for other targets
SET_OUTPUT(LCD_PINS_RS); SET_OUTPUT(LCD_PINS_RS);
SET_OUTPUT(LCD_PINS_ENABLE); SET_OUTPUT(LCD_PINS_ENABLE);
#endif #endif
lcd.begin(LCD_WIDTH, LCD_HEIGHT); lcd.begin(LCD_WIDTH, LCD_HEIGHT);
#endif #endif
......
...@@ -27,36 +27,36 @@ vector_3::vector_3() : x(0), y(0), z(0) { } ...@@ -27,36 +27,36 @@ vector_3::vector_3() : x(0), y(0), z(0) { }
vector_3::vector_3(float x_, float y_, float z_) : x(x_), y(y_), z(z_) { } vector_3::vector_3(float x_, float y_, float z_) : x(x_), y(y_), z(z_) { }
vector_3 vector_3::cross(vector_3 left, vector_3 right) { vector_3 vector_3::cross(vector_3 left, vector_3 right) {
return vector_3(left.y * right.z - left.z * right.y, return vector_3(left.y * right.z - left.z * right.y,
left.z * right.x - left.x * right.z, left.z * right.x - left.x * right.z,
left.x * right.y - left.y * right.x); left.x * right.y - left.y * right.x);
} }
vector_3 vector_3::operator+(vector_3 v) { return vector_3((x + v.x), (y + v.y), (z + v.z)); } vector_3 vector_3::operator+(vector_3 v) { return vector_3((x + v.x), (y + v.y), (z + v.z)); }
vector_3 vector_3::operator-(vector_3 v) { return vector_3((x - v.x), (y - v.y), (z - v.z)); } vector_3 vector_3::operator-(vector_3 v) { return vector_3((x - v.x), (y - v.y), (z - v.z)); }
vector_3 vector_3::get_normal() { vector_3 vector_3::get_normal() {
vector_3 normalized = vector_3(x, y, z); vector_3 normalized = vector_3(x, y, z);
normalized.normalize(); normalized.normalize();
return normalized; return normalized;
} }
float vector_3::get_length() { return sqrt((x * x) + (y * y) + (z * z)); } float vector_3::get_length() { return sqrt((x * x) + (y * y) + (z * z)); }
void vector_3::normalize() { void vector_3::normalize() {
float length = get_length(); float length = get_length();
x /= length; x /= length;
y /= length; y /= length;
z /= length; z /= length;
} }
void vector_3::apply_rotation(matrix_3x3 matrix) { void vector_3::apply_rotation(matrix_3x3 matrix) {
float resultX = x * matrix.matrix[3*0+0] + y * matrix.matrix[3*1+0] + z * matrix.matrix[3*2+0]; float resultX = x * matrix.matrix[3*0+0] + y * matrix.matrix[3*1+0] + z * matrix.matrix[3*2+0];
float resultY = x * matrix.matrix[3*0+1] + y * matrix.matrix[3*1+1] + z * matrix.matrix[3*2+1]; float resultY = x * matrix.matrix[3*0+1] + y * matrix.matrix[3*1+1] + z * matrix.matrix[3*2+1];
float resultZ = x * matrix.matrix[3*0+2] + y * matrix.matrix[3*1+2] + z * matrix.matrix[3*2+2]; float resultZ = x * matrix.matrix[3*0+2] + y * matrix.matrix[3*1+2] + z * matrix.matrix[3*2+2];
x = resultX; x = resultX;
y = resultY; y = resultY;
z = resultZ; z = resultZ;
} }
void vector_3::debug(const char title[]) { void vector_3::debug(const char title[]) {
...@@ -67,29 +67,29 @@ void vector_3::debug(const char title[]) { ...@@ -67,29 +67,29 @@ void vector_3::debug(const char title[]) {
} }
void apply_rotation_xyz(matrix_3x3 matrix, float &x, float& y, float& z) { void apply_rotation_xyz(matrix_3x3 matrix, float &x, float& y, float& z) {
vector_3 vector = vector_3(x, y, z); vector_3 vector = vector_3(x, y, z);
vector.apply_rotation(matrix); vector.apply_rotation(matrix);
x = vector.x; x = vector.x;
y = vector.y; y = vector.y;
z = vector.z; z = vector.z;
} }
matrix_3x3 matrix_3x3::create_from_rows(vector_3 row_0, vector_3 row_1, vector_3 row_2) { matrix_3x3 matrix_3x3::create_from_rows(vector_3 row_0, vector_3 row_1, vector_3 row_2) {
//row_0.debug("row_0"); //row_0.debug("row_0");
//row_1.debug("row_1"); //row_1.debug("row_1");
//row_2.debug("row_2"); //row_2.debug("row_2");
matrix_3x3 new_matrix; matrix_3x3 new_matrix;
new_matrix.matrix[0] = row_0.x; new_matrix.matrix[1] = row_0.y; new_matrix.matrix[2] = row_0.z; new_matrix.matrix[0] = row_0.x; new_matrix.matrix[1] = row_0.y; new_matrix.matrix[2] = row_0.z;
new_matrix.matrix[3] = row_1.x; new_matrix.matrix[4] = row_1.y; new_matrix.matrix[5] = row_1.z; new_matrix.matrix[3] = row_1.x; new_matrix.matrix[4] = row_1.y; new_matrix.matrix[5] = row_1.z;
new_matrix.matrix[6] = row_2.x; new_matrix.matrix[7] = row_2.y; new_matrix.matrix[8] = row_2.z; new_matrix.matrix[6] = row_2.x; new_matrix.matrix[7] = row_2.y; new_matrix.matrix[8] = row_2.z;
//new_matrix.debug("new_matrix"); //new_matrix.debug("new_matrix");
return new_matrix; return new_matrix;
} }
void matrix_3x3::set_to_identity() { void matrix_3x3::set_to_identity() {
matrix[0] = 1; matrix[1] = 0; matrix[2] = 0; matrix[0] = 1; matrix[1] = 0; matrix[2] = 0;
matrix[3] = 0; matrix[4] = 1; matrix[5] = 0; matrix[3] = 0; matrix[4] = 1; matrix[5] = 0;
matrix[6] = 0; matrix[7] = 0; matrix[8] = 1; matrix[6] = 0; matrix[7] = 0; matrix[8] = 1;
} }
matrix_3x3 matrix_3x3::create_look_at(vector_3 target) { matrix_3x3 matrix_3x3::create_look_at(vector_3 target) {
......
...@@ -24,35 +24,35 @@ class matrix_3x3; ...@@ -24,35 +24,35 @@ class matrix_3x3;
struct vector_3 struct vector_3
{ {
float x, y, z; float x, y, z;
vector_3(); vector_3();
vector_3(float x, float y, float z); vector_3(float x, float y, float z);
static vector_3 cross(vector_3 a, vector_3 b); static vector_3 cross(vector_3 a, vector_3 b);
vector_3 operator+(vector_3 v); vector_3 operator+(vector_3 v);
vector_3 operator-(vector_3 v); vector_3 operator-(vector_3 v);
void normalize(); void normalize();
float get_length(); float get_length();
vector_3 get_normal(); vector_3 get_normal();
void debug(const char title[]); void debug(const char title[]);
void apply_rotation(matrix_3x3 matrix); void apply_rotation(matrix_3x3 matrix);
}; };
struct matrix_3x3 struct matrix_3x3
{ {
float matrix[9]; float matrix[9];
static matrix_3x3 create_from_rows(vector_3 row_0, vector_3 row_1, vector_3 row_2); static matrix_3x3 create_from_rows(vector_3 row_0, vector_3 row_1, vector_3 row_2);
static matrix_3x3 create_look_at(vector_3 target); static matrix_3x3 create_look_at(vector_3 target);
static matrix_3x3 transpose(matrix_3x3 original); static matrix_3x3 transpose(matrix_3x3 original);
void set_to_identity(); void set_to_identity();
void debug(const char title[]); void debug(const char title[]);
}; };
......
<img align="right" src="Documentation/Logo/MarlinKimbra%20Logo%20GitHub.png" /> <img align="right" src="Documentation/Logo/MarlinKimbra%20Logo%20GitHub.png" />
# MarlinKimbra 3D Printer Firmware # MarlinKimbra 3D Printer Firmware
## Version 4.1.3 dev ## Version 4.1.4 dev
* [Configuration & Compilation](/Documentation/Compilation.md) * [Configuration & Compilation](/Documentation/Compilation.md)
* Supported * Supported
...@@ -34,16 +34,16 @@ Adding commands to facilitate purging of hotend. ...@@ -34,16 +34,16 @@ Adding commands to facilitate purging of hotend.
Step per unit varied for each extruder as well as the feedrate. Step per unit varied for each extruder as well as the feedrate.
The addition of a different feedrate for retraction. The addition of a different feedrate for retraction.
Adding Debug Dryrun used by repetier. Adding Debug Dryrun used by repetier.
Add total Power on time write in EEPROM Added total Power on time writec in SD CARD.
Added total Power consumption writed in SD CARD.
Added anti extruder idle oozing system.
## Credits ## Credits
The current MarlinKimbra dev team consists of: The current MarlinKimbra dev team consists of:
- MagoKimbra - Alberto Cotronei (https://github.com/MagoKimbra) - MagoKimbra - Alberto Cotronei (https://github.com/MagoKimbra)
More features have been added by: More features have been added by:
- simone97 (https://github.com/simone97) - simonepri - Simone Primarosa (https://github.com/simonepri)
-
## License ## License
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment