Forum: Mikrocontroller und Digitale Elektronik PIC USB-Device - ein sanfter Einstieg?


von A. S. (rava)


Lesenswert?

Ich möchte in den nächsten Monaten ein Projekt vorantreiben, bei dem ein 
PIC24 zum Einsatz kommt. Das Gerät soll gleichzeitig eine USB-Maus (bzw. 
Multitouch-Pad) und einen USB-MIDI Controller darstellen.

Da mir das auf Anhieb zu groß erschien, habe ich mir einen PIC32MX220 
zugelegt, um auf dem breadboard etwas zu experimentieren.

Mein Stand ist, dass ich es geschafft habe, das "Creating an 
Application" Tutorial aus der Harmony Library auf mein brett zu 
konvertieren. Im Klartext:
eine LED blinkt mithilfe der Bausteine "driver/tmr", "system/clk", 
"system/devcon", "system/int", "system/port" und ich kann rudimentäre 
Aspekte der Applikation ändern.
Das Ganze braucht mit 24kB schon gut zwei Drittel des Flash-Speichers 
des PIC32.

Später im Hilfedokument (ab Seite 3734) wird die USB Library auf ca 300 
Seiten beschrieben. Da haben mich die Jungs von Microchip etwas 
verloren. Ich weiß nicht, wo ich anfangen soll.

Gibt es irgendeine Art Tutorial oder Ähnliches, das mich von 0 ab 
step-by-step dahin führt, wo ich eine USB-Maus habe, mit der ich 
bestimmte Figuren am Bildschirm abfahren kann?
Wichtig wäre es, das Prinzip USB-Devices so weit verstanden zu haben, 
dass ich dann mit den Hilfedokumenten mehr anfangen kann, als das jetzt 
der Fall ist. Im Idealfall kann ich das Midi-Device dann ganz ohne 
weiteres Tutorial implementieren.


Zunächst geht's mir aber um die Maus. Ich möchte die Maus im PIC32 
haben, um herauszufinden, wie ich den PIC24 beschalten muss 
(Taktquellen, Pullups, Transistoren und Spannungsregler,...), um mein 
Projekt zu realisieren.
Im nächsten Schritt kommt der PIC24 (SMD) mit allem Hühnerfutter auf 
eine Platine und ich muss vermutlich alles nochmal neu implementieren, 
da die Harmony Libraries nicht mehr mit den alten PICs kompatibel sind 
(kennt niemand einen PIC32 mit 50 CTMU-Kanälen?).
Im Idealfall habe ich bis dahin aber so viel kapiert, dass ich das dann 
auch kann!

von Volker S. (vloki)


Lesenswert?

Hast du bisher nur Harmony oder auch die MLA angeschaut ?

von A. S. (rava)


Lesenswert?

die MLA habe ich angesehen. Da gab's ein Beispiel für eine USB-Maus, das 
ebenfalls auf einem evaluation board basiert hat.
Ich bin damit leider ohne tutorial auch nicht klar gekommen und habe 
deshalb zu harmony gewechselt und mich auf's breadboard konzentriert

von Noch einer (Gast)


Lesenswert?

MLA ist gar nicht so schwierig, wie es aussieht.

Neues Projekt anlegen und mouse.c kopieren. Alle ifdefs, die du nicht 
brauchst rauswerfen. Dann so lange Dateien kopieren und ifdefs 
rauswerfen, bis der Compiler nicht mehr meckert.

Dann solange Dateien ins Projekt aufnehmen, bis der Linker nicht mehr 
meckert. Was dabei übrig bleibt. wird recht übersichtlich.

von WehOhWeh (Gast)


Lesenswert?

die MLA ist verwendbar, aber wird nicht mehr gepflegt. Neuer Versionen 
des XC32-Compilers (ab Version 1.32 oder so glaube ich) meckern sogar 
über ein
#include <plib.h>

Viele neuere PICs werden von den Beispielen nicht mehr unterstützt. Ich 
habe die USB-CDC aus der MLA auf PIC32MX470 und PIC24FJ128GC006 
verwendet und habe das für beide anpassen müssen. Für den PIC32MX470 
muss man sogar recht tief in der Lib herumfummeln, siehe Microchip 
Forum.
Auch für den PIC32MX250 läuft es nicht sofort. Ich habe zumindest die 
CDC nicht zum Laufen bekommen (hab aber auch nicht lange herumprobiert).

