ポケコン PC-G850Vで電子回路工作(5/31)
まず、MCP3002を購入してあったのでそれを使う。
データシートはこれ。
参考にしたサイト様はこちら。
ADコンバーターとフォトレジスタを使って部屋の明るさを取得しよう。 - Raspberry Pi 電子工作
[電子工作]ADコンバーター MCP3002 を使ってみた
最初SPI通信というのが、シリアル通信と勘違いし、シリアル通信ができないとインプリメントできないと思っていたのだが、たぶんそんなことはない。
単に同期クロックに合わせて、「コマンド」と言われる信号列をポケコン側から出力(MCP3002からみると入力)、クロックに合わせて変換データをシーケンシャルに入力(MCP3002からみると出力)すればいい。
そのタイミングチャートがこちら。
この中でコマンドと言われるデータ列はサイト様を参考に「1101」とした。
スタートビット=1、シングルエンド(差動入力でない方)=1、CH0使用=0、MSB(最上位ビット)から入力=1、だ。
この赤線で引いたところを選択した。
さてタイミングチャートを自分なりに解析した。
クロックに合わせて縦線を引き、その時にどの信号をあらかじめタイミングよく立ててやるか、そして信号をどのポケコンのピンに割り当てるかを決めた。
青い字がポケコンのピンで、7~5が出力、4ピンを入力モードで使う。赤い線が実際にピンに与える値で、ちょっとずつずれている。
まず元の図からは、CSは最初のクロックがLOWになる直前より少し前にLOWに落としてやらないといけないという風に読める(つまりCS=LOWとCLK=LOWは同じタイミングではない)ので、じゃあクロックでいう一拍分前からLOWにしてやることに。
それが7ピンの最初の前倒しでLOWの理由。
次に灰色の所は何でもいいようなのでLOWにし、そうするとCLKはCSの前倒しに引っ張られて2拍前からLOWに。
5ピンは、前回(だいぶ前3/下)までのHPで解説したように、クロックの立上がり前からHI/LOWにしておくという事でStartのHIを最初のCLK=LOWの時からHIにしておく。CLK=HIの間もHIをキープ(つまり2拍分)。以下同様にSGL=HI、ODD=LOW、MSBF=HIもCLK2拍分キープ。
最後に、ポケコンの4ピンは入力ピンなのだが、最初のNullBitも同じ考え方で、CLK=LOWになったらNullBit=LOWになり、CLK=HIの間はキープされ、次のCLK=LOWの立下り直前まで安定していると読めるので、CLK=LOWの時はあえて読み出さず、CLK=HIの時に読み出す。それが4ピンが赤の点線になっている理由。
もちろんB9以降は点線が2本になっているがHI/LOWのどちらかという意味。NullBitはLOWだからね。