はっくはっくキッチン
Hack Hack Kitchen

PSG (AY-3-8910) Controller mit AVR

 2021/11/21

PSG (AY-3-8910/YM2149) Controller mit AVR (Prototyp).

./AY-3-8910-banner.jpg

Wie es funktioniert

Wohl mir, dass ich Jesum habe - Jesus bleibet meine Freude (from Herz und Mund und Tat und Leben (BWV 147) by J. S. Bach)
Le Cygne (from Le Carnaval des animaux—Grande fantaisie zoologique by C. Saint-Saëns)

Einführung

Es gibt viele andere ähnliche Projekte, aber ich habe versucht, den AY-3-8910 mit einem AVR zu steuern. Es gibt nichts Neues an diesem Projekt.

AY-3-8910 on a breadboard
AY-3-8910 on a breadboard
AY-3-8910 board
AY-3-8910 board

Schaltplan

./AY-3-8910-sch-thumb.png
Schematic of PSG Controller (click to enlarge)

Programme

Dieses Projekt besteht aus den folgenden Programmen.

psg-test.asm

Ein einfaches Kontrollprogramm für Tests. Dies kann allein verwendet werden.

psgplay.asm

Hauptprogramm.

psgplay-commands.asm

Definitionen von Konstanten

tonedata.asm

Von bin/tone.pl erzeugte Frequenzdaten

musicdata.asm

Von bin/mmlc.pl erzeugte Musikdaten

bin/tone.pl

Erzeugt Skalendaten, die einer gegebenen PSG-Betriebsfrequenz entsprechen

bin/mmlc.pl

Erzeugt Binärdaten (als .db) aus MML. Dieses Programm wurde in etwas ungewöhnliche Art geschrieben, da es davon ausgegangen wird, dass das Programm später in Assembly umgeschrieben wird.

Die Daten werden im Voraus in Binärdaten umgewandelt und im AVR geschrieben. Der AVR sendet nur die Daten an den PSG.

Build

Einstellung der Fuse

Wenn Sie, wie in dem obigen Schaltplan gezeigt, den Takt vom AVR an PSG liefern wollen, müssen Sie die Fuse des AVRs setzen. Bei der ATmega48-Serie muss zur Aktivierung von CKOUT das 6te Bit des Low Byte auf 0 gesetzt werden. Einige AVRs (z. B. ATmega8) verfügen kein CKOUT. Wird die PSG mit separaten Takt versorgt, ist die Einstellung der Fuse nicht erforderlich.

Wenn Sie avrdude verwenden, gehen Sie wie folgt vor. $(...) sollte an Ihre Umgebung angepasst werden.

avrdude -c $(AVRWRITER) -p $(DEVICE) -b $(AVRDUDEBAUDRATE) -U lfuse:w:0x22:m

Bauverfahren

Künftige Arbeiten

  • MML über serielle Kommunikation an den AVR zu senden, damit der AVR die Daten in PSG-Daten konvertiert und sie an PSG sendet?

  • Unterstützung von VGM format?

License

  • MIT License