找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2183|回复: 6
打印 上一主题 下一主题
收起左侧

STC15W104单片机时钟校准的设想

[复制链接]
跳转到指定楼层
楼主
ID:570252 发表于 2020-4-19 09:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问各位高人:
8脚的STC15W104只能用内部RC振荡器,但定时精度有限。是否可以把内部时钟定为某值,如30MHz,同时在定时器0上输入一外部有源晶振产生的时钟信号,如30MHz,并对其计数。每隔一定时间,如0.1秒,将计数结果与3MHz相除,得到一修正系数,并用此系数来调整?谢谢。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2020-4-19 10:28 | 只看该作者
STC15W104没有外部时钟输入端,只能用内部时钟。如果不是对时钟精度要求特别高,可以通过修改定时器TL0重装值修正。

char i=0;//+127~-128

void Timer0Init()                //1毫秒@30.000MHz
{
        AUXR |= 0x80;                //定时器时钟1T模式
        TMOD &= 0xF0;                //设置定时器模式
        TH0 = 0x8A;                        //设置定时初值
        TL0 = 0xD0+i;                //设置定时初值
        TF0 = 0;                        //清除TF0标志
        TR0 = 1;                        //定时器0开始计时
}
回复

使用道具 举报

板凳
ID:584814 发表于 2020-4-19 10:37 | 只看该作者
如果外部的准就用外部的,如果两个都不准谁听准的 ?
回复

使用道具 举报

地板
ID:570252 发表于 2020-4-19 11:24 | 只看该作者
我的设想如下:
假设输入到T0的外部时钟是正确的,16.5MHz,那0.1秒计数结果应该是1.65MHz。如果得出的结果是0.825MHz,则说明慢了一半。至于是什么原因不重要。
同时T1在对真正的外部信号在计频,比如8MHz。既然T0慢了一半,那T1也会慢一半,所以是0.4MHz。
最终结果是,需计数频率 = 0.4MHz *10 *2 = 8MHz。
从某种意义上来说,我不是在做频率计,而是频率比较计。
不知我的设想是否正确,请指教。
回复

使用道具 举报

5#
ID:687694 发表于 2020-4-19 11:29 | 只看该作者
能用外部准确时钟何必用内部时钟?
回复

使用道具 举报

6#
ID:570252 发表于 2020-4-19 13:09 | 只看该作者
lovexulu 发表于 2020-4-19 11:29
能用外部准确时钟何必用内部时钟?

因为此芯片的机器时钟只能使用机内的RC振荡器。
回复

使用道具 举报

7#
ID:220661 发表于 2020-4-19 16:11 | 只看该作者
如果对比。30M的外部时钟得降频使用。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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