本文へ移動
サポートシェアリングソリューション
OKWAVE Plus

このQ&Aは役に立ちましたか?

締切済み
※ ChatGPTを利用し、要約された質問です(原文:PIC18F2550でのA/D変換)

PIC18F2550でのA/D変換と文字列送信についての質問

2023/10/15 22:35

このQ&Aのポイント
  • 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件目)

2008/12/23 08:12
回答No.1

毎度JOです。
スリープ機能はシステムクロックを停止させてPIC自身の消費電力を最小に抑えるものです、
システムクロックが停止しているので、当然通信は出来ません。

USB接続のようですからバッテリ駆動では無いと思われますが、
スリープさせる原因がノイズを抑えてAD変換精度を向上させる為なら、
NFを考慮して出来るだけ大きな信号をADコンバータに入力するとか、
複数回AD変換して平均値を取るなどの方策を取ってスリープしない事です。

このQ&Aは役に立ちましたか?

この質問は投稿から一年以上経過しています。
解決しない場合、新しい質問の投稿をおすすめします。

質問する

お礼をおくりました

さらに、この回答をベストアンサーに選びますか?

ベストアンサーを選ぶと質問が締切られます。
なおベストアンサーを選びなおすことはできません。