Persönlich finde ich die USB Beispiele in der MLA wenig verständlich, 
vor allem wegen der exzessiven Verwendung von Makros. Für mich ist die 
USB CDC auch nach mehrmaliger Verwendung eine absolute 
Black-Box-geblieben - leider.

Wie sind denn so die Erfahrungen mit Harmony bisher? Im Microchip Forum 
liest man ja nicht wirklich viel positives.

von Potter (Gast)


Lesenswert?

A. S. schrieb:
> Ich möchte in den nächsten Monaten ein Projekt vorantreiben, bei dem ein
> PIC24 zum Einsatz kommt. Das Gerät soll gleichzeitig eine USB-Maus (bzw.
> Multitouch-Pad) und einen USB-MIDI Controller darstellen.

Dann musst Du ein Composite-Device (Verbundgerät) implementieren.

A. S. schrieb:
> Da mir das auf Anhieb zu groß erschien, habe ich mir einen PIC32MX220
> zugelegt, um auf dem breadboard etwas zu experimentieren.

Der USB Teil ist tatsächlich etwas zu groß für den Anfang. Wie Dir das 
Breadboard dabei hilft, bleibt allerdings Dein Geheimnis.

A. S. schrieb:
> Mein Stand ist, dass ich es geschafft habe, das "Creating an
> Application" Tutorial aus der Harmony Library auf mein brett zu
> konvertieren.

Ich kenne diese Harmony Library nicht, aber für mich sieht es so aus, 
als ob Microchip hier versucht ein paar komplexe Zusammenhänge für den 
Entwickler zu vereinfachen. Man klickt also ein bischen was zusammen und 
schon funktioniert alles.
Das sowas nur auf einem beschränkten Niveau funktionieren kann, sollte 
eigentlich klar sein. Sobald etwas über die Standard-Anwendung hinaus 
geht (wie z.B. USB-Composite) wird man vermutlich selber Hand anlegen 
müssen. Und spätestens dann muss man auch wissen was man tut.

A. S. schrieb:
> Später im Hilfedokument (ab Seite 3734) wird die USB Library auf ca 300
> Seiten beschrieben.

Und vermutlich kennt man nach der Lektüre dann die einzelnen Funktionen, 
aber weiss trotzdem nicht, wie man vorgehen soll. Und hier merkt man 
dann schon wieder, das die eigentliche Frage ganz anders lautet:
'Wie funktioniert das mit dem USB?'.

A. S. schrieb:
> Wichtig wäre es, das Prinzip USB-Devices so weit verstanden zu haben

Genau. Nimm Dir zwei drei Monate Zeit und lies den Klassiker:
http://www.amazon.de/USB-Handbuch-Entwickler-mitp-Professional/dp/3826616901/ref=sr_1_1?s=books&ie=UTF8&qid=1420009664&sr=1-1&keywords=jan+axelson

Midi-Geräte sind da aber nicht dabei. Allerdings hast Du danach das 
Konzept kapiert und die Midi-Geschichte sollt dann auch nicht mehr sehr 
schwierig sein.

A. S. schrieb:
> Im Idealfall habe ich bis dahin aber so viel kapiert, dass ich das dann
> auch kann!

So isses.

von sepp (Gast)


Lesenswert?

Microchip Harmony enthält mehrere Beispiele für USB Devices welche im 
folgenden Verzeichniss zu finden sind:
microchip/harmony/v1_00/apps/usb/device/vendor
Darunter auch mehrere CDC und HID Beispiele.


"Wie sind denn so die Erfahrungen mit Harmony bisher?
Im Microchip Forum liest man ja nicht wirklich viel positives."
Ich bin in kurzer Zeit relativ weit gekommen.

von Norbert (Gast)


Lesenswert?

A. S. schrieb:
> Ich möchte in den nächsten Monaten ein Projekt vorantreiben, bei dem ein
> PIC24 zum Einsatz kommt.

<snip>
> eine LED blinkt  ...<snip>
<snip>
> Das Ganze braucht mit 24kB schon gut zwei Drittel des Flash-Speichers
> des PIC32.

Bin zwar mit PIC nicht vertraut, aber ist nicht hier bereits etwas arg 
schiefgelaufen?

von A. S. (rava)


Lesenswert?

Norbert schrieb:
> Bin zwar mit PIC nicht vertraut, aber ist nicht hier bereits etwas arg
> schiefgelaufen?

