PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : USB mit PIC2550



Der Gärtner
28.12.2006, 18:18
Hi!

Ich brauche für ein projekt nen PIC mit USB. hab mich mit Hilfe von Sprut und anderen Seiten eingelesen und verwende die Firmware von Microchip zum simulieren eines Virtuellen Comports. Ich habe die Firmware schon von allen sinnlosen Beispielprozeduren befreit wie dem Temperatursensor oder der USART-Schnittstelle und auch sonstige einstellungen wie die in den Conf. Bytes überprüft.

Wie ihr euch denken könnt ist der Grund des Posts ein PROBLEM 8-[

Ich wollte einfach mal zu Testzwecken beim Initialisieren meines displays in der Routine "userinit()" auch ein paar zeichen mit ausgeben, display bleibt aber leer.

Ich verwende MPLAB mit dem C18 Compiler, einen ICD2-Clone (geht ohne probs), einen PIC18F2550, der mit einem Testprogramm OHNE PROBLEME mein Display ansteuern kann. also sollte es nicht an der Platine liegen...

Im moment glaube ich, dass er nicht mal in die userinit() kommt oder aber die SPI-Lib (DISP an SPI) mit der Firmware zusammen spinnt. Oder Kann es daran liegen, dass ich sowohl den "BUS_SENSE" als auch den "SELFPOWER_SENSE" als definition auskommentiert habe und das ding immer im "suspend-mode" ist? bei mir sind nach dem unten stehenden code usb_bus_sense und self_power immer 1. - stört das irgendwo?



#if defined(USE_USB_BUS_SENSE_IO)
#define usb_bus_sense PORTAbits.RA1
#else
#define usb_bus_sense 1
#endif

#define tris_self_power TRISAbits.TRISA2 // Input

#if defined(USE_SELF_POWER_SENSE_IO)
#define self_power PORTAbits.RA2
#else
#define self_power 1
#endif

Hat wer erfahrung mit der USB-Firmware? Hat wer eine alternative Firmware oder einfach ein FAQ bei der hand? Ich glaube, dass ich einfach einen wesentlichen Punkt in der schlecht dokumentieren FW übersehen habe...

Mobius
29.12.2006, 23:05
bei mir sind nach dem unten stehenden code usb_bus_sense und self_power immer 1. - stört das irgendwo? Nein, das stört nicht, das ist einzig dann brauchbar, wenn deine Platine den 5V-Zweig des USB mit einem 100k-100k Spannungsteiler misst um eine Rückmeldung zu haben, wenn eine Verbindung zum Host aufgebaut wurde, also wenn du den Stecker in die Buchse gedrückt hast (USE_USB_BUS_SENSE_IO). Der Andere ist dafür da, wenn du zusätzlich immer überprüfst, ob dein Board seine Spannung extern oder über den USB erhällt (USE_SELF_POWER_SENSE_IO). Die Schaltpläne, wie diese beiden Schaltungen zu realisieren sind, findest du im Datenblatt unter dem Punkt "USB - Power Managment", oder so.
Also mit anderen Worten in dem user.h (oder war es iocfg.h?) die beiden #defines auszukommentieren dürfte keine Porbleme bereiten (tut sie bei mir auch nicht). Nach dem Auskommentieren bekommst du immer eine Warnung, dass die if-Abfragen nutzlos sind (weil du ja immer abfragst if(1) ), aber das ist normal.
Und ja, es wird Compiler-Probleme bereiten, wenn du die #ifdefs auskommentierst ;)

Wegen deinem Problem kann ich dir so, auf den Bauch geschlagen leider nicht weiterhelfen, dafür brächte ich schon den Code (nur das vom user.c und .h) oder zumindest Teile davon.

Naja, bis dahin, mal einige Fragen :) :
1) Benutzt du das Orginal .lkr File, das mit der FW ausgeliefert worden ist, oder hast du ein "frisches" aus dem C18-Ordner genommen (wenn nicht, dann versuch das mal) und auch in MPLab eingebunden?
2) Der Schaltplan selber, bei mri hatte ich einige Zeit lang das Problem, dass ich das D+ und D- vertauscht hatte, weiß, blöder Fehler, aber schau mal, ob das Pinout stimmt.
3) Versuch mal nur den Custom-Treiber von Microchip in den PIC zu laden. Funktioniert das? Also, bekommst du die Aufforderung vom PC einen Treiber zu laden?
4) Hast du dir ebenfalls die Application-Notes zu den betreffenden Treibern geholt?

Ansonsten, kann ich dir nur Empfehlen den BootLoader von Microchip in den 18F2550 zu brennen, danach geht das Updaten des Chips um einiges schneller (was das brennen betrifft).
MfG
Mobius

Der Gärtner
31.12.2006, 00:36
danke für die antwort!

verwendung der senses und die auskommentierung der RICHTIGEN zeilen war kein problem, wurde sogar an anderer stelle im netz als möglichkeit erwähnt. das mit der schaltung passt sicher, hab auch einen Bussense, nutze ihn aber im moment nicht. Die Datenblätter und schaltungen hab ich schon alle durchforstet - bin aber leicht enttäuscht.

D+ und D- war auch mein erster tipp, wars aber nicht...

das mit dem linker ist ein guter tipp... hab zwar keine fehler, aber sollte mal überprüftt werden

Das mit dem Costumtreiber und dem USB-bootloader ist auch ein guter tipp.. dann braucht man nicht 2 USB-Kabel :P