Hi,
schon vor einer ganzen Weile hab ich mich hier im Forum Registriert.
Da das schon so lange her ist, stell ich mich einfach nochmal vor:
Ich lebe in Baden Württemberg, bin 16 Jahre alt, Schüler und interessiere mich für alles was mit "alter" Technik zu tun hat:
Das geht von Röhrenfernsehern der 50er bis hin zur C64 ära.
Nun habe ich folgendes Projekt:
Ein komplett eigenständiger Player, der .SID Dateien von einer SD Karte auf einem echten 6581/8580 SID abspielen kann.
Zum Aufbau:
Der gesamte Player ist in zwei Einheiten Aufgeteilt: Der SD-Controller und der Player.
Als erstes zum SD-Controller:
1. 4x20 Zeichen Text-LCD: zur Anzeige eines Dateimanagers, Statusinformationen usw.
2. ATmega 1284: Liest die SD Karte und sendet Daten an den Player.
3. Tastenfeld zur Bedienung
Als nächstes der Player:
1. 128K SRAM (64K genutzt) + 6510 CPU + 6581 SID
2. ATmega16: Empfängt die Daten vom SD-Controller und schreibt diese, unter Zuhilfenahme zweier Schieberegister vom Typ 74HC 595 in den RAM.
3. Ein Adress-Dekoder, der automatisch das /CS Signal des SID auf Low legt, sobald der 6510 auf den entsprechenden Speicherbereich zugreift.
Soviel funktioniert bisher Problemlos:
- LCD+ Tastenfeld
- Lesen eines SID-Files von der SD Karte und Anhängen einer Startroutine.
- Lesen des .SID-Headers (Init, Play, Titel usw.)
- Übertragen des SID-Files in den RAM
- Adress-Dekoder
- Ein Testprogramm auf dem 6510 (Irgendwelche Werte in die Register) hat den SID zum "Töne" erzeugen gebracht.
Nun besteht aktuell folgendes Problem:
Nach dem ich eine "echte" SID-Datei in den RAM geschrieben hab, und am IRQ Pin ein 50Hz Signal anlege, kommt tatsächlich etwas, das sich stark nach dem gewählten SID-file anhört. Das läuft allerdings nur ca. 0,2-0,3 Sekunden.
Dann passiert nichts mehr.
Mit dem Oszilloskop, konnte ich feststellen, das der 6510 nach diesem Augenblick alle Adress-Leitungen auf High setzt.
An dieser Adresse liegt ja das High-Byte des IRQ Vektors.
Kann sich jemand dieses Verhalten erklären?
Interessant ist zu wissen, dass meine Startroutine in einer Endlosschleife endet:
Als ich kein IRQ Signal anlegte, konnte ich mit dem Oszilloskop feststellen, dass diese Endlosschleife wirklich durchlaufen wird.
Was auch ein Beweis dafür ist, dass zum Beispiel das SID-File an der richtigen Stelle im RAM steht. Sonst würde es nämlich bei der Initialisierung zu einem Absturz kommen.
Ich hoffe mir kann jemand helfen.
Grüße
BasicFan.