Browse Source

add getXactualRAW

hand_acid_mainboard
zhaohe 11 months ago
parent
commit
f45df89965
  1. 19
      tmcdriver/tmc51x0/tmc51x0.cpp
  2. 24
      tmcdriver/tmc51x0/tmc51x0.hpp

19
tmcdriver/tmc51x0/tmc51x0.cpp

@ -30,7 +30,7 @@ static const uint8_t tmc5130_defaultRegisterAccess[TMC5130_REGISTER_COUNT] = {
#endif #endif
/*********************************************************************************************************************** /***********************************************************************************************************************
* *
* ? *
***********************************************************************************************************************/ ***********************************************************************************************************************/
#define FIELD_SET(data, mask, shift, value) (data = (((data) & (~(mask))) | (((value) << (shift)) & (mask)))) #define FIELD_SET(data, mask, shift, value) (data = (((data) & (~(mask))) | (((value) << (shift)) & (mask))))
@ -106,7 +106,7 @@ void TMC51X0::writeField(uint8_t add, uint32_t mask, uint32_t shift, uint32_t va
int32_t TMC51X0::readInt(uint8_t address) { int32_t TMC51X0::readInt(uint8_t address) {
/** /**
* @WARNING: * @WARNING:
*
* ?
*/ */
address = TMC51x0_ADDRESS(address); address = TMC51x0_ADDRESS(address);
@ -225,6 +225,11 @@ int32_t TMC51X0::getXACTUAL() {
return to_user_pos(readInt(TMC5130_XACTUAL)); return to_user_pos(readInt(TMC5130_XACTUAL));
} }
int32_t TMC51X0::getXactualRAW() {
zlock_guard lkg(m_mutex);
return readInt(TMC5130_XACTUAL);
}
int32_t TMC51X0::getVACTUAL() { int32_t TMC51X0::getVACTUAL() {
zlock_guard lkg(m_mutex); zlock_guard lkg(m_mutex);
return to_user_pos(readInt(TMC5130_VACTUAL)); return to_user_pos(readInt(TMC5130_VACTUAL));
@ -259,7 +264,7 @@ bool TMC51X0::isTMC5130() {
return chipId == kTMC5130; return chipId == kTMC5130;
} }
TMC5130DevStatusReg_t TMC51X0::getDevStatus() { // R 霂餃�銝齿�
TMC5130DevStatusReg_t TMC51X0::getDevStatus() { // R
zlock_guard lkg(m_mutex); zlock_guard lkg(m_mutex);
static_assert(sizeof(TMC5130DevStatusReg_t) == 4); static_assert(sizeof(TMC5130DevStatusReg_t) == 4);
uint32_t value = readInt(TMC5130_DRVSTATUS); uint32_t value = readInt(TMC5130_DRVSTATUS);
@ -267,7 +272,7 @@ TMC5130DevStatusReg_t TMC51X0::getDevStatus() { // R 读后不清
memcpy(&val, &value, sizeof(TMC5130DevStatusReg_t)); memcpy(&val, &value, sizeof(TMC5130DevStatusReg_t));
return val; return val;
} }
TMC5130GState_t TMC51X0::getGState() { // R+C 霂餃��芸𢆡皜�膄
TMC5130GState_t TMC51X0::getGState() { // R+C
zlock_guard lkg(m_mutex); zlock_guard lkg(m_mutex);
static_assert(sizeof(TMC5130GState_t) == 4); static_assert(sizeof(TMC5130GState_t) == 4);
uint32_t value = readInt(TMC5130_GSTAT); uint32_t value = readInt(TMC5130_GSTAT);
@ -365,9 +370,9 @@ bool TMC51X0::setEncResolution(int32_t enc_resolution) {
/** /**
* @brief * @brief
* *
* 1.256
* 2.TMC5130_ENC_CONST𥕦
* 3.𣈲𡁜
* 1.?256
* 2.?MC5130_ENC_CONST??
* 3.??𡁜
*/ */
int32_t enc_resolution_tmp = enc_resolution * 4; int32_t enc_resolution_tmp = enc_resolution * 4;

24
tmcdriver/tmc51x0/tmc51x0.hpp

@ -12,10 +12,6 @@
namespace iflytop { namespace iflytop {
/** /**
* @brief * @brief
*
*
* 1. 6?𧢲𧢲?
* 2. 𡅅MAX
* *
*/ */
class TMC51X0Cfg { class TMC51X0Cfg {
@ -40,7 +36,7 @@ class TMC51X0 {
int32_t m_scale_deceleration = 1; int32_t m_scale_deceleration = 1;
mres_type_t m_MRES = kmres_256; mres_type_t m_MRES = kmres_256;
double m_onecirclepulse = 51200; double m_onecirclepulse = 51200;
int32_t m_enc_resolution = 0; // 蝻𣇉��典�颲函�嚗屸�霈文蘨�匧銁256蝏������萎��㗇�
int32_t m_enc_resolution = 0; //
zmutex m_mutex = {"TMC51X0"}; zmutex m_mutex = {"TMC51X0"};
bool m_driErr = false; bool m_driErr = false;
@ -49,9 +45,7 @@ class TMC51X0 {
void initialize(TMC51X0Cfg cfg); void initialize(TMC51X0Cfg cfg);
private: private:
/*******************************************************************************
* 𢆡 *
*******************************************************************************/
void readWriteArray(uint8_t *data, size_t length); void readWriteArray(uint8_t *data, size_t length);
void writeDatagram(uint8_t address, uint8_t x1, uint8_t x2, uint8_t x3, uint8_t x4); void writeDatagram(uint8_t address, uint8_t x1, uint8_t x2, uint8_t x3, uint8_t x4);
void writeInt(uint8_t address, int32_t value); void writeInt(uint8_t address, int32_t value);
@ -76,21 +70,23 @@ class TMC51X0 {
/*********************************************************************************************************************** /***********************************************************************************************************************
* get state * * get state *
***********************************************************************************************************************/ ***********************************************************************************************************************/
int32_t getXACTUAL(); // 敶枏�雿滨蔭
int32_t getVACTUAL(); // 敶枏��笔漲
int32_t getXACTUAL(); // now pos
int32_t getVACTUAL(); // now vel
int32_t getEncVal(); // ENCVAL int32_t getEncVal(); // ENCVAL
TMC5130RampStat getRampStat(); TMC5130RampStat getRampStat();
TMC5130DevStatusReg_t getDevStatus(); // R 霂餃�銝齿�
TMC5130GState_t getGState(); // R+C 霂餃��?�冽��?
TMC5130DevStatusReg_t getDevStatus(); // R
TMC5130GState_t getGState(); // R+C read and clear
int32_t readICVersion(); int32_t readICVersion();
bool isReachTarget(TMC5130RampStat *state); // �?�血�颲曄𤌍���蝵?
int32_t getXactualRAW();// now pos 51200
bool isReachTarget(TMC5130RampStat *state); // is reach target
bool isTMC5130(); bool isTMC5130();
/*********************************************************************************************************************** /***********************************************************************************************************************
* set state * * set state *
***********************************************************************************************************************/ ***********************************************************************************************************************/
void setXACTUAL(int32_t value); // 霈曄蔭敶枏�雿滨蔭
void setXACTUAL(int32_t value); // set pos
void setMotorShaft(bool reverse); void setMotorShaft(bool reverse);
void setIHOLD_IRUN(uint8_t ihold, uint8_t irun, uint16_t iholddelay); void setIHOLD_IRUN(uint8_t ihold, uint8_t irun, uint16_t iholddelay);
void setGlobalScale(uint8_t globalscale); // ONLY for 5160 void setGlobalScale(uint8_t globalscale); // ONLY for 5160

Loading…
Cancel
Save