Hallo
Ich beschäftige mich zur Zeit mit dem Anschluß einer PC-Tastatur an einen AVR. Da Maus und Tastatur die selben Protokolle verwenden kann dir vielleicht dieser Link hilfreich sein:
http://www.marjorie.de/ps2/ps2_protocol.htm
Ich habe das zwar noch nicht selbst ausprobiert, aber einige Stellen in deinem Code scheinen danach nicht ganz richtig zu sein:
Die Wartezeiten erscheinen mir zu kurz. Das LSB kommt zuerst! Start/Stop/Parity wird ignoriert. Das Taktende wird nicht abgewartet. Und schließlich sind die Daten bei fallender Flanke des Taktes (von 1 nach 0) gültig.Code:unsigned char readByte(void){ signed char i; unsigned char daten=0; delay_us(3); //Sensor Zeit lassen um die Daten aus dem Register zu holen for (i=7; i>-1; i--){ while (0==INPUT(clk)); // SCK =0 Sensor bereitet Daten auf fallender Flanke vor ! delay_us(1); //Sensor kurz Zeit lassen if(INPUT(data)==1){ //BIT einlesen daten |= (1<<i); } else{ daten &=~ (1<<i); } } return data; }
Achtung! Auch beim Schreiben gibt die Maus den Takt vor. Der Takteingang am Kontroller muss wohl immer hochohmig sein.
Viel Erfolg.
mic







Zitieren

Lesezeichen