Hallo allerseits, irgendwie bekomme ich es einfach nicht gebacken ein Zeichen vom AVR an den PC über PS2 zu schicken. Gegooglelt habe ich schon ausführlich und auch diverste Threads hier zu diesem Thema durchgelesen. Ich bin der Ansicht, eigentlich das PS2 Protokoll so ziemlich verstanden zu haben und das Signal sieht mit dem Oszilloskop eigentlich ganz gut aus (soweit ich das beurteilen kann). Aber irgendwie klappt es leider nicht. Sendet die Tastatur vielleicht irgendwelche "versteckten" befehle? Ich habe meinen Source Code mal als Anhang mitgeschickt. Vielen Dank für Eure Hilfe Fabian
Hi, schau Dir mal das an: http://www.computer-engineering.org/ Ich würde einfach einen AVR mit einer Tastatur, und dem Computer verbinden. Als erstes würde ich dann die Daten von der Tastatur nur weiterreichen. Wenn das klappt würde ich selber welche senden. So kommst Du der Sache, schritt für schritt, näher. Gruß, Feadi
Sowas habe ich gerade realisiert und es funktioniert prächtig. :) Was wäre dir der Code wert? ;)
@Feadi: das mit dem direkt verbinden habe ich auch schon versucht, allerdings habe ich Schwierigkeiten, das Signal darzustellen, da mein einfachs Oszilloskop nichts speichern kann. @Ich: nen Blick hinein wäre er mir schon wert ;) Oder wo ist mein Haken?
ach ja, ich hatte vergessen zu erwähnen, dass ich, solange die Tastatur direkt angeschlossen war, das Senden mit meiner Funktion geklappt hat. Deshalb vermute ich, dass die Tastatur oder der PC etwas dazwischen macht, das ich nicht sehen kann... außerdem ist es ein Notebook mit einem PS/2 Anschluss, wo auch ne Maus reinpasst. Macht das ein Unterschied?
Das Notebook macht sicher keinen Unterschied. Aber wenn ich mich recht erinnere so tauscht der MCS48 im PC und die Tastatur beim Anschluss verschiedene Einstellungssequenzen aus. Z.B damit die Tastatur weiss ob sie im XT oder AT-Mode arbeiten soll. Ich koennte mir vorstellen das ein PC einfach den Tastaturport abhaengt wenn du das nicht 100% richtig emulierst. Olaf
Wichtig ist vor allem, keine ungültigen Codes zu senden, da dies der Tastaturprozessor mit willkürlichem Aufhängen quittiert oder wilde Tastaturkombinationen einstellt, aus denen man nicht mehr heraus kommt. Die Clock-Rate sollte zwischen 10kHz und 16kHz liegen. Die Fehlerkorrektur muß auch penibelst Protokoll-konform sein. Nützliche Hinweise auch auf www.marjorie.de . Ansonsten ist die PS2-Schnittstelle recht harmlos und umgänglich.
Danke erst mal für die Hilfe bisher! Doch noch eine Frage: was fürt die Tastatur genau für Initialisierungen aus? Ich habe gehört, dass sie als erstes 0xAA sendet, doch als ich das versucht hatte, kam keine Antwort vom PC. Er hat also data nicht auf LOW gezogen. Oder muss ich den Befehl öfters hintereinander senden? Das hab ich mal versucht, indem ich ne Schleife gemacht hab. Dann wollte der PC irgendwann auch mal was antworten, hat also data auf LOW gezogen. Aber nicht bei jedem senden. Leider kann mein Oszilloskop nicht darstellen, was der PC da senden wollte. Eigentlich müsste doch einmal reichen, solange data und clock HIGH sind. Irgendwie sieht das alles so einfach aus, wenn mans sich anschaut, aber ich kriegs leider einfach ned gebacken :( Ich hoffe ihr habt noch ein bisschen Geduld mit mir ;)
Also wenn Du mit Initialisierung meinst vor jedem Tastendruck, das macht meine Tastatur nicht. Lass das mal weg. Wenn ich eine Taste drücke, wird der Code der Taste gesendet solange bis ich sie loslasse, dann wird einmal der Break-Code gesendet und dann nochmal der Code der Taste. Wenn ich eine Taste also nur ganz kurz drücke (antippe) werden 3 Codes à 11 Bit übertragen (jeweils 1 Startbit + 8 Datenbits + Parity-Bit + Stopbit = 11 Bit).
Hi, wenn es mit angeschlossener Tastatur funktioniert, würde ich darauf Tippen das Du keine PullUP's an dem µC hast. Gruß, Feadi
Vieleicht muss deine "Tastatur" auch angeschlossen sein bevor du den PC hochfährst manche Baords haben Probleme mit Hotswap :)
Hallo, so, ich habe das Problem jetzt endlich gelöst! Es lag zum einen an meiner fehlerhaften Initialisierung, ich habe es jetzt geschafft über die Soundkarte vom PC ein Oszillogramm aufzunehmen und so genau die Initialisierung zu beobachten. Meine Empfangsmethode vom PC ging weiterhin nicht, weil mein AVR viel zu lange brauchte (Trotz 8Mhz) um meinen Code abzuarbeiten, bevor ner nächste Interrupt durch den PC ausgelöst wurde. Mit Polling habe ich das jetzt endlich gelöst. Danke für eure Hilfe! PS: @admin: aus mir schleierhaften Gründen (vielleicht F5 zum Aktualisieren?) sind ein paar meiner Beiträge mehrmals gepostet worden. Bitte die doppelten löschen. Danke.
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.