Forum: Mikrocontroller und Digitale Elektronik serielle Maus an MAX232


von Heiko (Gast)


Lesenswert?

Hallo Leute,

Ich möchte mit einem AVR 2333 mit TX/RX über einen MAX232, an dem eine 
Serielle 9polige Maus angeschlossen ist, die Positionswerte der Maus 
auslesen.
Laut meinen Nachforschungen haben die alten seriellen Mäuse eine 
Baudrate von 2400.
Ich hab schon mehrere Kombinationen mit der Baudrate probiert, nur 
leider bekomme ich keinen Wert zurück.
Muss man vielleicht zuerst einen String senden, damit die Maus dann 
zurücksendet oder so?

Hat schon jemand einmal so ein Projekt in Angriff genommen???

Würde mich über jede Hilfe freuen

Grüße
Heiko

von sven (Gast)


Lesenswert?

Hallo Heiko,

Bedenke das die Maus auch noch betriebsspannung braucht.
Ich würde mal probehalber pin 4 und 6 an deinem seriellen anschluß auf 
5v setzen....


sven

von Heiko (Gast)


Lesenswert?

Hallo Sven,

also die 5V sind vorhanden.
ich hab die Maus mal an den Pc angeschlossen und versucht mit VB6
die Daten auszulesen, funktioniert auch nicht.
Wie gesagt ich muß bestimmt irgendwas senden damit die Maus dann 
zurücksendet, ich weiß bloß nicht was!

Gruß Heiko

von Sebastian Wille (Gast)


Lesenswert?

Hallo Heiko,

ich habe bei "AVR Tastaturaufzeichnung" einen guten Link für Dich 
gefunden:

http://panda.cs.ndsu.nodak.edu/~achapwes/PICmicro/PS2/ps2.htm

Schau' mal ganz unten, vielleicht bringts ja was.

Grüße,

Sebastian

von Niki Hammler (Gast)


Lesenswert?

Ja, das stimmt, die Maus muss zuerst initialisiert werden!

Schau in den Source Code des Maustreibers von Linux, in der Datei mice.c 
gibt es eine Funktion I_imps2. Dort kannst du die Initialisierung für 
das Intellimouse ps2 Protokoll sehen.
Wenn du diese Initialisierungsbytes gesendet hast, sollte sich die Maus 
ansprechen lassen!

void PS2_Init(void)
{
  static unsigned char s0[] = { 243, 200, 243, 100, 243, 80, };
  static unsigned char s1[] = { 246, 230, 244, 243, 100, 232, 3, };
  int acks = 0;
  int n;

  for (n = 0; n < sizeof s0; ++n)
    acks += sendByte(s0[n]);
  for (n = 0; n < 100; ++n)
    delay();
  for (n = 0; n < sizeof s1; ++n)
    acks += sendByte(s1[n]);
}

das sollte helfen

mfg

Niki

von Uwe (Gast)


Lesenswert?

Hi!
Mäuse: 1200/8/N/1
MS-Maus(2Tasten): 3 Byte a 7Bit je Übertragung
MS-Systemmaus:(3Tasten)5 Byte a 8Bit
Stromversorgung über TXD der Schnittstelle
Mauskennung auslesen: DTR kurz mal aktivieren dann sendet die MS-Maus 
ein "M"($4d)
Jedes vernünftige Schnittstellenprog.,welches HEX anzeigen kann, 
empfängt die Zeichen. Wenn nicht Maus def.

Gruss Uwe

von Heiko (Gast)


Lesenswert?

Hi Niki,

kannst du mir mal die mice.c mailen.
habe leider kein Linux zur verfügung.

Danke
Heiko

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.