mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Tastatur: Bus unterbrechen


Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.