Darkside(https対応しました)

名前

URL

タイトル

コメント

2021年10月11日(月) 22:41

一気に完全解決

 ハードウェアI2Cを設定し、レジスターをいじってGPIO制御はソフトで行うようにする。
 すると、単に Enable I2C が外れただけだった。ハードウェアI2Cなど設定しない時と、同じ状態になってしまった。意味が無かった。

 改めてソフトウェアI2Cのプログラムを確認すると、出力は最小限であって不用な時はこまめに入力に切り替えるようになっていた。これだと、複数のマスターが共存することも可能に見えるのだが、以前はなぜ動かなかったのだろうか?
 少なくとも、他にハードウエアI2C1が1つだけバスを共有している状態であれば、共存できそうに感じる。ならば、とにかく実験だ。
 現在、ハード的には傾斜センサー(スレイブ)のI2Cバスを dsPIC(ソフトI2C)と Jetson Nano(ハードI2C)が共有し、いずれもマスターである。

 まず、Jetson Nano の電源を切ったままSタンクの主電源を有効にする。床を傾けると、車体傾斜機構が自動的に水平をキープしてくれる。傾斜センサーを、ちゃんと読めている。
 次に、Jetson Nano の電源を入れて、同じことを試す。やはり、問題なく水平補正が機能する。
 つまり、dsPIC 側は問題がない。

 では、ハード状態そのままで Jetson Nano は傾斜センサーを読めるのだろうか?
 Sタンクの主電源を入れると、dsPIC が傾斜センサーの初期化を行う。Jetson Nano 側では初期化不用である。仮に dsPIC が初期化を失敗するようであれば、センサーを読めても0しか返って来ない。
 Sタンクの電源を入れずに Jetson Nano から傾斜センサーを読むと、0が返って来た。
 Sタンクの電源を入れてから再度読むと、ちゃんと値を取得できた。

 こうして、当初の目論見は実現できた。
 壊れたのか壊したのか分からないが i2c-1 が使用不能というトラブルで時間を無駄にしたが、代わりに i2c-0 を使うことで皮算用通りのことが実現できるようになった。
 いよいよ、傾斜センサーの情報をカメラ映像にスーパーインポーズだ。

written by higashino [Sタンク 1/16] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

Comments

TrackBacks

Darkside(https対応しました)

Generated by MySketch GE 1.4.1

Remodelling origin is MySketch 2.7.4