Top | カテゴリTop | 戻る
2019年11月14日(木) 21:33
これは、STRBとクロックをオシロで確認したもの。SPI信号は完全に機能している。そしてSPI通信に関しては、受信機PICからサーボ制御PICへの通信で動作確認できている。 サブPICへのSPI通信は、そのPICプログラムをそのまま使用しているので、アルゴリズムにバグはない。
変数のタイプミス等で空変数を参照し、ゼロになっている可能性が高い。だが、幾ら慎重に調べても誤りは発見できない。
ところが、SPI受信をGPIO割り込みではなくポーリングで行ったところ、正常に受信できた。 やはり、割り込みでは受診できない。
ここに至り、真相に気付いた。 そういえば、元のSPI受信プログラムは割り込みでなくポーリングになっていた。それを割り込みに変更しても受信できたしディレイも問題問題無かったので、プログラムが簡単になる割り込み受信に変えたのだった。
なぜサーボ制御PICは割り込み受信できたのに、サブPICはできないのか? 更に言えば、以前は割り込み受信できなかったのに、なぜ最近の確認時は受信できたのか? これはもう、PICの機種が違うからとしか思えない。完全な類似機種のはずが、PIC16F1579 では割り込みが機能し、PIC16F1575 では機能していない。
幸いにしてサブPICは、受信データーを横流しするだけの極めて単純な処理である。ポーリングで全く問題がないので、SPI受信をポーリングで行うことにした。 これにより、4つのサーボを完全に想定通りに制御できるようになった。
PWM直結の4サーボは、当然のごとく何の問題もなく制御できた。これにより、サーボ制御PICから8つのサーボを自在に操れるようになった。 ここから車体傾斜を適切に行うのがまた厄介なのだが、本質的な問題はもう無い。
車体傾斜機能を製作は、ここで一旦中断し、大ヤマの走行用モーター制御に移ることにする。
written by higashino [Sタンク 1/16] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]
Generated by MySketch GE 1.4.1
Remodelling origin is MySketch 2.7.4