<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

          作者: 時間:2011-05-14 來源:網絡 收藏

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

            可以根據(jù)需要的時序精度,設定串行接收器的波特率。接收器每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é)中領先0的個數(shù),并將此數(shù)加到累加位計數(shù)器上。此時的累加位計數(shù)與脈沖鏈的時間周期相關,其因數(shù)等于波特率。

            圖2表示一個200Hz的脈沖鏈,兩個上升沿之間的時間為5ms。波特率為256kbaud。在一個測量周期內,假設前上升沿的標志為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信號,方法是讀取一個已知進入脈沖頻率的高周期。



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();