Forum: Mikrocontroller und Digitale Elektronik MSP430: Dip-Switch auslesen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Sven Scholz (Gast)


Lesenswert?

Hallo Gemeinde,

ich würde gerne mit dem MSP430G2553 einen 8bittigen Dip-Switch auslesen.
Einmalig beim Programmstart.
Problem: Ich habe nur noch ca. 3 GPIO-Pins frei.

Benötige ich für 8 Schalter(-Stellungen) auch 8 Eingang-Pins?

Wie lese ich die Schalterstellungen ein?

Herzlichen Dank!

von Frank K. (fchk)


Lesenswert?

Du kannst mit einer Diodenmatrix arbeiten.

Oder HC595 Schieberegister.

Oder I2C Port Expander a la PCF8574.

fchk

von hinz (Gast)


Lesenswert?

Oder mit ein paar Widerständen und A/D-Eingängen.

von georg (Gast)


Lesenswert?

Sven Scholz schrieb:
> Problem: Ich habe nur noch ca. 3 GPIO-Pins frei.

Das geht mit jedem Schieberegister mit 8 Eingängen und einem seriellen 
Ausgang. Du brauchst IOs für diesen Ausgang, für einen Übernahmeimpuls 
und für den Takt, passt also mit 3. xx595 ist eine Möglichkeit von 
vielen.

Georg

von A. S. (achs)


Lesenswert?

Frank K. schrieb:
> Du kannst mit einer Diodenmatrix arbeiten.

Wie macht man das mit 3 IOs bei Dip switsches?

von MaWin (Gast)


Lesenswert?

Sven Scholz schrieb:
> Benötige ich für 8 Schalter(-Stellungen) auch 8 Eingang-Pins?

Nein.

DIP Schalter haben noch den Vorteil, alle einzeln zu sein, keinen 
gemeinsamen Anschluss, also beliebig verdrahtbar.

Aber ohne zusätzliche Bauteile sehe ich keine Lösung bei nur 3 Pins. 
Wenn man jedoch andere Pins mitverwenden könnte mit ihrem low oder high 
als Ausgang, kann es sogar Lösungen ohne zusätzliche Bauteile geben.

Man kann über Widerstände und Analogeingänge arbeiten, aber nehmen wir 
mal an es sind keine Analogeingänge.

Mit 2 Ausgängen kann man nur 1 von 4 auf den restlichen Eingang 
schalten.

Ein parallel ladbares Schieberegister wie 74HC166 kann mit 2 Ausgängen 
und 1 Eingang benutzt werden, braucht aber noch 8 pull up Widerstände.

Ein I2C Portexpander wie PCF8574 hat die schon drin.

Ein parallel out Schieberegister mit open drain Ausgängen käme mit 1 
pull up, der noch intern im uC  Eingang sotzen kann, aus. Leider fallen 
mir nur LED Treiber wie DM13 mit open drain ein, und die möchten einen 
zusätzlichen Widerstand um den Strom zu bestimmen.

Statt solchem teuren Exoten könnte man natürlich auch direkt einen 
kleinen 14 Pin uC verwenden.

Ganz passi  und trotzdem ohne A/D Pin könnten die DIP Schalter 
Kondensatoren an Masse schalten und man bestimmt über einen Pin den man 
von low auf Eingang schaltet und pull up Widerstand, wie lange es dauert 
bis die Kondensatorspannung die Eingangsschaltschwelle erreicht. Für 
alle 8 braucht man dazu einen Analogkomparatoreingang, aber da du pro 
Pin maximal 3 auswerten musst, also 8 Zeiten unterscheiden musst, geht 
das sicher auch ohne. Sind aber 8 Kondensatoren und 3 Widerstände, 
immerhin kein IC.

von Gerald K. (geku)


Lesenswert?

Welches Gehäuse wird verwendet?
Wie sind die anderen PINs verwendet.
Benutze Eingänge könnten mit einem Vorwiderstand versehen werde und beim 
Hochfahren als Ausgänge geschaltet werden, die die Schaltermatrix 
scannen.

Z.B. 4 Eingänge werden auf 2x 4 Dipswitches als Ausgänge geschaltet, und 
über die zwei freien Eingänge abgefragt. Es bleibt sogar ein  I/O frei. 
Die Dipswitches werden über Dioden entkoppelt.  Die 4 Ausgänge werden 
der Reihe nach zur Abtastung angesteuert und am Ende wieder auf Einänge 
umprogrammiert.

Es werden 4 Widerstände und 2x 4 Schottkydioden oder 4 SMD 
Schottkydoppeldioden benötigt.

Kann bei Bedarf gerne die Schaltung nachliefern.

: Bearbeitet durch User
von Zeno (Gast)


Lesenswert?

Du nimmst einen 8 zu 3 Encoder, z.B. einen 4532. Der macht aus Deinen 8 
Schaltzuständen ein 3Bit-Signal. Das mußt Du mit Deinen 3 freien Ports 
nur einlesen und dekodieren.

von Gerald K. (geku)


Lesenswert?

Zeno schrieb:
> Du nimmst einen 8 zu 3 Encoder, z.B. einen 4532. Der macht aus Deinen 8
> Schaltzuständen ein 3Bit-Signal. Das mußt Du mit Deinen 3 freien Ports
> nur einlesen und dekodieren.

Mit den 8 Dipswitches lassen sich 256 Möglichkeiten einstellen. Wie kann 
ich diese 256 Zustände mit 3 Bit codieren, geschweige dekodieren?

von Baendiger (Gast)


Lesenswert?

Hast du noch bspw. LEDs in deiner Schaltung? Die PINs könntest du für 
eine Art Multiplexing nutzen, wenn es nicht so schlimm ist, das diese am 
Anfang kurz leuchten.

Wenn du noch einen AD Wandler frei hast kannst du auch durch die DIP 
Schalter geschaltete Spannungsteiler auswerten aber das wird bei 8 
Schaltern und beliebigen Kombinationen sehr aufwändig.

von Wolfgang (Gast)


Lesenswert?

MaWin schrieb:
> Ein I2C Portexpander wie PCF8574 hat die schon drin.

Auch der I2C Portexpander wird zumindest zwei Widerstände brauchen, 
jedenfalls wenn der I2C-Bus beim Prozessor noch nicht eingerichtet ist.
Insofern wäre es nützlich, zu wissen, wie bei dem µC die restlichen Pins 
belegt sind. Bussysteme sind meist für Nutzung durch mehrere 
Busteilnehmer ausgelegt.

von Gerald K. (geku)


Lesenswert?

Baendiger schrieb:
> Hast du noch bspw. LEDs in deiner Schaltung? Die PINs könntest du für
> eine Art Multiplexing nutzen, wenn es nicht so schlimm ist, das diese am
> Anfang kurz leuchten.

Drum wär es wichtig die Schaltung zu kennen. Nur dann können wir 
effizient helfen.

Den MSP430G2553 gibt es auch mit 24 IO's. Mit den zusätzliche 8 PINs 
kann man die Dipswitches direkt anschließen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.