デバイス設定
プロセッサーエキスパートで設定した内容をご紹介します。
・AS1:シリアル通信設定(UART)
・PWM1〜4:タイマーのPWM設定
・FC1:モジュロータイマーのフリーカウンター設定
・Bits2:予備の出力ポート設定
CodeWarriorで作成したプロジェクトフォルダをダウンロードできます。CODEフォルダに全てのソースがあります。
RC2_RX.lzh へのリンク←クリックしてダウンロードしてください。
【シリアル通信設定】AsynchroSerial
通信する相手は受信モジュールのXBEEです。Baud rateを9600に設定します。誤差は0.16%なので通信に支障はありません。Receiverは使用しませんが将来の事も考慮して、配線してありますのでEnabledに設定しています。Parityなし、Widthは8ビット、Stop
bitは1ビットです。
【PWM1〜4設定】PWM
PWM出力はTPM10、TPM11、TPM20、TPM21の4つのポートから出力できます。それぞれのPeriodを32uS、Starting
pulse widthを0μS、Initial polarityはLowです。
タイマー1(TPM1)はOutput pinが複数あり選択できるようになっています。画面右上のView Regs>をクリックすると設定レジスタの内容を確認する事が出来ます。
Output pinを変更するとSOPT2レジスタの値が変化する事を確認できます。ポートA入出力設定レジスタPTADDでPTA0は出力に設定されています。PWM出力には必要な設定のようです。周波数が高すぎて一部の関数を利用できないため?マークが表示される事があります。
Methodsタブを選んでSetDutyMSという関数の生成をしないように×印に設定してください。今回PWMでは、プロセッサーエキスパートで生成される関数は使用しないので全て×でもOKです。
Periodの32uSの数字の右のボタンをクリックすると下図のような設定画面が現れます。右側の表のStepがPWMで制御できる変化の最小値になります。一番上の行は0..062uSとなっていますが、実際には0.0625uSです。今回のPWM制御範囲は送信機から送られてくる10ビットですから0から1023の範囲ですが前進と後進に分かれてしまうので、PWM制御範囲は半分の512ステップとなります。0.0625uSを512倍すると32uSになります。Periodを32uSに設定するとPWM制御が0から511でパルス幅が0%から100%までの変化となります。周波数は31.25kHzとなりモータードライバーのPWM制御周波数範囲に収める事が出来ます。
【モジュロータイマー設定】FC1
シリアル通信タイムアウト用タイマーの設定です。コンポーネントライブラリからFreeCntrを選択し、DeviceにMTIMmodに設定するとモジュロータイマー設定になります。
Period/offsetを3mSに設定し、InterruptはDisabledとします。
【CPU設定】MC9S08SH8CPJ
CPUの設定は特に変更していません。バスクロックは16MHzです。MethodsでDelay100USをダブルクリックしてチェックを入れてください。全ての設定が終わったら左上のコマンドProsessor
ExpertのGenerate Code’RC_RX.mcp’をクリックしてコードを生成します。