diff --git a/Grbl_Esp32/Motors/MotorClass.cpp b/Grbl_Esp32/Motors/MotorClass.cpp index 8ef4a02b..f493b2ec 100644 --- a/Grbl_Esp32/Motors/MotorClass.cpp +++ b/Grbl_Esp32/Motors/MotorClass.cpp @@ -384,8 +384,6 @@ void motors_set_direction_pins(uint8_t onMask) { } } -// for testing -#ifndef USE_TRINAMIC // returns the next spi index. We cannot preassign to axes because ganged (X2 type axes) might // need to be inserted into the order of axes. uint8_t get_next_trinamic_driver_index() { @@ -447,8 +445,6 @@ void TMC2130Stepper::switchCSpin(bool state) { } #endif -#endif - // ============================== Class Methods ================================================ Motor :: Motor() { diff --git a/Grbl_Esp32/grbl.h b/Grbl_Esp32/grbl.h index c179f273..b6b8d20e 100644 --- a/Grbl_Esp32/grbl.h +++ b/Grbl_Esp32/grbl.h @@ -92,10 +92,6 @@ #include "servo_axis.h" #endif -#ifdef USE_TRINAMIC - #include "grbl_trinamic.h" -#endif - #ifdef USE_UNIPOLAR #include "grbl_unipolar.h" #endif diff --git a/Grbl_Esp32/grbl_trinamic.cppold b/Grbl_Esp32/grbl_trinamic.cppold deleted file mode 100644 index 0df38be3..00000000 --- a/Grbl_Esp32/grbl_trinamic.cppold +++ /dev/null @@ -1,536 +0,0 @@ -/* - grbl_trinamic.cpp - Support for Trinamic Stepper Drivers SPI Mode - using the TMCStepper library - - Part of Grbl_ESP32 - - Copyright (c) 2019 Barton Dring for Buildlog.net LLC - - Grbl_ESP32 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. - - Grbl 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 Grbl. If not, see . -*/ -#include "grbl.h" - -#ifdef USE_TRINAMIC -/* - The drivers can use SPI daisy chaining to allow the use of a single CS_PIN. - The PCB must be designed for this, with SDO pins connected to the - next driver's SDI pin and the final SDO going back to the CPU. - - To set this up, #define TRINAMIC_DAISY_CHAIN in your machine definition - file (Machines/something.h). - - Set the CS_PIN definition for every axis to the same pin, like this... - #define X_CS_PIN GPIO_NUM_17 - #define Y_CS_PIN GPIO_NUM_17 - ...etc. - - Indexes are assigned to each axis in daisy chain mode as shown below. - This assumes your first SPI driver axis is X and there are no gaps until - the last SPI driver. - -*/ - - -// TODO try to use the #define ## method to clean this up -//#define DRIVER(driver, axis) driver##Stepper = TRINAMIC_axis## = driver##Stepper(axis##_CS_PIN, axis##_RSENSE); - -#ifdef X_TRINAMIC - #ifdef X_DRIVER_TMC2130 - TMC2130Stepper TRINAMIC_X = TMC2130Stepper(X_CS_PIN, X_RSENSE, get_next_trinamic_driver_index()); - #endif - #ifdef X_DRIVER_TMC2209 - TMC2209Stepper TRINAMIC_X = TMC2209Stepper(X_CS_PIN, X_RSENSE, get_next_trinamic_driver_index()); - #endif - #ifdef X_DRIVER_TMC5160 - TMC5160Stepper TRINAMIC_X = TMC5160Stepper(X_CS_PIN, X_RSENSE, get_next_trinamic_driver_index()); - #endif -#endif - -#ifdef X2_TRINAMIC - #ifdef X2_DRIVER_TMC2130 - TMC2130Stepper TRINAMIC_X2 = TMC2130Stepper(X2_CS_PIN, X2_RSENSE, get_next_trinamic_driver_index()); - #endif - #ifdef X2_DRIVER_TMC2209 - TMC2209Stepper TRINAMIC_X2 = TMC2209Stepper(X2_CS_PIN, X2_RSENSE, get_next_trinamic_driver_index()); - #endif - #ifdef X2_DRIVER_TMC5160 - TMC5160Stepper TRINAMIC_X2 = TMC5160Stepper(X2_CS_PIN, X2_RSENSE, get_next_trinamic_driver_index()); - #endif -#endif - -#ifdef Y_TRINAMIC - #ifdef Y_DRIVER_TMC2130 - TMC2130Stepper TRINAMIC_Y = TMC2130Stepper(Y_CS_PIN, Y_RSENSE, get_next_trinamic_driver_index()); - #endif - #ifdef Y_DRIVER_TMC2209 - TMC2209Stepper TRINAMIC_Y = TMC2209Stepper(Y_CS_PIN, Y_RSENSE, get_next_trinamic_driver_index()); - #endif - #ifdef Y_DRIVER_TMC5160 - TMC5160Stepper TRINAMIC_Y = TMC5160Stepper(Y_CS_PIN, Y_RSENSE, get_next_trinamic_driver_index()); - #endif -#endif -#ifdef Y2_TRINAMIC - #ifdef Y2_DRIVER_TMC2130 - TMC2130Stepper TRINAMIC_Y2 = TMC2130Stepper(Y2_CS_PIN, Y2_RSENSE, get_next_trinamic_driver_index()); - #endif - #ifdef Y2_DRIVER_TMC2209 - TMC2209Stepper TRINAMIC_Y2 = TMC2209Stepper(Y2_CS_PIN, Y2_RSENSE, get_next_trinamic_driver_index()); - #endif - #ifdef Y2_DRIVER_TMC5160 - TMC5160Stepper TRINAMIC_Y2 = TMC5160Stepper(Y2_CS_PIN, Y2_RSENSE, get_next_trinamic_driver_index()); - #endif -#endif - - -#ifdef Z_TRINAMIC - #ifdef Z_DRIVER_TMC2130 - TMC2130Stepper TRINAMIC_Z = TMC2130Stepper(Z_CS_PIN, Z_RSENSE, get_next_trinamic_driver_index()); - #endif - #ifdef Z_DRIVER_TMC2209 - TMC2209Stepper TRINAMIC_Z = TMC2209Stepper(Z_CS_PIN, Z_RSENSE, get_next_trinamic_driver_index()); - #endif - #ifdef Z_DRIVER_TMC5160 - TMC5160Stepper TRINAMIC_Z = TMC5160Stepper(Z_CS_PIN, Z_RSENSE, get_next_trinamic_driver_index()); - #endif -#endif -#ifdef Z2_TRINAMIC - #ifdef Z2_DRIVER_TMC2130 - TMC2130Stepper TRINAMIC_Z2 = TMC2130Stepper(Z2_CS_PIN, Z2_RSENSE, get_next_trinamic_driver_index()); - #endif - #ifdef Z2_DRIVER_TMC2209 - TMC2209Stepper TRINAMIC_Z2 = TMC2209Stepper(Z2_CS_PIN, Z2_RSENSE, get_next_trinamic_driver_index()); - #endif - #ifdef Z2_DRIVER_TMC5160 - TMC5160Stepper TRINAMIC_Z2 = TMC5160Stepper(Z2_CS_PIN, Z2_RSENSE, get_next_trinamic_driver_index()); - #endif -#endif - -#ifdef A_TRINAMIC - #ifdef A_DRIVER_TMC2130 - TMC2130Stepper TRINAMIC_A = TMC2130Stepper(A_CS_PIN, A_RSENSE, get_next_trinamic_driver_index()); - #endif - #ifdef A_DRIVER_TMC2209 - TMC2209Stepper TRINAMIC_A = TMC2209Stepper(A_CS_PIN, A_RSENSE, get_next_trinamic_driver_index()); - #endif - #ifdef A_DRIVER_TMC5160 - TMC5160Stepper TRINAMIC_A = TMC5160Stepper(A_CS_PIN, A_RSENSE, get_next_trinamic_driver_index()); - #endif -#endif -#ifdef A2_TRINAMIC - #ifdef A2_DRIVER_TMC2130 - TMC2130Stepper TRINAMIC_A2 = TMC2130Stepper(A2_CS_PIN, A2_RSENSE, get_next_trinamic_driver_index()); - #endif - #ifdef A2_DRIVER_TMC2209 - TMC2209Stepper TRINAMIC_A2 = TMC2209Stepper(A2_CS_PIN, A_RSENSE, get_next_trinamic_driver_index()); - #endif - #ifdef A2_DRIVER_TMC5160 - TMC5160Stepper TRINAMIC_A2 = TMC5160Stepper(A2_CS_PIN, A2_RSENSE, get_next_trinamic_driver_index()); - #endif -#endif - -#ifdef B_TRINAMIC - #ifdef B_DRIVER_TMC2130 - TMC2130Stepper TRINAMIC_B = TMC2130Stepper(B_CS_PIN, B_RSENSE, get_next_trinamic_driver_index()); - #endif - #ifdef B_DRIVER_TMC2209 - TMC2209Stepper TRINAMIC_B = TMC2209Stepper(B_CS_PIN, B_RSENSE, get_next_trinamic_driver_index()); - #endif - #ifdef B_DRIVER_TMC5160 - TMC5160Stepper TRINAMIC_B = TMC5160Stepper(B_CS_PIN, B_RSENSE, get_next_trinamic_driver_index()); - #endif -#endif -#ifdef B2_TRINAMIC - #ifdef B2_DRIVER_TMC2130 - TMC2130Stepper TRINAMIC_B2 = TMC2130Stepper(B2_CS_PIN, B2_RSENSE, get_next_trinamic_driver_index()); - #endif - #ifdef B2_DRIVER_TMC2209 - TMC2209Stepper TRINAMIC_B2 = TMC2209Stepper(B2_CS_PIN, B2_RSENSE, get_next_trinamic_driver_index()); - #endif - #ifdef B2_DRIVER_TMC5160 - TMC5160Stepper TRINAMIC_B2 = TMC5160Stepper(B2_CS_PIN, B2_RSENSE, get_next_trinamic_driver_index()); - #endif -#endif - -#ifdef C_TRINAMIC - #ifdef C_DRIVER_TMC2130 - TMC2130Stepper TRINAMIC_C = TMC2130Stepper(C_CS_PIN, C_RSENSE, get_next_trinamic_driver_index()); - #endif - #ifdef C_DRIVER_TMC2209 - TMC2209Stepper TRINAMIC_C = TMC2209Stepper(C_CS_PIN, C_RSENSE, get_next_trinamic_driver_index()); - #endif - #ifdef C_DRIVER_TMC5160 - TMC5160Stepper TRINAMIC_C = TMC5160Stepper(C_CS_PIN, C_RSENSE, get_next_trinamic_driver_index()); - #endif -#endif -#ifdef C2_TRINAMIC - #ifdef C2_DRIVER_TMC2130 - TMC2130Stepper TRINAMIC_C2 = TMC2130Stepper(C2_CS_PIN, C2_RSENSE, get_next_trinamic_driver_index()); - #endif - #ifdef C2_DRIVER_TMC2209 - TMC2209Stepper TRINAMIC_C2 = TMC2209Stepper(C2_CS_PIN, C2_RSENSE, get_next_trinamic_driver_index()); - #endif - #ifdef C2_DRIVER_TMC5160 - TMC5160Stepper TRINAMIC_C2 = TMC5160Stepper(C2_CS_PIN, C2_RSENSE, get_next_trinamic_driver_index()); - #endif -#endif - -void Trinamic_Init() { - grbl_msg_sendf(CLIENT_SERIAL, MSG_LEVEL_INFO, "TMCStepper Init using Library Ver 0x%06x", TMCSTEPPER_VERSION); - - // On Slack Grbl_Esp32 channel, Mitch Bradley suggested. - // "Any pin that could possibly be implemented with a GPIO pin needs - // a pinMode before the first active use. pinMode(OUTPUT) does not have to - // precede digitalWrite(HIGH), as the following sequence is useful: - // digitalWrite(GPIOn, HIGH); - // pinMode(GPIOn, OUTPUT); - // The reason for that sequence is that, for pins that default to input mode/tri-state, - // setting it HIGH first prevents a low-going transition if the pin output register - // happens to be LOW when you select OUTPUT mode." - - // Notes on using I2S out: - // The TMC connected to the I2S out requires SPI clocking down (approximately 100 KHz) - // to work in concert with slow CS operations by I2S out. - -#ifdef X_DRIVER_TMC2130 - digitalWrite(X_CS_PIN, HIGH); - pinMode(X_CS_PIN, OUTPUT); - TRINAMIC_X.setSPISpeed(TRINAMIC_SPI_FREQ); -#endif -#ifdef X2_DRIVER_TMC2130 - digitalWrite(X2_CS_PIN, HIGH); - pinMode(X2_CS_PIN, OUTPUT); - TRINAMIC_X2.setSPISpeed(TRINAMIC_SPI_FREQ); -#endif -#ifdef Y_DRIVER_TMC2130 - digitalWrite(Y_CS_PIN, HIGH); - pinMode(Y_CS_PIN, OUTPUT); - TRINAMIC_Y.setSPISpeed(TRINAMIC_SPI_FREQ); -#endif -#ifdef Y2_DRIVER_TMC2130 - digitalWrite(Y2_CS_PIN, HIGH); - pinMode(Y2_CS_PIN, OUTPUT); - TRINAMIC_Y2.setSPISpeed(TRINAMIC_SPI_FREQ); -#endif -#ifdef Z_DRIVER_TMC2130 - digitalWrite(Z_CS_PIN, HIGH); - pinMode(Z_CS_PIN, OUTPUT); - TRINAMIC_Z.setSPISpeed(TRINAMIC_SPI_FREQ); -#endif -#ifdef Z2_DRIVER_TMC2130 - digitalWrite(Z2_CS_PIN, HIGH); - pinMode(Z2_CS_PIN, OUTPUT); - TRINAMIC_Z2.setSPISpeed(TRINAMIC_SPI_FREQ); -#endif -#ifdef A_DRIVER_TMC2130 - digitalWrite(A_CS_PIN, HIGH); - pinMode(A_CS_PIN, OUTPUT); - TRINAMIC_A.setSPISpeed(TRINAMIC_SPI_FREQ); -#endif -#ifdef A2_DRIVER_TMC2130 - digitalWrite(A2_CS_PIN, HIGH); - pinMode(A2_CS_PIN, OUTPUT); - TRINAMIC_A2.setSPISpeed(TRINAMIC_SPI_FREQ); -#endif -#ifdef B_DRIVER_TMC2130 - digitalWrite(B_CS_PIN, HIGH); - pinMode(B_CS_PIN, OUTPUT); - TRINAMIC_B.setSPISpeed(TRINAMIC_SPI_FREQ); -#endif -#ifdef B2_DRIVER_TMC2130 - digitalWrite(B2_CS_PIN, HIGH); - pinMode(B2_CS_PIN, OUTPUT); - TRINAMIC_B2.setSPISpeed(TRINAMIC_SPI_FREQ); -#endif -#ifdef C_DRIVER_TMC2130 - digitalWrite(C_CS_PIN, HIGH); - pinMode(C_CS_PIN, OUTPUT); - TRINAMIC_C.setSPISpeed(TRINAMIC_SPI_FREQ); -#endif -#ifdef C2_DRIVER_TMC2130 - digitalWrite(C2_CS_PIN, HIGH); - pinMode(C2_CS_PIN, OUTPUT); - TRINAMIC_C2.setSPISpeed(TRINAMIC_SPI_FREQ); -#endif - - SPI.begin(); -#ifdef USE_MACHINE_TRINAMIC_INIT - machine_trinamic_setup(); - return; -#endif -#ifdef X_TRINAMIC - TRINAMIC_X.begin(); // Initiate pins and registries - trinamic_test_response(TRINAMIC_X.test_connection(), "X"); - TRINAMIC_X.toff(TRINAMIC_DEFAULT_TOFF); - TRINAMIC_X.microsteps(axis_settings[X_AXIS]->microsteps->get()); - TRINAMIC_X.rms_current(axis_settings[X_AXIS]->run_current->get() * 1000.0, axis_settings[X_AXIS]->hold_current->get() / 100.0); - TRINAMIC_X.en_pwm_mode(1); // Enable extremely quiet stepping - TRINAMIC_X.pwm_autoscale(1); -#endif -#ifdef X2_TRINAMIC - TRINAMIC_X2.begin(); // Initiate pins and registries - trinamic_test_response(TRINAMIC_X2.test_connection(), "X2"); - TRINAMIC_X2.toff(TRINAMIC_DEFAULT_TOFF); - TRINAMIC_X2.microsteps(axis_settings[X_AXIS]->microsteps->get()); - TRINAMIC_X2.rms_current(axis_settings[X_AXIS]->run_current->get() * 1000.0, axis_settings[X_AXIS]->hold_current->get() / 100.0); - TRINAMIC_X2.en_pwm_mode(1); // Enable extremely quiet stepping - TRINAMIC_X2.pwm_autoscale(1); -#endif - -#ifdef Y_TRINAMIC - TRINAMIC_Y.begin(); // Initiate pins and registries - trinamic_test_response(TRINAMIC_Y.test_connection(), "Y"); - TRINAMIC_Y.toff(TRINAMIC_DEFAULT_TOFF); - TRINAMIC_Y.microsteps(axis_settings[Y_AXIS]->microsteps->get()); - TRINAMIC_Y.rms_current(axis_settings[Y_AXIS]->run_current->get() * 1000.0, axis_settings[Y_AXIS]->hold_current->get() / 100.0); - TRINAMIC_Y.en_pwm_mode(1); // Enable extremely quiet stepping - TRINAMIC_Y.pwm_autoscale(1); -#endif -#ifdef Y2_TRINAMIC - TRINAMIC_Y2.begin(); // Initiate pins and registries - trinamic_test_response(TRINAMIC_Y2.test_connection(), "Y2"); - TRINAMIC_Y2.toff(TRINAMIC_DEFAULT_TOFF); - TRINAMIC_Y2.microsteps(axis_settings[Y_AXIS]->microsteps->get()); - TRINAMIC_Y2.rms_current(axis_settings[Y_AXIS]->run_current->get() * 1000.0, axis_settings[Y_AXIS]->hold_current->get() / 100.0); - TRINAMIC_Y2.en_pwm_mode(1); // Enable extremely quiet stepping - TRINAMIC_Y2.pwm_autoscale(1); -#endif - -#ifdef Z_TRINAMIC - TRINAMIC_Z.begin(); // Initiate pins and registries - trinamic_test_response(TRINAMIC_Z.test_connection(), "Z"); - TRINAMIC_Z.toff(TRINAMIC_DEFAULT_TOFF); - TRINAMIC_Z.microsteps(axis_settings[Z_AXIS]->microsteps->get()); - TRINAMIC_Z.rms_current(axis_settings[Z_AXIS]->run_current->get() * 1000.0, axis_settings[Z_AXIS]->hold_current->get() / 100.0); - TRINAMIC_Z.en_pwm_mode(1); // Enable extremely quiet stepping - TRINAMIC_Z.pwm_autoscale(1); -#endif -#ifdef Z2_TRINAMIC - TRINAMIC_Z2.begin(); // Initiate pins and registries - trinamic_test_response(TRINAMIC_Z2.test_connection(), "Z2"); - TRINAMIC_Z2.toff(TRINAMIC_DEFAULT_TOFF); - TRINAMIC_Z2.microsteps(axis_settings[Z_AXIS]->microsteps->get()); - TRINAMIC_Z2.rms_current(axis_settings[Z_AXIS]->run_current->get() * 1000.0, axis_settings[Z_AXIS]->hold_current->get() / 100.0); - TRINAMIC_Z2.en_pwm_mode(1); // Enable extremely quiet stepping - TRINAMIC_Z2.pwm_autoscale(1); -#endif - -#ifdef A_TRINAMIC - TRINAMIC_A.begin(); // Initiate pins and registries - trinamic_test_response(TRINAMIC_A.test_connection(), "A"); - TRINAMIC_A.toff(TRINAMIC_DEFAULT_TOFF); - TRINAMIC_A.microsteps(axis_settings[A_AXIS]->microsteps->get()); - TRINAMIC_A.rms_current(axis_settings[A_AXIS]->run_current->get() * 1000.0, axis_settings[A_AXIS]->hold_current->get() / 100.0); - TRINAMIC_A.en_pwm_mode(1); // Enable extremely quiet stepping - TRINAMIC_A.pwm_autoscale(1); -#endif -#ifdef A2_TRINAMIC - TRINAMIC_A2.begin(); // Initiate pins and registries - trinamic_test_response(TRINAMIC_A2.test_connection(), "A2"); - TRINAMIC_A2.toff(TRINAMIC_DEFAULT_TOFF); - TRINAMIC_A2.microsteps(axis_settings[A_AXIS]->microsteps->get()); - TRINAMIC_A2.rms_current(axis_settings[A_AXIS]->run_current->get() * 1000.0, axis_settings[A_AXIS]->hold_current->get() / 100.0); - TRINAMIC_A2.en_pwm_mode(1); // Enable extremely quiet stepping - TRINAMIC_A2.pwm_autoscale(1); -#endif - -#ifdef B_TRINAMIC - TRINAMIC_B.begin(); // Initiate pins and registries - trinamic_test_response(TRINAMIC_B.test_connection(), "B"); - TRINAMIC_B.toff(TRINAMIC_DEFAULT_TOFF); - TRINAMIC_B.microsteps(axis_settings[B_AXIS]->microsteps->get()); - TRINAMIC_B.rms_current(axis_settings[B_AXIS]->run_current->get() * 1000.0, axis_settings[B_AXIS]->hold_current->get() / 100.0); - TRINAMIC_B.en_pwm_mode(1); // Enable extremely quiet stepping - TRINAMIC_B.pwm_autoscale(1); -#endif -#ifdef B2_TRINAMIC - TRINAMIC_B2.begin(); // Initiate pins and registries - trinamic_test_response(TRINAMIC_B2.test_connection(), "B2"); - TRINAMIC_B2.toff(TRINAMIC_DEFAULT_TOFF); - TRINAMIC_B2.microsteps(axis_settings[B_AXIS]->microsteps->get()); - TRINAMIC_B2.rms_current(axis_settings[B_AXIS]->run_current->get() * 1000.0, axis_settings[B_AXIS]->hold_current->get() / 100.0); - TRINAMIC_B2.en_pwm_mode(1); // Enable extremely quiet stepping - TRINAMIC_B2.pwm_autoscale(1); -#endif - -#ifdef C_TRINAMIC - TRINAMIC_C.begin(); // Initiate pins and registries - trinamic_test_response(TRINAMIC_C.test_connection(), "C"); - TRINAMIC_C.toff(TRINAMIC_DEFAULT_TOFF); - TRINAMIC_C.microsteps(axis_settings[C_AXIS]->microsteps->get()); - TRINAMIC_C.rms_current(axis_settings[C_AXIS]->run_current->get() * 1000.0, axis_settings[C_AXIS]->hold_current->get() / 100.0); - TRINAMIC_C.en_pwm_mode(1); // Enable extremely quiet stepping - TRINAMIC_C.pwm_autoscale(1); -#endif -#ifdef C2_TRINAMIC - TRINAMIC_C2.begin(); // Initiate pins and registries - trinamic_test_response(TRINAMIC_C2.test_connection(), "C2"); - TRINAMIC_C2.toff(TRINAMIC_DEFAULT_TOFF); - TRINAMIC_C2.microsteps(axis_settings[C_AXIS]->microsteps->get()); - TRINAMIC_C2.rms_current(axis_settings[C_AXIS]->run_current->get() * 1000.0, axis_settings[C_AXIS]->hold_current->get() / 100.0); - TRINAMIC_C2.en_pwm_mode(1); // Enable extremely quiet stepping - TRINAMIC_C2.pwm_autoscale(1); -#endif -} - -// Call this function called whenever $$ settings that affect the drivers are changed -void trinamic_change_settings() { -#ifdef X_TRINAMIC - TRINAMIC_X.microsteps(axis_settings[X_AXIS]->microsteps->get()); - TRINAMIC_X.rms_current(axis_settings[X_AXIS]->run_current->get() * 1000.0, axis_settings[X_AXIS]->hold_current->get() / 100.0); -#endif -#ifdef X2_TRINAMIC - TRINAMIC_X2.microsteps(axis_settings[X_AXIS]->microsteps->get()); - TRINAMIC_X2.rms_current(axis_settings[X_AXIS]->run_current->get() * 1000.0, axis_settings[X_AXIS]->hold_current->get() / 100.0); -#endif - -#ifdef Y_TRINAMIC - TRINAMIC_Y.microsteps(axis_settings[Y_AXIS]->microsteps->get()); - TRINAMIC_Y.rms_current(axis_settings[Y_AXIS]->run_current->get() * 1000.0, axis_settings[Y_AXIS]->hold_current->get() / 100.0); -#endif -#ifdef Y2_TRINAMIC - TRINAMIC_Y2.microsteps(axis_settings[Y_AXIS]->microsteps->get()); - TRINAMIC_Y2.rms_current(axis_settings[Y_AXIS]->run_current->get() * 1000.0, axis_settings[Y_AXIS]->hold_current->get() / 100.0); -#endif - - -#ifdef Z_TRINAMIC - TRINAMIC_Z.microsteps(axis_settings[Z_AXIS]->microsteps->get()); - TRINAMIC_Z.rms_current(axis_settings[Z_AXIS]->run_current->get() * 1000.0, axis_settings[Z_AXIS]->hold_current->get() / 100.0); -#endif -#ifdef Z2_TRINAMIC - TRINAMIC_Z2.microsteps(axis_settings[Z_AXIS]->microsteps->get()); - TRINAMIC_Z2.rms_current(axis_settings[Z_AXIS]->run_current->get() * 1000.0, axis_settings[Z_AXIS]->hold_current->get() / 100.0); -#endif - -#ifdef A_TRINAMIC - TRINAMIC_A.microsteps(axis_settings[A_AXIS]->microsteps->get()); - TRINAMIC_A.rms_current(axis_settings[A_AXIS]->run_current->get() * 1000.0, axis_settings[A_AXIS]->hold_current->get() / 100.0); -#endif -#ifdef A2_TRINAMIC - TRINAMIC_A2.microsteps(axis_settings[A_AXIS]->microsteps->get()); - TRINAMIC_A2.rms_current(axis_settings[A_AXIS]->run_current->get() * 1000.0, axis_settings[A_AXIS]->hold_current->get() / 100.0); -#endif - -#ifdef B_TRINAMIC - TRINAMIC_B.microsteps(axis_settings[B_AXIS]->microsteps->get()); - TRINAMIC_B.rms_current(axis_settings[B_AXIS]->run_current->get() * 1000.0, axis_settings[B_AXIS]->hold_current->get() / 100.0); -#endif -#ifdef B2_TRINAMIC - TRINAMIC_B2.microsteps(axis_settings[B_AXIS]->microsteps->get()); - TRINAMIC_B2.rms_current(axis_settings[B_AXIS]->run_current->get() * 1000.0, axis_settings[B_AXIS]->hold_current->get() / 100.0); -#endif - -#ifdef C_TRINAMIC - TRINAMIC_C.microsteps(axis_settings[C_AXIS]->microsteps->get()); - TRINAMIC_C.rms_current(axis_settings[C_AXIS]->run_current->get() * 1000.0, axis_settings[C_AXIS]->hold_current->get() / 100.0); -#endif -#ifdef C2_TRINAMIC - TRINAMIC_C2.microsteps(axis_settings[C_AXIS]->microsteps->get()); - TRINAMIC_C2.rms_current(axis_settings[C_AXIS]->run_current->get() * 1000.0, axis_settings[C_AXIS]->hold_current->get() / 100.0); -#endif - -} - -// Display the response of the attempt to connect to a Trinamic driver -void trinamic_test_response(uint8_t result, const char* axis) { - if (result) { - switch (result) { - case 1: - grbl_msg_sendf(CLIENT_SERIAL, MSG_LEVEL_INFO, "%s Trinamic driver test failed. Check connection", axis); - break; - case 2: - grbl_msg_sendf(CLIENT_SERIAL, MSG_LEVEL_INFO, "%s Trinamic driver test failed. Check motor power", axis); - break; - } - } else - grbl_msg_sendf(CLIENT_SERIAL, MSG_LEVEL_INFO, "%s Trinamic driver test passed", axis); -} - -void trinamic_stepper_enable(bool enable) { - // Trinamic_Init() has already enabled the drivers in case #define USE_TRINAMIC_ENABLE is not used - // so the previous_state is set accordingly - static bool previous_state = true; - uint8_t toff; - if (enable == previous_state) - return; - previous_state = enable; - if (enable) - toff = TRINAMIC_DEFAULT_TOFF; - else - toff = 0; // diables driver -#ifdef X_TRINAMIC - TRINAMIC_X.toff(toff); -#endif -#ifdef X2_TRINAMIC - TRINAMIC_X2.toff(toff); -#endif - -#ifdef Y_TRINAMIC - TRINAMIC_Y.toff(toff); -#endif -#ifdef Y2_TRINAMIC - TRINAMIC_Y2.toff(toff); -#endif - -#ifdef Z_TRINAMIC - TRINAMIC_Z.toff(toff); -#endif -#ifdef Z2_TRINAMIC - TRINAMIC_Z2.toff(toff); -#endif - -#ifdef A_TRINAMIC - TRINAMIC_A.toff(toff); -#endif -#ifdef A2_TRINAMIC - TRINAMIC_A2.toff(toff); -#endif - -#ifdef B_TRINAMIC - TRINAMIC_B.toff(toff); -#endif -#ifdef B2_TRINAMIC - TRINAMIC_B2.toff(toff); -#endif - -#ifdef C_TRINAMIC - TRINAMIC_C.toff(toff); -#endif -#ifdef C2_TRINAMIC - TRINAMIC_C2.toff(toff); -#endif - -} - -// returns the next spi index. We cannot preassign to axes because ganged (X2 type axes) might -// need to be inserted into the order of axes. -uint8_t get_next_trinamic_driver_index() { -#ifdef TRINAMIC_DAISY_CHAIN - static uint8_t index = 1; // they start at 1 - return index++; -#else - return -1; -#endif -} -#ifdef USE_I2S_OUT -// -// Override default function and insert a short delay -// -void TMC2130Stepper::switchCSpin(bool state) { - digitalWrite(_pinCS, state); - delay(I2S_OUT_DELAY_MS); -} -#endif - -#endif diff --git a/Grbl_Esp32/grbl_trinamic.hold b/Grbl_Esp32/grbl_trinamic.hold deleted file mode 100644 index 50949e38..00000000 --- a/Grbl_Esp32/grbl_trinamic.hold +++ /dev/null @@ -1,47 +0,0 @@ -/* - grbl_trinamic.h - Support for TMC2130 Stepper Drivers SPI Mode - Part of Grbl_ESP32 - - Copyright (c) 2019 Barton Dring for Buildlog.net LLC - - GrblESP32 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. - - Grbl 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 Grbl. If not, see . -*/ -#define TRINAMIC_DEFAULT_TOFF 5 - - -#ifndef GRBL_TRINAMIC_h -#define GRBL_TRINAMIC_h - -#include "grbl.h" - -// the default current sense resistors used on most driver modules -#define TMC2130_RSENSE_DEFAULT 0.11f -#define TMC5160_RSENSE_DEFAULT 0.075f - -#define TRINAMIC_SPI_FREQ 100000 - -#ifdef USE_TRINAMIC - #include // https://github.com/teemuatlut/TMCStepper - void Trinamic_Init(); - void trinamic_change_settings(); - void trinamic_test_response(uint8_t result, const char* axis); - void trinamic_stepper_enable(bool enable); - #ifdef USE_MACHINE_TRINAMIC_INIT - void machine_trinamic_setup(); - #endif - - uint8_t get_next_trinamic_driver_index(); -#endif - -#endif // GRBL_TRIAMINIC_h diff --git a/Grbl_Esp32/settings.cpp b/Grbl_Esp32/settings.cpp index 3c480adc..ff90043f 100644 --- a/Grbl_Esp32/settings.cpp +++ b/Grbl_Esp32/settings.cpp @@ -74,12 +74,3 @@ uint8_t get_step_pin_mask(uint8_t axis_idx) { uint8_t get_direction_pin_mask(uint8_t axis_idx) { return bit(axis_idx); } - -// this allows a conditional re-init of the trinamic settings -void settings_spi_driver_init() { -#ifdef USE_TRINAMIC - trinamic_change_settings(); -#else - grbl_msg_sendf(CLIENT_SERIAL, MSG_LEVEL_INFO, "No SPI drivers setup"); -#endif -} diff --git a/Grbl_Esp32/settings.h b/Grbl_Esp32/settings.h index 3b3cb692..4e46110c 100644 --- a/Grbl_Esp32/settings.h +++ b/Grbl_Esp32/settings.h @@ -80,6 +80,5 @@ uint8_t get_step_pin_mask(uint8_t i); // Returns the direction pin mask according to Grbl's internal axis numbering uint8_t get_direction_pin_mask(uint8_t i); -void settings_spi_driver_init(); #endif diff --git a/Grbl_Esp32/stepper.cpp b/Grbl_Esp32/stepper.cpp index 36756d93..519c3bff 100644 --- a/Grbl_Esp32/stepper.cpp +++ b/Grbl_Esp32/stepper.cpp @@ -441,9 +441,6 @@ void stepper_init() { timer_enable_intr(STEP_TIMER_GROUP, STEP_TIMER_INDEX); timer_isr_register(STEP_TIMER_GROUP, STEP_TIMER_INDEX, onStepperDriverTimer, NULL, 0, NULL); #endif -#ifdef USE_TRINAMIC - Trinamic_Init(); -#endif }