标题: [求助]MDC定时功能 [打印本页]
作者: fantaman 时间: 2006-10-12 13:28 标题: [求助]MDC定时功能
请教斑竹一个MDC使用的问题.
我用的是MC9S12D64,程序使用MDC模块实现简单定时功能.程序如下.
/*****************IC中断处理程序***************/
#pragma CODE_SEG NON_BANKED
void interrupt 25 MCCNT_ISR(void)
{
MCFLG_MCZF = 0x80; //清中断标志
MCCNT=250; //初始化MDC
MCCTL_FLMC = 1; //强制加载MDC
}
#pragma CODE_SEG DEFAULT
********************主程序*******************/
void main(void)
{
/* put your own code here */
ICSYS =0X00; //计数值满后回零,禁止保持寄存器,
//队列方式、记录IC时刻主定时器的值。
MCCTL_MCEN =0; //计数器复位
MCCNT=125; //初始化MDC
MCCTL_FLMC =1; //强制加载MDC
MCCTL_MCPR0=1; //
MCCTL_MCPR1=1; //分频系数为16
MCCTL_MODMC=1; //模数计数方式,开始循环计数。
MCCTL_MCZI =1; //允许中断
EnableInterrupts;
for(;;) {} /* wait forever */
/* please make sure that you never leave this function */
}
调试的时候不能进入MDC中断,请问这是什么原因?
作者: fantaman 时间: 2006-10-12 13:30
MDC的中断向量是否是25?
作者: strongchen 时间: 2006-10-12 13:59
MDC的中断矢量号应该是26吧。其实,如果你不能确定中断号,最好采用在PRM文件中申明的格式,式如:
VECTOR ADDRESS OxFFCA MCCNT_ISR
此时在程序中中断矢量就不必写标号了:
void interrupt MCCNT_ISR(void)
{
...
}
作者: fantaman 时间: 2006-10-12 15:01
OxFFCA??
我在《motorola 68HC12系列微控制器原理、应用与开发技术》中看到中断矢量是FFCC-FFCD
因为没有专门针对S12系列的书,只好拿HC12当做参考了,难道是书上错了?
请问斑竹有没有S12系列的书推荐?
另外,感觉freescale在产品推广方面做得很差,连一些基本功能的参考程序都没有,中电网能不能在这方面做些工作,把一些最基本的功能程序发布出来,这样大家学习起来有个参考,对推广freescale也有好处啊!
作者: strongchen 时间: 2006-10-12 15:14
不同芯片的中断矢量是不一样的,要看芯片各自的数据手册。
飞思卡尔在文档和资料方面做得还是不错的。你到D64的主页上,可以看到很多的参考文档,包括源程序。另外,CodeWarrior本身也带了很多参考代码。用CodeWarrior的PE,还能自动生成C代码。D64主页的链接是:
http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MC9S12D64&nodeId=0162468636K1002065
作者: fantaman 时间: 2006-10-12 16:30
改成26以后还是不能进入,调试的时候MCCNT的值一直为65536.
似乎计数器没有自动减一.
另,模数常数计数器的英文是什么?书上有介绍这个积存器但是没有写出它的英文名字
作者: strongchen 时间: 2006-10-12 16:40
请参看S12ECT16B8V1.pdf的第42页。
作者: chftky 时间: 2006-11-14 13:30
当然进不了中断,MDC计数根本就没有开!
在(
MCCTL_MCZI =1; //允许中断
)
之后加MCCTL_MCEN =1; //允许计数
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) |
Powered by Discuz! 7.0.0 |