Hi zusammen,
ich weiss der Beitrag ist schon etwas älter... Ich stand vor dem selben
Problem wie Markus, allerdings habe ich eine Lösung gefunden wie man die
SAMWELL-Tastatur an einem 8-bit Port betreiben kann. Die Lösung ist
eigentlich ganz einfach. Man muss Pin 2 mit Pin 12 verbinden. Jetzt
wird sich der ein oder andere Fragen, wie das helfen soll? ;-)
Oben hat ja jemand gesagt die Tastatur ist als 2x7 angelegt. Das ist
natürlich nicht so ganz richtig. Genau genommen brauchen wir 1x7 und
1x5-Eingangspins.
Jemand meinte man könnte das Multiplexen. Stimmt!
Der Witz beim Multiplexen ist allerdings, dass man die
Ausgangsleitungen, wenn sie nicht aktiv sind durchaus auch als Eingang
benutzen kann! Damit kann man theoretisch 8x7 Kombinationen mit einem
Port darstellen, wenn man mal die Symmetrien ausser Acht lässt.
Das ganze bedeutet nun man nimmt sich zwei beliebige Port-Pins die
abwechselnd "aktiv" sind. Dabei bedeutet "aktiv", dass er als
Ausgang geschaltet und mit LOW-Level versehn wird. Die jeweils anderen
7 Pins des Ports werden als Eingang konfiguriert. (alle Port-Pins sind
noch mit Pullups auf HIGH gezogen) So, jetzt haben wir zwei Phasen bei
dem Multiplexen. Die Erste für die Zeichen 0,2,4,6,8, C hoch und C
runter und bei der zweiten Phase 1,3,5,7,9. (sie auch die Tabelle von
Markus!)
Nun zur Beschaltung:
RB0 <- 6. Pin
RB1 <- 7. Pin
RB2 <- 8. Pin
RB3 <- 9. Pin
RB4 <- 10. Pin
RB5 <- 11. Pin
RB6 <-> 2. Pin & 12. Pin
RB7 <-> 1. Pin
Und noch Pin 2 mit Pin 12 der Tastatur verbinden, damit lenken wir die
Ausgabe von Pin 12 auf Pin 2 um.
"<-" bedeutet der Portpin wird als Eingang benutzt und "<->"
bedeutet je nach Multiplex-Phase wird der Pin als ein oder Ausgang
benutzt. "->" wäre also ein Ausgang.
Damits etwas deutlicher wird, hier die beiden Phasen mal getrennt:
Multiplex Phase 1:
RB0 <- Taste 0
RB1 <- Taste 2
RB2 <- Taste 4
RB3 <- Taste 6
RB4 <- Taste 8
RB5 <- Cursor runter
RB6 <- Cursor hoch
RB7 -> (LOW-Level)
Multiplex Phase 2:
RB0 <- Taste 1
RB1 <- Taste 3
RB2 <- Taste 5
RB3 <- Taste 7
RB4 <- Taste 9
RB5 <- (gibts nicht)
RB6 -> (LOW-Level)
RB7 <- Cursor hoch
Also als Beispiel:
Wenn in Phase 2 an RB3 LOW anliegt wir die Taste 7 gedrückt,
und wenn man in Phase 1 an RB6 LOW hat, die Taste "Cursor hoch".
Für die Auswertung selbst reicht es RB0-5 auszuwerten, dass man in
Phase2 an RB7 den "Cursor hoch" sehen kann ist nur ein
Nebeneffekt...
Und weil wir gerade bei Nebeneffekten sind. Die "Cursor hoch"-Taste
darf nicht zusammen mit einer anderen Taste zusammen gedrückt werden,
sonst wäre das schlecht für das Ergebnis, wenn man "Cursor hoch"
drückt ist RB6&7 auf LOW und man kann da zB. die 0 nicht von der 1
unterscheiden...
Gruß,
Jens
PS: hoffentlich hat das jemand verstanden. hihi