Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
private:keyboard_switch [2012/06/01 21:40]
Patrick Wacker Beschreibung geändert
private:keyboard_switch [2012/06/14 18:57] (aktuell)
Patrick Wacker angefangen register zu beschreiben
Zeile 1: Zeile 1:
 ====== Erste Überlegungen zu einen Keyboard/​Mouse-Switch ====== ====== Erste Überlegungen zu einen Keyboard/​Mouse-Switch ======
  
-=== Anforderungen ===+==== Anforderungen ​====
  
   * 2 ((evt. 3 oder erweiterbar)) Tastaturen (KB) und 2 ((evt. 3 oder erweiterbar)) Mäuse (MS) anschließbar (beides PS/​2-Schnittstelle)   * 2 ((evt. 3 oder erweiterbar)) Tastaturen (KB) und 2 ((evt. 3 oder erweiterbar)) Mäuse (MS) anschließbar (beides PS/​2-Schnittstelle)
Zeile 17: Zeile 17:
   *   *
  
-=== Umsetzung ===+==== Umsetzung ​====
  
   * Ein µController zur Verwaltung der Eingaben (2x KB/MS)   * Ein µController zur Verwaltung der Eingaben (2x KB/MS)
Zeile 24: Zeile 24:
   * Simples serielles Protokoll zur Übertragung der Daten (SPI oder I2C) ((damit eine vielzahl von Clients bedient werden kann))   * Simples serielles Protokoll zur Übertragung der Daten (SPI oder I2C) ((damit eine vielzahl von Clients bedient werden kann))
   *    * 
 +
 +
 +==== Aufbau ====
 +
 +<​graphviz dot left>
 +digraph aufbau {
 + ​ graph [ rankdir="​TB"​ ];
 +  node [ shape=record,​ fontname=Helvetica,​ fontsize=10 ];
 +  edge [ fontname=Helvetica,​ fontsize=10 ];
 +        ​
 +        subgraph cluster0 {
 +                style="​plaintext";​
 +                color="​invis";​
 +          kb1 [ label="​Keyboard 1", shape="​ellipse",​ style=filled,​ fillcolor=gray ];
 + ​  ​       ms1 [ label="​Mouse 1", shape="​ellipse",​ style=filled,​ fillcolor=gray ];
 +                label = "​required";​
 +        }
 +        ​
 +        subgraph cluster1 {
 +                style="​plaintext";​
 +                color="​invis";​
 +                kb2 [ label="​Keyboard 2", shape="​ellipse",​ style=filled,​ fillcolor=lightgray ];
 +                ms2 [ label="​Mouse 2", shape="​ellipse",​ style=filled,​ fillcolor=lightgray ];
 +                label = "​optional";​
 +        }
 +
 +        subgraph cluster2 {
 +                style="​filled,​ dashed";​
 +                color="​black";​
 +                fillcolor="​lightgrey"​
 +                ​
 +                usbhub [ label="​USB-Hub",​ style="​filled",​ fillcolor="#​e0e0e0"​ ];
 +                keyboards [ label="​Keyboards",​ shape="​oval",​ style="​filled",​ fillcolor="#​e0e0e0"​ ];
 +                mice [ label="​Mice",​ shape="​oval",​ style="​filled",​ fillcolor="#​e0e0e0"​ ];
 +                ​
 +                keyboards -> usbhub [ label="​USB",​ dir="​both"​ ];
 +                mice -> usbhub [ label="​USB",​ dir="​both"​ ];
 +
 +                label = "​optional USB connection";​
 +        }
 +        ​
 +        subgraph cluster3 {
 +                style="​invis";​
 +                client1 [ label="​Client Contr. 1", style=filled,​ fillcolor=lightblue ];
 +                PC1 [ label="​PC 1", shape="​box3d",​ style=filled,​ fillcolor=green ];
 +                client1 -> PC1 [ label="​USB",​ color="​black"​ ];
 +        }
 +
 +        subgraph cluster4 {
 +                style="​invis";​
 +                client2 [ label="​Client Contr. 2", style=filled,​ fillcolor=lightblue ];
 +                PC2 [ label="​PC 2", shape="​box3d",​ style=filled,​ fillcolor=green ];
 +                client2 -> PC2 [ label="​USB",​ color="​black"​ ];
 +        }
 +        subgraph cluster5 {
 +                style="​invis";​
 +                client3 [ label="​Client Contr. 3", style=filled,​ fillcolor=lightblue ];
 +                PC3 [ label="​PC 3", shape="​box3d",​ style=filled,​ fillcolor=green ];
 +                client3 -> PC3 [ label="​USB",​ color="​black"​ ];
 +        }
 +        subgraph cluster6 {
 +                style="​invis";​
 +                client4 [ label="​Client Contr. 4", style=filled,​ fillcolor=lightblue ];
 +                PC4 [ label="​PC 4", shape="​box3d",​ style=filled,​ fillcolor=green ];
 +                client4 -> PC4 [ label="​USB",​ color="​black"​ ];
 +        }
 +        subgraph cluster7 {
 +                style="​dashed";​
 +                client6 [ label="​ . . . \nClient X", style="​solid",​ color="​white"​ ];
 +                PC6 [ label="​ . . . \nPC X", style="​solid",​ color="​white"​ ];
 +                client6 -> PC6 [ label="​USB",​ color="​black"​ ];
 +
 +                client5 [ label="​Client Contr. 5", style="​filled",​ fillcolor="#​d5e3ff"​ ];
 +                PC5 [ label="​PC 5", shape="​box3d",​ style="​filled",​ fillcolor="#​b6ffc2"​ ];
 +                client5 -> PC5 [ label="​USB",​ color="​black"​ ];
 +                ​
 +                ​
 +                { rank="​same";​ "​client6";​ "​client5";​ }
 +                { rank="​same";​ "​PC6";​ "​PC5";​ }
 +                label = "etc. (expandable)";​
 +        }
 +
 +        MC1 [ label="​\rMain Controller",​ fontsize="​14",​ width="​1.70",​ height="​1.00",​ style="​filled",​ fillcolor="​yellow"​ ];
 +
 +        { rank="​same";​ "​MC1";​ "​usbhub";​ }
 +
 +        kb1 -> MC1 [ arrowhead="​open",​ style="​solid",​ label="​PS/​2",​ color="​black"​ ];
 +        ms1 -> MC1 [ arrowhead="​open",​ style="​solid",​ label="​PS/​2",​ color="​black"​ ];
 +        kb2 -> MC1 [ arrowhead="​open",​ style="​solid",​ label="​PS/​2",​ color="​gray"​ ];
 +        ms2 -> MC1 [ arrowhead="​open",​ style="​solid",​ label="​PS/​2",​ color="​gray"​ ];
 +        ​
 +        MC1 -> usbhub [ style="​dotted",​ label="​USB",​ dir="​both"​ ];
 +
 +        MC1 -> client1 [ label="​SPI",​ color="​black"​ ];
 +        MC1 -> client2 [ label="​SPI",​ color="​black"​ ];
 +        MC1 -> client3 [ label="​SPI",​ color="​black"​ ];
 +        MC1 -> client4 [ label="​SPI",​ color="​black"​ ];
 +        MC1 -> client5 [ label="​SPI",​ color="​black"​ ];
 +
 +}
 +</​graphviz>​
 +
 +
 +==== Mögliche SPI Telegramme ====
 +
 +Die hier dokumentierten Telegramme dienen erstmal einer ersten Übersicht und keineswegs der fertigen Implementierung! Änderungen können jederzeit stattfinden!
 +
 +
 +<​register>​
 +register = general control
 +long desc = general control telegram from the master
 +#short desc = 
 +perms = W
 +#addr = 0x0
 +#reset = 0x0
 +length = 24
 +bit range = 7 7
 +bit name = GC
 +bit desc = 0 - No general control command\n1 - GC Command (see CMD)
 +#bit flags = W1C
 +bit range = 6 0
 +bit name = CMD
 +bit desc = 000 0001 (0x01) - GET_KB_LED_STATUS\n000 0010 (0x02) - GET_KB_NUMLOCK_STATUS\n000 0011 (0x03) - GET_KB_ROLL_STATUS\n000 0100 (0x05) - GET_KB_CAPSLOCK_STATUS
 +</​register>​
  
Projektwerkzeuge