ロボット
今日の進捗はSPIのアドレスとコマンドを同時送信してのスレーブ指定をして通信をすることでした。できてはいません。なぜかマスター側がリセットかかるとスレーブとの同期ができなくなってしまいます。今まではちゃんとできていたのに不思議ですね。おそらくですが、スレーブ側の処理(アドレスチェックとコマンドの推定)をすると、時間がかかってしまい、次のマスターの読み出しの時までに送信するデータが用意できていない可能性があるとだと思います。
これを解決するアプローチを2つ考えました。
1つ目は送信データの「セット完了信号」を送るという方法です。これに関してはピン数が増えるので問題です。なのでマスターのSSピンを入力に切り替えて、スレーブ側のSSピンを出力に切り替えるという方法です。
マスター:デジタル出力—->デジタル入力(割り込み)スレーブ:デジタル入力(割り込み)<-—デジタル出力マルチプルマスターと言ってもいいような方法ですね。これしか思いつかない…
SSピンをデータ準備完了サインとして使うとかマスターとスレーブで使い方が同じなんて本当に頭悪いと思いますよ笑。
もう2つ目は、マスターとスレーブの同期が切れたらスレーブにリセットする方法です。信号て言うからマスターからなにか通信コマンドで送るのかと思いがちですが、デジタルピンでリセットピンに無理やり0V打ち込むだけです。スレーブ側でできます。スレーブ側のマイコンが自分でリセットボタンを押す感覚です。でもこれしかないですね。ソフトウェアリセットみたいなのがあれば即解決。2秒間データ受信で自分のアドレスが来なかったらリセットをするみたいな感じですかね。もしくはソフトウェアリセットですね。ハードウェアリセットはノイズ乗っかったらよくないので(と伊藤が言ってます)。
明日はソフトウェアリセットと、ある一定時間以上データが来なかったらエラーを知らせる(LEDを光らせる)をしたいと思います。
ここまでくると、何を今までしたのかがわからなくなってくるのでレポートの活用どきだなと思っています。仮説と検証、結論の3段階の工程を経てレポートを書きたいです。多分3年生になった時にとても役立つのがこのレポートだと思います。記録をつけるとか、何を使ったとかを記録つけるのを心がけていきたいです。習慣づけるのはいいことです。

Loading Comments...