TMCStepper
Library supporting Trinamic Stepper Drivers for Arduino platforms
Loading...
Searching...
No Matches
TMC5130Stepper.cpp
Go to the documentation of this file.
1
6#include "../TMCStepper.h"
7#include "TMC_MACROS.h"
8
9TMC5130Stepper::TMC5130Stepper(uint16_t pinCS, float RS, int8_t link) : TMC2160Stepper(pinCS, RS, link)
10 { defaults(); }
11TMC5130Stepper::TMC5130Stepper(uint16_t pinCS, float RS, uint16_t pinMOSI, uint16_t pinMISO, uint16_t pinSCK, int8_t link):
12 TMC2160Stepper(pinCS, RS, pinMOSI, pinMISO, pinSCK, link)
13 { defaults(); }
14TMC5130Stepper::TMC5130Stepper(uint16_t pinCS, uint16_t pinMOSI, uint16_t pinMISO, uint16_t pinSCK, int8_t link) :
15 TMC2160Stepper(pinCS, default_RS, pinMOSI, pinMISO, pinSCK, link)
16 { defaults(); }
17
20
21 XTARGET(0);
22 XACTUAL(0);
23 //while (( RAMP_STAT() & cfg.VZERO_bm) != cfg.VZERO_bm) {}
24}
25
27 OUTPUT_register.sr = 1;
28
29 ENC_CONST_register.sr = 65536;
30
31 //MSLUT0_register.sr = ???;
32 //MSLUT1_register.sr = ???;
33 //MSLUT2_register.sr = ???;
34 //MSLUT3_register.sr = ???;
35 //MSLUT4_register.sr = ???;
36 //MSLUT5_register.sr = ???;
37 //MSLUT6_register.sr = ???;
38 //MSLUT7_register.sr = ???;
39
40 //MSLUTSEL_register.sr = ???;
41
42 //MSLUTSTART_register.start_sin = 0;
43 //MSLUTSTART_register.start_sin90 = 247;
44
45 //PWMCONF_register.sr = 0x00050480; // TMC2160_t::PWMCONF_t
46 PWMCONF_register.pwm_ofs = 128;
47 PWMCONF_register.pwm_grad = 4;
48 PWMCONF_register.pwm_freq = 1;
49 PWMCONF_register.pwm_autoscale = true;
50 PWMCONF_register.pwm_autograd = false;
51 PWMCONF_register.freewheel = 0;
52 PWMCONF_register.pwm_reg = 0;
53 PWMCONF_register.pwm_lim = 0;
54}
55
57 IHOLD_IRUN(IHOLD_IRUN_register.sr);
58 TPOWERDOWN(TPOWERDOWN_register.sr);
59 TPWMTHRS(TPWMTHRS_register.sr);
60 GCONF(GCONF_register.sr);
61 TCOOLTHRS(TCOOLTHRS_register.sr);
62 THIGH(THIGH_register.sr);
63 XDIRECT(XDIRECT_register.sr);
64 VDCMIN(VDCMIN_register.sr);
65 CHOPCONF(CHOPCONF_register.sr);
66 COOLCONF(COOLCONF_register.sr);
67 DCCTRL(DCCTRL_register.sr);
68 PWMCONF(PWMCONF_register.sr);
69 ENCM_CTRL(ENCM_CTRL_register.sr);
70 DRV_CONF(DRV_CONF_register.sr);
71 SLAVECONF(SLAVECONF_register.sr);
72 TMC_OUTPUT(OUTPUT_register.sr);
73 X_COMPARE(X_COMPARE_register.sr);
74 RAMPMODE(RAMPMODE_register.sr);
75 XACTUAL(XACTUAL_register.sr);
76 VSTART(VSTART_register.sr);
77 a1(A1_register.sr);
78 v1(V1_register.sr);
79 AMAX(AMAX_register.sr);
80 VMAX(VMAX_register.sr);
81 DMAX(DMAX_register.sr);
82 d1(D1_register.sr);
83 VSTOP(VSTOP_register.sr);
84 TZEROWAIT(TZEROWAIT_register.sr);
85 SW_MODE(SW_MODE_register.sr);
86 ENCMODE(ENCMODE_register.sr);
87 ENC_CONST(ENC_CONST_register.sr);
88}
89
91// R: IFCNT
94// W: OUTPUT
95bool TMC5130Stepper::TMC_OUTPUT() { return OUTPUT_register.sr; }
97 OUTPUT_register.sr = input;
98 write(OUTPUT_register.address, OUTPUT_register.sr);
99}
100
101// W: X_COMPARE
102uint32_t TMC5130Stepper::X_COMPARE() { return X_COMPARE_register.sr; }
103void TMC5130Stepper::X_COMPARE(uint32_t input) {
104 X_COMPARE_register.sr = input;
105 write(X_COMPARE_register.address, X_COMPARE_register.sr);
106}
107
108// RW: RAMPMODE
109uint8_t TMC5130Stepper::RAMPMODE() { return read(RAMPMODE_register.address); }
110void TMC5130Stepper::RAMPMODE(uint8_t input) {
111 RAMPMODE_register.sr = input;
112 write(RAMPMODE_register.address, RAMPMODE_register.sr);
113}
114
115// RW: XACTUAL
116int32_t TMC5130Stepper::XACTUAL() { return read(XACTUAL_register.address); }
117void TMC5130Stepper::XACTUAL(int32_t input) {
118 write(XACTUAL_register.address, input);
119}
120
121// R: VACTUAL
123 uint32_t int24 = read(VACTUAL_t::address);
124 if((int24 >> 23) & 0x01) {
125 int24 |= 0xFF000000;
126 }
127 return int24;
128}
129
130// W: VSTART
131uint32_t TMC5130Stepper::VSTART() { return VSTART_register.sr; }
132void TMC5130Stepper::VSTART(uint32_t input) {
133 VSTART_register.sr = input;
134 write(VSTART_register.address, VSTART_register.sr);
135}
136
137// W: A1
138uint16_t TMC5130Stepper::a1() { return A1_register.sr; }
139void TMC5130Stepper::a1(uint16_t input) {
140 A1_register.sr = input;
141 write(A1_register.address, A1_register.sr);
142}
143
144// W: V1
145uint32_t TMC5130Stepper::v1() { return V1_register.sr; }
146void TMC5130Stepper::v1(uint32_t input) {
147 V1_register.sr = input;
148 write(V1_register.address, V1_register.sr);
149}
150
151// W: AMAX
152uint16_t TMC5130Stepper::AMAX() { return AMAX_register.sr; }
153void TMC5130Stepper::AMAX(uint16_t input) {
154 AMAX_register.sr = input;
155 write(AMAX_register.address, AMAX_register.sr);
156}
157
158// W: VMAX
159uint32_t TMC5130Stepper::VMAX() { return VMAX_register.sr; }
160void TMC5130Stepper::VMAX(uint32_t input) {
161 VMAX_register.sr = input;
162 write(VMAX_register.address, VMAX_register.sr);
163}
164
165// W: DMAX
166uint16_t TMC5130Stepper::DMAX() { return DMAX_register.sr; }
167void TMC5130Stepper::DMAX(uint16_t input) {
168 DMAX_register.sr = input;
169 write(DMAX_register.address, DMAX_register.sr);
170}
171
172// W: D1
173uint16_t TMC5130Stepper::d1() { return D1_register.sr; }
174void TMC5130Stepper::d1(uint16_t input) {
175 D1_register.sr = input;
176 write(D1_register.address, D1_register.sr);
177}
178
179// W: VSTOP
180uint32_t TMC5130Stepper::VSTOP() { return VSTOP_register.sr; }
181void TMC5130Stepper::VSTOP(uint32_t input) {
182 if (input == 0 && RAMPMODE() == 0) return;
183 VSTOP_register.sr = input;
184 write(VSTOP_register.address, VSTOP_register.sr);
185}
186
187// W: TZEROWAIT
188uint16_t TMC5130Stepper::TZEROWAIT() { return TZEROWAIT_register.sr; }
189void TMC5130Stepper::TZEROWAIT(uint16_t input) {
190 TZEROWAIT_register.sr = input;
191 write(TZEROWAIT_register.address, TZEROWAIT_register.sr);
192}
193
194// RW: XTARGET
196void TMC5130Stepper::XTARGET(int32_t input) {
198}
199
200// R: XLATCH
203// RW: X_ENC
205void TMC5130Stepper::X_ENC(int32_t input) {
206 write(X_ENC_t::address, input);
207}
208
209// W: ENC_CONST
210uint32_t TMC5130Stepper::ENC_CONST() { return ENC_CONST_register.sr; }
211void TMC5130Stepper::ENC_CONST(uint32_t input) {
212 ENC_CONST_register.sr = input;
213 write(ENC_CONST_register.address, ENC_CONST_register.sr);
214}
215
216// R: ENC_STATUS
219// R: ENC_LATCH
void write(uint8_t addressByte, uint32_t config)
uint32_t CHOPCONF()
Definition CHOPCONF.cpp:16
uint32_t COOLCONF()
Definition COOLCONF.cpp:16
uint32_t read(uint8_t addressByte)
uint32_t GCONF()
Definition GCONF.cpp:16
TMC2160Stepper(uint16_t pinCS, float RS=default_RS, int8_t link_index=-1)
TMC5130Stepper(uint16_t pinCS, float RS=default_RS, int8_t link_index=-1)
uint32_t PWMCONF()
Definition PWMCONF.cpp:16
uint32_t ENCMODE()
Definition ENCMODE.cpp:16
static constexpr float default_RS
uint16_t SLAVECONF()
Definition SLAVECONF.cpp:44
uint32_t DRV_CONF()
Definition DRV_CONF.cpp:16
uint32_t SW_MODE()
Definition SW_MODE.cpp:13
uint32_t IHOLD_IRUN()
uint8_t TPOWERDOWN()
uint32_t TPWMTHRS()
static constexpr uint8_t address
static constexpr uint8_t address
static constexpr uint8_t address
static constexpr uint8_t address
static constexpr uint8_t address
static constexpr uint8_t address
static constexpr uint8_t address