搜索
bottom↓
回复: 13

处贴....关于LGT晶振问题.

[复制链接]

出0入0汤圆

发表于 2012-4-20 21:40:39 | 显示全部楼层 |阅读模式
下午收到板子. 点了下LED灯...例2. 一切顺利, 仿真器速度还可以, 安装使用都很方便.

对温漂在意, 所以直接上晶振, 18.432MHz, 两个电容使用的是20pF(没有22pF). 问题来了.

    PORTA = 0xFF;       // A端口全部输出为高电平.
    DDRA = 0xFF;         // 设置A为输出模式
   
    delay_ms(10);

    // PC0 PC1 上电默认输入状态, 上拉禁用
    PMCR = 0x35;        // 外部晶振使能, 使用外部晶振.
    delay_ms(10);
    PMCR = 0x34;        // 禁用内部16MHz振荡器.

    delay_ms(250);       // <----- 停止在这无法继续运行了. 时钟故障.......

    示波器量 XTAL1, 无波形. XTAL2 输出波形杂乱.. 有明显下降峰刺..

    -----------------------------------

    !! 直接停止运行.




    换 12MHz 晶振问题依旧....
    示波器量 XTAL1, 无波形. XTAL2 下峰刺明显好转.

   

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2012-4-20 21:52:22 | 显示全部楼层
// a. PC0/1 input, disaple PC0/1's pull-register
DDRC = DDRC & 0xFC;

// b. enable external crystal oscillator
PMCR = (1 << RC16MEN) | (1 << OSCMEN);

// c. delay 1ms
  for(i = 0; i < 200; i++)
{
for(j = 0; j < 200; j++)
;
}
// d. switch clock from RC to External OSC
PMCR = (1 << RC16MEN) | (1 << OSCMEN) | (1 << EXTMSEL);
// e. disable internal RC
//PMCR = (1 << OSCE) | (1 << OSCS);

// f.
CLKPR = 0x80;
CLKPR = 0x80;

出0入0汤圆

 楼主| 发表于 2012-4-20 21:53:40 | 显示全部楼层
刚下了最新例程, 也刚看到这段代码. 明天回公司试试看.

出0入0汤圆

 楼主| 发表于 2012-4-20 21:55:07 | 显示全部楼层
        // a. 设置PC0和PC1为输入
        DDRC = DDRC & 0xFC;

        // b. 使能外部晶振
        PMCR = (1 << RC16MEN) | (1 << OSCMEN);
       
        // c. 延时10ms等待晶振输入稳定
        for(i = 0; i < 200; i++)
        {
                for(j = 0; j < 200; j++)
                        ;
        }
        // d. 使能晶振输入为主时钟
        PMCR = (1 << RC16MEN) | (1 << OSCMEN) | (1 << EXTMSEL);
        // e. 禁止内部RC
        //PMCR = (1 << OSCMEN) | (1 << EXTMSEL);    <<-------------------------------------  这里为什么要注释掉? 注释掉了如何确定是外部晶振呢???

出0入0汤圆

发表于 2012-4-20 22:08:41 | 显示全部楼层
gycsy963 发表于 2012-4-20 21:55
// a. 设置PC0和PC1为输入
        DDRC = DDRC & 0xFC;

试试PWM  或者串口程序就知道是不是外部时钟了    注释掉是说 可以关也可以不关  个人喜好了!

出0入0汤圆

 楼主| 发表于 2012-4-20 22:19:12 | 显示全部楼层
波特率最方便. 明天试试.

出50入8汤圆

发表于 2012-4-20 22:27:26 | 显示全部楼层
gycsy963 发表于 2012-4-20 21:55
// a. 设置PC0和PC1为输入
        DDRC = DDRC & 0xFC;

        // d. 使能晶振输入为主时钟
        PMCR = (1 << RC16MEN) | (1 << OSCMEN) | (1 << EXTMSEL);
不是已经指定使用外部时钟源了吗?注释掉只是没有停止内部时钟振荡器,对结果没有影响

出0入8汤圆

发表于 2012-4-20 23:00:40 | 显示全部楼层
真快,我的还没发货呢

出0入0汤圆

发表于 2012-4-21 00:08:24 | 显示全部楼层
楼主不切换就直接关内部时钟....无语...

出0入0汤圆

发表于 2012-4-21 01:01:42 | 显示全部楼层
时钟是单片机的生命之源,直接喀嚓无异于自杀。

出0入0汤圆

发表于 2012-4-21 06:54:24 | 显示全部楼层
使用外部晶振还要自己写代码?不是下载软件来定义的么?

出0入0汤圆

 楼主| 发表于 2012-4-21 07:07:39 | 显示全部楼层
    PMCR = 0x15;                // 外部时钟使能
   
    delay_ms(10);                                                                                        //延时一会
   
    PMCR = 0x35;                // 使用外部时钟
    PMCR = 0x34;                // 关闭内部振荡器

    问题解决.

    直接切换到外部晶振MCU可没有停止工作, 是在停止内部晶振之后才出问题的.

出0入0汤圆

发表于 2012-4-21 10:31:11 | 显示全部楼层
不知道晶振上的两个电容是否可以像AVR一样省去?

出0入0汤圆

发表于 2012-4-21 10:35:36 | 显示全部楼层
hanhui 发表于 2012-4-21 10:31
不知道晶振上的两个电容是否可以像AVR一样省去?

OSC内部并没有电容, 所以这两个电容估计无法省去。
非常抱歉~
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-13 15:51

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表