[SOUNDLIGHT LOGO] VISUAL PROGRAMMING CRASHKURS

Technik: Organisation der PC-Karte 1512B

Sie haben eine SOUNDLIGHT DMX PC-Karte 1512B oder wollen sich eine zulegen? Gut, dann sollen Sie sie ja auch benutzen können. Die Karte ist wahrlich universell: sie läßt sich sehr einfach mit allen Sprachen - Assembler, DOS BASIC, PASCAL, C, den visuellen Programmieroberflächen Visual Basic, DELPHI und Visual C++ bedienen. Am meisten Spaß machen natürlich die visuellen Oberflächen unter Windows, weil Sie sich um Grafik fast nicht kümmern müssen: die ist schon komplett vorhanden und eine ganze Menge Systemfunktionalität gibt's auch fertig- man kann sich also voll und ganz auf die eigentliche Aufgabe, die Lichtsteuerung, konzentrieren.

Das alles wird Sie allerdings nicht davon befreien, sich auch mit der Hardware und der Organisation der Karte zu befassen, denn schließlich programmieren wir eine Symbiose aus Software [Ihrem Anwenderprogramm] und Hardware [unserer Karte].

  • Wir schlagen vor, daß Sie dies Kapitel ausdrucken, nachdem Sie es mit Ihrem Internet-Browser geladen haben.
  • Die Beispieldateien können Sie am Ende des Kapitels laden, bitte beachten Sie dazu unbedingt die angegebenen Hinweise zur Installation.


.

Kompatibilität der Karte

Bei der Karte 1512B handelt es sich um eine Karte für IBM PC und Kompatible, die für einen kurzen ISA-Slot geeignet ist. Sie kann mit allen Plattformen -vom 8086 bis zum 80686, Pentium, Celeron etc. betrieben werden. Die Karte hat einen eigenen Prozessor und erzeugt das DMX-Timing völlig unabhängig von der Host-CPU.

.

Architektur der Karte

Wenn Sie unsere Karte aus dem Karton nehmen, ist sie "dumm". Das bedeutet: wir haben darauf verzichtet, den Kartenprozessor zu programmieren- er hat kein Programm, nach dem er arbeiten könnte. Das ist Absicht, denn so besteht die Möglichkeit, ihm das für die jeweiligen Zwecke erforderliche Betriebsprogramm vom PC aus zu übermitteln. Dazu ist nicht, wie sonst üblich, ein Programm-EPROM (Festwertspeicher) eingabaut, sondern für das Betriebsprogramm steht ein RAM-Bereich zur Verfügung. Der Vorteil: für neue oder geänderte DMX-Formate oder Funktionen wird einfach ein überarbeitetes Betriebssystem geladen - fertig.

.

RAM-Aufteilung

Der Speicherbereich der Karte wird also von Betriebssystem und Daten gemeinsam genutzt. Das bedeutet für Sie als Anwender:

Die Speicheraufteilung ist wie folgt vorgesehen:

$0000 - $03EF Betriebsprogramm der Karte
Das Betriebsprogramm liefern wir Ihnen mit. Es wird als Datei namens SLHDMXnn.BIN geliefert und einfach aus der Datei in die Karte kopiert. Für einige Windows Applikationen können Sie das sogar mit nur einem Befehl erledigen.
Wichtig: Es gibt verschieden bestückte Karten, man erkennt Sie am auf der Karte befindlichen Quartz. Sie müssen die Betriebssystem-Datei laden, die zu Ihrer Karte paßt, also entweder
SLHDMX12.BIN für Karten mit 12 MHZ Quartz (Standard), oder
SLHDMX16.BIN für Karten mit 16 MHz Quartz.
$03F0 - $03FF Betriebsprogramm-Parameter
Diese Parameter erlauben die Einstellung der Karte. Sie setzen die Anzahl der gesendeten Kanäle, das Sendetiming u.s.w. Durch Beeinflussen der Betriebssystemparameter können Sie mit der Karte auch Protokolle erzeugen, die nicht konform zu DMX-512/1990 sind.
  Start-Sync-Dauer     * 2 us   (typ. 120 us)
  $03F0 = dmxdef(0) = 60
  
  StartByte-Wert
  $03F1 = dmxdef(1) = 0
  
  Ende-Leerlaufzeit    * 2 us + 40 us
  $03F2 = dmxdef(2) = 30
  
  Die folgenden beiden Bytes bestimmen den Kanalzähler.
  Achtung:
  Rem LO: 001  HI: 000      1 gesendeter Kanal
  Rem LO: 002  HI: 000      2 gesendete  Kanäle
  Rem LO: 003  HI: 000      3 gesendete  Kanäle
  Rem ...
  Rem LO: 000  HI: 000    256 gesendete  Kanäle
  Rem LO: 001  HI: 001    257 gesendete  Kanäle
  Rem LO: 002  HI: 001    258 gesendete  Kanäle
  Rem ...
  Rem LO: 255  HI: 001    511 gesendete  Kanäle
  Rem LO: 000  HI: 001    512 gesendete  Kanäle

  Beispiel: 100 Kanäle
  LowByte  Kanalzähler (0-255)
  03F3 = dmxdef(3) = 100
  HighByte Kanalzähler (0-2)
  $03F4 = dmxdef(4) = 0
  
  0: einmal senden  >0: endlos senden
  $03F5 = dmxdef(5) = 0
 
  Interdigit-Zeit, Pause zwischen Bytes 0...44 us
  $03F6 = dmxdef(6) = 0

  Rückgaberegister: Kartentyp
  Dies Register kann gelesen werden. Es gibt an, welche Karte
  sich im System befindet. Rückgabewerte sind:
  $80 : Karte 12 MHz      $01 : Karte 16 MHz
  $03F9 = dmxdef(9)
  
