PSoC FirstTouchを試してみる(Under construction)
なにげに秋月をみたら新製品のところにあったので購入。¥3200。チップがもれなく4個もらえるということで、右下のDIPがサイプレスから送られてきました。抽選でiPodTouchがもらえるらしいが、こちらは期待できない。
サイプレスのサイトで登録後、しばらくして 送られてきたチップはCY8C27443-24PXIとCY8C29466-24PXIが各2個、秋月価格だと前者が@350円、後者が@500円なので、末端秋月価格1700円です。実質FirstTouchキットは1500円ということになります。なお、チップはExpackで送られてきましたので、このキットは明らかにサイプレスにとって赤だと思います。(プロモーション用ということでしょう。)
パッケージ DVDでもはいっていそう 中身 右上 おまけのチップ 右下 |
早速遊んでみます。
パッケージのCDにはPSoC Expressが入っている。サイプレスのサイトにいくつかのサンプルデザインがあり、それらを落としていじってみる。
Webを漁ると、PSoCの開発はほとんどがPSoC Designerを使っている。Expressは全くというほどみない。Expressはコーディングなしで開発できるよう意図されている。
ところが、ある程度知っている人だと、Expressのほうが難しいんじゃないか。下の画面はExpressで、FirstTouchのサンプルプロジェクト「CY3270MFLightSensor」を開いたところ。 このプロジェクトは、光入力でLEDの明るさを制御するというものだ。
中央のペインのダイアグラムが、光センサの入力によるLEDの制御を視覚的に表している。処理的にはA/Dコンバータが入力でPWMのデューティを変化させるということになる。これらモジュールはA/DやPWMのメタファーになっている。
Lightをセレクトして、DataSheetをみると右ペインが出てくる。LX1972というのはフォトDiの型番のようだ。
Expressのミソはおそらく、これらセンサや出力等の機能を選び、それらを結びつけるだけで、コーディングは不要というところにあるのだろう。センサとマイコンの接続、マイコン入出力の設定、マイコンのプログラミングは省略されている。この辺がExpressということなのだろうか。センサとマイコンとの接続はDataSheet中に記載されている。
ソフトウェアレベルからみたモジュールの出力はユーザが使いやすいように、0-100%で正規化されているようだ。こう考えると、いいことずくめに思える。ところが、Expressが用意したモジュール以外を使いたくなったらどうするのか。たとえば、上記のLight SensorsにCDSはない。おそらく自分でもモジュールを作ればよいのだろうけど、結局のところExpressのモジュールを理解する必要が生じるだろうから、余計にメンドクサイ可能性が高い。これなら最初からDesignerのほうがいいのでは?
早々にExpressはあきらめたのでDesignerを使います。DesignerはCypressのサイトからダウンロードできます。面白いことに、ExpressのプロジェクトはDesignerでも開けます。
ただし、ビルドするにはCコンパイラが必要のようです。最新版のPSoC DesignerならHitec-CのLITE版が入っています。最初、あれこれいじっても全く勝手がわからないため、PSoCマイコントレーニングキットを買ってしまいました。FirstTouchの意図したとおり、だんだんはまっています。このキットには秋月でいつも品切れのPSoC MiniProgプログラマとCコンパイラライセンスがついていますので、お買い得かと思います。ただ、最新のPSoc Designerはコンパイラの種類が変わったので、ライセンスがつかえない。
PSoC Designerを使ってLEDをパカパカ点滅させてみよう。すべてのマイコンはLEDの点灯からはじまるのです。
いつもここから始まるNew Project。適当に名前をつけて、あとは保存先をどっか希望するところにしておく。
デバイス選択する。View Catalogは絞り込みなんかができて便利。よく考えられている。開発言語はCを選択する。 ツールは重め。Xilinxのもそうだったが、最近の統合ツールは重すぎじゃないか?
C言語を使うのでCを選択する。
これがView Catalogで出てくるデバイス選択画面。USBの有無、パッケージ等で絞れる。
最初にこのような画面になるはず。パカパカ点滅させるためにPWMを選択する。左のPWM16を選択→右クリック→SELECTする。上のペインに出てくる。
メニュー→Config→Interconnect。この画面はWebでよく見かける。 回路図っぽいものはモジュールが定位置に配置されているだけで、移動させたりは出来ません。あくまでInterconnectの通り内部配線にフォーカスした作りです。
First Touchのデバイスは安価なのでブロックが少ない。
接続図の上にあるモジュールを右クリック→Placeとする。これをやるとハードウェアの空きブロックにモジュールが配置される。このあたりはツールの使い方を知らないとチンプンカンプンになる。Placeすると、使用されたブロックは色が変わる。
出力ポートの配線。赤色LEDをパカパカさせてみる。First Touchの説明書によれば、赤LEDはCPUの10番ピンポートP1[3]というところにつながっているらしい。Port_1_3を左クリック→Select→GlobalOutOdd_3とする。ポートは出力バスの任意のところに接続できる訳じゃなく、入力、出力などは選べるがディジットは変更できないようだ。
縦のバス線と横のバス線の間にセレクタのようなものがある。これをクリックするとこのような画面が開くので、経路を設定する。
完了するとこうなる。
PWMの設定、Clockは内蔵32kHzを使う。これで64000のカウンタだと、0.5Hzの周期となる。Pulse Widthを32000にすれば、1秒ON、1秒OFFになるはずだ。
CompareOutを設定すると、PWMモジュールから出力へ線がつながる。16bit PWMは実際には8bitカウンタを2個使っているので、ブロックは2個消費する。
ここまでOKなら、メニュー→Config→Generate Applicationとする。でもって、メニュー→Config→Application Editorとする。MSVCライクなツリーペインが現れる。main.cというファイルが出来ているので、その中にただ一行
PWM16_1_Start(); |
と記述する。
メニュー→Build→Build Allでビルドする。これで完了。あとは書き込みをする。メニュー→Program→Program Part...とする。PSoC Programmerが起動する。生成したHEXファイルも読んだ状態で起動。ただし、Designerでリビルドしても再読込してくれないのでそこは注意。あとはProgramをクリックするだけ。
書き込み完了とともに、赤LEDが点滅すれば成功である。
なかなか良くできてます。リコンフィグラブルなペリフェラル類、レジスタ類を全く意識せずに使える点など、ハードとIDEのセットものでなしえる技ですね。
最新版のPSoC DesignerにはLITE版ながらCコンパイラが付属、PSoCマイコントレーニングキットにもコンパイラライセンスがついています。(ただし、最新版はコンパイラが変わったのでライセンスがつかえない。)コードサイズなど、細かな点は検討の余地ありとしても、最初からC開発というのは良いと思う。
PICの出番減るかな〜。FirstTouchプロモーションキットの戦略にはまったかも。