Board logo

标题: AD值在打开锁项环时为什么不稳定? [打印本页]

作者: steven211    时间: 2008-5-18 21:45     标题: AD值在打开锁项环时为什么不稳定?

请问各位,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; //取值

}
}


作者: strongchen    时间: 2008-5-19 10:26

用了锁相环之后AD的频率是多少,是否超出了规定的范围?
作者: 康桥人    时间: 2008-5-19 16:15

AD的频度最高是2M,对于MC9S12DG128而言!
作者: steven211    时间: 2008-5-19 22:12

AD的频率是1MHZ啊。我算了。我的晶振是4MHZ。

设置SYNR=3;
REFDV=1;得到BUS_CLOCK是8MHZ,

设置ATD0CTL4=0x63; divide=8后,ATD_CLOCK是1MHZ,没有超过2M啊.并且改变SMP1、SMP2也没效果。但只要关闭锁相环就稳定了。

板子是自己布的。用的是mc9s12xdt256。程序有问题吗?老大请指教,谢谢!


作者: strongchen    时间: 2008-5-20 09:50

你要检测一下PLL是否确实稳定了,总线时钟是否确实是8M?
作者: steven211    时间: 2008-5-20 12:03

如果CRGFLG_LOCK=1,PLL应该就已经稳定了。不过我还没有检查总线频率是否为8M。


作者: strongchen    时间: 2008-5-21 11:54

那还是检查一下。
作者: 康桥人    时间: 2008-5-21 12:11

写一个PWM程序可以测试总路线时钟!
作者: strongchen    时间: 2008-5-21 14:04

检测ECLK的输出就可以了。




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