Forum: Mikrocontroller und Digitale Elektronik PDIUSBD11... jemand schon mal was gemacht damit?


von Weinga-Unity (Gast)


Angehängte Dateien:

Lesenswert?

Hi!
Bin gerade dabei (seit gestern) rechergen über den PDIUSBD11 zu machen. 
So sieht der IC ja recht einfach aus (I2C usw...) aber mit den 
Deskriptoren komm ich nicht klar, wie und wo man die in den PDIUSBD11 
hineinschreiben muss, oder wie das funktioniert.

Falls jemand nicht weiß, was der IC macht, der sehe sich das PDF-File im 
Anhang an, vielleicht kommt man dann auch auf den Geschmack...

Falls jemand Erfahrungen mit dem IC hat, bitte schreibt zurück.

Ich möchte das ganze dann mit einen AT89C2051 betreiben.

mfg Weinga-Unity

von Meiserl (Gast)


Lesenswert?

Hallo

Sieht interessant aus.
Also zum µC sieht es so aus das du I2C koppeln mußt.
Wo genau hast du Probleme?
Gibt es fertige Treiber für die PC Seite?
Bekommt man die auch in Einzelstücken?

von Markus Burrer (Gast)


Lesenswert?

Eine Frage: hat der 2051 eine I2C Schnittstelle? Wenn nicht mußt man die 
doch per Software simulieren. Wäre da ein Chip von FTDI nicht 
interessanter? Den gibt es mit serieller Schnittstelle.

von Weinga-Unity (Gast)


Lesenswert?

Mein Problem ist nicht der I2C-Bus, sondern, dass ich nicht weiß, wie 
ich den Geräte-Deskriptor, Konfigurations-Deskriptor, Interface 
Deskriptor usw... übermitteln soll. Aber wahrscheinlich scheiters 
derzeit noch an meinen USB-Wissen.

Nebenbei: Der 2051 hat keine I2C-Schnittstelle, aber per Software lässt 
sich eine sehr schnelle und gute Schnittstelle realisieren.

von Markus Burrer (Gast)


Lesenswert?

ich würde mit trotzdem mal den FT232BM anschauen. Die Konfiguration ist 
auch einfach. Nur an den USB Port anschließen und mit der frei 
verfügbaren Software konfigurieren

von Weinga-Unity (Gast)


Lesenswert?

Der IC (FT232BM) macht nichts anderes, als einen virtuellen COM-Port zu 
erzeugen. Meine Hardware muss aber eine USB-Maus werden. Und dazu kann 
ich den FT232BM nicht gebrauchen.

von Axel Barkow (Gast)


Lesenswert?

Hallo,

habe mit dem PDIUSBD11 und einem ATMega8 einen HID-Joystick gebastelt, 
um mal ein wenig die USB-Programmierung zu testen. Vorteil ist, daß die 
HID-Treiber schon bei Windows dabei sind, ich mußte mich also nur noch 
um die Mikrocontroller-Seite kümmern.
Sehr geholfen hat mir dabei das Buch USB - Universal Serial Bus von 
H.J.Kelm aus dem Franzis Verlag und die Seiten von Craig Pollock 
www.beyondlogic.org. Weitere wichtige Unterlagen findet man natürlich 
auf www.usb.org.

Gruß,

Axel

von Thomas Zepf (Gast)


Angehängte Dateien:

Lesenswert?

Besorg dir mal bei Phips die Sourcen zum PDIUSB12
Die Strukturen und Commands sind abgesehen vom Paralell Port wie bei 
allen Philips USB Cores ziemlich ähnlich.

Wichtig der 11er hat einen Embedded Hub der abgeschaltet sein muss das 
stand (steht) nicht im Datenblatt
Im Anhang mal das Papier von Graig Peacock das sollte einige dinge 
klären.

Thomas

von Weinga-Unity (Gast)


Lesenswert?

Hi Axel:

