Forum: Mikrocontroller und Digitale Elektronik usb und pic18f2550


von hugo (Gast)


Lesenswert?

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

von hackklotz (Gast)


Lesenswert?

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.

von Christian M. (crischi)


Lesenswert?

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

von hugo (Gast)


Angehängte Dateien:

Lesenswert?

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

von hugo (Gast)


Angehängte Dateien:

Lesenswert?

und hier der 2. teil...

von Wächter (Gast)


Lesenswert?

Wie ist die PLL eingestellt?

von hugo (Gast)


Lesenswert?

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

von Christian M. (crischi)


Lesenswert?

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

von hackklotz (Gast)


Lesenswert?

USB Voltage Regulator ist aktiviert?

von Master S. (snowman)


Lesenswert?

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)

von hugo (Gast)


Lesenswert?

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

von Christian M. (crischi)


Lesenswert?

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

von hugo (Gast)


Lesenswert?

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

von hugo (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.