PIC USB Kommunikation

OP #4839123
Lesenswert?

Hallo,
Ich hab ein neues Projekt gestartet und brauche Hilfe um vorran zu 
kommen da es Neuland für mich ist.

Ich will über ein Digitalpiano (Yamaha) eine LED-Kette beleuchten die 
mit den angeschlagenen Noten jeweils für verschiedene LED's in der Kette 
aufleuchtet.
Der Part ist nicht das Problem (mit dem Arduino hab ich das schon 
hinbekommen, dazu musste der Arduino allerdings dauerhaft an den PC 
angeschlossen sein).

Nun will ich ein Board bauen dass die Mididaten des Pianos über USB 
einließt und den LED-Strip somit ansteuert.

Informiert habe ich mich schon über das MIDI-USB Protokoll, allerdings 
weiß ich nicht wie ich ich eine serielle Datenübertragung über USB an 
den PIC weitergebe.

Wie gesagt das ist Neuland für mich.
Ich benutze den PIC18F14K22 der besitzt serielle Schnittstellen.
Meine Frage nun: Wie lese ich über den PIC die Daten über USB aus?

Brauche ich einen externen Chip dazu?
Sollte ich mir einen PIC kaufen der USB direkt auslesen kann?
Wie löse ich das Problem am elegantesten?

Mfg
Markus
Persönliche Seite #4839135
Lesenswert?

Markus L. schrieb:
> Meine Frage nun: Wie lese ich über den PIC die Daten über USB aus?

Du brauchst einen USB-Host. Die meisten µCs mit USB-Unterstützung sind 
nur USB-Devices, keine USB-Hosts.

Es gibt USB-Host-Controller, die man über eine serielle Schnittstelle 
o.ä. an einen µC anschließen kann, ein bekanntes Beispiel ist der 
"Vinculum" VNC1L von FTDI.

Insgesamt: Das ist nicht trivial.
Dein Klavier hat keine normale MIDI-Buchse (5polig, DIN)?
Persönliche Seite #4839210
Lesenswert?

Markus L. schrieb:
> Kann man also jedes Beliebige Usb to serial Board nehmen?

Nein. Kein einziges.

USB-to-Serial sind USB-Devices, die man an einen USB-Host anschließt. Du 
aber brauchst einen USB-Host. Wie Deinen PC, der ist ein USB-Host. Und 
deswegen kannst Du Dein Klavier auch an den PC anschließen.

USB-Devices aber können miteinander nichts anfangen, die brauchen 
zwingend einen Host, um zu funktionieren. Mit einem USB-Serial-Adapter 
kannst Du auch keine USB-Sticks auslesen.
OP #4839391
Lesenswert?

Rufus Τ. F. schrieb:
> Der Threadstarter will einen PIC verwenden, keinen Arduino.

Ja deswegen, man will ja auch etwas bei so einem Projekt lernen.
Usb Hosts sind alle nicht so günstig, wenn es nicht anders geht gebe ich 
auch 20€ für das Board mit dem VNC1L aus.

http://de.farnell.com/ftdi/vdip1/entwicklungsmodul-f-r-vnc1l/dp/1329313

Angenommen ein Laie wie ich kauft das Ding, welches Interface davon 
(Uart,Spi,etc), verwendet denn ein Laie wie Ich am besten mit dem PIC?
Persönliche Seite #4839409
Lesenswert?

Markus L. schrieb:
> welches Interface davon (Uart,Spi,etc), verwendet denn ein Laie wie Ich
> am besten mit dem PIC?

Das, mit dem Du bereits Erfahrungen gesammelt hast und das schnell genug 
ist, um die Anforderungen zu erfüllen, die Deine Anwendung stellt - die 
MIDI-Nutzdaten kommen mit 31.25 kBaud, der Protokolloverhead für die 
Ansteuerung des USB-Hosts kommt dazu, so daß Du eine doch deutlich 
höhere Baudrate brauchen wirst, wenn Du UART verwendest.


Es gibt übrigens auch (exotische) USB-zu-MIDI-Interfaces:

http://www.kentonuk.com/products/items/utilities/usb-host.shtml

Letztlich ist das, was Du mit dem USB-Host anstellen willst, /genau das 
gleiche/.
Persönliche Seite #4839427
Lesenswert?

Hurra schrieb:
> Ob man damit Host spielen kann, so dass das Piano funktionier?

Dafür wäre so etwas da.

Erklärender Einschub für den Threadstarter:

USB OTG ("on the go") ist ein USB-Gerät, das sowohl Device als auch Host 
sein kann.

Ein PIC mit OTG-Funktionalität wäre also funktional gleichbedeutend mit 
einem PIC mit angeschlossenem USB-Host-Controller.

Die Software dafür ist aber nicht trivial (grundlegender USB-Stack und 
darauf aufsetzend USB-Midi-Unterstützung), keine Übung für 
Programmieranfänger.
Gast #4839500
Lesenswert?

Markus L. schrieb:
> Hurra schrieb:
>> Es gibt PICs mit USB OTG. Ob man damit Host spielen kann, so dass das
>> Piano funktionier? Schwierig.
>>
>> Hast du denn keine normale MIDI-Schnittstelle? Das sollte deutlich
>> einfacher sein, denke ich.
>
> Nein eine normale Schnittstelle gibt es nicht, nur USB.

Hmm. Also mit Host habe ich keine Erfahrung, aber USB-OTG-PICs hab ich 
schon verwendet, natürlich auch mit USB.

Es gibt Beispiele von Microchip:
http://ww1.microchip.com/downloads/en/AppNotes/01141a.pdf
http://www.microchip.com/doclisting/TechDoc.aspx?type=CodeExamples
Ich würde mir das mal ziehen, und schauen, wie komplex das ist.

Folgende PICs mit OTG fallen mir ein:
PIC32MX470F512H - ein ziemlich mächtiger 32-Bitter
PIC24FJ128GC010 - ein 16-bitter mit viel Peripherie

Natürlich gibts weitere.
Ich würde mal mit den Beispielen von Microchip starten, und schauen, 
wieviel Flash man braucht und welches Device am günstigsten ist. Und ob 
das überhaupt realisierbar ist.

Eine Warnung: Die Microchip-USB-Stacks sind NICHT leichtverständlich.

Für PIC32 wäre noch zu sagen: Harmony ist Geschmackssache aber 
inzwischen fast zwingend. Sollte man sich vorher ansehen.
Gast #4841196
Lesenswert?

> Ich dachte immer über USB-MIDI kommt mehr und in höherer Rate.

Brilliant beobachtet.
Eine Baudrate wie fuer ein serielles Midiinterface ist
bei USB natuerlich nicht relevant.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren