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
Lesezeichen