組み込み技術を向上したい!!

でも組み込み以外にも手を出し始めました・・・

MSP430 LaunchPad で PWM

今回はPWMを使ってみます。

PWMはサーボモーターを制御したり、LEDをフワっと点灯させたり(コンデンサとかでもできるけど)するのに使います。

ブザー+PWMで単音のメロディを作ったりしても楽しいです。

 

前回Timer割り込みでLEDを制御したプログラムを利用したいと思います。

赤色LED(P1.6)をPWM制御に変えてみましょう。

 

++++++++++++++++++++++++++++++++++++++++++++++++++++++

#include  /* MSP430G2553用のヘッダファイル */
#include  /* uint8_t とか定義してあるヘッダファイル */ 
void main(void) 
{
  WDTCTL = WDTPW +WDTHOLD; /* ウォッチドッグタイマーを止める*/ 
  /*----- クロックキャリブレーション -----*/ 
  if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF) {
    while(1); 
  } 
  /* 1Mhz */ 
  BCSCTL1 = CALBC1_1MHZ; /* Set range */ 
  DCOCTL = CALDCO_1MHZ;  /* Set DCO step + modulation */ 
  /*--------------------------------------------*/
  P1DIR |= BIT6 + BIT0; /* P1.0とP1.6を出力に設定 */
  P1OUT &= ~(BIT6 + BIT0); /* 最初は両方のLEDを消灯 */ 
  P1SEL |= BIT6;            /* P1.6 のPWM機能を選択します */  
  CCR0 = 1000; /* PWMの周期を決めます。 period/2 */ 
  CCR1 = 0; /* 適当にdutyを決めます。とりあえず0*/ 
  CCTL1 = OUTMOD_6;    /* CCR1 toggle/set */ 
  CCR2 = 1000;
  TACTL = TASSEL_2 + MC_3 + TAIE; /* SMCLK, up-down mode */ 
  CCTL2 = CCIE; /* タイマー割り込みスタート */ 
  __bis_SR_register(LPM0_bits + GIE); /* LPM0モード, 割り込み許可 */ 
}
/*! ************************************************** 
* @brief タイマー割り込みの処理 
******************************************************/ 
#pragma vector=TIMER0_A1_VECTOR
__interrupt void Timer_A(void) 
{ 
  switch( TA0IV ) 
  { 
    static int16_t pwm_val;
    static uint8_t pwm_dire;
    case  2: 
      break;        // CCR1 not used 
      //------------------------------------//
      // 2msec interrupt 
      //------------------------------------// 
    case  4:
        if ( pwm_dire == 0 ) { 
            pwm_val -= 10; 
        } 
        else { 
            pwm_val += 10;
        }
        if (pwm_val <= 0 ) {
            pwm_dire  = 1;
            pwm_val = 0;
        }
        else if ( pwm_val >= 1000 ) { 
            pwm_dire  = 0;
            pwm_val = 1000;
        }
        CCR1 = pwm_val;
        break;         // CCR2 
    case 10:
        break; // overflow 
    } 
} 

+++++++++++++++++++++++++++++++++++++++++++++++++

 

どうです?LEDがフワフワなりましたか?