秋月で扱っているデジタルカラーセンサS9706で遊んでみました.浜松ホトニクス製,感度モードはHighとLowの2段階,12ビットデジタル出力,ということで,PSoCでなくても簡単に遊べるわけですが,ま,それはそれ(笑).
やはり秋月のSOP8-DIP変換基板に載せました.センサは90度時計回りに回っている状態です.左下がDIP配列の1番ピンになります.6ピンしか使わないので,DIPの4番ピンと5番ピンはNCです.
この前のセミナーで買ってきたCY3210-PSoCEVAL1に組み立てました.チップは27443.LCDの表示は,上段が4ケタづつのHEXで,R,G,B(12ビット値)と,センサの露光時間(単位は1/10msec)です.右側のLED1が点灯しているのは高感度モードを表しています.(低感度モードでは消灯.)
センサの1番ピンがDoutでデータの読み出し用.これはP0[3]に入っています.中でバッファリングしてP0[7]に出し,LED4を点灯させています.
2番ピンがVdd,3番ピンはGndです.
4番ピンが感度モードの切り替え.Hで高感度,Lで低感度.感度比は9:1です.P0[0]につなぎ,LED1でモニタリングしています.DigBufを使っているのは見逃してください(笑).手抜きです.ちゃんと気をつけて注意深くコーディングすれば不要のはず…
5番ピンはCKで,Doutからデータを読み出す時のクロックを与えます.P0[1]につないで,LED2でモニタリングしています.L→HでDoutにデータが出ます.もちろん普通のマイコンのようにHLHLと直接IOポートを叩いてクロックを作ってもいいですが,今回はSPIMモジュールを使用.以前PSoCライターを作ったとき,参照したApplication Note で読んで感動した覚えがあります.モード2にして,H→Lでデータを読むようにします.SPIMモジュールは8ビット単位の通信なので,今回は12×3=36bitの受信なのですが,40bit受信して36bit分使う,というプログラムになっています.
6番ピンはGateで,Hの間だけセンサが露光します.感度モードと露光時間によって,センサの感度範囲が決定されることになります.P0[2]につないで,LED3でモニタリングしています.PWM16をワンショットで使っています.時間が正確に出せるところがいいですね.(タイマー割り込みでIOポートを叩くときの遅れが…などと気にしなくてよいので.)
計測値のアンダーフローやオーバーフローを見て,感度モードと露光時間を調節することができるはずですが,やってみるとなかなか難しいです.ちゃんと考えないと,ちょこちょこっと適当にやるのではだめですね.ソースを置いておきます.よろしかったらお試しください.「S9706Demo_50.lzh」をダウンロード CY3210 + Designer 5.0 SP1 + 27443 です.
PSoC遊びは楽しいですね.時間があっという間に過ぎます.いろいろ遊びたいネタはあるのだけど,時間がなかなか作れなくて…すぐに疲れてしまうのもいけないです.やらないからますますやらないわけで,毎日ちょこちょこやればフットワークが軽くなるのは承知しているのですが,「フリーズ!」信号が脳内から発せられるともういけません…人にサービスする時間をもう少し減らして自分のために使いなよ,という深層心理からのサインなのかもしれません.まあぼちぼちゆるゆるでやりまっしょい>自分.