マイコン工作実験日記

Microcontroller を用いての工作、実験記録

ナンバーディスプレイに挑戦する -- その2

2008-12-13 23:20:06 | SLIC
モデム信号さえ出せば、番号表示できそうなところまではきたので、そのモデム信号の出し方を調べました。Si3215ではモデム信号で使うFSK信号の出力機能を持っているのですが、その説明はデータシートにはほとんど記載されておらず、別紙のAN32を参照せよという書き方になっていました。AN32の方をダウンロードして読んでみると、信号を出すのに必要な処理がレジスタの設定値例を含めて具体的に説明してあります。

FSKというのは、データの0/1に応じて搬送波の周波数を変化させる変調方式です。Si3215では、マーク(データ1)ならびにスペース(データ0)の時に使用する周波数と、その時間を設定できるようになっています。基本的に1ビットの出力機能しか持っていないので、送信するデータに応じて、正しくタイミングを取って順番にビット列を送出してやる操作はソフトウェアで実現してやらなくてはなりません。
内部には2ビット分のバッファを持っているので、1ビット分データの周波数を送出している時間内に、次の送信ビットをあらかじめ用意しておいてやります。送出時間が経過すると、タイマー満了割り込みがかるとともに2ビット目のデータの送信が始まります。割り込み処理で、次に送信すべきビットを書き込んでやることで、連続したデータの送信がおこなわれるという仕組みです。

こういった処理の手順もAN32に書いてあったのですが、内容を確認してみると。。。
  1. 表2で説明されているSi3215を使う場合に設定すべき間接レジスタの番号が間違っている
  2. 例示されている設定値は、周波数として2200Hz/1200Hzを使用した場合の値になっている

ことに気が付きました。WikipediaでCaller IDを調べてみるとどうやら米国ではBell 202という規格のFSKを使用しており、そこで使用されている周波数が2200Hz/1200Hzになっているようです。

NTTのナンバーディスプレイではモデム信号としてはV.23が使用されていますので、周波数として2100Hz/1300Hzを使用するように設定を変更しなければなりません。Silabsが用意してくれている、GUIソフトの出番です。周波数と出力レベルを指定してやると、設定すべきレジスタの値を算出してくれます。



算出された設定値を使って、発信者番号の送信処理を組んでみたのですが、まだ番号表示できません。実験には新たにclidコマンドを用意しました。端末起動信号用のRINGを送出したら、オフフックを待って、それを検出したらモデム信号を送出するという一連の処理を連続的に行うコマンドです。



送信しているのは発信者番号 0120506 に相当するモデム信号です。実際のデータが始まる前に充分に長い連続したマークを送出することで、全体が300bitになるようにわざと長さを調節してみました。1200bpsのレートで送出しているので、送出時間は1/4秒となるハズで、ほぼそれに近い248msが所要時間として表示されています。ですので、送出に要する割り込み処理が間に合っていないとかいうことは無いと考えているのですが。

安もの電話をつないで、実際の音を聞いてみると、モデムっぽい音はちゃんと出ているようなのですが。。。モデム信号を確認する方法を考えた方がいいのかなぁ。

最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。