Forum: Mikrocontroller und Digitale Elektronik Tastatur: Bus unterbrechen


von Thomas (Gast)


Lesenswert?

Hallo,
ich möchte einen AVR an die Clock und Data Leitung einer Tastatur 
hängen.

Sinn des ganzen er soll über Tastenkombinationen entsprechende Befehle 
ausführen und Statusmeldungen über PS/2 an den PC übertragen.
Wenn gerade keine Statusmeldungen geschickt werden soll der PC normal 
über Tastatur bedienbar sein.


Nun stehe ich vor den Problem das der AVR Daten zum PC schicken soll.
Dazu möchte ich das der AVR einen Clock erzeugt. Damit wird die Tastatur 
aber nicht einverstanden sein...

Wie schalte ich also die Verbindung zwischen Tastatur und den AVR ab?

von Timmo H. (masterfx)


Lesenswert?

Du könntest doch einfach den AVR zwischen Tastatur und PC hängen (also 
in Reihe => Man in the middle) und alles durchreichen was die Tastatur 
macht außer wenn du selbst Daten senden willst.

von Thomas (Gast)


Lesenswert?

doch dafür brauch ich doch 4 interrupt pins oder?

clock und data von tastatur und
clock und data von den pc

oder wie würdest du das bewerkstelligen?

von Klaus W. (mfgkw)


Lesenswert?

Muß data an einen IR-Pin? Es reicht doch, bei clock einen IR
auszulösen und darin mit einem normalen Pin data zu holen, oder
nicht?

von Thomas (Gast)


Lesenswert?

wenn ich es nicht falsch deute kann ja auch mal clk als low sein und 
data high

http://de.wikipedia.org/wiki/PS/2-Schnittstelle#Protokoll

"# Nachdem die Software im PC eine Initialisierung (Grundeinstellung 
aller nötigen Peripherie-Bausteine) vorgenommen hat, wird zunächst Data 
nicht mehr vom PC auf low gezogen. Ist der PC nun bereit zum Empfang, 
wird auch Clock deaktiviert und geht durch den Pullupwiderstand auf 
high."

oder lieg ich da nun falsch?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Thomas schrieb:
> Nun stehe ich vor den Problem das der AVR Daten zum PC schicken soll.
> Dazu möchte ich das der AVR einen Clock erzeugt. Damit wird die Tastatur
> aber nicht einverstanden sein...

Doch, das stört die Tastatur nicht - beide Leitungen sind 
Open-Collector-Leitungen und können daher parallelgeschaltet werden. Du 
musst nur die Ausgänge Deines AVR entsprechend im nachgeahmten 
Open-Collector-Betrieb konfigurieren:

Portpins auf 0, und Datenausgabe durch Umschalten des 
Datenrichtungsregisters.

Bei Eingang wird durch die Pullups 1 (inaktiv) ausgegeben, bei Ausgang 
wird das Signal auf 0 gezogen.

von Thomas (Gast)


Lesenswert?

Rufus leider muss ich gerade eingestehen das ich deinen Post nicht so 
ganz verstehe

insbesondere bei den letzten beiden Zeilen habe ich meine Probleme das 
nachzuvollziehen.

Ich bitte um Nachsicht und hoffe das du mir das etwas einfacher und 
Idioten-sicher erklären kannst?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Also: Die Tastaturschnittstelle verwendet Open-Collector-Treiber, die, 
wenn sie aktiv sind, das Signal auf 0 V herunterziehen. Sind sie nicht 
aktiv, wird das Signal über die vorhandenen Pull-Up-Widerstände auf 
5V-Pegel gehalten.

Der AVR hat keinen Open-Collector-Ausgang, so daß man eigentlich einen 
Open-Collector-Treiberbaustein verwenden müsste, wie z.B. den 74xx05.

Das ist aber nicht nötig, weil man das Verhalten eines 
Open-Collector-Ausganges nachbilden kann.

Der aktive Zustand - Signal auf 0V herunterziehen - ist leicht mit einem 
Port-Pin realisierbar. Der inaktive Zustand - Signal nicht 
herunterziehen - bedeutet nicht, 5V auszugeben, denn dann könnte auch 
kein anderer an der Signalleitung angeschlossener Baustein das Signal 
auf 0V herunterziehen, was einem Kurzschluss gleichkäme.
Vielmehr bedeutet es, einen hochohmigen Zustand zu haben, der das 
Signal nicht beeinflusst.
Ein Portpin aber kann nur 0V oder 5V ausgeben ... es sei denn, man 
schaltet seine Richtung um, so daß er kein Aus-, sondern ein Eingang 
ist. Dann ist er im Sinne des oben geforderten hochohmig.

Und das ist der "Trick". Das Datenregister des Ports initialisierst Du 
mit 0, damit bei aktivem Ausgang das Signal auf 0 V heruntergezogen 
werden kann, und mit dem Datenrichtungsregister schaltest Du zwischen 
Ausgang und Eingang hin und her.

Verständlicher?

von Thomas (Gast)


Lesenswert?

Hallo,
ja ist es ich danke dir

sind zum Parallelschalten des AVR noch Widerstände notwendig? ich denke 
ja nicht oder?

woher weiß die Tastatur das sie nichts zu senden hat wenn der AVR etwas 
sendet?

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.