• ベストアンサー

C言語による赤外線受信

タイトルの通り、C言語によって赤外線の受信をしようとかんがえていますが、まったくおもいうがびません。赤外線の基本的な知識はあるのですが、どうすればうまくいくのかな?って言う状態です。送信機側は、ある本からそのままアセンブラで作ったのですが、とある事情により受信側はC言語でつくらなくてはいけません。どなたか、ホームページとう情報をお持ちの方よろしくおねがいします。また、もし回答するのに足りない点があれば指摘おねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kaha
  • ベストアンサー率23% (41/177)
回答No.3

No.2のkahaです。 PICマイコンは全く知りません。 PICcliteもアセンブラも同様に知りません。 参考ページですが、説明文だけでの判断ですが、 わかりますよね。 RA4ポートは単なる入力ポートとして使用。 LOWが8ビット分以上続いた後のHIGHをスタート ビットとして判断。その後600μsec毎に ポートを読み0または1として判断していく。 この方法では読みミスすることがあるので、 送信側は同じデータを2度送信し、受信側で 2つのデータが一致するのを確認する。 HIGH(1)のあとLOW(0)が8ビット分以上続けば 通信は終わりと判断。 C言語のサンプルですが、「ライントレースロボット入門」の本に載ってそうです。これも目次だけでの判断ですが。(参考URL)

参考URL:
http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-08741-7

その他の回答 (3)

回答No.4

RA4を使うのはシュミットトリガ入力だからでしょう。 送信機が参考URLのものなら、受信機のプログラムも参考のものをC言語で書けばいいだけですね。 プログラムの内容はNo.3に書いてある通りです。ループでソフトウェイトを作っていますが、Cで書くとステップ数が見積もりにくいので調整が必要かもしれませんね。 プログラムができたとしても大変なのは動作確認(デバッグ)です。38kHzの信号を扱うので最低でもオシロがないと厳しいのではないかと思いますが。。。

  • kaha
  • ベストアンサー率23% (41/177)
回答No.2

●ハード構成(自作基板なのか?、CPUの型番は?、赤外線入力はどのポート(何番ピン)に接続されているか?) ●ソフト構成(コンパイラの名称とバージョンは何か?) 普通に考えると 1.赤外線入力は割り込みポートに割付ける。 2.HIGHの割り込み処理の中で、次はLOWで割り込み発生するように設定変更し、今度LOWの割り込み処理では、次はHIGHで割り込み発生するように変更する。そのようにしてHIGHでもLOWでも処理できるようにする。 3.内部カウンタを使ってHIGH、LOWの時間間隔をカウントし8ビット単位でまとめる。そして、数バイトのキャラクタとしてコード化する。(例)メーカ4文字、機種3文字、ボタン2文字とか。 4.市販のTVとかのリモコンを受信して調べてみれば、そのON・OFFの周期とか調べられるのでは?

e1432
質問者

補足

書き込みありがとうございます。 ・基盤は自作です。 ・PIC16F84Aを使用します。 ・ポートはRA4ピンです。RA4はちょっとほかと違うというのは知っていますがその程度でどうしてこのポートを使うのかよくわかっていない状況ですが… ・コンパイラはPICclite、MPLABでプログラムし、秋月のPICプログラマーで焼きこみます。 具体的なプログラムを見ないとよくわからない初心者です。できれば参考ページ、プログラム等を教えてはいただけませんか? こちらのページを参考に考えたのですが、アセンブラでしか書いてないです。しかもアセンブラは理解できません。それにC言語で作らなくてはいけないという条件つきですので…。 http://www.picfun.com/appframe.html

  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.1

この情報だけでは誰も答えられません。 普通、C言語には、「赤外線受信の機能」はありません。 おそらく、やりたいことは、 「赤外線を受信する装置のマイコンチップ部分を 制御するプログラムを、C言語を使って開発したい」 という事だと思います。 その場合、どういう回路か、使うマイコンは何か、 使うC言語処理系は何か、 そして他に使えるルーチンはあるかないか。 などにより答はまったく違ってきます。 私はマイコン関係の知識はなく、その情報があっても答えられませんが、 とにかく、赤外線受信装置の大まかな構造、 チップの種類、C言語処理系、 最低このくらいの情報がないと、誰も答えられません。 「補足」欄に書き込めば、誰か詳しい人が教えてくれるかもしれません。

関連するQ&A