|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
问问大家,单个旋转编码器旋转没有问题,但是多个写好程序后旋转会发生错误,有时正转会出现反转,反转出现正转,有时还会自己发生正转反转,有谁知道是怎么回事吗?
; i1 m+ M) C4 K/ Q) A v4 q5 i; M6 C/ lvoid Encoder_EC11_Init(void)
7 a3 h7 X( t8 Q6 C{
- t9 z* L- n0 ~% ]# a% `0 v EC11_A1_Now=1;
0 M( p) p( a. ?& |- ^ EC11_B1_Now=1;
& j8 y# v1 P d6 o- S+ G& ]}
0 D; {" W0 Y8 x5 m; J$ p# q
4 Y, b6 ]2 L2 m4 Y, J& Bvoid Encoder_EC11_Scan1(void)
; ^( D# D u0 o{ ; ]; t K, j3 O) [8 }% k1 N. t" N1 ?
if(EC11_A1_Now != EC11_A_Last) //以A为时钟,B为数据。正转时AB反相,反转时AB同相
- ~0 \& D! q& ~/ W8 p {# o0 z4 v5 n; p, [( {+ c/ c
if(EC11_A1_Now == 0)
( D ~- G" [6 ?9 Q; U {* ~( l! Z1 S! h
if(EC11_B1_Now == 1) //只需要采集A的上升沿或下降沿的任意一个状态,若A下降沿时B为1,正转 % C* t0 }3 i* Q g2 x
{. H2 b; Q& X7 ~* ]
M" O4 Y1 D! G* L; N. j4 R
printf("\r\n CW \r\n"); Y, w8 O0 b2 Y: C: X$ |
} 0 o V& Y+ j* T9 A6 L& }$ v
else //反转8 o6 B) _( W2 n
{
- o. q; O, Q+ O9 p, h
, Y! i8 k: N' _! m printf("\r\n CCW \r\n");) T0 D1 P6 Z6 h. ]- M
}
! }6 ~! P+ {4 I5 \ }4 F8 r% `- F. t5 N" {% G. u$ G: d! t
4 n- Z$ `! b9 N EC11_A_Last = EC11_A1_Now; //更新编码器上一个状态暂存变量. d# _: f) I3 v8 r+ \/ [2 q' m& H2 A
EC11_B_Last = EC11_B1_Now; //更新编码器上一个状态暂存变量
4 U1 z" O% y ]7 G }# j4 z+ q) h* }% Z! \8 X U+ X
}
( h+ O8 k& o7 c6 a- e+ \0 D
0 a0 x h4 G4 y4 }) [程序单个是这样的,然后多个像这样写,旋转后串口显示的会误判
) v+ A. S6 ^" x" z) O: R/ w5 }
7 A* N+ S8 {% B6 R4 q: d! w- D |
|