(PART2はこちら)
AK4137ゲットしました(PART3)
SRC4137をリリースしましたが、こんなご意見も。
たしかに、16×2行だと表示できる情報がすくなくてSRC4137のソフトとしてはマスタークロックの周波数は表示しますが、
最終的な出力周波数(PCMだったらLRクロック周波数、DSDだったらBCKの周波数)を表示できていません。
そのため、4桁LEDなどを別途でつけるようなことをしていたのですが、
たしかに、周波数表示があると便利ですよね。
現状のSRC4137。16×2のLCDの搭載がデフォルトです。
20×4のLCDを載せるには?
もともとサイズオーバーなのでそのままは搭載できませんが、PIN配置はほぼ同じなので、ほぼそのまま換装できます。
ここで、ほぼと書きましたが実は肝心なところでピン配置が異なっています。
それは、16×2のLCDでは1pinVDD、2pinGNDですが、20×4のLCDでは1pinGND、2pinVDDと電源供給ピンが反転しています。
その他は同じなのですが・・・・・
どうやって変換しよう?
変換の方法はいくつかありますが、ここは下駄をはかせることにしました。
下駄といっても左右に広がった下駄です(笑)。
ちょうど下のような写真です。
1、2ピンの配置を入れ替えています。
裏からみたところ。
これでソフト作成の準備完了です!
下駄の作成も終わって、SRC4137に差し込んで電源ONです。
16×2のLCDと20×4のLCDはコマンドコンパチなので、そのまま差し替えても同じように動きます。
まずは動作確認です。ソフトを組んでいきましょう!
さて、夏休み〜
すこし早めに夏休みで帰省だあ〜。
夏休みの宿題!
帰省先にもPICライター2を持ち込んでいます(笑)。
帰省先のPCにPICKIT2の秋月付属のCD-ROMからソフトをインストールしましたが、
バージョンが古くてPIC16F1938が対応できません。
ということで、まずはネットを探しまわって最新版のソフトとデバイスファイルの発掘です。
なんせ、Microchipの公式HPを探してもサポート終了みたいで見つからないんですよね。
まあ、なんとかかんとか発掘できて、無事ソフトもそろいました。
帰省先でもPICKIT2を動かせるようにしました
まずは16×2LCD対応版です
20×4LCDについては、全体的に表示内容を検討する必要があるので、まずは16×2LCD、
すなわち現在のLCDでも周波数表示ができるように対応させていきましょう。
もともとのPICはPIC16F886をつかっていて、ROMが8KBあります。
現在のソフトではその使用率は96%まであるのて追加の機能はほぼ入れられません。
そこで、まずはPICそのものを変更してみました。
PIC16F1938への変更です。これはROMが16kBありますので倍の容量が確保できます。
ちなみに、現状のソフトをPIC16F1938に変更してコンパイルすると使用率は44%になりました。
単純に96%の半分の48%にならないのは、共通部分があるからオーバヘッドが相対的に小さくなったからでしょう。
まだ半分弱の使用率なので、安心して機能追加できますね。
というのも、機能の追加にはLONG整数、すなわち32Bitの整数を扱う必要があるので、そのライブラリが
どのくらい必要なのかがちょっと心配でした。なんせマスタークロックは約50MHzですので、
整数にすると50,000,000ですから16Bit整数ではたりません。
さて、周波数の表示自体はPCMの場合はマスタークロックの値をFSで割ることで得られます。
DSDの場合は、その値にDSD OUTのFSを掛けることで求まります。
ただし、マスタークロックとFSの両方を表示するにはスぺースが足りないので、
さらにメニューで表示を切り替えられるようにしました。
現状と同じマスタークロックの表示です(既定値)
PCMの場合はLRクロック周波数、DSDの場合はBCK周波数を表示します
マスタークロックとFS(PCMのLR、DSDのBCK)を約1秒毎に交互に表示します
このように表示のパターンを選べるようにしました。
実際にはこのような表示になります。
マスタークロック表示です。これは現状と同じです。
PCM時のサンプル周波数表示です。
DSD時のBCK周波数表示です。
ちなみに、これらの機能をいれた状態でROMの使用率は52%です。
PIC16F886のままでコンパイルしたら、予想通りメモリーオーバーのエラーが発生しました。
Error[71] SRC4137_PIC16F1938_v2.c 1240 : Out of ROM, A segment or the program is too large pcminformat_menu
Seg 01800-01FFF, 0031 left, need 00DC
Seg 00000-00003, 0000 left, need 00DC
Seg 00004-007FF, 0006 left, need 00DC
Seg 00800-00FFF, 005B left, need 00DC
Seg 01000-017FF, 0048 left, need 00DC
1 Errors, 0 Warnings.
つぎは20×4LCD対応版です
表示内容はぐっと増えますので、できるかぎりフロントページに織り込むようにしましょう。
でも、あまりごちゃごちゃすると見にくので折り合がむずかしいです。
まずはこんな感じになりそうです。
SPDIF入力でPCM出力です。PCM出力には周波数関連情報に加えて出力フォーマットも表示しています。
PCM入力、PCM出力です。PCM入力時にはそのフォーマットも表示しています
DSD入力、PCM出力です。DSD入力時にはクリップ設定、ゲイン設定、入力FSも表示します。
DSD入力、DSD出力です。DSD出力時には周波数に加えて、出力FS設定、ゲイン設定も表示します。
まあこんなところでしょうか。これ以表示するには略称表示が必要になり、なにが表示されているかわかりにくなります。
いまでも、ちょっと情報過多かな?
パラメータ調整は
とくだん、現状と変更はありませんが、表示を若干変更しました。
また補足情報も追加表示するようにしました。
これらを組み込んで、ROM使用率は62%です。
表示の体裁は少し見直しが必要ですが、このような感じでしょう。
PCM入出力のフォーマット表示ができると、確認がものすごく楽です。
いままでは、すべてパラメータの確認画面にいかなければならなかったですからね。
でも、この液晶は大きいな〜。
Parameter setting 1#
Parameter setting 2#
Parameter setting 3#
Parameter setting 4#
Parameter setting 5#
Parameter setting 6#
Parameter setting 7#
Parameter setting 8#
Parameter setting 9#
Parameter setting 10#
Parameter setting 11#
Parameter setting 12#
Parameter setting 13#
Parameter setting 14#
Parameter setting 15#
Parameter setting 16#
Parameter setting 17#
Parameter setting 18#
Parameter setting 19#
16×2のLCDでも沢山表示したい!
20桁のLCDをつかえば色々な情報を一度に表示できますが、同様に16桁でもおなじよう
にできるといいな〜と考えていて、右から左に流れる電光表示版風にしたらどうだろう?
と思いつきました。プログラム的には結構面倒なところもありますが、こうすれば表示内容
に制限がかかることはなくなりました。ただし、あまり早く表示が流れると目が追い付かない
し、反対にゆっくりだと一回の表示に時間がかかりすぎます。表示方法についてもできるだけ
簡略化して、流れる速度も可変にして読みやすい速さに設定できるようにしたらよさそうです。
ということで、早速作ってみました。
20#の表示方法に連続表示を追加しました。
21#で表示の流れる速度を変更できるようにしています。
実際に表示させるとこんな感じです。静止画だと流れる様子はわかりませんが、色々な表示ができる
と何かと便利そうです。
操作マニュアル作成しました。 2016.8.25
マニュアルです→SRC4137optPIC.pdf
SRC4137v2Bが16桁2行LCD用です。SC1602系が使えます。
SRC4137v3(2004)が20桁4行LCD用です。SC2004系が使えます。
(たぶんこれでおしまい?)