配線図
NucleoからのSPI出力は(MISOを使わないので出力のみ)、バスバッファの74HC541でバッファリングして信号を補強した。
mbed repository:
https://developer.mbed.org/users/ryood/code/BaseMachine/ revision:2
UIとSequencerのハードウェアを分けたときに互いの結合度を下げたので、プログラムも変更してUI関係の処理はUIController Classとして分離した。
普通のGPIOピンを使ったUI部とシーケンサー部のプログラムの結合はまあまあうまく行ったようだが、I/Oエキスパンダを使ったUI部のプログラミングはまだ。機能としては9月下旬の「ベースマシンの音出し動画」まで戻った感じだ(^q^;
この間を振り返ってみると
- SPIでプロセッサ間の通信。UARTは遅いし信頼性が低い。I2Cは遅い上に難解。
- SPI信号の波形を整えた。バスバッファの74HC541を使う実験。ダンピング抵抗を入れる実験。
- I/Oエキスパンダを使う実験。
というようなことをやっていたようだ。
ToDo:
BaseMachineUIController Class内でI/Oエキスパンダを使えるようにコーディング。
配線、パラメータ等のドキュメント整理。
74HC541を使ったSPIバスバッファをユニバーサル基板で実装。http://dad8893.blogspot.jp/2016/10/spi-tc74hc541.html
PSoC4 DCOにリセット線をつける。電源の立ち上げ時にSPI信号が入るタイミングで起動に失敗するようだ。オンボードの青色LEDが点滅する。これはPSoC 4 Prototyping Kitがプログラミングモードに入っていると思う。←未確認。
<追記:2016.12.26>
SPIの信号線のCSの初期値がLo(0)になっていたのが原因だったようです。対処療法でちゃんとは把握できていないですが、初期値をHi(1)にすると起動時に青色LEDがチカチカして停止する現象はなくなりました。
SPIのCSはReset信号とうと同じく負論理で、Active Lowです。一方CやC++では0で初期化するのが普通なのでプログラミングするときはCSを1で初期化するように気をつけたほうがいいと思います。
</追記>
電源ボードを検討。±9V(安定化なし)、±5V(7805/7905で安定化?)、+3V(安定化)
メモ:
よく言われることだと思うが、規模が大きくなると掛け算でエラー発生要因が増える。ハードウェアもプログラムもユニット・テストを今まで以上に慎重にやらないといけないようだ。
完成しても、DCOやDCFをいろいろ作って遊びたいので、今回はあまり妥協はしたくない。
0 件のコメント:
コメントを投稿