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.
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
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!
> 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
@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
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
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!?!
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?