デバイス設定
ソフトウェアはロータリーエンコーダーを読み込むため、タイマーをインプットキャプチャーモードで使用します。
更に設定データの転送にSPI(Serial Perioheral Interface)を使用します。
CodeWarriorで作成したプロジェクトフォルダをダウンロードできます。CODEフォルダに全てのソースがあります。
EVR.lzh へのリンク←クリックしてダウンロードしてください。
お馴染みのプロセッサーエキスパート(PE)を使って設定して行きます。
下図のBeansフォルダがPEで設定した結果です。プロジェクト名はEVRです。
・SM1:SPI設定
・CS:チップセレクト信号出力ポート設定
・RE_A:ロータリーエンコーダーA相入力ポート設定
・RE_B:ロータリーエンコーダーB相インプットキャプチャモード設定
・IntVect1:割り込みベクター設定
・MUTE:MUTE制御出力ポート設定
SM1設定(SPI)
Beans selecterのコミュニケーションフォルダのをダブルクリックして設定します。
Input pinは使用しませんがEnabledは必須です。Sleve serect pinは使わないのでDisabledに設定してください。
Shift clock rateは0.25uS(4MHz)に設定します。PGA2311の最大クロックレートは6.25MHzです。
Clock edgeは立下り、 Empty charactorは0、Send MSB firstはyesでPGA2311のデジタルインターフェースに適合します。
Methodsは標準の設定で構わないので特に変更しません。
CS設定(IO Poart)
Beans selecterのPoart IOフォルダのをダブルクリックして設定します。DirectionをOutput、Init.valueを1に設定します。
Methodsは特に必要な設定はありません。
RE_A設定(IO Poart)
RE_Aも通常の入力ポートです。で設定します。
Pull resistorはPull upに設定してください。Methodsは特に変更の必要はありません。
RE_B設定(Capture)
Beans SerectorのMeasurementフォルダのをダブルクリックして設定します。
Pull resistorはpull upに設定します。
Edgeはboth edgesに設定します。
Maximum timer of eventは良く解りませんが一番早い物を選択しています。遅くしても特に動作は変わりませんでした。関連レジスタを見てみるとプリスケーラの値が変化しているので、この端子からのパルスをカウントして、使う場合に意味が出てくると思います。インターラプトをディスエーブルに設定しているのでカウンターのオーバーフローなどで割り込みが発生する事はありません。
この設定もMethodsは特に使わないので設定しません。
IntVect1設定(InterruptVector)
Beans SerectorのInterruptsフォルダのをダブルクリックして設定します。
キャプチャーのエッジで発生した割り込みを割り込み処理関数に割り当てるベクターテーブルを設定します。
Interrupt vectorが割り込み原因ですからVtpm1ch0に設定します。
割り込み処理関数はEVR.cに記述されたRE_Interrupt()ですからISR nameをRE_Interruptに設定します。これでVector.cの中のベクターテーブルが書き換えられます。Methodsはありません。
MUTE設定(Bit IO)
MUTEも通常の出力ポートです。で設定します。
Init.valueを1に設定してください。Methodsは特に変更の必要はありません。
CPU設定(MC9S08SH8CPJ)
CPUの設定は特に変更していません。バスクロックは8Mhzです。MethodsでDelay100USをダブルクリックしてチェックを入れてください。
全ての設定が終わったら左上のコマンドProsessor ExpertのGenerate Code’プロジェクト名’をクリックしてコードを生成します。