Library for Trinamic TMC2209 stepper modules to drive bipolar stepper motors. Ported and adapted from https://github.com/teemuatlut/TMCStepper
GCONF.cpp@2:b34e91b54373, 2021-12-02 (annotated)
- Committer:
- charly
- Date:
- Thu Dec 02 20:29:39 2021 +0000
- Revision:
- 2:b34e91b54373
- Parent:
- 0:f4343071c8b1
Changes from Original Project for TMC2209 integrated
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
charly | 0:f4343071c8b1 | 1 | #include "TMCStepper.h" |
charly | 0:f4343071c8b1 | 2 | #include "TMC_MACROS.h" |
charly | 0:f4343071c8b1 | 3 | |
charly | 0:f4343071c8b1 | 4 | #define SET_REG(SETTING) GCONF_register.SETTING = B; write(GCONF_register.address, GCONF_register.sr) |
charly | 0:f4343071c8b1 | 5 | |
charly | 0:f4343071c8b1 | 6 | // GCONF |
charly | 0:f4343071c8b1 | 7 | /* |
charly | 0:f4343071c8b1 | 8 | uint32_t TMC2130Stepper::GCONF() { |
charly | 0:f4343071c8b1 | 9 | return read(GCONF_register.address); |
charly | 0:f4343071c8b1 | 10 | } |
charly | 0:f4343071c8b1 | 11 | void TMC2130Stepper::GCONF(uint32_t input) { |
charly | 0:f4343071c8b1 | 12 | GCONF_register.sr = input; |
charly | 0:f4343071c8b1 | 13 | write(GCONF_register.address, GCONF_register.sr); |
charly | 0:f4343071c8b1 | 14 | } |
charly | 0:f4343071c8b1 | 15 | |
charly | 0:f4343071c8b1 | 16 | void TMC2130Stepper::I_scale_analog(bool B) { SET_REG(i_scale_analog); } |
charly | 0:f4343071c8b1 | 17 | void TMC2130Stepper::internal_Rsense(bool B) { SET_REG(internal_rsense); } |
charly | 0:f4343071c8b1 | 18 | void TMC2130Stepper::en_pwm_mode(bool B) { SET_REG(en_pwm_mode); } |
charly | 0:f4343071c8b1 | 19 | void TMC2130Stepper::enc_commutation(bool B) { SET_REG(enc_commutation); } |
charly | 0:f4343071c8b1 | 20 | void TMC2130Stepper::shaft(bool B) { SET_REG(shaft); } |
charly | 0:f4343071c8b1 | 21 | void TMC2130Stepper::diag0_error(bool B) { SET_REG(diag0_error); } |
charly | 0:f4343071c8b1 | 22 | void TMC2130Stepper::diag0_otpw(bool B) { SET_REG(diag0_otpw); } |
charly | 0:f4343071c8b1 | 23 | void TMC2130Stepper::diag0_stall(bool B) { SET_REG(diag0_stall); } |
charly | 0:f4343071c8b1 | 24 | void TMC2130Stepper::diag1_stall(bool B) { SET_REG(diag1_stall); } |
charly | 0:f4343071c8b1 | 25 | void TMC2130Stepper::diag1_index(bool B) { SET_REG(diag1_index); } |
charly | 0:f4343071c8b1 | 26 | void TMC2130Stepper::diag1_onstate(bool B) { SET_REG(diag1_onstate); } |
charly | 0:f4343071c8b1 | 27 | void TMC2130Stepper::diag1_steps_skipped(bool B) { SET_REG(diag1_steps_skipped); } |
charly | 0:f4343071c8b1 | 28 | void TMC2130Stepper::diag0_int_pushpull(bool B) { SET_REG(diag0_int_pushpull); } |
charly | 0:f4343071c8b1 | 29 | void TMC2130Stepper::diag1_pushpull(bool B) { SET_REG(diag1_poscomp_pushpull); } |
charly | 0:f4343071c8b1 | 30 | void TMC2130Stepper::small_hysteresis(bool B) { SET_REG(small_hysteresis); } |
charly | 0:f4343071c8b1 | 31 | void TMC2130Stepper::stop_enable(bool B) { SET_REG(stop_enable); } |
charly | 0:f4343071c8b1 | 32 | void TMC2130Stepper::direct_mode(bool B) { SET_REG(direct_mode); } |
charly | 0:f4343071c8b1 | 33 | |
charly | 0:f4343071c8b1 | 34 | bool TMC2130Stepper::I_scale_analog() { GCONF_t r{0}; r.sr = GCONF(); return r.i_scale_analog; } |
charly | 0:f4343071c8b1 | 35 | bool TMC2130Stepper::internal_Rsense() { GCONF_t r{0}; r.sr = GCONF(); return r.internal_rsense; } |
charly | 0:f4343071c8b1 | 36 | bool TMC2130Stepper::en_pwm_mode() { GCONF_t r{0}; r.sr = GCONF(); return r.en_pwm_mode; } |
charly | 0:f4343071c8b1 | 37 | bool TMC2130Stepper::enc_commutation() { GCONF_t r{0}; r.sr = GCONF(); return r.enc_commutation; } |
charly | 0:f4343071c8b1 | 38 | bool TMC2130Stepper::shaft() { GCONF_t r{0}; r.sr = GCONF(); return r.shaft; } |
charly | 0:f4343071c8b1 | 39 | bool TMC2130Stepper::diag0_error() { GCONF_t r{0}; r.sr = GCONF(); return r.diag0_error; } |
charly | 0:f4343071c8b1 | 40 | bool TMC2130Stepper::diag0_otpw() { GCONF_t r{0}; r.sr = GCONF(); return r.diag0_otpw; } |
charly | 0:f4343071c8b1 | 41 | bool TMC2130Stepper::diag0_stall() { GCONF_t r{0}; r.sr = GCONF(); return r.diag0_stall; } |
charly | 0:f4343071c8b1 | 42 | bool TMC2130Stepper::diag1_stall() { GCONF_t r{0}; r.sr = GCONF(); return r.diag1_stall; } |
charly | 0:f4343071c8b1 | 43 | bool TMC2130Stepper::diag1_index() { GCONF_t r{0}; r.sr = GCONF(); return r.diag1_index; } |
charly | 0:f4343071c8b1 | 44 | bool TMC2130Stepper::diag1_onstate() { GCONF_t r{0}; r.sr = GCONF(); return r.diag1_onstate; } |
charly | 0:f4343071c8b1 | 45 | bool TMC2130Stepper::diag1_steps_skipped() { GCONF_t r{0}; r.sr = GCONF(); return r.diag1_steps_skipped; } |
charly | 0:f4343071c8b1 | 46 | bool TMC2130Stepper::diag0_int_pushpull() { GCONF_t r{0}; r.sr = GCONF(); return r.diag0_int_pushpull; } |
charly | 0:f4343071c8b1 | 47 | bool TMC2130Stepper::diag1_pushpull() { GCONF_t r{0}; r.sr = GCONF(); return r.diag1_poscomp_pushpull;} |
charly | 0:f4343071c8b1 | 48 | bool TMC2130Stepper::small_hysteresis() { GCONF_t r{0}; r.sr = GCONF(); return r.small_hysteresis; } |
charly | 0:f4343071c8b1 | 49 | bool TMC2130Stepper::stop_enable() { GCONF_t r{0}; r.sr = GCONF(); return r.stop_enable; } |
charly | 0:f4343071c8b1 | 50 | bool TMC2130Stepper::direct_mode() { GCONF_t r{0}; r.sr = GCONF(); return r.direct_mode; } |
charly | 0:f4343071c8b1 | 51 | */ |
charly | 0:f4343071c8b1 | 52 | /* |
charly | 0:f4343071c8b1 | 53 | bit 18 not implemented: |
charly | 0:f4343071c8b1 | 54 | test_mode 0: |
charly | 0:f4343071c8b1 | 55 | Normal operation 1: |
charly | 0:f4343071c8b1 | 56 | Enable analog test output on pin DCO. IHOLD[1..0] selects the function of DCO: |
charly | 0:f4343071c8b1 | 57 | 0…2: T120, DAC, VDDH Attention: |
charly | 0:f4343071c8b1 | 58 | Not for user, set to 0 for normal operation! |
charly | 0:f4343071c8b1 | 59 | */ |
charly | 0:f4343071c8b1 | 60 | /* |
charly | 0:f4343071c8b1 | 61 | void TMC5160Stepper::recalibrate(bool B) { SET_REG(recalibrate); } |
charly | 0:f4343071c8b1 | 62 | void TMC5160Stepper::faststandstill(bool B) { SET_REG(faststandstill); } |
charly | 0:f4343071c8b1 | 63 | void TMC5160Stepper::multistep_filt(bool B) { SET_REG(multistep_filt); } |
charly | 0:f4343071c8b1 | 64 | bool TMC5160Stepper::recalibrate() { GCONF_t r{0}; r.sr = GCONF(); return r.recalibrate; } |
charly | 0:f4343071c8b1 | 65 | bool TMC5160Stepper::faststandstill() { GCONF_t r{0}; r.sr = GCONF(); return r.faststandstill; } |
charly | 0:f4343071c8b1 | 66 | bool TMC5160Stepper::multistep_filt() { GCONF_t r{0}; r.sr = GCONF(); return r.multistep_filt; } |
charly | 0:f4343071c8b1 | 67 | */ |
charly | 0:f4343071c8b1 | 68 | uint32_t TMC2208Stepper::GCONF() { |
charly | 0:f4343071c8b1 | 69 | return read(GCONF_register.address); |
charly | 0:f4343071c8b1 | 70 | } |
charly | 0:f4343071c8b1 | 71 | void TMC2208Stepper::GCONF(uint32_t input) { |
charly | 0:f4343071c8b1 | 72 | GCONF_register.sr = input; |
charly | 0:f4343071c8b1 | 73 | write(GCONF_register.address, GCONF_register.sr); |
charly | 0:f4343071c8b1 | 74 | } |
charly | 0:f4343071c8b1 | 75 | |
charly | 0:f4343071c8b1 | 76 | void TMC2208Stepper::I_scale_analog(bool B) { SET_REG(i_scale_analog); } |
charly | 0:f4343071c8b1 | 77 | void TMC2208Stepper::internal_Rsense(bool B) { SET_REG(internal_rsense); } |
charly | 0:f4343071c8b1 | 78 | void TMC2208Stepper::en_spreadCycle(bool B) { SET_REG(en_spreadcycle); } |
charly | 0:f4343071c8b1 | 79 | void TMC2208Stepper::shaft(bool B) { SET_REG(shaft); } |
charly | 0:f4343071c8b1 | 80 | void TMC2208Stepper::index_otpw(bool B) { SET_REG(index_otpw); } |
charly | 0:f4343071c8b1 | 81 | void TMC2208Stepper::index_step(bool B) { SET_REG(index_step); } |
charly | 0:f4343071c8b1 | 82 | void TMC2208Stepper::pdn_disable(bool B) { SET_REG(pdn_disable); } |
charly | 0:f4343071c8b1 | 83 | void TMC2208Stepper::mstep_reg_select(bool B) { SET_REG(mstep_reg_select);} |
charly | 0:f4343071c8b1 | 84 | void TMC2208Stepper::multistep_filt(bool B) { SET_REG(multistep_filt); } |
charly | 0:f4343071c8b1 | 85 | |
charly | 0:f4343071c8b1 | 86 | bool TMC2208Stepper::I_scale_analog() { TMC2208_n::GCONF_t r{0}; r.sr = GCONF(); return r.i_scale_analog; } |
charly | 0:f4343071c8b1 | 87 | bool TMC2208Stepper::internal_Rsense() { TMC2208_n::GCONF_t r{0}; r.sr = GCONF(); return r.internal_rsense; } |
charly | 0:f4343071c8b1 | 88 | bool TMC2208Stepper::en_spreadCycle() { TMC2208_n::GCONF_t r{0}; r.sr = GCONF(); return r.en_spreadcycle; } |
charly | 0:f4343071c8b1 | 89 | bool TMC2208Stepper::shaft() { TMC2208_n::GCONF_t r{0}; r.sr = GCONF(); return r.shaft; } |
charly | 0:f4343071c8b1 | 90 | bool TMC2208Stepper::index_otpw() { TMC2208_n::GCONF_t r{0}; r.sr = GCONF(); return r.index_otpw; } |
charly | 0:f4343071c8b1 | 91 | bool TMC2208Stepper::index_step() { TMC2208_n::GCONF_t r{0}; r.sr = GCONF(); return r.index_step; } |
charly | 0:f4343071c8b1 | 92 | bool TMC2208Stepper::pdn_disable() { TMC2208_n::GCONF_t r{0}; r.sr = GCONF(); return r.pdn_disable; } |
charly | 0:f4343071c8b1 | 93 | bool TMC2208Stepper::mstep_reg_select() { TMC2208_n::GCONF_t r{0}; r.sr = GCONF(); return r.mstep_reg_select; } |
charly | 0:f4343071c8b1 | 94 | bool TMC2208Stepper::multistep_filt() { TMC2208_n::GCONF_t r{0}; r.sr = GCONF(); return r.multistep_filt; } |