找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

关于单片机定时器定时不准确的问题

查看数: 4385 | 评论数: 13 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2024-5-14 21:50

正文摘要:

请教一下大家,最近在用STC8G1K08A单片机做一个小东西,使用到了定时器0和定时器1,参照官方设定的1毫秒,然后中断里重复1000次,作为1秒的精确延时,但是实际发现误差很大,不知道是我设置的问题还是?之前用STC15W ...

回复

ID:491577 发表于 2024-5-17 20:40
如果误差超过0.5%就是你的程序有问题,把你的程序贴出来,包括定时器设置函数,定时器中断函数,单片机主频。
ID:57657 发表于 2024-5-15 22:44
T0m 发表于 2024-5-15 22:17
直接做软件定时器吧,用逻辑分析仪抓一抓时间,或者改改值.

逻辑分析仪里面通常有个晶振,准确度与该晶振有关。
ID:621776 发表于 2024-5-15 22:17
直接做软件定时器吧,用逻辑分析仪抓一抓时间,或者改改值.
无效楼层,该帖已经被删除
ID:1110945 发表于 2024-5-15 19:43
void Timer0_Isr(void) interrupt 1
{
}

void Timer0_Init(void)                //50毫秒@11.0592MHz
{
        AUXR &= 0x7F;                        //定时器时钟12T模式
        TMOD &= 0xF0;                        //设置定时器模式
        TL0 = 0x00;                                //设置定时初始值
        TH0 = 0x4C;                                //设置定时初始值
        TF0 = 0;                                //清除TF0标志
        TR0 = 1;                                //定时器0开始计时
        ET0 = 1;                                //使能定时器0中断
}

建议用12T模式,50毫秒@11.0592MHz,每秒只进中断20次,频率要设置成11.0592MHz
ID:57657 发表于 2024-5-15 12:15
自动重载初值,不要用手动重载,溢出了会自己装进去,中断里不要赋值TH0,TL0寄存器。
加误差补偿处理且使用外部晶振,1个月误差不到1分钟的都有。
ID:23640 发表于 2024-5-15 11:44
这一生只为你 发表于 2024-5-15 08:50
可不止,十秒的误差都有两三秒了,你说的那些误差都在可接受范围内,我这里的误差根本没法用啊。。。

这么大的误差会不会是初始化配置就有问题?可以用示波器看下定时1MS实际测试是多少?
ID:213173 发表于 2024-5-15 10:49
这一生只为你 发表于 2024-5-15 08:50
可不止,十秒的误差都有两三秒了,你说的那些误差都在可接受范围内,我这里的误差根本没法用啊。。。

单靠程序片段看不出毛病在哪
ID:403593 发表于 2024-5-15 10:38
rayin 发表于 2024-5-15 07:28
单片机的晶振是相对精确而已, 要提高精度就要用realtime IC: DS12C887 等 ; 要求更高就用天线接GPS的授时信 ...

我不需要特别高的精度,电路很简单,我只需要延时十分钟,可接受误差在一分钟以内就好。
ID:403593 发表于 2024-5-15 08:50
hhh402 发表于 2024-5-15 00:19
误差很大,具体是多大?STC单片机主频误差0.5%,所以误差0.5%以内是正常的,1小时误差0.5%=18S,24小时误差 ...

可不止,十秒的误差都有两三秒了,你说的那些误差都在可接受范围内,我这里的误差根本没法用啊。。。
ID:1109793 发表于 2024-5-15 08:00
而且每次刷机设置的都不太一样,要精确定时还是得外部晶振
ID:517951 发表于 2024-5-15 07:28
单片机的晶振是相对精确而已, 要提高精度就要用realtime IC: DS12C887 等 ; 要求更高就用天线接GPS的授时信号.
ID:491577 发表于 2024-5-15 00:19
误差很大,具体是多大?STC单片机主频误差0.5%,所以误差0.5%以内是正常的,1小时误差0.5%=18S,24小时误差=18*24=432秒。只要在这个范围内是正常的。

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

Powered by 单片机教程网

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