PSoC4 Pioneer Kitでサンプルベースで動かしてみることはできましたので、次にゼロからLチカしてみました。
PSoC Creatorを起動し、「File」→「New」→「Project」で新しいプロジェクトを生成します。冒頭に「Empty Templetes」がありますので、その中から「Empty PSoC4 (CY8C42*) Design」を選択、Name:にプロジェクト名を入れます。
「OK」を押すと空の回路図が表示されます。
まず、LチカのためにTimerブロックを置きます。右側に並んでいる機能ブロックの一覧から「Digital」→「Functions」→「Timer」を選ぶと、右下にブロックのプレビューが表示されるので、これを回路図上にドラッグ&ドロップします。
さらに以下の作業をします。
- 出力端子を作るために「Ports and Pins」→「Digital Output Pin」を選択して、適当な場所にドラッグ&ドロップします。
- Timerの出力を2分周してLEDの点灯デューティーを50%にするため、「Digital」→「Logic」→「Toggle Flip Flop」を選択して、Timerと端子の間にドラッグ&ドロップします。
次にブロック間を結線します。
- HFCLKの位置を左側に少しずらして、HFCLKをTFFにも接続できるようにします。
- 左上のワイヤを選択して、HFCLKをTFFのCLKにも接続します。
- Timerのtc(Terminal Count出力)をTFFのtに接続します。
- TFFの出力のqを出力端子に接続します。
次に、個々のブロックの設定を行います。
まず、HFCLKをダブルクリックすると、クロック源の設定画面が開きます。
初期設定はHFCLKの24MHzになっていますが、ここでは最終的にT-FFで2分周した後で1Hzを得ればよいので、より低い周波数に変更します。
Sourceのプルダウンメニューを開くと、LFCLKの32kHzが出てくるので、こちらに変更します。
変更したら、「OK」を押して抜けます。
同様にTimer_1をダブルクリックします。
32kHzを分周してT-FFに入力する2Hzを生成するため、以下の変更を行います。
- Resolutionを16bitに変更
- Periodを16000に変更
ここで、このタイマーブロックの名前(インスタンス)が「Timer1」になっていることに注意してください。この名前が後で main() の中で必要になってきます。
同様に端子のシンボルをダブルクリックして端子の設定を行います。
Nameの所に適当に端子の名前をつけます。
次に、端子の割付を行うために、「Project」→「プロジェクト名 Resources」で端子配置図を出します。
ひらくと、以下のような画面になります。
右上の赤丸部分のプルダウンメニューを開くと、ポートが選択できますので、回路図を参照して青色LEDのP0[3]を選択します。
これで回路は完成なので「Project」→「Export to IDE (Lchika)」でAPIを生成します。
Buildができると、uVisionにエキスポートするかを聞かれます。
しかし、ここはCancelで大丈夫のようです。生成できたら、ファイルがたくさん追加されます。
次に、main()にカウンタ(Timer1)を初期化・起動するためのコードを追加します。Source Files の中から main.c を選択して、main()の直後にTimer1を起動するコード(赤で囲んだ部分)を追加します。
これでLチカは完成ですので、BuildしてProgramすると概ね1秒に1回点滅します。