|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
问问大家,单个旋转编码器旋转没有问题,但是多个写好程序后旋转会发生错误,有时正转会出现反转,反转出现正转,有时还会自己发生正转反转,有谁知道是怎么回事吗?! E) o s( r: c5 i
void Encoder_EC11_Init(void)! y+ a" d/ ~( R+ e1 `- Q1 c
{' U0 K Y7 N8 p! \
EC11_A1_Now=1;
! O; K8 L$ n1 o+ {& m2 J. [ EC11_B1_Now=1;
) G, ]9 ~: c# N- w! i; u}
m) o% Z6 n* ~9 X6 K. j8 s" E5 Y9 d1 ~+ Q0 g2 Y7 v
void Encoder_EC11_Scan1(void)
6 U: L! h) q0 ~' T; C{ : ]% E6 ^ P( Z
if(EC11_A1_Now != EC11_A_Last) //以A为时钟,B为数据。正转时AB反相,反转时AB同相
" P M9 o9 g( q; |2 I5 O/ ~/ I {
5 ~$ V/ J V9 o& Q7 g5 C1 t if(EC11_A1_Now == 0)
8 `& a9 D( j7 F( T3 G6 ^ {
4 p8 u4 X6 [: O- ?2 ^ if(EC11_B1_Now == 1) //只需要采集A的上升沿或下降沿的任意一个状态,若A下降沿时B为1,正转
) n7 C& a( v3 i9 q& |* U5 { w- T {3 B0 G2 V, p. |- M% G5 |2 c
% m. G) X1 z$ y% z5 A* p8 Z( S: b
printf("\r\n CW \r\n");
4 E( v) L( O6 i }
* m$ [1 d2 q3 |" a6 h& e! O3 V else //反转, W' Q2 @8 O4 E
{7 B* [) P! ?( b, P1 U+ r7 t. `4 j+ [+ t
3 A* n ~( N8 P, u5 Z5 p
printf("\r\n CCW \r\n");
5 R) H' I% `/ }" @) F }
. a7 R- I, e- G6 {9 z1 o }
# a8 N4 ~/ T3 {$ m6 j d$ @) H* f. L a3 w
EC11_A_Last = EC11_A1_Now; //更新编码器上一个状态暂存变量
; d. [1 p! R1 n. L- \) O0 f EC11_B_Last = EC11_B1_Now; //更新编码器上一个状态暂存变量
1 K- F- a1 X% H2 R5 `) K+ H }1 [5 t2 V. a9 C* M: T0 S
}8 m7 L2 `/ _8 h; q; B: j
5 ]7 a+ U" m: d2 l* F% D4 X# X; u程序单个是这样的,然后多个像这样写,旋转后串口显示的会误判
: @9 T1 g0 A+ x( U4 i6 m% P5 }# v, `* ]7 R p' \# e
|
|