Forum: Mikrocontroller und Digitale Elektronik Mehrere HEX-Code-Schalter an µC


von TomTom (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute!

ich hab voll den Bock geschossen ... jetzt geht's drum am Besten mit 
keinen oder wenig Hardware-Änderungen die Sache auszubügeln.

Vielleicht hat ja jemand von euch eine zündende Idee :)

Ihr seht vier HEX-Code-Schalter die ich am ATMega mit 8 Pins abfragen 
möchte.
Nur leider brücken sich die Schalter gegenseitig durch.

(Der Gedanke war über SW_ARRAY_S1, S2, S3, S4 die Schalter nacheinander 
mit Spannung zu beaufschlagen und den Status über SW_ARRAY_BIN0 - BIN3 
abzufragen)

Die Möglichkeit die mir eingefallen wäre, jedem Pin vor dem 
zusammenführen an BIN0 - BIN3 eine Diode zu spendieren, das gefällt aber 
meinem Layout vom Platz garnicht.

Habt ihr eine Idee?

von TomTom (Gast)


Lesenswert?

Oder habt ihr generell eine gute Möglichkeit die 4 Code-Switch mit 8 
Pins einfach abzufragen?

von Thomas E. (thomase)


Lesenswert?

Vor jeden Schalter, also 1, 2, 4, 8, deiner Kodierer muß eine Diode. Das 
nennt sich n-Key Rollover.

: Bearbeitet durch User
von Jörg R. (solar77)


Lesenswert?

Dir bleibt wohl wirklich keine andere Möglichkeit als die Ausgänge der 
Codierer mit Dioden gegeneinander zu entkoppeln.

Alternativ könntest Du die Ausgänge mit 2 Stück 8 Bit Schieberegistern 
abfragen und die Schalterstellungen seriell einlesen. Das bedeutet 
natürlich auch mehr Platzbedarf, spart aber auch Portleitungen.

von georg (Gast)


Lesenswert?

TomTom schrieb:
> eine Diode zu spendieren, das gefällt aber
> meinem Layout vom Platz garnicht.

Alternative wären 2 8bit-Schieberegister. Dann braucht man sogar viel 
weniger Pins.

Georg

von Reinhard R. (reirawb)


Lesenswert?

S1, S2, S3 und S4 nacheinander jeweils einen als Ausgang schalten, die 
anderen als Eingang ohne Pullup. Über Bin0 ... Bin3 den jeweils aktiven 
Hexschalter abfragen. Reine Softwarelösung.

von Gerhard O. (gerhard_)


Lesenswert?

Reinhard R. schrieb:
> S1, S2, S3 und S4 nacheinander jeweils einen als Ausgang schalten,
> die
> anderen als Eingang ohne Pullup. Über Bin0 ... Bin3 den jeweils aktiven
> Hexschalter abfragen. Reine Softwarelösung.

Geht doch nicht weil irgendein auf 15 gesetzter Schalter alle vier 
Leitungen zusammen verbindet. Das verhindert die unabhängige Auslesung 
aller anderen Schalter am Bus.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

TomTom schrieb:
> Die Möglichkeit die mir eingefallen wäre, jedem Pin vor dem
> zusammenführen an BIN0 - BIN3 eine Diode zu spendieren, das gefällt aber
> meinem Layout vom Platz garnicht.

Ach komm, die 16 Stück TS4148C im 0603 Gehäuse sollten sich noch 
unterbringen lassen.

von Äxl (geloescht) (Gast)


Lesenswert?

SOD323 passen quasi fast direkt unten an die Pins der Hexdrehschalter. 
Dioden gibt es in ganz klein mittlerweile. auch verfügbar.
Wenn das Layout jetzt schon fertig ist, dann würd ich sowas bestellen 
und mit draufsetzen (gebastelt, aber was hilfts)
https://www.reichelt.de/BA-BAY-BB-Dioden/BAT-43WS/3/index.html?ACTION=3&GROUPID=2988&ARTICLE=95208&SEARCH=sod323&START=0&OFFSET=16&;
Ich hab hier auch welche in doppelt oder dreifach (SOD666?) von NXP als 
Array.

