10.10.2013 Aufrufe

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

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!