Daten von PS2 auslesen

OP #978698
Lesenswert?
• ▲
▼
Dieser Code sollte eine PS2 Tastatur auslesen, was aber noch nicht wie 
gewünscht funktioniert.
Statt 01001010001 Für die Leertaste bekomme ich 11111010001.
Ich hoffe dass der Code ausreichend kommentiert ist.
Zur Funktionsweise

Auf ne Fallende Flanke warten, Bit lesen und setzen, auf die steigende 
Flanke warten.

Was mache ich falsch.

PS: Einen Interrupt pin will ich nicht verwenden.

EDITH: So falsch kann mein Algorithmus gar nicht sein, denn wenn ich die 
Bits in ein ByteArray stopf, dann gehts
1
  unsigned char bits[11];
2
  unsigned char i = 0;
3
  while(i < 11) { //11Bits (Start, 8xDaten, Parity, Stop)
4
    while(get_clock() == 1) //warten auf fallende Flanke
5
      ;
6
    bits[i] = get_data();
7
    while(get_clock() == 0) //waren auf steigende Flanke
8
      ;
9
    i++;
10
  }
Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite #979141
Lesenswert?
• ▲
▼
> Statt 01001010001 Für die Leertaste bekomme ich 11111010001.
Sieht aus wie wenn das Timing knapp verletzt wird...

Aus http://www.marjorie.de/ps2/ps2_protocol.htm:
Abbildung 2: Übertragung vom Eingabegerät zum Host. Die Datenleitung 
ändert ihren Zustand wenn die Clockleitung High ist. Daten sind gültig, 
wenn Clock Low ist.

Probiers doch mal mit einer etwas anderen Logik:
Daten einlesen solange Clock low ist.

So etwa:
1
  unsigned char bits[11];
2
  unsigned char i = 0;
3
  while(i < 11) { //11Bits (Start, 8xDaten, Parity, Stop)
4
    while(get_clock() == 1) //warten auf fallende Flanke
5
      ;
6
    while(get_clock() == 0) //waren auf steigende Flanke
7
      bits[i] = get_data();
8
    i++;
9
  }

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.