PIC18F25K50 USB-Verbindung Konfigurieren mit Microchip Libraries for Applications

OP #3600449
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!
Gast #3601051
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).
OP #3601471
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!
Gast #3601546
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.
OP #3601764
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?
Gast #3601837
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.
OP #3601858
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.
Gast #3602256
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.
OP #3602963
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?
Gast #3603055
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.
OP #3603059
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?
#3603135
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
OP #3627460
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!

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