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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > msp430單片機實現(xiàn)PWM

          msp430單片機實現(xiàn)PWM

          作者: 時間:2016-11-11 來源:網(wǎng)絡 收藏
          PWM信號是一種具有固定周期(T)不定占空比(t)的數(shù)字信號,如下圖所示。如果PWM信號的占空比隨時間變化,那么通過濾波之后的輸出信號將是幅度變化的模擬信號。因此通過控制PWM信號的占空比,就可以產生不同的模擬信號。

          本文引用地址:http://www.ex-cimer.com/article/201611/316571.htm

          msp430單片機利用Timer_A或者Timer_B可以很好的實現(xiàn)產生任意PWM信號。

          Timer_A定時器的計數(shù)器工作在增計數(shù)方式,輸出采用模式7(復位/置位模式),則可以利用CCR0控制PWM波形的周期,用某個寄存器CCRx控制占空比。原理圖如下:(注:這幅圖片為網(wǎng)上下載,他用的是Timer_B定時器,故輸出TBx)

          摘錄下面一段:http://www1.ti.com.cn/customer/article/article12161.asp

          將Timer_B配置為16-bit、up模式。在這種模式下計數(shù)器計數(shù)至CCR0,然后復位從0開始重新計數(shù)。給CCR0賦值255也就意味著計數(shù)器的長度為8bits。CCR1和TB1用于產生正弦波,CCR2和TB2用于產生直流電平。輸出模式都選為模式7,即PWM復位/置位模式。如圖2所示,在這種模式下,復位后每一個定時器的輸出都為高電平,直到計數(shù)器達到各自的CCRx值時變?yōu)榈碗娖?,當計?shù)器達到CCR0時再置位。也就是說CCRx的值決定了各自正脈沖的寬帶。若CCRx的值是變化的,就可以產生可變寬度的脈沖,下文中的正弦波就是用這種辦法產生的;若不變則產生的是固定寬度的脈沖,下文中的直流電平就是這樣產生的。最后SMCLK用作Timer_B的時鐘源。系統(tǒng)采用32768Hz的鐘表晶振,通過采用內部硬件鎖頻環(huán)FLL(frequency-locked-loop),來校準DCO(DigitalControlOscillator)頻率為系統(tǒng)提供MCLK/SMCLK時鐘。

          示例程序:

          #include
          void main(void)
          {
          WDTCTL = WDTPW + WDTHOLD; // Stop WDT
          P1DIR |= 0x0C; // P1.2 and P1.3 output
          P1SEL |= 0x0C; // P1.2 and P1.3 TA1/2 otions


          CCR0 = 512-1; // PWM Period
          CCTL1 = OUTMOD_7; // CCR1 reset/set
          CCR1 = 384; // CCR1 PWM duty cycle
          CCTL2 = OUTMOD_7; // CCR2 reset/set
          CCR2 = 128; // CCR2 PWM duty cycle


          TACTL = TASSEL_2 + MC_1; // SMCLK, up mode


          _BIS_SR(LPM0_bits); // Enter LPM0
          }



          關鍵詞: msp430單片機PW

          評論


          技術專區(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); })();