![]() |
調(diào)這么準(zhǔn)沒意義,溫度一飄你的石英晶體也跟著飄。 |
世界沒有絕對,只有相對,偷笑吧 |
算是很強的水準(zhǔn)了 |
這個和水平無關(guān),和你用的芯片精度有關(guān)。。除非你做了校時功能那就另說了。 |
比我的表都精確,接近專業(yè)級的水平了 |
我的手表都沒準(zhǔn)過,時間都是往前調(diào)兩分鐘 |
把一個復(fù)雜的儀表改做時鐘,有點浪費啊![]() |
表示贊一個!加油!再接再厲!希望后面能有更精彩! |
很好了,6年才快1分鐘 |
mp3 發(fā)表于 2019-3-18 10:38 運行18天都已經(jīng)差一個小時了? |
這是因為延時的原因,它分為硬件延時和軟件延時 |
1302可以解決問題 |
已經(jīng)接近專業(yè)級的水準(zhǔn)。 |
如果感覺精度達不到,可以加一個wifi網(wǎng)絡(luò)校時功能!每天校準(zhǔn)兩次,這個比較好的選擇 |
很高的水平了 |
這個溫飄太大了,因晶振溫飄大。 |
建議你加塊時鐘芯片,如DS1302等,或者選用帶有內(nèi)部RTC模塊的單片機。用單片機的定時器去完成實時時鐘精度只能一般般,外部晶振,內(nèi)部RC振蕩器都滿足不了需求,加上定時器中斷保護現(xiàn)場,恢復(fù)現(xiàn)場,中斷服務(wù)程序編寫等等因素,難以達到較為精準(zhǔn)的長時間定時。而且沒有網(wǎng)絡(luò)對時,純屬開環(huán)控制,結(jié)果未可知。![]() ![]() ![]() |
還能更精確,一天程序修正一次誤差或者一小時修正一次,有時硬件誤差需軟件修正。意思就是一小時用軟件加上或減去時間誤差值,減少積累誤差。 |
專業(yè)級 |
你這“快0.03秒”是怎么對比出來的,是用儀器測量的還是理論上的而已? 還有,你調(diào)節(jié)時間的方法沒多大意義,用一個定時器計算好好時鐘周期,再使用STC的1T時鐘單片機,再使用24MHZ的晶振,理論上(或者是說在實際的程序上)每秒可以達到±1/24uS,比你的0.5uS精度高多了。 代碼是可以這么實現(xiàn)的,但實際就不一定行,在用作時鐘來說,晶振對溫度是比較敏感的,一個12MHZ的晶振是很難真正的達到1uS一個機器周期的,而且,這個誤差會累加的上去的,也就是說,你的時鐘要是快了就會一直快,要是慢了就會一直的慢,除非是加個自動校時的電路。 |
對時用的百分秒秒表改自《Windows程序設(shè)計》中的數(shù)字鐘程序![]() |
說一下我的調(diào)整方法: 1秒=(n-1)*定時器時間1+定時器時間2 首先假定定時器時間1=定時器時間2,我的MCU晶振為12Mhz的,取n=200,那么定時器時間為5000us 實際上因為晶振的頻率多少有點偏差,需要對定時器時間進行調(diào)整,這時候總能找到兩個連續(xù)的值,一個使電子鐘走時偏慢,一個使電子鐘走時偏快,取其中一個值為定時器時間1。 定時器時間1每+/-1us,電子鐘的1秒就+/-200us,這就需要引入定時器時間2,在us級上調(diào)整時間。 可以算出定時器時間2的取值范圍是5000us+/-100us。 接下來找定時器時間2,這時候也總能找到兩個連續(xù)的值,一個使電子鐘走時偏慢,一個使電子鐘走時偏快,中間的這個點就是最精確走時的定時器時間。 按照這個方法調(diào)試,基本可以把1秒的走時誤差控制在理論的最小誤差范圍內(nèi),即+/-0.5us,換算1天的累積誤差就是+/-0.0432秒。 |
按手表的誤差標(biāo)準(zhǔn)來說,也不錯了 |
超級水平,專業(yè)級 |
如果感覺精度達不到,可以加一個wifi網(wǎng)絡(luò)校時功能!每天校準(zhǔn)兩次 |
日誤差<1秒就是不錯的水平了。 |
應(yīng)該是達到省級水平了![]() 按手表的誤差標(biāo)準(zhǔn)來說,已經(jīng)是特級 ![]() |
Powered by 單片機教程網(wǎng)