ESP8266使用内部定时器Ticker,误差很大-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 577|回复: 2

[已解决] ESP8266使用内部定时器Ticker,误差很大

[复制链接]
发表于 2022-5-27 15:56 | 显示全部楼层 |阅读模式
本帖最后由 lmn2005 于 2022-6-1 07:56 编辑

本人用
ticker.attach_ms(500, task);
来设置每500毫秒运行一次task任务。
每2次任务即1秒,时间参数Mysec加1;当Mysec为0时,自动获取网络时间并打印下来,结果如下:

Mysec:19Mysec:20Mysec:21Mysec:22Mysec:23Mysec:24Mysec:25Mysec:26Mysec:27Mysec:28Mysec:29Mysec:30Mysec:31Mysec:32Mysec:33Mysec:34Mysec:35Mysec:36Mysec:37Mysec:38Mysec:39Mysec:40Mysec:41Mysec:42Mysec:43Mysec:44Mysec:45Mysec:46Mysec:47Mysec:48Mysec:49Mysec:50Mysec:51Mysec:52Mysec:53Mysec:54Mysec:55Mysec:56Mysec:57Mysec:58Mysec:59[HTTP] GET... code: 200
{"sysTime2":"2022-05-27 15:42:22","sysTime1":"20220527154222"}
22
5
27
15
42
22
Mysec:22Mysec:23Mysec:24Mysec:25Mysec:26Mysec:27Mysec:28Mysec:29Mysec:30Mysec:31Mysec:32Mysec:33Mysec:34Mysec:35Mysec:36Mysec:37Mysec:38Mysec:39Mysec:40Mysec:41Mysec:42Mysec:43Mysec:44Mysec:45Mysec:46Mysec:47Mysec:48Mysec:49Mysec:50Mysec:51Mysec:52Mysec:53Mysec:54Mysec:55Mysec:56Mysec:57Mysec:58Mysec:59[HTTP] GET... code: 200
{"sysTime2":"2022-05-27 15:43:19","sysTime1":"20220527154319"}
22
5
27
15

从上面可以看出,当定时器为0时,网络时间的秒已经到了22,这说明内部的秒比起网络的时间差不多慢了21秒、22秒。
每分钟慢21、22秒,误差大得惊人,为什么会这样呢?

发表于 2022-5-27 19:33 | 显示全部楼层
看大神解读,关注ing
 楼主| 发表于 2022-6-1 07:56 | 显示全部楼层
我基本知道是怎么回事了,那是因为使用的是软件定时器,所以在系统运行其他程序的时候,软件定时器会自动变慢。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2025-1-1 21:18 , Processed in 0.070119 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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