欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5753|回復: 25
打印 上一主題 下一主題
收起左側

單片機定時器時間不準

  [復制鏈接]
跳轉到指定樓層
樓主
ID:1077092 發(fā)表于 2023-5-29 20:53 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
無論我選擇晶振頻率為12MHZ還是11.059Hz ,(用了燒錄軟件里面的那個定時器計算器) 計時器的時間都比正常的慢,幾乎沒分鐘就要慢5s,各位大佬有沒有什么好的解決辦法啊。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:161164 發(fā)表于 2023-5-29 22:46 | 只看該作者
5/60 = 8.333% Error
正常晶振誤差沒有這么大
程序中是不是用了阻塞式延時?
回復

使用道具 舉報

板凳
ID:220661 發(fā)表于 2023-5-30 07:45 | 只看該作者
上程序吧,很大可能不是自動賦值的。
回復

使用道具 舉報

地板
ID:879348 發(fā)表于 2023-5-30 07:57 | 只看該作者
幾分鐘慢5s不可能
回復

使用道具 舉報

5#
ID:712097 發(fā)表于 2023-5-30 08:32 | 只看該作者
要精準計時,推薦使用外部時鐘芯片如PCF8563,DS1302等。
回復

使用道具 舉報

6#
ID:123289 發(fā)表于 2023-5-30 08:34 | 只看該作者
好辦,再改中斷時間常數。
回復

使用道具 舉報

7#
ID:57657 發(fā)表于 2023-5-30 09:08 | 只看該作者
定時器使用自動重裝初值模式,定時器中斷里的程序執(zhí)行時間,不得超過定時器設定的時間。
回復

使用道具 舉報

8#
ID:332444 發(fā)表于 2023-5-30 09:55 | 只看該作者
看我帖子,單片機頻率比時間芯片高一個數量級,定時是很準確的,有誤差大多是呆等思路和代碼引發(fā)的。
回復

使用道具 舉報

9#
ID:332444 發(fā)表于 2023-5-30 10:06 | 只看該作者
看圖片運行1小時半始終保持差1秒同步,也就是無誤差。

回復

使用道具 舉報

10#
ID:332444 發(fā)表于 2023-5-30 10:11 | 只看該作者
這是代碼片段

回復

使用道具 舉報

11#
ID:123289 發(fā)表于 2023-5-30 10:19 | 只看該作者
1、理論上只要是晶振,做到日差1秒之類,沒有問題。因為日差1秒,要求的穩(wěn)定優(yōu)于1秒/1天=1/86400,約為百萬分子11.57。晶振振蕩穩(wěn)定度優(yōu)于它。
如何做到呢:
2、確保單片機的時基是晶振,而不是內部RC。
3、確保定時器的時鐘源,是由晶振分頻或不分頻的時鐘脈沖。
4、建議使用自動重裝方式(這一點并不是很重要的),但新手會發(fā)生中斷時常數重置不準確(如中斷后走了一個脈沖再裝新的時常數)。
5、中斷時常數建議取長1000ms的公約數,例如5、10、20、50、100ms,以便秒計算。對于新手來說,取大一點,間隔時間長一點,發(fā)生意外的概率會少一點。
6、由于晶振不會輕易地恰好是12.000000MHz,或是11.0592MHz,所以第5、是做不到精準的。這時你就無法實現日差一秒。
以12M,時鐘分頻為12,則10ms中斷需要,10000個脈沖,通常晶振不是精準的12MHz,如12.000240MHZ,這樣10ms就可能是10000.2個時鐘,由于時常數只能取最接近的整數10000(實際=65536-10000),所以每次中斷最會誤:0.2個時鐘,拆成時間是0.2us。每秒中斷100次,即每秒誤差20us,一天就誤差1.728秒。這是你所能做到的極限精準度。
7、日差<1秒的技巧:如果每間隔一個時間,對誤差進行補償,至于間隔時間取多少,由你決定,補多少,則需要你知道當前日差是多少秒。這個估計難不倒你。
8、中斷服務程序中一定要短,不能超過10ms(前例參考),否則,會丟失一個中斷,這樣計時就無法精準控制了,這是重重之重!
記住:中斷服務只做計時,與之無關的計算,以及其它事件,只做個標記,放到主程序中,依標記再做。這樣中斷服務程序就短了,不會超時了。
回復

