![]()
前回は8ビットタイマーを利用してLEDを点滅させた。今回は8ビットカウンターを利用してLEDを点滅させる。PSoC DesignerとCY8C29466を利用した。
使うモジュールが異なるだけで基本的な手順は前回と同じだ。省略されている部分は「PSoCを使い8ビットタイマーでLEDを点滅させる」を参照してほしい。
![]()
PSoC Designerを起動して新しいプロジェクトを作成した。この画面(Device EditorのSelection画面)では利用するモジュールを選択する。今回はカウンターを利用するため、左側のリストから「Counters」をクリックする。
![]()
するとPSoC Designerで利用できるカウンターモジュールが一覧される。8~32ビットまで4種類が用意されている。
![]()
今回は8ビットカウンターを利用する。「Counter8」を右クリックして現れたメニューから「Select」を選択する。
![]()
すると画面中央上側に「Counter8_1」というアイコンが追加される。
![]()
次に細かい設定と配線を行うため「Config」メニューの「Interconnect」を選択する。
![]()
この画面(Device EditorのInterconnect画面)ではPSoCの内部配線や動作クロックなどの詳細を設定できる。まずはPSoCの動作クロックなどを設定する。設定箇所は赤枠内で、設定値は前回の「PSoCを使い8ビットタイマーでLEDを点滅させる」と同じだ。
![]()
次にカウンターの設定を行う。「Counter8_1」を右クリックして現れるメニューから「Place」を選択する。
![]()
すると配線図の中にカウンターモジュールが配置されると同時に画面左側で詳細設定ができるようになる。画面左側を赤枠内のように設定する。具体的には
「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」の半分の値にすると覚えておくといいだろう。
![]()
次にカウンターからの出力が実際のポートに出力されるように内部配線を設定する。今回はポート20につなぐ。
まず「RO0[0]」の右側にある四角形をクリックする。
![]()
そして現れたウインドウで一番上の三角形をクリックして青く塗りつぶされた状態にする。
![]()
これで線が一番右側に延びた。この一番右側の線の上でクリックして現れるメニューから「Pin」を選択する。
![]()
カウンターとポート20が線で結ばれた。確認したらソースコードを書くため「View」メニューから「Application Editor」を選択して画面を切り替える。
![]()
この画面(Application Editor画面)ではPSoCに書き込むためのソースコードを入力する。
まずはメイン処理のファイルを開く。左側のツリーの「Source Files」にある「main.asm」をダブルクリックする。ここにメインの処理を記述する。
![]()
ソースコードを書くときはサンプルコードを参照すると悩まずに済む(ことが多い)。カウンターモジュール用のサンプルコードを見るためにツールバーの上部で「Counters」の「Counter8」を選択し「User Module Datasheet」ボタンを押す。
![]()
サンプルコードはデータシートの中に用意されている。「Counter8_WriteCompareValue」までは先に設定した「Period」や「CompareValue」をソースコード上から設定するものだ。必要ないのでそれ以外の部分を選択してクリップボードにコピーする。
![]()
サンプルコードはそのままでは利用できない。「Counter8」の部分を「Counter8_1」のように置き換える必要がある。修正したら「Build」メニューの「Build」でビルドする。
ビルドが正常したらPSoC Programmerで書き込んでPSoCを動かせばいい。これでポート20にカウンターからの信号が出力され、MiniEval1のようにLEDが用意されている基板であればLEDがおよそ1秒ごとに光る。







