Board logo

标题: 为什么我用S12的ECT的输出比较来定时时无法产生中断[求助] [打印本页]

作者: mickeyduck    时间: 2006-7-19 00:02     标题: 为什么我用S12的ECT的输出比较来定时时无法产生中断[求助]

void main(void)    {                 
  PACTL_PAEN=1;   //使用预分频器
  PACTL_CLK1=1;   //Set Clock counter 
  PACTL_CLK0=0;   //使TCNT的周期为2ms
  TIOS_IOS4=1;   //端口4为输出比较作用
  TIE_C4I=1;  //允许输入捕捉端口4产生中断
  TC4=400;
  TSCR1= 0x90; /* enable timer TCNT FAST CLEAR FLAT */
  TSCR2 = 0x00; 
  EnableInterrupts;   //开中断
  for(;;);


}


interrupt void C4I_ISR (void){
  DisableInterrupts;
  TC4+=400;
  EnableInterrupts;
}


已经在prm文件中加入向量语句


VECTOR ADDRESS 0xFFE6 C4I_ISR


我通过在中断服务程序中加入一些标志,确定了程序没有进入中断服务程序。请问是什么原因呢?是不是有什么寄存器还没有设置好?


作者: strongchen    时间: 2006-7-19 09:39

中断服务程序的入口要放在非分页地址中。
作者: mickeyduck    时间: 2006-7-19 11:30

今天发现如果不使用累加器的时钟PACLK(即上面程序PACTL_PAEN=1改为=0,使用预分频器TSRC2=0X02)则能顺利进入中断。
请问是不是输出比较只能用预分频器,不能用累加器的时钟?还是我的设置有问题
作者: strongchen    时间: 2006-7-19 15:51

要知道PCTAL_PAEN=1并非只是选择时钟,它打开了16位脉冲累加器的功能,还要有相应的输入信号。
作者: mickeyduck    时间: 2006-7-19 17:24

斑竹: 如上面的程序所示,除了用PCTAL_PAEN选择了时钟外,同时也用CLK0与CLK1位设置了分频率。这样的话TCNT的周期不是应该已经脱离预分频器的控制而采用PACLK作为COUNTER?
作者: strongchen    时间: 2006-7-20 09:45

可是你现在的设置是CLK0=0,CLK1=1,也就是采用PACLK/256作为时钟源。PACLK是哪里来的?
作者: mickeyduck    时间: 2006-7-20 21:52

谢谢斑竹指点
但还是不大懂。PACLK不是为P时钟频率的1/64, 而P时钟频率不是1/2的总线周期吗?(这是我一开始形成的概念,不知是不是一开始就记错)
所以希望斑竹能把这问题说白点 无限感激!!!!

作者: strongchen    时间: 2006-7-21 09:09

PCLK和PACLK是不一样的,仔细看看数据手册吧。
作者: jshuwku    时间: 2012-7-19 20:18

本帖最后由 jshuwku 于 2012-8-1 13:28 编辑

用S12的ECT的输出比较来定时时彩评测网无法产生中断




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0