Forum: Mikrocontroller und Digitale Elektronik PIC18F25K50 USB-Verbindung Konfigurieren mit Microchip Libraries for Applications


von Andreas E. (boony)


Lesenswert?

Hallo Zusammen,

Ich suche seit Wochen nach Informationen und genauen Anleitungen zur 
Konfiguration der USB-Verbindung des PIC18F25K50.
Ich habe mir bereits Wissen über den generellen Aufbau und Funktion der 
USB-Verbindung angeeignet. Ich habe überall gelesen dass die MLA 
verwendet wird, aber selten schlüssige Erklärungen gefunden.

Zur Anwendung:
Der PIC steuert einen Schrittmotor und liest Daten eines Lichtsensors 
aus.
Dieser Teil funktioniert bereits.
Nun soll das Ganze über USB steuerbar sein und die Daten des 
Lichtsensors am PC ausgelesen werden können.
Die Software dazu wird noch erstellt und stellt das kleinere Problem 
dar.

Es wäre sehr hilfreich wenn mir jemand erklären könnte wie ich erst 
einmal eine grundlegende Verbindung herstellen kann. Z.B.: Das der PIC 
am PC erkannt wird.
Eine Erklärung der einzelnen, in der MLA bereitgestellten, Dateien( 
usb_config.h ; usb_device.h etc.) wäre ebenfalls hilfreich.
Auch Tipps wo ich die Informationen finden könnte sind willkommen.

Vielen Dank schon mal!

von Kein Name (Gast)


Lesenswert?

Warscheinlich willst du USB CDC Serial Emulation. Das wichtigste: alles 
andere erst mal komplett ignorieren.

Am einfachsten in der MLA die passenste Demos für deine Hardware 
raussuchen und nach Try&Error ein Miniprogramm zusammenstellen. Zuerst 
nur das main() und das HardwareProfile.h ändern und solange weitere 
Datein ins Projekt aufnehmen, bis Compiler&Linker nicht mehr meckern. 
Bis auf deinem Rechner ein COM-Port bzw. ein /dev/serial erscheint.

Erst danach das usb_descriptors.c ändern.

(P.S. benutze selbst noch die alte Microchip Solutions Library, hoffe 
aber die neue MLA ist genauso aufgebaut).

von Andreas E. (boony)


Lesenswert?

Guten Morgen,

Vielen Dank schon mal für die Antwort.
Ich habe fast befürchtet dass es darauf hinauslaufen wird, also werd 
ich's mal versuchen.
Falls ich Fragen habe werde ich mich einfach wieder hier melden.

Ich bin trotzdem weiter offen für Hilfestellungen und tipps.

Wenn ich herausgefunden habe wie das genau im Detail funktioniert und 
alles verstanden habe bin ich gewillt eine art universelle 
Step-by-step-Anleitung zu schreiben und bei den Projekten online zu 
stellen um zukünftigen Generationen die Frustation zu ersparen. Ich weiß 
dass es sowas bereits gibt(sprut.de o.ä) aber das war mir trotzdem 
irgendwie zu verwirrend.

Vielen Dank!

von Kein Name (Gast)


Lesenswert?

Alles halb so schlimm. Problem ist nur, Microchip hat alle Libraries und 
alle Demos für alle Entwicklungsboards durcheinander geworfen. Und dann 
diese Doku. Statt einer Beschreibung, wie es zusammen hängt nur 
Kochrezepte, wie man es für die Demoboards kompiliert.

Nach einiger Zeit bekommst du einen Blick dafür, was du ignorieren 
kannst. Und sobald du die Massen an #ifdef gelöscht hast, werden die 
Demos recht überschaubar.

von Andreas E. (boony)


Lesenswert?

Vielen Dank für die Unterstützung!

Ich hab jetzt den code von sämtlichen definitionen für eventuell 
verwendete Demoboards befreit.

Frage:
Ich habe nun schon öfters gelesen dass der C18-Compiler gern verwendet 
wird und habe auch Hinweise darauf im Code gefunden.
Derzeit verwende ich den xc8-Compiler.
Ergeben sich irgendwelche Vorteile durch die Verwendung vom C18
anstatt des xc8?

von Kein Name (Gast)


Lesenswert?

