Hallo,
würde gerne die Ansteuerung eines Midi-Expanders zunächst mal testweise
mit einem 89C2051 (später mit AtMega32 o.ä.) realisieren.
Fürs erste würde es reichen, dem Expander ein oder zwei definierte Töne
zu entlocken.
Das Testprogramm soll übrigens in Bascom geschrieben werden (ich weiß,
es gibt programmiertechnisch gelberes vom Ei ;)).
Weil ich nicht grade ein grosser Midi-Experte bin, habe ich im Vorfeld
schon mal allerlei Beiträge zum Thema gelesen.
Wenn ich das jetzt richtig verstanden habe, muss man folgendes machen:
hardwaremässig:
TXT über einen 220R-Widerstand mit Pin4 und +5V ebenfalls über 220R mit
Pin5 des Expanders verbinden (bisweilen findet man auch andere Angaben
und manche empfehlen hier die Verwendung eines Optokopplers)
softwaremässig:
Die UART Schnittstelle auf 31250 baud einstellen und per
"Seriell-Out"-Befehl die entsprechenden Midi-Befehle z.B. als Hex-Codes
ausgeben.
Weiß jemand, ob der Ansatz so weit ok ist?
Viele Grüsse,
Daniel
Ein Optokoppler im Eingang eines jeden MIDI-Gerätes ist Pflicht. Der
Ausgang bilded sich aus einer Stromschleife mit den von Dir erwähnten
zwei Widerständen zwischen Ausgang des Controllers und +5V. Zahlreiche
Schaltungen dazu befinden sich im Netz.
Das MIDI-Format ist ein simples UART 8D1SnP mit 31250Baud. Die Befehle
teilen sich in ein Statusbyte mit gesetztem 7. Bit (MSB) und (mehrere)
Datenbyte(s) mit gelöschtem 7. Bit. Viele MIDI-Befehle sind 3-Byte
Befehle, zum Beispiel NoteOn mit Kanal im ersten Byte, Notennummer im 2.
Byte und Anschlagstärke im 3. Byte.
Da du nur einen MIDI Ausgang benötigst brauchst du keinen Optokoppler
(der ist nur am Eingang erforderlich).
Angenommen der Expander empfängt auf Kanal 1, so wird z.B. mit den 3
gesendeten Bytes: $90, $3C, $7F ein Ton eingeschaltet, und mit: $80,
$3C, $7F wieder abgeschaltet.
Andi
Danke für die schnelle Antwort!
Habe jetzt ein bisschen recherchiert und so allerlei zum Thema
Midi-Eingang und Optokoppler gefunden, aber leider nichts 100%ig
verwertbares.
Wie ich das verstehe, kann man den Optokoppler auch weglassen, wenn man
die Midi-Leitung einer Soundkarte ansteuert (hilft hier wohl nicht
weiter).
Bei mir soll zunächst zum Ausprobieren ein altes Roland Keyboard JW-50
über Midi-In angesteuert werden (Diodenstecker).
Der Expander selber ist bis jetzt noch nicht einsatzbereit.
meine Vermutung:
TXT über 220R auf Optokoppler-In gegen Masse, Optokoppler-Out auf Pin5
Keyboard gegen Masse, ausserdem +5V über 220R auf Pin4, ist das so
korrekt???
(ausserdem Schutzdiode mit Anode von Masse zum OpKo-Eingang)
Hat vielleicht jemand einen link für die korrekte Beschaltung zur Hand?
Wenn man eine Note mit folgenden Werten übermitteln möchte ( NoteOn),
würde das dann so aussehen: (?)
Kanal: 3
Notennummer: 57
Anschlagsstärke: 102
1. Byte: 3 + 128 = 131
2.Byte: 57 + 0 = 57
3.Byte: 102 + 0 = 102
(0 bedeutet 7.Bit "0")
Und wie übermittlet man den Befehl NoteOff?
(2. Byte = Notennummer, 3. Byte=Ausklanggeschwindigkeit)
Irgendwo muß ja im Statusbyte mit den unbenutzten Bits mitgeteilt
werden, um welchen Befehl es sich handelt, oder reicht der erneute
Aufruf der gleichen Notennummer dafür aus?
hupps, mein letztes Posting hat sich jetzt mit den beiden anderen
Antworten überschnitten...
Also wenn ich das Roland JW-50 direkt ansteuere, brauche ich doch keinen
Optokoppler???
Ok, dann werd ich gleich mal rauchenden Kopfes bei www.ucapps.de
nachschauen!
Daniel C. wrote:
> Also wenn ich das Roland JW-50 direkt ansteuere, brauche ich doch keinen> Optokoppler???
doch, denn die optokoppler dienen der galvanischen entkopplung der
geräte (für audiogeräte besonders wichtig, zb wegen brummschleifen). bei
midi handelt es sich um eine schnittstelle, bestehend aus zwei
stromschleifen, die spannungspegel sind also nicht definiert. um kein
risiko einzugehen solltest du den einen popligen optokoppler ruhig
investieren.
tabellen zu den midicodes findest du mit gurgel massenhaft!
http://www.midimountain.com/midi/midi_status.htm
Hey, super, midicodemässig alles klar!
uC ist auch vorbereitet, jetzt bleibt eigentlich nur noch die Frage, wie
der Optokoppler zwischen Platine und Keyboard geschaltet wird.
Hm, was sind denn Stromschleifen genau???
Klar, es fließen zwei Ströme, einer pro Gerät, und beide sind nur über
den OpKo verbunden.
Was wäre denn, wenn das Keyboard schon einen Optokoppler eingebaut
hätte? Würde dann ein vorgeschalteter nicht stören? Das kann man doch
bestimmt mit einem Multimeter ausmessen, ob da eine "LED" hinter dem
Eingang ist, oder nicht...
Daniel C. wrote:
> Was wäre denn, wenn das Keyboard schon einen Optokoppler eingebaut> hätte? Würde dann ein vorgeschalteter nicht stören? Das kann man doch> bestimmt mit einem Multimeter ausmessen, ob da eine "LED" hinter dem> Eingang ist, oder nicht...
vielleicht solltest du dich mit den dokumentationen auseinandersetzen,
bevor du da irgendwas zusammenfriemelst. natürlich hat dei keyboard
schon einen optokoppler und zwar im eingang, das ist ja der sinn der
entkopplung. jedes midigerät hat einen optokoppler im eingang. der
ausgang des midigerätes liefert bei high-pegel einen strom, der den
optokoppler im eingang des nächsten gerätes steuert. damit sind beide
geräte potentialmässig entkoppelt.
schau mal zb hier
http://de.wikipedia.org/wiki/Musical_Instrument_Digital_Interface
Wie gesagt, der Optokoppler befindet sich jeweils am Eingang. Du hast
aber einen Ausgang, der den Eingang des Expanders ansteuert. Da brauchst
du nur die beiden Widerstände. So wie du es beschreibst ist es schon
richtig, nur ob Pin 4 und 5 so stimmen (oder umgekehrt) müsste ich auch
nachschauen. Aber das merkst du schnell...
Note ON: 144 + Kanal, Tastennummer, Anschlagstärke
NoteOff: 128 + Kanal, Tastennummer, 64
(Kanal jeweils 0..15, für Kanal 3 also: 2 )
Andi
Hier noch das Prinzip der MIDI Verbindung (im angehängten Bild).
Eigentlich is es nur eine Leuchtdiode (im Optokoppler) mit
Vorwiderstand. Dieser Vorwiderstand wird aus 3 einzelnen 220 Ohm
Widerständen gebildet beträgt also 660 Ohm. (5V - 1.7V ) / 660 = 5 mA.
Die Aufteilung auf 3 Widerstände ist nur dazu da, um die einzelnen
Anschlüsse gegen Kurzschluss und bedingt auch Überspannung zu schützen.
Andi
Wow, Leute, vielen Dank für die Tipps! Es hat auf Anhieb geklappt.
Das Keyboard hat noch eine antiparallele Schutzdiode vor dem
OpKo-Eingang, wie sich beim Ausmessen herausstellte.
Ansonsten Anschluss genau wie auf Andis Posting (MidiKonnekt.gif)
vorgenommen. Danke!!!
Midisteuerungen sind also doch nicht so kompliziert ;O) !
Viele Grüsse an alle, die geschrieben haben und mit Rat und Tat für
dieses Vorprojekt zur Seite standen!
Dann kommt jetzt als nächstes wohl der Midi-Expander dran...
:)
Gruss,
Daniel