Forum: Mikrocontroller und Digitale Elektronik Tristate an Pin einlesen


von Timm T. (Gast)


Lesenswert?

Für eine Adressierung möchte ich 3 Zustände eines AVR-Pins (ATtiny2313) 
einlesen: Pin auf GND, Pin auf Vcc oder Pin offen.

Ich würde das so machen:

Pin low
Pin auf Ausgang
Nop
Pin auf Eingang
Pin high => PullUp ein
Pin einlesen => A
Nops
Pin einlesen => B

Jetzt ergeben sich für

Pin ist auf GND => A low, B low
Pin ist offen => A low, B high
weil bei A der Pin noch auf GND ist und sich bis B über den PullUp 
auflädt
Pin ist auf Vcc => A high, B high
weil Pin sofort wieder auf high geht

Funktioniert das so? Kann man den kurzzeitigen Kurzschluss für 3 Cyklen 
akzeptieren? Oder gibt es eine andere Möglichkeit, ohne zusätzliche 
externe Beschaltung die 3 Zustände einzulesen?

von Düsendieb (Gast)


Lesenswert?

ADC kann 1024 Zustände (zumindest theoretisch, in Deinem Fall aber nicht 
auswertbar)

von Stefan M. (Gast)


Lesenswert?

Du kannst einen "Kurzschluss" akzeptieren, wenn Du einen Vorwiderstand 
benutzt. Du musst den Strom auf den maximalen Wert begrenzen, den der 
Port-Pin sinken und sourcen kann. Mit 1mA bist Du auf der sicheren Seite 
und nach dem ersten Ohmschen Gesetzt macht das 5V/1mA=5kOhm.

Ansonsten kann Deine Methode funktionieren.

mfg, Stefan.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Timm Thaler schrieb:
> Funktioniert das so?
Probiers aus...
Ich würde die Reihenfolge ein wenig umdrehen:
Low ausgeben
(Nop)
Pin auf Eingang
(Nop)
Pin einlesen => A        ### erst mal ohne Pullup einlesen!
Pin high => PullUp ein   ###
Nop
Pin einlesen => B

> weil bei A der Pin noch auf GND ist und sich bis B über den PullUp
> auflädt
Das ist aber eine gewagte Annahme, die sich von heute auf morgen ändern 
kann (Leckströme, Alterung, ...).

> Kann man den kurzzeitigen Kurzschluss für 3 Cyklen akzeptieren?
Ich würde da auch einfach einen Serienwiderstand an den Portpin löten, 
und würde da sogar auf 10mA = 470Ohm gehen....

von sam (Gast)


Lesenswert?

also ein Empfänger (Portpin) der nur 2 Zustände kennt soll 3 Zustände 
erkennen?
das ist ungefähr so als würdest du versuchen, da Infrarot deiner 
Fernbedienung zu sehen.

mit einem Hilfsmittel geht's: noch ein PORTpin


Tristatepin an beide Pins über Widerstand anschließen.

Beide auf Eingang: Zustand auslesen.
Einen Pin auf Ausgang und Toggeln: wenn der andere Eingangspin dem 
Zustand des Ausgangspins folgt ist der Tristatepin Hochohmig ansonsten 
hat er den davor eingelesenen Zustand.

ansonsten gehts vielleicht auch mit nur einem Pin wenn man das 
Lade/entlade verhalten eines Kondensators ausnutzt.--> siehe Q-touch

von Timm T. (Gast)


Lesenswert?

sam schrieb:
> Fernbedienung zu sehen

Ist ein gutes Stichwort. Die MC145026/27/28 ICs von Motorola für 
Fernbedienung haben das genau so gemacht, um damit den Trinärcode des 
Motorolaprotokolls zu adressieren.

Das war hardware-codiert, muss aber gehen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.