找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

關于STC單片機1us定時誤差問題

查看數(shù): 3142 | 評論數(shù): 14 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2022-11-8 11:21

正文摘要:

芯片型號STC15W4K48S4  時鐘采用內部時鐘24M  模式16位自動重載 用定時器定時1us,變量做累加,發(fā)現(xiàn)定時時間一直存在誤差,后修改代碼做驗證 注釋掉部分代碼之后,周期終于對了,所以 ...

回復

ID:401564 發(fā)表于 2022-11-10 00:26
24MHZ在1T模式下,誤差最多就是1/24
做1uS肯定是沒有問題的
問題是,你要這1uS又是可調的干嘛?
如果是計時,可以用定時器
如果輸出PWM......很少有用到1MHZ的PWM的
也許,你想要的功能,可以通過其它方式來實現(xiàn),還不如說說你要做什么好點
ID:123289 發(fā)表于 2022-11-9 14:18
1、已經設置為自動從裝了,為何還要重置時常路,不合理。
2、每個us反轉輸出就完成2us的周期脈沖輸出了,為何還要用NUM數(shù)數(shù),也不合理。
兩個不合理,導致程序執(zhí)行時間過長,超出中斷時間!
根本問題:中斷時間不能太短,當中斷服務程序運行時間>中斷時間時,時序就控制不了了。
ID:1051174 發(fā)表于 2022-11-9 13:12
自動重裝初值模式,中斷內不要賦值 TH0、TL0寄存器。
ID:688692 發(fā)表于 2022-11-9 12:55
所有的鍋都甩給八位機,就是不提系統(tǒng)架構設計,應用合理性。
你STM32做1us的中斷也不見得中斷程序里面你能多跑幾條代碼
ID:883242 發(fā)表于 2022-11-8 20:09
發(fā)送連續(xù)波形完全可以用定時器自身的功能。只有單次輸出才需要中斷。
ID:1034262 發(fā)表于 2022-11-8 17:44
時間太短了,進中斷處理、退出中斷,總時間已經超過1us,所以會不準。
ID:1047954 發(fā)表于 2022-11-8 16:53
STC的下載軟件內都有范例程序的,你可以用范例試試呢

下載軟件.png (75.33 KB, 下載次數(shù): 58)

下載軟件.png
ID:213173 發(fā)表于 2022-11-8 16:36
自動重裝不需要再給TH0、TL0賦值,2us周期脈沖也不適合用定時器中斷。改用高速脈沖輸出功能為宜。
ID:619250 發(fā)表于 2022-11-8 15:29

stm32的應該沒問題
ID:624769 發(fā)表于 2022-11-8 14:11
為什么非要用中斷呢?
用 INT_CLKO |= 0x01;  直接輸出不好么?
ID:941942 發(fā)表于 2022-11-8 14:09
stm32肯定可以達到
ID:86926 發(fā)表于 2022-11-8 14:08
賦值、指令執(zhí)行和判斷都是要花時間的;不同的指令執(zhí)行的時間也不一樣;而且1us那么短;對于這種芯片來說還要調時間;肯定是吃不消的,要么用硬件pwm
ID:807591 發(fā)表于 2022-11-8 12:25
1us除了中斷,能做的事不多了啊
ID:57657 發(fā)表于 2022-11-8 12:13
自動重裝初值模式,中斷內不要賦值 TH0、TL0寄存器。

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

Powered by 單片機教程網(wǎng)

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