关于指令和晶振的关系

楼主
关于指令和晶振的关系
最近做msp430F123的slope比较器的实验,利用阻容充电的方式,比较器一端接固定电压,一端接阻容振荡电路,程序如下:
void ReadAI(void)
{
 
  CACTL1 = CAON;                 //使能比较器
  CACTL2 = P2CA0+P2CA1+CAF;      //接通CA0,CA1,输出滤波器,CAOUT
 
  CAPD = 0x1C;
  P2DIR = 0x04;            //P2.0,1 output
  P1OUT|=BIT0;
  t=0;  
  while(!(CAOUT & CACTL2) & t<65535)
  {
    t++;
  }

  P1OUT=0;
 for(i=65535;i>0;i--);
  CACTL1 = 0x00;               //Disable Comp_A
}
原理是:P1OUT|=BIT0时充电开始,当达到比较器另一端的固定电压,CAOUT输出,t++停止。
但是有一件事很迷惑,就是刚开始使用的ACLK(Xin和Xout接)32768Hz的晶振,测得t得5000多,但是晶振换为3M后测得的t的值也是5000多,按道理说t值应该大很多才是啊。。。请问这是什么原因,还是我哪里出错了,希望大家指点。
1楼
当T++时是CPU在执行一个加法动作,首先要知道这个加法指令所占用多少个MCLK时钟。那么这个MCLK则时钟寄存器选择。
使用不同MCLK时钟源的前提就是选择MCLK是否正确。在充电时间不变的情况下只有时钟源不同,才会影响到CPU执行加法的次数。
2楼
谢谢DC的回答,你的意思是说T++只与MCLK时钟有关吗?我是不是该把MCLK的时钟源选为3M的时候为SELM的值=2,32768的时候为SELM的值=3,这样就可以了吗?
3楼
DC同志,我在程序里把BSCTL2寄存器里的SELM的值=3了,也就是MCLK选择了低速晶体振荡器,但是这个t的值还是没怎么变化啊。。。这是什么原因呢?帮帮忙了,很困惑。
4楼
[QUOTE][B]下面引用由[U]DC[/U]发表的内容:[/B]

当T++时是CPU在执行一个加法动作,首先要知道这个加法指令所占用多少个MCLK时钟。那么这个MCLK则时钟寄存器选择。
使用不同MCLK时钟源的前提就是选择MCLK是否正确。在充电时间不变的情况下...[/QUOTE]
DC收到请回话!

电脑版 Page created in 0.1719 seconds width 3 queries.