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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > S3C2410中的脈寬調(diào)制定時器(PWM)

          S3C2410中的脈寬調(diào)制定時器(PWM)

          作者: 時間:2016-11-09 來源:網(wǎng)絡(luò) 收藏
          S3C2410有5個16bit定時器。定時器0-3有脈寬調(diào)制功能(Pulse Width Modulation,PWM),定時器4是內(nèi)部定時器,沒有輸出引腳。定時器0有Dead-zone發(fā)生器,可以保證一對反向信號不會同時改變狀態(tài),常用于大電流設(shè)備中。

          定時器0-1共用一個8bit prescaler,定時器2-4共用另外一個。每個定時器有一個時鐘分頻器,可以選擇5種分頻方法。每個定時器從各自的時鐘分頻器獲取時鐘信號。prescaler是可編程的,并依據(jù)TCFG0-1寄存器數(shù)值對PCLK進(jìn)行分頻。
          當(dāng)定時器被使能之后,定時器計數(shù)緩沖寄存器(TCNTBn)中初始的數(shù)值就被加載到遞減計數(shù)器中。定時器比較緩沖寄存器(TCMPBn)中的初始數(shù)值被加 載到比較寄存器中,以備與遞減計數(shù)器數(shù)值進(jìn)行比較。這種雙緩沖特點可以讓定時器在頻率和占空比變化時輸出的信號更加穩(wěn)定。
          每個定時器都有一個各自時鐘驅(qū)動的16bit遞減計數(shù)器,當(dāng)計數(shù)器數(shù)值為0時,產(chǎn)生一個定時中斷,同時TCNTBn中的數(shù)值被再次載入遞減計數(shù)器中再次開 始計數(shù)。只有關(guān)閉定時器才不會重載。TCMPBn的數(shù)值用于PWM,當(dāng)遞減計數(shù)器的數(shù)值和比較寄存器數(shù)值一樣時,定時器改變輸出電平,因此,比較寄存器決 定了PWM輸出的開啟和關(guān)閉。
          S3C2410的PWM定時器采用雙buffer機(jī)制,可以不停止當(dāng)前定時器的情況下設(shè)置下一輪定時操作。定時器值可以寫到TCNTBn,而當(dāng)前定時的計數(shù)值可以從TCNTOn獲得,即,從TCNTBn獲得的不是當(dāng)前數(shù)值而是下一次計數(shù)的初始值。
          自動加載功能被打開后,當(dāng)TCNTn數(shù)值遞減到0時,芯片自動將TCNTBn的數(shù)值拷貝到TCNTn,從而開始下一次循環(huán),若TCNTBn數(shù)值為0,則不會有遞減操作,定時器停止。
          第一次啟動定時器的過程如下:

          本文引用地址:http://www.ex-cimer.com/article/201611/318024.htm
            1. 同時,由上面的工作過程可以看出,通過ISR或別的方法寫入不同的TCMPBn的數(shù)值,就可以調(diào)節(jié)輸出信號的占空比,實現(xiàn)脈寬調(diào)制(PWM)。
              Dead Zone主要用在控制外設(shè)的使能,其功能主要是在關(guān)閉一個設(shè)備和開啟另一個設(shè)備之間,插入一個時間間隙,以防止兩個設(shè)備同時改變狀態(tài)。(有利于減小系統(tǒng)干擾?)
              定時器可以通過TCFG1寄存器的DMA模式位配置為DMA請求源信號(nDMA_REQ)發(fā)生器,當(dāng)定時器被這樣配置后,它將nDMA_REQ信號一直 置低,直到接收到ACK信號。當(dāng)定時器收到ACK信號,它將nDMA_REQ信號置高(無效)。當(dāng)定時器被設(shè)置為DMA請求模式時,不會產(chǎn)生中斷請求。只 能有一個定時器被配置為DMA請求源。


          評論


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

          關(guān)閉
          看屁屁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); })();