PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Midi Signal Einlesen



duese
21.03.2007, 14:34
Moin,

bevor ich Mecker bekomme, ich habe die Suche schon benutzt und so weit ich weiß alle artikel die damit zu tun haben studiert.

als hardware benutze ich momentan ein mega8 und ein pc817er als Optokoppler. ich habe auch schon den vorwiderstand verringert da der 817er etwas mehr strom benötigt als der cnx35.

Momentan empfange ich mit diesem Code nur Dec 252 und beim drücken einer taste kurz irgend einen anderen wert. ich bin davon ausgegangen das nur beim drücken einer taste ein signal geschickt wird und nicht permantent etwas rein kommt.
könnt ihr mir da mal auf die sprünge helfen.

Gruß Thomas



$regfile = "m8def.dat"
$crystal = 8000000
$baud = 31250

Config Lcd = 20 * 4
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , Rs = Portc.5 , E = Portc.4
Config Lcdbus = 4


Enable Urxc
Enable Interrupts

On Urxc Onrxd

Dim Char_buffer As Byte

Cls

Do

Loop


Onrxd:
Char_buffer(1) = Udr
Lcd Char_buffer(1)
Return

Gento
21.03.2007, 15:23
Hallo Thomas,

Versuche mal 38400 Baud.

Gento

duese
21.03.2007, 15:28
Gut das auch der Rainer hier zu hause ist.
ich werds mal ausprobieren, hast du damit schon mal was gemacht?

gruß thomas

duese
21.03.2007, 15:33
mhhh...
das bringt auch nix, jetzt empfange ich halt dec 248. das hats nicht gebracht:-(
mich verwundert noch das keiner die interruptroutine des urts benutzt hat. aber daran kann es doch nicht liegen.
ist evt der optokoppler zu langsam?

gruß thomas

Gento
21.03.2007, 19:42
Versuche mal :MIDI-Standard ist eine Wortlänge von 8 Bit, kein Parity-Check und 2 Stop-Bits.

Die Baudzahl ist normal 32150.
38400 kann man verwenden wenn die Daten vom PC kommen.

Gento

duese
21.03.2007, 19:58
Wie stell ich das in Bascom ein?

Naja ich habe einmal Midi vom PC geschickt und einmal von einem DMX Pult mit MidiOut. von beiden bekam ich das selbe ergebniss. ich denke die 32150 passen schon.
Welche Software eignet sich denn gut zum Testen?

Gruß thomas

Xtreme
21.03.2007, 20:14
Schau mal nach MIDI OX....
http://www.midiox.com/

duese
22.03.2007, 08:11
ich weiß auch nicht weiter. ich bekomme einfach nicht die werte die vom pc geschcitk werden. es liegt entweder am optokppler oder am internen ozilator den ich auf 8MHz gestellt habe.

Gruß thomas

duese
03.04.2007, 13:04
Moin,

da ich es auch nicht mag wenn beiträge ohne ergebniss bleiben hier die lösung.
habe mir einen pc900 optokoppler besorgt und siehe da es läuft.
der 817 hat anscheinend eine zu geringe schaltfrequenz.

gruß thomas

Stentor
24.04.2007, 00:20
Hmmm, komme hier gerade zufällig vorbei und einiges ist mir aufgestoßen:
1. Die MIDI Baudrate ist 31250 Baud! Klappt mit 8MHz prima. (Vorteiler 256)
2. Auf dem Bus wird regelmäßig eine 248 gesendet (Timing Clock xF8)
Ist also korrekt. Muß man ausfiltern wenn nicht benötigt.
3. Der Strom durch die Optokoppler Diode sollte 20mA (Schleifenstrom) betragen.
4. Es gehen PC800, PC900 und CNY17 prima.

Hier mal ein paar Status und MIDI Signale:

Status (n = MIDI Kanal) Wert 1 Wert 2
Note Off $8n 1000nnnn Key Number Velocity
Note On $9n 1001nnnn Key Number Velocity
Polyphon Pressure $An 1010nnnn Key Number Wert
Control Change $Bn 1011nnnn Controller Wert
Program Change $Cn 1100nnnn Program Number
Channel Pressure $Dn 1101nnnn Wert
Pitch Bend $En 1110nnnn LSB MSB

Status Wert 1 Wert 2
System Exclusive $F0 11110000 Daten EOX
MIDI Time Code - MTC $F1 11110001 Wert
Song Position Pointer $F2 11110010 LSB MSB
Song Select $F3 11110011 Song
Tune Request $F6 11110110 Wert
End of Exclusive - EOX $F7 11110111

Status
Timing Clock $F8 11111000
Start $FA 11111010
Continue $FB 11111011
Stop $FC 11111100
Active Sensing $FE 11111110
System Reset $FF 11111111