AVR を使った PSG (AY-3-8910/YM2149) 制御器 (プロトタイプ)。

動作風景
概要
同様のプロジェクトは他にもたくさんありますが、AY-3-8910 を AVR で制御してみました。 特に新規性はありません。
ソフトウェア
以下で構成されています:
-
psg-test.asm -
テスト用の簡単な制御プログラム。これ単体で利用できます
-
psgplay.asm -
メイン
-
psgplay-commands.asm -
定数定義
-
tonedata.asm -
bin/tone.plによって生成された周波数データー -
musicdata.asm -
bin/mmlc.plによって生成された音楽データー
-
-
bin/tone.pl -
指定された PSG 動作周波数に対応した音階データーを作成します
-
bin/mmlc.pl -
MML からバイナリーデーターを (
.dbとして) 生成します。 後でアセンブリ言語で書き直すことを前提に書いているので、一般的でない書き方になっています
データーを事前にバイナリーに変換して AVR 内に書き込み、AVR ではそのデーターを PSG に送信するだけになっています。
ビルド方法
フューズ設定
上の回路のように AVR から PSG へクロックを供給する場合には、AVR のフューズ設定が必要です。 ATmega48 シリーズでは CKOUT を有効にするために Low Byte の 6 ビット目を 0 に変更します。 CKOUT がないものもあります (ATmega8 など)。 PSG に別途クロックを供給する場合はフューズ設定は不要です。
avrdude を使用している場合は、具体的には以下のようにします。
$(...) は自身の環境に合わせて変更して下さい。
avrdude -c $(AVRWRITER) -p $(DEVICE) -b $(AVRDUDEBAUDRATE) -U lfuse:w:0x22:mビルド手順
-
Makefileを編集 (特にデヴァイスとライターの設定) -
make(テストプログラムの場合はmake psg-test) -
make flash
今後の課題
-
シリアル通信等で MML を AVR に送り、AVR で PSG 用のデーターに変換、送信するようにする?
-
VGM format 対応?
License
-
MIT License
