www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Tri-State-Eingang abfragen


Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jaja, schon richtig gelesen. Es geht wirklich um einen
Tri-State-Eingang.

Ich möchte mehrere Pins eines AVR abfragen, ob sie gegen GND oder Vcc
geschalten oder offen sind (also 3 Zustände). Irgendwo hab ich dazu mal
ein Beispiel gesehen, weiss aber nicht mehr, nach was und wo (App-Note?)
ich suchen soll.

Eine Idee wäre, die Pull-Ups einzuschalten und zu schauen, ob GND oder
Vcc/offen. Dann kurz als Ausgang und low setzen und schauen, ob Vcc
(sollte dann immer noch high sein) oder offen (sollte dann low sein).
Dabei wird aber kurz ein Schluss erzeugt und der Pin liefert seinen
max. Strom, der bei den Megas ja doch recht hoch sein kann. Ist also
nicht so schön.

Es muss aber irgendwie gehen...

Sven

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Verlager die abzufragenden Pins in den Analogbereich des Controllers.
Einen hochohmigen Spannungsteiler (>100KOhm) von Vcc nach Gnd (in der
Mitte der Pin), dann kannst du den Analogwert auslesen. Die
Folgeschaltung, wenn also nicht Tristate, kann die Pins trotzdem auf
Vcc oder Gnd ziehen.

MW

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Widerstand 470K an GND. Ohne programmierbaren Port-Pullup 0, mit Pullup
1 => Tristate. Bischen störempfindlich könnte der Port so allerdings
sein.

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ A.K.
Hast du das schon getestet? Atmel gibt ja einen ziemlichen Bereich für
den Pull-Up an, 30 bis 100K, wenn ich es recht in Erinnerung habe.

MW

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nö, aber darum ja 470K und nicht weniger. Macht schlimmstenfalls
100K/570K = ~17%, was vom Pegel her ausreichen sollte.

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gute Idee!

MW

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lass dem Widerstand ein bischen Zeit - es dauert etwas bis der den Port
runter gezogen hat (Grössenordnung 10*R*100pF). Und wenn signifikante
Leckströme auftreten, geht's so nicht.

Autor: Irgwer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Sven

Vielleicht meinst du die Design-Note von avrfreaks:

http://www.avrfreaks.net/modules/FreaksFiles/files...

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eventuell kannst du auf die externen Widerstände etc. verzichten.

Du benötigst dazu einen weiteren Pin als Ausgang. Angenommen du
möchtest 8 DIP abfragen dann verbindest du sie auf einer Seite nach
GND. Die andere Seite zum Pin 9 der als Ausgang geschaltet wurde. Die
Mittelanschlüsse der 8 Schalter an einen 8 Bit Port.

Das Auslesen erfolgt nun so:

1. Ausgabepin 9 auf GND legen.
2. 8Bit Port mit Pullups aktivieren und auslesen in Register A. Alle
Bits auf 1 in diesem Port sind "High-Z" Schalter
3. Ausgabepin 9 auf VCC legen
4. 8Bit Port mit Pullups einlesen in register B. Alle Bits die 0 sind
wurden auf GND geschaltet.

Schalterstellungen sind dann

High-Z = A
HIGH   = B and not A
LOW    = not B

wobei dann immer 1 als beschaltet kennzeichnet.

Gruß Hagen

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach und den Ausgabepin 9 kannst du per entsprechenden Widerstand zb.
300k auf einen einfachen ON/OFF Schalter nach GND legen.

Um diesen abzufragen wird der 8Bit Port auf Input gesetzt und Pin 9 als
Input mit Pullup.

So hättest du 8 Tristate Schalter und 1 Binären.

Gruß Hagen

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, lauter gute Ideen, am besten gefällt mir die mit dem zusätzlichen
Pin. An sowas hatte ich auch schon gedacht, und es braucht keine ext.
Bauteile.

Die Idee mit dem "mal kurz auf GND ziehen" haltet ihr also auch nicht
für so gut?

Sven

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.