Select Your Language

免責事項

  • 本サイトの情報の利用、内容、サービスによって、利用者にいかなる損害、被害が生じても、著者は一切の責任を負いません。ユーザーご自身の責任においてご利用いただきますようお願いいたします。

    本サイトで頒布している基板およびキットは、技術者、またはそれに準ずる電気的知識をお持ちの電子工作ファンの方のためのものです。 一般のオーディオファンの方のためのものではありません。
    また、頒布基板およびキットは、いかなる条件でも動作を保証するものではございませんので、あらかじめご了承ください。

    電子工作では、火傷、感電、火災などの可能性があります。 十分に注意をして作業して下さい。

    営利目的のご使用は認めておりません。  記事の転載や、基板・キットの商用利用の方は、ご連絡ください。
    学生やサークルの学習目的でまとめてご購入する場合は特別なコースをご用意させていただきます。

« 電子ボリューム実験基板 進捗 70% | トップページ | MUSES72320で実験したこと(1) »

2013年6月15日 (土)

IRリモコン信号のデコード方法

Decode00

NECフォーマットをはじめとする赤外線リモコンの受信は、色々と処理を実行中のマイコンにとって
意外とネックになるものです。 他の処理を邪魔しないで受信する幾つかの方法をご紹介
できればと思います。
 
  
必要なハードウェアリソースは
 
 1.ポート入力の割り込み
 2.タイマー
 
の2点です。
 
 
ポート入力の割り込みを使ってタイマーをスタート。
同時にポート入力割り込み極性を反転して割り込み待ち。
 
次にポート入力割り込みが入ったらタイマーのカウンタ値を読み取って時間を計測。
この時間がリーダーコードに相当するものかどうかを判断する。
 
リーダーコードと判断した場合には、信号のデコードへ入る。
 
信号のデコードも同様に「0」「1」との時間の長さを計測して判断します。
この時間の認識にある程度の幅を持たせておくというのがコツです。
 
実は、リモコン側のクロックや、計測しているマイコンのクロックがあまり正確ではない
ために計測誤差がでるからです。 また、デューティー比がぴったり5:5とならない事が多いです。
4:6~6:4くらいまで認識の範囲を広めておくと良いでしょう。
 

 
ちょっと違った手法としては、ポート割り込みがかかってから、タイマーをスタートさせ、
一定時間後にタイマー割り込みによりポートを読んで「0」「1」判定するという方法です。
 
毎回、時間計測する必要がなく、割り込み頻度も減るので処理が軽くなります。
時間計測の範囲判定などもいりません。 今回は、この手法を使いました。
Decode01  
 
以上が、リソースとしてタイマーを専有できるときのアルゴリズムです。
 
その他としては、高速にポーリングして信号をデコードす方法もあります。タイマー割り込みは
使うもののポート入力割り込みを使わないで受信できるのが特徴です。
  
今回のマイコンではADCで250us毎に割り込みを使っていますので、その時ついでに
IRセンサのポート読んで、高速ポーリングの手法をとっても良かったと、今更ながらに
気が付きました。
 
 

※) ノイズ・誤動作対策を、ある程度盛り込んでおく必要があるのは、マイコンによるI/O処理
  全てにおいて同様です。  このあたりはテキトウに実験して自分がヨシとするまでつめます。 


 

« 電子ボリューム実験基板 進捗 70% | トップページ | MUSES72320で実験したこと(1) »

マイコン」カテゴリの記事

電子ボリューム」カテゴリの記事

電子回路」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/587107/57575238

この記事へのトラックバック一覧です: IRリモコン信号のデコード方法:

« 電子ボリューム実験基板 進捗 70% | トップページ | MUSES72320で実験したこと(1) »

サイト内検索

Sponsors link

2017年5月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

最近のトラックバック

無料ブログはココログ