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!
Du kannst mit einer Diodenmatrix arbeiten. Oder HC595 Schieberegister. Oder I2C Port Expander a la PCF8574. fchk
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
Frank K. schrieb: > Du kannst mit einer Diodenmatrix arbeiten. Wie macht man das mit 3 IOs bei Dip switsches?
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.
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
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.
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?
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.