Könntest du mir vielleicht ein Schemata geben, was und wann du was über 
den I2C-Bus sendest? Wäre nähmlich für eine HID-Maus.

mfg Weinga-Unity

von Axel Barkow (Gast)


Lesenswert?

Hallo,

lies dir mal den Anhang im Posting von Thomas durch, der erklärt schon 
einiges. Prinzipiell habe ich die darin dargestellte Hardware nachgebaut 
und den ATMega8 angeschlossen. Auf www.beyondlogic.org wurde diese 
Hardware an einen PIC angeschlossen, dort gibt es auch eine gut 
dokumentierte Software (in C) für den PIC. Diese habe ich im ersten 
Schritt an den AVR angepasst und sie im zweiten Schritt HID-kompatibel 
gemacht. Eine HID-Maus ist damit auch kein Problem, man benötigt nur 
einen anderen Report-Descriptor (Hab ich kurz getestet, aber dann nicht 
weiter verfolgt). Ich mail dir meine Software mal zu.
Ein Schema, was ich wann über den I2C-Bus sende, habe ich so nicht 
parat. Schau halt mal in die Quelltexte und Datenblätter (vor allem der 
Anhang von Thomas, auch zu finden auf www.beyondlogic.org), die erklären 
schon einiges. Wenn du dann noch Fragen hast, kannst du dich gerne an 
mich wenden.

Gruß,

Axel

von Weinga-Unity (Gast)


Lesenswert?

Hi Axel!
Hab mir jetzt so eine kleine Schaltung gebastelt, wo ich einen I2C-Bus 
von PC aus steuern kann (funktioniert über die RS232 und man kann durch 
ein Terminalprogramm die Sachen abfragen und schalten; sieht in etwa so 
aus: S112W255WE     Start, Schreibe 112, Schreibe 244, Ende).

Meine Frage nun: Kann man auch mit einer langsamen I2C-Bus 
Geschwindigkeit (200 Bytes/Sec) auch den PDIUSBD11 ansteuern, oder ist 
das schon zu langsam?

mfg Weinga-Unity

von Thomas Zepf (Gast)


Lesenswert?

Zu den Requests:

Es gibt da nichts auser der Initialisierung was du selbständig an den 
Chip sendest. Du beantwortest ganz einfach !? alle Usb Requests die der 
Host schickt und fertig:

Ein Beispiel :
Der Host fragt via Setup nach dem Device Descriptor
-> du sendest den Device Deskriptor.

Naja ganz so einfach ist es dann in der Praxis doch nicht. Für eine Maus 
ist neben der USB1.1 Spec
Kapitel 9 auch die HID Spec wichtig. Beides auf www.usb.org zu finden.


Thomas

von Axel Barkow (Gast)


Lesenswert?

Hallo,

Thomas hat recht. Nach der Initialisierung beantwortest du nur noch USB 
Requests. Der PDIUSB teilt das Auftreten eines Requests über den 
Interrupt-Pin mit, d.h. diesen müßtest du auch noch abfragen.
Zur Geschwindigkeit kann ich sagen, daß ich Probleme hatte, wenn ich 
nicht schnell genug auf einen Request geantwortet habe. Erhält der 
USB-Host-Controller nicht schnell genug eine Antwort, dann initiiert er 
einen Bus-Reset. Diesen Effekt konnte ich mehrmals beobachten. Habe in 
meinem Programm manchmal zu viel Zeit mit aktivem Warten beim Versand 
über die RS232-Schnittstelle verbraten. Ob deine 200 Byte/sec reichen 
kann ich nicht sagen.
Der Quelltext, den ich dir gemailt habe, ist in C geschrieben, sollte 
sich auch ohne viel Aufwand für den PC anpassen lassen.
Ich kann nur sagen, daß das größte Problem darin liegt, das 
USB-Protokoll zu verstehen. Wenn man das einmal begriffen hat, ist die 
Implementation eher einfach. Den USB-Joystick hatte ich dann relativ 
schnell am laufen. Eine USB-Maus funktioniert vom Protokollablauf her 
gleich. Ich kann dir daher nur noch mal das von mir erwähnte Buch 
empfehlen.

