teemuatlut / TMCStepper

MIT License
501 stars 196 forks source link

TMC 2160 ISSUE #300

Closed AngeloZaccarin closed 5 months ago

AngeloZaccarin commented 5 months ago

I am trying to control a stepper motor using the TMC2160 drivers present on a BigTreeTech Kraken. If I flash the Marlin firmware everything works and if I flash this code immediately after it works too but if I power off and on the board then the driver stops responding (the led and serial still work). I think I am missing something in the driver initialization but I can't figure out why

`#include

include

include

include

include

define miso PC8

define mosi PC7

define sck PC6

define STEP_PIN PC14

define DIR_PIN PC13

define EN_PIN PE6

define CS_PIN PD6

define R_SENSE 0.022f

SoftwareSerial serial(PD9, PD8);

TMC2160Stepper st = TMC2160Stepper(CS_PIN,R_SENSE,mosi,miso,sck);

int LedStatus = PA0; int LedTest = PA1;

void setup() { serial.begin(115200); serial.println("Serial open");

pinMode(LedStatus, OUTPUT); digitalWrite(LedStatus, HIGH); pinMode(LedTest, OUTPUT); digitalWrite(LedTest, HIGH);

pinMode(EN_PIN, OUTPUT); digitalWrite(EN_PIN, LOW);

pinMode(STEP_PIN, OUTPUT); pinMode(DIR_PIN, OUTPUT); digitalWrite(DIR_PIN, HIGH);

st.begin(); st.toff(5);

st.rms_current(1000); st.microsteps(256); st.en_pwm_mode(1); st.pwm_autoscale(1);

serial.print("DRV_STATUS=0b"); serial.println(st.DRV_STATUS(), BIN); serial.print("version: " ); serial.println(st.version()); serial.print("run status: " ); serial.println(st.irun()); serial.print("Driver enabled: " ); serial.println(st.isEnabled()); }

void loop() { digitalWrite(STEP_PIN, HIGH); digitalWrite(LedTest, HIGH); delayMicroseconds(50); digitalWrite(STEP_PIN, LOW); digitalWrite(LedTest, LOW); delayMicroseconds(50); } `

Here is the output of the code: Driver enabled: 0 run status: 5 version: 255 DRV_STATUS=0b11111111111111111111111111111111