Forum: Mikrocontroller und Digitale Elektronik 8 Schalter mit Mega1284p miltiplexen


von Philipp M. (lord-maricek)


Lesenswert?

Hi,

ich habe 8 Schalter, Ein/Aus/Ein, die ich mit nem Mega1284p auswerten 
möchte. Dafür wären 16 Pins nötig, die ich aber leider nicht frei habe, 
und Platz für ein Schieberegister habe ich auch nicht, deswegen möchte 
ich die Schalter Multiplexen. Dann brauche ich nur 10 Pins.

8 Ausgänge für jeden Schalter einen.
Dann schließe ich jeweils einen Ausgang von allen Schaltern zusammen, 
und gehe dann an 2 Eingänge am Mega.

Wie und wo setzte ich da am besten die Widerstände?
Reichen 250Ohm an jedem Ausgang aus, um die Strom auf 20mA zu begrenzen?

MfG
Philipp

von Seltener Gast (Gast)


Lesenswert?

Philipp Maricek schrieb:

> 8 Ausgänge für jeden Schalter einen.
> Dann schließe ich jeweils einen Ausgang von allen Schaltern zusammen,
> und gehe dann an 2 Eingänge am Mega.
>
> Wie und wo setzte ich da am besten die Widerstände?

Wozu brauchst du hier Widerstände?

> Reichen 250Ohm an jedem Ausgang aus, um die Strom auf 20mA zu begrenzen?

Ja, aber auch ohne diese Widerstände wird bei deiner Anordnung kein 
nennenswerter Strom in die Eingänge des µC fließen (und daher auch 
keiner aus den Ausgängen) - es sei denn, dein Programm ist fehlerhaft 
und baut durch falsche Konfiguration der Ports einen "Kurzen".

von Peter D. (peda)


Lesenswert?

Philipp Maricek schrieb:
> Wie und wo setzte ich da am besten die Widerstände?

Garnicht.
Für die Eingänge nimmst Du die internen Pullups.
Und die Ausgänge läßt Du immer auf low und schaltest nur das 
Direction-Bit um (also low oder tristate). Dann kann kein Ausgang gegen 
den anderen kämpfen.


Peter

von Philipp M. (lord-maricek)


Lesenswert?

Ok, danke.

MfG
Philipp

von Seltener Gast (Gast)


Lesenswert?

Ich habe da noch ein gewisses Vereinfachungspotenzial entdeckt ;-)

1.) Du könntest die ganze Sache umdrehen, also die beiden gemeinsamen 
Anschlüsse als Ausgänge und die 8 individuellen als Eingänge verwenden. 
Dann müsste sich die Abfrage vereinfachen (du musst dann nur zweimal ein 
ganzes Byte einlesen).

2.) Wenn du 1.) befolgst, kannst du sogar einen der beiden Ausgangspins 
einsparen. Du könntest nämlich einen der beiden gemeinsamen Anschlüsse 
der Schalter (sagen wir den linken) fix auf GND legen und nur den 
zweiten (den rechten) mit einem µC-Pin verbinden.

Beim Einlesen lässt du dann zuerst den gemeinsamen Anschluss offen 
(tri-state) und liest den Eingabeport ein. Wenn sich für einen Schalter 
"0" ergibt, weißt du, dass der Schalter links steht. Dann setzt du den 
gemeinsamen Anschluss auf Low und liest nocheinmal den Eingangsport ein. 
Ist dieser nun "1", steht der Schalter in der Mitte; ist er "0", steht 
der Schalter rechts (falls du nicht schon beim ersten Lesevorgang 
erkannt hast, dass er links steht).

von Philipp M. (lord-maricek)


Lesenswert?

Ok, danke für den Tipp, ich werde es mal ausprobieren.

MfG
Philipp

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.