那位老兄用过78F0511,使用外部有源晶振该怎么配置?
我用appliet生成初始化代码不起作用。那位指导下,相关代码如下,晶振是12.8M的#define CG_HISYSTEM_EXT 0xc0 /* X1 as External clock input, X2 as I/O port */
#define CG_OPERATING_OVER10M 0x01 /* 10 MHz < fxh <= 20 MHz */
#define CG_MAINPERI_SYS 0x05 /* fxp = fxh,fprs = fxh */
#define CG_CPUCLOCK 0x07
#define CG_CPUCLOCK_SOURCE 0x10
#define CG_CPUCLOCK_FXP 0x00 /* fcpu = fxp */
void SetClkExt(void)
{
/* Set fxh */
OSCCTL = CG_HISYSTEM_EXT | CG_OPERATING_OVER10M;
MSTOP = 0;
/* Set fprs */
MCM = CG_MAINPERI_SYS;
/* Set frh */
RSTOP = 1;
/* Set fsub */
XTSTART = 0;
/* Set fcpu */
PCC &= (unsigned char)~(CG_CPUCLOCK | CG_CPUCLOCK_SOURCE);
PCC |= CG_CPUCLOCK_FXP;
/* Set frl */
LSRSTOP = 0;
} 使用applite 工具 不用管 很顺手! 多谢2楼回复,我贴的代码就是applite生成的,但实际使用频率慢了很多,反而是有一台机使用晶体的配置可以用外部有源晶振可以工作,另外两台就不工作。 yangsen 发表于 2012-5-5 09:55 static/image/common/back.gif
多谢2楼回复,我贴的代码就是applite生成的,但实际使用频率慢了很多,反而是有一台机使用晶体的配置可以用 ...
用applite生成的代码和楼主一样,都是在system.h和system.c里的。很遗憾帮不上什么忙啦,不知楼主有没有解决这个问题了呀 yumico 发表于 2012-5-8 13:30 static/image/common/back.gif
用applite生成的代码和楼主一样,都是在system.h和system.c里的。很遗憾帮不上什么忙啦,不知楼主有没有 ...
还没有,现在先用能用的板把功能部分调完,回头再整{:sweat:} yangsen 发表于 2012-5-9 08:30 static/image/common/back.gif
还没有,现在先用能用的板把功能部分调完,回头再整
只能先那么整着再说了。。。的确头痛啊 我有在用,不知楼主搞定了没有? 本帖最后由 xiaomaoci 于 2012-6-2 10:50 编辑
公司做产品有用0511,晶振用的是4.19M的陶瓷晶振
小弟不太懂这个怎么配置。
xiaomaoci 发表于 2012-6-2 10:44 static/image/common/back.gif
公司做产品有用0511,晶振用的是4.19M的陶瓷晶振
小弟不太懂这个怎么配置。
...
void SetclkCrystal(void)
{
unsigned char ucTemp1,ucTemp2;
/*------------------------------------------------------------------------------
Initialize the clock generators
------------------------------------------------------------------------------*/
OSTS =0x05;
OSCCTL=0X40; /*if clock is used OSC,OSCclk>10M,set AMPH bit*/
MSTOP = 0; //start extclk
ucTemp1=0x1f;
#ifndef DEBUG_SIM
do{
ucTemp2=OSTC;
ucTemp2&=ucTemp1;
}while(ucTemp1!=ucTemp2); //wait ext clk is ok
#endif
MCM=0X05; //hispeed system&device clk is set as extclk
RSTOP = 0; //stop inner hi speed clk
XTSTART = 0; //subclk pin use as gpio
PCC=0X00; //fxp=fosc/2
LSRSTOP = 0; //stop inner low speed clk
}
给你这段程序,这个程序是用晶振的4M,大于10M的OSCCTL=0X40;这句要改改 终于明白为什么用外部晶振不行了,外部晶体的输出信号幅度太小,只有1VP_P,用做系统时钟不能可靠工作。硬件要改版增加一个三极管放大一下就好了
页:
[1]