TMCStepper
Library supporting Trinamic Stepper Drivers for Arduino platforms
Loading...
Searching...
No Matches
TMC2660Stepper.h
Go to the documentation of this file.
1
7#pragma once
8
9#define INIT2660_REGISTER(REG) TMC2660_n::REG##_t REG##_register{}
10
12 public:
13 TMC2660Stepper(uint16_t pinCS, float RS = default_RS);
14 TMC2660Stepper(uint16_t pinCS, uint16_t pinMOSI, uint16_t pinMISO, uint16_t pinSCK);
15 TMC2660Stepper(uint16_t pinCS, float RS, uint16_t pinMOSI, uint16_t pinMISO, uint16_t pinSCK);
16 void write(uint8_t addressByte, uint32_t config);
17 uint32_t read();
18 void switchCSpin(bool state);
19 void begin();
20 bool isEnabled();
21 uint8_t test_connection();
22 uint16_t cs2rms(uint8_t CS);
23 uint16_t rms_current();
24 void rms_current(uint16_t mA);
25 //uint16_t getMilliamps() {return val_mA;}
26 void push();
27 uint8_t savedToff() { return _savedToff; }
28
29 // Helper functions
30 void microsteps(uint16_t ms);
31 uint16_t microsteps();
32 void blank_time(uint8_t value);
33 uint8_t blank_time();
34 void hysteresis_end(int8_t value);
35 int8_t hysteresis_end();
36 void hysteresis_start(uint8_t value);
37 uint8_t hysteresis_start();
38
39 // W: DRVCONF
40 void DRVCONF(uint32_t);
41 void tst(bool);
42 void slph(uint8_t);
43 void slpl(uint8_t);
44 void diss2g(bool);
45 void ts2g(uint8_t);
46 void sdoff(bool);
47 void vsense(bool);
48 void rdsel(uint8_t);
49 uint32_t DRVCONF();
50 bool tst();
51 uint8_t slph();
52 uint8_t slpl();
53 bool diss2g();
54 uint8_t ts2g();
55 bool sdoff();
56 bool vsense();
57 uint8_t rdsel();
58
59 // W: DRVCTRL
60 void DRVCTRL(uint32_t);
61 void pha(bool B);
62 void ca(uint8_t B);
63 void phb(bool B);
64 void cb(uint8_t B);
65 bool pha();
66 uint8_t ca();
67 bool phb();
68 uint8_t cb();
69 void intpol(bool);
70 void dedge(bool);
71 void mres(uint8_t);
72 uint32_t DRVCTRL();
73 bool intpol();
74 bool dedge();
75 uint8_t mres();
76
77 // W: CHOPCONF
78 void CHOPCONF(uint32_t);
79 void tbl(uint8_t);
80 void chm(bool);
81 void rndtf(bool);
82 void hdec(uint8_t);
83 void hend(uint8_t);
84 void hstrt(uint8_t);
85 void toff(uint8_t);
86 uint32_t CHOPCONF();
87 uint8_t tbl();
88 bool chm();
89 bool rndtf();
90 uint8_t hdec();
91 uint8_t hend();
92 uint8_t hstrt();
93 uint8_t toff();
94
95 // R: DRVSTATUS
96 uint32_t DRV_STATUS() { return DRVSTATUS(); }
97 uint32_t DRVSTATUS();
98 uint16_t mstep();
99 uint8_t se();
100 bool stst();
101 bool olb();
102 bool ola();
103 bool s2gb();
104 bool s2ga();
105 bool otpw();
106 bool ot();
107 bool sg();
108 uint16_t sg_result();
109
110 // W: SGCSCONF
111 uint32_t SGCSCONF();
112 void sfilt(bool);
113 void sgt(uint8_t);
114 void cs(uint8_t);
115 void SGCSCONF(uint32_t);
116 bool sfilt();
117 uint8_t sgt();
118 uint8_t cs();
119
120 // W: SMARTEN
121 void SMARTEN(uint32_t);
122 void seimin(bool B);
123 void sedn(uint8_t B);
124 void semax(uint8_t B);
125 void seup(uint8_t B);
126 void semin(uint8_t B);
127 uint32_t SMARTEN();
128 bool seimin();
129 uint8_t sedn();
130 uint8_t semax();
131 uint8_t seup();
132 uint8_t semin();
133 /*
134 // Alias
135 SET_ALIAS(void, polarity_A, bool, pha);
136 SET_ALIAS(void, current_A, uint8_t, ca);
137 SET_ALIAS(void, polarity_B, bool, phb);
138 SET_ALIAS(void, current_b, uint8_t, cb);
139 SET_ALIAS(void, interpolate, bool, intpol);
140 SET_ALIAS(void, double_edge_step, bool, dedge);
141 SET_ALIAS(void, microsteps, uint8_t, mres);
142 SET_ALIAS(void, blank_time, uint8_t, tbl);
143 SET_ALIAS(void, chopper_mode, bool, chm);
144 SET_ALIAS(void, random_off_time, bool, rndtf);
145 SET_ALIAS(void, hysteresis_decrement, uint8_t, hdec);
146 SET_ALIAS(void, hysteresis_low, uint8_t, hend);
147 SET_ALIAS(void, hysteresis_start, uint8_t, hstrt);
148 SET_ALIAS(void, off_time, uint8_t, toff);
149 */
150
152
153 private:
154 INIT_REGISTER(DRVCTRL_1);
155 INIT_REGISTER(DRVCTRL_0);
160 INIT_REGISTER(READ_RDSEL00);
161 INIT_REGISTER(READ_RDSEL01);
162 INIT_REGISTER(READ_RDSEL10);
163
164 const uint16_t _pinCS;
165 const float Rsense;
166 static constexpr float default_RS = 0.1;
167 float holdMultiplier = 0.5;
168 uint32_t spi_speed = 16000000/8; // Default 2MHz
169 uint8_t _savedToff = 0;
170 SW_SPIClass * TMC_SW_SPI = nullptr;
171};
#define INIT2660_REGISTER(REG)
#define INIT_REGISTER(REG)
Definition TMCStepper.h:73
uint16_t microsteps()
uint32_t DRVSTATUS()
Definition DRVSTATUS.cpp:13
uint8_t slph()
Definition DRVCONF.cpp:28
uint8_t hstrt()
Definition CHOPCONF.cpp:162
uint8_t hysteresis_start()
uint8_t hdec()
Definition CHOPCONF.cpp:164
uint8_t seup()
Definition SMARTEN.cpp:27
bool diss2g()
Definition DRVCONF.cpp:30
uint8_t hend()
Definition CHOPCONF.cpp:163
uint32_t DRVCTRL()
Definition DRVCTRL.cpp:14
uint8_t savedToff()
void write(uint8_t addressByte, uint32_t config)
uint8_t rdsel()
Definition DRVCONF.cpp:34
uint16_t sg_result()
Definition DRVSTATUS.cpp:38
uint32_t DRV_STATUS()
uint8_t semax()
Definition SMARTEN.cpp:26
uint16_t rms_current()
uint16_t cs2rms(uint8_t CS)
void switchCSpin(bool state)
void SMARTEN(uint32_t)
Definition SMARTEN.cpp:13
void CHOPCONF(uint32_t)
Definition CHOPCONF.cpp:145
uint8_t test_connection()
uint8_t tbl()
Definition CHOPCONF.cpp:167
bool intpol()
Definition DRVCTRL.cpp:44
uint8_t cs()
Definition SGCSCONF.cpp:24
bool seimin()
Definition SMARTEN.cpp:24
uint8_t status_response
uint32_t DRVCONF()
Definition DRVCONF.cpp:12
uint8_t semin()
Definition SMARTEN.cpp:28
uint32_t SMARTEN()
Definition SMARTEN.cpp:12
uint8_t mres()
Definition DRVCTRL.cpp:46
uint8_t ca()
Definition DRVCTRL.cpp:35
uint8_t slpl()
Definition DRVCONF.cpp:29
uint16_t mstep()
Definition DRVSTATUS.cpp:27
uint8_t se()
Definition DRVSTATUS.cpp:28
uint8_t sgt()
Definition SGCSCONF.cpp:23
uint32_t SGCSCONF()
Definition SGCSCONF.cpp:12
uint8_t toff()
Definition CHOPCONF.cpp:161
uint8_t ts2g()
Definition DRVCONF.cpp:31
TMC2660Stepper(uint16_t pinCS, float RS=default_RS)
uint32_t CHOPCONF()
Definition CHOPCONF.cpp:144
uint8_t cb()
Definition DRVCTRL.cpp:37
bool vsense()
Definition DRVCONF.cpp:33
void DRVCONF(uint32_t)
Definition DRVCONF.cpp:13
uint8_t sedn()
Definition SMARTEN.cpp:25