ja du musst dir die library anschauen. Das Ding ist relativ umfangreich. 
Ich kann mir schon vorstellen, dass man da einige Lasten mitschleift. 
Dafür gibt's eine Art Rapid Prototyping Umgebung, in der man - 
wenigstens theoretisch -

sepp schrieb:
> in kurzer Zeit relativ weit gekommen

sein kann.
Da ich mit dem gratiscompiler arbeite habe ich auch nur O1 zur Verfügung 
(in O0 passt der ganze Kram schon gar nicht mehr in den Chip ^^)

Potter schrieb:
> Genau. Nimm Dir zwei drei Monate Zeit und lies den Klassiker:
> 
http://www.amazon.de/USB-Handbuch-Entwickler-mitp-Professional/dp/3826616901/ref=sr_1_1?s=books&ie=UTF8&qid=1420009664&sr=1-1&keywords=jan+axelson

Ich habe das Gefühl, du hast meine Problemstellung sehr gut Verstanden 
:D
Ist das Buch aber wirklich in meinem Tempo? Habe keine Bibliothek in der 
Nähe und müsste daher kaufen.
Ich habe jahrelange Erfahrung in PC Programmierung (Visual C++) und habe 
auch schon 4-5 Jahre mit Embedded zu tun (C). Ich weiß was ein Register 
ist, weiß was ein Datenblatt ist, ich habe einige größere Hobbyprojekte 
mit 8Bit-PICs fertig, aber ich habe auf Mikrocontroller-Seite noch nie 
mit USB gearbeitet, oder mit fertigen Libraries.
Die Bewertungen haben ja eher ne große Varianz ;)

WehOhWeh schrieb:
> die MLA ist verwendbar, aber wird nicht mehr gepflegt.

Deswegen, habe ich mich auf Harmony konzentriert. Der Plan ist, wenn ich 
mal weit genug durchgestiegen bin, dass bis dahin die Harmony auch den 
PIC24 untestützt.
Bin gestern auch auf einige Fallen gestoßen, z.B.: Wo der TQFP-PIC24 
meines Vertrauens noch die 48MHz aus dem internen Oszillator erzeugen 
kann, weil er self-tuned ist. Braucht der Breadboard-PIC32MX einen 
externen Resonator, den ich erst noch bestellen muss.
Schade auch das die Doku vom PIC32 viel mehr Lücken aufweist als die vom 
PIC24.

Potter schrieb:
> Wie Dir das
> Breadboard dabei hilft, bleibt allerdings Dein Geheimnis.

naja primär hilft mir das dabei, dass ich nicht zu viele Iterationen 
brauche, bis die SMD-Platine auf dem finalen Stand ist, weil ich in 
viele Beschaltungsfallen schon auf dem Brett getappt bin.

WehOhWeh schrieb:
> Ich habe die USB-CDC aus der MLA auf PIC32MX470 und PIC24FJ128GC006
> verwendet und habe das für beide anpassen müssen.

witzig... mein SMD-PIC ist der PIC24FJ128GC010-I/PT
Wie du weißt bin ich absolut am Anfang, aber die Fragen werden kommen, 
fürchte ich!

: Bearbeitet durch User
von Volker S. (vloki)


Lesenswert?

A. S. schrieb:
> witzig... mein SMD-PIC ist der PIC24FJ128GC010-I/PT

Dann würde ich das "USB_Device_-_HID_-_Mouse" Beispiel aus der MLA 
nehmen mit der Konfiguration "PIC24F_Analog_Starter_Kit_1"

von Volker S. (vloki)


Lesenswert?

A. S. schrieb:
> Gibt es irgendeine Art Tutorial oder Ähnliches, das mich von 0 ab
> step-by-step dahin führt, wo ich eine USB-Maus habe, mit der ich
> bestimmte Figuren am Bildschirm abfahren kann?
> Wichtig wäre es, das Prinzip USB-Devices so weit verstanden zu haben,
> dass ich dann mit den Hilfedokumenten mehr anfangen kann, als das jetzt
> der Fall ist.

Für das alte Low-Pin-Count-USB Board gab es eine etwas ausführlichere 
Anleitung. Das ganze war für PIC18 und noch die alte MPLAB IDE aber 
vielleicht kannst du da mal rein schauen -> Google "DS41356B.pdf"

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.