AVRでTNC(5)
JQ2RVNさんのコメントからヒントを頂き、受信音が1200Hzから2200Hzに変化する(及びその反対に変化する)場合(下の図のAのタイミング)に、受信データとして0をすぐセットすると共に、次のデータ読み込みをするタイミングを1200分の1秒の1.5倍後(下の図のBのタイミング)とするプログラムに変更しました。また、それ以外の場合は、1200分の1秒ごとの割込み処理で受信データとして1をセットする事としました(下の図のCのタイミング)。
言い換えると、通常は1200分の1秒ごと(BからCへのタイミング)の割込み処理で(変調音の変化がないので)受信データを1として取得し、変調音の変化があった場合(Aのタイミング)に割込み処理で受信データに0をセットすると同時に次の割込みのタイミングを1200分の1秒の1.5倍後(AからBへのタイミング)に設定するということになります。
また、AVRによるTNCはゼロクロス検出は一旦棚上げにし、TCM3105でデモジュレートしたデータをSRLLとして捕らえることから先に実施することにしました。SRLLVer.2.0ではスタートフラグが3種類(32バイト長データの場合は7C-3D-38-4D、64バイト長だとF1-73-85-78、96バイト長だと40-2B-81-3B)あるので、まずはこれを捕らえることが第一歩と考えました。
Ver.1.0でもそうでしたが、上記のスタートフラグは下位バイト(それぞれ4D、78、3B)から送信されます。デコード誤りへの対策は別途考えるとして、この3つのうちどれがデコードされたかをLED表示(4Dは1番目、78は2番目、3Bは3番目のLEDが点灯)するようプログラムして試してみました。
その結果、東工大ブログに掲載されていたサンプル音では、変調音の頭の部分で、32バイトデータのスタートフラグに含まれている4Dが検出されました(と思います)。
なお、ゼロクロスによる周波数検出を利用したプログラムでは、同じ音量という同条件であっても、検出出来るときと出来ないときがあり、やはりこの方法は難しい部分があると感じました。
| 固定リンク
「ワンチップマイコン」カテゴリの記事
- 受信用TNCの製作(6)(2013.02.13)
- 受信用TNCの製作(5)(2012.12.03)
- 受信用TNCの製作(4)(2012.11.26)
- 受信用TNCの製作(3)(2012.11.25)
- 受信用TNCの製作(2)、XI-IV再び(85)(2012.11.25)
コメント