Hi, es gibt ja eine lange Latte von Pics mit USB. Dazu eine allgemeine Frage: 1) ich kann ja Software über bootloader direkt über USB in den Pic spielen. Ist es möglich dies relativ einfach auch den Anwender machen zu lassen quasi für updates? Wenn ja, kann man die Software dann überhaupt irgendwie schützen, so dass nicht jeder die Schaltung ohne Probleme reproduzieren kann??? 2) Wie aufwendig ist es zwischen Windows und dem PIC meinentwegen in C++ oder in Visual Basic zu kommunizieren? Danke und Gruß, Christian
Hallo zu 1) Wenn die Code-Protection gesetzt ist, kann man den Code nicht mehr auslesen, aber überprogrammieren. zu 2) Für die Kommunikation stellt Microchip eine dll bereit, die das Handling übernimmt, für C++ steht sogar der Quelltext dieses Treibers zur Verfügung. Ob das als schwierig zu bezeichnen ist hängt von deinen Fähigkeiten/Erfahrung ab.
danke erst mal :) zu1) Codeprotection stell ich ja selber beim Programmieren ein! D.h. der Code kann nicht ausgelesen werden aus dem PIC. Was ich meinte ist ja, was passiert, wenn ich dem Kunden quasi updates gebe und es ihm somit ermöglichen will ein neues Programm in den Pic zu spielen. Dann hat er ja den aktuellen Code und kann sich theoretisch unendlich viele Pics programmieren. Oder gibt es da Möglichkeiten dies zu unterbinden? zu2) Gibt es da auch Anbindungen für VB6 bzw. VB.NET?
zu 1)Es besteht z.B. die Möglichkeit nur einen bestimmten Bereich überzuprogrammieren, somit erhält der Kunde nicht den ganzen Code. Das Programm muss natürlich demenstprechend aufgebaut sein. zu 2) Ich kenn mich mit VB nicht aus, aber auf eine DLL müsste man dort auch zugreifen können.
Hallo Christian 1.) ja, kein problem 2.) hängt von Deinen Kenntnissen ab, meiner Meinung aber nicht schwieriger wie die RS232 zu programmieren weil es ja auch CDC-Treiber gibt:). Vielleicht ist das gerade das richtige für dich für den Einstieg: http://www.burger-web.com/Projects/PIC18F4550USB/en_PIC18UsbBoard.htm.en Beste Grüsse Geri
Hallo Christian, zu 2.) Falls Du dich entschießt das USB-Gerät als HID zu programmieren dann ist die Kommunikation mittels VC oder VB wirklich einfach. Ich werde diese Lösung immer bevorzugen weil man dann keinen Treiber im PC braucht sondern die Standard API benutzen kann, wirklich einfach und zuverlässig.
@ Martin Enke Mit HID habe ich noch nichts gemacht. Welche Geschwindigkeiten bekommst du damit hin? Ich habe das Problem dass bißchen Geplänkel (Datenverkehr bis 64kbyte/s) leicht ist, bzw ich es unter Kontrolle habe. Aber ich bekomm absolut keine schnelleren Datenraten hin. Ich arbeite mit dem Microchip Custom Driver.
64KB /s = 512.00 bit /s . Wenn man dann noch den Overhead dazu rechnet, dann hast du einen recht guten Datendurchsatz...
langt mir aber nicht. ich bräuchte mindestens das doppelte. Da Microchip mit 12Mbit Werbung macht, würde ich gerne mindestens in einen Bereich um die 4-5 Mbit kommen. Das sollte doch realistisch sein oder?
war da nicht was mit "video"-daten in der HID-Beschreibung? Kann mich jetzt nicht mehr genau erinnern... Ich bilde mir ein, da war eine Möglichkeit mehr als ein halbes MBit zu übertragen, vielleicht lohnt sich ein erneutes Studium der Doku. Martin
bzgl. Datenübertragung: kommt darauf an, ob die Daten synchron oder asynchron übertrage werden dürfen... Beim Schreiben oder Lesen auf eine SD-Karte ist es nicht so kritisch wann die Daten ankommen. Bei anderen Anwendungen (Echtzeitanwendungen) hingegen schon...
@ Martin Enke könntest du ein Beispielprogramm hochladen, bei dem die PC seitige Programmierung deutlich wird? dann könnte ich bei Gelegenheit mal testen, was für Geschwindigkeiten möglich sind. @ Gerhard Burger Über USB sollte man auch gesichert recht schnell übertragen können, sonst würden ja Anwendungen wie externe Festplatte keinen Sinn machen. Diese benutzen BULK als übertragungsmethode. Das habe ich auch schon ausgiebig getestet. Allerdings hänge ich immer wieder an meiner Grenze. Ich kann genau ein 64Byte Block übertragen und das alle 1ms. Schneller werd ich nicht und ich weiss nicht warum.
Hallo Willi Ja, ähnliche Erfahrungen habe ich auch schon gemacht. Es geht aber auch um einiges schneller. Schau mal im Microchip-Forum inter Kategorie USB nach. Da het einer ein C-Programm vorgestellt mit dem die Technik für höheren Datendurchsatz demonstriert wird. Allgemein ist es aber nicht einfach dem PIC mehr Geschwindigkeit abzulocken. Beste Grüsse Geri
Hallo Geri Ich kenne das Forum von Microchip. Allerdings ist man da nicht sehr viel weiter. Ich habe auch schon etliche der schnellen Programme getestet. Habe auch viele varianten Entwickelt. Aber an dieser Grenze bin ich bisher immer hängen geblieben. Ich habe es noch nicht geschafft mehr als ein Paket pro ms zu senden und ich habe es noch nicht geschafft mehr als eine IN und eine OUT Pipe zu benutzen. Wenn da jemand schon weiter ist würde ich mich über Hilfe freuen.
@ willivonbienemaya und alle VBler im Anhang sind die Grundfunktionen um ein HID nach VID und PID zu finden, es zu öffen, auszulesen und zu schließen. MFG Martin m.enke@enke-software.de
Hallo Willi Ich glaube die Technik heisst Ping Pong Buffering oder schau mal da... http://forum.microchip.com/tm.aspx?m=173421&mpage=1&key=full%2cspeed𫠝 Beste Grüsse Geri
Also wenn ich das jetzt richtig gesehen habe gibt es zwei Möglichkeiten. einmal die HID Firmware, die auch laut Microchip auf 64kbyte/s limited ist! Zum anderen gibt es die CDC Firmware die mir quasi einen virtuellen Comport zur Verfügung stellt. Dort soll außerdem der Datentransfer nur auf 1Mbit/s was ja immerhin fast 125kbyte/s wären. Ich werde mich mal an der CDC versuchen. Hier mal für mich ob ich den Designflow richtig verstanden habe! 1) Bootloader in den PIC laden über normalen Brenner 2) CDC Firmware über USB einspielen. --> IST diese upload Software in MPLAP dabei oder wo gibts die? 3) Ich bekomme über Windows einen Virtuellen Comport und muss dort meine Anwendung kaum ändern 4) Im PIC Programm muss ich Funktionen die vorher für RS232 waren austauschen gegen entsprechende USB Funktionen. --> Was hat es mit dieser PID und VID aufsich? Muss ich mich darum kümmern? Danke und Gruß, Christian
1) Ja 2) Software ist beim entsprechenden CDC-Framework dabei, heißt PDFSUSB.exe. 3) Wobei hier auf COM1-4 beschränkt ist, oder wurde das jetzt geändert? 4) Ja > Was hat es mit dieser PID und VID aufsich? Muss ich mich darum > kümmern? Du kannst die von Microchip verwenden. Nur wenn du das Gerät verkaufen möchtest, brauchst du was eigenes.
Hallo Christian 1.) richtig 2.) z.B. das Beispielprojekt von Microchip. Das Upload-programm findest du bei Microchip. Es heisst PDFSUSB.exe. Das Ganze gibt es als zip-file bei MC zum download 3.) richtig kaum oder gar nicht:) 4.) Im Pic gibt es fertige Sende und Empfangsroutinen:). ..5.) lass es am Anfang mal so, damit kommst du am schnellsten zum Ziel. Beste Grüsse Geri Poste doch ein Beispiel, wenn du die Sache am Laufen hast...;)
erst mal brauche ich eine einigermaßen vernünftige Testplatine für 28pol PICs. die bei Sprut hat die ganzen USB Features nicht drauf und die bei burger-web ist 40polig. Gibts da schon was fertiges? Wenn nicht muss ich doch selber eine machen!
ich nehme denk ich doch die von Sprut und hänge die Taster zum Flashen und den USB Anschluss an die Portstecker dran...
> erst mal brauche ich eine einigermaßen vernünftige Testplatine für > 28pol PICs. Nimm doch ne ganz normale Lochrasterplatine, hab mir sowas für nen PIC18F4550 gemacht (siehe Anhang). Links die drei Spindeltrimmer und der IC ist nicht notwendig. Thorsten
Fertig gibts von Microchip das PICDEM FS USB DEMO BOARD. Da ist alles drauf was du brauchst.
@Thorsten... eigentlich hast du recht, aber so ne Testplatine mit allen LEDs und Ports hat auch ihren Charm... mal überlegen. @Willi Klar von Microchip gibts so ziemlich alles, bevor ich mir das kaufe schmeiß ich lieber mein Ätzbad an. Als Student hat mans nicht so dick mit der Kohle, außerdem will man ja auch basteln.
Ich dachte du meinst mit "was fertigem" was zu kaufen. Wenn du ätzen kannst, ist es natürlich Schwachsinn was zu kaufen. Die Grundbeschaltung ist wirklich primitiv. Bei der Software entstehen dann die Probleme ;-)
Ich suche Moment einen geeigneten Mikrocontroller für meine Diplomarbeit. Dabei bin ich auf den 18F4550 gestossen, im meiner Harmony Logitech 525! Sie wird mit USB neu Programmiert und kostet zwischen 40-99 sFr. Grüsse aus der Schweiz Martin
Hallo Martin Wenn du ein wenig über Deine Anwendung und die Anforderung berichtest, dann kann man die evtl. sagen, ob sich der PIC18F4550 für Deinen Fall eignet. Allgemein habei ich mit dem Controller sehr gute Erfahrungen gesammelt. Gerade was die USB-Programmierung anbelangt. Beste Grüsse Geri
Cool, superschnelles Forum hier ;-) Grob gesagt wird es eine mobile Alarmanlage. Im Moment bin ich noch am zusammentragen der Idee, Features ausdenken... Wichtig wäre es jetzt für mich zu wissen welchen Prozessor und welche Programmiersoftware ich nehmen soll! Die uC Anforderungen; 3VDC, 16Kbytes Flash, min.1024bit Ram, stromsparend (32Khz/4Mhz), I2C und SPI Schittstelle, min. 3 Analoge Signale wandeln, 5 digitale Ausgänge, 2 digitale Eingänge, seriell mit GSM und GPS Modul kommunizieren. In Frage käme da der PIC 18F4550 oder Atmel ATmega329V. Softwaremässig wäre es super schon Module/Libraries für I2C(EEprom schreiben/lesen), SPI(SD-Karte schreiben), IR (RC5 Code) und serielle NMEA-Stringroutinen zu haben. Bis jetzt habe ich eher auf Atmel/WinAVR tendiert, aber mit USB Daten auslesen/programmieren ist halt schon verlockend. besten Dank im voraus Martin
Hallo Martin So wie sich das liest, eignet sich ein PIC18F4550 sehr gut dazu. Als Compiler gibt es z.B. den PIC C18 Compiler von Microchip. Dazu noch einen Debugger ICD2 oder ICD2 full speed USB-Nachbau und du bist gut gerüstet. Bzgl. den 3.3V müssstest du mal das Datenblatt genauer anschauen. Der PIC18 arbeitet mit 5V. Es gibt aber auch günstige step-up-regler, wenn nur 3.3V da sind. Bzgl. Stromsparen ist der Pic ein Meister. Die übrige Hardware ist vorhanden. Libraries findest du im I-Net. Für das NMEA-Protokoll (z.B. NMEA-0183) gilt das bestimmt auch. Wie immer, ob Atmel/WinAVR oder ARM7. Sie alle eignen sich sehr gut für Deine Anforderungen. Beste Grüsse Geri
Zum Thema 3,3V unbedingt mal auf forum.microchip.com gehen. Ich meine ich erinnern zu können, das der USB-Transceiver nicht mit 3,3V läuft.
Habe eine Testplatine mit dem PIC18F2550 aufgebaut und folgendes Problem. Bei 3 Rechnern mit XP PRO SP2 installiert sich das Gerät als unbekannt und ich habe keine Möglichkeit den Treiber dafür zu installieren. An meinm Laptop mit mit XP Home installiert und erkennt er das Gerät als PIC 2550 Family ooder so ähnlich und ich kann auch die entsprechenden Treiber installieren. 1) Wie kommt das? 2) wenn ich nun über USB mit PDFSUSB ein HEX in den PIC reinschieben will kommt allerdings die Meldung "error 6: Das Handle ist ungültig" ???? 3) Falls das mal funktioniert... hat jemand Code Beispiele wie vom PIC Daten an den Host senden kann? Danke und Gruß, Christian
Schaue dir mal das HID-Framework von Microchip an. Ich glaube in der Funktion ProcessIO() sind die Sachen, die du brauchst.
> Habe eine Testplatine mit dem PIC18F2550 aufgebaut und folgendes > Problem. Welche Firmware hast du in den PIC gebrannt?
Hallo Auf meinem Rechner mit WinXP-Prof, englische Version, SP2, funktioniert meine PIC-Schaltung einwandfrei. Probiere doch mal den aktuellen Treiber durch den Microchip-Treiber zu erstetzen. Beste Grüsse Geri
Habe gelesen, dass dieses Problem an den erforderlichen Kondensator an RC3 liegen soll. Habe dort 200nF eingelötet und jetzt kann ich auf meinem Laptop auch Firmware erfolgreich in den PIC laden. habe dieses Example gemacht, aber bekomme im Hyperterminal nix zurück!?! Hyperterminal communication Run MSWindows Hyperterminal (or others like this one∞). Start Menu:Programms/Accessories/Communications/HyperTerminal Create a new connection on COM3 with 115200 bauds rate (this value comes from cdc.c). In the Hyperterminal, click Connect (Call) ! Then (& only then), push S2. It must print : Microchip Technology Inc., 2004 PIC18F4550 Full-Speed USB - CDC RS-232 Emulation Demo Close the connection in the Hyperterminal before unpluging USB (thus you can reconnect USB and reuse the same connection in Hyperterminal without having to close/restart it). für alle die es interessiert hier gibt es tolle Tutorials: http://pic18fusb.online.fr/wiki/wikka.php?wakka=CdcCOMx
wenn ich nun an einen anderen Rechner gehe findet er einen CDC RS232 Emulator (wird vermutlich die Firmware sein die ich rein habe). gebe ihm die Treiber C:\MCHPFSUSB\fw\Cdc\inf nimt er aber bringt noch einen Fehler. Habe jetzt einen Com5 gehe ins Terminal mache einen Reset: dann findet er wieder eine neue Hardware für die ich ihm die Treiber gebe C:\MCHPFSUSB\Pc\MCHPUSB Driver\Release nimt er bringt aber auch wieder Bei der installation ist ein Fehler aufgtetaucht. Jetzt ist kein Com port mehr da und nix geht mehr :) Sehr komisch!?!
hab ich in deiner Schaltung auch schon bemerkt :) ich werde es mal probieren! Ist das mit den vielen Treibern die da installiert werden normal?
Ich habe bisher nur mit dem Binärtreiber gearbeitet. Mit ihm hatte ich bislang noch nie Probleme. Vielleicht probierst du einfach mal die Firmware, die ich auf Netz gestellt habe und hast dann mal nen Anfang. Beste Grüsse Geri
hab jetzt 400nF drin und jetzt erkennt er am Notebook auch wieder ein neues Device (wie oben beschrieben), diesmal kommt aber kein Fehler nach der installation. Scheint also wirklich was zu bringen!? Eigentlich sollte ich in dem Beispiel Programm Zeichen die ich zum Device schicke einfacch wieder zurück bekommen. Schicke ich mit HTERM Zeichen hin kommt nix zurück. Mache ich aber danach gleich das Hyperterminal von MS auf kommen genau die gesendeten Daten. Scheint also zu funktionieren, mit einem kleinen Seiteneffekt ;) WER HAT Beispiel CODE für den 18F2550? DANKE für alle TIPPS bisher!!!!!!!!!!!!!!!!!!!!
habe mal das Bsp. Programm von Microchip für den 2550 angepasst. Aber es tut sich an den Ports von den MC gar nichts? Nach dem erfolgreichen schreiben des hex, muss ich doch Resetten oder? Bei mir kann ich das Hex File auch beschreiben ohne dass ich vorher die Boottaste gedrückt hatte... ist das normal?
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.