Sim's blog

電子工作はじめてみました

TIMER_AでPWMする

2008-08-25 23:44:56 | MSP430
ツインT発振器の続きです。トラ技9月号のマルチテスターキットで色々な波形を見ようとしています。

MSP430のTIMER_AはPWMができるようになっています。色々なduty比のパルスが見れます。
#include <msp430x20x3.h>

void main(void)
{
    int duty = 1000;

    WDTCTL = WDTPW + WDTHOLD;   // WDT停止
    P1DIR |= 4;                 // P1.2を出力にする
    P1SEL |= 4;                 // P1.2をTA1にする
    CCR0 = 2000 - 1;            // PWM周期(500Hz ... 2ms)
    CCTL1 = OUTMOD_7;           // CCR1 reset/set
    CCR1 = duty;                // CCR1 PWM duty cycle
    TACTL = TASSEL_2 + MC_1;    // SMCLK, up mode

    _BIS_SR(CPUOFF);            // LPM0に入る
}

ソースはTIが公開しているサンプルを参考にしました。

使っているのはF2013です。F2013は何も設定しないと1MHzで動作しています。up modeだと、CCR0に設定した値になると0に戻る動作をします。2000にしているので、2ミリ秒で1周期です。途中でCCR1になったところで出力が反転します。出力はP1.2なので4pinです。

duty = 1000 (1:1)

0.5ms/divで4divくらいなので1周期2ミリ秒で、計算どおりです。

デバッガでduty = 1000;の代入が終わったところまで動かしてから、dutyの値を書き換えてやるとデューティ比が変わります。定数を変えても再コンパイルや書き込みがいらないので、ちょこちょこっと試すのには便利です。

duty = 500 (1:3)


duty = 1500 (3:1)


実験の様子です。

右の方にいるICがMSP430 F2013で、右上にいるeZ430を使って、書き込み/デバッグしています。左上の方にいるのは前回のツインT発振器です。

TIの無料コンパイラCCEはeclipseベースなので結構重いですが、とても便利です。

最新の画像もっと見る

2 コメント

コメント日が  古い順  |   新しい順
トラ技9月号のマルチテスターキット (marsee)
2008-08-27 12:31:08
トラ技9月号のマルチテスターキットの使い心地はどうですか?
私もパーツセットを買ったので、作ろうと思っています。
返信する
re:トラ技9月号のマルチテスターキット (Sim)
2008-08-27 22:43:14
こんばんは、marseeさん
そうですね。たまには頭を使わずのんびりとはんだづけを楽しむのもよさそうです。私の場合は、いつもなんですが><
ソフトの方が全てアセンブラで書かれているので、ちょこっと改造して遊ぶとかには敷居が高いです。私の方は本末転倒ですが、このテスターで見れるような信号を作る方に熱中してます。
こちらの方が色々とテストされています。
http://blogs.yahoo.co.jp/hamradiotuberca
信号出力は結構いいみたいです。
返信する

コメントを投稿