Forum: Mikrocontroller und Digitale Elektronik PIC USb Kommunikation


von mehmet c. (mscikar)


Lesenswert?

Hallo Leute,

Ich bin ziehmlich neu in USB Kommunikation.

Mir is tunterschiede zwischen protokollen nicht so ganz klar.

Was sind die Unterschiede zwischen:

Custom HID
LIB USB
MCHPUSB
MCP2200
WINUSB

Mein Ziel ist zwischen Android Tablet und Pic board über USb 
kommunikation aufzubauen.


Vielen Dank

von Schreiberling (Gast)


Lesenswert?

Hallo,

zu den Aronymen kann ich dir jetzt mal nichts sagen ;-)

Als Kommunikationsmöglichkeit PIC <> anderes Gerät über USB fällt mir 
aber etwas ein:

Möglichkeit 1:
USB CDC. Das ist eine USB UART Emulation. Dazu gibt es ein Beispiel in 
der MLA.
Ein solches USB-Gerät tritt am Zielgerät als Serielle Schnittstelle 
(COM-Port) in Erscheinung und lässt sich damit sehr leicht verwenden. 
Das Gerät wird an jedem PC erkannt, Treiber gibts von Microchip. Von 
Android weiß ich aber nichts.

Ich verwende das sehr gerne, weil man ohne eigene Software mit dem Board 
"reden" kann (ich nehme oft Putty).

Der genannte MCP2200 ist genau sowas - ein PIC mit USB CDC.

Möglichkeit 2:
ein USB-HID-Device. Auch dafür gibts Beispiele in der MLA.
Vorteil hier wäre, dass kein Treiber nötig ist. Nachteilig ist 
vermutlich, dass es nicht so leicht ist eigene Daten zu übertragen.

von Frank M. (frank_m35)


Lesenswert?

Für eine Android - PIC Kommunikation kannst du dir das mal anschauen:
http://www.microchip.com/Developmenttools/ProductDetails.aspx?PartNO=DM240415
Dabei arbeitet der PIC im USB OTG Modus, stellt die Spannungsversorgung 
bereit und lädt das Android Gerät.

Soll es anders rum sein, muss das Android Gerät USB OTG unterstützen, 
was nicht alle können. Nicht an jedes Android Gerät kann man einen 
USB-Stick oder eine USB-Tastatur anschließen.
http://www.howtogeek.com/164783/how-to-connect-mice-keyboards-and-gamepads-to-an-android-phone-or-tablet/


USB ist nicht gleich USB. Es gibt verschiedene Modi, einer davon ist 
CDC, welches benutzt wird um eine serielle Schnittstelle zu emulieren, 
benötigt aber spezielle Treiber, die für Android vermutlich nicht 
verfügbar sind.
Hier ist eine Übersicht:
http://www.usb.org/developers/defined_class
HID ist ein gängiger Modus für Eingabegeräte, welcher auch zum 
Datenübertragen missbraucht werden kann.
Schau dir das mal an:
http://www.engscope.com/pic24-tutorial/14-1-usb-an-introduction/


Zu den Microchip Startkits gibt es auch Apps, welche du dir auch 
anschauen kannst:
https://play.google.com/store/apps/developer?id=Microchip+Technology+Inc

: Bearbeitet durch User
von mehmet c. (mscikar)


Lesenswert?

HI Frank,

Danke für die informationen genau dieses Starter Kit von Microchip board 
habe ich.

Ich komme da aber leider nicht weiter damit. Support ist sehr mager.

Ich habe zurzeit den Starter Kit von microchip, was du mir empfohlen 
hast, Im zukunft möchte ich aber mit Pic24EP serie arbeiten die haben 
USB und Can Bus Chip.

Kannst du mir mehr Informationen bezüglich PIC Android kommunikation 
geben.


Vielen Dank

von Max H. (hartl192)


Lesenswert?

