Hallo Leute,
ich stehe gerade mal wieder auf dem Schlauch.
Folgendes Problem:
Ich habe ein 3x4-KeyPad (membrane), entsprechend 4 Reihen und 3 Spalten.
Um die Pins auf dem µC zu sparen, habe ich diesen an einen I2C IC
angeschlossen (PCF8574AP).
Das Auslesen des ICs ist kein Problem, alles wird über den I2C Bus
richtig übertragen.
Schließe ich nun das KeyPad an, bekomme ich keine Signale an den
richtigen Pins. Ich habe schon im INet einige Beschaltungen angeschaut
und ausprobiert und auch selber einige ausprobiert, aber irgendwie habe
entweder keine Signale oder die sind an den ganzen Reihen oder Spalten
gleich.
1 2 3
4 5 6
7 8 9
* 0 #
z.B. 1, 2 oder 3 liefern am Bus 0x32.
Übersehe ich da was oder mache ich das gänzlich falsch?
Bin für jeden Tipp dankbar.
Gruß
Hallo Sergey,
sollte nicht das Kaypad, wie auf dem angehängtem Schema
funktionieren, d.h. Du musst das Kaypad mit den Outputs
des MC's aktiv ansteuern, um zu sehen, welche Leitung
das Signal, durch den entsprechenden Tastendruck zurückliefert.
Gruß
Markus
DL8MBY
Sergej schrieb:> Kann es sein das es verschiedene Pads gibt, mit anderen Beschaltung.>
Natürlich.
Nur weil im PC Bereich jede Steckkarte und jeder Stecker normiert ist
und nur in die dafür vorgesehene Buchse passt, bedeutet das nicht, das
das immer und überall so ist. Ganz im Gegenteil ist das sogar meistens
nicht so. Die PC Komponenten Hersteller waren es nur leid, dauernd mit
Garantie-Ansprüchen konfrontiert zu werden, nur weil irgendein
Hobby-Bastler wieder mal das Telefon an der Ethernet Buchse angesteckt
hat.
Wenn du dich also strikt an einen Schaltplan hängst, aber ganz andere
Bauteile hast, dann ist es eine gute Idee, im Vorfeld zu überprüfen, ob
die Pinbelegung tatsächlich 1:1 identisch ist.
Bei einm Keypad ist das ja auch kein grosses Problem und mit einem
Ohmmeter schnell gemacht.
@ Markus W.
Mit "j" bitte ;-)
Werde ich mal ausprobieren.
@Karl Heinz
Das Durchtesten der Leitungen ist schon längst gemacht, das ist ja auch
der Grund, wieso ich mich im Forum erkundigen will. Mit dem Multimeter
ist auch alles logisch, nur wenn ich es beschalte ist, ist es irgendwie
nicht mehr.
@Selfcoder
Die Beschaltung ist ein höher gewesen.
Gruß
Sergej schrieb:> Das Auslesen des ICs ist kein Problem, alles wird über den I2C Bus> richtig übertragen.
Das reicht nicht. Ein Matrix-KB muss aktiv angesteuert werden, d.h. du
musst eine Spalte auswählen mit Outputbefehlen, erst dann kannst du
einlesen welche Taste in dieser Spalte gedrückt ist.
Georg
Eigentlich steht alles zum PCF8574 schon im Datenblatt. Der Port ist ein
Quasibiderektionaler 8-Bit Port und das Schreiben eines Ausgangs auf
high aktiviert für eine I2C Clock Dauer einen starken Pullup.
Du schreibt also nach dem Adressbyte die gewünschte Spalte auf low und
liest mit dem nächten I2C Kommando den Port und maskierst dir die Zeilen
da raus.
Der PCF gibt dir nicht direkt irgendwelche gedrückten Tasten aus, das
Entheddern der Matrix muss dein Steurrechner machen.
Es hängt vom Schaltplan ab.
D.h. die Zuordnung von D7..0 an Row3..0 und Col2..0.
Z.B. erst 0x70 hinschicken, rücklesen, dann 0x0F hinschicken, rücklesen.
Und dann die beiden Bytes auswerten wie bei direktem Anschluß.
Sergej schrieb:> @Selfcoder>> Die Beschaltung ist ein höher gewesen.
Das kann gar nicht sein. Du hast da einen Link zu einer Beschaltung
gepostet, die Du irgendwo im Internet gefunden hast. Das hat garantiert
nichts mit Deiner Schaltung zu tun, da Du ja einen PCF8574 benutzt.
Das richtige Schlagwort ist schon von Georg gefallen.
Das in der Schaltung statt PCF8574 das Wort MCU steht tut der Sache
keinen Abbruch. Und das war ja auch ein Beispiel wie ich meine
Komponente beschaltet habe ;)
ROW über Widerstände (in meinem Fall 10kOhm) an VCC und an den IC
und COL direkt an den IC
Sergej schrieb:> Und das war ja auch ein Beispiel wie ich meine> Komponente beschaltet habe ;)
Mich interessiert kein Beispiel, wie Du es beschaltet haben könntest,
sondern wie Du es wirklich beschaltet hast.
Aber gut es funktioniert jetzt wunderbar.
Ich dachte man bräuchte die Sachen nur beschalten und regelmäßig den Bus
abfragen, aber nix da.
Danke für die Tips