高级会员
 
主题
帖子
积分750
阅读权限30
注册时间2013-10-25
最后登录1970-1-1
在线时间 小时
|
之前公司的一个软件工程师一直抱怨旋转编码器多多难用,不好区分正反转,闲暇时间自己研究了一下,找到规律,发现没啥难的,仅此分享下,编码器型号EC11
通过用逻辑分析仪查看波形如下图,可以分析出,脉冲pinA B, 顺时针旋转的时候,A的每一个下降沿时候,对应的B都是高电平;相反 对应B是低电平的时候就是逆时针旋转,这样不就很容易区分了么
将pina 配置为下降沿中断,很容易可以得到理想的旋转效果,相关代码如下
void EXTI9_5_IRQHandler(void) //中断函数
{
if(EXTI_GetITStatus(EXTI_Line6)!= RESET)
{
EXTI_ClearITPendingBit(EXTI_Line6);
key_flag=key_codeA;
}
Key_scan();
}
void Key_scan(void)
{
switch(key_flag)
{
case key_R: if(Key_Return==0) { flag=~flag; } break;
case key_ST: if(Key_Start==0) { PID_Temp.Set_value++; } break;
case key_SE: if(Key_Set==0) { PID_Temp.Set_value--; } break;
case key_codeA:if(Code_B==0)
{
PID_Temp.Set_value--;
}
else
{
PID_Temp.Set_value++;
}break;
default: break;
}
|
|