搜索
bottom↓
回复: 13

稳定可靠增量EC11程序

[复制链接]

出0入0汤圆

发表于 2014-11-13 11:02:09 | 显示全部楼层 |阅读模式
稳定可靠增量EC11程序
CPU是PIC24FJ64GA006,占用RF4、RF5,其中CN18(RF5)边缘中断,返回全局变量EC11_VAL,用定时器TMR3 计数两个脉冲之间小于5MS就每次加减20,如果调节范围不大可不用定时器。

#define EC11_A  _RF5
#define EC11_B  _RF4

void __attribute__((__interrupt__,no_auto_psv)) _CNInterrupt(void)        //外部中断(DS3231,1秒)
{
static uchar m_RF5,int_nu,int_nu1;
extern int EC11_VAL;

  _CNIF=0;

  if(m_RF5!=_RF5)     //CN18(RF5)中断
  
      {
         
         if(EC11_A==0 && EC11_B==0 && int_nu==0)
           {
               int_nu=1;
               TMR3=0;
           }
         if(EC11_A==1 && EC11_B==1 && int_nu==1)
           {
             ++EC11_VAL;
              int_nu=0;
               int_nu1=0;
             if( TMR3<300)   EC11_VAL=EC11_VAL+20; //0.0625*256*300=4800us
            
           }

        if(EC11_A==0 && EC11_B==1 && int_nu1==0)
           {
               int_nu1=1;
                TMR3=0;
           }
         if(EC11_A==1 && EC11_B==0 && int_nu1==1)
           {
             --EC11_VAL;
              int_nu1=0;
              int_nu=0;
               if( TMR3<600)   EC11_VAL=EC11_VAL-20; //0.0625*256*600=9600us
           }
__delay32(4800);  //300Us
     m_RF5=_RF5;
        
      }

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2014-11-13 11:13:32 | 显示全部楼层
本帖最后由 机器人天空 于 2014-11-13 11:27 编辑

mark学习一下楼主的中断方式,以前普通IO口每秒读取一次也不会漏检
http://www.amobbs.com/thread-5550656-1-1.html

出0入0汤圆

 楼主| 发表于 2014-11-13 11:32:41 | 显示全部楼层
机器人天空 发表于 2014-11-13 11:13
mark学习一下楼主的中断方式,以前普通IO口每秒读取一次也不会漏检
http://www.amobbs.com/thread-5550656- ...

中断好,不用时不占用CPU。

出0入0汤圆

发表于 2014-11-13 11:42:11 | 显示全部楼层
楼主你的是上升沿下降沿一起触发,还是其中一种?

出0入0汤圆

发表于 2014-11-13 11:50:15 | 显示全部楼层
能否说下你的思路,还是有点看不明白,我的做法是顺时针:AB=11,01,00,10;逆时针:AB=11,10,00,01通过判断测试用0010、0001来识别

出0入0汤圆

 楼主| 发表于 2014-11-13 11:54:07 | 显示全部楼层
本帖最后由 lyl3257 于 2014-11-13 12:01 编辑
wwwdege 发表于 2014-11-13 11:42
楼主你的是上升沿下降沿一起触发,还是其中一种?


只中断一相,上升沿下降沿都中断,另一相中断后读取,最好用示波器或逻辑分析仪看一下,中断的前沿有不规则的抖动。倒数第二句延时就是消抖动的(不让进来的太快)

出0入0汤圆

发表于 2014-11-13 12:02:18 | 显示全部楼层
我有20个EC11 要读取     问LZ的程序怎么使

出0入0汤圆

 楼主| 发表于 2014-11-13 12:04:58 | 显示全部楼层
RAMILE 发表于 2014-11-13 12:02
我有20个EC11 要读取     问LZ的程序怎么使

一样用中断只是要40个CPU退

出0入0汤圆

发表于 2014-11-13 12:06:58 | 显示全部楼层
lyl3257 发表于 2014-11-13 12:04
一样用中断只是要40个CPU退

没有这么多io中断,何解

出0入0汤圆

发表于 2014-11-13 12:09:40 | 显示全部楼层
学习一下

出0入0汤圆

 楼主| 发表于 2014-11-13 12:09:46 | 显示全部楼层
RAMILE 发表于 2014-11-13 12:06
没有这么多io中断,何解

IO扩张啊,如PCF8574T

出0入0汤圆

发表于 2014-11-13 12:27:17 | 显示全部楼层
lyl3257 发表于 2014-11-13 11:32
中断好,不用时不占用CPU。

是的,以后用你这种方法

出0入0汤圆

发表于 2014-11-13 13:31:54 | 显示全部楼层
lyl3257 发表于 2014-11-13 11:54
只中断一相,上升沿下降沿都中断,另一相中断后读取,最好用示波器或逻辑分析仪看一下,中断的前沿有不规 ...

嗯 谢谢 我试一下你的方法        

出0入0汤圆

发表于 2014-11-13 13:41:30 | 显示全部楼层
谢谢分享!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-16 16:46

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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