Microchip hat den c18 eingestellt und durch xc8 ersetzt.

Will man alte Projekten auf xc8 umstellen, muss man einen Haufen 
Kleinkram ändern. Bei neuen Projekten auf jeden Fall xc8 verwenden.

von Andreas E. (boony)


Lesenswert?

Kann ich dann den Code aus der MLA Version 2013-02-15 verwenden?
Bzw. wann wurde der C18 eingestellt?

von Kein Name (Gast)


Lesenswert?

Wozu? Kannst doch einfach die neusten Versionen von MLA, MplabX und xc8 
bei Microchip herunterladen. Probleme gibt es ja nur, wenn du die alten 
Versionen für ein bestehendes Projekt zusammensuchen musst.

von Chris B. (dekatz)


Lesenswert?

Andreas E. schrieb:
> Kann ich dann den Code aus der MLA Version 2013-02-15 verwenden?
> Bzw. wann wurde der C18 eingestellt?

Das letzte Update (3.45) stammt vom 25. Jänner 2013 - also vor der MLA 
Version. Und wenn ich mich recht erinnere ist diese MLA-Version auch 
nicht die aktuellste (zumindest gibt es eine Version 2013-06-15).

von Andreas E. (boony)


Lesenswert?

Stimmt, die MLA Version ist nicht die neueste, aber das Beispiel das mir 
in der Ersten Antwort nahegelegt wurde


Kein Name schrieb:
> Warscheinlich willst du USB CDC Serial Emulation.

ist in der aktuellen Version nicht vorhanden.
Ich überlege sowiso auf das Beispiel:

cdc_basic

aus der neuesten MLA auszuweichen da mir die Syntax für die Serielle 
Emulation Probleme bereitet.

von old man (Gast)


Lesenswert?

Schau dir mal die Firmeware vom usbtin an.

http://www.fischl.de/usbtin/

Ist relativ einfach zu durchschauen.

von Kein Name (Gast)


Lesenswert?

Ich behaupte jetzt das Gegenteil. "CDC Basic" sieht passender aus. Bei 
"CDC Serial Emulation" musst du zusätzlich das für dich überflüssige 
"physical UART transmit" rauslöschen.

Und sieht für mich so aus, als wolle Microchip die MLA aufräumen.
>Both MLA and Legacy MLA will continue to be available from >www.microchip.com/MLA 
during the transition.

Vielleicht hast du ja Glück, und die neue ist nicht mehr ganz so 
chaotisch aufgebaut.

von Andreas E. (boony)


Lesenswert?

Das hört sich ja gut an!

Ich hab da mal ne Frage:
Glaubt ihr es ist möglich das Ganze ohne die MLA zu schaffen? Mir ist 
bewusst dass das kompliziert wird und mit einem großen Aufwand verbunden 
ist, aber die Reccourcen zu diesem Vorhaben scheinen mir schlüssiger und 
besser dokumentiert.
Ich habe vor mir einen Ablaufplan auf Registerebene, anhand den 
Beschreibungen des USB-Standards, zu schreiben. Der USB-Standard ist 
überall verfügbar und bestens dokumentiert, und die Register sind im 
Datenblatt des µC ausführlich beschrieben (>20 Seiten).

Was haltet ihr davon?

von Kein Name (Gast)


Lesenswert?

Kommt halt drauf an, warum du es machst. Wenn du nur ein lauffähiges 
Programm haben willst, am schnellsten geht MLA benutzen ohne die 
internen Details anzuschauen. Wenn du auf Basis der Doku eine eigene 
Library schreiben willst - natürlich geht das.

Debuggen ist etwas nervig. Der PC meldet Timeouts, während der Pic an 
einem Breakpoint wartet.

von Andreas E. (boony)


Lesenswert?

Ich möchte das ganze im Kern verstehen um es auf andere Situantionen 
anwenden können. Ich möchte nicht jedes mal raten was ich löschen darf 
und das wesentliche nicht verstanden haben.
Es hört sich so an als ob du schon mal was in der Richtung unternommen 
hast.
Hättest du eventuell ein paar Tips?

von Netzwerker (Gast)


Lesenswert?

Ich persönlich fand die USB-Beschreibung von sprut für meine ersten 
Experimente mit USB sehr hilfreich:

