Manual des MIDI RS-232/RS-422 Converter - Cinetix.de
Manual des MIDI RS-232/RS-422 Converter - Cinetix.de
Manual des MIDI RS-232/RS-422 Converter - Cinetix.de
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>MIDI</strong> <strong>RS</strong>-<strong>232</strong>/<strong>RS</strong>-<strong>422</strong> <strong>Converter</strong><br />
Betriebsanleitung für ab Juli 2011 gelieferte Geräte Status 10.Januar 2012<br />
(neu: optimierte Betriebsarten. Anwen<strong>de</strong>r-programmierbare Zeichenketten. ASCII Kommandointerpreter.)<br />
<strong>Manual</strong>s für ältere Geräte bitte per e-Mail anfor<strong>de</strong>rn: cinetix@t-online.<strong>de</strong>.)<br />
Der <strong>MIDI</strong> <strong>RS</strong>-<strong>232</strong>/<strong>RS</strong>-<strong>422</strong> <strong>Converter</strong> ist die aktualisierte Version <strong><strong>de</strong>s</strong> "<strong>MIDI</strong> / Serial<br />
Konverters". Das Gerät wird hauptsächlich eingesetzt als Daten-<strong>Converter</strong> zwischen<br />
<strong>MIDI</strong> und PC-Standard Baudraten. Häufig benutzte Anwendungen sind z.B. die<br />
Ansteuerung von <strong>MIDI</strong>-Equipment mittels SPS im Bereich „Gebäu<strong>de</strong>technik / Kunst am Bau",<br />
<strong>de</strong>r Einsatz als preiswertes <strong>MIDI</strong>-Interface für professionelle Mediensteuerungen o<strong>de</strong>r die<br />
Ansteuerung von Geräten mit <strong>RS</strong>-<strong>232</strong> o<strong>de</strong>r <strong>RS</strong>-<strong>422</strong> Steuerschnittstelle von einem <strong>MIDI</strong>-<br />
Sequencer bzw. Keyboard.<br />
Die Grundfunktion besteht in <strong>de</strong>r Baudratenumsetzung zwischen <strong>MIDI</strong>- und <strong>RS</strong>-<strong>232</strong><br />
bzw. <strong>RS</strong>-<strong>422</strong> Schnittstelle ohne inhaltliche Modifikation <strong>de</strong>r übertragenen Datenbytes.<br />
Zur besseren Anpassung an häufig benutzte Steuermedien und Endgerätewer<strong>de</strong>n neben einer 1:1<br />
Baudratenumsetzung spezielle Transformationen <strong>de</strong>r Dateninhalte unterstützt:<br />
--- Erzeugung beliebiger Daten an <strong>MIDI</strong> OUT mit Hilfe von ASCII-Text auf <strong>de</strong>r <strong>RS</strong>-<strong>232</strong>/<br />
<strong>RS</strong>-<strong>422</strong> Seite und umgekehrt: beliebige an <strong>MIDI</strong> IN empfangene Binärdaten wer<strong>de</strong>n im<br />
ASCII Textformat an <strong>de</strong>r <strong>RS</strong>-<strong>232</strong> bzw. <strong>RS</strong>-<strong>422</strong> Schnittstelle ausgegeben. Diese Art <strong>de</strong>r<br />
Datenumwandlung eignet sich beson<strong>de</strong>rs zur Steuerung von <strong>MIDI</strong>-Geräten mittels SPS o<strong>de</strong>r<br />
PC-Software, die zwar Text aber nicht beliebige 8-Bit Daten verarbeiten kann.<br />
--- Sendung beliebiger Binärdaten an <strong>de</strong>r <strong>RS</strong>-<strong>232</strong>/<strong>RS</strong>-<strong>422</strong> Schnittstelle ausgelöst durch<br />
verschie<strong>de</strong>ne <strong>MIDI</strong>-Nachrichtenformate und umgekehrt: Umsetzung aller an <strong>RS</strong>-<strong>232</strong> bzw.<br />
<strong>RS</strong>-<strong>422</strong> empfangenen Bytes in verschie<strong>de</strong>ne <strong>MIDI</strong>-Nachrichtenformate. Beson<strong>de</strong>rs geeignet<br />
zur Steuerung von Geräten mit serieller Schnittstelle durch <strong>MIDI</strong>-Equipment.<br />
--- neu in <strong>de</strong>r aktuellen Firmware-Version ist die Möglichkeit, bis zu 512 anwen<strong>de</strong>rspezifische<br />
Zeichenketten permanent zu speichern (z.B. längere Befehlsfolgen zur Bedienung von<br />
Geräten) und <strong>de</strong>ren Sendung mit kurzen <strong>MIDI</strong>-Nachrichten bzw. seriellen Bytes zu triggern.<br />
--- einsetzbar als Merge- und Through-Box: <strong>MIDI</strong>-Style Nachrichten an <strong>MIDI</strong> IN und an <strong>de</strong>r<br />
seriellen Schnittstelle wer<strong>de</strong>n korrekt "gemultiplext" an bei<strong>de</strong>n Schnittstellen weitergesen<strong>de</strong>t.<br />
--- Zur Realisierung spezieller Datenumwandlungen und zur Durchfürung von Tests sind 2<br />
unterschiedliche Kommandointerpreter eingebaut. Einer davon ist für Standalone-Betrieb<br />
programmierbar. Neben Befehlen für Sendung und Empfang beliebiger Daten über <strong>MIDI</strong><br />
bzw. <strong>RS</strong>-<strong>232</strong>/<strong>RS</strong>-<strong>422</strong> stehen 4 Analogeingänge (0-5V) und 2 MOS-Schalttransistoren zur<br />
Verfügung. Hiermit lassen sich einfache Steuerungs-Anwendungen, insbeson<strong>de</strong>re solche<br />
mit <strong>MIDI</strong>-Kommunikation, realisieren.<br />
Das Gerät ist NICHT zugelassen für sicherheitskritische Anwendungen, bei <strong>de</strong>nen Personen<br />
gefähr<strong>de</strong>t wer<strong>de</strong>n o<strong>de</strong>r nennenswerter Sachscha<strong>de</strong>n entstehen könnte !<br />
Elemente an <strong>de</strong>r Frontseite:<br />
IN ist ein Standard <strong>MIDI</strong>-Eingang<br />
OUT ist ein Standard <strong>MIDI</strong> Ausgang<br />
<strong>MIDI</strong>-Through ist nicht vorhan<strong>de</strong>n
Die Stromversorgung ist ausgelegt für einfache unstabilisierte Gleichspannungs-<br />
Netzteile mit 9 bis 12 V Ausgangsspannung und min<strong><strong>de</strong>s</strong>tens 200 mA Belastbarkeit.. Ein<br />
einfaches Steckernetzteil mit "Eurostecker" ist im Lieferumfang.<br />
Insgesamt sind die Anfor<strong>de</strong>rungen an die Stromversorgung unkritisch. Die Speisung kann auch aus<br />
an<strong>de</strong>ren stabilisierten o<strong>de</strong>r unstabilisierten Gleichspannungsquellen erfolgen (konzentrischer DC-<br />
Stecker, aussen 5,0 - 5,5mm, innen 2,1mm). Die Spannung am Netzteil sollte optimal 9 Volt betragen,<br />
Spannungen bis max. 16 Volt (unstabilisiertes Steckernetzteil eingestellt auf 12 Volt) sind akzeptabel.<br />
Der Pluspol <strong>de</strong>r Spannung muss am inneren Kontakt <strong><strong>de</strong>s</strong> DC-Steckers liegen!<br />
Intern verfügt <strong>de</strong>r <strong>MIDI</strong> <strong>RS</strong>-<strong>232</strong>/<strong>RS</strong>-<strong>422</strong> <strong>Converter</strong> über einen Verpolungsschutz: bei falsch gepoltem<br />
Netzteil wird er nicht eingeschaltet.<br />
Mit <strong>de</strong>m Drehschalter "Ch./Mo<strong>de</strong>" wird die Baudrate und die Umsetzungsart zwischen<br />
<strong>MIDI</strong> und serieller Schnittstelle eingestellt.<br />
(Zuordnung <strong>de</strong>r Drehschalter-Stelllungen zu Funktionen nur gültig für ab Juli 2011 gelieferte Geräte !)<br />
Ch./Mo<strong>de</strong> Funktion<br />
Seriell<br />
Baud<br />
<strong>MIDI</strong><br />
Baud<br />
<strong>MIDI</strong> Kanal<br />
0 1:1 transparente Baudraten-Wandlung 19200, 8N1 31250 ---<br />
1 1:1 transparente Baudraten-Wandlung 38400, 8N1 31250 ---<br />
2 1:1 transparente Baudraten-Wandlung konfig., 8N1 31250 ---<br />
3 Baudraten-Wandlung: ASCII Text<strong>MIDI</strong> Byte 38400, 8N1 31250 ---<br />
4 Baudraten-Wandlung: ASCII Text<strong>MIDI</strong> Byte konfig., 8N1 31250 ---<br />
5<br />
6<br />
7<br />
8<br />
9<br />
A<br />
B<br />
C<br />
Baudraten-Wandlung: <strong>MIDI</strong>-Msg serial Byte<br />
aber: ASCII Text <strong>MIDI</strong> Byte<br />
Baudraten-Wandlung: <strong>MIDI</strong>-Msg serial Byte<br />
aber: ASCII Text<strong>MIDI</strong> Byte<br />
Baudraten-Wandlung: <strong>MIDI</strong>-Msg Byte.<br />
Serielle Bytes wer<strong>de</strong>n in NOTE ON umgesetzt<br />
Baudraten-Wandlung: <strong>MIDI</strong>-Msg Byte.<br />
Serielle Bytes wer<strong>de</strong>n in NOTE ON umgesetzt<br />
Baudraten-Wandlung: <strong>MIDI</strong>-Msg Byte. Serielle<br />
Bytes wer<strong>de</strong>n in CONTROL CHANGE umgesetzt<br />
Baudraten-Wandlung: <strong>MIDI</strong>-Msg Byte. Serielle<br />
Bytes wer<strong>de</strong>n in CONTROL CHANGE umgesetzt<br />
Baudraten-Wandlung: <strong>MIDI</strong>-Msg Byte.<br />
Serielle Bytes wer<strong>de</strong>n in PROGRAM CHANGE<br />
o<strong>de</strong>r in CHANNEL PRESSURE umgesetzt<br />
Baudraten-Wandlung: <strong>MIDI</strong>-Msg Byte.<br />
Serielle Bytes wer<strong>de</strong>n in PROGRAM CHANGE<br />
o<strong>de</strong>r in CHANNEL PRESSURE umgesetzt<br />
19200, 8N1 31250 Voreinstellung:1<br />
konfig., 8N1 31250 Voreinstellung:1<br />
19200, 8N1 31250 Voreinstellung:1<br />
konfig., 8N1 31250 Voreinstellung:1<br />
19200, 8N1 31250 Voreinstellung:1<br />
konfig., 8N1 31250 Voreinstellung:1<br />
19200, 8N1 31250 Voreinstellung:1<br />
konfig., 8N1 31250 Voreinstellung:1<br />
D<br />
Merge- und Through Box: sen<strong>de</strong>t Daten an <strong>MIDI</strong> IN<br />
und serieller Schnittstelle "gemultiplext" weiter<br />
konfig., 8N1 31250 ---<br />
E programmierbarer Standalone Kommandointerpreter konfig., 8N1 31250 Voreinstellung:1<br />
F ASCII Text gesteuerter Kommandointerpreter konfig., 8N1 31250 ---<br />
"<strong>MIDI</strong>-MSG Byte" beschreibt eine spezielle Betriebsart, um mit <strong>MIDI</strong> Kanalnachrichten o<strong>de</strong>r mit<br />
System-Exclusive Befehlen beliebige Bytes auf <strong>de</strong>r <strong>RS</strong>-<strong>232</strong> und <strong>RS</strong>-<strong>422</strong> Schnittstelle zu sen<strong>de</strong>n o<strong>de</strong>r<br />
beliebige von dort empfangene Bytes als verschie<strong>de</strong>n formatierte Kanalnachrichten an <strong>MIDI</strong> OUT<br />
auszugeben. Details siehe unten<br />
"ASCII Text <strong>MIDI</strong> Byte" beschreibt eine spezielle Betriebsart, um beliebige an <strong>de</strong>r <strong>RS</strong>-<strong>232</strong> bzw.<br />
<strong>RS</strong>-<strong>422</strong> Schnittstelle als ASCII-Text eingegebene Hex Co<strong><strong>de</strong>s</strong> umgewan<strong>de</strong>lt in binäre Bytes von <strong>MIDI</strong>
OUT zu sen<strong>de</strong>n o<strong>de</strong>r beliebige an <strong>MIDI</strong> IN empfangene Bytes als ASCII-Texte an <strong>de</strong>r <strong>RS</strong>-<strong>232</strong> und <strong>RS</strong>-<br />
<strong>422</strong> Schnittstelle auszugeben. Details siehe unten<br />
Der für <strong>MIDI</strong>-Nachrichten aktive <strong>MIDI</strong>-Kanal kann vom Anwen<strong>de</strong>r verän<strong>de</strong>rt wer<strong>de</strong>n, die Voreinstellung<br />
bei Lieferung ist 1. Die in diesem <strong>Manual</strong> angegebenen <strong>MIDI</strong>-Kanäle entsprechen <strong>de</strong>r "offiziellen"<br />
Zählweise von <strong>MIDI</strong>-Kanälen. Bekannlich ist <strong>de</strong>r in die <strong>MIDI</strong>-Statutsbytes eincodierte Kanalwert immer<br />
um eins kleiner! Ein z.B. vom Anwen<strong>de</strong>r eingestellter <strong>MIDI</strong>-Kanal 3 wird im <strong>MIDI</strong>-Statusbyte mit <strong>de</strong>m<br />
Wert 2 codiert. Dies ist beim Schreiben o<strong>de</strong>r Konfigurieren von Steuerprogrammen zu beachten !<br />
Die Duo-Leuchtdio<strong>de</strong> zeigt das Vorhan<strong>de</strong>nsein <strong>de</strong>r Betriebsspannung an, die eingestellte<br />
Betriebsart sowie <strong>de</strong>n Empfang und die Sendung von Daten via <strong>MIDI</strong><br />
In allen Betriebsarten hat die Duo-LED (Kombination einer roten und einer grünen LED) eine gelborange<br />
Grundfarbe.<br />
Wenn die <strong>MIDI</strong>-Schnittstelle Daten empfängt, erlischt die grüne LED kurzzeitig, d.h. die Duo-LED<br />
leuchtet rot.<br />
Wenn die <strong>RS</strong>-<strong>232</strong> o<strong>de</strong>r <strong>RS</strong>-<strong>422</strong> Schnittstelle serielle Daten empfängt, erlischt die rote LED<br />
kurzzeitig, d.h. die Duo-LED leuchtet grün.<br />
Wenn <strong>de</strong>r <strong>Converter</strong> zugleich auf <strong>MIDI</strong> und serieller Schnittstelle Daten empfängt, erlischt die<br />
Lampe kurzzeitig.<br />
Während eines Reset (wird stets ausgeführt, wenn <strong>de</strong>r "Ch./Mo<strong>de</strong>"- Drehschalter<br />
umgeschaltet wird) erlischt die Lampe für ca. 1 Sekun<strong>de</strong>.<br />
Elemente an <strong>de</strong>r Rückseite:<br />
Hier steht folgen<strong>de</strong> Hardware zur Verfügung:<br />
Die Buchse "<strong>RS</strong>-<strong>232</strong>" ist eine Standard <strong>RS</strong>-<strong>232</strong> Schnittstelle - geschaltet als "Daten-<br />
Terminal" (abgekürzt "DTE").<br />
An <strong>de</strong>r Buchse "<strong>RS</strong>-<strong>422</strong> / Option" sind neben einer Standard-<strong>RS</strong>-<strong>422</strong> Schnittstelle 4 analoge<br />
Eingänge und 2 Transistorausgänge verfügbar, die jedoch nur in Drehschalter Stellungen E<br />
und F angewandt wer<strong>de</strong>n können.<br />
Belegung <strong>de</strong>r <strong>RS</strong>-<strong>232</strong> -Schnittstelle:<br />
9-poliger Sub-D-Stecker, geschaltet als "Daten-Terminal" (abgekürzt "DTE").<br />
Pin-Belegung:<br />
Pin 1 --<br />
Pin 2: RxD (serieller Empfänger <strong>RS</strong>-<strong>232</strong>)<br />
Pin 3: TxD (serieller Sen<strong>de</strong>r <strong>RS</strong>-<strong>232</strong>)<br />
Pin 4: --<br />
Pin 5: Signalmasse<br />
Pin 6: --<br />
Pin 7: RTS out<br />
Pin 8: CTS in<br />
Pin 9: optional verfügbar +5V, max. 100 mA. Intern muss dazu ein Jumper gesetzt wer<strong>de</strong>n.<br />
Hinweise für Geräteanschluss an <strong>de</strong>r <strong>RS</strong>-<strong>232</strong> bzw. <strong>RS</strong>-<strong>422</strong> Schnittstelle:<br />
Datensen<strong>de</strong>r und Datenempfänger bei<strong>de</strong>r serieller Schnittstellen sind direkt miteinan<strong>de</strong>r verbun<strong>de</strong>n. Beim<br />
Sen<strong>de</strong>n von Daten entstehen dadurch keine Konflikte. Beim Datenempfang muss jedoch beachtet wer<strong>de</strong>n, dass<br />
3
sich die Signale bei<strong>de</strong>r Empfänger direkt, ohne Beachtung <strong>de</strong>r Zusammengehörigkeit von Datenpaketen<br />
mischen. Daher darf während inhaltlich zusammen gehören<strong>de</strong>r Zeitabschnitte nur jeweils ein<br />
Empfängerbaustein Daten empfangen. Eine explizite Auswahl o<strong>de</strong>r Umschaltung <strong>de</strong>r aktiven Schnittstelle ist<br />
nicht erfor<strong>de</strong>rlich.<br />
Die Verbindung zu einem Endgerät mit <strong>RS</strong>-<strong>232</strong>, wie z.B. einem Beamer o<strong>de</strong>r DVD-Player, kann in <strong>de</strong>r Regel mit<br />
einem Standardkabel hergestellt wer<strong>de</strong>n, wie es auch zum Anschluss von Zusatzgeräten an PCs verwen<strong>de</strong>t<br />
wird. Wir empfehlen jedoch, auch die Schnittstellen-Beschreibung <strong><strong>de</strong>s</strong> angeschlossenen Endgerätes zu<br />
beachten. Zum Anschluss eines PC an die <strong>RS</strong>-<strong>232</strong> Schnittstelle muss ein "Nullmo<strong>de</strong>m" Kabel verwen<strong>de</strong>t<br />
wer<strong>de</strong>n.<br />
Für <strong>de</strong>n Anschluss <strong>de</strong>r <strong>RS</strong>-<strong>422</strong> Schnittstelle muss ein Anschlusskabel entsprechend unten beschriebener<br />
Pinbelegung konfektioniert wer<strong>de</strong>n. Innerhalb <strong><strong>de</strong>s</strong> <strong>Converter</strong>s ist bei Lieferung ein 120 Ohm<br />
Abschlusswi<strong>de</strong>rstand aktiviert. Falls dieser bei gewissen Systemkonfigurationen unerwünscht ist, kann er durch<br />
Entfernen eines Jumpers <strong>de</strong>aktiviert wer<strong>de</strong>n.<br />
Anwen<strong>de</strong>r sollten beachten, dass aufgrund <strong>de</strong>r unterschiedlichen Baudraten prinzipbedingt Puffer-Überläufe<br />
und damit zusammenhängend Datenverluste möglich sind. Daher ist es sinnvoll, möglichst die<br />
Baudratenverhältnisse so zu wählen, dass das schwerpunktmäßig Daten sen<strong>de</strong>n<strong>de</strong> Gerät mit <strong>de</strong>r niedrigeren<br />
Baudrate arbeitet. Wenn in einer bestimmten Anwendung z.B. vor allem Daten eines <strong>MIDI</strong>-Geräts mittels <strong>RS</strong>-<br />
<strong>232</strong> analysiert wer<strong>de</strong>n sollen, ist für die <strong>RS</strong>-<strong>232</strong> Schnittstelle 38400 die optimale Baudrate. Für eine Anwendung<br />
mit schwerpunktmäßiger Steuerung eines <strong>MIDI</strong>-Geräts mittels SPS wäre hingegen 19200 die optimale<br />
Baudrate. Für die Übertragung von <strong>MIDI</strong>-Daten über längere Entfernungen mittels <strong>RS</strong>-<strong>422</strong> ist 31250 (optional<br />
konfigurierbar in Drehschalter-Stellung F) o<strong>de</strong>r 38400 Baud optimal. Latenzzeit typ. 0,5 bis 3 Millisekun<strong>de</strong>n.<br />
Für je<strong>de</strong> Datenrichtung steht ein Pufferspeicher von 4 Kilobyte zur Verfügung, <strong>de</strong>r kurze Datenspitzen effizient<br />
auffängt. Wer<strong>de</strong>n jedoch über einen längeren Zeitraum mehr Daten empfangen als weitergesen<strong>de</strong>t wer<strong>de</strong>n<br />
können, ist ein Pufferüberlauf unvermeidlich. Mit <strong>MIDI</strong> ist prinzipiell kein Handshake möglich ist. Die <strong>RS</strong>-<strong>232</strong>-<br />
Schnittstelle verfügt über ein per Konfiguration aktivierbares RTS/CTS Hardware-Handshake (bei Lieferung<br />
<strong>de</strong>aktiviert). Für die <strong>RS</strong>-<strong>422</strong> Schnittstelle ist kein Handshake vorgesehen.<br />
Belegung <strong>de</strong>r Buchse "<strong>RS</strong>-<strong>422</strong> / Option":<br />
15-polige Sub-D-Buchse<br />
Pin-Belegung:<br />
Pin 1: AnalogIn #0, Digital I/O#0, Zähler- und Enco<strong>de</strong>r-Eingang<br />
Pin 2: AnalogIn #1, Digital I/O#1, Richtungserkennung Enco<strong>de</strong>r<br />
Pin 3: AnalogIn #2, Digital I/O#2<br />
Pin 4: AnalogIn #3, Digital I/O#3<br />
Pin 5: Rx+ (<strong>RS</strong>-<strong>422</strong>)<br />
Pin 6: Rx- (<strong>RS</strong>-<strong>422</strong>)<br />
Pin 7: Tx- (<strong>RS</strong>-<strong>422</strong>)<br />
Pin 8: Tx+ (<strong>RS</strong>-<strong>422</strong>)<br />
Pin 9: MOS Transistor #4 (Open Drain Ausgang), Pulsweitemodulation<br />
Pin 10: MOS Transistor #5 (Open Drain Ausgang), Rechteckimpuls-Generator, Pulsweitemodulation<br />
Pin 11: Signalmasse<br />
Pin 12: Signalmasse<br />
Pin 13: Signalmasse<br />
Pin 14: +5V (max.100mA gesamt)<br />
Pin 15: +5V (max.100mA gesamt)<br />
Installation und Inbetriebnahme:<br />
Der Anschluss <strong>de</strong>r Stromversorgung und Datenleitungen ist in beliebiger Reihenfolge<br />
zulässig. Die Steckverbindungen "<strong>RS</strong>-<strong>232</strong>" und "<strong>RS</strong>-<strong>422</strong> / Option" können beliebig auch<br />
während anliegen<strong>de</strong>r Versorgungsspannung gesteckt wer<strong>de</strong>n.<br />
Wenn in Drehschalter-Stellung E o<strong>de</strong>r F ein externer Sensor o<strong>de</strong>r Aktuator neu angeschlossen wird,<br />
sollte sofort eine Funktionsprüfung dieser Komponente vorgenommen wer<strong>de</strong>n. Bei Fehlfunktion muss<br />
sofort die Betriebsspannung abgeschaltet wer<strong>de</strong>n und das Problem untersucht wer<strong>de</strong>n. Insbeson<strong>de</strong>re<br />
ist darauf zu achten, dass als Ausgang konfigurierte Port-Leitungen mit <strong>de</strong>m Ausgang einer extern<br />
angeschlossenen Komponente verbun<strong>de</strong>n wer<strong>de</strong>n. Dadurch kann sowohl <strong>de</strong>r <strong>Converter</strong> als auch die<br />
externe Komponente zerstört wer<strong>de</strong>n!<br />
4
Das Gerät wird mit folgen<strong>de</strong>n Voreinstellungen geliefert:<br />
Serielle Baudrate = 19200: bei <strong>de</strong>n Drehschalter-Stellungen 2,4,6,8,A,C,E,F<br />
Serielle Baudrate = 31250(<strong>MIDI</strong>): bei Drehschalter-Stellung D (Geräte geliefert ab 2012)<br />
= 19200 bei Drehschalter-Stellung D (Geräte geliefert in 2011)<br />
Bei allen an<strong>de</strong>ren Betriebsarten wird die Baudrate durch die Schalterstellung vorgegeben.<br />
Än<strong>de</strong>rn <strong>de</strong>r Baudrate ist nur in Drehschalter-Stellung E und F möglich - die Einstellung wird in <strong>de</strong>n<br />
an<strong>de</strong>ren "konfigurierbaren" Schalterstellungen übernommen: Nach <strong>de</strong>m Einschalten <strong><strong>de</strong>s</strong> Geräts o<strong>de</strong>r<br />
Umstellen <strong><strong>de</strong>s</strong> Drehschalters ist für 1 Sekun<strong>de</strong> die automatische Baudraten-Erkennung aktiv. In<br />
dieser Zeitspanne mehrmals einen beliebigen ASCII-Co<strong>de</strong> über die <strong>RS</strong>-<strong>232</strong> o<strong>de</strong>r <strong>RS</strong>-<strong>422</strong> Schnittstelle<br />
sen<strong>de</strong>n. Beste Treffsicherheit bieten klein 'm' und gross 'U'. Die Leertaste liefert oft falsche Ergebnisse !<br />
Soll Baudrate von <strong>MIDI</strong> Equipment aus geän<strong>de</strong>rt wer<strong>de</strong>n: NOTE ON o<strong>de</strong>r CONTROL CHANGE<br />
Befehle sen<strong>de</strong>n, bei <strong>de</strong>nen alle Datenbytes = hex 55 (<strong>de</strong>zimal 85) o<strong>de</strong>r hex 6D (<strong>de</strong>zimal 106) sind.<br />
Es wer<strong>de</strong>n nur die Standard-Baudraten 2400, 4800, 9600, 19200, 38400 Baud erkannt, sowie für<br />
Spezialanwendungen auch auf <strong>de</strong>r <strong>RS</strong>-<strong>232</strong>/<strong>RS</strong>-<strong>422</strong> Schnittstelle <strong>MIDI</strong> (31250 Bit/s). Bei hiervon<br />
abweichen<strong>de</strong>n Baudraten wird die nächstliegen<strong>de</strong> eingestellt. Da Einspeisung von <strong>MIDI</strong>-Signalen an <strong>de</strong>r<br />
seriellen Schnittstelle oft schwierig ist, kann die <strong>MIDI</strong>-Baudrate auch mit <strong>de</strong>m ASCII-Befehl ~ ~ (2 mal<br />
"Til<strong>de</strong>" direkt hintereinan<strong>de</strong>r) eingestellt wer<strong>de</strong>n. Die so erkannte Baudrate wird automatisch permanent<br />
gespeichert und beim nächsten Einschalten wie<strong>de</strong>r aktiviert. D.h. die Baudraten-Erkennung muss nur<br />
einmal bei Än<strong>de</strong>rungen o<strong>de</strong>r unbekannter Voreinstellung durchgeführt wer<strong>de</strong>n<br />
<strong>MIDI</strong>-Kanal = 1: relevant bei Drehschalter-Stellungen 5 bis C.<br />
Bei <strong>de</strong>r Umsetzung serielles Byte <strong>MIDI</strong> wird dieser Kanal in die <strong>MIDI</strong> Nachricht eingetragen. In <strong>de</strong>r<br />
umgekehrten Richtung <strong>MIDI</strong> Byte wer<strong>de</strong>n nur <strong>MIDI</strong> Nachrichten auf diesem Kanal konvertiert.<br />
Än<strong>de</strong>rn: Drehschalter in Stellung F bringen, ggf. Baudrate einstellen. Nach<strong>de</strong>m eine Startmeldung<br />
angezeigt wird, <strong>de</strong>n Buchstaben N (gross o<strong>de</strong>r klein), dann <strong>de</strong>n gewünschten <strong>MIDI</strong> - Kanal eintippen<br />
(ASCII 1 bis 16), danach die Enter-Taste. Diese Einstellung wird abschaltfest gespeichert.<br />
Kein Handshake (RTS/CTS Handshake AUS): relevant bei allen Drehschalter-Stellungen<br />
Än<strong>de</strong>rn: Drehschalter in Stellung F bringen, ggf. Baudrate einstellen (s.o.). Warten bis eine<br />
Startmeldung angezeigt wird. Dann zum EINschalten <strong><strong>de</strong>s</strong> Handshake <strong>de</strong>n Text Q1 eintippen,<br />
anschliessend die Enter-Taste drücken. Zum AUSschalten eintippen Q0 und die Enter-Taste drücken.<br />
Diese Einstellung wird abschaltfest gespeichert.<br />
Datenprotokolle <strong>de</strong>r Baudraten-Umsetzung:<br />
In <strong>de</strong>n "1:1 transparenten Betriebsarten" (Drehschalter-Stellungen 0,1,2) wer<strong>de</strong>n<br />
alle bei <strong>MIDI</strong> IN empfangenen Daten unverän<strong>de</strong>rt an <strong>de</strong>r <strong>RS</strong>-<strong>232</strong>/<strong>RS</strong>-<strong>422</strong> Schnittstelle<br />
weitergesen<strong>de</strong>t und umgekehrt, jedoch in an<strong>de</strong>rer Baudrate.<br />
Bei Drehschalter-Stellung 2 wird auf <strong>de</strong>r <strong>RS</strong>-<strong>232</strong>/<strong>RS</strong>-<strong>422</strong> Seite mit unterschiedlich<br />
konfigurierbaren Baudraten gesen<strong>de</strong>t und empfangen.<br />
Insbeson<strong>de</strong>re kann die <strong>MIDI</strong>-Baudrate 31250 Bit/s eingestellt wer<strong>de</strong>n. Damit kann das Gerät auch zur<br />
störungsfreien <strong>MIDI</strong>-Übertragung über längere Entfernung eingesetzt wer<strong>de</strong>n, auch in Kombination mit einem<br />
„<strong>Cinetix</strong> <strong>MIDI</strong>/<strong>RS</strong><strong>422</strong> Expan<strong>de</strong>r“.<br />
Es gibt keine Fehlermeldungen, da keine formalen Eingabefehler möglich sind. Wohl aber können durch falsche<br />
Dateneingabe inhaltlich/semantische Fehler entstehen.<br />
Die Betriebsart "ASCII Text <strong>MIDI</strong> Byte" (Drehschalter-Stellungen 3,4,5,6) ist<br />
speziell dazu geeignet, <strong>MIDI</strong>-Equipment mittels ASCII-fähigen seriellen Schnittstellen,<br />
anzusteuern, auch für manuelle Terminal-Eingabe. An <strong>de</strong>r <strong>RS</strong>-<strong>232</strong>/<strong>RS</strong>-<strong>422</strong>-Schnittstelle<br />
empfangene Text-Folgen wer<strong>de</strong>n in Binärbytes transformiert und über <strong>MIDI</strong> OUT gesen<strong>de</strong>t.<br />
Dazu wird je<strong><strong>de</strong>s</strong> binäre Byte folgen<strong>de</strong>rmassen als Text eingegeben: sein Hexa<strong>de</strong>zimalco<strong>de</strong> wird mit 2 Zeichen<br />
(Ziffern o<strong>de</strong>r <strong>de</strong>n Buchstaben A,B,C,D,E,F) beschrieben. Die Buchstaben können groß o<strong>de</strong>r klein geschrieben<br />
sein. Einstellige Hexa<strong>de</strong>zimalzahlen (kleiner als <strong>de</strong>zimal 16) können entwe<strong>de</strong>r mit einem einzigen Textzeichen<br />
5
o<strong>de</strong>r mit einer vorangestellten Null dargestellt wer<strong>de</strong>n. Als Byte-En<strong>de</strong> Zeichen muss die LEERTASTE o<strong>de</strong>r ein<br />
CARRIAGE RETURN (hex D) folgen. LINE FEED (hex A) wird ignoriert. Fehlerhafte o<strong>de</strong>r nicht interpretierbare<br />
Text-Eingaben wer<strong>de</strong>n mit einem Fragezeichen ’?’ quittiert. So kann z.B. <strong>MIDI</strong> I/O mit Programmen erfolgen, die<br />
keine 8 Bit Datenkommunikation erlauben o<strong>de</strong>r behelfsweise per Hand am Terminal.<br />
Entsprechend wer<strong>de</strong>n von <strong>MIDI</strong> IN empfangene Bytes an <strong>de</strong>r <strong>RS</strong>-<strong>232</strong>/<strong>RS</strong>-<strong>422</strong> Schnittstelle<br />
als in Klarschrift lesbarer ASCII-Text ausgegeben (nur Drehschalter-Stellungen 3 und 4 ! ).<br />
Die Drehschalter-Einstellung beeinflusst lediglich die <strong>RS</strong>-<strong>232</strong>/<strong>RS</strong>-<strong>422</strong> Baudrate. Zu <strong>de</strong>n<br />
Nachrichten gehören<strong>de</strong> <strong>MIDI</strong>-Kanäle sind in <strong>de</strong>n übermittelten ASCII Text-Daten enthalten.<br />
Beispiel: Um <strong>MIDI</strong>-seitig ein CONTROL CHANGE Statusbyte hexB1 (=<strong>de</strong>zimal 177) auszugeben wird <strong>RS</strong>-<strong>232</strong><br />
seitig die Textdarstellung "B1" eingetippt o<strong>de</strong>r sonstwie eingegeben.<br />
Umgekehrt wird z.B. ein Keyboard-Anschlag <strong>de</strong>r Note c (= <strong>MIDI</strong>-Wert <strong>de</strong>zimal 48 = hex30 ) mit Standard-<br />
Velocity (<strong>de</strong>zimal 64= ex 40) auf <strong>MIDI</strong>-Kanal 1 folgen<strong>de</strong>n ASCII-Text auf <strong>de</strong>r <strong>RS</strong>-<strong>232</strong> Seite erzeugen: “90 30 40“<br />
In Betriebsart "<strong>MIDI</strong> Msg Byte" (Drehschalter Stellungen 5 bis C) wer<strong>de</strong>n <strong>MIDI</strong>-<br />
Nachrichten in einzelne Bytes umgewan<strong>de</strong>lt und an <strong>de</strong>r seriellen Schnittstelle gesen<strong>de</strong>t.<br />
Diese Betriebsart ist in erster Linie dazu gedacht, um Geräte mit serieller Schnittstelle<br />
mittels <strong>MIDI</strong>-Nachrichten zu steuern.<br />
Bei <strong>de</strong>r Umsetzung von <strong>MIDI</strong>-Nachrichten in serielle (<strong>RS</strong>-<strong>232</strong>/<strong>RS</strong>-<strong>422</strong>) Bytes können folgend<br />
beschriebene vier Metho<strong>de</strong>n in allen Drehschalterstellungen 5 bis C beliebig gemischt<br />
wer<strong>de</strong>n. Es wer<strong>de</strong>n nur <strong>MIDI</strong>-Nachrichten auf <strong>de</strong>m per Konfiguration eingestellten <strong>MIDI</strong>-<br />
Kanal (Lieferzustand: Kanal 1) ausgewertet und seriell weitergesen<strong>de</strong>t.<br />
Bei <strong>de</strong>r umgekehrten Umsetzung von seriellen Daten auf <strong>MIDI</strong> hingegen wird je<strong><strong>de</strong>s</strong> an <strong>de</strong>r<br />
seriellen Schnittstelle empfangene Byte entsprechend <strong>de</strong>r Stellung <strong><strong>de</strong>s</strong> Drehschalters<br />
nach einer bestimmten Metho<strong>de</strong> in eine <strong>MIDI</strong>-Kanalnachricht umgewan<strong>de</strong>lt (nur<br />
Drehschalter Stellungen 7 bis C ! Details siehe weiter unten.).<br />
Darüber hinaus besteht in <strong>de</strong>r aktuellen Firmware-Version (Geräte geliefert ab Juli 2011) die<br />
Möglichkeit, diese Standard-Datenumsetzungen zu überschreiben mit vom Anwen<strong>de</strong>r<br />
frei programmierbaren Zeichenfolgen (“Strings“), die auch beim Abschalten <strong><strong>de</strong>s</strong> Geräts<br />
gespeichert bleiben. Details dazu siehe weiter unten ab Seite 9.<br />
Metho<strong>de</strong> 1:<br />
Wird an <strong>MIDI</strong> IN eine Nachricht <strong><strong>de</strong>s</strong> Typs NOTE ON, POLY KEY PRESSURE (o<strong>de</strong>r NOTE<br />
OFF) empfangen (<strong>MIDI</strong>-Kanal bei Lieferung 1 o<strong>de</strong>r vom Anwen<strong>de</strong>r konfiguriert) so wird die Nachricht in<br />
folgen<strong>de</strong>n Bytewert umcodiert, <strong>de</strong>r dann sofort an <strong>de</strong>n seriellen (<strong>RS</strong>-<strong>232</strong> und <strong>RS</strong>-<strong>422</strong>)<br />
Schnittstellen weitergesen<strong>de</strong>t wird:<br />
1. Datenbyte (Notenwert): wird zu Bits 0 bis 6 <strong><strong>de</strong>s</strong> seriellen Bytes.<br />
2. Datenbyte (Velocity):<br />
--- wenn <strong>de</strong>r Wert im Bereich 1 bis 126 liegt, wird Bit 7 <strong><strong>de</strong>s</strong> seriellen Bytes = 0 ("printable<br />
character", elementarer ASCII-Co<strong>de</strong>vorrat)<br />
--- wenn <strong>de</strong>r Wert = 127 ist, wird Bit 7 <strong><strong>de</strong>s</strong> seriellen Bytes = 1 (erweiterter ASCII-Co<strong>de</strong>vorrat)<br />
--- <strong>MIDI</strong> Nachrichten mit Velocity 0 und NOTE OFF wer<strong>de</strong>n ignoriert (als Schutz gegen<br />
automatisch gesen<strong>de</strong>te Nachrichten bei Noten-En<strong>de</strong>). Diese Blocka<strong>de</strong> kann optional mit <strong>de</strong>m<br />
Befehl % aufgehoben wer<strong>de</strong>n (siehe genaue Beschreibung <strong><strong>de</strong>s</strong> Befehls % auf S.10 und S.14)<br />
Beispiel: Ein Keyboard-Anschlag <strong>de</strong>r Note d (=<strong>MIDI</strong>-Wert 50 = hex32) mittlerer Velocity wird auf <strong>de</strong>r <strong>RS</strong>-<strong>232</strong><br />
Seite das Byte mit <strong>de</strong>m Binärwert hex 32, also ASCII “2“ auslösen.<br />
Metho<strong>de</strong> 2:<br />
Wird an <strong>MIDI</strong> IN eine Nachricht <strong><strong>de</strong>s</strong> Typs CONTROL CHANGE o<strong>de</strong>r PITCH CHANGE<br />
6
empfangen (<strong>MIDI</strong>-Kanal bei Lieferung 1 o<strong>de</strong>r vom Anwen<strong>de</strong>r konfiguriert) so wird die Nachricht in<br />
folgen<strong>de</strong>n, über die seriellen (<strong>RS</strong>-<strong>232</strong> und <strong>RS</strong>-<strong>422</strong>) Schnittstellen gesen<strong>de</strong>ten Bytewert<br />
umcodiert:<br />
1. Datenbyte (Controller Nr o<strong>de</strong>r Pitch LSB): Bit 0 dieses Datenbytes wird Bit 7 <strong><strong>de</strong>s</strong> an<br />
<strong>de</strong>r seriellen Schnittstelle gesen<strong>de</strong>ten Bytes.<br />
2. Datenbyte (Controller Wert o<strong>de</strong>r Pitch MSB): wird Bits 0 bis 6 <strong><strong>de</strong>s</strong> seriellen Bytes<br />
Mit einer CONTROL CHANGE Message von Controller Nr. 0 (o<strong>de</strong>r je<strong>de</strong>m an<strong>de</strong>ren Controller<br />
mit geradzahliger Nummer) wird also ein "printable character" im elementaren ASCII-<br />
Co<strong>de</strong>vorrat 0 bis 127 erzeugt. Mit einer CONTROL CHANGE Message von Controller Nr. 1<br />
(o<strong>de</strong>r je<strong>de</strong>m an<strong>de</strong>ren Controller mit ungeradzahliger Nummer) wird also ein Byte aus <strong>de</strong>m<br />
erweiterten ASCII-Co<strong>de</strong>vorrat 128 bis 255 erzeugt.<br />
Beispiel: Aus <strong>de</strong>r CONTROL CHANGE Nachricht hex B0 51 75 bzw <strong>de</strong>zimal 176 81 117 das Byte hexF5<br />
bzw <strong>de</strong>zimal 245 erzeugt und über die serielle Schnittstelle gesen<strong>de</strong>t.<br />
Metho<strong>de</strong> 3:<br />
Wird an <strong>MIDI</strong> IN eine Nachricht mit nur einem Datenbyte <strong><strong>de</strong>s</strong> Typs PROGRAM CHANGE<br />
o<strong>de</strong>r CHANNEL PRESSURE empfangen (<strong>MIDI</strong>-Kanal bei Lieferung 1 o<strong>de</strong>r vom Anwen<strong>de</strong>r konfiguriert)<br />
so wird die Nachricht in folgen<strong>de</strong>n Bytewert umcodiert, <strong>de</strong>r dann sofort an <strong>de</strong>n seriellen (<strong>RS</strong>-<br />
<strong>232</strong> und <strong>RS</strong>-<strong>422</strong>) Schnittstellen weitergesen<strong>de</strong>t wird:<br />
Das <strong>MIDI</strong>-Datenbyte wird zu Bits 0 bis 6 <strong><strong>de</strong>s</strong> seriellen Bytes. Zusätzlich wird:<br />
bei einer PROGRAM CHANGE Nachricht wird Bit 7 <strong><strong>de</strong>s</strong> seriellen Bytes = 0 gesetzt<br />
bei einer CHANNEL PRESSURE Nachricht wird Bit 7 <strong><strong>de</strong>s</strong> seriellen Bytes = 1 gesetzt<br />
Beispiel: Die PROGRAM CHANGE Nachricht hex C0 41 bzw <strong>de</strong>zimal 192 65 erzeugt an <strong>RS</strong>-<strong>232</strong> das Byte<br />
“A“, eine entsprechen<strong>de</strong> CHANNEL PRESSURE Nachricht hex D0 41 wird an <strong>RS</strong>-<strong>232</strong> das Byte hexC1<br />
ausgeben.<br />
Metho<strong>de</strong> 4:<br />
Wird an <strong>MIDI</strong> IN eine System-Exclusive Nachricht mit <strong>de</strong>m <strong>Cinetix</strong> Manufacturer ID<br />
empfangen, so wird diese folgen<strong>de</strong>rmassen an <strong>de</strong>n seriellen (<strong>RS</strong>-<strong>232</strong> und <strong>RS</strong>-<strong>422</strong>)<br />
Schnittstellen ausgegeben:<br />
Der SysEx Hea<strong>de</strong>r wird nicht weitergeleitet. Dieser besteht stets aus folgen<strong>de</strong>r 4 Byte<br />
Sequenz mit <strong>de</strong>m <strong>Cinetix</strong> SysEx Manufacturer ID:<br />
Hexa<strong>de</strong>zimal: F0 00 20 5D bzw. Dezimal: 240 0 32 93<br />
Der darauf folgen<strong>de</strong> Datenkörper wird an die serielle Schnittstellen weitergesen<strong>de</strong>t bis<br />
das EOX-Byte (hexF7 =<strong>de</strong>zimal 247) empfangen wird, das diesen Datenblock been<strong>de</strong>t und<br />
ebenfalls nicht weitergesen<strong>de</strong>t wird. Entsprechend <strong>de</strong>m <strong>MIDI</strong>-Standard darf <strong>de</strong>r<br />
Datenkörper nur Byte-Werte zwischen 0 und 127 enthalten. Normalerweise wird je<strong><strong>de</strong>s</strong><br />
Byte <strong><strong>de</strong>s</strong> Datenkörpers - insbeson<strong>de</strong>re Textpassagen - unverän<strong>de</strong>rt an <strong>de</strong>n seriellen<br />
Schnittstellen ausgegeben, bis auf folgen<strong>de</strong> Ausnahme: Nach einem Backslash ’\’<br />
repräsentieren die nachfolgen<strong>de</strong>n 2 Bytes die ASCII-Darstellung <strong><strong>de</strong>s</strong> Hexa<strong>de</strong>zimal-<br />
Co<strong><strong>de</strong>s</strong> <strong><strong>de</strong>s</strong> zu sen<strong>de</strong>n<strong>de</strong>n Zeichens.<br />
Auf diese Art können auch Bytes mit Werten 0 bis 32 sowie 128 bis 255 komfortabel in einer System-Exclusiven<br />
Nachricht übertragen wer<strong>de</strong>n. Zwischen <strong>de</strong>m Backslash und <strong>de</strong>n bei<strong>de</strong>n Bytes darf keine Leerstelle eingefügt<br />
wer<strong>de</strong>n. Sollten auf diese Art Bytewerte kleiner als hex10 übertragen wer<strong>de</strong>n, MUSS die Null vorangestellt<br />
wer<strong>de</strong>n, z.B. die Phrase \0D\0A stellt einen Zeilenumbruch dar. Ein via <strong>RS</strong>-<strong>232</strong>/<strong>RS</strong>-<strong>422</strong> zu sen<strong>de</strong>n<strong><strong>de</strong>s</strong><br />
Backslash MUSS folgen<strong>de</strong>rmassen in <strong>de</strong>r System-Exclusiven Nachricht codiert wer<strong>de</strong>n: \5C. Wenn die<br />
Hexa<strong>de</strong>zimaldarstellung hinter <strong>de</strong>m Backslash fehlerhaft ist, erfolgt die unkontrollierte Umsetzung in ein Byte.<br />
We<strong>de</strong>r wird eine Fehlermeldung ausgegeben noch <strong>de</strong>r Vorgang abgebrochen, da die meisten <strong>MIDI</strong>-Geräte<br />
solches Feedback ohnehin nicht adäqat verarbeiten können!<br />
7
Betriebsart "Byte <strong>MIDI</strong> Msg" (Drehschalter Stellungen 7 bis C)<br />
Zwar können in <strong>de</strong>r Datenrichtung <strong>MIDI</strong> <strong>RS</strong>-<strong>232</strong>/<strong>RS</strong>-<strong>422</strong> oben beschriebene Befehlstypen beliebig gemischt<br />
wer<strong>de</strong>n, doch in <strong>de</strong>r umgekehrten Datenrichtung <strong>RS</strong>-<strong>232</strong>/<strong>RS</strong>-<strong>422</strong> <strong>MIDI</strong> wird je nach Stellung <strong><strong>de</strong>s</strong><br />
Drehschalters nur ein bestimmter Typ <strong>MIDI</strong>-Nachrichten erzeugt und und über <strong>MIDI</strong> OUT gesen<strong>de</strong>t. Diese<br />
<strong>MIDI</strong>-Nachrichten enthalten immer <strong>de</strong>n per Konfiguration eingestellten <strong>MIDI</strong>-Kanal (Lieferzustand: Kanal 1).<br />
Drehschalter Stellung 7 o<strong>de</strong>r 8: Je<strong><strong>de</strong>s</strong> an <strong>de</strong>r <strong>RS</strong>-<strong>232</strong>/<strong>RS</strong>-<strong>422</strong> Schnittstelle empfangene<br />
Byte erzeugt eine NOTE ON Nachricht:<br />
1. Datenbyte (Notenwert): enthält die Bits 0 bis 6 <strong><strong>de</strong>s</strong> seriellen Bytes. Bit7 ist<br />
entsprechend <strong>de</strong>m <strong>MIDI</strong> Standard = 0<br />
2. Datenbyte (Velocity):<br />
= 64 (hex40), wenn Bit 7 <strong><strong>de</strong>s</strong> Bytes von <strong>de</strong>r seriellen Schnittstelle = 0 ist<br />
("printable character", elementarer ASCII Co<strong>de</strong>vorrat):<br />
= 127 (hex 7F) wenn Bit 7 <strong><strong>de</strong>s</strong> Bytes von <strong>de</strong>r seriellen Schnittstelle = 1 ist<br />
(erweiterter ASCII Co<strong>de</strong>vorrat):<br />
Beispiel: Bei Drehschalter Stellung 7 und <strong>MIDI</strong> Kanal Voreinstellung 1 wird ein an <strong>de</strong>r <strong>RS</strong>-<strong>232</strong> Schnittstelle<br />
empfangenes Byte „x“ die NOTE ON Nachricht hex 90 78 40 (<strong>de</strong>zimal 144 120 64) erzeugen.<br />
Ein an <strong>de</strong>r <strong>RS</strong>-<strong>232</strong> Schnittstelle empfangenes “Ä“ (Co<strong>de</strong> hexC4) wird die NOTE ON Nachricht hex.90 44 7F<br />
(<strong>de</strong>zimal 144 68 127) erzeugen (ist abhängig vom Betriebssystem, dies gilt für Windows).<br />
Drehschalter Stellung 9 o<strong>de</strong>r A: Je<strong><strong>de</strong>s</strong> an <strong>de</strong>r <strong>RS</strong>-<strong>232</strong>/<strong>RS</strong>-<strong>422</strong> Schnittstelle<br />
empfangene Byte erzeugt eine CONTROL CHANGE Nachricht:<br />
---1.Datenbyte (Controller Nr) = 80 (hex50), wenn Bit 7 <strong><strong>de</strong>s</strong> Bytes von <strong>de</strong>r seriellen<br />
Schnittstelle = 0 ist ("printable character", elementarer ASCII Co<strong>de</strong>vorrat):<br />
--- 1.Datenbyte (Controller Nr) = 81 (hex51), wenn Bit 7 <strong><strong>de</strong>s</strong> Bytes von <strong>de</strong>r seriellen<br />
Schnittstelle = 1 ist (erweiterter ASCII Co<strong>de</strong>vorrat):<br />
--- im 2.Datenbyte <strong>de</strong>r CONTROL CHANGE Nachricht (Controller Wert) wer<strong>de</strong>n<br />
die Bits 0 bis 6 <strong><strong>de</strong>s</strong> seriell empfangenen Bytes unverän<strong>de</strong>rt übertragen<br />
Beispiel: Bei Drehschalter Stellung 9 und <strong>MIDI</strong> Kanal Voreinstellung 1 wird ein an <strong>de</strong>r <strong>RS</strong>-<strong>232</strong> Schnittstelle<br />
empfangenes Byte “%“ hex25 (<strong>de</strong>zimal 37) an <strong>MIDI</strong> OUT gesen<strong>de</strong>t als Bytefolge hexa<strong>de</strong>zimal B0 50 25<br />
(<strong>de</strong>zimal 176 80 37)<br />
Ein an <strong>de</strong>r <strong>RS</strong>-<strong>232</strong> Schnittstelle empfangenes “ü“ (Co<strong>de</strong> hexFC) wird die CONTROL CHANGE Nachricht<br />
hexa<strong>de</strong>zimal B0 51 7C (<strong>de</strong>zimal 176 81 124) erzeugen (ist abhängig vom Betriebssystem, dies gilt für<br />
Windows).<br />
Drehschalter Stellung B o<strong>de</strong>r C: Je<strong><strong>de</strong>s</strong> an einer seriellen (<strong>RS</strong>-<strong>232</strong> o<strong>de</strong>r <strong>RS</strong>-<strong>422</strong>)<br />
Schnittstelle empfangene Byte erzeugt eine PROGRAM CHANGE o<strong>de</strong>r eine CHANNEL<br />
PRESSURE Nachricht in folgen<strong>de</strong>m Format:<br />
--- eine PROGRAM CHANGE Nachricht, wenn Bit 7 <strong><strong>de</strong>s</strong> seriellen Bytes = 0 ist<br />
("printable character", elementarer ASCII Co<strong>de</strong>vorrat).<br />
Das Datenbyte ist gleich <strong>de</strong>m seriellen Byte.<br />
--- eine CHANNEL PRESSURE Nachricht, wenn Bit 7 <strong><strong>de</strong>s</strong> seriellen Bytes = 1 ist<br />
(erweiterter ASCII Co<strong>de</strong>vorrat).<br />
Das Datenbyte ist gleich <strong>de</strong>m seriellen Byte MINUS 128 !<br />
Beispiel: Bei Drehschalter Stellung B und <strong>MIDI</strong> Kanal Voreinstellung 1 wird ein an <strong>de</strong>r <strong>RS</strong>-<strong>232</strong> Schnittstelle<br />
empfangenes Byte „%“ hex25 (<strong>de</strong>zimal 37) an <strong>MIDI</strong> OUT gesen<strong>de</strong>t als PROGRAM CHANGE Nachricht<br />
hexa<strong>de</strong>zimal C0 25 (<strong>de</strong>zimal 192 37)<br />
Ein an <strong>de</strong>r <strong>RS</strong>-<strong>232</strong> Schnittstelle empfangenes Paragraphen-Zeichen ’§’ (Co<strong>de</strong> hexA7, <strong>de</strong>zimal 167) wird die<br />
CHANNEL PRESSURE Nachricht hex.D0 27 (<strong>de</strong>zimal 208 39) erzeugen (ist abhängig vom Betriebssystem,<br />
dies gilt für Windows).<br />
8
Programmierbare Zeichenketten ("Strings") (neu ab Juli 2011)<br />
Insgesamt können vom Anwen<strong>de</strong>r bis zu 512 Zeichenketten mit je max.126 Bytes Länge<br />
abschaltfest in <strong>de</strong>n Speicher <strong><strong>de</strong>s</strong> Mikrocontrollers eingetragen ("programmiert") wer<strong>de</strong>n.<br />
(Details zur Durchführung <strong>de</strong>r Programmierung siehe weiter unten.)<br />
Dabei sind jeweils 128 Speicherplätze reserviert für:<br />
--- NOTE ON Nachrichten (alternativ auch für POLY KEY PRESSURE)<br />
--- CONTROL CHANGE Nachrichten (alternativ auch für PITCH WHEEL CHANGE)<br />
--- PROGRAM CHANGE Nachrichten (alternativ auch für CHANNEL PRESSURE)<br />
Beim Empfang einer dieser <strong>MIDI</strong> Nachrichten wird anstelle <strong>de</strong>r oben beschriebenen<br />
Standard-Umsetzung die entsprechend programmierte Zeichenkette an <strong>de</strong>r<br />
seriellen Schnittstelle gesen<strong>de</strong>t d.h. die Zeichenkette mit <strong>de</strong>r Nummer, die gleich<br />
<strong>de</strong>m 1.Datenbyte <strong>de</strong>r <strong>MIDI</strong> Message ist (Tonhöhe, Controller Nummer,....)<br />
Alternativ ist es auch möglich, bestimmte o<strong>de</strong>r alle Zeichenketten an <strong>MIDI</strong> OUT<br />
weiterzusen<strong>de</strong>n, d.h. eine Art Patch-Funktion.<br />
Ist für die betreffen<strong>de</strong> <strong>MIDI</strong> Nachricht o<strong>de</strong>r das betreffen<strong>de</strong> Byte keine Zeichenkette<br />
programmiert o<strong>de</strong>r wur<strong>de</strong> eine programmierte wie<strong>de</strong>r gelöscht, wird, wird die oben<br />
beschriebene Standard-Umsetzung auf <strong>de</strong>r seriellen Schnittstelle gesen<strong>de</strong>t. Im<br />
Lieferzustand <strong><strong>de</strong>s</strong> <strong>Converter</strong>s ist keine Zeichenfolge programmiert.<br />
--- Bytes mit ASCII Co<strong>de</strong> 0 - 127 an <strong>de</strong>r seriellen Schnittstelle lösen bei entsprechen<strong>de</strong>r<br />
Konfiguration die Sendung <strong>de</strong>r programmierten Zeichenkette an <strong>MIDI</strong> OUT aus. Ist für<br />
das betreffen<strong>de</strong> Byte keine Zeichenkette programmiert o<strong>de</strong>r wur<strong>de</strong> eine programmierte<br />
wie<strong>de</strong>r gelöscht, wird die oben beschriebene Strandardumsetzung an <strong>MIDI</strong> OUT<br />
gesen<strong>de</strong>t. Im Lieferzustand <strong><strong>de</strong>s</strong> <strong>Converter</strong>s ist keine Zeichenfolge programmiert.<br />
Die Sendung dieser Zeichenketten ist aktiv bei <strong>de</strong>n Drehschalter-Stellungen 5 bis C<br />
(serielles Byte String nur Stellung 7bis C). Die für die "seriell String" programmierten<br />
Zeichenketten können auch in Drehschalter-Stellung F mit <strong>de</strong>m Befehl S (Details siehe<br />
unten) gesen<strong>de</strong>t wer<strong>de</strong>n.<br />
Da die Zeichenketten bis zu 126 Bytes lang sein können, ist es möglich, mit einer einzigen<br />
<strong>MIDI</strong> Nachricht o<strong>de</strong>r einem einzigen seriellen Byte eine längere Nachrichtensequenz auf <strong>de</strong>r<br />
gegenüberliegen<strong>de</strong>n Schnittstelle auszulösen. Mathematische o<strong>de</strong>r logische Operationen<br />
sind in <strong>de</strong>n Zeichenketten nicht möglich, d.h. es kann nur exkakt die programmierte<br />
Zeichenkette gesen<strong>de</strong>t wer<strong>de</strong>n.<br />
Verschie<strong>de</strong>ne Filter-Optionen verfeinern die Entscheidung, ob in einer bestimmten Situation<br />
die Standard-Umsetzung o<strong>de</strong>r die programmierte Zeichenkette gesen<strong>de</strong>t wird:<br />
Mit <strong>de</strong>m optional anwendbaren Befehl !1 bis !16 (Details siehe unten) kann die Zeichenkette<br />
nur für einen bestimmten <strong>MIDI</strong> Kanal "scharf" gemacht wer<strong>de</strong>n. Wird <strong>de</strong>zimal 80 (hex50) zum<br />
Parameter addiert, dann wird die betreffen<strong>de</strong> Nachricht nicht an die serielle Schittstelle,<br />
son<strong>de</strong>rn an <strong>MIDI</strong> OUT gesen<strong>de</strong>t. Diese Umlenkung kann auch pauschal mit <strong>de</strong>m Befehl %<br />
akiviert wer<strong>de</strong>n.<br />
Der Befehl !0 aktiviert die Sendung <strong>de</strong>r Zeichenkette beim Empfang je<strong><strong>de</strong>s</strong> <strong>MIDI</strong> Kanals.<br />
Die Einstellung dieses Befehls wird NICHT permanent gespeichert. Beim Einschalten<br />
wird implizit <strong>de</strong>r Befehl !0 ausgeführt, d.h. in <strong>de</strong>n gespeicherten Zeichenketten sind alle <strong>MIDI</strong><br />
Kanäle zugelassen. Der ! Befehl wirkt nicht auf seriell ausgelöste Zeichenketten.<br />
9
Mit <strong>de</strong>m optional anwendbaren Befehl % (Details siehe unten) wird eine Bitmaske<br />
gesetzt, die das Sen<strong>de</strong>n <strong>de</strong>r Zeichenketten auf bestimmte Nachrichten- bzw. Daten-<br />
Typen einschränkt.<br />
Die Zeichenketten wer<strong>de</strong>n dabei nicht gelöscht und stehen nach <strong>de</strong>m Setzen <strong><strong>de</strong>s</strong><br />
betreffen<strong>de</strong>n Bits wie<strong>de</strong>r zur Verfügung<br />
Als Parameter muss unmittelbar nach <strong>de</strong>m Befehlsco<strong>de</strong> % ein Byte eingegeben wer<strong>de</strong>n, bei<br />
<strong>de</strong>m je<strong><strong>de</strong>s</strong> Bit eine bestimmte Wirkung hat. Diese Einstellung wird abschaltfest gespeichert<br />
und ist beim nächsten Einschalten wie<strong>de</strong>r aktiv. Bei Lieferung ist <strong>de</strong>r Parameter 255<br />
(hexFF) voreingestellt, dh. alle einzeln zuschaltbaren Filter-Funktionen sind bei<br />
Lieferung "durchlässig", nur NOTE OFF und Velocity=0 wer<strong>de</strong>n blockiert.<br />
Bit0 gelöscht: es wer<strong>de</strong>n keineZeichenketten von <strong>de</strong>r seriellen Schnittstelle ausgelöst<br />
Bit1 gelöscht: es wer<strong>de</strong>n keine Zeichenketten von NOTE ON Nachrichten ausgelöst<br />
Bit2 gelöscht: keine Zeichenketten von POLY KEY PRESSURE Nachrichten ausgelöst<br />
Bit3 gelöscht: keine Zeichenketten von CONTROL CHANGE Nachrichten ausgelöst<br />
Bit5 gelöscht: keine Zeichenketten von PROGRAM CHANGE und CHANNEL PRESSURE<br />
Bit5 gelöscht: keine Zeichenketten von PITCH WHEEL Nachrichten ausgelöst<br />
Bit6 gelöscht: alle von <strong>MIDI</strong> Nachrichten ausgelösten Zeichenketten wer<strong>de</strong>n nicht an die<br />
serielle Schnittstelle, son<strong>de</strong>rn an <strong>MIDI</strong> OUT gesen<strong>de</strong>t (überschreibt pauschal die mit<br />
<strong>de</strong>m Befehl ! individuell eingetragene Richtung). Seriell ausgelöste Zeichenketten<br />
wer<strong>de</strong>n von diesem Bit nicht beeinflusst.<br />
Bit7 gesetzt: NOTE ON Nachrichten mit Velocity=0 und alle NOTE OFF Nachrichten<br />
wer<strong>de</strong>n ignoriert (auch bei <strong>de</strong>n oben beschriebenen Standard-Umsetzungen)<br />
Bit7gelöscht: auch NOTE ON Nachrichten mit Velocity=0 lösen Zeichenketten aus<br />
Der ASCII Text Kommandointerpreter: (Drehschalter Stellung F)<br />
Mit diesem Kommandointerpreter wer<strong>de</strong>n Zeichenketten programmiert. Es können <strong>MIDI</strong><br />
Nachrichten im ASCII Klartext gesen<strong>de</strong>t und umgekehrt aus <strong>de</strong>m <strong>MIDI</strong> IN Empfangspuffer<br />
gelesen wer<strong>de</strong>n. Ferner können die IO Funktionen bedient und abgefragt wer<strong>de</strong>n, die serielle<br />
Schnittstelle kann konfiguriert wer<strong>de</strong>n (Baudrate, RTS/CTS Handshake) und weitere auf<br />
an<strong>de</strong>re Drehschalter-Stellungen wirken<strong>de</strong> Systemparameter wer<strong>de</strong>n hier eingestellt.<br />
Dieser Kommandointerpreter hat eine einfachere und besser handhabbare Befehlssyntax als<br />
<strong>de</strong>r nachfolgend beschriebene programmierbare Kommandointerpreter. Er reagiert nur direkt<br />
auf Eingaben an <strong>de</strong>r seriellen Schnittstelle und ist nicht für Standalone Betrieb geeignet.<br />
Die Einstellung <strong>de</strong>r Baudrate wur<strong>de</strong> bereits oben bei "Installation und Inbetriebnahme"<br />
beschrieben.<br />
Grundsätzlicher Aufbau <strong>de</strong>r ASCII-Befehle:<br />
Befehlsco<strong>de</strong> Parameter [Befehlsco<strong>de</strong> Parameter ] .... <br />
--- Einige Befehlsco<strong><strong>de</strong>s</strong> dienen zur Auswahl bestimmter I/O-Metho<strong>de</strong>n (“Devices“ = virtuelle<br />
Geräte), das sind die Befehle : (Doppelpunkt) , ; (Semikolon), S, M, @ ,U, K, J, X, G , W und {<br />
--- An<strong>de</strong>re Befehlsco<strong><strong>de</strong>s</strong> konkretisieren die mit <strong>de</strong>m zuvor selektierten o<strong>de</strong>r einem implizit<br />
bestimmten Device auszuführen<strong>de</strong> Aktion, das sind R, L, H, P, Z , T , [ und ].<br />
--- Schliesslich gibt es eine dritte Art Befehlsco<strong><strong>de</strong>s</strong>, die das allgemeine Systemverhalten modifizieren,<br />
dazu gehören: N , ! . ? , % , & , $ und Y.<br />
10
Je<strong>de</strong>r Befehl wird sofort ausgeführt, sobald die notwendige Anzahl von ASCII-Zeichen<br />
empfangen wur<strong>de</strong>. Zahlen wer<strong>de</strong>n automatisch abgeschlossen, sobald die im jeweiligen<br />
Kontext maximal mögliche Anzahl ASCII-Stellen empfangen wur<strong>de</strong>. Bei kleineren Zahlen<br />
muss entwe<strong>de</strong>r einfach mit <strong>de</strong>r Eingabe <strong><strong>de</strong>s</strong> nächsten Befehls begonnen wer<strong>de</strong>n, ein<br />
eingegeben wer<strong>de</strong>n o<strong>de</strong>r die Zahl muss mit vorangestellten Nullen eingegeben<br />
wer<strong>de</strong>n.<br />
Bei <strong>de</strong>n Befehlsco<strong><strong>de</strong>s</strong> wird nicht unterschie<strong>de</strong>n zwischen Gross- und Kleinschreibung.<br />
In Kleinbuchstaben eingegebene Befehle wer<strong>de</strong>n intern in Grossbuchstaben gewan<strong>de</strong>lt.<br />
Deshalb wer<strong>de</strong>n in diesem Text alle Befehlsco<strong><strong>de</strong>s</strong> gross geschrieben.<br />
Das Zeilenabschluss-Zeichen (hexD,<strong>de</strong>z13) führt <strong>de</strong>n vorherigen Befehl sofort<br />
aus und reorganisiert interne Strukturen <strong><strong>de</strong>s</strong> Kommandointerpreters. Obwohl nicht dringend erfor<strong>de</strong>rlich,<br />
erhöht ein gelegentlich eingefügter Zeilenumbruch die Systemstabilität. Das Zeilenvorschub-Zeichen<br />
(hexA,<strong>de</strong>z10) wird ignoriert. Dies muss ggf. bei <strong>de</strong>r Konfiguration von<br />
Terminalprogrammen und bei <strong>de</strong>r Programmierung eigener Steuerprogramme beachtet wer<strong>de</strong>n.<br />
Leerstellen wer<strong>de</strong>n nicht interpretiert, d.h. können zur grafischen Auflockerung verwen<strong>de</strong>t wer<strong>de</strong>n.<br />
Bemerkt man während <strong>de</strong>r Eingabe einen Tippfehler, sollte <strong>de</strong>r angefangene Befehl mit <br />
gelöscht wer<strong>de</strong>n. Die Rücktaste ist nicht wirksam.<br />
Befehls-Parameter (d.h. Zahlenwerte) wer<strong>de</strong>n stets in <strong>de</strong>r aktiven Zahlenbasis eingegeben (<strong>de</strong>zimal o<strong>de</strong>r<br />
hex). Nach<strong>de</strong>m die Zahlenbasis mit <strong>de</strong>m Befehl "$" eingestellt ist, wer<strong>de</strong>n Hex-Zahlen NICHT mit<br />
vorangestelltem $ Zeichen eingegeben.<br />
Je<strong>de</strong> Rückmeldung an <strong>de</strong>n Steuerrechner erfolgt in <strong>de</strong>r aktiven Zahlenbasis. Vor Hex-Zahlen wird dann das $-<br />
Zeichen gesetzt.<br />
Rückmeldungen:<br />
Das Gerät sen<strong>de</strong>t kein "Echo" <strong>de</strong>r empfangenen Daten (Ausnahme: Programmierung von Zeichenketten). Falls<br />
gewünscht, am Terminalprogramm "lokales Echo" einstellen.<br />
Je<strong>de</strong> korrekt ausgeführte und mit been<strong>de</strong>te Befehlszeile bestätigt das Gerät mit = hexD, <strong>de</strong>z13.<br />
Wenn <strong>de</strong>r Befehl (meistens wegen eines Syntax-Fehlers o<strong>de</strong>r eines unzulässigen Parameters) nicht interpretiert<br />
wer<strong>de</strong>n kann, antwortet das Gerät sofort mit “?“ plus . Wur<strong>de</strong>n bereits weitere<br />
nachfolgen<strong>de</strong> Befehle in <strong>de</strong>n Kommandopuffer geschrieben, so wer<strong>de</strong>n diese gelöscht, d.h. müssen ggf. neu<br />
eingegeben wer<strong>de</strong>n.<br />
Zum Auslesen angefor<strong>de</strong>rte Daten sen<strong>de</strong>t <strong>de</strong>r <strong>Converter</strong> unmittelbar nach Befehlseingabe (R , U , ? , ; , @ ).<br />
Je<strong>de</strong> angefor<strong>de</strong>rte Datenausgabe mit einem been<strong>de</strong>t. Hieran können evtl<br />
eingesetzte Analyseprogramme das En<strong>de</strong> eines syntaktisch zusammengehören<strong>de</strong>n Datenblocks erkennen.<br />
Datenformat <strong>de</strong>r Geräte-Kennung beim Einschalten bzw. Reset:<br />
'<strong>MIDI</strong> <strong>RS</strong>-<strong>232</strong>/<strong>RS</strong>-<strong>422</strong> <strong>Converter</strong> v4.xx'<br />
Diese Meldung wird automatisch beim Einschalten o<strong>de</strong>r nach einem Reset gesen<strong>de</strong>t, sobald <strong>de</strong>r<br />
<strong>Converter</strong> Initialisierung been<strong>de</strong>t hat. Die wie<strong>de</strong>rholte spontane Sendung dieser Meldung während <strong><strong>de</strong>s</strong><br />
Betriebs <strong>de</strong>utet auf eine ungenügen<strong>de</strong> Stromversorgung o<strong>de</strong>r auf <strong>de</strong>n <strong>Converter</strong> wirken<strong>de</strong> sehr starke<br />
Störimpulse hin.<br />
Kurzreferenz aller ASCII-Befehle (<strong>de</strong>taillierte Beschreibungen anschliessend)<br />
:nN (Doppelpunkt) Zeichenkette Nr. n (n=0-127) für NOTE ON programmieren S.12<br />
:nK (Doppelpunkt) Zeichenkette Nr. n (n=0-127) für CONTROL CHANGE programmieren S.12<br />
:nP (Doppelpunkt) Zeichenkette Nr. n (n=0-127) für PROGRAM CHANGE programmieren S.12<br />
:no (Doppelpunkt) Zeichenkette Nr. n (n=0-127) für <strong>RS</strong>-<strong>232</strong>/<strong>RS</strong>-<strong>422</strong> programmieren S.12<br />
(o formal klein geschrieben zur besseren Unterscheidung von Null. Wird intern in Grossbuchstaben umgewan<strong>de</strong>lt)<br />
11
;nN (Semikolon) Zeichenkette Nr. n (n=0-127) für NOTE ON auslesen/testen S.13<br />
;nK (Semikolon) Zeichenkette Nr. n (n=0-127) für CONTROL CHANGE auslesen/testen S.13<br />
;nP (Semikolon) Zeichenkette Nr. n (n=0-127) für PROGRAM CHANGE auslesen/testen S.14<br />
;no (Semikolon) Zeichenkette Nr. n (n=0-127) für <strong>RS</strong>-<strong>232</strong>/<strong>RS</strong>-<strong>422</strong> auslesen/testen S.14<br />
%n Bitmaske n zur Filterung bei Auslösen von Zeichenketten permanent speichern S.14<br />
!n <strong>MIDI</strong> Kanal n (n=0-16) als Filter in Zeichenkette eintragen S.15<br />
Nn <strong>MIDI</strong> Kanal einstellen für Transformation Byte <strong>MIDI</strong> Nachricht S.15<br />
$ Zahlen-Eingabe und -Darstellung ab jetzt HEXADEZIMAL S.16<br />
& Zahlen-Eingabe und -Darstellung ab jetzt DEZIMAL S.16<br />
Sn Zeichenkette ("String") Nr. n (n=0 bis 127) an <strong>MIDI</strong> OUT sen<strong>de</strong>n S.16<br />
Mn einzelnes Byte n an <strong>MIDI</strong> OUT sen<strong>de</strong>n S.16<br />
@ <strong>MIDI</strong> IN Empfangspuffer in ASCII Klartext auslesen und leeren S.16<br />
Un Analogeingang Nr. n (n=0-3) auslesen S.16<br />
KnZ Digital I/O Nr.n als hochohmigen Eingang konfigurieren (n=0 bis 3) S.17<br />
KnP Digital I/O Nr.n als Eingang m. Pull-Up Wi<strong>de</strong>rstand konfig. (n=0 bis 3) S.17<br />
KnL Digital I/O Nr.n als Ausgang LOW konfigurieren (n=0 bis 5) S.17<br />
KnH Digital I/O Nr.n als Ausgang HIGH konfigurieren (n=0 bis 5) S.17<br />
KnR einzelnen Digital I/O bzw. Schalttransistor Zustand auslesen (n=0 bis 5) S.17<br />
KCR alle Digital I/O kollektiv als Zahl auslesen S.17<br />
Yn Zeitkonstante zur Entprellung <strong>de</strong>r digitalen I/O einstellen (n=1 bis 255 in ms) S.18<br />
JR Impulszähler an I/O n auslesen S.18<br />
XR Enco<strong>de</strong>r-Zähler an I/O n auslesen S.18<br />
JZ bei<strong>de</strong> Zähler an I/O n zurücksetzen S.18<br />
WiHn PWM an OUT (Schalttransistor) Nr. i= 4 o<strong>de</strong>r 5 mit High-Phase n starten S.18/19<br />
GTn Frequenzgenerator OUT Nr.5: Gesamt-Perio<strong>de</strong> auf n einstellen & starten S.19<br />
GHn Frequenzgenerator an OUT Nr.5: High Phase auf n einstellen S.19<br />
Qn RTS/CTS Handshake ein/aus schalten S.20<br />
{ ] alle gespeicherten Zeichenketten u. Systemeinstellungen mit XMODEM sichern S.20<br />
{ [ mit XMODEM gesicherten Speicherinhalt wie<strong>de</strong>r in <strong>de</strong>n Prozessor la<strong>de</strong>n S.20<br />
? alle relevanten Systemparameter auslesen und anzeigen S.21<br />
~ ~ stellt die serielle Baudrate auf <strong>MIDI</strong> (31250 Bit/s) S.21<br />
| alle I/O und Konfiguration auf Default-Zustand zurückstellen S.21<br />
Zeichenkette eingeben und speichern:<br />
: N<br />
Der Befehlsco<strong>de</strong> ist ein Doppelpunkt gefolgt vom 1. Datenbyte <strong>de</strong>r auslösen<strong>de</strong>n <strong>MIDI</strong>-<br />
Nachricht (Tonhöhe 0-127 bzw hex7F), abschliessend gefolgt vom Buchstaben N.<br />
: K<br />
Der Befehlsco<strong>de</strong> ist ein Doppelpunkt gefolgt vom 1. Datenbyte <strong>de</strong>r auslösen<strong>de</strong>n <strong>MIDI</strong>-<br />
Nachricht (z.B.Controller Nummer 0-127 bzw hex7F), gefolgt vom Buchstaben K.<br />
: P<br />
Der Befehlsco<strong>de</strong> ist ein Doppelpunkt gefolgt vom 1. Datenbyte <strong>de</strong>r auslösen<strong>de</strong>n <strong>MIDI</strong>-<br />
Nachricht (z.B.Programm Nummer 0-127 bzw hex7F), gefolgt vom Buchstaben P.<br />
: o<br />
Der Befehlsco<strong>de</strong> ist ein Doppelpunkt gefolgt vom seriellen ASCII Co<strong>de</strong>, <strong>de</strong>r die Zeichenkette<br />
auslöst (0-127 bzw hex7F), abschliessend gefolgt vom Buchstaben o.<br />
12
Danach folgt die Zeichenkette als Texteingabe. Abgeschlossen und permanent gespeichert<br />
wird die Zeichenkette durch die Eingabe von "Anführungsstrichen oben" (ASCII Co<strong>de</strong> hex22).<br />
Das Anführungszeichen wird natürlich nicht Teil <strong>de</strong>r Zeichenkette.<br />
Beispiele: :30NHello World" :65o\B0\07\7F"<br />
"Druckbare" Zeichen (d.h. alle die mit einer Standardtastatur unmittelbar eingetippt wer<strong>de</strong>n<br />
können, ASCII-Co<strong>de</strong>-Bereich hex20 bis hex7E) wer<strong>de</strong>n direkt eingetippt.<br />
Zur Eingabe aller an<strong>de</strong>ren Byte-Werte (Steuerzeichen, lan<strong><strong>de</strong>s</strong>spezifische Umlaute) wird<br />
zuerst ein Backslash \ (ASCII Co<strong>de</strong> hex 5C) getippt, dann <strong>de</strong>r ASCII-Co<strong>de</strong> <strong><strong>de</strong>s</strong> gewünschten<br />
Zeichens als 2-stellige Hex-Zahl in Textdarstellung. Ein Zeilenumbruch wür<strong>de</strong> also z.B.<br />
eingegeben in <strong>de</strong>r Form \0d\0a. Davor und danach dürfen keine Leerstellen eingetippt<br />
wer<strong>de</strong>n, sie wür<strong>de</strong>n später in <strong>de</strong>r Zeichenkette erscheinen.<br />
Die dritte "Son<strong>de</strong>rtaste" ist die Löschtaste (Backspace, ASCII-Co<strong>de</strong> hex08), mit <strong>de</strong>r ein Teil<br />
<strong><strong>de</strong>s</strong> Textes gelöscht und neu geschrieben wer<strong>de</strong>n kann.<br />
Wenn diese Zeichen nicht zur Formatierung ausgeführt, son<strong>de</strong>rn in <strong>de</strong>r Zeichenkette<br />
gespeichert wer<strong>de</strong>n sollen, müssen Sie also mit Hilfe <strong><strong>de</strong>s</strong> Backslash eingegeben wer<strong>de</strong>n:<br />
Backslash \ als Teil <strong>de</strong>r Zeichenkette: eintippen \5c<br />
Anführungszeichen " als Teil <strong>de</strong>r Zeichenkette: eintippen \22<br />
Löschtaste als Teil <strong>de</strong>r Zeichenkette: eintippen \08<br />
Mausfunktionen, Cursortasten sowie die Funktionstasten F1 bis F12 wer<strong>de</strong>n nicht erkannt<br />
o<strong>de</strong>r ausgewertet.<br />
Für je<strong><strong>de</strong>s</strong> eingtippte Zeichen wird ein "Echo" via <strong>RS</strong>-<strong>232</strong> zurückgesen<strong>de</strong>t. "Druckbare"<br />
Zeichen wer<strong>de</strong>n 1:1 zurückgesen<strong>de</strong>t, alle an<strong>de</strong>ren kommen wie oben beschrieben als<br />
Backslash mit nachfolgen<strong>de</strong>m Hex-Co<strong><strong>de</strong>s</strong> zurück. Wenn ein druckbares Zeichen mittels<br />
Backslash und Hex-Co<strong>de</strong> eingegeben wur<strong>de</strong>, wird es jedoch als Originalzeichen<br />
zurückgesen<strong>de</strong>t. Die Eingabe \40 wür<strong>de</strong> also das Echo @ erzeugen.<br />
Sobald ein Anführungszeichen an die Zeichenkette angehängt wird, erfolgt eine permanente<br />
abschaltfeste Speicherung innerhalb <strong><strong>de</strong>s</strong> <strong>Converter</strong>s. Die Zeichenkette kann je<strong>de</strong>rzeit<br />
gelöscht o<strong>de</strong>r überschrieben wer<strong>de</strong>n (bis zu 10.000 mal). "Editieren" ist jedoch nicht möglich.<br />
Löschen einer Zeichenkette erfolgt durch Eingabe von z.B : N", d.h.<br />
einfach sofort nach <strong>de</strong>r Befehls-Sequenz ein Anführungszeichen eingeben. Die Zeichenkette<br />
enthält dann keinen Text und hat die Länge 0. Diese Konfiguration ist i<strong>de</strong>ntisch mit <strong>de</strong>r eines<br />
neuen, noch unprogrammierten Speichers.<br />
Zeichenkette prüfen bzw. testweise ausgeben:<br />
; N<br />
Der Befehlsco<strong>de</strong> ist ein Semikolon gefolgt vom 1. Datenbyte <strong>de</strong>r auslösen<strong>de</strong>n <strong>MIDI</strong>-Nachricht<br />
(Tonhöhe 0-127 bzw hex7F), abschliessend gefolgt vom Buchstaben N.<br />
; K<br />
Der Befehlsco<strong>de</strong> ist ein Semikolon gefolgt vom 1. Datenbyte <strong>de</strong>r auslösen<strong>de</strong>n <strong>MIDI</strong>-Nachricht<br />
(z.B.Controller Nummer 0-127 bzw hex7F), abschliessend gefolgt vom Buchstaben K.<br />
13
; P<br />
Der Befehlsco<strong>de</strong> ist ein Semikolon gefolgt vom 1. Datenbyte <strong>de</strong>r auslösen<strong>de</strong>n <strong>MIDI</strong>-Nachricht<br />
(z.B. Programm Nummer 0-127 bzw hex7F), abschliessend gefolgt vom Buchstaben P.<br />
Zuerst wird die Anzahl <strong>de</strong>r gespeicherten Zeichen ausgegeben, dann <strong>de</strong>r Buchstabe ! mit<br />
<strong>de</strong>m hierunter eingetragenen <strong>MIDI</strong>-Kanal,. schliesslich die Zeichenkette in klarschrift-lesbarer<br />
Form wie oben beim Echo <strong>de</strong>r Eingabe beschrieben. D.h. nicht standardmässig auf <strong>de</strong>m<br />
Bildschirm darstellbare Zeichen kommen als Kombination Backslash gefolgt von 2 Hex-<br />
Ziffern.<br />
; o<br />
Der Befehlsco<strong>de</strong> ist ein Semikolon gefolgt vom seriellen Datenbyte, das die Zeichenkette<br />
auslöst (0-127 bzw hex7F),abschliessend gefolgt vom Buchstaben o.<br />
Zuerst wird die Anzahl <strong>de</strong>r gespeicherten Zeichen ausgegeben, dann die Zeichenkette in<br />
klarschrift-lesbarer Form wie oben beim Echo <strong>de</strong>r Eingabe beschrieben. D.h. nicht<br />
standardmässig auf <strong>de</strong>m Bildschirm darstellbare Zeichen kommen als Kombination<br />
Backslash gefolgt von 2 Hex-Ziffern.<br />
Zur Beachtung: Die Ausgabe mit Backslash ist eine Klarschrift-"Interpretation" <strong><strong>de</strong>s</strong> zuvor erzeugten<br />
Speicherinhalts. Im Speicher steht je<strong><strong>de</strong>s</strong> Zeichen im Binärformat. Bei <strong>de</strong>r Sendung von Zeichenketten<br />
im "Normalbetrieb" wird natürlich das "rohe" Binärformat ausgegeben<br />
% <br />
Die Bitmaske blockiert beim Sen<strong>de</strong>n von Zeichenketten bestimmte Datentypen:<br />
Bit0 gelöscht: es wer<strong>de</strong>n keineZeichenketten von <strong>de</strong>r seriellen Schnittstelle ausgelöst<br />
Bit1 gelöscht: es wer<strong>de</strong>n keine Zeichenketten von NOTE ON Nachrichten ausgelöst<br />
Bit2 gelöscht: keine Zeichenketten von POLY KEY PRESSURE Nachrichten ausgelöst<br />
Bit3 gelöscht: keine Zeichenketten von CONTROL CHANGE Nachrichten ausgelöst<br />
Bit5 gelöscht: keine Zeichenketten von PROGRAM CHANGE und CHANNEL PRESSURE<br />
Bit5 gelöscht: keine Zeichenketten von PITCH WHEEL Nachrichten ausgelöst<br />
Bit6 gelöscht: alle von <strong>MIDI</strong> Nachrichten ausgelösten Zeichenketten wer<strong>de</strong>n nicht an die<br />
serielle Schnittstelle, son<strong>de</strong>rn an <strong>MIDI</strong> OUT gesen<strong>de</strong>t (überschreibt pauschal die mit<br />
<strong>de</strong>m Befehl ! individuell eingetragene Richtung). Seriell ausgelöste Zeichenketten<br />
wer<strong>de</strong>n von diesem Bit nicht beeinflusst.<br />
Bit7 gesetzt: NOTE ON Nachrichten mit Velocity=0 und alle NOTE OFF Nachrichten<br />
wer<strong>de</strong>n ignoriert (auch bei <strong>de</strong>n oben beschriebenen Standard-Umsetzungen)<br />
Bit7gelöscht: auch NOTE ON Nachrichten mit Velocity=0 lösen Zeichenketten aus<br />
Anmerkung: Diese Einstellung wird abschaltfest gespeichert und ist beim nächsten Einschalten wie<strong>de</strong>r aktiv.<br />
Die Zeichenketten wer<strong>de</strong>n durch <strong>de</strong>n % Befehl nicht gelöscht und sind nach <strong>de</strong>m Setzen <strong><strong>de</strong>s</strong> betreffen<strong>de</strong>n Bits<br />
wie<strong>de</strong>r aktiv. Die Bitmaske wirkt nur in <strong>de</strong>n Drehschalter-Stellungen 7 bis C, für die Richtung <strong>MIDI</strong> Byte auch<br />
in Positionen 5 und 6.<br />
Als Parameter wird unmittelbar nach <strong>de</strong>m Befehlsco<strong>de</strong> % ein Masken-Byte eingegeben, bei <strong>de</strong>m je<strong><strong>de</strong>s</strong> Bit eine<br />
bestimmte Wirkung hat. Bei Lieferung ist <strong>de</strong>r Parameter 255 (hexFF) voreingestellt, dh. alle einzeln<br />
zuschaltbaren Filter-Funktionen sind bei Lieferung "durchlässig", nur NOTE OFF und Velocity=0 wer<strong>de</strong>n<br />
blockiert.<br />
Erstellung <strong>de</strong>r Bitmaske: Auch ohne tiefere Informatik-Kenntnisse lassen sich die einzelnen Bits additiv zum<br />
Masken-Byte zusammenfügen, in<strong>de</strong>m je<strong>de</strong>m Bit ein Byte zugewiesen wird, das genau seinem "Gewicht"<br />
14
entspricht. Für je<strong><strong>de</strong>s</strong> Bit, das gesetzt wer<strong>de</strong>n soll, wird sein Gewichts-Byte zum Masken-Byte addiert. Um<br />
ein Bit zu löschen, wird sein Gewicht vom Masken-Byte abgezogen. Natürlich darf dasselbe Bit nicht<br />
mehrmals addiert o<strong>de</strong>r abgezogen wer<strong>de</strong>n ! Aufgrund <strong>de</strong>r speziellen Konstruktion <strong>de</strong>r Gewichte tritt bei dieser<br />
Operation kein "Überlauf" o<strong>de</strong>r "Borgen" auf.<br />
Bit Nummer Gewicht hexa<strong>de</strong>z. Gewicht <strong>de</strong>zimal<br />
Bit 0 1 1<br />
Bit 1 2 2<br />
Bit 2 4 4<br />
Bit 3 8 8<br />
Bit 4 10 16<br />
Bit 5 20 32<br />
Bit 6 40 64<br />
Bit 7 80 128<br />
Beispiel: Es sollen nur für NOTE ON (ausser Velocity=0) und für serielle Bytes programmierte<br />
Zeichenketten ausgelöst wer<strong>de</strong>n. Dazu müssen Bit0, Bit1 und Bit7 addiert wer<strong>de</strong>n, also<br />
hexa<strong>de</strong>zimal 1 + 2 + 80 = hex83 dasselbe <strong>de</strong>zimal: 1 + 2 + 128 = 131<br />
! (nicht verwechseln mit Befehl N )<br />
<strong>MIDI</strong> Kanal (0 bis 16) als Filter bei <strong>de</strong>r Programmierung in Zeichenkette eintragen<br />
! 0 schaltet die Filterung aus, d.h. je<strong>de</strong>r <strong>MIDI</strong> Kanal ist zugelassen.<br />
Anmerkung: Der <strong>MIDI</strong> Kanal wird eingegeben in <strong>de</strong>r Form, wie sie in User-<strong>Manual</strong>s etc verwen<strong>de</strong>t<br />
wird. Ausgefiltert wer<strong>de</strong>n <strong>MIDI</strong>-Nachrichten, in <strong>de</strong>ren Statusbyte <strong>de</strong>r Kanal mit einem um 1 kleineren<br />
Wert (0-15/hexF) eingetragen ist.<br />
Dieser Kanal wird in je<strong>de</strong> nachfolgend programmierte Zeichenkette eingetragen, bis durch einen neuen<br />
! - Befehl eine an<strong>de</strong>rer Kanal eingestellt wird. Der Parameter wird nicht permanent gespeichert. Bei<br />
je<strong>de</strong>m System-Reset (Betätigung <strong><strong>de</strong>s</strong> Drehschalters o<strong>de</strong>r Einschalten <strong>de</strong>r Stromversorgung) wird er auf<br />
0 zurückgesetzt. D.h. als Voreinstellung wer<strong>de</strong>n die Zeichenketten so programmiert, dass sie von<br />
je<strong>de</strong>m <strong>MIDI</strong> Kanal ausgelöst wer<strong>de</strong>n.<br />
Der Befehl ! nur aktiv in Drehschalter Stellung F während <strong>de</strong>r Programmierung von Zeichenketten. Aber<br />
das damit gespeicherte Kanalfilter ist aktiv bei Ausösung <strong>de</strong>r Zeichenketten (Schalterstellung 5 bis C) !<br />
Beispiel: !1:30Na"!2:31Nb" sorgt dafür, dass nach Empfang einer NOTE ON Nachricht auf Kanal<br />
1 mit Tonhöhe 30 das Byte a (ASCII Co<strong>de</strong> <strong>de</strong>zimal97/hex 61) über die serielle Schnittstelle gesen<strong>de</strong>t<br />
wird und nach Empfang einer NOTE ON Nachricht auf Kanal 2 mit Tonhöhe 31 das serielle Byte b<br />
(ASCII Co<strong>de</strong> <strong>de</strong>zimal98/hex 62).<br />
N (nicht verwechseln mit Befehl ! )<br />
--- Bei <strong>de</strong>r Transformation Byte <strong>MIDI</strong> Nachricht wird <strong>de</strong>r <strong>MIDI</strong> Kanal (1 bis 16) in<br />
die zu sen<strong>de</strong>n<strong>de</strong>n Nachricht eingetragen<br />
--- Bei <strong>de</strong>r Transformation <strong>MIDI</strong> Nachricht Byte wer<strong>de</strong>n nur empfangene<br />
Nachrichten mit diesem <strong>MIDI</strong> Kanal seriell übertragen. (Dies gilt nur für die<br />
Standard-Transformation. Für Zeichenketten gilt <strong>de</strong>r mit <strong>de</strong>m Befehl ! dort<br />
eingetragene <strong>MIDI</strong>-Kanal. Ausgabe von Zeichenketten hat Vorrang vor Standard)<br />
Anmerkung: Der <strong>MIDI</strong> Kanal wird eingegeben in <strong>de</strong>r Form, wie sie in User-<strong>Manual</strong>s etc verwen<strong>de</strong>t<br />
wird. In <strong>de</strong>n <strong>MIDI</strong>-Nachrichten wird immer <strong>de</strong>r um 1 kleinere Wert eingetragen (0-15/hexF) o<strong>de</strong>r gefiltert.<br />
Dieser Systemparameter wird sofort permanent gespeichert, d.h. bleibt nach einem System-Reset<br />
(Betätigung <strong><strong>de</strong>s</strong> Drehschalters o<strong>de</strong>r Ausschalten <strong>de</strong>r Stromversorgung) erhalten.<br />
Beispiel: N1 veranlasst in <strong>de</strong>n Drehschalter-Stellungen 7 bis C die Sendung o<strong>de</strong>r Ausfilterung von<br />
Statusbytes <strong>de</strong>r Form hex90 (Note On), hexB0 (Control Change), hexC0 (Progr.Change) usw.<br />
15
$ (kein Parameter)<br />
Setzt die Zahlenbasis auf Hexa<strong>de</strong>zimal.<br />
Anmerkung: Die Parameterwerte aller Befehle wer<strong>de</strong>n von nun an als Hexa<strong>de</strong>zimalzahlen<br />
interpretiert und Zahlenausgaben erfolgen hexa<strong>de</strong>zimal. Dieser Zustand bleibt aktiv, bis durch <strong>de</strong>n<br />
Befehl & die <strong>de</strong>zimaleZahlenbasis eingestellt wird. Alle zum PC zurückgemel<strong>de</strong>ten Hex-Zahlen sind mit<br />
einem vorangestellten $ codiert.<br />
& (kein Parameter)<br />
Setzt die Zahlenbasis auf Dezimal.<br />
Anmerkung: Die Parameterwerte aller Befehle wer<strong>de</strong>n von nun an als Dezimalzahlen interpretiert.<br />
S <br />
programmierte Zeichenkette ("String") Nr. 0 bis 127 an <strong>MIDI</strong> OUT sen<strong>de</strong>n<br />
Anmerkung: Folgen<strong>de</strong>r Unterschied ist zu beachten: Primär wer<strong>de</strong>n die Zeichenketten mit <strong>de</strong>m<br />
Kommandointerpreter in Drehschalter-Stellung F programmiert, damit sie in einer <strong>de</strong>r Drehschalter-<br />
Stellungen 7 bis C beim Empfang <strong><strong>de</strong>s</strong> zugeordneten Bytes gesen<strong>de</strong>t wer<strong>de</strong>n. In Drehschalter-Stellung F<br />
o<strong>de</strong>r E löst <strong>de</strong>r Empfang <strong><strong>de</strong>s</strong> entsprechen<strong>de</strong>n ASCII-Co<strong><strong>de</strong>s</strong> nicht die Zeichenkette aus.<br />
Der Befehl S veranlasst dagegen in Drehschalter-Stellung F die Sendung <strong>de</strong>r entsprechen<strong>de</strong>n<br />
Zeichenkette.<br />
Beispiel: S65 veranlasst die Sendung <strong>de</strong>r für die Transformation <strong><strong>de</strong>s</strong> Buchstabens A gespeicherten<br />
Zeichenkette.<br />
M <br />
sen<strong>de</strong>t das als Text nachfolgen<strong>de</strong> Byte sofort über <strong>MIDI</strong> OUT<br />
Beispiel: die serielle Texteingabe $M90M30&M64 veranlasst die Sendung einer NOTE ON<br />
Nachricht auf <strong>MIDI</strong>-Kanal 1 für Note c mit Standard Velocity <strong>de</strong>zimal 64.<br />
@ (kein Parameter)<br />
liest <strong>de</strong>n <strong>MIDI</strong> IN Empfangspuffer aus und sen<strong>de</strong>t <strong>de</strong>n Inhalt in ASCII Klartext an<br />
die serielle Schnittstelle. Zahlenformat wie mit Befehl & o<strong>de</strong>r $ eingestellt.<br />
Anmerkung: Die Ausgabe beginnt mit <strong>de</strong>m Zeichen @, gefolgt von <strong>de</strong>r Anzahl momentan im Puffer<br />
gespeicherter Bytes (immer Dezimalformat) und einem Doppelpunkt. Danach folgen die maximal 16<br />
ältesten im Puffer befindlichen Bytes im aktuell eingestellten Zahlenformat. Sind mehr Bytes im<br />
Puffer vorhan<strong>de</strong>n, muss <strong>de</strong>r Befehl mehrmals gegeben wer<strong>de</strong>n um alle Bytes anzuzeigen und <strong>de</strong>n<br />
Puffer zu leeren.<br />
Beispiel für eine typische Ausgabe: @3:$90 $30 $40 . Signalisiert, dass eine<br />
NOTE ON Nachricht empfangen wur<strong>de</strong>, gibt diese über <strong>RS</strong>-<strong>232</strong>/<strong>RS</strong>-<strong>422</strong> in Klarschrift aus und löscht sie<br />
aus <strong>de</strong>m <strong>MIDI</strong> IN - Puffer.<br />
U <br />
Analogen Eingang auslesen und Wert seriell ausgeben.<br />
Parameter: Eingangs-Nummer (Bereich 0 bis 3)<br />
Beispiel: U3 veranlasst das sofortige Auslesen <strong>de</strong>r momentanen Eingangsspannung<br />
16
K <br />
Digitalen (“Kombi“) I/O für nachfolgen<strong>de</strong> Aktion auswählen.<br />
Parameter: Eingangs-Nummer (Bereich 0 bis 3, bedingt auch 4 und 5).<br />
Beispiel: K3 lässt nachfolgen<strong>de</strong> Aktionsbefehle auf <strong>de</strong>n digital I/O Nr.3 wirken,<br />
z.B. K3R veranlasst das - entprellte - Auslesen <strong><strong>de</strong>s</strong> momentanen logischen Eingangspegels.<br />
K3L konfiguriert K3 als Ausgang mit Low-Pegel.<br />
Son<strong>de</strong>rfall: KCR liest die logischen Zustän<strong>de</strong> aller I/O in einem Datenwort aus. Je<strong><strong>de</strong>s</strong><br />
Bit dieses Datenworts ist gleich <strong>de</strong>m logischen Pegel <strong>de</strong>r entsprechen<strong>de</strong>n I/O -<br />
Nummer.<br />
I/O Nr.0 geht dabei mit <strong>de</strong>m Gewicht 1 und digital OUT Nr. 5 geht mit <strong>de</strong>m Gewicht 32<br />
in diese Zahl ein. (allgemein: I/O Nr. n geht mit <strong>de</strong>m Gewicht 2 hoch n ein)<br />
Beispiel: Wenn alle digitalen I/O als Eingänge mit Pull-Up-Wi<strong>de</strong>rstand und die Schalttransistoren auf<br />
AUS konfiguriert sind (Lieferzustand ohne extern angeschlossene Komponenten), dann liefert <strong>de</strong>r<br />
Befehl KCR das Ergebnis: “KC:15” o<strong>de</strong>r bei hexa<strong>de</strong>zimaler Zahlenbasis:”KC:$ F”.<br />
L (kein Parameter)<br />
konfiguriert <strong>de</strong>n zuvor ausgewählten digitalen I/O o<strong>de</strong>r Schalttransistor als Ausgang<br />
mit Low-Pegel<br />
Beispiel: K3L<br />
H (kein Parameter)<br />
konfiguriert <strong>de</strong>n zuvor ausgewählten digitalen I/O o<strong>de</strong>r Schalttransistor als Ausgang<br />
mit Low-Pegel<br />
Alternative Be<strong>de</strong>utung: GHn High Phase <strong><strong>de</strong>s</strong> Frequenzgenerators einstellen<br />
P (kein Parameter)<br />
konfiguriert <strong>de</strong>n zuvor ausgewählten digitalen I/O als Eingang mit Pull-Up Wi<strong>de</strong>rstand<br />
Anmerkung: Der Pull-Up Wi<strong>de</strong>rstand (ca. 20-30 Kiloohm) legt intern +5 Volt an <strong>de</strong>n Eingang, so<br />
dass im unbeschalteteten Zustand High Pegel ausgelesen wird. Diese Vor-Polarisierung wird durch<br />
extern angelegte Signale überlagert.<br />
Z (kein Parameter)<br />
konfiguriert <strong>de</strong>n zuvor ausgewählten digitalen I/O als hochohmigen Eingang (”highZ”)<br />
Alternative Be<strong>de</strong>utung: JZ Impulszähler und Enco<strong>de</strong>r-Zähler zurücksetzen<br />
R(kein Parameter)<br />
“READ” = Befehl für Auslesen (“pollen”) eines Eingangswerts o<strong>de</strong>r OUT-Zustands<br />
Einzelne digitale I/O wer<strong>de</strong>n stets entprellt ausgelesen. Siehe Befehl Y.<br />
Der Befehl KCR liest jedoch die Eingangszustän<strong>de</strong> unmittelbar aus - ohne Störimpuls-Filterung -<br />
und ist damit für sehr schnelle Auswertungen geeignet.<br />
Anmerkung: Die Antwort kommt in folgen<strong>de</strong>m ASCII Format:<br />
--- Wie<strong>de</strong>rholung <strong><strong>de</strong>s</strong> Co<strong><strong>de</strong>s</strong> für das abgefragte I/O “Device”<br />
17
--- ggf. I/O Nummer<br />
--- Doppelpunkt<br />
--- Ergebniswert<br />
--- <br />
Beispiele:<br />
K3R antwortet z.B. K3:0 “>”<br />
KCR antwortet z.B. KC:$A <br />
XR antwortet z.B. X:25478 <br />
Y )<br />
Stellt die Zeitkonstante zur Entprellung <strong>de</strong>r digitalen I/O ein (ca. in Millisekun<strong>de</strong>n)<br />
Parameter: Zeitverzögerung zwischen 2 Abtastungen und Vergleichen <strong>de</strong>r logischen<br />
Pegel <strong>de</strong>r digitalen I/O. in Millisekun<strong>de</strong>n<br />
Der permanente Vergleich <strong>de</strong>r Eingangspegel mit <strong>de</strong>m vorherigen Sample wird automatisch als<br />
Hintergrundprozess durchgeführt. Je nach Anwendung ist es sinnvoll, diesen Vergleich in sehr<br />
kurzen Zeitintervallen o<strong>de</strong>r mit einer gewissen zeitlichen Trägheit durchzuführen. Zum<br />
Entprellen von Relaiskontakten ist häufig 10 Millisekun<strong>de</strong>n ein passen<strong>de</strong>r Wert, beim Entprellen<br />
einfacher Tastschalter wählt man eher 40-100 Millisekun<strong>de</strong>n.<br />
Die Voreinstellung ist 40 Millisekun<strong>de</strong>n.<br />
Da <strong>de</strong>r Abtastprozess nicht mit <strong>de</strong>n externen Signalverän<strong>de</strong>rungen synchronisiert ist, dauert es<br />
min<strong><strong>de</strong>s</strong>tens eine und bis zu 2 Abtast-Zeitkonstanten, um eine entprellte Eingangsverän<strong>de</strong>rung<br />
festzustellen.<br />
Beispiel: Y10 stellt die Abtastperio<strong>de</strong> <strong>de</strong>r I/O auf 10 ms ein<br />
JR (kein Parameter)<br />
Impuls-Zähler an I/O Nr. 0 auslesen.<br />
Anmerkung: Impulszähler und Enco<strong>de</strong>r-Zähler verwen<strong>de</strong>n getrennte Speicherzellen, d.h. können<br />
unabhängig voneinan<strong>de</strong>r ausgewertet wer<strong>de</strong>n. Der Rücksetz-Befehl wirkt jedoch stets auf bei<strong>de</strong><br />
gemeinsam.<br />
JZ (kein Parameter)<br />
Impuls-Zähler und Enco<strong>de</strong>r-Zähler auf 0 zurücksetzen.<br />
Anmerkung: Der Rücksetz-Befehl wirkt stets auf bei<strong>de</strong> gemeinsam.<br />
XR (kein Parameter)<br />
Enco<strong>de</strong>r-Zähler an I/O Nr 0 auslesen.<br />
(mit Zählrichtungserkennung an I/O Nr.1)<br />
Anmerkung: während <strong>de</strong>r Impulszähler bei je<strong>de</strong>r Flanke High->Low inkrementiert wird, prüft <strong>de</strong>r<br />
Enco<strong>de</strong>rzähler zugleich <strong>de</strong>n Pegel an I/O Nr. 1: bei "High" wird hochgezählt, bei "Low" herabgezählt.<br />
W4H <br />
Digital OUT (Schalttransistor) Nr. 4 als Pulsweitemodulator aktivieren. In seiner<br />
Standard-Anwendung arbeitet <strong>de</strong>r Pulsweitemodulator mit einer konstanten Frequenz von<br />
15686 Hz und kann mit 8 Bit Auflösung (d.h. in 255 = hex FF Schritten) justiert wer<strong>de</strong>n.<br />
18
Parameter: High-Anteil <strong><strong>de</strong>s</strong> Pulsverlaufs an I/O Nr.1.<br />
In Prozent ausgedrückt: 100 x / 255<br />
Anmerkung: Komplexere Einstellmöglichkeiten sind im Anhang A beschrieben<br />
Je<strong>de</strong>r Befehl zum statischen Schalten <strong><strong>de</strong>s</strong> digital OUT Nr. 4 (K4L, K4H) schaltet <strong>de</strong>n Pulsweite-<br />
Modulator W4 AUS.<br />
Beispiel: W4H128 erzeugt an Transistor Nr.4 (open drain) eine Rechteckwelle mit 50% High-Anteil<br />
W5H <br />
Digital OUT (Schalttransistor) Nr. 5 als Pulsweitemodulator aktivieren. In seiner<br />
Standard-Anwendung arbeitet <strong>de</strong>r Pulsweitemodulator mit einer konstanten Frequenz von<br />
3910 Hz und kann mit 10 Bit Auflösung (d.h. in 1023 = hex3FF Schritten) justiert wer<strong>de</strong>n.<br />
Parameter: High-Anteil <strong><strong>de</strong>s</strong> Pulsverlaufs an I/O Nr. 4.<br />
In Prozent ausgedrückt: 100 x / 1023<br />
Anmerkung: Komplexere Einstellmöglichkeiten sind im Anhang A beschrieben<br />
Je<strong>de</strong>r Befehl zum statischen Schalten <strong><strong>de</strong>s</strong> digital OUT Nr. 5 (K5L, K5H) o<strong>de</strong>r zum Einschalten<br />
<strong><strong>de</strong>s</strong> Frequenzgenerators schaltet <strong>de</strong>n Pulsweite-Modulator W5 AUS.<br />
Beispiel: W5H256 erzeugt an Transistor Nr.5 (open drain) eine Rechteckwelle mit 25% High-Anteil<br />
GT <br />
Digital I/O Nr. 0 als Frequenzgenerator aktivieren.<br />
Parameter: Gesamt-Perio<strong>de</strong>ndauer <strong><strong>de</strong>s</strong> Ausgangspuls als Vielfaches von 32<br />
Mikrosekun<strong>de</strong>n, daher ist die maximal einstellbare Frequenz ca. 15,6 Kilohertz<br />
(GH=1,GT=2). Zulässige Parameterwerte sind 1 bis 65535 (hexFFFF). Mit <strong>de</strong>m<br />
maximalen Parameter wird die minimale Frequenz, ca. 1 Hz eingestellt.<br />
Je<strong>de</strong>r Befehl zum statischen Einstellen <strong><strong>de</strong>s</strong> digital I/O Nr. (K5L, K5H) o<strong>de</strong>r zum Einschalten <strong><strong>de</strong>s</strong><br />
Pulsweitemodulators W5 schaltet <strong>de</strong>n Frequenzgenerator AUS.<br />
Anmerkung: Der Frequenzgenerator wird mit 2 Befehlen aktiviert: Bevor <strong>de</strong>r Frequenzgenerator<br />
gestartet wer<strong>de</strong>n kann, muss zuvor die Dauer <strong>de</strong>r High-Phase mit <strong>de</strong>m Befehl GH eingetragen<br />
wer<strong>de</strong>n. An<strong>de</strong>rnfalls ist mit un<strong>de</strong>finiertem Verhalten zu rechnen. Bei aktivem Frequenzgenerator<br />
können Gesamtperio<strong>de</strong> und High-Dauer unabhängig voneinan<strong>de</strong>r mit sofortiger Wirkung modifiziert<br />
wer<strong>de</strong>n. Die Gesamtperio<strong>de</strong> muss stets größer als die High-Dauer sein!<br />
Beispiel: GH100GT200<br />
GH <br />
Voreinstellung <strong>de</strong>r High-Phase für I/O Nr. 0 als Frequenzgenerator.<br />
Parameter: Dauer <strong>de</strong>r High-Phase <strong><strong>de</strong>s</strong> Ausgangspuls als Vielfaches von 32<br />
Mikrosekun<strong>de</strong>n. Zulässige Parameterwerte im Bereich 1 bis 65534 (hex FFFE)<br />
Anmerkung: Bevor <strong>de</strong>r Frequenzgenerator gestartet wer<strong>de</strong>n kann, muss zuvor die Dauer <strong>de</strong>r<br />
High-Phase mit diesem Befehl GH eingetragen wer<strong>de</strong>n. Bei aktivem Frequenzgenerator können<br />
Gesamtperio<strong>de</strong> und High-Dauer unabhängig voneinan<strong>de</strong>r mit sofortiger Wirkung modifiziert wer<strong>de</strong>n. Die<br />
High-Dauer muss stets kleiner als die Gesamt-Perio<strong>de</strong>ndauer sein!<br />
Beispiel: GH2GT$FFF<br />
19
Q1<br />
RTS/CTS Handshake EINschalten<br />
Q0<br />
RTS/CTS Handshake AUSschalten<br />
{ ] (kein Parameter)<br />
"Download" <strong><strong>de</strong>s</strong> gesamten nichtflüchtigen Speichers (d.h. aller fest gespeicherten<br />
Systemparameter, programmierten Zeichenketten sowie Anwen<strong>de</strong>rprogramme <strong><strong>de</strong>s</strong><br />
Standalone Kommandointerpreters) via <strong>RS</strong>-<strong>232</strong> an einen Steuerrechner mit <strong>de</strong>m XMODEM<br />
Protokoll<br />
Anmerkung: Mit diesem Befehl können möglicherweise aufwändig erstellte Sätze von Zeichenketten<br />
vor einem eventuellen Verlust gesichert wer<strong>de</strong>n o<strong>de</strong>r mehrere Konfigurationen gegeneinan<strong>de</strong>r<br />
ausgetauscht wer<strong>de</strong>n.<br />
Damit dieser Befehl nicht zufällig durch eine Fehleingabe gestartet wird, müssen die bei<strong>de</strong>n<br />
Befehlsbytes unmittelbar nacheinan<strong>de</strong>r eingegeben wer<strong>de</strong>n.<br />
Auf <strong>de</strong>m zur Sicherung verwen<strong>de</strong>ten Steuer-Rechner muss eine Software gestartet wer<strong>de</strong>n, die es<br />
erlaubt, <strong>de</strong>n Speicherinhalt als Folge standardisierter Datenpakete mit <strong>de</strong>m XMODEM CRC Protokoll<br />
herunterzula<strong>de</strong>n. Als Steuersoftware geeignet ist z.B. "Hyperterminal".<br />
Zuerst muss die Befehlsfolge { ] eingegeben wer<strong>de</strong>n. Dadurch wird eine Meldung an das<br />
Steuerprogramm zurückgesen<strong>de</strong>t, dass die XMODEM CRC 'Receive' Funktion gestartet wer<strong>de</strong>n soll.<br />
Dazu muss nun anwen<strong>de</strong>rseitig auf <strong>de</strong>m Steuerrechner ein Dialog geöffnet wer<strong>de</strong>n, in <strong>de</strong>m auch <strong>de</strong>r<br />
Name <strong>de</strong>r zu erstellen<strong>de</strong>n Sicherungsdatei eingegeben wird. Der <strong>MIDI</strong> <strong>RS</strong>-<strong>232</strong>/<strong>RS</strong>-<strong>422</strong> <strong>Converter</strong> bleibt<br />
hierfür bis zu 100 Sekun<strong>de</strong>n in einer Warteschleife. Nach Erledigung dieses Dialogs startet <strong>de</strong>r<br />
Steuerrechner <strong>de</strong>n Download. Die Übertragung dauert - abhängig von <strong>de</strong>r Baudrate - etwa 1 Minute.<br />
{ [ (kein Parameter)<br />
"Upload" einer Sicherungskopie <strong><strong>de</strong>s</strong> gesamten nichtflüchtigen Speichers (d.h. aller fest<br />
gespeicherten Systemparameter, programmierten Zeichenketten sowie Anwen<strong>de</strong>r-<br />
Programme <strong><strong>de</strong>s</strong> Standalone Kommandointerpreters) via <strong>RS</strong>-<strong>232</strong> von einem Steuerrechner<br />
mit <strong>de</strong>m "XMODEM CRC" Protokoll<br />
Anmerkung: Auf <strong>de</strong>m Steuer-Rechner muss eine Software gestartet wer<strong>de</strong>n, die es erlaubt, die<br />
Sicherungskopie als Folge standardisierter Datenpakete mit <strong>de</strong>m "XMODEM CRC" Protokoll an <strong>de</strong>n<br />
<strong>MIDI</strong> <strong>RS</strong>-<strong>232</strong>/<strong>RS</strong>-<strong>422</strong> <strong>Converter</strong> zu übertragen.<br />
Siehe auch Anmerkungen zum komplementären Download-Befehl { ] .<br />
Damit dieser Befehl nicht zufällig durch eine Fehleingabe gestartet wird, müssen die bei<strong>de</strong>n<br />
Befehlsbytes unmittelbar nacheinan<strong>de</strong>r eingegeben wer<strong>de</strong>n.<br />
Es können nur Sicherungskopien vom <strong>MIDI</strong> <strong>RS</strong>-<strong>232</strong>/<strong>RS</strong>-<strong>422</strong> <strong>Converter</strong> übertragen wer<strong>de</strong>n, nicht von<br />
an<strong>de</strong>ren <strong>Cinetix</strong> Gerätetypen mit ähnlicher Funktion. Möglicherweise können auch nach einem<br />
Austausch <strong>de</strong>r Firmware (Mikrocontroller Modul) mit <strong>de</strong>r älteren Version erstellte Sicherungskopien<br />
zurück gela<strong>de</strong>n wer<strong>de</strong>n. Dies wird von <strong>de</strong>r Firmware automatisch geprüft und ggf. <strong>de</strong>r Vorgang<br />
abgebrochen.<br />
Zuerst muss die Befehlsfolge { [ eingegeben wer<strong>de</strong>n. Dadurch wird eine Meldung an das<br />
Steuerprogramm zurückgesen<strong>de</strong>t, dass die XMODEM CRC 'Send' Funktion gestartet wer<strong>de</strong>n soll. Dazu<br />
muss nun anwen<strong>de</strong>rseitig auf <strong>de</strong>m Steuerrechner ein Dialog geöffnet wer<strong>de</strong>n, in <strong>de</strong>m auch <strong>de</strong>r Name<br />
<strong>de</strong>r zu übertragen<strong>de</strong>n Sicherungsdatei eingegeben wird. Der <strong>MIDI</strong> <strong>RS</strong>-<strong>232</strong>/<strong>RS</strong>-<strong>422</strong> <strong>Converter</strong> bleibt<br />
hierfür bis zu 100 Sekun<strong>de</strong>n in einer Warteschleife. Nach Erledigung dieses Dialogs startet <strong>de</strong>r<br />
Steuerrechner <strong>de</strong>n Upload. Die Übertragung dauert - abhängig von <strong>de</strong>r Baudrate - etwa 1 Minute.<br />
20
? (kein Parameter)<br />
Zeigt alle relevanten Systemparameter als klarschrift-lesbarer ASCII –Text an.<br />
Anmerkung: Die einzelnen Argumente geben folgen<strong>de</strong> Systemeigenschaften wie<strong>de</strong>r, die<br />
vorangestellen Buchstaben bzw. Son<strong>de</strong>rzeichen sind i<strong>de</strong>ntisch mit <strong>de</strong>n entsprechen<strong>de</strong>n Befehlsco<strong><strong>de</strong>s</strong>:<br />
KC: liest die aktuellen Pegel <strong>de</strong>r Analogeingänge/Digital I/O Nr. 0 - 3 sowie Digital OUT 4 u.5.<br />
o: Datenrichtung <strong>de</strong>r Digital I/O Nr. 0 - 3 als Bitmaske: Bit=0: Eingang, Bit=1: Ausgang<br />
Y: Entprellzeit <strong>de</strong>r digitalen I/O in Millisekun<strong>de</strong>n<br />
Q: RTS/CTS Handshake: 0=AUS, 1=EIN<br />
@: momentan zwischengespeicherte Anzahl Bytes im <strong>MIDI</strong> IN Empfangspuffer<br />
N: voreingestellter <strong>MIDI</strong> Kanal für Standard-Transformation serielles Byte <strong>MIDI</strong> Message<br />
!: in Zeichenketten einzuprogrammieren<strong>de</strong>r <strong>MIDI</strong>-Kanal<br />
%: Bitmaske zur selektierten Auslösung von Zeichenketten<br />
Beispiel einer typischen Meldung:<br />
KC:15 o:0 Y:40 Q:0 @:0 N:1 !:0 %:255 <br />
~ ~ (kein Parameter)<br />
Stellt die Baudrate <strong>de</strong> <strong>RS</strong>-<strong>232</strong>/<strong>RS</strong>-<strong>422</strong> Schnittstelle auf <strong>MIDI</strong> (31250 Bit/s)<br />
Anmerkung: Die Til<strong>de</strong> muss 2 mal direkt hintereinan<strong>de</strong>r eingegeben wer<strong>de</strong>n. Die Baudrate wird<br />
permanent gespeichert, aber erst beim nächsten Einschalten o<strong>de</strong>r Betätigung <strong><strong>de</strong>s</strong> Drehschalters aktiv.<br />
| (kein Parameter)<br />
"clear all memory": Alle Puffer und Einstellungen wer<strong>de</strong>n auf die Werkseinstellung<br />
gesetzt:<br />
--- Zahlenbasis "Dezimal"<br />
--- Der <strong>MIDI</strong>-Kanal für Filterung <strong>de</strong>r Zeichenketten (Befehl !) wird auf 0 gesetzt (= "alle <strong>MIDI</strong> Kanäle").<br />
--- Alle digitalen I/O wer<strong>de</strong>n als Eingang mit Pull-Up Wi<strong>de</strong>rstand konfiguriert.<br />
--- Die digitalen Ausgänge K4 und K5 wer<strong>de</strong>n auf Low-Pegel geschaltet (Transistoren AUS).<br />
--- Alle Impulsgeneratoren wer<strong>de</strong>n ausgeschaltet<br />
Die Einstellung <strong>de</strong>r seriellen Schnittstelle, die Bitmaske zur Filterung <strong>de</strong>r<br />
Zeichenketten, <strong>de</strong>r <strong>MIDI</strong>-Kanal bei Transformation serielles Byte <strong>MIDI</strong> Message<br />
und alle Zeichenketten bleiben unverän<strong>de</strong>rt.<br />
Merge- und Through-Box: (Drehschalter Stellung D) (neu ab Juli 2011)<br />
In dieser Betriebsart wer<strong>de</strong>n sowohl an <strong>MIDI</strong> IN als auch an <strong>de</strong>r seriellen Schnittstelle<br />
eintreffen<strong>de</strong> <strong>MIDI</strong>- Kanalnachrichten und System-Exclusive Nachrichten Datenpaket-weise<br />
korrekt miteinan<strong>de</strong>r verschachtelt. Das resultieren<strong>de</strong> Multiplex-Signal wird sowohl an <strong>MIDI</strong><br />
OUT als auch an <strong>de</strong>r seriellen Schnittstelle weiter-gesen<strong>de</strong>t. Running State wird kompensiert<br />
(fehlen<strong>de</strong> Statusbytes wer<strong>de</strong>n automatisch eingefügt).<br />
Die Baudrate an <strong>de</strong>r seriellen Schnittstelle ist konfigurierbar, insbeson<strong>de</strong>re kann auch die<br />
<strong>MIDI</strong>-Baudrate eingestellt wer<strong>de</strong>n.<br />
Mit dieser Technik können z.B. mit einer Mediensteuerung in serieller Baudrate erzeugte<br />
<strong>MIDI</strong>-Nachrichten in einen <strong>MIDI</strong>-Datenstrom einkopiert wer<strong>de</strong>n. O<strong>de</strong>r in Kombination mit<br />
einem "<strong>RS</strong>-<strong>422</strong> Expan<strong>de</strong>r für <strong>MIDI</strong> Signale" können 2 räumlich weit getrennte <strong>MIDI</strong>-Quellen<br />
miteinan<strong>de</strong>r verwoben wer<strong>de</strong>n.<br />
Mit relativ einfacher zusätzlicher Hardware kann die <strong>RS</strong>-<strong>422</strong> Schnittstelle als auch eingeschränkt die <strong>RS</strong>-<strong>232</strong><br />
Schnittstelle zu einem <strong>MIDI</strong>-Interface erweitert wer<strong>de</strong>n. Siehe Anhang B und "www.cinetix.<strong>de</strong>/interface/tiptrix/".<br />
21
Der programmierbare Standalone Kommandointerpreter:<br />
Der programmierbare Kommandointerpreter wird nur in <strong>de</strong>r Drehschalter-Stellung E<br />
aktiviert. Einstellung <strong>de</strong>r seriellen Baudrate siehe oben bei "Inbetriebnahme".<br />
Aufgrund <strong>de</strong>r Komplexität können hier nur die Haupteigenschaften ange<strong>de</strong>utet wer<strong>de</strong>n. Die<br />
komplette Dokumentation <strong><strong>de</strong>s</strong> in <strong>de</strong>r Firmware enthaltenen programmierbaren<br />
Kommandointerpreters fin<strong>de</strong>n Sie auf <strong>de</strong>r mitgelieferten CD-ROM o<strong>de</strong>r auf <strong>de</strong>r Webseite<br />
"www.as-control.<strong>de</strong>".<br />
Die Steuerung und Programmierung <strong><strong>de</strong>s</strong> Kommandointerpreters erfolgt grundsätzlich über<br />
die <strong>RS</strong>-<strong>232</strong>/<strong>RS</strong>-<strong>422</strong> Schnittstelle. Bei entsprechen<strong>de</strong>r Programmierung ist es aber möglich,<br />
auch mit <strong>MIDI</strong>-Nachrichten Funktionen <strong><strong>de</strong>s</strong> Interpreters auszuführen.<br />
Abgesehen von diesen - für ein Gerät mit <strong>MIDI</strong>-Schnittstelle notwendigen Spezialfunktionen -<br />
erfolgt die Programmierung mittels einer Syntax, die einem sehr vereinfachten "C" bzw.<br />
"Java" entspricht. Hierbei han<strong>de</strong>lt es sich um einen schnellen komplett in Assembler<br />
programmierten Kommandointerpreter. An<strong>de</strong>rs als bei ähnlichen Projekten erfolgt die<br />
Kompilation von Anwen<strong>de</strong>rprogrammen nicht mit einem Spezialprogramm vorab auf <strong>de</strong>m PC,<br />
son<strong>de</strong>rn direkt im AS-Control Interpreter.<br />
Vereinfachungen und Modifikationen <strong>de</strong>r C-Syntax wur<strong>de</strong>n vor allem vorgenommen um<br />
Speicher zu sparen und um ein möglichst effizientes experimentelles interaktives Arbeiten zu<br />
ermöglichen. Z.B. gibt es keine Funktions-Prototypen und kein "main" Programm. Der<br />
Interpreter läuft permanent in <strong>de</strong>r "main" Schleife: situationsabhängig wird er vom<br />
ausführen<strong>de</strong>n in <strong>de</strong>n kompilieren<strong>de</strong>n Modus versetzt und danach zurück in <strong>de</strong>n<br />
Ausführungsmodus. Je<strong>de</strong> Funktion kann je<strong>de</strong>rzeit für sich von <strong>de</strong>r <strong>RS</strong>-<strong>232</strong>/<strong>RS</strong>-<strong>422</strong><br />
Schnittstelle (z.B. PC Terminalprogramm o<strong>de</strong>r SPS) aufgerufen wer<strong>de</strong>n.<br />
Dazu einige einfache Beispiele. Zum genaueren Verständnis muss allerdings auf die<br />
komplette Dokumentation verwiesen wer<strong>de</strong>n:<br />
--- Mit <strong>de</strong>m Befehl "ops" wird eine Liste <strong>de</strong>r internen Operatoren <strong><strong>de</strong>s</strong><br />
Interpreters und <strong>de</strong>rzeit gespeicherten anwen<strong>de</strong>r-programmierten Funtionen über die<br />
serielle Schnittstelle ausgegeben. Intern wer<strong>de</strong>n alle Operatoren- und Funktions-<br />
Namen ausschliesslich in Grossbuchstaben verwaltet. Die Eingabe ist aber - im<br />
Gegensatz zu 'C' -beliebig in Gross- o<strong>de</strong>r Kleinschreibung möglich.<br />
--- Die Operatoren und Funktionen können spontan per Terminal-Eingabe zu<br />
temporären Funktionen verknüpft wer<strong>de</strong>n, Beispiel: " p ( 2 + 3 ) " gibt 5 auf<br />
<strong>de</strong>m Terminal aus.<br />
Hier wird eine wesentliche Einschränkung gegenüber einem PC-üblichen C-Compiler <strong>de</strong>monstriert: die<br />
einzelnen syntaktischen Elemente ("Token") müssen mit einer Leerstelle voneinan<strong>de</strong>r abgesetzt<br />
wer<strong>de</strong>n.<br />
--- Die gleiche Operation kann aber auch zu einer Anwen<strong>de</strong>r-Funktion kompiliert<br />
wer<strong>de</strong>n: " : sum p ( 2 + 3 ) ret "<br />
und kann anschliessend mit <strong>de</strong>m Befehl "sum " ausgeführt wer<strong>de</strong>n.<br />
Das gleiche Verfahren kann auch auf I/O Prozesse angewandt wer<strong>de</strong>n, etwa wird mit<br />
" mtx3 (0xb0, 7 , u1 & 127 ) " ein Analogeingang als <strong>MIDI</strong><br />
Lautstärkeregler eingesetzt. Das kann mit etwas mehr Aufwand auch als<br />
Endlos-Schleife in einer Anwen<strong>de</strong>r-Funktion kompiliert wer<strong>de</strong>n.<br />
22
--- Anwen<strong>de</strong>r-Funktionen können "bottom-up" zu komplexeren Funktionen aufgebaut<br />
wer<strong>de</strong>n.<br />
--- so können komplexe <strong>MIDI</strong>-Nachrichtenketten mit einfachen ASCII-Befehlen o<strong>de</strong>r<br />
auch mit Sensoreingaben getriggert wer<strong>de</strong>n o<strong>de</strong>r umgekehrt können komplexe serielle<br />
Datensendungen durch <strong>MIDI</strong>-Nachrichten ausgelöst wer<strong>de</strong>n.<br />
--- mit <strong>de</strong>m Operator "autoexe" kann eine <strong>de</strong>finierte Anwen<strong>de</strong>rfunktion automatisch<br />
beim Einschalten <strong><strong>de</strong>s</strong> Interpreters gestartet wer<strong>de</strong>n. Dies ermöglicht die Erstellung von<br />
reset-festen Standalone-Anwendungen.<br />
Zur Auswertung von <strong>MIDI</strong> IN ist auf niedriger Systemebene ein Filter für <strong>MIDI</strong>-<br />
Kanalnachrichten eingebaut. Beliebig in oben beschriebene Kommandozeilen<br />
eingeflochtene o<strong>de</strong>r einzeln gesen<strong>de</strong>te <strong>MIDI</strong>-Kanalnachrichten wer<strong>de</strong>n herausgefiltert, in<br />
einem speziellen Puffer abgelegt und können asynchron vom Standalone-Programm<br />
ausgewertet wer<strong>de</strong>n. So ist es möglich, <strong>de</strong>n Programmablauf z.B.mit einem <strong>MIDI</strong>- Keyboard<br />
zu lenken o<strong>de</strong>r solchen Input mit <strong>de</strong>r Auswertung <strong>de</strong>r I/O Leitungen zu verknüpfen. Hierzu<br />
sind die folgen<strong>de</strong>n Spezial-Befehle implementiert: MCHECK, GETMSG, DROPMSG,<br />
STATUS, MDAT1, MDAT2. Wenn möglich wird für maximale Datensicherheit empfohlen,<br />
keine Kanalnachrichten mit "Running State" nach <strong>MIDI</strong> IN zu sen<strong>de</strong>n!<br />
MCHECK entspricht <strong>de</strong>m "kbhit" <strong>de</strong>r C-Programmierung. Statt eines TRUE Flag gibt es das<br />
Statusbyte <strong>de</strong>r nächsten im Puffer anstehen<strong>de</strong>n (= ältesten dort vorhan<strong>de</strong>nen,<br />
Warteschlangenprinzip) <strong>MIDI</strong>-Nachricht zurück, lässt die Nachricht aber im Puffer.<br />
GETMSG holt die nächste Kanalnachricht aus <strong>de</strong>m Puffer (o<strong>de</strong>r wartet darauf wenn noch<br />
keine da ist) und speichert ihre Bestandteile ab in <strong>de</strong>n Systemvariablen STATUS, MDAT1<br />
und MDAT2 – die dann anschliessend mit <strong>de</strong>n gleichnamigen Befehlen ausgelesen wer<strong>de</strong>n<br />
können. Sie wer<strong>de</strong>n erst mit <strong>de</strong>m nächsten GETMSG Befehl überschrieben.<br />
DROPMSG entfernt die am längsten anstehen<strong>de</strong> Kanalnachricht aus <strong>de</strong>m Puffer ohne sie in<br />
die o.g. Systemvariablen zu kopieren.<br />
Umgekehrt gibt es einen Satz einfach handhabbarer Befehle zum Formatieren und Sen<strong>de</strong>n<br />
aller <strong>MIDI</strong> Kanalnachrichten sowie System-Exclusiver Nachrichten. Mit <strong>de</strong>m Befehl MC wird<br />
<strong>de</strong>r in <strong>MIDI</strong>-Nachrichten eingesetzte <strong>MIDI</strong>-Kanal temporär gegenüber <strong>de</strong>m in <strong>de</strong>r<br />
Konfiguration eingestellten Kanal temporär verän<strong>de</strong>rt.<br />
Anhang A:<br />
Komplexere Konfiguration <strong><strong>de</strong>s</strong> Pulsweite-Modulators an dig.OUT Nr. 4:<br />
Dieser Pulsweitemodulator erlaubt nur 8 Bit Auflösung. Die Handhabung von Hi Arg und Low Arg entspricht <strong>de</strong>r<br />
unten folgen<strong>de</strong>n Beschreibung für dig OUT Nr. 5<br />
Hi Arg. (hex) Hi Arg. (<strong>de</strong>z) Basisfrequenz (ca Hz) Low Arg.(hex) Low Arg. (<strong>de</strong>z)<br />
0 o<strong>de</strong>r 100 256 15682 0 .. FF 0..255<br />
200 512 1960 0 .. FF 0..255<br />
300 768 490 0 .. FF 0..255<br />
400 1024 245 0 .. FF 0..255<br />
500 1280 123 0 .. FF 0..255<br />
600 1536 61 0 .. FF 0..255<br />
700 1792 15 0 .. FF 0..255<br />
23
Komplexere Konfiguration <strong>de</strong>r Pulsweite-Modulatoren an dig.OUT Nr. 5:<br />
Mit <strong>de</strong>r im Hauptteil beschriebenen Konfiguration können die Pulsweitemodulator an <strong>de</strong>n Schalttransistor-<br />
Ausgängen Nr. 4und 5 gut eingesetzt wer<strong>de</strong>n zur Erzeugung analoger Ausgangsspannungen mit Hilfe eines<br />
externen Tiefpassfilters. Mit <strong>de</strong>n nachfolgend beschriebenen Alternativen eröffnen sich an<strong>de</strong>re Anwendungen,<br />
z.B. Ansteuerung von Mo<strong>de</strong>llbau-Servos.<br />
Das Konzept ist am besten verständlich, wenn man es in Hexa<strong>de</strong>zimal-Darstellung betrachtet. Das oberste<br />
Nibble (“Hi-Arg”)beschreibt die Basisfrequenz und Auflösung, die unteren 3 Nibbles <strong>de</strong>finieren <strong>de</strong>n<br />
High-Anteil <strong>de</strong>r erzeugten Rechteck-Schwingung. Bei <strong>de</strong>zimaler Denkweise muss man einfach bei<strong>de</strong> Anteile<br />
als “krumme” Zahlen addieren.<br />
Übrigens: die im Hauptteil beschriebene Konfiguration ist i<strong>de</strong>ntisch mit <strong>de</strong>r hier unter Hi Arg hex9000<br />
beschriebenen Konfiguration. Beim Neustart muss immer das Hi-Arg explizit angegeben wer<strong>de</strong>n (abgesehen<br />
von o.g. Ausnahme), soll jedoch bei aktiver PWM das Low-Argument verän<strong>de</strong>rt wer<strong>de</strong>n, reicht es aus, das<br />
High-Argument gleich 0 zu setzen.<br />
Hi Arg. (hex) Hi Arg. (<strong>de</strong>z) Auflösung (Bit) Basisfrequenz (ca.Hz) Low Arg.(hex) Low Arg. (<strong>de</strong>z)<br />
1000 4096 8 15686 0 .. FF 0..255<br />
2000 8192 8 1960 0 .. FF 0..255<br />
3000 12288 8 245 0 .. FF 0..255<br />
4000 16384 8 61 0 .. FF 0..255<br />
5000 20480 8 15 0 .. FF 0..255<br />
9000 36864 10 3910 0 .. 3FF 0..1023<br />
A000 40960 10 489 0 .. 3FF 0..1023<br />
B000 45056 10 61 0 .. 3FF 0..1023<br />
C000 49152 10 15 0 .. 3FF 0..1023<br />
D000 53248 10 3.8 0 .. 3FF 0..1023<br />
Anhang B: <strong>MIDI</strong> Interface an <strong>de</strong>r <strong>RS</strong>-<strong>422</strong> Schnittstelle<br />
* ) <strong>de</strong>r <strong>RS</strong>-<strong>422</strong> Treiber hat einen gewissen Innenwi<strong>de</strong>rstand. Wer<strong>de</strong>n mehr als 2 <strong>MIDI</strong> OUT angeschlossen,<br />
sollte <strong>de</strong>r Vorwi<strong>de</strong>rstand an OUT auf 180 Ohm verringert wer<strong>de</strong>n.<br />
<strong>Cinetix</strong> Medien und Interface GmbH<br />
Gemün<strong>de</strong>nerstr. 27 D-60599 Frankfurt/Main<br />
Fon: +49-69-68 51 05 Fax +49-69-68 600 409<br />
http://www.cinetix.<strong>de</strong>/interface/<br />
* Irrtum, Technische Än<strong>de</strong>rungen und Lieferbarkeit vorbehalten.<br />
* Diese Beschreibung ist informativ und sichert keine Produkteigenschaften im rechtlichen Sinne zu.<br />
* Im Text zitierte Warenzeichen und Produktnamen sind geschütztes Eigentum ihrer Eigentümer<br />
24