找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4736|回復(fù): 12
收起左側(cè)

如何計(jì)算MCU利用率(負(fù)載率)

[復(fù)制鏈接]
ID:1044091 發(fā)表于 2023-2-6 23:35 | 顯示全部樓層 |閱讀模式
請(qǐng)教MCU利用率(負(fù)載率)怎么計(jì)算?STC8H8K64U.  查了一下,好像是 1-(空閑時(shí)間/運(yùn)行總時(shí)間)*100%。可是具體到實(shí)際案例里怎么操作呢?

回復(fù)

使用道具 舉報(bào)

ID:883242 發(fā)表于 2023-2-7 02:59 | 顯示全部樓層
先定義什么是空閑,然后在空閑位置置標(biāo)志位,開(kāi)定時(shí)中斷,讀標(biāo)志位,如果置1則變量空閑加1,然后置零。如果標(biāo)志位置零則變量忙加1,然后計(jì)算變量空閑和變量忙的比例即為負(fù)載率。
回復(fù)

使用道具 舉報(bào)

ID:1034262 發(fā)表于 2023-2-7 10:20 | 顯示全部樓層
STC系列單片機(jī)沒(méi)有專門(mén)的模塊統(tǒng)計(jì)CPU利用率,我要測(cè)量的話,是在MCU的GND腳串聯(lián)0.1歐姆電阻采樣電流并放大10~40倍(注意要用速度比較高的運(yùn)放,一般要Ft要5MHz以上,我用100MHz的運(yùn)放)。
程序中,主循環(huán)跑一次就進(jìn)入空閑,任何中斷都可以退出空閑,并且有一個(gè)定時(shí)器中斷作為系統(tǒng)節(jié)拍,比如10ms,這樣保證任何中斷都能運(yùn)行并且退出空閑,每隔10ms就會(huì)運(yùn)行一圈主程序。
然后,示波器觀察采樣的電流波形,就可以看到MCU運(yùn)行的時(shí)間了。
回復(fù)

使用道具 舉報(bào)

ID:1059013 發(fā)表于 2023-2-7 12:06 | 顯示全部樓層
聞所未聞,單片機(jī)即使跑最簡(jiǎn)單的主循環(huán)也是100%利用的,或者講外設(shè)單元的使用率還差不多
回復(fù)

使用道具 舉報(bào)

ID:1044091 發(fā)表于 2023-2-7 13:12 來(lái)自手機(jī) | 顯示全部樓層
因?yàn)橛信笥言谀程永锾徇^(guò)一次,正好我這個(gè)項(xiàng)目代碼也差不多了,就想詳細(xì)了下
回復(fù)

使用道具 舉報(bào)

ID:161164 發(fā)表于 2023-2-7 15:18 | 顯示全部樓層
可在Keil仿真模式中查看
2023-02-07_090456.png


2023-02-07_090532.png


雙擊要觀測(cè)的函數(shù)
2023-02-07_150435.png


2023-02-07_150449.png


運(yùn)行
2023-02-07_150509.png


停止,然后觀看,空閑87.2%
2023-02-07_150527.png


函數(shù)A占12.7%
2023-02-07_150540.png


函數(shù)B占0.1%
2023-02-07_150552.png


回復(fù)

使用道具 舉報(bào)

ID:1034262 發(fā)表于 2023-2-7 15:26 | 顯示全部樓層
fishafish 發(fā)表于 2023-2-7 12:06
聞所未聞,單片機(jī)即使跑最簡(jiǎn)單的主循環(huán)也是100%利用的,或者講外設(shè)單元的使用率還差不多

那是因?yàn)槟銢](méi)關(guān)心過(guò)MCU的負(fù)載率,如果經(jīng)常滿載,可能會(huì)偶發(fā)隱含的問(wèn)題。我基本上,用什么單片機(jī)做產(chǎn)品程序,都會(huì)測(cè)試MCU的負(fù)載率(忙時(shí)間占比),并在源碼中標(biāo)注。
特別是復(fù)雜又要實(shí)時(shí)的程序,我是必須知道MCU負(fù)載率的。
回復(fù)

使用道具 舉報(bào)

ID:526108 發(fā)表于 2023-2-7 15:35 | 顯示全部樓層
單片機(jī)裸奔不存在cpu使用率,那必須是100%利用,全速跑你的代碼
回復(fù)

使用道具 舉報(bào)

ID:130230 發(fā)表于 2023-2-7 17:58 | 顯示全部樓層
這個(gè)利用率是操作系統(tǒng)里面的概念,操作系統(tǒng)戶有一個(gè)空閑任務(wù),該任務(wù)優(yōu)先級(jí)最低只要有高優(yōu)先級(jí)就會(huì)被搶占。所以利用率的定義應(yīng)該是1-空閑任務(wù)cpu占用率。實(shí)現(xiàn)也比較簡(jiǎn)單就是進(jìn)入臨界區(qū)后在空閑任務(wù)里面做計(jì)數(shù)操作,然后退出臨界區(qū)再搞一次。裸機(jī)的話利用率就是100%了
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2023-2-7 22:35 | 顯示全部樓層
單片機(jī)不跑系統(tǒng),不存在利用率這一說(shuō)
不管是在干嘛
就是while(1);
它也是100%的利用率
新手最優(yōu)先考慮的是代碼邏輯的正確性
然后再開(kāi)始考慮合理的,利用片上的資源,有的人開(kāi)了幾個(gè)中斷就卡死在中斷里,出不來(lái)了
最后,當(dāng)你學(xué)得差不多的時(shí)候,你就能自然而然的理解了"效率"這個(gè)詞語(yǔ),并能有效的去復(fù)用它了
回復(fù)

使用道具 舉報(bào)

ID:1044091 發(fā)表于 2023-2-7 22:55 | 顯示全部樓層
lkc8210 發(fā)表于 2023-2-7 15:18
可在Keil仿真模式中查看

感謝指導(dǎo)!不過(guò)在硬件仿真狀態(tài)下點(diǎn)“setup”沒(méi)反應(yīng)呢?是不是硬件仿真狀態(tài)下不能用?
回復(fù)

使用道具 舉報(bào)

ID:1044091 發(fā)表于 2023-2-7 23:02 | 顯示全部樓層
coody_sz 發(fā)表于 2023-2-7 10:20
STC系列單片機(jī)沒(méi)有專門(mén)的模塊統(tǒng)計(jì)CPU利用率,我要測(cè)量的話,是在MCU的GND腳串聯(lián)0.1歐姆電阻采樣電流并放大1 ...

這個(gè)方法好,不過(guò)我現(xiàn)在既不會(huì)玩運(yùn)放,也沒(méi)有示波器只有一個(gè)山寨邏輯分析儀,查了一下應(yīng)該也能用,我研究研究~
回復(fù)

使用道具 舉報(bào)

ID:142059 發(fā)表于 2023-2-8 13:20 來(lái)自手機(jī) | 顯示全部樓層
Y_G_G 發(fā)表于 2023-2-7 22:35
單片機(jī)不跑系統(tǒng),不存在利用率這一說(shuō)
不管是在干嘛
就是while(1);

是的,上了操作系統(tǒng),才有任務(wù)利用率一說(shuō),裸機(jī)利用率100%
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

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

快速回復(fù) 返回頂部 返回列表