21.09.2001

PS/2 Maus

Stromverbrauch

Der Strom wurde bei zwei Logitech Mäusen gemessen:

Wheel Mouse (optical): ca. 55 mA

Dreitastenmaus: ca. 11,3 mA

Ports und Variabeln für den Betrieb am kitCON-541

 

kitCON-541

Programm

 

Pin

Bezeichnung

Technische Daten

Beschreibung

Variable

Register

Bit

Clock

98

P3.3, /INT1

1,6mA[i] [ii]

MOUSE_CLOCK

Eingang für Clock der PS/2-Maus

mouse_clock

P3

3

Data

93

P3.0, LED 2

10,0mA[iii]

MOUSE_DATA

Eingang für Data der PS/2-Maus

mouse_data

P3

0

Ports und Variabeln für den Betrieb am kitCON-167

 

P 2.8

Pin 93

P 2.10

Pin 94

Clock

mouse_ clock_0

(LED 13)

mouse_ clock_1

(LED 11)

 

P 2.9

Pin 97

P 2.11

Pin 98

Data

mouse_ data_0

(LED 12)

mouse_ data_1

(LED 10)

Betrachtungen zum Open-Collector

·        Die Pull-Ups (KitCON-541: 1,7MW...4,7MW[1], KitCON-167: nicht gemessen) und die Pull-Ups der Maus (30KW...700KW) sind parallel geschalten. Da die der Maus viel kleiner sind, sind die Pull-Ups des KitCOM vernachlässigbar.

·        Versuche zeigen, dass die Pull-Ups ausreichend klein sind (Empfehlung ist 10KW[iv])

·        Wegen Open-Collector kann Maus nur senden (= Datenleitung auf 0 ziehen), wenn Clock = Data = 1. Dies ist deshalb der Standartzustand.

·        Es kann immer nur einer Senden. Wenn der Computer senden möchte (siehe unten), hat die Maus sofort mit dem Senden aufzuhören um dem Computer das Senden ermöglichen. Das macht sie indem sie Clock = Data = 1 setzt. Nur zum Takten bzw. Bestätigen setzt die Maus dann noch für 40ms/50ms dann noch Clock = 0.

Maus sendet Daten:

·        Die Maus startet nur mit dem Senden, falls Clock = Data = 1 ist, indem sie Data auf 0 setzt (=Bit 0) und nach 12ms[2] Clock = 0 setzt (= 0. High-Low-Flanke).

·        Dieser Vorgang wird 11 mal durchgeführt. Die Daten werden immer bei der High-Low-Flanke vom Computer gelesen und gespeichert.

·        Direkt nach der 11. High-Low-Flanke der Maus setzt der Computer Clock = 0. Das bestätigt den Empfang und verhindert weiteres Senden der Maus. Wegen dem Stopbit ist schon Data = 1. Das bleibt auch so.

·        Auswerten der Daten durch den Computer:

Bit

Bezeichnung

Anmerkung

0

Startbit

muss 0 sein!

1

Daten 0 (LSB)

 

2

Daten 1

 

3

Daten 2

 

4

Daten 3

 

5

Daten 4

 

6

Daten 5

 

7

Daten 6

 

8

Daten 7 (MSB)

 

9

Parität

0-ungerade Anzahl von Daten = 1, 1-gerade Anzahl

10

Stopbit

muss 1 sein!

·        Wieder Clock = 1. Das erlaubt der Maus weitere Daten zu senden.

 

Computer sendet Daten:

·        Computer setzt Clock = 0. Das ist das Zeichen für die Maus, dass sie keine Daten mehr senden darf. Dann wartet er 125ms.

·        Computer setzt Data = 0. Das ist das Zeichen für die Maus, dass der Computer jetzt Daten senden möchte. Dann wartet er 250ms.

·        Computer setzt Clock = 1. Der Computer erwartet von der Maus, dass sie zur Datenübertragung über Clock taktet.

·        Mit der High-Low-Flanke auf Clock nach 180ms, welche durch die Maus erzeugt wird, liest die Maus das Startbit (= Bit 0, siehe Tabelle weiter oben).

·        Der Computer setzt dann Daten = Daten 0 (= Bit 1, siehe Tabelle weiter oben). Nach 40ms wird durch die Maus wieder Clock = 1 und nach weiteren 40ms kommt die nächste High-Low-Flanke. Jetzt setzt der Computer das nächste Datenbit.

·        Das wiederholt sich solange, bis so auch das Stopbit (=Bit 10, siehe Tabelle weiter oben) gesendet wurde. Bei diesem Zustand (Data = 1) bleibt es dann auch.

·        Die Maus sorgt dafür, dass nach den 40ms Clock = 0 für 80ms Clock = 1 und dann wieder für 50ms Clock = 0 gesetzt wird. Dann wird und bleibt Clock = 1.

Wann sendet die Maus Daten?

·        Nach dem Anlegen der Versorgungsspannung

700ms nachdem die Maus mit Strom versorgt wird, sendet sie den Code $AA und kurz danach $00.

·        Nach „Reset“ durch den Computer

Nachdem der Computer $FF (=Reset) gesendet hat, antwortet die Maus sofort mit $FA (=Acknowledge). Nach 500ms sendet sie $AA und $00.

·        Nach einem Befehl durch Computer

Nachdem der Computer etwas gesendet hat, wird meist mit $FA (Acknowledge) geantwortet. Je nachdem was der Computer gesendet hat, können noch weiter Daten als Antwort erfolgen.

·        Nachdem der Computer den Status und Bewegung abfragt

Auf das Senden von $EB des Computers antwortet die Maus mit $FA (Acknowledge) und weiteren 3 Daten, welche den Status der Maustasten und die relative Bewegung seit der letzen Abfrage beschreiben.

·        Nachdem der Computer die Maus in den „Stream-Mode“ geschalten hat

Auf das Senden von $F4 des Computers, antwortet die Maus mit $FA (Acknowledge). Ab jetzt sendet die Maus immer, wenn es eine Änderung der Maustasten oder eine Bewegung gibt, ohne weitere Aufforderung 3 Daten, welche den Status der Maustasten und die relative Bewegung seit dem letzen Senden beschreibt.

Interessante Links zum Thema:



[1] Mit Ohmmeter gemessen

[2] Alle Zeitangaben sind nur grobe Richtwerte. Das Protokoll ist sehr unempfindlich gegen Abweichungen.



[i] SIEMENS C540U / CC541U 8-Bit CMOS Microcontroller, User’s Manual 11.97, 6-20

[ii] SIEMENS C540U / CC541U 8-Bit CMOS Microcontroller, User’s Manual 11.97, 11-2

[iii] SIEMENS C540U / CC541U 8-Bit CMOS Microcontroller, User’s Manual 11.97, 11-2

[iv] Synaptics TouchPad Interfacing Guide, Second Edition, Page 28