2012年9月10日月曜日

PSoC3 やってみた。

ご無沙汰しています(汗

ここんところ、いろんな講座や講習会にでることが多くて
意外に楽しんでいたりします。

GENET 画像処理分科会 では、ひさびさ?にガッツリ受講生していますし。

テクノス株式会社の利弘さんが講師なのですが、。話慣れてるのか、
キャラが立ってるのもあって、おもしろく聞かせてもらえてます。
まだ、第一回が行われたばかりで、本題には入っていないわけですが
のんびりとでいいので、しっかり教えて欲しいところです。
僕的には、

  1. アルゴリズムや手法の組み合わせの妙
  2. 実装事例
あたりが、ざっくりでもいいのでみれればいいなぁ、とおもうのですが
さすがにここらあたりは、経験的なものだろうし、仕事のキモになる部分でしょうから
なかなか教えてもらいにくいところかもしれません。
まぁ、ゆっくり、落第しないようにがんばりたいところです。


閑話休題。

7月に、サイプレス社のPSoC3ワークショップに行ったわけですが
実際に、手元のボードで、チコチコと遊んでみています。
ワークショップのお題を適当にやってみたら、おおむねわかってくるんですが
逆に言うと、あまりにも従来版の考え方とちがうので、「???」ってなるカンジですね。

PSoC Creater2.0 を立ち上げて、まずは利用コンポーネントをスケマティック画面に
貼り付けて配線しちゃいます。




画面では3つのブロックでつくっています。枠囲みはとくに意味はないので
ほんとうに図面チックに進められます。(ただし、日本語入力が×なのはご愛敬...)
今回は、ワークショップの例題どおり、
1.ボタンの割り込み取得でLEDの点灯
2.VRの値に応じて、LEDをPWM点灯
3.VRの設定値をLCDに表示して、バーグラフ的にも表示させる

っていうのを一度に実装しちゃおう!的内容です。
このうち、2についてはハード的にPGAがやってくれるので、コードが
ありません。(初期化&開始処理のみ)
これをソフト的にやろうとすると結構面倒くさいので、PSoCの面目躍如といったところでしょうか。





で、これがソースコード一式。
メインループ内ではADの変換完了をまって表示に展開しているだけです。
う~ん、お手軽感が伝わらないけど、まぁそれなりにおもしろいなぁと。
今回はAD値を12bitのΔΣにしたけど、20bitまではいけるのでいろいろ
おもしろいことにはつかえそうなカンジですね。

実際に動作させている写真はこれ。



基板左端のVRを回すとLEDがそれに応じて光るわけです。
そのときのVRの取得値はADで取り込んでLCDに表示すると。


さて、実際にここまでやってみて、おもしろいとはおもうんだけど、
スケマティックで変更したり、ユニット追加してから、ソースツリーに
対応ソースが生成されるまでに差があって、そのままではうまく追加されない
ことも結構あって、関数名をさがせないことが結構あったりします。
まぁ、スケマティックを変更したら、その場で一旦Buildしちゃえば
生成されるわけだけど、それなりに時間がかかるので、もうすこしなんとかならないかなぁと。

ま、PSoCデザイナーのダメダメぶりとはひと味ちがうかんじで、これなら許せる感じに
しあがってますね。
あとはもうすこしわかりやすい、チュートリアルがそろってくればいいのかなぁ。

あ、そうそう、デバイスの価格が高いのもちょっと問題かもしれず。
いまつかってるPSoC3の最上位版だと2500円くらいかかるので
安いCPU+CPLDとの差別化がうまくいくかどうか、が問題かもしれませんな。