Compare commits
26 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c71d10dd74 | |||
| fb927f4a06 | |||
| d01d1f841a | |||
| 81976c4360 | |||
| e298266eff | |||
| 1aa0ece8a4 | |||
| 4e1e82b122 | |||
| 52096599b3 | |||
| fa63ed6cc7 | |||
| 5cdb9c2bc8 | |||
| ce40836717 | |||
| 4d56b557aa | |||
| dd3b65bb1f | |||
| 5809bdd400 | |||
| 5a80fc2617 | |||
| 6d2b792a29 | |||
| 1b46ca1cf8 | |||
| e37a23231a | |||
| 54a5bf5edf | |||
| 670a199575 | |||
| bbf4bcf5ae | |||
| 797aafd645 | |||
| 6ad5711807 | |||
| b577691b7b | |||
| 93139e757c | |||
| 8627d4e5da |
@@ -27,7 +27,7 @@ tests-single-ci:
|
|||||||
|
|
||||||
tests-single-local:
|
tests-single-local:
|
||||||
@if ! test -n "$(TEST_TARGET)" ; then echo "***ERROR*** Set TEST_TARGET=<your-module> or use make tests-all-local" ; return 1; fi
|
@if ! test -n "$(TEST_TARGET)" ; then echo "***ERROR*** Set TEST_TARGET=<your-module> or use make tests-all-local" ; return 1; fi
|
||||||
export PATH=./buildroot/bin/:./buildroot/tests/:${PATH} \
|
export PATH="./buildroot/bin/:./buildroot/tests/:${PATH}" \
|
||||||
&& export VERBOSE_PLATFORMIO=$(VERBOSE_PLATFORMIO) \
|
&& export VERBOSE_PLATFORMIO=$(VERBOSE_PLATFORMIO) \
|
||||||
&& run_tests . $(TEST_TARGET) "$(ONLY_TEST)"
|
&& run_tests . $(TEST_TARGET) "$(ONLY_TEST)"
|
||||||
.PHONY: tests-single-local
|
.PHONY: tests-single-local
|
||||||
@@ -38,7 +38,7 @@ tests-single-local-docker:
|
|||||||
.PHONY: tests-single-local-docker
|
.PHONY: tests-single-local-docker
|
||||||
|
|
||||||
tests-all-local:
|
tests-all-local:
|
||||||
export PATH=./buildroot/bin/:./buildroot/tests/:${PATH} \
|
export PATH="./buildroot/bin/:./buildroot/tests/:${PATH}" \
|
||||||
&& export VERBOSE_PLATFORMIO=$(VERBOSE_PLATFORMIO) \
|
&& export VERBOSE_PLATFORMIO=$(VERBOSE_PLATFORMIO) \
|
||||||
&& for TEST_TARGET in $$(./get_test_targets.py) ; do echo "Running tests for $$TEST_TARGET" ; run_tests . $$TEST_TARGET ; done
|
&& for TEST_TARGET in $$(./get_test_targets.py) ; do echo "Running tests for $$TEST_TARGET" ; run_tests . $$TEST_TARGET ; done
|
||||||
.PHONY: tests-all-local
|
.PHONY: tests-all-local
|
||||||
|
|||||||
@@ -3059,7 +3059,7 @@
|
|||||||
//#define MKS_ROBIN_TFT_V1_1R
|
//#define MKS_ROBIN_TFT_V1_1R
|
||||||
|
|
||||||
//
|
//
|
||||||
// 480x320, 3.5", FSMC Stock Display from TronxXY
|
// 480x320, 3.5", FSMC Stock Display from Tronxy
|
||||||
//
|
//
|
||||||
//#define TFT_TRONXY_X5SA
|
//#define TFT_TRONXY_X5SA
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -41,7 +41,7 @@
|
|||||||
* here we define this default string as the date where the latest release
|
* here we define this default string as the date where the latest release
|
||||||
* version was tagged.
|
* version was tagged.
|
||||||
*/
|
*/
|
||||||
//#define STRING_DISTRIBUTION_DATE "2022-10-12"
|
//#define STRING_DISTRIBUTION_DATE "2022-10-18"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines a generic printer name to be output to the LCD after booting Marlin.
|
* Defines a generic printer name to be output to the LCD after booting Marlin.
|
||||||
|
|||||||
@@ -293,11 +293,11 @@ enum ClockSource2 : uint8_t {
|
|||||||
|
|
||||||
#if HAS_MOTOR_CURRENT_PWM
|
#if HAS_MOTOR_CURRENT_PWM
|
||||||
#if PIN_EXISTS(MOTOR_CURRENT_PWM_XY)
|
#if PIN_EXISTS(MOTOR_CURRENT_PWM_XY)
|
||||||
#define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E || P == MOTOR_CURRENT_PWM_Z || P == MOTOR_CURRENT_PWM_XY)
|
#define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E || P == MOTOR_CURRENT_PWM_E0 || P == MOTOR_CURRENT_PWM_E1 || P == MOTOR_CURRENT_PWM_Z || P == MOTOR_CURRENT_PWM_XY)
|
||||||
#elif PIN_EXISTS(MOTOR_CURRENT_PWM_Z)
|
#elif PIN_EXISTS(MOTOR_CURRENT_PWM_Z)
|
||||||
#define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E || P == MOTOR_CURRENT_PWM_Z)
|
#define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E || P == MOTOR_CURRENT_PWM_E0 || P == MOTOR_CURRENT_PWM_E1 || P == MOTOR_CURRENT_PWM_Z)
|
||||||
#else
|
#else
|
||||||
#define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E)
|
#define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E || P == MOTOR_CURRENT_PWM_E0 || P == MOTOR_CURRENT_PWM_E1)
|
||||||
#endif
|
#endif
|
||||||
#else
|
#else
|
||||||
#define PWM_CHK_MOTOR_CURRENT(P) false
|
#define PWM_CHK_MOTOR_CURRENT(P) false
|
||||||
|
|||||||
@@ -37,22 +37,22 @@
|
|||||||
|| X_ENA_PIN == N || Y_ENA_PIN == N || Z_ENA_PIN == N \
|
|| X_ENA_PIN == N || Y_ENA_PIN == N || Z_ENA_PIN == N \
|
||||||
|| BTN_EN1 == N || BTN_EN2 == N \
|
|| BTN_EN1 == N || BTN_EN2 == N \
|
||||||
)
|
)
|
||||||
#if CONF_SERIAL_IS(0)
|
#if SERIAL_IN_USE(0)
|
||||||
// D0-D1. No known conflicts.
|
// D0-D1. No known conflicts.
|
||||||
#endif
|
#endif
|
||||||
#if NOT_TARGET(__AVR_ATmega644P__, __AVR_ATmega1284P__)
|
#if NOT_TARGET(__AVR_ATmega644P__, __AVR_ATmega1284P__)
|
||||||
#if CONF_SERIAL_IS(1) && (CHECK_SERIAL_PIN(18) || CHECK_SERIAL_PIN(19))
|
#if SERIAL_IN_USE(1) && (CHECK_SERIAL_PIN(18) || CHECK_SERIAL_PIN(19))
|
||||||
#error "Serial Port 1 pin D18 and/or D19 conflicts with another pin on the board."
|
#error "Serial Port 1 pin D18 and/or D19 conflicts with another pin on the board."
|
||||||
#endif
|
#endif
|
||||||
#else
|
#else
|
||||||
#if CONF_SERIAL_IS(1) && (CHECK_SERIAL_PIN(10) || CHECK_SERIAL_PIN(11))
|
#if SERIAL_IN_USE(1) && (CHECK_SERIAL_PIN(10) || CHECK_SERIAL_PIN(11))
|
||||||
#error "Serial Port 1 pin D10 and/or D11 conflicts with another pin on the board."
|
#error "Serial Port 1 pin D10 and/or D11 conflicts with another pin on the board."
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#if CONF_SERIAL_IS(2) && (CHECK_SERIAL_PIN(16) || CHECK_SERIAL_PIN(17))
|
#if SERIAL_IN_USE(2) && (CHECK_SERIAL_PIN(16) || CHECK_SERIAL_PIN(17))
|
||||||
#error "Serial Port 2 pin D16 and/or D17 conflicts with another pin on the board."
|
#error "Serial Port 2 pin D16 and/or D17 conflicts with another pin on the board."
|
||||||
#endif
|
#endif
|
||||||
#if CONF_SERIAL_IS(3) && (CHECK_SERIAL_PIN(14) || CHECK_SERIAL_PIN(15))
|
#if SERIAL_IN_USE(3) && (CHECK_SERIAL_PIN(14) || CHECK_SERIAL_PIN(15))
|
||||||
#error "Serial Port 3 pin D14 and/or D15 conflicts with another pin on the board."
|
#error "Serial Port 3 pin D14 and/or D15 conflicts with another pin on the board."
|
||||||
#endif
|
#endif
|
||||||
#undef CHECK_SERIAL_PIN
|
#undef CHECK_SERIAL_PIN
|
||||||
|
|||||||
@@ -36,15 +36,15 @@
|
|||||||
|| X_DIR_PIN == N || Y_DIR_PIN == N || Z_DIR_PIN == N \
|
|| X_DIR_PIN == N || Y_DIR_PIN == N || Z_DIR_PIN == N \
|
||||||
|| X_ENA_PIN == N || Y_ENA_PIN == N || Z_ENA_PIN == N \
|
|| X_ENA_PIN == N || Y_ENA_PIN == N || Z_ENA_PIN == N \
|
||||||
)
|
)
|
||||||
#if CONF_SERIAL_IS(0) // D0-D1. No known conflicts.
|
#if SERIAL_IN_USE(0) // D0-D1. No known conflicts.
|
||||||
#endif
|
#endif
|
||||||
#if CONF_SERIAL_IS(1) && (CHECK_SERIAL_PIN(18) || CHECK_SERIAL_PIN(19))
|
#if SERIAL_IN_USE(1) && (CHECK_SERIAL_PIN(18) || CHECK_SERIAL_PIN(19))
|
||||||
#error "Serial Port 1 pin D18 and/or D19 conflicts with another pin on the board."
|
#error "Serial Port 1 pin D18 and/or D19 conflicts with another pin on the board."
|
||||||
#endif
|
#endif
|
||||||
#if CONF_SERIAL_IS(2) && (CHECK_SERIAL_PIN(16) || CHECK_SERIAL_PIN(17))
|
#if SERIAL_IN_USE(2) && (CHECK_SERIAL_PIN(16) || CHECK_SERIAL_PIN(17))
|
||||||
#error "Serial Port 2 pin D16 and/or D17 conflicts with another pin on the board."
|
#error "Serial Port 2 pin D16 and/or D17 conflicts with another pin on the board."
|
||||||
#endif
|
#endif
|
||||||
#if CONF_SERIAL_IS(3) && (CHECK_SERIAL_PIN(14) || CHECK_SERIAL_PIN(15))
|
#if SERIAL_IN_USE(3) && (CHECK_SERIAL_PIN(14) || CHECK_SERIAL_PIN(15))
|
||||||
#error "Serial Port 3 pin D14 and/or D15 conflicts with another pin on the board."
|
#error "Serial Port 3 pin D14 and/or D15 conflicts with another pin on the board."
|
||||||
#endif
|
#endif
|
||||||
#undef CHECK_SERIAL_PIN
|
#undef CHECK_SERIAL_PIN
|
||||||
|
|||||||
@@ -6,14 +6,14 @@
|
|||||||
#
|
#
|
||||||
import pioutil
|
import pioutil
|
||||||
if pioutil.is_pio_build():
|
if pioutil.is_pio_build():
|
||||||
import platform
|
import platform
|
||||||
current_OS = platform.system()
|
current_OS = platform.system()
|
||||||
|
|
||||||
if current_OS == 'Windows':
|
if current_OS == 'Windows':
|
||||||
|
|
||||||
Import("env")
|
Import("env")
|
||||||
|
|
||||||
# Use bossac.exe on Windows
|
# Use bossac.exe on Windows
|
||||||
env.Replace(
|
env.Replace(
|
||||||
UPLOADCMD="bossac --info --unlock --write --verify --reset --erase -U false --boot $SOURCE"
|
UPLOADCMD="bossac --info --unlock --write --verify --reset --erase -U false --boot $SOURCE"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -95,7 +95,7 @@
|
|||||||
static_assert(IS_FLASH_SECTOR(FLASH_SECTOR), "FLASH_SECTOR is invalid");
|
static_assert(IS_FLASH_SECTOR(FLASH_SECTOR), "FLASH_SECTOR is invalid");
|
||||||
static_assert(IS_POWER_OF_2(FLASH_UNIT_SIZE), "FLASH_UNIT_SIZE should be a power of 2, please check your chip's spec sheet");
|
static_assert(IS_POWER_OF_2(FLASH_UNIT_SIZE), "FLASH_UNIT_SIZE should be a power of 2, please check your chip's spec sheet");
|
||||||
|
|
||||||
#endif
|
#endif // FLASH_EEPROM_LEVELING
|
||||||
|
|
||||||
static bool eeprom_data_written = false;
|
static bool eeprom_data_written = false;
|
||||||
|
|
||||||
@@ -189,15 +189,15 @@ bool PersistentStore::access_finish() {
|
|||||||
|
|
||||||
UNLOCK_FLASH();
|
UNLOCK_FLASH();
|
||||||
|
|
||||||
uint32_t offset = 0;
|
uint32_t offset = 0,
|
||||||
uint32_t address = SLOT_ADDRESS(current_slot);
|
address = SLOT_ADDRESS(current_slot),
|
||||||
uint32_t address_end = address + MARLIN_EEPROM_SIZE;
|
address_end = address + MARLIN_EEPROM_SIZE,
|
||||||
uint32_t data = 0;
|
data = 0;
|
||||||
|
|
||||||
bool success = true;
|
bool success = true;
|
||||||
|
|
||||||
while (address < address_end) {
|
while (address < address_end) {
|
||||||
memcpy(&data, ram_eeprom + offset, sizeof(uint32_t));
|
memcpy(&data, ram_eeprom + offset, sizeof(data));
|
||||||
status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, address, data);
|
status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, address, data);
|
||||||
if (status == HAL_OK) {
|
if (status == HAL_OK) {
|
||||||
address += sizeof(uint32_t);
|
address += sizeof(uint32_t);
|
||||||
@@ -221,7 +221,8 @@ bool PersistentStore::access_finish() {
|
|||||||
|
|
||||||
return success;
|
return success;
|
||||||
|
|
||||||
#else
|
#else !FLASH_EEPROM_LEVELING
|
||||||
|
|
||||||
// The following was written for the STM32F4 but may work with other MCUs as well.
|
// The following was written for the STM32F4 but may work with other MCUs as well.
|
||||||
// Most STM32F4 flash does not allow reading from flash during erase operations.
|
// Most STM32F4 flash does not allow reading from flash during erase operations.
|
||||||
// This takes about a second on a STM32F407 with a 128kB sector used as EEPROM.
|
// This takes about a second on a STM32F407 with a 128kB sector used as EEPROM.
|
||||||
@@ -235,7 +236,8 @@ bool PersistentStore::access_finish() {
|
|||||||
TERN_(HAS_PAUSE_SERVO_OUTPUT, RESUME_SERVO_OUTPUT());
|
TERN_(HAS_PAUSE_SERVO_OUTPUT, RESUME_SERVO_OUTPUT());
|
||||||
|
|
||||||
eeprom_data_written = false;
|
eeprom_data_written = false;
|
||||||
#endif
|
|
||||||
|
#endif // !FLASH_EEPROM_LEVELING
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -426,6 +426,7 @@
|
|||||||
#define BOARD_OPULO_LUMEN_REV4 4241 // Opulo Lumen PnP Controller REV4 (STM32F407VE / STM32F407VG)
|
#define BOARD_OPULO_LUMEN_REV4 4241 // Opulo Lumen PnP Controller REV4 (STM32F407VE / STM32F407VG)
|
||||||
#define BOARD_FYSETC_SPIDER_KING407 4242 // FYSETC Spider King407 (STM32F407ZG)
|
#define BOARD_FYSETC_SPIDER_KING407 4242 // FYSETC Spider King407 (STM32F407ZG)
|
||||||
#define BOARD_MKS_SKIPR_V1 4243 // MKS SKIPR v1.0 all-in-one board (STM32F407VE)
|
#define BOARD_MKS_SKIPR_V1 4243 // MKS SKIPR v1.0 all-in-one board (STM32F407VE)
|
||||||
|
#define BOARD_TRONXY_V10 4244 // TRONXY V10 (STM32F446ZE)
|
||||||
|
|
||||||
//
|
//
|
||||||
// ARM Cortex M7
|
// ARM Cortex M7
|
||||||
|
|||||||
+105
-105
@@ -226,8 +226,8 @@ typedef const_float_t const_celsius_float_t;
|
|||||||
// Helpers
|
// Helpers
|
||||||
#define _RECIP(N) ((N) ? 1.0f / static_cast<float>(N) : 0.0f)
|
#define _RECIP(N) ((N) ? 1.0f / static_cast<float>(N) : 0.0f)
|
||||||
#define _ABS(N) ((N) < 0 ? -(N) : (N))
|
#define _ABS(N) ((N) < 0 ? -(N) : (N))
|
||||||
#define _LS(N) (N = (T)(uint32_t(N) << v))
|
#define _LS(N) (N = (T)(uint32_t(N) << p))
|
||||||
#define _RS(N) (N = (T)(uint32_t(N) >> v))
|
#define _RS(N) (N = (T)(uint32_t(N) >> p))
|
||||||
#define FI FORCE_INLINE
|
#define FI FORCE_INLINE
|
||||||
|
|
||||||
// Forward declarations
|
// Forward declarations
|
||||||
@@ -348,9 +348,9 @@ struct XYval {
|
|||||||
// If any element is true then it's true
|
// If any element is true then it's true
|
||||||
FI operator bool() { return x || y; }
|
FI operator bool() { return x || y; }
|
||||||
// Smallest element
|
// Smallest element
|
||||||
FI T _min() const { return _MIN(x, y); }
|
FI T small() const { return _MIN(x, y); }
|
||||||
// Largest element
|
// Largest element
|
||||||
FI T _max() const { return _MAX(x, y); }
|
FI T large() const { return _MAX(x, y); }
|
||||||
|
|
||||||
// Explicit copy and copies with conversion
|
// Explicit copy and copies with conversion
|
||||||
FI XYval<T> copy() const { return *this; }
|
FI XYval<T> copy() const { return *this; }
|
||||||
@@ -409,18 +409,18 @@ struct XYval {
|
|||||||
FI XYval<T> operator* (const XYZEval<T> &rs) { XYval<T> ls = *this; ls.x *= rs.x; ls.y *= rs.y; return ls; }
|
FI XYval<T> operator* (const XYZEval<T> &rs) { XYval<T> ls = *this; ls.x *= rs.x; ls.y *= rs.y; return ls; }
|
||||||
FI XYval<T> operator/ (const XYZEval<T> &rs) const { XYval<T> ls = *this; ls.x /= rs.x; ls.y /= rs.y; return ls; }
|
FI XYval<T> operator/ (const XYZEval<T> &rs) const { XYval<T> ls = *this; ls.x /= rs.x; ls.y /= rs.y; return ls; }
|
||||||
FI XYval<T> operator/ (const XYZEval<T> &rs) { XYval<T> ls = *this; ls.x /= rs.x; ls.y /= rs.y; return ls; }
|
FI XYval<T> operator/ (const XYZEval<T> &rs) { XYval<T> ls = *this; ls.x /= rs.x; ls.y /= rs.y; return ls; }
|
||||||
FI XYval<T> operator* (const float &v) const { XYval<T> ls = *this; ls.x *= v; ls.y *= v; return ls; }
|
FI XYval<T> operator* (const float &p) const { XYval<T> ls = *this; ls.x *= p; ls.y *= p; return ls; }
|
||||||
FI XYval<T> operator* (const float &v) { XYval<T> ls = *this; ls.x *= v; ls.y *= v; return ls; }
|
FI XYval<T> operator* (const float &p) { XYval<T> ls = *this; ls.x *= p; ls.y *= p; return ls; }
|
||||||
FI XYval<T> operator* (const int &v) const { XYval<T> ls = *this; ls.x *= v; ls.y *= v; return ls; }
|
FI XYval<T> operator* (const int &p) const { XYval<T> ls = *this; ls.x *= p; ls.y *= p; return ls; }
|
||||||
FI XYval<T> operator* (const int &v) { XYval<T> ls = *this; ls.x *= v; ls.y *= v; return ls; }
|
FI XYval<T> operator* (const int &p) { XYval<T> ls = *this; ls.x *= p; ls.y *= p; return ls; }
|
||||||
FI XYval<T> operator/ (const float &v) const { XYval<T> ls = *this; ls.x /= v; ls.y /= v; return ls; }
|
FI XYval<T> operator/ (const float &p) const { XYval<T> ls = *this; ls.x /= p; ls.y /= p; return ls; }
|
||||||
FI XYval<T> operator/ (const float &v) { XYval<T> ls = *this; ls.x /= v; ls.y /= v; return ls; }
|
FI XYval<T> operator/ (const float &p) { XYval<T> ls = *this; ls.x /= p; ls.y /= p; return ls; }
|
||||||
FI XYval<T> operator/ (const int &v) const { XYval<T> ls = *this; ls.x /= v; ls.y /= v; return ls; }
|
FI XYval<T> operator/ (const int &p) const { XYval<T> ls = *this; ls.x /= p; ls.y /= p; return ls; }
|
||||||
FI XYval<T> operator/ (const int &v) { XYval<T> ls = *this; ls.x /= v; ls.y /= v; return ls; }
|
FI XYval<T> operator/ (const int &p) { XYval<T> ls = *this; ls.x /= p; ls.y /= p; return ls; }
|
||||||
FI XYval<T> operator>>(const int &v) const { XYval<T> ls = *this; _RS(ls.x); _RS(ls.y); return ls; }
|
FI XYval<T> operator>>(const int &p) const { XYval<T> ls = *this; _RS(ls.x); _RS(ls.y); return ls; }
|
||||||
FI XYval<T> operator>>(const int &v) { XYval<T> ls = *this; _RS(ls.x); _RS(ls.y); return ls; }
|
FI XYval<T> operator>>(const int &p) { XYval<T> ls = *this; _RS(ls.x); _RS(ls.y); return ls; }
|
||||||
FI XYval<T> operator<<(const int &v) const { XYval<T> ls = *this; _LS(ls.x); _LS(ls.y); return ls; }
|
FI XYval<T> operator<<(const int &p) const { XYval<T> ls = *this; _LS(ls.x); _LS(ls.y); return ls; }
|
||||||
FI XYval<T> operator<<(const int &v) { XYval<T> ls = *this; _LS(ls.x); _LS(ls.y); return ls; }
|
FI XYval<T> operator<<(const int &p) { XYval<T> ls = *this; _LS(ls.x); _LS(ls.y); return ls; }
|
||||||
FI const XYval<T> operator-() const { XYval<T> o = *this; o.x = -x; o.y = -y; return o; }
|
FI const XYval<T> operator-() const { XYval<T> o = *this; o.x = -x; o.y = -y; return o; }
|
||||||
FI XYval<T> operator-() { XYval<T> o = *this; o.x = -x; o.y = -y; return o; }
|
FI XYval<T> operator-() { XYval<T> o = *this; o.x = -x; o.y = -y; return o; }
|
||||||
|
|
||||||
@@ -434,10 +434,10 @@ struct XYval {
|
|||||||
FI XYval<T>& operator+=(const XYZEval<T> &rs) { x += rs.x; y += rs.y; return *this; }
|
FI XYval<T>& operator+=(const XYZEval<T> &rs) { x += rs.x; y += rs.y; return *this; }
|
||||||
FI XYval<T>& operator-=(const XYZEval<T> &rs) { x -= rs.x; y -= rs.y; return *this; }
|
FI XYval<T>& operator-=(const XYZEval<T> &rs) { x -= rs.x; y -= rs.y; return *this; }
|
||||||
FI XYval<T>& operator*=(const XYZEval<T> &rs) { x *= rs.x; y *= rs.y; return *this; }
|
FI XYval<T>& operator*=(const XYZEval<T> &rs) { x *= rs.x; y *= rs.y; return *this; }
|
||||||
FI XYval<T>& operator*=(const float &v) { x *= v; y *= v; return *this; }
|
FI XYval<T>& operator*=(const float &p) { x *= p; y *= p; return *this; }
|
||||||
FI XYval<T>& operator*=(const int &v) { x *= v; y *= v; return *this; }
|
FI XYval<T>& operator*=(const int &p) { x *= p; y *= p; return *this; }
|
||||||
FI XYval<T>& operator>>=(const int &v) { _RS(x); _RS(y); return *this; }
|
FI XYval<T>& operator>>=(const int &p) { _RS(x); _RS(y); return *this; }
|
||||||
FI XYval<T>& operator<<=(const int &v) { _LS(x); _LS(y); return *this; }
|
FI XYval<T>& operator<<=(const int &p) { _LS(x); _LS(y); return *this; }
|
||||||
|
|
||||||
// Exact comparisons. For floats a "NEAR" operation may be better.
|
// Exact comparisons. For floats a "NEAR" operation may be better.
|
||||||
FI bool operator==(const XYval<T> &rs) const { return x == rs.x && y == rs.y; }
|
FI bool operator==(const XYval<T> &rs) const { return x == rs.x && y == rs.y; }
|
||||||
@@ -505,9 +505,9 @@ struct XYZval {
|
|||||||
// If any element is true then it's true
|
// If any element is true then it's true
|
||||||
FI operator bool() { return NUM_AXIS_GANG(x, || y, || z, || i, || j, || k, || u, || v, || w); }
|
FI operator bool() { return NUM_AXIS_GANG(x, || y, || z, || i, || j, || k, || u, || v, || w); }
|
||||||
// Smallest element
|
// Smallest element
|
||||||
FI T _min() const { return _MIN(NUM_AXIS_LIST(x, y, z, i, j, k, u, v, w)); }
|
FI T small() const { return _MIN(NUM_AXIS_LIST(x, y, z, i, j, k, u, v, w)); }
|
||||||
// Largest element
|
// Largest element
|
||||||
FI T _max() const { return _MAX(NUM_AXIS_LIST(x, y, z, i, j, k, u, v, w)); }
|
FI T large() const { return _MAX(NUM_AXIS_LIST(x, y, z, i, j, k, u, v, w)); }
|
||||||
|
|
||||||
// Explicit copy and copies with conversion
|
// Explicit copy and copies with conversion
|
||||||
FI XYZval<T> copy() const { XYZval<T> o = *this; return o; }
|
FI XYZval<T> copy() const { XYZval<T> o = *this; return o; }
|
||||||
@@ -567,18 +567,18 @@ struct XYZval {
|
|||||||
FI XYZval<T> operator* (const XYZEval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y, ls.z *= rs.z, ls.i *= rs.i, ls.j *= rs.j, ls.k *= rs.k, ls.u *= rs.u, ls.v *= rs.v, ls.w *= rs.w); return ls; }
|
FI XYZval<T> operator* (const XYZEval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y, ls.z *= rs.z, ls.i *= rs.i, ls.j *= rs.j, ls.k *= rs.k, ls.u *= rs.u, ls.v *= rs.v, ls.w *= rs.w); return ls; }
|
||||||
FI XYZval<T> operator/ (const XYZEval<T> &rs) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y, ls.z /= rs.z, ls.i /= rs.i, ls.j /= rs.j, ls.k /= rs.k, ls.u /= rs.u, ls.v /= rs.v, ls.w /= rs.w); return ls; }
|
FI XYZval<T> operator/ (const XYZEval<T> &rs) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y, ls.z /= rs.z, ls.i /= rs.i, ls.j /= rs.j, ls.k /= rs.k, ls.u /= rs.u, ls.v /= rs.v, ls.w /= rs.w); return ls; }
|
||||||
FI XYZval<T> operator/ (const XYZEval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y, ls.z /= rs.z, ls.i /= rs.i, ls.j /= rs.j, ls.k /= rs.k, ls.u /= rs.u, ls.v /= rs.v, ls.w /= rs.w); return ls; }
|
FI XYZval<T> operator/ (const XYZEval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y, ls.z /= rs.z, ls.i /= rs.i, ls.j /= rs.j, ls.k /= rs.k, ls.u /= rs.u, ls.v /= rs.v, ls.w /= rs.w); return ls; }
|
||||||
FI XYZval<T> operator* (const float &v) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x *= v, ls.y *= v, ls.z *= v, ls.i *= v, ls.j *= v, ls.k *= v, ls.u *= v, ls.v *= v, ls.w *= v ); return ls; }
|
FI XYZval<T> operator* (const float &p) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x *= p, ls.y *= p, ls.z *= p, ls.i *= p, ls.j *= p, ls.k *= p, ls.u *= p, ls.v *= p, ls.w *= p ); return ls; }
|
||||||
FI XYZval<T> operator* (const float &v) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x *= v, ls.y *= v, ls.z *= v, ls.i *= v, ls.j *= v, ls.k *= v, ls.u *= v, ls.v *= v, ls.w *= v ); return ls; }
|
FI XYZval<T> operator* (const float &p) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x *= p, ls.y *= p, ls.z *= p, ls.i *= p, ls.j *= p, ls.k *= p, ls.u *= p, ls.v *= p, ls.w *= p ); return ls; }
|
||||||
FI XYZval<T> operator* (const int &v) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x *= v, ls.y *= v, ls.z *= v, ls.i *= v, ls.j *= v, ls.k *= v, ls.u *= v, ls.v *= v, ls.w *= v ); return ls; }
|
FI XYZval<T> operator* (const int &p) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x *= p, ls.y *= p, ls.z *= p, ls.i *= p, ls.j *= p, ls.k *= p, ls.u *= p, ls.v *= p, ls.w *= p ); return ls; }
|
||||||
FI XYZval<T> operator* (const int &v) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x *= v, ls.y *= v, ls.z *= v, ls.i *= v, ls.j *= v, ls.k *= v, ls.u *= v, ls.v *= v, ls.w *= v ); return ls; }
|
FI XYZval<T> operator* (const int &p) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x *= p, ls.y *= p, ls.z *= p, ls.i *= p, ls.j *= p, ls.k *= p, ls.u *= p, ls.v *= p, ls.w *= p ); return ls; }
|
||||||
FI XYZval<T> operator/ (const float &v) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x /= v, ls.y /= v, ls.z /= v, ls.i /= v, ls.j /= v, ls.k /= v, ls.u /= v, ls.v /= v, ls.w /= v ); return ls; }
|
FI XYZval<T> operator/ (const float &p) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x /= p, ls.y /= p, ls.z /= p, ls.i /= p, ls.j /= p, ls.k /= p, ls.u /= p, ls.v /= p, ls.w /= p ); return ls; }
|
||||||
FI XYZval<T> operator/ (const float &v) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x /= v, ls.y /= v, ls.z /= v, ls.i /= v, ls.j /= v, ls.k /= v, ls.u /= v, ls.v /= v, ls.w /= v ); return ls; }
|
FI XYZval<T> operator/ (const float &p) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x /= p, ls.y /= p, ls.z /= p, ls.i /= p, ls.j /= p, ls.k /= p, ls.u /= p, ls.v /= p, ls.w /= p ); return ls; }
|
||||||
FI XYZval<T> operator/ (const int &v) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x /= v, ls.y /= v, ls.z /= v, ls.i /= v, ls.j /= v, ls.k /= v, ls.u /= v, ls.v /= v, ls.w /= v ); return ls; }
|
FI XYZval<T> operator/ (const int &p) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x /= p, ls.y /= p, ls.z /= p, ls.i /= p, ls.j /= p, ls.k /= p, ls.u /= p, ls.v /= p, ls.w /= p ); return ls; }
|
||||||
FI XYZval<T> operator/ (const int &v) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x /= v, ls.y /= v, ls.z /= v, ls.i /= v, ls.j /= v, ls.k /= v, ls.u /= v, ls.v /= v, ls.w /= v ); return ls; }
|
FI XYZval<T> operator/ (const int &p) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x /= p, ls.y /= p, ls.z /= p, ls.i /= p, ls.j /= p, ls.k /= p, ls.u /= p, ls.v /= p, ls.w /= p ); return ls; }
|
||||||
FI XYZval<T> operator>>(const int &v) const { XYZval<T> ls = *this; NUM_AXIS_CODE(_RS(ls.x), _RS(ls.y), _RS(ls.z), _RS(ls.i), _RS(ls.j), _RS(ls.k), _RS(ls.u), _RS(ls.v), _RS(ls.w) ); return ls; }
|
FI XYZval<T> operator>>(const int &p) const { XYZval<T> ls = *this; NUM_AXIS_CODE(_RS(ls.x), _RS(ls.y), _RS(ls.z), _RS(ls.i), _RS(ls.j), _RS(ls.k), _RS(ls.u), _RS(ls.v), _RS(ls.w) ); return ls; }
|
||||||
FI XYZval<T> operator>>(const int &v) { XYZval<T> ls = *this; NUM_AXIS_CODE(_RS(ls.x), _RS(ls.y), _RS(ls.z), _RS(ls.i), _RS(ls.j), _RS(ls.k), _RS(ls.u), _RS(ls.v), _RS(ls.w) ); return ls; }
|
FI XYZval<T> operator>>(const int &p) { XYZval<T> ls = *this; NUM_AXIS_CODE(_RS(ls.x), _RS(ls.y), _RS(ls.z), _RS(ls.i), _RS(ls.j), _RS(ls.k), _RS(ls.u), _RS(ls.v), _RS(ls.w) ); return ls; }
|
||||||
FI XYZval<T> operator<<(const int &v) const { XYZval<T> ls = *this; NUM_AXIS_CODE(_LS(ls.x), _LS(ls.y), _LS(ls.z), _LS(ls.i), _LS(ls.j), _LS(ls.k), _LS(ls.u), _LS(ls.v), _LS(ls.w) ); return ls; }
|
FI XYZval<T> operator<<(const int &p) const { XYZval<T> ls = *this; NUM_AXIS_CODE(_LS(ls.x), _LS(ls.y), _LS(ls.z), _LS(ls.i), _LS(ls.j), _LS(ls.k), _LS(ls.u), _LS(ls.v), _LS(ls.w) ); return ls; }
|
||||||
FI XYZval<T> operator<<(const int &v) { XYZval<T> ls = *this; NUM_AXIS_CODE(_LS(ls.x), _LS(ls.y), _LS(ls.z), _LS(ls.i), _LS(ls.j), _LS(ls.k), _LS(ls.u), _LS(ls.v), _LS(ls.w) ); return ls; }
|
FI XYZval<T> operator<<(const int &p) { XYZval<T> ls = *this; NUM_AXIS_CODE(_LS(ls.x), _LS(ls.y), _LS(ls.z), _LS(ls.i), _LS(ls.j), _LS(ls.k), _LS(ls.u), _LS(ls.v), _LS(ls.w) ); return ls; }
|
||||||
FI const XYZval<T> operator-() const { XYZval<T> o = *this; NUM_AXIS_CODE(o.x = -x, o.y = -y, o.z = -z, o.i = -i, o.j = -j, o.k = -k, o.u = -u, o.v = -v, o.w = -w); return o; }
|
FI const XYZval<T> operator-() const { XYZval<T> o = *this; NUM_AXIS_CODE(o.x = -x, o.y = -y, o.z = -z, o.i = -i, o.j = -j, o.k = -k, o.u = -u, o.v = -v, o.w = -w); return o; }
|
||||||
FI XYZval<T> operator-() { XYZval<T> o = *this; NUM_AXIS_CODE(o.x = -x, o.y = -y, o.z = -z, o.i = -i, o.j = -j, o.k = -k, o.u = -u, o.v = -v, o.w = -w); return o; }
|
FI XYZval<T> operator-() { XYZval<T> o = *this; NUM_AXIS_CODE(o.x = -x, o.y = -y, o.z = -z, o.i = -i, o.j = -j, o.k = -k, o.u = -u, o.v = -v, o.w = -w); return o; }
|
||||||
|
|
||||||
@@ -595,10 +595,10 @@ struct XYZval {
|
|||||||
FI XYZval<T>& operator-=(const XYZEval<T> &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y, z -= rs.z, i -= rs.i, j -= rs.j, k -= rs.k, u -= rs.u, v -= rs.v, w -= rs.w); return *this; }
|
FI XYZval<T>& operator-=(const XYZEval<T> &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y, z -= rs.z, i -= rs.i, j -= rs.j, k -= rs.k, u -= rs.u, v -= rs.v, w -= rs.w); return *this; }
|
||||||
FI XYZval<T>& operator*=(const XYZEval<T> &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y, z *= rs.z, i *= rs.i, j *= rs.j, k *= rs.k, u *= rs.u, v *= rs.v, w *= rs.w); return *this; }
|
FI XYZval<T>& operator*=(const XYZEval<T> &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y, z *= rs.z, i *= rs.i, j *= rs.j, k *= rs.k, u *= rs.u, v *= rs.v, w *= rs.w); return *this; }
|
||||||
FI XYZval<T>& operator/=(const XYZEval<T> &rs) { NUM_AXIS_CODE(x /= rs.x, y /= rs.y, z /= rs.z, i /= rs.i, j /= rs.j, k /= rs.k, u /= rs.u, v /= rs.v, w /= rs.w); return *this; }
|
FI XYZval<T>& operator/=(const XYZEval<T> &rs) { NUM_AXIS_CODE(x /= rs.x, y /= rs.y, z /= rs.z, i /= rs.i, j /= rs.j, k /= rs.k, u /= rs.u, v /= rs.v, w /= rs.w); return *this; }
|
||||||
FI XYZval<T>& operator*=(const float &v) { NUM_AXIS_CODE(x *= v, y *= v, z *= v, i *= v, j *= v, k *= v, u *= v, v *= v, w *= v); return *this; }
|
FI XYZval<T>& operator*=(const float &p) { NUM_AXIS_CODE(x *= p, y *= p, z *= p, i *= p, j *= p, k *= p, u *= p, v *= p, w *= p); return *this; }
|
||||||
FI XYZval<T>& operator*=(const int &v) { NUM_AXIS_CODE(x *= v, y *= v, z *= v, i *= v, j *= v, k *= v, u *= v, v *= v, w *= v); return *this; }
|
FI XYZval<T>& operator*=(const int &p) { NUM_AXIS_CODE(x *= p, y *= p, z *= p, i *= p, j *= p, k *= p, u *= p, v *= p, w *= p); return *this; }
|
||||||
FI XYZval<T>& operator>>=(const int &v) { NUM_AXIS_CODE(_RS(x), _RS(y), _RS(z), _RS(i), _RS(j), _RS(k), _RS(u), _RS(v), _RS(w)); return *this; }
|
FI XYZval<T>& operator>>=(const int &p) { NUM_AXIS_CODE(_RS(x), _RS(y), _RS(z), _RS(i), _RS(j), _RS(k), _RS(u), _RS(v), _RS(w)); return *this; }
|
||||||
FI XYZval<T>& operator<<=(const int &v) { NUM_AXIS_CODE(_LS(x), _LS(y), _LS(z), _LS(i), _LS(j), _LS(k), _LS(u), _LS(v), _LS(w)); return *this; }
|
FI XYZval<T>& operator<<=(const int &p) { NUM_AXIS_CODE(_LS(x), _LS(y), _LS(z), _LS(i), _LS(j), _LS(k), _LS(u), _LS(v), _LS(w)); return *this; }
|
||||||
|
|
||||||
// Exact comparisons. For floats a "NEAR" operation may be better.
|
// Exact comparisons. For floats a "NEAR" operation may be better.
|
||||||
FI bool operator==(const XYZEval<T> &rs) const { return true NUM_AXIS_GANG(&& x == rs.x, && y == rs.y, && z == rs.z, && i == rs.i, && j == rs.j, && k == rs.k, && u == rs.u, && v == rs.v, && w == rs.w); }
|
FI bool operator==(const XYZEval<T> &rs) const { return true NUM_AXIS_GANG(&& x == rs.x, && y == rs.y, && z == rs.z, && i == rs.i, && j == rs.j, && k == rs.k, && u == rs.u, && v == rs.v, && w == rs.w); }
|
||||||
@@ -654,15 +654,15 @@ struct XYZEval {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Length reduced to one dimension
|
// Length reduced to one dimension
|
||||||
FI T magnitude() const { return (T)sqrtf(LOGICAL_AXIS_GANG(+ e*e, + x*x, + y*y, + z*z, + i*i, + j*j, + k*k, + u*u, + v*v, + w*w)); }
|
FI T magnitude() const { return (T)sqrtf(LOGICAL_AXIS_GANG(+ e*e, + x*x, + y*y, + z*z, + i*i, + j*j, + k*k, + u*u, + v*v, + w*w)); }
|
||||||
// Pointer to the data as a simple array
|
// Pointer to the data as a simple array
|
||||||
FI operator T* () { return pos; }
|
FI operator T* () { return pos; }
|
||||||
// If any element is true then it's true
|
// If any element is true then it's true
|
||||||
FI operator bool() { return 0 LOGICAL_AXIS_GANG(|| e, || x, || y, || z, || i, || j, || k, || u, || v, || w); }
|
FI operator bool() { return 0 LOGICAL_AXIS_GANG(|| e, || x, || y, || z, || i, || j, || k, || u, || v, || w); }
|
||||||
// Smallest element
|
// Smallest element
|
||||||
FI T _min() const { return _MIN(LOGICAL_AXIS_LIST(e, x, y, z, i, j, k, u, v, w)); }
|
FI T small() const { return _MIN(LOGICAL_AXIS_LIST(e, x, y, z, i, j, k, u, v, w)); }
|
||||||
// Largest element
|
// Largest element
|
||||||
FI T _max() const { return _MAX(LOGICAL_AXIS_LIST(e, x, y, z, i, j, k, u, v, w)); }
|
FI T large() const { return _MAX(LOGICAL_AXIS_LIST(e, x, y, z, i, j, k, u, v, w)); }
|
||||||
|
|
||||||
// Explicit copy and copies with conversion
|
// Explicit copy and copies with conversion
|
||||||
FI XYZEval<T> copy() const { XYZEval<T> v = *this; return v; }
|
FI XYZEval<T> copy() const { XYZEval<T> v = *this; return v; }
|
||||||
@@ -688,76 +688,76 @@ struct XYZEval {
|
|||||||
FI operator const XYZval<T>&() const { return *(const XYZval<T>*)this; }
|
FI operator const XYZval<T>&() const { return *(const XYZval<T>*)this; }
|
||||||
|
|
||||||
// Accessor via an AxisEnum (or any integer) [index]
|
// Accessor via an AxisEnum (or any integer) [index]
|
||||||
FI T& operator[](const int n) { return pos[n]; }
|
FI T& operator[](const int n) { return pos[n]; }
|
||||||
FI const T& operator[](const int n) const { return pos[n]; }
|
FI const T& operator[](const int n) const { return pos[n]; }
|
||||||
|
|
||||||
// Assignment operator overrides do the expected thing
|
// Assignment operator overrides do the expected thing
|
||||||
FI XYZEval<T>& operator= (const T v) { set(LOGICAL_AXIS_LIST_1(v)); return *this; }
|
FI XYZEval<T>& operator= (const T v) { set(LOGICAL_AXIS_LIST_1(v)); return *this; }
|
||||||
FI XYZEval<T>& operator= (const XYval<T> &rs) { set(rs.x, rs.y); return *this; }
|
FI XYZEval<T>& operator= (const XYval<T> &rs) { set(rs.x, rs.y); return *this; }
|
||||||
FI XYZEval<T>& operator= (const XYZval<T> &rs) { set(NUM_AXIS_ELEM(rs)); return *this; }
|
FI XYZEval<T>& operator= (const XYZval<T> &rs) { set(NUM_AXIS_ELEM(rs)); return *this; }
|
||||||
|
|
||||||
// Override other operators to get intuitive behaviors
|
// Override other operators to get intuitive behaviors
|
||||||
FI XYZEval<T> operator+ (const XYval<T> &rs) const { XYZEval<T> ls = *this; ls.x += rs.x; ls.y += rs.y; return ls; }
|
FI XYZEval<T> operator+ (const XYval<T> &rs) const { XYZEval<T> ls = *this; ls.x += rs.x; ls.y += rs.y; return ls; }
|
||||||
FI XYZEval<T> operator+ (const XYval<T> &rs) { XYZEval<T> ls = *this; ls.x += rs.x; ls.y += rs.y; return ls; }
|
FI XYZEval<T> operator+ (const XYval<T> &rs) { XYZEval<T> ls = *this; ls.x += rs.x; ls.y += rs.y; return ls; }
|
||||||
FI XYZEval<T> operator- (const XYval<T> &rs) const { XYZEval<T> ls = *this; ls.x -= rs.x; ls.y -= rs.y; return ls; }
|
FI XYZEval<T> operator- (const XYval<T> &rs) const { XYZEval<T> ls = *this; ls.x -= rs.x; ls.y -= rs.y; return ls; }
|
||||||
FI XYZEval<T> operator- (const XYval<T> &rs) { XYZEval<T> ls = *this; ls.x -= rs.x; ls.y -= rs.y; return ls; }
|
FI XYZEval<T> operator- (const XYval<T> &rs) { XYZEval<T> ls = *this; ls.x -= rs.x; ls.y -= rs.y; return ls; }
|
||||||
FI XYZEval<T> operator* (const XYval<T> &rs) const { XYZEval<T> ls = *this; ls.x *= rs.x; ls.y *= rs.y; return ls; }
|
FI XYZEval<T> operator* (const XYval<T> &rs) const { XYZEval<T> ls = *this; ls.x *= rs.x; ls.y *= rs.y; return ls; }
|
||||||
FI XYZEval<T> operator* (const XYval<T> &rs) { XYZEval<T> ls = *this; ls.x *= rs.x; ls.y *= rs.y; return ls; }
|
FI XYZEval<T> operator* (const XYval<T> &rs) { XYZEval<T> ls = *this; ls.x *= rs.x; ls.y *= rs.y; return ls; }
|
||||||
FI XYZEval<T> operator/ (const XYval<T> &rs) const { XYZEval<T> ls = *this; ls.x /= rs.x; ls.y /= rs.y; return ls; }
|
FI XYZEval<T> operator/ (const XYval<T> &rs) const { XYZEval<T> ls = *this; ls.x /= rs.x; ls.y /= rs.y; return ls; }
|
||||||
FI XYZEval<T> operator/ (const XYval<T> &rs) { XYZEval<T> ls = *this; ls.x /= rs.x; ls.y /= rs.y; return ls; }
|
FI XYZEval<T> operator/ (const XYval<T> &rs) { XYZEval<T> ls = *this; ls.x /= rs.x; ls.y /= rs.y; return ls; }
|
||||||
FI XYZEval<T> operator+ (const XYZval<T> &rs) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x += rs.x, ls.y += rs.y, ls.z += rs.z, ls.i += rs.i, ls.j += rs.j, ls.k += rs.k, ls.u += rs.u, ls.v += rs.v, ls.w += rs.w); return ls; }
|
FI XYZEval<T> operator+ (const XYZval<T> &rs) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x += rs.x, ls.y += rs.y, ls.z += rs.z, ls.i += rs.i, ls.j += rs.j, ls.k += rs.k, ls.u += rs.u, ls.v += rs.v, ls.w += rs.w); return ls; }
|
||||||
FI XYZEval<T> operator+ (const XYZval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x += rs.x, ls.y += rs.y, ls.z += rs.z, ls.i += rs.i, ls.j += rs.j, ls.k += rs.k, ls.u += rs.u, ls.v += rs.v, ls.w += rs.w); return ls; }
|
FI XYZEval<T> operator+ (const XYZval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x += rs.x, ls.y += rs.y, ls.z += rs.z, ls.i += rs.i, ls.j += rs.j, ls.k += rs.k, ls.u += rs.u, ls.v += rs.v, ls.w += rs.w); return ls; }
|
||||||
FI XYZEval<T> operator- (const XYZval<T> &rs) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y, ls.z -= rs.z, ls.i -= rs.i, ls.j -= rs.j, ls.k -= rs.k, ls.u -= rs.u, ls.v -= rs.v, ls.w -= rs.w); return ls; }
|
FI XYZEval<T> operator- (const XYZval<T> &rs) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y, ls.z -= rs.z, ls.i -= rs.i, ls.j -= rs.j, ls.k -= rs.k, ls.u -= rs.u, ls.v -= rs.v, ls.w -= rs.w); return ls; }
|
||||||
FI XYZEval<T> operator- (const XYZval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y, ls.z -= rs.z, ls.i -= rs.i, ls.j -= rs.j, ls.k -= rs.k, ls.u -= rs.u, ls.v -= rs.v, ls.w -= rs.w); return ls; }
|
FI XYZEval<T> operator- (const XYZval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y, ls.z -= rs.z, ls.i -= rs.i, ls.j -= rs.j, ls.k -= rs.k, ls.u -= rs.u, ls.v -= rs.v, ls.w -= rs.w); return ls; }
|
||||||
FI XYZEval<T> operator* (const XYZval<T> &rs) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y, ls.z *= rs.z, ls.i *= rs.i, ls.j *= rs.j, ls.k *= rs.k, ls.u *= rs.u, ls.v *= rs.v, ls.w *= rs.w); return ls; }
|
FI XYZEval<T> operator* (const XYZval<T> &rs) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y, ls.z *= rs.z, ls.i *= rs.i, ls.j *= rs.j, ls.k *= rs.k, ls.u *= rs.u, ls.v *= rs.v, ls.w *= rs.w); return ls; }
|
||||||
FI XYZEval<T> operator* (const XYZval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y, ls.z *= rs.z, ls.i *= rs.i, ls.j *= rs.j, ls.k *= rs.k, ls.u *= rs.u, ls.v *= rs.v, ls.w *= rs.w); return ls; }
|
FI XYZEval<T> operator* (const XYZval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y, ls.z *= rs.z, ls.i *= rs.i, ls.j *= rs.j, ls.k *= rs.k, ls.u *= rs.u, ls.v *= rs.v, ls.w *= rs.w); return ls; }
|
||||||
FI XYZEval<T> operator/ (const XYZval<T> &rs) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y, ls.z /= rs.z, ls.i /= rs.i, ls.j /= rs.j, ls.k /= rs.k, ls.u /= rs.u, ls.v /= rs.v, ls.w /= rs.w); return ls; }
|
FI XYZEval<T> operator/ (const XYZval<T> &rs) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y, ls.z /= rs.z, ls.i /= rs.i, ls.j /= rs.j, ls.k /= rs.k, ls.u /= rs.u, ls.v /= rs.v, ls.w /= rs.w); return ls; }
|
||||||
FI XYZEval<T> operator/ (const XYZval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y, ls.z /= rs.z, ls.i /= rs.i, ls.j /= rs.j, ls.k /= rs.k, ls.u /= rs.u, ls.v /= rs.v, ls.w /= rs.w); return ls; }
|
FI XYZEval<T> operator/ (const XYZval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y, ls.z /= rs.z, ls.i /= rs.i, ls.j /= rs.j, ls.k /= rs.k, ls.u /= rs.u, ls.v /= rs.v, ls.w /= rs.w); return ls; }
|
||||||
FI XYZEval<T> operator+ (const XYZEval<T> &rs) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e += rs.e, ls.x += rs.x, ls.y += rs.y, ls.z += rs.z, ls.i += rs.i, ls.j += rs.j, ls.k += rs.k, ls.u += rs.u, ls.v += rs.v, ls.w += rs.w); return ls; }
|
FI XYZEval<T> operator+ (const XYZEval<T> &rs) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e += rs.e, ls.x += rs.x, ls.y += rs.y, ls.z += rs.z, ls.i += rs.i, ls.j += rs.j, ls.k += rs.k, ls.u += rs.u, ls.v += rs.v, ls.w += rs.w); return ls; }
|
||||||
FI XYZEval<T> operator+ (const XYZEval<T> &rs) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e += rs.e, ls.x += rs.x, ls.y += rs.y, ls.z += rs.z, ls.i += rs.i, ls.j += rs.j, ls.k += rs.k, ls.u += rs.u, ls.v += rs.v, ls.w += rs.w); return ls; }
|
FI XYZEval<T> operator+ (const XYZEval<T> &rs) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e += rs.e, ls.x += rs.x, ls.y += rs.y, ls.z += rs.z, ls.i += rs.i, ls.j += rs.j, ls.k += rs.k, ls.u += rs.u, ls.v += rs.v, ls.w += rs.w); return ls; }
|
||||||
FI XYZEval<T> operator- (const XYZEval<T> &rs) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e -= rs.e, ls.x -= rs.x, ls.y -= rs.y, ls.z -= rs.z, ls.i -= rs.i, ls.j -= rs.j, ls.k -= rs.k, ls.u -= rs.u, ls.v -= rs.v, ls.w -= rs.w); return ls; }
|
FI XYZEval<T> operator- (const XYZEval<T> &rs) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e -= rs.e, ls.x -= rs.x, ls.y -= rs.y, ls.z -= rs.z, ls.i -= rs.i, ls.j -= rs.j, ls.k -= rs.k, ls.u -= rs.u, ls.v -= rs.v, ls.w -= rs.w); return ls; }
|
||||||
FI XYZEval<T> operator- (const XYZEval<T> &rs) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e -= rs.e, ls.x -= rs.x, ls.y -= rs.y, ls.z -= rs.z, ls.i -= rs.i, ls.j -= rs.j, ls.k -= rs.k, ls.u -= rs.u, ls.v -= rs.v, ls.w -= rs.w); return ls; }
|
FI XYZEval<T> operator- (const XYZEval<T> &rs) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e -= rs.e, ls.x -= rs.x, ls.y -= rs.y, ls.z -= rs.z, ls.i -= rs.i, ls.j -= rs.j, ls.k -= rs.k, ls.u -= rs.u, ls.v -= rs.v, ls.w -= rs.w); return ls; }
|
||||||
FI XYZEval<T> operator* (const XYZEval<T> &rs) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e *= rs.e, ls.x *= rs.x, ls.y *= rs.y, ls.z *= rs.z, ls.i *= rs.i, ls.j *= rs.j, ls.k *= rs.k, ls.u *= rs.u, ls.v *= rs.v, ls.w *= rs.w); return ls; }
|
FI XYZEval<T> operator* (const XYZEval<T> &rs) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e *= rs.e, ls.x *= rs.x, ls.y *= rs.y, ls.z *= rs.z, ls.i *= rs.i, ls.j *= rs.j, ls.k *= rs.k, ls.u *= rs.u, ls.v *= rs.v, ls.w *= rs.w); return ls; }
|
||||||
FI XYZEval<T> operator* (const XYZEval<T> &rs) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e *= rs.e, ls.x *= rs.x, ls.y *= rs.y, ls.z *= rs.z, ls.i *= rs.i, ls.j *= rs.j, ls.k *= rs.k, ls.u *= rs.u, ls.v *= rs.v, ls.w *= rs.w); return ls; }
|
FI XYZEval<T> operator* (const XYZEval<T> &rs) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e *= rs.e, ls.x *= rs.x, ls.y *= rs.y, ls.z *= rs.z, ls.i *= rs.i, ls.j *= rs.j, ls.k *= rs.k, ls.u *= rs.u, ls.v *= rs.v, ls.w *= rs.w); return ls; }
|
||||||
FI XYZEval<T> operator/ (const XYZEval<T> &rs) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e /= rs.e, ls.x /= rs.x, ls.y /= rs.y, ls.z /= rs.z, ls.i /= rs.i, ls.j /= rs.j, ls.k /= rs.k, ls.u /= rs.u, ls.v /= rs.v, ls.w /= rs.w); return ls; }
|
FI XYZEval<T> operator/ (const XYZEval<T> &rs) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e /= rs.e, ls.x /= rs.x, ls.y /= rs.y, ls.z /= rs.z, ls.i /= rs.i, ls.j /= rs.j, ls.k /= rs.k, ls.u /= rs.u, ls.v /= rs.v, ls.w /= rs.w); return ls; }
|
||||||
FI XYZEval<T> operator/ (const XYZEval<T> &rs) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e /= rs.e, ls.x /= rs.x, ls.y /= rs.y, ls.z /= rs.z, ls.i /= rs.i, ls.j /= rs.j, ls.k /= rs.k, ls.u /= rs.u, ls.v /= rs.v, ls.w /= rs.w); return ls; }
|
FI XYZEval<T> operator/ (const XYZEval<T> &rs) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e /= rs.e, ls.x /= rs.x, ls.y /= rs.y, ls.z /= rs.z, ls.i /= rs.i, ls.j /= rs.j, ls.k /= rs.k, ls.u /= rs.u, ls.v /= rs.v, ls.w /= rs.w); return ls; }
|
||||||
FI XYZEval<T> operator* (const float &v) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e *= v, ls.x *= v, ls.y *= v, ls.z *= v, ls.i *= v, ls.j *= v, ls.k *= v, ls.u *= v, ls.v *= v, ls.w *= v ); return ls; }
|
FI XYZEval<T> operator* (const float &p) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e *= p, ls.x *= p, ls.y *= p, ls.z *= p, ls.i *= p, ls.j *= p, ls.k *= p, ls.u *= p, ls.v *= p, ls.w *= p ); return ls; }
|
||||||
FI XYZEval<T> operator* (const float &v) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e *= v, ls.x *= v, ls.y *= v, ls.z *= v, ls.i *= v, ls.j *= v, ls.k *= v, ls.u *= v, ls.v *= v, ls.w *= v ); return ls; }
|
FI XYZEval<T> operator* (const float &p) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e *= p, ls.x *= p, ls.y *= p, ls.z *= p, ls.i *= p, ls.j *= p, ls.k *= p, ls.u *= p, ls.v *= p, ls.w *= p ); return ls; }
|
||||||
FI XYZEval<T> operator* (const int &v) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e *= v, ls.x *= v, ls.y *= v, ls.z *= v, ls.i *= v, ls.j *= v, ls.k *= v, ls.u *= v, ls.v *= v, ls.w *= v ); return ls; }
|
FI XYZEval<T> operator* (const int &p) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e *= p, ls.x *= p, ls.y *= p, ls.z *= p, ls.i *= p, ls.j *= p, ls.k *= p, ls.u *= p, ls.v *= p, ls.w *= p ); return ls; }
|
||||||
FI XYZEval<T> operator* (const int &v) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e *= v, ls.x *= v, ls.y *= v, ls.z *= v, ls.i *= v, ls.j *= v, ls.k *= v, ls.u *= v, ls.v *= v, ls.w *= v ); return ls; }
|
FI XYZEval<T> operator* (const int &p) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e *= p, ls.x *= p, ls.y *= p, ls.z *= p, ls.i *= p, ls.j *= p, ls.k *= p, ls.u *= p, ls.v *= p, ls.w *= p ); return ls; }
|
||||||
FI XYZEval<T> operator/ (const float &v) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e /= v, ls.x /= v, ls.y /= v, ls.z /= v, ls.i /= v, ls.j /= v, ls.k /= v, ls.u /= v, ls.v /= v, ls.w /= v ); return ls; }
|
FI XYZEval<T> operator/ (const float &p) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e /= p, ls.x /= p, ls.y /= p, ls.z /= p, ls.i /= p, ls.j /= p, ls.k /= p, ls.u /= p, ls.v /= p, ls.w /= p ); return ls; }
|
||||||
FI XYZEval<T> operator/ (const float &v) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e /= v, ls.x /= v, ls.y /= v, ls.z /= v, ls.i /= v, ls.j /= v, ls.k /= v, ls.u /= v, ls.v /= v, ls.w /= v ); return ls; }
|
FI XYZEval<T> operator/ (const float &p) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e /= p, ls.x /= p, ls.y /= p, ls.z /= p, ls.i /= p, ls.j /= p, ls.k /= p, ls.u /= p, ls.v /= p, ls.w /= p ); return ls; }
|
||||||
FI XYZEval<T> operator/ (const int &v) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e /= v, ls.x /= v, ls.y /= v, ls.z /= v, ls.i /= v, ls.j /= v, ls.k /= v, ls.u /= v, ls.v /= v, ls.w /= v ); return ls; }
|
FI XYZEval<T> operator/ (const int &p) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e /= p, ls.x /= p, ls.y /= p, ls.z /= p, ls.i /= p, ls.j /= p, ls.k /= p, ls.u /= p, ls.v /= p, ls.w /= p ); return ls; }
|
||||||
FI XYZEval<T> operator/ (const int &v) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e /= v, ls.x /= v, ls.y /= v, ls.z /= v, ls.i /= v, ls.j /= v, ls.k /= v, ls.u /= v, ls.v /= v, ls.w /= v ); return ls; }
|
FI XYZEval<T> operator/ (const int &p) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e /= p, ls.x /= p, ls.y /= p, ls.z /= p, ls.i /= p, ls.j /= p, ls.k /= p, ls.u /= p, ls.v /= p, ls.w /= p ); return ls; }
|
||||||
FI XYZEval<T> operator>>(const int &v) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(_RS(ls.e), _RS(ls.x), _RS(ls.y), _RS(ls.z), _RS(ls.i), _RS(ls.j), _RS(ls.k), _RS(ls.u), _RS(ls.v), _RS(ls.w) ); return ls; }
|
FI XYZEval<T> operator>>(const int &p) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(_RS(ls.e), _RS(ls.x), _RS(ls.y), _RS(ls.z), _RS(ls.i), _RS(ls.j), _RS(ls.k), _RS(ls.u), _RS(ls.v), _RS(ls.w) ); return ls; }
|
||||||
FI XYZEval<T> operator>>(const int &v) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(_RS(ls.e), _RS(ls.x), _RS(ls.y), _RS(ls.z), _RS(ls.i), _RS(ls.j), _RS(ls.k), _RS(ls.u), _RS(ls.v), _RS(ls.w) ); return ls; }
|
FI XYZEval<T> operator>>(const int &p) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(_RS(ls.e), _RS(ls.x), _RS(ls.y), _RS(ls.z), _RS(ls.i), _RS(ls.j), _RS(ls.k), _RS(ls.u), _RS(ls.v), _RS(ls.w) ); return ls; }
|
||||||
FI XYZEval<T> operator<<(const int &v) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(_LS(ls.e), _LS(ls.x), _LS(ls.y), _LS(ls.z), _LS(ls.i), _LS(ls.j), _LS(ls.k), _LS(ls.u), _LS(ls.v), _LS(ls.w) ); return ls; }
|
FI XYZEval<T> operator<<(const int &p) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(_LS(ls.e), _LS(ls.x), _LS(ls.y), _LS(ls.z), _LS(ls.i), _LS(ls.j), _LS(ls.k), _LS(ls.u), _LS(ls.v), _LS(ls.w) ); return ls; }
|
||||||
FI XYZEval<T> operator<<(const int &v) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(_LS(ls.e), _LS(ls.x), _LS(ls.y), _LS(ls.z), _LS(ls.i), _LS(ls.j), _LS(ls.k), _LS(ls.u), _LS(ls.v), _LS(ls.w) ); return ls; }
|
FI XYZEval<T> operator<<(const int &p) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(_LS(ls.e), _LS(ls.x), _LS(ls.y), _LS(ls.z), _LS(ls.i), _LS(ls.j), _LS(ls.k), _LS(ls.u), _LS(ls.v), _LS(ls.w) ); return ls; }
|
||||||
FI const XYZEval<T> operator-() const { return LOGICAL_AXIS_ARRAY(-e, -x, -y, -z, -i, -j, -k, -u, -v, -w); }
|
FI const XYZEval<T> operator-() const { return LOGICAL_AXIS_ARRAY(-e, -x, -y, -z, -i, -j, -k, -u, -v, -w); }
|
||||||
FI XYZEval<T> operator-() { return LOGICAL_AXIS_ARRAY(-e, -x, -y, -z, -i, -j, -k, -u, -v, -w); }
|
FI XYZEval<T> operator-() { return LOGICAL_AXIS_ARRAY(-e, -x, -y, -z, -i, -j, -k, -u, -v, -w); }
|
||||||
|
|
||||||
// Modifier operators
|
// Modifier operators
|
||||||
FI XYZEval<T>& operator+=(const XYval<T> &rs) { x += rs.x; y += rs.y; return *this; }
|
FI XYZEval<T>& operator+=(const XYval<T> &rs) { x += rs.x; y += rs.y; return *this; }
|
||||||
FI XYZEval<T>& operator-=(const XYval<T> &rs) { x -= rs.x; y -= rs.y; return *this; }
|
FI XYZEval<T>& operator-=(const XYval<T> &rs) { x -= rs.x; y -= rs.y; return *this; }
|
||||||
FI XYZEval<T>& operator*=(const XYval<T> &rs) { x *= rs.x; y *= rs.y; return *this; }
|
FI XYZEval<T>& operator*=(const XYval<T> &rs) { x *= rs.x; y *= rs.y; return *this; }
|
||||||
FI XYZEval<T>& operator/=(const XYval<T> &rs) { x /= rs.x; y /= rs.y; return *this; }
|
FI XYZEval<T>& operator/=(const XYval<T> &rs) { x /= rs.x; y /= rs.y; return *this; }
|
||||||
FI XYZEval<T>& operator+=(const XYZval<T> &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y, z += rs.z, i += rs.i, j += rs.j, k += rs.k, u += rs.u, v += rs.v, w += rs.w); return *this; }
|
FI XYZEval<T>& operator+=(const XYZval<T> &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y, z += rs.z, i += rs.i, j += rs.j, k += rs.k, u += rs.u, v += rs.v, w += rs.w); return *this; }
|
||||||
FI XYZEval<T>& operator-=(const XYZval<T> &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y, z -= rs.z, i -= rs.i, j -= rs.j, k -= rs.k, u -= rs.u, v -= rs.v, w -= rs.w); return *this; }
|
FI XYZEval<T>& operator-=(const XYZval<T> &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y, z -= rs.z, i -= rs.i, j -= rs.j, k -= rs.k, u -= rs.u, v -= rs.v, w -= rs.w); return *this; }
|
||||||
FI XYZEval<T>& operator*=(const XYZval<T> &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y, z *= rs.z, i *= rs.i, j *= rs.j, k *= rs.k, u *= rs.u, v *= rs.v, w *= rs.w); return *this; }
|
FI XYZEval<T>& operator*=(const XYZval<T> &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y, z *= rs.z, i *= rs.i, j *= rs.j, k *= rs.k, u *= rs.u, v *= rs.v, w *= rs.w); return *this; }
|
||||||
FI XYZEval<T>& operator/=(const XYZval<T> &rs) { NUM_AXIS_CODE(x /= rs.x, y /= rs.y, z /= rs.z, i /= rs.i, j /= rs.j, k /= rs.k, u /= rs.u, v /= rs.v, w /= rs.w); return *this; }
|
FI XYZEval<T>& operator/=(const XYZval<T> &rs) { NUM_AXIS_CODE(x /= rs.x, y /= rs.y, z /= rs.z, i /= rs.i, j /= rs.j, k /= rs.k, u /= rs.u, v /= rs.v, w /= rs.w); return *this; }
|
||||||
FI XYZEval<T>& operator+=(const XYZEval<T> &rs) { LOGICAL_AXIS_CODE(e += rs.e, x += rs.x, y += rs.y, z += rs.z, i += rs.i, j += rs.j, k += rs.k, u += rs.u, v += rs.v, w += rs.w); return *this; }
|
FI XYZEval<T>& operator+=(const XYZEval<T> &rs) { LOGICAL_AXIS_CODE(e += rs.e, x += rs.x, y += rs.y, z += rs.z, i += rs.i, j += rs.j, k += rs.k, u += rs.u, v += rs.v, w += rs.w); return *this; }
|
||||||
FI XYZEval<T>& operator-=(const XYZEval<T> &rs) { LOGICAL_AXIS_CODE(e -= rs.e, x -= rs.x, y -= rs.y, z -= rs.z, i -= rs.i, j -= rs.j, k -= rs.k, u -= rs.u, v -= rs.v, w -= rs.w); return *this; }
|
FI XYZEval<T>& operator-=(const XYZEval<T> &rs) { LOGICAL_AXIS_CODE(e -= rs.e, x -= rs.x, y -= rs.y, z -= rs.z, i -= rs.i, j -= rs.j, k -= rs.k, u -= rs.u, v -= rs.v, w -= rs.w); return *this; }
|
||||||
FI XYZEval<T>& operator*=(const XYZEval<T> &rs) { LOGICAL_AXIS_CODE(e *= rs.e, x *= rs.x, y *= rs.y, z *= rs.z, i *= rs.i, j *= rs.j, k *= rs.k, u *= rs.u, v *= rs.v, w *= rs.w); return *this; }
|
FI XYZEval<T>& operator*=(const XYZEval<T> &rs) { LOGICAL_AXIS_CODE(e *= rs.e, x *= rs.x, y *= rs.y, z *= rs.z, i *= rs.i, j *= rs.j, k *= rs.k, u *= rs.u, v *= rs.v, w *= rs.w); return *this; }
|
||||||
FI XYZEval<T>& operator/=(const XYZEval<T> &rs) { LOGICAL_AXIS_CODE(e /= rs.e, x /= rs.x, y /= rs.y, z /= rs.z, i /= rs.i, j /= rs.j, k /= rs.k, u /= rs.u, v /= rs.v, w /= rs.w); return *this; }
|
FI XYZEval<T>& operator/=(const XYZEval<T> &rs) { LOGICAL_AXIS_CODE(e /= rs.e, x /= rs.x, y /= rs.y, z /= rs.z, i /= rs.i, j /= rs.j, k /= rs.k, u /= rs.u, v /= rs.v, w /= rs.w); return *this; }
|
||||||
FI XYZEval<T>& operator*=(const T &v) { LOGICAL_AXIS_CODE(e *= v, x *= v, y *= v, z *= v, i *= v, j *= v, k *= v, u *= v, v *= v, w *= v); return *this; }
|
FI XYZEval<T>& operator*=(const T &p) { LOGICAL_AXIS_CODE(e *= p, x *= p, y *= p, z *= p, i *= p, j *= p, k *= p, u *= p, v *= p, w *= p); return *this; }
|
||||||
FI XYZEval<T>& operator>>=(const int &v) { LOGICAL_AXIS_CODE(_RS(e), _RS(x), _RS(y), _RS(z), _RS(i), _RS(j), _RS(k), _RS(u), _RS(v), _RS(w)); return *this; }
|
FI XYZEval<T>& operator>>=(const int &p) { LOGICAL_AXIS_CODE(_RS(e), _RS(x), _RS(y), _RS(z), _RS(i), _RS(j), _RS(k), _RS(u), _RS(v), _RS(w)); return *this; }
|
||||||
FI XYZEval<T>& operator<<=(const int &v) { LOGICAL_AXIS_CODE(_LS(e), _LS(x), _LS(y), _LS(z), _LS(i), _LS(j), _LS(k), _LS(u), _LS(v), _LS(w)); return *this; }
|
FI XYZEval<T>& operator<<=(const int &p) { LOGICAL_AXIS_CODE(_LS(e), _LS(x), _LS(y), _LS(z), _LS(i), _LS(j), _LS(k), _LS(u), _LS(v), _LS(w)); return *this; }
|
||||||
|
|
||||||
// Exact comparisons. For floats a "NEAR" operation may be better.
|
// Exact comparisons. For floats a "NEAR" operation may be better.
|
||||||
FI bool operator==(const XYZval<T> &rs) const { return true NUM_AXIS_GANG(&& x == rs.x, && y == rs.y, && z == rs.z, && i == rs.i, && j == rs.j, && k == rs.k, && u == rs.u, && v == rs.v, && w == rs.w); }
|
FI bool operator==(const XYZval<T> &rs) const { return true NUM_AXIS_GANG(&& x == rs.x, && y == rs.y, && z == rs.z, && i == rs.i, && j == rs.j, && k == rs.k, && u == rs.u, && v == rs.v, && w == rs.w); }
|
||||||
FI bool operator==(const XYZEval<T> &rs) const { return true LOGICAL_AXIS_GANG(&& e == rs.e, && x == rs.x, && y == rs.y, && z == rs.z, && i == rs.i, && j == rs.j, && k == rs.k, && u == rs.u, && v == rs.v, && w == rs.w); }
|
FI bool operator==(const XYZEval<T> &rs) const { return true LOGICAL_AXIS_GANG(&& e == rs.e, && x == rs.x, && y == rs.y, && z == rs.z, && i == rs.i, && j == rs.j, && k == rs.k, && u == rs.u, && v == rs.v, && w == rs.w); }
|
||||||
FI bool operator!=(const XYZval<T> &rs) const { return !operator==(rs); }
|
FI bool operator!=(const XYZval<T> &rs) const { return !operator==(rs); }
|
||||||
FI bool operator!=(const XYZEval<T> &rs) const { return !operator==(rs); }
|
FI bool operator!=(const XYZEval<T> &rs) const { return !operator==(rs); }
|
||||||
};
|
};
|
||||||
|
|
||||||
#undef _RECIP
|
#undef _RECIP
|
||||||
|
|||||||
@@ -111,20 +111,29 @@ void HostUI::action(FSTR_P const fstr, const bool eol) {
|
|||||||
if (eol) SERIAL_EOL();
|
if (eol) SERIAL_EOL();
|
||||||
}
|
}
|
||||||
|
|
||||||
void HostUI::prompt_plus(FSTR_P const ptype, FSTR_P const fstr, const char extra_char/*='\0'*/) {
|
void HostUI::prompt_plus(const bool pgm, FSTR_P const ptype, const char * const str, const char extra_char/*='\0'*/) {
|
||||||
prompt(ptype, false);
|
prompt(ptype, false);
|
||||||
PORT_REDIRECT(SerialMask::All);
|
PORT_REDIRECT(SerialMask::All);
|
||||||
SERIAL_CHAR(' ');
|
SERIAL_CHAR(' ');
|
||||||
SERIAL_ECHOF(fstr);
|
if (pgm)
|
||||||
|
SERIAL_ECHOPGM_P(str);
|
||||||
|
else
|
||||||
|
SERIAL_ECHO(str);
|
||||||
if (extra_char != '\0') SERIAL_CHAR(extra_char);
|
if (extra_char != '\0') SERIAL_CHAR(extra_char);
|
||||||
SERIAL_EOL();
|
SERIAL_EOL();
|
||||||
}
|
}
|
||||||
|
|
||||||
void HostUI::prompt_begin(const PromptReason reason, FSTR_P const fstr, const char extra_char/*='\0'*/) {
|
void HostUI::prompt_begin(const PromptReason reason, FSTR_P const fstr, const char extra_char/*='\0'*/) {
|
||||||
prompt_end();
|
prompt_end();
|
||||||
host_prompt_reason = reason;
|
host_prompt_reason = reason;
|
||||||
prompt_plus(F("begin"), fstr, extra_char);
|
prompt_plus(F("begin"), fstr, extra_char);
|
||||||
}
|
}
|
||||||
void HostUI::prompt_button(FSTR_P const fstr) { prompt_plus(F("button"), fstr); }
|
void HostUI::prompt_begin(const PromptReason reason, const char * const cstr, const char extra_char/*='\0'*/) {
|
||||||
|
prompt_end();
|
||||||
|
host_prompt_reason = reason;
|
||||||
|
prompt_plus(F("begin"), cstr, extra_char);
|
||||||
|
}
|
||||||
|
|
||||||
void HostUI::prompt_end() { prompt(F("end")); }
|
void HostUI::prompt_end() { prompt(F("end")); }
|
||||||
void HostUI::prompt_show() { prompt(F("show")); }
|
void HostUI::prompt_show() { prompt(F("show")); }
|
||||||
|
|
||||||
@@ -133,14 +142,26 @@ void HostUI::action(FSTR_P const fstr, const bool eol) {
|
|||||||
if (btn2) prompt_button(btn2);
|
if (btn2) prompt_button(btn2);
|
||||||
prompt_show();
|
prompt_show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HostUI::prompt_button(FSTR_P const fstr) { prompt_plus(F("button"), fstr); }
|
||||||
|
void HostUI::prompt_button(const char * const cstr) { prompt_plus(F("button"), cstr); }
|
||||||
|
|
||||||
void HostUI::prompt_do(const PromptReason reason, FSTR_P const fstr, FSTR_P const btn1/*=nullptr*/, FSTR_P const btn2/*=nullptr*/) {
|
void HostUI::prompt_do(const PromptReason reason, FSTR_P const fstr, FSTR_P const btn1/*=nullptr*/, FSTR_P const btn2/*=nullptr*/) {
|
||||||
prompt_begin(reason, fstr);
|
prompt_begin(reason, fstr);
|
||||||
_prompt_show(btn1, btn2);
|
_prompt_show(btn1, btn2);
|
||||||
}
|
}
|
||||||
|
void HostUI::prompt_do(const PromptReason reason, const char * const cstr, FSTR_P const btn1/*=nullptr*/, FSTR_P const btn2/*=nullptr*/) {
|
||||||
|
prompt_begin(reason, cstr);
|
||||||
|
_prompt_show(btn1, btn2);
|
||||||
|
}
|
||||||
void HostUI::prompt_do(const PromptReason reason, FSTR_P const fstr, const char extra_char, FSTR_P const btn1/*=nullptr*/, FSTR_P const btn2/*=nullptr*/) {
|
void HostUI::prompt_do(const PromptReason reason, FSTR_P const fstr, const char extra_char, FSTR_P const btn1/*=nullptr*/, FSTR_P const btn2/*=nullptr*/) {
|
||||||
prompt_begin(reason, fstr, extra_char);
|
prompt_begin(reason, fstr, extra_char);
|
||||||
_prompt_show(btn1, btn2);
|
_prompt_show(btn1, btn2);
|
||||||
}
|
}
|
||||||
|
void HostUI::prompt_do(const PromptReason reason, const char * const cstr, const char extra_char, FSTR_P const btn1/*=nullptr*/, FSTR_P const btn2/*=nullptr*/) {
|
||||||
|
prompt_begin(reason, cstr, extra_char);
|
||||||
|
_prompt_show(btn1, btn2);
|
||||||
|
}
|
||||||
|
|
||||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
void HostUI::filament_load_prompt() {
|
void HostUI::filament_load_prompt() {
|
||||||
|
|||||||
@@ -79,7 +79,14 @@ class HostUI {
|
|||||||
#if ENABLED(HOST_PROMPT_SUPPORT)
|
#if ENABLED(HOST_PROMPT_SUPPORT)
|
||||||
private:
|
private:
|
||||||
static void prompt(FSTR_P const ptype, const bool eol=true);
|
static void prompt(FSTR_P const ptype, const bool eol=true);
|
||||||
static void prompt_plus(FSTR_P const ptype, FSTR_P const fstr, const char extra_char='\0');
|
static void prompt_plus(const bool pgm, FSTR_P const ptype, const char * const str, const char extra_char='\0');
|
||||||
|
static void prompt_plus(FSTR_P const ptype, FSTR_P const fstr, const char extra_char='\0') {
|
||||||
|
prompt_plus(true, ptype, FTOP(fstr), extra_char);
|
||||||
|
}
|
||||||
|
static void prompt_plus(FSTR_P const ptype, const char * const cstr, const char extra_char='\0') {
|
||||||
|
prompt_plus(false, ptype, cstr, extra_char);
|
||||||
|
}
|
||||||
|
|
||||||
static void prompt_show();
|
static void prompt_show();
|
||||||
static void _prompt_show(FSTR_P const btn1, FSTR_P const btn2);
|
static void _prompt_show(FSTR_P const btn1, FSTR_P const btn2);
|
||||||
|
|
||||||
@@ -93,10 +100,17 @@ class HostUI {
|
|||||||
static void notify(const char * const message);
|
static void notify(const char * const message);
|
||||||
|
|
||||||
static void prompt_begin(const PromptReason reason, FSTR_P const fstr, const char extra_char='\0');
|
static void prompt_begin(const PromptReason reason, FSTR_P const fstr, const char extra_char='\0');
|
||||||
static void prompt_button(FSTR_P const fstr);
|
static void prompt_begin(const PromptReason reason, const char * const cstr, const char extra_char='\0');
|
||||||
static void prompt_end();
|
static void prompt_end();
|
||||||
|
|
||||||
|
static void prompt_button(FSTR_P const fstr);
|
||||||
|
static void prompt_button(const char * const cstr);
|
||||||
|
|
||||||
static void prompt_do(const PromptReason reason, FSTR_P const pstr, FSTR_P const btn1=nullptr, FSTR_P const btn2=nullptr);
|
static void prompt_do(const PromptReason reason, FSTR_P const pstr, FSTR_P const btn1=nullptr, FSTR_P const btn2=nullptr);
|
||||||
|
static void prompt_do(const PromptReason reason, const char * const cstr, FSTR_P const btn1=nullptr, FSTR_P const btn2=nullptr);
|
||||||
static void prompt_do(const PromptReason reason, FSTR_P const pstr, const char extra_char, FSTR_P const btn1=nullptr, FSTR_P const btn2=nullptr);
|
static void prompt_do(const PromptReason reason, FSTR_P const pstr, const char extra_char, FSTR_P const btn1=nullptr, FSTR_P const btn2=nullptr);
|
||||||
|
static void prompt_do(const PromptReason reason, const char * const cstr, const char extra_char, FSTR_P const btn1=nullptr, FSTR_P const btn2=nullptr);
|
||||||
|
|
||||||
static void prompt_open(const PromptReason reason, FSTR_P const pstr, FSTR_P const btn1=nullptr, FSTR_P const btn2=nullptr) {
|
static void prompt_open(const PromptReason reason, FSTR_P const pstr, FSTR_P const btn1=nullptr, FSTR_P const btn2=nullptr) {
|
||||||
if (host_prompt_reason == PROMPT_NOT_DEFINED) prompt_do(reason, pstr, btn1, btn2);
|
if (host_prompt_reason == PROMPT_NOT_DEFINED) prompt_do(reason, pstr, btn1, btn2);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,7 +54,8 @@ MMU2 mmu2;
|
|||||||
#define MMU_CMD_TIMEOUT 45000UL // 45s timeout for mmu commands (except P0)
|
#define MMU_CMD_TIMEOUT 45000UL // 45s timeout for mmu commands (except P0)
|
||||||
#define MMU_P0_TIMEOUT 3000UL // Timeout for P0 command: 3seconds
|
#define MMU_P0_TIMEOUT 3000UL // Timeout for P0 command: 3seconds
|
||||||
|
|
||||||
#define MMU2_COMMAND(S) tx_str(F(S "\n"))
|
#define MMU2_SEND(S) tx_str(F(S "\n"))
|
||||||
|
#define MMU2_RECV(S) rx_str(F(S "\n"))
|
||||||
|
|
||||||
#if ENABLED(MMU_EXTRUDER_SENSOR)
|
#if ENABLED(MMU_EXTRUDER_SENSOR)
|
||||||
uint8_t mmu_idl_sens = 0;
|
uint8_t mmu_idl_sens = 0;
|
||||||
@@ -131,7 +132,7 @@ void MMU2::reset() {
|
|||||||
safe_delay(20);
|
safe_delay(20);
|
||||||
WRITE(MMU2_RST_PIN, HIGH);
|
WRITE(MMU2_RST_PIN, HIGH);
|
||||||
#else
|
#else
|
||||||
MMU2_COMMAND("X0"); // Send soft reset
|
MMU2_SEND("X0"); // Send soft reset
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -157,11 +158,9 @@ void MMU2::mmu_loop() {
|
|||||||
case -1:
|
case -1:
|
||||||
if (rx_start()) {
|
if (rx_start()) {
|
||||||
prev_P0_request = millis(); // Initialize finda sensor timeout
|
prev_P0_request = millis(); // Initialize finda sensor timeout
|
||||||
|
|
||||||
DEBUG_ECHOLNPGM("MMU => 'start'");
|
DEBUG_ECHOLNPGM("MMU => 'start'");
|
||||||
DEBUG_ECHOLNPGM("MMU <= 'S1'");
|
DEBUG_ECHOLNPGM("MMU <= 'S1'");
|
||||||
|
MMU2_SEND("S1"); // Read Version
|
||||||
MMU2_COMMAND("S1"); // Read Version
|
|
||||||
state = -2;
|
state = -2;
|
||||||
}
|
}
|
||||||
else if (millis() > 30000) { // 30sec after reset disable MMU
|
else if (millis() > 30000) { // 30sec after reset disable MMU
|
||||||
@@ -173,10 +172,8 @@ void MMU2::mmu_loop() {
|
|||||||
case -2:
|
case -2:
|
||||||
if (rx_ok()) {
|
if (rx_ok()) {
|
||||||
sscanf(rx_buffer, "%huok\n", &version);
|
sscanf(rx_buffer, "%huok\n", &version);
|
||||||
|
|
||||||
DEBUG_ECHOLNPGM("MMU => ", version, "\nMMU <= 'S2'");
|
DEBUG_ECHOLNPGM("MMU => ", version, "\nMMU <= 'S2'");
|
||||||
|
MMU2_SEND("S2"); // Read Build Number
|
||||||
MMU2_COMMAND("S2"); // Read Build Number
|
|
||||||
state = -3;
|
state = -3;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -191,14 +188,12 @@ void MMU2::mmu_loop() {
|
|||||||
|
|
||||||
#if ENABLED(MMU2_MODE_12V)
|
#if ENABLED(MMU2_MODE_12V)
|
||||||
DEBUG_ECHOLNPGM("MMU <= 'M1'");
|
DEBUG_ECHOLNPGM("MMU <= 'M1'");
|
||||||
|
MMU2_SEND("M1"); // Stealth Mode
|
||||||
MMU2_COMMAND("M1"); // Stealth Mode
|
|
||||||
state = -5;
|
state = -5;
|
||||||
|
|
||||||
#else
|
#else
|
||||||
DEBUG_ECHOLNPGM("MMU <= 'P0'");
|
DEBUG_ECHOLNPGM("MMU <= 'P0'");
|
||||||
|
MMU2_SEND("P0"); // Read FINDA
|
||||||
MMU2_COMMAND("P0"); // Read FINDA
|
|
||||||
state = -4;
|
state = -4;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -209,10 +204,8 @@ void MMU2::mmu_loop() {
|
|||||||
// response to M1
|
// response to M1
|
||||||
if (rx_ok()) {
|
if (rx_ok()) {
|
||||||
DEBUG_ECHOLNPGM("MMU => ok");
|
DEBUG_ECHOLNPGM("MMU => ok");
|
||||||
|
|
||||||
DEBUG_ECHOLNPGM("MMU <= 'P0'");
|
DEBUG_ECHOLNPGM("MMU <= 'P0'");
|
||||||
|
MMU2_SEND("P0"); // Read FINDA
|
||||||
MMU2_COMMAND("P0"); // Read FINDA
|
|
||||||
state = -4;
|
state = -4;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -250,14 +243,13 @@ void MMU2::mmu_loop() {
|
|||||||
else if (cmd == MMU_CMD_C0) {
|
else if (cmd == MMU_CMD_C0) {
|
||||||
// continue loading
|
// continue loading
|
||||||
DEBUG_ECHOLNPGM("MMU <= 'C0'");
|
DEBUG_ECHOLNPGM("MMU <= 'C0'");
|
||||||
MMU2_COMMAND("C0");
|
MMU2_SEND("C0");
|
||||||
state = 3; // wait for response
|
state = 3; // wait for response
|
||||||
}
|
}
|
||||||
else if (cmd == MMU_CMD_U0) {
|
else if (cmd == MMU_CMD_U0) {
|
||||||
// unload current
|
// unload current
|
||||||
DEBUG_ECHOLNPGM("MMU <= 'U0'");
|
DEBUG_ECHOLNPGM("MMU <= 'U0'");
|
||||||
|
MMU2_SEND("U0");
|
||||||
MMU2_COMMAND("U0");
|
|
||||||
state = 3; // wait for response
|
state = 3; // wait for response
|
||||||
}
|
}
|
||||||
else if (WITHIN(cmd, MMU_CMD_E0, MMU_CMD_E0 + EXTRUDERS - 1)) {
|
else if (WITHIN(cmd, MMU_CMD_E0, MMU_CMD_E0 + EXTRUDERS - 1)) {
|
||||||
@@ -270,7 +262,7 @@ void MMU2::mmu_loop() {
|
|||||||
else if (cmd == MMU_CMD_R0) {
|
else if (cmd == MMU_CMD_R0) {
|
||||||
// recover after eject
|
// recover after eject
|
||||||
DEBUG_ECHOLNPGM("MMU <= 'R0'");
|
DEBUG_ECHOLNPGM("MMU <= 'R0'");
|
||||||
MMU2_COMMAND("R0");
|
MMU2_SEND("R0");
|
||||||
state = 3; // wait for response
|
state = 3; // wait for response
|
||||||
}
|
}
|
||||||
else if (WITHIN(cmd, MMU_CMD_F0, MMU_CMD_F0 + EXTRUDERS - 1)) {
|
else if (WITHIN(cmd, MMU_CMD_F0, MMU_CMD_F0 + EXTRUDERS - 1)) {
|
||||||
@@ -285,7 +277,7 @@ void MMU2::mmu_loop() {
|
|||||||
cmd = MMU_CMD_NONE;
|
cmd = MMU_CMD_NONE;
|
||||||
}
|
}
|
||||||
else if (ELAPSED(millis(), prev_P0_request + 300)) {
|
else if (ELAPSED(millis(), prev_P0_request + 300)) {
|
||||||
MMU2_COMMAND("P0"); // Read FINDA
|
MMU2_SEND("P0"); // Read FINDA
|
||||||
state = 2; // wait for response
|
state = 2; // wait for response
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -314,7 +306,7 @@ void MMU2::mmu_loop() {
|
|||||||
if (mmu_idl_sens) {
|
if (mmu_idl_sens) {
|
||||||
if (FILAMENT_PRESENT() && mmu_loading_flag) {
|
if (FILAMENT_PRESENT() && mmu_loading_flag) {
|
||||||
DEBUG_ECHOLNPGM("MMU <= 'A'");
|
DEBUG_ECHOLNPGM("MMU <= 'A'");
|
||||||
MMU2_COMMAND("A"); // send 'abort' request
|
MMU2_SEND("A"); // send 'abort' request
|
||||||
mmu_idl_sens = 0;
|
mmu_idl_sens = 0;
|
||||||
DEBUG_ECHOLNPGM("MMU IDLER_SENSOR = 0 - ABORT");
|
DEBUG_ECHOLNPGM("MMU IDLER_SENSOR = 0 - ABORT");
|
||||||
}
|
}
|
||||||
@@ -327,9 +319,9 @@ void MMU2::mmu_loop() {
|
|||||||
const bool keep_trying = !mmu2s_triggered && last_cmd == MMU_CMD_C0;
|
const bool keep_trying = !mmu2s_triggered && last_cmd == MMU_CMD_C0;
|
||||||
if (keep_trying) {
|
if (keep_trying) {
|
||||||
// MMU ok received but filament sensor not triggered, retrying...
|
// MMU ok received but filament sensor not triggered, retrying...
|
||||||
DEBUG_ECHOLNPGM("MMU => 'ok' (filament not present in gears)");
|
DEBUG_ECHOLNPGM("MMU => 'ok' (no filament in gears)");
|
||||||
DEBUG_ECHOLNPGM("MMU <= 'C0' (keep trying)");
|
DEBUG_ECHOLNPGM("MMU <= 'C0' (keep trying)");
|
||||||
MMU2_COMMAND("C0");
|
MMU2_SEND("C0");
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
constexpr bool keep_trying = false;
|
constexpr bool keep_trying = false;
|
||||||
@@ -361,7 +353,7 @@ void MMU2::mmu_loop() {
|
|||||||
*/
|
*/
|
||||||
bool MMU2::rx_start() {
|
bool MMU2::rx_start() {
|
||||||
// check for start message
|
// check for start message
|
||||||
return rx_str(F("start\n"));
|
return MMU2_RECV("start");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -440,7 +432,7 @@ void MMU2::clear_rx_buffer() {
|
|||||||
* Check if we received 'ok' from MMU
|
* Check if we received 'ok' from MMU
|
||||||
*/
|
*/
|
||||||
bool MMU2::rx_ok() {
|
bool MMU2::rx_ok() {
|
||||||
if (rx_str(F("ok\n"))) {
|
if (MMU2_RECV("ok")) {
|
||||||
prev_P0_request = millis();
|
prev_P0_request = millis();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -673,7 +665,7 @@ static void mmu2_not_responding() {
|
|||||||
// When (T0 rx->ok) load is ready, but in fact it did not load
|
// When (T0 rx->ok) load is ready, but in fact it did not load
|
||||||
// successfully or an overload created pressure in the extruder.
|
// successfully or an overload created pressure in the extruder.
|
||||||
// Send (C0) to load more and move E_AXIS a little to release pressure.
|
// Send (C0) to load more and move E_AXIS a little to release pressure.
|
||||||
if ((fil_present = FILAMENT_PRESENT())) MMU2_COMMAND("A");
|
if ((fil_present = FILAMENT_PRESENT())) MMU2_SEND("A");
|
||||||
} while (!fil_present && PENDING(millis(), expire_ms));
|
} while (!fil_present && PENDING(millis(), expire_ms));
|
||||||
stepper.disable_extruder();
|
stepper.disable_extruder();
|
||||||
manage_response(true, true);
|
manage_response(true, true);
|
||||||
@@ -882,7 +874,7 @@ void MMU2::filament_runout() {
|
|||||||
if (cmd == MMU_CMD_NONE && last_cmd == MMU_CMD_C0) {
|
if (cmd == MMU_CMD_NONE && last_cmd == MMU_CMD_C0) {
|
||||||
if (present && !mmu2s_triggered) {
|
if (present && !mmu2s_triggered) {
|
||||||
DEBUG_ECHOLNPGM("MMU <= 'A'");
|
DEBUG_ECHOLNPGM("MMU <= 'A'");
|
||||||
tx_str(F("A\n"));
|
MMU2_SEND("A");
|
||||||
}
|
}
|
||||||
// Slowly spin the extruder during C0
|
// Slowly spin the extruder during C0
|
||||||
else {
|
else {
|
||||||
|
|||||||
@@ -167,8 +167,6 @@
|
|||||||
if (parser.seenval('T')) draw_area_max.y = parser.value_linear_units();
|
if (parser.seenval('T')) draw_area_max.y = parser.value_linear_units();
|
||||||
if (parser.seenval('B')) draw_area_min.y = parser.value_linear_units();
|
if (parser.seenval('B')) draw_area_min.y = parser.value_linear_units();
|
||||||
if (parser.seenval('H')) polargraph_max_belt_len = parser.value_linear_units();
|
if (parser.seenval('H')) polargraph_max_belt_len = parser.value_linear_units();
|
||||||
draw_area_size.x = draw_area_max.x - draw_area_min.x;
|
|
||||||
draw_area_size.y = draw_area_max.y - draw_area_min.y;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GcodeSuite::M665_report(const bool forReplay/*=true*/) {
|
void GcodeSuite::M665_report(const bool forReplay/*=true*/) {
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
#include "../../inc/MarlinConfig.h"
|
#include "../../inc/MarlinConfig.h"
|
||||||
|
|
||||||
#if ALL(HAS_SPI_FLASH, SDSUPPORT, MARLIN_DEV_MODE)
|
#if ALL(SPI_FLASH, SDSUPPORT, MARLIN_DEV_MODE)
|
||||||
|
|
||||||
#include "../gcode.h"
|
#include "../gcode.h"
|
||||||
#include "../../sd/cardreader.h"
|
#include "../../sd/cardreader.h"
|
||||||
@@ -85,4 +85,4 @@ void GcodeSuite::M994() {
|
|||||||
card.closefile();
|
card.closefile();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // HAS_SPI_FLASH && SDSUPPORT && MARLIN_DEV_MODE
|
#endif // SPI_FLASH && SDSUPPORT && MARLIN_DEV_MODE
|
||||||
|
|||||||
@@ -197,8 +197,12 @@ void GcodeSuite::M569_report(const bool forReplay/*=true*/) {
|
|||||||
if (chop_x2 || chop_y2 || chop_z2) {
|
if (chop_x2 || chop_y2 || chop_z2) {
|
||||||
say_M569(forReplay, F("I1"));
|
say_M569(forReplay, F("I1"));
|
||||||
if (chop_x2) SERIAL_ECHOPGM_P(SP_X_STR);
|
if (chop_x2) SERIAL_ECHOPGM_P(SP_X_STR);
|
||||||
if (chop_y2) SERIAL_ECHOPGM_P(SP_Y_STR);
|
#if HAS_Y_AXIS
|
||||||
if (chop_z2) SERIAL_ECHOPGM_P(SP_Z_STR);
|
if (chop_y2) SERIAL_ECHOPGM_P(SP_Y_STR);
|
||||||
|
#endif
|
||||||
|
#if HAS_Z_AXIS
|
||||||
|
if (chop_z2) SERIAL_ECHOPGM_P(SP_Z_STR);
|
||||||
|
#endif
|
||||||
SERIAL_EOL();
|
SERIAL_EOL();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -600,7 +600,9 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) {
|
|||||||
case 108: M108(); break; // M108: Cancel Waiting
|
case 108: M108(); break; // M108: Cancel Waiting
|
||||||
case 112: M112(); break; // M112: Full Shutdown
|
case 112: M112(); break; // M112: Full Shutdown
|
||||||
case 410: M410(); break; // M410: Quickstop - Abort all the planned moves.
|
case 410: M410(); break; // M410: Quickstop - Abort all the planned moves.
|
||||||
TERN_(HOST_PROMPT_SUPPORT, case 876:) // M876: Handle Host prompt responses
|
#if ENABLED(HOST_PROMPT_SUPPORT)
|
||||||
|
case 876: M876(); break; // M876: Handle Host prompt responses
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
case 108: case 112: case 410:
|
case 108: case 112: case 410:
|
||||||
TERN_(HOST_PROMPT_SUPPORT, case 876:)
|
TERN_(HOST_PROMPT_SUPPORT, case 876:)
|
||||||
@@ -793,6 +795,10 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) {
|
|||||||
case 250: M250(); break; // M250: Set LCD contrast
|
case 250: M250(); break; // M250: Set LCD contrast
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if HAS_GCODE_M255
|
||||||
|
case 255: M255(); break; // M255: Set LCD Sleep/Backlight Timeout (Minutes)
|
||||||
|
#endif
|
||||||
|
|
||||||
#if HAS_LCD_BRIGHTNESS
|
#if HAS_LCD_BRIGHTNESS
|
||||||
case 256: M256(); break; // M256: Set LCD brightness
|
case 256: M256(); break; // M256: Set LCD brightness
|
||||||
#endif
|
#endif
|
||||||
@@ -1047,7 +1053,7 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) {
|
|||||||
case 422: M422(); break; // M422: Set Z Stepper automatic alignment position using probe
|
case 422: M422(); break; // M422: Set Z Stepper automatic alignment position using probe
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ALL(HAS_SPI_FLASH, SDSUPPORT, MARLIN_DEV_MODE)
|
#if ALL(SPI_FLASH, SDSUPPORT, MARLIN_DEV_MODE)
|
||||||
case 993: M993(); break; // M993: Backup SPI Flash to SD
|
case 993: M993(); break; // M993: Backup SPI Flash to SD
|
||||||
case 994: M994(); break; // M994: Load a Backup from SD to SPI Flash
|
case 994: M994(); break; // M994: Load a Backup from SD to SPI Flash
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1194,7 +1194,7 @@ private:
|
|||||||
static void M995();
|
static void M995();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BOTH(HAS_SPI_FLASH, SDSUPPORT)
|
#if BOTH(SPI_FLASH, SDSUPPORT)
|
||||||
static void M993();
|
static void M993();
|
||||||
static void M994();
|
static void M994();
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -222,24 +222,41 @@ void GcodeSuite::M115() {
|
|||||||
|
|
||||||
// Machine Geometry
|
// Machine Geometry
|
||||||
#if ENABLED(M115_GEOMETRY_REPORT)
|
#if ENABLED(M115_GEOMETRY_REPORT)
|
||||||
const xyz_pos_t bmin = { 0, 0, 0 },
|
constexpr xyz_pos_t bmin{0},
|
||||||
bmax = { X_BED_SIZE , Y_BED_SIZE, Z_MAX_POS },
|
bmax = ARRAY_N(NUM_AXES, X_BED_SIZE, Y_BED_SIZE, Z_MAX_POS, I_MAX_POS, J_MAX_POS, K_MAX_POS, U_MAX_POS, V_MAX_POS, W_MAX_POS),
|
||||||
dmin = { X_MIN_POS, Y_MIN_POS, Z_MIN_POS },
|
dmin = ARRAY_N(NUM_AXES, X_MIN_POS, Y_MIN_POS, Z_MIN_POS, I_MIN_POS, J_MIN_POS, K_MIN_POS, U_MIN_POS, V_MIN_POS, W_MIN_POS),
|
||||||
dmax = { X_MAX_POS, Y_MAX_POS, Z_MAX_POS };
|
dmax = ARRAY_N(NUM_AXES, X_MAX_POS, Y_MAX_POS, Z_MAX_POS, I_MAX_POS, J_MAX_POS, K_MAX_POS, U_MAX_POS, V_MAX_POS, W_MAX_POS);
|
||||||
xyz_pos_t cmin = bmin, cmax = bmax;
|
xyz_pos_t cmin = bmin, cmax = bmax;
|
||||||
apply_motion_limits(cmin);
|
apply_motion_limits(cmin);
|
||||||
apply_motion_limits(cmax);
|
apply_motion_limits(cmax);
|
||||||
const xyz_pos_t lmin = dmin.asLogical(), lmax = dmax.asLogical(),
|
const xyz_pos_t lmin = dmin.asLogical(), lmax = dmax.asLogical(),
|
||||||
wmin = cmin.asLogical(), wmax = cmax.asLogical();
|
wmin = cmin.asLogical(), wmax = cmax.asLogical();
|
||||||
|
|
||||||
SERIAL_ECHOLNPGM(
|
SERIAL_ECHOLNPGM(
|
||||||
"area:{"
|
"area:{"
|
||||||
"full:{"
|
"full:{"
|
||||||
"min:{x:", lmin.x, ",y:", lmin.y, ",z:", lmin.z, "},"
|
LIST_N(DOUBLE(NUM_AXES),
|
||||||
"max:{x:", lmax.x, ",y:", lmax.y, ",z:", lmax.z, "}"
|
"min:{x:", lmin.x, ",y:", lmin.y, ",z:", lmin.z,
|
||||||
|
",i:", lmin.i, ",j:", lmin.j, ",k:", lmin.k,
|
||||||
|
",u:", lmin.u, ",v:", lmin.v, ",w:", lmin.w
|
||||||
|
),
|
||||||
|
LIST_N(DOUBLE(NUM_AXES),
|
||||||
|
"max:{x:", lmax.x, ",y:", lmax.y, ",z:", lmax.z,
|
||||||
|
",i:", lmax.i, ",j:", lmax.j, ",k:", lmax.k,
|
||||||
|
",u:", lmax.u, ",v:", lmax.v, ",w:", lmax.w
|
||||||
|
),
|
||||||
"},"
|
"},"
|
||||||
"work:{"
|
"work:{"
|
||||||
"min:{x:", wmin.x, ",y:", wmin.y, ",z:", wmin.z, "},"
|
LIST_N(DOUBLE(NUM_AXES),
|
||||||
"max:{x:", wmax.x, ",y:", wmax.y, ",z:", wmax.z, "}",
|
"min:{x:", wmin.x, ",y:", wmin.y, ",z:", wmin.z,
|
||||||
|
",i:", wmin.i, ",j:", wmin.j, ",k:", wmin.k,
|
||||||
|
",u:", wmin.u, ",v:", wmin.v, ",w:", wmin.w
|
||||||
|
),
|
||||||
|
LIST_N(DOUBLE(NUM_AXES),
|
||||||
|
"max:{x:", wmax.x, ",y:", wmax.y, ",z:", wmax.z,
|
||||||
|
",i:", wmax.i, ",j:", wmax.j, ",k:", wmax.k,
|
||||||
|
",u:", wmax.u, ",v:", wmax.v, ",w:", wmax.w
|
||||||
|
),
|
||||||
"}"
|
"}"
|
||||||
"}"
|
"}"
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -85,7 +85,12 @@ void GcodeSuite::M0_M1() {
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_do(PROMPT_USER_CONTINUE, parser.codenum ? F("M1 Stop") : F("M0 Stop"), FPSTR(CONTINUE_STR)));
|
#if ENABLED(HOST_PROMPT_SUPPORT)
|
||||||
|
if (parser.string_arg)
|
||||||
|
hostui.prompt_do(PROMPT_USER_CONTINUE, parser.string_arg, FPSTR(CONTINUE_STR));
|
||||||
|
else
|
||||||
|
hostui.prompt_do(PROMPT_USER_CONTINUE, parser.codenum ? F("M1 Stop") : F("M0 Stop"), FPSTR(CONTINUE_STR));
|
||||||
|
#endif
|
||||||
|
|
||||||
TERN_(HAS_RESUME_CONTINUE, wait_for_user_response(ms));
|
TERN_(HAS_RESUME_CONTINUE, wait_for_user_response(ms));
|
||||||
|
|
||||||
|
|||||||
@@ -1204,45 +1204,61 @@
|
|||||||
#elif X_HOME_DIR < 0
|
#elif X_HOME_DIR < 0
|
||||||
#define X_HOME_TO_MIN 1
|
#define X_HOME_TO_MIN 1
|
||||||
#endif
|
#endif
|
||||||
#if Y_HOME_DIR > 0
|
#if HAS_Y_AXIS
|
||||||
#define Y_HOME_TO_MAX 1
|
#if Y_HOME_DIR > 0
|
||||||
#elif Y_HOME_DIR < 0
|
#define Y_HOME_TO_MAX 1
|
||||||
#define Y_HOME_TO_MIN 1
|
#elif Y_HOME_DIR < 0
|
||||||
|
#define Y_HOME_TO_MIN 1
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#if Z_HOME_DIR > 0
|
#if HAS_Z_AXIS
|
||||||
#define Z_HOME_TO_MAX 1
|
#if Z_HOME_DIR > 0
|
||||||
#elif Z_HOME_DIR < 0
|
#define Z_HOME_TO_MAX 1
|
||||||
#define Z_HOME_TO_MIN 1
|
#elif Z_HOME_DIR < 0
|
||||||
|
#define Z_HOME_TO_MIN 1
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#if I_HOME_DIR > 0
|
#if HAS_I_AXIS
|
||||||
#define I_HOME_TO_MAX 1
|
#if I_HOME_DIR > 0
|
||||||
#elif I_HOME_DIR < 0
|
#define I_HOME_TO_MAX 1
|
||||||
#define I_HOME_TO_MIN 1
|
#elif I_HOME_DIR < 0
|
||||||
|
#define I_HOME_TO_MIN 1
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#if J_HOME_DIR > 0
|
#if HAS_J_AXIS
|
||||||
#define J_HOME_TO_MAX 1
|
#if J_HOME_DIR > 0
|
||||||
#elif J_HOME_DIR < 0
|
#define J_HOME_TO_MAX 1
|
||||||
#define J_HOME_TO_MIN 1
|
#elif J_HOME_DIR < 0
|
||||||
|
#define J_HOME_TO_MIN 1
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#if K_HOME_DIR > 0
|
#if HAS_K_AXIS
|
||||||
#define K_HOME_TO_MAX 1
|
#if K_HOME_DIR > 0
|
||||||
#elif K_HOME_DIR < 0
|
#define K_HOME_TO_MAX 1
|
||||||
#define K_HOME_TO_MIN 1
|
#elif K_HOME_DIR < 0
|
||||||
|
#define K_HOME_TO_MIN 1
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#if U_HOME_DIR > 0
|
#if HAS_U_AXIS
|
||||||
#define U_HOME_TO_MAX 1
|
#if U_HOME_DIR > 0
|
||||||
#elif U_HOME_DIR < 0
|
#define U_HOME_TO_MAX 1
|
||||||
#define U_HOME_TO_MIN 1
|
#elif U_HOME_DIR < 0
|
||||||
|
#define U_HOME_TO_MIN 1
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#if V_HOME_DIR > 0
|
#if HAS_V_AXIS
|
||||||
#define V_HOME_TO_MAX 1
|
#if V_HOME_DIR > 0
|
||||||
#elif V_HOME_DIR < 0
|
#define V_HOME_TO_MAX 1
|
||||||
#define V_HOME_TO_MIN 1
|
#elif V_HOME_DIR < 0
|
||||||
|
#define V_HOME_TO_MIN 1
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#if W_HOME_DIR > 0
|
#if HAS_W_AXIS
|
||||||
#define W_HOME_TO_MAX 1
|
#if W_HOME_DIR > 0
|
||||||
#elif W_HOME_DIR < 0
|
#define W_HOME_TO_MAX 1
|
||||||
#define W_HOME_TO_MIN 1
|
#elif W_HOME_DIR < 0
|
||||||
|
#define W_HOME_TO_MIN 1
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1496,7 +1512,7 @@
|
|||||||
#endif
|
#endif
|
||||||
#elif ENABLED(TFT_GENERIC)
|
#elif ENABLED(TFT_GENERIC)
|
||||||
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_X | TFT_INVERT_Y)
|
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_X | TFT_INVERT_Y)
|
||||||
#if NONE(TFT_RES_320x240, TFT_RES_480x272, TFT_RES_480x320)
|
#if NONE(TFT_RES_320x240, TFT_RES_480x272, TFT_RES_480x320, TFT_RES_1024x600)
|
||||||
#define TFT_RES_320x240
|
#define TFT_RES_320x240
|
||||||
#endif
|
#endif
|
||||||
#if NONE(TFT_INTERFACE_FSMC, TFT_INTERFACE_SPI)
|
#if NONE(TFT_INTERFACE_FSMC, TFT_INTERFACE_SPI)
|
||||||
@@ -1574,6 +1590,8 @@
|
|||||||
#elif TFT_HEIGHT == 600
|
#elif TFT_HEIGHT == 600
|
||||||
#if ENABLED(TFT_INTERFACE_LTDC)
|
#if ENABLED(TFT_INTERFACE_LTDC)
|
||||||
#define TFT_1024x600_LTDC
|
#define TFT_1024x600_LTDC
|
||||||
|
#else
|
||||||
|
#define TFT_1024x600_SIM // "Simulation" - for testing purposes only
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
@@ -1584,7 +1602,7 @@
|
|||||||
#define HAS_UI_480x320 1
|
#define HAS_UI_480x320 1
|
||||||
#elif EITHER(TFT_480x272, TFT_480x272_SPI)
|
#elif EITHER(TFT_480x272, TFT_480x272_SPI)
|
||||||
#define HAS_UI_480x272 1
|
#define HAS_UI_480x272 1
|
||||||
#elif defined(TFT_1024x600_LTDC)
|
#elif EITHER(TFT_1024x600_LTDC, TFT_1024x600_SIM)
|
||||||
#define HAS_UI_1024x600 1
|
#define HAS_UI_1024x600 1
|
||||||
#endif
|
#endif
|
||||||
#if ANY(HAS_UI_320x240, HAS_UI_480x320, HAS_UI_480x272)
|
#if ANY(HAS_UI_320x240, HAS_UI_480x320, HAS_UI_480x272)
|
||||||
|
|||||||
@@ -155,7 +155,7 @@
|
|||||||
#define W_BED_SIZE W_MAX_LENGTH
|
#define W_BED_SIZE W_MAX_LENGTH
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Require 0,0 bed center for Delta and SCARA
|
// Require 0,0 bed center for Delta, SCARA, and Polargraph
|
||||||
#if IS_KINEMATIC
|
#if IS_KINEMATIC
|
||||||
#define BED_CENTER_AT_0_0
|
#define BED_CENTER_AT_0_0
|
||||||
#endif
|
#endif
|
||||||
@@ -2446,7 +2446,7 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
// Flag the indexed hardware serial ports in use
|
// Flag the indexed hardware serial ports in use
|
||||||
#define CONF_SERIAL_IS(N) ( (defined(SERIAL_PORT) && SERIAL_PORT == N) \
|
#define SERIAL_IN_USE(N) ( (defined(SERIAL_PORT) && SERIAL_PORT == N) \
|
||||||
|| (defined(SERIAL_PORT_2) && SERIAL_PORT_2 == N) \
|
|| (defined(SERIAL_PORT_2) && SERIAL_PORT_2 == N) \
|
||||||
|| (defined(SERIAL_PORT_3) && SERIAL_PORT_3 == N) \
|
|| (defined(SERIAL_PORT_3) && SERIAL_PORT_3 == N) \
|
||||||
|| (defined(MMU2_SERIAL_PORT) && MMU2_SERIAL_PORT == N) \
|
|| (defined(MMU2_SERIAL_PORT) && MMU2_SERIAL_PORT == N) \
|
||||||
@@ -2454,7 +2454,7 @@
|
|||||||
|
|
||||||
// Flag the named hardware serial ports in use
|
// Flag the named hardware serial ports in use
|
||||||
#define TMC_UART_IS(A,N) (defined(A##_HARDWARE_SERIAL) && (CAT(HW_,A##_HARDWARE_SERIAL) == HW_Serial##N || CAT(HW_,A##_HARDWARE_SERIAL) == HW_MSerial##N))
|
#define TMC_UART_IS(A,N) (defined(A##_HARDWARE_SERIAL) && (CAT(HW_,A##_HARDWARE_SERIAL) == HW_Serial##N || CAT(HW_,A##_HARDWARE_SERIAL) == HW_MSerial##N))
|
||||||
#define ANY_SERIAL_IS(N) ( CONF_SERIAL_IS(N) \
|
#define ANY_SERIAL_IS(N) ( SERIAL_IN_USE(N) \
|
||||||
|| TMC_UART_IS(X, N) || TMC_UART_IS(Y , N) || TMC_UART_IS(Z , N) \
|
|| TMC_UART_IS(X, N) || TMC_UART_IS(Y , N) || TMC_UART_IS(Z , N) \
|
||||||
|| TMC_UART_IS(I, N) || TMC_UART_IS(J , N) || TMC_UART_IS(K , N) \
|
|| TMC_UART_IS(I, N) || TMC_UART_IS(J , N) || TMC_UART_IS(K , N) \
|
||||||
|| TMC_UART_IS(U, N) || TMC_UART_IS(V , N) || TMC_UART_IS(W , N) \
|
|| TMC_UART_IS(U, N) || TMC_UART_IS(V , N) || TMC_UART_IS(W , N) \
|
||||||
@@ -2481,7 +2481,7 @@
|
|||||||
#define HW_MSerial9 518
|
#define HW_MSerial9 518
|
||||||
#define HW_MSerial10 519
|
#define HW_MSerial10 519
|
||||||
|
|
||||||
#if CONF_SERIAL_IS(-1)
|
#if SERIAL_IN_USE(-1)
|
||||||
#define USING_HW_SERIALUSB 1
|
#define USING_HW_SERIALUSB 1
|
||||||
#endif
|
#endif
|
||||||
#if ANY_SERIAL_IS(0)
|
#if ANY_SERIAL_IS(0)
|
||||||
@@ -3605,13 +3605,13 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAS_MARLINUI_MENU
|
#if EITHER(HAS_MARLINUI_MENU, TOUCH_UI_FTDI_EVE)
|
||||||
// LCD timeout to status screen default is 15s
|
// LCD timeout to status screen default is 15s
|
||||||
#ifndef LCD_TIMEOUT_TO_STATUS
|
#ifndef LCD_TIMEOUT_TO_STATUS
|
||||||
#define LCD_TIMEOUT_TO_STATUS 15000
|
#define LCD_TIMEOUT_TO_STATUS 15000
|
||||||
#endif
|
#endif
|
||||||
#if LCD_TIMEOUT_TO_STATUS
|
#if LCD_TIMEOUT_TO_STATUS
|
||||||
#define SCREENS_CAN_TIME_OUT 1
|
#define HAS_SCREEN_TIMEOUT 1
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -829,7 +829,7 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
|||||||
/**
|
/**
|
||||||
* Granular software endstops (Marlin >= 1.1.7)
|
* Granular software endstops (Marlin >= 1.1.7)
|
||||||
*/
|
*/
|
||||||
#if ENABLED(MIN_SOFTWARE_ENDSTOPS) && DISABLED(MIN_SOFTWARE_ENDSTOP_Z)
|
#if ENABLED(MIN_SOFTWARE_ENDSTOPS) && NONE(MIN_SOFTWARE_ENDSTOP_Z, POLARGRAPH)
|
||||||
#if IS_KINEMATIC
|
#if IS_KINEMATIC
|
||||||
#error "MIN_SOFTWARE_ENDSTOPS on DELTA/SCARA also requires MIN_SOFTWARE_ENDSTOP_Z."
|
#error "MIN_SOFTWARE_ENDSTOPS on DELTA/SCARA also requires MIN_SOFTWARE_ENDSTOP_Z."
|
||||||
#elif NONE(MIN_SOFTWARE_ENDSTOP_X, MIN_SOFTWARE_ENDSTOP_Y)
|
#elif NONE(MIN_SOFTWARE_ENDSTOP_X, MIN_SOFTWARE_ENDSTOP_Y)
|
||||||
@@ -837,7 +837,7 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLED(MAX_SOFTWARE_ENDSTOPS) && DISABLED(MAX_SOFTWARE_ENDSTOP_Z)
|
#if ENABLED(MAX_SOFTWARE_ENDSTOPS) && NONE(MAX_SOFTWARE_ENDSTOP_Z, POLARGRAPH)
|
||||||
#if IS_KINEMATIC
|
#if IS_KINEMATIC
|
||||||
#error "MAX_SOFTWARE_ENDSTOPS on DELTA/SCARA also requires MAX_SOFTWARE_ENDSTOP_Z."
|
#error "MAX_SOFTWARE_ENDSTOPS on DELTA/SCARA also requires MAX_SOFTWARE_ENDSTOP_Z."
|
||||||
#elif NONE(MAX_SOFTWARE_ENDSTOP_X, MAX_SOFTWARE_ENDSTOP_Y)
|
#elif NONE(MAX_SOFTWARE_ENDSTOP_X, MAX_SOFTWARE_ENDSTOP_Y)
|
||||||
@@ -2641,7 +2641,7 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
|||||||
#define _PLUG_UNUSED_TEST(A,P) (DISABLED(USE_##P##MIN_PLUG, USE_##P##MAX_PLUG) \
|
#define _PLUG_UNUSED_TEST(A,P) (DISABLED(USE_##P##MIN_PLUG, USE_##P##MAX_PLUG) \
|
||||||
&& !(ENABLED(A##_DUAL_ENDSTOPS) && WITHIN(A##2_USE_ENDSTOP, _##P##MAX_, _##P##MIN_)) \
|
&& !(ENABLED(A##_DUAL_ENDSTOPS) && WITHIN(A##2_USE_ENDSTOP, _##P##MAX_, _##P##MIN_)) \
|
||||||
&& !(ENABLED(A##_MULTI_ENDSTOPS) && WITHIN(A##2_USE_ENDSTOP, _##P##MAX_, _##P##MIN_)) )
|
&& !(ENABLED(A##_MULTI_ENDSTOPS) && WITHIN(A##2_USE_ENDSTOP, _##P##MAX_, _##P##MIN_)) )
|
||||||
#define _AXIS_PLUG_UNUSED_TEST(A) (1 NUM_AXIS_GANG(&& _PLUG_UNUSED_TEST(A,X), && _PLUG_UNUSED_TEST(A,Y), && _PLUG_UNUSED_TEST(A,Z), \
|
#define _AXIS_PLUG_UNUSED_TEST(A) (HAS_##A##_A NUM_AXIS_GANG(&& _PLUG_UNUSED_TEST(A,X), && _PLUG_UNUSED_TEST(A,Y), && _PLUG_UNUSED_TEST(A,Z), \
|
||||||
&& _PLUG_UNUSED_TEST(A,I), && _PLUG_UNUSED_TEST(A,J), && _PLUG_UNUSED_TEST(A,K), \
|
&& _PLUG_UNUSED_TEST(A,I), && _PLUG_UNUSED_TEST(A,J), && _PLUG_UNUSED_TEST(A,K), \
|
||||||
&& _PLUG_UNUSED_TEST(A,U), && _PLUG_UNUSED_TEST(A,V), && _PLUG_UNUSED_TEST(A,W) ) )
|
&& _PLUG_UNUSED_TEST(A,U), && _PLUG_UNUSED_TEST(A,V), && _PLUG_UNUSED_TEST(A,W) ) )
|
||||||
|
|
||||||
@@ -2656,22 +2656,22 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
|||||||
#if _AXIS_PLUG_UNUSED_TEST(Z)
|
#if _AXIS_PLUG_UNUSED_TEST(Z)
|
||||||
#error "You must enable USE_ZMIN_PLUG or USE_ZMAX_PLUG."
|
#error "You must enable USE_ZMIN_PLUG or USE_ZMAX_PLUG."
|
||||||
#endif
|
#endif
|
||||||
#if HAS_I_AXIS && _AXIS_PLUG_UNUSED_TEST(I)
|
#if _AXIS_PLUG_UNUSED_TEST(I)
|
||||||
#error "You must enable USE_IMIN_PLUG or USE_IMAX_PLUG."
|
#error "You must enable USE_IMIN_PLUG or USE_IMAX_PLUG."
|
||||||
#endif
|
#endif
|
||||||
#if HAS_J_AXIS && _AXIS_PLUG_UNUSED_TEST(J)
|
#if _AXIS_PLUG_UNUSED_TEST(J)
|
||||||
#error "You must enable USE_JMIN_PLUG or USE_JMAX_PLUG."
|
#error "You must enable USE_JMIN_PLUG or USE_JMAX_PLUG."
|
||||||
#endif
|
#endif
|
||||||
#if HAS_K_AXIS && _AXIS_PLUG_UNUSED_TEST(K)
|
#if _AXIS_PLUG_UNUSED_TEST(K)
|
||||||
#error "You must enable USE_KMIN_PLUG or USE_KMAX_PLUG."
|
#error "You must enable USE_KMIN_PLUG or USE_KMAX_PLUG."
|
||||||
#endif
|
#endif
|
||||||
#if HAS_U_AXIS && _AXIS_PLUG_UNUSED_TEST(U)
|
#if _AXIS_PLUG_UNUSED_TEST(U)
|
||||||
#error "You must enable USE_UMIN_PLUG or USE_UMAX_PLUG."
|
#error "You must enable USE_UMIN_PLUG or USE_UMAX_PLUG."
|
||||||
#endif
|
#endif
|
||||||
#if HAS_V_AXIS && _AXIS_PLUG_UNUSED_TEST(V)
|
#if _AXIS_PLUG_UNUSED_TEST(V)
|
||||||
#error "You must enable USE_VMIN_PLUG or USE_VMAX_PLUG."
|
#error "You must enable USE_VMIN_PLUG or USE_VMAX_PLUG."
|
||||||
#endif
|
#endif
|
||||||
#if HAS_W_AXIS && _AXIS_PLUG_UNUSED_TEST(W)
|
#if _AXIS_PLUG_UNUSED_TEST(W)
|
||||||
#error "You must enable USE_WMIN_PLUG or USE_WMAX_PLUG."
|
#error "You must enable USE_WMIN_PLUG or USE_WMAX_PLUG."
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -2685,29 +2685,29 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
|||||||
#error "Enable USE_YMIN_PLUG when homing Y to MIN."
|
#error "Enable USE_YMIN_PLUG when homing Y to MIN."
|
||||||
#elif Y_HOME_TO_MAX && DISABLED(USE_YMAX_PLUG)
|
#elif Y_HOME_TO_MAX && DISABLED(USE_YMAX_PLUG)
|
||||||
#error "Enable USE_YMAX_PLUG when homing Y to MAX."
|
#error "Enable USE_YMAX_PLUG when homing Y to MAX."
|
||||||
#elif HAS_I_AXIS && I_HOME_TO_MIN && DISABLED(USE_IMIN_PLUG)
|
#elif I_HOME_TO_MIN && DISABLED(USE_IMIN_PLUG)
|
||||||
#error "Enable USE_IMIN_PLUG when homing I to MIN."
|
#error "Enable USE_IMIN_PLUG when homing I to MIN."
|
||||||
#elif HAS_I_AXIS && I_HOME_TO_MAX && DISABLED(USE_IMAX_PLUG)
|
#elif I_HOME_TO_MAX && DISABLED(USE_IMAX_PLUG)
|
||||||
#error "Enable USE_IMAX_PLUG when homing I to MAX."
|
#error "Enable USE_IMAX_PLUG when homing I to MAX."
|
||||||
#elif HAS_J_AXIS && J_HOME_TO_MIN && DISABLED(USE_JMIN_PLUG)
|
#elif J_HOME_TO_MIN && DISABLED(USE_JMIN_PLUG)
|
||||||
#error "Enable USE_JMIN_PLUG when homing J to MIN."
|
#error "Enable USE_JMIN_PLUG when homing J to MIN."
|
||||||
#elif HAS_J_AXIS && J_HOME_TO_MAX && DISABLED(USE_JMAX_PLUG)
|
#elif J_HOME_TO_MAX && DISABLED(USE_JMAX_PLUG)
|
||||||
#error "Enable USE_JMAX_PLUG when homing J to MAX."
|
#error "Enable USE_JMAX_PLUG when homing J to MAX."
|
||||||
#elif HAS_K_AXIS && K_HOME_TO_MIN && DISABLED(USE_KMIN_PLUG)
|
#elif K_HOME_TO_MIN && DISABLED(USE_KMIN_PLUG)
|
||||||
#error "Enable USE_KMIN_PLUG when homing K to MIN."
|
#error "Enable USE_KMIN_PLUG when homing K to MIN."
|
||||||
#elif HAS_K_AXIS && K_HOME_TO_MAX && DISABLED(USE_KMAX_PLUG)
|
#elif K_HOME_TO_MAX && DISABLED(USE_KMAX_PLUG)
|
||||||
#error "Enable USE_KMAX_PLUG when homing K to MAX."
|
#error "Enable USE_KMAX_PLUG when homing K to MAX."
|
||||||
#elif HAS_U_AXIS && U_HOME_TO_MIN && DISABLED(USE_UMIN_PLUG)
|
#elif U_HOME_TO_MIN && DISABLED(USE_UMIN_PLUG)
|
||||||
#error "Enable USE_UMIN_PLUG when homing U to MIN."
|
#error "Enable USE_UMIN_PLUG when homing U to MIN."
|
||||||
#elif HAS_U_AXIS && U_HOME_TO_MAX && DISABLED(USE_UMAX_PLUG)
|
#elif U_HOME_TO_MAX && DISABLED(USE_UMAX_PLUG)
|
||||||
#error "Enable USE_UMAX_PLUG when homing U to MAX."
|
#error "Enable USE_UMAX_PLUG when homing U to MAX."
|
||||||
#elif HAS_V_AXIS && V_HOME_TO_MIN && DISABLED(USE_VMIN_PLUG)
|
#elif V_HOME_TO_MIN && DISABLED(USE_VMIN_PLUG)
|
||||||
#error "Enable USE_VMIN_PLUG when homing V to MIN."
|
#error "Enable USE_VMIN_PLUG when homing V to MIN."
|
||||||
#elif HAS_V_AXIS && V_HOME_TO_MAX && DISABLED(USE_VMAX_PLUG)
|
#elif V_HOME_TO_MAX && DISABLED(USE_VMAX_PLUG)
|
||||||
#error "Enable USE_VMAX_PLUG when homing V to MAX."
|
#error "Enable USE_VMAX_PLUG when homing V to MAX."
|
||||||
#elif HAS_W_AXIS && W_HOME_TO_MIN && DISABLED(USE_WMIN_PLUG)
|
#elif W_HOME_TO_MIN && DISABLED(USE_WMIN_PLUG)
|
||||||
#error "Enable USE_WMIN_PLUG when homing W to MIN."
|
#error "Enable USE_WMIN_PLUG when homing W to MIN."
|
||||||
#elif HAS_W_AXIS && W_HOME_TO_MAX && DISABLED(USE_WMAX_PLUG)
|
#elif W_HOME_TO_MAX && DISABLED(USE_WMAX_PLUG)
|
||||||
#error "Enable USE_WMAX_PLUG when homing W to MAX."
|
#error "Enable USE_WMAX_PLUG when homing W to MAX."
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
@@ -3106,7 +3106,7 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
|||||||
* Display Sleep is not supported by these common displays
|
* Display Sleep is not supported by these common displays
|
||||||
*/
|
*/
|
||||||
#if HAS_DISPLAY_SLEEP
|
#if HAS_DISPLAY_SLEEP
|
||||||
#if ANY(IS_U8GLIB_LM6059_AF, IS_U8GLIB_ST7565_64128, REPRAPWORLD_GRAPHICAL_LCD, FYSETC_MINI, ENDER2_STOCKDISPLAY, MINIPANEL)
|
#if ANY(IS_U8GLIB_LM6059_AF, IS_U8GLIB_ST7565_64128, REPRAPWORLD_GRAPHICAL_LCD, FYSETC_MINI, CR10_STOCKDISPLAY, ENDER2_STOCKDISPLAY, MINIPANEL)
|
||||||
#error "DISPLAY_SLEEP_MINUTES is not supported by your display."
|
#error "DISPLAY_SLEEP_MINUTES is not supported by your display."
|
||||||
#elif !WITHIN(DISPLAY_SLEEP_MINUTES, 0, 255)
|
#elif !WITHIN(DISPLAY_SLEEP_MINUTES, 0, 255)
|
||||||
#error "DISPLAY_SLEEP_MINUTES must be between 0 and 255."
|
#error "DISPLAY_SLEEP_MINUTES must be between 0 and 255."
|
||||||
@@ -3565,8 +3565,8 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
|||||||
#error "SENSORLESS_HOMING on DELTA currently requires STEALTHCHOP_XY and STEALTHCHOP_Z."
|
#error "SENSORLESS_HOMING on DELTA currently requires STEALTHCHOP_XY and STEALTHCHOP_Z."
|
||||||
#elif ENDSTOP_NOISE_THRESHOLD
|
#elif ENDSTOP_NOISE_THRESHOLD
|
||||||
#error "SENSORLESS_HOMING is incompatible with ENDSTOP_NOISE_THRESHOLD."
|
#error "SENSORLESS_HOMING is incompatible with ENDSTOP_NOISE_THRESHOLD."
|
||||||
#elif !(X_SENSORLESS || Y_SENSORLESS || Z_SENSORLESS)
|
#elif !(X_SENSORLESS || Y_SENSORLESS || Z_SENSORLESS || I_SENSORLESS || J_SENSORLESS || K_SENSORLESS || U_SENSORLESS || V_SENSORLESS || W_SENSORLESS)
|
||||||
#error "SENSORLESS_HOMING requires a TMC stepper driver with StallGuard on X, Y, or Z axes."
|
#error "SENSORLESS_HOMING requires a TMC stepper driver with StallGuard on X, Y, Z, I, J, K, U, V, or W axes."
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#undef X_ENDSTOP_INVERTING
|
#undef X_ENDSTOP_INVERTING
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
* version was tagged.
|
* version was tagged.
|
||||||
*/
|
*/
|
||||||
#ifndef STRING_DISTRIBUTION_DATE
|
#ifndef STRING_DISTRIBUTION_DATE
|
||||||
#define STRING_DISTRIBUTION_DATE "2022-10-12"
|
#define STRING_DISTRIBUTION_DATE "2022-10-18"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
#if ((!HAS_ADC_BUTTONS && IS_NEWPANEL) || BUTTONS_EXIST(EN1, EN2)) && !IS_TFTGLCD_PANEL
|
#if ((!HAS_ADC_BUTTONS && IS_NEWPANEL) || BUTTONS_EXIST(EN1, EN2)) && !IS_TFTGLCD_PANEL
|
||||||
#define HAS_ENCODER_WHEEL 1
|
#define HAS_ENCODER_WHEEL 1
|
||||||
#endif
|
#endif
|
||||||
#if (HAS_ENCODER_WHEEL || ANY_BUTTON(ENC, BACK, UP, DWN, LFT, RT)) && DISABLED(TOUCH_UI_FTDI_EVE)
|
#if (HAS_ENCODER_WHEEL || ANY_BUTTON(ENC, BACK, UP, DOWN, LEFT, RIGHT)) && DISABLED(TOUCH_UI_FTDI_EVE)
|
||||||
#define HAS_DIGITAL_BUTTONS 1
|
#define HAS_DIGITAL_BUTTONS 1
|
||||||
#endif
|
#endif
|
||||||
#if !HAS_ADC_BUTTONS && (IS_RRW_KEYPAD || (HAS_WIRED_LCD && !IS_NEWPANEL))
|
#if !HAS_ADC_BUTTONS && (IS_RRW_KEYPAD || (HAS_WIRED_LCD && !IS_NEWPANEL))
|
||||||
@@ -190,18 +190,18 @@
|
|||||||
#else
|
#else
|
||||||
#define _BUTTON_PRESSED_UP false
|
#define _BUTTON_PRESSED_UP false
|
||||||
#endif
|
#endif
|
||||||
#if BUTTON_EXISTS(DWN)
|
#if BUTTON_EXISTS(DOWN)
|
||||||
#define _BUTTON_PRESSED_DWN _BUTTON_PRESSED(DWN)
|
#define _BUTTON_PRESSED_DWN _BUTTON_PRESSED(DOWN)
|
||||||
#else
|
#else
|
||||||
#define _BUTTON_PRESSED_DWN false
|
#define _BUTTON_PRESSED_DWN false
|
||||||
#endif
|
#endif
|
||||||
#if BUTTON_EXISTS(LFT)
|
#if BUTTON_EXISTS(LEFT)
|
||||||
#define _BUTTON_PRESSED_LFT _BUTTON_PRESSED(LFT)
|
#define _BUTTON_PRESSED_LFT _BUTTON_PRESSED(LEFT)
|
||||||
#else
|
#else
|
||||||
#define _BUTTON_PRESSED_LFT false
|
#define _BUTTON_PRESSED_LFT false
|
||||||
#endif
|
#endif
|
||||||
#if BUTTON_EXISTS(RT)
|
#if BUTTON_EXISTS(RIGHT)
|
||||||
#define _BUTTON_PRESSED_RT _BUTTON_PRESSED(RT)
|
#define _BUTTON_PRESSED_RT _BUTTON_PRESSED(RIGHT)
|
||||||
#else
|
#else
|
||||||
#define _BUTTON_PRESSED_RT false
|
#define _BUTTON_PRESSED_RT false
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -438,7 +438,7 @@ FORCE_INLINE void _draw_axis_value(const AxisEnum axis, const char *value, const
|
|||||||
else if (axis_should_home(axis))
|
else if (axis_should_home(axis))
|
||||||
while (const char c = *value++) lcd_put_lchar(c <= '.' ? c : '?');
|
while (const char c = *value++) lcd_put_lchar(c <= '.' ? c : '?');
|
||||||
else if (NONE(HOME_AFTER_DEACTIVATE, DISABLE_REDUCED_ACCURACY_WARNING) && !axis_is_trusted(axis))
|
else if (NONE(HOME_AFTER_DEACTIVATE, DISABLE_REDUCED_ACCURACY_WARNING) && !axis_is_trusted(axis))
|
||||||
lcd_put_u8str(axis == Z_AXIS ? F(" ") : F(" "));
|
lcd_put_u8str(TERN0(HAS_Z_AXIS, axis == Z_AXIS) ? F(" ") : F(" "));
|
||||||
else
|
else
|
||||||
lcd_put_u8str(value);
|
lcd_put_u8str(value);
|
||||||
}
|
}
|
||||||
@@ -500,7 +500,13 @@ FORCE_INLINE void _draw_axis_value(const AxisEnum axis, const char *value, const
|
|||||||
*/
|
*/
|
||||||
void MarlinUI::draw_status_screen() {
|
void MarlinUI::draw_status_screen() {
|
||||||
constexpr int xystorage = TERN(INCH_MODE_SUPPORT, 8, 5);
|
constexpr int xystorage = TERN(INCH_MODE_SUPPORT, 8, 5);
|
||||||
static char xstring[TERN(LCD_SHOW_E_TOTAL, 12, xystorage)], ystring[xystorage], zstring[8];
|
static char xstring[TERN(LCD_SHOW_E_TOTAL, 12, xystorage)];
|
||||||
|
#if HAS_Y_AXIS
|
||||||
|
static char ystring[xystorage];
|
||||||
|
#endif
|
||||||
|
#if HAS_Z_AXIS
|
||||||
|
static char zstring[8];
|
||||||
|
#endif
|
||||||
|
|
||||||
#if ENABLED(FILAMENT_LCD_DISPLAY)
|
#if ENABLED(FILAMENT_LCD_DISPLAY)
|
||||||
static char wstring[5], mstring[4];
|
static char wstring[5], mstring[4];
|
||||||
@@ -525,7 +531,9 @@ void MarlinUI::draw_status_screen() {
|
|||||||
|
|
||||||
const xyz_pos_t lpos = current_position.asLogical();
|
const xyz_pos_t lpos = current_position.asLogical();
|
||||||
const bool is_inch = parser.using_inch_units();
|
const bool is_inch = parser.using_inch_units();
|
||||||
strcpy(zstring, is_inch ? ftostr42_52(LINEAR_UNIT(lpos.z)) : ftostr52sp(lpos.z));
|
#if HAS_Z_AXIS
|
||||||
|
strcpy(zstring, is_inch ? ftostr42_52(LINEAR_UNIT(lpos.z)) : ftostr52sp(lpos.z));
|
||||||
|
#endif
|
||||||
|
|
||||||
if (show_e_total) {
|
if (show_e_total) {
|
||||||
#if ENABLED(LCD_SHOW_E_TOTAL)
|
#if ENABLED(LCD_SHOW_E_TOTAL)
|
||||||
@@ -535,7 +543,7 @@ void MarlinUI::draw_status_screen() {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
strcpy(xstring, is_inch ? ftostr53_63(LINEAR_UNIT(lpos.x)) : ftostr4sign(lpos.x));
|
strcpy(xstring, is_inch ? ftostr53_63(LINEAR_UNIT(lpos.x)) : ftostr4sign(lpos.x));
|
||||||
strcpy(ystring, is_inch ? ftostr53_63(LINEAR_UNIT(lpos.y)) : ftostr4sign(lpos.y));
|
TERN_(HAS_Y_AXIS, strcpy(ystring, is_inch ? ftostr53_63(LINEAR_UNIT(lpos.y)) : ftostr4sign(lpos.y)));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLED(FILAMENT_LCD_DISPLAY)
|
#if ENABLED(FILAMENT_LCD_DISPLAY)
|
||||||
@@ -858,12 +866,14 @@ void MarlinUI::draw_status_screen() {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
_draw_axis_value(X_AXIS, xstring, blink);
|
_draw_axis_value(X_AXIS, xstring, blink);
|
||||||
_draw_axis_value(Y_AXIS, ystring, blink);
|
TERN_(HAS_Y_AXIS, _draw_axis_value(Y_AXIS, ystring, blink));
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
_draw_axis_value(Z_AXIS, zstring, blink);
|
#if HAS_Z_AXIS
|
||||||
|
_draw_axis_value(Z_AXIS, zstring, blink);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if NONE(XYZ_NO_FRAME, XYZ_HOLLOW_FRAME)
|
#if NONE(XYZ_NO_FRAME, XYZ_HOLLOW_FRAME)
|
||||||
u8g.setColorIndex(1); // black on white
|
u8g.setColorIndex(1); // black on white
|
||||||
|
|||||||
@@ -45,15 +45,16 @@ bool BaseScreen::buttonStyleCallback(CommandProcessor &cmd, uint8_t tag, uint8_t
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if SCREENS_CAN_TIME_OUT
|
#if HAS_SCREEN_TIMEOUT
|
||||||
if (EventLoop::get_pressed_tag() != 0) {
|
if (EventLoop::get_pressed_tag() != 0) {
|
||||||
|
#if ENABLED(TOUCH_UI_DEBUG)
|
||||||
|
SERIAL_ECHO_MSG("buttonStyleCallback, resetting timeout");
|
||||||
|
#endif
|
||||||
reset_menu_timeout();
|
reset_menu_timeout();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (buttonIsPressed(tag)) {
|
if (buttonIsPressed(tag)) options = OPT_FLAT;
|
||||||
options = OPT_FLAT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (style & cmd.STYLE_DISABLED) {
|
if (style & cmd.STYLE_DISABLED) {
|
||||||
cmd.tag(0);
|
cmd.tag(0);
|
||||||
@@ -65,7 +66,10 @@ bool BaseScreen::buttonStyleCallback(CommandProcessor &cmd, uint8_t tag, uint8_t
|
|||||||
}
|
}
|
||||||
|
|
||||||
void BaseScreen::onIdle() {
|
void BaseScreen::onIdle() {
|
||||||
#if SCREENS_CAN_TIME_OUT
|
#if HAS_SCREEN_TIMEOUT
|
||||||
|
if (EventLoop::get_pressed_tag() != 0)
|
||||||
|
reset_menu_timeout();
|
||||||
|
|
||||||
if ((millis() - last_interaction) > LCD_TIMEOUT_TO_STATUS) {
|
if ((millis() - last_interaction) > LCD_TIMEOUT_TO_STATUS) {
|
||||||
reset_menu_timeout();
|
reset_menu_timeout();
|
||||||
#if ENABLED(TOUCH_UI_DEBUG)
|
#if ENABLED(TOUCH_UI_DEBUG)
|
||||||
@@ -77,10 +81,10 @@ void BaseScreen::onIdle() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void BaseScreen::reset_menu_timeout() {
|
void BaseScreen::reset_menu_timeout() {
|
||||||
TERN_(SCREENS_CAN_TIME_OUT, last_interaction = millis());
|
TERN_(HAS_SCREEN_TIMEOUT, last_interaction = millis());
|
||||||
}
|
}
|
||||||
|
|
||||||
#if SCREENS_CAN_TIME_OUT
|
#if HAS_SCREEN_TIMEOUT
|
||||||
uint32_t BaseScreen::last_interaction;
|
uint32_t BaseScreen::last_interaction;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
class BaseScreen : public UIScreen {
|
class BaseScreen : public UIScreen {
|
||||||
protected:
|
protected:
|
||||||
#if SCREENS_CAN_TIME_OUT
|
#if HAS_SCREEN_TIMEOUT
|
||||||
static uint32_t last_interaction;
|
static uint32_t last_interaction;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -27,8 +27,8 @@
|
|||||||
#include "../../../inc/MarlinConfig.h"
|
#include "../../../inc/MarlinConfig.h"
|
||||||
#include "SPIFlashStorage.h"
|
#include "SPIFlashStorage.h"
|
||||||
|
|
||||||
#if !HAS_SPI_FLASH
|
#if DISABLED(SPI_FLASH)
|
||||||
#error "HAS_SPI_FLASH is required with TFT_LVGL_UI."
|
#error "SPI_FLASH is required with TFT_LVGL_UI."
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern W25QXXFlash W25QXX;
|
extern W25QXXFlash W25QXX;
|
||||||
|
|||||||
@@ -482,14 +482,14 @@ void lv_encoder_pin_init() {
|
|||||||
#if BUTTON_EXISTS(UP)
|
#if BUTTON_EXISTS(UP)
|
||||||
SET_INPUT(BTN_UP);
|
SET_INPUT(BTN_UP);
|
||||||
#endif
|
#endif
|
||||||
#if BUTTON_EXISTS(DWN)
|
#if BUTTON_EXISTS(DOWN)
|
||||||
SET_INPUT(BTN_DWN);
|
SET_INPUT(BTN_DOWN);
|
||||||
#endif
|
#endif
|
||||||
#if BUTTON_EXISTS(LFT)
|
#if BUTTON_EXISTS(LEFT)
|
||||||
SET_INPUT(BTN_LFT);
|
SET_INPUT(BTN_LEFT);
|
||||||
#endif
|
#endif
|
||||||
#if BUTTON_EXISTS(RT)
|
#if BUTTON_EXISTS(RIGHT)
|
||||||
SET_INPUT(BTN_RT);
|
SET_INPUT(BTN_RIGHT);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -418,6 +418,12 @@ namespace Language_en {
|
|||||||
LSTR MSG_FILAMENT_DIAM_E = _UxGT("Fil. Dia. *");
|
LSTR MSG_FILAMENT_DIAM_E = _UxGT("Fil. Dia. *");
|
||||||
LSTR MSG_FILAMENT_UNLOAD = _UxGT("Unload mm");
|
LSTR MSG_FILAMENT_UNLOAD = _UxGT("Unload mm");
|
||||||
LSTR MSG_FILAMENT_LOAD = _UxGT("Load mm");
|
LSTR MSG_FILAMENT_LOAD = _UxGT("Load mm");
|
||||||
|
LSTR MSG_SEGMENTS_PER_SECOND = _UxGT("Segments/Sec");
|
||||||
|
LSTR MSG_DRAW_MIN_X = _UxGT("Draw Min X");
|
||||||
|
LSTR MSG_DRAW_MAX_X = _UxGT("Draw Max X");
|
||||||
|
LSTR MSG_DRAW_MIN_Y = _UxGT("Draw Min Y");
|
||||||
|
LSTR MSG_DRAW_MAX_Y = _UxGT("Draw Max Y");
|
||||||
|
LSTR MSG_MAX_BELT_LEN = _UxGT("Max Belt Len");
|
||||||
LSTR MSG_ADVANCE_K = _UxGT("Advance K");
|
LSTR MSG_ADVANCE_K = _UxGT("Advance K");
|
||||||
LSTR MSG_ADVANCE_K_E = _UxGT("Advance K *");
|
LSTR MSG_ADVANCE_K_E = _UxGT("Advance K *");
|
||||||
LSTR MSG_CONTRAST = _UxGT("LCD Contrast");
|
LSTR MSG_CONTRAST = _UxGT("LCD Contrast");
|
||||||
|
|||||||
+12
-12
@@ -227,14 +227,14 @@ void MarlinUI::init() {
|
|||||||
#if BUTTON_EXISTS(UP)
|
#if BUTTON_EXISTS(UP)
|
||||||
SET_INPUT(BTN_UP);
|
SET_INPUT(BTN_UP);
|
||||||
#endif
|
#endif
|
||||||
#if BUTTON_EXISTS(DWN)
|
#if BUTTON_EXISTS(DOWN)
|
||||||
SET_INPUT(BTN_DWN);
|
SET_INPUT(BTN_DOWN);
|
||||||
#endif
|
#endif
|
||||||
#if BUTTON_EXISTS(LFT)
|
#if BUTTON_EXISTS(LFT)
|
||||||
SET_INPUT(BTN_LFT);
|
SET_INPUT(BTN_LEFT);
|
||||||
#endif
|
#endif
|
||||||
#if BUTTON_EXISTS(RT)
|
#if BUTTON_EXISTS(RT)
|
||||||
SET_INPUT(BTN_RT);
|
SET_INPUT(BTN_RIGHT);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -316,7 +316,7 @@ void MarlinUI::init() {
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if SCREENS_CAN_TIME_OUT
|
#if HAS_SCREEN_TIMEOUT
|
||||||
bool MarlinUI::defer_return_to_status;
|
bool MarlinUI::defer_return_to_status;
|
||||||
millis_t MarlinUI::return_to_status_ms = 0;
|
millis_t MarlinUI::return_to_status_ms = 0;
|
||||||
#endif
|
#endif
|
||||||
@@ -1171,7 +1171,7 @@ void MarlinUI::init() {
|
|||||||
NOLESS(max_display_update_time, millis() - ms);
|
NOLESS(max_display_update_time, millis() - ms);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if SCREENS_CAN_TIME_OUT
|
#if HAS_SCREEN_TIMEOUT
|
||||||
// Return to Status Screen after a timeout
|
// Return to Status Screen after a timeout
|
||||||
if (on_status_screen() || defer_return_to_status)
|
if (on_status_screen() || defer_return_to_status)
|
||||||
reset_status_timeout(ms);
|
reset_status_timeout(ms);
|
||||||
@@ -1303,7 +1303,7 @@ void MarlinUI::init() {
|
|||||||
//
|
//
|
||||||
// Directional buttons
|
// Directional buttons
|
||||||
//
|
//
|
||||||
#if ANY_BUTTON(UP, DWN, LFT, RT)
|
#if ANY_BUTTON(UP, DOWN, LEFT, RIGHT)
|
||||||
|
|
||||||
const int8_t pulses = epps * encoderDirection;
|
const int8_t pulses = epps * encoderDirection;
|
||||||
|
|
||||||
@@ -1311,20 +1311,20 @@ void MarlinUI::init() {
|
|||||||
encoderDiff = (ENCODER_STEPS_PER_MENU_ITEM) * pulses;
|
encoderDiff = (ENCODER_STEPS_PER_MENU_ITEM) * pulses;
|
||||||
next_button_update_ms = now + 300;
|
next_button_update_ms = now + 300;
|
||||||
}
|
}
|
||||||
else if (BUTTON_PRESSED(DWN)) {
|
else if (BUTTON_PRESSED(DOWN)) {
|
||||||
encoderDiff = -(ENCODER_STEPS_PER_MENU_ITEM) * pulses;
|
encoderDiff = -(ENCODER_STEPS_PER_MENU_ITEM) * pulses;
|
||||||
next_button_update_ms = now + 300;
|
next_button_update_ms = now + 300;
|
||||||
}
|
}
|
||||||
else if (BUTTON_PRESSED(LFT)) {
|
else if (BUTTON_PRESSED(LEFT)) {
|
||||||
encoderDiff = -pulses;
|
encoderDiff = -pulses;
|
||||||
next_button_update_ms = now + 300;
|
next_button_update_ms = now + 300;
|
||||||
}
|
}
|
||||||
else if (BUTTON_PRESSED(RT)) {
|
else if (BUTTON_PRESSED(RIGHT)) {
|
||||||
encoderDiff = pulses;
|
encoderDiff = pulses;
|
||||||
next_button_update_ms = now + 300;
|
next_button_update_ms = now + 300;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // UP || DWN || LFT || RT
|
#endif // UP || DOWN || LEFT || RIGHT
|
||||||
|
|
||||||
buttons = (newbutton | TERN0(HAS_SLOW_BUTTONS, slow_buttons)
|
buttons = (newbutton | TERN0(HAS_SLOW_BUTTONS, slow_buttons)
|
||||||
#if BOTH(HAS_TOUCH_BUTTONS, HAS_ENCODER_ACTION)
|
#if BOTH(HAS_TOUCH_BUTTONS, HAS_ENCODER_ACTION)
|
||||||
@@ -1726,7 +1726,7 @@ void MarlinUI::init() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LCD_WITH_BLINK
|
#if LCD_WITH_BLINK && DISABLED(HAS_GRAPHICAL_TFT)
|
||||||
typedef void (*PrintProgress_t)();
|
typedef void (*PrintProgress_t)();
|
||||||
void MarlinUI::rotate_progress() { // Renew and redraw all enabled progress strings
|
void MarlinUI::rotate_progress() { // Renew and redraw all enabled progress strings
|
||||||
const PrintProgress_t progFunc[] = {
|
const PrintProgress_t progFunc[] = {
|
||||||
|
|||||||
@@ -545,7 +545,7 @@ public:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void reset_status_timeout(const millis_t ms) {
|
static void reset_status_timeout(const millis_t ms) {
|
||||||
TERN(SCREENS_CAN_TIME_OUT, return_to_status_ms = ms + LCD_TIMEOUT_TO_STATUS, UNUSED(ms));
|
TERN(HAS_SCREEN_TIMEOUT, return_to_status_ms = ms + LCD_TIMEOUT_TO_STATUS, UNUSED(ms));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if HAS_MARLINUI_MENU
|
#if HAS_MARLINUI_MENU
|
||||||
@@ -596,11 +596,11 @@ public:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
FORCE_INLINE static bool screen_is_sticky() {
|
FORCE_INLINE static bool screen_is_sticky() {
|
||||||
return TERN1(SCREENS_CAN_TIME_OUT, defer_return_to_status);
|
return TERN1(HAS_SCREEN_TIMEOUT, defer_return_to_status);
|
||||||
}
|
}
|
||||||
|
|
||||||
FORCE_INLINE static void defer_status_screen(const bool defer=true) {
|
FORCE_INLINE static void defer_status_screen(const bool defer=true) {
|
||||||
TERN(SCREENS_CAN_TIME_OUT, defer_return_to_status = defer, UNUSED(defer));
|
TERN(HAS_SCREEN_TIMEOUT, defer_return_to_status = defer, UNUSED(defer));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void goto_previous_screen_no_defer() {
|
static void goto_previous_screen_no_defer() {
|
||||||
@@ -778,7 +778,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
#if SCREENS_CAN_TIME_OUT
|
#if HAS_SCREEN_TIMEOUT
|
||||||
static millis_t return_to_status_ms;
|
static millis_t return_to_status_ms;
|
||||||
static bool defer_return_to_status;
|
static bool defer_return_to_status;
|
||||||
#else
|
#else
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ typedef struct {
|
|||||||
screenFunc_t menu_function; // The screen's function
|
screenFunc_t menu_function; // The screen's function
|
||||||
uint32_t encoder_position; // The position of the encoder
|
uint32_t encoder_position; // The position of the encoder
|
||||||
int8_t top_line, items; // The amount of scroll, and the number of items
|
int8_t top_line, items; // The amount of scroll, and the number of items
|
||||||
#if SCREENS_CAN_TIME_OUT
|
#if HAS_SCREEN_TIMEOUT
|
||||||
bool sticky; // The screen is sticky
|
bool sticky; // The screen is sticky
|
||||||
#endif
|
#endif
|
||||||
} menuPosition;
|
} menuPosition;
|
||||||
@@ -89,7 +89,7 @@ void MarlinUI::return_to_status() { goto_screen(status_screen); }
|
|||||||
|
|
||||||
void MarlinUI::push_current_screen() {
|
void MarlinUI::push_current_screen() {
|
||||||
if (screen_history_depth < COUNT(screen_history))
|
if (screen_history_depth < COUNT(screen_history))
|
||||||
screen_history[screen_history_depth++] = { currentScreen, encoderPosition, encoderTopLine, screen_items OPTARG(SCREENS_CAN_TIME_OUT, screen_is_sticky()) };
|
screen_history[screen_history_depth++] = { currentScreen, encoderPosition, encoderTopLine, screen_items OPTARG(HAS_SCREEN_TIMEOUT, screen_is_sticky()) };
|
||||||
}
|
}
|
||||||
|
|
||||||
void MarlinUI::_goto_previous_screen(TERN_(TURBO_BACK_MENU_ITEM, const bool is_back/*=false*/)) {
|
void MarlinUI::_goto_previous_screen(TERN_(TURBO_BACK_MENU_ITEM, const bool is_back/*=false*/)) {
|
||||||
@@ -102,7 +102,7 @@ void MarlinUI::_goto_previous_screen(TERN_(TURBO_BACK_MENU_ITEM, const bool is_b
|
|||||||
is_back ? 0 : sh.top_line,
|
is_back ? 0 : sh.top_line,
|
||||||
sh.items
|
sh.items
|
||||||
);
|
);
|
||||||
defer_status_screen(TERN_(SCREENS_CAN_TIME_OUT, sh.sticky));
|
defer_status_screen(TERN_(HAS_SCREEN_TIMEOUT, sh.sticky));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return_to_status();
|
return_to_status();
|
||||||
|
|||||||
@@ -222,10 +222,10 @@ void menu_backlash();
|
|||||||
void apply_PID_p(const int8_t e) {
|
void apply_PID_p(const int8_t e) {
|
||||||
switch (e) {
|
switch (e) {
|
||||||
#if ENABLED(PIDTEMPBED)
|
#if ENABLED(PIDTEMPBED)
|
||||||
case H_BED: thermalManager.temp_bed.pid.set_Ki(raw_Ki); break;
|
case H_BED: thermalManager.temp_bed.pid.set_Kp(raw_Kp); break;
|
||||||
#endif
|
#endif
|
||||||
#if ENABLED(PIDTEMPCHAMBER)
|
#if ENABLED(PIDTEMPCHAMBER)
|
||||||
case H_CHAMBER: thermalManager.temp_chamber.pid.set_Ki(raw_Ki); break;
|
case H_CHAMBER: thermalManager.temp_chamber.pid.set_Kp(raw_Kp); break;
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
#if ENABLED(PIDTEMP)
|
#if ENABLED(PIDTEMP)
|
||||||
@@ -477,7 +477,9 @@ void menu_backlash();
|
|||||||
|
|
||||||
// M201 / M204 Accelerations
|
// M201 / M204 Accelerations
|
||||||
void menu_advanced_acceleration() {
|
void menu_advanced_acceleration() {
|
||||||
const float max_accel = _MAX(planner.settings.max_acceleration_mm_per_s2[A_AXIS], planner.settings.max_acceleration_mm_per_s2[B_AXIS], planner.settings.max_acceleration_mm_per_s2[C_AXIS]);
|
float max_accel = planner.settings.max_acceleration_mm_per_s2[A_AXIS];
|
||||||
|
TERN_(HAS_Y_AXIS, NOLESS(max_accel, planner.settings.max_acceleration_mm_per_s2[B_AXIS]));
|
||||||
|
TERN_(HAS_Z_AXIS, NOLESS(max_accel, planner.settings.max_acceleration_mm_per_s2[C_AXIS]));
|
||||||
|
|
||||||
// M201 settings
|
// M201 settings
|
||||||
constexpr xyze_ulong_t max_accel_edit =
|
constexpr xyze_ulong_t max_accel_edit =
|
||||||
@@ -632,10 +634,20 @@ void menu_advanced_settings() {
|
|||||||
|
|
||||||
#if DISABLED(SLIM_LCD_MENUS)
|
#if DISABLED(SLIM_LCD_MENUS)
|
||||||
|
|
||||||
|
#if ENABLED(POLARGRAPH)
|
||||||
|
// M665 - Polargraph Settings
|
||||||
|
if (!is_busy) {
|
||||||
|
EDIT_ITEM_FAST(float4, MSG_SEGMENTS_PER_SECOND, &segments_per_second, 100, 9999); // M665 S
|
||||||
|
EDIT_ITEM_FAST(float51sign, MSG_DRAW_MIN_X, &draw_area_min.x, X_MIN_POS, draw_area_max.x - 10); // M665 L
|
||||||
|
EDIT_ITEM_FAST(float51sign, MSG_DRAW_MAX_X, &draw_area_max.x, draw_area_min.x + 10, X_MAX_POS); // M665 R
|
||||||
|
EDIT_ITEM_FAST(float51sign, MSG_DRAW_MIN_Y, &draw_area_min.y, Y_MIN_POS, draw_area_max.y - 10); // M665 T
|
||||||
|
EDIT_ITEM_FAST(float51sign, MSG_DRAW_MAX_Y, &draw_area_max.y, draw_area_min.y + 10, Y_MAX_POS); // M665 B
|
||||||
|
EDIT_ITEM_FAST(float51sign, MSG_MAX_BELT_LEN, &polargraph_max_belt_len, 500, 2000); // M665 H
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if HAS_M206_COMMAND
|
#if HAS_M206_COMMAND
|
||||||
//
|
// M428 - Set Home Offsets
|
||||||
// Set Home Offsets
|
|
||||||
//
|
|
||||||
ACTION_ITEM(MSG_SET_HOME_OFFSETS, []{ queue.inject(F("M428")); ui.return_to_status(); });
|
ACTION_ITEM(MSG_SET_HOME_OFFSETS, []{ queue.inject(F("M428")); ui.return_to_status(); });
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
#if HAS_MARLINUI_MENU
|
#if HAS_MARLINUI_MENU
|
||||||
|
|
||||||
#define LARGE_AREA_TEST ((X_BED_SIZE) >= 1000 || (Y_BED_SIZE) >= 1000 || (Z_MAX_POS) >= 1000)
|
#define LARGE_AREA_TEST ((X_BED_SIZE) >= 1000 || TERN0(HAS_Y_AXIS, (Y_BED_SIZE) >= 1000) || TERN0(HAS_Z_AXIS, (Z_MAX_POS) >= 1000))
|
||||||
|
|
||||||
#include "menu_item.h"
|
#include "menu_item.h"
|
||||||
#include "menu_addon.h"
|
#include "menu_addon.h"
|
||||||
@@ -160,8 +160,10 @@ void _menu_move_distance(const AxisEnum axis, const screenFunc_t func, const int
|
|||||||
SUBMENU(MSG_MOVE_10MM, []{ _goto_manual_move(10); });
|
SUBMENU(MSG_MOVE_10MM, []{ _goto_manual_move(10); });
|
||||||
SUBMENU(MSG_MOVE_1MM, []{ _goto_manual_move( 1); });
|
SUBMENU(MSG_MOVE_1MM, []{ _goto_manual_move( 1); });
|
||||||
SUBMENU(MSG_MOVE_01MM, []{ _goto_manual_move( 0.1f); });
|
SUBMENU(MSG_MOVE_01MM, []{ _goto_manual_move( 0.1f); });
|
||||||
if (axis == Z_AXIS && (FINE_MANUAL_MOVE) > 0.0f && (FINE_MANUAL_MOVE) < 0.1f)
|
#if HAS_Z_AXIS
|
||||||
SUBMENU_f(F(STRINGIFY(FINE_MANUAL_MOVE)), MSG_MOVE_N_MM, []{ _goto_manual_move(float(FINE_MANUAL_MOVE)); });
|
if (axis == Z_AXIS && (FINE_MANUAL_MOVE) > 0.0f && (FINE_MANUAL_MOVE) < 0.1f)
|
||||||
|
SUBMENU_f(F(STRINGIFY(FINE_MANUAL_MOVE)), MSG_MOVE_N_MM, []{ _goto_manual_move(float(FINE_MANUAL_MOVE)); });
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
END_MENU();
|
END_MENU();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
#include "../inc/MarlinConfig.h"
|
#include "../inc/MarlinConfig.h"
|
||||||
|
|
||||||
#if HAS_SPI_FLASH
|
#if ENABLED(SPI_FLASH)
|
||||||
|
|
||||||
#include "W25Qxx.h"
|
#include "W25Qxx.h"
|
||||||
|
|
||||||
@@ -380,4 +380,4 @@ void W25QXXFlash::SPI_FLASH_BufferRead(uint8_t *pBuffer, uint32_t ReadAddr, uint
|
|||||||
SPI_FLASH_CS_H();
|
SPI_FLASH_CS_H();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // HAS_SPI_FLASH
|
#endif // SPI_FLASH
|
||||||
|
|||||||
@@ -341,7 +341,6 @@ void report_current_position_projected() {
|
|||||||
can_reach = (
|
can_reach = (
|
||||||
a < polargraph_max_belt_len + 1
|
a < polargraph_max_belt_len + 1
|
||||||
&& b < polargraph_max_belt_len + 1
|
&& b < polargraph_max_belt_len + 1
|
||||||
&& (a + b) > _MIN(draw_area_size.x, draw_area_size.y)
|
|
||||||
);
|
);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -562,7 +561,8 @@ void do_blocking_move_to(NUM_AXIS_ARGS(const float), const_feedRate_t fr_mm_s/*=
|
|||||||
const feedRate_t w_feedrate = fr_mm_s ?: homing_feedrate(W_AXIS)
|
const feedRate_t w_feedrate = fr_mm_s ?: homing_feedrate(W_AXIS)
|
||||||
);
|
);
|
||||||
|
|
||||||
#if IS_KINEMATIC
|
#if IS_KINEMATIC && DISABLED(POLARGRAPH)
|
||||||
|
// kinematic machines are expected to home to a point 1.5x their range? never reachable.
|
||||||
if (!position_is_reachable(x, y)) return;
|
if (!position_is_reachable(x, y)) return;
|
||||||
destination = current_position; // sync destination at the start
|
destination = current_position; // sync destination at the start
|
||||||
#endif
|
#endif
|
||||||
@@ -919,11 +919,16 @@ void restore_feedrate_and_scaling() {
|
|||||||
constexpr xy_pos_t offs{0};
|
constexpr xy_pos_t offs{0};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (TERN1(IS_SCARA, axis_was_homed(X_AXIS) && axis_was_homed(Y_AXIS))) {
|
#if ENABLED(POLARGRAPH)
|
||||||
const float dist_2 = HYPOT2(target.x - offs.x, target.y - offs.y);
|
LIMIT(target.x, draw_area_min.x, draw_area_max.x);
|
||||||
if (dist_2 > delta_max_radius_2)
|
LIMIT(target.y, draw_area_min.y, draw_area_max.y);
|
||||||
target *= float(delta_max_radius / SQRT(dist_2)); // 200 / 300 = 0.66
|
#else
|
||||||
}
|
if (TERN1(IS_SCARA, axis_was_homed(X_AXIS) && axis_was_homed(Y_AXIS))) {
|
||||||
|
const float dist_2 = HYPOT2(target.x - offs.x, target.y - offs.y);
|
||||||
|
if (dist_2 > delta_max_radius_2)
|
||||||
|
target *= float(delta_max_radius / SQRT(dist_2)); // 200 / 300 = 0.66
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
|||||||
@@ -2244,7 +2244,6 @@ bool Planner::_populate_block(
|
|||||||
|
|
||||||
TERN_(MIXING_EXTRUDER, mixer.populate_block(block->b_color));
|
TERN_(MIXING_EXTRUDER, mixer.populate_block(block->b_color));
|
||||||
|
|
||||||
|
|
||||||
#if HAS_FAN
|
#if HAS_FAN
|
||||||
FANS_LOOP(i) block->fan_speed[i] = thermalManager.fan_speed[i];
|
FANS_LOOP(i) block->fan_speed[i] = thermalManager.fan_speed[i];
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -37,17 +37,12 @@
|
|||||||
#include "../lcd/marlinui.h"
|
#include "../lcd/marlinui.h"
|
||||||
#include "../MarlinCore.h"
|
#include "../MarlinCore.h"
|
||||||
|
|
||||||
float segments_per_second; // Initialized by settings.load()
|
// Initialized by settings.load()
|
||||||
|
float segments_per_second, polargraph_max_belt_len;
|
||||||
xy_pos_t draw_area_min = { X_MIN_POS, Y_MIN_POS },
|
xy_pos_t draw_area_min, draw_area_max;
|
||||||
draw_area_max = { X_MAX_POS, Y_MAX_POS };
|
|
||||||
|
|
||||||
xy_float_t draw_area_size = { X_MAX_POS - X_MIN_POS, Y_MAX_POS - Y_MIN_POS };
|
|
||||||
|
|
||||||
float polargraph_max_belt_len = HYPOT(draw_area_size.x, draw_area_size.y);
|
|
||||||
|
|
||||||
void inverse_kinematics(const xyz_pos_t &raw) {
|
void inverse_kinematics(const xyz_pos_t &raw) {
|
||||||
const float x1 = raw.x - (draw_area_min.x), x2 = (draw_area_max.x) - raw.x, y = raw.y - (draw_area_max.y);
|
const float x1 = raw.x - draw_area_min.x, x2 = draw_area_max.x - raw.x, y = raw.y - draw_area_max.y;
|
||||||
delta.set(HYPOT(x1, y), HYPOT(x2, y), raw.z);
|
delta.set(HYPOT(x1, y), HYPOT(x2, y), raw.z);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,6 @@
|
|||||||
|
|
||||||
extern float segments_per_second;
|
extern float segments_per_second;
|
||||||
extern xy_pos_t draw_area_min, draw_area_max;
|
extern xy_pos_t draw_area_min, draw_area_max;
|
||||||
extern xy_float_t draw_area_size;
|
|
||||||
extern float polargraph_max_belt_len;
|
extern float polargraph_max_belt_len;
|
||||||
|
|
||||||
void inverse_kinematics(const xyz_pos_t &raw);
|
void inverse_kinematics(const xyz_pos_t &raw);
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ public:
|
|||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
static constexpr xyz_pos_t offset = xyz_pos_t(NUM_AXIS_ARRAY(0, 0, 0, 0, 0, 0)); // See #16767
|
static constexpr xyz_pos_t offset = xyz_pos_t(NUM_AXIS_ARRAY_1(0)); // See #16767
|
||||||
|
|
||||||
static bool set_deployed(const bool) { return false; }
|
static bool set_deployed(const bool) { return false; }
|
||||||
|
|
||||||
|
|||||||
@@ -257,7 +257,7 @@ typedef struct SettingsDataStruct {
|
|||||||
// HAS_BED_PROBE
|
// HAS_BED_PROBE
|
||||||
//
|
//
|
||||||
|
|
||||||
xyz_pos_t probe_offset;
|
xyz_pos_t probe_offset; // M851 X Y Z
|
||||||
|
|
||||||
//
|
//
|
||||||
// ABL_PLANAR
|
// ABL_PLANAR
|
||||||
@@ -330,7 +330,11 @@ typedef struct SettingsDataStruct {
|
|||||||
delta_diagonal_rod; // M665 L
|
delta_diagonal_rod; // M665 L
|
||||||
abc_float_t delta_tower_angle_trim, // M665 X Y Z
|
abc_float_t delta_tower_angle_trim, // M665 X Y Z
|
||||||
delta_diagonal_rod_trim; // M665 A B C
|
delta_diagonal_rod_trim; // M665 A B C
|
||||||
|
#elif ENABLED(POLARGRAPH)
|
||||||
|
xy_pos_t draw_area_min, draw_area_max; // M665 L R T B
|
||||||
|
float polargraph_max_belt_len; // M665 H
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -468,7 +472,7 @@ typedef struct SettingsDataStruct {
|
|||||||
//
|
//
|
||||||
// SKEW_CORRECTION
|
// SKEW_CORRECTION
|
||||||
//
|
//
|
||||||
skew_factor_t planner_skew_factor; // M852 I J K planner.skew_factor
|
skew_factor_t planner_skew_factor; // M852 I J K
|
||||||
|
|
||||||
//
|
//
|
||||||
// ADVANCED_PAUSE_FEATURE
|
// ADVANCED_PAUSE_FEATURE
|
||||||
@@ -1001,6 +1005,11 @@ void MarlinSettings::postprocess() {
|
|||||||
EEPROM_WRITE(delta_diagonal_rod); // 1 float
|
EEPROM_WRITE(delta_diagonal_rod); // 1 float
|
||||||
EEPROM_WRITE(delta_tower_angle_trim); // 3 floats
|
EEPROM_WRITE(delta_tower_angle_trim); // 3 floats
|
||||||
EEPROM_WRITE(delta_diagonal_rod_trim); // 3 floats
|
EEPROM_WRITE(delta_diagonal_rod_trim); // 3 floats
|
||||||
|
#elif ENABLED(POLARGRAPH)
|
||||||
|
_FIELD_TEST(draw_area_min);
|
||||||
|
EEPROM_WRITE(draw_area_min); // 2 floats
|
||||||
|
EEPROM_WRITE(draw_area_max); // 2 floats
|
||||||
|
EEPROM_WRITE(polargraph_max_belt_len); // 1 float
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -1435,6 +1444,14 @@ void MarlinSettings::postprocess() {
|
|||||||
_FIELD_TEST(planner_skew_factor);
|
_FIELD_TEST(planner_skew_factor);
|
||||||
EEPROM_WRITE(planner.skew_factor);
|
EEPROM_WRITE(planner.skew_factor);
|
||||||
|
|
||||||
|
//
|
||||||
|
// POLARGRAPH
|
||||||
|
//
|
||||||
|
#if ENABLED(POLARGRAPH)
|
||||||
|
_FIELD_TEST(polargraph_max_belt_len);
|
||||||
|
EEPROM_WRITE(polargraph_max_belt_len);
|
||||||
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
// Advanced Pause filament load & unload lengths
|
// Advanced Pause filament load & unload lengths
|
||||||
//
|
//
|
||||||
@@ -1936,6 +1953,11 @@ void MarlinSettings::postprocess() {
|
|||||||
EEPROM_READ(delta_diagonal_rod); // 1 float
|
EEPROM_READ(delta_diagonal_rod); // 1 float
|
||||||
EEPROM_READ(delta_tower_angle_trim); // 3 floats
|
EEPROM_READ(delta_tower_angle_trim); // 3 floats
|
||||||
EEPROM_READ(delta_diagonal_rod_trim); // 3 floats
|
EEPROM_READ(delta_diagonal_rod_trim); // 3 floats
|
||||||
|
#elif ENABLED(POLARGRAPH)
|
||||||
|
_FIELD_TEST(draw_area_min);
|
||||||
|
EEPROM_READ(draw_area_min); // 2 floats
|
||||||
|
EEPROM_READ(draw_area_max); // 2 floats
|
||||||
|
EEPROM_READ(polargraph_max_belt_len); // 1 float
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -2996,6 +3018,10 @@ void MarlinSettings::reset() {
|
|||||||
delta_diagonal_rod = DELTA_DIAGONAL_ROD;
|
delta_diagonal_rod = DELTA_DIAGONAL_ROD;
|
||||||
delta_tower_angle_trim = dta;
|
delta_tower_angle_trim = dta;
|
||||||
delta_diagonal_rod_trim = ddr;
|
delta_diagonal_rod_trim = ddr;
|
||||||
|
#elif ENABLED(POLARGRAPH)
|
||||||
|
draw_area_min.set(X_MIN_POS, Y_MIN_POS);
|
||||||
|
draw_area_max.set(X_MAX_POS, Y_MAX_POS);
|
||||||
|
polargraph_max_belt_len = POLARGRAPH_MAX_BELT_LEN;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -3492,9 +3518,7 @@ void MarlinSettings::reset() {
|
|||||||
//
|
//
|
||||||
// LCD Preheat Settings
|
// LCD Preheat Settings
|
||||||
//
|
//
|
||||||
#if HAS_PREHEAT
|
TERN_(HAS_PREHEAT, gcode.M145_report(forReplay));
|
||||||
gcode.M145_report(forReplay);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// PID
|
// PID
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
#include "../MarlinCore.h"
|
#include "../MarlinCore.h"
|
||||||
#include "../HAL/shared/Delay.h"
|
#include "../HAL/shared/Delay.h"
|
||||||
#include "../lcd/marlinui.h"
|
#include "../lcd/marlinui.h"
|
||||||
|
#include "../gcode/gcode.h"
|
||||||
|
|
||||||
#include "temperature.h"
|
#include "temperature.h"
|
||||||
#include "endstops.h"
|
#include "endstops.h"
|
||||||
@@ -63,10 +64,6 @@
|
|||||||
#include "../feature/host_actions.h"
|
#include "../feature/host_actions.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if EITHER(HAS_TEMP_SENSOR, LASER_FEATURE)
|
|
||||||
#include "../gcode/gcode.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ENABLED(NOZZLE_PARK_FEATURE)
|
#if ENABLED(NOZZLE_PARK_FEATURE)
|
||||||
#include "../libs/nozzle.h"
|
#include "../libs/nozzle.h"
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -396,8 +396,8 @@
|
|||||||
|
|
||||||
#define SD_DETECT_PIN 41
|
#define SD_DETECT_PIN 41
|
||||||
|
|
||||||
#define HAS_SPI_FLASH 1
|
#define SPI_FLASH
|
||||||
#if HAS_SPI_FLASH
|
#if ENABLED(SPI_FLASH)
|
||||||
#define SPI_DEVICE 1
|
#define SPI_DEVICE 1
|
||||||
#define SPI_FLASH_SIZE 0x1000000 // 16MB
|
#define SPI_FLASH_SIZE 0x1000000 // 16MB
|
||||||
#define SPI_FLASH_CS_PIN 31
|
#define SPI_FLASH_CS_PIN 31
|
||||||
@@ -450,6 +450,19 @@
|
|||||||
#ifndef TOUCH_OFFSET_Y
|
#ifndef TOUCH_OFFSET_Y
|
||||||
#define TOUCH_OFFSET_Y 1
|
#define TOUCH_OFFSET_Y 1
|
||||||
#endif
|
#endif
|
||||||
|
#elif ENABLED(TFT_RES_1024x600)
|
||||||
|
#ifndef TOUCH_CALIBRATION_X
|
||||||
|
#define TOUCH_CALIBRATION_X 65533
|
||||||
|
#endif
|
||||||
|
#ifndef TOUCH_CALIBRATION_Y
|
||||||
|
#define TOUCH_CALIBRATION_Y 38399
|
||||||
|
#endif
|
||||||
|
#ifndef TOUCH_OFFSET_X
|
||||||
|
#define TOUCH_OFFSET_X 2
|
||||||
|
#endif
|
||||||
|
#ifndef TOUCH_OFFSET_Y
|
||||||
|
#define TOUCH_OFFSET_Y 1
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -101,9 +101,9 @@
|
|||||||
// LCD Display input pins
|
// LCD Display input pins
|
||||||
//
|
//
|
||||||
#define BTN_UP 25
|
#define BTN_UP 25
|
||||||
#define BTN_DWN 26
|
#define BTN_DOWN 26
|
||||||
#define BTN_LFT 27
|
#define BTN_LEFT 27
|
||||||
#define BTN_RT 28
|
#define BTN_RIGHT 28
|
||||||
|
|
||||||
// 'OK' button
|
// 'OK' button
|
||||||
#define BTN_ENC 29
|
#define BTN_ENC 29
|
||||||
|
|||||||
@@ -203,14 +203,13 @@
|
|||||||
|
|
||||||
#define BTN_EN2 75 // J4, UP
|
#define BTN_EN2 75 // J4, UP
|
||||||
#define BTN_EN1 73 // J3, DOWN
|
#define BTN_EN1 73 // J3, DOWN
|
||||||
//STOP button connected as KILL_PIN
|
// STOP button connected as KILL_PIN
|
||||||
#define KILL_PIN 14 // J1, RIGHT
|
#define KILL_PIN 14 // J1, RIGHT (not connected)
|
||||||
//KILL - not connected
|
|
||||||
|
|
||||||
#define BEEPER_PIN 8 // H5, SD_WP
|
#define BEEPER_PIN 8 // H5, SD_WP
|
||||||
|
|
||||||
//on board leds
|
// Onboard leds
|
||||||
#define STAT_LED_RED_LED SERVO0_PIN // C1 (1280-EX1, DEBUG2)
|
#define STAT_LED_RED_PIN SERVO0_PIN // C1 (1280-EX1, DEBUG2)
|
||||||
#define STAT_LED_BLUE_PIN SERVO1_PIN // C0 (1280-EX2, DEBUG3)
|
#define STAT_LED_BLUE_PIN SERVO1_PIN // C0 (1280-EX2, DEBUG3)
|
||||||
|
|
||||||
#else
|
#else
|
||||||
@@ -220,9 +219,9 @@
|
|||||||
#define SR_STROBE_PIN 33 // C4
|
#define SR_STROBE_PIN 33 // C4
|
||||||
|
|
||||||
#define BTN_UP 75 // J4
|
#define BTN_UP 75 // J4
|
||||||
#define BTN_DWN 73 // J3
|
#define BTN_DOWN 73 // J3
|
||||||
#define BTN_LFT 72 // J2
|
#define BTN_LEFT 72 // J2
|
||||||
#define BTN_RT 14 // J1
|
#define BTN_RIGHT 14 // J1
|
||||||
|
|
||||||
// Disable encoder
|
// Disable encoder
|
||||||
#undef BTN_EN1
|
#undef BTN_EN1
|
||||||
|
|||||||
@@ -135,7 +135,7 @@
|
|||||||
#if IS_NEWPANEL
|
#if IS_NEWPANEL
|
||||||
#define BTN_ENC 16 // Enter Pin
|
#define BTN_ENC 16 // Enter Pin
|
||||||
#define BTN_UP 19 // Button UP Pin
|
#define BTN_UP 19 // Button UP Pin
|
||||||
#define BTN_DWN 17 // Button DOWN Pin
|
#define BTN_DOWN 17 // Button DOWN Pin
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Additional connectors/pins on the Overlord V1.X board
|
// Additional connectors/pins on the Overlord V1.X board
|
||||||
|
|||||||
@@ -711,6 +711,8 @@
|
|||||||
#include "stm32f4/pins_FYSETC_SPIDER_KING407.h" // STM32F4 env:FYSETC_SPIDER_KING407
|
#include "stm32f4/pins_FYSETC_SPIDER_KING407.h" // STM32F4 env:FYSETC_SPIDER_KING407
|
||||||
#elif MB(MKS_SKIPR_V1)
|
#elif MB(MKS_SKIPR_V1)
|
||||||
#include "stm32f4/pins_MKS_SKIPR_V1_0.h" // STM32F4 env:mks_skipr_v1 env:mks_skipr_v1_nobootloader
|
#include "stm32f4/pins_MKS_SKIPR_V1_0.h" // STM32F4 env:mks_skipr_v1 env:mks_skipr_v1_nobootloader
|
||||||
|
#elif MB(TRONXY_V10)
|
||||||
|
#include "stm32f4/pins_TRONXY_V10.h" // STM32F4 env:STM32F446_tronxy
|
||||||
|
|
||||||
//
|
//
|
||||||
// ARM Cortex M7
|
// ARM Cortex M7
|
||||||
|
|||||||
+10
-10
@@ -45,23 +45,23 @@
|
|||||||
#define REPORT_NAME_ANALOG(COUNTER, NAME) _ADD_PIN(#NAME, COUNTER)
|
#define REPORT_NAME_ANALOG(COUNTER, NAME) _ADD_PIN(#NAME, COUNTER)
|
||||||
|
|
||||||
#include "pinsDebug_list.h"
|
#include "pinsDebug_list.h"
|
||||||
#line 48
|
#line 49
|
||||||
|
|
||||||
// manually add pins that have names that are macros which don't play well with these macros
|
// manually add pins that have names that are macros which don't play well with these macros
|
||||||
#if ANY(AVR_ATmega2560_FAMILY, AVR_ATmega1284_FAMILY, ARDUINO_ARCH_SAM, TARGET_LPC1768)
|
#if ANY(AVR_ATmega2560_FAMILY, AVR_ATmega1284_FAMILY, ARDUINO_ARCH_SAM, TARGET_LPC1768)
|
||||||
#if CONF_SERIAL_IS(0)
|
#if SERIAL_IN_USE(0)
|
||||||
static const char RXD_NAME_0[] PROGMEM = { "RXD0" };
|
static const char RXD_NAME_0[] PROGMEM = { "RXD0" };
|
||||||
static const char TXD_NAME_0[] PROGMEM = { "TXD0" };
|
static const char TXD_NAME_0[] PROGMEM = { "TXD0" };
|
||||||
#endif
|
#endif
|
||||||
#if CONF_SERIAL_IS(1)
|
#if SERIAL_IN_USE(1)
|
||||||
static const char RXD_NAME_1[] PROGMEM = { "RXD1" };
|
static const char RXD_NAME_1[] PROGMEM = { "RXD1" };
|
||||||
static const char TXD_NAME_1[] PROGMEM = { "TXD1" };
|
static const char TXD_NAME_1[] PROGMEM = { "TXD1" };
|
||||||
#endif
|
#endif
|
||||||
#if CONF_SERIAL_IS(2)
|
#if SERIAL_IN_USE(2)
|
||||||
static const char RXD_NAME_2[] PROGMEM = { "RXD2" };
|
static const char RXD_NAME_2[] PROGMEM = { "RXD2" };
|
||||||
static const char TXD_NAME_2[] PROGMEM = { "TXD2" };
|
static const char TXD_NAME_2[] PROGMEM = { "TXD2" };
|
||||||
#endif
|
#endif
|
||||||
#if CONF_SERIAL_IS(3)
|
#if SERIAL_IN_USE(3)
|
||||||
static const char RXD_NAME_3[] PROGMEM = { "RXD3" };
|
static const char RXD_NAME_3[] PROGMEM = { "RXD3" };
|
||||||
static const char TXD_NAME_3[] PROGMEM = { "TXD3" };
|
static const char TXD_NAME_3[] PROGMEM = { "TXD3" };
|
||||||
#endif
|
#endif
|
||||||
@@ -99,7 +99,7 @@ const PinInfo pin_array[] PROGMEM = {
|
|||||||
* 2 bytes containing the digital/analog bool flag
|
* 2 bytes containing the digital/analog bool flag
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if CONF_SERIAL_IS(0)
|
#if SERIAL_IN_USE(0)
|
||||||
#if EITHER(AVR_ATmega2560_FAMILY, ARDUINO_ARCH_SAM)
|
#if EITHER(AVR_ATmega2560_FAMILY, ARDUINO_ARCH_SAM)
|
||||||
{ RXD_NAME_0, 0, true },
|
{ RXD_NAME_0, 0, true },
|
||||||
{ TXD_NAME_0, 1, true },
|
{ TXD_NAME_0, 1, true },
|
||||||
@@ -112,7 +112,7 @@ const PinInfo pin_array[] PROGMEM = {
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CONF_SERIAL_IS(1)
|
#if SERIAL_IN_USE(1)
|
||||||
#if EITHER(AVR_ATmega2560_FAMILY, ARDUINO_ARCH_SAM)
|
#if EITHER(AVR_ATmega2560_FAMILY, ARDUINO_ARCH_SAM)
|
||||||
{ RXD_NAME_1, 19, true },
|
{ RXD_NAME_1, 19, true },
|
||||||
{ TXD_NAME_1, 18, true },
|
{ TXD_NAME_1, 18, true },
|
||||||
@@ -130,7 +130,7 @@ const PinInfo pin_array[] PROGMEM = {
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CONF_SERIAL_IS(2)
|
#if SERIAL_IN_USE(2)
|
||||||
#if EITHER(AVR_ATmega2560_FAMILY, ARDUINO_ARCH_SAM)
|
#if EITHER(AVR_ATmega2560_FAMILY, ARDUINO_ARCH_SAM)
|
||||||
{ RXD_NAME_2, 17, true },
|
{ RXD_NAME_2, 17, true },
|
||||||
{ TXD_NAME_2, 16, true },
|
{ TXD_NAME_2, 16, true },
|
||||||
@@ -145,7 +145,7 @@ const PinInfo pin_array[] PROGMEM = {
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CONF_SERIAL_IS(3)
|
#if SERIAL_IN_USE(3)
|
||||||
#if EITHER(AVR_ATmega2560_FAMILY, ARDUINO_ARCH_SAM)
|
#if EITHER(AVR_ATmega2560_FAMILY, ARDUINO_ARCH_SAM)
|
||||||
{ RXD_NAME_3, 15, true },
|
{ RXD_NAME_3, 15, true },
|
||||||
{ TXD_NAME_3, 14, true },
|
{ TXD_NAME_3, 14, true },
|
||||||
@@ -164,7 +164,7 @@ const PinInfo pin_array[] PROGMEM = {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "pinsDebug_list.h"
|
#include "pinsDebug_list.h"
|
||||||
#line 167
|
#line 168
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+1037
-696
File diff suppressed because it is too large
Load Diff
@@ -103,9 +103,9 @@
|
|||||||
|
|
||||||
// Direction buttons
|
// Direction buttons
|
||||||
#define BTN_UP 37
|
#define BTN_UP 37
|
||||||
#define BTN_DWN 35
|
#define BTN_DOWN 35
|
||||||
#define BTN_LFT 33
|
#define BTN_LEFT 33
|
||||||
#define BTN_RT 32
|
#define BTN_RIGHT 32
|
||||||
|
|
||||||
// 'R' button
|
// 'R' button
|
||||||
#undef BTN_ENC
|
#undef BTN_ENC
|
||||||
|
|||||||
@@ -107,8 +107,8 @@
|
|||||||
#define SDSS 53
|
#define SDSS 53
|
||||||
#define SD_DETECT_PIN 39
|
#define SD_DETECT_PIN 39
|
||||||
#define LED_PIN 8
|
#define LED_PIN 8
|
||||||
#define SAFETY_TRIGGERED_PIN 28 // PIN to detect the safety circuit has triggered
|
//#define SAFETY_TRIGGERED_PIN 28 // PIN to detect the safety circuit has triggered
|
||||||
#define MAIN_VOLTAGE_MEASURE_PIN 14 // ANALOG PIN to measure the main voltage, with a 100k - 4k7 resitor divider.
|
//#define MAIN_VOLTAGE_MEASURE_PIN 14 // ANALOG PIN to measure the main voltage, with a 100k - 4k7 resitor divider.
|
||||||
|
|
||||||
//
|
//
|
||||||
// LCD / Controller
|
// LCD / Controller
|
||||||
|
|||||||
@@ -28,31 +28,20 @@
|
|||||||
|
|
||||||
#include "pins_MKS_GEN_13.h" // ... RAMPS
|
#include "pins_MKS_GEN_13.h" // ... RAMPS
|
||||||
|
|
||||||
#define ZRIB_V20_D6_PIN 6 // Fan
|
|
||||||
#define ZRIB_V20_D9_PIN 9 // Fan2
|
|
||||||
#define ZRIB_V20_A10_PIN 10
|
|
||||||
#define ZRIB_V20_D16_PIN 16
|
|
||||||
#define ZRIB_V20_D17_PIN 17
|
|
||||||
#define ZRIB_V20_D23_PIN 23
|
|
||||||
#define ZRIB_V20_D25_PIN 25
|
|
||||||
#define ZRIB_V20_D27_PIN 27
|
|
||||||
#define ZRIB_V20_D29_PIN 29
|
|
||||||
#define ZRIB_V20_D37_PIN 37
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Auto fans
|
// Auto fans
|
||||||
//
|
//
|
||||||
#ifndef E0_AUTO_FAN_PIN
|
#ifndef E0_AUTO_FAN_PIN
|
||||||
#define E0_AUTO_FAN_PIN ZRIB_V20_D6_PIN
|
#define E0_AUTO_FAN_PIN 6 // Fan
|
||||||
#endif
|
#endif
|
||||||
#ifndef E1_AUTO_FAN_PIN
|
#ifndef E1_AUTO_FAN_PIN
|
||||||
#define E1_AUTO_FAN_PIN ZRIB_V20_D6_PIN
|
#define E1_AUTO_FAN_PIN 6
|
||||||
#endif
|
#endif
|
||||||
#ifndef E2_AUTO_FAN_PIN
|
#ifndef E2_AUTO_FAN_PIN
|
||||||
#define E2_AUTO_FAN_PIN ZRIB_V20_D6_PIN
|
#define E2_AUTO_FAN_PIN 6
|
||||||
#endif
|
#endif
|
||||||
#ifndef E3_AUTO_FAN_PIN
|
#ifndef E3_AUTO_FAN_PIN
|
||||||
#define E3_AUTO_FAN_PIN ZRIB_V20_D6_PIN
|
#define E3_AUTO_FAN_PIN 6
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef FILWIDTH_PIN
|
#ifndef FILWIDTH_PIN
|
||||||
@@ -76,12 +65,12 @@
|
|||||||
#undef BTN_EN2
|
#undef BTN_EN2
|
||||||
#undef BTN_ENC
|
#undef BTN_ENC
|
||||||
|
|
||||||
#define LCD_PINS_RS ZRIB_V20_D16_PIN
|
#define LCD_PINS_RS 16
|
||||||
#define LCD_PINS_ENABLE ZRIB_V20_D17_PIN
|
#define LCD_PINS_ENABLE 17
|
||||||
#define LCD_PINS_D4 ZRIB_V20_D23_PIN
|
#define LCD_PINS_D4 23
|
||||||
#define LCD_PINS_D5 ZRIB_V20_D25_PIN
|
#define LCD_PINS_D5 25
|
||||||
#define LCD_PINS_D6 ZRIB_V20_D27_PIN
|
#define LCD_PINS_D6 27
|
||||||
#define LCD_PINS_D7 ZRIB_V20_D29_PIN
|
#define LCD_PINS_D7 29
|
||||||
#define ADC_KEYPAD_PIN ZRIB_V20_A10_PIN
|
#define ADC_KEYPAD_PIN 10 // Analog Input
|
||||||
#define BEEPER_PIN ZRIB_V20_D37_PIN
|
#define BEEPER_PIN 37
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -114,8 +114,8 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// SPI Flash
|
// SPI Flash
|
||||||
#define HAS_SPI_FLASH 1
|
#define SPI_FLASH
|
||||||
#if HAS_SPI_FLASH
|
#if ENABLED(SPI_FLASH)
|
||||||
#define SPI_FLASH_SIZE 0x200000 // 2MB
|
#define SPI_FLASH_SIZE 0x200000 // 2MB
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -68,8 +68,8 @@
|
|||||||
#define SPI_DEVICE 2
|
#define SPI_DEVICE 2
|
||||||
|
|
||||||
// SPI Flash
|
// SPI Flash
|
||||||
#define HAS_SPI_FLASH 1
|
#define SPI_FLASH
|
||||||
#if HAS_SPI_FLASH
|
#if ENABLED(SPI_FLASH)
|
||||||
// SPI 2
|
// SPI 2
|
||||||
#define SPI_FLASH_CS_PIN PB12 // SPI2_NSS / Flash chip-select
|
#define SPI_FLASH_CS_PIN PB12 // SPI2_NSS / Flash chip-select
|
||||||
#define SPI_FLASH_MOSI_PIN PB15
|
#define SPI_FLASH_MOSI_PIN PB15
|
||||||
|
|||||||
@@ -183,7 +183,7 @@
|
|||||||
//
|
//
|
||||||
#if NO_EEPROM_SELECTED
|
#if NO_EEPROM_SELECTED
|
||||||
//#define SPI_EEPROM
|
//#define SPI_EEPROM
|
||||||
//#define HAS_SPI_FLASH 1 // need MARLIN_DEV_MODE for M993/M994 eeprom backup tests
|
//#define SPI_FLASH // need MARLIN_DEV_MODE for M993/M994 EEPROM backup tests
|
||||||
#define FLASH_EEPROM_EMULATION
|
#define FLASH_EEPROM_EMULATION
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -196,7 +196,7 @@
|
|||||||
#define EEPROM_MOSI_PIN BOARD_SPI1_MOSI_PIN // PA7 pin 32
|
#define EEPROM_MOSI_PIN BOARD_SPI1_MOSI_PIN // PA7 pin 32
|
||||||
#define EEPROM_PAGE_SIZE 0x1000U // 4K (from datasheet)
|
#define EEPROM_PAGE_SIZE 0x1000U // 4K (from datasheet)
|
||||||
#define MARLIN_EEPROM_SIZE 16UL * (EEPROM_PAGE_SIZE) // Limit to 64K for now...
|
#define MARLIN_EEPROM_SIZE 16UL * (EEPROM_PAGE_SIZE) // Limit to 64K for now...
|
||||||
#elif HAS_SPI_FLASH
|
#elif ENABLED(SPI_FLASH)
|
||||||
#define SPI_FLASH_SIZE 0x40000U // limit to 256K (M993 will reboot with 512)
|
#define SPI_FLASH_SIZE 0x40000U // limit to 256K (M993 will reboot with 512)
|
||||||
#define SPI_FLASH_CS_PIN PC5
|
#define SPI_FLASH_CS_PIN PC5
|
||||||
#define SPI_FLASH_MOSI_PIN PA7
|
#define SPI_FLASH_MOSI_PIN PA7
|
||||||
|
|||||||
@@ -272,8 +272,8 @@
|
|||||||
//
|
//
|
||||||
// W25Q64 64Mb (8MB) SPI flash
|
// W25Q64 64Mb (8MB) SPI flash
|
||||||
//
|
//
|
||||||
#define HAS_SPI_FLASH 1
|
#define SPI_FLASH
|
||||||
#if HAS_SPI_FLASH
|
#if ENABLED(SPI_FLASH)
|
||||||
#define SPI_FLASH_SIZE 0x800000 // 8MB
|
#define SPI_FLASH_SIZE 0x800000 // 8MB
|
||||||
#define SPI_FLASH_CS_PIN PG9
|
#define SPI_FLASH_CS_PIN PG9
|
||||||
#define SPI_FLASH_MOSI_PIN PB15
|
#define SPI_FLASH_MOSI_PIN PB15
|
||||||
|
|||||||
@@ -377,8 +377,8 @@
|
|||||||
|
|
||||||
#endif // HAS_WIRED_LCD && !HAS_SPI_TFT
|
#endif // HAS_WIRED_LCD && !HAS_SPI_TFT
|
||||||
|
|
||||||
#define HAS_SPI_FLASH 1
|
#define SPI_FLASH
|
||||||
#if HAS_SPI_FLASH
|
#if ENABLED(SPI_FLASH)
|
||||||
#define SPI_FLASH_SIZE 0x1000000 // 16MB
|
#define SPI_FLASH_SIZE 0x1000000 // 16MB
|
||||||
#define SPI_FLASH_CS_PIN PB12
|
#define SPI_FLASH_CS_PIN PB12
|
||||||
#define SPI_FLASH_MOSI_PIN PB15
|
#define SPI_FLASH_MOSI_PIN PB15
|
||||||
|
|||||||
@@ -196,8 +196,8 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define HAS_SPI_FLASH 1
|
#define SPI_FLASH
|
||||||
#if HAS_SPI_FLASH
|
#if ENABLED(SPI_FLASH)
|
||||||
#define SPI_FLASH_SIZE 0x1000000 // 16MB
|
#define SPI_FLASH_SIZE 0x1000000 // 16MB
|
||||||
#define SPI_FLASH_CS_PIN PB12 // Flash chip-select
|
#define SPI_FLASH_CS_PIN PB12 // Flash chip-select
|
||||||
#define SPI_FLASH_MOSI_PIN PB15
|
#define SPI_FLASH_MOSI_PIN PB15
|
||||||
|
|||||||
@@ -379,8 +379,8 @@
|
|||||||
|
|
||||||
#endif // HAS_WIRED_LCD && !HAS_SPI_TFT
|
#endif // HAS_WIRED_LCD && !HAS_SPI_TFT
|
||||||
|
|
||||||
#define HAS_SPI_FLASH 1
|
#define SPI_FLASH
|
||||||
#if HAS_SPI_FLASH
|
#if ENABLED(SPI_FLASH)
|
||||||
#define SPI_FLASH_SIZE 0x1000000 // 16MB
|
#define SPI_FLASH_SIZE 0x1000000 // 16MB
|
||||||
#define SPI_FLASH_CS_PIN PB12
|
#define SPI_FLASH_CS_PIN PB12
|
||||||
#define SPI_FLASH_MOSI_PIN PB15
|
#define SPI_FLASH_MOSI_PIN PB15
|
||||||
|
|||||||
@@ -208,8 +208,8 @@
|
|||||||
#define TFT_BUFFER_SIZE 14400
|
#define TFT_BUFFER_SIZE 14400
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define HAS_SPI_FLASH 1
|
#define SPI_FLASH
|
||||||
#if HAS_SPI_FLASH
|
#if ENABLED(SPI_FLASH)
|
||||||
#define SPI_FLASH_SIZE 0x1000000 // 16MB
|
#define SPI_FLASH_SIZE 0x1000000 // 16MB
|
||||||
#define SPI_FLASH_CS_PIN PB12
|
#define SPI_FLASH_CS_PIN PB12
|
||||||
#define SPI_FLASH_MOSI_PIN PB15
|
#define SPI_FLASH_MOSI_PIN PB15
|
||||||
|
|||||||
@@ -308,8 +308,8 @@
|
|||||||
#define BOARD_ST7920_DELAY_3 125
|
#define BOARD_ST7920_DELAY_3 125
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define HAS_SPI_FLASH 1
|
#define SPI_FLASH
|
||||||
#if HAS_SPI_FLASH
|
#if ENABLED(SPI_FLASH)
|
||||||
#define SPI_FLASH_SIZE 0x1000000 // 16MB
|
#define SPI_FLASH_SIZE 0x1000000 // 16MB
|
||||||
#define SPI_FLASH_CS_PIN PB12 // Flash chip-select
|
#define SPI_FLASH_CS_PIN PB12 // Flash chip-select
|
||||||
#define SPI_FLASH_MOSI_PIN PB15
|
#define SPI_FLASH_MOSI_PIN PB15
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
// Onboard I2C EEPROM
|
// Onboard I2C EEPROM
|
||||||
#define I2C_EEPROM
|
#define I2C_EEPROM
|
||||||
#define MARLIN_EEPROM_SIZE 0x1000 // 4KB (AT24C32)
|
#define MARLIN_EEPROM_SIZE 0x1000 // 4K (AT24C32)
|
||||||
#define I2C_SCL_PIN PB8
|
#define I2C_SCL_PIN PB8
|
||||||
#define I2C_SDA_PIN PB9
|
#define I2C_SDA_PIN PB9
|
||||||
|
|
||||||
|
|||||||
@@ -49,7 +49,7 @@
|
|||||||
#define SOFT_I2C_EEPROM // Force the use of Software I2C
|
#define SOFT_I2C_EEPROM // Force the use of Software I2C
|
||||||
#define I2C_SCL_PIN PB8
|
#define I2C_SCL_PIN PB8
|
||||||
#define I2C_SDA_PIN PB9
|
#define I2C_SDA_PIN PB9
|
||||||
#define MARLIN_EEPROM_SIZE 0x1000 // 4KB
|
#define MARLIN_EEPROM_SIZE 0x1000 // 4K
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -225,7 +225,7 @@
|
|||||||
|
|
||||||
#define SPI_FLASH
|
#define SPI_FLASH
|
||||||
#if ENABLED(SPI_FLASH)
|
#if ENABLED(SPI_FLASH)
|
||||||
#define HAS_SPI_FLASH 1
|
#define SPI_FLASH
|
||||||
#define SPI_DEVICE 2
|
#define SPI_DEVICE 2
|
||||||
#define SPI_FLASH_SIZE 0x1000000
|
#define SPI_FLASH_SIZE 0x1000000
|
||||||
#define SPI_FLASH_CS_PIN PB12
|
#define SPI_FLASH_CS_PIN PB12
|
||||||
|
|||||||
@@ -273,7 +273,7 @@
|
|||||||
//
|
//
|
||||||
// LCD / Controller
|
// LCD / Controller
|
||||||
#define SPI_FLASH
|
#define SPI_FLASH
|
||||||
#define HAS_SPI_FLASH 1
|
#define SPI_FLASH
|
||||||
#define SPI_DEVICE 2
|
#define SPI_DEVICE 2
|
||||||
#define SPI_FLASH_SIZE 0x1000000
|
#define SPI_FLASH_SIZE 0x1000000
|
||||||
#if ENABLED(SPI_FLASH)
|
#if ENABLED(SPI_FLASH)
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
// Onboard I2C EEPROM
|
// Onboard I2C EEPROM
|
||||||
#define I2C_EEPROM
|
#define I2C_EEPROM
|
||||||
#define MARLIN_EEPROM_SIZE 0x1000 // 4KB (AT24C32)
|
#define MARLIN_EEPROM_SIZE 0x1000 // 4K (AT24C32)
|
||||||
#define I2C_SCL_PIN PB8
|
#define I2C_SCL_PIN PB8
|
||||||
#define I2C_SDA_PIN PB9
|
#define I2C_SDA_PIN PB9
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,10 @@
|
|||||||
#define ALLOW_STM32DUINO
|
#define ALLOW_STM32DUINO
|
||||||
#include "env_validate.h"
|
#include "env_validate.h"
|
||||||
|
|
||||||
|
#if HOTENDS > 1 || E_STEPPERS > 1
|
||||||
|
#error "TH3D EZBoard only supports 1 hotend / E stepper."
|
||||||
|
#endif
|
||||||
|
|
||||||
#define BOARD_INFO_NAME "TH3D EZBoard V2"
|
#define BOARD_INFO_NAME "TH3D EZBoard V2"
|
||||||
#define BOARD_WEBSITE_URL "th3dstudio.com"
|
#define BOARD_WEBSITE_URL "th3dstudio.com"
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,266 @@
|
|||||||
|
/**
|
||||||
|
* Marlin 3D Printer Firmware
|
||||||
|
* Copyright (c) 2022 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 <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "env_validate.h"
|
||||||
|
|
||||||
|
#if HOTENDS > 3 || E_STEPPERS > 3
|
||||||
|
#error "Tronxy V10 supports up to 3 hotends / E steppers."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BOARD_INFO_NAME "Tronxy V10"
|
||||||
|
#define DEFAULT_MACHINE_NAME BOARD_INFO_NAME
|
||||||
|
|
||||||
|
#define STEP_TIMER 6
|
||||||
|
#define TEMP_TIMER 14
|
||||||
|
|
||||||
|
//
|
||||||
|
// Servos
|
||||||
|
//
|
||||||
|
//#define SERVO0_PIN PB10
|
||||||
|
|
||||||
|
//
|
||||||
|
// EEPROM
|
||||||
|
//
|
||||||
|
#if NO_EEPROM_SELECTED
|
||||||
|
#undef NO_EEPROM_SELECTED
|
||||||
|
#if TRONXY_UI > 0
|
||||||
|
#define EEPROM_AT24CXX
|
||||||
|
#else
|
||||||
|
#define FLASH_EEPROM_EMULATION
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if ENABLED(FLASH_EEPROM_EMULATION)
|
||||||
|
// SoC Flash (framework-arduinoststm32-maple/STM32F1/libraries/EEPROM/EEPROM.h)
|
||||||
|
#define EEPROM_START_ADDRESS (0x8000000UL + (512 * 1024) - 2 * EEPROM_PAGE_SIZE)
|
||||||
|
#define EEPROM_PAGE_SIZE (0x800U) // 2KB, but will use 2x more (4KB)
|
||||||
|
#define MARLIN_EEPROM_SIZE EEPROM_PAGE_SIZE
|
||||||
|
#else
|
||||||
|
#if ENABLED(EEPROM_AT24CXX)
|
||||||
|
#define AT24CXX_SCL PB8
|
||||||
|
#define AT24CXX_SDA PB9
|
||||||
|
#define AT24CXX_WP PB7
|
||||||
|
#else
|
||||||
|
#define I2C_EEPROM // AT24C32
|
||||||
|
#endif
|
||||||
|
#define MARLIN_EEPROM_SIZE 0x1000 // 4K
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// SPI Flash
|
||||||
|
//
|
||||||
|
//#define SPI_FLASH
|
||||||
|
#if ENABLED(SPI_FLASH)
|
||||||
|
#define SPI_FLASH_SIZE 0x200000 // 2MB
|
||||||
|
#define W25QXX_CS_PIN PG15 // SPI2
|
||||||
|
#define W25QXX_MOSI_PIN PB5
|
||||||
|
#define W25QXX_MISO_PIN PB4
|
||||||
|
#define W25QXX_SCK_PIN PB3
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Limit Switches
|
||||||
|
//
|
||||||
|
#define X_MIN_PIN PC15
|
||||||
|
#define X_MAX_PIN PB0
|
||||||
|
#define Y_STOP_PIN PC14
|
||||||
|
|
||||||
|
#ifndef Z_MIN_PROBE_PIN
|
||||||
|
#define Z_MIN_PROBE_PIN PE3
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if ENABLED(DUAL_Z_ENDSTOP_PROBE)
|
||||||
|
#if NUM_Z_STEPPERS > 1 && Z_HOME_TO_MAX // Swap Z1/Z2 for dual Z with max homing
|
||||||
|
#define Z_MIN_PIN PF11
|
||||||
|
#define Z_MAX_PIN PC13
|
||||||
|
#else
|
||||||
|
#define Z_MIN_PIN PC13
|
||||||
|
#define Z_MAX_PIN PF11
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#ifndef Z_STOP_PIN
|
||||||
|
#define Z_STOP_PIN PC13
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// Filament Sensors
|
||||||
|
//
|
||||||
|
#ifndef FIL_RUNOUT_PIN
|
||||||
|
#define FIL_RUNOUT_PIN PE6 // MT_DET
|
||||||
|
#endif
|
||||||
|
#ifndef FIL_RUNOUT2_PIN
|
||||||
|
#define FIL_RUNOUT2_PIN PF12
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Steppers
|
||||||
|
//
|
||||||
|
#define X_ENABLE_PIN PF0
|
||||||
|
#define X_STEP_PIN PE5
|
||||||
|
#define X_DIR_PIN PF1
|
||||||
|
|
||||||
|
#define Y_ENABLE_PIN PF5
|
||||||
|
#define Y_STEP_PIN PF9
|
||||||
|
#define Y_DIR_PIN PF3
|
||||||
|
|
||||||
|
#define Z_ENABLE_PIN PA5
|
||||||
|
#define Z_STEP_PIN PA6
|
||||||
|
#define Z_DIR_PIN PF15
|
||||||
|
|
||||||
|
#define E0_ENABLE_PIN PF14
|
||||||
|
#define E0_STEP_PIN PB1
|
||||||
|
#define E0_DIR_PIN PF13
|
||||||
|
|
||||||
|
#define E1_ENABLE_PIN PG5
|
||||||
|
#define E1_STEP_PIN PD12
|
||||||
|
#define E1_DIR_PIN PG4
|
||||||
|
|
||||||
|
#define E2_ENABLE_PIN PF7
|
||||||
|
#define E2_STEP_PIN PF6
|
||||||
|
#define E2_DIR_PIN PF4
|
||||||
|
|
||||||
|
//
|
||||||
|
// Temperature Sensors
|
||||||
|
//
|
||||||
|
#define TEMP_0_PIN PC3 // TH1
|
||||||
|
#define TEMP_BED_PIN PC2 // TB1
|
||||||
|
|
||||||
|
//
|
||||||
|
// Heaters / Fans
|
||||||
|
//
|
||||||
|
#define HEATER_0_PIN PG7 // HEATER1
|
||||||
|
#define HEATER_BED_PIN PE2 // HOT BED
|
||||||
|
//#define HEATER_BED_INVERTING true
|
||||||
|
|
||||||
|
#define FAN_PIN PG0 // FAN0
|
||||||
|
#define FAN1_PIN PB6 // FAN1
|
||||||
|
#define FAN2_PIN PG9 // FAN2
|
||||||
|
#define FAN3_PIN PF10 // FAN3
|
||||||
|
#define CONTROLLER_FAN_PIN PD7 // BOARD FAN
|
||||||
|
#define FAN_SOFT_PWM
|
||||||
|
|
||||||
|
//
|
||||||
|
// Laser / Spindle
|
||||||
|
//
|
||||||
|
#if HAS_CUTTER
|
||||||
|
#define SPINDLE_LASER_ENA_PIN PB11 // wifi:TX
|
||||||
|
#if ENABLED(SPINDLE_LASER_USE_PWM)
|
||||||
|
#define SPINDLE_LASER_PWM_PIN PB10 // wifi:RX-TIM2_CH3
|
||||||
|
// The PWM pin definition const PinMap PinMap_PWM[] in PeripheralPins.c must be compounded here
|
||||||
|
// See PWM_PIN(x) definition for details
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Misc
|
||||||
|
//
|
||||||
|
#define BEEPER_PIN PA8
|
||||||
|
|
||||||
|
//#define LED_PIN PG10
|
||||||
|
#define PS_ON_PIN PG10 // Temporarily switch the machine with LED simulation
|
||||||
|
|
||||||
|
#if ENABLED(TRONXY_BACKUP_POWER)
|
||||||
|
#define POWER_LOSS_PIN PF11 // Configure as drop-down input
|
||||||
|
#else
|
||||||
|
#define POWER_LOSS_PIN PE1 // Output of LM393 comparator, configured as pullup
|
||||||
|
#endif
|
||||||
|
//#define POWER_LM393_PIN PE0 // +V for the LM393 comparator, configured as output high
|
||||||
|
|
||||||
|
#if ENABLED(TFT_TRONXY_X5SA)
|
||||||
|
#error "TFT_TRONXY_X5SA is not yet supported."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
|
||||||
|
//
|
||||||
|
// TFT with FSMC interface
|
||||||
|
//
|
||||||
|
#if HAS_FSMC_TFT
|
||||||
|
#define TFT_RESET_PIN PB12
|
||||||
|
#define TFT_BACKLIGHT_PIN PG8
|
||||||
|
|
||||||
|
#define LCD_USE_DMA_FSMC // Use DMA transfers to send data to the TFT
|
||||||
|
#define FSMC_DMA_DEV DMA2
|
||||||
|
#define FSMC_DMA_CHANNEL DMA_CH5
|
||||||
|
|
||||||
|
#define TFT_CS_PIN PG12
|
||||||
|
#define TFT_RS_PIN PG2
|
||||||
|
|
||||||
|
//#define TFT_WIDTH 480
|
||||||
|
//#define TFT_HEIGHT 320
|
||||||
|
//#define TFT_PIXEL_OFFSET_X 48
|
||||||
|
//#define TFT_PIXEL_OFFSET_Y 32
|
||||||
|
//#define TFT_DRIVER ILI9488
|
||||||
|
//#define TFT_BUFFER_SIZE 14400
|
||||||
|
|
||||||
|
#if NEED_TOUCH_PINS
|
||||||
|
#define TOUCH_CS_PIN PD11 // SPI1_NSS
|
||||||
|
#define TOUCH_SCK_PIN PB13 // SPI1_SCK
|
||||||
|
#define TOUCH_MISO_PIN PB14 // SPI1_MISO
|
||||||
|
#define TOUCH_MOSI_PIN PB15 // SPI1_MOSI
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (LCD_CHIP_INDEX == 1 && (TRONXY_UI == 1 || TRONXY_UI == 2)) || LCD_CHIP_INDEX == 3
|
||||||
|
#define TOUCH_CALIBRATION_X -17181
|
||||||
|
#define TOUCH_CALIBRATION_Y 11434
|
||||||
|
#define TOUCH_OFFSET_X 501
|
||||||
|
#define TOUCH_OFFSET_Y -9
|
||||||
|
#elif LCD_CHIP_INDEX == 1 && TRONXY_UI == 4
|
||||||
|
#define TOUCH_CALIBRATION_X 11166
|
||||||
|
#define TOUCH_CALIBRATION_Y 17162
|
||||||
|
#define TOUCH_OFFSET_X -10
|
||||||
|
#define TOUCH_OFFSET_Y -16
|
||||||
|
#elif LCD_CHIP_INDEX == 4 && TRONXY_UI == 3
|
||||||
|
//#define TOUCH_CALIBRATION_X 8781
|
||||||
|
//#define TOUCH_CALIBRATION_Y 11773
|
||||||
|
//#define TOUCH_OFFSET_X -17
|
||||||
|
//#define TOUCH_OFFSET_Y -16
|
||||||
|
// Upside-down
|
||||||
|
#define TOUCH_CALIBRATION_X -8553
|
||||||
|
#define TOUCH_CALIBRATION_Y -11667
|
||||||
|
#define TOUCH_OFFSET_X 253
|
||||||
|
#define TOUCH_OFFSET_Y 331
|
||||||
|
#elif LCD_CHIP_INDEX == 2
|
||||||
|
#define TOUCH_CALIBRATION_X 17184
|
||||||
|
#define TOUCH_CALIBRATION_Y 10604
|
||||||
|
#define TOUCH_OFFSET_X -31
|
||||||
|
#define TOUCH_OFFSET_Y -29
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// SD Card
|
||||||
|
//
|
||||||
|
#define SDIO_SUPPORT
|
||||||
|
#define SD_DETECT_PIN -1 // PF0, but not connected
|
||||||
|
#define SDIO_CLOCK 4500000
|
||||||
|
#define SDIO_READ_RETRIES 16
|
||||||
|
|
||||||
|
#define SDIO_D0_PIN PC8
|
||||||
|
#define SDIO_D1_PIN PC9
|
||||||
|
#define SDIO_D2_PIN PC10
|
||||||
|
#define SDIO_D3_PIN PC11
|
||||||
|
#define SDIO_CK_PIN PC12
|
||||||
|
#define SDIO_CMD_PIN PD2
|
||||||
@@ -46,7 +46,7 @@
|
|||||||
#define SOFT_I2C_EEPROM // Force the use of Software I2C
|
#define SOFT_I2C_EEPROM // Force the use of Software I2C
|
||||||
#define I2C_SCL_PIN PA14
|
#define I2C_SCL_PIN PA14
|
||||||
#define I2C_SDA_PIN PA13
|
#define I2C_SDA_PIN PA13
|
||||||
#define MARLIN_EEPROM_SIZE 0x1000 // 4KB
|
#define MARLIN_EEPROM_SIZE 0x1000 // 4K
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"build": {
|
||||||
|
"cpu": "cortex-m4",
|
||||||
|
"extra_flags": "-DSTM32F446xx",
|
||||||
|
"f_cpu": "180000000L",
|
||||||
|
"mcu": "stm32f446zet6",
|
||||||
|
"variant": "MARLIN_F446Zx_TRONXY"
|
||||||
|
},
|
||||||
|
"connectivity": [
|
||||||
|
"can"
|
||||||
|
],
|
||||||
|
"debug": {
|
||||||
|
"jlink_device": "STM32F446ZE",
|
||||||
|
"openocd_target": "stm32f4x",
|
||||||
|
"svd_path": "STM32F446x.svd"
|
||||||
|
},
|
||||||
|
"frameworks": [
|
||||||
|
"arduino",
|
||||||
|
"stm32cube"
|
||||||
|
],
|
||||||
|
"name": "STM32F446ZE (128k RAM. 512k Flash)",
|
||||||
|
"upload": {
|
||||||
|
"maximum_ram_size": 131072,
|
||||||
|
"maximum_size": 524288,
|
||||||
|
"protocol": "stlink",
|
||||||
|
"protocols": [
|
||||||
|
"jlink",
|
||||||
|
"stlink",
|
||||||
|
"blackmagic",
|
||||||
|
"serial"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"url": "https://www.st.com/en/microcontrollers-microprocessors/stm32f446.html",
|
||||||
|
"vendor": "Generic"
|
||||||
|
}
|
||||||
@@ -4,16 +4,16 @@
|
|||||||
import pioutil
|
import pioutil
|
||||||
if pioutil.is_pio_build():
|
if pioutil.is_pio_build():
|
||||||
|
|
||||||
Import("env", "projenv")
|
Import("env", "projenv")
|
||||||
|
|
||||||
flash_size = 0
|
flash_size = 0
|
||||||
vect_tab_addr = 0
|
vect_tab_addr = 0
|
||||||
|
|
||||||
for define in env['CPPDEFINES']:
|
for define in env['CPPDEFINES']:
|
||||||
if define[0] == "VECT_TAB_ADDR":
|
if define[0] == "VECT_TAB_ADDR":
|
||||||
vect_tab_addr = define[1]
|
vect_tab_addr = define[1]
|
||||||
if define[0] == "STM32_FLASH_SIZE":
|
if define[0] == "STM32_FLASH_SIZE":
|
||||||
flash_size = define[1]
|
flash_size = define[1]
|
||||||
|
|
||||||
print('Use the {0:s} address as the marlin app entry point.'.format(vect_tab_addr))
|
print('Use the {0:s} address as the marlin app entry point.'.format(vect_tab_addr))
|
||||||
print('Use the {0:d}KB flash version of stm32f103rct6 chip.'.format(flash_size))
|
print('Use the {0:d}KB flash version of stm32f103rct6 chip.'.format(flash_size))
|
||||||
|
|||||||
@@ -3,25 +3,25 @@
|
|||||||
#
|
#
|
||||||
import pioutil
|
import pioutil
|
||||||
if pioutil.is_pio_build():
|
if pioutil.is_pio_build():
|
||||||
from os.path import join
|
from os.path import join
|
||||||
from os.path import expandvars
|
from os.path import expandvars
|
||||||
Import("env")
|
Import("env")
|
||||||
|
|
||||||
# Custom HEX from ELF
|
# Custom HEX from ELF
|
||||||
env.AddPostAction(
|
env.AddPostAction(
|
||||||
join("$BUILD_DIR", "${PROGNAME}.elf"),
|
join("$BUILD_DIR", "${PROGNAME}.elf"),
|
||||||
env.VerboseAction(" ".join([
|
env.VerboseAction(" ".join([
|
||||||
"$OBJCOPY", "-O ihex", "$TARGET",
|
"$OBJCOPY", "-O ihex", "$TARGET",
|
||||||
"\"" + join("$BUILD_DIR", "${PROGNAME}.hex") + "\"", # Note: $BUILD_DIR is a full path
|
"\"" + join("$BUILD_DIR", "${PROGNAME}.hex") + "\"", # Note: $BUILD_DIR is a full path
|
||||||
]), "Building $TARGET"))
|
]), "Building $TARGET"))
|
||||||
|
|
||||||
# In-line command with arguments
|
# In-line command with arguments
|
||||||
UPLOAD_TOOL="stm32flash"
|
UPLOAD_TOOL="stm32flash"
|
||||||
platform = env.PioPlatform()
|
platform = env.PioPlatform()
|
||||||
if platform.get_package_dir("tool-stm32duino") != None:
|
if platform.get_package_dir("tool-stm32duino") != None:
|
||||||
UPLOAD_TOOL=expandvars("\"" + join(platform.get_package_dir("tool-stm32duino"),"stm32flash","stm32flash") + "\"")
|
UPLOAD_TOOL=expandvars("\"" + join(platform.get_package_dir("tool-stm32duino"),"stm32flash","stm32flash") + "\"")
|
||||||
|
|
||||||
env.Replace(
|
env.Replace(
|
||||||
UPLOADER=UPLOAD_TOOL,
|
UPLOADER=UPLOAD_TOOL,
|
||||||
UPLOADCMD=expandvars(UPLOAD_TOOL + " -v -i rts,-dtr,dtr -R -b 115200 -g 0x8000000 -w \"" + join("$BUILD_DIR","${PROGNAME}.hex")+"\"" + " $UPLOAD_PORT")
|
UPLOADCMD=expandvars(UPLOAD_TOOL + " -v -i rts,-dtr,dtr -R -b 115200 -g 0x8000000 -w \"" + join("$BUILD_DIR","${PROGNAME}.hex")+"\"" + " $UPLOAD_PORT")
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -3,29 +3,29 @@
|
|||||||
#
|
#
|
||||||
import pioutil
|
import pioutil
|
||||||
if pioutil.is_pio_build():
|
if pioutil.is_pio_build():
|
||||||
import shutil,marlin
|
import shutil,marlin
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
Import("env")
|
Import("env")
|
||||||
platform = env.PioPlatform()
|
platform = env.PioPlatform()
|
||||||
board = env.BoardConfig()
|
board = env.BoardConfig()
|
||||||
|
|
||||||
FRAMEWORK_DIR = Path(platform.get_package_dir("framework-arduinoststm32-maple"))
|
FRAMEWORK_DIR = Path(platform.get_package_dir("framework-arduinoststm32-maple"))
|
||||||
assert FRAMEWORK_DIR.is_dir()
|
assert FRAMEWORK_DIR.is_dir()
|
||||||
|
|
||||||
source_root = Path("buildroot/share/PlatformIO/variants")
|
source_root = Path("buildroot/share/PlatformIO/variants")
|
||||||
assert source_root.is_dir()
|
assert source_root.is_dir()
|
||||||
|
|
||||||
variant = board.get("build.variant")
|
variant = board.get("build.variant")
|
||||||
variant_dir = FRAMEWORK_DIR / "STM32F1/variants" / variant
|
variant_dir = FRAMEWORK_DIR / "STM32F1/variants" / variant
|
||||||
|
|
||||||
source_dir = source_root / variant
|
source_dir = source_root / variant
|
||||||
assert source_dir.is_dir()
|
assert source_dir.is_dir()
|
||||||
|
|
||||||
if variant_dir.is_dir():
|
if variant_dir.is_dir():
|
||||||
shutil.rmtree(variant_dir)
|
shutil.rmtree(variant_dir)
|
||||||
|
|
||||||
if not variant_dir.is_dir():
|
if not variant_dir.is_dir():
|
||||||
variant_dir.mkdir()
|
variant_dir.mkdir()
|
||||||
|
|
||||||
marlin.copytree(source_dir, variant_dir)
|
marlin.copytree(source_dir, variant_dir)
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @attention
|
* @attention
|
||||||
*
|
*
|
||||||
* <h2><center>© Copyright (c) 2017 STMicroelectronics.
|
* Copyright (c) 2017 STMicroelectronics.
|
||||||
* All rights reserved.</center></h2>
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This software component is licensed by ST under BSD 3-Clause license,
|
* This software component is licensed by ST under BSD 3-Clause license,
|
||||||
* the "License"; You may not use this file except in compliance with the
|
* the "License"; You may not use this file except in compliance with the
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
*****************************************************************************
|
*****************************************************************************
|
||||||
** @attention
|
** @attention
|
||||||
**
|
**
|
||||||
** <h2><center>© COPYRIGHT(c) 2014 Ac6</center></h2>
|
** Copyright (c) 2014 Ac6
|
||||||
**
|
**
|
||||||
** Redistribution and use in source and binary forms, with or without modification,
|
** Redistribution and use in source and binary forms, with or without modification,
|
||||||
** are permitted provided that the following conditions are met:
|
** are permitted provided that the following conditions are met:
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @attention
|
* @attention
|
||||||
*
|
*
|
||||||
* <h2><center>© COPYRIGHT 2015 STMicroelectronics</center></h2>
|
* Copyright (c) 2015 STMicroelectronics
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without modification,
|
* Redistribution and use in source and binary forms, with or without modification,
|
||||||
* are permitted provided that the following conditions are met:
|
* are permitted provided that the following conditions are met:
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
*****************************************************************************
|
*****************************************************************************
|
||||||
** @attention
|
** @attention
|
||||||
**
|
**
|
||||||
** <h2><center>© COPYRIGHT(c) 2014 Ac6</center></h2>
|
** Copyright (c) 2014 Ac6
|
||||||
**
|
**
|
||||||
** Redistribution and use in source and binary forms, with or without modification,
|
** Redistribution and use in source and binary forms, with or without modification,
|
||||||
** are permitted provided that the following conditions are met:
|
** are permitted provided that the following conditions are met:
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
*****************************************************************************
|
*****************************************************************************
|
||||||
** @attention
|
** @attention
|
||||||
**
|
**
|
||||||
** <h2><center>© COPYRIGHT(c) 2014 Ac6</center></h2>
|
** Copyright (c) 2014 Ac6
|
||||||
**
|
**
|
||||||
** Redistribution and use in source and binary forms, with or without modification,
|
** Redistribution and use in source and binary forms, with or without modification,
|
||||||
** are permitted provided that the following conditions are met:
|
** are permitted provided that the following conditions are met:
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
*****************************************************************************
|
*****************************************************************************
|
||||||
** @attention
|
** @attention
|
||||||
**
|
**
|
||||||
** <h2><center>© COPYRIGHT(c) 2014 Ac6</center></h2>
|
** Copyright (c) 2014 Ac6
|
||||||
**
|
**
|
||||||
** Redistribution and use in source and binary forms, with or without modification,
|
** Redistribution and use in source and binary forms, with or without modification,
|
||||||
** are permitted provided that the following conditions are met:
|
** are permitted provided that the following conditions are met:
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
*****************************************************************************
|
*****************************************************************************
|
||||||
** @attention
|
** @attention
|
||||||
**
|
**
|
||||||
** <h2><center>© COPYRIGHT(c) 2014 Ac6</center></h2>
|
** Copyright (c) 2014 Ac6
|
||||||
**
|
**
|
||||||
** Redistribution and use in source and binary forms, with or without modification,
|
** Redistribution and use in source and binary forms, with or without modification,
|
||||||
** are permitted provided that the following conditions are met:
|
** are permitted provided that the following conditions are met:
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
*****************************************************************************
|
*****************************************************************************
|
||||||
** @attention
|
** @attention
|
||||||
**
|
**
|
||||||
** <h2><center>© COPYRIGHT(c) 2014 Ac6</center></h2>
|
** Copyright (c) 2014 Ac6
|
||||||
**
|
**
|
||||||
** Redistribution and use in source and binary forms, with or without modification,
|
** Redistribution and use in source and binary forms, with or without modification,
|
||||||
** are permitted provided that the following conditions are met:
|
** are permitted provided that the following conditions are met:
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
*****************************************************************************
|
*****************************************************************************
|
||||||
** @attention
|
** @attention
|
||||||
**
|
**
|
||||||
** <h2><center>© COPYRIGHT(c) 2014 Ac6</center></h2>
|
** Copyright (c) 2014 Ac6
|
||||||
**
|
**
|
||||||
** Redistribution and use in source and binary forms, with or without modification,
|
** Redistribution and use in source and binary forms, with or without modification,
|
||||||
** are permitted provided that the following conditions are met:
|
** are permitted provided that the following conditions are met:
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @attention
|
* @attention
|
||||||
*
|
*
|
||||||
* <h2><center>© Copyright (c) 2017 STMicroelectronics.
|
* Copyright (c) 2017 STMicroelectronics.
|
||||||
* All rights reserved.</center></h2>
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This software component is licensed by ST under BSD 3-Clause license,
|
* This software component is licensed by ST under BSD 3-Clause license,
|
||||||
* the "License"; You may not use this file except in compliance with the
|
* the "License"; You may not use this file except in compliance with the
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
*****************************************************************************
|
*****************************************************************************
|
||||||
** @attention
|
** @attention
|
||||||
**
|
**
|
||||||
** <h2><center>© COPYRIGHT(c) 2019 STMicroelectronics</center></h2>
|
** Copyright (c) 2019 STMicroelectronics
|
||||||
**
|
**
|
||||||
** Redistribution and use in source and binary forms, with or without modification,
|
** Redistribution and use in source and binary forms, with or without modification,
|
||||||
** are permitted provided that the following conditions are met:
|
** are permitted provided that the following conditions are met:
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @attention
|
* @attention
|
||||||
*
|
*
|
||||||
* <h2><center>© Copyright (c) 2017 STMicroelectronics.
|
* Copyright (c) 2017 STMicroelectronics.
|
||||||
* All rights reserved.</center></h2>
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This software component is licensed by ST under BSD 3-Clause license,
|
* This software component is licensed by ST under BSD 3-Clause license,
|
||||||
* the "License"; You may not use this file except in compliance with the
|
* the "License"; You may not use this file except in compliance with the
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
*****************************************************************************
|
*****************************************************************************
|
||||||
** @attention
|
** @attention
|
||||||
**
|
**
|
||||||
** <h2><center>© COPYRIGHT(c) 2014 Ac6</center></h2>
|
** Copyright (c) 2014 Ac6
|
||||||
**
|
**
|
||||||
** Redistribution and use in source and binary forms, with or without modification,
|
** Redistribution and use in source and binary forms, with or without modification,
|
||||||
** are permitted provided that the following conditions are met:
|
** are permitted provided that the following conditions are met:
|
||||||
@@ -184,4 +184,4 @@ SECTIONS
|
|||||||
}
|
}
|
||||||
|
|
||||||
.ARM.attributes 0 : { *(.ARM.attributes) }
|
.ARM.attributes 0 : { *(.ARM.attributes) }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
*****************************************************************************
|
*****************************************************************************
|
||||||
** @attention
|
** @attention
|
||||||
**
|
**
|
||||||
** <h2><center>© COPYRIGHT(c) 2019 STMicroelectronics</center></h2>
|
** Copyright (c) 2019 STMicroelectronics
|
||||||
**
|
**
|
||||||
** Redistribution and use in source and binary forms, with or without modification,
|
** Redistribution and use in source and binary forms, with or without modification,
|
||||||
** are permitted provided that the following conditions are met:
|
** are permitted provided that the following conditions are met:
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
*****************************************************************************
|
*****************************************************************************
|
||||||
** @attention
|
** @attention
|
||||||
**
|
**
|
||||||
** <h2><center>© COPYRIGHT(c) 2019 STMicroelectronics</center></h2>
|
** Copyright (c) 2019 STMicroelectronics
|
||||||
**
|
**
|
||||||
** Redistribution and use in source and binary forms, with or without modification,
|
** Redistribution and use in source and binary forms, with or without modification,
|
||||||
** are permitted provided that the following conditions are met:
|
** are permitted provided that the following conditions are met:
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
*****************************************************************************
|
*****************************************************************************
|
||||||
** @attention
|
** @attention
|
||||||
**
|
**
|
||||||
** <h2><center>© COPYRIGHT(c) 2019 STMicroelectronics</center></h2>
|
** Copyright (c) 2019 STMicroelectronics
|
||||||
**
|
**
|
||||||
** Redistribution and use in source and binary forms, with or without modification,
|
** Redistribution and use in source and binary forms, with or without modification,
|
||||||
** are permitted provided that the following conditions are met:
|
** are permitted provided that the following conditions are met:
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @attention
|
* @attention
|
||||||
*
|
*
|
||||||
* <h2><center>© Copyright (c) 2017 STMicroelectronics.
|
* Copyright (c) 2017 STMicroelectronics.
|
||||||
* All rights reserved.</center></h2>
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This software component is licensed by ST under BSD 3-Clause license,
|
* This software component is licensed by ST under BSD 3-Clause license,
|
||||||
* the "License"; You may not use this file except in compliance with the
|
* the "License"; You may not use this file except in compliance with the
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
*****************************************************************************
|
*****************************************************************************
|
||||||
** @attention
|
** @attention
|
||||||
**
|
**
|
||||||
** <h2><center>© COPYRIGHT(c) 2019 STMicroelectronics</center></h2>
|
** Copyright (c) 2019 STMicroelectronics
|
||||||
**
|
**
|
||||||
** Redistribution and use in source and binary forms, with or without modification,
|
** Redistribution and use in source and binary forms, with or without modification,
|
||||||
** are permitted provided that the following conditions are met:
|
** are permitted provided that the following conditions are met:
|
||||||
|
|||||||
@@ -13,8 +13,8 @@
|
|||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @attention
|
* @attention
|
||||||
*
|
*
|
||||||
* <h2><center>© Copyright (c) 2020 STMicroelectronics.
|
* Copyright (c) 2020 STMicroelectronics.
|
||||||
* All rights reserved.</center></h2>
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This software component is licensed by ST under BSD 3-Clause license,
|
* This software component is licensed by ST under BSD 3-Clause license,
|
||||||
* the "License"; You may not use this file except in compliance with the
|
* the "License"; You may not use this file except in compliance with the
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @attention
|
* @attention
|
||||||
*
|
*
|
||||||
* <h2><center>© Copyright (c) 2017 STMicroelectronics.
|
* Copyright (c) 2017 STMicroelectronics.
|
||||||
* All rights reserved.</center></h2>
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This software component is licensed by ST under BSD 3-Clause license,
|
* This software component is licensed by ST under BSD 3-Clause license,
|
||||||
* the "License"; You may not use this file except in compliance with the
|
* the "License"; You may not use this file except in compliance with the
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
*****************************************************************************
|
*****************************************************************************
|
||||||
** @attention
|
** @attention
|
||||||
**
|
**
|
||||||
** <h2><center>© COPYRIGHT(c) 2014 Ac6</center></h2>
|
** Copyright (c) 2014 Ac6
|
||||||
**
|
**
|
||||||
** Redistribution and use in source and binary forms, with or without modification,
|
** Redistribution and use in source and binary forms, with or without modification,
|
||||||
** are permitted provided that the following conditions are met:
|
** are permitted provided that the following conditions are met:
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
*****************************************************************************
|
*****************************************************************************
|
||||||
** @attention
|
** @attention
|
||||||
**
|
**
|
||||||
** <h2><center>© COPYRIGHT(c) 2014 Ac6</center></h2>
|
** Copyright (c) 2014 Ac6
|
||||||
**
|
**
|
||||||
** Redistribution and use in source and binary forms, with or without modification,
|
** Redistribution and use in source and binary forms, with or without modification,
|
||||||
** are permitted provided that the following conditions are met:
|
** are permitted provided that the following conditions are met:
|
||||||
|
|||||||
@@ -0,0 +1,359 @@
|
|||||||
|
/*
|
||||||
|
*******************************************************************************
|
||||||
|
* Copyright (c) 2016, STMicroelectronics
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer.
|
||||||
|
* 2. 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.
|
||||||
|
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
||||||
|
* may be used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*******************************************************************************
|
||||||
|
*/
|
||||||
|
#include "Arduino.h"
|
||||||
|
#include "PeripheralPins.h"
|
||||||
|
|
||||||
|
// =====
|
||||||
|
// Note: Commented lines are alternative possibilities which are not used per default.
|
||||||
|
// If you change them, you will have to know what you do
|
||||||
|
// =====
|
||||||
|
|
||||||
|
|
||||||
|
//*** ADC ***
|
||||||
|
|
||||||
|
#ifdef HAL_ADC_MODULE_ENABLED
|
||||||
|
const PinMap PinMap_ADC[] = {
|
||||||
|
// {PA_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC1_IN0
|
||||||
|
// {PA_0, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC2_IN0
|
||||||
|
// {PA_0, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC3_IN0
|
||||||
|
// {PA_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC1_IN1
|
||||||
|
// {PA_1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC2_IN1
|
||||||
|
// {PA_1, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC3_IN1
|
||||||
|
// {PA_2, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC1_IN2
|
||||||
|
// {PA_2, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC2_IN2
|
||||||
|
// {PA_2, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC3_IN2
|
||||||
|
{PA_3, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC1_IN3
|
||||||
|
// {PA_3, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC2_IN3
|
||||||
|
// {PA_3, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC3_IN3
|
||||||
|
{PA_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC1_IN4
|
||||||
|
// {PA_4, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC2_IN4
|
||||||
|
// {PA_5, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC1_IN5
|
||||||
|
// {PA_5, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC2_IN5
|
||||||
|
// {PA_6, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC1_IN6
|
||||||
|
// {PA_6, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC2_IN6
|
||||||
|
// {PA_7, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC1_IN7
|
||||||
|
// {PA_7, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC2_IN7
|
||||||
|
// {PB_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC1_IN8
|
||||||
|
// {PB_0, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC2_IN8
|
||||||
|
// {PB_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC1_IN9
|
||||||
|
// {PB_1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC2_IN9
|
||||||
|
{PC_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC1_IN10
|
||||||
|
// {PC_0, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC2_IN10
|
||||||
|
// {PC_0, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC3_IN10
|
||||||
|
{PC_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC1_IN11
|
||||||
|
// {PC_1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC2_IN11
|
||||||
|
// {PC_1, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC3_IN11
|
||||||
|
{PC_2, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC1_IN12
|
||||||
|
// {PC_2, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC2_IN12
|
||||||
|
// {PC_2, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC3_IN12
|
||||||
|
{PC_3, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC1_IN13
|
||||||
|
// {PC_3, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC2_IN13
|
||||||
|
// {PC_3, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC3_IN13
|
||||||
|
{PC_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC1_IN14
|
||||||
|
// {PC_4, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC2_IN14
|
||||||
|
// {PC_5, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_IN15
|
||||||
|
// {PC_5, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC2_IN15
|
||||||
|
{NC, NP, 0}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//*** DAC ***
|
||||||
|
|
||||||
|
#ifdef HAL_DAC_MODULE_ENABLED
|
||||||
|
const PinMap PinMap_DAC[] = {
|
||||||
|
// {PA_4, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // DAC_OUT1
|
||||||
|
// {PA_5, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // DAC_OUT2 - LD2
|
||||||
|
{NC, NP, 0}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//*** I2C ***
|
||||||
|
|
||||||
|
#ifdef HAL_I2C_MODULE_ENABLED
|
||||||
|
const PinMap PinMap_I2C_SDA[] = {
|
||||||
|
// {PB_3, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},
|
||||||
|
// {PB_4, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)},
|
||||||
|
// {PB_7, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
|
||||||
|
{PB_9, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
|
||||||
|
// {PC_7, FMPI2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_FMPI2C1)},
|
||||||
|
// {PC_9, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)},
|
||||||
|
// {PC_12, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},
|
||||||
|
{NC, NP, 0}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAL_I2C_MODULE_ENABLED
|
||||||
|
const PinMap PinMap_I2C_SCL[] = {
|
||||||
|
// {PA_8, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)},
|
||||||
|
// {PB_6, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
|
||||||
|
{PB_8, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
|
||||||
|
// {PB_10, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},
|
||||||
|
// {PC_6, FMPI2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_FMPI2C1)},
|
||||||
|
{NC, NP, 0}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//*** PWM ***
|
||||||
|
|
||||||
|
#ifdef HAL_TIM_MODULE_ENABLED
|
||||||
|
const PinMap PinMap_PWM[] = {
|
||||||
|
{PA_0, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1
|
||||||
|
// {PA_0, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 1, 0)}, // TIM5_CH1
|
||||||
|
// {PA_1, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2
|
||||||
|
{PA_1, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 2, 0)}, // TIM5_CH2
|
||||||
|
// {PA_2, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3 - STLink Tx
|
||||||
|
// {PA_2, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 3, 0)}, // TIM5_CH3 - STLink Tx
|
||||||
|
// {PA_2, TIM9, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9, 1, 0)}, // TIM9_CH1 - STLink Tx
|
||||||
|
// {PA_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4 - STLink Rx
|
||||||
|
// {PA_3, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 4, 0)}, // TIM5_CH4 - STLink Rx
|
||||||
|
// {PA_3, TIM9, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9, 2, 0)}, // TIM9_CH2 - STLink Rx
|
||||||
|
{PA_5, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1
|
||||||
|
// {PA_5, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 1)}, // TIM8_CH1N
|
||||||
|
{PA_6, TIM13, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM13, 1, 0)}, // TIM13_CH1
|
||||||
|
// {PA_6, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1
|
||||||
|
//{PA_7, TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM14, 1, 0)}, // TIM14_CH1
|
||||||
|
// {PA_7, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N
|
||||||
|
// {PA_7, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2
|
||||||
|
// {PA_7, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 1)}, // TIM8_CH1N
|
||||||
|
// {PA_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1
|
||||||
|
{PA_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2
|
||||||
|
{PA_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3
|
||||||
|
{PA_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4
|
||||||
|
{PA_15, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1
|
||||||
|
// {PB_0, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N
|
||||||
|
// {PB_0, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 3, 0)}, // TIM3_CH3
|
||||||
|
{PB_0, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 1)}, // Fan0, TIM8_CH2N
|
||||||
|
// {PB_1, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N
|
||||||
|
// {PB_1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)}, // TIM3_CH4
|
||||||
|
{PB_1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 1)}, // Fan1, TIM8_CH3N
|
||||||
|
{PB_2, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)}, // Fan2, TIM2_CH4
|
||||||
|
{PB_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // E0 Heater, TIM2_CH2
|
||||||
|
{PB_4, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // E1 Heater, TIM3_CH1
|
||||||
|
{PB_5, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // LED G, TIM3_CH2
|
||||||
|
{PB_6, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 1, 0)}, // LED R, TIM4_CH1
|
||||||
|
{PB_7, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 2, 0)}, // LED B, TIM4_CH2
|
||||||
|
// {PB_8, TIM10, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM10, 1, 0)}, // TIM10_CH1
|
||||||
|
// {PB_8, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1
|
||||||
|
{PB_8, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 3, 0)}, // TIM4_CH3
|
||||||
|
{PB_9, TIM11, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM11, 1, 0)}, // TIM11_CH1
|
||||||
|
// {PB_9, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2
|
||||||
|
// {PB_9, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 4, 0)}, // TIM4_CH4
|
||||||
|
{PB_10, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3
|
||||||
|
{PB_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N
|
||||||
|
{PB_14, TIM12, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM12, 1, 0)}, // TIM12_CH1
|
||||||
|
// {PB_14, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N
|
||||||
|
// {PB_14, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 1)}, // TIM8_CH2N
|
||||||
|
{PB_15, TIM12, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM12, 2, 0)}, // TIM12_CH2
|
||||||
|
// {PB_15, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N
|
||||||
|
// {PB_15, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 1)}, // TIM8_CH3N
|
||||||
|
{PC_6, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1
|
||||||
|
// {PC_6, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 0)}, // TIM8_CH1
|
||||||
|
// {PC_7, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2
|
||||||
|
{PC_7, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 0)}, // TIM8_CH2
|
||||||
|
{PC_8, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 3, 0)}, // TIM3_CH3
|
||||||
|
// {PC_8, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 0)}, // TIM8_CH3
|
||||||
|
// {PC_9, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)}, // TIM3_CH4
|
||||||
|
{PC_9, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 4, 0)}, // TIM8_CH4
|
||||||
|
{PD_15, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 4, 0)}, // TIM4_CH4
|
||||||
|
{PE_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1
|
||||||
|
{PE_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N
|
||||||
|
{NC, NP, 0}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//*** SERIAL ***
|
||||||
|
|
||||||
|
#ifdef HAL_UART_MODULE_ENABLED
|
||||||
|
const PinMap PinMap_UART_TX[] = {
|
||||||
|
// {PA_0, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)},
|
||||||
|
// {PA_2, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)},
|
||||||
|
{PA_9, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
|
||||||
|
// {PB_6, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
|
||||||
|
// {PB_10, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)},
|
||||||
|
// {PC_6, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)},
|
||||||
|
// {PC_10, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)},
|
||||||
|
{PC_10, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)},
|
||||||
|
// {PC_12, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)},
|
||||||
|
{NC, NP, 0}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAL_UART_MODULE_ENABLED
|
||||||
|
const PinMap PinMap_UART_RX[] = {
|
||||||
|
// {PA_1, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)},
|
||||||
|
// {PA_3, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)},
|
||||||
|
{PA_10, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
|
||||||
|
// {PB_7, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
|
||||||
|
// {PC_5, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)},
|
||||||
|
// {PC_7, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)},
|
||||||
|
// {PC_11, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)},
|
||||||
|
{PC_11, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)},
|
||||||
|
// {PD_2, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)},
|
||||||
|
{NC, NP, 0}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAL_UART_MODULE_ENABLED
|
||||||
|
const PinMap PinMap_UART_RTS[] = {
|
||||||
|
// {PA_1, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)},
|
||||||
|
// {PA_12, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
|
||||||
|
// {PA_15, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)},
|
||||||
|
// {PB_14, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)},
|
||||||
|
// {PC_8, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART5)},
|
||||||
|
{NC, NP, 0}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAL_UART_MODULE_ENABLED
|
||||||
|
const PinMap PinMap_UART_CTS[] = {
|
||||||
|
// {PA_0, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)},
|
||||||
|
// {PA_11, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
|
||||||
|
// {PB_0, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)},
|
||||||
|
// {PB_13, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)},
|
||||||
|
// {PC_9, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART5)},
|
||||||
|
{NC, NP, 0}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//*** SPI ***
|
||||||
|
|
||||||
|
#ifdef HAL_SPI_MODULE_ENABLED
|
||||||
|
const PinMap PinMap_SPI_MOSI[] = {
|
||||||
|
{PA_7, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
|
||||||
|
// {PB_0, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_SPI3)},
|
||||||
|
// {PB_2, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_SPI3)},
|
||||||
|
// {PB_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
|
||||||
|
// {PB_5, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
|
||||||
|
// {PB_15, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
|
||||||
|
// {PC_1, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_SPI2)},
|
||||||
|
// {PC_1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI3)},
|
||||||
|
// {PC_3, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
|
||||||
|
// {PC_12, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
|
||||||
|
{NC, NP, 0}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAL_SPI_MODULE_ENABLED
|
||||||
|
const PinMap PinMap_SPI_MISO[] = {
|
||||||
|
{PA_6, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
|
||||||
|
// {PB_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
|
||||||
|
// {PB_4, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
|
||||||
|
// {PB_14, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
|
||||||
|
// {PC_2, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
|
||||||
|
// {PC_11, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
|
||||||
|
{NC, NP, 0}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAL_SPI_MODULE_ENABLED
|
||||||
|
const PinMap PinMap_SPI_SCLK[] = {
|
||||||
|
{PA_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
|
||||||
|
// {PA_9, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
|
||||||
|
// {PB_3, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
|
||||||
|
// {PB_3, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
|
||||||
|
// {PB_10, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
|
||||||
|
// {PB_13, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
|
||||||
|
// {PC_7, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
|
||||||
|
// {PC_10, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
|
||||||
|
{NC, NP, 0}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAL_SPI_MODULE_ENABLED
|
||||||
|
const PinMap PinMap_SPI_SSEL[] = {
|
||||||
|
{PA_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
|
||||||
|
// {PA_4, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
|
||||||
|
// {PA_15, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
|
||||||
|
// {PA_15, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
|
||||||
|
// {PB_4, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_SPI2)},
|
||||||
|
// {PB_9, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
|
||||||
|
// {PB_12, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
|
||||||
|
{NC, NP, 0}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//*** CAN ***
|
||||||
|
|
||||||
|
#ifdef HAL_CAN_MODULE_ENABLED
|
||||||
|
const PinMap PinMap_CAN_RD[] = {
|
||||||
|
// {PA_11, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)},
|
||||||
|
// {PB_5, CAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN2)},
|
||||||
|
// {PB_8, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)},
|
||||||
|
// {PB_12, CAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN2)},
|
||||||
|
{NC, NP, 0}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAL_CAN_MODULE_ENABLED
|
||||||
|
const PinMap PinMap_CAN_TD[] = {
|
||||||
|
// {PA_12, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)},
|
||||||
|
// {PB_6, CAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN2)},
|
||||||
|
// {PB_9, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)},
|
||||||
|
// {PB_13, CAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN2)},
|
||||||
|
{NC, NP, 0}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//*** ETHERNET ***
|
||||||
|
|
||||||
|
//*** No Ethernet ***
|
||||||
|
|
||||||
|
//*** QUADSPI ***
|
||||||
|
|
||||||
|
#ifdef HAL_QSPI_MODULE_ENABLED
|
||||||
|
const PinMap PinMap_QUADSPI[] = {
|
||||||
|
// {PA_1, QUADSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QSPI)}, // QUADSPI_BK1_IO3
|
||||||
|
// {PB_2, QUADSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QSPI)}, // QUADSPI_CLK
|
||||||
|
// {PB_6, QUADSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QSPI)}, // QUADSPI_BK1_NCS
|
||||||
|
// {PC_9, QUADSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QSPI)}, // QUADSPI_BK1_IO0
|
||||||
|
// {PC_10, QUADSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QSPI)}, // QUADSPI_BK1_IO1
|
||||||
|
// {PC_11, QUADSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QSPI)}, // QUADSPI_BK2_NCS
|
||||||
|
{NC, NP, 0}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//*** USB ***
|
||||||
|
|
||||||
|
#ifdef HAL_PCD_MODULE_ENABLED
|
||||||
|
const PinMap PinMap_USB_OTG_FS[] = {
|
||||||
|
// {PA_8, USB_OTG_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_FS)}, // USB_OTG_FS_SOF
|
||||||
|
// {PA_9, USB_OTG_FS, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)}, // USB_OTG_FS_VBUS
|
||||||
|
// {PA_10, USB_OTG_FS, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_PULLUP, GPIO_AF10_OTG_FS)}, // USB_OTG_FS_ID
|
||||||
|
{PA_11, USB_OTG_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_FS)}, // USB_OTG_FS_DM
|
||||||
|
{PA_12, USB_OTG_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_FS)}, // USB_OTG_FS_DP
|
||||||
|
{NC, NP, 0}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAL_PCD_MODULE_ENABLED
|
||||||
|
const PinMap PinMap_USB_OTG_HS[] = {
|
||||||
|
{NC, NP, 0}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
/* SYS_WKUP */
|
||||||
|
#ifdef PWR_WAKEUP_PIN1
|
||||||
|
SYS_WKUP1 = PA_0, /* SYS_WKUP0 */
|
||||||
|
#endif
|
||||||
|
#ifdef PWR_WAKEUP_PIN2
|
||||||
|
SYS_WKUP2 = NC,
|
||||||
|
#endif
|
||||||
|
#ifdef PWR_WAKEUP_PIN3
|
||||||
|
SYS_WKUP3 = NC,
|
||||||
|
#endif
|
||||||
|
#ifdef PWR_WAKEUP_PIN4
|
||||||
|
SYS_WKUP4 = NC,
|
||||||
|
#endif
|
||||||
|
#ifdef PWR_WAKEUP_PIN5
|
||||||
|
SYS_WKUP5 = NC,
|
||||||
|
#endif
|
||||||
|
#ifdef PWR_WAKEUP_PIN6
|
||||||
|
SYS_WKUP6 = NC,
|
||||||
|
#endif
|
||||||
|
#ifdef PWR_WAKEUP_PIN7
|
||||||
|
SYS_WKUP7 = NC,
|
||||||
|
#endif
|
||||||
|
#ifdef PWR_WAKEUP_PIN8
|
||||||
|
SYS_WKUP8 = NC,
|
||||||
|
#endif
|
||||||
|
/* USB */
|
||||||
|
#ifdef USBCON
|
||||||
|
USB_OTG_FS_DM = PA_11,
|
||||||
|
USB_OTG_FS_DP = PA_12,
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,505 @@
|
|||||||
|
/**
|
||||||
|
******************************************************************************
|
||||||
|
* @file stm32f4xx_hal_conf.h
|
||||||
|
* @brief HAL configuration file.
|
||||||
|
******************************************************************************
|
||||||
|
* @attention
|
||||||
|
*
|
||||||
|
* <h2><center>© Copyright (c) 2017 STMicroelectronics.
|
||||||
|
* All rights reserved.</center></h2>
|
||||||
|
*
|
||||||
|
* This software component is licensed by ST under BSD 3-Clause license,
|
||||||
|
* the "License"; You may not use this file except in compliance with the
|
||||||
|
* License. You may obtain a copy of the License at:
|
||||||
|
* opensource.org/licenses/BSD-3-Clause
|
||||||
|
*
|
||||||
|
******************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||||
|
#ifndef __STM32F4xx_HAL_CONF_CUSTOM
|
||||||
|
#define __STM32F4xx_HAL_CONF_CUSTOM
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Exported types ------------------------------------------------------------*/
|
||||||
|
/* Exported constants --------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* ########################## Module Selection ############################## */
|
||||||
|
/**
|
||||||
|
* @brief This is the list of modules to be used in the HAL driver
|
||||||
|
*/
|
||||||
|
#define HAL_MODULE_ENABLED
|
||||||
|
#define HAL_ADC_MODULE_ENABLED
|
||||||
|
/* #define HAL_CAN_MODULE_ENABLED */
|
||||||
|
/* #define HAL_CAN_LEGACY_MODULE_ENABLED */
|
||||||
|
#define HAL_CRC_MODULE_ENABLED
|
||||||
|
/* #define HAL_CEC_MODULE_ENABLED */
|
||||||
|
/* #define HAL_CRYP_MODULE_ENABLED */
|
||||||
|
#define HAL_DAC_MODULE_ENABLED
|
||||||
|
/* #define HAL_DCMI_MODULE_ENABLED */
|
||||||
|
#define HAL_DMA_MODULE_ENABLED
|
||||||
|
/* #define HAL_DMA2D_MODULE_ENABLED */
|
||||||
|
/* #define HAL_ETH_MODULE_ENABLED */
|
||||||
|
#define HAL_FLASH_MODULE_ENABLED
|
||||||
|
/* #define HAL_NAND_MODULE_ENABLED */
|
||||||
|
/* #define HAL_NOR_MODULE_ENABLED */
|
||||||
|
/* #define HAL_PCCARD_MODULE_ENABLED */
|
||||||
|
#define HAL_SRAM_MODULE_ENABLED //YSZ-WORK
|
||||||
|
/* #define HAL_SDRAM_MODULE_ENABLED */
|
||||||
|
/* #define HAL_HASH_MODULE_ENABLED */
|
||||||
|
#define HAL_GPIO_MODULE_ENABLED
|
||||||
|
/* #define HAL_EXTI_MODULE_ENABLED */
|
||||||
|
#define HAL_I2C_MODULE_ENABLED
|
||||||
|
/* #define HAL_SMBUS_MODULE_ENABLED */
|
||||||
|
/* #define HAL_I2S_MODULE_ENABLED */
|
||||||
|
/* #define HAL_IWDG_MODULE_ENABLED */
|
||||||
|
/* #define HAL_LTDC_MODULE_ENABLED */
|
||||||
|
/* #define HAL_DSI_MODULE_ENABLED */
|
||||||
|
#define HAL_PWR_MODULE_ENABLED
|
||||||
|
/* #define HAL_QSPI_MODULE_ENABLED */
|
||||||
|
#define HAL_RCC_MODULE_ENABLED
|
||||||
|
/* #define HAL_RNG_MODULE_ENABLED */
|
||||||
|
#define HAL_RTC_MODULE_ENABLED
|
||||||
|
/* #define HAL_SAI_MODULE_ENABLED */
|
||||||
|
#define HAL_SD_MODULE_ENABLED
|
||||||
|
#define HAL_SPI_MODULE_ENABLED
|
||||||
|
#define HAL_TIM_MODULE_ENABLED
|
||||||
|
/* #define HAL_UART_MODULE_ENABLED */
|
||||||
|
/* #define HAL_USART_MODULE_ENABLED */
|
||||||
|
/* #define HAL_IRDA_MODULE_ENABLED */
|
||||||
|
/* #define HAL_SMARTCARD_MODULE_ENABLED */
|
||||||
|
/* #define HAL_WWDG_MODULE_ENABLED */
|
||||||
|
#define HAL_CORTEX_MODULE_ENABLED
|
||||||
|
#ifndef HAL_PCD_MODULE_ENABLED
|
||||||
|
#define HAL_PCD_MODULE_ENABLED //Since STM32 v3.10700.191028 this is automatically added if any type of USB is enabled (as in Arduino IDE)
|
||||||
|
#endif
|
||||||
|
#define HAL_HCD_MODULE_ENABLED
|
||||||
|
/* #define HAL_FMPI2C_MODULE_ENABLED */
|
||||||
|
/* #define HAL_SPDIFRX_MODULE_ENABLED */
|
||||||
|
/* #define HAL_DFSDM_MODULE_ENABLED */
|
||||||
|
/* #define HAL_LPTIM_MODULE_ENABLED */
|
||||||
|
/* #define HAL_MMC_MODULE_ENABLED */
|
||||||
|
|
||||||
|
/* ########################## HSE/HSI Values adaptation ##################### */
|
||||||
|
/**
|
||||||
|
* @brief Adjust the value of External High Speed oscillator (HSE) used in your application.
|
||||||
|
* This value is used by the RCC HAL module to compute the system frequency
|
||||||
|
* (when HSE is used as system clock source, directly or through the PLL).
|
||||||
|
*/
|
||||||
|
#ifndef HSE_VALUE
|
||||||
|
#define HSE_VALUE 8000000U /*!< Value of the External oscillator in Hz */
|
||||||
|
#endif /* HSE_VALUE */
|
||||||
|
|
||||||
|
#ifndef HSE_STARTUP_TIMEOUT
|
||||||
|
#if STM32_TYPE == 4
|
||||||
|
#define HSE_STARTUP_TIMEOUT 0xFFFFu
|
||||||
|
#else
|
||||||
|
#define HSE_STARTUP_TIMEOUT 100U /*!< Time out for HSE start up, in ms */
|
||||||
|
#endif
|
||||||
|
#endif /* HSE_STARTUP_TIMEOUT */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Internal High Speed oscillator (HSI) value.
|
||||||
|
* This value is used by the RCC HAL module to compute the system frequency
|
||||||
|
* (when HSI is used as system clock source, directly or through the PLL).
|
||||||
|
*/
|
||||||
|
#ifndef HSI_VALUE
|
||||||
|
#define HSI_VALUE 16000000U /*!< Value of the Internal oscillator in Hz */
|
||||||
|
#endif /* HSI_VALUE */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Internal Low Speed oscillator (LSI) value.
|
||||||
|
*/
|
||||||
|
#ifndef LSI_VALUE
|
||||||
|
#define LSI_VALUE 32000U /*!< LSI Typical Value in Hz */
|
||||||
|
#endif /* LSI_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz
|
||||||
|
The real value may vary depending on the variations
|
||||||
|
in voltage and temperature. */
|
||||||
|
/**
|
||||||
|
* @brief External Low Speed oscillator (LSE) value.
|
||||||
|
*/
|
||||||
|
#ifndef LSE_VALUE
|
||||||
|
#define LSE_VALUE 32768U /*!< Value of the External Low Speed oscillator in Hz */
|
||||||
|
#endif /* LSE_VALUE */
|
||||||
|
|
||||||
|
#ifndef LSE_STARTUP_TIMEOUT
|
||||||
|
#define LSE_STARTUP_TIMEOUT 5000U /*!< Time out for LSE start up, in ms */
|
||||||
|
#endif /* LSE_STARTUP_TIMEOUT */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief External clock source for I2S peripheral
|
||||||
|
* This value is used by the I2S HAL module to compute the I2S clock source
|
||||||
|
* frequency, this source is inserted directly through I2S_CKIN pad.
|
||||||
|
*/
|
||||||
|
#ifndef EXTERNAL_CLOCK_VALUE
|
||||||
|
#define EXTERNAL_CLOCK_VALUE 12288000U /*!< Value of the External oscillator in Hz*/
|
||||||
|
#endif /* EXTERNAL_CLOCK_VALUE */
|
||||||
|
|
||||||
|
/* Tip: To avoid modifying this file each time you need to use different HSE,
|
||||||
|
=== you can define the HSE value in your toolchain compiler preprocessor. */
|
||||||
|
|
||||||
|
/* ########################### System Configuration ######################### */
|
||||||
|
/**
|
||||||
|
* @brief This is the HAL system configuration section
|
||||||
|
*/
|
||||||
|
#if !defined (VDD_VALUE)
|
||||||
|
#define VDD_VALUE 3300U /*!< Value of VDD in mv */
|
||||||
|
#endif
|
||||||
|
#if !defined (TICK_INT_PRIORITY)
|
||||||
|
#define TICK_INT_PRIORITY 0x00U /*!< tick interrupt priority */
|
||||||
|
#endif
|
||||||
|
#if !defined (USE_RTOS)
|
||||||
|
#define USE_RTOS 0U
|
||||||
|
#endif
|
||||||
|
#if !defined (PREFETCH_ENABLE)
|
||||||
|
#define PREFETCH_ENABLE 1U
|
||||||
|
#endif
|
||||||
|
#if !defined (INSTRUCTION_CACHE_ENABLE)
|
||||||
|
#define INSTRUCTION_CACHE_ENABLE 1U
|
||||||
|
#endif
|
||||||
|
#if !defined (DATA_CACHE_ENABLE)
|
||||||
|
#define DATA_CACHE_ENABLE 1U
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define USE_HAL_ADC_REGISTER_CALLBACKS 0U /* ADC register callback disabled */
|
||||||
|
#define USE_HAL_CAN_REGISTER_CALLBACKS 0U /* CAN register callback disabled */
|
||||||
|
#define USE_HAL_CEC_REGISTER_CALLBACKS 0U /* CEC register callback disabled */
|
||||||
|
#define USE_HAL_CRYP_REGISTER_CALLBACKS 0U /* CRYP register callback disabled */
|
||||||
|
#define USE_HAL_DAC_REGISTER_CALLBACKS 0U /* DAC register callback disabled */
|
||||||
|
#define USE_HAL_DCMI_REGISTER_CALLBACKS 0U /* DCMI register callback disabled */
|
||||||
|
#define USE_HAL_DFSDM_REGISTER_CALLBACKS 0U /* DFSDM register callback disabled */
|
||||||
|
#define USE_HAL_DMA2D_REGISTER_CALLBACKS 0U /* DMA2D register callback disabled */
|
||||||
|
#define USE_HAL_DSI_REGISTER_CALLBACKS 0U /* DSI register callback disabled */
|
||||||
|
#define USE_HAL_ETH_REGISTER_CALLBACKS 0U /* ETH register callback disabled */
|
||||||
|
#define USE_HAL_HASH_REGISTER_CALLBACKS 0U /* HASH register callback disabled */
|
||||||
|
#define USE_HAL_HCD_REGISTER_CALLBACKS 0U /* HCD register callback disabled */
|
||||||
|
#define USE_HAL_I2C_REGISTER_CALLBACKS 0U /* I2C register callback disabled */
|
||||||
|
#define USE_HAL_FMPI2C_REGISTER_CALLBACKS 0U /* FMPI2C register callback disabled */
|
||||||
|
#define USE_HAL_I2S_REGISTER_CALLBACKS 0U /* I2S register callback disabled */
|
||||||
|
#define USE_HAL_IRDA_REGISTER_CALLBACKS 0U /* IRDA register callback disabled */
|
||||||
|
#define USE_HAL_LPTIM_REGISTER_CALLBACKS 0U /* LPTIM register callback disabled */
|
||||||
|
#define USE_HAL_LTDC_REGISTER_CALLBACKS 0U /* LTDC register callback disabled */
|
||||||
|
#define USE_HAL_MMC_REGISTER_CALLBACKS 0U /* MMC register callback disabled */
|
||||||
|
#define USE_HAL_NAND_REGISTER_CALLBACKS 0U /* NAND register callback disabled */
|
||||||
|
#define USE_HAL_NOR_REGISTER_CALLBACKS 0U /* NOR register callback disabled */
|
||||||
|
#define USE_HAL_PCCARD_REGISTER_CALLBACKS 0U /* PCCARD register callback disabled */
|
||||||
|
#define USE_HAL_PCD_REGISTER_CALLBACKS 0U /* PCD register callback disabled */
|
||||||
|
#define USE_HAL_QSPI_REGISTER_CALLBACKS 0U /* QSPI register callback disabled */
|
||||||
|
#define USE_HAL_RNG_REGISTER_CALLBACKS 0U /* RNG register callback disabled */
|
||||||
|
#define USE_HAL_RTC_REGISTER_CALLBACKS 0U /* RTC register callback disabled */
|
||||||
|
#define USE_HAL_SAI_REGISTER_CALLBACKS 0U /* SAI register callback disabled */
|
||||||
|
#define USE_HAL_SD_REGISTER_CALLBACKS 0U /* SD register callback disabled */
|
||||||
|
#define USE_HAL_SMARTCARD_REGISTER_CALLBACKS 0U /* SMARTCARD register callback disabled */
|
||||||
|
#define USE_HAL_SDRAM_REGISTER_CALLBACKS 0U /* SDRAM register callback disabled */
|
||||||
|
#define USE_HAL_SRAM_REGISTER_CALLBACKS 0U /* SRAM register callback disabled */
|
||||||
|
#define USE_HAL_SPDIFRX_REGISTER_CALLBACKS 0U /* SPDIFRX register callback disabled */
|
||||||
|
#define USE_HAL_SMBUS_REGISTER_CALLBACKS 0U /* SMBUS register callback disabled */
|
||||||
|
#define USE_HAL_SPI_REGISTER_CALLBACKS 0U /* SPI register callback disabled */
|
||||||
|
#define USE_HAL_TIM_REGISTER_CALLBACKS 0U /* TIM register callback disabled */
|
||||||
|
#define USE_HAL_UART_REGISTER_CALLBACKS 0U /* UART register callback disabled */
|
||||||
|
#define USE_HAL_USART_REGISTER_CALLBACKS 0U /* USART register callback disabled */
|
||||||
|
#define USE_HAL_WWDG_REGISTER_CALLBACKS 0U /* WWDG register callback disabled */
|
||||||
|
|
||||||
|
/* ########################## Assert Selection ############################## */
|
||||||
|
/**
|
||||||
|
* @brief Uncomment the line below to expanse the "assert_param" macro in the
|
||||||
|
* HAL drivers code
|
||||||
|
*/
|
||||||
|
/* #define USE_FULL_ASSERT 1U */
|
||||||
|
|
||||||
|
/* ################## Ethernet peripheral configuration ##################### */
|
||||||
|
|
||||||
|
/* Section 1 : Ethernet peripheral configuration */
|
||||||
|
|
||||||
|
/* MAC ADDRESS: MAC_ADDR0:MAC_ADDR1:MAC_ADDR2:MAC_ADDR3:MAC_ADDR4:MAC_ADDR5 */
|
||||||
|
#define MAC_ADDR0 2U
|
||||||
|
#define MAC_ADDR1 0U
|
||||||
|
#define MAC_ADDR2 0U
|
||||||
|
#define MAC_ADDR3 0U
|
||||||
|
#define MAC_ADDR4 0U
|
||||||
|
#define MAC_ADDR5 0U
|
||||||
|
|
||||||
|
/* Definition of the Ethernet driver buffers size and count */
|
||||||
|
#define ETH_RX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for receive */
|
||||||
|
#define ETH_TX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for transmit */
|
||||||
|
#define ETH_RXBUFNB ((uint32_t)4U) /* 4 Rx buffers of size ETH_RX_BUF_SIZE */
|
||||||
|
#define ETH_TXBUFNB ((uint32_t)4U) /* 4 Tx buffers of size ETH_TX_BUF_SIZE */
|
||||||
|
|
||||||
|
/* Section 2: PHY configuration section */
|
||||||
|
|
||||||
|
/* DP83848_PHY_ADDRESS Address*/
|
||||||
|
#define DP83848_PHY_ADDRESS 0x01U
|
||||||
|
/* PHY Reset delay these values are based on a 1 ms Systick interrupt*/
|
||||||
|
#define PHY_RESET_DELAY 0x000000FFU
|
||||||
|
/* PHY Configuration delay */
|
||||||
|
#define PHY_CONFIG_DELAY 0x00000FFFU
|
||||||
|
|
||||||
|
#define PHY_READ_TO 0x0000FFFFU
|
||||||
|
#define PHY_WRITE_TO 0x0000FFFFU
|
||||||
|
|
||||||
|
/* Section 3: Common PHY Registers */
|
||||||
|
|
||||||
|
#define PHY_BCR ((uint16_t)0x0000) /*!< Transceiver Basic Control Register */
|
||||||
|
#define PHY_BSR ((uint16_t)0x0001) /*!< Transceiver Basic Status Register */
|
||||||
|
|
||||||
|
#define PHY_RESET ((uint16_t)0x8000) /*!< PHY Reset */
|
||||||
|
#define PHY_LOOPBACK ((uint16_t)0x4000) /*!< Select loop-back mode */
|
||||||
|
#define PHY_FULLDUPLEX_100M ((uint16_t)0x2100) /*!< Set the full-duplex mode at 100 Mb/s */
|
||||||
|
#define PHY_HALFDUPLEX_100M ((uint16_t)0x2000) /*!< Set the half-duplex mode at 100 Mb/s */
|
||||||
|
#define PHY_FULLDUPLEX_10M ((uint16_t)0x0100) /*!< Set the full-duplex mode at 10 Mb/s */
|
||||||
|
#define PHY_HALFDUPLEX_10M ((uint16_t)0x0000) /*!< Set the half-duplex mode at 10 Mb/s */
|
||||||
|
#define PHY_AUTONEGOTIATION ((uint16_t)0x1000) /*!< Enable auto-negotiation function */
|
||||||
|
#define PHY_RESTART_AUTONEGOTIATION ((uint16_t)0x0200) /*!< Restart auto-negotiation function */
|
||||||
|
#define PHY_POWERDOWN ((uint16_t)0x0800) /*!< Select the power down mode */
|
||||||
|
#define PHY_ISOLATE ((uint16_t)0x0400) /*!< Isolate PHY from MII */
|
||||||
|
|
||||||
|
#define PHY_AUTONEGO_COMPLETE ((uint16_t)0x0020) /*!< Auto-Negotiation process completed */
|
||||||
|
#define PHY_LINKED_STATUS ((uint16_t)0x0004) /*!< Valid link established */
|
||||||
|
#define PHY_JABBER_DETECTION ((uint16_t)0x0002) /*!< Jabber condition detected */
|
||||||
|
|
||||||
|
/* Section 4: Extended PHY Registers */
|
||||||
|
#define PHY_SR ((uint16_t)0x10U) /*!< PHY status register Offset */
|
||||||
|
|
||||||
|
#define PHY_SPEED_STATUS ((uint16_t)0x0002U) /*!< PHY Speed mask */
|
||||||
|
#define PHY_DUPLEX_STATUS ((uint16_t)0x0004U) /*!< PHY Duplex mask */
|
||||||
|
|
||||||
|
/* ################## SPI peripheral configuration ########################## */
|
||||||
|
|
||||||
|
/* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver
|
||||||
|
* Activated: CRC code is present inside driver
|
||||||
|
* Deactivated: CRC code cleaned from driver
|
||||||
|
*/
|
||||||
|
#ifndef USE_SPI_CRC
|
||||||
|
#define USE_SPI_CRC 0U
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Includes ------------------------------------------------------------------*/
|
||||||
|
/**
|
||||||
|
* @brief Include module's header file
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef HAL_RCC_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_rcc.h"
|
||||||
|
#endif /* HAL_RCC_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_GPIO_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_gpio.h"
|
||||||
|
#include "stm32f4xx_hal_gpio_ex.h" //YSZ-WORK
|
||||||
|
#endif /* HAL_GPIO_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_EXTI_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_exti.h"
|
||||||
|
#endif /* HAL_EXTI_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_DMA_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_dma.h"
|
||||||
|
#endif /* HAL_DMA_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_CORTEX_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_cortex.h"
|
||||||
|
#endif /* HAL_CORTEX_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_ADC_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_adc.h"
|
||||||
|
#endif /* HAL_ADC_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_CAN_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_can.h"
|
||||||
|
#endif /* HAL_CAN_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_CAN_LEGACY_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_can_legacy.h"
|
||||||
|
#endif /* HAL_CAN_LEGACY_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_CRC_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_crc.h"
|
||||||
|
#endif /* HAL_CRC_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_CRYP_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_cryp.h"
|
||||||
|
#endif /* HAL_CRYP_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_DMA2D_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_dma2d.h"
|
||||||
|
#endif /* HAL_DMA2D_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_DAC_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_dac.h"
|
||||||
|
#endif /* HAL_DAC_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_DCMI_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_dcmi.h"
|
||||||
|
#endif /* HAL_DCMI_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_ETH_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_eth.h"
|
||||||
|
#endif /* HAL_ETH_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_FLASH_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_flash.h"
|
||||||
|
#endif /* HAL_FLASH_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_SRAM_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_sram.h"
|
||||||
|
#endif /* HAL_SRAM_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_NOR_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_nor.h"
|
||||||
|
#endif /* HAL_NOR_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_NAND_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_nand.h"
|
||||||
|
#endif /* HAL_NAND_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_PCCARD_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_pccard.h"
|
||||||
|
#endif /* HAL_PCCARD_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_SDRAM_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_sdram.h"
|
||||||
|
#endif /* HAL_SDRAM_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_HASH_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_hash.h"
|
||||||
|
#endif /* HAL_HASH_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_I2C_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_i2c.h"
|
||||||
|
#endif /* HAL_I2C_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_SMBUS_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_smbus.h"
|
||||||
|
#endif /* HAL_SMBUS_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_I2S_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_i2s.h"
|
||||||
|
#endif /* HAL_I2S_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_IWDG_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_iwdg.h"
|
||||||
|
#endif /* HAL_IWDG_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_LTDC_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_ltdc.h"
|
||||||
|
#endif /* HAL_LTDC_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_PWR_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_pwr.h"
|
||||||
|
#endif /* HAL_PWR_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_RNG_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_rng.h"
|
||||||
|
#endif /* HAL_RNG_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_RTC_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_rtc.h"
|
||||||
|
#endif /* HAL_RTC_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_SAI_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_sai.h"
|
||||||
|
#endif /* HAL_SAI_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_SD_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_sd.h"
|
||||||
|
#endif /* HAL_SD_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_SPI_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_spi.h"
|
||||||
|
#endif /* HAL_SPI_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_TIM_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_tim.h"
|
||||||
|
#endif /* HAL_TIM_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_UART_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_uart.h"
|
||||||
|
#endif /* HAL_UART_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_USART_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_usart.h"
|
||||||
|
#endif /* HAL_USART_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_IRDA_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_irda.h"
|
||||||
|
#endif /* HAL_IRDA_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_SMARTCARD_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_smartcard.h"
|
||||||
|
#endif /* HAL_SMARTCARD_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_WWDG_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_wwdg.h"
|
||||||
|
#endif /* HAL_WWDG_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_PCD_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_pcd.h"
|
||||||
|
#endif /* HAL_PCD_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_HCD_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_hcd.h"
|
||||||
|
#endif /* HAL_HCD_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_DSI_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_dsi.h"
|
||||||
|
#endif /* HAL_DSI_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_QSPI_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_qspi.h"
|
||||||
|
#endif /* HAL_QSPI_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_CEC_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_cec.h"
|
||||||
|
#endif /* HAL_CEC_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_FMPI2C_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_fmpi2c.h"
|
||||||
|
#endif /* HAL_FMPI2C_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_SPDIFRX_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_spdifrx.h"
|
||||||
|
#endif /* HAL_SPDIFRX_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_DFSDM_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_dfsdm.h"
|
||||||
|
#endif /* HAL_DFSDM_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_LPTIM_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_lptim.h"
|
||||||
|
#endif /* HAL_LPTIM_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_MMC_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_hal_mmc.h"
|
||||||
|
#endif /* HAL_MMC_MODULE_ENABLED */
|
||||||
|
|
||||||
|
#ifdef HAL_FSMC_MODULE_ENABLED
|
||||||
|
#include "stm32f4xx_ll_fmc.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Exported macro ------------------------------------------------------------*/
|
||||||
|
#ifdef USE_FULL_ASSERT
|
||||||
|
/**
|
||||||
|
* @brief The assert_param macro is used for function's parameters check.
|
||||||
|
* @param expr If expr is false, it calls assert_failed function
|
||||||
|
* which reports the name of the source file and the source
|
||||||
|
* line number of the call that failed.
|
||||||
|
* If expr is true, it returns no value.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
|
||||||
|
/* Exported functions ------------------------------------------------------- */
|
||||||
|
void assert_failed(uint8_t *file, uint32_t line);
|
||||||
|
#else
|
||||||
|
#define assert_param(expr) ((void)0U)
|
||||||
|
#endif /* USE_FULL_ASSERT */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* __STM32F4xx_HAL_CONF_CUSTOM_H */
|
||||||
|
|
||||||
|
|
||||||
|
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user