$0400 - $05FF 512 Bytes Sendedaten
Hier werden die Sendedaten für Kanal 1 - 512 eingetragen.
$0600 - $0FFF reserviert für zukünftige Erweiterungen
Bitte lassen Sie diesen Bereich frei um mit späteren Erweiterungen kompatibel zu bleiben
$1000 - $1FFF 4 kB frei für User-Daten
Dieser Speicherbereich steht Ihnen für eigene Zwecke zur freien Verfügung.

.

Inbetriebnahme der Karte

Um die Karte erfolgreich in Betrieb nehmen zu können, sind einige wenige Schritte erforderlich. Diese umfassen folgende Maßnahmen:
  1. Laden Sie das Betriebssystem in die Karte.
  2. Laden Sie die Betriebssystem-Parameter in die Karte.
  3. Laden Sie die Sende-Daten in die Karte.
  4. Starten Sie die Karte.
Damit ist die DMX PC-Karte gestartet. Wer indes mein, sie würde nun fleißig DMX-Daten senden, mag enttäuscht werden - dazu sollte man den Parameter $03F5 auf einen Wert <>0 stellen, also z.B. $FF einschreiben. Dann sendet die Karte kontinuierlich.

.

Die Profi-Inbetriebnahme der Karte

Um das Senden kümmert sich die Karte eigenständig. Dennoch ist es -auch technisch- sehr sinnvoll, Kartenausgabe und Daten-Update zu synchronisieren. Außerdem können Sie die richtige Karte automatisch installieren, ohne deren Type kennen zu müssen. Die Profi-Initialisierung umfasst folgende Maßnahmen:
  1. Laden Sie das Betriebssystem SLHDMX12.BIN in die Karte.
  2. Starten Sie die Karte.
  3. Lesen Sie das Konfigurationsbyte 03F9
  4. Wenn der gelesene Wert $80 beträgt, haben Sie die richtige Karte gefunden.
    Fortfahren mit Schritt 11
  5. Wenn der gelesene Wert $01 beträgt, haben Sie eine 16 MHz Karte im System.
  6. Laden Sie das Betriebssystem SLHDMX16.BIN in die Karte.
  7. Starten Sie die Karte.
  8. Lesen Sie das Konfigurationsbyte 03F9
  9. Wenn der gelesene Wert $01 beträgt, haben Sie die richtige Karte gefunden.
    Fortfahren mit Schritt 11
  10. Fehlermeldung: "KEINE GÜLTIGE KARTE GEFUNDEN" : Ende

  11. Laden Sie die Betriebssystem-Parameter in die Karte.
  12. Richten Sie einen Timer ein, der alle 25ms folgende Aufgaben durchführt:
    • Laden Sie die geänderten Sende-Daten in die Karte.
    • Starten Sie die Karte.
Damit sendet die DMX PC-Karte kontinuierlich upgedatetet DMX-Werte. Dazu sollte man den Parameter $03F5 auf den Wert 0 stellen, da sonst der kontinuierliche Sendebetrieb durch PC-Zugriffe unterbrochen wird. Das kann zu fehlerhaften Ausgaben führen.

.

Die Kartenadresse im PC

