![]() |
發(fā)布時間: 2022-10-30 09:30
正文摘要:打算做個stc32g12k128的頻率相關(guān)東西,有朋友建議用proteus仿真一下。結(jié)果發(fā)現(xiàn)proteus里沒有stc32g,與其相近的只有一個stc15w4k32s4.用了一下,結(jié)果無法運行,用盡全身解術(shù)也沒玩轉(zhuǎn)這個芯片(相信prot ... |
fsj5098 發(fā)表于 2022-11-2 19:58 我對這點也有深刻的教訓(xùn),在一個測量中發(fā)現(xiàn)測量結(jié)果沒有誤差,而從測量機制上,預(yù)期該有很大誤差才對,具體實例在我的貼子《基于stc32g12k128單片機和jlx12864的簡易脈沖測量器 附程序》中對11059200HZ的頻率測量有圖片顯示,正是這種沒誤差測量結(jié)果使我意識到測量方法的合理性存在問題,并在后面做了提示說明。之后發(fā)的幾種有關(guān)頻率測量的例程都在從不同的側(cè)面去規(guī)避這種漏洞的影響。我的觀點是,整數(shù)測量的準確性本身體現(xiàn)的是一種測量方法的不合理性。但對非整數(shù)的測量,還會受限于單片機數(shù)字處理能力。特別是對寬頻率范圍進行測量的程序,小數(shù)部分的處理會受字節(jié)長度的影響而變得很麻煩。 |
基準頻率一定要穩(wěn)和準,否則跳動厲害,頻率計對于整數(shù)測量是比較容易的,非整數(shù)難點比較大,比如31.592Hz |
yzwzfyz 發(fā)表于 2022-11-2 10:00 我認為程序方面現(xiàn)在存在的誤差主要表現(xiàn)在正負一的計數(shù)誤差,而解決這個問題并不難,在我發(fā)的其它帖子里的程序可以容易的解決,但主要是面向測量頻率的任務(wù),對時鐘的需要還真沒認真研究過。有空時會去分析一下對策。 |
yzwzfyz 發(fā)表于 2022-11-2 10:00 很專業(yè)的說明,希望有更多人能看到 |
理論日差做到1秒內(nèi),需要的穩(wěn)定度是 1S/24H/60M/60S = 1/86400 = 11.57*10^-6。 而隨意一個晶振,其穩(wěn)定度輕易就優(yōu)于10^-6。 從這個道理說,使用普通晶振的單片機,做個日差1秒之內(nèi)的時鐘是應(yīng)該能夠達成的。 而實際上,由于程序設(shè)計不合理,做到這一點還是不易的。 實戰(zhàn)比仿真更能說明問題。 |
參與人數(shù) 1 | 黑幣 +20 | 收起 理由 |
---|---|---|
![]() | + 20 | 回帖助人的獎勵! |
yzwzfyz 發(fā)表于 2022-11-1 16:34 有道理,我是想用這個程序測量脈沖頻率,如果做電子鐘的話要考慮系統(tǒng)時鐘的精度和穩(wěn)定性了。不是程序問題,當然程序本身也存在計數(shù)誤差的限制。 |
你實際做一下就會發(fā)現(xiàn)問題了。 做個電子鐘,看看一個月誤差幾秒,就知道你的方法靈不靈了。(不用時鐘專用芯片) |
補充:該例程在proteus8.12和8.13版本運行通過,使用的庫函數(shù)是8.13版的。 |
Powered by 單片機教程網(wǎng)