FR60 版FM音源プログラム 「TGFR60」 readme 2008/5/19 pcm1723 ●はじめに このプログラムは、CQ 出版発行の「インターフェース」誌 2008 年 5 月号 付属の富士通 FR60 (MB91FV310A) マイコン基板「CQ-FRK-FR60」用のFM音源 プログラムです。 非商用利用のみ許可します。 HEX (モトローラ S-フォーマット)のみのパッケージと、ソースリスト一式の パッケージがあります。 多くの部分は ADuC7026版や、V850版と同様なので、Web サイト http://www.geocities.jp/pcm1723/ のADuC7026版や、V850版の説明を参照してください。 含まれている音色データはフリーの「std.sb」から変換したものなので、上記 サイトの記述のように、「MA2 オーサリングツール」付属の音色データと差し 替えることをお勧めします。 ソースファイルの再コンパイルによらず、HEX ファイルの音色データ部分のみを 差し替える方法も用意してあります。 上記サイトの「音色データの差し替え/再コンパイルなしの差し替え」の項 http://www.geocities.jp/pcm1723/compile.htm#fmdata_4 を参照してください。 出来上がりのファイル名は TGFR60/Debug/ABS/TGFR60ma.mhx TGFR60/Debug/ABS/TGFR60ma2.mhx となります。 同時発音数と、サンプリング周波数との組み合わせは次の通りです。   同時発音数 サンプリング周波数 ---------- ------------------     2 38 kHz 3 28 kHz 4 22 kHz 5 18 kHz 6 15 kHz FR60 マイコン内蔵の OSDC (On-Screen Display Controller)を利用して、LCD に 表示される内容と同じものを PC モニタ上に表示させています。 デフォルトでは、OSDC のドットクロックを 48 MHz に設定して、USB クロックと して使えるようにした、800 x 600 ドット、 72 Hz リフレッシュの表示になって います。 コンパイル時に、 VGA 出力 (25 MHz ドットクロック、640 x 480 ドット、60 Hz リフレッシュ) を選択することもできます。 通常の MIDI 入力 (31.25 kbps) と、シリアル MIDI 入力 (38.4 kbps) に対応して います。 プログラムを実行すると LED1 が薄暗く点灯します。 CPU 負荷が小さい時は明るく、負荷が大きい時は暗くなります。 デューティーを測定できるテスターで LED1 の端子 (どちらでも可) を測定 すると、CPU 負荷率の大体の値が得られます。 デモ曲演奏時で 85 % 程度です。 ●ハードウェア 回路図「TGFR60.pdf」を、HEX パッケージでは、この「readme.txt」ファイルと 同じフォルダ、ソース・パッケージでは「TGFR60\sch」フォルダに置いてあります。 オーディオ出力は内蔵タイマの PWM を利用した DAC と、外付けのディジタル・ オーディオ用 16 ビットシリアル DAC BU9480F (ROHM) とに、同時に出力されます。 PWM の繰り返し周波数は約 39 kHz です。   コネクタ 1 (CN1) ピン 30 (P47/PPG3) にローパスフィルタをつないでオーディオ出力を取り出します。 Web サイトには LPF の例 (3 次 Sallen-Key アクティブフィルタおよび 3 次 LC パッシブフィルタ)を載せていますが、簡単な一次 RC フィルタでも、PWM 周波数は 可聴周波数域外ですから、耳で聞く限りは問題ありません。 ディジタル・オーディオ用 16 ビットシリアル DAC とのインターフェースは、 BCLK/LRCK/SDAT の3種の信号による一般的なものですが、ハードウェア、ソフトウェア ともに簡略化しているので BU9480F 以外では、うまく動きません。 入力は通常の MIDI 入力 (31.25 kbps) と、シリアル MIDI (38.4 kbps) に対応して います。 具体的なインターフェース回路は、Web サイトを参照してください。 インターフェース回路の「RxD」出力を コネクタ 2 (CN2) ピン 11 (P20/SI2) につなぎます。 マイコンは 5V トレラント入力ではありませんから、5V ロジックの出力を直接 つながないように注意してください。 サウンドボート用のいわゆる MIDI ケーブルは +5V 用ですが、GRAVIS ULTRASOUND の MIDI 接続ボックスで試したところ、+3.3V 電源でも動作しました。 回路図の コネクタ 2 (CN2) ピン 18 (P73) に 10 kΩを介して接続する「SENS」信号は、MIDI/シリアル MIDI のボーレート 切り替えのためで、オープンでシリアル MIDI (38.4 kbps)、GND への接続で 通常の MIDI (31.25 kbps)を選択します。 LCD に表示される内容が、同時に PC モニタ画面の中央部に表示されます。 これを見るには、800 x 600 ドット、水平周波数 45 kHz、垂直周波数 72 Hz が 見られる PC 用ディスプレイと、FR60 基板に高密度 15 ピン D サブコネクタの 実装が必要です。 また、後述する FONT フラッシュへのフォントデータの書き込みが必要です。 LCD とキー入力は、ポートを共有しており、LCD モジュール内部でデータ線が プルアップされていることを利用しています。 そのため、LCD を実装しない場合には、本来 LCD につながっている端子 コネクタ 2 (CN2) ピン 18 (P73) コネクタ 2 (CN2) ピン 17 (P72) コネクタ 2 (CN2) ピン 16 (P71) コネクタ 2 (CN2) ピン 15 (P70) に 33 〜 47 kΩ程度のプルアップ抵抗を付ける必要があります。 このプルアップ抵抗を付けておけば、プッシュスイッチによるキー入力が有効に なります。 この LCD のデータ線につなぐスイッチのほかに、 コネクタ 2 (CN1) ピン 28 (P34/TO1) と +3.3V の間にプッシュスイッチをつないで、「INC」スイッチとして機能させる ことが出来ます。 基板上にプルダウン抵抗が実装されているので、スイッチの接続だけで OK です。 これは、インターフェース誌 2008 年 5 月号の pp.109「第4章 汎用 入出力ポートを使ったプログラミング」の図 9 と同じです。 このスイッチは「INC」スイッチとして働き、「長押し (press)」つまり、1 秒程度 押し続けて離すと次の画面に切り替わり、「クリック (click)」つまり、押してすぐ 離すと現在の画面の中でのパラメタ値を増加させるように作用します。 詳しくは Web サイトを参照してください。 プログラムを実行すると、デモ曲を 3 曲自動演奏しますから、MIDI 入力はなくても 音は出ます。 デモ演奏中に「INC」スイッチをクリックすると次の曲の演奏に移り、長押しすると デモ演奏を中止します。 それ以外にも、MIDI / シリアル MIDI 入力から GM/GS/XG システムオンや、オール ノートオフ、システム・リアルタイムメッセージのストップなどを受信すると、 デモ演奏を中止します。 CPU 負荷測定は ADC の AN9 入力を利用して行いますが、基板上に 10 kΩのプル ダウン抵抗 (R24) が実装されており、本来ハイインピーダンスである ADC 入力 が低インピーダンスになっています。 この問題を解決するには、バッファアンプをはさむのがスジですが、ここでは、 簡単のため、基板上のプルダウン抵抗 (R24) を除去して、ハイインピーダンス に戻しています。 ADC 入力 AN0 〜 AN7 に対するプルダウン抵抗は、基板上で密集していて、除去 するのが難しいですが、R24 は基板の外周部にあり、除去するのは容易です。 ●パッケージ HEX パッケージと、ソース・パッケージを用意してあります。 いずれも、lzh 形式で圧縮されていますので、+Lhaca などのユーティリティーで 解凍してください。 いずれもオブジェクトの HEX ファイルは「TGFR60.mhx」という名前になっています から、「FUJITSU FLASH MCU Programmer/FR」を起動し、「Target Microcontroller」で 「MB91FV310:PROG」を選び、「Open」で「TGFR60.mhx」を選んで書き込んでください。 ●HEX パッケージの内容 readme.txt : このファイル TGFR60.mhx : Sフォーマットのオブジェクト TGFR60.pdf : 回路図の pdf ファイル lcdfont.hex : LCD 文字フォントの HEX ファイル licence.txt : ライセンス条件のファイル ●ソース・パッケージの内容 パッケージを解凍すると、「TGFR60」フォルダの下にファイルが展開されます。 以下では、TGFR60 フォルダを基準に話を進めます・ \TGFR60 | +-- readme.txt : このファイル | +-- licence.txt : ライセンス条件のファイル | +-- \gen_tab : テーブル定義ファイル作成用ツール | | | +-- Makefile : テーブル一括生成のためのメイクファイル | | | +-- *.c : C ソースファイル | | | +-- *.awk : gawk ソースファイル | +-- \font : フォントファイルフォルダ | | | +-- lcdfont.hex : LCD フォントの HEX ファイル | | | +-- Makefile : lcdfont.hex 作成のための メイクファイル | | | +-- *.c : lcdfont.hex 作成のための C ソースファイル | +-- \io91310 : io レジスタ定義 | | | +-- \Debug\ABS\io91310.rel : io レジスタ定義ファイル | +-- \src : ソースファイルフォルダ | | | +-- *.c : C ソースファイル | | | +-- *.h : ヘッダ・ファイル | | | +-- *.asm : asm ファイル | +-- \prj : ワークスペース/プロジェクトファイル | | | +-- TGFR60.dat : プロジェクト・オプション | | | +-- TGFR60.prj : プロジェクト・ファイル | | | +-- TGFR60.wsp : ワークスペース・ファイル | +-- \sch : 回路図のフォルダ | | | +-- TGFR60.ce3 : bsch3v で書いた回路図 | | | +-- TGFR60.pdf : 回路図の pdf ファイル | +-- \smf : デモ曲の SMF | | | +-- arabesq1.mid : C.A.Debussy: アラベスク第一番 (部分) | | | +-- Chopin66.mid : F.F.Chopin: 幻想即興曲 (部分) | | | +-- invent13.mid : J.S.Bach: インベンション第 13 番 | +-- \Debug | +-- \ABS : コンパイル結果の .abs および .mhx のフォルダ | | | +-- TGFR60.mhx : Sフォーマットのオブジェクト | +-- \LST : リストファイルおよび .asm ファイルのフォルダ | +-- \OBJ : .obj、.stk ファイルのフォルダ | +-- \OPT : オプションファイルのフォルダ | | | +-- TGFR60.op* : 各種オプション設定を記述したファイル | +--- TFR60.sup : デバッガ設定ファイル ●フォントの書き込み方法 「FUJITSU FLASH MCU Programmer for FR」を起動し、「Target Microcontroller」 で「MB91FV310:FONT」を選び、「Open」で「lcdfont.hex」を選んで書き込みます。 ●コンパイル方法 ソースファイルを解凍する場所は、どこでも構いません。 もちろん、パッケージ作成時の環境とは違いますが、ビルド時に修正されます。 ただし、インクルード・パスが C:\Softune6\lib\911\include\sample\MB91310 以外の場合は、修正が必要です。 デフォルトの「C:\Softune6」に開発環境をインストールした方は修正の必要は ありません。 インクルード・パスの修正方法には2つあります。 【方法 1】 : .dat ファイルをエディタで修正 インクルード・パスは TGFR60\prj\TGFR60.dat ファイルに記述されていますから、Softune 起動前に、このファイルを 「メモ帳」などのエディタで直接修正します。 インクルード・パスは -I "C:\Softune6\lib\911\include\sample\MB91310" のように記述されていますから、パスを置き換えてセーブします。 【方法 2】 : 開発環境でプロジェクト・オプションの変更 Softune を立ち上げてからプロジェクト・オプションのインクルード・パスを 変更します。 立ち上げ方法は、後述する「コンパイル方法」の項を参照してください。 その後に「プロジェクト(P)/プロジェクトの設定(J)...」で開くダイアログの 「C/C++ コンパイラ」タブを選び、「カテゴリ(Y)」のドロップダウン・ボックス を開いて「インクルードパス」を選びます。 そうすると、「インクルードパスリスト(L)」と名付けられたリストボックスに C:\Softune6\lib\911\include\sample\MB91310 が表示されますから、この行をクリックしてから「削除(E)」ボタンを押して削除 します。 「インクルードパス(I)」の行の最後にある「...」ボタンを押して、パスを選択 します。 最後に「OK」ボタンを押して終了します。 ●コンパイル方法 まず、Softune の「ファイル(F)/ワークスペースを開く(R)...」で 起動されるダイアログで <ファイルを解凍したフォルダ>\TGFR60\prj\TGFR60.wsp を指定してワークスペースを開きます。 そして、「プロジェクト(P)/ビルド(B)」を実行すればコンパイルできます。 このとき、未使用の変数に関する警告が出ますが、問題はありません。 OSDC 出力を VGA モードにしたい場合は、「tonegen.h」ファイル中での #define USBCLK48M の行頭にスラッシュ 2 個「//」を追加して、#define を無効にしてコンパイル してください。