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

中断

中断

目的:产生600Hz的RTI中断,并用LED每秒闪一次来测试该中断.


我用的是9S12xdp512,外部晶振频率8M.


为什么进不去中断?


有人愿意留下邮箱吗?我说不大清楚,可以发project过去.

对不起..
http://bbs.eccn.com/uploadImages/xdp512_1130.rar

这是PROJECT..
请帮忙看下,最好能发还正确的,指正错误,谢谢

邮箱:mmanyy@sina.com
MSN:mmanyy@hotmail.com
QQ:277728518
对不起..
你修改了datapage.c文件吗?在我这里编译无法通过。
海纳百川  有容乃大
没修改啊,在我这里编译是可以,烧录也正常啊,就是中断进不去.
对不起..
请问strongchen,现在还是无法编译通过吗?报错?
我用的也是CW4.5啊..
对不起..
是的,无法编译通过。请你用引导(wizard)重新建一个project,不要改动任何文件,只把你的源程序拷进source文件夹,再试试。
海纳百川  有容乃大
这两天改了下,中断可以进去了,灯也可以闪,但是跟我想得到的RTI中断频率有很大的出入,就是本来我想得到的是600Hz的中断,但是按灯闪计算出来的是300KHz左右.
后来又发现,本来是通过RTICTL这个寄存器来配置分频的,但是现在对它的改动不影响灯闪烁的频率.说明根本就没有按照我做的那样分频.
还有,好象我的中断函数这样写有很大问题,虽然是可以记数的,但是要占用很长时间.怎么样用toggle来写这段600次反转LED的代码呢?COM好象不是按位反转.汇编指令里有按位反转的吗?或者有其他什么办法来反转?http://bbs.eccn.com/uploadImages/xdp512_1215.rar
对不起..
你的晶振是多少?把你的分频方法列出来看看。你是想怎样得到600Hz的中断的?
海纳百川  有容乃大
晶振是8M的,想产生600Hz的RTI中断.这样分频的:
void main(void) {
disableRTI();
disableInterrupt();
initMCU();
enableInterrupt();
enableRTI();
while(1)
{ }
}
static void initMCU(void)
{
#ifdef OSCILLATOR_PREQUENCY
CLKSEL_PLLSEL = 0; // make sure PLL is *not* in use;
PLLCTL_PLLON = 1;
PLLCTL_AUTO = 1; // enable PLL module, Auto Mode;
#if OSCILLATOR_PREQUENCY == 8
REFDV = 0; // set up Reference Divider;
SYNR = 2; // set up Synthesizer Multiplier; PLLCLK=48..
setRTIInterval(0x1C); // make sure RTI timeout period is 5/3 ms;
#elif OSCILLATOR_PREQUENCY == 16
REFDV = 1; // set up Reference Divider;
SYNR = 2; // set up Synthesizer Multiplier;
setRTIInterval(0x2C); // make sure RTI timeout period is 5/3 mS;
#endif
while ((CRGFLG & 0x08) == 0x00); // wait until PLL is locked;
CLKSEL_PLLSEL = 1; // switch over to PLL clock;
#endif
return;
}
对不起..
setRTIInterval(0x1C)具体是什么?
海纳百川  有容乃大
#define setRTIInterval(x) {\
*(volatile unsigned char *)0x003B = (unsigned char)x;\
}

0x003B就是寄存器RTICTL的地址,是用来配置分频倍数的,为1C的时候分频倍数为13*2e10,因为RTI中断的来源为OSC,所以这样用8M除以13*2e10,得到约601Hz.
对不起..
对不起,刚才表示错了,2e10在上面的意思就是2的10次方
对不起..
看起来你的分频计算方法没错,不知问题出在哪里。建议你重新安装一下最新版本的CodeWarrior试试。
海纳百川  有容乃大
返回列表