Aitendo M6959 + 秋月I2C LCD その9
一応(ほぼ?)完成しましたので、メイキングと動作を動画にしました。
ちょっと音が小さくてピンボケです。。。。
回路は変えていませんが、LCDの接続が間違っていたので修正したものをアップします。
プログラムは以下の通りです。
「PIC12F_FMAIN_V2_1.c」をダウンロード (2014/01/19 PM9 CONFIG BUG FIX)
プログラムサイズと有効桁数の両方でかなり苦労しています。
周波数演算でINT型では演算途中でオーバフローするのが明らかなので始めは普通にLONG型を使おうとして一気にサイズオーバになりました。LONG用のライブラリをリンクするためですね。
仕方がないので基本INT型にして演算途中で桁あふれする所で100で割った数値とその余りに分割して別々に演算するようにしましたが、それでも不足して。。。その後はとにかく各所を切り詰めてなんとかコンパイル・リンクできるようになりました。現在のコードでROM使用率98.4%です。良く入ったものです(^^;
ご注意ですが、全くの現物合わせで作っていますので、モジュールの個体差に合わせて調整の必要があるはずです。ソース内のbandfreqmin[]、bandfreqmax[]の数値を各バンドごとに調整するように作ってありますので、ご参考にされる場合はそこをご調整ください。
今のソースでは私の使っているモジュールに合わせてFMとAMは調整してみましたが、SWは未調整です。いま聞いてみたSWで表示と実際の周波数をいくつかサンプルしてみました。
左が正しい周波数、右が表示です。
・ラジオ日経 3.925 -> 3.87MHz
・朝鮮の声 9.65 -> 9.60MHz
・台湾国際放送 11.605 -> 11.59MHz
数10KHz低めに出ています。係数の丸め込み誤差の影響かなと思いますが、素子の特性かもしれません。現物合わせなんでなんともいえないですね。
各バンドのbandfreqmax[]を少し大きめに調整すると合いそうですが、目安としては結構使えていますのでとりあえずここまでとしてしまいました。
各バンドで2点のサンプルがあればもっと適切に調整できますが放送局任せだと中々都合よくいきませんね、そのうちよい調整方法を思いついたらなんとかしようかと思います。
とりあえず今回はここまで。
それではまたです。
コメント