Hallo

Inzwischen funktioniert es mit einer Tastatur ganz gut:

Code:
// PS/2-Schnittstelle am ATMega32                                  1.4.2009 mic
// RP6 liest AT-Tastatur am I2C-Port

// http://www.marjorie.de/ps2/ps2_protocol.htm
// http://www.beyondlogic.org/keyboard/keybrd.htm

#include "RP6RobotBaseLib.h"

uint8_t i, scancode;

int main(void)
{
	initRobotBase();
	DDRC &= ~3; //SDA und SCL sind Eingänge
	PORTC  &= ~3; // ohne interne PullUps (extern sind 4k7 PullUps angeschlossen)

	while(1)
	{
		i=0;
		scancode=0;
		while(PINC & 1); // Warten auf Startbit
		while(!(PINC & 1)); // Ende Startbit
		do
		{
		   while(PINC & 1); // Tastatur bereitet die Daten vor
		   if(PINC & 2) scancode |= (1<<i); // Bit einlesen
		   i++;
		   while(!(PINC & 1)); // gelesen, auf nächstes Bit warten
		}while(i<8);

		while(PINC & 1); // Warten auf Paritybit
		while(!(PINC & 1)); // Ende Paritybit
		while(PINC & 1); // Warten auf Stopbit
		while(!(PINC & 1)); // Ende Stopbit

		writeInteger(scancode, 16);
		writeChar('\n');
	}
	return(0);
}
Mit der Maus funktioniert das seltsamerweise nicht. Dein Programm habe ich nicht getestet. Ich bin aber noch dran.

Gruß

mic