Compare commits
29 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
d1743348bc | ||
|
c28dfe32f3 | ||
|
8eb6603e2a | ||
|
caf9e93465 | ||
|
d74f46243b | ||
|
dabf393920 | ||
|
e4679c1b78 | ||
|
62f52ebb3a | ||
|
e8e25b80d1 | ||
|
2822c0890a | ||
|
c45d6b2017 | ||
|
8d4dd88bf9 | ||
|
3c9464eea4 | ||
|
5b12627e14 | ||
|
9caf5c05e7 | ||
|
50889c0f94 | ||
|
99b6a132bc | ||
|
e6a675e6ec | ||
|
1bc6509d02 | ||
|
1db9d9f76f | ||
|
8737c35ded | ||
|
e8ed4329ea | ||
|
a5f72330fb | ||
|
9bb8176d34 | ||
|
9b45f342ee | ||
|
e4eaf32b4d | ||
|
0c3cae59d9 | ||
|
131acf304b | ||
|
8bd6b60a01 |
@@ -379,7 +379,8 @@
|
||||
* 13 : 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
|
||||
* 15 : 100k thermistor calibration for JGAurora A5 hotend
|
||||
* 18 : ATC Semitec 204GT-2 (4.7k pullup) Dagoma.Fr - MKS_Base_DKU001327
|
||||
* 20 : Pt100 with circuit in the Ultimainboard V2.x
|
||||
* 20 : Pt100 with circuit in the Ultimainboard V2.x with 5v excitation (AVR)
|
||||
* 21 : Pt100 with circuit in the Ultimainboard V2.x with 3.3v excitation (STM32 \ LPC176x....)
|
||||
* 201 : Pt100 with circuit in Overlord, similar to Ultimainboard V2.x
|
||||
* 60 : 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
|
||||
* 61 : 100k Formbot / Vivedino 3950 350C thermistor 4.7k pullup
|
||||
|
@@ -819,7 +819,7 @@
|
||||
// probing on a screwhead or hollow washer, probe near the edges.
|
||||
//#define CALIBRATION_MEASURE_AT_TOP_EDGES
|
||||
|
||||
// Define pin which is read during calibration
|
||||
// Define the pin to read during calibration
|
||||
#ifndef CALIBRATION_PIN
|
||||
#define CALIBRATION_PIN -1 // Override in pins.h or set to -1 to use your Z endstop
|
||||
#define CALIBRATION_PIN_INVERTING false // Set to true to invert the pin
|
||||
@@ -1874,7 +1874,7 @@
|
||||
* TMC26X Stepper Driver options
|
||||
*
|
||||
* The TMC26XStepper library is required for this stepper driver.
|
||||
* https://github.com/trinamic/TMC26XStepper
|
||||
* https://github.com/MarlinFirmware/TMC26XStepper
|
||||
*/
|
||||
#if HAS_DRIVER(TMC26X)
|
||||
|
||||
|
@@ -28,7 +28,7 @@
|
||||
/**
|
||||
* Marlin release version identifier
|
||||
*/
|
||||
//#define SHORT_BUILD_VERSION "2.0.2"
|
||||
//#define SHORT_BUILD_VERSION "2.0.3.1"
|
||||
|
||||
/**
|
||||
* Verbose version identifier which should contain a reference to the location
|
||||
@@ -41,7 +41,7 @@
|
||||
* here we define this default string as the date where the latest release
|
||||
* version was tagged.
|
||||
*/
|
||||
//#define STRING_DISTRIBUTION_DATE "2020-01-27"
|
||||
//#define STRING_DISTRIBUTION_DATE "2020-01-31"
|
||||
|
||||
/**
|
||||
* Defines a generic printer name to be output to the LCD after booting Marlin.
|
||||
|
@@ -1,254 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Based on U8G2 code - u8x8_byte.c
|
||||
*
|
||||
* Universal 8bit Graphics Library (https://github.com/olikraus/u8g2/)
|
||||
*
|
||||
* Copyright (c) 2016, olikraus@gmail.com
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice, this list
|
||||
* of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this
|
||||
* list of conditions and the following disclaimer in the documentation and/or other
|
||||
* materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
||||
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Software i2c,
|
||||
* ignores ACK response (which is anyway not provided by some displays)
|
||||
* also does not allow reading from the device
|
||||
*/
|
||||
|
||||
#ifdef TARGET_LPC1768
|
||||
|
||||
#include "../../inc/MarlinConfigPre.h"
|
||||
|
||||
#if HAS_GRAPHICAL_LCD
|
||||
|
||||
#include <U8glib.h>
|
||||
|
||||
//void pinMode(int16_t pin, uint8_t mode);
|
||||
//void digitalWrite(int16_t pin, uint8_t pin_status);
|
||||
|
||||
|
||||
#define I2C_SLA (0x3C*2)
|
||||
//#define I2C_CMD_MODE 0x080
|
||||
#define I2C_CMD_MODE 0x000
|
||||
#define I2C_DATA_MODE 0x040
|
||||
|
||||
//static uint8_t I2C_speed; // 3 - 400KHz, 13 - 100KHz
|
||||
//#define SPEED_400KHz 3
|
||||
//#define SPEED_100KHz 13
|
||||
|
||||
// #define U8G_I2C_OPT_FAST 16
|
||||
|
||||
uint8_t SCL_pin_HAL_LPC1768_sw_I2C, SCL_port_HAL_LPC1768_sw_I2C, SDA_pin_HAL_LPC1768_sw_I2C, SDA_port_HAL_LPC1768_sw_I2C;
|
||||
|
||||
#define SPI_SPEED 2 //20: 200KHz 5:750KHz 2:3-4MHz
|
||||
|
||||
uint8_t u8g_i2c_send_byte_sw(uint8_t data) {
|
||||
for (uint8_t i = 0; i < 9; i++) { // 1 extra bit for the ack/nak
|
||||
|
||||
if (val & 0x80)
|
||||
for (uint8_t j = 0; j < SPI_SPEED; j++) {
|
||||
LPC_GPIO(SDA_port_HAL_LPC1768_sw_I2C)->FIOSET = LPC_PIN(SDA_pin_HAL_LPC1768_sw_I2C);
|
||||
LPC_GPIO(SDA_port_HAL_LPC1768_sw_I2C)->FIOSET = LPC_PIN(SDA_pin_HAL_LPC1768_sw_I2C);
|
||||
LPC_GPIO(SDA_port_HAL_LPC1768_sw_I2C)->FIOSET = LPC_PIN(SDA_pin_HAL_LPC1768_sw_I2C);
|
||||
}
|
||||
else
|
||||
for (uint8_t j = 0; j < SPI_SPEED; j++) {
|
||||
LPC_GPIO(SDA_port_HAL_LPC1768_sw_I2C)->FIOCLR = LPC_PIN(SDA_pin_HAL_LPC1768_sw_I2C);
|
||||
LPC_GPIO(SDA_port_HAL_LPC1768_sw_I2C)->FIOCLR = LPC_PIN(SDA_pin_HAL_LPC1768_sw_I2C);
|
||||
LPC_GPIO(SDA_port_HAL_LPC1768_sw_I2C)->FIOCLR = LPC_PIN(SDA_pin_HAL_LPC1768_sw_I2C);
|
||||
}
|
||||
|
||||
for (uint8_t j = 0; j < SPI_SPEED; j++) {
|
||||
LPC_GPIO(SCL_port_HAL_LPC1768_sw_I2C)->FIOSET = LPC_PIN(SCL_pin_HAL_LPC1768_sw_I2C);
|
||||
LPC_GPIO(SCL_port_HAL_LPC1768_sw_I2C)->FIOSET = LPC_PIN(SCL_pin_HAL_LPC1768_sw_I2C);
|
||||
LPC_GPIO(SCL_port_HAL_LPC1768_sw_I2C)->FIOSET = LPC_PIN(SCL_pin_HAL_LPC1768_sw_I2C);
|
||||
LPC_GPIO(SCL_port_HAL_LPC1768_sw_I2C)->FIOSET = LPC_PIN(SCL_pin_HAL_LPC1768_sw_I2C);
|
||||
LPC_GPIO(SCL_port_HAL_LPC1768_sw_I2C)->FIOSET = LPC_PIN(SCL_pin_HAL_LPC1768_sw_I2C);
|
||||
}
|
||||
|
||||
for (uint8_t j = 0; j < SPI_SPEED; j++) {
|
||||
LPC_GPIO(SCL_port_HAL_LPC1768_sw_I2C)->FIOCLR = LPC_PIN(SCL_pin_HAL_LPC1768_sw_I2C);
|
||||
LPC_GPIO(SCL_port_HAL_LPC1768_sw_I2C)->FIOCLR = LPC_PIN(SCL_pin_HAL_LPC1768_sw_I2C);
|
||||
}
|
||||
val <<= 1;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
uint8_t u8g_i2c_start_sw(uint8_t sla) { // assert start condition and then send slave address with write bit
|
||||
/* send the start condition, both lines go from 1 to 0 */
|
||||
|
||||
LPC_GPIO(SDA_port_HAL_LPC1768_sw_I2C)->FIOCLR = LPC_PIN(SDA_pin_HAL_LPC1768_sw_I2C);
|
||||
LPC_GPIO(SCL_port_HAL_LPC1768_sw_I2C)->FIOCLR = LPC_PIN(SCL_pin_HAL_LPC1768_sw_I2C);
|
||||
DELAY_US(2);
|
||||
LPC_GPIO(SCL_port_HAL_LPC1768_sw_I2C)->FIOSET = LPC_PIN(SCL_pin_HAL_LPC1768_sw_I2C);
|
||||
DELAY_US(2);
|
||||
LPC_GPIO(SDA_port_HAL_LPC1768_sw_I2C)->FIOSET = LPC_PIN(SDA_pin_HAL_LPC1768_sw_I2C);
|
||||
DELAY_US(2);
|
||||
LPC_GPIO(SDA_port_HAL_LPC1768_sw_I2C)->FIOCLR = LPC_PIN(SDA_pin_HAL_LPC1768_sw_I2C);
|
||||
DELAY_US(2);
|
||||
LPC_GPIO(SCL_port_HAL_LPC1768_sw_I2C)->FIOCLR = LPC_PIN(SCL_pin_HAL_LPC1768_sw_I2C);
|
||||
|
||||
u8g_i2c_send_byte_sw(I2C_SLA); // send slave address with write bit
|
||||
}
|
||||
|
||||
|
||||
void u8g_i2c_stop_sw() { }
|
||||
|
||||
void u8g_i2c_init_sw(uint8_t clock_option) { u8g_i2c_start(0); } // send slave address and write bit
|
||||
|
||||
uint8_t u8g_com_ssd_I2C_start_sequence_sw(u8g_t *u8g) {
|
||||
/* are we requested to set the a0 state? */
|
||||
if (u8g->pin_list[U8G_PI_SET_A0] == 0) return 1;
|
||||
|
||||
/* setup bus, might be a repeated start */
|
||||
if (u8g_i2c_start(I2C_SLA) == 0) return 0;
|
||||
if (u8g->pin_list[U8G_PI_A0_STATE] == 0) {
|
||||
if (u8g_i2c_send_byte(I2C_CMD_MODE) == 0) return 0;
|
||||
}
|
||||
else if (u8g_i2c_send_byte(I2C_DATA_MODE) == 0) return 0;
|
||||
|
||||
u8g->pin_list[U8G_PI_SET_A0] = 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
uint8_t u8g_com_HAL_LPC1768_ssd_sw_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) {
|
||||
switch (msg) {
|
||||
case U8G_COM_MSG_INIT:
|
||||
|
||||
#define LPC1768_PIN_PORT(pin) ((uint8_t)((pin >> 5) & 0b111))
|
||||
#define LPC1768_PIN_PIN(pin) ((uint8_t)(pin & 0b11111))
|
||||
SCL_pin_HAL_LPC1768_sw_I2C = LPC1768_PIN_PIN(u8g->pin_list[U8G_PI_SCL]);
|
||||
SCL_port_HAL_LPC1768_sw_I2C = LPC1768_PIN_PORT(u8g->pin_list[U8G_PI_SCL]);
|
||||
SDA_pin_HAL_LPC1768_sw_I2C = LPC1768_PIN_PIN(u8g->pin_list[U8G_PI_SDA]);
|
||||
SDA_port_HAL_LPC1768_sw_I2C = LPC1768_PIN_PORT(u8g->pin_list[U8G_PI_SDA]);
|
||||
// As defined by Arduino INPUT(0x0), OUTPUT(0x1), INPUT_PULLUP(0x2)
|
||||
#define OUTPUT 0x1
|
||||
u8g_SetPIOutput(u8g, U8G_PI_SCL);
|
||||
u8g_SetPIOutput(u8g, U8G_PI_SDA);
|
||||
if (U8G_PIN_NONE != u8g->pin_list[U8G_PI_CS]) u8g_SetPIOutput(u8g, U8G_PI_CS);
|
||||
if (U8G_PIN_NONE != u8g->pin_list[U8G_PI_A0]) u8g_SetPIOutput(u8g, U8G_PI_A0);
|
||||
if (U8G_PIN_NONE != u8g->pin_list[U8G_PI_RESET]) u8g_SetPIOutput(u8g, U8G_PI_RESET);
|
||||
|
||||
//u8g_com_arduino_digital_write(u8g, U8G_PI_SCL, HIGH);
|
||||
//u8g_com_arduino_digital_write(u8g, U8G_PI_SDA, HIGH);
|
||||
//u8g->pin_list[U8G_PI_A0_STATE] = 0; /* initial RS state: unknown mode */
|
||||
|
||||
u8g_i2c_init_sw(u8g->pin_list[U8G_PI_I2C_OPTION]);
|
||||
u8g_com_ssd_I2C_start_sequence_sw(u8g);
|
||||
break;
|
||||
|
||||
case U8G_COM_MSG_STOP: break;
|
||||
|
||||
case U8G_COM_MSG_RESET: break;
|
||||
|
||||
case U8G_COM_MSG_CHIP_SELECT:
|
||||
u8g->pin_list[U8G_PI_A0_STATE] = 0;
|
||||
u8g->pin_list[U8G_PI_SET_A0] = 1; /* force a0 to set again, also forces start condition */
|
||||
if (arg_val == 0) {
|
||||
/* disable chip, send stop condition */
|
||||
u8g_i2c_stop_sw();
|
||||
}
|
||||
else {
|
||||
/* enable, do nothing: any byte writing will trigger the i2c start */
|
||||
}
|
||||
break;
|
||||
|
||||
case U8G_COM_MSG_WRITE_BYTE:
|
||||
//u8g->pin_list[U8G_PI_SET_A0] = 1;
|
||||
//if (u8g_com_arduino_ssd_start_sequence(u8g) == 0)
|
||||
// return u8g_i2c_stop(), 0;
|
||||
if (u8g_i2c_send_byte_sw(arg_val) == 0)
|
||||
return u8g_i2c_stop_sw(), 0;
|
||||
// u8g_i2c_stop();
|
||||
break;
|
||||
|
||||
case U8G_COM_MSG_WRITE_SEQ: {
|
||||
//u8g->pin_list[U8G_PI_SET_A0] = 1;
|
||||
if (u8g_com_ssd_I2C_start_sequence_sw(u8g) == 0)
|
||||
return u8g_i2c_stop_sw(), 0;
|
||||
|
||||
uint8_t *ptr = (uint8_t *)arg_ptr;
|
||||
while (arg_val > 0) {
|
||||
if (u8g_i2c_send_byte_sw(*ptr++) == 0)
|
||||
return u8g_i2c_stop_sw(), 0;
|
||||
arg_val--;
|
||||
}
|
||||
}
|
||||
// u8g_i2c_stop();
|
||||
break;
|
||||
|
||||
case U8G_COM_MSG_WRITE_SEQ_P: {
|
||||
//u8g->pin_list[U8G_PI_SET_A0] = 1;
|
||||
if (u8g_com_ssd_I2C_start_sequence_sw(u8g) == 0)
|
||||
return u8g_i2c_stop_sw(), 0;
|
||||
|
||||
uint8_t *ptr = (uint8_t *)arg_ptr;
|
||||
while (arg_val > 0) {
|
||||
if (u8g_i2c_send_byte_sw(u8g_pgm_read(ptr)) == 0) return 0;
|
||||
ptr++;
|
||||
arg_val--;
|
||||
}
|
||||
}
|
||||
// u8g_i2c_stop();
|
||||
break;
|
||||
|
||||
case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */
|
||||
u8g->pin_list[U8G_PI_A0_STATE] = arg_val;
|
||||
u8g->pin_list[U8G_PI_SET_A0] = 1; /* force a0 to set again */
|
||||
u8g_i2c_start_sw(0); // send slave address and write bit
|
||||
u8g_i2c_send_byte_sw(arg_val ? 0x40 : 0x80); // Write to ? Graphics DRAM mode : Command mode
|
||||
break;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
#endif // HAS_GRAPHICAL_LCD
|
||||
|
||||
#endif // TARGET_LPC1768
|
@@ -291,7 +291,7 @@ void quickstop_stepper() {
|
||||
}
|
||||
|
||||
void enable_e_steppers() {
|
||||
#define _ENA_E(N) enable_E##N();
|
||||
#define _ENA_E(N) ENABLE_AXIS_E##N();
|
||||
REPEAT(E_STEPPERS, _ENA_E)
|
||||
}
|
||||
|
||||
@@ -299,28 +299,28 @@ void enable_all_steppers() {
|
||||
#if ENABLED(AUTO_POWER_CONTROL)
|
||||
powerManager.power_on();
|
||||
#endif
|
||||
enable_X();
|
||||
enable_Y();
|
||||
enable_Z();
|
||||
ENABLE_AXIS_X();
|
||||
ENABLE_AXIS_Y();
|
||||
ENABLE_AXIS_Z();
|
||||
enable_e_steppers();
|
||||
}
|
||||
|
||||
void disable_e_steppers() {
|
||||
#define _DIS_E(N) disable_E##N();
|
||||
#define _DIS_E(N) DISABLE_AXIS_E##N();
|
||||
REPEAT(E_STEPPERS, _DIS_E)
|
||||
}
|
||||
|
||||
void disable_e_stepper(const uint8_t e) {
|
||||
#define _CASE_DIS_E(N) case N: disable_E##N(); break;
|
||||
#define _CASE_DIS_E(N) case N: DISABLE_AXIS_E##N(); break;
|
||||
switch (e) {
|
||||
REPEAT(EXTRUDERS, _CASE_DIS_E)
|
||||
}
|
||||
}
|
||||
|
||||
void disable_all_steppers() {
|
||||
disable_X();
|
||||
disable_Y();
|
||||
disable_Z();
|
||||
DISABLE_AXIS_X();
|
||||
DISABLE_AXIS_Y();
|
||||
DISABLE_AXIS_Z();
|
||||
disable_e_steppers();
|
||||
}
|
||||
|
||||
@@ -461,13 +461,13 @@ void manage_inactivity(const bool ignore_stepper_queue/*=false*/) {
|
||||
if (!already_shutdown_steppers) {
|
||||
already_shutdown_steppers = true; // L6470 SPI will consume 99% of free time without this
|
||||
#if ENABLED(DISABLE_INACTIVE_X)
|
||||
disable_X();
|
||||
DISABLE_AXIS_X();
|
||||
#endif
|
||||
#if ENABLED(DISABLE_INACTIVE_Y)
|
||||
disable_Y();
|
||||
DISABLE_AXIS_Y();
|
||||
#endif
|
||||
#if ENABLED(DISABLE_INACTIVE_Z)
|
||||
disable_Z();
|
||||
DISABLE_AXIS_Z();
|
||||
#endif
|
||||
#if ENABLED(DISABLE_INACTIVE_E)
|
||||
disable_e_steppers();
|
||||
@@ -542,11 +542,11 @@ void manage_inactivity(const bool ignore_stepper_queue/*=false*/) {
|
||||
#if ENABLED(SWITCHING_EXTRUDER)
|
||||
bool oldstatus;
|
||||
switch (active_extruder) {
|
||||
default: oldstatus = E0_ENABLE_READ(); enable_E0(); break;
|
||||
default: oldstatus = E0_ENABLE_READ(); ENABLE_AXIS_E0(); break;
|
||||
#if E_STEPPERS > 1
|
||||
case 2: case 3: oldstatus = E1_ENABLE_READ(); enable_E1(); break;
|
||||
case 2: case 3: oldstatus = E1_ENABLE_READ(); ENABLE_AXIS_E1(); break;
|
||||
#if E_STEPPERS > 2
|
||||
case 4: case 5: oldstatus = E2_ENABLE_READ(); enable_E2(); break;
|
||||
case 4: case 5: oldstatus = E2_ENABLE_READ(); ENABLE_AXIS_E2(); break;
|
||||
#endif // E_STEPPERS > 2
|
||||
#endif // E_STEPPERS > 1
|
||||
}
|
||||
@@ -554,7 +554,7 @@ void manage_inactivity(const bool ignore_stepper_queue/*=false*/) {
|
||||
bool oldstatus;
|
||||
switch (active_extruder) {
|
||||
default:
|
||||
#define _CASE_EN(N) case N: oldstatus = E##N##_ENABLE_READ(); enable_E##N(); break;
|
||||
#define _CASE_EN(N) case N: oldstatus = E##N##_ENABLE_READ(); ENABLE_AXIS_E##N(); break;
|
||||
REPEAT(E_STEPPERS, _CASE_EN);
|
||||
}
|
||||
#endif
|
||||
|
@@ -332,9 +332,10 @@
|
||||
//
|
||||
// Espressif ESP32 WiFi
|
||||
//
|
||||
#define BOARD_ESPRESSIF_ESP32 6000
|
||||
#define BOARD_ESPRESSIF_ESP32 6000 // Generic ESP32
|
||||
#define BOARD_MRR_ESPA 6001
|
||||
#define BOARD_MRR_ESPE 6002
|
||||
#define BOARD_E4D_BOX 6003 // E4d@BOX
|
||||
|
||||
//
|
||||
// Simulations
|
||||
|
@@ -29,12 +29,23 @@
|
||||
|
||||
#define _AXIS(A) (A##_AXIS)
|
||||
|
||||
#define _XMIN_ 100
|
||||
#define _YMIN_ 200
|
||||
#define _ZMIN_ 300
|
||||
#define _XMAX_ 101
|
||||
#define _YMAX_ 201
|
||||
#define _ZMAX_ 301
|
||||
#define _XMIN_ 100
|
||||
#define _YMIN_ 200
|
||||
#define _ZMIN_ 300
|
||||
#define _XMAX_ 101
|
||||
#define _YMAX_ 201
|
||||
#define _ZMAX_ 301
|
||||
#define _XDIAG_ 102
|
||||
#define _YDIAG_ 202
|
||||
#define _ZDIAG_ 302
|
||||
#define _E0DIAG_ 400
|
||||
#define _E1DIAG_ 401
|
||||
#define _E2DIAG_ 402
|
||||
#define _E3DIAG_ 403
|
||||
#define _E4DIAG_ 404
|
||||
#define _E5DIAG_ 405
|
||||
#define _E6DIAG_ 406
|
||||
#define _E7DIAG_ 407
|
||||
|
||||
#define _FORCE_INLINE_ __attribute__((__always_inline__)) __inline__
|
||||
#define FORCE_INLINE __attribute__((always_inline)) inline
|
||||
|
@@ -78,7 +78,7 @@ void Babystep::add_steps(const AxisEnum axis, const int16_t distance) {
|
||||
#endif
|
||||
|
||||
#if ENABLED(BABYSTEP_ALWAYS_AVAILABLE)
|
||||
#define BSA_ENABLE(AXIS) do{ switch (AXIS) { case X_AXIS: enable_X(); break; case Y_AXIS: enable_Y(); break; case Z_AXIS: enable_Z(); break; default: break; } }while(0)
|
||||
#define BSA_ENABLE(AXIS) do{ switch (AXIS) { case X_AXIS: ENABLE_AXIS_X(); break; case Y_AXIS: ENABLE_AXIS_Y(); break; case Z_AXIS: ENABLE_AXIS_Z(); break; default: break; } }while(0)
|
||||
#else
|
||||
#define BSA_ENABLE(AXIS) NOOP
|
||||
#endif
|
||||
|
@@ -242,7 +242,7 @@ public:
|
||||
uint8_t protocol() { return (meta >> 4) & 0xF; }
|
||||
uint8_t type() { return meta & 0xF; }
|
||||
void reset() { token = 0; sync = 0; meta = 0; size = 0; checksum = 0; }
|
||||
uint8_t data[1];
|
||||
uint8_t data[2];
|
||||
};
|
||||
|
||||
union Footer {
|
||||
|
@@ -564,7 +564,7 @@ void wait_for_confirmation(const bool is_reload/*=false*/, const int8_t max_beep
|
||||
#endif
|
||||
|
||||
// Re-enable the heaters if they timed out
|
||||
HOTEND_LOOP() thermalManager.reset_heater_idle_timer(e);
|
||||
HOTEND_LOOP() thermalManager.reset_hotend_idle_timer(e);
|
||||
|
||||
// Wait for the heaters to reach the target temperatures
|
||||
ensure_safe_temperature();
|
||||
@@ -633,7 +633,7 @@ void resume_print(const float &slow_load_length/*=0*/, const float &fast_load_le
|
||||
bool nozzle_timed_out = false;
|
||||
HOTEND_LOOP() {
|
||||
nozzle_timed_out |= thermalManager.hotend_idle[e].timed_out;
|
||||
thermalManager.reset_heater_idle_timer(e);
|
||||
thermalManager.reset_hotend_idle_timer(e);
|
||||
}
|
||||
|
||||
if (nozzle_timed_out || thermalManager.hotEnoughToExtrude(active_extruder)) // Load the new filament
|
||||
|
@@ -48,10 +48,10 @@ class ProbeTempComp {
|
||||
public:
|
||||
|
||||
static constexpr temp_calib_t cali_info_init[TSI_COUNT] = {
|
||||
{ 30, 10, 5, 30 + 10 * 5 }, // Probe
|
||||
{ 60, 10, 5, 60 + 10 * 5 }, // Bed
|
||||
{ 10, 5, 30, 30 + 10 * 5 }, // Probe
|
||||
{ 10, 5, 60, 60 + 10 * 5 }, // Bed
|
||||
#if ENABLED(USE_TEMP_EXT_COMPENSATION)
|
||||
{ 180, 5, 20, 180 + 5 * 20 } // Extruder
|
||||
{ 20, 5, 180, 180 + 5 * 20 } // Extruder
|
||||
#endif
|
||||
};
|
||||
static const temp_calib_t cali_info[TSI_COUNT];
|
||||
|
@@ -448,7 +448,7 @@ void MMU2::tool_change(uint8_t index) {
|
||||
|
||||
if (index != extruder) {
|
||||
|
||||
disable_E0();
|
||||
DISABLE_AXIS_E0();
|
||||
ui.status_printf_P(0, GET_TEXT(MSG_MMU2_LOADING_FILAMENT), int(index + 1));
|
||||
|
||||
command(MMU_CMD_T0 + index);
|
||||
@@ -459,7 +459,7 @@ void MMU2::tool_change(uint8_t index) {
|
||||
extruder = index; //filament change is finished
|
||||
active_extruder = 0;
|
||||
|
||||
enable_E0();
|
||||
ENABLE_AXIS_E0();
|
||||
|
||||
SERIAL_ECHO_START();
|
||||
SERIAL_ECHOLNPAIR(MSG_ACTIVE_EXTRUDER, int(extruder));
|
||||
@@ -497,13 +497,13 @@ void MMU2::tool_change(const char* special) {
|
||||
case 'x': {
|
||||
planner.synchronize();
|
||||
uint8_t index = mmu2_choose_filament();
|
||||
disable_E0();
|
||||
DISABLE_AXIS_E0();
|
||||
command(MMU_CMD_T0 + index);
|
||||
manage_response(true, true);
|
||||
command(MMU_CMD_C0);
|
||||
mmu_loop();
|
||||
|
||||
enable_E0();
|
||||
ENABLE_AXIS_E0();
|
||||
extruder = index;
|
||||
active_extruder = 0;
|
||||
} break;
|
||||
@@ -697,7 +697,7 @@ void MMU2::filament_runout() {
|
||||
|
||||
LCD_MESSAGEPGM(MSG_MMU2_EJECTING_FILAMENT);
|
||||
|
||||
enable_E0();
|
||||
ENABLE_AXIS_E0();
|
||||
current_position.e -= MMU2_FILAMENTCHANGE_EJECT_FEED;
|
||||
line_to_current_position(2500 / 60);
|
||||
planner.synchronize();
|
||||
@@ -731,7 +731,7 @@ void MMU2::filament_runout() {
|
||||
|
||||
BUZZ(200, 404);
|
||||
|
||||
disable_E0();
|
||||
DISABLE_AXIS_E0();
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -776,7 +776,7 @@ void MMU2::filament_runout() {
|
||||
void MMU2::execute_extruder_sequence(const E_Step * sequence, int steps) {
|
||||
|
||||
planner.synchronize();
|
||||
enable_E0();
|
||||
ENABLE_AXIS_E0();
|
||||
|
||||
const E_Step* step = sequence;
|
||||
|
||||
@@ -794,7 +794,7 @@ void MMU2::filament_runout() {
|
||||
step++;
|
||||
}
|
||||
|
||||
disable_E0();
|
||||
DISABLE_AXIS_E0();
|
||||
}
|
||||
|
||||
#endif // HAS_LCD_MENU && MMU2_MENUS
|
||||
|
@@ -439,7 +439,6 @@ void GcodeSuite::G33() {
|
||||
_opposite_results = (_4p_calibration && !towers_set) || probe_points >= 3,
|
||||
_endstop_results = probe_points != 1 && probe_points != -1 && probe_points != 0,
|
||||
_angle_results = probe_points >= 3 && towers_set;
|
||||
static const char save_message[] PROGMEM = "Save with M500 and/or copy to Configuration.h";
|
||||
int8_t iterations = 0;
|
||||
float test_precision,
|
||||
zero_std_dev = (verbose_level ? 999.0f : 0.0f), // 0.0 in dry-run mode : forced end
|
||||
@@ -625,8 +624,7 @@ void GcodeSuite::G33() {
|
||||
sprintf_P(&mess[15], PSTR("%03i.x"), (int)LROUND(zero_std_dev_min));
|
||||
ui.set_status(mess);
|
||||
print_calibration_settings(_endstop_results, _angle_results);
|
||||
serialprintPGM(save_message);
|
||||
SERIAL_EOL();
|
||||
SERIAL_ECHOLNPGM("Save with M500 and/or copy to Configuration.h");
|
||||
}
|
||||
else { // !end iterations
|
||||
char mess[15];
|
||||
|
@@ -256,7 +256,7 @@ void GcodeSuite::G76() {
|
||||
|
||||
// Initialize temperatures
|
||||
uint16_t target_bed = temp_comp.probe_calib_bed_temp,
|
||||
target_probe = temp_comp.cali_info_init[TSI_BED].start_temp;
|
||||
target_probe = temp_comp.cali_info_init[TSI_PROBE].start_temp;
|
||||
thermalManager.setTargetBed(target_bed);
|
||||
SERIAL_ECHOLNPGM("Waiting for bed and probe temperature.");
|
||||
while (fabs(thermalManager.degBed() - float(target_bed)) > 0.1f
|
||||
@@ -332,13 +332,13 @@ void GcodeSuite::G76() {
|
||||
else
|
||||
SERIAL_ECHOLNPAIR_F("Measured: ", measured_z);
|
||||
|
||||
if (target_probe == temp_comp.cali_info_init[TSI_BED].start_temp)
|
||||
if (target_probe == temp_comp.cali_info_init[TSI_PROBE].start_temp)
|
||||
temp_comp.prepare_new_calibration(measured_z);
|
||||
else
|
||||
temp_comp.push_back_new_measurement(TSI_PROBE, measured_z);
|
||||
|
||||
target_probe += temp_comp.cali_info_init[TSI_BED].temp_res;
|
||||
if (target_probe > temp_comp.cali_info_init[TSI_BED].end_temp) break;
|
||||
target_probe += temp_comp.cali_info_init[TSI_PROBE].temp_res;
|
||||
if (target_probe > temp_comp.cali_info_init[TSI_PROBE].end_temp) break;
|
||||
}
|
||||
|
||||
SERIAL_ECHOLNPAIR("Retrieved measurements: ", temp_comp.get_index());
|
||||
|
@@ -53,6 +53,9 @@
|
||||
*
|
||||
* This function requires the machine to be homed before invocation.
|
||||
*/
|
||||
|
||||
extern const char SP_Y_STR[];
|
||||
|
||||
void GcodeSuite::M48() {
|
||||
|
||||
if (axis_unhomed_error()) return;
|
||||
|
@@ -34,9 +34,9 @@
|
||||
*/
|
||||
void GcodeSuite::M17() {
|
||||
if (parser.seen("XYZE")) {
|
||||
if (parser.seen('X')) enable_X();
|
||||
if (parser.seen('Y')) enable_Y();
|
||||
if (parser.seen('Z')) enable_Z();
|
||||
if (parser.seen('X')) ENABLE_AXIS_X();
|
||||
if (parser.seen('Y')) ENABLE_AXIS_Y();
|
||||
if (parser.seen('Z')) ENABLE_AXIS_Z();
|
||||
#if HAS_E_STEPPER_ENABLE
|
||||
if (parser.seen('E')) enable_e_steppers();
|
||||
#endif
|
||||
@@ -57,9 +57,9 @@ void GcodeSuite::M18_M84() {
|
||||
else {
|
||||
if (parser.seen("XYZE")) {
|
||||
planner.synchronize();
|
||||
if (parser.seen('X')) disable_X();
|
||||
if (parser.seen('Y')) disable_Y();
|
||||
if (parser.seen('Z')) disable_Z();
|
||||
if (parser.seen('X')) DISABLE_AXIS_X();
|
||||
if (parser.seen('Y')) DISABLE_AXIS_Y();
|
||||
if (parser.seen('Z')) DISABLE_AXIS_Z();
|
||||
#if HAS_E_STEPPER_ENABLE
|
||||
if (parser.seen('E')) disable_e_steppers();
|
||||
#endif
|
||||
|
@@ -45,7 +45,7 @@ void GcodeSuite::G60() {
|
||||
}
|
||||
|
||||
stored_position[slot] = current_position;
|
||||
SBI(saved_slots, slot);
|
||||
SBI(saved_slots[slot >> 3], slot & 0x07);
|
||||
|
||||
#if ENABLED(SAVED_POSITIONS_DEBUG)
|
||||
const xyze_pos_t &pos = stored_position[slot];
|
||||
|
@@ -25,7 +25,7 @@
|
||||
#if SAVED_POSITIONS
|
||||
|
||||
#include "../../../core/language.h"
|
||||
#include "../../module/planner.h"
|
||||
#include "../../../module/planner.h"
|
||||
#include "../../gcode.h"
|
||||
#include "../../../module/motion.h"
|
||||
|
||||
@@ -48,7 +48,7 @@ void GcodeSuite::G61(void) {
|
||||
#endif
|
||||
|
||||
// No saved position? No axes being restored?
|
||||
if (!TEST(saved_slots, slot) || !parser.seen("XYZ")) return;
|
||||
if (!TEST(saved_slots[slot >> 3], slot & 0x07) || !parser.seen("XYZ")) return;
|
||||
|
||||
// Apply any given feedrate over 0.0
|
||||
const float fr = parser.linearval('F');
|
||||
|
@@ -20,12 +20,14 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include "../../inc/MarlinConfig.h"
|
||||
#include "../../inc/MarlinConfigPre.h"
|
||||
|
||||
#if HAS_RESUME_CONTINUE
|
||||
|
||||
#include "../gcode.h"
|
||||
#include "../../module/stepper.h"
|
||||
#include "../../module/planner.h"
|
||||
|
||||
#include "../../inc/MarlinConfig.h"
|
||||
|
||||
#if HAS_LCD_MENU
|
||||
#include "../../lcd/ultralcd.h"
|
||||
@@ -35,8 +37,6 @@
|
||||
#include "../../lcd/extensible_ui/ui_api.h"
|
||||
#endif
|
||||
|
||||
#include "../../sd/cardreader.h"
|
||||
|
||||
#if HAS_LEDS_OFF_FLAG
|
||||
#include "../../feature/leds/printer_event_leds.h"
|
||||
#endif
|
||||
|
@@ -20,6 +20,12 @@
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* gcode/temperature/M104_M109.cpp
|
||||
*
|
||||
* Hotend target temperature control
|
||||
*/
|
||||
|
||||
#include "../../inc/MarlinConfigPre.h"
|
||||
|
||||
#if EXTRUDERS
|
||||
@@ -73,14 +79,11 @@ void GcodeSuite::M104() {
|
||||
#if ENABLED(PRINTJOB_TIMER_AUTOSTART)
|
||||
/**
|
||||
* Stop the timer at the end of print. Start is managed by 'heat and wait' M109.
|
||||
* We use half EXTRUDE_MINTEMP here to allow nozzles to be put into hot
|
||||
* standby mode, for instance in a dual extruder setup, without affecting
|
||||
* the running print timer.
|
||||
* Hotends use EXTRUDE_MINTEMP / 2 to allow nozzles to be put into hot standby
|
||||
* mode, for instance in a dual extruder setup, without affecting the running
|
||||
* print timer.
|
||||
*/
|
||||
if (temp <= (EXTRUDE_MINTEMP) / 2) {
|
||||
print_job_timer.stop();
|
||||
ui.reset_status();
|
||||
}
|
||||
thermalManager.check_timer_autostart(false, true);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -90,8 +93,10 @@ void GcodeSuite::M104() {
|
||||
}
|
||||
|
||||
/**
|
||||
* M109: Sxxx Wait for extruder(s) to reach temperature. Waits only when heating.
|
||||
* Rxxx Wait for extruder(s) to reach temperature. Waits when heating and cooling.
|
||||
* M109: Sxxx Wait for hotend(s) to reach temperature. Waits only when heating.
|
||||
* Rxxx Wait for hotend(s) to reach temperature. Waits when heating and cooling.
|
||||
*
|
||||
* With PRINTJOB_TIMER_AUTOSTART also start the job timer on heating and stop it if turned off.
|
||||
*/
|
||||
void GcodeSuite::M109() {
|
||||
|
||||
@@ -125,12 +130,7 @@ void GcodeSuite::M109() {
|
||||
* standby mode, (e.g., in a dual extruder setup) without affecting
|
||||
* the running print timer.
|
||||
*/
|
||||
if (parser.value_celsius() <= (EXTRUDE_MINTEMP) / 2) {
|
||||
print_job_timer.stop();
|
||||
ui.reset_status();
|
||||
}
|
||||
else
|
||||
startOrResumeJob();
|
||||
thermalManager.check_timer_autostart(true, true);
|
||||
#endif
|
||||
|
||||
#if HAS_DISPLAY
|
||||
|
@@ -20,6 +20,12 @@
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* gcode/temperature/M140_M190.cpp
|
||||
*
|
||||
* Bed target temperature control
|
||||
*/
|
||||
|
||||
#include "../../inc/MarlinConfig.h"
|
||||
|
||||
#if HAS_HEATED_BED
|
||||
@@ -50,6 +56,8 @@ void GcodeSuite::M140() {
|
||||
/**
|
||||
* M190: Sxxx Wait for bed current temp to reach target temp. Waits only when heating
|
||||
* Rxxx Wait for bed current temp to reach target temp. Waits when heating and cooling
|
||||
*
|
||||
* With PRINTJOB_TIMER_AUTOSTART also start the job timer on heating.
|
||||
*/
|
||||
void GcodeSuite::M190() {
|
||||
if (DEBUGGING(DRYRUN)) return;
|
||||
@@ -58,8 +66,7 @@ void GcodeSuite::M190() {
|
||||
if (no_wait_for_cooling || parser.seenval('R')) {
|
||||
thermalManager.setTargetBed(parser.value_celsius());
|
||||
#if ENABLED(PRINTJOB_TIMER_AUTOSTART)
|
||||
if (parser.value_celsius() > BED_MINTEMP)
|
||||
startOrResumeJob();
|
||||
thermalManager.check_timer_autostart(true, false);
|
||||
#endif
|
||||
}
|
||||
else return;
|
||||
|
@@ -20,6 +20,12 @@
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* gcode/temperature/M141_M191.cpp
|
||||
*
|
||||
* Chamber target temperature control
|
||||
*/
|
||||
|
||||
#include "../../inc/MarlinConfig.h"
|
||||
|
||||
#if HAS_HEATED_CHAMBER
|
||||
@@ -59,8 +65,7 @@ void GcodeSuite::M191() {
|
||||
if (no_wait_for_cooling || parser.seenval('R')) {
|
||||
thermalManager.setTargetChamber(parser.value_celsius());
|
||||
#if ENABLED(PRINTJOB_TIMER_AUTOSTART)
|
||||
if (parser.value_celsius() > CHAMBER_MINTEMP)
|
||||
startOrResumeJob();
|
||||
thermalManager.check_timer_autostart(true, false);
|
||||
#endif
|
||||
}
|
||||
else return;
|
||||
|
@@ -679,48 +679,110 @@
|
||||
#if X_HOME_DIR > 0
|
||||
#if X2_USE_ENDSTOP == _XMIN_
|
||||
#define X2_MAX_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING
|
||||
#define X2_MAX_PIN X_MIN_PIN
|
||||
#elif X2_USE_ENDSTOP == _XMAX_
|
||||
#define X2_MAX_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING
|
||||
#define X2_MAX_PIN X_MAX_PIN
|
||||
#elif X2_USE_ENDSTOP == _YMIN_
|
||||
#define X2_MAX_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING
|
||||
#define X2_MAX_PIN Y_MIN_PIN
|
||||
#elif X2_USE_ENDSTOP == _YMAX_
|
||||
#define X2_MAX_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING
|
||||
#define X2_MAX_PIN Y_MAX_PIN
|
||||
#elif X2_USE_ENDSTOP == _ZMIN_
|
||||
#define X2_MAX_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING
|
||||
#define X2_MAX_PIN Z_MIN_PIN
|
||||
#elif X2_USE_ENDSTOP == _ZMAX_
|
||||
#define X2_MAX_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING
|
||||
#define X2_MAX_PIN Z_MAX_PIN
|
||||
#else
|
||||
#define X2_MAX_ENDSTOP_INVERTING false
|
||||
#endif
|
||||
#ifndef X2_MAX_PIN
|
||||
#if X2_USE_ENDSTOP == _XMIN_
|
||||
#define X2_MAX_PIN X_MIN_PIN
|
||||
#elif X2_USE_ENDSTOP == _XMAX_
|
||||
#define X2_MAX_PIN X_MAX_PIN
|
||||
#elif X2_USE_ENDSTOP == _YMIN_
|
||||
#define X2_MAX_PIN Y_MIN_PIN
|
||||
#elif X2_USE_ENDSTOP == _YMAX_
|
||||
#define X2_MAX_PIN Y_MAX_PIN
|
||||
#elif X2_USE_ENDSTOP == _ZMIN_
|
||||
#define X2_MAX_PIN Z_MIN_PIN
|
||||
#elif X2_USE_ENDSTOP == _ZMAX_
|
||||
#define X2_MAX_PIN Z_MAX_PIN
|
||||
#elif X2_USE_ENDSTOP == _XDIAG_
|
||||
#define X2_MAX_PIN X_DIAG_PIN
|
||||
#elif X2_USE_ENDSTOP == _YDIAG_
|
||||
#define X2_MAX_PIN Y_DIAG_PIN
|
||||
#elif X2_USE_ENDSTOP == _ZDIAG_
|
||||
#define X2_MAX_PIN Z_DIAG_PIN
|
||||
#elif X2_USE_ENDSTOP == _E0DIAG_
|
||||
#define X2_MAX_PIN E0_DIAG_PIN
|
||||
#elif X2_USE_ENDSTOP == _E1DIAG_
|
||||
#define X2_MAX_PIN E1_DIAG_PIN
|
||||
#elif X2_USE_ENDSTOP == _E2DIAG_
|
||||
#define X2_MAX_PIN E2_DIAG_PIN
|
||||
#elif X2_USE_ENDSTOP == _E3DIAG_
|
||||
#define X2_MAX_PIN E3_DIAG_PIN
|
||||
#elif X2_USE_ENDSTOP == _E4DIAG_
|
||||
#define X2_MAX_PIN E4_DIAG_PIN
|
||||
#elif X2_USE_ENDSTOP == _E5DIAG_
|
||||
#define X2_MAX_PIN E5_DIAG_PIN
|
||||
#elif X2_USE_ENDSTOP == _E6DIAG_
|
||||
#define X2_MAX_PIN E6_DIAG_PIN
|
||||
#elif X2_USE_ENDSTOP == _E7DIAG_
|
||||
#define X2_MAX_PIN E7_DIAG_PIN
|
||||
#endif
|
||||
#endif
|
||||
#define X2_MIN_ENDSTOP_INVERTING false
|
||||
#else
|
||||
#if X2_USE_ENDSTOP == _XMIN_
|
||||
#define X2_MIN_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING
|
||||
#define X2_MIN_PIN X_MIN_PIN
|
||||
#elif X2_USE_ENDSTOP == _XMAX_
|
||||
#define X2_MIN_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING
|
||||
#define X2_MIN_PIN X_MAX_PIN
|
||||
#elif X2_USE_ENDSTOP == _YMIN_
|
||||
#define X2_MIN_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING
|
||||
#define X2_MIN_PIN Y_MIN_PIN
|
||||
#elif X2_USE_ENDSTOP == _YMAX_
|
||||
#define X2_MIN_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING
|
||||
#define X2_MIN_PIN Y_MAX_PIN
|
||||
#elif X2_USE_ENDSTOP == _ZMIN_
|
||||
#define X2_MIN_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING
|
||||
#define X2_MIN_PIN Z_MIN_PIN
|
||||
#elif X2_USE_ENDSTOP == _ZMAX_
|
||||
#define X2_MIN_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING
|
||||
#define X2_MIN_PIN Z_MAX_PIN
|
||||
#else
|
||||
#define X2_MIN_ENDSTOP_INVERTING false
|
||||
#endif
|
||||
#ifndef X2_MIN_PIN
|
||||
#if X2_USE_ENDSTOP == _XMIN_
|
||||
#define X2_MIN_PIN X_MIN_PIN
|
||||
#elif X2_USE_ENDSTOP == _XMAX_
|
||||
#define X2_MIN_PIN X_MAX_PIN
|
||||
#elif X2_USE_ENDSTOP == _YMIN_
|
||||
#define X2_MIN_PIN Y_MIN_PIN
|
||||
#elif X2_USE_ENDSTOP == _YMAX_
|
||||
#define X2_MIN_PIN Y_MAX_PIN
|
||||
#elif X2_USE_ENDSTOP == _ZMIN_
|
||||
#define X2_MIN_PIN Z_MIN_PIN
|
||||
#elif X2_USE_ENDSTOP == _ZMAX_
|
||||
#define X2_MIN_PIN Z_MAX_PIN
|
||||
#elif X2_USE_ENDSTOP == _XDIAG_
|
||||
#define X2_MIN_PIN X_DIAG_PIN
|
||||
#elif X2_USE_ENDSTOP == _YDIAG_
|
||||
#define X2_MIN_PIN Y_DIAG_PIN
|
||||
#elif X2_USE_ENDSTOP == _ZDIAG_
|
||||
#define X2_MIN_PIN Z_DIAG_PIN
|
||||
#elif X2_USE_ENDSTOP == _E0DIAG_
|
||||
#define X2_MIN_PIN E0_DIAG_PIN
|
||||
#elif X2_USE_ENDSTOP == _E1DIAG_
|
||||
#define X2_MIN_PIN E1_DIAG_PIN
|
||||
#elif X2_USE_ENDSTOP == _E2DIAG_
|
||||
#define X2_MIN_PIN E2_DIAG_PIN
|
||||
#elif X2_USE_ENDSTOP == _E3DIAG_
|
||||
#define X2_MIN_PIN E3_DIAG_PIN
|
||||
#elif X2_USE_ENDSTOP == _E4DIAG_
|
||||
#define X2_MIN_PIN E4_DIAG_PIN
|
||||
#elif X2_USE_ENDSTOP == _E5DIAG_
|
||||
#define X2_MIN_PIN E5_DIAG_PIN
|
||||
#elif X2_USE_ENDSTOP == _E6DIAG_
|
||||
#define X2_MIN_PIN E6_DIAG_PIN
|
||||
#elif X2_USE_ENDSTOP == _E7DIAG_
|
||||
#define X2_MIN_PIN E7_DIAG_PIN
|
||||
#endif
|
||||
#endif
|
||||
#define X2_MAX_ENDSTOP_INVERTING false
|
||||
#endif
|
||||
#endif
|
||||
@@ -732,48 +794,110 @@
|
||||
#if Y_HOME_DIR > 0
|
||||
#if Y2_USE_ENDSTOP == _XMIN_
|
||||
#define Y2_MAX_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING
|
||||
#define Y2_MAX_PIN X_MIN_PIN
|
||||
#elif Y2_USE_ENDSTOP == _XMAX_
|
||||
#define Y2_MAX_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING
|
||||
#define Y2_MAX_PIN X_MAX_PIN
|
||||
#elif Y2_USE_ENDSTOP == _YMIN_
|
||||
#define Y2_MAX_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING
|
||||
#define Y2_MAX_PIN Y_MIN_PIN
|
||||
#elif Y2_USE_ENDSTOP == _YMAX_
|
||||
#define Y2_MAX_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING
|
||||
#define Y2_MAX_PIN Y_MAX_PIN
|
||||
#elif Y2_USE_ENDSTOP == _ZMIN_
|
||||
#define Y2_MAX_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING
|
||||
#define Y2_MAX_PIN Z_MIN_PIN
|
||||
#elif Y2_USE_ENDSTOP == _ZMAX_
|
||||
#define Y2_MAX_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING
|
||||
#define Y2_MAX_PIN Z_MAX_PIN
|
||||
#else
|
||||
#define Y2_MAX_ENDSTOP_INVERTING false
|
||||
#endif
|
||||
#ifndef Y2_MAX_PIN
|
||||
#if Y2_USE_ENDSTOP == _XMIN_
|
||||
#define Y2_MAX_PIN X_MIN_PIN
|
||||
#elif Y2_USE_ENDSTOP == _XMAX_
|
||||
#define Y2_MAX_PIN X_MAX_PIN
|
||||
#elif Y2_USE_ENDSTOP == _YMIN_
|
||||
#define Y2_MAX_PIN Y_MIN_PIN
|
||||
#elif Y2_USE_ENDSTOP == _YMAX_
|
||||
#define Y2_MAX_PIN Y_MAX_PIN
|
||||
#elif Y2_USE_ENDSTOP == _ZMIN_
|
||||
#define Y2_MAX_PIN Z_MIN_PIN
|
||||
#elif Y2_USE_ENDSTOP == _ZMAX_
|
||||
#define Y2_MAX_PIN Z_MAX_PIN
|
||||
#elif Y2_USE_ENDSTOP == _XDIAG_
|
||||
#define Y2_MAX_PIN X_DIAG_PIN
|
||||
#elif Y2_USE_ENDSTOP == _YDIAG_
|
||||
#define Y2_MAX_PIN Y_DIAG_PIN
|
||||
#elif Y2_USE_ENDSTOP == _ZDIAG_
|
||||
#define Y2_MAX_PIN Z_DIAG_PIN
|
||||
#elif Y2_USE_ENDSTOP == _E0DIAG_
|
||||
#define Y2_MAX_PIN E0_DIAG_PIN
|
||||
#elif Y2_USE_ENDSTOP == _E1DIAG_
|
||||
#define Y2_MAX_PIN E1_DIAG_PIN
|
||||
#elif Y2_USE_ENDSTOP == _E2DIAG_
|
||||
#define Y2_MAX_PIN E2_DIAG_PIN
|
||||
#elif Y2_USE_ENDSTOP == _E3DIAG_
|
||||
#define Y2_MAX_PIN E3_DIAG_PIN
|
||||
#elif Y2_USE_ENDSTOP == _E4DIAG_
|
||||
#define Y2_MAX_PIN E4_DIAG_PIN
|
||||
#elif Y2_USE_ENDSTOP == _E5DIAG_
|
||||
#define Y2_MAX_PIN E5_DIAG_PIN
|
||||
#elif Y2_USE_ENDSTOP == _E6DIAG_
|
||||
#define Y2_MAX_PIN E6_DIAG_PIN
|
||||
#elif Y2_USE_ENDSTOP == _E7DIAG_
|
||||
#define Y2_MAX_PIN E7_DIAG_PIN
|
||||
#endif
|
||||
#endif
|
||||
#define Y2_MIN_ENDSTOP_INVERTING false
|
||||
#else
|
||||
#if Y2_USE_ENDSTOP == _XMIN_
|
||||
#define Y2_MIN_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING
|
||||
#define Y2_MIN_PIN X_MIN_PIN
|
||||
#elif Y2_USE_ENDSTOP == _XMAX_
|
||||
#define Y2_MIN_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING
|
||||
#define Y2_MIN_PIN X_MAX_PIN
|
||||
#elif Y2_USE_ENDSTOP == _YMIN_
|
||||
#define Y2_MIN_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING
|
||||
#define Y2_MIN_PIN Y_MIN_PIN
|
||||
#elif Y2_USE_ENDSTOP == _YMAX_
|
||||
#define Y2_MIN_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING
|
||||
#define Y2_MIN_PIN Y_MAX_PIN
|
||||
#elif Y2_USE_ENDSTOP == _ZMIN_
|
||||
#define Y2_MIN_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING
|
||||
#define Y2_MIN_PIN Z_MIN_PIN
|
||||
#elif Y2_USE_ENDSTOP == _ZMAX_
|
||||
#define Y2_MIN_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING
|
||||
#define Y2_MIN_PIN Z_MAX_PIN
|
||||
#else
|
||||
#define Y2_MIN_ENDSTOP_INVERTING false
|
||||
#endif
|
||||
#ifndef Y2_MIN_PIN
|
||||
#if Y2_USE_ENDSTOP == _XMIN_
|
||||
#define Y2_MIN_PIN X_MIN_PIN
|
||||
#elif Y2_USE_ENDSTOP == _XMAX_
|
||||
#define Y2_MIN_PIN X_MAX_PIN
|
||||
#elif Y2_USE_ENDSTOP == _YMIN_
|
||||
#define Y2_MIN_PIN Y_MIN_PIN
|
||||
#elif Y2_USE_ENDSTOP == _YMAX_
|
||||
#define Y2_MIN_PIN Y_MAX_PIN
|
||||
#elif Y2_USE_ENDSTOP == _ZMIN_
|
||||
#define Y2_MIN_PIN Z_MIN_PIN
|
||||
#elif Y2_USE_ENDSTOP == _ZMAX_
|
||||
#define Y2_MIN_PIN Z_MAX_PIN
|
||||
#elif Y2_USE_ENDSTOP == _XDIAG_
|
||||
#define Y2_MIN_PIN X_DIAG_PIN
|
||||
#elif Y2_USE_ENDSTOP == _YDIAG_
|
||||
#define Y2_MIN_PIN Y_DIAG_PIN
|
||||
#elif Y2_USE_ENDSTOP == _ZDIAG_
|
||||
#define Y2_MIN_PIN Z_DIAG_PIN
|
||||
#elif Y2_USE_ENDSTOP == _E0DIAG_
|
||||
#define Y2_MIN_PIN E0_DIAG_PIN
|
||||
#elif Y2_USE_ENDSTOP == _E1DIAG_
|
||||
#define Y2_MIN_PIN E1_DIAG_PIN
|
||||
#elif Y2_USE_ENDSTOP == _E2DIAG_
|
||||
#define Y2_MIN_PIN E2_DIAG_PIN
|
||||
#elif Y2_USE_ENDSTOP == _E3DIAG_
|
||||
#define Y2_MIN_PIN E3_DIAG_PIN
|
||||
#elif Y2_USE_ENDSTOP == _E4DIAG_
|
||||
#define Y2_MIN_PIN E4_DIAG_PIN
|
||||
#elif Y2_USE_ENDSTOP == _E5DIAG_
|
||||
#define Y2_MIN_PIN E5_DIAG_PIN
|
||||
#elif Y2_USE_ENDSTOP == _E6DIAG_
|
||||
#define Y2_MIN_PIN E6_DIAG_PIN
|
||||
#elif Y2_USE_ENDSTOP == _E7DIAG_
|
||||
#define Y2_MIN_PIN E7_DIAG_PIN
|
||||
#endif
|
||||
#endif
|
||||
#define Y2_MAX_ENDSTOP_INVERTING false
|
||||
#endif
|
||||
#endif
|
||||
@@ -786,48 +910,110 @@
|
||||
#if Z_HOME_DIR > 0
|
||||
#if Z2_USE_ENDSTOP == _XMIN_
|
||||
#define Z2_MAX_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING
|
||||
#define Z2_MAX_PIN X_MIN_PIN
|
||||
#elif Z2_USE_ENDSTOP == _XMAX_
|
||||
#define Z2_MAX_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING
|
||||
#define Z2_MAX_PIN X_MAX_PIN
|
||||
#elif Z2_USE_ENDSTOP == _YMIN_
|
||||
#define Z2_MAX_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING
|
||||
#define Z2_MAX_PIN Y_MIN_PIN
|
||||
#elif Z2_USE_ENDSTOP == _YMAX_
|
||||
#define Z2_MAX_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING
|
||||
#define Z2_MAX_PIN Y_MAX_PIN
|
||||
#elif Z2_USE_ENDSTOP == _ZMIN_
|
||||
#define Z2_MAX_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING
|
||||
#define Z2_MAX_PIN Z_MIN_PIN
|
||||
#elif Z2_USE_ENDSTOP == _ZMAX_
|
||||
#define Z2_MAX_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING
|
||||
#define Z2_MAX_PIN Z_MAX_PIN
|
||||
#else
|
||||
#define Z2_MAX_ENDSTOP_INVERTING false
|
||||
#endif
|
||||
#ifndef Z2_MAX_PIN
|
||||
#if Z2_USE_ENDSTOP == _XMIN_
|
||||
#define Z2_MAX_PIN X_MIN_PIN
|
||||
#elif Z2_USE_ENDSTOP == _XMAX_
|
||||
#define Z2_MAX_PIN X_MAX_PIN
|
||||
#elif Z2_USE_ENDSTOP == _YMIN_
|
||||
#define Z2_MAX_PIN Y_MIN_PIN
|
||||
#elif Z2_USE_ENDSTOP == _YMAX_
|
||||
#define Z2_MAX_PIN Y_MAX_PIN
|
||||
#elif Z2_USE_ENDSTOP == _ZMIN_
|
||||
#define Z2_MAX_PIN Z_MIN_PIN
|
||||
#elif Z2_USE_ENDSTOP == _ZMAX_
|
||||
#define Z2_MAX_PIN Z_MAX_PIN
|
||||
#elif Z2_USE_ENDSTOP == _XDIAG_
|
||||
#define Z2_MAX_PIN X_DIAG_PIN
|
||||
#elif Z2_USE_ENDSTOP == _YDIAG_
|
||||
#define Z2_MAX_PIN Y_DIAG_PIN
|
||||
#elif Z2_USE_ENDSTOP == _ZDIAG_
|
||||
#define Z2_MAX_PIN Z_DIAG_PIN
|
||||
#elif Z2_USE_ENDSTOP == _E0DIAG_
|
||||
#define Z2_MAX_PIN E0_DIAG_PIN
|
||||
#elif Z2_USE_ENDSTOP == _E1DIAG_
|
||||
#define Z2_MAX_PIN E1_DIAG_PIN
|
||||
#elif Z2_USE_ENDSTOP == _E2DIAG_
|
||||
#define Z2_MAX_PIN E2_DIAG_PIN
|
||||
#elif Z2_USE_ENDSTOP == _E3DIAG_
|
||||
#define Z2_MAX_PIN E3_DIAG_PIN
|
||||
#elif Z2_USE_ENDSTOP == _E4DIAG_
|
||||
#define Z2_MAX_PIN E4_DIAG_PIN
|
||||
#elif Z2_USE_ENDSTOP == _E5DIAG_
|
||||
#define Z2_MAX_PIN E5_DIAG_PIN
|
||||
#elif Z2_USE_ENDSTOP == _E6DIAG_
|
||||
#define Z2_MAX_PIN E6_DIAG_PIN
|
||||
#elif Z2_USE_ENDSTOP == _E7DIAG_
|
||||
#define Z2_MAX_PIN E7_DIAG_PIN
|
||||
#endif
|
||||
#endif
|
||||
#define Z2_MIN_ENDSTOP_INVERTING false
|
||||
#else
|
||||
#if Z2_USE_ENDSTOP == _XMIN_
|
||||
#define Z2_MIN_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING
|
||||
#define Z2_MIN_PIN X_MIN_PIN
|
||||
#elif Z2_USE_ENDSTOP == _XMAX_
|
||||
#define Z2_MIN_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING
|
||||
#define Z2_MIN_PIN X_MAX_PIN
|
||||
#elif Z2_USE_ENDSTOP == _YMIN_
|
||||
#define Z2_MIN_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING
|
||||
#define Z2_MIN_PIN Y_MIN_PIN
|
||||
#elif Z2_USE_ENDSTOP == _YMAX_
|
||||
#define Z2_MIN_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING
|
||||
#define Z2_MIN_PIN Y_MAX_PIN
|
||||
#elif Z2_USE_ENDSTOP == _ZMIN_
|
||||
#define Z2_MIN_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING
|
||||
#define Z2_MIN_PIN Z_MIN_PIN
|
||||
#elif Z2_USE_ENDSTOP == _ZMAX_
|
||||
#define Z2_MIN_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING
|
||||
#define Z2_MIN_PIN Z_MAX_PIN
|
||||
#else
|
||||
#define Z2_MIN_ENDSTOP_INVERTING false
|
||||
#endif
|
||||
#ifndef Z2_MIN_PIN
|
||||
#if Z2_USE_ENDSTOP == _XMIN_
|
||||
#define Z2_MIN_PIN X_MIN_PIN
|
||||
#elif Z2_USE_ENDSTOP == _XMAX_
|
||||
#define Z2_MIN_PIN X_MAX_PIN
|
||||
#elif Z2_USE_ENDSTOP == _YMIN_
|
||||
#define Z2_MIN_PIN Y_MIN_PIN
|
||||
#elif Z2_USE_ENDSTOP == _YMAX_
|
||||
#define Z2_MIN_PIN Y_MAX_PIN
|
||||
#elif Z2_USE_ENDSTOP == _ZMIN_
|
||||
#define Z2_MIN_PIN Z_MIN_PIN
|
||||
#elif Z2_USE_ENDSTOP == _ZMAX_
|
||||
#define Z2_MIN_PIN Z_MAX_PIN
|
||||
#elif Z2_USE_ENDSTOP == _XDIAG_
|
||||
#define Z2_MIN_PIN X_DIAG_PIN
|
||||
#elif Z2_USE_ENDSTOP == _YDIAG_
|
||||
#define Z2_MIN_PIN Y_DIAG_PIN
|
||||
#elif Z2_USE_ENDSTOP == _ZDIAG_
|
||||
#define Z2_MIN_PIN Z_DIAG_PIN
|
||||
#elif Z2_USE_ENDSTOP == _E0DIAG_
|
||||
#define Z2_MIN_PIN E0_DIAG_PIN
|
||||
#elif Z2_USE_ENDSTOP == _E1DIAG_
|
||||
#define Z2_MIN_PIN E1_DIAG_PIN
|
||||
#elif Z2_USE_ENDSTOP == _E2DIAG_
|
||||
#define Z2_MIN_PIN E2_DIAG_PIN
|
||||
#elif Z2_USE_ENDSTOP == _E3DIAG_
|
||||
#define Z2_MIN_PIN E3_DIAG_PIN
|
||||
#elif Z2_USE_ENDSTOP == _E4DIAG_
|
||||
#define Z2_MIN_PIN E4_DIAG_PIN
|
||||
#elif Z2_USE_ENDSTOP == _E5DIAG_
|
||||
#define Z2_MIN_PIN E5_DIAG_PIN
|
||||
#elif Z2_USE_ENDSTOP == _E6DIAG_
|
||||
#define Z2_MIN_PIN E6_DIAG_PIN
|
||||
#elif Z2_USE_ENDSTOP == _E7DIAG_
|
||||
#define Z2_MIN_PIN E7_DIAG_PIN
|
||||
#endif
|
||||
#endif
|
||||
#define Z2_MAX_ENDSTOP_INVERTING false
|
||||
#endif
|
||||
|
||||
@@ -835,48 +1021,110 @@
|
||||
#if Z_HOME_DIR > 0
|
||||
#if Z3_USE_ENDSTOP == _XMIN_
|
||||
#define Z3_MAX_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING
|
||||
#define Z3_MAX_PIN X_MIN_PIN
|
||||
#elif Z3_USE_ENDSTOP == _XMAX_
|
||||
#define Z3_MAX_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING
|
||||
#define Z3_MAX_PIN X_MAX_PIN
|
||||
#elif Z3_USE_ENDSTOP == _YMIN_
|
||||
#define Z3_MAX_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING
|
||||
#define Z3_MAX_PIN Y_MIN_PIN
|
||||
#elif Z3_USE_ENDSTOP == _YMAX_
|
||||
#define Z3_MAX_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING
|
||||
#define Z3_MAX_PIN Y_MAX_PIN
|
||||
#elif Z3_USE_ENDSTOP == _ZMIN_
|
||||
#define Z3_MAX_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING
|
||||
#define Z3_MAX_PIN Z_MIN_PIN
|
||||
#elif Z3_USE_ENDSTOP == _ZMAX_
|
||||
#define Z3_MAX_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING
|
||||
#define Z3_MAX_PIN Z_MAX_PIN
|
||||
#else
|
||||
#define Z3_MAX_ENDSTOP_INVERTING false
|
||||
#endif
|
||||
#ifndef Z3_MAX_PIN
|
||||
#if Z3_USE_ENDSTOP == _XMIN_
|
||||
#define Z3_MAX_PIN X_MIN_PIN
|
||||
#elif Z3_USE_ENDSTOP == _XMAX_
|
||||
#define Z3_MAX_PIN X_MAX_PIN
|
||||
#elif Z3_USE_ENDSTOP == _YMIN_
|
||||
#define Z3_MAX_PIN Y_MIN_PIN
|
||||
#elif Z3_USE_ENDSTOP == _YMAX_
|
||||
#define Z3_MAX_PIN Y_MAX_PIN
|
||||
#elif Z3_USE_ENDSTOP == _ZMIN_
|
||||
#define Z3_MAX_PIN Z_MIN_PIN
|
||||
#elif Z3_USE_ENDSTOP == _ZMAX_
|
||||
#define Z3_MAX_PIN Z_MAX_PIN
|
||||
#elif Z3_USE_ENDSTOP == _XDIAG_
|
||||
#define Z3_MAX_PIN X_DIAG_PIN
|
||||
#elif Z3_USE_ENDSTOP == _YDIAG_
|
||||
#define Z3_MAX_PIN Y_DIAG_PIN
|
||||
#elif Z3_USE_ENDSTOP == _ZDIAG_
|
||||
#define Z3_MAX_PIN Z_DIAG_PIN
|
||||
#elif Z3_USE_ENDSTOP == _E0DIAG_
|
||||
#define Z3_MAX_PIN E0_DIAG_PIN
|
||||
#elif Z3_USE_ENDSTOP == _E1DIAG_
|
||||
#define Z3_MAX_PIN E1_DIAG_PIN
|
||||
#elif Z3_USE_ENDSTOP == _E2DIAG_
|
||||
#define Z3_MAX_PIN E2_DIAG_PIN
|
||||
#elif Z3_USE_ENDSTOP == _E3DIAG_
|
||||
#define Z3_MAX_PIN E3_DIAG_PIN
|
||||
#elif Z3_USE_ENDSTOP == _E4DIAG_
|
||||
#define Z3_MAX_PIN E4_DIAG_PIN
|
||||
#elif Z3_USE_ENDSTOP == _E5DIAG_
|
||||
#define Z3_MAX_PIN E5_DIAG_PIN
|
||||
#elif Z3_USE_ENDSTOP == _E6DIAG_
|
||||
#define Z3_MAX_PIN E6_DIAG_PIN
|
||||
#elif Z3_USE_ENDSTOP == _E7DIAG_
|
||||
#define Z3_MAX_PIN E7_DIAG_PIN
|
||||
#endif
|
||||
#endif
|
||||
#define Z3_MIN_ENDSTOP_INVERTING false
|
||||
#else
|
||||
#if Z3_USE_ENDSTOP == _XMIN_
|
||||
#define Z3_MIN_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING
|
||||
#define Z3_MIN_PIN X_MIN_PIN
|
||||
#elif Z3_USE_ENDSTOP == _XMAX_
|
||||
#define Z3_MIN_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING
|
||||
#define Z3_MIN_PIN X_MAX_PIN
|
||||
#elif Z3_USE_ENDSTOP == _YMIN_
|
||||
#define Z3_MIN_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING
|
||||
#define Z3_MIN_PIN Y_MIN_PIN
|
||||
#elif Z3_USE_ENDSTOP == _YMAX_
|
||||
#define Z3_MIN_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING
|
||||
#define Z3_MIN_PIN Y_MAX_PIN
|
||||
#elif Z3_USE_ENDSTOP == _ZMIN_
|
||||
#define Z3_MIN_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING
|
||||
#define Z3_MIN_PIN Z_MIN_PIN
|
||||
#elif Z3_USE_ENDSTOP == _ZMAX_
|
||||
#define Z3_MIN_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING
|
||||
#define Z3_MIN_PIN Z_MAX_PIN
|
||||
#else
|
||||
#define Z3_MIN_ENDSTOP_INVERTING false
|
||||
#endif
|
||||
#ifndef Z3_MIN_PIN
|
||||
#if Z3_USE_ENDSTOP == _XMIN_
|
||||
#define Z3_MIN_PIN X_MIN_PIN
|
||||
#elif Z3_USE_ENDSTOP == _XMAX_
|
||||
#define Z3_MIN_PIN X_MAX_PIN
|
||||
#elif Z3_USE_ENDSTOP == _YMIN_
|
||||
#define Z3_MIN_PIN Y_MIN_PIN
|
||||
#elif Z3_USE_ENDSTOP == _YMAX_
|
||||
#define Z3_MIN_PIN Y_MAX_PIN
|
||||
#elif Z3_USE_ENDSTOP == _ZMIN_
|
||||
#define Z3_MIN_PIN Z_MIN_PIN
|
||||
#elif Z3_USE_ENDSTOP == _ZMAX_
|
||||
#define Z3_MIN_PIN Z_MAX_PIN
|
||||
#elif Z3_USE_ENDSTOP == _XDIAG_
|
||||
#define Z3_MIN_PIN X_DIAG_PIN
|
||||
#elif Z3_USE_ENDSTOP == _YDIAG_
|
||||
#define Z3_MIN_PIN Y_DIAG_PIN
|
||||
#elif Z3_USE_ENDSTOP == _ZDIAG_
|
||||
#define Z3_MIN_PIN Z_DIAG_PIN
|
||||
#elif Z3_USE_ENDSTOP == _E0DIAG_
|
||||
#define Z3_MIN_PIN E0_DIAG_PIN
|
||||
#elif Z3_USE_ENDSTOP == _E1DIAG_
|
||||
#define Z3_MIN_PIN E1_DIAG_PIN
|
||||
#elif Z3_USE_ENDSTOP == _E2DIAG_
|
||||
#define Z3_MIN_PIN E2_DIAG_PIN
|
||||
#elif Z3_USE_ENDSTOP == _E3DIAG_
|
||||
#define Z3_MIN_PIN E3_DIAG_PIN
|
||||
#elif Z3_USE_ENDSTOP == _E4DIAG_
|
||||
#define Z3_MIN_PIN E4_DIAG_PIN
|
||||
#elif Z3_USE_ENDSTOP == _E5DIAG_
|
||||
#define Z3_MIN_PIN E5_DIAG_PIN
|
||||
#elif Z3_USE_ENDSTOP == _E6DIAG_
|
||||
#define Z3_MIN_PIN E6_DIAG_PIN
|
||||
#elif Z3_USE_ENDSTOP == _E7DIAG_
|
||||
#define Z3_MIN_PIN E7_DIAG_PIN
|
||||
#endif
|
||||
#endif
|
||||
#define Z3_MAX_ENDSTOP_INVERTING false
|
||||
#endif
|
||||
#endif
|
||||
@@ -885,48 +1133,110 @@
|
||||
#if Z_HOME_DIR > 0
|
||||
#if Z4_USE_ENDSTOP == _XMIN_
|
||||
#define Z4_MAX_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING
|
||||
#define Z4_MAX_PIN X_MIN_PIN
|
||||
#elif Z4_USE_ENDSTOP == _XMAX_
|
||||
#define Z4_MAX_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING
|
||||
#define Z4_MAX_PIN X_MAX_PIN
|
||||
#elif Z4_USE_ENDSTOP == _YMIN_
|
||||
#define Z4_MAX_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING
|
||||
#define Z4_MAX_PIN Y_MIN_PIN
|
||||
#elif Z4_USE_ENDSTOP == _YMAX_
|
||||
#define Z4_MAX_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING
|
||||
#define Z4_MAX_PIN Y_MAX_PIN
|
||||
#elif Z4_USE_ENDSTOP == _ZMIN_
|
||||
#define Z4_MAX_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING
|
||||
#define Z4_MAX_PIN Z_MIN_PIN
|
||||
#elif Z4_USE_ENDSTOP == _ZMAX_
|
||||
#define Z4_MAX_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING
|
||||
#define Z4_MAX_PIN Z_MAX_PIN
|
||||
#else
|
||||
#define Z4_MAX_ENDSTOP_INVERTING false
|
||||
#endif
|
||||
#ifndef Z4_MAX_PIN
|
||||
#if Z4_USE_ENDSTOP == _XMIN_
|
||||
#define Z4_MAX_PIN X_MIN_PIN
|
||||
#elif Z4_USE_ENDSTOP == _XMAX_
|
||||
#define Z4_MAX_PIN X_MAX_PIN
|
||||
#elif Z4_USE_ENDSTOP == _YMIN_
|
||||
#define Z4_MAX_PIN Y_MIN_PIN
|
||||
#elif Z4_USE_ENDSTOP == _YMAX_
|
||||
#define Z4_MAX_PIN Y_MAX_PIN
|
||||
#elif Z4_USE_ENDSTOP == _ZMIN_
|
||||
#define Z4_MAX_PIN Z_MIN_PIN
|
||||
#elif Z4_USE_ENDSTOP == _ZMAX_
|
||||
#define Z4_MAX_PIN Z_MAX_PIN
|
||||
#elif Z4_USE_ENDSTOP == _XDIAG_
|
||||
#define Z4_MAX_PIN X_DIAG_PIN
|
||||
#elif Z4_USE_ENDSTOP == _YDIAG_
|
||||
#define Z4_MAX_PIN Y_DIAG_PIN
|
||||
#elif Z4_USE_ENDSTOP == _ZDIAG_
|
||||
#define Z4_MAX_PIN Z_DIAG_PIN
|
||||
#elif Z4_USE_ENDSTOP == _E0DIAG_
|
||||
#define Z4_MAX_PIN E0_DIAG_PIN
|
||||
#elif Z4_USE_ENDSTOP == _E1DIAG_
|
||||
#define Z4_MAX_PIN E1_DIAG_PIN
|
||||
#elif Z4_USE_ENDSTOP == _E2DIAG_
|
||||
#define Z4_MAX_PIN E2_DIAG_PIN
|
||||
#elif Z4_USE_ENDSTOP == _E3DIAG_
|
||||
#define Z4_MAX_PIN E3_DIAG_PIN
|
||||
#elif Z4_USE_ENDSTOP == _E4DIAG_
|
||||
#define Z4_MAX_PIN E4_DIAG_PIN
|
||||
#elif Z4_USE_ENDSTOP == _E5DIAG_
|
||||
#define Z4_MAX_PIN E5_DIAG_PIN
|
||||
#elif Z4_USE_ENDSTOP == _E6DIAG_
|
||||
#define Z4_MAX_PIN E6_DIAG_PIN
|
||||
#elif Z4_USE_ENDSTOP == _E7DIAG_
|
||||
#define Z4_MAX_PIN E7_DIAG_PIN
|
||||
#endif
|
||||
#endif
|
||||
#define Z4_MIN_ENDSTOP_INVERTING false
|
||||
#else
|
||||
#if Z4_USE_ENDSTOP == _XMIN_
|
||||
#define Z4_MIN_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING
|
||||
#define Z4_MIN_PIN X_MIN_PIN
|
||||
#elif Z4_USE_ENDSTOP == _XMAX_
|
||||
#define Z4_MIN_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING
|
||||
#define Z4_MIN_PIN X_MAX_PIN
|
||||
#elif Z4_USE_ENDSTOP == _YMIN_
|
||||
#define Z4_MIN_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING
|
||||
#define Z4_MIN_PIN Y_MIN_PIN
|
||||
#elif Z4_USE_ENDSTOP == _YMAX_
|
||||
#define Z4_MIN_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING
|
||||
#define Z4_MIN_PIN Y_MAX_PIN
|
||||
#elif Z4_USE_ENDSTOP == _ZMIN_
|
||||
#define Z4_MIN_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING
|
||||
#define Z4_MIN_PIN Z_MIN_PIN
|
||||
#elif Z4_USE_ENDSTOP == _ZMAX_
|
||||
#define Z4_MIN_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING
|
||||
#define Z4_MIN_PIN Z_MAX_PIN
|
||||
#else
|
||||
#define Z4_MIN_ENDSTOP_INVERTING false
|
||||
#endif
|
||||
#ifndef Z4_MIN_PIN
|
||||
#if Z4_USE_ENDSTOP == _XMIN_
|
||||
#define Z4_MIN_PIN X_MIN_PIN
|
||||
#elif Z4_USE_ENDSTOP == _XMAX_
|
||||
#define Z4_MIN_PIN X_MAX_PIN
|
||||
#elif Z4_USE_ENDSTOP == _YMIN_
|
||||
#define Z4_MIN_PIN Y_MIN_PIN
|
||||
#elif Z4_USE_ENDSTOP == _YMAX_
|
||||
#define Z4_MIN_PIN Y_MAX_PIN
|
||||
#elif Z4_USE_ENDSTOP == _ZMIN_
|
||||
#define Z4_MIN_PIN Z_MIN_PIN
|
||||
#elif Z4_USE_ENDSTOP == _ZMAX_
|
||||
#define Z4_MIN_PIN Z_MAX_PIN
|
||||
#elif Z4_USE_ENDSTOP == _XDIAG_
|
||||
#define Z4_MIN_PIN X_DIAG_PIN
|
||||
#elif Z4_USE_ENDSTOP == _YDIAG_
|
||||
#define Z4_MIN_PIN Y_DIAG_PIN
|
||||
#elif Z4_USE_ENDSTOP == _ZDIAG_
|
||||
#define Z4_MIN_PIN Z_DIAG_PIN
|
||||
#elif Z4_USE_ENDSTOP == _E0DIAG_
|
||||
#define Z4_MIN_PIN E0_DIAG_PIN
|
||||
#elif Z4_USE_ENDSTOP == _E1DIAG_
|
||||
#define Z4_MIN_PIN E1_DIAG_PIN
|
||||
#elif Z4_USE_ENDSTOP == _E2DIAG_
|
||||
#define Z4_MIN_PIN E2_DIAG_PIN
|
||||
#elif Z4_USE_ENDSTOP == _E3DIAG_
|
||||
#define Z4_MIN_PIN E3_DIAG_PIN
|
||||
#elif Z4_USE_ENDSTOP == _E4DIAG_
|
||||
#define Z4_MIN_PIN E4_DIAG_PIN
|
||||
#elif Z4_USE_ENDSTOP == _E5DIAG_
|
||||
#define Z4_MIN_PIN E5_DIAG_PIN
|
||||
#elif Z4_USE_ENDSTOP == _E6DIAG_
|
||||
#define Z4_MIN_PIN E6_DIAG_PIN
|
||||
#elif Z4_USE_ENDSTOP == _E7DIAG_
|
||||
#define Z4_MIN_PIN E7_DIAG_PIN
|
||||
#endif
|
||||
#endif
|
||||
#define Z4_MAX_ENDSTOP_INVERTING false
|
||||
#endif
|
||||
#endif
|
||||
@@ -1220,7 +1530,7 @@
|
||||
|
||||
// Other fans
|
||||
#define HAS_FAN0 (PIN_EXISTS(FAN))
|
||||
#define _HAS_FAN(P) (PIN_EXISTS(FAN_##P) && CONTROLLER_FAN_PIN != FAN_##P##_PIN && E0_AUTO_FAN_PIN != FAN_##P##_PIN && E1_AUTO_FAN_PIN != FAN_##P##_PIN && E2_AUTO_FAN_PIN != FAN_##P##_PIN && E3_AUTO_FAN_PIN != FAN_##P##_PIN && E4_AUTO_FAN_PIN != FAN_##P##_PIN && E5_AUTO_FAN_PIN != FAN_##P##_PIN && E6_AUTO_FAN_PIN != FAN_##P##_PIN && E7_AUTO_FAN_PIN != FAN_##P##_PIN)
|
||||
#define _HAS_FAN(P) (PIN_EXISTS(FAN##P) && CONTROLLER_FAN_PIN != FAN##P##_PIN && E0_AUTO_FAN_PIN != FAN##P##_PIN && E1_AUTO_FAN_PIN != FAN##P##_PIN && E2_AUTO_FAN_PIN != FAN##P##_PIN && E3_AUTO_FAN_PIN != FAN##P##_PIN && E4_AUTO_FAN_PIN != FAN##P##_PIN && E5_AUTO_FAN_PIN != FAN##P##_PIN && E6_AUTO_FAN_PIN != FAN##P##_PIN && E7_AUTO_FAN_PIN != FAN##P##_PIN)
|
||||
#define HAS_FAN1 _HAS_FAN(1)
|
||||
#define HAS_FAN2 _HAS_FAN(2)
|
||||
#define HAS_FAN3 _HAS_FAN(3)
|
||||
|
@@ -25,7 +25,7 @@
|
||||
* Release version. Leave the Marlin version or apply a custom scheme.
|
||||
*/
|
||||
#ifndef SHORT_BUILD_VERSION
|
||||
#define SHORT_BUILD_VERSION "2.0.2"
|
||||
#define SHORT_BUILD_VERSION "2.0.3.1"
|
||||
#endif
|
||||
|
||||
/**
|
||||
@@ -42,7 +42,7 @@
|
||||
* version was tagged.
|
||||
*/
|
||||
#ifndef STRING_DISTRIBUTION_DATE
|
||||
#define STRING_DISTRIBUTION_DATE "2020-01-27"
|
||||
#define STRING_DISTRIBUTION_DATE "2020-01-31"
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
@@ -171,7 +171,7 @@ namespace ExtUI {
|
||||
|
||||
void enableHeater(const extruder_t extruder) {
|
||||
#if HOTENDS && HEATER_IDLE_HANDLER
|
||||
thermalManager.reset_heater_idle_timer(extruder - E0);
|
||||
thermalManager.reset_hotend_idle_timer(extruder - E0);
|
||||
#else
|
||||
UNUSED(extruder);
|
||||
#endif
|
||||
@@ -190,7 +190,7 @@ namespace ExtUI {
|
||||
#endif
|
||||
default:
|
||||
#if HOTENDS
|
||||
thermalManager.reset_heater_idle_timer(heater - H0);
|
||||
thermalManager.reset_hotend_idle_timer(heater - H0);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
@@ -119,7 +119,7 @@ void _menu_temp_filament_op(const PauseMode mode, const int8_t extruder) {
|
||||
SUBMENU_N_P(s, msg, []{ _menu_temp_filament_op(PAUSE_MODE_CHANGE_FILAMENT, MenuItemBase::itemIndex); });
|
||||
else {
|
||||
ACTION_ITEM_N_P(s, msg, []{
|
||||
char cmd[12];
|
||||
char cmd[13];
|
||||
sprintf_P(cmd, PSTR("M600 B0 T%i"), int(MenuItemBase::itemIndex));
|
||||
lcd_enqueue_one_now(cmd);
|
||||
});
|
||||
|
@@ -85,7 +85,9 @@
|
||||
#elif THERMISTOR_ID == 18
|
||||
#define THERMISTOR_NAME "ATC Semitec 204GT-2"
|
||||
#elif THERMISTOR_ID == 20
|
||||
#define THERMISTOR_NAME "Pt100 UltiMB"
|
||||
#define THERMISTOR_NAME "Pt100 UltiMB 5v"
|
||||
#elif THERMISTOR_ID == 21
|
||||
#define THERMISTOR_NAME "Pt100 UltiMB 3.3v"
|
||||
#elif THERMISTOR_ID == 201
|
||||
#define THERMISTOR_NAME "Pt100 OverLord"
|
||||
#elif THERMISTOR_ID == 60
|
||||
|
@@ -777,13 +777,12 @@ void MarlinUI::update() {
|
||||
static bool wait_for_unclick; // = false
|
||||
|
||||
#if ENABLED(TOUCH_BUTTONS)
|
||||
|
||||
if (touch_buttons) {
|
||||
RESET_STATUS_TIMEOUT();
|
||||
if (buttons & (EN_A | EN_B)) { // Menu arrows, in priority
|
||||
if (touch_buttons & (EN_A | EN_B)) { // Menu arrows, in priority
|
||||
if (ELAPSED(ms, next_button_update_ms)) {
|
||||
encoderDiff = (ENCODER_STEPS_PER_MENU_ITEM) * (ENCODER_PULSES_PER_STEP) * encoderDirection;
|
||||
if (buttons & EN_A) encoderDiff *= -1;
|
||||
if (touch_buttons & EN_A) encoderDiff *= -1;
|
||||
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
||||
if (external_control) ubl.encoder_diff = encoderDiff;
|
||||
#endif
|
||||
@@ -1246,7 +1245,11 @@ void MarlinUI::update() {
|
||||
| slow_buttons
|
||||
#endif
|
||||
#if ENABLED(TOUCH_BUTTONS) && HAS_ENCODER_ACTION
|
||||
| touch_buttons
|
||||
| (touch_buttons
|
||||
#if HAS_ENCODER_WHEEL
|
||||
& (~(EN_A | EN_B))
|
||||
#endif
|
||||
)
|
||||
#endif
|
||||
);
|
||||
|
||||
@@ -1277,7 +1280,7 @@ void MarlinUI::update() {
|
||||
|
||||
} // next_button_update_ms
|
||||
|
||||
#if HAS_ENCODER_WHEEL && DISABLED(TOUCH_BUTTONS)
|
||||
#if HAS_ENCODER_WHEEL
|
||||
static uint8_t lastEncoderBits;
|
||||
|
||||
#define encrot0 0
|
||||
|
@@ -39,39 +39,40 @@ L64XX_Marlin L64xxManager;
|
||||
|
||||
void echo_yes_no(const bool yes) { serialprintPGM(yes ? PSTR(" YES") : PSTR(" NO ")); }
|
||||
|
||||
char L64XX_Marlin::index_to_axis[MAX_L64XX][3] = { "X ", "Y ", "Z ", "X2", "Y2", "Z2", "Z3", "Z4", "E0", "E1", "E2", "E3", "E4", "E5", "E6", "E7" };
|
||||
static const char str_X[] PROGMEM = "X ", str_Y[] PROGMEM = "Y ", str_Z[] PROGMEM = "Z ",
|
||||
str_X2[] PROGMEM = "X2", str_Y2[] PROGMEM = "Y2",
|
||||
str_Z2[] PROGMEM = "Z2", str_Z3[] PROGMEM = "Z3", str_Z4[] PROGMEM = "Z4",
|
||||
str_E0[] PROGMEM = "E0", str_E1[] PROGMEM = "E1",
|
||||
str_E2[] PROGMEM = "E2", str_E3[] PROGMEM = "E3",
|
||||
str_E4[] PROGMEM = "E4", str_E5[] PROGMEM = "E5",
|
||||
str_E6[] PROGMEM = "E6", str_E7[] PROGMEM = "E7"
|
||||
;
|
||||
|
||||
PGM_P const L64XX_Marlin::index_to_axis[] PROGMEM = {
|
||||
str_X, str_Y, str_Z, str_X2, str_Y2, str_Z2, str_Z3, str_Z4,
|
||||
str_E0, str_E1, str_E2, str_E3, str_E4, str_E5, str_E6, str_E7
|
||||
};
|
||||
|
||||
#define DEBUG_OUT ENABLED(L6470_CHITCHAT)
|
||||
#include "../../core/debug_out.h"
|
||||
|
||||
uint8_t L64XX_Marlin::dir_commands[MAX_L64XX]; // array to hold direction command for each driver
|
||||
|
||||
uint8_t L64XX_Marlin::index_to_dir[MAX_L64XX] = { (INVERT_X_DIR), // 0 X
|
||||
(INVERT_Y_DIR), // 1 Y
|
||||
(INVERT_Z_DIR), // 2 Z
|
||||
#if ENABLED(X_DUAL_STEPPER_DRIVERS) // 3 X2
|
||||
(INVERT_X_DIR) ^ (INVERT_X2_VS_X_DIR),
|
||||
#else
|
||||
(INVERT_X_DIR),
|
||||
#endif
|
||||
#if ENABLED(Y_DUAL_STEPPER_DRIVERS) // 4 Y2
|
||||
(INVERT_Y_DIR) ^ (INVERT_Y2_VS_Y_DIR),
|
||||
#else
|
||||
(INVERT_Y_DIR),
|
||||
#endif
|
||||
(INVERT_Z_DIR), // 5 Z2
|
||||
(INVERT_Z_DIR), // 6 Z3
|
||||
(INVERT_Z_DIR), // 7 Z4
|
||||
const uint8_t L64XX_Marlin::index_to_dir[MAX_L64XX] = {
|
||||
INVERT_X_DIR, INVERT_Y_DIR, INVERT_Z_DIR
|
||||
, (INVERT_X_DIR) // X2
|
||||
#if ENABLED(X_DUAL_STEPPER_DRIVERS)
|
||||
^ (INVERT_X2_VS_X_DIR)
|
||||
#endif
|
||||
, (INVERT_Y_DIR) // Y2
|
||||
#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
|
||||
^ (INVERT_Y2_VS_Y_DIR)
|
||||
#endif
|
||||
, INVERT_Z_DIR, INVERT_Z_DIR, INVERT_Z_DIR // Z2,Z3,Z4
|
||||
|
||||
(INVERT_E0_DIR), // 8 E0
|
||||
(INVERT_E1_DIR), // 9 E1
|
||||
(INVERT_E2_DIR), // 10 E2
|
||||
(INVERT_E3_DIR), // 11 E3
|
||||
(INVERT_E4_DIR), // 12 E4
|
||||
(INVERT_E5_DIR), // 13 E5
|
||||
(INVERT_E6_DIR), // 14 E6
|
||||
(INVERT_E7_DIR) // 15 E7
|
||||
};
|
||||
, INVERT_E0_DIR, INVERT_E1_DIR, INVERT_E2_DIR, INVERT_E3_DIR
|
||||
, INVERT_E4_DIR, INVERT_E5_DIR, INVERT_E6_DIR, INVERT_E7_DIR
|
||||
};
|
||||
|
||||
volatile uint8_t L64XX_Marlin::spi_abort = false;
|
||||
uint8_t L64XX_Marlin::spi_active = false;
|
||||
@@ -379,35 +380,27 @@ uint8_t L64XX_Marlin::get_user_input(uint8_t &driver_count, L64XX_axis_t axis_in
|
||||
found_displacement = true;
|
||||
displacement = _displacement;
|
||||
uint8_t axis_offset = parser.byteval('J');
|
||||
axis_mon[0][0] = axis_codes[i]; // axis ASCII value (target character)
|
||||
axis_mon[0][0] = axis_codes[i]; // Axis first character, one of XYZE
|
||||
const bool single_or_e = axis_offset >= 2 || axis_mon[0][0] == 'E',
|
||||
one_or_more = !single_or_e && axis_offset == 0;
|
||||
uint8_t driver_count_local = 0; // Can't use "driver_count" directly as a subscript because it's passed by reference
|
||||
if (axis_offset >= 2 || axis_mon[0][0] == 'E') { // Single axis, E0, or E1
|
||||
axis_mon[0][1] = axis_offset + '0';
|
||||
for (j = 0; j < MAX_L64XX; j++) { // See how many drivers on this axis
|
||||
const char * const str = index_to_axis[j];
|
||||
if (axis_mon[0][0] == str[0]) {
|
||||
char * const mon = axis_mon[driver_count_local];
|
||||
mon[0] = str[0];
|
||||
mon[1] = str[1];
|
||||
mon[2] = str[2]; // append end of string
|
||||
axis_index[driver_count_local] = (L64XX_axis_t)j; // set axis index
|
||||
if (single_or_e) // Single axis, E0, or E1
|
||||
axis_mon[0][1] = axis_offset + '0'; // Index given by 'J' parameter
|
||||
|
||||
if (single_or_e || one_or_more) {
|
||||
for (j = 0; j < MAX_L64XX; j++) { // Count up the drivers on this axis
|
||||
PGM_P str = (PGM_P)pgm_read_ptr(&index_to_axis[j]); // Get a PGM_P from progmem
|
||||
const char c = pgm_read_byte(str); // Get a char from progmem
|
||||
if (axis_mon[0][0] == c) { // For each stepper on this axis...
|
||||
char *mon = axis_mon[driver_count_local];
|
||||
*mon++ = c; // Copy the 3 letter axis name
|
||||
*mon++ = pgm_read_byte(&str[1]); // to the axis_mon array
|
||||
*mon = pgm_read_byte(&str[2]);
|
||||
axis_index[driver_count_local] = (L64XX_axis_t)j; // And store the L64XX axis index
|
||||
driver_count_local++;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (axis_offset == 0) { // One or more axes
|
||||
for (j = 0; j < MAX_L64XX; j++) { // See how many drivers on this axis
|
||||
const char * const str = index_to_axis[j];
|
||||
if (axis_mon[0][0] == str[0]) {
|
||||
char * const mon = axis_mon[driver_count_local];
|
||||
mon[0] = str[0];
|
||||
mon[1] = str[1];
|
||||
mon[2] = str[2]; // append end of string
|
||||
axis_index[driver_count_local] = (L64XX_axis_t)j; // set axis index
|
||||
driver_count_local++;
|
||||
}
|
||||
}
|
||||
driver_count = driver_count_local;
|
||||
if (one_or_more) driver_count = driver_count_local;
|
||||
}
|
||||
break; // only take first axis found
|
||||
}
|
||||
@@ -494,8 +487,8 @@ uint8_t L64XX_Marlin::get_user_input(uint8_t &driver_count, L64XX_axis_t axis_in
|
||||
for (uint8_t k = 0; k < driver_count; k++) {
|
||||
uint8_t not_found = true;
|
||||
for (j = 1; j <= L64XX::chain[0]; j++) {
|
||||
const char * const ind_axis = index_to_axis[L64XX::chain[j]];
|
||||
if (ind_axis[0] == axis_mon[k][0] && ind_axis[1] == axis_mon[k][1]) { // See if a L6470 driver
|
||||
PGM_P const str = (PGM_P)pgm_read_ptr(&index_to_axis[L64XX::chain[j]]);
|
||||
if (pgm_read_byte(&str[0]) == axis_mon[k][0] && pgm_read_byte(&str[1]) == axis_mon[k][1]) { // See if a L6470 driver
|
||||
not_found = false;
|
||||
break;
|
||||
}
|
||||
@@ -724,7 +717,8 @@ void L64XX_Marlin::say_axis(const L64XX_axis_t axis, const uint8_t label/*=true*
|
||||
};
|
||||
|
||||
void L64XX_Marlin::append_stepper_err(char* &p, const uint8_t stepper_index, const char * const err/*=nullptr*/) {
|
||||
p += sprintf_P(p, PSTR("Stepper %c%c "), index_to_axis[stepper_index][0], index_to_axis[stepper_index][1]);
|
||||
PGM_P const str = (PGM_P)pgm_read_ptr(&index_to_axis[stepper_index]);
|
||||
p += sprintf_P(p, PSTR("Stepper %c%c "), pgm_read_byte(&str[0]), pgm_read_byte(&str[1]));
|
||||
if (err) p += sprintf_P(p, err);
|
||||
}
|
||||
|
||||
|
@@ -39,9 +39,10 @@ enum L64XX_axis_t : uint8_t { X, Y, Z, X2, Y2, Z2, Z3, Z4, E0, E1, E2, E3, E4, E
|
||||
|
||||
class L64XX_Marlin : public L64XXHelper {
|
||||
public:
|
||||
static char index_to_axis[MAX_L64XX][3];
|
||||
static PGM_P const index_to_axis[MAX_L64XX];
|
||||
|
||||
static const uint8_t index_to_dir[MAX_L64XX];
|
||||
|
||||
static uint8_t index_to_dir[MAX_L64XX];
|
||||
static uint8_t dir_commands[MAX_L64XX];
|
||||
|
||||
// Flags to guarantee graceful switch if stepper interrupts L6470 SPI transfer
|
||||
@@ -69,7 +70,6 @@ public:
|
||||
|
||||
static void transfer(uint8_t L6470_buf[], const uint8_t length);
|
||||
|
||||
//static char* index_to_axis(const uint8_t index);
|
||||
static void say_axis(const L64XX_axis_t axis, const uint8_t label=true);
|
||||
#if ENABLED(L6470_CHITCHAT)
|
||||
static void error_status_decode(
|
||||
|
@@ -111,7 +111,7 @@ xyze_pos_t destination; // {0}
|
||||
|
||||
// G60/G61 Position Save and Return
|
||||
#if SAVED_POSITIONS
|
||||
uint8_t saved_slots;
|
||||
uint8_t saved_slots[(SAVED_POSITIONS + 7) >> 3];
|
||||
xyz_pos_t stored_position[SAVED_POSITIONS];
|
||||
#endif
|
||||
|
||||
|
@@ -67,7 +67,7 @@ extern xyze_pos_t current_position, // High-level current tool position
|
||||
|
||||
// G60/G61 Position Save and Return
|
||||
#if SAVED_POSITIONS
|
||||
extern uint8_t saved_slots;
|
||||
extern uint8_t saved_slots[(SAVED_POSITIONS + 7) >> 3];
|
||||
extern xyz_pos_t stored_position[SAVED_POSITIONS];
|
||||
#endif
|
||||
|
||||
|
@@ -1252,13 +1252,13 @@ void Planner::check_axes_activity() {
|
||||
// Disable inactive axes
|
||||
//
|
||||
#if ENABLED(DISABLE_X)
|
||||
if (!axis_active.x) disable_X();
|
||||
if (!axis_active.x) DISABLE_AXIS_X();
|
||||
#endif
|
||||
#if ENABLED(DISABLE_Y)
|
||||
if (!axis_active.y) disable_Y();
|
||||
if (!axis_active.y) DISABLE_AXIS_Y();
|
||||
#endif
|
||||
#if ENABLED(DISABLE_Z)
|
||||
if (!axis_active.z) disable_Z();
|
||||
if (!axis_active.z) DISABLE_AXIS_Z();
|
||||
#endif
|
||||
#if ENABLED(DISABLE_E)
|
||||
if (!axis_active.e) disable_e_steppers();
|
||||
@@ -1905,29 +1905,29 @@ bool Planner::_populate_block(block_t * const block, bool split_move,
|
||||
// Enable active axes
|
||||
#if CORE_IS_XY
|
||||
if (block->steps.a || block->steps.b) {
|
||||
enable_X();
|
||||
enable_Y();
|
||||
ENABLE_AXIS_X();
|
||||
ENABLE_AXIS_Y();
|
||||
}
|
||||
#if DISABLED(Z_LATE_ENABLE)
|
||||
if (block->steps.z) enable_Z();
|
||||
if (block->steps.z) ENABLE_AXIS_Z();
|
||||
#endif
|
||||
#elif CORE_IS_XZ
|
||||
if (block->steps.a || block->steps.c) {
|
||||
enable_X();
|
||||
enable_Z();
|
||||
ENABLE_AXIS_X();
|
||||
ENABLE_AXIS_Z();
|
||||
}
|
||||
if (block->steps.y) enable_Y();
|
||||
if (block->steps.y) ENABLE_AXIS_Y();
|
||||
#elif CORE_IS_YZ
|
||||
if (block->steps.b || block->steps.c) {
|
||||
enable_Y();
|
||||
enable_Z();
|
||||
ENABLE_AXIS_Y();
|
||||
ENABLE_AXIS_Z();
|
||||
}
|
||||
if (block->steps.x) enable_X();
|
||||
if (block->steps.x) ENABLE_AXIS_X();
|
||||
#else
|
||||
if (block->steps.x) enable_X();
|
||||
if (block->steps.y) enable_Y();
|
||||
if (block->steps.x) ENABLE_AXIS_X();
|
||||
if (block->steps.y) ENABLE_AXIS_Y();
|
||||
#if DISABLED(Z_LATE_ENABLE)
|
||||
if (block->steps.z) enable_Z();
|
||||
if (block->steps.z) ENABLE_AXIS_Z();
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -1945,27 +1945,27 @@ bool Planner::_populate_block(block_t * const block, bool split_move,
|
||||
|
||||
#if HAS_DUPLICATION_MODE
|
||||
if (extruder_duplication_enabled && extruder == 0) {
|
||||
enable_E1();
|
||||
ENABLE_AXIS_E1();
|
||||
g_uc_extruder_last_move[1] = (BLOCK_BUFFER_SIZE) * 2;
|
||||
}
|
||||
#endif
|
||||
|
||||
#define ENABLE_ONE_E(N) do{ \
|
||||
if (extruder == N) { \
|
||||
enable_E##N(); \
|
||||
ENABLE_AXIS_E##N(); \
|
||||
g_uc_extruder_last_move[N] = (BLOCK_BUFFER_SIZE) * 2; \
|
||||
} \
|
||||
else if (!g_uc_extruder_last_move[N]) \
|
||||
disable_E##N(); \
|
||||
DISABLE_AXIS_E##N(); \
|
||||
}while(0);
|
||||
|
||||
#else
|
||||
|
||||
#define ENABLE_ONE_E(N) enable_E##N();
|
||||
#define ENABLE_ONE_E(N) ENABLE_AXIS_E##N();
|
||||
|
||||
#endif
|
||||
|
||||
REPEAT(EXTRUDERS, ENABLE_ONE_E);
|
||||
REPEAT(EXTRUDERS, ENABLE_ONE_E); // (ENABLE_ONE_E must end with semicolon)
|
||||
}
|
||||
#endif // EXTRUDERS
|
||||
|
||||
|
@@ -251,7 +251,7 @@ xyz_pos_t probe_offset; // Initialized by settings.load()
|
||||
#if ENABLED(PROBING_STEPPERS_OFF)
|
||||
disable_e_steppers();
|
||||
#if NONE(DELTA, HOME_AFTER_DEACTIVATE)
|
||||
disable_X(); disable_Y();
|
||||
DISABLE_AXIS_X(); DISABLE_AXIS_Y();
|
||||
#endif
|
||||
#endif
|
||||
if (p) safe_delay(
|
||||
|
@@ -1927,7 +1927,7 @@ uint32_t Stepper::stepper_block_phase_isr() {
|
||||
// If delayed Z enable, enable it now. This option will severely interfere with
|
||||
// timing between pulses when chaining motion between blocks, and it could lead
|
||||
// to lost steps in both X and Y axis, so avoid using it unless strictly necessary!!
|
||||
if (current_block->steps.z) enable_Z();
|
||||
if (current_block->steps.z) ENABLE_AXIS_Z();
|
||||
#endif
|
||||
|
||||
// Mark the time_nominal as not calculated yet
|
||||
@@ -2215,12 +2215,12 @@ void Stepper::init() {
|
||||
|
||||
#define _STEP_INIT(AXIS) AXIS ##_STEP_INIT()
|
||||
#define _WRITE_STEP(AXIS, HIGHLOW) AXIS ##_STEP_WRITE(HIGHLOW)
|
||||
#define _DISABLE(AXIS) disable_## AXIS()
|
||||
#define _DISABLE_AXIS(AXIS) DISABLE_AXIS_## AXIS()
|
||||
|
||||
#define AXIS_INIT(AXIS, PIN) \
|
||||
_STEP_INIT(AXIS); \
|
||||
_WRITE_STEP(AXIS, _INVERT_STEP_PIN(PIN)); \
|
||||
_DISABLE(AXIS)
|
||||
_DISABLE_AXIS(AXIS)
|
||||
|
||||
#define E_AXIS_INIT(NUM) AXIS_INIT(E## NUM, E)
|
||||
|
||||
@@ -2437,7 +2437,7 @@ void Stepper::report_positions() {
|
||||
#endif
|
||||
#define EXTRA_CYCLES_BABYSTEP (STEP_PULSE_CYCLES - (CYCLES_EATEN_BABYSTEP))
|
||||
|
||||
#define _ENABLE(AXIS) enable_## AXIS()
|
||||
#define _ENABLE_AXIS(AXIS) ENABLE_AXIS_## AXIS()
|
||||
#define _READ_DIR(AXIS) AXIS ##_DIR_READ()
|
||||
#define _INVERT_DIR(AXIS) INVERT_## AXIS ##_DIR
|
||||
#define _APPLY_DIR(AXIS, INVERT) AXIS ##_APPLY_DIR(INVERT, true)
|
||||
@@ -2460,7 +2460,7 @@ void Stepper::report_positions() {
|
||||
|
||||
#define BABYSTEP_AXIS(AXIS, INVERT, DIR) { \
|
||||
const uint8_t old_dir = _READ_DIR(AXIS); \
|
||||
_ENABLE(AXIS); \
|
||||
_ENABLE_AXIS(AXIS); \
|
||||
DELAY_NS(MINIMUM_STEPPER_PRE_DIR_DELAY); \
|
||||
_APPLY_DIR(AXIS, _INVERT_DIR(AXIS)^DIR^INVERT); \
|
||||
DELAY_NS(MINIMUM_STEPPER_POST_DIR_DELAY); \
|
||||
@@ -2523,9 +2523,9 @@ void Stepper::report_positions() {
|
||||
|
||||
const bool z_direction = direction ^ BABYSTEP_INVERT_Z;
|
||||
|
||||
enable_X();
|
||||
enable_Y();
|
||||
enable_Z();
|
||||
ENABLE_AXIS_X();
|
||||
ENABLE_AXIS_Y();
|
||||
ENABLE_AXIS_Z();
|
||||
|
||||
#if MINIMUM_STEPPER_PRE_DIR_DELAY > 0
|
||||
DELAY_NS(MINIMUM_STEPPER_PRE_DIR_DELAY);
|
||||
|
@@ -55,6 +55,9 @@
|
||||
#define X_DIR_INIT() NOOP
|
||||
#define X_DIR_WRITE(STATE) L64XX_DIR_WRITE(X, STATE)
|
||||
#define X_DIR_READ() (stepper##X.getStatus() & STATUS_DIR);
|
||||
#if AXIS_DRIVER_TYPE_X(L6470)
|
||||
#define DISABLE_STEPPER_X() stepperX.free()
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -72,6 +75,9 @@
|
||||
#define Y_DIR_INIT() NOOP
|
||||
#define Y_DIR_WRITE(STATE) L64XX_DIR_WRITE(Y, STATE)
|
||||
#define Y_DIR_READ() (stepper##Y.getStatus() & STATUS_DIR);
|
||||
#if AXIS_DRIVER_TYPE_Y(L6470)
|
||||
#define DISABLE_STEPPER_Y() stepperY.free()
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -89,6 +95,9 @@
|
||||
#define Z_DIR_INIT() NOOP
|
||||
#define Z_DIR_WRITE(STATE) L64XX_DIR_WRITE(Z, STATE)
|
||||
#define Z_DIR_READ() (stepper##Z.getStatus() & STATUS_DIR);
|
||||
#if AXIS_DRIVER_TYPE_Z(L6470)
|
||||
#define DISABLE_STEPPER_Z() stepperZ.free()
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -109,6 +118,10 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if AXIS_DRIVER_TYPE_X2(L6470)
|
||||
#define DISABLE_STEPPER_X2() stepperX2.free()
|
||||
#endif
|
||||
|
||||
// Y2 Stepper
|
||||
#if HAS_Y2_ENABLE && AXIS_IS_L64XX(Y2)
|
||||
extern L64XX_CLASS(Y2) stepperY2;
|
||||
@@ -126,6 +139,10 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if AXIS_DRIVER_TYPE_Y2(L6470)
|
||||
#define DISABLE_STEPPER_Y2() stepperY2.free()
|
||||
#endif
|
||||
|
||||
// Z2 Stepper
|
||||
#if HAS_Z2_ENABLE && AXIS_IS_L64XX(Z2)
|
||||
extern L64XX_CLASS(Z2) stepperZ2;
|
||||
@@ -143,6 +160,10 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if AXIS_DRIVER_TYPE_Z2(L6470)
|
||||
#define DISABLE_STEPPER_Z2() stepperZ2.free()
|
||||
#endif
|
||||
|
||||
// Z3 Stepper
|
||||
#if HAS_Z3_ENABLE && AXIS_IS_L64XX(Z3)
|
||||
extern L64XX_CLASS(Z3) stepperZ3;
|
||||
@@ -160,6 +181,10 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if AXIS_DRIVER_TYPE_Z3(L6470)
|
||||
#define DISABLE_STEPPER_Z3() stepperZ3.free()
|
||||
#endif
|
||||
|
||||
// Z4 Stepper
|
||||
#if HAS_Z4_ENABLE && AXIS_IS_L64XX(Z4)
|
||||
extern L64XX_CLASS(Z4) stepperZ4;
|
||||
@@ -177,6 +202,10 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if AXIS_DRIVER_TYPE_Z4(L6470)
|
||||
#define DISABLE_STEPPER_Z4() stepperZ4.free()
|
||||
#endif
|
||||
|
||||
// E0 Stepper
|
||||
#if AXIS_IS_L64XX(E0)
|
||||
extern L64XX_CLASS(E0) stepperE0;
|
||||
@@ -191,6 +220,9 @@
|
||||
#define E0_DIR_INIT() NOOP
|
||||
#define E0_DIR_WRITE(STATE) L64XX_DIR_WRITE(E0, STATE)
|
||||
#define E0_DIR_READ() (stepper##E0.getStatus() & STATUS_DIR);
|
||||
#if AXIS_DRIVER_TYPE_E0(L6470)
|
||||
#define DISABLE_STEPPER_E0() do{ stepperE0.free(); CBI(axis_known_position, E_AXIS); }while(0)
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -208,6 +240,9 @@
|
||||
#define E1_DIR_INIT() NOOP
|
||||
#define E1_DIR_WRITE(STATE) L64XX_DIR_WRITE(E1, STATE)
|
||||
#define E1_DIR_READ() (stepper##E1.getStatus() & STATUS_DIR);
|
||||
#if AXIS_DRIVER_TYPE_E1(L6470)
|
||||
#define DISABLE_STEPPER_E1() do{ stepperE1.free(); CBI(axis_known_position, E_AXIS); }while(0)
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -225,6 +260,9 @@
|
||||
#define E2_DIR_INIT() NOOP
|
||||
#define E2_DIR_WRITE(STATE) L64XX_DIR_WRITE(E2, STATE)
|
||||
#define E2_DIR_READ() (stepper##E2.getStatus() & STATUS_DIR);
|
||||
#if AXIS_DRIVER_TYPE_E2(L6470)
|
||||
#define DISABLE_STEPPER_E2() do{ stepperE2.free(); CBI(axis_known_position, E_AXIS); }while(0)
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -259,6 +297,9 @@
|
||||
#define E4_DIR_INIT() NOOP
|
||||
#define E4_DIR_WRITE(STATE) L64XX_DIR_WRITE(E4, STATE)
|
||||
#define E4_DIR_READ() (stepper##E4.getStatus() & STATUS_DIR);
|
||||
#if AXIS_DRIVER_TYPE_E4(L6470)
|
||||
#define DISABLE_STEPPER_E4() do{ stepperE4.free(); CBI(axis_known_position, E_AXIS); }while(0)
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -276,6 +317,9 @@
|
||||
#define E5_DIR_INIT() NOOP
|
||||
#define E5_DIR_WRITE(STATE) L64XX_DIR_WRITE(E5, STATE)
|
||||
#define E5_DIR_READ() (stepper##E5.getStatus() & STATUS_DIR);
|
||||
#if AXIS_DRIVER_TYPE_E5(L6470)
|
||||
#define DISABLE_STEPPER_E5() do{ stepperE5.free(); CBI(axis_known_position, E_AXIS); }while(0)
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -293,6 +337,9 @@
|
||||
#define E6_DIR_INIT() NOOP
|
||||
#define E6_DIR_WRITE(STATE) L64XX_DIR_WRITE(E6, STATE)
|
||||
#define E6_DIR_READ() (stepper##E6.getStatus() & STATUS_DIR);
|
||||
#if AXIS_DRIVER_TYPE_E6(L6470)
|
||||
#define DISABLE_STEPPER_E6() do{ stepperE6.free(); CBI(axis_known_position, E_AXIS); }while(0)
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -310,5 +357,8 @@
|
||||
#define E7_DIR_INIT() NOOP
|
||||
#define E7_DIR_WRITE(STATE) L64XX_DIR_WRITE(E7, STATE)
|
||||
#define E7_DIR_READ() (stepper##E7.getStatus() & STATUS_DIR);
|
||||
#if AXIS_DRIVER_TYPE_E7(L6470)
|
||||
#define DISABLE_STEPPER_E7() do{ stepperE7.free(); CBI(axis_known_position, E_AXIS); }while(0)
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
@@ -594,320 +594,412 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
||||
#endif
|
||||
|
||||
//
|
||||
// X, Y, Z Stepper enable / disable
|
||||
//
|
||||
#if AXIS_DRIVER_TYPE_X(L6470)
|
||||
extern L6470 stepperX;
|
||||
#define X_enable() NOOP
|
||||
#define X_disable() stepperX.free()
|
||||
#elif HAS_X_ENABLE
|
||||
#define X_enable() X_ENABLE_WRITE( X_ENABLE_ON)
|
||||
#define X_disable() X_ENABLE_WRITE(!X_ENABLE_ON)
|
||||
#else
|
||||
#define X_enable() NOOP
|
||||
#define X_disable() NOOP
|
||||
#endif
|
||||
|
||||
#if AXIS_DRIVER_TYPE_X2(L6470)
|
||||
extern L6470 stepperX2;
|
||||
#define X2_enable() NOOP
|
||||
#define X2_disable() stepperX2.free()
|
||||
#elif HAS_X2_ENABLE
|
||||
#define X2_enable() X2_ENABLE_WRITE( X_ENABLE_ON)
|
||||
#define X2_disable() X2_ENABLE_WRITE(!X_ENABLE_ON)
|
||||
#else
|
||||
#define X2_enable() NOOP
|
||||
#define X2_disable() NOOP
|
||||
#endif
|
||||
|
||||
#define enable_X() do{ X_enable(); X2_enable(); }while(0)
|
||||
#define disable_X() do{ X_disable(); X2_disable(); CBI(axis_known_position, X_AXIS); }while(0)
|
||||
|
||||
#if AXIS_DRIVER_TYPE_Y(L6470)
|
||||
extern L6470 stepperY;
|
||||
#define Y_enable() NOOP
|
||||
#define Y_disable() stepperY.free()
|
||||
#elif HAS_Y_ENABLE
|
||||
#define Y_enable() Y_ENABLE_WRITE( Y_ENABLE_ON)
|
||||
#define Y_disable() Y_ENABLE_WRITE(!Y_ENABLE_ON)
|
||||
#else
|
||||
#define Y_enable() NOOP
|
||||
#define Y_disable() NOOP
|
||||
#endif
|
||||
|
||||
#if AXIS_DRIVER_TYPE_Y2(L6470)
|
||||
extern L6470 stepperY2;
|
||||
#define Y2_enable() NOOP
|
||||
#define Y2_disable() stepperY2.free()
|
||||
#elif HAS_Y2_ENABLE
|
||||
#define Y2_enable() Y2_ENABLE_WRITE( Y_ENABLE_ON)
|
||||
#define Y2_disable() Y2_ENABLE_WRITE(!Y_ENABLE_ON)
|
||||
#else
|
||||
#define Y2_enable() NOOP
|
||||
#define Y2_disable() NOOP
|
||||
#endif
|
||||
|
||||
#define enable_Y() do{ Y_enable(); Y2_enable(); }while(0)
|
||||
#define disable_Y() do{ Y_disable(); Y2_disable(); CBI(axis_known_position, Y_AXIS); }while(0)
|
||||
|
||||
#if AXIS_DRIVER_TYPE_Z(L6470)
|
||||
extern L6470 stepperZ;
|
||||
#define Z_enable() NOOP
|
||||
#define Z_disable() stepperZ.free()
|
||||
#elif HAS_Z_ENABLE
|
||||
#define Z_enable() Z_ENABLE_WRITE( Z_ENABLE_ON)
|
||||
#define Z_disable() Z_ENABLE_WRITE(!Z_ENABLE_ON)
|
||||
#else
|
||||
#define Z_enable() NOOP
|
||||
#define Z_disable() NOOP
|
||||
#endif
|
||||
|
||||
#if AXIS_DRIVER_TYPE_Z2(L6470)
|
||||
extern L6470 stepperZ2;
|
||||
#define Z2_enable() NOOP
|
||||
#define Z2_disable() stepperZ2.free()
|
||||
#elif HAS_Z2_ENABLE
|
||||
#define Z2_enable() Z2_ENABLE_WRITE( Z_ENABLE_ON)
|
||||
#define Z2_disable() Z2_ENABLE_WRITE(!Z_ENABLE_ON)
|
||||
#else
|
||||
#define Z2_enable() NOOP
|
||||
#define Z2_disable() NOOP
|
||||
#endif
|
||||
|
||||
#if AXIS_DRIVER_TYPE_Z3(L6470)
|
||||
extern L6470 stepperZ3;
|
||||
#define Z3_enable() NOOP
|
||||
#define Z3_disable() stepperZ3.free()
|
||||
#elif HAS_Z3_ENABLE
|
||||
#define Z3_enable() Z3_ENABLE_WRITE( Z_ENABLE_ON)
|
||||
#define Z3_disable() Z3_ENABLE_WRITE(!Z_ENABLE_ON)
|
||||
#else
|
||||
#define Z3_enable() NOOP
|
||||
#define Z3_disable() NOOP
|
||||
#endif
|
||||
|
||||
#if AXIS_DRIVER_TYPE_Z4(L6470)
|
||||
extern L6470 stepperZ4;
|
||||
#define Z4_enable() NOOP
|
||||
#define Z4_disable() stepperZ4.free()
|
||||
#elif HAS_Z4_ENABLE
|
||||
#define Z4_enable() Z4_ENABLE_WRITE( Z_ENABLE_ON)
|
||||
#define Z4_disable() Z4_ENABLE_WRITE(!Z_ENABLE_ON)
|
||||
#else
|
||||
#define Z4_enable() NOOP
|
||||
#define Z4_disable() NOOP
|
||||
#endif
|
||||
|
||||
#define enable_Z() do{ Z_enable(); Z2_enable(); Z3_enable(); Z4_enable(); }while(0)
|
||||
#define disable_Z() do{ Z_disable(); Z2_disable(); Z3_disable(); Z4_disable(); CBI(axis_known_position, Z_AXIS); }while(0)
|
||||
|
||||
//
|
||||
// Extruder Stepper enable / disable
|
||||
// Individual stepper enable / disable macros
|
||||
//
|
||||
|
||||
// define the individual enables/disables
|
||||
#if AXIS_DRIVER_TYPE_E0(L6470)
|
||||
extern L6470 stepperE0;
|
||||
#define E0_enable() NOOP
|
||||
#define E0_disable() do{ stepperE0.free(); CBI(axis_known_position, E_AXIS); }while(0)
|
||||
#elif HAS_E0_ENABLE
|
||||
#define E0_enable() E0_ENABLE_WRITE( E_ENABLE_ON)
|
||||
#define E0_disable() E0_ENABLE_WRITE(!E_ENABLE_ON)
|
||||
#else
|
||||
#define E0_enable() NOOP
|
||||
#define E0_disable() NOOP
|
||||
#ifndef ENABLE_STEPPER_X
|
||||
#if HAS_X_ENABLE
|
||||
#define ENABLE_STEPPER_X() X_ENABLE_WRITE( X_ENABLE_ON)
|
||||
#else
|
||||
#define ENABLE_STEPPER_X() NOOP
|
||||
#endif
|
||||
#endif
|
||||
#ifndef DISABLE_STEPPER_X
|
||||
#if HAS_X_ENABLE
|
||||
#define DISABLE_STEPPER_X() X_ENABLE_WRITE(!X_ENABLE_ON)
|
||||
#else
|
||||
#define DISABLE_STEPPER_X() NOOP
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if AXIS_DRIVER_TYPE_E1(L6470)
|
||||
extern L6470 stepperE1;
|
||||
#define E1_enable() NOOP
|
||||
#define E1_disable() do{ stepperE1.free(); CBI(axis_known_position, E_AXIS); }while(0)
|
||||
#elif E_STEPPERS > 1 && HAS_E1_ENABLE
|
||||
#define E1_enable() E1_ENABLE_WRITE( E_ENABLE_ON)
|
||||
#define E1_disable() E1_ENABLE_WRITE(!E_ENABLE_ON)
|
||||
#else
|
||||
#define E1_enable() NOOP
|
||||
#define E1_disable() NOOP
|
||||
#ifndef ENABLE_STEPPER_X2
|
||||
#if HAS_X2_ENABLE
|
||||
#define ENABLE_STEPPER_X2() X2_ENABLE_WRITE( X_ENABLE_ON)
|
||||
#else
|
||||
#define ENABLE_STEPPER_X2() NOOP
|
||||
#endif
|
||||
#endif
|
||||
#ifndef DISABLE_STEPPER_X2
|
||||
#if HAS_X2_ENABLE
|
||||
#define DISABLE_STEPPER_X2() X2_ENABLE_WRITE(!X_ENABLE_ON)
|
||||
#else
|
||||
#define DISABLE_STEPPER_X2() NOOP
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if AXIS_DRIVER_TYPE_E2(L6470)
|
||||
extern L6470 stepperE2;
|
||||
#define E2_enable() NOOP
|
||||
#define E2_disable() do{ stepperE2.free(); CBI(axis_known_position, E_AXIS); }while(0)
|
||||
#elif E_STEPPERS > 2 && HAS_E2_ENABLE
|
||||
#define E2_enable() E2_ENABLE_WRITE( E_ENABLE_ON)
|
||||
#define E2_disable() E2_ENABLE_WRITE(!E_ENABLE_ON)
|
||||
#else
|
||||
#define E2_enable() NOOP
|
||||
#define E2_disable() NOOP
|
||||
#ifndef ENABLE_STEPPER_Y
|
||||
#if HAS_Y_ENABLE
|
||||
#define ENABLE_STEPPER_Y() Y_ENABLE_WRITE( Y_ENABLE_ON)
|
||||
#else
|
||||
#define ENABLE_STEPPER_Y() NOOP
|
||||
#endif
|
||||
#endif
|
||||
#ifndef DISABLE_STEPPER_Y
|
||||
#if HAS_Y_ENABLE
|
||||
#define DISABLE_STEPPER_Y() Y_ENABLE_WRITE(!Y_ENABLE_ON)
|
||||
#else
|
||||
#define DISABLE_STEPPER_Y() NOOP
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if AXIS_DRIVER_TYPE_E3(L6470)
|
||||
extern L6470 stepperE3;
|
||||
#define E3_enable() NOOP
|
||||
#define E3_disable() do{ stepperE3.free(); CBI(axis_known_position, E_AXIS); }while(0)
|
||||
#elif E_STEPPERS > 3 && HAS_E3_ENABLE
|
||||
#define E3_enable() E3_ENABLE_WRITE( E_ENABLE_ON)
|
||||
#define E3_disable() E3_ENABLE_WRITE(!E_ENABLE_ON)
|
||||
#else
|
||||
#define E3_enable() NOOP
|
||||
#define E3_disable() NOOP
|
||||
#ifndef ENABLE_STEPPER_Y2
|
||||
#if HAS_Y2_ENABLE
|
||||
#define ENABLE_STEPPER_Y2() Y2_ENABLE_WRITE( Y_ENABLE_ON)
|
||||
#else
|
||||
#define ENABLE_STEPPER_Y2() NOOP
|
||||
#endif
|
||||
#endif
|
||||
#ifndef DISABLE_STEPPER_Y2
|
||||
#if HAS_Y2_ENABLE
|
||||
#define DISABLE_STEPPER_Y2() Y2_ENABLE_WRITE(!Y_ENABLE_ON)
|
||||
#else
|
||||
#define DISABLE_STEPPER_Y2() NOOP
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if AXIS_DRIVER_TYPE_E4(L6470)
|
||||
extern L6470 stepperE4;
|
||||
#define E4_enable() NOOP
|
||||
#define E4_disable() do{ stepperE4.free(); CBI(axis_known_position, E_AXIS); }while(0)
|
||||
#elif E_STEPPERS > 4 && HAS_E4_ENABLE
|
||||
#define E4_enable() E4_ENABLE_WRITE( E_ENABLE_ON)
|
||||
#define E4_disable() E4_ENABLE_WRITE(!E_ENABLE_ON)
|
||||
#else
|
||||
#define E4_enable() NOOP
|
||||
#define E4_disable() NOOP
|
||||
#ifndef ENABLE_STEPPER_Z
|
||||
#if HAS_Z_ENABLE
|
||||
#define ENABLE_STEPPER_Z() Z_ENABLE_WRITE( Z_ENABLE_ON)
|
||||
#else
|
||||
#define ENABLE_STEPPER_Z() NOOP
|
||||
#endif
|
||||
#endif
|
||||
#ifndef DISABLE_STEPPER_Z
|
||||
#if HAS_Z_ENABLE
|
||||
#define DISABLE_STEPPER_Z() Z_ENABLE_WRITE(!Z_ENABLE_ON)
|
||||
#else
|
||||
#define DISABLE_STEPPER_Z() NOOP
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if AXIS_DRIVER_TYPE_E5(L6470)
|
||||
extern L6470 stepperE5;
|
||||
#define E5_enable() NOOP
|
||||
#define E5_disable() do{ stepperE5.free(); CBI(axis_known_position, E_AXIS); }while(0)
|
||||
#elif E_STEPPERS > 5 && HAS_E5_ENABLE
|
||||
#define E5_enable() E5_ENABLE_WRITE( E_ENABLE_ON)
|
||||
#define E5_disable() E5_ENABLE_WRITE(!E_ENABLE_ON)
|
||||
#else
|
||||
#define E5_enable() NOOP
|
||||
#define E5_disable() NOOP
|
||||
#ifndef ENABLE_STEPPER_Z2
|
||||
#if HAS_Z2_ENABLE
|
||||
#define ENABLE_STEPPER_Z2() Z2_ENABLE_WRITE( Z_ENABLE_ON)
|
||||
#else
|
||||
#define ENABLE_STEPPER_Z2() NOOP
|
||||
#endif
|
||||
#endif
|
||||
#ifndef DISABLE_STEPPER_Z2
|
||||
#if HAS_Z2_ENABLE
|
||||
#define DISABLE_STEPPER_Z2() Z2_ENABLE_WRITE(!Z_ENABLE_ON)
|
||||
#else
|
||||
#define DISABLE_STEPPER_Z2() NOOP
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if AXIS_DRIVER_TYPE_E6(L6470)
|
||||
extern L6470 stepperE6;
|
||||
#define E6_enable() NOOP
|
||||
#define E6_disable() do{ stepperE6.free(); CBI(axis_known_position, E_AXIS); }while(0)
|
||||
#elif E_STEPPERS > 6 && HAS_E6_ENABLE
|
||||
#define E6_enable() E6_ENABLE_WRITE( E_ENABLE_ON)
|
||||
#define E6_disable() E6_ENABLE_WRITE(!E_ENABLE_ON)
|
||||
#else
|
||||
#define E6_enable() NOOP
|
||||
#define E6_disable() NOOP
|
||||
#ifndef ENABLE_STEPPER_Z3
|
||||
#if HAS_Z3_ENABLE
|
||||
#define ENABLE_STEPPER_Z3() Z3_ENABLE_WRITE( Z_ENABLE_ON)
|
||||
#else
|
||||
#define ENABLE_STEPPER_Z3() NOOP
|
||||
#endif
|
||||
#endif
|
||||
#ifndef DISABLE_STEPPER_Z3
|
||||
#if HAS_Z3_ENABLE
|
||||
#define DISABLE_STEPPER_Z3() Z3_ENABLE_WRITE(!Z_ENABLE_ON)
|
||||
#else
|
||||
#define DISABLE_STEPPER_Z3() NOOP
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if AXIS_DRIVER_TYPE_E7(L6470)
|
||||
extern L6470 stepperE7;
|
||||
#define E7_enable() NOOP
|
||||
#define E7_disable() do{ stepperE7.free(); CBI(axis_known_position, E_AXIS); }while(0)
|
||||
#elif E_STEPPERS > 7 && HAS_E7_ENABLE
|
||||
#define E7_enable() E7_ENABLE_WRITE( E_ENABLE_ON)
|
||||
#define E7_disable() E7_ENABLE_WRITE(!E_ENABLE_ON)
|
||||
#else
|
||||
#define E7_enable() NOOP
|
||||
#define E7_disable() NOOP
|
||||
#ifndef ENABLE_STEPPER_Z4
|
||||
#if HAS_Z4_ENABLE
|
||||
#define ENABLE_STEPPER_Z4() Z4_ENABLE_WRITE( Z_ENABLE_ON)
|
||||
#else
|
||||
#define ENABLE_STEPPER_Z4() NOOP
|
||||
#endif
|
||||
#endif
|
||||
#ifndef DISABLE_STEPPER_Z4
|
||||
#if HAS_Z4_ENABLE
|
||||
#define DISABLE_STEPPER_Z4() Z4_ENABLE_WRITE(!Z_ENABLE_ON)
|
||||
#else
|
||||
#define DISABLE_STEPPER_Z4() NOOP
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef ENABLE_STEPPER_E0
|
||||
#if HAS_E0_ENABLE
|
||||
#define ENABLE_STEPPER_E0() E0_ENABLE_WRITE( E_ENABLE_ON)
|
||||
#else
|
||||
#define ENABLE_STEPPER_E0() NOOP
|
||||
#endif
|
||||
#endif
|
||||
#ifndef DISABLE_STEPPER_E0
|
||||
#if HAS_E0_ENABLE
|
||||
#define DISABLE_STEPPER_E0() E0_ENABLE_WRITE(!E_ENABLE_ON)
|
||||
#else
|
||||
#define DISABLE_STEPPER_E0() NOOP
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef ENABLE_STEPPER_E1
|
||||
#if E_STEPPERS > 1 && HAS_E1_ENABLE
|
||||
#define ENABLE_STEPPER_E1() E1_ENABLE_WRITE( E_ENABLE_ON)
|
||||
#else
|
||||
#define ENABLE_STEPPER_E1() NOOP
|
||||
#endif
|
||||
#endif
|
||||
#ifndef DISABLE_STEPPER_E1
|
||||
#if E_STEPPERS > 1 && HAS_E1_ENABLE
|
||||
#define DISABLE_STEPPER_E1() E1_ENABLE_WRITE(!E_ENABLE_ON)
|
||||
#else
|
||||
#define DISABLE_STEPPER_E1() NOOP
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef ENABLE_STEPPER_E2
|
||||
#if E_STEPPERS > 2 && HAS_E2_ENABLE
|
||||
#define ENABLE_STEPPER_E2() E2_ENABLE_WRITE( E_ENABLE_ON)
|
||||
#else
|
||||
#define ENABLE_STEPPER_E2() NOOP
|
||||
#endif
|
||||
#endif
|
||||
#ifndef DISABLE_STEPPER_E2
|
||||
#if E_STEPPERS > 2 && HAS_E2_ENABLE
|
||||
#define DISABLE_STEPPER_E2() E2_ENABLE_WRITE(!E_ENABLE_ON)
|
||||
#else
|
||||
#define DISABLE_STEPPER_E2() NOOP
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef ENABLE_STEPPER_E3
|
||||
#if E_STEPPERS > 3 && HAS_E3_ENABLE
|
||||
#define ENABLE_STEPPER_E3() E3_ENABLE_WRITE( E_ENABLE_ON)
|
||||
#else
|
||||
#define ENABLE_STEPPER_E3() NOOP
|
||||
#endif
|
||||
#endif
|
||||
#ifndef DISABLE_STEPPER_E3
|
||||
#if E_STEPPERS > 3 && HAS_E3_ENABLE
|
||||
#define DISABLE_STEPPER_E3() E3_ENABLE_WRITE(!E_ENABLE_ON)
|
||||
#else
|
||||
#define DISABLE_STEPPER_E3() NOOP
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef ENABLE_STEPPER_E4
|
||||
#if E_STEPPERS > 4 && HAS_E4_ENABLE
|
||||
#define ENABLE_STEPPER_E4() E4_ENABLE_WRITE( E_ENABLE_ON)
|
||||
#else
|
||||
#define ENABLE_STEPPER_E4() NOOP
|
||||
#endif
|
||||
#endif
|
||||
#ifndef DISABLE_STEPPER_E4
|
||||
#if E_STEPPERS > 4 && HAS_E4_ENABLE
|
||||
#define DISABLE_STEPPER_E4() E4_ENABLE_WRITE(!E_ENABLE_ON)
|
||||
#else
|
||||
#define DISABLE_STEPPER_E4() NOOP
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef ENABLE_STEPPER_E5
|
||||
#if E_STEPPERS > 5 && HAS_E5_ENABLE
|
||||
#define ENABLE_STEPPER_E5() E5_ENABLE_WRITE( E_ENABLE_ON)
|
||||
#else
|
||||
#define ENABLE_STEPPER_E5() NOOP
|
||||
#endif
|
||||
#endif
|
||||
#ifndef DISABLE_STEPPER_E5
|
||||
#if E_STEPPERS > 5 && HAS_E5_ENABLE
|
||||
#define DISABLE_STEPPER_E5() E5_ENABLE_WRITE(!E_ENABLE_ON)
|
||||
#else
|
||||
#define DISABLE_STEPPER_E5() NOOP
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef ENABLE_STEPPER_E6
|
||||
#if E_STEPPERS > 6 && HAS_E6_ENABLE
|
||||
#define ENABLE_STEPPER_E6() E6_ENABLE_WRITE( E_ENABLE_ON)
|
||||
#else
|
||||
#define ENABLE_STEPPER_E6() NOOP
|
||||
#endif
|
||||
#endif
|
||||
#ifndef DISABLE_STEPPER_E6
|
||||
#if E_STEPPERS > 6 && HAS_E6_ENABLE
|
||||
#define DISABLE_STEPPER_E6() E6_ENABLE_WRITE(!E_ENABLE_ON)
|
||||
#else
|
||||
#define DISABLE_STEPPER_E6() NOOP
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef ENABLE_STEPPER_E7
|
||||
#if E_STEPPERS > 7 && HAS_E7_ENABLE
|
||||
#define ENABLE_STEPPER_E7() E7_ENABLE_WRITE( E_ENABLE_ON)
|
||||
#else
|
||||
#define ENABLE_STEPPER_E7() NOOP
|
||||
#endif
|
||||
#endif
|
||||
#ifndef DISABLE_STEPPER_E7
|
||||
#if E_STEPPERS > 7 && HAS_E7_ENABLE
|
||||
#define DISABLE_STEPPER_E7() E7_ENABLE_WRITE(!E_ENABLE_ON)
|
||||
#else
|
||||
#define DISABLE_STEPPER_E7() NOOP
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//
|
||||
// Axis steppers enable / disable macros
|
||||
//
|
||||
|
||||
#define ENABLE_AXIS_X() do{ ENABLE_STEPPER_X(); ENABLE_STEPPER_X2(); }while(0)
|
||||
#define DISABLE_AXIS_X() do{ DISABLE_STEPPER_X(); DISABLE_STEPPER_X2(); CBI(axis_known_position, X_AXIS); }while(0)
|
||||
|
||||
#define ENABLE_AXIS_Y() do{ ENABLE_STEPPER_Y(); ENABLE_STEPPER_Y2(); }while(0)
|
||||
#define DISABLE_AXIS_Y() do{ DISABLE_STEPPER_Y(); DISABLE_STEPPER_Y2(); CBI(axis_known_position, Y_AXIS); }while(0)
|
||||
|
||||
#define ENABLE_AXIS_Z() do{ ENABLE_STEPPER_Z(); ENABLE_STEPPER_Z2(); ENABLE_STEPPER_Z3(); ENABLE_STEPPER_Z4(); }while(0)
|
||||
#define DISABLE_AXIS_Z() do{ DISABLE_STEPPER_Z(); DISABLE_STEPPER_Z2(); DISABLE_STEPPER_Z3(); DISABLE_STEPPER_Z4(); CBI(axis_known_position, Z_AXIS); }while(0)
|
||||
|
||||
//
|
||||
// Extruder steppers enable / disable macros
|
||||
//
|
||||
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
|
||||
/**
|
||||
* Mixing steppers synchronize their enable (and direction) together
|
||||
* Mixing steppers keep all their enable (and direction) states synchronized
|
||||
*/
|
||||
#if MIXING_STEPPERS > 7
|
||||
#define enable_E0() { E0_enable(); E1_enable(); E2_enable(); E3_enable(); E4_enable(); E5_enable(); E6_enable(); E7_enable(); }
|
||||
#define disable_E0() { E0_disable(); E1_disable(); E2_disable(); E3_disable(); E4_disable(); E5_disable(); E6_disable(); E7_disable(); }
|
||||
#define ENABLE_AXIS_E0() { ENABLE_STEPPER_E0(); ENABLE_STEPPER_E1(); ENABLE_STEPPER_E2(); ENABLE_STEPPER_E3(); ENABLE_STEPPER_E4(); ENABLE_STEPPER_E5(); ENABLE_STEPPER_E6(); ENABLE_STEPPER_E7(); }
|
||||
#define DISABLE_AXIS_E0() { DISABLE_STEPPER_E0(); DISABLE_STEPPER_E1(); DISABLE_STEPPER_E2(); DISABLE_STEPPER_E3(); DISABLE_STEPPER_E4(); DISABLE_STEPPER_E5(); DISABLE_STEPPER_E6(); DISABLE_STEPPER_E7(); }
|
||||
#elif MIXING_STEPPERS > 6
|
||||
#define enable_E0() { E0_enable(); E1_enable(); E2_enable(); E3_enable(); E4_enable(); E5_enable(); E6_enable(); }
|
||||
#define disable_E0() { E0_disable(); E1_disable(); E2_disable(); E3_disable(); E4_disable(); E5_disable(); E6_disable(); }
|
||||
#define ENABLE_AXIS_E0() { ENABLE_STEPPER_E0(); ENABLE_STEPPER_E1(); ENABLE_STEPPER_E2(); ENABLE_STEPPER_E3(); ENABLE_STEPPER_E4(); ENABLE_STEPPER_E5(); ENABLE_STEPPER_E6(); }
|
||||
#define DISABLE_AXIS_E0() { DISABLE_STEPPER_E0(); DISABLE_STEPPER_E1(); DISABLE_STEPPER_E2(); DISABLE_STEPPER_E3(); DISABLE_STEPPER_E4(); DISABLE_STEPPER_E5(); DISABLE_STEPPER_E6(); }
|
||||
#elif MIXING_STEPPERS > 5
|
||||
#define enable_E0() { E0_enable(); E1_enable(); E2_enable(); E3_enable(); E4_enable(); E5_enable(); }
|
||||
#define disable_E0() { E0_disable(); E1_disable(); E2_disable(); E3_disable(); E4_disable(); E5_disable(); }
|
||||
#define ENABLE_AXIS_E0() { ENABLE_STEPPER_E0(); ENABLE_STEPPER_E1(); ENABLE_STEPPER_E2(); ENABLE_STEPPER_E3(); ENABLE_STEPPER_E4(); ENABLE_STEPPER_E5(); }
|
||||
#define DISABLE_AXIS_E0() { DISABLE_STEPPER_E0(); DISABLE_STEPPER_E1(); DISABLE_STEPPER_E2(); DISABLE_STEPPER_E3(); DISABLE_STEPPER_E4(); DISABLE_STEPPER_E5(); }
|
||||
#elif MIXING_STEPPERS > 4
|
||||
#define enable_E0() { E0_enable(); E1_enable(); E2_enable(); E3_enable(); E4_enable(); }
|
||||
#define disable_E0() { E0_disable(); E1_disable(); E2_disable(); E3_disable(); E4_disable(); }
|
||||
#define ENABLE_AXIS_E0() { ENABLE_STEPPER_E0(); ENABLE_STEPPER_E1(); ENABLE_STEPPER_E2(); ENABLE_STEPPER_E3(); ENABLE_STEPPER_E4(); }
|
||||
#define DISABLE_AXIS_E0() { DISABLE_STEPPER_E0(); DISABLE_STEPPER_E1(); DISABLE_STEPPER_E2(); DISABLE_STEPPER_E3(); DISABLE_STEPPER_E4(); }
|
||||
#elif MIXING_STEPPERS > 3
|
||||
#define enable_E0() { E0_enable(); E1_enable(); E2_enable(); E3_enable(); }
|
||||
#define disable_E0() { E0_disable(); E1_disable(); E2_disable(); E3_disable(); }
|
||||
#define ENABLE_AXIS_E0() { ENABLE_STEPPER_E0(); ENABLE_STEPPER_E1(); ENABLE_STEPPER_E2(); ENABLE_STEPPER_E3(); }
|
||||
#define DISABLE_AXIS_E0() { DISABLE_STEPPER_E0(); DISABLE_STEPPER_E1(); DISABLE_STEPPER_E2(); DISABLE_STEPPER_E3(); }
|
||||
#elif MIXING_STEPPERS > 2
|
||||
#define enable_E0() { E0_enable(); E1_enable(); E2_enable(); }
|
||||
#define disable_E0() { E0_disable(); E1_disable(); E2_disable(); }
|
||||
#define ENABLE_AXIS_E0() { ENABLE_STEPPER_E0(); ENABLE_STEPPER_E1(); ENABLE_STEPPER_E2(); }
|
||||
#define DISABLE_AXIS_E0() { DISABLE_STEPPER_E0(); DISABLE_STEPPER_E1(); DISABLE_STEPPER_E2(); }
|
||||
#else
|
||||
#define enable_E0() { E0_enable(); E1_enable(); }
|
||||
#define disable_E0() { E0_disable(); E1_disable(); }
|
||||
#endif
|
||||
#define enable_E1() NOOP
|
||||
#define disable_E1() NOOP
|
||||
#define enable_E2() NOOP
|
||||
#define disable_E2() NOOP
|
||||
#define enable_E3() NOOP
|
||||
#define disable_E3() NOOP
|
||||
#define enable_E4() NOOP
|
||||
#define disable_E4() NOOP
|
||||
#define enable_E5() NOOP
|
||||
#define disable_E5() NOOP
|
||||
#define enable_E6() NOOP
|
||||
#define disable_E6() NOOP
|
||||
#define enable_E7() NOOP
|
||||
#define disable_E7() NOOP
|
||||
|
||||
#else // !MIXING_EXTRUDER
|
||||
|
||||
#if HAS_E0_ENABLE
|
||||
#define enable_E0() E0_enable()
|
||||
#define disable_E0() E0_disable()
|
||||
#else
|
||||
#define enable_E0() NOOP
|
||||
#define disable_E0() NOOP
|
||||
#endif
|
||||
|
||||
#if E_STEPPERS > 1 && HAS_E1_ENABLE
|
||||
#define enable_E1() E1_enable()
|
||||
#define disable_E1() E1_disable()
|
||||
#else
|
||||
#define enable_E1() NOOP
|
||||
#define disable_E1() NOOP
|
||||
#endif
|
||||
|
||||
#if E_STEPPERS > 2 && HAS_E2_ENABLE
|
||||
#define enable_E2() E2_enable()
|
||||
#define disable_E2() E2_disable()
|
||||
#else
|
||||
#define enable_E2() NOOP
|
||||
#define disable_E2() NOOP
|
||||
#endif
|
||||
|
||||
#if E_STEPPERS > 3 && HAS_E3_ENABLE
|
||||
#define enable_E3() E3_enable()
|
||||
#define disable_E3() E3_disable()
|
||||
#else
|
||||
#define enable_E3() NOOP
|
||||
#define disable_E3() NOOP
|
||||
#endif
|
||||
|
||||
#if E_STEPPERS > 4 && HAS_E4_ENABLE
|
||||
#define enable_E4() E4_enable()
|
||||
#define disable_E4() E4_disable()
|
||||
#else
|
||||
#define enable_E4() NOOP
|
||||
#define disable_E4() NOOP
|
||||
#endif
|
||||
|
||||
#if E_STEPPERS > 5 && HAS_E5_ENABLE
|
||||
#define enable_E5() E5_enable()
|
||||
#define disable_E5() E5_disable()
|
||||
#else
|
||||
#define enable_E5() NOOP
|
||||
#define disable_E5() NOOP
|
||||
#endif
|
||||
|
||||
#if E_STEPPERS > 6 && HAS_E6_ENABLE
|
||||
#define enable_E6() E6_enable()
|
||||
#define disable_E6() E6_disable()
|
||||
#else
|
||||
#define enable_E6() NOOP
|
||||
#define disable_E6() NOOP
|
||||
#endif
|
||||
|
||||
#if E_STEPPERS > 7 && HAS_E7_ENABLE
|
||||
#define enable_E7() E7_enable()
|
||||
#define disable_E7() E7_disable()
|
||||
#else
|
||||
#define enable_E7() NOOP
|
||||
#define disable_E7() NOOP
|
||||
#define ENABLE_AXIS_E0() { ENABLE_STEPPER_E0(); ENABLE_STEPPER_E1(); }
|
||||
#define DISABLE_AXIS_E0() { DISABLE_STEPPER_E0(); DISABLE_STEPPER_E1(); }
|
||||
#endif
|
||||
|
||||
#endif // !MIXING_EXTRUDER
|
||||
|
||||
#ifndef ENABLE_AXIS_E0
|
||||
#if E_STEPPERS > 0 && HAS_E0_ENABLE
|
||||
#define ENABLE_AXIS_E0() ENABLE_STEPPER_E0()
|
||||
#else
|
||||
#define ENABLE_AXIS_E0() NOOP
|
||||
#endif
|
||||
#endif
|
||||
#ifndef DISABLE_AXIS_E0
|
||||
#if E_STEPPERS > 0 && HAS_E0_DISABLE
|
||||
#define DISABLE_AXIS_E0() DISABLE_STEPPER_E0()
|
||||
#else
|
||||
#define DISABLE_AXIS_E0() NOOP
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef ENABLE_AXIS_E1
|
||||
#if E_STEPPERS > 1 && HAS_E1_ENABLE
|
||||
#define ENABLE_AXIS_E1() ENABLE_STEPPER_E1()
|
||||
#else
|
||||
#define ENABLE_AXIS_E1() NOOP
|
||||
#endif
|
||||
#endif
|
||||
#ifndef DISABLE_AXIS_E1
|
||||
#if E_STEPPERS > 1 && HAS_E1_DISABLE
|
||||
#define DISABLE_AXIS_E1() DISABLE_STEPPER_E1()
|
||||
#else
|
||||
#define DISABLE_AXIS_E1() NOOP
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef ENABLE_AXIS_E2
|
||||
#if E_STEPPERS > 2 && HAS_E2_ENABLE
|
||||
#define ENABLE_AXIS_E2() ENABLE_STEPPER_E2()
|
||||
#else
|
||||
#define ENABLE_AXIS_E2() NOOP
|
||||
#endif
|
||||
#endif
|
||||
#ifndef DISABLE_AXIS_E2
|
||||
#if E_STEPPERS > 2 && HAS_E2_DISABLE
|
||||
#define DISABLE_AXIS_E2() DISABLE_STEPPER_E2()
|
||||
#else
|
||||
#define DISABLE_AXIS_E2() NOOP
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef ENABLE_AXIS_E3
|
||||
#if E_STEPPERS > 3 && HAS_E3_ENABLE
|
||||
#define ENABLE_AXIS_E3() ENABLE_STEPPER_E3()
|
||||
#else
|
||||
#define ENABLE_AXIS_E3() NOOP
|
||||
#endif
|
||||
#endif
|
||||
#ifndef DISABLE_AXIS_E3
|
||||
#if E_STEPPERS > 3 && HAS_E3_DISABLE
|
||||
#define DISABLE_AXIS_E3() DISABLE_STEPPER_E3()
|
||||
#else
|
||||
#define DISABLE_AXIS_E3() NOOP
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef ENABLE_AXIS_E4
|
||||
#if E_STEPPERS > 4 && HAS_E4_ENABLE
|
||||
#define ENABLE_AXIS_E4() ENABLE_STEPPER_E4()
|
||||
#else
|
||||
#define ENABLE_AXIS_E4() NOOP
|
||||
#endif
|
||||
#endif
|
||||
#ifndef DISABLE_AXIS_E4
|
||||
#if E_STEPPERS > 4 && HAS_E4_DISABLE
|
||||
#define DISABLE_AXIS_E4() DISABLE_STEPPER_E4()
|
||||
#else
|
||||
#define DISABLE_AXIS_E4() NOOP
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef ENABLE_AXIS_E5
|
||||
#if E_STEPPERS > 5 && HAS_E5_ENABLE
|
||||
#define ENABLE_AXIS_E5() ENABLE_STEPPER_E5()
|
||||
#else
|
||||
#define ENABLE_AXIS_E5() NOOP
|
||||
#endif
|
||||
#endif
|
||||
#ifndef DISABLE_AXIS_E5
|
||||
#if E_STEPPERS > 5 && HAS_E5_DISABLE
|
||||
#define DISABLE_AXIS_E5() DISABLE_STEPPER_E5()
|
||||
#else
|
||||
#define DISABLE_AXIS_E5() NOOP
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef ENABLE_AXIS_E6
|
||||
#if E_STEPPERS > 6 && HAS_E6_ENABLE
|
||||
#define ENABLE_AXIS_E6() ENABLE_STEPPER_E6()
|
||||
#else
|
||||
#define ENABLE_AXIS_E6() NOOP
|
||||
#endif
|
||||
#endif
|
||||
#ifndef DISABLE_AXIS_E6
|
||||
#if E_STEPPERS > 6 && HAS_E6_DISABLE
|
||||
#define DISABLE_AXIS_E6() DISABLE_STEPPER_E6()
|
||||
#else
|
||||
#define DISABLE_AXIS_E6() NOOP
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef ENABLE_AXIS_E7
|
||||
#if E_STEPPERS > 7 && HAS_E7_ENABLE
|
||||
#define ENABLE_AXIS_E7() ENABLE_STEPPER_E7()
|
||||
#else
|
||||
#define ENABLE_AXIS_E7() NOOP
|
||||
#endif
|
||||
#endif
|
||||
#ifndef DISABLE_AXIS_E7
|
||||
#if E_STEPPERS > 7 && HAS_E7_DISABLE
|
||||
#define DISABLE_AXIS_E7() DISABLE_STEPPER_E7()
|
||||
#else
|
||||
#define DISABLE_AXIS_E7() NOOP
|
||||
#endif
|
||||
#endif
|
||||
|
@@ -220,10 +220,10 @@ Temperature thermalManager;
|
||||
#endif // FAN_COUNT > 0
|
||||
|
||||
#if WATCH_HOTENDS
|
||||
heater_watch_t Temperature::watch_hotend[HOTENDS]; // = { { 0 } }
|
||||
hotend_watch_t Temperature::watch_hotend[HOTENDS]; // = { { 0 } }
|
||||
#endif
|
||||
#if HEATER_IDLE_HANDLER
|
||||
heater_idle_t Temperature::hotend_idle[HOTENDS]; // = { { 0 } }
|
||||
hotend_idle_t Temperature::hotend_idle[HOTENDS]; // = { { 0 } }
|
||||
#endif
|
||||
|
||||
#if HAS_HEATED_BED
|
||||
@@ -236,13 +236,13 @@ Temperature thermalManager;
|
||||
int16_t Temperature::maxtemp_raw_BED = HEATER_BED_RAW_HI_TEMP;
|
||||
#endif
|
||||
#if WATCH_BED
|
||||
heater_watch_t Temperature::watch_bed; // = { 0 }
|
||||
bed_watch_t Temperature::watch_bed; // = { 0 }
|
||||
#endif
|
||||
#if DISABLED(PIDTEMPBED)
|
||||
millis_t Temperature::next_bed_check_ms;
|
||||
#endif
|
||||
#if HEATER_IDLE_HANDLER
|
||||
heater_idle_t Temperature::bed_idle; // = { 0 }
|
||||
hotend_idle_t Temperature::bed_idle; // = { 0 }
|
||||
#endif
|
||||
#endif // HAS_HEATED_BED
|
||||
|
||||
@@ -256,7 +256,7 @@ Temperature thermalManager;
|
||||
int16_t Temperature::maxtemp_raw_CHAMBER = HEATER_CHAMBER_RAW_HI_TEMP;
|
||||
#endif
|
||||
#if WATCH_CHAMBER
|
||||
heater_watch_t Temperature::watch_chamber{0};
|
||||
chamber_watch_t Temperature::watch_chamber{0};
|
||||
#endif
|
||||
millis_t Temperature::next_chamber_check_ms;
|
||||
#endif // HAS_HEATED_CHAMBER
|
||||
@@ -1974,12 +1974,7 @@ void Temperature::init() {
|
||||
*/
|
||||
void Temperature::start_watching_hotend(const uint8_t E_NAME) {
|
||||
const uint8_t ee = HOTEND_INDEX;
|
||||
if (degTargetHotend(ee) && degHotend(ee) < degTargetHotend(ee) - (WATCH_TEMP_INCREASE + TEMP_HYSTERESIS + 1)) {
|
||||
watch_hotend[ee].target = degHotend(ee) + WATCH_TEMP_INCREASE;
|
||||
watch_hotend[ee].next_ms = millis() + (WATCH_TEMP_PERIOD) * 1000UL;
|
||||
}
|
||||
else
|
||||
watch_hotend[ee].next_ms = 0;
|
||||
watch_hotend[ee].restart(degHotend(ee), degTargetHotend(ee));
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1990,12 +1985,7 @@ void Temperature::init() {
|
||||
* This is called when the temperature is set. (M140, M190)
|
||||
*/
|
||||
void Temperature::start_watching_bed() {
|
||||
if (degTargetBed() && degBed() < degTargetBed() - (WATCH_BED_TEMP_INCREASE + TEMP_BED_HYSTERESIS + 1)) {
|
||||
watch_bed.target = degBed() + WATCH_BED_TEMP_INCREASE;
|
||||
watch_bed.next_ms = millis() + (WATCH_BED_TEMP_PERIOD) * 1000UL;
|
||||
}
|
||||
else
|
||||
watch_bed.next_ms = 0;
|
||||
watch_bed.restart(degBed(), degTargetBed());
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -2006,12 +1996,7 @@ void Temperature::init() {
|
||||
* This is called when the temperature is set. (M141, M191)
|
||||
*/
|
||||
void Temperature::start_watching_chamber() {
|
||||
if (degChamber() < degTargetChamber() - (WATCH_CHAMBER_TEMP_INCREASE + TEMP_CHAMBER_HYSTERESIS + 1)) {
|
||||
watch_chamber.target = degChamber() + WATCH_CHAMBER_TEMP_INCREASE;
|
||||
watch_chamber.next_ms = millis() + (WATCH_CHAMBER_TEMP_PERIOD) * 1000UL;
|
||||
}
|
||||
else
|
||||
watch_chamber.next_ms = 0;
|
||||
watch_chamber.restart(degChamber(), degTargetChamber());
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -2154,6 +2139,34 @@ void Temperature::disable_all_heaters() {
|
||||
#endif
|
||||
}
|
||||
|
||||
#if ENABLED(PRINTJOB_TIMER_AUTOSTART)
|
||||
|
||||
bool Temperature::over_autostart_threshold() {
|
||||
#if HOTENDS
|
||||
HOTEND_LOOP() if (degTargetHotend(e) < (EXTRUDE_MINTEMP) / 2) return true;
|
||||
#endif
|
||||
#if HAS_HEATED_BED
|
||||
if (degTargetBed() > BED_MINTEMP) return true;
|
||||
#endif
|
||||
#if HAS_HEATED_CHAMBER
|
||||
if (degTargetChamber() > CHAMBER_MINTEMP) return true;
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
void Temperature::check_timer_autostart(const bool can_start, const bool can_stop) {
|
||||
if (over_autostart_threshold()) {
|
||||
if (can_start) startOrResumeJob();
|
||||
}
|
||||
else if (can_stop) {
|
||||
print_job_timer.stop();
|
||||
ui.reset_status();
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#if ENABLED(PROBING_HEATERS_OFF)
|
||||
|
||||
void Temperature::pause(const bool p) {
|
||||
@@ -2166,7 +2179,7 @@ void Temperature::disable_all_heaters() {
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
HOTEND_LOOP() reset_heater_idle_timer(e);
|
||||
HOTEND_LOOP() reset_hotend_idle_timer(e);
|
||||
#if HAS_HEATED_BED
|
||||
reset_bed_idle_timer();
|
||||
#endif
|
||||
|
@@ -228,15 +228,38 @@ typedef struct {
|
||||
inline void start(const millis_t &ms) { timeout_ms = millis() + ms; timed_out = false; }
|
||||
inline void reset() { timeout_ms = 0; timed_out = false; }
|
||||
inline void expire() { start(0); }
|
||||
} heater_idle_t;
|
||||
} hotend_idle_t;
|
||||
|
||||
// Heater watch handling
|
||||
typedef struct {
|
||||
template <int INCREASE, int HYSTERESIS, millis_t PERIOD>
|
||||
struct HeaterWatch {
|
||||
uint16_t target;
|
||||
millis_t next_ms;
|
||||
inline bool elapsed(const millis_t &ms) { return next_ms && ELAPSED(ms, next_ms); }
|
||||
inline bool elapsed() { return elapsed(millis()); }
|
||||
} heater_watch_t;
|
||||
|
||||
inline void restart(const int16_t curr, const int16_t tgt) {
|
||||
if (tgt) {
|
||||
const int16_t newtarget = curr + INCREASE;
|
||||
if (newtarget < tgt - HYSTERESIS - 1) {
|
||||
target = newtarget;
|
||||
next_ms = millis() + PERIOD * 1000UL;
|
||||
return;
|
||||
}
|
||||
}
|
||||
next_ms = 0;
|
||||
}
|
||||
};
|
||||
|
||||
#if WATCH_HOTENDS
|
||||
typedef struct HeaterWatch<WATCH_TEMP_INCREASE, TEMP_HYSTERESIS, WATCH_TEMP_PERIOD> hotend_watch_t;
|
||||
#endif
|
||||
#if WATCH_BED
|
||||
typedef struct HeaterWatch<WATCH_BED_TEMP_INCREASE, TEMP_BED_HYSTERESIS, WATCH_BED_TEMP_PERIOD> bed_watch_t;
|
||||
#endif
|
||||
#if WATCH_CHAMBER
|
||||
typedef struct HeaterWatch<WATCH_CHAMBER_TEMP_INCREASE, TEMP_CHAMBER_HYSTERESIS, WATCH_CHAMBER_TEMP_PERIOD> chamber_watch_t;
|
||||
#endif
|
||||
|
||||
// Temperature sensor read value ranges
|
||||
typedef struct { int16_t raw_min, raw_max; } raw_range_t;
|
||||
@@ -345,12 +368,12 @@ class Temperature {
|
||||
FORCE_INLINE static bool targetHotEnoughToExtrude(const uint8_t e) { return !targetTooColdToExtrude(e); }
|
||||
|
||||
#if HEATER_IDLE_HANDLER
|
||||
static heater_idle_t hotend_idle[HOTENDS];
|
||||
static hotend_idle_t hotend_idle[HOTENDS];
|
||||
#if HAS_HEATED_BED
|
||||
static heater_idle_t bed_idle;
|
||||
static hotend_idle_t bed_idle;
|
||||
#endif
|
||||
#if HAS_HEATED_CHAMBER
|
||||
static heater_idle_t chamber_idle;
|
||||
static hotend_idle_t chamber_idle;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -363,7 +386,7 @@ class Temperature {
|
||||
static volatile bool raw_temps_ready;
|
||||
|
||||
#if WATCH_HOTENDS
|
||||
static heater_watch_t watch_hotend[HOTENDS];
|
||||
static hotend_watch_t watch_hotend[HOTENDS];
|
||||
#endif
|
||||
|
||||
#if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT)
|
||||
@@ -382,7 +405,7 @@ class Temperature {
|
||||
|
||||
#if HAS_HEATED_BED
|
||||
#if WATCH_BED
|
||||
static heater_watch_t watch_bed;
|
||||
static bed_watch_t watch_bed;
|
||||
#endif
|
||||
#if DISABLED(PIDTEMPBED)
|
||||
static millis_t next_bed_check_ms;
|
||||
@@ -397,7 +420,7 @@ class Temperature {
|
||||
|
||||
#if HAS_HEATED_CHAMBER
|
||||
#if WATCH_CHAMBER
|
||||
static heater_watch_t watch_chamber;
|
||||
static chamber_watch_t watch_chamber;
|
||||
#endif
|
||||
static millis_t next_chamber_check_ms;
|
||||
#ifdef CHAMBER_MINTEMP
|
||||
@@ -736,6 +759,14 @@ class Temperature {
|
||||
*/
|
||||
static void disable_all_heaters();
|
||||
|
||||
#if ENABLED(PRINTJOB_TIMER_AUTOSTART)
|
||||
/**
|
||||
* Methods to check if heaters are enabled, indicating an active job
|
||||
*/
|
||||
static bool over_autostart_threshold();
|
||||
static void check_timer_autostart(const bool can_start, const bool can_stop);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Perform auto-tuning for hotend or bed in response to M303
|
||||
*/
|
||||
@@ -768,7 +799,7 @@ class Temperature {
|
||||
|
||||
#if HEATER_IDLE_HANDLER
|
||||
|
||||
static void reset_heater_idle_timer(const uint8_t E_NAME) {
|
||||
static void reset_hotend_idle_timer(const uint8_t E_NAME) {
|
||||
hotend_idle[HOTEND_INDEX].reset();
|
||||
start_watching_hotend(HOTEND_INDEX);
|
||||
}
|
||||
|
77
Marlin/src/module/thermistor/thermistor_21.h
Normal file
77
Marlin/src/module/thermistor/thermistor_21.h
Normal file
@@ -0,0 +1,77 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#define REVERSE_TEMP_SENSOR_RANGE
|
||||
|
||||
#undef OV_SCALE
|
||||
#define OV_SCALE(N) (float((N) * 5) / 3.3f)
|
||||
|
||||
// Pt100 with INA826 amp with 3.3v excitation based on "Pt100 with INA826 amp on Ultimaker v2.0 electronics"
|
||||
const short temptable_21[][2] PROGMEM = {
|
||||
{ OV( 0), 0 },
|
||||
{ OV(227), 1 },
|
||||
{ OV(236), 10 },
|
||||
{ OV(245), 20 },
|
||||
{ OV(253), 30 },
|
||||
{ OV(262), 40 },
|
||||
{ OV(270), 50 },
|
||||
{ OV(279), 60 },
|
||||
{ OV(287), 70 },
|
||||
{ OV(295), 80 },
|
||||
{ OV(304), 90 },
|
||||
{ OV(312), 100 },
|
||||
{ OV(320), 110 },
|
||||
{ OV(329), 120 },
|
||||
{ OV(337), 130 },
|
||||
{ OV(345), 140 },
|
||||
{ OV(353), 150 },
|
||||
{ OV(361), 160 },
|
||||
{ OV(369), 170 },
|
||||
{ OV(377), 180 },
|
||||
{ OV(385), 190 },
|
||||
{ OV(393), 200 },
|
||||
{ OV(401), 210 },
|
||||
{ OV(409), 220 },
|
||||
{ OV(417), 230 },
|
||||
{ OV(424), 240 },
|
||||
{ OV(432), 250 },
|
||||
{ OV(440), 260 },
|
||||
{ OV(447), 270 },
|
||||
{ OV(455), 280 },
|
||||
{ OV(463), 290 },
|
||||
{ OV(470), 300 },
|
||||
{ OV(478), 310 },
|
||||
{ OV(485), 320 },
|
||||
{ OV(493), 330 },
|
||||
{ OV(500), 340 },
|
||||
{ OV(507), 350 },
|
||||
{ OV(515), 360 },
|
||||
{ OV(522), 370 },
|
||||
{ OV(529), 380 },
|
||||
{ OV(537), 390 },
|
||||
{ OV(544), 400 },
|
||||
{ OV(614), 500 }
|
||||
};
|
||||
|
||||
#undef OV_SCALE
|
||||
#define OV_SCALE(N) (N)
|
@@ -37,7 +37,8 @@
|
||||
#error "MAX_RAW_THERMISTOR_VALUE is too large for int16_t. Reduce OVERSAMPLENR or HAL_ADC_RESOLUTION."
|
||||
#endif
|
||||
|
||||
#define OV(N) int16_t((N) * (OVERSAMPLENR) * (THERMISTOR_TABLE_SCALE))
|
||||
#define OV_SCALE(N) (N)
|
||||
#define OV(N) int16_t(OV_SCALE(N) * (OVERSAMPLENR) * (THERMISTOR_TABLE_SCALE))
|
||||
|
||||
#define ANY_THERMISTOR_IS(n) (THERMISTOR_HEATER_0 == n || THERMISTOR_HEATER_1 == n || THERMISTOR_HEATER_2 == n || THERMISTOR_HEATER_3 == n || THERMISTOR_HEATER_4 == n || THERMISTOR_HEATER_5 == n || THERMISTOR_HEATER_6 == n || THERMISTOR_HEATER_7 == n || THERMISTORBED == n || THERMISTORCHAMBER == n || THERMISTORPROBE == n)
|
||||
|
||||
@@ -105,6 +106,9 @@
|
||||
#if ANY_THERMISTOR_IS(20) // Pt100 with INA826 amp on Ultimaker v2.0 electronics
|
||||
#include "thermistor_20.h"
|
||||
#endif
|
||||
#if ANY_THERMISTOR_IS(21) // Pt100 with INA826 amp with 3.3v excitation based on "Pt100 with INA826 amp on Ultimaker v2.0 electronics"
|
||||
#include "thermistor_21.h"
|
||||
#endif
|
||||
#if ANY_THERMISTOR_IS(51) // beta25 = 4092 K, R25 = 100 kOhm, Pull-up = 1 kOhm, "EPCOS"
|
||||
#include "thermistor_51.h"
|
||||
#endif
|
||||
|
@@ -822,7 +822,7 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) {
|
||||
}
|
||||
|
||||
#if HAS_LCD_MENU
|
||||
ui.return_to_status();
|
||||
if (!no_move) ui.return_to_status();
|
||||
#endif
|
||||
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
|
90
Marlin/src/pins/esp32/pins_E4D.h
Normal file
90
Marlin/src/pins/esp32/pins_E4D.h
Normal file
@@ -0,0 +1,90 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* E4d@Box pin assignments
|
||||
* E4d@Box is a small factor 3D printer control board based on the ESP32 microcontroller for Laser, CNC and 3d printers
|
||||
* for more info check http://atbox.tech/ and join to Facebook page E4d@box.
|
||||
*/
|
||||
|
||||
#ifndef ARDUINO_ARCH_ESP32
|
||||
#error "Oops! Select an ESP32 board in 'Tools > Board.'"
|
||||
#elif EXTRUDERS > 1 || E_STEPPERS > 1
|
||||
#error "E4d@box only supports one E Stepper. Comment out this line to continue."
|
||||
#elif HOTENDS > 2
|
||||
#error "E4d@box currently supports only one hotend. Comment out this line to continue."
|
||||
#endif
|
||||
|
||||
#define BOARD_INFO_NAME "E4D@BOX"
|
||||
#define BOARD_WEBSITE_URL "github.com/Exilaus/E4d@box"
|
||||
#define DEFAULT_MACHINE_NAME BOARD_INFO_NAME
|
||||
|
||||
//
|
||||
// Limit Switches
|
||||
//
|
||||
#define X_MIN_PIN 34
|
||||
#define Y_MIN_PIN 35
|
||||
#define Z_MIN_PIN 16 // 15
|
||||
|
||||
//
|
||||
// Steppers
|
||||
//
|
||||
#define X_STEP_PIN 12 // 34//27
|
||||
#define X_DIR_PIN 13 // 35//26
|
||||
#define X_ENABLE_PIN 17 // 0//17//25 // used free pin
|
||||
//#define X_CS_PIN 0
|
||||
|
||||
#define Y_STEP_PIN 32 // 33
|
||||
#define Y_DIR_PIN 33 // 32
|
||||
#define Y_ENABLE_PIN X_ENABLE_PIN
|
||||
//#define Y_CS_PIN 13
|
||||
|
||||
#define Z_STEP_PIN 25 // 14
|
||||
#define Z_DIR_PIN 26 // 12
|
||||
#define Z_ENABLE_PIN X_ENABLE_PIN
|
||||
//#define Z_CS_PIN 5 // SS_PIN
|
||||
|
||||
#define E0_STEP_PIN 27 // 16
|
||||
#define E0_DIR_PIN 14 // 17
|
||||
#define E0_ENABLE_PIN X_ENABLE_PIN
|
||||
//#define E0_CS_PIN 21
|
||||
|
||||
//
|
||||
// Temperature Sensors
|
||||
//
|
||||
#define TEMP_0_PIN 36 // Analog Input
|
||||
#define TEMP_BED_PIN 39 // Analog Input
|
||||
|
||||
//
|
||||
// Heaters / Fans
|
||||
//
|
||||
#define HEATER_0_PIN 2 // 4//2//(D8)
|
||||
#define FAN_PIN 0 // 2//15//13 (D9)
|
||||
#define HEATER_BED_PIN 15 // 15//0 //(D10)
|
||||
|
||||
// SPI
|
||||
#define SDSS 5
|
||||
#define I2S_STEPPER_STREAM
|
||||
#define I2S_WS 23
|
||||
#define I2S_BCK 22
|
||||
#define I2S_DATA 21
|
@@ -363,6 +363,24 @@
|
||||
#ifndef E4_SERIAL_RX_PIN
|
||||
#define E4_SERIAL_RX_PIN -1
|
||||
#endif
|
||||
#ifndef E5_SERIAL_TX_PIN
|
||||
#define E5_SERIAL_TX_PIN -1
|
||||
#endif
|
||||
#ifndef E5_SERIAL_RX_PIN
|
||||
#define E5_SERIAL_RX_PIN -1
|
||||
#endif
|
||||
#ifndef E6_SERIAL_TX_PIN
|
||||
#define E6_SERIAL_TX_PIN -1
|
||||
#endif
|
||||
#ifndef E6_SERIAL_RX_PIN
|
||||
#define E6_SERIAL_RX_PIN -1
|
||||
#endif
|
||||
#ifndef E7_SERIAL_TX_PIN
|
||||
#define E7_SERIAL_TX_PIN -1
|
||||
#endif
|
||||
#ifndef E7_SERIAL_RX_PIN
|
||||
#define E7_SERIAL_RX_PIN -1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//////////////////////////
|
||||
|
@@ -23,33 +23,52 @@
|
||||
|
||||
#define BOARD_INFO_NAME "BIGTREE SKR 1.3"
|
||||
|
||||
/**
|
||||
* Trinamic Stallguard pins
|
||||
*/
|
||||
#define X_DIAG_PIN P1_29 // X-
|
||||
#define Y_DIAG_PIN P1_27 // Y-
|
||||
#define Z_DIAG_PIN P1_25 // Z-
|
||||
#define E0_DIAG_PIN P1_28 // X+
|
||||
#define E1_DIAG_PIN P1_26 // Y+
|
||||
|
||||
/**
|
||||
* Limit Switches
|
||||
*/
|
||||
#if X_HOME_DIR > 0 && X_STALL_SENSITIVITY && !defined(USE_XMAX_PLUG)
|
||||
// For StallGuard homing to MAX swap the MIN / MAX pins
|
||||
// so the MAX physical connectors may be used for other things.
|
||||
#define X_MIN_PIN P1_28 // X_MAX (free)
|
||||
#define X_MAX_PIN P1_29 // X_MIN
|
||||
#else // else, non-endstop is free and appears in M43 output
|
||||
#define X_MIN_PIN P1_29 // X_MIN
|
||||
#define X_MAX_PIN P1_28 // X_MAX
|
||||
#if X_STALL_SENSITIVITY
|
||||
#define X_STOP_PIN X_DIAG_PIN
|
||||
#if X_HOME_DIR < 0
|
||||
#define X_MAX_PIN P1_28 // X+
|
||||
#else
|
||||
#define X_MIN_PIN P1_28 // X+
|
||||
#endif
|
||||
#else
|
||||
#define X_MIN_PIN P1_29 // X-
|
||||
#define X_MAX_PIN P1_28 // X+
|
||||
#endif
|
||||
|
||||
#if Y_HOME_DIR > 0 && Y_STALL_SENSITIVITY && !defined(USE_YMAX_PLUG)
|
||||
#define Y_MIN_PIN P1_26 // Y_MAX (free)
|
||||
#define Y_MAX_PIN P1_27 // Y_MIN
|
||||
#if Y_STALL_SENSITIVITY
|
||||
#define Y_STOP_PIN Y_DIAG_PIN
|
||||
#if Y_HOME_DIR < 0
|
||||
#define Y_MAX_PIN P1_26 // Y+
|
||||
#else
|
||||
#define Y_MIN_PIN P1_26 // Y+
|
||||
#endif
|
||||
#else
|
||||
#define Y_MIN_PIN P1_27 // Y_MIN
|
||||
#define Y_MAX_PIN P1_26 // Y_MAX
|
||||
#define Y_MIN_PIN P1_27 // Y-
|
||||
#define Y_MAX_PIN P1_26 // Y+
|
||||
#endif
|
||||
|
||||
#if Z_HOME_DIR > 0 && Z_STALL_SENSITIVITY && !defined(USE_ZMAX_PLUG)
|
||||
#define Z_MIN_PIN P1_24 // Z_MAX (free)
|
||||
#define Z_MAX_PIN P1_25 // Z_MIN
|
||||
#if Z_STALL_SENSITIVITY
|
||||
#define Z_STOP_PIN Z_DIAG_PIN
|
||||
#if Z_HOME_DIR < 0
|
||||
#define Z_MAX_PIN P1_24 // Z+
|
||||
#else
|
||||
#define Z_MIN_PIN P1_24 // Z+
|
||||
#endif
|
||||
#else
|
||||
#define Z_MIN_PIN P1_25 // Z_MIN
|
||||
#define Z_MAX_PIN P1_24 // Z_MAX
|
||||
#define Z_MIN_PIN P1_25 // Z-
|
||||
#define Z_MAX_PIN P1_24 // Z+
|
||||
#endif
|
||||
|
||||
#define ONBOARD_ENDSTOPPULLUPS // Board has built-in pullups
|
||||
@@ -162,9 +181,6 @@
|
||||
#define E1_SERIAL_TX_PIN P1_04
|
||||
#define E1_SERIAL_RX_PIN P1_01
|
||||
|
||||
#define Z2_SERIAL_TX_PIN P1_04
|
||||
#define Z2_SERIAL_RX_PIN P1_01
|
||||
|
||||
// Reduce baud rate to improve software serial reliability
|
||||
#define TMC_BAUD_RATE 19200
|
||||
#endif
|
||||
|
@@ -37,12 +37,50 @@
|
||||
//
|
||||
#define SERVO0_PIN P2_00
|
||||
|
||||
//
|
||||
// TMC StallGuard DIAG pins
|
||||
//
|
||||
#define X_DIAG_PIN P1_29 // X-STOP
|
||||
#define Y_DIAG_PIN P1_28 // Y-STOP
|
||||
#define Z_DIAG_PIN P1_27 // Z-STOP
|
||||
#define E0_DIAG_PIN P1_26 // E0DET
|
||||
#define E1_DIAG_PIN P1_25 // E1DET
|
||||
|
||||
//
|
||||
// Limit Switches
|
||||
//
|
||||
#define X_STOP_PIN P1_29
|
||||
#define Y_STOP_PIN P1_28
|
||||
#define Z_STOP_PIN P1_27
|
||||
#if X_STALL_SENSITIVITY
|
||||
#define X_STOP_PIN X_DIAG_PIN
|
||||
#if X_HOME_DIR < 0
|
||||
#define X_MAX_PIN P1_26 // E0DET
|
||||
#else
|
||||
#define X_MIN_PIN P1_26 // E0DET
|
||||
#endif
|
||||
#else
|
||||
#define X_STOP_PIN P1_29 // X-STOP
|
||||
#endif
|
||||
|
||||
#if Y_STALL_SENSITIVITY
|
||||
#define Y_STOP_PIN Y_DIAG_PIN
|
||||
#if Y_HOME_DIR < 0
|
||||
#define Y_MAX_PIN P1_25 // E1DET
|
||||
#else
|
||||
#define Y_MIN_PIN P1_25 // E1DET
|
||||
#endif
|
||||
#else
|
||||
#define Y_STOP_PIN P1_28 // Y-STOP
|
||||
#endif
|
||||
|
||||
#if Z_STALL_SENSITIVITY
|
||||
#define Z_STOP_PIN Z_DIAG_PIN
|
||||
#if Z_HOME_DIR < 0
|
||||
#define Z_MAX_PIN P1_24 // PWRDET
|
||||
#else
|
||||
#define Z_MIN_PIN P1_24 // PWRDET
|
||||
#endif
|
||||
#else
|
||||
#define Z_STOP_PIN P1_27 // Z-STOP
|
||||
#endif
|
||||
|
||||
//
|
||||
// Z Probe (when not Z_MIN_PIN)
|
||||
@@ -54,21 +92,21 @@
|
||||
//
|
||||
// Filament Runout Sensor
|
||||
//
|
||||
#define FIL_RUNOUT_PIN P1_26
|
||||
#define FIL_RUNOUT2_PIN P1_25
|
||||
#define FIL_RUNOUT_PIN P1_26 // E0DET
|
||||
#define FIL_RUNOUT2_PIN P1_25 // E1DET
|
||||
|
||||
//
|
||||
// Power Supply Control
|
||||
//
|
||||
#ifndef PS_ON_PIN
|
||||
#define PS_ON_PIN P1_00
|
||||
#define PS_ON_PIN P1_00 // PWRDET
|
||||
#endif
|
||||
|
||||
//
|
||||
// Power Loss Detection
|
||||
//
|
||||
#ifndef POWER_LOSS_PIN
|
||||
#define POWER_LOSS_PIN P1_00
|
||||
#define POWER_LOSS_PIN P1_00 // PWRDET
|
||||
#endif
|
||||
|
||||
//
|
||||
|
@@ -571,6 +571,8 @@
|
||||
#include "esp32/pins_MRR_ESPA.h" // ESP32 env:esp32
|
||||
#elif MB(MRR_ESPE)
|
||||
#include "esp32/pins_MRR_ESPE.h" // ESP32 env:esp32
|
||||
#elif MB(E4D_BOX)
|
||||
#include "esp32/pins_E4D.h" // ESP32 env:esp32
|
||||
|
||||
//
|
||||
// Linux Native Debug board
|
||||
@@ -1024,10 +1026,14 @@
|
||||
#ifdef X_STOP_PIN
|
||||
#if X_HOME_DIR < 0
|
||||
#define X_MIN_PIN X_STOP_PIN
|
||||
#define X_MAX_PIN -1
|
||||
#ifndef X_MAX_PIN
|
||||
#define X_MAX_PIN -1
|
||||
#endif
|
||||
#else
|
||||
#define X_MIN_PIN -1
|
||||
#define X_MAX_PIN X_STOP_PIN
|
||||
#ifndef X_MIN_PIN
|
||||
#define X_MIN_PIN -1
|
||||
#endif
|
||||
#endif
|
||||
#elif X_HOME_DIR < 0
|
||||
#define X_STOP_PIN X_MIN_PIN
|
||||
@@ -1038,10 +1044,14 @@
|
||||
#ifdef Y_STOP_PIN
|
||||
#if Y_HOME_DIR < 0
|
||||
#define Y_MIN_PIN Y_STOP_PIN
|
||||
#define Y_MAX_PIN -1
|
||||
#ifndef Y_MAX_PIN
|
||||
#define Y_MAX_PIN -1
|
||||
#endif
|
||||
#else
|
||||
#define Y_MIN_PIN -1
|
||||
#define Y_MAX_PIN Y_STOP_PIN
|
||||
#ifndef Y_MIN_PIN
|
||||
#define Y_MIN_PIN -1
|
||||
#endif
|
||||
#endif
|
||||
#elif Y_HOME_DIR < 0
|
||||
#define Y_STOP_PIN Y_MIN_PIN
|
||||
@@ -1052,10 +1062,14 @@
|
||||
#ifdef Z_STOP_PIN
|
||||
#if Z_HOME_DIR < 0
|
||||
#define Z_MIN_PIN Z_STOP_PIN
|
||||
#define Z_MAX_PIN -1
|
||||
#ifndef Z_MAX_PIN
|
||||
#define Z_MAX_PIN -1
|
||||
#endif
|
||||
#else
|
||||
#define Z_MIN_PIN -1
|
||||
#define Z_MAX_PIN Z_STOP_PIN
|
||||
#ifndef Z_MIN_PIN
|
||||
#define Z_MIN_PIN -1
|
||||
#endif
|
||||
#endif
|
||||
#elif Z_HOME_DIR < 0
|
||||
#define Z_STOP_PIN Z_MIN_PIN
|
||||
@@ -1125,42 +1139,72 @@
|
||||
* overridden in Configuration.h or Configuration_adv.h.
|
||||
*/
|
||||
|
||||
#define __PEXI(p,q) PIN_EXISTS(E##p##_##q)
|
||||
#define _PEXI(p,q) __PEXI(p,q)
|
||||
#define __EPIN(p,q) E##p##_##q##_PIN
|
||||
#define _EPIN(p,q) __EPIN(p,q)
|
||||
#define DIAG_REMAPPED(p,q) (PIN_EXISTS(q) && _EPIN(p##_E_INDEX, DIAG) == q##_PIN)
|
||||
|
||||
// The X2 axis, if any, should be the next open extruder port
|
||||
#define X2_E_INDEX E_STEPPERS
|
||||
|
||||
#if EITHER(DUAL_X_CARRIAGE, X_DUAL_STEPPER_DRIVERS)
|
||||
#ifndef X2_STEP_PIN
|
||||
#define X2_STEP_PIN _EPIN(E_STEPPERS, STEP)
|
||||
#define X2_DIR_PIN _EPIN(E_STEPPERS, DIR)
|
||||
#define X2_ENABLE_PIN _EPIN(E_STEPPERS, ENABLE)
|
||||
#if E_STEPPERS >= MAX_EXTRUDERS || !PIN_EXISTS(X2_STEP)
|
||||
#define X2_STEP_PIN _EPIN(X2_E_INDEX, STEP)
|
||||
#define X2_DIR_PIN _EPIN(X2_E_INDEX, DIR)
|
||||
#define X2_ENABLE_PIN _EPIN(X2_E_INDEX, ENABLE)
|
||||
#if X2_E_INDEX >= MAX_EXTRUDERS || !PIN_EXISTS(X2_STEP)
|
||||
#error "No E stepper plug left for X2!"
|
||||
#endif
|
||||
#endif
|
||||
#ifndef X2_MS1_PIN
|
||||
#define X2_MS1_PIN _EPIN(E_STEPPERS, MS1)
|
||||
#define X2_MS1_PIN _EPIN(X2_E_INDEX, MS1)
|
||||
#endif
|
||||
#ifndef X2_MS2_PIN
|
||||
#define X2_MS2_PIN _EPIN(E_STEPPERS, MS2)
|
||||
#define X2_MS2_PIN _EPIN(X2_E_INDEX, MS2)
|
||||
#endif
|
||||
#ifndef X2_MS3_PIN
|
||||
#define X2_MS3_PIN _EPIN(E_STEPPERS, MS3)
|
||||
#define X2_MS3_PIN _EPIN(X2_E_INDEX, MS3)
|
||||
#endif
|
||||
#if AXIS_HAS_SPI(X2) && !defined(X2_CS_PIN)
|
||||
#define X2_CS_PIN _EPIN(E_STEPPERS, CS)
|
||||
#define X2_CS_PIN _EPIN(X2_E_INDEX, CS)
|
||||
#endif
|
||||
#if AXIS_HAS_UART(X2)
|
||||
#ifndef X2_SERIAL_TX_PIN
|
||||
#define X2_SERIAL_TX_PIN _EPIN(E_STEPPERS, SERIAL_TX)
|
||||
#define X2_SERIAL_TX_PIN _EPIN(X2_E_INDEX, SERIAL_TX)
|
||||
#endif
|
||||
#ifndef X2_SERIAL_RX_PIN
|
||||
#define X2_SERIAL_RX_PIN _EPIN(E_STEPPERS, SERIAL_RX)
|
||||
#define X2_SERIAL_RX_PIN _EPIN(X2_E_INDEX, SERIAL_RX)
|
||||
#endif
|
||||
#endif
|
||||
#define Y2_E_INDEX INCREMENT(E_STEPPERS)
|
||||
|
||||
//
|
||||
// Auto-assign pins for stallGuard sensorless homing
|
||||
//
|
||||
#if X2_STALL_SENSITIVITY && ENABLED(X_DUAL_ENDSTOPS) && _PEXI(X2_E_INDEX, DIAG)
|
||||
#define X2_DIAG_PIN _EPIN(X2_E_INDEX, DIAG)
|
||||
#if DIAG_REMAPPED(X2, X_MIN) // If already remapped in the pins file...
|
||||
#define X2_USE_ENDSTOP _XMIN_
|
||||
#elif DIAG_REMAPPED(X2, Y_MIN)
|
||||
#define X2_USE_ENDSTOP _YMIN_
|
||||
#elif DIAG_REMAPPED(X2, Z_MIN)
|
||||
#define X2_USE_ENDSTOP _ZMIN_
|
||||
#elif DIAG_REMAPPED(X2, X_MAX)
|
||||
#define X2_USE_ENDSTOP _XMAX_
|
||||
#elif DIAG_REMAPPED(X2, Y_MAX)
|
||||
#define X2_USE_ENDSTOP _YMAX_
|
||||
#elif DIAG_REMAPPED(X2, Z_MAX)
|
||||
#define X2_USE_ENDSTOP _ZMAX_
|
||||
#else // Otherwise use the driver DIAG_PIN directly
|
||||
#define _X2_USE_ENDSTOP(P) _E##P##_DIAG_
|
||||
#define X2_USE_ENDSTOP _X2_USE_ENDSTOP(X2_E_INDEX)
|
||||
#endif
|
||||
#undef X2_DIAG_PIN
|
||||
#endif
|
||||
|
||||
#define Y2_E_INDEX INCREMENT(X2_E_INDEX)
|
||||
#else
|
||||
#define Y2_E_INDEX E_STEPPERS
|
||||
#define Y2_E_INDEX X2_E_INDEX
|
||||
#endif
|
||||
|
||||
#ifndef X2_CS_PIN
|
||||
@@ -1206,6 +1250,26 @@
|
||||
#define Y2_SERIAL_RX_PIN _EPIN(Y2_E_INDEX, SERIAL_RX)
|
||||
#endif
|
||||
#endif
|
||||
#if Y2_STALL_SENSITIVITY && ENABLED(Y_DUAL_ENDSTOPS) && _PEXI(Y2_E_INDEX, DIAG)
|
||||
#define Y2_DIAG_PIN _EPIN(Y2_E_INDEX, DIAG)
|
||||
#if DIAG_REMAPPED(Y2, X_MIN)
|
||||
#define Y2_USE_ENDSTOP _XMIN_
|
||||
#elif DIAG_REMAPPED(Y2, Y_MIN)
|
||||
#define Y2_USE_ENDSTOP _YMIN_
|
||||
#elif DIAG_REMAPPED(Y2, Z_MIN)
|
||||
#define Y2_USE_ENDSTOP _ZMIN_
|
||||
#elif DIAG_REMAPPED(Y2, X_MAX)
|
||||
#define Y2_USE_ENDSTOP _XMAX_
|
||||
#elif DIAG_REMAPPED(Y2, Y_MAX)
|
||||
#define Y2_USE_ENDSTOP _YMAX_
|
||||
#elif DIAG_REMAPPED(Y2, Z_MAX)
|
||||
#define Y2_USE_ENDSTOP _ZMAX_
|
||||
#else
|
||||
#define _Y2_USE_ENDSTOP(P) _E##P##_DIAG_
|
||||
#define Y2_USE_ENDSTOP _Y2_USE_ENDSTOP(Y2_E_INDEX)
|
||||
#endif
|
||||
#undef Y2_DIAG_PIN
|
||||
#endif
|
||||
#define Z2_E_INDEX INCREMENT(Y2_E_INDEX)
|
||||
#else
|
||||
#define Z2_E_INDEX Y2_E_INDEX
|
||||
@@ -1254,6 +1318,26 @@
|
||||
#define Z2_SERIAL_RX_PIN _EPIN(Z2_E_INDEX, SERIAL_RX)
|
||||
#endif
|
||||
#endif
|
||||
#if Z2_STALL_SENSITIVITY && ENABLED(Z_MULTI_ENDSTOPS) && NUM_Z_STEPPER_DRIVERS >= 2 && _PEXI(Z2_E_INDEX, DIAG)
|
||||
#define Z2_DIAG_PIN _EPIN(Z2_E_INDEX, DIAG)
|
||||
#if DIAG_REMAPPED(Z2, X_MIN)
|
||||
#define Z2_USE_ENDSTOP _XMIN_
|
||||
#elif DIAG_REMAPPED(Z2, Y_MIN)
|
||||
#define Z2_USE_ENDSTOP _YMIN_
|
||||
#elif DIAG_REMAPPED(Z2, Z_MIN)
|
||||
#define Z2_USE_ENDSTOP _ZMIN_
|
||||
#elif DIAG_REMAPPED(Z2, X_MAX)
|
||||
#define Z2_USE_ENDSTOP _XMAX_
|
||||
#elif DIAG_REMAPPED(Z2, Y_MAX)
|
||||
#define Z2_USE_ENDSTOP _YMAX_
|
||||
#elif DIAG_REMAPPED(Z2, Z_MAX)
|
||||
#define Z2_USE_ENDSTOP _ZMAX_
|
||||
#else
|
||||
#define _Z2_USE_ENDSTOP(P) _E##P##_DIAG_
|
||||
#define Z2_USE_ENDSTOP _Z2_USE_ENDSTOP(Z2_E_INDEX)
|
||||
#endif
|
||||
#undef Z2_DIAG_PIN
|
||||
#endif
|
||||
#define Z3_E_INDEX INCREMENT(Z2_E_INDEX)
|
||||
#else
|
||||
#define Z3_E_INDEX Z2_E_INDEX
|
||||
@@ -1283,7 +1367,7 @@
|
||||
#endif
|
||||
#if AXIS_HAS_SPI(Z3)
|
||||
#ifndef Z3_CS_PIN
|
||||
#define Z3_CS_PIN _EPIN(Z3_E_INDEX, CS)
|
||||
#define Z3_CS_PIN _EPIN(Z3_E_INDEX, CS)
|
||||
#endif
|
||||
#endif
|
||||
#ifndef Z3_MS1_PIN
|
||||
@@ -1303,6 +1387,26 @@
|
||||
#define Z3_SERIAL_RX_PIN _EPIN(Z3_E_INDEX, SERIAL_RX)
|
||||
#endif
|
||||
#endif
|
||||
#if Z3_STALL_SENSITIVITY && ENABLED(Z_MULTI_ENDSTOPS) && NUM_Z_STEPPER_DRIVERS >= 3 && _PEXI(Z3_E_INDEX, DIAG)
|
||||
#define Z3_DIAG_PIN _EPIN(Z3_E_INDEX, DIAG)
|
||||
#if DIAG_REMAPPED(Z3, X_MIN)
|
||||
#define Z3_USE_ENDSTOP _XMIN_
|
||||
#elif DIAG_REMAPPED(Z3, Y_MIN)
|
||||
#define Z3_USE_ENDSTOP _YMIN_
|
||||
#elif DIAG_REMAPPED(Z3, Z_MIN)
|
||||
#define Z3_USE_ENDSTOP _ZMIN_
|
||||
#elif DIAG_REMAPPED(Z3, X_MAX)
|
||||
#define Z3_USE_ENDSTOP _XMAX_
|
||||
#elif DIAG_REMAPPED(Z3, Y_MAX)
|
||||
#define Z3_USE_ENDSTOP _YMAX_
|
||||
#elif DIAG_REMAPPED(Z3, Z_MAX)
|
||||
#define Z3_USE_ENDSTOP _ZMAX_
|
||||
#else
|
||||
#define _Z3_USE_ENDSTOP(P) _E##P##_DIAG_
|
||||
#define Z3_USE_ENDSTOP _Z3_USE_ENDSTOP(Z3_E_INDEX)
|
||||
#endif
|
||||
#undef Z3_DIAG_PIN
|
||||
#endif
|
||||
#define Z4_E_INDEX INCREMENT(Z3_E_INDEX)
|
||||
#endif
|
||||
|
||||
@@ -1350,6 +1454,26 @@
|
||||
#define Z4_SERIAL_RX_PIN _EPIN(Z4_E_INDEX, SERIAL_RX)
|
||||
#endif
|
||||
#endif
|
||||
#if Z4_STALL_SENSITIVITY && ENABLED(Z_MULTI_ENDSTOPS) && NUM_Z_STEPPER_DRIVERS >= 4 && _PEXI(Z4_E_INDEX, DIAG)
|
||||
#define Z4_DIAG_PIN _EPIN(Z4_E_INDEX, DIAG)
|
||||
#if DIAG_REMAPPED(Z4, X_MIN)
|
||||
#define Z4_USE_ENDSTOP _XMIN_
|
||||
#elif DIAG_REMAPPED(Z4, Y_MIN)
|
||||
#define Z4_USE_ENDSTOP _YMIN_
|
||||
#elif DIAG_REMAPPED(Z4, Z_MIN)
|
||||
#define Z4_USE_ENDSTOP _ZMIN_
|
||||
#elif DIAG_REMAPPED(Z4, X_MAX)
|
||||
#define Z4_USE_ENDSTOP _XMAX_
|
||||
#elif DIAG_REMAPPED(Z4, Y_MAX)
|
||||
#define Z4_USE_ENDSTOP _YMAX_
|
||||
#elif DIAG_REMAPPED(Z4, Z_MAX)
|
||||
#define Z4_USE_ENDSTOP _ZMAX_
|
||||
#else
|
||||
#define _Z4_USE_ENDSTOP(P) _E##P##_DIAG_
|
||||
#define Z4_USE_ENDSTOP _Z4_USE_ENDSTOP(Z4_E_INDEX)
|
||||
#endif
|
||||
#undef Z4_DIAG_PIN
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef Z4_CS_PIN
|
||||
@@ -1382,3 +1506,4 @@
|
||||
#endif
|
||||
|
||||
#undef HAS_FREE_AUX2_PINS
|
||||
#undef DIAG_REMAPPED
|
||||
|
@@ -1323,6 +1323,9 @@
|
||||
#if PIN_EXISTS(X_MIN)
|
||||
REPORT_NAME_DIGITAL(__LINE__, X_MIN_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(X_DIAG)
|
||||
REPORT_NAME_DIGITAL(__LINE__, X_DIAG_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(X_MS1)
|
||||
REPORT_NAME_DIGITAL(__LINE__, X_MS1_PIN)
|
||||
#endif
|
||||
@@ -1344,6 +1347,12 @@
|
||||
#if PIN_EXISTS(X2_ENABLE)
|
||||
REPORT_NAME_DIGITAL(__LINE__, X2_ENABLE_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(X2_MAX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, X2_MAX_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(X2_MIN)
|
||||
REPORT_NAME_DIGITAL(__LINE__, X2_MIN_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(X2_MS1)
|
||||
REPORT_NAME_DIGITAL(__LINE__, X2_MS1_PIN)
|
||||
#endif
|
||||
@@ -1374,6 +1383,9 @@
|
||||
#if PIN_EXISTS(Y_MIN)
|
||||
REPORT_NAME_DIGITAL(__LINE__, Y_MIN_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(Y_DIAG)
|
||||
REPORT_NAME_DIGITAL(__LINE__, Y_DIAG_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(Y_MS1)
|
||||
REPORT_NAME_DIGITAL(__LINE__, Y_MS1_PIN)
|
||||
#endif
|
||||
@@ -1395,6 +1407,12 @@
|
||||
#if PIN_EXISTS(Y2_ENABLE)
|
||||
REPORT_NAME_DIGITAL(__LINE__, Y2_ENABLE_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(Y2_MAX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, Y2_MAX_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(Y2_MIN)
|
||||
REPORT_NAME_DIGITAL(__LINE__, Y2_MIN_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(Y2_MS1)
|
||||
REPORT_NAME_DIGITAL(__LINE__, Y2_MS1_PIN)
|
||||
#endif
|
||||
@@ -1425,8 +1443,8 @@
|
||||
#if PIN_EXISTS(Z_MIN)
|
||||
REPORT_NAME_DIGITAL(__LINE__, Z_MIN_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(Z_MIN_PROBE)
|
||||
REPORT_NAME_DIGITAL(__LINE__, Z_MIN_PROBE_PIN)
|
||||
#if PIN_EXISTS(Z_DIAG)
|
||||
REPORT_NAME_DIGITAL(__LINE__, Z_DIAG_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(Z_MS1)
|
||||
REPORT_NAME_DIGITAL(__LINE__, Z_MS1_PIN)
|
||||
@@ -1452,6 +1470,12 @@
|
||||
#if PIN_EXISTS(Z2_ENABLE)
|
||||
REPORT_NAME_DIGITAL(__LINE__, Z2_ENABLE_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(Z2_MAX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, Z2_MAX_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(Z2_MIN)
|
||||
REPORT_NAME_DIGITAL(__LINE__, Z2_MIN_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(Z2_MS1)
|
||||
REPORT_NAME_DIGITAL(__LINE__, Z2_MS1_PIN)
|
||||
#endif
|
||||
@@ -1473,6 +1497,12 @@
|
||||
#if PIN_EXISTS(Z3_ENABLE)
|
||||
REPORT_NAME_DIGITAL(__LINE__, Z3_ENABLE_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(Z3_MAX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, Z3_MAX_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(Z3_MIN)
|
||||
REPORT_NAME_DIGITAL(__LINE__, Z3_MIN_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(Z3_MS1)
|
||||
REPORT_NAME_DIGITAL(__LINE__, Z3_MS1_PIN)
|
||||
#endif
|
||||
@@ -1494,6 +1524,12 @@
|
||||
#if PIN_EXISTS(Z4_ENABLE)
|
||||
REPORT_NAME_DIGITAL(__LINE__, Z4_ENABLE_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(Z4_MAX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, Z4_MAX_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(Z4_MIN)
|
||||
REPORT_NAME_DIGITAL(__LINE__, Z4_MIN_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(Z4_MS1)
|
||||
REPORT_NAME_DIGITAL(__LINE__, Z4_MS1_PIN)
|
||||
#endif
|
||||
@@ -1506,6 +1542,9 @@
|
||||
#if PIN_EXISTS(Z4_STEP)
|
||||
REPORT_NAME_DIGITAL(__LINE__, Z4_STEP_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(Z_MIN_PROBE)
|
||||
REPORT_NAME_DIGITAL(__LINE__, Z_MIN_PROBE_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(ZRIB_V20_D6)
|
||||
REPORT_NAME_DIGITAL(__LINE__, ZRIB_V20_D6_PIN)
|
||||
#endif
|
||||
@@ -1560,48 +1599,72 @@
|
||||
#if PIN_EXISTS(Z4_SERIAL_RX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, Z4_SERIAL_RX_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E0_DIAG)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E0_DIAG_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E0_SERIAL_TX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E0_SERIAL_TX_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E0_SERIAL_RX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E0_SERIAL_RX_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E1_DIAG)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E1_DIAG_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E1_SERIAL_TX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E1_SERIAL_TX_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E1_SERIAL_RX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E1_SERIAL_RX_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E2_DIAG)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E2_DIAG_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E2_SERIAL_TX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E2_SERIAL_TX_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E2_SERIAL_RX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E2_SERIAL_RX_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E3_DIAG)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E3_DIAG_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E3_SERIAL_TX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E3_SERIAL_TX_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E3_SERIAL_RX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E3_SERIAL_RX_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E4_DIAG)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E4_DIAG_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E4_SERIAL_TX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E4_SERIAL_TX_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E4_SERIAL_RX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E4_SERIAL_RX_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E5_DIAG)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E5_DIAG_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E5_SERIAL_TX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E5_SERIAL_TX_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E5_SERIAL_RX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E5_SERIAL_RX_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E6_DIAG)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E6_DIAG_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E6_SERIAL_TX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E6_SERIAL_TX_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E6_SERIAL_RX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E6_SERIAL_RX_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E7_DIAG)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E7_DIAG_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E7_SERIAL_TX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E7_SERIAL_TX_PIN)
|
||||
#endif
|
||||
|
@@ -38,7 +38,7 @@
|
||||
#error "You must set ([XYZ]|E0)_DRIVER_TYPE to TMC2130 in Configuration.h for EinsyRetro."
|
||||
#endif
|
||||
|
||||
// TMC2130 Diag Pins (currently just for reference)
|
||||
// TMC2130 Diag Pins
|
||||
#define X_DIAG_PIN 64
|
||||
#define Y_DIAG_PIN 69
|
||||
#define Z_DIAG_PIN 68
|
||||
@@ -55,27 +55,27 @@
|
||||
|
||||
#if DISABLED(SENSORLESS_HOMING)
|
||||
|
||||
#define X_MIN_PIN 12
|
||||
#define Y_MIN_PIN 11
|
||||
#define Z_MIN_PIN 10
|
||||
#define X_MAX_PIN 81
|
||||
#define Y_MAX_PIN 57
|
||||
#define X_MIN_PIN 12 // X-
|
||||
#define Y_MIN_PIN 11 // Y-
|
||||
#define Z_MIN_PIN 10 // Z-
|
||||
#define X_MAX_PIN 81 // X+
|
||||
#define Y_MAX_PIN 57 // Y+
|
||||
|
||||
#else
|
||||
|
||||
#if X_HOME_DIR < 0
|
||||
#define X_MIN_PIN X_DIAG_PIN
|
||||
#define X_MAX_PIN 81
|
||||
#define X_MAX_PIN 81 // X+
|
||||
#else
|
||||
#define X_MIN_PIN 12
|
||||
#define X_MIN_PIN 12 // X-
|
||||
#define X_MAX_PIN X_DIAG_PIN
|
||||
#endif
|
||||
|
||||
#if Y_HOME_DIR < 0
|
||||
#define Y_MIN_PIN Y_DIAG_PIN
|
||||
#define Y_MAX_PIN 57
|
||||
#define Y_MAX_PIN 57 // Y+
|
||||
#else
|
||||
#define Y_MIN_PIN 11
|
||||
#define Y_MIN_PIN 11 // Y-
|
||||
#define Y_MAX_PIN Y_DIAG_PIN
|
||||
#endif
|
||||
|
||||
|
@@ -390,6 +390,24 @@
|
||||
#ifndef E4_SERIAL_RX_PIN
|
||||
#define E4_SERIAL_RX_PIN -1
|
||||
#endif
|
||||
#ifndef E5_SERIAL_TX_PIN
|
||||
#define E5_SERIAL_TX_PIN -1
|
||||
#endif
|
||||
#ifndef E5_SERIAL_RX_PIN
|
||||
#define E5_SERIAL_RX_PIN -1
|
||||
#endif
|
||||
#ifndef E6_SERIAL_TX_PIN
|
||||
#define E6_SERIAL_TX_PIN -1
|
||||
#endif
|
||||
#ifndef E6_SERIAL_RX_PIN
|
||||
#define E6_SERIAL_RX_PIN -1
|
||||
#endif
|
||||
#ifndef E7_SERIAL_TX_PIN
|
||||
#define E7_SERIAL_TX_PIN -1
|
||||
#endif
|
||||
#ifndef E7_SERIAL_RX_PIN
|
||||
#define E7_SERIAL_RX_PIN -1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//
|
||||
|
@@ -147,6 +147,9 @@
|
||||
#define E3_SERIAL_RX_PIN -1
|
||||
#define E4_SERIAL_TX_PIN -1
|
||||
#define E4_SERIAL_RX_PIN -1
|
||||
#define E5_SERIAL_RX_PIN -1
|
||||
#define E6_SERIAL_RX_PIN -1
|
||||
#define E7_SERIAL_RX_PIN -1
|
||||
#endif
|
||||
|
||||
//
|
||||
|
@@ -285,4 +285,22 @@
|
||||
#ifndef E4_SERIAL_RX_PIN
|
||||
#define E4_SERIAL_RX_PIN -1
|
||||
#endif
|
||||
#ifndef E5_SERIAL_TX_PIN
|
||||
#define E5_SERIAL_TX_PIN -1
|
||||
#endif
|
||||
#ifndef E5_SERIAL_RX_PIN
|
||||
#define E5_SERIAL_RX_PIN -1
|
||||
#endif
|
||||
#ifndef E6_SERIAL_TX_PIN
|
||||
#define E6_SERIAL_TX_PIN -1
|
||||
#endif
|
||||
#ifndef E6_SERIAL_RX_PIN
|
||||
#define E6_SERIAL_RX_PIN -1
|
||||
#endif
|
||||
#ifndef E7_SERIAL_TX_PIN
|
||||
#define E7_SERIAL_TX_PIN -1
|
||||
#endif
|
||||
#ifndef E7_SERIAL_RX_PIN
|
||||
#define E7_SERIAL_RX_PIN -1
|
||||
#endif
|
||||
#endif
|
||||
|
@@ -291,6 +291,16 @@ int32_t SdVolume::freeClusterCount() {
|
||||
for (uint16_t i = 0; i < n; i++)
|
||||
if (cacheBuffer_.fat32[i] == 0) free++;
|
||||
}
|
||||
#ifdef ESP32
|
||||
// Needed to reset the idle task watchdog timer on ESP32 as reading the complete FAT may easily
|
||||
// block for 10+ seconds. yield() is insufficient since it blocks lower prio tasks (e.g., idle).
|
||||
static millis_t nextTaskTime = 0;
|
||||
const millis_t ms = millis();
|
||||
if (ELAPSED(ms, nextTaskTime)) {
|
||||
vTaskDelay(1); // delay 1 tick (Minimum. Usually 10 or 1 ms depending on skdconfig.h)
|
||||
nextTaskTime = ms + 1000; // tickle the task manager again in 1 second
|
||||
}
|
||||
#endif // ESP32
|
||||
}
|
||||
return free;
|
||||
}
|
||||
|
@@ -1,7 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
PINS="Marlin/src/pins"
|
||||
RAMPS="$PINS/ramps/pins_RAMPS.h"
|
||||
BKUP="$PINS/ramps/pins_RAMPS.backup.h"
|
||||
|
||||
[[ -f $RAMPS ]] && cp "$RAMPS" "$BKUP"
|
@@ -1,8 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
case "$#" in
|
||||
0 ) BOARD=arduino:avr:mega:cpu=atmega2560 ;;
|
||||
* ) BOARD=arduino:avr:$1 ;;
|
||||
esac
|
||||
|
||||
arduino --verify --board $BOARD Marlin/Marlin.ino
|
@@ -1,4 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
build_marlin $@ && exit 0
|
||||
exit 1
|
@@ -1,3 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
platformio run --project-dir $@ --silent
|
@@ -1,3 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
arduino --verify --board teensy:avr:teensy35:usb=serial,speed=120,opt=o1std,keys=en-us Marlin/Marlin.ino
|
@@ -1,17 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# bump_date
|
||||
#
|
||||
# Bump the Distribution Date in Version.h
|
||||
#
|
||||
|
||||
VERSION_FILE=Marlin/src/inc/Version.h
|
||||
|
||||
SED=$(which gsed || which sed)
|
||||
|
||||
DIST=$( date +"%Y-%m-%d" )
|
||||
|
||||
eval "${SED} -E -i 's/(#define +STRING_DISTRIBUTION_DATE) .*$/\1 \"$DIST\"/g' $VERSION_FILE" || exit 1
|
||||
|
||||
git add "$VERSION_FILE" || exit 1
|
||||
git commit -m "[cron] Bump distribution date ($DIST)"
|
@@ -1,14 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
[ -z "$1" ] || cd $1
|
||||
|
||||
if [ -d ".test" ]; then
|
||||
printf "\033[0;31mEnvironment backup already exists!\033[0m\n"
|
||||
else
|
||||
mkdir .test
|
||||
cp Marlin/Configuration*.h .test/
|
||||
[ -f Marlin/_Bootscreen.h ] && cp Marlin/_Bootscreen.h .test/
|
||||
[ -f Marlin/_Statusscreen.h ] && cp Marlin/_Statusscreen.h .test/
|
||||
cp -r Marlin/src/pins .test/pins
|
||||
printf "\033[0;32mEnvironment Backup created\033[0m\n"
|
||||
fi
|
@@ -1,12 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
rm -rf .pioenvs
|
||||
rm -rf .piolibdeps
|
||||
rm -rf .piolib
|
||||
rm -rf .pio
|
||||
|
||||
if [[ $1 = "--deep" ]]; then
|
||||
rm -rf ~/.platformio/packages/*
|
||||
rm -rf ~/.platformio/platforms/*
|
||||
rm -rf ~/.platformio/.cache/*
|
||||
fi
|
@@ -1,26 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
[ -z "$1" ] || cd $1
|
||||
|
||||
if [ -d ".test" ]; then
|
||||
cp .test/Configuration*.h Marlin/
|
||||
rm .test/Configuration*.h
|
||||
|
||||
if [ -f .test/_Bootscreen.h ]; then
|
||||
cp .test/_Bootscreen.h Marlin/
|
||||
rm .test/_Bootscreen.h
|
||||
fi
|
||||
|
||||
if [ -f .test/_Statusscreen.h ]; then
|
||||
cp .test/_Statusscreen.h Marlin/
|
||||
rm .test/_Statusscreen.h
|
||||
fi
|
||||
|
||||
cp -r .test/pins Marlin/src
|
||||
rm -r .test/pins
|
||||
|
||||
rmdir .test
|
||||
printf "\033[0;32mEnvironment Restored\033[0m\n"
|
||||
else
|
||||
printf "\033[0;31mEnvironment Backup not available!\033[0m\n"
|
||||
fi
|
@@ -1,3 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
cp Marlin/Configuration*.h config/default
|
@@ -1,16 +1,13 @@
|
||||
import os
|
||||
import os, marlin
|
||||
Import("env")
|
||||
|
||||
STM32_FLASH_SIZE = 256
|
||||
|
||||
for define in env['CPPDEFINES']:
|
||||
if define[0] == "VECT_TAB_ADDR":
|
||||
env['CPPDEFINES'].remove(define)
|
||||
if define[0] == "STM32_FLASH_SIZE":
|
||||
STM32_FLASH_SIZE = define[1]
|
||||
|
||||
# Relocate firmware from 0x08000000 to 0x08007000
|
||||
env['CPPDEFINES'].append(("VECT_TAB_ADDR", "0x08007000"))
|
||||
marlin.relocate_firmware("0x08007000")
|
||||
|
||||
custom_ld_script = os.path.abspath("buildroot/share/PlatformIO/ldscripts/STM32F103RC_SKR_MINI_" + str(STM32_FLASH_SIZE) + "K.ld")
|
||||
for i, flag in enumerate(env["LINKFLAGS"]):
|
||||
|
@@ -3,8 +3,8 @@ from os.path import expandvars
|
||||
Import("env", "projenv")
|
||||
|
||||
# Relocate firmware from 0x08000000 to 0x08002000
|
||||
#env['CPPDEFINES'].remove(("VECT_TAB_ADDR", 134217728))
|
||||
#env['CPPDEFINES'].append(("VECT_TAB_ADDR", "0x08010000"))
|
||||
#import marlin
|
||||
#marlin.relocate_firmware("0x08001000")
|
||||
|
||||
# Custom HEX from ELF
|
||||
env.AddPostAction(
|
||||
|
@@ -1,8 +1,8 @@
|
||||
import os
|
||||
import os, marlin
|
||||
Import("env")
|
||||
|
||||
# Relocate firmware from 0x08000000 to 0x08007000
|
||||
env['CPPDEFINES'].append(("VECT_TAB_ADDR", "0x08007000"))
|
||||
marlin.relocate_firmware("0x08007000")
|
||||
|
||||
custom_ld_script = os.path.abspath("buildroot/share/PlatformIO/ldscripts/STM32F103RE_SKR_E3_DIP.ld")
|
||||
for i, flag in enumerate(env["LINKFLAGS"]):
|
||||
|
@@ -1,11 +1,8 @@
|
||||
import os
|
||||
import os, marlin
|
||||
Import("env")
|
||||
|
||||
# Relocate firmware from 0x08000000 to 0x08010000
|
||||
for define in env['CPPDEFINES']:
|
||||
if define[0] == "VECT_TAB_ADDR":
|
||||
env['CPPDEFINES'].remove(define)
|
||||
env['CPPDEFINES'].append(("VECT_TAB_ADDR", "0x08010000"))
|
||||
marlin.relocate_firmware("0x08010000")
|
||||
|
||||
custom_ld_script = os.path.abspath("buildroot/share/PlatformIO/ldscripts/STM32F103VE_longer.ld")
|
||||
for i, flag in enumerate(env["LINKFLAGS"]):
|
||||
@@ -14,7 +11,6 @@ for i, flag in enumerate(env["LINKFLAGS"]):
|
||||
elif flag == "-T":
|
||||
env["LINKFLAGS"][i + 1] = custom_ld_script
|
||||
|
||||
|
||||
# Rename ${PROGNAME}.bin and save it as 'project.bin' (No encryption on the Longer3D)
|
||||
def encrypt(source, target, env):
|
||||
firmware = open(target[0].path, "rb")
|
||||
|
@@ -1,12 +1,8 @@
|
||||
import os
|
||||
import struct
|
||||
import os,struct,marlin
|
||||
Import("env")
|
||||
|
||||
# Relocate firmware from 0x08000000 to 0x08008800
|
||||
for define in env['CPPDEFINES']:
|
||||
if define[0] == "VECT_TAB_ADDR":
|
||||
env['CPPDEFINES'].remove(define)
|
||||
env['CPPDEFINES'].append(("VECT_TAB_ADDR", "0x8008800"))
|
||||
marlin.relocate_firmware("0x08008800")
|
||||
|
||||
custom_ld_script = os.path.abspath("buildroot/share/PlatformIO/ldscripts/chitu_f103.ld")
|
||||
for i, flag in enumerate(env["LINKFLAGS"]):
|
||||
@@ -15,7 +11,6 @@ for i, flag in enumerate(env["LINKFLAGS"]):
|
||||
elif flag == "-T":
|
||||
env["LINKFLAGS"][i + 1] = custom_ld_script
|
||||
|
||||
|
||||
def calculate_crc(contents, seed):
|
||||
accumulating_xor_value = seed;
|
||||
|
||||
|
@@ -33,8 +33,8 @@ for file_name in os.listdir(source_dir):
|
||||
shutil.copy(full_file_name, variant_dir)
|
||||
|
||||
# Relocate firmware from 0x08000000 to 0x08002000
|
||||
#env['CPPDEFINES'].remove(("VECT_TAB_ADDR", 134217728))
|
||||
#env['CPPDEFINES'].append(("VECT_TAB_ADDR", "0x08010000"))
|
||||
#import marlin
|
||||
#marlin.relocate_firmware("0x08010000")
|
||||
#env.Replace(LDSCRIPT_PATH="buildroot/share/PlatformIO/ldscripts/fysetc_aio_ii.ld")
|
||||
|
||||
# Custom HEX from ELF
|
||||
|
@@ -1,11 +1,8 @@
|
||||
import os
|
||||
import os, marlin
|
||||
Import("env")
|
||||
|
||||
# Relocate firmware from 0x08000000 to 0x0800A000
|
||||
env['CPPDEFINES'].remove(("VECT_TAB_ADDR", "0x8000000"))
|
||||
#alternatively, for STSTM <=5.1.0 use line below
|
||||
#env['CPPDEFINES'].remove(("VECT_TAB_ADDR", 134217728))
|
||||
env['CPPDEFINES'].append(("VECT_TAB_ADDR", "0x0800A000"))
|
||||
marlin.relocate_firmware("0x0800A000")
|
||||
|
||||
custom_ld_script = os.path.abspath("buildroot/share/PlatformIO/ldscripts/jgaurora_a5s_a1.ld")
|
||||
for i, flag in enumerate(env["LINKFLAGS"]):
|
||||
@@ -45,4 +42,3 @@ def addboot(source,target,env):
|
||||
#os.rename(target[0].dir.path+'/firmware_with_bootloader.bin', target[0].dir.path+'/firmware.bin')
|
||||
|
||||
env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", addboot);
|
||||
|
||||
|
17
buildroot/share/PlatformIO/scripts/marlin.py
Normal file
17
buildroot/share/PlatformIO/scripts/marlin.py
Normal file
@@ -0,0 +1,17 @@
|
||||
#
|
||||
# buildroot/share/PlatformIO/scripts/marlin.py
|
||||
# Helper module with some commonly-used functions
|
||||
#
|
||||
from SCons.Script import DefaultEnvironment
|
||||
env = DefaultEnvironment()
|
||||
|
||||
def replace_define(field, value):
|
||||
envdefs = env['CPPDEFINES'].copy()
|
||||
for define in envdefs:
|
||||
if define[0] == field:
|
||||
env['CPPDEFINES'].remove(define)
|
||||
env['CPPDEFINES'].append((field, value))
|
||||
|
||||
# Relocate the firmware to a new address, such as "0x08005000"
|
||||
def relocate_firmware(address):
|
||||
replace_define("VECT_TAB_ADDR", address)
|
@@ -1,11 +1,8 @@
|
||||
import os
|
||||
import os, marlin
|
||||
Import("env")
|
||||
|
||||
# Relocate firmware from 0x08000000 to 0x08007000
|
||||
for define in env['CPPDEFINES']:
|
||||
if define[0] == "VECT_TAB_ADDR":
|
||||
env['CPPDEFINES'].remove(define)
|
||||
env['CPPDEFINES'].append(("VECT_TAB_ADDR", "0x08007000"))
|
||||
marlin.relocate_firmware("0x08007000")
|
||||
|
||||
custom_ld_script = os.path.abspath("buildroot/share/PlatformIO/ldscripts/mks_robin.ld")
|
||||
for i, flag in enumerate(env["LINKFLAGS"]):
|
||||
|
@@ -1,11 +1,8 @@
|
||||
import os
|
||||
import os, marlin
|
||||
Import("env")
|
||||
|
||||
# Relocate firmware from 0x08000000 to 0x08005000
|
||||
for define in env['CPPDEFINES']:
|
||||
if define[0] == "VECT_TAB_ADDR":
|
||||
env['CPPDEFINES'].remove(define)
|
||||
env['CPPDEFINES'].append(("VECT_TAB_ADDR", "0x08005000"))
|
||||
marlin.relocate_firmware("0x08005000")
|
||||
|
||||
custom_ld_script = os.path.abspath("buildroot/share/PlatformIO/ldscripts/mks_robin_lite.ld")
|
||||
for i, flag in enumerate(env["LINKFLAGS"]):
|
||||
@@ -14,7 +11,6 @@ for i, flag in enumerate(env["LINKFLAGS"]):
|
||||
elif flag == "-T":
|
||||
env["LINKFLAGS"][i + 1] = custom_ld_script
|
||||
|
||||
|
||||
# Encrypt ${PROGNAME}.bin and save it as 'mksLite.bin'
|
||||
def encrypt(source, target, env):
|
||||
import sys
|
||||
|
@@ -1,11 +1,8 @@
|
||||
import os
|
||||
import os, marlin
|
||||
Import("env")
|
||||
|
||||
# Relocate firmware from 0x08000000 to 0x08005000
|
||||
for define in env['CPPDEFINES']:
|
||||
if define[0] == "VECT_TAB_ADDR":
|
||||
env['CPPDEFINES'].remove(define)
|
||||
env['CPPDEFINES'].append(("VECT_TAB_ADDR", "0x08005000"))
|
||||
marlin.relocate_firmware("0x08005000")
|
||||
|
||||
custom_ld_script = os.path.abspath("buildroot/share/PlatformIO/ldscripts/mks_robin_lite.ld")
|
||||
for i, flag in enumerate(env["LINKFLAGS"]):
|
||||
@@ -14,7 +11,6 @@ for i, flag in enumerate(env["LINKFLAGS"]):
|
||||
elif flag == "-T":
|
||||
env["LINKFLAGS"][i + 1] = custom_ld_script
|
||||
|
||||
|
||||
# Encrypt ${PROGNAME}.bin and save it as 'mksLite.bin'
|
||||
def encrypt(source, target, env):
|
||||
import sys
|
||||
|
@@ -1,11 +1,8 @@
|
||||
import os
|
||||
import os, marlin
|
||||
Import("env")
|
||||
|
||||
# Relocate firmware from 0x08000000 to 0x08007000
|
||||
for define in env['CPPDEFINES']:
|
||||
if define[0] == "VECT_TAB_ADDR":
|
||||
env['CPPDEFINES'].remove(define)
|
||||
env['CPPDEFINES'].append(("VECT_TAB_ADDR", "0x08007000"))
|
||||
marlin.relocate_firmware("0x08007000")
|
||||
|
||||
custom_ld_script = os.path.abspath("buildroot/share/PlatformIO/ldscripts/mks_robin_mini.ld")
|
||||
for i, flag in enumerate(env["LINKFLAGS"]):
|
||||
@@ -14,7 +11,6 @@ for i, flag in enumerate(env["LINKFLAGS"]):
|
||||
elif flag == "-T":
|
||||
env["LINKFLAGS"][i + 1] = custom_ld_script
|
||||
|
||||
|
||||
# Encrypt ${PROGNAME}.bin and save it as 'Robin_mini.bin'
|
||||
def encrypt(source, target, env):
|
||||
import sys
|
||||
|
@@ -1,11 +1,8 @@
|
||||
import os
|
||||
import os, marlin
|
||||
Import("env")
|
||||
|
||||
# Relocate firmware from 0x08000000 to 0x08007000
|
||||
for define in env['CPPDEFINES']:
|
||||
if define[0] == "VECT_TAB_ADDR":
|
||||
env['CPPDEFINES'].remove(define)
|
||||
env['CPPDEFINES'].append(("VECT_TAB_ADDR", "0x08007000"))
|
||||
marlin.relocate_firmware("0x08007000")
|
||||
|
||||
custom_ld_script = os.path.abspath("buildroot/share/PlatformIO/ldscripts/mks_robin_nano.ld")
|
||||
for i, flag in enumerate(env["LINKFLAGS"]):
|
||||
@@ -14,7 +11,6 @@ for i, flag in enumerate(env["LINKFLAGS"]):
|
||||
elif flag == "-T":
|
||||
env["LINKFLAGS"][i + 1] = custom_ld_script
|
||||
|
||||
|
||||
# Encrypt ${PROGNAME}.bin and save it as 'Robin_nano.bin'
|
||||
def encrypt(source, target, env):
|
||||
import sys
|
||||
|
@@ -1,11 +1,8 @@
|
||||
import os
|
||||
import os, marlin
|
||||
Import("env")
|
||||
|
||||
# Relocate firmware from 0x08000000 to 0x08007000
|
||||
for define in env['CPPDEFINES']:
|
||||
if define[0] == "VECT_TAB_ADDR":
|
||||
env['CPPDEFINES'].remove(define)
|
||||
env['CPPDEFINES'].append(("VECT_TAB_ADDR", "0x08007000"))
|
||||
marlin.relocate_firmware("0x08007000")
|
||||
|
||||
custom_ld_script = os.path.abspath("buildroot/share/PlatformIO/ldscripts/mks_robin_pro.ld")
|
||||
for i, flag in enumerate(env["LINKFLAGS"]):
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,145 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
# Builds custom upload command
|
||||
# 1) Run platformio as a subprocess to find a COM port
|
||||
# 2) Build the upload command
|
||||
# 3) Exit and let upload tool do the work
|
||||
#
|
||||
# This script runs between completion of the library/dependencies installation and compilation.
|
||||
#
|
||||
# Will continue on if a COM port isn't found so that the compilation can be done.
|
||||
#
|
||||
|
||||
from __future__ import print_function
|
||||
from __future__ import division
|
||||
|
||||
import subprocess
|
||||
import os
|
||||
import sys
|
||||
from SCons.Script import DefaultEnvironment
|
||||
import platform
|
||||
current_OS = platform.system()
|
||||
|
||||
env = DefaultEnvironment()
|
||||
|
||||
build_type = os.environ.get("BUILD_TYPE", 'Not Set')
|
||||
|
||||
|
||||
if not(build_type == 'upload' or build_type == 'traceback' or build_type == 'Not Set') :
|
||||
env.Replace(UPLOAD_PROTOCOL = 'teensy-gui') # run normal Teensy2 scripts
|
||||
else:
|
||||
com_first = ''
|
||||
com_last = ''
|
||||
com_CDC = ''
|
||||
description_first = ''
|
||||
description_last = ''
|
||||
description_CDC = ''
|
||||
|
||||
#
|
||||
# grab the first com port that pops up unless we find one we know for sure
|
||||
# is a CDC device
|
||||
#
|
||||
def get_com_port(com_search_text, descr_search_text, start):
|
||||
|
||||
global com_first
|
||||
global com_last
|
||||
global com_CDC
|
||||
global description_first
|
||||
global description_last
|
||||
global description_CDC
|
||||
|
||||
|
||||
print('\nLooking for Serial Port\n')
|
||||
|
||||
# stream output from subprocess and split it into lines
|
||||
pio_subprocess = subprocess.Popen(['platformio', 'device', 'list'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
|
||||
looking_for_description = False
|
||||
for line in iter(pio_subprocess.stdout.readline, ''):
|
||||
if 0 <= line.find(com_search_text):
|
||||
looking_for_description = True
|
||||
com_last = line.replace('\n', '')
|
||||
if com_first == '':
|
||||
com_first = com_last
|
||||
if 0 <= line.find(descr_search_text) and looking_for_description:
|
||||
looking_for_description = False
|
||||
description_last = line[ start : ]
|
||||
if description_first == '':
|
||||
description_first = description_last
|
||||
if 0 <= description_last.find('CDC'):
|
||||
com_CDC = com_last
|
||||
description_CDC = description_last
|
||||
|
||||
if com_CDC == '' and com_first != '':
|
||||
com_CDC = com_first
|
||||
description_CDC = description_first
|
||||
elif com_CDC == '':
|
||||
com_CDC = 'COM_PORT_NOT_FOUND'
|
||||
|
||||
while 0 <= com_CDC.find('\n'):
|
||||
com_CDC = com_CDC.replace('\n', '')
|
||||
while 0 <= com_CDC.find('\r'):
|
||||
com_CDC = com_CDC.replace('\r', '')
|
||||
|
||||
if com_CDC == 'COM_PORT_NOT_FOUND':
|
||||
print(com_CDC, '\n')
|
||||
else:
|
||||
print('FOUND: ', com_CDC)
|
||||
print('DESCRIPTION: ', description_CDC, '\n')
|
||||
|
||||
if current_OS == 'Windows':
|
||||
|
||||
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_exe_path = 'buildroot\\share\\atom\\avrdude_5.10.exe'
|
||||
|
||||
# source_path = env.get("PROJECTBUILD_DIR") + '\\' + env.get("PIOENV") + '\\firmware.hex'
|
||||
source_path = '.pio\\build\\' + env.get("PIOENV") + '\\firmware.hex'
|
||||
|
||||
upload_string = avrdude_exe_path + ' -p usb1286 -c avr109 -P ' + com_CDC + ' -U flash:w:' + source_path + ':i'
|
||||
|
||||
|
||||
if current_OS == 'Darwin': # MAC
|
||||
|
||||
get_com_port('usbmodem', 'Description:', 13)
|
||||
|
||||
# avrdude_conf_path = env.get("PIOHOME_DIR") + '/packages/toolchain-atmelavr/etc/avrdude.conf'
|
||||
avrdude_conf_path = 'buildroot/share/atom/avrdude_macOS.conf'
|
||||
|
||||
|
||||
avrdude_exe_path = 'buildroot/share/atom/avrdude_5.10_macOS'
|
||||
|
||||
# source_path = env.get("PROJECTBUILD_DIR") + '/' + env.get("PIOENV") + '/firmware.hex'
|
||||
source_path = '.pio/build/' + env.get("PIOENV") + '/firmware.hex'
|
||||
|
||||
|
||||
# upload_string = 'avrdude -p usb1286 -c avr109 -P ' + com_CDC + ' -U flash:w:' + source_path + ':i'
|
||||
upload_string = avrdude_exe_path + ' -p usb1286 -c avr109 -P ' + com_CDC + ' -C ' + avrdude_conf_path + ' -U flash:w:' + source_path + ':i'
|
||||
print('upload_string: ', upload_string)
|
||||
|
||||
|
||||
|
||||
if current_OS == 'Linux':
|
||||
|
||||
get_com_port('/dev/tty', 'Description:', 13)
|
||||
|
||||
# avrdude_conf_path = env.get("PIOHOME_DIR") + '/packages/toolchain-atmelavr/etc/avrdude.conf'
|
||||
avrdude_conf_path = 'buildroot/share/atom/avrdude_linux.conf'
|
||||
|
||||
|
||||
avrdude_exe_path = 'buildroot/share/atom/avrdude_5.10_linux'
|
||||
# source_path = env.get("PROJECTBUILD_DIR") + '/' + env.get("PIOENV") + '/firmware.hex'
|
||||
source_path = '.pio/build/' + env.get("PIOENV") + '/firmware.hex'
|
||||
|
||||
# upload_string = 'avrdude -p usb1286 -c avr109 -P ' + com_CDC + ' -U flash:w:' + source_path + ':i'
|
||||
upload_string = avrdude_exe_path + ' -p usb1286 -c avr109 -P ' + com_CDC + ' -C ' + avrdude_conf_path + ' -U flash:w:' + source_path + ':i'
|
||||
|
||||
|
||||
env.Replace(
|
||||
UPLOADCMD = upload_string,
|
||||
MAXIMUM_RAM_SIZE = 8192,
|
||||
MAXIMUM_SIZE = 130048
|
||||
)
|
@@ -1,42 +0,0 @@
|
||||
#
|
||||
# Builds custom upload command
|
||||
# 1) Run platformio as a subprocess to find a COM port
|
||||
# 2) Build the upload command
|
||||
# 3) Exit and let upload tool do the work
|
||||
#
|
||||
# This script runs between completion of the library/dependencies installation and compilation.
|
||||
#
|
||||
# Will continue on if a COM port isn't found so that the compilation can be done.
|
||||
#
|
||||
|
||||
import os
|
||||
import sys
|
||||
from SCons.Script import DefaultEnvironment
|
||||
import platform
|
||||
current_OS = platform.system()
|
||||
|
||||
env = DefaultEnvironment()
|
||||
|
||||
build_type = os.environ.get("BUILD_TYPE", 'Not Set')
|
||||
if not(build_type == 'upload' or build_type == 'traceback' or build_type == 'Not Set') :
|
||||
env.Replace(UPLOAD_PROTOCOL = 'teensy-gui') # run normal Teensy2 scripts
|
||||
else:
|
||||
|
||||
if current_OS == 'Windows':
|
||||
avrdude_conf_path = env.get("PIOHOME_DIR") + '\\packages\\toolchain-atmelavr\\etc\\avrdude.conf'
|
||||
|
||||
source_path = env.get("PROJECTBUILD_DIR") + '\\' + env.get("PIOENV") + '\\firmware.hex'
|
||||
|
||||
upload_string = 'avrdude -p usb1286 -c flip1 -C ' + avrdude_conf_path + ' -U flash:w:' + source_path + ':i'
|
||||
|
||||
else:
|
||||
source_path = env.get("PROJECTBUILD_DIR") + '/' + env.get("PIOENV") + '/firmware.hex'
|
||||
|
||||
upload_string = 'avrdude -p usb1286 -c flip1 -U flash:w:' + source_path + ':i'
|
||||
|
||||
|
||||
env.Replace(
|
||||
UPLOADCMD = upload_string,
|
||||
MAXIMUM_RAM_SIZE = 8192,
|
||||
MAXIMUM_SIZE = 130048
|
||||
)
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,4 +0,0 @@
|
||||
Personalized config files for the "Electron" "Tevo 3D" i3 6th gen
|
||||
|
||||
- https://www.3dprintersbay.com/electron3d-reprap-prusa-i3-kit
|
||||
- https://reprap.org/wiki/Migbot_Prusa_i3
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,86 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* Made with Marlin Bitmap Converter
|
||||
* http://marlinfw.org/tools/u8glib/converter.html
|
||||
*/
|
||||
#define CUSTOM_BOOTSCREEN_BMPWIDTH 88
|
||||
|
||||
const unsigned char custom_start_bmp[] PROGMEM = {
|
||||
B00000000,B00000000,B00000000,B00001111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000000,B00111111,B11111000,B00000000,B01000000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00011110,B01111111,B11111111,B00000000,B10000100,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00111111,B11111111,B11111111,B11111111,B00000100,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00111111,B11111111,B11111111,B11111110,B00001100,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B01111111,B11111111,B11111111,B11110000,B00001000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00001111,B11111111,B11100000,B00000000,B00011000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000000,B11111111,B11100011,B10000000,B00111000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00010011,B11111111,B11100001,B10000000,B01111000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00011111,B10001111,B11100011,B10000000,B11110000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00011110,B00001111,B11111111,B10000001,B11110000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000110,B00011111,B11111111,B10000111,B11100000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000000,B11111111,B11111110,B00001111,B11100000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000111,B11111111,B11110000,B01111111,B11000000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00001111,B11111100,B00000011,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00011111,B11000000,B11111111,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00111110,B00011111,B11111111,B11111110,B00111111,B11000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B01111100,B11111111,B11111111,B11111100,B00001111,B11100000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B11111001,B11111111,B11111111,B11110000,B00001111,B11110000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B11110011,B11111111,B11111111,B11111000,B00011111,B11111000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B11100111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000001,B11101111,B11111111,B11111111,B11111111,B11111111,B11111110,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000001,B11101111,B11111110,B00001111,B11111111,B11111111,B11101111,B10000000,B00000000,B00000000,
|
||||
B00000000,B00000001,B11001111,B11110000,B00000001,B11111111,B11111111,B11110011,B11111000,B00000000,B00000000,
|
||||
B00000000,B00000000,B11101111,B11100000,B00000000,B11111111,B11111111,B11111000,B01100000,B00000000,B00000000,
|
||||
B00000000,B00000000,B11101111,B11100000,B00000000,B00111111,B11111111,B11111000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B11101111,B11000000,B00000000,B00011111,B11111111,B11111000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B01100111,B11100100,B00000000,B00001111,B11111111,B11111100,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00110011,B11111100,B00000000,B00000111,B11111111,B11111100,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00011001,B11111100,B00000000,B00000011,B11100000,B11111100,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00001100,B01111000,B00000000,B00000001,B11100000,B00111100,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B01110000,B00011100,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000011,B10000000,B00000000,B00000000,B00000000,B00001110,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000001,B11100000,B00000000,B00000000,B00000000,B00001111,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000001,B11110000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000001,B11111000,B00000000,B00000000,B00000000,B00000111,B10000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000001,B11111100,B00000000,B00000000,B00000000,B00000111,B11000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000011,B11111100,B00000000,B00000000,B00000000,B00001111,B11000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000111,B11111100,B00000000,B00000000,B00000000,B00001111,B11100000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000111,B10000001,B11111111,B10000111,B10011111,B00000111,B10011110,B00000000,B00000000,B00111000,B00000000,
|
||||
B00000111,B10000001,B11111111,B11000011,B10011111,B00000111,B10001110,B00000000,B00000000,B00111000,B00000000,
|
||||
B00000111,B10000001,B11000011,B11100011,B10011111,B00000111,B10001110,B00000000,B00000000,B00111000,B00000000,
|
||||
B00001111,B11000001,B11000000,B11100011,B10011111,B10001111,B10001110,B00000000,B00111100,B00111011,B00000000,
|
||||
B00001111,B11000001,B11000000,B11100011,B10011111,B10001111,B10001110,B00000000,B11111110,B00111111,B10000000,
|
||||
B00011101,B11000001,B11000000,B01110011,B10011111,B10011111,B10001110,B00000000,B11111111,B00111111,B10000000,
|
||||
B00011100,B11100001,B11000000,B01110011,B10011101,B11011011,B10001110,B00000000,B01101111,B00111011,B11000000,
|
||||
B00011100,B11100001,B11000000,B01110011,B10011101,B11111011,B10001110,B00000000,B00111111,B00111011,B11000000,
|
||||
B00111111,B11110001,B11000000,B11100011,B10011100,B11111011,B10001110,B00000000,B11111111,B00111011,B11000000,
|
||||
B00111111,B11110001,B11000000,B11100011,B10011100,B11110011,B10001110,B00000000,B11101111,B00111011,B11000000,
|
||||
B01111000,B01110001,B11000001,B11100011,B10011100,B11110011,B10001110,B00000001,B11101111,B00111011,B11000000,
|
||||
B01110000,B01111001,B11111111,B11000011,B10011100,B01100011,B10001111,B11111111,B11101111,B00111111,B10000000,
|
||||
B01110000,B00111001,B11111111,B10000011,B10011100,B01100011,B10001111,B11111110,B11110111,B00111111,B10000000,
|
||||
B11110000,B01111101,B11111111,B00000111,B10011110,B00000011,B11011111,B11111100,B01100111,B00100111,B00000000
|
||||
};
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,86 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* Made with Marlin Bitmap Converter
|
||||
* http://marlinfw.org/tools/u8glib/converter.html
|
||||
*/
|
||||
#define CUSTOM_BOOTSCREEN_BMPWIDTH 88
|
||||
|
||||
const unsigned char custom_start_bmp[] PROGMEM = {
|
||||
B00000000,B00000000,B00000000,B00001111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000000,B00111111,B11111000,B00000000,B01000000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00011110,B01111111,B11111111,B00000000,B10000100,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00111111,B11111111,B11111111,B11111111,B00000100,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00111111,B11111111,B11111111,B11111110,B00001100,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B01111111,B11111111,B11111111,B11110000,B00001000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00001111,B11111111,B11100000,B00000000,B00011000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000000,B11111111,B11100011,B10000000,B00111000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00010011,B11111111,B11100001,B10000000,B01111000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00011111,B10001111,B11100011,B10000000,B11110000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00011110,B00001111,B11111111,B10000001,B11110000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000110,B00011111,B11111111,B10000111,B11100000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000000,B11111111,B11111110,B00001111,B11100000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000111,B11111111,B11110000,B01111111,B11000000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00001111,B11111100,B00000011,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00011111,B11000000,B11111111,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00111110,B00011111,B11111111,B11111110,B00111111,B11000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B01111100,B11111111,B11111111,B11111100,B00001111,B11100000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B11111001,B11111111,B11111111,B11110000,B00001111,B11110000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B11110011,B11111111,B11111111,B11111000,B00011111,B11111000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B11100111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000001,B11101111,B11111111,B11111111,B11111111,B11111111,B11111110,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000001,B11101111,B11111110,B00001111,B11111111,B11111111,B11101111,B10000000,B00000000,B00000000,
|
||||
B00000000,B00000001,B11001111,B11110000,B00000001,B11111111,B11111111,B11110011,B11111000,B00000000,B00000000,
|
||||
B00000000,B00000000,B11101111,B11100000,B00000000,B11111111,B11111111,B11111000,B01100000,B00000000,B00000000,
|
||||
B00000000,B00000000,B11101111,B11100000,B00000000,B00111111,B11111111,B11111000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B11101111,B11000000,B00000000,B00011111,B11111111,B11111000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B01100111,B11100100,B00000000,B00001111,B11111111,B11111100,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00110011,B11111100,B00000000,B00000111,B11111111,B11111100,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00011001,B11111100,B00000000,B00000011,B11100000,B11111100,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00001100,B01111000,B00000000,B00000001,B11100000,B00111100,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B01110000,B00011100,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000011,B10000000,B00000000,B00000000,B00000000,B00001110,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000001,B11100000,B00000000,B00000000,B00000000,B00001111,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000001,B11110000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000001,B11111000,B00000000,B00000000,B00000000,B00000111,B10000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000001,B11111100,B00000000,B00000000,B00000000,B00000111,B11000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000011,B11111100,B00000000,B00000000,B00000000,B00001111,B11000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000111,B11111100,B00000000,B00000000,B00000000,B00001111,B11100000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000111,B10000001,B11111111,B10000111,B10011111,B00000111,B10011110,B00000000,B00000000,B00111000,B00000000,
|
||||
B00000111,B10000001,B11111111,B11000011,B10011111,B00000111,B10001110,B00000000,B00000000,B00111000,B00000000,
|
||||
B00000111,B10000001,B11000011,B11100011,B10011111,B00000111,B10001110,B00000000,B00000000,B00111000,B00000000,
|
||||
B00001111,B11000001,B11000000,B11100011,B10011111,B10001111,B10001110,B00000000,B00111100,B00111011,B00000000,
|
||||
B00001111,B11000001,B11000000,B11100011,B10011111,B10001111,B10001110,B00000000,B11111110,B00111111,B10000000,
|
||||
B00011101,B11000001,B11000000,B01110011,B10011111,B10011111,B10001110,B00000000,B11111111,B00111111,B10000000,
|
||||
B00011100,B11100001,B11000000,B01110011,B10011101,B11011011,B10001110,B00000000,B01101111,B00111011,B11000000,
|
||||
B00011100,B11100001,B11000000,B01110011,B10011101,B11111011,B10001110,B00000000,B00111111,B00111011,B11000000,
|
||||
B00111111,B11110001,B11000000,B11100011,B10011100,B11111011,B10001110,B00000000,B11111111,B00111011,B11000000,
|
||||
B00111111,B11110001,B11000000,B11100011,B10011100,B11110011,B10001110,B00000000,B11101111,B00111011,B11000000,
|
||||
B01111000,B01110001,B11000001,B11100011,B10011100,B11110011,B10001110,B00000001,B11101111,B00111011,B11000000,
|
||||
B01110000,B01111001,B11111111,B11000011,B10011100,B01100011,B10001111,B11111111,B11101111,B00111111,B10000000,
|
||||
B01110000,B00111001,B11111111,B10000011,B10011100,B01100011,B10001111,B11111110,B11110111,B00111111,B10000000,
|
||||
B11110000,B01111101,B11111111,B00000111,B10011110,B00000011,B11011111,B11111100,B01100111,B00100111,B00000000
|
||||
};
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user