Merge branch 'bugfix-2.0.x' into CR-6Devel
This commit is contained in:
@@ -31,7 +31,7 @@
|
||||
/**
|
||||
* Detect an old pins file by checking for old ADC pins values.
|
||||
*/
|
||||
#define _OLD_TEMP_PIN(P) PIN_EXISTS(P) && _CAT(P,_PIN) <= 7 && _CAT(P,_PIN) != 2 && _CAT(P,_PIN) != 3
|
||||
#define _OLD_TEMP_PIN(P) PIN_EXISTS(P) && _CAT(P,_PIN) <= 7 && !WITHIN(_CAT(P,_PIN), TERN(LPC1768_IS_SKRV1_3, 0, 2), 3) // Include P0_00 and P0_01 for SKR V1.3 board
|
||||
#if _OLD_TEMP_PIN(TEMP_BED)
|
||||
#error "TEMP_BED_PIN must be defined using the Pn_nn or Pn_nn_An format. (See the included pins files)."
|
||||
#elif _OLD_TEMP_PIN(TEMP_0)
|
||||
|
||||
@@ -106,12 +106,14 @@
|
||||
}
|
||||
|
||||
#if ENABLED(MARLIN_DEV_MODE)
|
||||
void dump_delay_accuracy_check()
|
||||
{
|
||||
auto report_call_time = [](PGM_P const name, const uint32_t cycles, const uint32_t total, const bool do_flush=true) {
|
||||
void dump_delay_accuracy_check() {
|
||||
auto report_call_time = [](PGM_P const name, PGM_P const unit, const uint32_t cycles, const uint32_t total, const bool do_flush=true) {
|
||||
SERIAL_ECHOPGM("Calling ");
|
||||
serialprintPGM(name);
|
||||
SERIAL_ECHOLNPAIR(" for ", cycles, "cycles took: ", total, "cycles");
|
||||
SERIAL_ECHOLNPAIR(" for ", cycles);
|
||||
serialprintPGM(unit);
|
||||
SERIAL_ECHOLNPAIR(" took: ", total);
|
||||
serialprintPGM(unit);
|
||||
if (do_flush) SERIAL_FLUSH();
|
||||
};
|
||||
|
||||
@@ -123,41 +125,41 @@
|
||||
constexpr uint32_t testValues[] = { 1, 5, 10, 20, 50, 100, 150, 200, 350, 500, 750, 1000 };
|
||||
for (auto i : testValues) {
|
||||
s = micros(); DELAY_US(i); e = micros();
|
||||
report_call_time(PSTR("delay"), i, e - s);
|
||||
report_call_time(PSTR("delay"), PSTR("us"), i, e - s);
|
||||
}
|
||||
|
||||
if (HW_REG(_DWT_CTRL)) {
|
||||
for (auto i : testValues) {
|
||||
s = HW_REG(_DWT_CYCCNT); DELAY_CYCLES(i); e = HW_REG(_DWT_CYCCNT);
|
||||
report_call_time(PSTR("delay"), i, e - s);
|
||||
report_call_time(PSTR("runtime delay"), PSTR("cycles"), i, e - s);
|
||||
}
|
||||
|
||||
// Measure the delay to call a real function compared to a function pointer
|
||||
s = HW_REG(_DWT_CYCCNT); delay_dwt(1); e = HW_REG(_DWT_CYCCNT);
|
||||
report_call_time(PSTR("delay_dwt"), 1, e - s);
|
||||
report_call_time(PSTR("delay_dwt"), PSTR("cycles"), 1, e - s);
|
||||
|
||||
static PGMSTR(dcd, "DELAY_CYCLES directly ");
|
||||
|
||||
s = HW_REG(_DWT_CYCCNT); DELAY_CYCLES( 1); e = HW_REG(_DWT_CYCCNT);
|
||||
report_call_time(dcd, 1, e - s, false);
|
||||
report_call_time(dcd, PSTR("cycles"), 1, e - s, false);
|
||||
|
||||
s = HW_REG(_DWT_CYCCNT); DELAY_CYCLES( 5); e = HW_REG(_DWT_CYCCNT);
|
||||
report_call_time(dcd, 5, e - s, false);
|
||||
report_call_time(dcd, PSTR("cycles"), 5, e - s, false);
|
||||
|
||||
s = HW_REG(_DWT_CYCCNT); DELAY_CYCLES(10); e = HW_REG(_DWT_CYCCNT);
|
||||
report_call_time(dcd, 10, e - s, false);
|
||||
report_call_time(dcd, PSTR("cycles"), 10, e - s, false);
|
||||
|
||||
s = HW_REG(_DWT_CYCCNT); DELAY_CYCLES(20); e = HW_REG(_DWT_CYCCNT);
|
||||
report_call_time(dcd, 20, e - s, false);
|
||||
report_call_time(dcd, PSTR("cycles"), 20, e - s, false);
|
||||
|
||||
s = HW_REG(_DWT_CYCCNT); DELAY_CYCLES(50); e = HW_REG(_DWT_CYCCNT);
|
||||
report_call_time(dcd, 50, e - s, false);
|
||||
report_call_time(dcd, PSTR("cycles"), 50, e - s, false);
|
||||
|
||||
s = HW_REG(_DWT_CYCCNT); DELAY_CYCLES(100); e = HW_REG(_DWT_CYCCNT);
|
||||
report_call_time(dcd, 100, e - s, false);
|
||||
report_call_time(dcd, PSTR("cycles"), 100, e - s, false);
|
||||
|
||||
s = HW_REG(_DWT_CYCCNT); DELAY_CYCLES(200); e = HW_REG(_DWT_CYCCNT);
|
||||
report_call_time(dcd, 200, e - s, false);
|
||||
report_call_time(dcd, PSTR("cycles"), 200, e - s, false);
|
||||
}
|
||||
}
|
||||
#endif // MARLIN_DEV_MODE
|
||||
|
||||
@@ -937,11 +937,11 @@ void setup() {
|
||||
|
||||
SETUP_RUN(HAL_init());
|
||||
|
||||
// Init and disable SPI thermocouples
|
||||
#if TEMP_SENSOR_0_IS_MAX6675
|
||||
// Init and disable SPI thermocouples; this is still needed
|
||||
#if TEMP_SENSOR_0_IS_MAX_TC
|
||||
OUT_WRITE(MAX6675_SS_PIN, HIGH); // Disable
|
||||
#endif
|
||||
#if TEMP_SENSOR_1_IS_MAX6675
|
||||
#if TEMP_SENSOR_1_IS_MAX_TC
|
||||
OUT_WRITE(MAX6675_SS2_PIN, HIGH); // Disable
|
||||
#endif
|
||||
|
||||
|
||||
@@ -130,20 +130,20 @@
|
||||
|
||||
#define NOLESS(v, n) \
|
||||
do{ \
|
||||
__typeof__(n) _n = (n); \
|
||||
__typeof__(v) _n = (n); \
|
||||
if (_n > v) v = _n; \
|
||||
}while(0)
|
||||
|
||||
#define NOMORE(v, n) \
|
||||
do{ \
|
||||
__typeof__(n) _n = (n); \
|
||||
__typeof__(v) _n = (n); \
|
||||
if (_n < v) v = _n; \
|
||||
}while(0)
|
||||
|
||||
#define LIMIT(v, n1, n2) \
|
||||
do{ \
|
||||
__typeof__(n1) _n1 = (n1); \
|
||||
__typeof__(n2) _n2 = (n2); \
|
||||
__typeof__(v) _n1 = (n1); \
|
||||
__typeof__(v) _n2 = (n2); \
|
||||
if (_n1 > v) v = _n1; \
|
||||
else if (_n2 < v) v = _n2; \
|
||||
}while(0)
|
||||
|
||||
Executable → Regular
@@ -610,7 +610,7 @@ void GCodeQueue::get_serial_commands() {
|
||||
if (!is_eol && sd_count) ++sd_count; // End of file with no newline
|
||||
if (!process_line_done(sd_input_state, command_buffer[index_w], sd_count)) {
|
||||
|
||||
// M808 S saves the sdpos of the next line. M808 loops to a new sdpos.
|
||||
// M808 L saves the sdpos of the next line. M808 loops to a new sdpos.
|
||||
TERN_(GCODE_REPEAT_MARKERS, repeat.early_parse_M808(command_buffer[index_w]));
|
||||
|
||||
// Put the new command into the buffer (no "ok" sent)
|
||||
|
||||
@@ -818,22 +818,6 @@
|
||||
#define TOTAL_PROBING MULTIPLE_PROBING
|
||||
#endif
|
||||
#endif
|
||||
#if ENABLED(PREHEAT_BEFORE_PROBING)
|
||||
#ifndef PROBING_NOZZLE_TEMP
|
||||
#define PROBING_NOZZLE_TEMP 0
|
||||
#endif
|
||||
#ifndef PROBING_BED_TEMP
|
||||
#define PROBING_BED_TEMP 0
|
||||
#endif
|
||||
#endif
|
||||
#if ENABLED(PREHEAT_BEFORE_LEVELING)
|
||||
#ifndef LEVELING_NOZZLE_TEMP
|
||||
#define LEVELING_NOZZLE_TEMP 0
|
||||
#endif
|
||||
#ifndef LEVELING_BED_TEMP
|
||||
#define LEVELING_BED_TEMP 0
|
||||
#endif
|
||||
#endif
|
||||
#else
|
||||
// Clear probe pin settings when no probe is selected
|
||||
#undef Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
|
||||
|
||||
@@ -490,6 +490,90 @@
|
||||
#define HAS_MAX6675 1
|
||||
#endif
|
||||
|
||||
//
|
||||
// Compatibility layer for MAX (SPI) temp boards
|
||||
//
|
||||
#if PIN_EXISTS(MAX6675_SS)
|
||||
#if TEMP_SENSOR_0_IS_MAX31855
|
||||
#define MAX31855_CS_PIN MAX6675_SS_PIN
|
||||
#elif TEMP_SENSOR_0_IS_MAX31865
|
||||
#define MAX31865_CS_PIN MAX6675_SS_PIN
|
||||
#elif TEMP_SENSOR_0_IS_MAX6675
|
||||
#define MAX6675_CS_PIN MAX6675_SS_PIN
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if PIN_EXISTS(MAX6675_SS2)
|
||||
#if TEMP_SENSOR_1_IS_MAX31855
|
||||
#define MAX31855_CS2_PIN MAX6675_SS2_PIN
|
||||
#elif TEMP_SENSOR_1_IS_MAX31865
|
||||
#define MAX31865_CS2_PIN MAX6675_SS2_PIN
|
||||
#elif TEMP_SENSOR_1_IS_MAX6675
|
||||
#define MAX6675_CS2_PIN MAX6675_SS2_PIN
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if PIN_EXISTS(MAX6675_DO)
|
||||
#if HAS_MAX31855
|
||||
#define MAX31855_MISO_PIN MAX6675_DO_PIN
|
||||
#elif HAS_MAX31865
|
||||
#define MAX31865_MISO_PIN MAX6675_DO_PIN
|
||||
#elif HAS_MAX6675
|
||||
#define MAX6675_MISO_PIN MAX6675_DO_PIN
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if PIN_EXISTS(MAX6675_SCK)
|
||||
#if HAS_MAX31855
|
||||
#define MAX31855_SCK_PIN MAX6675_SCK_PIN
|
||||
#elif HAS_MAX31865
|
||||
#define MAX31865_SCK_PIN MAX6675_SCK_PIN
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Compatibility Layer for use when HAL manipulates PINS for MAX31855 and MAX6675
|
||||
#if PIN_EXISTS(MAX31855_CS) && !PIN_EXISTS(MAX6675_SS)
|
||||
#define MAX6675_SS_PIN MAX31855_CS_PIN
|
||||
#endif
|
||||
#if PIN_EXISTS(MAX31855_CS2) && !PIN_EXISTS(MAX6675_SS2)
|
||||
#define MAX6675_SS2_PIN MAX31855_CS2_PIN
|
||||
#endif
|
||||
#if PIN_EXISTS(MAX6675_CS) && !PIN_EXISTS(MAX6675_SS)
|
||||
#define MAX6675_SS_PIN MAX6675_CS_PIN
|
||||
#endif
|
||||
#if PIN_EXISTS(MAX6675_CS2) && !PIN_EXISTS(MAX6675_SS2)
|
||||
#define MAX6675_SS2_PIN MAX6675_CS2_PIN
|
||||
#endif
|
||||
#if PIN_EXISTS(MAX31855_MISO) && !PIN_EXISTS(MAX6675_DO)
|
||||
#define MAX6675_DO_PIN MAX31855_MISO_PIN
|
||||
#endif
|
||||
#if PIN_EXISTS(MAX6675_MISO) && !PIN_EXISTS(MAX6675_DO)
|
||||
#define MAX6675_DO_PIN MAX6675_MISO_PIN
|
||||
#endif
|
||||
#if PIN_EXISTS(MAX31855_SCK) && !PIN_EXISTS(MAX6675_SCK)
|
||||
#define MAX6675_SCK_PIN MAX31855_SCK_PIN
|
||||
#endif
|
||||
|
||||
//
|
||||
// User-defined thermocouple libraries
|
||||
//
|
||||
// Add LIB_MAX6675 / LIB_MAX31855 / LIB_MAX31865 to the build_flags
|
||||
// to select a USER library for MAX6675, MAX31855, MAX31865
|
||||
//
|
||||
#if BOTH(HAS_MAX6675, LIB_MAX6675)
|
||||
#define LIB_USR_MAX6675 1
|
||||
#endif
|
||||
#if BOTH(HAS_MAX31855, LIB_MAX31855)
|
||||
#define LIB_USR_MAX31855 1
|
||||
#endif
|
||||
#if HAS_MAX31865
|
||||
#if ENABLED(LIB_MAX31865)
|
||||
#define LIB_USR_MAX31865 1
|
||||
#else
|
||||
#define LIB_ADAFRUIT_MAX31865 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if TEMP_SENSOR_2 == -4
|
||||
#define TEMP_SENSOR_2_IS_AD8495 1
|
||||
#elif TEMP_SENSOR_2 == -3
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
* version was tagged.
|
||||
*/
|
||||
#ifndef STRING_DISTRIBUTION_DATE
|
||||
#define STRING_DISTRIBUTION_DATE "2021-02-08"
|
||||
#define STRING_DISTRIBUTION_DATE "2021-02-12"
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
||||
+506
-366
File diff suppressed because it is too large
Load Diff
@@ -236,17 +236,17 @@ extern millis_t dwin_heat_time;
|
||||
typedef struct {
|
||||
TERN_(HAS_HOTEND, int16_t E_Temp = 0);
|
||||
TERN_(HAS_HEATED_BED, int16_t Bed_Temp = 0);
|
||||
TERN_(HAS_PREHEAT, int16_t Fan_speed = 0);
|
||||
TERN_(HAS_FAN, int16_t Fan_speed = 0);
|
||||
int16_t print_speed = 100;
|
||||
float Max_Feedspeed = 0;
|
||||
float Max_Acceleration = 0;
|
||||
float Max_Jerk = 0;
|
||||
float Max_Step = 0;
|
||||
float Move_X_scale = 0;
|
||||
float Move_Y_scale = 0;
|
||||
float Move_Z_scale = 0;
|
||||
float Max_Jerk_scaled = 0;
|
||||
float Max_Step_scaled = 0;
|
||||
float Move_X_scaled = 0;
|
||||
float Move_Y_scaled = 0;
|
||||
float Move_Z_scaled = 0;
|
||||
#if HAS_HOTEND
|
||||
float Move_E_scale = 0;
|
||||
float Move_E_scaled = 0;
|
||||
#endif
|
||||
float offset_value = 0;
|
||||
int8_t show_mode = 0; // -1: Temperature control 0: Printing temperature
|
||||
@@ -270,10 +270,7 @@ typedef struct {
|
||||
#if HAS_LEVELING
|
||||
bool leveling_offset_flag:1;
|
||||
#endif
|
||||
#if HAS_FAN
|
||||
AxisEnum feedspeed_axis;
|
||||
#endif
|
||||
AxisEnum acc_axis, jerk_axis, step_axis;
|
||||
AxisEnum feedspeed_axis, acc_axis, jerk_axis, step_axis;
|
||||
} HMI_Flag_t;
|
||||
|
||||
extern HMI_value_t HMI_ValueStruct;
|
||||
|
||||
+39
-21
@@ -327,43 +327,61 @@ FORCE_INLINE void probe_specific_action(const bool deploy) {
|
||||
|
||||
#if EITHER(PREHEAT_BEFORE_PROBING, PREHEAT_BEFORE_LEVELING)
|
||||
|
||||
#if ENABLED(PREHEAT_BEFORE_PROBING)
|
||||
#ifndef PROBING_NOZZLE_TEMP
|
||||
#define PROBING_NOZZLE_TEMP 0
|
||||
#endif
|
||||
#ifndef PROBING_BED_TEMP
|
||||
#define PROBING_BED_TEMP 0
|
||||
#endif
|
||||
#endif
|
||||
#if ENABLED(PREHEAT_BEFORE_LEVELING)
|
||||
#ifndef LEVELING_NOZZLE_TEMP
|
||||
#define LEVELING_NOZZLE_TEMP 0
|
||||
#endif
|
||||
#ifndef LEVELING_BED_TEMP
|
||||
#define LEVELING_BED_TEMP 0
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Do preheating as required before leveling or probing
|
||||
* Do preheating as required before leveling or probing.
|
||||
* - If a preheat input is higher than the current target, raise the target temperature.
|
||||
* - If a preheat input is higher than the current temperature, wait for stabilization.
|
||||
*/
|
||||
void Probe::preheat_for_probing(const uint16_t hotend_temp, const uint16_t bed_temp) {
|
||||
#if PROBING_NOZZLE_TEMP || LEVELING_NOZZLE_TEMP
|
||||
#if HAS_HOTEND && (PROBING_NOZZLE_TEMP || LEVELING_NOZZLE_TEMP)
|
||||
#define WAIT_FOR_NOZZLE_HEAT
|
||||
#endif
|
||||
#if PROBING_BED_TEMP || LEVELING_BED_TEMP
|
||||
#if HAS_HEATED_BED && (PROBING_BED_TEMP || LEVELING_BED_TEMP)
|
||||
#define WAIT_FOR_BED_HEAT
|
||||
#endif
|
||||
|
||||
DEBUG_ECHOPGM("Preheating ");
|
||||
|
||||
#if ENABLED(WAIT_FOR_NOZZLE_HEAT)
|
||||
uint16_t hotendPreheat;
|
||||
if (thermalManager.degHotend(0) < hotend_temp || thermalManager.degTargetHotend(0) < hotend_temp) hotendPreheat = hotend_temp;
|
||||
else if (thermalManager.degTargetHotend(0) < hotend_temp) hotendPreheat = thermalManager.degTargetHotend(0);
|
||||
else hotendPreheat = 0;
|
||||
const uint16_t hotendPreheat = hotend_temp > thermalManager.degTargetHotend(0) ? hotend_temp : 0;
|
||||
if (hotendPreheat) {
|
||||
DEBUG_ECHOPAIR("hotend (", hotendPreheat, ")");
|
||||
thermalManager.setTargetHotend(hotendPreheat, 0);
|
||||
}
|
||||
#elif ENABLED(WAIT_FOR_BED_HEAT)
|
||||
constexpr uint16_t hotendPreheat = 0;
|
||||
#endif
|
||||
|
||||
#if ENABLED(WAIT_FOR_BED_HEAT)
|
||||
uint16_t bedPreheat;
|
||||
if (thermalManager.degBed() < bed_temp || thermalManager.degTargetBed() < bed_temp) bedPreheat = bed_temp;
|
||||
else if (thermalManager.degTargetBed() < bed_temp) bedPreheat = thermalManager.degTargetBed();
|
||||
else bedPreheat = 0;
|
||||
const uint16_t bedPreheat = bed_temp > thermalManager.degTargetBed() ? bed_temp : 0;
|
||||
if (bedPreheat) {
|
||||
if (hotendPreheat) DEBUG_ECHOPGM(" and ");
|
||||
DEBUG_ECHOPAIR("bed (", bedPreheat, ")");
|
||||
thermalManager.setTargetBed(bedPreheat);
|
||||
}
|
||||
#endif
|
||||
|
||||
DEBUG_ECHOPGM("Preheating ");
|
||||
if (hotendPreheat) {
|
||||
DEBUG_ECHOPAIR("hotend (", hotendPreheat, ") ");
|
||||
if (bedPreheat) DEBUG_ECHOPGM("and ");
|
||||
}
|
||||
if (bedPreheat) DEBUG_ECHOPAIR("bed (", bedPreheat, ") ");
|
||||
DEBUG_EOL();
|
||||
|
||||
TERN_(WAIT_FOR_NOZZLE_HEAT, if (hotendPreheat==hotend_temp) thermalManager.setTargetHotend(hotendPreheat, 0));
|
||||
TERN_(WAIT_FOR_BED_HEAT, if (bedPreheat==bed_temp) thermalManager.setTargetBed(bedPreheat));
|
||||
TERN_(WAIT_FOR_NOZZLE_HEAT, if (thermalManager.degTargetHotend(0) < hotend_temp) thermalManager.wait_for_hotend(0));
|
||||
TERN_(WAIT_FOR_BED_HEAT, if (thermalManager.degTargetBed() < bed_temp) thermalManager.wait_for_bed_heating());
|
||||
TERN_(WAIT_FOR_NOZZLE_HEAT, if (hotend_temp > thermalManager.degHotend(0) + (TEMP_WINDOW)) thermalManager.wait_for_hotend(0));
|
||||
TERN_(WAIT_FOR_BED_HEAT, if (bed_temp > thermalManager.degBed() + (TEMP_BED_WINDOW)) thermalManager.wait_for_bed_heating());
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -47,41 +47,104 @@
|
||||
#include "../lcd/extui/ui_api.h"
|
||||
#endif
|
||||
|
||||
// LIB_MAX31855 can be added to the build_flags in platformio.ini to use a user-defined library
|
||||
#if LIB_USR_MAX31855
|
||||
#include <Adafruit_MAX31855.h>
|
||||
#if PIN_EXISTS(MAX31855_MISO) && PIN_EXISTS(MAX31855_SCK)
|
||||
#define MAX31855_USES_SW_SPI 1
|
||||
#endif
|
||||
#if TEMP_SENSOR_0_IS_MAX31855 && PIN_EXISTS(MAX31855_CS)
|
||||
#define HAS_MAX31855_TEMP 1
|
||||
Adafruit_MAX31855 max31855_0 = Adafruit_MAX31855(MAX31855_CS_PIN
|
||||
#if MAX31855_USES_SW_SPI
|
||||
, MAX31855_MISO_PIN, MAX31855_SCK_PIN // For software SPI also set MISO/SCK
|
||||
#endif
|
||||
#if ENABLED(LARGE_PINMAP)
|
||||
, HIGH
|
||||
#endif
|
||||
);
|
||||
#endif
|
||||
#if TEMP_SENSOR_1_IS_MAX31855 && PIN_EXISTS(MAX31855_CS2)
|
||||
#define HAS_MAX31855_TEMP 1
|
||||
Adafruit_MAX31855 max31855_1 = Adafruit_MAX31855(MAX31855_CS2_PIN
|
||||
#if MAX31855_USES_SW_SPI
|
||||
, MAX31855_MISO_PIN, MAX31855_SCK_PIN // For software SPI also set MISO/SCK
|
||||
#endif
|
||||
#if ENABLED(LARGE_PINMAP)
|
||||
, HIGH
|
||||
#endif
|
||||
);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// LIB_MAX31865 can be added to the build_flags in platformio.ini to use a user-defined library.
|
||||
// If LIB_MAX31865 is not on the build_flags then the Adafruit MAX31865 V1.1.0 library is used.
|
||||
#if HAS_MAX31865
|
||||
#include <Adafruit_MAX31865.h>
|
||||
#if TEMP_SENSOR_0_IS_MAX31865 && !defined(MAX31865_CS_PIN) && PIN_EXISTS(MAX6675_SS)
|
||||
#define MAX31865_CS_PIN MAX6675_SS_PIN
|
||||
#endif
|
||||
#if TEMP_SENSOR_1_IS_MAX31865 && !defined(MAX31865_CS2_PIN) && PIN_EXISTS(MAX6675_SS2)
|
||||
#define MAX31865_CS2_PIN MAX6675_SS2_PIN
|
||||
#endif
|
||||
#ifndef MAX31865_MOSI_PIN
|
||||
#define MAX31865_MOSI_PIN SD_MOSI_PIN
|
||||
#endif
|
||||
#ifndef MAX31865_MISO_PIN
|
||||
#define MAX31865_MISO_PIN MAX6675_DO_PIN
|
||||
#endif
|
||||
#ifndef MAX31865_SCK_PIN
|
||||
#define MAX31865_SCK_PIN MAX6675_SCK_PIN
|
||||
#if PIN_EXISTS(MAX31865_MISO) && PIN_EXISTS(MAX31865_SCK)
|
||||
#define MAX31865_USES_SW_SPI 1
|
||||
#endif
|
||||
#if TEMP_SENSOR_0_IS_MAX31865 && PIN_EXISTS(MAX31865_CS)
|
||||
#define HAS_MAX31865_TEMP 1
|
||||
Adafruit_MAX31865 max31865_0 = Adafruit_MAX31865(MAX31865_CS_PIN
|
||||
#if MAX31865_CS_PIN != MAX6675_SS_PIN
|
||||
, MAX31865_MOSI_PIN, MAX31865_MISO_PIN, MAX31865_SCK_PIN // For software SPI also set MOSI/MISO/SCK
|
||||
#endif
|
||||
);
|
||||
Adafruit_MAX31865 max31865_0 = Adafruit_MAX31865(MAX31865_CS_PIN
|
||||
#if MAX31865_USES_SW_SPI && PIN_EXISTS(MAX31865_MOSI)
|
||||
, MAX31865_MOSI_PIN, MAX31865_MISO_PIN, MAX31865_SCK_PIN // For software SPI also set MOSI/MISO/SCK
|
||||
#endif
|
||||
#if ENABLED(LARGE_PINMAP)
|
||||
, HIGH
|
||||
#endif
|
||||
);
|
||||
#endif
|
||||
#if TEMP_SENSOR_1_IS_MAX31865 && PIN_EXISTS(MAX31865_CS2)
|
||||
#define HAS_MAX31865_TEMP 1
|
||||
Adafruit_MAX31865 max31865_1 = Adafruit_MAX31865(MAX31865_CS2_PIN
|
||||
#if MAX31865_CS2_PIN != MAX6675_SS2_PIN
|
||||
, MAX31865_MOSI_PIN, MAX31865_MISO_PIN, MAX31865_SCK_PIN // For software SPI also set MOSI/MISO/SCK
|
||||
#if MAX31865_USES_SW_SPI && PIN_EXISTS(MAX31865_MOSI)
|
||||
, MAX31865_MOSI_PIN, MAX31865_MISO_PIN, MAX31865_SCK_PIN // For software SPI also set MOSI/MISO/SCK
|
||||
#endif
|
||||
#if ENABLED(LARGE_PINMAP)
|
||||
, HIGH
|
||||
#endif
|
||||
);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// LIB_MAX6675 can be added to the build_flags in platformio.ini to use a user-defined library
|
||||
#if LIB_USR_MAX6675
|
||||
#include <max6675.h>
|
||||
#if PIN_EXISTS(MAX6675_MISO) && PIN_EXISTS(MAX6675_SCK)
|
||||
#define MAX6675_USES_SW_SPI 1
|
||||
#endif
|
||||
#if TEMP_SENSOR_0_IS_MAX6675 && PIN_EXISTS(MAX6675_CS)
|
||||
#define HAS_MAX6675_TEMP 1
|
||||
MAX6675 max6675_0 = MAX6675(MAX6675_CS_PIN
|
||||
#if MAX6675_USES_SW_SPI
|
||||
, MAX6675_MISO_PIN, MAX6675_SCK_PIN // For software SPI also set MISO/SCK
|
||||
#endif
|
||||
#if ENABLED(LARGE_PINMAP)
|
||||
, HIGH
|
||||
#endif
|
||||
);
|
||||
#endif
|
||||
#if TEMP_SENSOR_1_IS_MAX6675 && PIN_EXISTS(MAX6675_CS2)
|
||||
#define HAS_MAX6675_TEMP 1
|
||||
MAX6675 max6675_1 = MAX6675(MAX6675_CS2_PIN
|
||||
#if MAX6675_USES_SW_SPI
|
||||
, MAX6675_MISO_PIN, MAX6675_SCK_PIN // For software SPI also set MISO/SCK
|
||||
#endif
|
||||
#if ENABLED(LARGE_PINMAP)
|
||||
, HIGH
|
||||
#endif
|
||||
);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if !HAS_MAX6675_TEMP && !HAS_MAX31855_TEMP && !HAS_MAX31865_TEMP
|
||||
#define NO_THERMO_TEMPS 1
|
||||
#endif
|
||||
|
||||
#if (TEMP_SENSOR_0_IS_MAX_TC || TEMP_SENSOR_1_IS_MAX_TC) && PINS_EXIST(MAX6675_SCK, MAX6675_DO) && NO_THERMO_TEMPS
|
||||
#define THERMO_SEPARATE_SPI 1
|
||||
#endif
|
||||
@@ -1718,9 +1781,38 @@ void Temperature::updateTemperaturesFromRawValues() {
|
||||
* The manager is implemented by periodic calls to manage_heater()
|
||||
*/
|
||||
void Temperature::init() {
|
||||
// Init (and disable) SPI thermocouples
|
||||
#if TEMP_SENSOR_0_IS_MAX6675 && PIN_EXISTS(MAX6675_CS)
|
||||
OUT_WRITE(MAX6675_CS_PIN, HIGH);
|
||||
#endif
|
||||
#if TEMP_SENSOR_1_IS_MAX6675 && PIN_EXISTS(MAX6675_CS2)
|
||||
OUT_WRITE(MAX6675_CS2_PIN, HIGH);
|
||||
#endif
|
||||
#if TEMP_SENSOR_0_IS_MAX6675 && PIN_EXISTS(MAX31855_CS)
|
||||
OUT_WRITE(MAX31855_CS_PIN, HIGH);
|
||||
#endif
|
||||
#if TEMP_SENSOR_1_IS_MAX6675 && PIN_EXISTS(MAX31855_CS2)
|
||||
OUT_WRITE(MAX31855_CS2_PIN, HIGH);
|
||||
#endif
|
||||
#if TEMP_SENSOR_0_IS_MAX6675 && PIN_EXISTS(MAX31865_CS)
|
||||
OUT_WRITE(MAX31865_CS_PIN, HIGH);
|
||||
#endif
|
||||
#if TEMP_SENSOR_1_IS_MAX6675 && PIN_EXISTS(MAX31865_CS2)
|
||||
OUT_WRITE(MAX31865_CS2_PIN, HIGH);
|
||||
#endif
|
||||
|
||||
TERN_(TEMP_SENSOR_0_IS_MAX31865, max31865_0.begin(MAX31865_2WIRE)); // MAX31865_2WIRE, MAX31865_3WIRE, MAX31865_4WIRE
|
||||
TERN_(TEMP_SENSOR_1_IS_MAX31865, max31865_1.begin(MAX31865_2WIRE));
|
||||
#if HAS_MAX31865_TEMP
|
||||
TERN_(TEMP_SENSOR_0_IS_MAX31865, max31865_0.begin(MAX31865_2WIRE)); // MAX31865_2WIRE, MAX31865_3WIRE, MAX31865_4WIRE
|
||||
TERN_(TEMP_SENSOR_1_IS_MAX31865, max31865_1.begin(MAX31865_2WIRE));
|
||||
#endif
|
||||
#if HAS_MAX31855_TEMP
|
||||
TERN_(TEMP_SENSOR_0_IS_MAX31855, max31855_0.begin());
|
||||
TERN_(TEMP_SENSOR_1_IS_MAX31855, max31855_1.begin());
|
||||
#endif
|
||||
#if HAS_MAX6675_TEMP
|
||||
TERN_(TEMP_SENSOR_0_IS_MAX6675, max6675_0.begin());
|
||||
TERN_(TEMP_SENSOR_1_IS_MAX6675, max6675_1.begin());
|
||||
#endif
|
||||
|
||||
#if EARLY_WATCHDOG
|
||||
// Flag that the thermalManager should be running
|
||||
@@ -2234,7 +2326,7 @@ void Temperature::disable_all_heaters() {
|
||||
int Temperature::read_max_tc(TERN_(HAS_MULTI_MAX_TC, const uint8_t hindex/*=0*/)) {
|
||||
#define MAX6675_HEAT_INTERVAL 250UL
|
||||
|
||||
#if HAS_MAX31855
|
||||
#if HAS_MAX31855_TEMP
|
||||
static uint32_t max_tc_temp = 2000;
|
||||
#define MAX_TC_ERROR_MASK 7
|
||||
#define MAX_TC_DISCARD_BITS 18
|
||||
@@ -2284,65 +2376,91 @@ void Temperature::disable_all_heaters() {
|
||||
if (PENDING(ms, next_max_tc_ms[hindex])) return int(THERMO_TEMP(hindex));
|
||||
next_max_tc_ms[hindex] = ms + MAX6675_HEAT_INTERVAL;
|
||||
|
||||
#if HAS_MAX31865_TEMP
|
||||
Adafruit_MAX31865 &maxref = THERMO_SEL(max31865_0, max31865_1);
|
||||
const uint16_t max31865_ohms = (uint32_t(maxref.readRTD()) * THERMO_SEL(MAX31865_CALIBRATION_OHMS_0, MAX31865_CALIBRATION_OHMS_1)) >> 16;
|
||||
#endif
|
||||
|
||||
//
|
||||
// TODO: spiBegin, spiRec and spiInit doesn't work when soft spi is used.
|
||||
//
|
||||
#if !THERMO_SEPARATE_SPI
|
||||
#if !THERMO_SEPARATE_SPI && NO_THERMO_TEMPS
|
||||
spiBegin();
|
||||
spiInit(MAX_TC_SPEED_BITS);
|
||||
#endif
|
||||
|
||||
MAX6675_WRITE(LOW); // enable TT_MAX6675
|
||||
DELAY_NS(100); // Ensure 100ns delay
|
||||
#if NO_THERMO_TEMPS
|
||||
MAX6675_WRITE(LOW); // enable TT_MAX6675
|
||||
DELAY_NS(100); // Ensure 100ns delay
|
||||
#endif
|
||||
|
||||
max_tc_temp = 0;
|
||||
|
||||
// Read a big-endian temperature value
|
||||
max_tc_temp = 0;
|
||||
for (uint8_t i = sizeof(max_tc_temp); i--;) {
|
||||
max_tc_temp |= TERN(THERMO_SEPARATE_SPI, max_tc_spi.receive(), spiRec());
|
||||
if (i > 0) max_tc_temp <<= 8; // shift left if not the last byte
|
||||
}
|
||||
#if NO_THERMO_TEMPS
|
||||
for (uint8_t i = sizeof(max_tc_temp); i--;) {
|
||||
max_tc_temp |= TERN(THERMO_SEPARATE_SPI, max_tc_spi.receive(), spiRec());
|
||||
if (i > 0) max_tc_temp <<= 8; // shift left if not the last byte
|
||||
}
|
||||
MAX6675_WRITE(HIGH); // disable TT_MAX6675
|
||||
#endif
|
||||
|
||||
MAX6675_WRITE(HIGH); // disable TT_MAX6675
|
||||
#if HAS_MAX31855_TEMP
|
||||
Adafruit_MAX31855 &max855ref = THERMO_SEL(max31855_0, max31855_1);
|
||||
max_tc_temp = max855ref.readRaw32();
|
||||
#endif
|
||||
|
||||
const uint8_t fault_31865 = TERN1(HAS_MAX31865_TEMP, maxref.readFault());
|
||||
#if HAS_MAX31865_TEMP
|
||||
Adafruit_MAX31865 &max865ref = THERMO_SEL(max31865_0, max31865_1);
|
||||
#if ENABLED(LIB_USR_MAX31865)
|
||||
max_tc_temp = max865ref.readRTD_with_Fault();
|
||||
#endif
|
||||
#endif
|
||||
|
||||
if (DISABLED(IGNORE_THERMOCOUPLE_ERRORS) && (max_tc_temp & MAX_TC_ERROR_MASK) && fault_31865) {
|
||||
#if HAS_MAX6675_TEMP
|
||||
MAX6675 &max6675ref = THERMO_SEL(max6675_0, max6675_1);
|
||||
max_tc_temp = max6675ref.readRaw16();
|
||||
#endif
|
||||
|
||||
#if ENABLED(LIB_ADAFRUIT_MAX31865)
|
||||
const uint8_t fault_31865 = max865ref.readFault() & 0x3FU;
|
||||
#endif
|
||||
|
||||
if (DISABLED(IGNORE_THERMOCOUPLE_ERRORS)
|
||||
&& TERN(LIB_ADAFRUIT_MAX31865, fault_31865, (max_tc_temp & MAX_TC_ERROR_MASK))
|
||||
) {
|
||||
max_tc_errors[hindex]++;
|
||||
if (max_tc_errors[hindex] > THERMOCOUPLE_MAX_ERRORS) {
|
||||
SERIAL_ERROR_START();
|
||||
SERIAL_ECHOPGM("Temp measurement error! ");
|
||||
#if MAX_TC_ERROR_MASK == 7
|
||||
SERIAL_ECHOPGM("MAX31855 ");
|
||||
if (max_tc_temp & 1)
|
||||
SERIAL_ECHOPGM("MAX31855 Fault : (", max_tc_temp & 0x7, ") >> ");
|
||||
if (max_tc_temp & 0x1)
|
||||
SERIAL_ECHOLNPGM("Open Circuit");
|
||||
else if (max_tc_temp & 2)
|
||||
else if (max_tc_temp & 0x2)
|
||||
SERIAL_ECHOLNPGM("Short to GND");
|
||||
else if (max_tc_temp & 4)
|
||||
else if (max_tc_temp & 0x4)
|
||||
SERIAL_ECHOLNPGM("Short to VCC");
|
||||
#elif HAS_MAX31865_TEMP
|
||||
#elif HAS_MAX31865
|
||||
#if ENABLED(LIB_USR_MAX31865)
|
||||
// At the present time we do not have the ability to set the MAX31865 HIGH threshold
|
||||
// or thr LOW threshold, so no need to check for them, zero these bits out
|
||||
const uint8_t fault_31865 = max865ref.readFault() & 0x3FU;
|
||||
#endif
|
||||
max865ref.clearFault();
|
||||
if (fault_31865) {
|
||||
maxref.clearFault();
|
||||
SERIAL_ECHOPAIR("MAX31865 Fault :(", fault_31865, ") >>");
|
||||
SERIAL_EOL();
|
||||
SERIAL_ECHOLNPAIR("\nMAX31865 Fault :(", fault_31865, ") >>");
|
||||
if (fault_31865 & MAX31865_FAULT_HIGHTHRESH)
|
||||
SERIAL_ECHOLNPGM("RTD High Threshold");
|
||||
else if (fault_31865 & MAX31865_FAULT_LOWTHRESH)
|
||||
if (fault_31865 & MAX31865_FAULT_LOWTHRESH)
|
||||
SERIAL_ECHOLNPGM("RTD Low Threshold");
|
||||
else if (fault_31865 & MAX31865_FAULT_REFINLOW)
|
||||
if (fault_31865 & MAX31865_FAULT_REFINLOW)
|
||||
SERIAL_ECHOLNPGM("REFIN- > 0.85 x Bias");
|
||||
else if (fault_31865 & MAX31865_FAULT_REFINHIGH)
|
||||
if (fault_31865 & MAX31865_FAULT_REFINHIGH)
|
||||
SERIAL_ECHOLNPGM("REFIN- < 0.85 x Bias - FORCE- open");
|
||||
else if (fault_31865 & MAX31865_FAULT_RTDINLOW)
|
||||
if (fault_31865 & MAX31865_FAULT_RTDINLOW)
|
||||
SERIAL_ECHOLNPGM("REFIN- < 0.85 x Bias - FORCE- open");
|
||||
else if (fault_31865 & MAX31865_FAULT_OVUV)
|
||||
if (fault_31865 & MAX31865_FAULT_OVUV)
|
||||
SERIAL_ECHOLNPGM("Under/Over voltage");
|
||||
}
|
||||
#else
|
||||
SERIAL_ECHOLNPGM("MAX6675");
|
||||
SERIAL_ECHOLNPGM("MAX6675 Open Circuit");
|
||||
#endif
|
||||
|
||||
// Thermocouple open
|
||||
@@ -2361,7 +2479,13 @@ void Temperature::disable_all_heaters() {
|
||||
#endif
|
||||
|
||||
// Return the RTD resistance for MAX31865 for display in SHOW_TEMP_ADC_VALUES
|
||||
TERN_(HAS_MAX31865_TEMP, max_tc_temp = max31865_ohms);
|
||||
#if HAS_MAX31865_TEMP
|
||||
#if ENABLED(LIB_ADAFRUIT_MAX31865)
|
||||
max_tc_temp = (uint32_t(max865ref.readRTD()) * THERMO_SEL(MAX31865_CALIBRATION_OHMS_0, MAX31865_CALIBRATION_OHMS_1)) >> 16;
|
||||
#elif ENABLED(LIB_USR_MAX31865)
|
||||
max_tc_temp = (uint32_t(max_tc_temp) * THERMO_SEL(MAX31865_CALIBRATION_OHMS_0, MAX31865_CALIBRATION_OHMS_1)) >> 16;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
THERMO_TEMP(hindex) = max_tc_temp;
|
||||
|
||||
@@ -3047,7 +3171,8 @@ void Temperature::tick() {
|
||||
SERIAL_ECHOPGM(" /");
|
||||
SERIAL_PRINT(t, SFP);
|
||||
#if ENABLED(SHOW_TEMP_ADC_VALUES)
|
||||
SERIAL_ECHOPAIR(" (", r * RECIPROCAL(OVERSAMPLENR));
|
||||
// Temperature MAX SPI boards do not have an OVERSAMPLENR defined
|
||||
SERIAL_ECHOPAIR(" (", TERN(NO_THERMO_TEMPS, false, k == 'T') ? r : r * RECIPROCAL(OVERSAMPLENR));
|
||||
SERIAL_CHAR(')');
|
||||
#endif
|
||||
delay(2);
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#pragma once
|
||||
|
||||
#define BOARD_INFO_NAME "BTT SKR V1.3"
|
||||
#define LPC1768_IS_SKRV1_3 1
|
||||
|
||||
//
|
||||
// Trinamic Stallguard pins
|
||||
|
||||
@@ -307,6 +307,9 @@
|
||||
*
|
||||
* Hardware serial communication ports.
|
||||
* If undefined software serial is used according to the pins below
|
||||
*
|
||||
* Serial2 -- AUX-4 Pin 18 (D16 TX2) and AUX-4 Pin 17 (D17 RX2)
|
||||
* Serial1 -- Pins D18 and D19 are used for Z-MIN and Z-MAX
|
||||
*/
|
||||
//#define X_HARDWARE_SERIAL Serial1
|
||||
//#define X2_HARDWARE_SERIAL Serial1
|
||||
@@ -690,7 +693,9 @@
|
||||
#elif ENABLED(AZSMZ_12864)
|
||||
|
||||
// Pins only defined for RAMPS_SMART currently
|
||||
#error "No pins defined for RAMPS with AZSMZ_12864."
|
||||
#if DISABLED(IS_RAMPS_SMART)
|
||||
#error "No pins defined for RAMPS with AZSMZ_12864."
|
||||
#endif
|
||||
|
||||
#elif IS_TFTGLCD_PANEL
|
||||
|
||||
|
||||
@@ -60,8 +60,8 @@
|
||||
* (Search the web for "Arduino DUE Board Pinout" to see the correct header.)
|
||||
*/
|
||||
|
||||
#if NOT_TARGET(__SAM3X8E__)
|
||||
#error "Oops! Select 'Arduino Due' in 'Tools > Board.'"
|
||||
#if NOT_TARGET(__SAM3X8E__, __AVR_ATmega2560__)
|
||||
#error "Oops! Select 'Arduino Due' or 'Mega 2560' in 'Tools > Board.'"
|
||||
#endif
|
||||
|
||||
#define BOARD_INFO_NAME "RAMPS-SMART"
|
||||
@@ -72,6 +72,18 @@
|
||||
#define I2C_EEPROM
|
||||
#define MARLIN_EEPROM_SIZE 0x1000
|
||||
|
||||
#define SDA_PIN 20
|
||||
#define SCL_PIN 21
|
||||
|
||||
// See EEPROM device datasheet for the following values. These are for 24xx256
|
||||
#define EEPROM_SERIAL_ADDR 0x50 // 7 bit i2c address (without R/W bit)
|
||||
#define EEPROM_PAGE_SIZE 64 // page write buffer size
|
||||
#define EEPROM_PAGE_WRITE_TIME 7 // page write time in milliseconds (docs say 5ms but that is too short)
|
||||
|
||||
#define TWI_CLOCK_FREQ 400000
|
||||
#define EEPROM_ADDRSZ_BYTES TWI_MMR_IADRSZ_2_BYTE // TWI_MMR_IADRSZ_1_BYTE for 1 byte, or TWI_MMR_IADRSZ_2_BYTE for 2 byte
|
||||
#define EEPROM_AVAILABLE EEPROM_I2C
|
||||
|
||||
#define RESET_PIN 42 // Resets the board if the jumper is attached
|
||||
|
||||
//
|
||||
@@ -97,6 +109,7 @@
|
||||
//
|
||||
// LCD / Controller
|
||||
//
|
||||
|
||||
// Support for AZSMZ 12864 LCD with SD Card 3D printer smart controller control panel
|
||||
#if ENABLED(AZSMZ_12864)
|
||||
#define BEEPER_PIN 66 // Smart RAMPS 1.42 pinout diagram on RepRap WIKI erroneously says this should be pin 65
|
||||
|
||||
@@ -132,8 +132,12 @@
|
||||
#define HEATER_0_PIN PA1 // HEATER1
|
||||
#define HEATER_BED_PIN PA2 // HOT BED
|
||||
|
||||
#define FAN_PIN PA0 // FAN
|
||||
#define FAN_SOFT_PWM
|
||||
#ifndef FAN_PIN
|
||||
#define FAN_PIN PA0 // FAN
|
||||
#endif
|
||||
#if PIN_EXISTS(FAN)
|
||||
#define FAN_SOFT_PWM
|
||||
#endif
|
||||
|
||||
//
|
||||
// SD Card
|
||||
|
||||
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
@@ -77,8 +77,8 @@ import os
|
||||
|
||||
pwd = os.getcwd() # make sure we're executing from the correct directory level
|
||||
pwd = pwd.replace('\\', '/')
|
||||
if 0 <= pwd.find('buildroot/share/atom'):
|
||||
pwd = pwd[:pwd.find('buildroot/share/atom')]
|
||||
if 0 <= pwd.find('buildroot/share/vscode'):
|
||||
pwd = pwd[:pwd.find('buildroot/share/vscode')]
|
||||
os.chdir(pwd)
|
||||
print('pwd: ', pwd)
|
||||
|
||||
|
||||
@@ -92,9 +92,9 @@ else:
|
||||
get_com_port('COM', 'Hardware ID:', 13)
|
||||
|
||||
# avrdude_conf_path = env.get("PIOHOME_DIR") + '\\packages\\toolchain-atmelavr\\etc\\avrdude.conf'
|
||||
avrdude_conf_path = 'buildroot\\share\\atom\\avrdude.conf'
|
||||
avrdude_conf_path = 'buildroot\\share\\vscode\\avrdude.conf'
|
||||
|
||||
avrdude_exe_path = 'buildroot\\share\\atom\\avrdude_5.10.exe'
|
||||
avrdude_exe_path = 'buildroot\\share\\vscode\\avrdude_5.10.exe'
|
||||
|
||||
# source_path = env.get("PROJECTBUILD_DIR") + '\\' + env.get("PIOENV") + '\\firmware.hex'
|
||||
source_path = '.pio\\build\\' + env.get("PIOENV") + '\\firmware.hex'
|
||||
|
||||
+1
-1
@@ -213,7 +213,7 @@ extra_scripts =
|
||||
pre:buildroot/share/PlatformIO/scripts/common-dependencies.py
|
||||
pre:buildroot/share/PlatformIO/scripts/common-cxxflags.py
|
||||
post:buildroot/share/PlatformIO/scripts/common-dependencies-post.py
|
||||
build_flags = -fmax-errors=5 -g -D__MARLIN_FIRMWARE__ -fmerge-constants
|
||||
build_flags = -fmax-errors=5 -g3 -D__MARLIN_FIRMWARE__ -fmerge-constants
|
||||
lib_deps =
|
||||
|
||||
#
|
||||
|
||||
Reference in New Issue
Block a user