SLICの初期化と音声の送出の確認はとれたので、次にオンフック/オフフック操作の検出とダイアル・トーンの送出をやってみました。
オンフック/オフフックでは割り込みをかけられるので、これを使って検出をおこなっています。オンフック/オフフックに伴い回線ループが開/閉されると、
ちょっと特別なのが、着信に対して応答する際のオフフック操作です。呼出音がなっている最中にオフフックした場合には、ループ状態変化の割り込みではなく、
ダイアルトーンの送出はとっても簡単です。オシレータに周波数と送出レベルを設定して、オシレータをイネーブルするだけ。周波数の設定はすでにSLICの初期化処理のなかでやっているので、単にイネーブル/ディスエーブルするだけでダイアルトーンの生成開始/終了ができちゃいます。アプリケーションノートAN35に記載されているレジスタ設定値は米国仕様でしかもSi3210/3211用の値なので、日本仕様の400HzをSi3215で生成できるように設定値を計算しなおしてやります。計算の具体的な手順はデータシートで説明されていますが、Windows GUIソフトを使って求めることもできます。GUIソフトは、普通は評価ボードをつなげて使うのですが、ボード無しでも使えるようになっており、各種レジスタの設定値を求めることができます。気がきいてますね。
AN35に記載されているレジスタ設定値を読んで、初めて知ったことがひとつ。上記のように日本ではダイアルトーンは400Hzの単一トーンですが、USでは350Hzと440Hzの和音なんですね。確かに、そう言われてみれば、「ポー」というサイン波的な音ではなくて、「ボー」という感じに聞こえる音ですよね。改めて納得した次第です。Wikipediaによると欧州では425Hzの単一トーンが一般的なようです。
おっと、ひとつ確認したかったことがあったのを思い出しました。ダイアルパルスの検出です。今どき、電話機をわざわざパルスダイアルの設定に設定にすることも無いので忘れてましたが、パルスって一定のタイミングで回線ループの開閉をおこなっているだけですから、オンフック/オフフックで検出できていいはずです。さっそく、実験してみました。
まずは、電話機を20PPSのパルスダイアリングに設定します。こういう時、安もの電話機はスライドスイッチだけで設定変更できますから、便利ですねぇ。受話器をオフフックした時に表示されたのが最初の
続いてダイアルボタンの
パルスダイアリングの検出の仕掛けは確認できましたが、わざわざこれを使うこともないでしょうから、実験はこれでオシマイにしてパルス・ダイアルのデコード処理には取り組まないことにします。
オンフック/オフフックでは割り込みをかけられるので、これを使って検出をおこなっています。オンフック/オフフックに伴い回線ループが開/閉されると、
Loop Closure Transition Interruptが発生します。この割り込み要因はレジスタ19を読んで判別できますが、これだけでは状態が変化したことがわかるだけです。そこで、さらにレジスタ68を読んで実際のフッキング状態を確認することで、オンフック/オフフックのいずれであるかを判断してやります。
]]] MMnetSAM7X Console Monitor [[[ > > slic init ProSLIC detected. 1652ms > Off-Hook. On-Hook. > slic ring > Ring Trip On-Hook. >
ちょっと特別なのが、着信に対して応答する際のオフフック操作です。呼出音がなっている最中にオフフックした場合には、ループ状態変化の割り込みではなく、
Ring Trip Interruptが発生します。ベルとベルの間の1秒間の休止期間の間にオフフックすれば、
Loop Closure Transition Interruptになります。
Ring Tripというのは電話屋さん用語なのでしょうが、日本語では何と訳すのでしょうか?
ダイアルトーンの送出はとっても簡単です。オシレータに周波数と送出レベルを設定して、オシレータをイネーブルするだけ。周波数の設定はすでにSLICの初期化処理のなかでやっているので、単にイネーブル/ディスエーブルするだけでダイアルトーンの生成開始/終了ができちゃいます。アプリケーションノートAN35に記載されているレジスタ設定値は米国仕様でしかもSi3210/3211用の値なので、日本仕様の400HzをSi3215で生成できるように設定値を計算しなおしてやります。計算の具体的な手順はデータシートで説明されていますが、Windows GUIソフトを使って求めることもできます。GUIソフトは、普通は評価ボードをつなげて使うのですが、ボード無しでも使えるようになっており、各種レジスタの設定値を求めることができます。気がきいてますね。
AN35に記載されているレジスタ設定値を読んで、初めて知ったことがひとつ。上記のように日本ではダイアルトーンは400Hzの単一トーンですが、USでは350Hzと440Hzの和音なんですね。確かに、そう言われてみれば、「ポー」というサイン波的な音ではなくて、「ボー」という感じに聞こえる音ですよね。改めて納得した次第です。Wikipediaによると欧州では425Hzの単一トーンが一般的なようです。
おっと、ひとつ確認したかったことがあったのを思い出しました。ダイアルパルスの検出です。今どき、電話機をわざわざパルスダイアルの設定に設定にすることも無いので忘れてましたが、パルスって一定のタイミングで回線ループの開閉をおこなっているだけですから、オンフック/オフフックで検出できていいはずです。さっそく、実験してみました。
> > Off-Hook > > On-Hook Off-Hook On-Hook Off-Hook On-Hook Off-Hook On-Hook Off-Hook On-Hook Off-Hook > > On-Hook >
まずは、電話機を20PPSのパルスダイアリングに設定します。こういう時、安もの電話機はスライドスイッチだけで設定変更できますから、便利ですねぇ。受話器をオフフックした時に表示されたのが最初の
Off-Hookメッセージです。
続いてダイアルボタンの
5を押してみました。
On-Hook/Off-Hookがバラバラと連続して5回表示されました。最後の
On-Hookは実際に受話器をオンフックした際のメッセージです。電話機の設定を10PPSに変更すると、表示される間隔が目に見えて長くなるのがわかります。
パルスダイアリングの検出の仕掛けは確認できましたが、わざわざこれを使うこともないでしょうから、実験はこれでオシマイにしてパルス・ダイアルのデコード処理には取り組まないことにします。