打印

请教:AVR mega8 在INT0中断内读取TWI的问题

[复制链接]
1876|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
KaiXuan|  楼主 | 2010-12-10 00:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,请教个问题
我用CH452做显示及按键功能,需要在INT0的中断内频繁读取按键值,在中断内我做了一个试验性的代码
SIGNAL(SIG_INTERRUPT0)
{
uchar Exit=1;
  while(Exit)
   {
   
    if((PIND&0x04)==0)
    {

     if(twi_readBtye()==0x00)
     {
     i++;
      SET_T_dis(i);
     }
     if(twi_readBtye()==0x18)
     {
     i--;
      SET_T_dis(i);
     }
         
     }
   }
问题是只能在第一次进入中断时能正确读出twi_readBtye(),接着就什么也读不出了。如果在程序运行中能够离开中断,且再一次进入中断时也可以正常读出twi_readBtye(),难道TWI与INT0之间有冲突?但是这个项目不能在操作按键时频繁离开中断。有望高手给予指教,不胜感激。





}

相关帖子

沙发
airwill| | 2010-12-10 12:45 | 只看该作者
会不会是你使能了 twi 的中断, 而又没有写 twi 的中断服务?

详细分析一下:
  SET_T_dis(i);
特别是: twi_readBtye();   

这两个函数的实现过程.

使用特权

评论回复
板凳
KaiXuan|  楼主 | 2010-12-10 20:18 | 只看该作者
感谢您的回复
我检查了所有的寄存器,并不存在使能twi中断而又没有使用的问题

使用特权

评论回复
地板
928315| | 2010-12-12 12:32 | 只看该作者
楼主几个地方发帖子哈。。。

按键消抖吧。估计的你按键的时候,外部中断都发生很多次了。
可以用串口打印出来,看是否是正确,或者用IO口代表按键。。

使用特权

评论回复
5
928315| | 2010-12-14 12:04 | 只看该作者
楼主,是否搞定?出来说以下啥。。。。

使用特权

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

本版积分规则

0

主题

14

帖子

0

粉丝