Use normal TMC2590 configuration, separate enable pins, disable FTP because there's no SD card right now

This commit is contained in:
Kelvin Ly 2021-09-23 22:13:48 -04:00
parent 05b29a54d1
commit a0e5e5dcab
4 changed files with 35 additions and 8 deletions

View File

@ -1,6 +1,7 @@
#include "init_tmc2590.h"
#include "grbl/hal.h"
#include "grbl/protocol.h"
#define TMC_SCK_PIN (27)
#define TMC_CSN_PIN (28)
@ -30,8 +31,14 @@ const static struct tmc2590_config {
{ DRVCONF, REPEAT3(SLPH(3)|SLPL(3)|SLP2(0)|VSENSE(1)|EN_PFD(1)|EN_S2VS(1)) },
// no step interpolation
// rising edge only
// 1/64 microstepping
{ DRVCTRL_SDOFF0, REPEAT3(MRES(2)) }
// 1/16 microstepping
{ DRVCTRL_SDOFF0, REPEAT3(MRES(4)) }
/*
{CHOPCONF, REPEAT3(0x901b4)},
{SGCSCONF, REPEAT3(0xd001f)},
{DRVCONF, REPEAT3(0xef013)},
{DRVCTRL_SDOFF0, REPEAT3(0x0000)},
*/
};
static uint32_t tmc2590_mask_addr(uint32_t v, enum tmc2590_reg reg) {
@ -63,6 +70,8 @@ static uint32_t tmc2590_mask_addr(uint32_t v, enum tmc2590_reg reg) {
}
static void tmc2590_csn_enable(void) {
digitalWrite(TMC_CSN_PIN, HIGH);
delayMicroseconds(1);
digitalWrite(TMC_SCK_PIN, HIGH);
delayMicroseconds(TMC2590_TCC_US);
@ -79,12 +88,12 @@ static void tmc2590_csn_disable(void) {
}
static void tmc2590_send_bit(uint32_t bit) {
digitalWrite(TMC_SCK_PIN, LOW);
if (bit) {
digitalWrite(TMC_SDI_PIN, HIGH);
} else {
digitalWrite(TMC_SDI_PIN, LOW);
}
digitalWrite(TMC_SCK_PIN, LOW);
delayMicroseconds(TMC2590_CLK_US);
digitalWrite(TMC_SCK_PIN, HIGH);
delayMicroseconds(TMC2590_CLK_US);
@ -103,14 +112,26 @@ static void tmc2590_write_reg(const struct tmc2590_config* cfg) {
tmc2590_csn_disable();
}
static void test_message(uint_fast16_t state) {
report_message("TMC inited", Message_Warning);
}
static void tmc2590_init(void) {
digitalWrite(TMC_SCK_PIN, HIGH);
digitalWrite(TMC_SDI_PIN, HIGH);
digitalWrite(TMC_CSN_PIN, HIGH);
pinMode(TMC_SCK_PIN, OUTPUT);
pinMode(TMC_SDI_PIN, OUTPUT);
pinMode(TMC_CSN_PIN, OUTPUT);
delayMicroseconds(1);
for (int i = 0; i < sizeof(tmc_config)/sizeof(tmc_config[0]); i++) {
tmc2590_write_reg(&tmc_config[i]);
}
protocol_enqueue_rt_command(test_message);
}
static driver_reset_ptr on_reset;
@ -120,11 +141,15 @@ static void tmc2590_on_reset(void) {
on_reset();
}
void my_plugin(void) {
void my_plugin_init(void) {
// 100 ms delay to let the stepper controllers get situated
delay(100);
// TODO add message
tmc2590_init();
// hook into soft reset
on_reset = hal.driver_reset;
hal.driver_reset = tmc2590_on_reset;
//protocol_enqueue_rt_command(test_message);
}

View File

@ -72,7 +72,7 @@ enum tmc2590_reg {
#define SEMIN_SIZE (4)
#define SEIMIN_SHIFT (15)
#define SEDN_SHIFT (2)
#define SEDN_SHIFT (13)
#define SEMAX_SHIFT (8)
#define SEUP_SHIFT (5)
#define SEMIN_SHIFT (0)

View File

@ -54,7 +54,7 @@ N_AXIS has a default value of 3, edit grbl\config.h to increase.
//#define BLUETOOTH_ENABLE 1 // Set to 1 for HC-05 module. Requires Bluetooth plugin.
//#define SPINDLE_HUANYANG 1 // Set to 1 or 2 for Huanyang VFD spindle. Requires spindle plugin.
//#define QEI_ENABLE 1 // Enable quadrature encoder interfaces. Max value is 1. Requires encoder plugin.
//#define ETHERNET_ENABLE 1 // Ethernet streaming. Requires networking plugin.
#define ETHERNET_ENABLE 1 // Ethernet streaming. Requires networking plugin.
//#define SDCARD_ENABLE 1 // Run gcode programs from SD card, requires sdcard plugin.
//#define KEYPAD_ENABLE 1 // I2C keypad for jogging etc., requires keypad plugin.
//#define PLASMA_ENABLE 1 // Plasma/THC plugin. To be completed.
@ -87,7 +87,7 @@ N_AXIS has a default value of 3, edit grbl\config.h to increase.
#if ETHERNET_ENABLE > 0
#define TELNET_ENABLE 1 // Telnet daemon - requires Ethernet streaming enabled.
#define FTP_ENABLE 1 // Ftp daemon - requires SD card enabled.
#define FTP_ENABLE 0 // Ftp daemon - requires SD card enabled.
#define WEBSOCKET_ENABLE 1 // Websocket daemon - requires Ethernet streaming enabled.
#define NETWORK_HOSTNAME "GRBL"
#define NETWORK_IPMODE 1 // 0 = static, 1 = DHCP, 2 = AutoIP

View File

@ -25,7 +25,9 @@
#define Z_DIRECTION_PIN (7u)
// Define stepper driver enable/disable output pin(s).
#define STEPPERS_ENABLE_PIN (10u)
#define X_ENABLE_PIN (10u)
#define Y_ENABLE_PIN (40u)
#define Z_ENABLE_PIN (39u)
// Define homing/hard limit switch input pins.
#define X_LIMIT_PIN (20u)