使用道具 舉報

12#
ID:1061331 發(fā)表于 2023-5-30 10:58 | 只看該作者
可以試試用軟件來調整過來
回復

使用道具 舉報

13#
ID:401564 發(fā)表于 2023-5-30 12:48 | 只看該作者
每分鐘慢5秒,我都不用分析,直接就告訴你,這是代碼不對
10個小時以內的定時器,完全可以直接用單片機片上的RC時鐘,都不需要用到晶振
回復

使用道具 舉報

14#
ID:291668 發(fā)表于 2023-5-30 13:21 | 只看該作者
誤差太大了。好好檢查一下。
回復

使用道具 舉報

15#
ID:1079863 發(fā)表于 2023-5-30 14:44 | 只看該作者
at89c52單片機定時器的時間可能比正常的慢的原因有以下幾種123:  晶振的頻率不準確,導致時鐘信號的周期不穩(wěn)定,影響定時器的計數速度; 定時器的工作模式設置不正確,導致定時器的計數范圍或重裝載值不合適,影響定時器的溢出時間; 定時器的中斷服務程序執(zhí)行時間過長,導致定時器的中斷響應延遲,影響定時器的溢出標志清零; 定時器的中斷優(yōu)先級設置不合理,導致定時器的中斷被其他高優(yōu)先級的中斷打斷,影響定時器的中斷處理; 定時器的計數源選擇錯誤,導致定時器從外部引腳輸入計數信號,而不是從內部系統(tǒng)時鐘輸入,影響定時器的計數精度。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

16#
ID:883242 發(fā)表于 2023-5-30 16:10 | 只看該作者
chxelc 發(fā)表于 2023-5-30 08:32
要精準計時,推薦使用外部時鐘芯片如PCF8563,DS1302等。

RTC的優(yōu)點是功耗極低,掉電依然可以運行。缺點是32768的音叉晶體沒有MHz級AT-cut晶體穩(wěn)定,實際上更加不準確。
回復

使用道具 舉報

17#
ID:332444 發(fā)表于 2023-5-30 16:32 | 只看該作者
運行8小時后依然無差


回復

使用道具 舉報

18#
ID:1074206 發(fā)表于 2023-5-30 17:26 | 只看該作者
雖然51的精度不是很高,但絕不會出現你說的這種情況,一定是程序里面有問題
回復

使用道具 舉報

19#
ID:1081090 發(fā)表于 2023-5-31 13:57 | 只看該作者
可能的原因:
1、晶振未起振,程序用RC在跑
2、定時器阻塞了(比如你在10ms定時器里跑了個可能需要12ms的程序)
回復

使用道具 舉報

20#
ID:1067126 發(fā)表于 2025-9-18 09:08 | 只看該作者
我也是,8G1K08的芯片,1MS進一次中斷,時間都是慢了10%,100S就慢10S 10分鐘就慢1分鐘。你最后怎么解決的
回復

使用道具 舉報

21#
ID:325642 發(fā)表于 2025-9-18 16:50 | 只看該作者
來學習一下,不知道問題解決了沒
回復

使用道具 舉報

22#
ID:1109793 發(fā)表于 2025-9-19 07:32 | 只看該作者
輸出一個比如1秒的方波,測量一下誤差,然后修正一下初值,可以不
回復

使用道具 舉報

23#
ID:1109793 發(fā)表于 2025-9-19 07:33 | 只看該作者
之前測試過就用工具給的1MS的參數,計時了10小時,誤差在一分鐘以內,還可以用的。
回復

使用道具 舉報

24#
ID:1153607 發(fā)表于 2025-9-20 15:57 | 只看該作者
有些單片機是需要程序選擇時鐘的,比如STC8 就是,有錯誤就是內部RC時基電路。最好貼程序出來。
回復

使用道具 舉報

25#
ID:1160713 發(fā)表于 2025-9-21 22:02 | 只看該作者
板子是自己焊接的嗎?如果不是,多半是程序軟件上的問題
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表