Hallo zusammen,
nachdem ich in diesem Forum schon seit einiger Zeit lesend unterwegs bin, schreibe ich heute mal meinen ersten Beitrag.
Ich versuche seit einigen Wochen, das Soundmodul einer ADP Profitech-3000-Kiste per serieller Ansteuerung zum Leben zu erwecken - leider bisher erfolgslos. Mein Ziele sind,
(1) die Sounds von einem ADP Criss Cross zu extrahieren und
ggf. (2) die Soundplatine für eine Rekonstruktion des Automaten zu nutzen (ich hatte letztes Jahr einen Hot Cherry auf eine Arduino-basierte Plattform umgebaut, dabei allerdings das Soundmodul durch zwei MP3-Player ersetzt).
Meine Hoffnung ist, dass mir vielleicht jemand den entscheidenen Tipp geben kann, wie ich dem Modul doch noch ein paar Sounds entlocken könnte.
Ich habe mich stark an die Beschreibungen von kuehlbox im Topic
https://www.automatenfreunde.de/index.php?page…d&threadID=3646
gehalten.Über ein Labornetzteil versorge ich das Soundmodul mit +12V (Pin 3 am 8-poligen Stecker und GND an Pin 5). Der Arduino ist mit dem 6-poligen Stecker wie folgt verbunden:
Einige Erkenntnisse:
[*]Der DSP läuft mit 3,3V. Die Eingangs-Pins (DATA und CLOCK) haben jeweils einen Pull-Up-Widerstand gegen +3,3V. Um sie über den Arduino auf LOW zu schalten, reicht es also aus, den Arduino-Pin gegen Masse laufen zulassen (Open Collector: digitalWrite(X, LOW); pinMode(X, OUTPUT);). Ansonsten sind sie wegen der ext. Pull-Ups HIGH (pinMode(X, INPUT);).[*]Die PINs ~DATA, ~CLOCK und ~REPLY laufen über einen CMOS Hex-Schmitt-Inverter (74LCX14).
[*]CLOCK (= PINIT/NMI) schaltet bei steigender Flanke; demnach muss man über ~CLOCK eine fallende Flanke erzeugen, wenn DATA geschrieben werden soll.[*]Wie kuehlbox angemerkt hat, reagiert die Software auf dem DSP auf 8-Bit-Codes (Least-Significant-Bit First), wobei noch ein Start- und Stopp-Bit hinzukommen (START -> D0 -> D1 -> ... -> D7 -> STOPP). Ausgehend von DATA (nicht-invertiert) ist das Startbit immer 0 und das Stoppbit immer 1. Invertiert (~DATA, also das, was man physikalisch übertragen muss) eben umgekehrt.[*]Der DSP scheint das Programm direkt vom externen Flash zu laden. Ein Hinweis hierauf liefern die nach außen gelegten Brücken für MODA, MODB, MODD. Die Brücke für MODA würde zu GND (0) schließen, die Brücken für MODB und MODD zu 3,3V (1). Ich schließe deshalb, dass bei geöffneter Brücke MODA=1 und MODB=MODD=0 gilt. Laut DSP-Handbuch lädt der Chip das zu startende Programm bei dieser Konfiguration aus dem externen Speicher ("byte-wide memory").
Ein C++-Beispiel zur Ansteuerung habe ich angehängt (POWER_RELAY steuert bei mir ein Relais, das wiederrum die +12V Versorgungsspannung des Soundmoduls schaltet).
In meinen Versuchen konnte ich bisher durch Zufall einen Foul-Alarm auslösen. Leider geschah das mitten in der Nacht, während das Modul an einen Lautsprecher angeschlossen war. Ich musste den Versuch schnellstens abbrechen und konnte die Situation später nie mehr nachstellen. Einen anderen Sound konnte ich bisher nicht erzeugen. ![]()
Das Soundmodul reagiert bei mir auf insgesamt 2 Codes:
[*]Überträgt man DATA = 253 (logisch: 0x1111111010, physisch: 0x0000000101) und danach DATA = 0 bis (ich glaube) 127 scheint der DSP in einen Modus zur Übertragung von digitalen Audiosamples (über ESAI) zu gehen. Das zweite Wort gibt hierbei die Anzahl der zu übertragenden Audiosamples an. Nach Initiierung blinkt die "Takt"-LED auf dem Soundmodul wohl im Takt des "FRAME SYNC"-Signals und das Modul erwartet über AUDIO_IN Audiodaten. Da mich dieser Modus nicht wirklich interessiert, habe ich meine Analyse hier (noch) nicht weiter vertieft.
[*]Überträgt man DATA = 255 (logisch: 0x1111111110, physisch: 0x0000000001) wird es gefährlich (hiermit habe ich schon ein Soundmodul "kaputt" gemacht). Nach der Übertragung sehe ich in meinem Labornetzteil, dass das Soundmodul plötzlich etwas weniger Strom aufnimmt (etwa 0,18A statt 0,24A). Die "Takt"-LED hört auf zu blinken. Erst dachte ich, dass es sich hier um eine Art "Stand-By"-Modus handelte. Aber das Programm auf dem DSP scheint an dieser Stelle auf eine Eingabe zu warten. In meinen Tests hatte ich vermutlich direkt danach erneut eine 255 gesendet, was wohl zur Folge hatte, dass die "Takt"-LED nun nicht mehr blinkt. Eventuell habe ich hierdurch das Programm auf dem Flash gelöscht. Auf jeden Fall hatte ich eine bleibende Veränderung bewirkt, die ich danach auch durch einen Hard-Reset per Stromwegnahme nicht mehr rückgängig machen konnte.
Leider besitze ich keinen funktionierenden Automaten, der sich noch in seinem Grundzustand befindet, weswegen ich keine Möglichkeit habe, die Kommunikation der Datenbank mit dem Soundmodul abzuhören. Hat das von euch vielleicht schon jemand gemacht?
Bin für jeden Tipp dankbar.Gruß
Victor