アプリケーションの作成



Buildが終わった後の画面(クリックで拡大表示)

生成されたソース
View->Application Editorで移ってくると、なんとも愛想のない画面が現れる。

 画面の左側にソースファイルがカテゴリ分けされている。Source Files、Library Souce、Library Headersなどの中にソースコードが入っているのだが、これらは今まで設定した内容に従ってPSoC Designerが自動生成したものが入っている。

 ちょっと開いてみたのがこの図である。いろいろなファイルが生成されていることが分かる。Library HeadersはC用の.Hファイルと、アセンブラ用の.INCファイルの両方が生成されている。


 ついでなので、自動生成されたPWM16_1用のサポートルーチンを開いてみたのがこれ。こんなご立派なコメント入りのソースコードを自動生成するようなツールってあんまりないだろう。このルーチンは周期パラメータを設定するサブルーチン。PSoC Designerで一応設定しているけれども、途中で変更したくなったら、これを呼び出せば良いわけである。
 ラベルにで「_」が付いているのがC用、付いていないのがアセンブラ用である。アセンブラで呼ぶときはAレジスタとXレジスタにパラメータを入れてCALLすれば良いというわけだ。

APIとサンプルコードを見る
 さて、我々が直接手を出すのは、Source Filesの中のmain.cである。(アセンブラベースならmain.asmとなる)このファイルは再度GenerateApplication をやり直しても上書きされたりはしないので、プログラムを組んでいてもう一つユーザモジュールが欲しくなったような時でも安心してデバイスエディタからGenerate Applicationしなおしてしまっていい。
 さてこのmain()の中にユーザコードを書けば良いのであるが、一体何を書いたら良いのかさっぱり分からないのは当然である。
 ここで登場するのがマニュアルである。デバイスエディタでユーザモジュールを選択するときに読んだマニュアルをもう一度開いてもらいたい。Application Editorでも上の方を見ると、図のようなおなじみのリストボックスがある。これで図のようにPWMsとPWM16を選んで二つ右のアイコンをクリックである。
 そこでタブを見ると「API]と「Sample Code」というのが見つかる筈である。APIのところには先ほどチラッと見たようなサブルーチンの名前と機能の説明が、そしてSample Codeの所には実際の使用例が出ている。



、上がアセンブラ、下がCで、やっていることは同じである。さて、ここではWritePeriodやらWritePulseWidthで、周期やパルス幅を設定しているのだけども、この初期値は既にDeviceEditorで登録済みなので、変更する気が無いなら必要ない。よって、残るは下の2行、i色を付けたDisableInt()と、Start()だけになる。ついでに言うと、特に割り込みをイネーブルしない限り割り込み禁止のままなので、DisableInt()も不要と言えば不要なのだけども、まぁ、一応縁起物で残しておこう。

アセンブラも最後の2つのCALLだけ実行すればいい。

プログラムを書く
さて、このルーチンを呼べば良いということは分かったが、それでは二つあるPWMはどうやって区別されるのだろうか。これはデバイスエディタのところで最初にちょっと触れたとおり、後ろに数字を付けて、PWM16_1、PWM16_2とやっているのがそのままソースコードにも反映される。試しにPWM16_1.hというヘッダファイルを見てみよう
 APIの説明やサンプルコードでは「PWM16_DisableIntだけども実際にはPWM16_1_DisableIntであることが分かる。たとえば、PWM16_1の割り込みを禁止、PWM16_2の割り込みを許可したいなら、
 PWM16_1_DisableInt();
 PWM16_2_EnableInt();
という案配である。他のルーチンや定数定義の類も同じ銘々規則に従っている。

 ここまで分かれば話は簡単である。
 こんなソースを書けば良い。アセンブラなら、
 Call PWM16_1_DisableInt
 Call PWM16_1_Start
 Call PWM16_2_DisableInt
 Call PWM16_2_Start
という具合である。
他のモジュールを使うときも、同じような方法でAPIやサンプルコードを見て、後ろに数字を付けた実際のモジュール用のルーチンをコールするようにすれば良い。

ビルドする
ソースコードができたら、ビルドしよう。
Build=>Buildか、Build Allで自動的にコンパイルやアセンブル、リンクが行われる。
こんな感じで無事に終了したらおめでとうである。不幸にしてエラーが出たらもう一回ソースコードを良く見直そう。

ここまで来たら、プロジェクトのoutputディレクトリの下にpwmled.hexというファイルが生成されている筈である。これをプログラマで書き込めば良い。