首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[求助]还是关于实时中断的问题

[求助]还是关于实时中断的问题

我的代码是这样的:


#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()循环,也就是说程序下载是没有问题的,那为什么中断不能正常进入呢?请大家给出出主意,看看问题可能出在什么地方,先谢谢斑竹和大家了

程序进不了中断,那停在哪里了呢?你的板子的晶振是多少?
海纳百川  有容乃大
晶振是25M的,程序运行跳出后,汇编窗口显示为:0000 BGND
最奇怪的是,我如果把for()循环中的EnableInterrupts注释掉,程序就能正确进入main中的for无限循环,是不是在清I位的时候打开了什么别的东西啊?
是不是进入了外部中断?可以写一个外部中断的中断服务程序,看程序是否跳进去了。
海纳百川  有容乃大
呵呵,问题解决了,自己做的板子cpu的IRQ管脚接了一个反馈,结果在初始化的时候没有把IRQ中断屏蔽掉,造成EnableInterrupts后,程序跳到IRQ中断里面,结果IRQ又没有定义中断服务例程,造成程序跑非了,大家以后要小心了。谢谢斑竹的帮助
返回列表