von Andreas B. (bitverdreher)


Lesenswert?

4x BAV70S dranfrickeln.

: Bearbeitet durch User
von Reinhard R. (reirawb)


Lesenswert?

Gerhard O. schrieb:
> Geht doch nicht weil irgendein auf 15 gesetzter Schalter alle vier
> Leitungen zusammen verbindet. Das verhindert die unabhängige Auslesung
> aller anderen Schalter am Bus.

Hast recht, war ein Schnellschuss am frühen Morgen :-(
Ist mir dann kurz danach auch aufgefallen, konnte es aber nicht eher 
korrigieren
wegen Handy/Internetverbot während der Arbeitszeit.
Jetzt ist Mittagspause, da darf ich :-)

von BitcoinBerufshysteriker (Gast)


Lesenswert?

georg schrieb:
> TomTom schrieb:
>> eine Diode zu spendieren, das gefällt aber
>> meinem Layout vom Platz garnicht.
>
> Alternative wären 2 8bit-Schieberegister. Dann braucht man sogar viel
> weniger Pins.
>
> Georg

Oder I2C Portexpander...

von TomTom (Gast)


Lesenswert?

Dann denke ich werden es die Dioden, da bin ich etwas flexibler, was dem 
Platz am Layout angeht.
Kann aber gerade froh sein wenn ich die 16 Stück in einem SOD523 Gehäuse 
unterbringe.
Expander denke ich fällt raus. die 8 Pins hab ich ja, der Platz ist nur 
so ne Sache ;)
Danke!

von TomTom (Gast)


Angehängte Dateien:

Lesenswert?

Mal angenommen ich wähle den "einfachen Weg":

Das könnte Probleme mit dem Low-Pegel beim AtMega88 bei 3,3V geben, 
oder?
Selbst wenn ich Schottky-Dioden verwende und den gemeinsamen Pin der 
Codeswitch der Reihe nach zum Auswerten auf 0V ziehe, liegen am 
Controller trotzdem noch bis zu 0,4 - 0,6V an und das reicht nicht für 
einen richtig definiertes Low?

von Falk B. (falk)


Lesenswert?

@TomTom (Gast)

>Selbst wenn ich Schottky-Dioden verwende und den gemeinsamen Pin der
>Codeswitch der Reihe nach zum Auswerten auf 0V ziehe, liegen am
>Controller trotzdem noch bis zu 0,4 - 0,6V an und das reicht nicht für
>einen richtig definiertes Low?

Aber sicher, denn die AVRs sind CMOS, da ist LOW <= 0,3*VCC ~ 1V

von TomTom (Gast)


Angehängte Dateien:

Lesenswert?

Bin gerade etwas verunsichert, die 1V würden mir schon gefallen, nur im 
Datenblatt finde ich das hier (siehe Bild), da ist von 0,1 - 0,3V ohne 
dem *VCC die rede ...

Oder ist es generell vernünftiger die Dioden umzudrehen, Pull-Ups auf 
GND und die Codeswitch mit VCC anzufahren?

von Walter T. (nicolas)


Lesenswert?

TomTom schrieb:
> und das reicht nicht für
> einen richtig definiertes Low?

Verstehe ich nicht. Du hast den Kenntnisstand, daß es einen erlaubten 
Spannungsbereich gibt, schaust aber nicht einfach ins Datenblatt unter 
"DC Characteristics".

von Walter T. (nicolas)


Lesenswert?

0.3 * V_CC, also 30% von VCC.

Ich ziehe meine obige Anmerkung zurück.

von TomTom (Gast)


Lesenswert?

Ah, jetzt versteh ich die Zeile im Datenblatt, war irgendwie voll auf 
die 0,3V ohne *VCC aus, sry

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.