質問: pic18f2550でのa/d変換 初めて質問させていただきます。 現在、pic18f2550でa/d変換プログラムと、usb(cdc使用)でのパソコンへの文字列送信プログラムを作成しているのですが、うまくいかないので教えてください。 開発言語はcで、コンパイラはc18で、mplab-ideを使用しています。 a/d変換を行う際、sleep機能を用いているのですが、a/d変換割り込みでsleepを解除すると、パソコンへの文字列送信ができなくなってしまいます。 sleep機能を使用しなければ文字列は送信できるので、sleepしたせいで文字列が送信できなくなっているみたいです。 sleep解除後もパソコンからの受信は可能で、プログラム自体は動いているみたいです。送信だけができません。 文字列の送信プログラムは下記の命令を使用しています。 if(musbusartistrfready()) putrsusbusart("xxxx xxxx"); おそらく、 musbusartistxtrfready が0を返しているのだと思いますが、原因が全くわかりません。 このままでは開発が進まず、困っています。分かる方がいらっしゃいましたらどうかよろしくお願いします。
回答: 毎度joです。 スリープ機能はシステムクロックを停止させてpic自身の消費電力を最小に抑えるものです、 システムクロックが停止しているので、当然通信は出来ません。 usb接続のようですからバッテリ駆動では無いと思われますが、 スリープさせる原因がノイズを抑えてad変換精度を向上させる為なら、 nfを考慮して出来るだけ大きな信号をadコンバータに入力するとか、 複数回ad変換して平均値を取るなどの方策を取ってスリープしない事です。