Darkside(https対応しました)

2021年12月11日の記事

2021年12月11日(土) 21:23

効果不明だが先へ進む

 Jetson Nano ではカメラの映像取得をループのタイミングにしているので、30ミリ秒に1回ぐらいの頻度で傾斜センサーへのアクセスが発生している。
 いっぽう dsPIC のI2C&SPI用割り込みも30ミリ秒ごとなので、運が悪いと衝突が頻発する。仕様としては、あまり良くない。両者の周期はズレるべきだ。

 しかし、dsPIC の頻度を落とすのは、車体自動水平化のレスポンスに影響する。でも頻度を上げるのは、通信との共存が更に難しくなる。通信も傾斜センサーも、両方とも最優先で処理したい案件だから非常に厄介なのだ。割り込みはあくまで時分割であり、マルチスレッドではない。
 走行用 dsPIC なら通信との共存は不要なので、傾斜センサーを読んで同期信号も通じるように配線を付け替える手はある。だが、その改変は結構面倒である。謎の三端子レギュレーター過熱もあるのでこの際基板を改変ではなく新造するのもアリだが、これまでの症状からは犯人は基板ではなくコネクターもしくは TWE LITE 基板側の確率が高い。

 そもそも2箇所でセンサー情報が必要なら、センサーも2つ積むのが一番すっきりするんだよな。
 しかしコストアップになる。ハードのコストをケチってソフト製作で膨大な工数を浪費してちゃ世話ないのだが。まさかI2Cのマルチマスターがこれほど厄介とは想定しなかった。

 現状の時分割方式の実用上な不満はかなり小さくなっているので、ここはソフトによる工夫をまず試す。
 dsPIC の割り込みを15ミリ秒ごとに半減させ、頻度を2倍にする。その一方で、同期信号により衝突が検出されたら衝突終了を待たない。即座に、処理を打ち切って割り込みルーチンから抜ける。
 こうすれば、衝突が発生しないタイミングだけをつまみ食いできて、衝突終了待ちループの分の時間を節約できる。傾斜センサーが読めたら、その15ミリ秒後は何もせず抜ける、という処理を加えておけば良い感じに機能するだろう。

 いざやってみると、はっきり分かるほどの変化は無し。
 しかしアウトというほどでもないので、走行制御 dsPIC のプログラムも修正。受け取った傾斜センサー値を元に、自動水平補正が効くようにする。そして車体を台に乗せて試験・・・しようとしてサスアーム駆動サーボへの信号配線を接続していなかったことを思い出す。
 先に、各種配線を復活させよう。

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

この記事へのトラックバックPingURL
Darkside(https対応しました)

Generated by MySketch GE 1.4.1

Remodelling origin is MySketch 2.7.4