mehmet cikar schrieb:
> Kannst du mir mehr Informationen bezüglich PIC Android kommunikation
> geben.
Wenn es kein USB sein muss, kann man es auch über Bluetoothmodul über 
SSP machen. Auf µC Seite ist dazu nur ein UART notwendig.

von mehmet c. (mscikar)


Lesenswert?

Max H. schrieb:
> mehmet cikar schrieb:
>> Kannst du mir mehr Informationen bezüglich PIC Android kommunikation
>> geben.
> Wenn es kein USB sein muss, kann man es auch über Bluetoothmodul über
> SSP machen. Auf µC Seite ist dazu nur ein UART notwendig.

Es muss leider USB sein.  :(

von Frank M. (frank_m35)


Lesenswert?

mehmet cikar schrieb:
> HI Frank,
>
> Danke für die informationen genau dieses Starter Kit von Microchip board
> habe ich.
>
> Ich komme da aber leider nicht weiter damit. Support ist sehr mager.

Wo kommst du denn nicht weiter?
Ich habe mir das Teil auch gekauft, da ich auch mal vor hatte ein 
mobiles Gerät per USB mit einem Smartphone zu verbinden. Nur war mir 
nicht klar, dass der PIC das Smartphone immer mit lädt und der Host sein 
muss.
Die andere Richtung wird nicht von allen Smartphones unterstützt, somit 
habe ich es sein lassen und werde Bluetooth nutzen, bin nur noch nicht 
dazu gekommen :-)

Das Microchip Starterkit hat bei mir aber einwandfrei funktioniert, 
ebenso wie die Beispielapp aus dem Play Store.

Eine weitere Alternative zu USB die nicht das Problem mit Treibern und 
Stromversorgung hat, wäre über den Headsetanschluss, indem du die Daten 
Analog wie bei alten Modems überträgst.
https://github.com/hitesh24by365/AudioJackTransfer
http://www.slideshare.net/Sudar/transfering-data-using-audio-signal-in-android

von mehmet c. (mscikar)


Angehängte Dateien:

Lesenswert?

Hi

Ich habe eigentlich mein erstes und größtes Problem ganz am Anfang.

Ich habe die Programme für den Board aus Microchip.com/mal Seite 
runtergeladen.

1) wenn ich das Projekt unter
C:\microchip\mla\v2014_07_22\apps\usb\device\hid_custom\utilities\basic_ 
example\android

     in Eclipse lade sehe ich da 11 Programme.
    -ActivityBasicUSBDeviceDemo
    -Demo
    -DemoCustomHID
    -DemoInterface
    -DemoLibUSB
    -DemoMCHPUSB
    -DemoMCP2200
    ...

Dies finde ich schon mal überhaupt nicht Anfänger freundlich.  Ich kann 
die zwar die einzelne schritte nachvollziehen, verstehe aber nicht warum 
die bei einem Starter Kit für den Anfänger in erstes Programm so komplex 
machen.

2. Wenn ich auf Firmware gehe sehe ich da auch viele Ordner und weiß 
nichts genau wie der Zusammenhang von dem ganzen ist. Das obwohl ich 
schon länger mit PIC arbeite.



Ich habe sogar dadran gedacht, dass ich die falsche Dateien habe weil es 
für ein Starter Kit nicht so schwer sein dürfte.

ich will einfach nur paar Informationen von PIC zu USB senden. Ich denke 
für ein Starter Kit wäre ein ganz einfaches Programm ausreichend.

Ich hoffe du kannst mir weiterhelfen

von Frank M. (frank_m35)


Lesenswert?

Naja, ich hab bisher nur die MLA von 2012 installiert und da finde ich 
unter folgender Ordnerstuktur:
C:\Microchip Solutions v2012-04-03\Android Accessories\Basic 
Communication Demo - OpenAccessory Framework

