编码器测速问题求助
哪位大侠帮我解释下:(contronsuit 里面 2833xqep.h )v.ElecTheta = (v.PolePairs*v.MechTheta) -floor(v.PolePairs*v.MechTheta); /* Q24 = Q0*Q24 */
为什么要减去后面的floor部分?
为什么前面的 v.MechTheta= v.MechScaler*v.RawTheta; 中 v.MechScaler 要定义成q30 格式??
部分代码是这样的:::
#define QEP_MACRO(m,v) \
\
/* Check the rotational direction */ \
v.DirectionQep = (*eQEP).QEPSTS.bit.QDF; \
\
/* Check the position counter for EQEP1 */ \
v.RawTheta = (*eQEP).QPOSCNT + v.CalibratedAngle; \
\
if (v.RawTheta < 0) \
v.RawTheta = v.RawTheta + (*eQEP).QPOSMAX; \
else if (v.RawTheta > (*eQEP).QPOSMAX) \
v.RawTheta = v.RawTheta - (*eQEP).QPOSMAX; \
\
/* Compute the mechanical angle */ \
v.MechTheta= v.MechScaler*v.RawTheta; \
/* Compute the electrical angle*/ \
v.ElecTheta = (v.PolePairs*v.MechTheta) -floor(v.PolePairs*v.MechTheta); /* Q24 = Q0*Q24 */ \
页:
[1]