智能车制作

标题: XS128 IRQ中断问题 [打印本页]

作者: vic_hong    时间: 2009-12-5 14:30
标题: XS128 IRQ中断问题
我们用IRQ采集场中断,用codewarrier在线调试时没有问题,但是一旦复位单片机,单独运行时就有问题了,表现为PORTB的变化很慢,应该是程序某处卡死,此时若IRQ端不接入脉冲,则恢复正常,即PORTB约1s变化一次;关闭IRQ的中断也可以消除。可以排除程序其它地方的影响。在硬件上,我们直接用最小系统版来调试,也更换过最小系统版,应该不是硬件问题。若用其他中断则没有这种问题。
    IRQ初始化:
     IRQCR_IRQEN =1; //中断使能
     IRQCR_IRQE=1;    //下降沿触发

     /*****************IRQ中断(场中断)********************/
   #pragma CODE_SEG __NEAR_SEG NON_BANKED
   void interrupt 6 IRQInterrupt(void)   //下降沿
   {  
     //执行的程序
   }

   在main 函数的for循环中加入测试语句
    for(;;)
  {     
          PORTB=~PORTB;
         delay(1000);//正常情况下约1s
  }
作者: 835304205    时间: 2009-12-5 14:30
IRQCR_IRQEN =1; //中断使能
IRQCR_IRQE=1;    //下降沿触发我遇到过郁闷很久,顺序错了,改一下就OK啦
IRQCR_IRQE=1;    //下降沿触发
IRQCR_IRQEN =1; //中断使能
because。。。
作者: 新兴MCU    时间: 2009-12-5 15:34
不给源代码我怎么帮你分析啊~~~~晕~
作者: whut_wj    时间: 2009-12-5 16:30
我记得,IRQ没有中断标志,就不需要清标志位了。
把IRQ信号做好滤波工作。看是不是由于IRQ引起单片机复位了。
作者: vic_hong    时间: 2009-12-5 23:19
回复 2# 新兴MCU
呵呵,不好意思啊。我奇怪的是为什么在线调试时可以,一旦单片机单独运行时就不行了。。其他的程序我大部分都屏蔽掉了,就我的测试来说关键就在IRQ上。
作者: vic_hong    时间: 2009-12-5 23:19
回复 3# whut_wj
   怎么解释用BDM在线调试时可以,但是单独运行时不行呢?
作者: zhshuai1    时间: 2010-6-11 00:12
师兄说的果然有道理~~~
作者: 静之音    时间: 2010-6-11 02:22
源代码
作者: 835304205    时间: 2011-11-16 21:23
其实原因很简单以为那个寄存器在一般模式下只能写一次!!!
作者: vic_hong    时间: 2011-11-16 23:09
回复 9# 835304205


    犀利。。2年前的问题终于有人来解答了,那还是我们队刚刚开始学习摄像头的时候。我之后改用其他口中断就没管过了。现在也不好试了,不过相信你是对的。
作者: 风云变幻    时间: 2012-3-10 18:20
请问这个问题怎样解决啊。。。。我也遇到这个问题啊。。悲剧啊。。。。请大侠救命啊。。。上面的方法试过啦。。。。




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2