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?
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.
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?
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?
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?
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.
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?
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.