Forum: Mikrocontroller und Digitale Elektronik Tastatur Simulieren mit ATmega 16


von Christian Kaibel (Gast)


Lesenswert?

Hallo,

ich versuche verzweifelt mit einem Atmel Atmega 16(in Assembler, AVR
Studio 4.07) eine Tastatur zu simulieren. Leider habe ich hierzu bisher
keine hilfreichen Tips im Inet gefunden.

WICHTIG: Ich will keine Tastatur an den ATmega hängen und diesen
bedienen, ich will einen ATmega an den Tastaturport hängen und ihn
Eingaben auf dem PC tätigen lassen.

Das PS 2 Protokol habe ich zwar, damit funktioniert es aber nicht.
Wobei ich langsam eher an ein Hardware problem denke. Wenn ich die
signale mit einem Oszi vergleiche, so sind diese fast gleich(habe
hierzu ein Oszi in die Leitung von PC und Tastatur gehängt). Habe dann
lt. den ganzen Infos zu der PS 2 Schnittstelle das Signal nachgebildet,
es stimmt bis auf leichte Zeitunterschied sehr gut. Habe als
Clocksignal ein Signal mit 40us on / 40us off generiert.
Aber sobald den Controller an den PC hänge passiert ganrichts.

Die ganzen Links hier im Forum helfen wir nicht wirklich weiter, habe
schon alle durchgeschaut.

Hat jemand schon erfolgreich eine Tastatur simuliert?

Langt es wenn ich die Scancodes an die Tastatur schicke, oder muss ich
da noch was beachten(kommen z.B. Signale vom PC zurück, die ich
beachten muss)?

Kann ich den Controller problemlos gleichzeitig parallel an der
Tastatur betreiben? Wäre praktisch, da ich keinen Tastatur Umschalter
besitze.

Welchen Schaltungsaufbau benutzt ihr? Geht ihr direkt aus den
Controllerausgängen raus oder nutzt ihr eine Treiberschaltung?


Danke schonmal für eure Hilfe.


mfg
Chris

von Sebastian Wille (Gast)


Lesenswert?

Hi,

parallel dazu hängen müsste gehen. Ist Tri-State.

Vor ca. 1 Jahr gab's darüber mal einen größeren Thread:

http://www.mikrocontroller.net/forum/read-1-9869.html#9911

Sebastian

von Sebastian Wille (Gast)


Lesenswert?

Hi nochmal,

gerade durch Zufall entdeckt:

http://www.atmel.com/dyn/products/app_notes.asp?family_id=607

AVRNOTE313

Ist zwar zum das Keyboard ansprechen, aber vielleicht bringt's auch
was...

Sebastian

von Christian Kaibel (Gast)


Angehängte Dateien:

Lesenswert?

Hi Sebastian,

die anderen Threads hab ich alle schon studiert, is leider nix
passendes dabei. Auch in der Atmel Appnote steht nicht interessantes
für mich drin.

Habs aber grad nochmal probiert und jetzt geht es. Hab wohl was mit den
Pins für Ein und Ausgang verwechselt.


Den Quellcode hab ich mal rangehängt, kannst dir ja mal ankucken.
Sollte problemlos auf alle Atmels übertragbar sein.


Noch ne Frage zum Tri-State:

Ich bin mir nicht sicher wie ich den setzen kann. Kannst du mir da grad
noch kurz ne Assembler Routine aufzeigen?


ich habe den Port als Eingang gesetzt, mit:


clr     temp
out  DDRA,temp


Ist das ausreichend?


Vielen Dank schonmal.


mfg
Chris

von Sebastian Wille (Gast)


Lesenswert?

Hi,

soweit ich weiß, bedeutet Tri-State, daß kein definierter Zustand
herrschen muß.

Bei I2C z.B. sind die Pins immer HIGH (über einen PullUp-Widerstand)
bis ein Gerät den Pin auf LOW zieht.

Bei Tri-State gibt es keine PullUp-Widerstände.

Die Konfiguration als Eingang sollte also ausreichend sein.

Sebastian

von Christian Kaibel (Gast)


Lesenswert?

Hi Sebastian,

danke für die Hilfe, es funktioniert ganz gut mit dem Tastatur
emulieren.

Nun wollte ich eine Maus simulieren. Das Grundgerüst ist ja mit dem
Programm schon gemacht. Dachte ich mir zumindest, aber leider klappt
das garnicht. Bin am verzweifeln.

Habe mal im INet gesucht und n Projekt gefunden:

http://panda.cs.ndsu.nodak.edu/%7Eachapwes/PICmicro/code/Projects/mouse/ps2mouse.html

Die haben dort mit nem Pic ne Maus nachgebaut, wo man grad mit 6
Eingangen(hoch, runter, links, rechts, Taste 1 und 2) ne Maus emulieren
kann. Werde das dann einfach ansteuern.

Hoffe zwar das ich das noch hinkriege, sieht aber leider nicht danach
aus :-(


mfg
Chris

von Sebastian Wille (Gast)


Lesenswert?

Hi Chris,

muß man eine PS/2-Maus nicht erst initializieren?

Eine Tastatur an den Rechner - auch am Betrieb - ranzuklemmen geht
meistens, aber selten bei 'ner Maus! Die wird wohl irgendwann
initializiert und muß dann auch wahrscheinlich eine passende Antwort an
den Rechner geben.

Sebastian

von Christian Kaibel (Gast)


Lesenswert?

Hi Sebastian,

die Initialisierung macht die Maus die parallel zu meiner Schaltung
dranhängt. Zum Glück, denn sonst würde sich das ganze ziemlich
verkomplizieren.

Meine ganzen Probleme waren aber alle nur immer Timingprobleme, das
ganze funktioniert mittlerweile ganz gut mit dem PS2keyboard File das
ich oben schonmal angehängt habe.
Das einzige was man dort ändern muss is die Parity Berechnung die beim
senden von 0x00 falsch ist. Dann klappts auch mit der Simulierung einer
Maus.

Vielen Dank nochmal an dich, hast mir sehr geholfen :-)

mfg
Chris

PS: N gutes neues Jahr

von Sebastian Wille (Gast)


Lesenswert?

Hi Chris,

kein Problem! Schön, daß es funktioniert! :-)

Wenn ich mal viel Zeit hab', werd' ich das ganzr auch mal probieren.
Momentan kann ich nur von einer PS/2-Tastatur einlesen.

Sebastian

von kart (Gast)


Lesenswert?

Allso were cool wen du mir auch mal die das Pogramm schiken würdest
womit man die Tastertur simuliert.
Wen ich das richtik verstehe kan man da also sagen f1 ka z.B. 20sekunden
drücken dan f2 3 sekunden drücken und dan 2 drücken und dan wieder 3 
drücken.
Were ganz praktisch.
Wens alerdings nit so ist könntest mir ja füleicht mal helfen sowas
zu pogramieren.

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.