Forum: Mikrocontroller und Digitale Elektronik Fremd Matrix Abfragen


von vom_Fremd-PC_als_Gast (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

wer kann mir mal helfen, ich komme leider mit der electronic nicht 
weiter.
Ich habe mir eine Regel/Steuer Platte ausgebaut auf der bereits 
brauchbare Matrixen und Bausteine verbaut sind auch sind darauf schon 
Feststelltaster und gewönliche Taster verbaut und ich will die Fremd 
Matrix mit einem µC abfragen.

Ich habe einen alten Schaltplan auch dazu ausgegraben, das stimmt auch 
soweit mit der alten Platte überein.

Gegeben sind mir an einem Anschluss 6 pins.

1 0V DIG
2 +10V
3 AC CLK
4 AC DAT
5 AC RW
6 0V ANA

Ich würde das alte Board jetzt mit + 10 Volt versorgen über den PIN 2 
der dann auf ein Festspannungsregler auf 5 V geht. Masse würde ich jetzt 
auf Pin 1 davon legen.

Bleiben noch vier Pins. 3,4,5,6

Wie kann ich die Fremdmatrix so auslesen dass ich weiss welcher Taster 
Gedrückt ist oder nicht?

Ich wäre es jetzt so angegangen, aus dem Bauch heraus.
CLK wäre mein Takt, DAT wäre mein X - also welche Daten ich nach meiner 
Flanke bekomme und auslesen will bzw welche Datenregister ich setze , RW 
wäre mein Read oder Write für das setzen der einzelnen Statuse zum 
abfragen der Daten.

Wie ich das ganze anfangen soll, weiss ich leider im Moment gar nicht.
Eventuell so:

CLK ( high oder low ? )
Setzen des RW Status auf Write ( high oder low ? )
Register 1 steht jetzt bereit zum auslesen
Setzen des RW Status auf Read ( high oder low ? )
Daten empfangen Register 1
CLK ( nächste Flanke )
und alles wiederholen ( wie oft )

Mir machen die 74LS32 / 74LS38 Kopfzerbrechen ob das alles so einfach 
geht wie es mir in den Sinn kommt. Die Abfrage müsste das ja dann auch 
noch berücksichtigen, dass es die nächste Matrix ausliest.

Kann mir wer einen Tip geben wie ich das mit einem µC auslesen kann?
Also welche Taster eingerastet sind / gedrückt sind?

Ich stelle mir die Frage, ob es nicht schneller geht, das ganze doch 
selber aufzubauen - ich würde es zumindest mit der alten Platte 
probieren wollen - ihr eine Chance geben.

Ich würde einen PIC18 nehmen.

Danke.

von vom_Fremd-PC_als_Gast (Gast)


Lesenswert?

Schade - keiner einen Tip auf Lager?
Ist das zu schwer oder zu einfach?
;-)

von Route_66 H. (route_66)


Lesenswert?

vom_Fremd-PC_als_Gast schrieb:
> Ist das zu schwer oder zu einfach?

Hallo!
Das ist zu einfach. Das besteht ja nur aus simplen 
Standard-Logik-Bausteinen. Deren Funktion kann jeder im Datenblatt 
nachlesen. Wenn Du DAS nicht einmal kannst, wird es sehr schwer, Dir das 
hier zu beschreiben.

von MaWin (Gast)


Lesenswert?

Die Tastatur besteht aus 16 Reihen Y0 bis Y15 a 8 Tasten X0=a bis X7=h

So bestimmst du, welche Tasten a-h in Reihe 0 gedrückt sind

CLK 00001010101010101010
R/W 00011111111111111111
DAT 00ZZZZZZZZZZZZZZZZZZ
       a b c d e f g h

und das für jede nächste Reihe

CLK 01001010101010101010
R/W 00011111111111111111
DAT ZZZZZZZZZZZZZZZZZZZZ
        a b c d e f g h

DAT Z heisst den Pin schaltest du als Eingang,
er ist 0 wenn die Taste gerade gedrückt ist.

Feststelltasten musst du in Software speichern.

Das ist aber schon simpelste Programmierung einer einfachen 
Logikschaltung.

von vom_Fremd-PC_als_Gast (Gast)


Lesenswert?

Route 66 schrieb:
> vom_Fremd-PC_als_Gast schrieb:
>> Ist das zu schwer oder zu einfach?
>
> Hallo!
> Das ist zu einfach. Das besteht ja nur aus simplen
> Standard-Logik-Bausteinen. Deren Funktion kann jeder im Datenblatt
> nachlesen. Wenn Du DAS nicht einmal kannst, wird es sehr schwer, Dir das
> hier zu beschreiben.

