请问各位,AD值在打开锁项环时为什么不稳定?偶尔会相差很大,用的是10位精度。不使用锁项环倍频时,AD值就比较稳定。 #include <hidef.h> /* common defines and macros */ #include <mc9s12xdt256.h> /* derivative information */ #pragma LINK_INFO DERIVATIVE "mc9s12xdt256" unsigned int j; void PLL_Init(void)//锁相环初始化 { SYNR=3; REFDV=1; while(!(CRGFLG_LOCK)){ }//等待时钟频率稳定 CLKSEL=0x80; //PLL使能 } //晶振频率=4MHZ //锁相环频率PLL_CLOCK=2*晶振频率*(SYNR+1)/(REFDV+1)=16MHZ //该处就等于4倍晶振频率 //总线频率 Busclock=PLL_CLOCK/2=8MHz void AD_Init(void) //初始化 { ATD0CTL2=0xC0; // AD模块上电, 快速清零, 无等待模式, 禁止外部触发, 中断禁止 ATD0CTL3=0x08; //转换序列长度为1, FIFO=0, Freeze模式下继续转换 ATD0CTL4=0x63; // 10位精度, 16个ATD时钟, ATDClock=[BusClock*0.5]/[PRS+1]=1MHZ ; PRS=3,divide=8 ATD0CTL5=0xa1; //右对齐无符号,连续转换,单通道采样,通道1 ATD0DIEN=0x00; // 禁止数字输入 } void main(void) { PLL_Init(); AD_Init(); while(1) { while(!(ATD0STAT1_CCF0)) { }//等待转换完成 j=ATD0DR0; //取值 } } |