Forum: Mikrocontroller und Digitale Elektronik PICs mit USB


von Christian B (Gast)


Lesenswert?

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

von Carsten S. (carsten)


Lesenswert?

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.

von Christian B (Gast)


Lesenswert?

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?

von Carsten S. (carsten)


Lesenswert?

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.

von G. B. (geri)


Lesenswert?

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

von Martin Enke (Gast)


Lesenswert?

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.

von willivonbienemaya (Gast)


Lesenswert?

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

von G. B. (geri)


Lesenswert?

64KB /s = 512.00 bit /s . Wenn man dann noch den Overhead dazu rechnet, 
dann hast du einen recht guten Datendurchsatz...

von willivonbienemaya (Gast)


Lesenswert?

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?

von Martin Enke (Gast)


Lesenswert?

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

von G. B. (geri)


Lesenswert?

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...

von willivonbienemaya (Gast)


Lesenswert?

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

von G. B. (geri)


Lesenswert?

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

von willivonbienemaya (Gast)


Lesenswert?

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.

von Martin Enke (Gast)


Angehängte Dateien:

Lesenswert?

@ 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

von G. B. (geri)


Lesenswert?

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&#178205

Beste Grüsse

Geri

von Christian B (Gast)


Lesenswert?

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

von Aufreger deluxe (Gast)


Lesenswert?

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.

von G. B. (geri)


Lesenswert?

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...;)

von Christian B. (christianb)


Lesenswert?

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!

von Christian B. (christianb)


Lesenswert?

ich nehme denk ich doch die von Sprut und hänge die Taster zum Flashen 
und den USB Anschluss an die Portstecker dran...

von Thorsten (Gast)


Angehängte Dateien:

Lesenswert?

> 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

von willivonbienemaya (Gast)


Lesenswert?

Fertig gibts von Microchip das PICDEM FS USB DEMO BOARD. Da ist alles 
drauf was du brauchst.

von Christian B. (christianb)


Lesenswert?

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

von willivonbienemaya (Gast)


Lesenswert?

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

von martinw (Gast)


Lesenswert?

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

von Geri (Gast)


Lesenswert?

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

von martinw (Gast)


Lesenswert?

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

von G. B. (geri)


Lesenswert?

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

von Kettensägenöler (Gast)


Lesenswert?

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.

von Christian B (Gast)


Lesenswert?

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

von Aufreger deluxe (Gast)


Lesenswert?

Schaue dir mal das HID-Framework von Microchip an. Ich glaube in der 
Funktion ProcessIO() sind die Sachen, die du brauchst.

von Aufreger deluxe (Gast)


Lesenswert?

> Habe eine Testplatine mit dem PIC18F2550 aufgebaut und folgendes
> Problem.

Welche Firmware hast du in den PIC gebrannt?

von G. B. (geri)


Lesenswert?

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

von Christian B (Gast)


Lesenswert?

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

von Christian B (Gast)


Lesenswert?

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

von G. B. (geri)


Lesenswert?

Ich bin der Meinung, an RC3 gehört ein 470n Kondensator rein!

von Christian B (Gast)


Lesenswert?

hab ich in deiner Schaltung auch schon bemerkt :)

ich werde es mal probieren!

Ist das mit den vielen Treibern die da installiert werden normal?

von G. B. (geri)


Lesenswert?

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

von Christian B (Gast)


Lesenswert?

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!!!!!!!!!!!!!!!!!!!!

von Christian B (Gast)


Angehängte Dateien:

Lesenswert?

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