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 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?

UserRevisionLine numberNew 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 */