NS73Mをコントロールするポイント
NS73Mの資料は秋月の通販サイトからダウンロードできるのですが、製品仕様書兼説明書の割にはわかりにくいと思います。
幸いネット上にはこれをうまく使いこなしている方が多数いらっしゃいましたので、そちらの資料をいろいろと参考にさせていただきました。
制御コマンドをI2Cまたは3-wireで送ると内部できちんと処理して正しい周波数で送信してくれるのですが、PLLを正しく動作させるためのパラメータなどを事前に設定しておかないとうまく動きません。
そのあたりの根拠の説明が抜けているので見よう見まねで動かすしかないです。
回路の概要
回路は何のひねりもなくI2Cで接続し、操作用のプッシュスイッチとインジケータのLEDが付いているだけです。
PICは初めのうちは余っている12C509を使う予定だったのですが、OTPタイプではデバッグのしようが無いので12F675に変更しています。

ソフトウエア
ソースリスト Ver.1.3
PIC 12F675はハードウエアのI2Cマスター機能を持っていないためソフトで実装しなければいけません。
Lレベルを出力する時は、GPIOを出力モードにしてLを出力します。PIC内部でGNDへ接地されるのでポートはLレベルとなります。
Hレベルを出力する時は、GPIOを入力モードにしてハイインピーダンスにします。するとプルアップ抵抗を通してVccへ接続されるのでHレベルになります。
つまり、GPIOを0に固定したままTRISだけを操作するとよいわけです。
ソースのコメントに「キーモード確認でLEDを点灯させるとハングする」と記載がありますが、つい最近気圧高度計を製作しているときにこのルーチンを流用してハングアップする原因が分かりました。 LEDを点灯させるためにBCF GPIO,2でGP2ポートをLレベルにしていたのですが、Read Modify Writeの影響でGPIOのGP0とGP1が勝手に1に書き換わっていたのです。
ソフトウエアI2Cの実装

ソースのコメントに「キーモード確認でLEDを点灯させるとハングする」と記載がありますが、つい最近気圧高度計を製作しているときにこのルーチンを流用してハングアップする原因が分かりました。 LEDを点灯させるためにBCF GPIO,2でGP2ポートをLレベルにしていたのですが、Read Modify Writeの影響でGPIOのGP0とGP1が勝手に1に書き換わっていたのです。
PLLの設定値とCEXパラメータの関係
私が書いたソフトウエアでは、設定できる周波数を84.0MHz~90.0MHz、およびアナログテレビの1~3ch(95.75MHz、101.75MHz、107.75MHz)の64チャンネルとしています。
NS73Mの仕様書上の下限周波数は87.5MHzですが、実際に動作テストをしてみると85.5MHzあたりまではきちんとPLLがロックしていました。
PLLを正常動作させるためにCEXというパラメータがありますが、仕様書ではPLLのロックが外れたらフラグが立つからCEXを変えてねという趣旨の記載になっているようです。 常にロックの状態をモニターするならキー入力の監視もひと手間多くなるため、実際に動作させた結果からCEXをハードコードした方が楽です。FMラジオの周波数帯ではCEX=0で問題なく、TV-1~3の時にCEXを1、2、3と増やすと安定動作しました。 今の時代はアナログテレビが存在せずFMラジオだけカバーすればよいので、CEX=0で固定しても問題ないでしょう。
PLLを正常動作させるためにCEXというパラメータがありますが、仕様書ではPLLのロックが外れたらフラグが立つからCEXを変えてねという趣旨の記載になっているようです。 常にロックの状態をモニターするならキー入力の監視もひと手間多くなるため、実際に動作させた結果からCEXをハードコードした方が楽です。FMラジオの周波数帯ではCEX=0で問題なく、TV-1~3の時にCEXを1、2、3と増やすと安定動作しました。 今の時代はアナログテレビが存在せずFMラジオだけカバーすればよいので、CEX=0で固定しても問題ないでしょう。
ケースへの組み込み

製作過程で苦労した点
- ICSPでプログラムを書き込もうとしたら5Vが印加されてNS73Mが壊れた。その後もうっかりミスで5Vを印加してしまいもう一つダメにしている。
- 基板の絶縁のために高周波ワニスを塗ったところ、表面実装の水晶の中に侵入したらしく発振しなくなった。つまりNS73Mは3個ダメにしている。
- LEDにキーモードの状態を表示させた後に、I2Cルーチンを通過するとハングアップする原因が分からなかった。結局モード表示の機能は省いている。
- 完成済みの基板パターンを若干変更したら、発射する電波の強度が格段に落ちた。 以前は10メートル離れても良好だった送信がダミーロードを外しても1メートルぐらいしか飛ばず役に立たなくなった。
- 車のオーディオを買い替えたらUSBメモリのmp3が再生が可能だったので、FMで飛ばす必要がなくなってしまった。

