目錄
一,引言
二,機器人的“大腦”
三,時基單元介紹
1,定時器框圖
2,時基單元
(1)預(yù)分頻器
(2)CNT計數(shù)器
(3)自動重裝載寄存器
四,結(jié)尾
一,引言
? ? ? ? 技術(shù)的迅猛發(fā)展,賦予了越來越多科技產(chǎn)品“智能化”的標(biāo)簽。如智能洗碗機,智能冰箱,智能電飯煲……這些“機器人”(我們姑且這樣稱呼它們)都有一個共同的功能——計時。你是否有過好奇——它們是如何精確而穩(wěn)定地計量時間的呢?讓我們一探究竟。
二,機器人的“大腦”
? ? ? ? 機器人計時是在它們的“大腦”中進(jìn)行的。這個“大腦”,學(xué)名叫“單片機(Single-Chip Microcomputer)”,又稱“微控制器(Microcontroller Unit,MCU)”。
????????想象一下,把一臺電腦中的主板、CPU、內(nèi)存、硬盤等各種部件全部濃縮在一枚指甲蓋大小的芯片上——這就是單片機。由于普通機器人對于信息的處理并不像電腦那樣,承載著巨量的數(shù)學(xué)計算,而是進(jìn)行環(huán)境信號的采集與對應(yīng)指令的輸出,單片機也就不需要過大的容量與體積。
? ? ? ? 而本系列的主要內(nèi)容,就是介紹單片機中最強大、最復(fù)雜的外設(shè)——定時器。
? ? ? ? 本文講解定時器的時基單元,也就是“機器人的計時原理”。聽起來似乎有些專業(yè)?不妨繼續(xù)往下看,接下來的內(nèi)容,我會盡我所能,讓你對時基單元有一個基本的認(rèn)識。
三,時基單元介紹
1,定時器框圖
? ? ? ? 如圖1,是通用定時器的整體框圖:
圖1? 定時器框圖
????????整體可分為四個模塊:時鐘模塊,時基單元,輸入捕獲與輸出比較。本文在介紹時基單元的基礎(chǔ)上,會同時介紹一點時鐘方面的知識。
2,時基單元
? ? ? ? 我們將時基單元單獨拆出,如圖2:
圖2 時基單元
? ? ? ? 時鐘脈沖(CK_PSC,72MHz)被預(yù)分頻器接收,經(jīng)過預(yù)分頻器分頻后,脈沖轉(zhuǎn)變成CK_CNT(CK_CNT和CK_PSC的區(qū)別是頻率不同,若預(yù)分頻器設(shè)置為2分頻,CK_CNT就是36MHz)進(jìn)入CNT計數(shù)器中,時基單元開始計數(shù)——其中,計數(shù)方式有三種:向上計數(shù)、向下計數(shù)與中央對其計數(shù),這里只介紹向上計數(shù),顧名思義,就是從0開始,按照1、2、3的方式向數(shù)值較大的方向計數(shù)——在計數(shù)的同時,計數(shù)器中的值會與自動重裝載寄存器(由我們設(shè)置)中的值相比較,若達(dá)到了我們期望比較的結(jié)果(如計數(shù)器的值大于我們設(shè)定的值),就會輸出相應(yīng)的指令。文字有點長,結(jié)合圖2閱讀也許會不那么抽象。
? ? ? ? 以上,就是時基單元基本的情況。接下來,我們分別討論時基單元中三個模塊的原理。
(1)預(yù)分頻器
? ? ? ? 我們結(jié)合預(yù)分頻器時序圖來剖析原理:
圖3 預(yù)分頻器時序圖
? ? ? ? 可以看到,在圖2中,預(yù)分頻器由“PSC預(yù)分頻器”與一塊陰影組成,其中,“PSC預(yù)分頻器”名字叫“預(yù)分頻控制寄存器”,而“陰影”叫預(yù)分頻緩沖器,也叫影子寄存器,這里我簡稱其為“緩沖器”。我們修改數(shù)值,是在預(yù)分頻控制寄存器中,修改之后,預(yù)分頻控制寄存器將設(shè)置的值放入緩沖器,由緩沖器控制預(yù)分頻計數(shù)器的數(shù)值變化(如圖3),也就是說,真正控制預(yù)分頻器工作的,是緩沖器。但為什么會這樣設(shè)計呢?在自動重裝寄存器中,我會闡述答案。
? ? ? ? 上文中,我們理出了預(yù)分頻器本身的基本運作方式,讀者可以在紙上畫一下流程圖熟悉一下大體框架。
????????我們提到了“預(yù)分頻計數(shù)器”,這就是預(yù)分頻器的重點——預(yù)分頻器本質(zhì)也是個計數(shù)器,通過圖3,我們來梳理它的原理。預(yù)分頻緩沖器中的設(shè)定值,就是預(yù)分頻計數(shù)器計數(shù)的最大值,這一點可以對比圖3中? ?上下兩幅圖的最后一排? ?預(yù)分頻計數(shù)器前后計數(shù)的變化理解。當(dāng)預(yù)分頻計數(shù)器計數(shù)值為0時,CK_INT輸出一個高電平,同時,計數(shù)器向上計數(shù)一次,CK_INT的意思見圖2。當(dāng)計數(shù)器到達(dá)自動重裝載寄存器的值時,就會從0重新計數(shù)(向上計數(shù)模式)。在每次計數(shù)到達(dá)設(shè)置值時,產(chǎn)生一個更新事件,更新事件就是圖2中那個像閃電一樣的箭頭,上面寫著U。而UI是產(chǎn)生定時中斷的意思,這兩個東西知道就行。
? ? ? ? 可能會有些難以理解,但是照著圖像一句話一句話地理解,能夠梳理出思路。
(2)CNT計數(shù)器
? ? ? ? CNT計數(shù)器時序圖如圖4:
圖4 計數(shù)器時序圖
? ? ? ? 其中,CK_INT和圖3中的CK_PSC是一樣的。到這里,也許我們會產(chǎn)生疑惑:時鐘這么重要,它到底是個什么東西?結(jié)合圖3和圖4,可以看到,我們所設(shè)置的信號中,上升沿和時鐘都是同時性的,也就是說,時鐘就像是一塊石頭,我們通過去掉與保留石頭的各個部分,把石頭雕刻成我們想要的部分——時鐘也是一樣。
(3)自動重裝載寄存器
? ? ? ? 自動重裝載寄存器時序圖如圖5:
圖5 自動重裝載寄存器
? ? ? ? 自動重裝載寄存器,是計數(shù)器的“頂點”,計數(shù)器到達(dá)了我們在自動重裝載的值,就會“溢出”,如圖5中,比如,我們讓計數(shù)器達(dá)到4的時候進(jìn)行“溢出”,也就是輸出一個高電平,表示計了5次數(shù)字(從0開始計數(shù)),溢出之后,計數(shù)器就又會從0開始進(jìn)行計數(shù)——是不是很像“畫正字”呢?
? ? ? ? 圖5是分為上下兩個圖的,兩個圖的區(qū)別在于,上面的圖沒有使用緩沖器(框圖中的“影子”),下面使用了緩沖器??梢钥匆?,在沒有使用緩沖器時,我們原先設(shè)置計數(shù)終點是FF,在計數(shù)到32時,將FF改成了36,計數(shù)器寄存器計數(shù)到36時,就重新從0開始計數(shù)了;而使用了緩沖器,當(dāng)我們改變計數(shù)終點時,計數(shù)器會計數(shù)到F5后,才會從0開始重新計數(shù),直到計數(shù)到我們新設(shè)置的36后,再從0開始重新計數(shù)。
? ? ? ? 有些繞,但是慢下來,對著圖畫一下思維導(dǎo)圖,就能理解這段文字。
四,結(jié)尾
? ? ? ? 也許我們會疑惑:一開始不是講計時嗎,怎么講到計數(shù)上了?
? ? ? ? 是否有注意,在文中,我們提及了“時鐘”的概念,定時器的標(biāo)準(zhǔn)時鐘時72赫茲,我們給它一個倒數(shù)——便成了周期(單位:秒),一個高電平就對應(yīng)著1/72秒?
? ? ? ? 所以,以上便是機器人計時的方法。感謝你看到這里,讓我們?yōu)樽约旱哪托呐c求知欲干杯!文章來源:http://www.zghlxwxcb.cn/news/detail-851255.html
歡迎交流文章來源地址http://www.zghlxwxcb.cn/news/detail-851255.html
到了這里,關(guān)于機器人是怎么計時的(通用定時器 - 時基單元)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!