Library for Trinamic TMC2209 stepper modules to drive bipolar stepper motors. Ported and adapted from https://github.com/teemuatlut/TMCStepper
CHOPCONF.cpp@0:f4343071c8b1, 2021-03-18 (annotated)
- Committer:
- charly
- Date:
- Thu Mar 18 20:50:27 2021 +0000
- Revision:
- 0:f4343071c8b1
First version of TMCStepper for Trinamic TMC2209-modules.; Software ported and adapted from https://github.com/teemuatlut/TMCStepper
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) CHOPCONF_register.SETTING = B; write(CHOPCONF_register.address, CHOPCONF_register.sr) |
charly | 0:f4343071c8b1 | 5 | |
charly | 0:f4343071c8b1 | 6 | // CHOPCONF |
charly | 0:f4343071c8b1 | 7 | /* |
charly | 0:f4343071c8b1 | 8 | uint32_t TMC2130Stepper::CHOPCONF() { |
charly | 0:f4343071c8b1 | 9 | return read(CHOPCONF_register.address); |
charly | 0:f4343071c8b1 | 10 | } |
charly | 0:f4343071c8b1 | 11 | void TMC2130Stepper::CHOPCONF(uint32_t input) { |
charly | 0:f4343071c8b1 | 12 | CHOPCONF_register.sr = input; |
charly | 0:f4343071c8b1 | 13 | write(CHOPCONF_register.address, CHOPCONF_register.sr); |
charly | 0:f4343071c8b1 | 14 | } |
charly | 0:f4343071c8b1 | 15 | |
charly | 0:f4343071c8b1 | 16 | void TMC2130Stepper::toff( uint8_t B ) { SET_REG(toff); } |
charly | 0:f4343071c8b1 | 17 | void TMC2130Stepper::hstrt( uint8_t B ) { SET_REG(hstrt); } |
charly | 0:f4343071c8b1 | 18 | void TMC2130Stepper::hend( uint8_t B ) { SET_REG(hend); } |
charly | 0:f4343071c8b1 | 19 | //void TMC2130Stepper::fd( uint8_t B ) { SET_REG(fd); } |
charly | 0:f4343071c8b1 | 20 | void TMC2130Stepper::disfdcc( bool B ) { SET_REG(disfdcc); } |
charly | 0:f4343071c8b1 | 21 | void TMC2130Stepper::rndtf( bool B ) { SET_REG(rndtf); } |
charly | 0:f4343071c8b1 | 22 | void TMC2130Stepper::chm( bool B ) { SET_REG(chm); } |
charly | 0:f4343071c8b1 | 23 | void TMC2130Stepper::tbl( uint8_t B ) { SET_REG(tbl); } |
charly | 0:f4343071c8b1 | 24 | void TMC2130Stepper::vsense( bool B ) { SET_REG(vsense); } |
charly | 0:f4343071c8b1 | 25 | void TMC2130Stepper::vhighfs( bool B ) { SET_REG(vhighfs); } |
charly | 0:f4343071c8b1 | 26 | void TMC2130Stepper::vhighchm( bool B ) { SET_REG(vhighchm);} |
charly | 0:f4343071c8b1 | 27 | void TMC2130Stepper::sync( uint8_t B ) { SET_REG(sync); } |
charly | 0:f4343071c8b1 | 28 | void TMC2130Stepper::mres( uint8_t B ) { SET_REG(mres); } |
charly | 0:f4343071c8b1 | 29 | void TMC2130Stepper::intpol( bool B ) { SET_REG(intpol); } |
charly | 0:f4343071c8b1 | 30 | void TMC2130Stepper::dedge( bool B ) { SET_REG(dedge); } |
charly | 0:f4343071c8b1 | 31 | void TMC2130Stepper::diss2g( bool B ) { SET_REG(diss2g); } |
charly | 0:f4343071c8b1 | 32 | |
charly | 0:f4343071c8b1 | 33 | uint8_t TMC2130Stepper::toff() { CHOPCONF_t r{0}; r.sr = CHOPCONF(); return r.toff; } |
charly | 0:f4343071c8b1 | 34 | uint8_t TMC2130Stepper::hstrt() { CHOPCONF_t r{0}; r.sr = CHOPCONF(); return r.hstrt; } |
charly | 0:f4343071c8b1 | 35 | uint8_t TMC2130Stepper::hend() { CHOPCONF_t r{0}; r.sr = CHOPCONF(); return r.hend; } |
charly | 0:f4343071c8b1 | 36 | //uint8_t TMC2130Stepper::fd() { CHOPCONF_t r{0}; r.sr = CHOPCONF(); return r.fd; } |
charly | 0:f4343071c8b1 | 37 | bool TMC2130Stepper::disfdcc() { CHOPCONF_t r{0}; r.sr = CHOPCONF(); return r.disfdcc; } |
charly | 0:f4343071c8b1 | 38 | bool TMC2130Stepper::rndtf() { CHOPCONF_t r{0}; r.sr = CHOPCONF(); return r.rndtf; } |
charly | 0:f4343071c8b1 | 39 | bool TMC2130Stepper::chm() { CHOPCONF_t r{0}; r.sr = CHOPCONF(); return r.chm; } |
charly | 0:f4343071c8b1 | 40 | uint8_t TMC2130Stepper::tbl() { CHOPCONF_t r{0}; r.sr = CHOPCONF(); return r.tbl; } |
charly | 0:f4343071c8b1 | 41 | bool TMC2130Stepper::vsense() { CHOPCONF_t r{0}; r.sr = CHOPCONF(); return r.vsense; } |
charly | 0:f4343071c8b1 | 42 | bool TMC2130Stepper::vhighfs() { CHOPCONF_t r{0}; r.sr = CHOPCONF(); return r.vhighfs; } |
charly | 0:f4343071c8b1 | 43 | bool TMC2130Stepper::vhighchm() { CHOPCONF_t r{0}; r.sr = CHOPCONF(); return r.vhighchm;} |
charly | 0:f4343071c8b1 | 44 | uint8_t TMC2130Stepper::sync() { CHOPCONF_t r{0}; r.sr = CHOPCONF(); return r.sync; } |
charly | 0:f4343071c8b1 | 45 | uint8_t TMC2130Stepper::mres() { CHOPCONF_t r{0}; r.sr = CHOPCONF(); return r.mres; } |
charly | 0:f4343071c8b1 | 46 | bool TMC2130Stepper::intpol() { CHOPCONF_t r{0}; r.sr = CHOPCONF(); return r.intpol; } |
charly | 0:f4343071c8b1 | 47 | bool TMC2130Stepper::dedge() { CHOPCONF_t r{0}; r.sr = CHOPCONF(); return r.dedge; } |
charly | 0:f4343071c8b1 | 48 | bool TMC2130Stepper::diss2g() { CHOPCONF_t r{0}; r.sr = CHOPCONF(); return r.diss2g; } |
charly | 0:f4343071c8b1 | 49 | |
charly | 0:f4343071c8b1 | 50 | void TMC5160Stepper::diss2vs(bool B){ SET_REG(diss2vs); } |
charly | 0:f4343071c8b1 | 51 | void TMC5160Stepper::tpfd(uint8_t B){ SET_REG(tpfd); } |
charly | 0:f4343071c8b1 | 52 | bool TMC5160Stepper::diss2vs() { CHOPCONF_t r{0}; r.sr = CHOPCONF(); return r.diss2vs; } |
charly | 0:f4343071c8b1 | 53 | uint8_t TMC5160Stepper::tpfd() { CHOPCONF_t r{0}; r.sr = CHOPCONF(); return r.tpfd; } |
charly | 0:f4343071c8b1 | 54 | */ |
charly | 0:f4343071c8b1 | 55 | void TMC2208Stepper::CHOPCONF(uint32_t input) { |
charly | 0:f4343071c8b1 | 56 | CHOPCONF_register.sr = input; |
charly | 0:f4343071c8b1 | 57 | write(CHOPCONF_register.address, CHOPCONF_register.sr); |
charly | 0:f4343071c8b1 | 58 | } |
charly | 0:f4343071c8b1 | 59 | uint32_t TMC2208Stepper::CHOPCONF() { |
charly | 0:f4343071c8b1 | 60 | return read(CHOPCONF_register.address); |
charly | 0:f4343071c8b1 | 61 | } |
charly | 0:f4343071c8b1 | 62 | void TMC2208Stepper::toff ( uint8_t B ) { SET_REG(toff); } |
charly | 0:f4343071c8b1 | 63 | void TMC2208Stepper::hstrt ( uint8_t B ) { SET_REG(hstrt); } |
charly | 0:f4343071c8b1 | 64 | void TMC2208Stepper::hend ( uint8_t B ) { SET_REG(hend); } |
charly | 0:f4343071c8b1 | 65 | void TMC2208Stepper::tbl ( uint8_t B ) { SET_REG(tbl); } |
charly | 0:f4343071c8b1 | 66 | void TMC2208Stepper::vsense ( bool B ) { SET_REG(vsense); } |
charly | 0:f4343071c8b1 | 67 | void TMC2208Stepper::mres ( uint8_t B ) { SET_REG(mres); } |
charly | 0:f4343071c8b1 | 68 | void TMC2208Stepper::intpol ( bool B ) { SET_REG(intpol); } |
charly | 0:f4343071c8b1 | 69 | void TMC2208Stepper::dedge ( bool B ) { SET_REG(dedge); } |
charly | 0:f4343071c8b1 | 70 | void TMC2208Stepper::diss2g ( bool B ) { SET_REG(diss2g); } |
charly | 0:f4343071c8b1 | 71 | void TMC2208Stepper::diss2vs( bool B ) { SET_REG(diss2vs); } |
charly | 0:f4343071c8b1 | 72 | |
charly | 0:f4343071c8b1 | 73 | uint8_t TMC2208Stepper::toff() { TMC2208_n::CHOPCONF_t r{0}; r.sr = CHOPCONF(); return r.toff; } |
charly | 0:f4343071c8b1 | 74 | uint8_t TMC2208Stepper::hstrt() { TMC2208_n::CHOPCONF_t r{0}; r.sr = CHOPCONF(); return r.hstrt; } |
charly | 0:f4343071c8b1 | 75 | uint8_t TMC2208Stepper::hend() { TMC2208_n::CHOPCONF_t r{0}; r.sr = CHOPCONF(); return r.hend; } |
charly | 0:f4343071c8b1 | 76 | uint8_t TMC2208Stepper::tbl() { TMC2208_n::CHOPCONF_t r{0}; r.sr = CHOPCONF(); return r.tbl; } |
charly | 0:f4343071c8b1 | 77 | bool TMC2208Stepper::vsense() { TMC2208_n::CHOPCONF_t r{0}; r.sr = CHOPCONF(); return r.vsense; } |
charly | 0:f4343071c8b1 | 78 | uint8_t TMC2208Stepper::mres() { TMC2208_n::CHOPCONF_t r{0}; r.sr = CHOPCONF(); return r.mres; } |
charly | 0:f4343071c8b1 | 79 | bool TMC2208Stepper::intpol() { TMC2208_n::CHOPCONF_t r{0}; r.sr = CHOPCONF(); return r.intpol; } |
charly | 0:f4343071c8b1 | 80 | bool TMC2208Stepper::dedge() { TMC2208_n::CHOPCONF_t r{0}; r.sr = CHOPCONF(); return r.dedge; } |
charly | 0:f4343071c8b1 | 81 | bool TMC2208Stepper::diss2g() { TMC2208_n::CHOPCONF_t r{0}; r.sr = CHOPCONF(); return r.diss2g; } |
charly | 0:f4343071c8b1 | 82 | bool TMC2208Stepper::diss2vs() { TMC2208_n::CHOPCONF_t r{0}; r.sr = CHOPCONF(); return r.diss2vs; } |
charly | 0:f4343071c8b1 | 83 | /* |
charly | 0:f4343071c8b1 | 84 | #define GET_REG_2660(SETTING) return CHOPCONF_register.SETTING; |
charly | 0:f4343071c8b1 | 85 | |
charly | 0:f4343071c8b1 | 86 | uint32_t TMC2660Stepper::CHOPCONF() { return CHOPCONF_register.sr; } |
charly | 0:f4343071c8b1 | 87 | void TMC2660Stepper::CHOPCONF(uint32_t data) { |
charly | 0:f4343071c8b1 | 88 | CHOPCONF_register.sr = data; |
charly | 0:f4343071c8b1 | 89 | write(CHOPCONF_register.address, CHOPCONF_register.sr); |
charly | 0:f4343071c8b1 | 90 | } |
charly | 0:f4343071c8b1 | 91 | |
charly | 0:f4343071c8b1 | 92 | void TMC2660Stepper::toff(uint8_t B) { |
charly | 0:f4343071c8b1 | 93 | SET_REG(toff); |
charly | 0:f4343071c8b1 | 94 | if (B>0) _savedToff = B; |
charly | 0:f4343071c8b1 | 95 | } |
charly | 0:f4343071c8b1 | 96 | void TMC2660Stepper::hstrt(uint8_t B) { SET_REG(hstrt); } |
charly | 0:f4343071c8b1 | 97 | void TMC2660Stepper::hend(uint8_t B) { SET_REG(hend); } |
charly | 0:f4343071c8b1 | 98 | void TMC2660Stepper::hdec(uint8_t B) { SET_REG(hdec); } |
charly | 0:f4343071c8b1 | 99 | void TMC2660Stepper::rndtf(bool B) { SET_REG(rndtf); } |
charly | 0:f4343071c8b1 | 100 | void TMC2660Stepper::chm(bool B) { SET_REG(chm); } |
charly | 0:f4343071c8b1 | 101 | void TMC2660Stepper::tbl(uint8_t B) { SET_REG(tbl); } |
charly | 0:f4343071c8b1 | 102 | |
charly | 0:f4343071c8b1 | 103 | uint8_t TMC2660Stepper::toff() { GET_REG_2660(toff); } |
charly | 0:f4343071c8b1 | 104 | uint8_t TMC2660Stepper::hstrt() { GET_REG_2660(hstrt); } |
charly | 0:f4343071c8b1 | 105 | uint8_t TMC2660Stepper::hend() { GET_REG_2660(hend); } |
charly | 0:f4343071c8b1 | 106 | uint8_t TMC2660Stepper::hdec() { GET_REG_2660(hdec); } |
charly | 0:f4343071c8b1 | 107 | bool TMC2660Stepper::rndtf() { GET_REG_2660(rndtf); } |
charly | 0:f4343071c8b1 | 108 | bool TMC2660Stepper::chm() { GET_REG_2660(chm); } |
charly | 0:f4343071c8b1 | 109 | uint8_t TMC2660Stepper::tbl() { GET_REG_2660(tbl); } |
charly | 0:f4343071c8b1 | 110 | */ |