Board logo

标题: 急!时钟频率变慢,感觉PLL失效 [打印本页]

作者: kf.beyond    时间: 2009-6-4 21:10     标题: 急!时钟频率变慢,感觉PLL失效

片子是9S12XDT256。现象是烧完程序后,程序运行时钟明显变慢。PLL是二倍频,发现程序跑起来慢了一半,像是PLL没工作。但重新上电后,又正常运行且没再现这现象。请问有高人遇到过此类问题么,请不吝指点啊。
^.^

作者: chiusir    时间: 2009-6-4 23:51

要多高频率啊?这个具体函数我已经在自己设计的开发板上多次使用,直接调用或者略加修改即可:

void SetBusCLK_40M(void)
{
CLKSEL=0X00; //disengage PLL to system
PLLCTL_PLLON=1; //turn on PLL
SYNR=9;
REFDV=3; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=80MHz;
_asm(nop); //BUS CLOCK=40M
_asm(nop);
while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;
CLKSEL_PLLSEL =1; //engage PLL to system;
}


作者: kf.beyond    时间: 2009-6-7 02:03

谢谢chiusir,我并不是不能正常倍频,而是多数情况PLL都能按要求设置2倍频运行,但在极少数情况下(多发生在刚烧完程序第一次运行时),主机工作频率出现不正常(仿佛PLL没打开),但只要重新上电后,就一切都OK了。且很少再出问题。我PLL的设置程序和你写的差不多,就第一句 “CLKSEL = 0x00;”没有写,难道问题就出在这么?
作者: strongchen    时间: 2009-6-9 11:38

应该还是外部时钟电路工作不稳定引起的。
作者: geweilin    时间: 2009-6-10 10:38

请等待PLL时钟稳定后,再切换。


作者: wangnan16    时间: 2009-6-17 01:30

好久没玩xd了,今天调试遇到了同样问题,程序死在

while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;
过不去了,晕!真的是外部时钟电路有问题吗?怎么同样PCB另外一块一直正常。明天再仔细查查!


作者: chiusir    时间: 2009-6-20 21:30

Everything is possiable!


作者: SZLucian    时间: 2010-12-25 09:50

相同问题,谢谢解答




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