Mehrere HEX-Code-Schalter an µC

Gast #5283310
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?
Angehängte Dateien:
#5283361
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.
#5283441
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.
Gast #5283558
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.
#5283764
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 :-)
Gast #5283779
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!
Gast #5290787
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?
Angehängte Dateien:
#5290794
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren