Encoder update for TMC

pull/127/head
Tim Evers 2020-02-06 21:53:12 +01:00
parent 0c27bac9f9
commit 7dc7f346fd
9 changed files with 329 additions and 253 deletions

View File

@ -241,85 +241,107 @@ void Movement::loadSettings()
motorCurrentZ = ParameterList::getInstance()->getValue(MOVEMENT_MOTOR_CURRENT_Z);
stallSensitivityZ = ParameterList::getInstance()->getValue(MOVEMENT_STALL_SENSITIVITY_Z);
microStepsX = ParameterList::getInstance()->getValue(MOVEMENT_MICROSTEPS_Z);
microStepsZ = ParameterList::getInstance()->getValue(MOVEMENT_MICROSTEPS_Z);
stallSensitivityX = 0;
stallSensitivityY = 0;
stallSensitivityZ = 0;
/**/
//Serial.print("=X=>");
//Serial.print(" ");
//Serial.print(microStepsX);
//Serial.print(" ");
//Serial.print(motorCurrentX);
//Serial.print(" ");
//Serial.print(stallSensitivityX);
//Serial.println(" ");
//Serial.print("=Y=>");
//Serial.print(" ");
//Serial.print(microStepsY);
//Serial.print(" ");
//Serial.print(motorCurrentY);
//Serial.print(" ");
//Serial.print(stallSensitivityY);
//Serial.println(" ");
//Serial.print("=Z=>");
//Serial.print(" ");
//Serial.print(microStepsZ);
//Serial.print(" ");
//Serial.print(motorCurrentZ);
//Serial.print(" ");
//Serial.print(stallSensitivityZ);
//Serial.println(" ");
if (microStepsX <= 0) { microStepsX = 1; }
if (microStepsY <= 0) { microStepsY = 1; }
if (microStepsZ <= 0) { microStepsZ = 1; }
axisX.loadSettingsTMC2130(motorCurrentX, stallSensitivityX, microStepsX);
axisY.loadSettingsTMC2130(motorCurrentX, stallSensitivityX, microStepsX);
axisZ.loadSettingsTMC2130(motorCurrentX, stallSensitivityX, microStepsX);
axisY.loadSettingsTMC2130(motorCurrentY, stallSensitivityY, microStepsY);
axisZ.loadSettingsTMC2130(motorCurrentZ, stallSensitivityZ, microStepsZ);
}
#endif
static int missedCount = 0;
void Movement::test()
{
axisX.enableMotor();
//axisY.test();
//axisX.enableMotor();
//axisX.setMotorStep();
//delayMicroseconds(10);
//axisX.setMotorStep();
//delayMicroseconds(10);
//delayMicroseconds(500);
//TMC2130X.read_STAT();
//delayMicroseconds(500);
//if (axisX.stallDetected()) { testA++; }
//testB++;
bool stallGuard = false;
bool standStill = false;
uint8_t status_x = 0;
//digitalWrite(X_ENABLE_PIN, LOW);
axisX.enableMotor();
//digitalWrite(X_STEP_PIN, HIGH);
//delayMicroseconds(10);
axisX.setMotorStep();
delayMicroseconds(500);
//digitalWrite(X_STEP_PIN, LOW);
//delayMicroseconds(10);
axisX.resetMotorStep();
//axisX.setMotorStepWriteTMC2130();
//axisX.test();
TMC2130X.read_STAT();
//Serial.print("R99");
//Serial.print(" mot x = ");
//Serial.print(axisX.currentPosition());
//Serial.print(" enc x = ");
//Serial.print(encoderX.currentPosition());
//Serial.print("\r\n");
status_x = TMC2130X.getStatus();
stallGuard = status_x & FB_TMC_SPISTATUS_STALLGUARD_MASK ? true : false;
standStill = status_x & FB_TMC_SPISTATUS_STANDSTILL_MASK ? true : false;
if (stallGuard || standStill) {
testA++;
}
//Serial.print("R99");
//Serial.print(" mot y = ");
//Serial.print(axisY.currentPosition());
//Serial.print(" enc y = ");
//Serial.print(encoderY.currentPosition());
//Serial.print("\r\n");
//if (axisX.stallDetected()) {
// testA++;
//}
testB++;
delayMicroseconds(500);
//Serial.print("R99");
//Serial.print(" mot z = ");
//Serial.print(axisZ.currentPosition());
//Serial.print(" enc z = ");
//Serial.print(encoderZ.currentPosition());
//Serial.print("\r\n");
// read changes in encoder
//encoderX.readEncoder();
//encoderY.readEncoder();
//encoderZ.readEncoder();
//reportPosition();
//bool test = axisX.endStopMin();
//Serial.print("R99");
//Serial.print(" test = ");
//Serial.print(test);
//Serial.print("\r\n");
}
void Movement::test2()
{
axisX.setMotorStep();
//CurrentState::getInstance()->printPosition();
//encoderX.test();
//encoderY.test();
//encoderZ.test();
Serial.print("*");
Serial.print(testA);
Serial.print("/");
Serial.print(testB);
Serial.println();
//testA = 0;
}
/**
@ -503,25 +525,22 @@ int Movement::moveToCoords(double xDestScaled, double yDestScaled, double zDestS
#endif
/**/
if (loopCounts % 1000 == 0)
{
//if (loopCounts % 1000 == 0)
//{
// Serial.print("R99");
// Serial.print(" missed step ");
// Serial.print(motorConsMissedSteps[1]);
// Serial.print(" axis pos ");
// Serial.print(axisY.currentPosition());
// Serial.print("\r\n");
//Serial.print("R99");
//Serial.print(" missed step ");
//Serial.print(motorConsMissedSteps[1]);
//Serial.print(" axis pos ");
//Serial.print(axisY.currentPosition());
//Serial.print("\r\n");
// Serial.print("X - ");
// axisX.test();
//Serial.print("X - ");
//axisX.test();
//Serial.print("Y - ");
//axisY.test();
}
loopCounts++;
// Serial.print("Y - ");
// axisY.test();
//}
//loopCounts++;
checkAxisSubStatus(&axisX, &axisSubStep[0]);
checkAxisSubStatus(&axisY, &axisSubStep[1]);
@ -1391,22 +1410,56 @@ void Movement::checkAxisVsEncoder(MovementAxis *axis, MovementEncoder *encoder,
// Serial.print(*lastPosition);
// */
//
// if (*encoderEnabled) {
// if (axis->stallDetected()) {
// // In case of stall detection, count this as a missed step
// (*missedSteps)++;
// axis->setCurrentPosition(*lastPosition);
// }
// else {
// // Decrease amount of missed steps if there are no missed step
// if (*missedSteps > 0)
// {
// (*missedSteps) -= (*encoderStepDecay);
// }
// *lastPosition = axis->currentPosition();
// encoder->setPosition(axis->currentPosition());
// }
// }
//if (axis->stallDetected()) {
// Serial.print("X");
//}
//else
//{
// Serial.print(".");
//}
/**/
bool stallGuard = false;
bool standStill = false;
uint8_t status = 0;
if (*encoderEnabled) {
//TMC2130X.read_STAT();
status = axis->getStatus();
stallGuard = status & FB_TMC_SPISTATUS_STALLGUARD_MASK ? true : false;
standStill = status & FB_TMC_SPISTATUS_STANDSTILL_MASK ? true : false;
if (stallGuard || standStill) {
//Serial.print(".");
// In case of stall detection, count this as a missed step
(*missedSteps)++;
axis->setCurrentPosition(*lastPosition);
//if (int(*missedSteps) % 10 == 0) {
// Serial.println();
// Serial.print(*missedSteps);
// Serial.print("/");
// Serial.print(axis->currentPosition());
// Serial.println();
//}
}
else {
// Decrease amount of missed steps if there are no missed step
if (*missedSteps > 0)
{
(*missedSteps) -= (*encoderStepDecay);
}
*lastPosition = axis->currentPosition();
encoder->setPosition(axis->currentPosition());
}
}
//
// //Serial.print(" new last pos ");
// //Serial.print(*lastPosition);

View File

@ -145,6 +145,11 @@ private:
int axisServicedNext = 0;
bool motorMotorsEnabled = false;
int testA = 0;
int testB = 0;
};
#endif /* MOVEMENT_H_ */

View File

@ -97,10 +97,18 @@ void MovementAxis::initTMC2130()
TMC2130A = &TMC2130Z;
}
setMotorStepWrite = &MovementAxis::setMotorStepWriteTMC2130;
setMotorStepWrite2 = &MovementAxis::setMotorStepWriteTMC2130_2;
resetMotorStepWrite = &MovementAxis::resetMotorStepWriteTMC2130;
resetMotorStepWrite2 = &MovementAxis::resetMotorStepWriteTMC2130_2;
setMotorStepWrite = &MovementAxis::setMotorStepWriteDefault;
setMotorStepWrite2 = &MovementAxis::setMotorStepWriteDefault2;
resetMotorStepWrite = &MovementAxis::resetMotorStepWriteDefault;
resetMotorStepWrite2 = &MovementAxis::resetMotorStepWriteDefault2;
/**/ // Not using the edge driving now, only standard pulse driving
// as edge driving causes issues with stall detection routines
//setMotorStepWrite = &MovementAxis::setMotorStepWriteTMC2130;
//setMotorStepWrite2 = &MovementAxis::setMotorStepWriteTMC2130_2;
//resetMotorStepWrite = &MovementAxis::resetMotorStepWriteTMC2130;
//resetMotorStepWrite2 = &MovementAxis::resetMotorStepWriteTMC2130_2;
TMC2130A->init();
@ -120,14 +128,9 @@ void MovementAxis::loadSettingsTMC2130(int motorCurrent, int stallSensitivity,
}
}
bool MovementAxis::stallDetected() {
/**/
bool stallGuard = TMC2130A->getStatus() & FB_TMC_SPISTATUS_STALLGUARD_MASK ? true : false;
bool standStill = TMC2130A->getStatus() & FB_TMC_SPISTATUS_STANDSTILL_MASK ? true : false;
//return (TMC2130A->isStandstill() || TMC2130A->isStallguard());
//return stallGuard || standStill;
return false;
uint8_t MovementAxis::getStatus() {
return TMC2130X.read_STAT();
//return TMC2130A->getStatus();
}
uint16_t MovementAxis::getLoad() {

View File

@ -95,8 +95,8 @@ public:
#if defined(FARMDUINO_EXP_V20)
void initTMC2130();
void loadSettingsTMC2130(int motorCurrent, int stallSensitivity, int microSteps);
bool stallDetected();
uint16_t getLoad();
#endif
#if defined(FARMDUINO_EXP_V20)
@ -105,6 +105,8 @@ public:
void resetMotorStepWriteTMC2130();
void resetMotorStepWriteTMC2130_2();
uint8_t getStatus();
unsigned int getLostSteps();
bool tmcStep = true;

View File

@ -23,7 +23,7 @@ void loadTMC2130ParametersMotor(TMC2130_Basics *tb, int microsteps, int current,
//Serial.print(sensitivity);
//Serial.println(" ");
/**/
/*
tb->init();
uint8_t data = 0;
@ -107,6 +107,69 @@ void loadTMC2130ParametersMotor(TMC2130_Basics *tb, int microsteps, int current,
tb->set_CHOPCONF(FB_TMC_COOLCONF_SEMAX, 0b01);
tb->set_CHOPCONF(FB_TMC_COOLCONF_SGT, sensitivity);
*/
uint32_t data = 0;
uint32_t value = 0;
tb->init();
switch (microsteps) {
case 1:
data = 8;
break;
case 2:
data = 7;
break;
case 4:
data = 6;
break;
case 8:
data = 5;
break;
case 16:
data = 4;
break;
case 32:
data = 3;
break;
case 64:
data = 2;
break;
case 128:
data = 1;
break;
}
tb->alter_REG(FB_TMC_REG_CHOPCONF, uint32_t(data) << FB_TMC_CHOPCONF_MRES, FB_TMC_CHOPCONF_MASKS[FB_TMC_CHOPCONF_MRES] << FB_TMC_CHOPCONF_MRES);
uint16_t mA = current;
float multiplier = 0.5;
float RS = 0.11;
uint8_t CS = 32.0*1.41421*mA / 1000.0*(RS + 0.02) / 0.325 - 1;
if (CS < 16) {
CS = 32.0*1.41421*mA / 1000.0*(RS + 0.02) / 0.180 - 1;
}
data = ((uint32_t(CS)&FB_TMC_IHOLD_MASK) << FB_TMC_IHOLD);
data |= ((uint32_t(CS)&FB_TMC_IRUN_MASK) << FB_TMC_IRUN);
data |= ((uint32_t(16)&FB_TMC_IHOLDDELAY_MASK) << FB_TMC_IHOLDDELAY);
tb->write_REG(FB_TMC_REG_IHOLD_IRUN, data);
tb->alter_REG(FB_TMC_REG_CHOPCONF, uint32_t(sensitivity) << FB_TMC_COOLCONF_SGT, FB_TMC_CHOPCONF_MASKS[FB_TMC_COOLCONF_SGT] << FB_TMC_COOLCONF_SGT);
tb->set_GCONF(FB_TMC_GCONF_I_SCALE_ANALOG, 1);
tb->alter_REG(FB_TMC_REG_CHOPCONF, uint32_t(3) << FB_TMC_CHOPCONF_TOFF, FB_TMC_CHOPCONF_MASKS[FB_TMC_CHOPCONF_TOFF] << FB_TMC_CHOPCONF_TOFF);
tb->alter_REG(FB_TMC_REG_CHOPCONF, uint32_t(1) << FB_TMC_CHOPCONF_TBL, FB_TMC_CHOPCONF_MASKS[FB_TMC_CHOPCONF_TBL] << FB_TMC_CHOPCONF_TBL);
tb->set_GCONF(FB_TMC_GCONF_DIAG1_STALL, 1);
tb->set_GCONF(FB_TMC_GCONF_DIAG1_ONSTATE, 1);
tb->write_REG(FB_TMC_REG_TCOOLTHRS, 0xFFFFF & FB_TMC_TCOOLTHRS_MASK);
tb->write_REG(FB_TMC_REG_THIGH, 0 & FB_TMC_THIGH_MASK);
tb->alter_REG(FB_TMC_REG_CHOPCONF, uint32_t(5) << FB_TMC_COOLCONF_SEMIN, FB_TMC_CHOPCONF_MASKS[FB_TMC_COOLCONF_SEMIN] << FB_TMC_COOLCONF_SEMIN);
tb->alter_REG(FB_TMC_REG_CHOPCONF, uint32_t(2) << FB_TMC_COOLCONF_SEMAX, FB_TMC_CHOPCONF_MASKS[FB_TMC_COOLCONF_SEMAX] << FB_TMC_COOLCONF_SEMAX);
tb->alter_REG(FB_TMC_REG_CHOPCONF, uint32_t(0b01) << FB_TMC_COOLCONF_SEDN, FB_TMC_CHOPCONF_MASKS[FB_TMC_COOLCONF_SEDN] << FB_TMC_COOLCONF_SEDN);
delay(100);
}
#endif

View File

@ -19,14 +19,15 @@ void TMC2130_Basics::init() {
void TMC2130_Basics::init_SPI() {
SPI.setDataMode(FB_TMC_SPI_DATA_MODE);
SPI.setBitOrder(FB_TMC_SPI_BIT_ORDER);
SPI.setClockDivider(FB_TMC_SPI_CLOCK_DIVIDER);
//SPI.setClockDivider(FB_TMC_SPI_CLOCK_DIVIDER);/**
SPI.setClockDivider(SPI_CLOCK_DIV4);
SPI.begin();
}
// read status
uint8_t TMC2130_Basics::read_STAT()
{
init_SPI();
//init_SPI();
digitalWrite(_csPin, LOW);
// read address
@ -110,6 +111,20 @@ uint8_t TMC2130_Basics::alter_REG(uint8_t address, uint32_t data, uint32_t mask)
return _status;
}
// check the stallguard status
boolean TMC2130_Basics::isStallguard()
{
return _status & FB_TMC_SPISTATUS_STALLGUARD_MASK ? true : false;
}
// check the standstill status
boolean TMC2130_Basics::isStandstill()
{
return _status & FB_TMC_SPISTATUS_STANDSTILL_MASK ? true : false;
}
// set single bits in the GCONF register
uint8_t TMC2130_Basics::set_GCONF(uint8_t position, uint8_t value)
{
@ -129,4 +144,5 @@ uint8_t TMC2130_Basics::set_CHOPCONF(uint8_t position, uint8_t value)
uint8_t TMC2130_Basics::getStatus()
{
return _status;
}
}

View File

@ -29,8 +29,9 @@ public:
//boolean isReset();
//boolean isError();
//boolean isStallguard();
//boolean isStandstill();
boolean isStallguard();
boolean isStandstill();
//String debug();
private:

View File

@ -1,9 +1,10 @@
// Do not remove the include below
#include "farmbot_arduino_controller.h"
#if !defined(FARMDUINO_EXP_V20)
/**/
//#if !defined(FARMDUINO_EXP_V20)
#include "TimerOne.h"
#endif
//#endif
bool stepperInit = false;
bool stepperFlip = false;
@ -51,7 +52,7 @@ unsigned long interruptDurationMax = 0;
bool interruptBusy = false;
int interruptSecondTimer = 0;
#if !defined(FARMDUINO_EXP_V20)
//#if !defined(FARMDUINO_EXP_V20)
void interrupt(void)
{
if (!debugInterrupt)
@ -68,11 +69,11 @@ void interrupt(void)
}
}
}
#endif
//#endif
/**/ // unsigned long intrCounter = 0;
#if defined(FARMDUINO_EXP_V20)
#if defined(FARMDUINO_EXP_V20xxx)
ISR(TIMER2_OVF_vect) {
if (interruptBusy == false)
@ -121,6 +122,7 @@ void periodicChecksAndReport()
if ((currentTime - lastAction) > reportingPeriod)
{
// After an idle time, send the idle message
//Movement::getInstance()->test2();
if (CurrentState::getInstance()->isEmergencyStop())
{
@ -281,11 +283,10 @@ void checkParamsChanged()
CurrentState::getInstance()->printQAndNewLine();
}
/*
#if defined(FARMDUINO_EXP_V20)
loadTMC2130paraeters();
Movement::getInstance()->loadSettingsTMC2130();
#endif
*/
Movement::getInstance()->loadSettings();
PinGuard::getInstance()->loadConfig();
@ -584,18 +585,18 @@ void startInterrupt()
// Interrupt management code library written by Paul Stoffregen
// The default time 100 micro seconds
#if !defined(FARMDUINO_EXP_V20)
//#if !defined(FARMDUINO_EXP_V20)
Timer1.attachInterrupt(interrupt);
Timer1.initialize(MOVEMENT_INTERRUPT_SPEED);
Timer1.start();
#endif
//#endif
#if defined(FARMDUINO_EXP_V20)
Serial.println("set timer");
TIMSK2 = (TIMSK2 & B11111110) | 0x01; // Enable timer overflow
TCCR2B = (TCCR2B & B11111000) | 0x01; // Set divider to 1
OCR2A = 4; // Set overflow to 4 for total of 64 µs
#endif
//#if defined(FARMDUINO_EXP_V20)
// Serial.println("set timer");
// TIMSK2 = (TIMSK2 & B11111110) | 0x01; // Enable timer overflow
// TCCR2B = (TCCR2B & B11111000) | 0x01; // Set divider to 1
// OCR2A = 4; // Set overflow to 4 for total of 64 ľs
//#endif
}
void homeOnBoot()
@ -802,15 +803,28 @@ void setupTestForDebug()
//loadTMC2130ParametersMotor(&controllerTMC2130_Z, 8, 500, 0); delay(100);
//loadTMC2130ParametersMotor(&controllerTMC2130_E, 8, 500, 0); delay(100);
/*
Serial.println("Init");
loadTMC2130ParametersMotor(&TMC2130X, 8, 200, 0);
loadTMC2130ParametersMotor(&TMC2130Y, 8, 200, 0);
loadTMC2130ParametersMotor(&TMC2130Z, 8, 200, 0);
loadTMC2130ParametersMotor(&TMC2130E, 8, 200, 0);
*/
}
bool left = false;
int missedX = 0;
int missedY = 0;
int missedZ = 0;
int missedE = 0;
void runTestForDebug()
{
/*
currentTime = millis();
if (currentTime < lastAction)
{
@ -824,27 +838,40 @@ void runTestForDebug()
if ((currentTime - lastAction) > reportingPeriod)
{
blinkLed();
Serial.print(".");
//Serial.print(".");
lastAction = currentTime;
Serial.print(">");
Serial.print(" X = ");
Serial.print(missedX);
Serial.print(" Y = ");
Serial.print(missedY);
Serial.print(" Z = ");
Serial.print(missedZ);
Serial.print(" E = ");
Serial.print(missedE);
Serial.print(CRLF);
if (left) {
left = false;
digitalWrite(X_DIR_PIN, LOW);
digitalWrite(Y_DIR_PIN, LOW);
digitalWrite(Z_DIR_PIN, LOW);
digitalWrite(E_DIR_PIN, LOW);
//digitalWrite(X_DIR_PIN, LOW);
//digitalWrite(Y_DIR_PIN, LOW);
//digitalWrite(Z_DIR_PIN, LOW);
//digitalWrite(E_DIR_PIN, LOW);
}
else {
left = true;
digitalWrite(X_DIR_PIN, HIGH);
digitalWrite(Y_DIR_PIN, HIGH);
digitalWrite(Z_DIR_PIN, HIGH);
digitalWrite(E_DIR_PIN, HIGH);
//digitalWrite(X_DIR_PIN, HIGH);
//digitalWrite(Y_DIR_PIN, HIGH);
//digitalWrite(Z_DIR_PIN, HIGH);
//digitalWrite(E_DIR_PIN, HIGH);
}
}
}
*/
/*
// make a step
digitalWrite(X_STEP_PIN, HIGH);
digitalWrite(Y_STEP_PIN, HIGH);
@ -858,38 +885,44 @@ void runTestForDebug()
digitalWrite(E_STEP_PIN, LOW);
delayMicroseconds(100);
/*
bool stallGuard = false;
bool standStill = false;
uint8_t status = 0;
*/
Movement::getInstance()->test();
/*
TMC2130X.read_STAT();
if (TMC2130X.isStandstill() || TMC2130X.isStallguard()) {
Serial.print("X");
}
TMC2130Y.read_STAT();
if (TMC2130Y.isStandstill() || TMC2130Y.isStallguard()) {
Serial.print("Y");
}
TMC2130Z.read_STAT();
if (TMC2130Z.isStandstill() || TMC2130Z.isStallguard()) {
Serial.print("Z");
}
TMC2130E.read_STAT();
if (TMC2130E.isStandstill() || TMC2130E.isStallguard()) {
Serial.print("E");
}
*/
status = TMC2130X.getStatus();
stallGuard = status & FB_TMC_SPISTATUS_STALLGUARD_MASK ? true : false;
standStill = status & FB_TMC_SPISTATUS_STANDSTILL_MASK ? true : false;
if (stallGuard || standStill) { missedX++;}
/*
digitalWrite(X_STEP_PIN, HIGH);
digitalWrite(E_STEP_PIN, HIGH);
delayMicroseconds(100);
status = TMC2130Y.getStatus();
stallGuard = status & FB_TMC_SPISTATUS_STALLGUARD_MASK ? true : false;
standStill = status & FB_TMC_SPISTATUS_STANDSTILL_MASK ? true : false;
if (stallGuard || standStill) { missedY++; }
digitalWrite(X_STEP_PIN, LOW);
digitalWrite(E_STEP_PIN, LOW);
delayMicroseconds(100);
*/
status = TMC2130Z.getStatus();
stallGuard = status & FB_TMC_SPISTATUS_STALLGUARD_MASK ? true : false;
standStill = status & FB_TMC_SPISTATUS_STANDSTILL_MASK ? true : false;
if (stallGuard || standStill) { missedZ++; }
status = TMC2130E.getStatus();
stallGuard = status & FB_TMC_SPISTATUS_STALLGUARD_MASK ? true : false;
standStill = status & FB_TMC_SPISTATUS_STANDSTILL_MASK ? true : false;
if (stallGuard || standStill) { missedE++; }
*/
//if (TMC2130X.isStandstill() || TMC2130X.isStallguard()) {missedX++;}
//if (TMC2130Y.isStandstill() || TMC2130Y.isStallguard()) {missedY++;}
//if (TMC2130Z.isStandstill() || TMC2130Z.isStallguard()) {missedZ++;}
//if (TMC2130E.isStandstill() || TMC2130E.isStallguard()) {missedE++;}
//Movement::getInstance()->test();
//delayMicroseconds(100);

View File

@ -43,106 +43,6 @@ void setup()
Serial.print(SPACE);
Serial.print("ARDUINO STARTUP COMPLETE");
Serial.print(CRLF);
/*
Serial.begin(115200); //init serial port and set baudrate
while (!Serial); //wait for serial port to connect (needed for Leonardo only)
Serial.println("Start...");
*/
/*
// pins
pinMode(X_ENABLE_PIN, OUTPUT);
pinMode(X_DIR_PIN, OUTPUT);
pinMode(X_STEP_PIN, OUTPUT);
digitalWrite(X_ENABLE_PIN, HIGH); // disable driver
digitalWrite(X_DIR_PIN, LOW); // chose direction
digitalWrite(X_STEP_PIN, LOW); // no step yet
pinMode(Y_ENABLE_PIN, OUTPUT);
pinMode(Y_DIR_PIN, OUTPUT);
pinMode(Y_STEP_PIN, OUTPUT);
digitalWrite(Y_ENABLE_PIN, HIGH); // disable driver
digitalWrite(Y_DIR_PIN, LOW); // chose direction
digitalWrite(Y_STEP_PIN, LOW); // no step yet
pinMode(Z_ENABLE_PIN, OUTPUT);
pinMode(Z_DIR_PIN, OUTPUT);
pinMode(Z_STEP_PIN, OUTPUT);
digitalWrite(Z_ENABLE_PIN, HIGH); // disable driver
digitalWrite(Z_DIR_PIN, LOW); // chose direction
digitalWrite(Z_STEP_PIN, LOW); // no step yet
pinMode(E_ENABLE_PIN, OUTPUT);
pinMode(E_DIR_PIN, OUTPUT);
pinMode(E_STEP_PIN, OUTPUT);
digitalWrite(E_ENABLE_PIN, HIGH); // disable driver
digitalWrite(E_DIR_PIN, LOW); // chose direction
digitalWrite(E_STEP_PIN, LOW); // no step yet
*/
/*
Serial.println("Init");
loadTMC2130ParametersMotor(&TMC2130X, 8, 200, 0);
loadTMC2130ParametersMotor(&TMC2130Y, 8, 200, 0);
loadTMC2130ParametersMotor(&TMC2130Z, 8, 200, 0);
loadTMC2130ParametersMotor(&TMC2130E, 8, 200, 0);
*/
/*
pinMode(X_ENABLE_PIN, OUTPUT);
pinMode(X_DIR_PIN, OUTPUT);
pinMode(X_STEP_PIN, OUTPUT);
digitalWrite(X_ENABLE_PIN, HIGH); // disable driver
digitalWrite(X_DIR_PIN, LOW); // chose direction
digitalWrite(X_STEP_PIN, LOW); // no step yet
pinMode(Y_ENABLE_PIN, OUTPUT);
pinMode(Y_DIR_PIN, OUTPUT);
pinMode(Y_STEP_PIN, OUTPUT);
digitalWrite(Y_ENABLE_PIN, HIGH); // disable driver
digitalWrite(Y_DIR_PIN, LOW); // chose direction
digitalWrite(Y_STEP_PIN, LOW); // no step yet
pinMode(Z_ENABLE_PIN, OUTPUT);
pinMode(Z_DIR_PIN, OUTPUT);
pinMode(Z_STEP_PIN, OUTPUT);
digitalWrite(Z_ENABLE_PIN, HIGH); // disable driver
digitalWrite(Z_DIR_PIN, LOW); // chose direction
digitalWrite(Z_STEP_PIN, LOW); // no step yet
pinMode(E_ENABLE_PIN, OUTPUT);
pinMode(E_DIR_PIN, OUTPUT);
pinMode(E_STEP_PIN, OUTPUT);
digitalWrite(E_ENABLE_PIN, HIGH); // disable driver
digitalWrite(E_DIR_PIN, LOW); // chose direction
digitalWrite(E_STEP_PIN, LOW); // no step yet
*/
//loadTMC2130drivers();
//startupTmc();
//loadTMC2130parameters();
/**/
//Movement::getInstance()->initTMC2130();
//loadTMC2130parameters();
//loadTMC2130ParametersMotor(&TMC2130X, 8, 200, 0);
//loadTMC2130ParametersMotor(&TMC2130Y, 8, 200, 0);
//loadTMC2130ParametersMotor(&TMC2130Z, 8, 200, 0);
//loadTMC2130ParametersMotor(&TMC2130E, 8, 200, 0);
//Serial.println("Enable pins");
//digitalWrite(X_ENABLE_PIN, LOW); // enable driver
//digitalWrite(Y_ENABLE_PIN, LOW); // enable driver
//digitalWrite(Z_ENABLE_PIN, LOW); // enable driver
//digitalWrite(E_ENABLE_PIN, LOW); // enable driver
//Serial.println("Enable");
}
// the loop function runs over and over again until power down or reset