Tristate DIP Schalter mit AVR abfragen

Gast #690512
Lesenswert?

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.
#690513
Lesenswert?

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 #690522
Lesenswert?

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
#690541
Lesenswert?

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
#690566
Lesenswert?

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

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