Fix stepper use before init. Add Ultimaker2+ Extended clone config (#13284)

This commit is contained in:
Vasily Evseenko 2019-03-03 02:29:02 +03:00 committed by Scott Lahteine
parent edc4e037c4
commit 71773b128d
6 changed files with 4380 additions and 1 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -2265,7 +2265,7 @@ void MarlinSettings::reset() {
// //
#if HAS_MOTOR_CURRENT_PWM #if HAS_MOTOR_CURRENT_PWM
uint32_t tmp_motor_current_setting[3] = PWM_MOTOR_CURRENT; constexpr uint32_t tmp_motor_current_setting[3] = PWM_MOTOR_CURRENT;
for (uint8_t q = 3; q--;) for (uint8_t q = 3; q--;)
stepper.digipot_current(q, (stepper.motor_current_setting[q] = tmp_motor_current_setting[q])); stepper.digipot_current(q, (stepper.motor_current_setting[q] = tmp_motor_current_setting[q]));
#endif #endif

View File

@ -81,6 +81,10 @@
Stepper stepper; // Singleton Stepper stepper; // Singleton
#if HAS_MOTOR_CURRENT_PWM
bool Stepper::initialized; // = false
#endif
#ifdef __AVR__ #ifdef __AVR__
#include "speed_lookuptable.h" #include "speed_lookuptable.h"
#endif #endif
@ -2161,6 +2165,9 @@ void Stepper::init() {
| (INVERT_Z_DIR ? _BV(Z_AXIS) : 0); | (INVERT_Z_DIR ? _BV(Z_AXIS) : 0);
set_directions(); set_directions();
#if HAS_MOTOR_CURRENT_PWM
initialized = true;
#endif
} }
/** /**
@ -2466,6 +2473,7 @@ void Stepper::report_positions() {
#if HAS_MOTOR_CURRENT_PWM #if HAS_MOTOR_CURRENT_PWM
void Stepper::refresh_motor_power() { void Stepper::refresh_motor_power() {
if (!initialized) return;
LOOP_L_N(i, COUNT(motor_current_setting)) { LOOP_L_N(i, COUNT(motor_current_setting)) {
switch (i) { switch (i) {
#if PIN_EXISTS(MOTOR_CURRENT_PWM_XY) || PIN_EXISTS(MOTOR_CURRENT_PWM_X) || PIN_EXISTS(MOTOR_CURRENT_PWM_Y) #if PIN_EXISTS(MOTOR_CURRENT_PWM_XY) || PIN_EXISTS(MOTOR_CURRENT_PWM_X) || PIN_EXISTS(MOTOR_CURRENT_PWM_Y)
@ -2498,6 +2506,8 @@ void Stepper::report_positions() {
#elif HAS_MOTOR_CURRENT_PWM #elif HAS_MOTOR_CURRENT_PWM
if (!initialized) return;
if (WITHIN(driver, 0, COUNT(motor_current_setting) - 1)) if (WITHIN(driver, 0, COUNT(motor_current_setting) - 1))
motor_current_setting[driver] = current; // update motor_current_setting motor_current_setting[driver] = current; // update motor_current_setting

View File

@ -239,6 +239,7 @@ class Stepper {
#define PWM_MOTOR_CURRENT DEFAULT_PWM_MOTOR_CURRENT #define PWM_MOTOR_CURRENT DEFAULT_PWM_MOTOR_CURRENT
#endif #endif
static uint32_t motor_current_setting[3]; static uint32_t motor_current_setting[3];
static bool initialized;
#endif #endif
private: private:

View File

@ -97,6 +97,8 @@
#define FAN_PIN 7 #define FAN_PIN 7
#endif #endif
#define ORIG_E0_AUTO_FAN_PIN 77
// //
// Misc. Functions // Misc. Functions
// //