Board logo

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

作者: sijiaoshe008    时间: 2006-10-16 18:50     标题: [求助]关于实时中断响应的问题

大家好,我现在遇到一个问题,搞了好几天了还是一头雾水,请各位帮帮忙,尤其是斑竹,
一定要给看看阿:我用的是DP256B、Multilink仿真器以及P&E的开发板,我在开发板上调
试实时中断的时候,不知道为什么,实时中断只执行了一次,主程序就跳出了。按我的理解,
设置了实时中断溢出周期(比如16.392ms)、使能实时中断,在定时器溢出时触发实时中断服务例程;
实时中断服务例程执行完之后(我的那个例程里就作了个加法,应该不会超过实时中断溢出周期的时间)
,返回主程序的for无限循环,直到下一次实时中断服务例程被触发,那么实时中断的执行应该是无限
的,可我的那个怎么进去一次就跳出来了呢?实在是不明白,请各大侠帮忙给看看,谢谢了
作者: strongchen    时间: 2006-10-17 09:50

把你的程序贴出来看看。
作者: sijiaoshe008    时间: 2006-10-17 10:57

好的,其实程序很简单,
主程序:
void main(void) {
/* put your own code here */
// TaskFlag=1;

Initial();

for(;;) {

EnableInterrupts;
// wait(5000) ;

// RtiCntttt++;

// while (!TaskFlag){}
// TaskFlag=0;

} /* wait forever */
/* please make sure that you never leave this function */
}
中断服务例程:
#pragma CODE_SEG NON_BANKED
void RealTime_INT(void){
//清实时中断标志位
// CRGFLG&=CRGFLG_RTIF_MASK;
CRGFLG_RTIF=1;

//读取TCNT计数值
RTITCNT=TCNT;


//关闭实时中断
// CRGINT&=0xFF-CRGINT_RTIE_MASK;
// CRGINT_RTIE=0;

// TaskFlag=1;
// RtiCntttt= RtiCntttt+1;

// for(;;){
MLCNTR++;

// Test_IO();
// }


//使能实时中断
// CRGINT|=CRGINT_RTIE_MASK;
// CRGINT_RTIE= 1;


// EnableInterrupts;

// DisableInterrupts;

}


作者: sijiaoshe008    时间: 2006-10-17 11:01

程序跳出之后,dbug显示程序停在
#ifndef __ONLY_INIT_SP
Init(); /* zero out, copy down, call constructors */
#endif
中的Init()这个位置,这是不是因为我在中断服务例程中没有初始化堆栈指针造成的,如果是这样,能不能给说一下堆栈指针如何初始化,帮帮忙啊斑竹,谢谢了
作者: strongchen    时间: 2006-10-17 14:32

还是看不大明白。把整个project打包贴出来,或是发到我的信箱:
strongchen_free@yahoo.com.cn
作者: sijiaoshe008    时间: 2006-10-17 15:47

呵呵,斑竹,我可能已经找到问题出在什么地方了,我再收拾一下,等解决问题了,我就写点东西出来,免得大家再和我一样走弯路
作者: sijiaoshe008    时间: 2006-10-17 18:22

问题解决了,程序是这样:
主程序:
void main(void) {
/* put your own code here */
DDRB=0xFF;

absoluteTime=0;
RTICTL=0x1F;
CRGINT=0x80;

EnableInterrupts;
for (;;){

while(!TaskFlag){}
TaskFlag=0;

}


}
中断服务历程:
#pragma CODE_SEG __NEAR_SEG NON_BANKED
interrupt void RTI_ISR(void) {
absoluteTime++;
Test_IO();
TaskFlag=1;
/* clear RTIF bit */
CRGFLG = 0x80;

}
TestIO()的功能是完成PORTB端口的LED闪烁,在开发板上可以运行




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