PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tastensanschluss mit wennig Leitungen ?



Roberto
27.01.2006, 11:25
Hallo

Ich suche eine Möglichkeit, 10 Tasten an einen Mega8 mit so wennig wie möglichen Leitungen anszuschliessen (z.B. mit zwei)

(Mega8 und zu wennig Leitungen ;-) )

Hat jemand da schom mal sowas gemacht ?

Derzeit habe ich für 10 Tasten eine Matrix mit 4*3 über 7 Leitungen

Am überlegen bin ich, ob es vielleicht dazu auf Basis von einem I2C Chip ,was gibt?!
Oder vielleicht nur mit zwei Schieberregister ?!
Von jeder Taste dann noch eine Diode zum INT0 Eingang, um zu reagieren, wenn eine Taste gedrückt wurde..

Hat jemand schon mal das Gleich Problem gehabt ?!
Ideen?
:-)

l.G. Roberto

SprinterSB
27.01.2006, 12:00
- Portexpander
-- I2C (2 Ports)
-- SPI (2-3 Ports)
-- selbstgebaut mit Input-Latches (SPI-ähnlich, etwa mit 74*589, 74*597) (2-3 Ports)

-Mit unterschiedlichen Widerständen/Spannungsteilern an einen ADC-Port (1 Port). Über ein Diodennetz an extern INT oder Analog-Komparator für einen Interrupt.
-Über zwei Prioritätsencoder à la 74*148 (4Ports)

Zusätzlich dazu kommt noch ein Port, wenn du auf Tastendruck einen Interrupt auslösen willst (eigentlich unnötig).

Roberto
27.01.2006, 14:45
Hallo SprinterSB

Danke für die Antwort :-)

Kennst Du vielleicht eine Bezeichnung für einen I2C_Chip der da geeignet
wäre? (Den man vielelicht auch bei Conrad bekommt ;-) )

Ratber
27.01.2006, 17:21
Klar

PCF8574.

Die Tasten kommen in einer 4x4 Matrix drann.

Bei MCS gibts die passende Lib dafür.(I2X-LCD übrigens ebenfalls)

Ich nutze das schon seit....keine ahnung.Etliche Jahre.

Roberto
27.01.2006, 20:13
Hallo Ratgeber

Danke für den Tip :-)


Wegen der Lib.
Ist das vielleicht das hier ?
http://www.mcselec.com/index.php?option=com_content&task=view&id=82&Itemid=57

Ratber
27.01.2006, 20:21
Je genau diese waren gemeint

Roberto
28.01.2006, 00:09
Ich schwanke jetzt noch ;-)

Was spricht eigentlich gegen einen Tiny als I2C Slave ?
Geht das ?
Kann eigentlich ein PCF8574 (oder ein Tiny als I2C-Slave) einen Mega8 (I2C-Master),vom Sleep aufwecken ? (über I2C)

Auf der anderen Seite, bin ich am überlegen, ob ich nicht gleich einen Mega32 nehmen soll ?...?..?
Beim Mega32 hätte ich zumindest keine Probleme mit der Grenze von 8kB Speicher..

Ratber
28.01.2006, 00:33
Was gegen nen Tiny spricht ist das du den Slave vollständig in Software machen mußt was ihn ausbremst.
Die Buskomunikation wartet nicht wenn er mal nicht kann.


Dafür gibt es zb. die Lib von Bascom.

Linux hat da auch was fertig gemacht.
Probiers mal.

Meissner
28.01.2006, 21:08
Hallo Roberto,

versuche es einfach mit ein paar Wiederständen als Spannungsteiler an jedem Taster.
Es hat dann jede Taste einen anderen Spannungswert. Wenn Du die Leitung dann an den AD-Wandler des Mikrokontrollers anschließt kannt Du die Taste denke ich auseinander halten. Der Rest ist Softwaresache.
Mit diese Lösung brauchst Du eigentlich nur eine Leitung.
Habe es zwar nicht ausprobiert müsste aber funktionieren.

Gruß
Marius Meissner

Ratber
28.01.2006, 23:00
Ja das geht natürlich auch und ist recht Simpel aber du muß dann regelmäßig abfragen um Tastendrücke mitzubekommen.
Nur mal so für den Hinterkopf.

Die I2C Methode hängt am Bus und liefert auch einen Interrupt.

Man muß also sehen was Programtechnisch gebraucht wird.

Roberto
29.01.2006, 03:37
Hallo Marius

Ja das dachte ich mir auch schon :-)
Die Tasten sollten aber absolut sicher schalten und auch unter Minus Temperaturen.
Da dachte ich mir, dass das mit dem AD-Wandler vielleicht doch ein bisschen zu unsicher wird..

Hallo Ratgeber.

Gut zu wissen, dass mit dem I2C Interupt..
Ich werde es aber mal mit dem Mega32er probieren.
Vom Preis kommt sich's aufs gleiche raus als mit Mega8 und I2C Expander. (dafür habe ich mehr Speicher)

Für die 10 Tasten dachte ich da jetzt an meine 3 Spalten und 4 Zeilen System.
Von den 4 Zeilen würde ich dann mit (4)Dioden auf den INT0 gehen, damit er bei Tastendruck aus dem Sleep aufwacht.

Lunarman
29.01.2006, 09:11
Tach,
der Asuro nutzt ja auch dieses Widerstandssystem, nur - es funzt net vernünftig, weil die Widerstände einfach bei ihm vieeel zu große Schwankungen haben. Also wenn du das machst, bist du eigentlich ganz gut dran, wenn du vernünftige Widerstände nimmst.

Ratber
29.01.2006, 11:56
@Roberto



Für die 10 Tasten dachte ich da jetzt an meine 3 Spalten und 4 Zeilen System.
Von den 4 Zeilen würde ich dann mit (4)Dioden auf den INT0 gehen, damit er bei Tastendruck aus dem Sleep aufwacht.

Yo,größeren Controller nehmen ist natürlich auch ne Lösung :wink: