www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Tristate DIP Schalter mit AVR abfragen


Autor: Tishima (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Björn Wieck (bwieck)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tishima (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Björn Wieck (bwieck)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du schaltest alle + des Schalters an einen Ausgang und alle Pullups ein.

Dann fragst Du 2-mal ab, den Ausgang mal auf 0 und mal auf 1:

0 - 0: -
1 - 1: Tristate
0 - 1: +


Peter

Autor: Tishima (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, Peter !

Das klingt plausibel. Werd ich bei gelegenheit mal so testen.

gruß,
Bjoern

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.