Ich empfange ein Midisignal von einem Keyboard Scanner. An Pocket MIDI
über einen Adapter angeschlossen, sehen die Daten gut und fehlerfrei
aus. Ich habe zwei Taster. Die liefern wahlweise 90 25 40 80 25 40 resp.
90 27 40 80 27 40. Also Note On, Note off. Wie es sein sollte.
Das Midisignal geht über angehängte Schaltung in einen Arduino Nano an
einen SoftwareSerial-Eingang.
Die Daten, die da ankommen sind zu ca. 50% kaputt. Statt 90 25 40 kommt
z.B. 90 25 ff an.
Mangels eines USB-TTL Konverters, der 31250 Bd kann, versuche ich, mir
das mit PulseView anzusehen. Dort kann ich aber keine 31250 Bd
einstellen im UART (bzw. draufgesetzten MIDI decoder).
Jemand eine Idee, was man noch machen könnte? Ist die Konverterschaltung
OK? Könnte ich aus einem zweiten Arduino Nano einen geeigneten USB-Uart
machen?
Anm: in der Skizze sind 4,5 die Pin-Nummern des Midi DIN-Steckers. Pin 2
ist an Masse angeschlossen.
Was ist die Taktquelle für den Arduino? Der RC-Oszillator ist zu
ungenau, um als Takt für eine UART herhalten zu können, auch wenn's 'ne
Soft-UART ist.
Harald K. schrieb:> Was ist die Taktquelle für den Arduino? Der RC-Oszillator ist zu> ungenau, um als Takt für eine UART herhalten zu können, auch wenn's 'ne> Soft-UART ist.
Ah, guter Punkt. Darüber habe ich mir tatsächlich noch keine Gedanken
gemacht. Ich dachte, der hat'n Quarz und gut ist.
Christoph K. schrieb:> Ist die Konverterschaltung OK?
Ja. (Einen 10-Mbps-Optokoppler für 0,03 Mbps zu verwenden ist Overkill,
aber schadet nicht.)
> Statt 90 25 40 kommt z.B. 90 25 ff an.
Das klingt nicht nach einem elektrischen Problem, sondern dass die
Software das letzt Byte nicht schnell genug liest.
> Jemand eine Idee, was man noch machen könnte?
Hardware-Serial-Eingang verwenden.
Der Nano hat nur einen, der schon für die Kommunikation mit dem PC
verwendet wird. Du brauchst einen Mega oder Due.
Mit einem billigen Logic- Analyzer (24Mhz,8-Kanaele reicht fett fuer
deine Anwendung) und freier Software (Sigrok und Pulseview) mit
eingebautem Klartext Midi-Decoder bekommst du dein Problem locker in den
Griff. Die Hardware ist ihr Geld wert ca. 10 Eu bei Ali Xpress. Und du
lernst was...
Wenn Du lieber was bastelst, sollte es die Pulseview Decoder
unterstuetzen, die sind Gold wert. Und bei mir geht das mit 31250 baud
(Ctrl-C Ctrl-V) siehe Bildschirmschuss.
Clemens L. schrieb:> Christoph K. schrieb:>> Ist die Konverterschaltung OK?>> Ja. (Einen 10-Mbps-Optokoppler für 0,03 Mbps zu verwenden ist Overkill,> aber schadet nicht.)
Hatte vorher dieselbe Schaltung, aber mit einem CNY17-2 aufgebaut und
dachte, vielleicht läge es daran und habe dann noch mal die Schaltung
mit 6N317 gebaut.
>>> Statt 90 25 40 kommt z.B. 90 25 ff an.>> Das klingt nicht nach einem elektrischen Problem, sondern dass die> Software das letzt Byte nicht schnell genug liest.>>> Jemand eine Idee, was man noch machen könnte?>> Hardware-Serial-Eingang verwenden.>> Der Nano hat nur einen, der schon für die Kommunikation mit dem PC> verwendet wird. Du brauchst einen Mega oder Due.
Könnte ich den verwenden, wenn ich die Programmierung nicht über USB
sondern über den ICSP Adapter mache? Hätte noch einen Blackmagic USB
Adapter.
Andererseits, kann der UART im Arduino Nano die Baudrate von 31250 Bd?
Christoph K. schrieb:> Andererseits, kann der UART im Arduino Nano die Baudrate von 31250
Ja, sogar ganz exakt. 16MHz 16 31250 Baud = 32 Rest 0. Also UBRR :=
15
Christoph K. schrieb:> aber mit einem CNY17-2 aufgebaut
Der ist zu langsam. Der 6N137 ist ok. Man könnte den Pullup 4k7 noch
etwas verkleinern, damit wird die steigende Flanke am Ausgang steiler.
Z.B. 1k5 oder 2k2.
Joachim L. schrieb:> freier Software (Sigrok und Pulseview)
Kennt einer eine SW die MIDI direkt konvertiert? Als Protokoll und die
Befehle als Text ausgibt?
Christoph K. schrieb:> Ich dachte, der hat'n Quarz und gut ist.
Ich glaube, es ist (bei den nicht originalen Arduino Nanos) nur ein
Keramik-Schwinger, sollte aber trotzdem reichen.
Georg B. schrieb:> Joachim L. schrieb:>> freier Software (Sigrok und Pulseview)> Kennt einer eine SW die MIDI direkt konvertiert? Als Protokoll und die> Befehle als Text ausgibt?
Es ist mir jetzt mit PulseView gelungen. Man setzt den MIDI-Decoder auf
den UART auf. Die Einstellung (Eingabe) der Baudrate in der Mac Version
hat wohl einen Bug. Tastatureingabe in dem Baudraten-Feld geht nicht
über eine Stelle hinaus. Hole ich mir die 31250 mit Copy/Paste in die
Zwischenablage (paste buffer), kann ich dort 31250 eingeben. Dann
dekodiert Pulseview die Sigale auch schön. Aber die Dauer der
Aufzeichnung ist durch Samplerate und Anzahl der Samples natürlich arg
begrenzt.
Ich dachte, Pocket Midi könne das, also Befehle dekodieren, sehe aber da
so auf die schnelle keine Option.
Steve van de Grens schrieb:> Christoph K. schrieb:>> Ich dachte, der hat'n Quarz und gut ist.>> Ich glaube, es ist (bei den nicht originalen Arduino Nanos) nur ein> Keramik-Schwinger, sollte aber trotzdem reichen.
"A.T" steht drauf. (s. Foto, Uhrmacherlupe vor iPhone-Objektiv). Auf
einem anderen Exemplar steht "A.L".
Ich glaube man kann die Keramikschwinger daran erkennen, dass die ohne
externe Kondensatoren betrieben werden. Habe gerade gesehen, das das
wohl auch beim originalen Arduino Nano und Uno der Fall ist.
Hier ist das für ein Arduino UNO Board erklärt:
https://linuxhint.com/ceramic-resonator-in-arduino/