ツインT発振器の続きです。トラ技9月号のマルチテスターキットで色々な波形を見ようとしています。
MSP430のTIMER_AはPWMができるようになっています。色々なduty比のパルスが見れます。
ソースは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ベースなので結構重いですが、とても便利です。
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ベースなので結構重いですが、とても便利です。
私もパーツセットを買ったので、作ろうと思っています。
そうですね。たまには頭を使わずのんびりとはんだづけを楽しむのもよさそうです。私の場合は、いつもなんですが><
ソフトの方が全てアセンブラで書かれているので、ちょこっと改造して遊ぶとかには敷居が高いです。私の方は本末転倒ですが、このテスターで見れるような信号を作る方に熱中してます。
こちらの方が色々とテストされています。
http://blogs.yahoo.co.jp/hamradiotuberca
信号出力は結構いいみたいです。