Danke!
Wenigstens eine ehrliche Antwort!
Ich hab die Datenblätter jetzt. Mir ist nur nicht klar, wie ich die 
Abfrage Routine überhaubt starten soll, beim 4051 Mux/Demuxer lasse ich 
eine Schleife durchlaufen und erhalte den Stand der X Data der einzelnen 
8 Channel:

r0= count & 0x01
r1= (count >> 1 ) & 0x01
r2= (count >> 2 ) & 0x01
PORTB.0 = r0
PORTB.1 = r1
PORTB.2 = r2

myXData=PORTA.4

Aber hier denke ich muss ich vermutlich kleiner anfangen.
Mit den Anschlüssen CLK DATA und RW habe ich so in dieser Form noch 
nicht zu tun gehabt. Wahrscheinlich liegts am Umdenken/Umbenennen. Hätte 
halt einfach nur die Pins an einen PIC verdrahtet und ein simples 
Abfragen mal gestartet was sich tut - aber ich weiss nicht wie ich 
anfangen soll. Es würde mir ein Denkanstoss reichen.
Danke!

von vom_Fremd-PC_als_Gast (Gast)


Angehängte Dateien:

Lesenswert?

MaWin schrieb:
> Die Tastatur besteht aus 16 Reihen Y0 bis Y15 a 8 Tasten X0=a bis X7=h
>
> So bestimmst du, welche Tasten a-h in Reihe 0 gedrückt sind
>
> CLK 00001010101010101010
> R/W 00011111111111111111
> DAT 00ZZZZZZZZZZZZZZZZZZ
>        a b c d e f g h
>
> und das für jede nächste Reihe
>
> CLK 01001010101010101010
> R/W 00011111111111111111
> DAT ZZZZZZZZZZZZZZZZZZZZ
>         a b c d e f g h
>
> DAT Z heisst den Pin schaltest du als Eingang,
> er ist 0 wenn die Taste gerade gedrückt ist.
>
> Feststelltasten musst du in Software speichern.

Hi!

Danke MaWin für Deine Unterstützung!
Sorry das ich erst jetzt reply, Habe das einmal umgesetzt.
Daten kommen auch rein, die Feststelltaster funktionieren soweit. ( 
Reihe 9 + 10 a-b-c-d-e-f-g und eigentlich h )

Fällt Dir oder jemand anderem auf den ersten Blick eine 
unregelmässigkeit auf wenn man das Bild anschaust?
Die erste Reihe (0)  sieht sauber aus.
Die 15 anderen Reihen dann für den Part h sind immer -0-

Btw. Der 74LS165 verwaltet die X0..X7.
Es sieht so aus als wäre der X7 "fehlerhaft". Das würde die -0- in den 
Reihen auf h erklären? Der nächste Schrist, den einmal nachzumessen.
Hatt sich eventuell in der Abfrage Matrix für die Reihen 1-15 eine 
Verschiebung eingeschlichen?

>
> Das ist aber schon simpelste Programmierung einer einfachen
> Logikschaltung.

Das sagst Du ;-). Kompliment! Auf den ersten Blick den Algo formiert.
Du hast mir sehr damit geholfen. Das Codeumsetzen war dann nur noch ein 
verschachteln.
Sag mal, gäbe es ein Tool, das Deine Tabelle in einen Codeschnipsel 
umwandelt? Das wäre doch mal was.

Eins hab ich nicht hinbekommen, ich hätte sehr gerne genau den Ablauf so 
wie in der Tabelle aufgeführt überführt, aber ich habe in dem Flowchart 
leider nicht explicit den PortPin als Eingang deklarieren können (Bug), 
daher hab ich es simple als "InputPortPin" angegeben und eine Dummy 
Variable fürs setzen verwendet, das Auslesen der Z Data dann in einen 
Puffer überstellt und gebe das 8Bit mässig dann aus ( * 16 )
Das sind dann 128 mögliche Taster. Auf der Platte sind insgesamt aber 
nur 93 benutzt(belegt) und Reserve sind 35.

Danke nochmals - so komme ich schon mal weiter mit der alten Platte.
Bei Gelegenheit mache ich mal ein Bild davon und was daraus wird.

Mal sehen an was es liegen könnte warum in den Reihen 1-15 am h immer 
-0- ist. Ich habe Alle Massen - Board, ANA GND, DIG GND sowie Netzteil 
zusammengeführt.

Danke!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.