標(biāo)題: STC 硬件仿真如何看運(yùn)行時(shí)間? [打印本頁]

作者: ningsy    時(shí)間: 2022-12-18 11:53
標(biāo)題: STC 硬件仿真如何看運(yùn)行時(shí)間?
在做的項(xiàng)目里有倒計(jì)時(shí)的功能,用STC 8G1K08設(shè)置芯片仿真,自動(dòng)設(shè)定的頻率總是有誤差,并且每次的設(shè)定頻率誤差還不一樣。比如:


  . 用戶設(shè)定頻率: 11.059MHz
  . 調(diào)節(jié)后的頻率: 11.040MHz (主時(shí)鐘分頻系數(shù) = 2)
  . 頻率調(diào)節(jié)誤差: -0.174%

因?yàn)轭l率有誤差,所以感覺每次倒計(jì)時(shí)的時(shí)間總是不準(zhǔn)。想問下在硬件仿真時(shí)能看到具體的運(yùn)行時(shí)間嗎?好像STC芯片仿真時(shí)看不了時(shí)間?

另外,要想得到比較精確的時(shí)間,需要并聯(lián)外部晶振和電容么?還是用它“用戶自定義內(nèi)部IRC頻率”的范例程序代碼設(shè)置?



作者: 188610329    時(shí)間: 2022-12-18 12:49
直接看不了,只能間接看,比如利用某變量記錄兩個(gè)時(shí)間點(diǎn)之間的機(jī)器周期,又比如某個(gè)IO在兩個(gè)不同時(shí)間點(diǎn)輸出高低電平,第三方采集等。
作者: 188610329    時(shí)間: 2022-12-18 12:53
要想得到較準(zhǔn)的頻率,應(yīng)當(dāng)讀取出廠的22.1184校驗(yàn)值,用這個(gè),再根據(jù)你的實(shí)際需要分頻,ISP下載設(shè)置的頻率是不準(zhǔn)的,受限你的電腦,至少我用電腦設(shè)能誤差3%以上。
作者: ningsy    時(shí)間: 2022-12-18 13:51
188610329 發(fā)表于 2022-12-18 12:49
直接看不了,只能間接看,比如利用某變量記錄兩個(gè)時(shí)間點(diǎn)之間的機(jī)器周期,又比如某個(gè)IO在兩個(gè)不同時(shí)間點(diǎn)輸出 ...

我加了一個(gè)斷點(diǎn),按F5數(shù)碼管就可以按數(shù)字倒計(jì)時(shí)了。但問題是左下角的時(shí)間一直是0啊,不顯示時(shí)間。我再試試用IO輸出個(gè)方波的方法。




作者: ningsy    時(shí)間: 2022-12-18 14:08
188610329 發(fā)表于 2022-12-18 12:53
要想得到較準(zhǔn)的頻率,應(yīng)當(dāng)讀取出廠的22.1184校驗(yàn)值,用這個(gè),再根據(jù)你的實(shí)際需要分頻,ISP下載設(shè)置的頻率是 ...

您說的是不是這樣,下載時(shí)需要選擇22.1184Mhz嗎,還是根本就不用管這項(xiàng)了,直接在代碼里手動(dòng)設(shè)置IRC頻率為22.1184Mhz然后2分頻?按您的經(jīng)驗(yàn),手動(dòng)設(shè)置IRC頻率準(zhǔn)嗎?官方給出了3種代碼,有點(diǎn)簡(jiǎn)單有的復(fù)雜,我應(yīng)該用哪個(gè)呢?


