基板とプログラムの関係、なかなか、安定しません。
基板完成してから4M変動をいれたら動かなくなっってはまってしまいました。
●解決した課題でTIPSとなるもの
①AD7193が時々一定値しかでなくなる。
=>未解決解析中次の記事までお待ちください
<まだ安定してない、MISOが出ないなどハード不良>
サドル基板のAD7193は安定しているのをみると
基板にぎゅうぎゅう詰めにした影響かもしれない。
=>オシロでCLCK,MISO,MOSIをみると波形が立ち下がってない場合があるので、3本4.7KΩでプルアップしました。
=>信号線を平行に並べて配置すると干渉ノイズでダメ
➁Xbeeのシリアル設定をRTS,CTSをいれてハードFLOW設定にしたときに、マイコンからの送信は、正確に送信できるが、ホストからマイコンへの通信ができない。
=>ホストから3個のマイコンへ同時にスタート信号を送りたいのですが
マイコン側が受信できない現象にぶつかってしまい泥沼状態になりました
=>不思議な現象ですが、通常に秋月のXbeeUSBIFボードでは、双方自在に送受信できるのですが、Nucleo L432KCのシリアルに接続するとXbeega受信しなくなるという現象です。秋月のボードがどうしてるかわからないので、試行錯誤を繰り返した結果
「XbeeのRTSをGNDにおとすと送受信ができるようになりました」
=>マイコンとXbee間はFLOW制御する必要はなく、XbeeのCoordinatorーRouter間が通信エラーが頻発するのでその区間だけFLOW制御すればいいので、マイコンとXbeeのRTS、CTS結線はしないで、マイコン側もFLOW制御設定をしないでおきましたが、その場合、マイコン側Xbeeから送信は正確にできるが、ホストからの受信が全然できないという課題が発見されました。
=>オシロで秋月のUSBIFボードをみていると、CTS,RTS信号は常にGNDで静止してました。しかし、秋月のボードを単独でマイコン接続設定するとRTSが3.3Vにあがってました。そこで、RTSをGNDにとすと、見事の双方向通信ができるようになりました。
もともとマイコンとXbee間はFLOW制御しないのでどうでもいいのでGNDに落とすのは、Xbeeと秋月ボードの都合と判断しました。
試行錯誤は、ブレッドボードでやるのが便利です。CTSとRTSをGNDにしたり3.3Vにしたりしてプログラムの条件設定をかえながら数十とおりの実験をした結果です。
③ピン割り込みとシリアル割り込みを同居させるとシリアル通信がおかしくなる
上記①、➁を解決して、いざ本基板で本番プログラムで動作させるとAD7193のPC.printfが異常な値を出力してきます。Xbeeへの出力は正常なので、シリアル割り込みで、USBシリアルがおかしくなっていると判断して、シリアル割り込みをやめて、メインLOOP上のIf分で、ホストからの受信処理をすることにしました。LOGのスタートするとき1回だけ受信すればいいだけなので、1回しか使わないので、割り込みの必要はないと考えました。
●以後
3個マイコン基板の一斉動作信号をホストから送って、どのくらい遅延がでるか、Xbeeの動作でばらつくとおもいますが、それが許容レベル(数msec)なら、使えると思います。もしだめなら、今まで通りクランク角度を測定して位相合わせをしないといけません。