Library for Trinamic TMC2209 stepper modules to drive bipolar stepper motors. Ported and adapted from https://github.com/teemuatlut/TMCStepper
GCONF.cpp
00001 #include "TMCStepper.h" 00002 #include "TMC_MACROS.h" 00003 00004 #define SET_REG(SETTING) GCONF_register.SETTING = B; write(GCONF_register.address, GCONF_register.sr) 00005 00006 // GCONF 00007 /* 00008 uint32_t TMC2130Stepper::GCONF() { 00009 return read(GCONF_register.address); 00010 } 00011 void TMC2130Stepper::GCONF(uint32_t input) { 00012 GCONF_register.sr = input; 00013 write(GCONF_register.address, GCONF_register.sr); 00014 } 00015 00016 void TMC2130Stepper::I_scale_analog(bool B) { SET_REG(i_scale_analog); } 00017 void TMC2130Stepper::internal_Rsense(bool B) { SET_REG(internal_rsense); } 00018 void TMC2130Stepper::en_pwm_mode(bool B) { SET_REG(en_pwm_mode); } 00019 void TMC2130Stepper::enc_commutation(bool B) { SET_REG(enc_commutation); } 00020 void TMC2130Stepper::shaft(bool B) { SET_REG(shaft); } 00021 void TMC2130Stepper::diag0_error(bool B) { SET_REG(diag0_error); } 00022 void TMC2130Stepper::diag0_otpw(bool B) { SET_REG(diag0_otpw); } 00023 void TMC2130Stepper::diag0_stall(bool B) { SET_REG(diag0_stall); } 00024 void TMC2130Stepper::diag1_stall(bool B) { SET_REG(diag1_stall); } 00025 void TMC2130Stepper::diag1_index(bool B) { SET_REG(diag1_index); } 00026 void TMC2130Stepper::diag1_onstate(bool B) { SET_REG(diag1_onstate); } 00027 void TMC2130Stepper::diag1_steps_skipped(bool B) { SET_REG(diag1_steps_skipped); } 00028 void TMC2130Stepper::diag0_int_pushpull(bool B) { SET_REG(diag0_int_pushpull); } 00029 void TMC2130Stepper::diag1_pushpull(bool B) { SET_REG(diag1_poscomp_pushpull); } 00030 void TMC2130Stepper::small_hysteresis(bool B) { SET_REG(small_hysteresis); } 00031 void TMC2130Stepper::stop_enable(bool B) { SET_REG(stop_enable); } 00032 void TMC2130Stepper::direct_mode(bool B) { SET_REG(direct_mode); } 00033 00034 bool TMC2130Stepper::I_scale_analog() { GCONF_t r{0}; r.sr = GCONF(); return r.i_scale_analog; } 00035 bool TMC2130Stepper::internal_Rsense() { GCONF_t r{0}; r.sr = GCONF(); return r.internal_rsense; } 00036 bool TMC2130Stepper::en_pwm_mode() { GCONF_t r{0}; r.sr = GCONF(); return r.en_pwm_mode; } 00037 bool TMC2130Stepper::enc_commutation() { GCONF_t r{0}; r.sr = GCONF(); return r.enc_commutation; } 00038 bool TMC2130Stepper::shaft() { GCONF_t r{0}; r.sr = GCONF(); return r.shaft; } 00039 bool TMC2130Stepper::diag0_error() { GCONF_t r{0}; r.sr = GCONF(); return r.diag0_error; } 00040 bool TMC2130Stepper::diag0_otpw() { GCONF_t r{0}; r.sr = GCONF(); return r.diag0_otpw; } 00041 bool TMC2130Stepper::diag0_stall() { GCONF_t r{0}; r.sr = GCONF(); return r.diag0_stall; } 00042 bool TMC2130Stepper::diag1_stall() { GCONF_t r{0}; r.sr = GCONF(); return r.diag1_stall; } 00043 bool TMC2130Stepper::diag1_index() { GCONF_t r{0}; r.sr = GCONF(); return r.diag1_index; } 00044 bool TMC2130Stepper::diag1_onstate() { GCONF_t r{0}; r.sr = GCONF(); return r.diag1_onstate; } 00045 bool TMC2130Stepper::diag1_steps_skipped() { GCONF_t r{0}; r.sr = GCONF(); return r.diag1_steps_skipped; } 00046 bool TMC2130Stepper::diag0_int_pushpull() { GCONF_t r{0}; r.sr = GCONF(); return r.diag0_int_pushpull; } 00047 bool TMC2130Stepper::diag1_pushpull() { GCONF_t r{0}; r.sr = GCONF(); return r.diag1_poscomp_pushpull;} 00048 bool TMC2130Stepper::small_hysteresis() { GCONF_t r{0}; r.sr = GCONF(); return r.small_hysteresis; } 00049 bool TMC2130Stepper::stop_enable() { GCONF_t r{0}; r.sr = GCONF(); return r.stop_enable; } 00050 bool TMC2130Stepper::direct_mode() { GCONF_t r{0}; r.sr = GCONF(); return r.direct_mode; } 00051 */ 00052 /* 00053 bit 18 not implemented: 00054 test_mode 0: 00055 Normal operation 1: 00056 Enable analog test output on pin DCO. IHOLD[1..0] selects the function of DCO: 00057 0…2: T120, DAC, VDDH Attention: 00058 Not for user, set to 0 for normal operation! 00059 */ 00060 /* 00061 void TMC5160Stepper::recalibrate(bool B) { SET_REG(recalibrate); } 00062 void TMC5160Stepper::faststandstill(bool B) { SET_REG(faststandstill); } 00063 void TMC5160Stepper::multistep_filt(bool B) { SET_REG(multistep_filt); } 00064 bool TMC5160Stepper::recalibrate() { GCONF_t r{0}; r.sr = GCONF(); return r.recalibrate; } 00065 bool TMC5160Stepper::faststandstill() { GCONF_t r{0}; r.sr = GCONF(); return r.faststandstill; } 00066 bool TMC5160Stepper::multistep_filt() { GCONF_t r{0}; r.sr = GCONF(); return r.multistep_filt; } 00067 */ 00068 uint32_t TMC2208Stepper::GCONF() { 00069 return read(GCONF_register.address); 00070 } 00071 void TMC2208Stepper::GCONF(uint32_t input) { 00072 GCONF_register.sr = input; 00073 write(GCONF_register.address, GCONF_register.sr); 00074 } 00075 00076 void TMC2208Stepper::I_scale_analog(bool B) { SET_REG(i_scale_analog); } 00077 void TMC2208Stepper::internal_Rsense(bool B) { SET_REG(internal_rsense); } 00078 void TMC2208Stepper::en_spreadCycle(bool B) { SET_REG(en_spreadcycle); } 00079 void TMC2208Stepper::shaft(bool B) { SET_REG(shaft); } 00080 void TMC2208Stepper::index_otpw(bool B) { SET_REG(index_otpw); } 00081 void TMC2208Stepper::index_step(bool B) { SET_REG(index_step); } 00082 void TMC2208Stepper::pdn_disable(bool B) { SET_REG(pdn_disable); } 00083 void TMC2208Stepper::mstep_reg_select(bool B) { SET_REG(mstep_reg_select);} 00084 void TMC2208Stepper::multistep_filt(bool B) { SET_REG(multistep_filt); } 00085 00086 bool TMC2208Stepper::I_scale_analog() { TMC2208_n::GCONF_t r{0}; r.sr = GCONF(); return r.i_scale_analog; } 00087 bool TMC2208Stepper::internal_Rsense() { TMC2208_n::GCONF_t r{0}; r.sr = GCONF(); return r.internal_rsense; } 00088 bool TMC2208Stepper::en_spreadCycle() { TMC2208_n::GCONF_t r{0}; r.sr = GCONF(); return r.en_spreadcycle; } 00089 bool TMC2208Stepper::shaft() { TMC2208_n::GCONF_t r{0}; r.sr = GCONF(); return r.shaft; } 00090 bool TMC2208Stepper::index_otpw() { TMC2208_n::GCONF_t r{0}; r.sr = GCONF(); return r.index_otpw; } 00091 bool TMC2208Stepper::index_step() { TMC2208_n::GCONF_t r{0}; r.sr = GCONF(); return r.index_step; } 00092 bool TMC2208Stepper::pdn_disable() { TMC2208_n::GCONF_t r{0}; r.sr = GCONF(); return r.pdn_disable; } 00093 bool TMC2208Stepper::mstep_reg_select() { TMC2208_n::GCONF_t r{0}; r.sr = GCONF(); return r.mstep_reg_select; } 00094 bool TMC2208Stepper::multistep_filt() { TMC2208_n::GCONF_t r{0}; r.sr = GCONF(); return r.multistep_filt; }
Generated on Wed Jul 13 2022 22:52:51 by
1.7.2