送信モジュールTx1-Jのジョイスティックは実装不良の様で正常動作しませんでしたが、PPM信号を入力する事で無事に、受信モジュールRx31を制御できるになりました。 ※回転ボリュームがスロットル。スライドボリュームがステアリング。 イロイロと嵌った事柄があるのですが、PPM信号出力プログラムの改良点についてカキコします。 まずは、Txに入力するPPM信号のポラリティです。 当初はHパルスでしたが正常に動作せず、悩んだ挙句に反転したらあっさり動きました。 ラジコンの世界では常識なのかも? 次に、USBの通信でPPM信号が乱される問題。 USBケーブルでPCに繋いで、PC側からPPMの各チャンネルのパルス幅を制御してみたり、PICに繋いだボリューム値をPCでモニターしていると、PPMのパルス幅が時々乱れる。 で、受信モジュールに繋いだサーボも微妙に右へ左へとブレて止まらない。 PIC側のUSB処理を停止して、PCからのバスパワー供給だけならPPM信号も安定してる。 やはり、PCから常時死活チェックが飛んでくる為、PPM信号を生成している割り込み処理が遅れるのが問題の様です。 そこで、USB処理を低位優先割り込みに、PPM生成用のCCP割り込みを高位優先の割り込みに書き換え。 ●割り込み関数のUSBDeviceTasks()とPPM_int()を入れ替え。 //These are your actual interrupt handling routines. #pragma interrupt YourHighPriorityISRCode void YourHighPriorityISRCode() { // USBDeviceTasks(); PPM_int(); } //This return will be a "retfie fast", since this is in a #pragma interrupt section #pragma interruptlow YourLowPriorityISRCode void YourLowPriorityISRCode() { USBDeviceTasks