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:
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;
}
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.
Achtung! Auch beim Schreiben gibt die Maus den Takt vor. Der Takteingang am Kontroller muss wohl immer hochohmig sein.
Viel Erfolg.
mic
Lesezeichen