PSoCを使い8ビットカウンターでLEDを点滅させる


psoc_conter8_01.gif
前回は8ビットタイマーを利用してLEDを点滅させた。今回は8ビットカウンターを利用してLEDを点滅させる。PSoC DesignerとCY8C29466を利用した。

使うモジュールが異なるだけで基本的な手順は前回と同じだ。省略されている部分は「PSoCを使い8ビットタイマーでLEDを点滅させる」を参照してほしい。

psoc_conter8_02.gif
PSoC Designerを起動して新しいプロジェクトを作成した。この画面(Device EditorのSelection画面)では利用するモジュールを選択する。今回はカウンターを利用するため、左側のリストから「Counters」をクリックする。

psoc_conter8_03.gif
するとPSoC Designerで利用できるカウンターモジュールが一覧される。8~32ビットまで4種類が用意されている。

psoc_conter8_04.gif
今回は8ビットカウンターを利用する。「Counter8」を右クリックして現れたメニューから「Select」を選択する。

psoc_conter8_05.gif
すると画面中央上側に「Counter8_1」というアイコンが追加される。

psoc_conter8_06.gif
次に細かい設定と配線を行うため「Config」メニューの「Interconnect」を選択する。

psoc_conter8_07.gif
この画面(Device EditorのInterconnect画面)ではPSoCの内部配線や動作クロックなどの詳細を設定できる。まずはPSoCの動作クロックなどを設定する。設定箇所は赤枠内で、設定値は前回の「PSoCを使い8ビットタイマーでLEDを点滅させる」と同じだ。

psoc_conter8_08.gif
次にカウンターの設定を行う。「Counter8_1」を右クリックして現れるメニューから「Place」を選択する。

psoc_conter8_09.gif
すると配線図の中にカウンターモジュールが配置されると同時に画面左側で詳細設定ができるようになる。画面左側を赤枠内のように設定する。具体的には
「Clock」は「VC3」に、
「ClockSync」は「Sync to SysClk」に、
「Enable」は「High」に、
「CompareOut」は「Row_0_Output_0」に、
「TerminalCountOut」は「None」に、
「Period」は「99」に、
「CompareValue」は「50」に、
「CompareType」は「Less Than Or Equal」に、
「InterruptType」は「Terminal Count」に設定する。カウンターを利用するときは「CompareOut」と「Period」は必要に応じて設定し、「CompareValue」は「Period」の半分の値にすると覚えておくといいだろう。

psoc_conter8_10.gif
次にカウンターからの出力が実際のポートに出力されるように内部配線を設定する。今回はポート20につなぐ。
まず「RO0[0]」の右側にある四角形をクリックする。

psoc_conter8_11.gif
そして現れたウインドウで一番上の三角形をクリックして青く塗りつぶされた状態にする。

psoc_conter8_12.gif
これで線が一番右側に延びた。この一番右側の線の上でクリックして現れるメニューから「Pin」を選択する。

psoc_conter8_13.gif
そして「Port_2_0」を選択すればいい。

psoc_conter8_14.gif
カウンターとポート20が線で結ばれた。確認したらソースコードを書くため「View」メニューから「Application Editor」を選択して画面を切り替える。

psoc_conter8_15.gif
この画面(Application Editor画面)ではPSoCに書き込むためのソースコードを入力する。
まずはメイン処理のファイルを開く。左側のツリーの「Source Files」にある「main.asm」をダブルクリックする。ここにメインの処理を記述する。

psoc_conter8_16.gif
ソースコードを書くときはサンプルコードを参照すると悩まずに済む(ことが多い)。カウンターモジュール用のサンプルコードを見るためにツールバーの上部で「Counters」の「Counter8」を選択し「User Module Datasheet」ボタンを押す。

psoc_conter8_17.gif
サンプルコードはデータシートの中に用意されている。「Counter8_WriteCompareValue」までは先に設定した「Period」や「CompareValue」をソースコード上から設定するものだ。必要ないのでそれ以外の部分を選択してクリップボードにコピーする。

psoc_conter8_18.gif
そして「main.asm」の中に貼り付ける。

psoc_conter8_19.gif
サンプルコードはそのままでは利用できない。「Counter8」の部分を「Counter8_1」のように置き換える必要がある。修正したら「Build」メニューの「Build」でビルドする。
ビルドが正常したらPSoC Programmerで書き込んでPSoCを動かせばいい。これでポート20にカウンターからの信号が出力され、MiniEval1のようにLEDが用意されている基板であればLEDがおよそ1秒ごとに光る。

トラックバック

この一覧は、次のエントリーを参照しています: PSoCを使い8ビットカウンターでLEDを点滅させる:

» PSoCを使い8ビットPWMでLEDを点滅させる 送信元 dinop.com
前回は8ビットカウンターを利用してLEDを点滅させた。今回は8ビットPWMモジ... [詳しくはこちら]


カテゴリー「電子工作」 のエントリー