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

[求助]奇怪,为啥中断都不好使???

好像有时候连不上,有时又好了。
海纳百川  有容乃大
老大,我的Projet在你那里怎么样?能正常运行吗???中断好使吗?
加油
你发给我之后要发个帖子说一声,我不是一直去看那个信箱的。我试试看,然后再告诉你结果。
海纳百川  有容乃大
这样啊~~~明白了,呵呵
:D
加油
我看过了你的程序。主要问题是对TOF清零应该是对TFLG2_TOF写1,而不是写0;另外,对TCNT的写操作是无效的。我把改过的程序下载到DP256的EVB上,可以看到程序可以正确运行,LED在闪烁。由于电路板的原因,我将LED口改为了PORTB_BIT0。下面是我修改过的程序:

#pragma CODE_SEG __NEAR_SEG NON_BANKED

interrupt void Int_TimerOverFlow(void){

TFLG2_TOF = 1; //clear timer overflow flag
time_count++;
if (time_count>2) {time_count=0;flag=~flag;}
}

#pragma CODE_SEG DEFAULT

void PORT_Init(void){
DDRB=0x01;
PORTB_BIT0=0; //µÆÁÁ
}

void ECT_Init(void)
{
COPCTL_CR=0;//¹Ø±Õ¿´ÃŹ·.COP(×ÔÓÉÔËÐп´ÃŹ·¶¨Ê±Æ÷)¿ØÖƼĴæÆ÷

TSCR1_TEN=0; //Í£Ö¹¶¨Ê±Æ÷
// TSCR2_TCRE=1;//¶¨Ê±Æ÷¸´Î»
TSCR2_PR = 4; //prescale factor is 16, bus clock/128=8Mhz/8
TSCR2_TOI = 1; //timer overflow interrupt enable
//TCNT = 0x0040;
TSCR1_TEN = 1; //timer enable

}

void main(void) {

PORT_Init();

ECT_Init();
EnableInterrupts;


while(1){

if(flag==0){
DDRB=0x01;
PORTB_BIT0=0;//µÆÁÁ
}
else{
DDRB=0x01;
PORTB_BIT0=1;//µÆÃð
}

}

}
海纳百川  有容乃大

还是不行,我上传了我下载程序后调试窗口的截图,显示表明:下载程序并运行程序之后,汇编代码窗口中,总是从程序开始段(C01E),突然跑到起始处(0000),而且Data1窗口中的变量以及寄存器也没有了,一片空白,这是什么原因呢???

这个界面的程序不是我给您传的Project中的程序,不过截图的现象都是一样的。

只有采用了中断的程序是这个情况,不用中断时正常(软件仿真时所有程序都正常)。

运行前:
[upload=image/pjpeg]uploadImages/运行前.jpg[/upload]

 

运行后:
[upload=image/pjpeg]uploadImages/运行后.jpg[/upload]

[此贴子已经被作者于2006-10-23 11:34:22编辑过]

[此贴子已经被作者于2006-10-23 11:40:27编辑过]

加油
检查一下外部中断的引脚。也可以写一个外部中断的中断服务程序,看看程序是否跳入了外部中断。
海纳百川  有容乃大
回斑竹,测过了,没有进入中断
现在只要有中断程序,下载运行后就都是一个现象(就是我贴图中的现象)
软件仿真中都好用。
会不会是硬件的毛病???
加油
你只有一块板子吗?有没有把我的程序下载到你的板子上试过?
海纳百川  有容乃大
恩,只做了一块板子,我下载的就是斑竹您给我修改的程序。
多谢您了,我再好好查查原因吧
已经卡在这里很长时间了......

另外,斑竹,DP256中,MSCAN发送CAN消息的命令是在哪个寄存器中???
我看过Freescale的例子,是不是缓冲区一满就自动发送???
加油
DP256中,MSCAN发送CAN消息的命令是在哪个寄存器中???
我看过Freescale的例子,是不是缓冲区一满就自动发送???
加油
返回列表