Darkside(リンクエラー修正しました)

2019年11月5日(火) 21:18

ピン割り込み遅延

 電流電圧センサーに、電源線だけハンダ付け。

 これにより、電圧モニターが可能となる。分解能は1.25ミリボルトなので、8で割ると0.01V単位の数値が取得できる。余りが4以上なら切り上げて、四捨五入した電圧を送信機へと送り返す。
 手元の電圧計より0.5%ぐらい低い値だが、取得は正常に行えているようだ。モーター電流をモニターしたときのような平均化は不要で、そのまま安定した数値を取得できる。

 ただし、電流もモニター開始したり、走行用モーターを駆動したりしても安定するかどうかは、やってみるまで分からない。バッテリー電圧は、それほど大きなノイズが出るような計測対象ではないはずだが。
 電流モニターは、前照灯を点灯させるときに必要となる。

 製作の順番としては、次はサスアーム駆動用サーボ制御PICである。新機能として、まずはSPI受信の実装だ。

 SPI受信で問題になるのは、GPIOピンの割り込みルーチンが実行されるまでの遅延である。送信開始をSTRB信号で知らせるが、そこでピン割り込みが発生するようにしておく。そして割り込み処理中でクロックとデーターを読むのだが、遅延次第で読み込み開始までの必要待ち時間が決まる。

 割り込みルーチンの先頭で余剰ピンをHに変化させ、オシロ(青)で確認。STRB信号がオシロ(黄)なので、両者の立ち上がりの差が割り込み遅延となる。結果は、安定して約5μ秒。予想より速く、これならSPI受信でポーリングを使う必要性がほぼ存在しない。

 オシロ(青)で、SPIのクロックをモニターしてみた。1バイトの送信に0.1ミリ秒以下と考えて良い。キー送信量が少し増えても、1ミリ秒で送信は完了する。速度的には充分だ。
 これはソフトウェアSPIだが、I2Cもソフトウェアで実現させており速度は同様。いずれも、100KHzのオーダーだ。

 SPIの波形は綺麗で、ノイズは感じられない。これなら送受信が問題なく実行できるだろう。そう安心したところで、液晶ディスプレイに何も表示されないことに気付いた。SPI受信したキーのうち、アナログ値2つをLCD表示させるコードが記述してあるはず。それが、何も表示されない。

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

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

Comments

TrackBacks

Darkside(リンクエラー修正しました)

Generated by MySketch GE 1.4.1

Remodelling origin is MySketch 2.7.4