一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 3185|回复: 10
收起左侧

[avr] 超简单的旋转编码开关C程序!

[复制链接]
发表于 2019-2-22 13:22 | 显示全部楼层 |阅读模式
//INT0--PD2,INT1--PD3
//编码开关A接外部中断(AVR M8的PD2)?B用来判断方向(连到M8的PD3), C接地
//外部中断设置INT0引脚上任意的逻辑电平变化都将引发中断
// rcs_right:正旋,rcs_left:反旋
*/

void init_rcs(void)
{
   DDRD &=~0x0c;                                    //00001100;~11110011
   PORTD |=0x0c;
   MCUCR=0x01;                                      //INT0任意电平变化触发
   GICR=0x40;                                       //INT0外部中断使能
   SREG=0x80;                                       //使能全局中断
}

#pragma interrupt_handler int0_isr:2
void int0_isr(void)
{
   GICR=0;                                          //禁止外部中断
   if ((PIND & 0x04))                               //A为高电平时
     if (!(PIND & 0x08)) rcs_right=1;else rcs_left=1; //B为0正旋,否则反旋
   else                                             //A为低电平时
     if (!(PIND & 0x08)) rcs_left=1;else rcs_right=1; //B为0反旋,否则正旋
   GICR=0x40;
}
正旋处理程序......
反旋处理程序......
不用任何形式的滤波,反应灵敏无丢码,绝对好使。

评分

参与人数 1一乐金币 +40 收起 理由
fujiachun + 40 很给力!

查看全部评分

发表于 2019-2-22 15:48 | 显示全部楼层
谢谢楼主分享,改天试下
发表于 2019-2-22 17:08 | 显示全部楼层
如果主函数中循环不够快,就可能会出现rcs_left和rcs_right都是1或者转的快但是程序累计慢的情况
发表于 2019-2-22 21:36 来自手机 | 显示全部楼层
只用过ec11和ec12型号,两种的行为模式不一样,仅供参考。

点评

EC11将中断方式改为下降沿触发,其他不变。EC12直接用这个代码.  详情 回复 发表于 2019-2-27 09:55
发表于 2019-2-23 21:29 | 显示全部楼层
请教arduino uno能不能用这个?

点评

代码恐怕不能直接移植,但原理是相同的,修改一下就能用  详情 回复 发表于 2019-2-27 09:53
 楼主| 发表于 2019-2-27 09:53 | 显示全部楼层
duanyz 发表于 2019-2-23 21:29
请教arduino uno能不能用这个?

代码恐怕不能直接移植,但原理是相同的,修改一下就能用
 楼主| 发表于 2019-2-27 09:55 | 显示全部楼层
lazymike 发表于 2019-2-22 21:36
只用过ec11和ec12型号,两种的行为模式不一样,仅供参考。

EC11将中断方式改为下降沿触发,其他不变。EC12直接用这个代码.
发表于 2019-2-27 10:40 | 显示全部楼层
这种代码 会误发, 尤其是使用过一段时间的编码器.

建议触发后在一段时间内关闭检测 , 比较10毫秒 大多数人一秒钟是转不到100次的~~
发表于 2019-2-28 10:45 | 显示全部楼层
谢谢楼主分享,改天试下
发表于 2019-3-4 11:54 | 显示全部楼层
谢谢楼主分享,改天试下。

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-4-23 20:45 , Processed in 0.068566 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表