Hallo! Ich möchte mich mit USB in Verbindung mit PIC18f auseinandersetzen. Gibt es da ein gutes Buch (es sollte nicht allzu teuer sein)? Irgendwie kann ich mit der Software von Microchip nicht viel anfangen. Sie ist nämlich auf das USB Board zugeschnitten. Also sind Leds, Taster usw schon vordefiniert. Ich habe versucht etwas zu ändern. Nur irgendwie funkt das dann nicht so wie es soll. Außerdem ist sie speziell auf den PIc18f45irgendwas zugeschnitten. Ich bin auf der Suche nach etwas allgemeinen. Ich möchte einfach mein Board (eigendesign) mit Leds und Taster am Pc anschließen und über ein Windowsprogramm(muß mich noch entscheiden mit welcher Sprache ich es schreibe) steuern...fürn den Anfang genügt mir CDC. Später vielleicht einmal den Microchip Custom Driver. Einfacher wäre ja an den Pic noch einen Pic zu hängen...aber ich möchte alles in einem Pic erledigen. Die Seite von Sprut habe ich natürlich schon durchgelesen. Werde mich damit jetzt mal beschäftigen. Für Vorschläge wie man am besten beginnt bin ich gerne offen. mfg hugo
In dem Buch "USB Complete" von Jan Axelson ist was zu dem PIC18 erwähnt, ist aber nicht der Brüller. Die Anpassung der Firmware von Microchip sollte eigentlich kein Problem sein. In einer Headerdatei ist die Zuordnung der Taster und LEDs definiert => ändern. Dann noch in einer Funktion die Ports entsprechend initialisieren, und dann spielt das. Zwei Gemeinheiten sind da noch drin, denn die Firmware fragt über zwei Pins irgendwie ab, ob USB angeschlossen ist. Bei einem Eigenbau wird man das so nicht machen, daher bleibt die Firmware an dieser Stelle hängen => an einer Stelle muß man ein #define auskommentieren. Sollte sich aber auch hier im Forum finden lassen.
Hallo Hugo, habe ein eigenes Projekt mit CDC und PIC18F4455 verwirklicht. Die CDC-Firmware ist ziemlich gut geeignet um eigene Projekte zu realisieren, zumal man zunächst noch kein fertig funktionierendes PC-Programm benötigt und mit einem Terminal mit dem PIC kommunizieren kann. Änderungen habe ich bei der Einstellung der Takt-Frequenz vornehmen müssen, sowie ein define (USB_Sense oder ähnlich) auskommentieren. Das Starter-Kit verwendet einen der Eingang von PortA als Analog-Eingang um die USB-Spannung zu prüfen, das braucht man nicht unbedingt. Etwas aufpassen muss man mit der USB_Read-Funktion: Wenn man nicht alle Zeichen abholt, die zur Verfügung stehen, dann sind sie beim nächsten Aufruf futsch. Ansonsten ist die FW sehr praxis-tauglich und an UART-Funktionen angelehnt. Einzig braucht man den C18-Compiler. Gruß Christian
Hallo! Erstmal danke für die rasche Antwort. Ich war dennoch nicht erfolgreich. Ich habe die io_cfg.h verändert: die LEDs und Taster an meine Platine angepasst. Poti und mmc gelöscht Die user.c habe ich auch geändert: zuerst einmal die beispiele gelöscht. den ADC entfernt und 2 Zeilen hinzugefügt...zum einschalten der Leds. Die hex lässt sich ohne Fehler erstellen und programmieren. Doch wenn ich das Board an den PC anschließe, tut sich gar nichts. Es leuchtet keine Led und Treiber wird auch keiner verlangt. Unter Hardware ist auch nichts zu sehen. Bei den Configbits habe ich HS: USB-HS unter Oscillator gewählt. Ich verwende einen 20Mhz Quarz. Im Anhang habe ich die beiden Dateien, die ich geändert habe. Achja...die Temperaturfiles habe ich auch gelöscht. mfg Hugo
mit der Standardeinstellung gings nicht, da habe ich dann auf folgendes geändert: 96MHZ PLL Prescaler - > Divide by 5 (20Mhz input) CPU System Clock Postscaler OSC1/OSC2 Src: /1 PLL Scr: /2
Hallo Hugo, Hardware: Einen Pull-Up für die Datenleitung darfst Du nicht verwenden. Das war mein erster Fehler damals, den hatte ich eingelötet, die FW verwendet den internen Weak-Pullup. Das nächste war der Takt, Du musst auf 48Mhz am USB-Modul kommen. Bei 20MHz Quartz ist das dann: 20MHz -> PLLDIV: /5 -> PLL mit 4MHz -> PLL erzeugt 96MHz hast Du auch. Der CPU-Takt kann dann nur noch vom PLL kommen, bzw Secondary Oscillator, ABER nicht vom OSC1/OSC2, das hatte ich am Anfang auch falsch gemacht und laut Schaltbild geschlossen, dass man sowohl direkte Speisung als auch den PLL für den CPU-Takt verwenden kann: Fakt ist, wenn PLL aktiv, geht nur noch PLL / CPUDIV. Software: folgendes muss auskommentiert sein, wenn die AD_Leitungen nicht benutzt werden: usbcfg.h //#define USE_SELF_POWER_SENSE_IO //#define USE_USB_BUS_SENSE_IO Gruß und viel Erfolg Christian
ohne alles durgelesen zu haben, kannste mal das demo von meiner HP angucken - vielleicht hilfts dir: www.kleiber.li (Visual-C dateien für ein Windows-API habe ich zugeschickt bekommen, aber noch nicht zum download veröffentlicht - falls interesse)
Hallo Also..mal danke an ALLE. Das Problem lag am usb voltage regulator....jetzt leuchtet zumindest mal die eine led. die 2. leider nicht. also gibts noch weitere probleme... aber ich werde mir mal die dateien von snowman zu herzen nehmen - sehen vielversprechend aus. naja...visual c ist nicht so meins. ich habs schon einige male probiert zu lernen aber bin dann doch bei vbasic geblieben. scheint einfacher zu sein =) aber über die pc software mache ich mir dann gedanken, wenn der pic anständig läuft:) mfg
Hallo Hugo, das läuft hier nicht immer so ab. Manchmal wird man schon wegen einer Frage beschimpft. Habe das schon erlebt. Aber so wie jetzt hier macht das doch viel mehr Spass :-) Versuch mal die 'defines' in usbcfg.c (wie oben beschrieben) auszuklammern. Das war das einzige, was ich (außer den Config-Bits) an der FW gemacht habe. Danach lief es auch schon mit meinem Programm. Gruß Christian
Hallo. Ich arbeite jetzt mit der Version von Snowman. Ist wirklich gut. Vorallem da in der user.c und iocfg nichts übers demoboard steht. meine Änderungen: iocfg: meine ports benannt user.c: lcd entfernt, ein und ausgänge definiert die configs habe ich entfernt....und pic18f2550 gewählt das sollte er tun...: void ProcessIO(void) { if(USBGenRead(data,20)) { switch ((int)data[0]) { case 0: RA5=RB5=RC6=RC7=0;break; case 1: RA5=1; break; case 2: RC6=1; break; } } } Er wird vom PC als pic dem... erkannt. Doch sobald ich das Board an den PC anstecke, leuchten mal 2 Leds, beim nächsten Mal Anstecken sinds manchmal 2 andere usw. also er tut sozusagen was er will. Werde dem aber nachgehen. Zumindest wird er schon erkannt, als das was er ist. was ist eigentlich der unterschied zwischen 111x = HS oscillator, PLL enabled (HSPLL) 110x = HS oscillator (HS) hs ist ja ein schneller quarz - wann verwende ich pll enabled? ist wahrscheilich eine simple frage..aber für mich unklar*g* mfg
Hallo bin wieder ein Stück weiter...der PIC funkt wie er soll.. fürs Erste :) Nun gehts an die Software fürn PC. Ich werde es mal mit VBasic versuchen. Schönen Abend noch und Danke :)
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.