Gruß,

Axel

von Weinga-Unity (Gast)


Lesenswert?

Da anscheinend einige mit dme PDIUSBD11 gearbeitet haben, hab ich noch 
folgende Frage:

Der IC benötigt, 3.3V. Leder bekomm ich in unserer Gegend keinen 
Festspannungsregler, der 3.3V erzeugen kann. So hab ich mir gedacht, ich 
mach das mit einer Zener-Diode, jedoch weiß ich nicht genau, wieviel mA 
das Teil braucht. Laut den Datenblätter und Schaltungen die ich habe hat 
es den Anschein, dass es über 100mA sein müssen, und wenn es so wäre, 
dann kann ich das mit der Zener-Diode schon mal vergessen.

Weiß jemand genau, wieviel er braucht?

mfg Weinga-Unity

von Meiserl (Gast)


Lesenswert?

Hallo

Wie wäre es mit einem - LM317 den bekommt man auch überall.

von Thomas Zepf (Gast)


Lesenswert?

Ohne richtigen LowDrop 3.3V Regler wird das warscheinlich nichts.
VBus kann lt Spec bis runter zu 4.4V Volt gehen !

Soweit ich weis arbeitet der LM317 dann nicht mehr.
Auserdem ist die Stromaufname im Leerlauf deutlich zu gross.

Thomas

von Weinga-Unity (Gast)


Lesenswert?

Hi!
Hab jetzt das erste Mal den IC angesprochen. Rührt sich nichts!
Da ich beim Aufbau der Schaltung einmal etwa 4.4V statt 3,3V hatte 
wollte ich jetzt fragen, ob man überprüfen kann, ob der IC noch 
funktioniert.

Ich hab bis jetzt die USB_Initialisierung laut dem ZIP-File von AXEL 
gemacht. Soll man da am PC schon was merken?

mfg Weinga-Unity

von Axel Barkow (Gast)


Lesenswert?

Hallo,

als Spannungsregler habe ich einen Low-Drop Typ LM3940 von National 
genommen. Gibts auch bei Reichelt.
Wenn der IC korrekt an den PC angeschlossen ist, solltest du was merken, 
sobald du den Soft-Connect auf dem IC einschaltest. Das ist ein interner 
Pull-Up Widerstand von D+ nach 5V. Wenn du diesen extern beschaltet 
hast, sollte der PC etwas merken, sobald du das USB Kabel einsteckst.
Du kannst über einen internen Teiler die Frequenz einstellen, die am 
ClkOut Pin ausgegeben wird. Vielleicht kannst du damit testen, ob der IC 
noch lebt.

Gruß,

Axel

von Weinga-Unity (Gast)


Lesenswert?

Hi!
Ich hab die USB-Init probiert, und auch den Soft-Connect-Befehl 
gesendet. Jedoch macht der PC keinen Muxer. Der Befehl kommt aber an, da 
dich die Frequenz ändern kann.

Was müsste der PC denn machen?

mfg Weinga-Unity

von Thomas Zepf (Gast)


Lesenswert?

Dann würde ich als erstes mal den USB Stecker
auf korekten Anschluss überprüffen.
(Ein sehr beleiebter Fehler ist das Vertauschen von D+ und D-)

Mit dem SoftConnect wird der der 1.5k auf der D+ Leitung eingeschaltet. 
Das sollte der PC sofort mit
einem Pop Up Fenster (PnP Event) beantworten.
Falls das nicht passiert und sonst alles korrekt ist erst mal die USB 
Ports mit einem funktionierenden Device auf Funktionalität prüfen.

Öfters mal mit RegEdit unter HKLM\ENUM\USB\VID000 Einträge löschen sonst 
bekommst du den PnP Event eventuell nicht zu Gesicht.

Thomas

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.