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

AD值在打开锁项环时为什么不稳定?

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; //取值

}
}

用了锁相环之后AD的频率是多少,是否超出了规定的范围?
海纳百川  有容乃大
AD的频度最高是2M,对于MC9S12DG128而言!
个人BLOG:http://blog.eccn.com/u/107300/index.htm

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

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

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

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

你要检测一下PLL是否确实稳定了,总线时钟是否确实是8M?
海纳百川  有容乃大

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

那还是检查一下。
海纳百川  有容乃大
写一个PWM程序可以测试总路线时钟!
个人BLOG:http://blog.eccn.com/u/107300/index.htm
检测ECLK的输出就可以了。
海纳百川  有容乃大
返回列表