ようこそ!JQ2RVNのブログです。
PICを使っていろいろな物を作ろうと画策中です。
× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 昨日に引き続き、ピン状態変化です。 PR
PIC TNCのアセンブラソースを解析してみました。
まずは、ピン変化割り込みです。 ソースでは493行目からの処理です 割り込みが発生すると、 その時点のTimer0のカウント値を読みます。(レジスタはTMR0) このカウント値は前回の割り込みで0にセットされているので、 つまりは、前回の割り込みからの経過時間がわかります。 ここでTMR0とCENTER_FREQのどちらが大きいかをチェックします。 (アセンブラではTMR0 - CENTER_FREQを計算し、符号を検査します。) ・ もし、TMR0のほうが大きいなら・・・ CENTER_FREQよりも低い周波数(波長が長い)トーンと考えられる。 Bell202の場合は1200Hzですね。 そして、R_TONE=0とします。 ・ もし、CENTER_FREQのほうが大きいなら・・・ CENTER_FREQよりも高い周波数と考えられます。 2200Hzですね。 そして、R_TONE=1とします。 最後に、次のトーンのためにTMR0をクリア(0にする)します。 これにて、割り込みルーチンは終了です。 なお、CENTER_FREQの値ですが、1700Hzの1/2波長にします。 (コンパレータが0→1から1→0になるのは、サインカーブの0V以上のときなので) PICが20MHzで動作しているとき、 4クロックで1サイクルとなりますので、1サイクルは0.2μsec。 Timer0のプリスケラは1:32に設定されてますので、 Timer0がカウントアップするのは、6.4μsecになります。 一方、1700Hzの1/2波長は294μsecです。 よって、6.4 ÷ 294 = 45.955になります。 なのでアセンブラの341行目にあるCENTER_FREQ equ d'45'となるわけです。 なお、341行目にあるコメントでは、"(TMR0/8)(10mhz and PS of 16)" とありますが、20mhz動作のアセンブラなのに、なぜこう書かれているのかしら?? 多分、以前の設計のまま、コメントをなおし忘れたのかもしれません。 プリスケラの設定などチェックしましたが、 20mhzにて、1:32、CENTER_FREQ=45という設定になってました。
<<前のページ
|
カレンダー
プロフィール
コールサイン:
JQ2RVN
性別:
男性
自己紹介:
PICの開発を勉強中です。
目標はPICTNCの高性能版を作ること。 まずは、本家を解析しています。
カテゴリー
最新記事
最新コメント
[04/23 Eolande]
[04/16 太田和巳(JF2UJG)]
[09/10 je7ifp]
[08/06 JQ2RVN]
[08/03 OVC]
最新トラックバック
ブログ内検索
最古記事
(05/18)
(05/19)
(05/19)
(05/20)
(05/21)
アクセス解析
|