Board logo

标题: [求助]还是关于实时中断的问题 [打印本页]

作者: sijiaoshe008    时间: 2006-10-17 18:28     标题: [求助]还是关于实时中断的问题

我的代码是这样的:


#pragma CODE_SEG __NEAR_SEG NON_BANKED
interrupt void RTI_ISR(void) {
  absoluteTime++;
  Test_IO();
  TaskFlag=1;
  /* clear RTIF bit */
  CRGFLG = 0x80;
  
}



void main(void) {
  /* put your own code here */
  DDRB=0xFF;
 
  absoluteTime=0;
  RTICTL=0x1F;
  CRGINT=0x80;
 
  EnableInterrupts;
  for (;;){
   
    while(!TaskFlag){}
    TaskFlag=0;


  }
 
 
}


在买的开发板上都能正确运行,可是在自己做的板子上,就死活进不了中断,当我把main()里面的EnableInterrupts注释掉之后,程序倒是可以进入main()中的for()循环,也就是说程序下载是没有问题的,那为什么中断不能正常进入呢?请大家给出出主意,看看问题可能出在什么地方,先谢谢斑竹和大家了


作者: strongchen    时间: 2006-10-18 09:55

程序进不了中断,那停在哪里了呢?你的板子的晶振是多少?
作者: sijiaoshe008    时间: 2006-10-18 10:51

晶振是25M的,程序运行跳出后,汇编窗口显示为:0000 BGND
最奇怪的是,我如果把for()循环中的EnableInterrupts注释掉,程序就能正确进入main中的for无限循环,是不是在清I位的时候打开了什么别的东西啊?
作者: strongchen    时间: 2006-10-18 14:10

是不是进入了外部中断?可以写一个外部中断的中断服务程序,看程序是否跳进去了。
作者: sijiaoshe008    时间: 2006-10-19 12:33

呵呵,问题解决了,自己做的板子cpu的IRQ管脚接了一个反馈,结果在初始化的时候没有把IRQ中断屏蔽掉,造成EnableInterrupts后,程序跳到IRQ中断里面,结果IRQ又没有定义中断服务例程,造成程序跑非了,大家以后要小心了。谢谢斑竹的帮助




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0