TMCStepper
Library supporting Trinamic Stepper Drivers for Arduino platforms
Loading...
Searching...
No Matches
TMCStepperBase.h
Go to the documentation of this file.
1
7#pragma once
8
9class TMCStepper {
10 public:
11 uint16_t cs2rms(uint8_t CS);
12 void rms_current(uint16_t mA);
13 void rms_current(uint16_t mA, float mult);
14 uint16_t rms_current();
15 void hold_multiplier(float val) { holdMultiplier = val; }
16 float hold_multiplier() { return holdMultiplier; }
17 uint8_t test_connection();
18
19 // Helper functions
20 void microsteps(uint16_t ms);
21 uint16_t microsteps();
22 void blank_time(uint8_t value);
23 uint8_t blank_time();
24 void hysteresis_end(int8_t value);
25 int8_t hysteresis_end();
26 void hysteresis_start(uint8_t value);
27 uint8_t hysteresis_start();
28
29 // R+WC: GSTAT
30 void GSTAT( uint8_t input);
31 uint8_t GSTAT();
32 bool reset();
33 bool drv_err();
34 bool uv_cp();
35
36 // W: IHOLD_IRUN
37 void IHOLD_IRUN( uint32_t input);
38 uint32_t IHOLD_IRUN();
39 void ihold( uint8_t B);
40 void irun( uint8_t B);
41 void iholddelay( uint8_t B);
42 uint8_t ihold();
43 uint8_t irun();
44 uint8_t iholddelay();
45
46 // W: TPOWERDOWN
47 uint8_t TPOWERDOWN();
48 void TPOWERDOWN( uint8_t input);
49
50 // R: TSTEP
51 uint32_t TSTEP();
52
53 // W: TPWMTHRS
54 uint32_t TPWMTHRS();
55 void TPWMTHRS( uint32_t input);
56
57 // R: MSCNT
58 uint16_t MSCNT();
59
60 protected:
61 TMCStepper(float RS) : Rsense(RS) {};
62 virtual ~TMCStepper() = default;
63
67
68 static constexpr uint8_t TMC_READ = 0x00, TMC_WRITE = 0x80;
69
70 struct TSTEP_t { constexpr static uint8_t address = 0x12; };
71 struct MSCNT_t { constexpr static uint8_t address = 0x6A; };
72
73 virtual void write(uint8_t, uint32_t) = 0;
74 virtual uint32_t read(uint8_t) = 0;
75 virtual void vsense(bool) = 0;
76 virtual bool vsense(void) = 0;
77 virtual uint32_t DRV_STATUS() = 0;
78 virtual void hend(uint8_t) = 0;
79 virtual uint8_t hend() = 0;
80 virtual void hstrt(uint8_t) = 0;
81 virtual uint8_t hstrt() = 0;
82 virtual void mres(uint8_t) = 0;
83 virtual uint8_t mres() = 0;
84 virtual void tbl(uint8_t) = 0;
85 virtual uint8_t tbl() = 0;
86
87 const float Rsense;
88 float holdMultiplier = 0.5;
89};
virtual void hstrt(uint8_t)=0
virtual void write(uint8_t, uint32_t)=0
const float Rsense
void IHOLD_IRUN(uint32_t input)
uint8_t iholddelay()
virtual void mres(uint8_t)=0
virtual ~TMCStepper()=default
static constexpr uint8_t TMC_READ
virtual uint8_t hend()=0
bool drv_err()
virtual uint32_t read(uint8_t)=0
uint32_t IHOLD_IRUN()
uint16_t MSCNT()
virtual uint32_t DRV_STATUS()=0
virtual uint8_t mres()=0
uint8_t ihold()
uint8_t TPOWERDOWN()
float hold_multiplier()
INIT_REGISTER(TPOWERDOWN)
uint8_t irun()
TMCStepper(float RS)
virtual void tbl(uint8_t)=0
int8_t hysteresis_end()
virtual uint8_t tbl()=0
void hold_multiplier(float val)
uint16_t rms_current()
virtual void hend(uint8_t)=0
INIT_REGISTER(TPWMTHRS)
virtual bool vsense(void)=0
float holdMultiplier
uint8_t hysteresis_start()
uint32_t TSTEP()
uint32_t TPWMTHRS()
uint8_t GSTAT()
virtual void vsense(bool)=0
static constexpr uint8_t TMC_WRITE
virtual uint8_t hstrt()=0
uint16_t microsteps()
uint16_t cs2rms(uint8_t CS)
uint8_t blank_time()
INIT_REGISTER(IHOLD_IRUN)
uint8_t test_connection()
static constexpr uint8_t address
static constexpr uint8_t address