http://www.sprut.de/electronic/interfaces/usb/usb.htm

von Andreas E. (boony)


Lesenswert?

Sprut war sehr Hilfreich die Grundlagen von USB zu verstehen. Als es 
jedoch im Beispiel Richtung Programmieren und Programmstruktur gien 
wurde alles auf einmal undurchsichtig.
Sehr gute Seite, aber das Beispiel war mir zu spezifisch.

von Chris B. (dekatz)


Lesenswert?

Ist zwar für PIC24 gedacht, aber vielleicht findet sich hier etwas 
(Kapitel 14):
http://www.engscope.com/pic24-tutorial/

von Carsten S. (dg3ycs)


Lesenswert?

Hi,

Kein Name schrieb:
> Debuggen ist etwas nervig. Der PC meldet Timeouts, während der Pic an
> einem Breakpoint wartet.

Ja, das ist einfach das Problem bei Debuggern, das kann man nur mit 
echten InCircuit emulatoren umgehen. Wobei ich jetzt nicht einmal weiß 
ob der aktuelle RealICE noch ein 100% Emulator ist wie die früheren 
Geräte...

Aber dafür gibt es eine Lösung ;-)
Man geht einen halben Schritt zurück und kombiniert das Debuggen mit 
Debugger und das Debuggen per RS232 Output (Ist bei vielen Microchip 
Beispielen ja auch schon vorbereitet, geht bei den kleinen µC aber 
natürlich nur wenn RS232 nicht verwendet wird.)

HAlt für das verfolgen was der µC so macht ausgabe über RS232 und wenn 
man wirklich wissen muss was im Register steht kommt man um das Anhalten 
halt nicht herum. Ist aber viel viel seltener nötig!

Kein Name schrieb:
> Und sieht für mich so aus, als wolle Microchip die MLA aufräumen.
>>Both MLA and Legacy MLA will continue to be available from 
>www.microchip.com/MLA
> during the transition.

Ohh - Das ist lässt hoffen.
Irgendwie hat Microchip die letzten zwei Jahre ja ganz schön 
herumgepfuscht. Seit der Einführung der neuen Compiler (und bei den 
23Bittern der MZ Serie) haben die irgendwie nur noch Flickwerk 
geliefert. Teilweise Handfeste BUGs in den Beispielen!

(Z.B. USB CDC Host wo eine negierung im CDC Treiber fehlt und der µC 
deshalb einfriert. ICh weiß nicht ob bei allen µC, also ob dieses Bit 
bei einigen µC genau andersherum gesetzt wird, aber bei den 32MX795 
friert es definitiv ein wenn man die Negierung nicht nachträgt)
Gruß
Carsten

von Chris B. (dekatz)


Lesenswert?

Carsten Sch. schrieb:
> Teilweise Handfeste BUGs in den Beispielen!
...und in den Lib's z.b. für den XC32

von Andreas E. (boony)


Lesenswert?

Chris B. schrieb:
> Ist zwar für PIC24 gedacht, aber vielleicht findet sich hier etwas
> (Kapitel 14):
> http://www.engscope.com/pic24-tutorial/

Sehr hilfreich, Vielen Dank!



Was ich noch gefunden habe ist

http://www.usbmadesimple.co.uk/index.html

Dort wird jedes Bit bis ins kleinste Detail erklärt. Zwar nicht speziell 
für PIC aber trotzdem sehr informativ.

von Andreas E. (boony)


Lesenswert?

Soooooooo....
Ich dache mir ich aktualisier mal den Stand der Dinge hier.
Ich habe USB mit MLA aufgegeben und bin auf Arduino umgestiegen.
Mit der MLA bin ich einfach auf keinen grünen Zweig gekommen.

Für die Nachwelt:
Alle in diesem Thread genannten Links sind sehr gut und führen mit etwas 
mehr Zeit als ich habe sicher zum Erfolg.

Hilfreiche Links:
http://www.signal11.us/oss/m-stack/
http://www.usbmadesimple.co.uk/index.html
http://www.engscope.com/pic24-tutorial/
http://www.sprut.de/electronic/interfaces/usb/usb.htm
http://www.fischl.de/usbtin/

Vielen Dank für alle Antworten!

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.