作者: wulin    時(shí)間: 2022-12-18 14:40
實(shí)際運(yùn)用中,一小時(shí)內(nèi)這點(diǎn)誤差可以忽略不計(jì)。如果對(duì)時(shí)間精度有特別需求就要另外添置高精度時(shí)鐘芯片。
作者: Y_G_G    時(shí)間: 2022-12-18 16:50
一兩個(gè)小時(shí)的倒計(jì)時(shí)是不會(huì)有問題的,只要IRC時(shí)鐘選擇對(duì)了,再用定時(shí)器做延時(shí),保證沒有問題
STC8G1K08A,我用來定時(shí)六個(gè)小時(shí),在分上跟時(shí)鐘IC是沒有區(qū)別的,但有時(shí)會(huì)誤差三五分鐘
做項(xiàng)目是不可能讓你每個(gè)單片機(jī)去調(diào)節(jié)時(shí)鐘的,每個(gè)單片機(jī)的RC時(shí)鐘誤差都是差不多的
如果你要是想知道怎么測(cè)量,最好是下載后用IO進(jìn)行測(cè)量,示波器或者邏輯分析儀都可以
作者: 188610329    時(shí)間: 2022-12-18 18:33
ningsy 發(fā)表于 2022-12-18 14:08
您說的是不是這樣,下載時(shí)需要選擇22.1184Mhz嗎,還是根本就不用管這項(xiàng)了,直接在代碼里手動(dòng)設(shè)置IRC頻率 ...

下載時(shí)可以不需要設(shè)置22.1184, 但是,由于頻段的關(guān)系,要選同一頻段的,為了避免麻煩,你還是選22.1184吧,8g1k沒有chipID,所以,你只能ROM讀取,記得下載時(shí)勾選“末尾添加重要參數(shù)”選項(xiàng),才能讀取成功。最后,這個(gè)數(shù)值,是出廠是stc測(cè)試時(shí)最接近22.1184頻率的值,如果這個(gè)頻率最終依然無法滿足你的需要,你只能考慮其他時(shí)鐘源了。就我的使用結(jié)果來看,比電腦自動(dòng)調(diào)的要準(zhǔn)太多了。
作者: 188610329    時(shí)間: 2022-12-18 18:36
ningsy 發(fā)表于 2022-12-18 13:51
我加了一個(gè)斷點(diǎn),按F5數(shù)碼管就可以按數(shù)字倒計(jì)時(shí)了。但問題是左下角的時(shí)間一直是0啊,不顯示時(shí)間。我再試 ...

左下角是一直0的,所以我說沒有辦法直接得到,只能要么用變量記錄時(shí)鐘周期,比如開個(gè)定時(shí)器,每50000個(gè)周期,變量+1,然后結(jié)合定時(shí)器和變量,算出過了多少周期,要么某個(gè)IO輸出高低電平,讓第三方芯片來計(jì)算。
作者: ningsy    時(shí)間: 2022-12-18 19:28
網(wǎng)上查了一下,有人讓單片機(jī)產(chǎn)生1S(或100ms)的波形,配合邏輯分析儀,調(diào)整IRTRIM寄存器的值,即可調(diào)整STC單片機(jī)的頻率。但這個(gè)調(diào)整是一次性的,不同的單片機(jī),就可能有所不同,不同的環(huán)境(特指溫度,也可能不同)。 這就很麻煩了。我還是先接受它自動(dòng)調(diào)整的精度,實(shí)在不行了,就接個(gè)晶振上去爽快些。
作者: coody_sz    時(shí)間: 2022-12-18 23:21
用一個(gè)IO來指示時(shí)間。
作者: ningsy    時(shí)間: 2022-12-19 09:15
多謝以上各位指導(dǎo)!我會(huì)試試看,或許就能用到。
作者: Y_G_G    時(shí)間: 2023-2-5 19:35
ningsy 發(fā)表于 2022-12-19 09:15
多謝以上各位指導(dǎo)!我會(huì)試試看,或許就能用到。

對(duì)于精確的長(zhǎng)時(shí)間,STC單片機(jī)都是用定時(shí)器的
不會(huì)用while這種代碼的
至于調(diào)節(jié)片上的時(shí)鐘,感覺沒必要
作者: 13423265909    時(shí)間: 2023-2-6 00:42
用DEBUG斷點(diǎn)調(diào)試
作者: zttttttttttt    時(shí)間: 2025-5-8 14:27
搞一個(gè)定時(shí)器中斷,舉個(gè)例子,里面不是有TL0和TH0,,查手冊(cè)找到它們的地址,然后用keil的debug,找里面的memory,然后你去搜你要找的l0和h0的地址,然后打斷點(diǎn)運(yùn)行,看時(shí)間變化量就可以了。注意觀察是否重新開始加載值了




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1