yangsen 发表于 2012-4-26 17:04:33

那位老兄用过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;
}

fuqianluo 发表于 2012-5-3 23:29:50

使用applite 工具 不用管 很顺手!

yangsen 发表于 2012-5-5 09:55:45

多谢2楼回复,我贴的代码就是applite生成的,但实际使用频率慢了很多,反而是有一台机使用晶体的配置可以用外部有源晶振可以工作,另外两台就不工作。

yumico 发表于 2012-5-8 13:30:57

yangsen 发表于 2012-5-5 09:55 static/image/common/back.gif
多谢2楼回复,我贴的代码就是applite生成的,但实际使用频率慢了很多,反而是有一台机使用晶体的配置可以用 ...

用applite生成的代码和楼主一样,都是在system.h和system.c里的。很遗憾帮不上什么忙啦,不知楼主有没有解决这个问题了呀

yangsen 发表于 2012-5-9 08:30:00

yumico 发表于 2012-5-8 13:30 static/image/common/back.gif
用applite生成的代码和楼主一样,都是在system.h和system.c里的。很遗憾帮不上什么忙啦,不知楼主有没有 ...

还没有,现在先用能用的板把功能部分调完,回头再整{:sweat:}

yumico 发表于 2012-5-10 08:38:58

yangsen 发表于 2012-5-9 08:30 static/image/common/back.gif
还没有,现在先用能用的板把功能部分调完,回头再整

只能先那么整着再说了。。。的确头痛啊

lllmcu 发表于 2012-5-21 23:09:26

我有在用,不知楼主搞定了没有?

xiaomaoci 发表于 2012-6-2 10:44:47

本帖最后由 xiaomaoci 于 2012-6-2 10:50 编辑

公司做产品有用0511,晶振用的是4.19M的陶瓷晶振
小弟不太懂这个怎么配置。

yangsen 发表于 2012-6-2 12:02:54

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;这句要改改

yangsen 发表于 2012-6-11 08:58:10

终于明白为什么用外部晶振不行了,外部晶体的输出信号幅度太小,只有1VP_P,用做系统时钟不能可靠工作。硬件要改版增加一个三极管放大一下就好了
页: [1]
查看完整版本: 那位老兄用过78F0511,使用外部有源晶振该怎么配置?