Die Karte belegt 4 Adressen im I/O-Adreßbereich des PC und kann auf 4 verschiedene Basisadressen eingestellt werden. Daher können bei Bedarf bis zu 4 Karten parallel in einem PC betrieben werden. Die Adreßeinstellung erfolgt auf der Karte durch Jumper oder DIP-Schalter. Für die Adreßvergabe sind die DIP-Schalter 1 und 2 zuständig:
Die möglichen Basisadressen lauten: Auf jeder Basisadresse stehen 4 Adressen zur Verfügung, auf die per Lese- oder Schreibzugriff zugegriffen werden kann. Lese- und Schreibzugriffe können dabei unterschiedliche Bedeutung haben. Folgende Tabelle gibt Auskunft:

Adresse Beispiel LESEN SCHREIBEN
BASIS + 0 $0100 ----- Low-Byte RAM-Adresse
BASIS + 1 $0101 ----- Hi-Byte RAM Adresse
BASIS + 2 $0102 RAM-Daten RAM-Daten
BASIS + 3 $0103 Karte starten -----

Jeder beliebige Schreibzugriff auf die Karte stoppt die augenblickliche DMX-Übertragung.

.

Die Jumperung der Karte

Die Adreßvergabe wird durch die DIP-Switches 1 und 2 eingestellt.
Mit DIP-Switch 3 wird die Taktfrequenz der Karte eingestellt:

Bitte beachten Sie, daß die Einstellung unbedingt der tatsächlichen Kartenbestückung entsprechen muß. Eine falsche Voreinstellung führt zur Nichtfunktion.

DIP-Schalter 4 bitte nicht verstellen. Er dient internen Zwecken.

.

Die Zugriffe auf die Karte

Um auf die Karte zugreifen zu können, benötigen Sie also drei Informationen:

.

Die Karte automatisch im PC erkennen

An den angegebenen Adressen verhält sich die Karte wie ein direkt zugängliches RAM. Das kann man abprüfen, indem man versucht, in dies RAM zu schreiben und die Daten wieder auszulesen. Ist der Versuch erfolgreich, kann unterstellt werden, daß es sich an der betreffenden Adresse um eine DMX-PC-Karte handelt. Die Übertragung des Betriebsprogramms und die Prüfung der Statusvariablen ergibt dann später die sichere Gewißheit, daß die richtige Karte gefunden wurde.

Um die Adresse der Karte im PC zu ermitteln, gehen Sie wie folgt vor:

  1. Schreiben Sie $00 in Adresse $0100
  2. Schreiben Sie $00 in Adresse $0101 (0100 +1)
  3. Schreiben Sie $AA in Adresse $0102 (0100 +2)
  4. Lesen Sie Adresse 0102 (0100+2)
  5. Wenn der Rückgabewert $AA ist, wurde die Karte gefunden.
  6. Wenn nicht, wiederholen Sie (1)-(5) für die Adressen $0120, $0140, $0160

.

Windows Applikationen programmieren

Windows-Programmierer haben es einfach: sie erhalten vordefinierte Funktionen, die ihnen die Ansprache der Karte abnehmen. Beispielsweise wird die Ermittlung der Kartenadresse im PC durch die Funktion vbCardAdr() erledigt.

Sie erhalten die kartenbezogenen Aufrufe in den Dateien SLHDMX2.DLL (16 Bit Programmierumgebung) und SLHDMX32.DLL (32Bit Programmierumgebung). Kopieren Sie diese Dateien in Ihr \WINDOWS\SYSTEM Verzeichnis. Die Beschreibung der einzelnen Aufrufe entnehmen Sie den Modulen der zahlreichen Programmierbeispiele auf unserer Website.

.

Anwenderprogramm erstellen

Sie wissen nun alles, was Sie über die Organisation und Ansprache der Karte wissen müssen. Nun haben Sie weiter nichts zu tun, als Ihre Anwenderumgebung zu erstellen. Um die Karte einzubinden, gehen Sie strikt nach folgendem Schema vor:
  1. Finden Sie die Karte im PC.
  2. Übertragen Sie das Betriebssystem, verifizieren Sie den Kartentyp und setzen Sie die Betriebssystemparameter.
  3. Richten Sie einen Timer zur regelmäßigen Kommunikation mit der Karte ein.
  4. Übertragen Sie timergesteuert die veränderten Daten und starten Sie dann jeweils die Karte.

In den BEGINNER'S NOTES zeigen wir Ihnen die grundlegenden 4 Schritte in 4 Beispielen für Visual BASIC 3.0, Visual BASIC 5.0, DELPHI 1.0 und DELPHI 2.0. Klicken Sie hier, um auf die Anwendungs-Seite zu gelangen.


Viel Erfolg beim Experimentieren! Kommentare und eigene Beiträge nehmen wir gern entgegen, mailen Sie einfach an





zurück zur [HOME]SOUNDLIGHT HOMEPAGE