PSoC FirstTouchを試してみる(Under construction)

なにげに秋月をみたら新製品のところにあったので購入。¥3200。チップがもれなく4個もらえるということで、右下のDIPがサイプレスから送られてきました。抽選でiPodTouchがもらえるらしいが、こちらは期待できない。

サイプレスのサイトで登録後、しばらくして 送られてきたチップはCY8C27443-24PXIとCY8C29466-24PXIが各2個、秋月価格だと前者が@350円、後者が@500円なので、末端秋月価格1700円です。実質FirstTouchキットは1500円ということになります。なお、チップはExpackで送られてきましたので、このキットは明らかにサイプレスにとって赤だと思います。(プロモーション用ということでしょう。)

パッケージ DVDでもはいっていそう

中身 右上

おまけのチップ 右下

早速遊んでみます。

PSoC Express

パッケージの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のほうがいいのでは?

PSoC Designer

早々にExpressはあきらめたのでDesignerを使います。DesignerはCypressのサイトからダウンロードできます。面白いことに、ExpressのプロジェクトはDesignerでも開けます。

ただし、ビルドするにはCコンパイラが必要のようです。最新版のPSoC DesignerならHitec-CのLITE版が入っています。最初、あれこれいじっても全く勝手がわからないため、PSoCマイコントレーニングキットを買ってしまいました。FirstTouchの意図したとおり、だんだんはまっています。このキットには秋月でいつも品切れのPSoC MiniProgプログラマとCコンパイラライセンスがついていますので、お買い得かと思います。ただ、最新のPSoc Designerはコンパイラの種類が変わったので、ライセンスがつかえない。

まずはLEDパカパカ

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が点滅すれば成功である。

First Touch した感想

なかなか良くできてます。リコンフィグラブルなペリフェラル類、レジスタ類を全く意識せずに使える点など、ハードとIDEのセットものでなしえる技ですね。

最新版のPSoC DesignerにはLITE版ながらCコンパイラが付属、PSoCマイコントレーニングキットにもコンパイラライセンスがついています。(ただし、最新版はコンパイラが変わったのでライセンスがつかえない。)コードサイズなど、細かな点は検討の余地ありとしても、最初からC開発というのは良いと思う。

PICの出番減るかな〜。FirstTouchプロモーションキットの戦略にはまったかも。