Hallo, dieses Thema kommt ja in Variationen immer wieder, aber etwas passendes habe ich nicht gefunden. Ich hatte mir vorgestellt, ich könnte mit einem ATMega162 (zwei USARTS) und zwei USB-USART Wandlern die USB Signale einer Maus im PC sichtbar machen. Leider funktioniert das aber nicht. Wo liegt das Problem? Wenn ich beide Wandler an den PC anschließe, können die beiden USARTs kommunizieren, aber mit der Maus kommt gar nichts.
Bruno M. schrieb: > aber mit der Maus kommt gar nichts. weil eine USB-Maus keine Serielles Device ist sondern ein HID. Wenn überhaupt brauchst du eine alte Serielle oder PS2 Maus.
Es gibt USB-Mäuse die erkennen ob sie per USB oder per PS2 angeschlossen sind, diese liegen meist auch ein USB auf PS2 Adapter bei. Man darf also nicht blind davon ausgehen das jede Maus die Fallback-Fähigkeit hat.
Naja, aber auch mit PS/2 kann man die nicht an eine RS232 anschliessen. Allerdings wäre es damit schon mal deutlich entspannter, die an einen MC anzuschliessen. Über USB: ich denke mal, da brauchst du auf dem MC ein USB-OTG, sonst geht nichts.
Auch auf die Gefahr hin, dass ich Dich jetzt missverstanden habe : Du weißt schon, dass es in jedem USB-Verhau genau einen Master, ein bis mehrere (theoretisch 127) Slaves und 0 bis mehrere Hubs geben muss. Wobei ein Gerät meist eine feste Vorstellung hat, ob es Master oder Slave ist. Ausnahme sind spezielle USB OTG (on the go) Geräte, die mit Einschränkungen beides können. Das sind aber meist Tablets, die über die selbe Buchse sowohl mit dem PC als auch mit einem USB Stick verbunden werden können. Ein USB-RS232 Wandler ist auf der USB-Seite immer ein Slave, genauso wie die Maus. Sollte sich eigentlich nicht zusammen stöpseln lassen und funktioniert so auch nicht. Deine einzige Hoffnung wäre, dass Mäuse oft noch beides können USB und RS232. Du erkennst es daran, dass ein passiver Adapter von USB auf SUB-D durch die Verkaufsverpackung fällt. Dann verbinde sie über einen Pegelwandler mit deinem Mikrokontroller. Die andere Seite kannst Du dann wie gehabt über Wandler mit dem PC verbinden.
Eventuell lohnt sich mal das Aufschrauben der Maus. In der alten USB-Maus von Logitech, die ich hier habe, steckt ein Optical Mouse Sensor von Agilent (ADNS-2051), der über I2C mit einem MC Cypress spricht, welcher eigentlich nur das USB-Interface realisiert. Der Cypress ist sogar im DIL-Gehäuse. Platz ist in der Maus genug. Man könnte die Beinchen des MC einfach abknipsen und dann anschließen, was man mag... Hab ich mir für ein späteres Projekt schon vorgemerkt. :)
Achso, hier ist das Datenblatt des Agilent-Chips. Ich denke, der ist sehr verbreitet. Die Logitech-Maus enthält ziemlich genau die Schaltung von Seite 6. Der Cypress MCU scheint nur ein PROM zu haben. Hab nichts darüber gefunden, wie man ihn programmiert. Er ist ansonsten ein typischer 8bit-MCU. Ich werde ihn einfach rausschmeißen.
Sowohl das elektrische, als auch das logische Protokoll, vertragen sich nicht mit dem USART.
Erst mal danke für die vielen Antworten! fop schrieb: > Du weißt schon, dass es in jedem USB-Verhau genau einen Master, ein bis > mehrere (theoretisch 127) Slaves und 0 bis mehrere Hubs geben muss. > Wobei ein Gerät meist eine feste Vorstellung hat, ob es Master oder > Slave ist. Ich muß zugeben, ich habe mich mit USB praktisch nicht beschäftigt. Bernd Strobel schrieb: > Eventuell lohnt sich mal das Aufschrauben der Maus. In der alten > USB-Maus von Logitech, die ich hier habe, steckt ein Optical Mouse > Sensor von Agilent (ADNS-2051), der über I2C mit einem MC Cypress > spricht, welcher eigentlich nur das USB-Interface realisiert. So neugierig war ich natürlich schon um festzustellen wie es innen aussieht. Verbaut ist ein ADNS-2700. Datenblatt im Anhang. Daraus bin ich aber nicht so richtig schlau geworden. Ich entnehme aber daraus, daß der Controller nur ein Mal programmiert werden kann. Es müßte aber doch gehen, wenn ich D+ und D- des Chips nur anzapfe und die Maus am PC betreibe, oder?
Bruno M. schrieb: > Es müßte aber doch gehen, wenn ich D+ und D- des Chips nur anzapfe und > die Maus am PC betreibe, oder? Nein. Die Maus sendet mit Sicherheit erst dann Positionsdaten, wenn sie der Host per USB protokollgemäß dazu aufgefordert hat.
Markus F. schrieb: > Die Maus sendet mit Sicherheit erst dann Positionsdaten, wenn sie > der Host per USB protokollgemäß dazu aufgefordert hat. Aber das geschieht doch, wenn ich die Maus am PC betreibe.
Bruno M. schrieb: > Markus F. schrieb: >> Die Maus sendet mit Sicherheit erst dann Positionsdaten, wenn sie >> der Host per USB protokollgemäß dazu aufgefordert hat. > > Aber das geschieht doch, wenn ich die Maus am PC betreibe. Ach so, Du willst da "schmarotzen"? Das mag schon gehen, wenn Du es schaffst, das HID-Protokoll zu entziffern. Aber dann mußt Du ja für deine µC-Anwendung immer einen PC mitliefern? ... Es dürfte einfacher sein, die Daten "raw" vor dem USB-Chip in der Maus abzugreifen und entsprechend auszuwerten.
:
Bearbeitet durch User
Markus F. schrieb: > Aber dann mußt Du ja für deine µC-Anwendung immer einen PC > mitliefern? ... Ich verfolge damit keine höheren Ziele, es ist pures Interesse:-)
Dann nimm doch lieber eine passende Software... Das hier könnte das richtige sein: http://freeusbanalyzer.com/
Bruno M. schrieb: > So neugierig war ich natürlich schon um festzustellen wie es innen > aussieht. Verbaut ist ein ADNS-2700. Datenblatt im Anhang. Daraus bin > ich aber nicht so richtig schlau geworden. Ich entnehme aber daraus, daß > der Controller nur ein Mal programmiert werden kann. Damit hast du sicher kein Glück. Dieser Chip ist offensichtlich alles in einem. Er hat gleich einen USB-Port. Es ist kein MC mehr für die USB-Anbindung nötig und damit kommt man nicht mehr an die Ausgabedaten des Sensors ran. Vielleicht eine ältere Maus beschaffen? Amateur schrieb: > Sowohl das elektrische, als auch das logische Protokoll, vertragen sich > nicht mit dem USART. Ja klar, aber die meisten MCs haben sowohl USART(s) als auch mindestens ein I2C interface. Man muss nur ein bisschen flexibel bleiben...
Im erweiterten Sinne ist das USB-Protokoll Master-Slave-Orientiert. Der µC müsste in diesem Falle den Part des Masters übernehmen. Rein elektrisch passt es aber schon nicht. Die Daten werden differentiell übertragen. Das geht schon nicht mit einer USART. Logisch gesehen werden die Daten in einem eigenen Protokoll, mit Adresse Anforderungsbefehl und dem vollen Programm rundum, übertragen. Keine Ahnung, ob sich das, mit einem festen Rahmen (7, 8, oder weis der Kuckuck wieviel Bits) wie beim "normalen" seriellen Protokoll, bewerkstelligen lässt. Schätze da brauchst Du einen Prozessor, der von Haus aus, für so etwas gedacht ist, oder einen externen Chip. Diese müssen aber dann auch fähig sein, den Part des Masters zu übernehmen.
Amateur schrieb: > Im erweiterten Sinne ist das USB-Protokoll Master-Slave-Orientiert. Der > µC müsste in diesem Falle den Part des Masters übernehmen. Ok. Missverständnis, ich dachte du beziehst dich auf meinen Beitrag bezüglich des Sensorchips mit dem I2C-Interface. Bezüglich USB hast du völlig recht. Wenn es unbedingt USB sein muss, kann der TO sich ja mal einen ATmega32U2 o.ä. anschauen. Der kann USB-Host sein, wenn ich mich recht erinnere.
Bernd Strobel schrieb: > Der Cypress MCU scheint nur ein PROM zu haben. Hab nichts darüber > gefunden, wie man ihn programmiert. CY7C63723 hat ein OTP-EPROM, kann also nur ein mal programmiert werden, mangels Fenster im Gehäuse ist kein Löschen möglich. Die Chips sind noch in Produktion, werden aber nicht für neue Projekte unterstützt, entsprechend sind auch die Entwicklungswerkzeuge nicht mehr erhältlich. Der ADNS2051 ist nicht mehr in Produktion.
Bruno M. schrieb: > Was bedeutet das genau? Das bedeutet, dass es hilfreich wäre zu wissen was denn am Ende raus kommen soll, statt Spekulationen zu folgen wie Du meinst, dass das ginge.
Differentiell: Hierzu findest Du einfache Erklärungen rund um das RS485-Format, würde mich auch wundern, wenn die Wikipedia nichts dazu hergibt. Wann immer Daten, über eine größere Entfernung, übertragen werden müssen und dass auch noch schnell (nicht unbedingt bei einer Maus) aber z.B. über einen CAN-Bus, wird ein differentielles Format verwendet. Ist nicht so anfällig für Störungen.
Amateur schrieb: > Hierzu findest Du einfache Erklärungen rund um das RS485-Format, würde > mich auch wundern, wenn die Wikipedia nichts dazu hergibt. Danke, wieder etwas schlauer!
@Bruno Sowas geht nur mit einer "uralt"-Maus mit 9-poligem Stecker, den Du an die Serielle Schnittstelle des PCs anschliessen konntest (Maus mit der Gummikugel, die man immer reinigen musste...). Moderne Mäuse haben eine USB-Schnittstelle, mittelarterliche eine PS-2. Beide laufen über eine Schnittstelle mit Date- und Clock-Leitung wie beim I2C-Bus. Um die Signale umzuwandeln gibt es Adapter: USB -> PS-2 PS-2 -> seriell (1200 Baud) PS-2 -> USB Zu den Anschlüssen: http://www.interfacebus.com/PC_Mouse_Pinout.html http://www.interfacebus.com/serial-mouse-pinout.html http://paulbourke.net/dataformats/serialmouse/ Ein PS-2 Keyboard bzw. Maus kannst Du folgendermassen an den Arduino anschliessen: http://www.practicalarduino.com/projects/ps2-keyboard-or-mouse (Caveat: Echte RS-232 Stecker haben +/- 12 Volt !)
crami schrieb: > Beide laufen über eine Schnittstelle mit Date- und Clock-Leitung wie > beim I2C-Bus. Nein. Nur die "PS/2" verwendet getrennte Takt- und Datensignale. USB hingegen verwendet zwei Datenleitungen mit symmetrischer Signalisierung, Takt und Daten sind hier gemischt. > Um die Signale umzuwandeln gibt es Adapter: Diese Adapter wandeln keine Signale um, sondern signalisieren der bilingualen Hardware der Maus, welches Protokoll sie erzeugen soll. Der µC in solchen Mäusen spricht nämlich beide Protokolle, USB und PS/2, und wird durch den Adapter dazu gebracht, das jeweils passende Protokoll zu erzeugen. Lediglich PS/2-zu-USB-Adapter (also zum Betrieb von PS/2-Geräten an einem USB-Anschluss des PCs) gibt es in "echter" adaptierender Ausführung, darin steckt ein µC, der vom PS/2- in das USB-Protokoll übersetzt. Zweisprachige Mäuse gab es übrigens früher auch schon mal, als der Wechsel von seriellen Mäusen für die RS232-Schnittstelle auf die PS/-Schnittstelle erfolgte. Damals war der Betrieb einer nicht bilingualen Maus mit einem nicht dafür vorgesehen Adapter durchaus riskant; eine reine PS/2-Maus konnte man mit dem Signalpegel einer RS232-Schnittstelle in die ewigen Mausgründe jagen ...
Bruno M. schrieb: > Es müßte aber doch gehen, wenn ich D+ und D- des Chips nur anzapfe und > die Maus am PC betreibe, oder? Dann müsstest Du die Signale aber verdammt schnell abtasten, USB Low Speed sind 1,5 MBit/sec und Du musst so Faktor 2 oder besser 4 schneller sein. Andere Mäuse fahren u.U. auch USB FS mit 12 MBit/sec. Es gibt preiswerte Mikrocontroller mit USB Host bzw. USB OTG, dort könnte man eine USB Maus direkt anschließen. Das sind dann allerdings keine 8-Bit AVR sondern meist 32-Bit ARM Cortex-M3 oder M4. USB Host ist auch von der Software her leider alles andere als trivial, aber viele Hersteller liefern auch USB Host Stacks für ihre µCs.
Rufus Τ. F. schrieb: > Lediglich PS/2-zu-USB-Adapter (also zum Betrieb von PS/2-Geräten an > einem USB-Anschluss des PCs) gibt es in "echter" adaptierender > Ausführung Nicht ganz richtig. Ich hatte 2 Adapter zum Anschluss von USB-Geräten an PS/2-Anschlüsse (weil ich einen aufwendigen KVM-Schalter mit PS/2 habe), leider hat bloss einer davon korrekt funktioniert. Richtig ist dass man danach lange suchen muss. Georg
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.