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

[求助]MDC定时功能

[求助]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中断,请问这是什么原因?


 

妞,我一无所有,你何时跟我走?
MDC的中断向量是否是25?
妞,我一无所有,你何时跟我走?
MDC的中断矢量号应该是26吧。其实,如果你不能确定中断号,最好采用在PRM文件中申明的格式,式如:

VECTOR ADDRESS OxFFCA MCCNT_ISR

此时在程序中中断矢量就不必写标号了:

void interrupt MCCNT_ISR(void)
{
...
}
海纳百川  有容乃大
OxFFCA??
我在《motorola 68HC12系列微控制器原理、应用与开发技术》中看到中断矢量是FFCC-FFCD
因为没有专门针对S12系列的书,只好拿HC12当做参考了,难道是书上错了?
请问斑竹有没有S12系列的书推荐?
另外,感觉freescale在产品推广方面做得很差,连一些基本功能的参考程序都没有,中电网能不能在这方面做些工作,把一些最基本的功能程序发布出来,这样大家学习起来有个参考,对推广freescale也有好处啊!
妞,我一无所有,你何时跟我走?
不同芯片的中断矢量是不一样的,要看芯片各自的数据手册。
飞思卡尔在文档和资料方面做得还是不错的。你到D64的主页上,可以看到很多的参考文档,包括源程序。另外,CodeWarrior本身也带了很多参考代码。用CodeWarrior的PE,还能自动生成C代码。D64主页的链接是:

http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MC9S12D64&nodeId=0162468636K1002065
海纳百川  有容乃大
改成26以后还是不能进入,调试的时候MCCNT的值一直为65536.
似乎计数器没有自动减一.
另,模数常数计数器的英文是什么?书上有介绍这个积存器但是没有写出它的英文名字
妞,我一无所有,你何时跟我走?
请参看S12ECT16B8V1.pdf的第42页。
海纳百川  有容乃大
当然进不了中断,MDC计数根本就没有开!
在(
MCCTL_MCZI =1; //允许中断

之后加MCCTL_MCEN =1; //允许计数
返回列表