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

为什么我用S12的ECT的输出比较来定时时无法产生中断[求助]

为什么我用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


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

中断服务程序的入口要放在非分页地址中。
海纳百川  有容乃大
今天发现如果不使用累加器的时钟PACLK(即上面程序PACTL_PAEN=1改为=0,使用预分频器TSRC2=0X02)则能顺利进入中断。
请问是不是输出比较只能用预分频器,不能用累加器的时钟?还是我的设置有问题
要知道PCTAL_PAEN=1并非只是选择时钟,它打开了16位脉冲累加器的功能,还要有相应的输入信号。
海纳百川  有容乃大
斑竹: 如上面的程序所示,除了用PCTAL_PAEN选择了时钟外,同时也用CLK0与CLK1位设置了分频率。这样的话TCNT的周期不是应该已经脱离预分频器的控制而采用PACLK作为COUNTER?
可是你现在的设置是CLK0=0,CLK1=1,也就是采用PACLK/256作为时钟源。PACLK是哪里来的?
海纳百川  有容乃大
谢谢斑竹指点
但还是不大懂。PACLK不是为P时钟频率的1/64, 而P时钟频率不是1/2的总线周期吗?(这是我一开始形成的概念,不知是不是一开始就记错)
所以希望斑竹能把这问题说白点 无限感激!!!!
PCLK和PACLK是不一样的,仔细看看数据手册吧。
海纳百川  有容乃大
返回列表