新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 可測量脈沖寬度的微控制器串行端口

可測量脈沖寬度的微控制器串行端口

作者: 時間:2011-05-14 來源:網(wǎng)絡(luò) 收藏

很多工業(yè)與儀表系統(tǒng)都需要測量脈沖輸入的持續(xù)時間,如轉(zhuǎn)速傳感器、外部系統(tǒng)的門控與選通脈沖,以及PWM(脈沖寬度調(diào)制)輸入的頻率等。設(shè)計者是采用片上定時器和邊沿驅(qū)動的中斷。但是,如果這些元件不可用,可以用片上的串行同步接收器做這類測量。

  可以根據(jù)需要的時序精度,設(shè)定串行接收器的波特率。接收器每8 bit后中斷??梢栽趹贸绦蛑胁迦朊}沖寬度采集例程,用于讀取ISR(中斷服務例程)接收到的字節(jié)。它會統(tǒng)計和累加接收到的0和1字節(jié),以測量出進入脈沖的持續(xù)時間(圖1)。


  算法測量a的是兩個連續(xù)上升沿之間的持續(xù)時間。當收到一個既不是0xff也不是0x00的字節(jié)時,就檢測到了一個上升沿或下降沿。如果一個字節(jié)小于0x80H (100 000b),則該字節(jié)表示一個上升沿。如果字節(jié)等于或大于該值,則該字節(jié)表示一個下降沿。

  前上升沿將位計數(shù)器重置為上升沿字節(jié)中拖尾1的個數(shù),方法是將向右移位。位計數(shù)器在每個字節(jié)來到時加8,也包括標志下降沿的那個字節(jié)。當計數(shù)器接收到后上升沿(由下一個上升沿字節(jié)標志,它大于0x80H但小于00H)時,它再次統(tǒng)計該字節(jié)中領(lǐng)先0的個數(shù),并將此數(shù)加到累加位計數(shù)器上。此時的累加位計數(shù)與脈沖鏈的時間周期相關(guān),其因數(shù)等于波特率。

  圖2表示一個200Hz的脈沖鏈,兩個上升沿之間的時間為5ms。波特率為256kbaud。在一個測量周期內(nèi),假設(shè)前上升沿的標志為0011 1111b。將其向右移位,統(tǒng)計拖尾1的數(shù)目,位計數(shù)器初始化為6。這個計數(shù)對應的時間約為23.43 μs。


  接下來,上升沿字節(jié)前的每個字節(jié)都使位計數(shù)器加8。簡單計算表明,共有159字節(jié),即1272位。此時,計算的總位數(shù)為1278位,包括在第一個上升沿字節(jié)中收到的6個1。

  現(xiàn)在,脈沖鏈遇到了拖尾的上升沿字節(jié),其值為0011 1111b。做這個計數(shù)時,需要將0左移,統(tǒng)計為兩個位。兩上升沿之間的總位數(shù)就是1280bit。在256 kbaud速率下,這個數(shù)字精確地對應于5 ms或200 Hz。

  可以根據(jù)自己的應用需求,對這種位計數(shù)概念作修改。如果只需要測量低周期的脈沖,需要探測一個下降沿,并累計位數(shù),直到遇見一個上升沿??梢詫⑦@種概念用于讀取進入的PWM信號,方法是讀取一個已知進入脈沖頻率的高周期。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