Hallo Besucher, der Thread wurde 3,2k mal aufgerufen und enthält 7 Antworten

letzter Beitrag von CrazyIcecap am

Selbstbau PS/2 Tastatur (nicht nur) für DTV

  • Hi,
    angeregt durch diesen Post, hab ich mich mal drangemacht und eine kleine Selbstbau-PS/2-Tastatur mit einem Atmel ATmega168 gebastelt. Ich hatte sowas ähnliches schon einmal gemacht, und konnte viel Code wiederverwenden, so viel Arbeit war's somit gar nicht.


    Man kann bis zu 32 Tasten in einer 4x8 Matrix anschließen, man kann Tasten doppelt belegen, indem man eine Taste als Umschalttaste benutzt (es sollten sogar mehrere Umschalttasten gehen). Die einzelnen Tasten simulieren eine einzelne Tastatur-Taste oder ein ganzes Makro.
    Zum Anpassen der Tastenbelegung muss man die Tabellen in main.c editieren und neu kompilieren. Wer mit 8 Tasten auskommt kann sich die Dioden sparen und die Taster gegen Masse schalten lassen (die ROWn Ausgänge bleiben dann frei).


    Ich hab's mit einem ATmega168PA getestet (lag gerade rum), sollte aber auch mit 168, 168A und 168PA gehen.


    Gruß,
    twinpeaks

  • Jepp, Mega16 und 32 gehen auch. Kannst Du jetzt im makefile einstellen.
    Der Mega168 ist im schmalen DIP-28 Gehäuse aber viel handlicher (dafür hat der Mega32 mehr I/Os).


    Anschluss genauso wie im obigen Schaltbild, alles an die gleichen Ports. Fusebytes für M16/M32: High=D1, Low=A4 (int. 8 MHz Oszillator).


    EDIT: Der M32 hat noch den ganzen PORTA frei, wenn Du mehr als 8, aber nicht mehr als 16 Taster benötigst, könnte man auf die Tastaturmatrix verzichten und die bis zu 16 Taster einfach an PORTA und PORTB hängen. Spart Dir die Dioden.


    EDIT2: Zip-File ausgetauscht. Mega8 sollte auch gehen.

  • Ja, mehrere Tasten gleichzeitig geht. Damit das aber in einer Matrix (elektrisch) funktioniert, braucht man für jede Taste eine Diode, um auszuschließen, dass sich Tasten gegenseitig beeinflussen.
    Firmwaretechnisch wird einfach beim Drücken ein Make- und beim Loslassen ein Break-Code gesendet, egal wie viele Tasten gleichzeitig gedrückt werden. Das dann auszuwerten ist Aufgabe des Host-Rechners (hier z.B. des DTVs), kann natürlich sein, dass es dort ein Limit gibt.