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 :)