zwei Ordner:
Firmware: Die die Projektdateien für einige PIC Varianten enthält und 
mit MPLAB geöffnet, compiliert und programmiert werden kann.
App Source Code: Was eben der Source Code der App beinhaltet, den ich 
aber nie genauer angeschaut habe, da ich bisher eben noch nichts weiter 
mit Android gemacht habe. Ich habe mich auf die fertige App aus dem Play 
Store beschränkt gehabt.

Mehr kann ich dir leider nicht sagen.

von mehmet c. (mscikar)


Angehängte Dateien:

Lesenswert?

Hi Frank,

Danke für deine Information. Tatsächlich die Dateien am 2014 04 03 sehen 
ganz anders aus. viel Verständlicher.


Ich habe noch ne kurze frage. wenn ich "Basic Android Accessory Demo - 
C30 - PIC24F ADK for Android"  mit mplab öffne, sehe da komplette 
projekt.  Bild1

unter Projekt:  Hardware Profiles habe ich alle andere Hardware profile 
gelöscht und nur noch den  HardwareProfile - PIC24F ADK for Android 
gelassen.

Wenn ich dies jetzt Compiliere kriege ich fehler meldung :(

Muss ich noch iwas einstellen bevor ich compilieren kann?


>Vielen Dank<

von Alex K. (Gast)


Lesenswert?

Custom HID Devices gehören nur der HID Klasse an, lassen sich aber nicht 
in die Unterkatetegorien Tastatur, Maus, Joystick oder Gamepad einordnen 
und verwenden einen eigenen Data Report.

von Frank M. (frank_m35)


Lesenswert?

deine Pfadangaben stimmen nicht.
Im Dateibaum siehst du ja viele 'File not Found'.

Geh mal auf Project - Build options - Project
unter dem Tab Directories wählst du im Dropdown Menü Include Search Path 
und fügst mal den korrekten Pfad hinzu. (irgendwas\Microchip\Include)

(Nicht empfehlenswert: Oder korrigierst den Pfad jeder Datei einzeln 
indem du sie einfach mal versuchst zu öffnen.)

von mehmet c. (mscikar)


Lesenswert?

Hey Super es hat funktioniert. Ich kann Compilieren.

Jetzt wollte ich das ganze mit PicKit3 uploaden. Das Problem ist, dass 
ich Fehlermeldung kriege. :(

Was mache ich falsch? Was ist das Problem?

>Fehler Meldung<
PICkit 3 detected
Connecting to PICkit 3...
Firmware Suite Version...... 01.28.90
Firmware type......................dsPIC33F/24F/24H
PICkit 3 Connected.
PK3Err0045: You must connect to a target device to use PICkit
 3.

Vielen Dank

von Max H. (hartl192)


Lesenswert?

Wie die Platine mit Strom versorgt? Hast du eine externe 
Spannungsversorgung oder ist die Versorgung durchs Pk3 aktiviert?

von mehmet c. (mscikar)


Angehängte Dateien:

Lesenswert?

Danke für die Information ich hatte die Platine nicht mit 
Stromversorgung und auch bei PICKIT3 die Strom Versorgung nicht 
aktiviert.

ich habe jetzt das Ganze auch auf PIC Geladen. Kriege auch keine Fehler 
meldung.

Wenn ich aber jetzt die APP Starte und PIC board mit android tablet 
verbinde. Funktioniert nicht. ich kann die LED s nicht ein bzw. 
ausschalten.

Muss man noch was einstellen?

von Frank M. (frank_m35)


Lesenswert?

Die Stromversorgung darf nicht vom PIC Kit erfolgen, du musst das 
Android Kit separat versorgen.

Wähle dann mal das PIC Kit als Debugger aus, compiliere neu und 
programmiere neu. Dann starte das Programm von MPLAB aus. Das PIC Kit 
muss dann natürlich die ganze Zeit angeschlossen bleiben. Dafür kannst 
du nun das Programm jederzeit pausieren und eben debuggen, sodass du 
siehst, was gerade ausgeführt wird und ggf. Fehler suchen kannst.

Dann kannst du das Smartphone anschließen. Es sollte nun geladen werden 
und vermutlich funktionieren.

Von Microchip wird noch eine weitere App angeboten, mit der du testen 
kannst, was mit deinem Smartphone überhaupt möglich ist.

: Bearbeitet durch User
von mehmet c. (mscikar)


Lesenswert?

Hi Frank,

danke für die Informationen.

Wie du beschrieben hast, habe ich PIC Board extern mit Spannung 
versorgt.
PICKIT3 als Debugger eingestellt das Programm compiliert und Debugger 
gestartet.

Ich kriege folgende Fehler Meldung:



Running...
PK3Err0040: The target device is not ready for debugging.
Please check your configuration bit settings and program
the device before proceeding.


was mache ich Falsch?

von Frank M. (frank_m35)


Lesenswert?

Du hast vergessen den PIC zu programmieren?
Compilieren -> Programmieren -> Starten

von mehmet c. (mscikar)


Lesenswert?

hmmm irgend was übersehe ich :(

also meine schritte:

1. auf Release eingestellt. dann auf Build All

2. Unter Programmer pickit3 gewählt, Programmer/programm
   und kriege dann die Meldung.
   Programming...
   Programming/Verify complete

3. Ich stelle dann wieder auf Debug
   Debugger/select Tool /PICkit3

4. dann gehe ich auf RUN
   und kriege wieder selbe Fehlermeldung wie vorher :(


Running...
PK3Err0040: The target device is not ready for debugging.
Please check your configuration bit settings and program
the device before proceeding.

Was übersehe ich bzw. was mache ich falsch.

von Joe (Gast)


Lesenswert?

Naja, das ist jetzt nicht sonderlich überraschend: wenn du die Firmware 
im Release-Modus kompilierst, kannst du sie natürlich auch nicht 
debuggen...

von Frank M. (frank_m35)


Lesenswert?

1. wie Joe sagte: Auf debug-modus stellen
2. Nicht zwischen programmer und debugger wechseln. Du stellst auf 
Debugger Pic-Kit.

Also:
1. Debugger - Select Tool - PICkit 3
2. Debug-Modus wählen
3. Build-All
4. Program
5. Run

Hast du nun am Quellcode etwas geändert und willst die Änderung testen, 
dann drückst du make, program, run.

von mehmet c. (mscikar)


Lesenswert?

soo Danke :)

jetzt habe ich es genau so gemacht wie beschrieben. Jetzt kriege ich 
zumindest keine Fehlermeldung mehr.

im output Fenster steht:


PICkit 3 detected
Connecting to PICkit 3...
Firmware Suite Version...... 01.28.90
Firmware type......................dsPIC33F/24F/24H
PICkit 3 Connected.
Target Detected
Device ID Revision = 00000004

Resetting...
Target Reset

Programming...
Programming/Verify complete

Running...



Nur wenn ich jetzt am Android tablet die App " Basic Accessory Demo" 
starte, steht ganz oben device not connected.


auf dem Board ist auch nichts zu erkennen .:(

von Frank M. (frank_m35)


Lesenswert?

Hab's kurz selber nochmal ausprobiert, funktioniert nicht bei einem 
Nexus 5.
Liegt vermutlich am OS, da die App nur bis Android v.3 kompatibel ist.

Also falls du ein altes Smartphone mit mit Gingerbread hast, kannst du 
es damit mal testen.

Ansonsten wirst du die App anpassen müssen, damit sie mit Android 4 
kompatibel wird.

von mehmet c. (mscikar)


Angehängte Dateien:

Lesenswert?

Ohh Schade ich habe 4.2.2 drauf :(


Wenn ich mir mal v2014_07_22 angucke da sieht die Firmware ganz anders 
aus.

Da sehe ich mehrere Header Dateien. kann mir jemand sagen wie ich die 
als ein Projekt zusammenfügen und compilieren kann.

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.