打印

mega88外部中断问题

[复制链接]
2547|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
夏日飞鹰|  楼主 | 2011-9-18 09:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用mega88的外部中断0口作为时钟线,在下降沿触发外部中断0并由数据线读取串行数据,脉冲周期60微秒,一共6个字节,48位数据,结果只能读到20~30个,而且还不稳定,硬件已测试,脉冲质量及数量没有问题,这是为什么呢?

相关帖子

沙发
NE5532| | 2011-9-18 09:53 | 只看该作者
可能是中断响应不过来或者数据线上的信号质量问题,还可能是采样点的问题。

楼主的原理没有错,这样来调这个程序

首先拿个端口,每次进INT中断就取反一次,观察这个端口能否被取反48次
再者在每位读时候取反端口,双踪观察采样点是否在数据的中点上

另外提醒这种协议要注意容错,否则被一个脉冲干扰了,后面永远都不对。

使用特权

评论回复
板凳
夏日飞鹰|  楼主 | 2011-9-19 21:00 | 只看该作者
按照LS老师的指点,做了如下最简单的程序,可仍然只能数14或15个脉冲,真不知是不是什么地方设置不对,请大家指点,谢谢了!
SIGNAL(SIG_INTERRUPT0)//外部中断0,用来数脉冲,最后在主程序里显示出脉冲数
  {
     count=count+1;
    seg_l=count/10;
    seg_r=count%10;
  }
SIGNAL(PCINT0_vect)//电平变化中断,当变为低电平时启动外部中断0,开始数脉冲,否则就关断中断并脉冲清零
   {
   if((PINB|(~CHIP1))==(~CHIP1))
     {
      EIMSK=0x01;         
     }
   else
   {
      EIMSK=0x00;
      count=0;
   }
   }

使用特权

评论回复
地板
NE5532| | 2011-9-19 21:59 | 只看该作者
按我说的取反端口来做,不要用你的程序,一个事情弄复杂了以后你无法掌控。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

35

主题

239

帖子

0

粉丝