Tristate DIP Schalter mit AVR abfragen

Gast #690502
Hallo!

Bin grade  auf Tristate DIP Schalter gestoßen und frag mich, wie man die 
mit AVR verwenden würde.
Hat jemand einen Tip, wie Tristate DIP Schalter mit nem AVR abgragt 
werden.
Die Dinger haben 3 Schaltzustände gegen + oder - geschaltet und offen.

gruß,
Bjoern
Gast
Vielleicht kann man die Portpins mit einem sehr großen Pull-Down 
Widerstand belasten, so dimensioniert, daß bei eingeschaltetem Pull-Up 
immer noch dieser überwiegt, aber sich dennoch in offenem Zustand ein 
Low-Pegel einstellt. Damit kann man dann den Schalter folgendermaßen 
abfragen: 1. Messung bei ausgeschaltetem int. Pull-Up: Wenn Pin High, 
dann Schalter=1. Wenn Pin Low, weiter zu Schritt 2: Int. Pull-Up 
einschalten. Wenn Pin High, dann Schalter=offen, wenn Pin Low, dann 
Schalter=0.
Habe das aber nicht ausprobiert.
Tishima wrote:
> Hallo!
>
> Bin grade  auf Tristate DIP Schalter gestoßen und frag mich, wie man die
> mit AVR verwenden würde.
> Hat jemand einen Tip, wie Tristate DIP Schalter mit nem AVR abgragt
> werden.
> Die Dinger haben 3 Schaltzustände gegen + oder - geschaltet und offen.

Mit einem ADC wäre es kein Problem.
Spannungsteiler mit 2 Stück 47k Widerständen.

Den Schalter so dazwischen klemmen das jeweils einer der Widerstände 
überbrückt wird.

Schalter nach VCC = AD-Eingang 5V
Schalter nach GND = AD-Eingang 0V
Schalter offen = AD-Eingang 2.5V

Grüße
Björn
Gast
Hallo!

Die Idee mit dem ADC hatte ich mittlerweile, auch schon.

Die Sache die Sebastian vorgeschlagen hat, werd ich mal bei Gelegenheit 
ausprobieren, wenn mit nem AVR mal wieder spielen muss.

Oder, hat jemand eine bereits erprobte Variante ?

gruß,
Bjoern
Tishima wrote:

> Die Sache die Sebastian vorgeschlagen hat, werd ich mal bei Gelegenheit
> ausprobieren, wenn mit nem AVR mal wieder spielen muss.

Das könnte in der Theorie gehen, ist aber meiner Meinung nach 
grenzwertig.
Die Impedanz ist extrem hoch und fängt sich Störungen von aussen ein.
Der Pulldown muss auf den Porteingang angepasst sein.
Die internen Pullups sind nicht alle exakt gleich...
Sobald Du einen anderen baugleichen AVR nimmst, kannst Du wieder 
abgleichen.

Aber probieren kannst Du ja Mal

Grüße
Björn
Ich habe sowas schon mal mit einem MSP430F20xx implementiert - 
funktioniert prächtig.

Der MSP430F20xx hat aber steuerbare Pullup- und Pulldownwiderstände.

Den Portpin habe ich an die Schaltwippe angeschlossen und die beiden 
anderen Kontakte an Ucc und GND.

Zur Messung wird in einer Timer-ISR zunächst der Pullup aktiviert. Im 
nächsten Timerinterrupt wird der Pinzustand ausgelesen und anschließend 
der Pulldown aktiviert. Im übernächsten Timerinterrupt wird das Spiel 
mit dem Pullup wiederholt...

Wenn der Portpin während des gesamten Zyklus auf einem festen Zustand 
steht, ist der Schalter im betreffenden Zustand. Wenn er der Vorgabe 
durch die Pull-Widerstände folgt, war der Schalter in Mittelstellung.

Die Timerperiode ist notwendig, damit sich die Pegel stabilisieren 
können.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.