このQ&Aは役に立ちましたか?
PIC18F2550でのA/D変換と文字列送信についての質問
2023/10/15 22:35
- PIC18F2550でA/D変換とUSB通信によるパソコンへの文字列送信プログラムを作成中ですが、うまくいかない状況です。A/D変換と文字列送信の両方を行うためにsleep機能を利用していますが、sleepを解除すると文字列送信ができなくなってしまいます。
- sleepを解除した後はパソコンからの受信は可能で、プログラム自体は動作しているようですが、文字列の送信だけができません。文字列送信プログラムでは、mUSBUSARTIsTrfReady()が0を返している可能性がありますが、原因がわかりません。
- このままでは開発が進まず、困っています。解決策をご存知の方がいらっしゃいましたら、どうかお力をお貸しください。
PIC18F2550でのA/D変換
2008/11/19 15:23
初めて質問させていただきます。
現在、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を返しているのだと思いますが、原因が全くわかりません。
このままでは開発が進まず、困っています。分かる方がいらっしゃいましたらどうかよろしくお願いします。
回答 (1件中 1~1件目)
毎度JOです。
スリープ機能はシステムクロックを停止させてPIC自身の消費電力を最小に抑えるものです、
システムクロックが停止しているので、当然通信は出来ません。
USB接続のようですからバッテリ駆動では無いと思われますが、
スリープさせる原因がノイズを抑えてAD変換精度を向上させる為なら、
NFを考慮して出来るだけ大きな信号をADコンバータに入力するとか、
複数回AD変換して平均値を取るなどの方策を取ってスリープしない事です。
このQ&Aは役に立ちましたか?
この質問は投稿から一年以上経過しています。
解決しない場合、新しい質問の投稿をおすすめします。