|
SCI和PWM会冲突,高手们看看这样的程序到底会有什么问题啊?
mlwang_km 大哥,
我看到很多程序都是在返回中断处加开总中断啊,我把程序作了小修改还是不行啊,不过这次运行次数最长有154次,并且有时候出现在通讯中断死了一会后又自动进入中断的现象,真是烦死人啊!
/****************************************************************************
/*****************SVPWM interupt program using T3UPINT***********************
/****************************************************************************/
void interrupt PWMINT()
{
//IFR=IFR|0x0002;//clear the int2 flag
PBDATDIR|=0x0fe80;//测试中断时间
switch(PIVR)
{
case 0x0031:
{
//测试入中断次数
gg++;
if(gg>=10000)
gg=0;
//测试入中断次数
T3CNT=0x0000; //定时器3的计数器重新赋0
EVBIFRA=EVBIFRA&0x0200; break;
}
default:break;
}
PBDATDIR=PBDATDIR&0x0fef7f;//测试中断时间
//enable();
IFR=IFR|0x0002;//clear the int2 flag
return;
}
void interrupt SCIINT()
{
PBDATDIR|=0x0fe02;//测试中断时间
switch(PIVR)
{
case 6:
{
//SCIRXINT();
scir[bagpointer]=SCIRXBUF;
bagpointer++;//接受数据指针
if(bagpointer>=9)
bagpointer=0;
//测试入中断次数
ss++;
if(ss>=10000)
ss=0;
//测试入中断次数
break;
}
default: break;
}
IFR=0x0010; //清除IFR中相应的中断标志
PBDATDIR=PBDATDIR&0x0fefd;//测试中断时间
//enable();
return;
} |
|