|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
问问大家,单个旋转编码器旋转没有问题,但是多个写好程序后旋转会发生错误,有时正转会出现反转,反转出现正转,有时还会自己发生正转反转,有谁知道是怎么回事吗?
- f* H7 {7 `% E0 Rvoid Encoder_EC11_Init(void)
: k; f( k; x8 O* f; Z6 h4 k{
" Q9 B' X* l9 U% h* x$ V2 s5 ` EC11_A1_Now=1;) z7 W+ Q( i3 h$ w- b$ {4 A$ c8 ^
EC11_B1_Now=1;7 j" O, A4 o1 ?0 y
}
' ]& C+ U( c8 V/ Q" Z0 u% _/ V) H; A" c0 {/ D0 y
void Encoder_EC11_Scan1(void)
% a) F7 ]$ W9 S/ ]* j{ ' y; Z: s, z( }: }. V) k: e
if(EC11_A1_Now != EC11_A_Last) //以A为时钟,B为数据。正转时AB反相,反转时AB同相4 b+ R6 t' ]2 x3 O- E
{
% ?$ V8 k" a% ?/ F if(EC11_A1_Now == 0)% V) a* F7 S) n$ k
{* G D4 d) A5 G0 o
if(EC11_B1_Now == 1) //只需要采集A的上升沿或下降沿的任意一个状态,若A下降沿时B为1,正转
/ O* K- {! f! w% V1 i& [& P {
+ `4 h) d- Z/ y" L; n & y. w) u' K* D
printf("\r\n CW \r\n");) @! ^5 K( T1 D; Z2 {5 F5 s
}
* t$ W, b, d# P( M else //反转- z& {6 i6 Q; P g1 w1 a: E9 p" _
{
, h6 z# S1 H, Y( G9 j H9 g, ^' _ 8 D) {: r" W0 X
printf("\r\n CCW \r\n");
8 D. W6 j/ J H6 C# F2 F0 g- k }, l) ?5 X$ Q% x c: |+ K
}
& V8 e3 G j5 t. a $ p0 c' K2 w6 Q# V9 N
EC11_A_Last = EC11_A1_Now; //更新编码器上一个状态暂存变量6 B; K, G+ v# C7 B5 G2 m, f6 p
EC11_B_Last = EC11_B1_Now; //更新编码器上一个状态暂存变量
8 W5 G2 N1 y" K1 F/ d% K6 U }
# H8 }2 q) ], |5 _}
/ ]6 r$ Z8 `( l$ t& m
; b' @( Z* ?( `- @) R6 c程序单个是这样的,然后多个像这样写,旋转后串口显示的会误判
. H4 A7 `4 \- E' W# q" J$ T6 J& H
F; A7 R' f' w5 H4 ?9 Q- n, p |
|