Library for Trinamic TMC2209 stepper modules to drive bipolar stepper motors. Ported and adapted from https://github.com/teemuatlut/TMCStepper

Dependents:   TMC2209-Test2

Committer:
charly
Date:
Thu Mar 18 20:50:27 2021 +0000
Revision:
0:f4343071c8b1
Child:
2:b34e91b54373
First version of TMCStepper for Trinamic TMC2209-modules.; Software ported and adapted from https://github.com/teemuatlut/TMCStepper

Who changed what in which revision?

UserRevisionLine numberNew contents of line
charly 0:f4343071c8b1 1 #include "TMCStepper.h"
charly 0:f4343071c8b1 2
charly 0:f4343071c8b1 3 uint32_t TMC2209Stepper::IOIN() {
charly 0:f4343071c8b1 4 return read(TMC2209_n::IOIN_t::address);
charly 0:f4343071c8b1 5 }
charly 0:f4343071c8b1 6 bool TMC2209Stepper::enn() { TMC2209_n::IOIN_t r{0}; r.sr = IOIN(); return r.enn; }
charly 0:f4343071c8b1 7 bool TMC2209Stepper::ms1() { TMC2209_n::IOIN_t r{0}; r.sr = IOIN(); return r.ms1; }
charly 0:f4343071c8b1 8 bool TMC2209Stepper::ms2() { TMC2209_n::IOIN_t r{0}; r.sr = IOIN(); return r.ms2; }
charly 0:f4343071c8b1 9 bool TMC2209Stepper::diag() { TMC2209_n::IOIN_t r{0}; r.sr = IOIN(); return r.diag; }
charly 0:f4343071c8b1 10 bool TMC2209Stepper::pdn_uart() { TMC2209_n::IOIN_t r{0}; r.sr = IOIN(); return r.pdn_uart; }
charly 0:f4343071c8b1 11 bool TMC2209Stepper::step() { TMC2209_n::IOIN_t r{0}; r.sr = IOIN(); return r.step; }
charly 0:f4343071c8b1 12 bool TMC2209Stepper::spread_en() { TMC2209_n::IOIN_t r{0}; r.sr = IOIN(); return r.spread_en;}
charly 0:f4343071c8b1 13 bool TMC2209Stepper::dir() { TMC2209_n::IOIN_t r{0}; r.sr = IOIN(); return r.dir; }
charly 0:f4343071c8b1 14 uint8_t TMC2209Stepper::version() { TMC2209_n::IOIN_t r{0}; r.sr = IOIN(); return r.version; }
charly 0:f4343071c8b1 15
charly 0:f4343071c8b1 16 void TMC2209Stepper::push() {
charly 0:f4343071c8b1 17 IHOLD_IRUN(IHOLD_IRUN_register.sr);
charly 0:f4343071c8b1 18 TPOWERDOWN(TPOWERDOWN_register.sr);
charly 0:f4343071c8b1 19 TPWMTHRS(TPWMTHRS_register.sr);
charly 0:f4343071c8b1 20 GCONF(GCONF_register.sr);
charly 0:f4343071c8b1 21 SLAVECONF(SLAVECONF_register.sr);
charly 0:f4343071c8b1 22 VACTUAL(VACTUAL_register.sr);
charly 0:f4343071c8b1 23 CHOPCONF(CHOPCONF_register.sr);
charly 0:f4343071c8b1 24 PWMCONF(PWMCONF_register.sr);
charly 0:f4343071c8b1 25 TCOOLTHRS(TCOOLTHRS_register.sr);
charly 0:f4343071c8b1 26 }
charly 0:f4343071c8b1 27
charly 0:f4343071c8b1 28 void TMC2209Stepper::SGTHRS(uint8_t input) {
charly 0:f4343071c8b1 29 SGTHRS_register.sr = input;
charly 0:f4343071c8b1 30 write(SGTHRS_register.address, SGTHRS_register.sr);
charly 0:f4343071c8b1 31 }
charly 0:f4343071c8b1 32 uint8_t TMC2209Stepper::SGTHRS() {
charly 0:f4343071c8b1 33 return SGTHRS_register.sr;
charly 0:f4343071c8b1 34 }
charly 0:f4343071c8b1 35
charly 0:f4343071c8b1 36 // W: TCOOLTHRS
charly 0:f4343071c8b1 37 uint32_t TMC2209Stepper::TCOOLTHRS() { return TCOOLTHRS_register.sr; }
charly 0:f4343071c8b1 38 void TMC2209Stepper::TCOOLTHRS(uint32_t input) {
charly 0:f4343071c8b1 39 TCOOLTHRS_register.sr = input;
charly 0:f4343071c8b1 40 write(TCOOLTHRS_register.address, TCOOLTHRS_register.sr);
charly 0:f4343071c8b1 41 }
charly 0:f4343071c8b1 42
charly 0:f4343071c8b1 43 uint16_t TMC2209Stepper::SG_RESULT() {
charly 0:f4343071c8b1 44 return read(TMC2209_n::SG_RESULT_t::address);
charly 0:f4343071c8b1 45 }