YRHeng 发表于 2012-8-10 16:06:47

LGT主时钟分频系数怎么设置?

本帖最后由 YRHeng 于 2012-8-10 16:10 编辑

程序如下:
void McuClkCtrl()
{
   //使用外部晶振
   DDC0_bit=0;   //设置晶振管脚为高阻输入,关闭上拉电阻
   PORTC0_bit=0;
   DDC1_bit=0;
   PORTC1_bit=0;
   PMCR |= (1<<OSCMEN); //使能外部晶振
   delay_ms(1);         //等待外部晶振工作正常
   PMCR |= (1<<EXTMSEL);//使用外部晶振
   PMCR &= ~(1<<RC16MEN); //关闭内部16Mhz RC振荡器
   CLKPR = 0x80;          //使能时钟分频设置
   CLKPR = 0x00;         //设置分频系数为1
}

程序运行结果:
切换到外部晶振,但主时钟分频系数没改变
8M的晶振,本来设置串口波特率为9600,但实测为4800

请问各位前辈,主时钟时钟分频系数怎么设置?已经按文档写的,先把CLKRP 的 CLKPCE位置1,然后再改分频系统数了。

YRHeng 发表于 2012-8-10 16:08:22

使用的编译器是mikroC PRO for AVR

YRHeng 发表于 2012-8-10 16:34:38

问题解决,看了AVR的文档,禁止中断就可以了。。

为避免无意中改变时钟频率,在改变 CLKPS时必须执行一个特殊的写程序:
1. 将时钟预分频器更新使能 (CLKPCE) 置位,并同时将 CLKPR 的其余位清零
2. 在随后的 4 个时钟周期内,将需要的数值写入 CLKPS 并同时将 CLKPCE清零
为保证写操作不被中断,在改变预分频设置时必须禁止中断。
页: [1]
查看完整版本: LGT主时钟分频系数怎么设置?