Guten Tag lieben µC-Freunde!! Mein Kumpel und ich, wir studieren beide Elektrotechnik und sind nun dran, den gennanten Mikrokontroller zu programmieren. Das schon seit mehr als einem Monat und dabei haben wir bis jetzt das Teil nur so weit gebracht, dass Windows merkt, da wurde was eingesteckt. Nun zunächst zur Beschaltung. Der PIC ist mit den D+ und D- Leitungen auf Pins 57 und 56 angeschlossen. Er wird auch vom Strom der USB-Schnittstelle versorgt und hat keine eigene Spannungsversorgung. ID-Leitung vom Mini-USB-Anschluss auf unserer Platine hängt in der Luft. Nun folgendes haben wir gemacht. Wir haben von microchip die kompletten Solutions runtergeladen. Darin sind unzählige Demos erhalten. Wir wollen jedoch einen COM Port simulieren und über diesen unsere Daten (temperatur und paar andere) verwenden und da dafür haben wir die "USB Device - CDC - Basic Demo" und näher angeschaut. Bei dem von Microchip zur Verfügung gestelltem Projekt, wurde der PIC24FJ256GB110 verwendet. Bei einer Änderung von 256 auf 128 im MPLAB, lies sich das Programm nicht mehr komplilieren. Darum haben wir dann die Datei "Hardwareprofile" mit unserem Kontroller ergänzt. Nach unzähligen weiteren Änderungen in Main.c und anderen files, ließ sich das Programm irgendwann kompilieren. Nach dem Programmieren des µC trennen wir den USB-Kabel mit dem PC und stecken es neu an. Windows sagt uns nun, dass es ein unbekanntes Gerät eingesteckt wurde, und es auch nicht richtig erkannt wird. Dann dachten wir uns, wir müssen den Treiber dem PC zur Verfügung stellen. Bei "www.spruts.de" haben wir gelesen, dass CDC Treiber schon von Haus aus beim Windows vorhanden sind, aber mit dem .inf (oder ini???) File darauf hingewiesen werden muss, welcher das ist. Da Microchip im selben Ordner, wo die Demos sind, auch einen Ordner namens "inf" hat, dachten wir uns, dass es die Datei sein muss. Allerdings bringt es keine Änderung mit sich: Windows sagt, der aktuellste Treiber wurde installiert. Nun brauchen wir Hilfe an folgenden Punkte. 1. Sind Demos überhaupt der richtige Ansatz für dieses Problem? Was brauchen wir wirklich an Dateien und Methoden die zur Kommunikation notwendig sind?! 2. Wie bringen wir unseren µC dazu, dass beim Einstecken in den PC der CDC Treiber installiert wird und automatisch ein COM-Port eingerichtet wird? 3. Wo ändern wir die Einstellungen, welcher COM-Port eingerichtet wird ?? 4. Wir können wir am schnellsten eine Verbindung mit dem µC testen, sprich auf der PC-Seite irgend ein kleines Programmchen, dass Daten hin schickt und welche zurück bekommt. Das wäre schon ein riesen Schritt. Vielen Dank im Voraus. Grüße, Roman
Roman Frei schrieb: > Guten Tag lieben µC-Freunde!! > > Mein Kumpel und ich, wir studieren beide Elektrotechnik und sind nun > dran, den gennanten Mikrokontroller zu programmieren. > > Das schon seit mehr als einem Monat und dabei haben wir bis jetzt das > Teil nur so weit gebracht, dass Windows merkt, da wurde was eingesteckt. > > Nun zunächst zur Beschaltung. Der PIC ist mit den D+ und D- Leitungen > auf Pins 57 und 56 angeschlossen. Er wird auch vom Strom der > USB-Schnittstelle versorgt und hat keine eigene Spannungsversorgung. Kein Spannungsregler von 5V auf 3.3V? "Absolute Maximum Ratings(†) Voltage on VDD with respect to VSS -0.3V to +4.0V" Wie sieht die restliche Beschaltung insb. USB aus (Datenblatt 18.1)? Alle Errate beachtet (http://ww1.microchip.com/downloads/en/DeviceDoc/80369k.pdf)?
HI! habs ganz vergessen, natürlich haben wir da 3.3 Volt. Die Spannungsversorgungsleitungen vom USB gehen auf einen Spannungsregler LM1117IMPX-3.3. Was meinst du mit "Datenblatt 18.1"? Die D+ und D- Leitungen vom USB sind direkt mit den entsprechenden USB Leitungen angeschlossen. ID-Leitung hängt wir gesagt in der Luft. µC lässt sich auch einwandfrei programmieren. Grüße, Roman
hallo Leute, kann den niemand weiterhelfen? Wir wollen's verstehen, wie das funktioniert und was wir machen müssen. Grüße, Roman
Hallo Leute! Wir sind langsam am verzweifeln, aber einen kleinen Schritt weiter. Folgendes. Wir haben nun heurasgefunden, dass wir einen anderen Quarts verwenden, nämlich einen 16 MhZ. Daher sollten wir den PLL Devisor für das USB-Interface anders einstellen. Wir finden in der Demo aber nicht die Stelle, wo wir es ändern sollen. Die Demo ist ja für alle möglichen µC von Mikrochip geschrieben worden. Nur definiert man ja beim programmieren genau den KOntroller, welchen man auch benutzt. Anhand dessen, wird dann auch nur der Teil vom Code in der Main Methode aktiv, welcher in der entsprechenden If-Else Verzweigung dann true ergibt. Auszug aus der Main: #elif defined(EXPLORER_16) #if defined(_PIC24FJ256GB110_) _CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & FWDTEN_OFF & ICS_PGx2) _CONFIG2( 0xF7FF & IESO_OFF & FCKSM_CSDCMD & OSCIOFNC_ON & POSCMOD_HS & FNOSC_PRIPLL & PLLDIV_DIV2 & IOL1WAY_ON) #elif defined(_PIC24FJ128GB110_) _CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & FWDTEN_OFF & ICS_PGx2) _CONFIG2( 0xF7FF & IESO_OFF & FCKSM_CSDCMD & OSCIOFNC_ON & POSCMOD_HS & FNOSC_PRIPLL & PLLDIV_DIV2 & IOL1WAY_ON) So, da stehen nun lauter einstellungen, aber wir finden nirgendwo die Einstellschrauben dazu. Also die Stellen, wo wir den PLLDIV_DIV2 ändern. Wir brauchen einen DIV von 4! Standartmäßig ist er vielleicht auf 3 eingestellt, und klar, dass da nichts funktioniert. Weiß da einer Bescheid? Viele Grüße, Roman
Roman Frei schrieb: > #elif defined(PIC24FJ128GB110) > _CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & FWDTEN_OFF & > ICS_PGx2) > _CONFIG2( 0xF7FF & IESO_OFF & FCKSM_CSDCMD & OSCIOFNC_ON & > POSCMOD_HS & FNOSC_PRIPLL & PLLDIV_DIV2 & IOL1WAY_ON) Augen auf, Ohren auf! Helmi ist daaaa :) ich seh da groß und deutlich PLLDIV_DIV2 und das is nur bei einem Takt von 8Mhz richtig.
> Also die Stellen, wo wir den PLLDIV_DIV2 ändern. > Wir brauchen einen DIV von 4! Das "PLLDIV_DIV2" ist ein symbolischer Name für die Configurationbits der PLL. Für einen Teilerfaktor von 4 sollte es reichen, den Namen in "PLLDIV_DIV4" zu ändern. Hab's aber nicht ausprobiert!
Servus, ihr setzt an der flaschesten Stelle die es gibt an. Fangt mit einer LED an die ihr blinken lasst. Ihr beherrscht wie alle Anfänger noch nicht mal die trivialsten Grundlagen. Darum rate ich euch zu einem Grundlagentutorial. Dann versteht ihr auch alles von Grund auf. Wenn ihr dann irgendwann USB gut beherrscht, dann könntet ihr ein Tutorial schreiben. Es gibt leider keinerlei deutsches Tutorial zu diesem Thema.
Wow, gleich 3 Beiträge, vielen Dank dafür Leute. Wie man eine LED zum Blinken bekommt, weiß ich schon längst. Wir haben auch schon den ganzen USB-Kram von Sprut verinerlicht. Zum jetzigen Zeitpunkt weiß ich nicht, wie genau ich USB am Miktrokontroller konfigurieren muss, damit dieser mit dem CDC-treiber kommuniziert. Um das zu erkunden, wollten wir die Demo ja zum Laufen bringen, aber nicht mal das klappt Ansatzweise. Der PC merkt, dass wir USB-Port einstecken, sagt aber, das das Gerät nicht erkannt wird. Wenn der Takt nicht stimmt, kanns auch nicht. Wir haben die Hardware vom Jahrgang vor uns zur Verfügung gestellt bekommen und sollen nun weiter entwickeln, aber es klappt eben nicht. Die ganzen Sensoren die Dabei sind, die sind schon fast fertig, alles lauft. Nur mit der USB-Schnittstelle sind wir noch bei 0. Wenn wir die Einstellungen wüssten, welche der CDC Treiber benötigt, dann würde ich anfangen es auch ohne der DEmo zu fuß Schritt für Schritt zu programmieren, sprich die Register beschreiben, damit USB richtig konfiguriert wird und dann Daten schreiben oder auch abholen vom Endpunkt. Aber diese Demo hat bis jetzt kein einziges mal funktioniert, das frustriert einfach total. Ich hoffe, ihr könnt es nachvollziehen. <<<Für einen Teilerfaktor von 4 sollte es reichen, den Namen in "PLLDIV_DIV4" zu ändern. Hab's aber nicht ausprobiert!<<<< Wir haben in jedem File gesucht, in dem das PLLDIV_DIV2 steht, aber nirgends ist es der Fall. Wenn es so einfach ist, da statt einer 2 eine 4 an zu hängen, dann wär es doch zu einfach... kann es das sein... heute abend probier ich es daheim aus. Wenn jemand weitere Tipps und vielleicht etwas Zeit hat, diese mit zu teilen, dann freuen wir uns Wahnsinnig drüber. Vielen Dank, Roman
Wo diese Namen definiert sind weiss ich auch nicht aber zumindest eine Beschreibung findet sich in der Datei p24FJ128GB110.inc ; The following settings are available for CONFIG2: ; ; Two Speed Start-up: ; IESO_OFF Disabled ; IESO_ON Enabled ; ; 96MHz PLL Prescaler: ; PLLDIV_NODIV No Divide (4MHz input) ; PLLDIV_DIV2 Divide by 2 (8MHz input) ; PLLDIV_DIV3 Divide by 3 (12MHz input) ; PLLDIV_DIV4 Divide by 4 (16MHz input) ; PLLDIV_DIV5 Divide by 5 (20MHz input) ; PLLDIV_DIV6 Divide by 6 (24MHz input) ; PLLDIV_DIV10 Divide by 10 (40MHz input) ; PLLDIV_DIV12 Divide by 12 (48MHz input)
Serwus Leute, funzt immernoch nicht. Nun haben wir uns ein buch geholt und lesen, wie wir das selbst, ohne demos machen werden. Grüße, Roman
vielleicht gleich zu beginn mal lesen, was ein CDC, HID etc. ist. und dann überlegen, ob ihr für einen COM-port wirklich CDC braucht ;-) (antwort: nein) allerdings habe ich auch meine bedenken, wenn ihr das mit dem takt nichtmal selbst merkt, ob es schlau ist USB in angriff zu nehmen; hättet ihr mit einer LED angefangen, hättet ihr gleich gemerkt, dass diese 4x zu schnell blinkt.
Serwus, wir haben leider keine LED's auf der fertig entwickelten Platine. Wir müssen nur eben die Kommunikation per USB herstellen und es funktioniert nicht mal mit der Demo. Wir wollte es eben mit der Demo versuchen, weil Microchip ja einen treiber zur Verfügung stellt. Wir haben ja auch sonst keine Ahnung, wie der Treiber genau mit dem Kontroller kommuniziert. Grüße, Roman
mit CDC brauchst du einen treiber, wenn du aber einen USB-Com-port mit dem PIC machen willst, brauchst du keinen treiber. es kommt halt darauf an, ob du ein CDC willst oder einen Com-port ;-)
Huhu, die USB Leitungen waren vertauscht. Weiß Gott was wir noch hätten alles probieren können, funktionieren würde es nie. Sorry Leute. Grüße, Roman
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.