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!
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).
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!
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.
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?
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.
Kann ich dann den Code aus der MLA Version 2013-02-15 verwenden? Bzw. wann wurde der C18 eingestellt?
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.
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).
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.
Schau dir mal die Firmeware vom usbtin an. http://www.fischl.de/usbtin/ Ist relativ einfach zu durchschauen.
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.
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?
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.
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?
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
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.
Ist zwar für PIC24 gedacht, aber vielleicht findet sich hier etwas (Kapitel 14): http://www.engscope.com/pic24-tutorial/
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
Carsten Sch. schrieb: > Teilweise Handfeste BUGs in den Beispielen! ...und in den Lib's z.b. für den XC32
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.