Tri-State-Eingang abfragen

Gast #266002
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
Gast #266003
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
Gast #266010
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
Gast #266011
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
Gast #266012
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

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.

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.