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

[求助]TIM的自由计数器的溢出中断

[求助]TIM的自由计数器的溢出中断

我用9s12c32,8个TIM口全用为输入捕捉,捕捉中断都是正常的。

  就是自由计数器TCNT的溢出中断总是没有,我用查询的方法,溢出中断标志都产生了!

  溢出中断我也使能了.
正在使用MC9S12DP256和MC9S12C32,学习MC9S12UF32......
 下一步MC9S12NE64...
  中断向量的地址void interrupt 16 TM(void),我有别的中断靠着它,interrupt 20(SCI),22(AD)我都用了,都是正确的啊!
  如果不清中断标志位,它会一直中断下去死循环,不可能不进入中断啊!


[此贴子已经被作者于2005-9-27 10:18:46编辑过]

正在使用MC9S12DP256和MC9S12C32,学习MC9S12UF32......
 下一步MC9S12NE64...
我把程序下载到单片机内,查看FLASH的内容。
  用void interrupt 16 TM(void)时对应的地址是$FFDE,$FFDF,内容也不是FF了,应该是对应了函数!叫standard Timer overflow的中断!
  用17就不对了。
  版主,帮我看看程序可以吗?


[此贴子已经被作者于2005-9-27 12:47:06编辑过]

正在使用MC9S12DP256和MC9S12C32,学习MC9S12UF32......
 下一步MC9S12NE64...
大家有没有用过这个中断的,发表一下你们的意见吗?
    谢谢..................
正在使用MC9S12DP256和MC9S12C32,学习MC9S12UF32......
 下一步MC9S12NE64...
TSCR2寄存器的TOI位我也置1了,我是仔细看了几遍datasheet,实在是没找到问题!
  我也用S12DP256的系统,我也用同样的方法试了,也还是没进入TM中断,我想应该不是硬件的问题!还是要找原因啊...
  谢谢版主的支持,指点...
正在使用MC9S12DP256和MC9S12C32,学习MC9S12UF32......
 下一步MC9S12NE64...
还有一个问题,如果进入中断服务程序时MCU会自动关中断,退出时会自动开中断,
中断嵌套还能够实现吗?
  特别是做嵌入式系统的时候,中断嵌套应该允许吧!
正在使用MC9S12DP256和MC9S12C32,学习MC9S12UF32......
 下一步MC9S12NE64...
上面是一个用DP256调试自由计数器TCNT的溢出中断,那位有时间可以帮我一下,我做的总是不能进入中断程序!
  我开始用S12C32,一直没调通!就换了一个DP256的板子,结果是一样的,还是不能中断程序。DP256的程序在上!
    版主再帮帮我......
正在使用MC9S12DP256和MC9S12C32,学习MC9S12UF32......
 下一步MC9S12NE64...
#include /* common defines and macros */ #include /* derivative information */ #pragma LINK_INFO DERIVATIVE "mc9s12dp256b" //-************************************************************ void init(void) { CLKSEL_PLLSEL=0; // Select clock source from XTAL // INITRG=0; //初始化内部寄存器位置 PLLCTL=0x80; //允许时钟监视 //-***串口设置################################################## SCI0CR2=0x0C; //SCI发送,接收允许 SCI0CR2_RIE=1; //SCI接收中断允许 SCI0BDH=0; // SCI0BDL=25; //8M时钟,4M的总线周期,波特率为9200 //-***定时TIM################################################ TSCR1_TEN=1; //Timer Enable TIE=0xFF; //允许8通道的定时器中断 TSCR2_TOI=1; //TCNT溢出中断允许 TSCR1_TFFCA=0; //快速清除中断标志允许 TSCR2=0x07; //11.0592MHz的晶振,大约1.5S可以 //从0000->FFFF应该有一次TCNT的溢出中断 EnableInterrupts; // enable interrupts // } //-************************************************************* void put_char(char c); void main(void) { //put your own code here // init(); for(;;) { //put_char(0x00); /*while(!TFLG2_TOF); //查询中断标志位是否产生, //我可以查询到每1.5S左右有一次标志位产生 m=TCNT; //清TCNT的溢出标志 put_char(0xCC);*/ } // wait forever } //-*********************************// void put_char(char c) //串口向外发送一个char字符 { while((SCI0SR1&0x80)==0); SCI0DRL=c; } //-***********以下为中断服务程序************************************** #pragma CODE_SEG __NEAR_SEG NON_BANKED ////////自由计数器TCNT的溢出中断//////////////////// void interrupt 16 TM(void){ //我做的实验,这个中断从来没进入执行过 int m; put_char(0xEE); //可以从串口看到进入中断,设断点也可以 m=TCNT; //TSCR1_TFFCA=1快速清除中断标志允许, } //读结果清TCNT的溢出标志 #pragma CODE_SEG default

[此贴子已经被作者于2005-9-29 16:23:52编辑过]

[此贴子已经被作者于2005-9-29 17:48:16编辑过]

正在使用MC9S12DP256和MC9S12C32,学习MC9S12UF32......
 下一步MC9S12NE64...
多谢版主支持,我已经将DP256的project打包发送了!

也谢谢8808beter,我按照你的方法试了,中断向量FFDE指向了,TM中断!


[此贴子已经被作者于2005-10-6 13:57:27编辑过]

正在使用MC9S12DP256和MC9S12C32,学习MC9S12UF32......
 下一步MC9S12NE64...
谢谢支持,能不能把TIM的自由计数器的溢出中断,就是TSCR2_TOI=1;TCNT溢出中断再说的细一点,具体怎么用!
  我试着把HPRIO=DE,就是把TCNT溢出中断设为最高优先级,但是还是没有进入中断!
我的Email:mwm008@eyou.com
    QQ:   415058239    急.....
正在使用MC9S12DP256和MC9S12C32,学习MC9S12UF32......
 下一步MC9S12NE64...
TSCR1_TFFCA=1;才是快速清除中断标志允许,可能是我给你发的之前改了,没改了没改回来。

版主能不能把你改好的程序,发到我的信箱里,我看一下,我还是没搞会!
正在使用MC9S12DP256和MC9S12C32,学习MC9S12UF32......
 下一步MC9S12NE64...
谢谢版主,我终于把这个中断搞好了!
正在使用MC9S12DP256和MC9S12C32,学习MC9S12UF32......
 下一步MC9S12NE64...
原来是我犯的低级错误,谢谢长时间的支持,以后我要多加小心
正在使用MC9S12DP256和MC9S12C32,学习MC9S12UF32......
 下一步MC9S12NE64...
返回列表